{"version":3,"file":"vuetify.min.js","sources":["../src/util/globals.ts","../src/util/helpers.ts","../src/util/anchor.ts","../src/util/box.ts","../src/util/animation.ts","../src/util/bindProps.ts","../src/util/color/APCA.ts","../src/util/console.ts","../src/util/color/transformCIELAB.ts","../src/util/color/transformSRGB.ts","../src/util/colorUtils.ts","../src/util/propsFactory.ts","../src/composables/component.ts","../src/composables/defaults.ts","../src/util/defineComponent.tsx","../src/util/createSimpleFunctional.ts","../src/util/dom.ts","../src/util/easing.ts","../src/util/events.ts","../src/util/getCurrentInstance.ts","../src/util/getScrollParent.ts","../src/util/injectSelf.ts","../src/util/useRender.ts","../src/composables/icons.tsx","../src/iconsets/mdi.ts","../src/blueprints/md1.ts","../src/blueprints/md2.ts","../src/blueprints/md3.ts","../src/composables/resizeObserver.ts","../src/composables/layout.ts","../src/composables/toggleScope.ts","../src/composables/proxiedModel.ts","../src/locale/en.ts","../src/locale/adapters/vuetify.ts","../src/composables/locale.ts","../src/composables/theme.ts","../src/components/VApp/VApp.tsx","../src/composables/tag.ts","../src/components/VToolbar/VToolbarTitle.tsx","../src/components/transitions/createTransition.ts","../src/components/transitions/expand-transition.ts","../src/components/transitions/dialog-transition.tsx","../src/components/transitions/index.ts","../src/components/VDefaultsProvider/VDefaultsProvider.tsx","../src/composables/dimensions.ts","../src/components/VResponsive/VResponsive.tsx","../src/composables/color.ts","../src/composables/rounded.ts","../src/composables/transition.ts","../src/directives/intersect/index.ts","../src/components/VImg/VImg.tsx","../src/composables/border.ts","../src/composables/elevation.ts","../src/components/VToolbar/VToolbar.tsx","../src/composables/scroll.ts","../src/composables/ssrBoot.ts","../src/components/VAppBar/VAppBar.tsx","../src/composables/density.ts","../src/composables/variant.tsx","../src/components/VBtnGroup/VBtnGroup.tsx","../src/composables/group.ts","../src/components/VBtnToggle/VBtnToggle.tsx","../src/composables/size.ts","../src/components/VIcon/VIcon.tsx","../src/composables/intersectionObserver.ts","../src/components/VProgressCircular/VProgressCircular.tsx","../src/composables/location.ts","../src/components/VProgressLinear/VProgressLinear.tsx","../src/composables/loader.tsx","../src/composables/position.ts","../src/composables/router.tsx","../src/directives/ripple/index.ts","../src/components/VBtn/VBtn.tsx","../src/composables/selectLink.ts","../src/components/VAppBar/VAppBarNavIcon.tsx","../src/components/VAppBar/VAppBarTitle.tsx","../src/components/VAlert/VAlertTitle.ts","../src/components/VAlert/VAlert.tsx","../src/components/VAvatar/VAvatar.tsx","../src/components/VLabel/VLabel.tsx","../src/components/VSelectionControlGroup/VSelectionControlGroup.tsx","../src/components/VSelectionControl/VSelectionControl.tsx","../src/components/VCheckbox/VCheckboxBtn.tsx","../src/components/VInput/InputIcon.tsx","../src/components/VMessages/VMessages.tsx","../src/composables/focus.ts","../src/composables/form.ts","../src/composables/validation.ts","../src/components/VInput/VInput.tsx","../src/components/VCheckbox/VCheckbox.tsx","../src/composables/display.ts","../src/composables/goto.ts","../src/components/VSlideGroup/helpers.ts","../src/components/VSlideGroup/VSlideGroup.tsx","../src/components/VChipGroup/VChipGroup.tsx","../src/components/VChip/VChip.tsx","../src/components/VList/list.ts","../src/composables/nested/activeStrategies.ts","../src/composables/nested/openStrategies.ts","../src/composables/nested/selectStrategies.ts","../src/composables/nested/nested.ts","../src/components/VList/VListGroup.tsx","../src/components/VList/VListItemSubtitle.tsx","../src/components/VList/VListItemTitle.ts","../src/components/VList/VListItem.tsx","../src/components/VList/VListSubheader.tsx","../src/components/VDivider/VDivider.tsx","../src/components/VList/VListChildren.tsx","../src/composables/list-items.ts","../src/components/VList/VList.tsx","../src/components/VList/VListImg.ts","../src/components/VList/VListItemAction.tsx","../src/components/VList/VListItemMedia.tsx","../src/components/VOverlay/util/point.ts","../src/components/VOverlay/locationStrategies.ts","../src/util/isFixedPosition.ts","../src/components/VOverlay/requestNewFrame.ts","../src/components/VOverlay/scrollStrategies.ts","../src/components/VMenu/shared.ts","../src/composables/delay.ts","../src/components/VOverlay/useActivator.tsx","../src/composables/hydration.ts","../src/composables/lazy.ts","../src/composables/scopeId.ts","../src/composables/stack.ts","../src/directives/click-outside/index.ts","../src/components/VOverlay/VOverlay.tsx","../src/composables/teleport.ts","../src/composables/forwardRefs.ts","../src/components/VMenu/VMenu.tsx","../src/components/VCounter/VCounter.tsx","../src/components/VField/VFieldLabel.tsx","../src/components/VField/VField.tsx","../src/components/VTextField/VTextField.tsx","../src/components/VVirtualScroll/VVirtualScrollItem.tsx","../src/composables/virtual.ts","../src/components/VVirtualScroll/VVirtualScroll.tsx","../src/components/VSelect/useScrolling.ts","../src/components/VSelect/VSelect.tsx","../src/composables/filter.ts","../src/components/VAutocomplete/VAutocomplete.tsx","../src/components/VBadge/VBadge.tsx","../src/components/VBanner/VBannerActions.tsx","../src/components/VBanner/VBannerText.ts","../src/components/VBanner/VBanner.tsx","../src/components/VBottomNavigation/VBottomNavigation.tsx","../src/components/VDialog/VDialog.tsx","../src/components/VBottomSheet/VBottomSheet.tsx","../src/components/VBreadcrumbs/VBreadcrumbsDivider.tsx","../src/components/VBreadcrumbs/VBreadcrumbsItem.tsx","../src/components/VBreadcrumbs/VBreadcrumbs.tsx","../src/components/VCard/VCardActions.tsx","../src/components/VCard/VCardSubtitle.tsx","../src/components/VCard/VCardTitle.ts","../src/components/VCard/VCardItem.tsx","../src/components/VCard/VCardText.tsx","../src/components/VCard/VCard.tsx","../src/directives/touch/index.ts","../src/components/VWindow/VWindow.tsx","../src/components/VCarousel/VCarousel.tsx","../src/components/VWindow/VWindowItem.tsx","../src/components/VCarousel/VCarouselItem.tsx","../src/components/VCode/index.ts","../src/components/VColorPicker/VColorPickerCanvas.tsx","../src/components/VColorPicker/util/index.ts","../src/components/VColorPicker/VColorPickerEdit.tsx","../src/components/VSlider/slider.ts","../src/components/VSlider/VSliderThumb.tsx","../src/components/VSlider/VSliderTrack.tsx","../src/components/VSlider/VSlider.tsx","../src/components/VColorPicker/VColorPickerPreview.tsx","../src/util/colors.ts","../src/components/VColorPicker/VColorPickerSwatches.tsx","../src/components/VSheet/VSheet.tsx","../src/components/VColorPicker/VColorPicker.tsx","../src/components/VCombobox/VCombobox.tsx","../src/composables/date/adapters/vuetify.ts","../src/composables/date/date.ts","../src/components/VConfirmEdit/VConfirmEdit.tsx","../src/components/VDataTable/composables/expand.ts","../src/components/VDataTable/composables/group.ts","../src/components/VDataTable/composables/options.ts","../src/components/VDataTable/composables/paginate.ts","../src/components/VDataTable/composables/select.ts","../src/components/VDataTable/composables/sort.ts","../src/components/VDataIterator/composables/items.ts","../src/components/VDataIterator/VDataIterator.tsx","../src/components/VPagination/VPagination.tsx","../src/composables/refs.ts","../src/components/VDataTable/VDataTableFooter.tsx","../src/components/VDataTable/VDataTableColumn.tsx","../src/components/VDataTable/composables/headers.ts","../src/components/VDataTable/VDataTableHeaders.tsx","../src/components/VDataTable/VDataTableGroupHeaderRow.tsx","../src/components/VDataTable/VDataTableRow.tsx","../src/components/VDataTable/VDataTableRows.tsx","../src/components/VTable/VTable.tsx","../src/components/VDataTable/composables/items.ts","../src/components/VDataTable/VDataTable.tsx","../src/components/VDataTable/VDataTableVirtual.tsx","../src/components/VDataTable/VDataTableServer.tsx","../src/components/VGrid/VContainer.tsx","../src/components/VGrid/VCol.ts","../src/components/VGrid/VRow.ts","../src/components/VGrid/VSpacer.ts","../src/components/VDatePicker/VDatePickerControls.tsx","../src/components/VDatePicker/VDatePickerHeader.tsx","../src/composables/calendar.ts","../src/components/VDatePicker/VDatePickerMonth.tsx","../src/components/VDatePicker/VDatePickerMonths.tsx","../src/components/VDatePicker/VDatePickerYears.tsx","../src/labs/VPicker/VPickerTitle.ts","../src/labs/VPicker/VPicker.tsx","../src/components/VDatePicker/VDatePicker.tsx","../src/components/VEmptyState/VEmptyState.tsx","../src/components/VExpansionPanel/VExpansionPanelText.tsx","../src/components/VExpansionPanel/VExpansionPanelTitle.tsx","../src/components/VExpansionPanel/VExpansionPanel.tsx","../src/components/VExpansionPanel/VExpansionPanels.tsx","../src/components/VFab/VFab.tsx","../src/components/VFileInput/VFileInput.tsx","../src/components/VFooter/VFooter.tsx","../src/components/VForm/VForm.tsx","../src/components/VHover/VHover.tsx","../src/components/VInfiniteScroll/VInfiniteScroll.tsx","../src/components/VItemGroup/VItemGroup.tsx","../src/components/VItemGroup/VItem.tsx","../src/components/VKbd/index.ts","../src/components/VLayout/VLayout.tsx","../src/components/VLayout/VLayoutItem.tsx","../src/components/VLazy/VLazy.tsx","../src/components/VLocaleProvider/VLocaleProvider.tsx","../src/components/VMain/VMain.tsx","../src/composables/touch.ts","../src/components/VNavigationDrawer/touch.ts","../src/components/VNavigationDrawer/VNavigationDrawer.tsx","../src/components/VNavigationDrawer/sticky.ts","../src/components/VNoSsr/VNoSsr.tsx","../src/components/VOtpInput/VOtpInput.tsx","../src/components/VParallax/VParallax.tsx","../src/components/VRadio/VRadio.tsx","../src/components/VRadioGroup/VRadioGroup.tsx","../src/components/VRangeSlider/VRangeSlider.tsx","../src/components/VRating/VRating.tsx","../src/components/VSkeletonLoader/VSkeletonLoader.tsx","../src/components/VSlideGroup/VSlideGroupItem.tsx","../src/components/VSnackbar/VSnackbar.tsx","../src/components/VSparkline/util/line.ts","../src/components/VSparkline/VBarline.tsx","../src/components/VSparkline/util/path.ts","../src/components/VSparkline/VTrendline.tsx","../src/components/VSparkline/VSparkline.tsx","../src/components/VSpeedDial/VSpeedDial.tsx","../src/components/VStepper/VStepperActions.tsx","../src/components/VStepper/VStepperHeader.ts","../src/components/VStepper/VStepperItem.tsx","../src/components/VStepper/VStepperWindow.tsx","../src/components/VStepper/VStepperWindowItem.tsx","../src/components/VStepper/VStepper.tsx","../src/components/VSwitch/VSwitch.tsx","../src/components/VSystemBar/VSystemBar.tsx","../src/components/VTabs/shared.ts","../src/components/VTabs/VTab.tsx","../src/components/VTabs/VTabsWindow.tsx","../src/components/VTabs/VTabsWindowItem.tsx","../src/components/VTabs/VTabs.tsx","../src/components/VTextarea/VTextarea.tsx","../src/components/VThemeProvider/VThemeProvider.tsx","../src/components/VTimeline/VTimelineDivider.tsx","../src/components/VTimeline/VTimelineItem.tsx","../src/components/VTimeline/VTimeline.tsx","../src/components/VToolbar/VToolbarItems.tsx","../src/components/VTooltip/VTooltip.tsx","../src/components/VValidation/VValidation.tsx","../src/directives/mutate/index.ts","../src/directives/resize/index.ts","../src/directives/scroll/index.ts","../src/directives/tooltip/index.ts","../src/composables/directiveComponent.ts","../src/framework.ts","../src/entry-bundler.ts"],"sourcesContent":["export const IN_BROWSER = typeof window !== 'undefined'\nexport const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window\nexport const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0)\nexport const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window\n","// Utilities\nimport { capitalize, Comment, computed, Fragment, isVNode, reactive, readonly, shallowRef, toRefs, unref, watchEffect } from 'vue'\nimport { IN_BROWSER } from '@/util/globals'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n ComputedGetter,\n InjectionKey,\n PropType,\n Ref,\n ToRefs,\n VNode,\n VNodeArrayChildren,\n VNodeChild,\n WatchOptions,\n} from 'vue'\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path?: string | null, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport type SelectItemKey> =\n | boolean | null | undefined // Ignored\n | string // Lookup by key, can use dot notation for nested objects\n | readonly (string | number)[] // Nested lookup by key, each array item is a key in the next level\n | ((item: T, fallback?: any) => any)\n\nexport function getPropertyFromItem (\n item: any,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property === true) return item === undefined ? fallback : item\n\n if (property == null || typeof property === 'boolean') return fallback\n\n if (item !== Object(item)) {\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n }\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number, start = 0): number[] {\n return Array.from({ length }, (v, k) => start + k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nexport function convertToUnit (str: number, unit?: string): string\nexport function convertToUnit (str: string | number | null | undefined, unit?: string): string | undefined\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else if (!isFinite(+str!)) {\n return undefined\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function isObject (obj: any): obj is Record {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj)\n}\n\nexport function refElement (obj?: ComponentPublicInstance | HTMLElement): HTMLElement | undefined {\n if (obj && '$el' in obj) {\n const el = obj.$el as HTMLElement\n if (el?.nodeType === Node.TEXT_NODE) {\n // Multi-root component, use the first element\n return el.nextElementSibling as HTMLElement\n }\n return el\n }\n return obj as HTMLElement\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16,\n})\n\nexport const keyValues: Record = Object.freeze({\n enter: 'Enter',\n tab: 'Tab',\n delete: 'Delete',\n esc: 'Escape',\n space: 'Space',\n up: 'ArrowUp',\n down: 'ArrowDown',\n left: 'ArrowLeft',\n right: 'ArrowRight',\n end: 'End',\n home: 'Home',\n del: 'Delete',\n backspace: 'Backspace',\n insert: 'Insert',\n pageup: 'PageUp',\n pagedown: 'PageDown',\n shift: 'Shift',\n})\n\nexport function keys (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\nexport function has (obj: object, key: T[]): obj is Record {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\ntype MaybePick<\n T extends object,\n U extends Extract\n> = Record extends T ? Partial> : Pick\n\n// Array of keys\nexport function pick<\n T extends object,\n U extends Extract\n> (obj: T, paths: U[]): MaybePick {\n const found: any = {}\n\n const keys = new Set(Object.keys(obj))\n for (const path of paths) {\n if (keys.has(path)) {\n found[path] = obj[path]\n }\n }\n\n return found\n}\n\n// Array of keys\nexport function pickWithRest<\n T extends object,\n U extends Extract,\n E extends Extract\n> (obj: T, paths: U[], exclude?: E[]): [yes: MaybePick>, no: Omit>]\n// Array of keys or RegExp to test keys against\nexport function pickWithRest<\n T extends object,\n U extends Extract,\n E extends Extract\n> (obj: T, paths: (U | RegExp)[], exclude?: E[]): [yes: Partial, no: Partial]\nexport function pickWithRest<\n T extends object,\n U extends Extract,\n E extends Extract\n> (obj: T, paths: (U | RegExp)[], exclude?: E[]): [yes: Partial, no: Partial] {\n const found = Object.create(null)\n const rest = Object.create(null)\n\n for (const key in obj) {\n if (\n paths.some(path => path instanceof RegExp\n ? path.test(key)\n : path === key\n ) && !exclude?.some(path => path === key)\n ) {\n found[key] = obj[key]\n } else {\n rest[key] = obj[key]\n }\n }\n\n return [found, rest]\n}\n\nexport function omit<\n T extends object,\n U extends Extract\n> (obj: T, exclude: U[]): Omit {\n const clone = { ...obj }\n\n exclude.forEach(prop => delete clone[prop])\n\n return clone\n}\n\nexport function only<\n T extends object,\n U extends Extract\n> (obj: T, include: U[]): Pick {\n const clone = {} as T\n\n include.forEach(prop => clone[prop] = obj[prop])\n\n return clone\n}\n\nconst onRE = /^on[^a-z]/\nexport const isOn = (key: string) => onRE.test(key)\n\nconst bubblingEvents = [\n 'onAfterscriptexecute',\n 'onAnimationcancel',\n 'onAnimationend',\n 'onAnimationiteration',\n 'onAnimationstart',\n 'onAuxclick',\n 'onBeforeinput',\n 'onBeforescriptexecute',\n 'onChange',\n 'onClick',\n 'onCompositionend',\n 'onCompositionstart',\n 'onCompositionupdate',\n 'onContextmenu',\n 'onCopy',\n 'onCut',\n 'onDblclick',\n 'onFocusin',\n 'onFocusout',\n 'onFullscreenchange',\n 'onFullscreenerror',\n 'onGesturechange',\n 'onGestureend',\n 'onGesturestart',\n 'onGotpointercapture',\n 'onInput',\n 'onKeydown',\n 'onKeypress',\n 'onKeyup',\n 'onLostpointercapture',\n 'onMousedown',\n 'onMousemove',\n 'onMouseout',\n 'onMouseover',\n 'onMouseup',\n 'onMousewheel',\n 'onPaste',\n 'onPointercancel',\n 'onPointerdown',\n 'onPointerenter',\n 'onPointerleave',\n 'onPointermove',\n 'onPointerout',\n 'onPointerover',\n 'onPointerup',\n 'onReset',\n 'onSelect',\n 'onSubmit',\n 'onTouchcancel',\n 'onTouchend',\n 'onTouchmove',\n 'onTouchstart',\n 'onTransitioncancel',\n 'onTransitionend',\n 'onTransitionrun',\n 'onTransitionstart',\n 'onWheel',\n]\n\nconst compositionIgnoreKeys = [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowRight',\n 'ArrowLeft',\n 'Enter',\n 'Escape',\n 'Tab',\n ' ',\n]\n\nexport function isComposingIgnoreKey (e: KeyboardEvent): boolean {\n return e.isComposing && compositionIgnoreKeys.includes(e.key)\n}\n\n/**\n * Filter attributes that should be applied to\n * the root element of an input component. Remaining\n * attributes should be passed to the element inside.\n */\nexport function filterInputAttrs (attrs: Record) {\n const [events, props] = pickWithRest(attrs, [onRE])\n const inputEvents = omit(events, bubblingEvents)\n const [rootAttrs, inputAttrs] = pickWithRest(props, ['class', 'style', 'id', /^data-/])\n Object.assign(rootAttrs, events)\n Object.assign(inputAttrs, inputEvents)\n return [rootAttrs, inputAttrs]\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (!a.includes(b[i])) diff.push(b[i])\n }\n return diff\n}\n\ntype IfAny = 0 extends (1 & T) ? Y : N;\nexport function wrapInArray (\n v: T | null | undefined\n): T extends readonly any[]\n ? IfAny\n : NonNullable[] {\n return v == null\n ? []\n : Array.isArray(v)\n ? v as any : [v]\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function debounce (fn: Function, delay: MaybeRef) {\n let timeoutId = 0 as any\n const wrap = (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), unref(delay))\n }\n wrap.clear = () => {\n clearTimeout(timeoutId)\n }\n wrap.immediate = fn\n return wrap\n}\n\nexport function throttle any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters): void | ReturnType => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function getDecimals (value: number) {\n const trimmedStr = value.toString().trim()\n return trimmedStr.includes('.')\n ? (trimmedStr.length - trimmedStr.indexOf('.') - 1)\n : 0\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function padStart (str: string, length: number, char = '0') {\n return char.repeat(Math.max(0, length - str.length)) + str\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function chunkArray (array: any[], size = 1) {\n return Array.from({ length: Math.ceil(array.length / size) }, (v, i) =>\n array.slice(i * size, i * size + size)\n )\n}\n\nexport function humanReadableFileSize (bytes: number, base: 1000 | 1024 = 1000): string {\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = base === 1024 ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function mergeDeep (\n source: Record = {},\n target: Record = {},\n arrayFn?: (a: unknown[], b: unknown[]) => unknown[],\n) {\n const out: Record = {}\n\n for (const key in source) {\n out[key] = source[key]\n }\n\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn)\n\n continue\n }\n\n if (Array.isArray(sourceProperty) && Array.isArray(targetProperty) && arrayFn) {\n out[key] = arrayFn(sourceProperty, targetProperty)\n\n continue\n }\n\n out[key] = targetProperty\n }\n\n return out\n}\n\nexport function flattenFragments (nodes: VNode[]): VNode[] {\n return nodes.map(node => {\n if (node.type === Fragment) {\n return flattenFragments(node.children as VNode[])\n } else {\n return node\n }\n }).flat()\n}\n\nexport function toKebabCase (str = '') {\n if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str)!\n const kebab = str\n .replace(/[^a-z]/gi, '-')\n .replace(/\\B([A-Z])/g, '-$1')\n .toLowerCase()\n toKebabCase.cache.set(str, kebab)\n return kebab\n}\ntoKebabCase.cache = new Map()\n\nexport type MaybeRef = T | Ref\n\nexport function findChildrenWithProvide (\n key: InjectionKey | symbol,\n vnode?: VNodeChild,\n): ComponentInternalInstance[] {\n if (!vnode || typeof vnode !== 'object') return []\n\n if (Array.isArray(vnode)) {\n return vnode.map(child => findChildrenWithProvide(key, child)).flat(1)\n } else if (Array.isArray(vnode.children)) {\n return vnode.children.map(child => findChildrenWithProvide(key, child)).flat(1)\n } else if (vnode.component) {\n if (Object.getOwnPropertySymbols(vnode.component.provides).includes(key as symbol)) {\n return [vnode.component]\n } else if (vnode.component.subTree) {\n return findChildrenWithProvide(key, vnode.component.subTree).flat(1)\n }\n }\n\n return []\n}\n\nexport class CircularBuffer {\n readonly #arr: Array = []\n #pointer = 0\n\n constructor (public readonly size: number) {}\n\n push (val: T) {\n this.#arr[this.#pointer] = val\n this.#pointer = (this.#pointer + 1) % this.size\n }\n\n values (): T[] {\n return this.#arr.slice(this.#pointer).concat(this.#arr.slice(0, this.#pointer))\n }\n}\n\nexport type UnionToIntersection =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n\nexport function getEventCoordinates (e: MouseEvent | TouchEvent) {\n if ('touches' in e) {\n return { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY }\n }\n\n return { clientX: e.clientX, clientY: e.clientY }\n}\n\n// Only allow a single return type\ntype NotAUnion = [T] extends [infer U] ? _NotAUnion : never\ntype _NotAUnion = U extends any ? [T] extends [U] ? unknown : never : never\n\n/**\n * Convert a computed ref to a record of refs.\n * The getter function must always return an object with the same keys.\n */\nexport function destructComputed (getter: ComputedGetter>): ToRefs\nexport function destructComputed (getter: ComputedGetter) {\n const refs = reactive({}) as T\n const base = computed(getter)\n watchEffect(() => {\n for (const key in base.value) {\n refs[key] = base.value[key]\n }\n }, { flush: 'sync' })\n return toRefs(refs)\n}\n\n/** Array.includes but value can be any type */\nexport function includes (arr: readonly any[], val: any) {\n return arr.includes(val)\n}\n\nexport function eventName (propName: string) {\n return propName[2].toLowerCase() + propName.slice(3)\n}\n\nexport type EventProp void> = F\nexport const EventProp = () => [Function, Array] as PropType>\n\nexport function hasEvent (props: Record, name: string) {\n name = 'on' + capitalize(name)\n return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`])\n}\n\nexport function callEvent (handler: EventProp | undefined, ...args: T) {\n if (Array.isArray(handler)) {\n for (const h of handler) {\n h(...args)\n }\n } else if (typeof handler === 'function') {\n handler(...args)\n }\n}\n\nexport function focusableChildren (el: Element, filterByTabIndex = true) {\n const targets = ['button', '[href]', 'input:not([type=\"hidden\"])', 'select', 'textarea', '[tabindex]']\n .map(s => `${s}${filterByTabIndex ? ':not([tabindex=\"-1\"])' : ''}:not([disabled])`)\n .join(', ')\n return [...el.querySelectorAll(targets)] as HTMLElement[]\n}\n\nexport function getNextElement (elements: HTMLElement[], location?: 'next' | 'prev', condition?: (el: HTMLElement) => boolean) {\n let _el\n let idx = elements.indexOf(document.activeElement as HTMLElement)\n const inc = location === 'next' ? 1 : -1\n do {\n idx += inc\n _el = elements[idx]\n } while ((!_el || _el.offsetParent == null || !(condition?.(_el) ?? true)) && idx < elements.length && idx >= 0)\n return _el\n}\n\nexport function focusChild (el: Element, location?: 'next' | 'prev' | 'first' | 'last' | number) {\n const focusable = focusableChildren(el)\n\n if (!location) {\n if (el === document.activeElement || !el.contains(document.activeElement)) {\n focusable[0]?.focus()\n }\n } else if (location === 'first') {\n focusable[0]?.focus()\n } else if (location === 'last') {\n focusable.at(-1)?.focus()\n } else if (typeof location === 'number') {\n focusable[location]?.focus()\n } else {\n const _el = getNextElement(focusable, location)\n if (_el) _el.focus()\n else focusChild(el, location === 'next' ? 'first' : 'last')\n }\n}\n\nexport function isEmpty (val: any): boolean {\n return val === null || val === undefined || (typeof val === 'string' && val.trim() === '')\n}\n\nexport function noop () {}\n\n/** Returns null if the selector is not supported or we can't check */\nexport function matchesSelector (el: Element | undefined, selector: string): boolean | null {\n const supportsSelector = IN_BROWSER &&\n typeof CSS !== 'undefined' &&\n typeof CSS.supports !== 'undefined' &&\n CSS.supports(`selector(${selector})`)\n\n if (!supportsSelector) return null\n\n try {\n return !!el && el.matches(selector)\n } catch (err) {\n return null\n }\n}\n\nexport function ensureValidVNode (vnodes: VNodeArrayChildren): VNodeArrayChildren | null {\n return vnodes.some(child => {\n if (!isVNode(child)) return true\n if (child.type === Comment) return false\n return child.type !== Fragment ||\n ensureValidVNode(child.children as VNodeArrayChildren)\n })\n ? vnodes\n : null\n}\n\nexport function defer (timeout: number, cb: () => void) {\n if (!IN_BROWSER || timeout === 0) {\n cb()\n\n return () => {}\n }\n\n const timeoutId = window.setTimeout(cb, timeout)\n\n return () => window.clearTimeout(timeoutId)\n}\n\nexport function eagerComputed (fn: () => T, options?: WatchOptions): Readonly> {\n const result = shallowRef()\n\n watchEffect(() => {\n result.value = fn()\n }, {\n flush: 'sync',\n ...options,\n })\n\n return readonly(result)\n}\n\nexport function isClickInsideElement (event: MouseEvent, targetDiv: HTMLElement) {\n const mouseX = event.clientX\n const mouseY = event.clientY\n\n const divRect = targetDiv.getBoundingClientRect()\n const divLeft = divRect.left\n const divTop = divRect.top\n const divRight = divRect.right\n const divBottom = divRect.bottom\n\n return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom\n}\n\nexport type TemplateRef = {\n (target: Element | ComponentPublicInstance | null): void\n value: HTMLElement | ComponentPublicInstance | null | undefined\n readonly el: HTMLElement | undefined\n}\nexport function templateRef () {\n const el = shallowRef()\n const fn = (target: HTMLElement | ComponentPublicInstance | null) => {\n el.value = target\n }\n Object.defineProperty(fn, 'value', {\n enumerable: true,\n get: () => el.value,\n set: val => el.value = val,\n })\n Object.defineProperty(fn, 'el', {\n enumerable: true,\n get: () => refElement(el.value),\n })\n\n return fn as TemplateRef\n}\n","// Utilities\nimport { includes } from '@/util/helpers'\n\nconst block = ['top', 'bottom'] as const\nconst inline = ['start', 'end', 'left', 'right'] as const\ntype Tblock = typeof block[number]\ntype Tinline = typeof inline[number]\nexport type Anchor =\n | Tblock\n | Tinline\n | 'center'\n | 'center center'\n | `${Tblock} ${Tinline | 'center'}`\n | `${Tinline} ${Tblock | 'center'}`\nexport type ParsedAnchor =\n | { side: 'center', align: 'center' }\n | { side: Tblock, align: 'left' | 'right' | 'center' }\n | { side: 'left' | 'right', align: Tblock | 'center' }\n\n/** Parse a raw anchor string into an object */\nexport function parseAnchor (anchor: Anchor, isRtl: boolean) {\n let [side, align] = anchor.split(' ') as [Tblock | Tinline | 'center', Tblock | Tinline | 'center' | undefined]\n if (!align) {\n align =\n includes(block, side) ? 'start'\n : includes(inline, side) ? 'top'\n : 'center'\n }\n\n return {\n side: toPhysical(side, isRtl),\n align: toPhysical(align, isRtl),\n } as ParsedAnchor\n}\n\nexport function toPhysical (str: 'center' | Tblock | Tinline, isRtl: boolean) {\n if (str === 'start') return isRtl ? 'right' : 'left'\n if (str === 'end') return isRtl ? 'left' : 'right'\n return str\n}\n\nexport function flipSide (anchor: ParsedAnchor) {\n return {\n side: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n }[anchor.side],\n align: anchor.align,\n } as ParsedAnchor\n}\n\nexport function flipAlign (anchor: ParsedAnchor) {\n return {\n side: anchor.side,\n align: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n }[anchor.align],\n } as ParsedAnchor\n}\n\nexport function flipCorner (anchor: ParsedAnchor) {\n return {\n side: anchor.align,\n align: anchor.side,\n } as ParsedAnchor\n}\n\nexport function getAxis (anchor: ParsedAnchor) {\n return includes(block, anchor.side) ? 'y' : 'x'\n}\n","export class Box {\n x: number\n y: number\n width: number\n height: number\n\n constructor ({ x, y, width, height }: {\n x: number\n y: number\n width: number\n height: number\n }) {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n get top () { return this.y }\n get bottom () { return this.y + this.height }\n get left () { return this.x }\n get right () { return this.x + this.width }\n}\n\nexport function getOverflow (a: Box, b: Box) {\n return {\n x: {\n before: Math.max(0, b.left - a.left),\n after: Math.max(0, a.right - b.right),\n },\n y: {\n before: Math.max(0, b.top - a.top),\n after: Math.max(0, a.bottom - b.bottom),\n },\n }\n}\n\nexport function getTargetBox (target: HTMLElement | [x: number, y: number]) {\n if (Array.isArray(target)) {\n return new Box({\n x: target[0],\n y: target[1],\n width: 0,\n height: 0,\n })\n } else {\n return target.getBoundingClientRect()\n }\n}\n","// Utilities\nimport { Box } from '@/util/box'\n\n/** @see https://stackoverflow.com/a/57876601/2074736 */\nexport function nullifyTransforms (el: HTMLElement): Box {\n const rect = el.getBoundingClientRect()\n const style = getComputedStyle(el)\n const tx = style.transform\n\n if (tx) {\n let ta, sx, sy, dx, dy\n if (tx.startsWith('matrix3d(')) {\n ta = tx.slice(9, -1).split(/, /)\n sx = +ta[0]\n sy = +ta[5]\n dx = +ta[12]\n dy = +ta[13]\n } else if (tx.startsWith('matrix(')) {\n ta = tx.slice(7, -1).split(/, /)\n sx = +ta[0]\n sy = +ta[3]\n dx = +ta[4]\n dy = +ta[5]\n } else {\n return new Box(rect)\n }\n\n const to = style.transformOrigin\n const x = rect.x - dx - (1 - sx) * parseFloat(to)\n const y = rect.y - dy - (1 - sy) * parseFloat(to.slice(to.indexOf(' ') + 1))\n const w = sx ? rect.width / sx : el.offsetWidth + 1\n const h = sy ? rect.height / sy : el.offsetHeight + 1\n\n return new Box({ x, y, width: w, height: h })\n } else {\n return new Box(rect)\n }\n}\n\nexport function animate (\n el: Element,\n keyframes: Keyframe[] | PropertyIndexedKeyframes | null,\n options?: number | KeyframeAnimationOptions\n) {\n if (typeof el.animate === 'undefined') return { finished: Promise.resolve() }\n\n let animation: Animation\n try {\n animation = el.animate(keyframes, options)\n } catch (err) {\n return { finished: Promise.resolve() }\n }\n\n if (typeof animation.finished === 'undefined') {\n (animation as any).finished = new Promise(resolve => {\n animation.onfinish = () => {\n resolve(animation)\n }\n })\n }\n\n return animation\n}\n","// Utilities\nimport { eventName, isOn } from '@/util/helpers'\n\nconst handlers = new WeakMap void]>>()\n\nexport function bindProps (el: HTMLElement, props: Record) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k)\n const handler = handlers.get(el)\n if (props[k] == null) {\n handler?.forEach(v => {\n const [n, fn] = v\n if (n === name) {\n el.removeEventListener(name, fn)\n handler.delete(v)\n }\n })\n } else if (!handler || ![...handler]?.some(v => v[0] === name && v[1] === props[k])) {\n el.addEventListener(name, props[k])\n const _handler = handler || new Set()\n _handler.add([name, props[k]])\n if (!handlers.has(el)) handlers.set(el, _handler)\n }\n } else {\n if (props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, props[k])\n }\n }\n })\n}\n\nexport function unbindProps (el: HTMLElement, props: Record) {\n Object.keys(props).forEach(k => {\n if (isOn(k)) {\n const name = eventName(k)\n const handler = handlers.get(el)\n handler?.forEach(v => {\n const [n, fn] = v\n if (n === name) {\n el.removeEventListener(name, fn)\n handler.delete(v)\n }\n })\n } else {\n el.removeAttribute(k)\n }\n })\n}\n","/**\n * WCAG 3.0 APCA perceptual contrast algorithm from https://github.com/Myndex/SAPC-APCA\n * @licence https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @see https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup\n */\n// Types\nimport type { RGB } from '@/util'\n\n// MAGICAL NUMBERS\n\n// sRGB Conversion to Relative Luminance (Y)\n\n// Transfer Curve (aka \"Gamma\") for sRGB linearization\n// Simple power curve vs piecewise described in docs\n// Essentially, 2.4 best models actual display\n// characteristics in combination with the total method\nconst mainTRC = 2.4\n\nconst Rco = 0.2126729 // sRGB Red Coefficient (from matrix)\nconst Gco = 0.7151522 // sRGB Green Coefficient (from matrix)\nconst Bco = 0.0721750 // sRGB Blue Coefficient (from matrix)\n\n// For Finding Raw SAPC Contrast from Relative Luminance (Y)\n\n// Constants for SAPC Power Curve Exponents\n// One pair for normal text, and one for reverse\n// These are the \"beating heart\" of SAPC\nconst normBG = 0.55\nconst normTXT = 0.58\nconst revTXT = 0.57\nconst revBG = 0.62\n\n// For Clamping and Scaling Values\n\nconst blkThrs = 0.03 // Level that triggers the soft black clamp\nconst blkClmp = 1.45 // Exponent for the soft black clamp curve\nconst deltaYmin = 0.0005 // Lint trap\nconst scaleBoW = 1.25 // Scaling for dark text on light\nconst scaleWoB = 1.25 // Scaling for light text on dark\nconst loConThresh = 0.078 // Threshold for new simple offset scale\nconst loConFactor = 12.82051282051282 // = 1/0.078,\nconst loConOffset = 0.06 // The simple offset\nconst loClip = 0.001 // Output clip (lint trap #2)\n\nexport function APCAcontrast (text: RGB, background: RGB) {\n // Linearize sRGB\n const Rtxt = (text.r / 255) ** mainTRC\n const Gtxt = (text.g / 255) ** mainTRC\n const Btxt = (text.b / 255) ** mainTRC\n\n const Rbg = (background.r / 255) ** mainTRC\n const Gbg = (background.g / 255) ** mainTRC\n const Bbg = (background.b / 255) ** mainTRC\n\n // Apply the standard coefficients and sum to Y\n let Ytxt = (Rtxt * Rco) + (Gtxt * Gco) + (Btxt * Bco)\n let Ybg = (Rbg * Rco) + (Gbg * Gco) + (Bbg * Bco)\n\n // Soft clamp Y when near black.\n // Now clamping all colors to prevent crossover errors\n if (Ytxt <= blkThrs) Ytxt += (blkThrs - Ytxt) ** blkClmp\n if (Ybg <= blkThrs) Ybg += (blkThrs - Ybg) ** blkClmp\n\n // Return 0 Early for extremely low ∆Y (lint trap #1)\n if (Math.abs(Ybg - Ytxt) < deltaYmin) return 0.0\n\n // SAPC CONTRAST\n\n let outputContrast: number // For weighted final values\n if (Ybg > Ytxt) {\n // For normal polarity, black text on white\n // Calculate the SAPC contrast value and scale\n\n const SAPC = ((Ybg ** normBG) - (Ytxt ** normTXT)) * scaleBoW\n\n // NEW! SAPC SmoothScale™\n // Low Contrast Smooth Scale Rollout to prevent polarity reversal\n // and also a low clip for very low contrasts (lint trap #2)\n // much of this is for very low contrasts, less than 10\n // therefore for most reversing needs, only loConOffset is important\n outputContrast =\n (SAPC < loClip) ? 0.0\n : (SAPC < loConThresh) ? SAPC - SAPC * loConFactor * loConOffset\n : SAPC - loConOffset\n } else {\n // For reverse polarity, light text on dark\n // WoB should always return negative value.\n\n const SAPC = ((Ybg ** revBG) - (Ytxt ** revTXT)) * scaleWoB\n\n outputContrast =\n (SAPC > -loClip) ? 0.0\n : (SAPC > -loConThresh) ? SAPC - SAPC * loConFactor * loConOffset\n : SAPC + loConOffset\n }\n\n return outputContrast * 100\n}\n","/* eslint-disable no-console */\n\n// Utilities\nimport { warn } from 'vue'\n\nexport function consoleWarn (message: string): void {\n warn(`Vuetify: ${message}`)\n}\n\nexport function consoleError (message: string): void {\n warn(`Vuetify error: ${message}`)\n}\n\nexport function deprecate (original: string, replacement: string | string[]) {\n replacement = Array.isArray(replacement)\n ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'`\n : `'${replacement}'`\n warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`)\n}\nexport function breaking (original: string, replacement: string) {\n // warn(`[Vuetify BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`)\n}\nexport function removed (original: string) {\n // warn(`[Vuetify REMOVED] '${original}' has been removed. You can safely omit it.`)\n}\n","// Types\nimport type { LAB, XYZ } from '../colorUtils'\n\nconst delta = 0.20689655172413793 // 6÷29\n\nconst cielabForwardTransform = (t: number): number => (\n t > delta ** 3\n ? Math.cbrt(t)\n : (t / (3 * delta ** 2)) + 4 / 29\n)\n\nconst cielabReverseTransform = (t: number): number => (\n t > delta\n ? t ** 3\n : (3 * delta ** 2) * (t - 4 / 29)\n)\n\nexport function fromXYZ (xyz: XYZ): LAB {\n const transform = cielabForwardTransform\n const transformedY = transform(xyz[1])\n\n return [\n 116 * transformedY - 16,\n 500 * (transform(xyz[0] / 0.95047) - transformedY),\n 200 * (transformedY - transform(xyz[2] / 1.08883)),\n ]\n}\n\nexport function toXYZ (lab: LAB): XYZ {\n const transform = cielabReverseTransform\n const Ln = (lab[0] + 16) / 116\n return [\n transform(Ln + lab[1] / 500) * 0.95047,\n transform(Ln),\n transform(Ln - lab[2] / 200) * 1.08883,\n ]\n}\n","// Utilities\nimport { clamp } from '@/util/helpers'\n\n// Types\nimport type { RGB, XYZ } from '../colorUtils'\n\n// For converting XYZ to sRGB\nconst srgbForwardMatrix = [\n [3.2406, -1.5372, -0.4986],\n [-0.9689, 1.8758, 0.0415],\n [0.0557, -0.2040, 1.0570],\n]\n\n// Forward gamma adjust\nconst srgbForwardTransform = (C: number): number => (\n C <= 0.0031308\n ? C * 12.92\n : 1.055 * C ** (1 / 2.4) - 0.055\n)\n\n// For converting sRGB to XYZ\nconst srgbReverseMatrix = [\n [0.4124, 0.3576, 0.1805],\n [0.2126, 0.7152, 0.0722],\n [0.0193, 0.1192, 0.9505],\n]\n\n// Reverse gamma adjust\nconst srgbReverseTransform = (C: number): number => (\n C <= 0.04045\n ? C / 12.92\n : ((C + 0.055) / 1.055) ** 2.4\n)\n\nexport function fromXYZ (xyz: XYZ): RGB {\n const rgb = Array(3)\n const transform = srgbForwardTransform\n const matrix = srgbForwardMatrix\n\n // Matrix transform, then gamma adjustment\n for (let i = 0; i < 3; ++i) {\n // Rescale back to [0, 255]\n rgb[i] = Math.round(clamp(transform(\n matrix[i][0] * xyz[0] +\n matrix[i][1] * xyz[1] +\n matrix[i][2] * xyz[2]\n )) * 255)\n }\n\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n }\n}\n\nexport function toXYZ ({ r, g, b }: RGB): XYZ {\n const xyz: XYZ = [0, 0, 0]\n const transform = srgbReverseTransform\n const matrix = srgbReverseMatrix\n\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n r = transform(r / 255)\n g = transform(g / 255)\n b = transform(b / 255)\n\n // Matrix color space transform\n for (let i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b\n }\n\n return xyz\n}\n","// Utilities\nimport { APCAcontrast } from './color/APCA'\nimport { consoleWarn } from './console'\nimport { chunk, has, padEnd } from './helpers'\nimport * as CIELAB from '@/util/color/transformCIELAB'\nimport * as sRGB from '@/util/color/transformSRGB'\n\n// Types\nimport type { Colors } from '@/composables/theme'\n\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number, s: number, v: number, a?: number }\nexport type RGB = { r: number, g: number, b: number, a?: number }\nexport type HSL = { h: number, s: number, l: number, a?: number }\nexport type Hex = string & { __hexBrand: never }\nexport type Color = string | number | HSV | RGB | HSL\n\nexport function isCssColor (color?: string | null | false): boolean {\n return !!color && /^(#|var\\(--|(rgb|hsl)a?\\()/.test(color)\n}\n\nexport function isParsableColor (color: string): boolean {\n return isCssColor(color) && !/^((rgb|hsl)a?\\()?var\\(--/.test(color)\n}\n\nconst cssColorRe = /^(?(?:rgb|hsl)a?)\\((?.+)\\)/\nconst mappers = {\n rgb: (r: number, g: number, b: number, a?: number) => ({ r, g, b, a }),\n rgba: (r: number, g: number, b: number, a?: number) => ({ r, g, b, a }),\n hsl: (h: number, s: number, l: number, a?: number) => HSLtoRGB({ h, s, l, a }),\n hsla: (h: number, s: number, l: number, a?: number) => HSLtoRGB({ h, s, l, a }),\n hsv: (h: number, s: number, v: number, a?: number) => HSVtoRGB({ h, s, v, a }),\n hsva: (h: number, s: number, v: number, a?: number) => HSVtoRGB({ h, s, v, a }),\n}\n\nexport function parseColor (color: Color): RGB {\n if (typeof color === 'number') {\n if (isNaN(color) || color < 0 || color > 0xFFFFFF) { // int can't have opacity\n consoleWarn(`'${color}' is not a valid hex color`)\n }\n\n return {\n r: (color & 0xFF0000) >> 16,\n g: (color & 0xFF00) >> 8,\n b: (color & 0xFF),\n }\n } else if (typeof color === 'string' && cssColorRe.test(color)) {\n const { groups } = color.match(cssColorRe)!\n const { fn, values } = groups as { fn: keyof typeof mappers, values: string }\n const realValues = values.split(/,\\s*/)\n .map(v => {\n if (v.endsWith('%') && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {\n return parseFloat(v) / 100\n } else {\n return parseFloat(v)\n }\n }) as [number, number, number, number?]\n\n return mappers[fn](...realValues)\n } else if (typeof color === 'string') {\n let hex = color.startsWith('#') ? color.slice(1) : color\n\n if ([3, 4].includes(hex.length)) {\n hex = hex.split('').map(char => char + char).join('')\n } else if (![6, 8].includes(hex.length)) {\n consoleWarn(`'${color}' is not a valid hex(a) color`)\n }\n\n const int = parseInt(hex, 16)\n if (isNaN(int) || int < 0 || int > 0xFFFFFFFF) {\n consoleWarn(`'${color}' is not a valid hex(a) color`)\n }\n\n return HexToRGB(hex as Hex)\n } else if (typeof color === 'object') {\n if (has(color, ['r', 'g', 'b'])) {\n return color\n } else if (has(color, ['h', 's', 'l'])) {\n return HSVtoRGB(HSLtoHSV(color))\n } else if (has(color, ['h', 's', 'v'])) {\n return HSVtoRGB(color)\n }\n }\n\n throw new TypeError(`Invalid color: ${color == null ? color : (String(color) || (color as any).constructor.name)}\\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)\n}\n\nexport function RGBToInt (color: RGB) {\n return (color.r << 16) + (color.g << 8) + color.b\n}\n\nexport function classToHex (\n color: string,\n colors: Record>,\n currentTheme: Partial,\n): string {\n const [colorName, colorModifier] = color\n .toString().trim().replace('-', '').split(' ', 2) as (string | undefined)[]\n\n let hexColor = ''\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier]\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName] as string\n }\n\n return hexColor\n}\n\n/** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function HSVtoRGB (hsva: HSV): RGB {\n const { h, s, v, a } = hsva\n const f = (n: number) => {\n const k = (n + (h / 60)) % 6\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n }\n\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255))\n\n return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\nexport function HSLtoRGB (hsla: HSL): RGB {\n return HSVtoRGB(HSLtoHSV(hsla))\n}\n\n/** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function RGBtoHSV (rgba: RGB): HSV {\n if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n const r = rgba.r / 255\n const g = rgba.g / 255\n const b = rgba.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n\n let h = 0\n\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + ((g - b) / (max - min)))\n } else if (max === g) {\n h = 60 * (2 + ((b - r) / (max - min)))\n } else if (max === b) {\n h = 60 * (4 + ((r - g) / (max - min)))\n }\n }\n\n if (h < 0) h = h + 360\n\n const s = max === 0 ? 0 : (max - min) / max\n const hsv = [h, s, max]\n\n return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVtoHSL (hsva: HSV): HSL {\n const { h, s, v, a } = hsva\n\n const l = v - (v * s / 2)\n\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n return { h, s: sprime, l, a }\n}\n\nexport function HSLtoHSV (hsl: HSL): HSV {\n const { h, s, l, a } = hsl\n\n const v = l + s * Math.min(l, 1 - l)\n\n const sprime = v === 0 ? 0 : 2 - (2 * l / v)\n\n return { h, s: sprime, v, a }\n}\n\nexport function RGBtoCSS ({ r, g, b, a }: RGB): string {\n return a === undefined ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${a})`\n}\n\nexport function HSVtoCSS (hsva: HSV): string {\n return RGBtoCSS(HSVtoRGB(hsva))\n}\n\nfunction toHex (v: number) {\n const h = Math.round(v).toString(16)\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n}\n\nexport function RGBtoHex ({ r, g, b, a }: RGB): Hex {\n return `#${[\n toHex(r),\n toHex(g),\n toHex(b),\n a !== undefined ? toHex(Math.round(a * 255)) : '',\n ].join('')}` as Hex\n}\n\nexport function HexToRGB (hex: Hex): RGB {\n hex = parseHex(hex)\n let [r, g, b, a] = chunk(hex, 2).map((c: string) => parseInt(c, 16))\n a = a === undefined ? a : (a / 255)\n\n return { r, g, b, a }\n}\n\nexport function HexToHSV (hex: Hex): HSV {\n const rgb = HexToRGB(hex)\n return RGBtoHSV(rgb)\n}\n\nexport function HSVtoHex (hsva: HSV): Hex {\n return RGBtoHex(HSVtoRGB(hsva))\n}\n\nexport function parseHex (hex: string): Hex {\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('')\n }\n\n if (hex.length !== 6) {\n hex = padEnd(padEnd(hex, 6), 8, 'F')\n }\n\n return hex as Hex\n}\n\nexport function parseGradient (\n gradient: string,\n colors: Record>,\n currentTheme: Partial,\n) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGB(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',')\n })\n}\n\nexport function lighten (value: RGB, amount: number): RGB {\n const lab = CIELAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] + amount * 10\n\n return sRGB.fromXYZ(CIELAB.toXYZ(lab))\n}\n\nexport function darken (value: RGB, amount: number): RGB {\n const lab = CIELAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] - amount * 10\n\n return sRGB.fromXYZ(CIELAB.toXYZ(lab))\n}\n\n/**\n * Calculate the relative luminance of a given color\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\nexport function getLuma (color: Color) {\n const rgb = parseColor(color)\n\n return sRGB.toXYZ(rgb)[1]\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n * @see https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n */\nexport function getContrast (first: Color, second: Color) {\n const l1 = getLuma(first)\n const l2 = getLuma(second)\n\n const light = Math.max(l1, l2)\n const dark = Math.min(l1, l2)\n\n return (light + 0.05) / (dark + 0.05)\n}\n\nexport function getForeground (color: Color) {\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), parseColor(color)))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), parseColor(color)))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n return whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n}\n","// Types\nimport type { IfAny } from '@vue/shared' // eslint-disable-line vue/prefer-import-from-vue\nimport type { ComponentObjectPropsOptions, Prop, PropType } from 'vue'\n\n/**\n * Creates a factory function for props definitions.\n * This is used to define props in a composable then override\n * default values in an implementing component.\n *\n * @example Simplified signature\n * (props: Props) => (defaults?: Record) => Props\n *\n * @example Usage\n * const makeProps = propsFactory({\n * foo: String,\n * })\n *\n * defineComponent({\n * props: {\n * ...makeProps({\n * foo: 'a',\n * }),\n * },\n * setup (props) {\n * // would be \"string | undefined\", now \"string\" because a default has been provided\n * props.foo\n * },\n * }\n */\n\nexport function propsFactory<\n PropsOptions extends ComponentObjectPropsOptions\n> (props: PropsOptions, source: string) {\n return = {}>(\n defaults?: Defaults\n ): AppendDefault => {\n return Object.keys(props).reduce((obj, prop) => {\n const isObjectDefinition = typeof props[prop] === 'object' && props[prop] != null && !Array.isArray(props[prop])\n const definition = isObjectDefinition ? props[prop] : { type: props[prop] }\n\n if (defaults && prop in defaults) {\n obj[prop] = {\n ...definition,\n default: defaults[prop],\n }\n } else {\n obj[prop] = definition\n }\n\n if (source && !obj[prop].source) {\n obj[prop].source = source\n }\n\n return obj\n }, {})\n }\n}\n\ntype AppendDefault> = {\n [P in keyof T]-?: unknown extends D[P]\n ? T[P]\n : T[P] extends Record\n ? Omit & {\n type: PropType>\n default: MergeDefault\n }\n : {\n type: PropType>\n default: MergeDefault\n }\n}\n\ntype MergeDefault = unknown extends D ? InferPropType : (NonNullable> | D)\n\n/**\n * Like `Partial` but doesn't care what the value is\n */\ntype PartialKeys = { [P in keyof T]?: unknown }\n\n// Copied from Vue\ntype InferPropType = [T] extends [null]\n ? any // null & true would fail to infer\n : [T] extends [{ type: null | true }]\n // As TS issue https://github.com/Microsoft/TypeScript/issues/14829\n // somehow `ObjectConstructor` when inferred from { (): T } becomes `any`\n // `BooleanConstructor` when inferred from PropConstructor(with PropMethod) becomes `Boolean`\n ? any\n : [T] extends [ObjectConstructor | { type: ObjectConstructor }]\n ? Record\n : [T] extends [BooleanConstructor | { type: BooleanConstructor }]\n ? boolean\n : [T] extends [DateConstructor | { type: DateConstructor }]\n ? Date\n : [T] extends [(infer U)[] | { type: (infer U)[] }]\n ? U extends DateConstructor\n ? Date | InferPropType\n : InferPropType\n : [T] extends [Prop]\n ? unknown extends V\n ? IfAny\n : V\n : T\n","// Utilities\nimport { propsFactory } from '@/util/propsFactory'\n\n// Types\nimport type { PropType, StyleValue } from 'vue'\n\nexport type ClassValue = any\n\nexport interface ComponentProps {\n class: ClassValue\n style: StyleValue | undefined\n}\n\n// Composables\nexport const makeComponentProps = propsFactory({\n class: [String, Array, Object] as PropType,\n style: {\n type: [String, Array, Object] as PropType,\n default: null,\n },\n}, 'component')\n","// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue'\nimport { getCurrentInstance, injectSelf, mergeDeep, toKebabCase } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref, VNode } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record\n global?: Record\n}\n\nexport type DefaultsOptions = Partial\n\nexport const DefaultsSymbol: InjectionKey> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref {\n return ref(options)\n}\n\nexport function injectDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef,\n options?: {\n disabled?: MaybeRef\n reset?: MaybeRef\n root?: MaybeRef\n scoped?: MaybeRef\n }\n) {\n const injectedDefaults = injectDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled)\n\n if (disabled) return injectedDefaults.value\n\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break\n }\n\n properties = properties.prev\n }\n\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, { prev: properties }), properties[root])\n }\n\n return properties\n }\n\n return properties.prev\n ? mergeDeep(properties.prev, properties)\n : properties\n }) as ComputedRef\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return typeof vnode.props?.[prop] !== 'undefined' ||\n typeof vnode.props?.[toKebabCase(prop)] !== 'undefined'\n}\n\nexport function internalUseDefaults (\n props: Record = {},\n name?: string,\n defaults = injectDefaults()\n) {\n const vm = getCurrentInstance('useDefaults')\n\n name = name ?? vm.type.name ?? vm.type.__name\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name')\n }\n\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name])\n const _props = new Proxy(props, {\n get (target, prop) {\n const propValue = Reflect.get(target, prop)\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null)\n } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {\n return componentDefaults.value?.[prop] ?? defaults.value?.global?.[prop] ?? propValue\n }\n return propValue\n },\n })\n\n const _subcomponentDefaults = shallowRef()\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value).filter(([key]) => key.startsWith(key[0].toUpperCase()))\n _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined\n } else {\n _subcomponentDefaults.value = undefined\n }\n })\n\n function provideSubDefaults () {\n const injected = injectSelf(DefaultsSymbol, vm)\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(\n injected?.value ?? {},\n _subcomponentDefaults.value\n ) : injected?.value\n }))\n }\n\n return { props: _props, provideSubDefaults }\n}\n\nexport function useDefaults> (props: T, name?: string): T\nexport function useDefaults (props?: undefined, name?: string): Record\nexport function useDefaults (\n props: Record = {},\n name?: string,\n) {\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, name)\n provideSubDefaults()\n return _props\n}\n","// Composables\nimport { injectDefaults, internalUseDefaults } from '@/composables/defaults'\n\n// Utilities\nimport {\n defineComponent as _defineComponent, // eslint-disable-line no-restricted-imports\n} from 'vue'\nimport { consoleWarn } from '@/util/console'\nimport { pick } from '@/util/helpers'\nimport { propsFactory } from '@/util/propsFactory'\n\n// Types\nimport type {\n AllowedComponentProps,\n Component,\n ComponentCustomProps,\n ComponentInjectOptions,\n ComponentObjectPropsOptions,\n ComponentOptions,\n ComponentOptionsMixin,\n ComponentOptionsWithObjectProps,\n ComponentOptionsWithoutProps,\n ComponentPropsOptions,\n ComponentPublicInstance,\n ComputedOptions,\n DefineComponent,\n EmitsOptions,\n ExtractDefaultPropTypes,\n ExtractPropTypes,\n FunctionalComponent,\n MethodOptions,\n ObjectEmitsOptions,\n SlotsType,\n VNode,\n VNodeChild,\n VNodeProps,\n} from 'vue'\n\n// No props\nexport function defineComponent<\n Props = {},\n RawBindings = {},\n D = {},\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = {},\n EE extends string = string,\n I extends {} = {},\n II extends string = string,\n S extends SlotsType = {},\n>(\n options: ComponentOptionsWithoutProps<\n Props,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E,\n EE,\n I,\n II,\n S\n >\n): DefineComponent\n\n// Object Props\nexport function defineComponent<\n PropsOptions extends Readonly,\n RawBindings,\n D,\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = {},\n EE extends string = string,\n I extends {} = {},\n II extends string = string,\n S extends SlotsType = {},\n>(\n options: ComponentOptionsWithObjectProps<\n PropsOptions,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E,\n EE,\n I,\n II,\n S\n >\n): DefineComponent & FilterPropsOptions\n\n// Implementation\nexport function defineComponent (options: ComponentOptions) {\n options._setup = options._setup ?? options.setup\n\n if (!options.name) {\n consoleWarn('The component is missing an explicit name, unable to generate default prop value')\n\n return options\n }\n\n if (options._setup) {\n options.props = propsFactory(options.props ?? {}, options.name)()\n const propKeys = Object.keys(options.props).filter(key => key !== 'class' && key !== 'style')\n options.filterProps = function filterProps (props: Record) {\n return pick(props, propKeys)\n }\n\n options.props._as = String\n options.setup = function setup (props: Record, ctx) {\n const defaults = injectDefaults()\n\n // Skip props proxy if defaults are not provided\n if (!defaults.value) return options._setup(props, ctx)\n\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, props._as ?? options.name, defaults)\n\n const setupBindings = options._setup(_props, ctx)\n\n provideSubDefaults()\n\n return setupBindings\n }\n }\n\n return options\n}\n\ntype ToListeners = { [K in T]: K extends `on${infer U}` ? Uncapitalize : K }[T]\n\nexport type SlotsToProps<\n U extends RawSlots,\n T = MakeInternalSlots\n> = {\n $children?: (\n | VNodeChild\n | (T extends { default: infer V } ? V : {})\n | { [K in keyof T]?: T[K] }\n )\n 'v-slots'?: { [K in keyof T]?: T[K] | false }\n} & {\n [K in keyof T as `v-slot:${K & string}`]?: T[K] | false\n}\n\ntype RawSlots = Record\ntype Slot = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild\ntype VueSlot = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[]\ntype MakeInternalSlots = {\n [K in keyof T]: Slot\n}\ntype MakeSlots = {\n [K in keyof T]: VueSlot\n}\n\nexport type GenericProps> = {\n $props: Props & SlotsToProps\n $slots: MakeSlots\n}\n\ntype DefineComponentWithGenericProps, slots: RawSlots) => {\n $props?: Record\n})> = <\n PropsOptions extends Readonly,\n RawBindings,\n D,\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = Record,\n EE extends string = string,\n I extends ComponentInjectOptions = {},\n II extends string = string,\n // Slots extends RawSlots = ConstructorParameters extends [any, infer SS extends RawSlots | undefined] ? Exclude : {},\n Slots extends RawSlots = ConstructorParameters[1],\n S extends SlotsType = SlotsType>>,\n III = InstanceType,\n P = III extends Record<'$props', any>\n ? Omit\n : PropsOptions,\n EEE extends EmitsOptions = E extends any[]\n ? E\n : III extends Record<'$props', any>\n ? Omit>\n : E,\n Base = DefineComponent<\n P,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n EEE,\n EE,\n PublicProps,\n ExtractPropTypes

& ({} extends E ? {} : EmitsToProps),\n ExtractDefaultPropTypes

,\n S\n >\n>(\n options: ComponentOptionsWithObjectProps\n) => Base & T & FilterPropsOptions\n\ntype DefineComponentWithSlots = <\n PropsOptions extends Readonly,\n RawBindings,\n D,\n C extends ComputedOptions = {},\n M extends MethodOptions = {},\n Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,\n Extends extends ComponentOptionsMixin = ComponentOptionsMixin,\n E extends EmitsOptions = Record,\n EE extends string = string,\n I extends ComponentInjectOptions = {},\n II extends string = string,\n S extends SlotsType = SlotsType>>,\n>(\n options: ComponentOptionsWithObjectProps\n) => DefineComponent<\n ExtractPropTypes & SlotsToProps,\n RawBindings,\n D,\n C,\n M,\n Mixin,\n Extends,\n E,\n EE,\n PublicProps,\n ExtractPropTypes & SlotsToProps & ({} extends E ? {} : EmitsToProps),\n ExtractDefaultPropTypes,\n S\n> & FilterPropsOptions\n\n// No argument - simple default slot\nexport function genericComponent (exposeDefaults?: boolean): DefineComponentWithSlots<{ default: never }>\n\n// Generic constructor argument - generic props and slots\nexport function genericComponent, slots: any) => {\n $props?: Record\n})> (exposeDefaults?: boolean): DefineComponentWithGenericProps\n\n// Slots argument - simple slots\nexport function genericComponent<\n Slots extends RawSlots\n> (exposeDefaults?: boolean): DefineComponentWithSlots\n\n// Implementation\nexport function genericComponent (exposeDefaults = true) {\n return (options: any) => ((exposeDefaults ? defineComponent : _defineComponent) as any)(options)\n}\n\nexport function defineFunctionalComponent<\n T extends FunctionalComponent,\n PropsOptions = ComponentObjectPropsOptions,\n Defaults = ExtractDefaultPropTypes,\n Props = Readonly>,\n> (props: PropsOptions, render: T): FunctionalComponent & Omit> {\n render.props = props as any\n return render as any\n}\n\ntype EmitsToProps = T extends string[]\n ? {\n [K in string & `on${Capitalize}`]?: (...args: any[]) => any\n }\n : T extends ObjectEmitsOptions\n ? {\n [K in string &\n `on${Capitalize}`]?: K extends `on${infer C}`\n ? T[Uncapitalize] extends null\n ? (...args: any[]) => any\n : (\n ...args: T[Uncapitalize] extends (...args: infer P) => any\n ? P\n : never\n ) => any\n : never\n }\n : {}\n\ntype PublicProps =\n & VNodeProps\n & AllowedComponentProps\n & ComponentCustomProps\n\n// Adds a filterProps method to the component options\nexport interface FilterPropsOptions, Props = ExtractPropTypes> {\n filterProps<\n T extends Partial,\n U extends Exclude>\n > (props: T): Partial>\n}\n\n// https://github.com/vuejs/core/pull/10557\nexport type ComponentInstance = T extends { new (): ComponentPublicInstance }\n ? InstanceType\n : T extends FunctionalComponent\n ? ComponentPublicInstance>\n : T extends Component<\n infer Props,\n infer RawBindings,\n infer D,\n infer C,\n infer M\n >\n ? // NOTE we override Props/RawBindings/D to make sure is not `unknown`\n ComponentPublicInstance<\n unknown extends Props ? {} : Props,\n unknown extends RawBindings ? {} : RawBindings,\n unknown extends D ? {} : D,\n C,\n M\n >\n : never // not a vue Component\n\ntype ShortEmitsToObject = E extends Record ? {\n [K in keyof E]: (...args: E[K]) => any;\n} : E;\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { camelize, capitalize, h } from 'vue'\nimport { genericComponent } from './defineComponent'\n\nexport function createSimpleFunctional (\n klass: string,\n tag = 'div',\n name?: string\n) {\n return genericComponent()({\n name: name ?? capitalize(camelize(klass.replace(/__/g, '-'))),\n\n props: {\n tag: {\n type: String,\n default: tag,\n },\n\n ...makeComponentProps(),\n },\n\n setup (props, { slots }) {\n return () => {\n return h(props.tag, {\n class: [klass, props.class],\n style: props.style,\n }, slots.default?.())\n }\n },\n })\n}\n","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot (node: Node): null | HTMLDocument | ShadowRoot {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null\n\n return document\n }\n\n const root = node.getRootNode()\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({ composed: true }) !== document) return null\n\n return root as HTMLDocument | ShadowRoot\n}\n","export const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)'\nexport const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)' // Entering\nexport const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)' // Leaving\n","// Utilities\nimport { isOn } from '@/util/helpers'\n\ntype EventHandler = (event: Event) => any\n\nexport function getPrefixedEventHandlers (\n attrs: Record,\n suffix: T,\n getData: EventHandler\n): Record<`${string}${T}`, EventHandler> {\n return Object.keys(attrs)\n .filter(key => isOn(key) && key.endsWith(suffix))\n .reduce((acc: any, key) => {\n acc[key.slice(0, -suffix.length)] = (event: Event) => attrs[key](event, getData(event))\n return acc\n }, {} as Record<`${string}${T}`, EventHandler>)\n}\n","// Utilities\nimport { getCurrentInstance as _getCurrentInstance } from 'vue'\nimport { toKebabCase } from '@/util/helpers'\n\n// Types\nimport type { ComponentInternalInstance } from 'vue'\n\nexport function getCurrentInstance (name: string, message?: string) {\n const vm = _getCurrentInstance()\n\n if (!vm) {\n throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`)\n }\n\n return vm\n}\n\nexport function getCurrentInstanceName (name = 'composables') {\n const vm = getCurrentInstance(name).type\n\n return toKebabCase(vm?.aliasName || vm?.name)\n}\n\nlet _uid = 0\nlet _map = new WeakMap()\nexport function getUid () {\n const vm = getCurrentInstance('getUid')\n\n if (_map.has(vm)) return _map.get(vm)!\n else {\n const uid = _uid++\n _map.set(vm, uid)\n return uid\n }\n}\ngetUid.reset = () => {\n _uid = 0\n _map = new WeakMap()\n}\n","export function getScrollParent (el?: HTMLElement, includeHidden = false) {\n while (el) {\n if (includeHidden ? isPotentiallyScrollable(el) : hasScrollbar(el)) return el\n el = el.parentElement!\n }\n\n return document.scrollingElement as HTMLElement\n}\n\nexport function getScrollParents (el?: Element | null, stopAt?: Element | null) {\n const elements: HTMLElement[] = []\n\n if (stopAt && el && !stopAt.contains(el)) return elements\n\n while (el) {\n if (hasScrollbar(el)) elements.push(el as HTMLElement)\n if (el === stopAt) break\n el = el.parentElement!\n }\n\n return elements\n}\n\nexport function hasScrollbar (el?: Element | null) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return style.overflowY === 'scroll' || (style.overflowY === 'auto' && el.scrollHeight > el.clientHeight)\n}\n\nfunction isPotentiallyScrollable (el?: Element | null) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['scroll', 'auto'].includes(style.overflowY)\n}\n","// Utilities\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\n\n// Types\nimport type { ComponentInternalInstance, InjectionKey } from 'vue'\n\nexport function injectSelf(key: InjectionKey | string, vm?: ComponentInternalInstance): T | undefined\nexport function injectSelf (key: InjectionKey | string, vm = getCurrentInstance('injectSelf')) {\n const { provides } = vm\n\n if (provides && (key as string | symbol) in provides) {\n // TS doesn't allow symbol as index type\n return provides[key as string]\n }\n return undefined\n}\n","// Utilities\nimport { getCurrentInstance } from './getCurrentInstance'\n\n// Types\nimport type { VNode } from 'vue'\n\nexport function useRender (render: () => VNode): void {\n const vm = getCurrentInstance('useRender') as any\n vm.render = render\n}\n","// Icons\nimport { aliases, mdi } from '@/iconsets/mdi'\n\n// Utilities\nimport { computed, inject, unref } from 'vue'\nimport { consoleWarn, defineComponent, genericComponent, mergeDeep, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, JSXComponent, PropType, Ref } from 'vue'\n\nexport type IconValue =\n | string\n | (string | [path: string, opacity: number])[]\n | JSXComponent\nexport const IconValue = [String, Function, Object, Array] as PropType\n\nexport interface IconAliases {\n [name: string]: IconValue\n complete: IconValue\n cancel: IconValue\n close: IconValue\n delete: IconValue\n clear: IconValue\n success: IconValue\n info: IconValue\n warning: IconValue\n error: IconValue\n prev: IconValue\n next: IconValue\n checkboxOn: IconValue\n checkboxOff: IconValue\n checkboxIndeterminate: IconValue\n delimiter: IconValue\n sortAsc: IconValue\n sortDesc: IconValue\n expand: IconValue\n menu: IconValue\n subgroup: IconValue\n dropdown: IconValue\n radioOn: IconValue\n radioOff: IconValue\n edit: IconValue\n ratingEmpty: IconValue\n ratingFull: IconValue\n ratingHalf: IconValue\n loading: IconValue\n first: IconValue\n last: IconValue\n unfold: IconValue\n file: IconValue\n plus: IconValue\n minus: IconValue\n calendar: IconValue\n}\n\nexport interface IconProps {\n tag: string\n icon?: IconValue\n disabled?: Boolean\n}\n\ntype IconComponent = JSXComponent\n\nexport interface IconSet {\n component: IconComponent\n}\n\nexport type IconOptions = {\n defaultSet?: string\n aliases?: Partial\n sets?: Record\n}\n\ntype IconInstance = {\n component: IconComponent\n icon?: IconValue\n}\n\nexport const IconSymbol: InjectionKey> = Symbol.for('vuetify:icons')\n\nexport const makeIconProps = propsFactory({\n icon: {\n type: IconValue,\n },\n // Could not remove this and use makeTagProps, types complained because it is not required\n tag: {\n type: String,\n required: true,\n },\n}, 'icon')\n\nexport const VComponentIcon = genericComponent()({\n name: 'VComponentIcon',\n\n props: makeIconProps(),\n\n setup (props, { slots }) {\n return () => {\n const Icon = props.icon as JSXComponent\n return (\n \n { props.icon ? : slots.default?.() }\n \n )\n }\n },\n})\nexport type VComponentIcon = InstanceType\n\nexport const VSvgIcon = defineComponent({\n name: 'VSvgIcon',\n\n inheritAttrs: false,\n\n props: makeIconProps(),\n\n setup (props, { attrs }) {\n return () => {\n return (\n \n \n { Array.isArray(props.icon)\n ? props.icon.map(path => (\n Array.isArray(path)\n ? \n : \n ))\n : \n }\n \n \n )\n }\n },\n})\nexport type VSvgIcon = InstanceType\n\nexport const VLigatureIcon = defineComponent({\n name: 'VLigatureIcon',\n\n props: makeIconProps(),\n\n setup (props) {\n return () => {\n return { props.icon }\n }\n },\n})\nexport type VLigatureIcon = InstanceType\n\nexport const VClassIcon = defineComponent({\n name: 'VClassIcon',\n\n props: makeIconProps(),\n\n setup (props) {\n return () => {\n return \n }\n },\n})\nexport type VClassIcon = InstanceType\n\nfunction genDefaults (): Record {\n return {\n svg: {\n component: VSvgIcon,\n },\n class: {\n component: VClassIcon,\n },\n }\n}\n\n// Composables\nexport function createIcons (options?: IconOptions) {\n const sets = genDefaults()\n const defaultSet = options?.defaultSet ?? 'mdi'\n\n if (defaultSet === 'mdi' && !sets.mdi) {\n sets.mdi = mdi\n }\n\n return mergeDeep({\n defaultSet,\n sets,\n aliases: {\n ...aliases,\n /* eslint-disable max-len */\n vuetify: [\n 'M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z',\n ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6],\n ],\n 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z',\n 'vuetify-play': [\n 'm6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z',\n ['M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z', 0.6],\n ],\n /* eslint-enable max-len */\n },\n }, options)\n}\n\nexport const useIcon = (props: Ref) => {\n const icons = inject(IconSymbol)\n\n if (!icons) throw new Error('Missing Vuetify Icons provide!')\n\n const iconData = computed(() => {\n const iconAlias = unref(props)\n\n if (!iconAlias) return { component: VComponentIcon }\n\n let icon: IconValue | undefined = iconAlias\n\n if (typeof icon === 'string') {\n icon = icon.trim()\n\n if (icon.startsWith('$')) {\n icon = icons.aliases?.[icon.slice(1)]\n }\n }\n\n if (!icon) consoleWarn(`Could not find aliased icon \"${iconAlias}\"`)\n\n if (Array.isArray(icon)) {\n return {\n component: VSvgIcon,\n icon,\n }\n } else if (typeof icon !== 'string') {\n return {\n component: VComponentIcon,\n icon,\n }\n }\n\n const iconSetName = Object.keys(icons.sets).find(\n setName => typeof icon === 'string' && icon.startsWith(`${setName}:`)\n )\n\n const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon\n const iconSet = icons.sets[iconSetName ?? icons.defaultSet]\n\n return {\n component: iconSet.component,\n icon: iconName,\n }\n })\n\n return { iconData }\n}\n","// Composables\nimport { VClassIcon } from '@/composables/icons'\n\n// Utilities\nimport { h } from 'vue'\n\n// Types\nimport type { IconAliases, IconSet } from '@/composables/icons'\n\nconst aliases: IconAliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n eyeDropper: 'mdi-eyedropper',\n}\n\nconst mdi: IconSet = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: (props: any) => h(VClassIcon, { ...props, class: 'mdi' }),\n}\n\nexport { aliases, mdi }\n","// Icons\nimport { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md1: Blueprint = {\n defaults: {\n global: {\n rounded: 'sm',\n },\n VAvatar: {\n rounded: 'circle',\n },\n VAutocomplete: {\n variant: 'underlined',\n },\n VBanner: {\n color: 'primary',\n },\n VBtn: {\n color: 'primary',\n rounded: 0,\n },\n VCheckbox: {\n color: 'secondary',\n },\n VCombobox: {\n variant: 'underlined',\n },\n VSelect: {\n variant: 'underlined',\n },\n VSlider: {\n color: 'primary',\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'underlined',\n },\n VTextField: {\n variant: 'underlined',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#3F51B5',\n 'primary-darken-1': '#303F9F',\n 'primary-lighten-1': '#C5CAE9',\n secondary: '#FF4081',\n 'secondary-darken-1': '#F50057',\n 'secondary-lighten-1': '#FF80AB',\n accent: '#009688',\n },\n },\n },\n },\n}\n","// Icons\nimport { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md2: Blueprint = {\n defaults: {\n global: {\n rounded: 'md',\n },\n VAvatar: {\n rounded: 'circle',\n },\n VAutocomplete: {\n variant: 'filled',\n },\n VBanner: {\n color: 'primary',\n },\n VBtn: {\n color: 'primary',\n },\n VCheckbox: {\n color: 'secondary',\n },\n VCombobox: {\n variant: 'filled',\n },\n VSelect: {\n variant: 'filled',\n },\n VSlider: {\n color: 'primary',\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'filled',\n },\n VTextField: {\n variant: 'filled',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n },\n },\n },\n },\n}\n","// Icons\nimport { mdi } from '@/iconsets/mdi'\n\n// Types\nimport type { Blueprint } from '@/framework'\n\nexport const md3: Blueprint = {\n defaults: {\n VAppBar: {\n flat: true,\n },\n VAutocomplete: {\n variant: 'filled',\n },\n VBanner: {\n color: 'primary',\n },\n VBottomSheet: {\n contentClass: 'rounded-t-xl overflow-hidden',\n },\n VBtn: {\n color: 'primary',\n rounded: 'xl',\n },\n VBtnGroup: {\n rounded: 'xl',\n VBtn: { rounded: null },\n },\n VCard: {\n rounded: 'lg',\n },\n VCheckbox: {\n color: 'secondary',\n inset: true,\n },\n VChip: {\n rounded: 'sm',\n },\n VCombobox: {\n variant: 'filled',\n },\n VNavigationDrawer: {\n // VList: {\n // nav: true,\n // VListItem: {\n // rounded: 'xl',\n // },\n // },\n },\n VSelect: {\n variant: 'filled',\n },\n VSlider: {\n color: 'primary',\n },\n VTabs: {\n color: 'primary',\n },\n VTextarea: {\n variant: 'filled',\n },\n VTextField: {\n variant: 'filled',\n },\n VToolbar: {\n VBtn: {\n color: null,\n },\n },\n },\n icons: {\n defaultSet: 'mdi',\n sets: {\n mdi,\n },\n },\n theme: {\n themes: {\n light: {\n colors: {\n primary: '#6750a4',\n secondary: '#b4b0bb',\n tertiary: '#7d5260',\n error: '#b3261e',\n surface: '#fffbfe',\n },\n },\n },\n },\n}\n","// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport { templateRef } from '@/util'\nimport { IN_BROWSER } from '@/util/globals'\n\n// Types\nimport type { DeepReadonly, Ref } from 'vue'\nimport type { TemplateRef } from '@/util'\n\ninterface ResizeState {\n resizeRef: TemplateRef\n contentRect: DeepReadonly>\n}\n\nexport function useResizeObserver (callback?: ResizeObserverCallback, box: 'content' | 'border' = 'content'): ResizeState {\n const resizeRef = templateRef()\n const contentRect = ref()\n\n if (IN_BROWSER) {\n const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n callback?.(entries, observer)\n\n if (!entries.length) return\n\n if (box === 'content') {\n contentRect.value = entries[0].contentRect\n } else {\n contentRect.value = entries[0].target.getBoundingClientRect()\n }\n })\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(() => resizeRef.el, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n contentRect.value = undefined\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return {\n resizeRef,\n contentRect: readonly(contentRect),\n }\n}\n","// Composables\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport {\n computed,\n inject,\n nextTick,\n onActivated,\n onBeforeUnmount,\n onDeactivated,\n provide,\n reactive,\n ref,\n shallowRef,\n} from 'vue'\nimport { convertToUnit, eagerComputed, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, CSSProperties, InjectionKey, Prop, Ref } from 'vue'\n\nexport type Position = 'top' | 'left' | 'right' | 'bottom'\n\ninterface Layer {\n top: number\n bottom: number\n left: number\n right: number\n}\n\ninterface LayoutItem extends Layer {\n id: string\n size: number\n position: Position\n}\n\ninterface LayoutProvide {\n register: (\n vm: ComponentInternalInstance,\n options: {\n id: string\n order: Ref\n position: Ref\n layoutSize: Ref\n elementSize: Ref\n active: Ref\n disableTransitions?: Ref\n absolute: Ref\n }\n ) => {\n layoutItemStyles: Ref\n layoutItemScrimStyles: Ref\n zIndex: Ref\n }\n unregister: (id: string) => void\n mainRect: Ref\n mainStyles: Ref\n getLayoutItem: (id: string) => LayoutItem | undefined\n items: Ref\n layoutRect: Ref\n rootZIndex: Ref\n layoutIsReady: Promise\n}\n\nexport const VuetifyLayoutKey: InjectionKey = Symbol.for('vuetify:layout')\nexport const VuetifyLayoutItemKey: InjectionKey<{ id: string }> = Symbol.for('vuetify:layout-item')\n\nconst ROOT_ZINDEX = 1000\n\nexport const makeLayoutProps = propsFactory({\n overlaps: {\n type: Array,\n default: () => ([]),\n } as Prop,\n fullHeight: Boolean,\n}, 'layout')\n\n// Composables\nexport const makeLayoutItemProps = propsFactory({\n name: {\n type: String,\n },\n order: {\n type: [Number, String],\n default: 0,\n },\n absolute: Boolean,\n}, 'layout-item')\n\nexport function useLayout () {\n const layout = inject(VuetifyLayoutKey)\n\n if (!layout) throw new Error('[Vuetify] Could not find injected layout')\n\n const layoutIsReady = nextTick()\n\n return {\n layoutIsReady,\n getLayoutItem: layout.getLayoutItem,\n mainRect: layout.mainRect,\n mainStyles: layout.mainStyles,\n }\n}\n\nexport function useLayoutItem (options: {\n id: string | undefined\n order: Ref\n position: Ref\n layoutSize: Ref\n elementSize: Ref\n active: Ref\n disableTransitions?: Ref\n absolute: Ref\n}) {\n const layout = inject(VuetifyLayoutKey)\n\n if (!layout) throw new Error('[Vuetify] Could not find injected layout')\n\n const id = options.id ?? `layout-item-${getUid()}`\n\n const vm = getCurrentInstance('useLayoutItem')\n\n provide(VuetifyLayoutItemKey, { id })\n\n const isKeptAlive = shallowRef(false)\n onDeactivated(() => isKeptAlive.value = true)\n onActivated(() => isKeptAlive.value = false)\n\n const layoutIsReady = nextTick()\n\n const {\n layoutItemStyles,\n layoutItemScrimStyles,\n } = layout.register(vm, {\n ...options,\n active: computed(() => isKeptAlive.value ? false : options.active.value),\n id,\n })\n\n onBeforeUnmount(() => layout.unregister(id))\n\n return { layoutItemStyles, layoutRect: layout.layoutRect, layoutItemScrimStyles, layoutIsReady }\n}\n\nconst generateLayers = (\n layout: string[],\n positions: Map>,\n layoutSizes: Map>,\n activeItems: Map>,\n): { id: string, layer: Layer }[] => {\n let previousLayer: Layer = { top: 0, left: 0, right: 0, bottom: 0 }\n const layers = [{ id: '', layer: { ...previousLayer } }]\n for (const id of layout) {\n const position = positions.get(id)\n const amount = layoutSizes.get(id)\n const active = activeItems.get(id)\n if (!position || !amount || !active) continue\n\n const layer = {\n ...previousLayer,\n [position.value]: parseInt(previousLayer[position.value], 10) + (active.value ? parseInt(amount.value, 10) : 0),\n }\n\n layers.push({\n id,\n layer,\n })\n\n previousLayer = layer\n }\n\n return layers\n}\n\nexport function createLayout (props: { overlaps?: string[], fullHeight?: boolean }) {\n const parentLayout = inject(VuetifyLayoutKey, null)\n const rootZIndex = computed(() => parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX)\n const registered = ref([])\n const positions = reactive(new Map>())\n const layoutSizes = reactive(new Map>())\n const priorities = reactive(new Map>())\n const activeItems = reactive(new Map>())\n const disabledTransitions = reactive(new Map>())\n const { resizeRef, contentRect: layoutRect } = useResizeObserver()\n\n const layers = eagerComputed(() => {\n const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b)\n const layout = []\n for (const p of uniquePriorities) {\n const items = registered.value.filter(id => priorities.get(id)?.value === p)\n layout.push(...items)\n }\n return generateLayers(layout, positions, layoutSizes, activeItems)\n })\n\n const transitionsEnabled = computed(() => {\n return !Array.from(disabledTransitions.values()).some(ref => ref.value)\n })\n\n const mainRect = computed(() => {\n return layers.value[layers.value.length - 1].layer\n })\n\n const mainStyles = computed(() => {\n return {\n '--v-layout-left': convertToUnit(mainRect.value.left),\n '--v-layout-right': convertToUnit(mainRect.value.right),\n '--v-layout-top': convertToUnit(mainRect.value.top),\n '--v-layout-bottom': convertToUnit(mainRect.value.bottom),\n ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n }\n })\n\n const items = eagerComputed(() => {\n return layers.value.slice(1).map(({ id }, index) => {\n const { layer } = layers.value[index]\n const size = layoutSizes.get(id)\n const position = positions.get(id)\n\n return {\n id,\n ...layer,\n size: Number(size!.value),\n position: position!.value,\n }\n })\n })\n\n const getLayoutItem = (id: string) => {\n return items.value.find(item => item.id === id)\n }\n\n const rootVm = getCurrentInstance('createLayout')\n\n const layoutIsReady = nextTick()\n\n provide(VuetifyLayoutKey, {\n register: (\n vm: ComponentInternalInstance,\n {\n id,\n order,\n position,\n layoutSize,\n elementSize,\n active,\n disableTransitions,\n absolute,\n }\n ) => {\n priorities.set(id, order)\n positions.set(id, position)\n layoutSizes.set(id, layoutSize)\n activeItems.set(id, active)\n disableTransitions && disabledTransitions.set(id, disableTransitions)\n\n const instances = findChildrenWithProvide(VuetifyLayoutItemKey, rootVm?.vnode)\n const instanceIndex = instances.indexOf(vm)\n\n if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id)\n else registered.value.push(id)\n\n const index = computed(() => items.value.findIndex(i => i.id === id))\n const zIndex = computed(() => rootZIndex.value + (layers.value.length * 2) - (index.value * 2))\n\n const layoutItemStyles = computed(() => {\n const isHorizontal = position.value === 'left' || position.value === 'right'\n const isOppositeHorizontal = position.value === 'right'\n const isOppositeVertical = position.value === 'bottom'\n const size = elementSize.value ?? layoutSize.value\n const unit = size === 0 ? '%' : 'px'\n\n const styles = {\n [position.value]: 0,\n zIndex: zIndex.value,\n transform: `translate${isHorizontal ? 'X' : 'Y'}(${(active.value ? 0 : -(size === 0 ? 100 : size)) * (isOppositeHorizontal || isOppositeVertical ? -1 : 1)}${unit})`,\n position: absolute.value || rootZIndex.value !== ROOT_ZINDEX ? 'absolute' : 'fixed',\n ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n } as const\n\n if (index.value < 0) throw new Error(`Layout item \"${id}\" is missing`)\n\n const item = items.value[index.value]\n\n if (!item) throw new Error(`[Vuetify] Could not find layout item \"${id}\"`)\n\n return {\n ...styles,\n height:\n isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)`\n : elementSize.value ? `${elementSize.value}px`\n : undefined,\n left: isOppositeHorizontal ? undefined : `${item.left}px`,\n right: isOppositeHorizontal ? `${item.right}px` : undefined,\n top: position.value !== 'bottom' ? `${item.top}px` : undefined,\n bottom: position.value !== 'top' ? `${item.bottom}px` : undefined,\n width:\n !isHorizontal ? `calc(100% - ${item.left}px - ${item.right}px)`\n : elementSize.value ? `${elementSize.value}px`\n : undefined,\n }\n })\n\n const layoutItemScrimStyles = computed(() => ({\n zIndex: zIndex.value - 1,\n }))\n\n return { layoutItemStyles, layoutItemScrimStyles, zIndex }\n },\n unregister: (id: string) => {\n priorities.delete(id)\n positions.delete(id)\n layoutSizes.delete(id)\n activeItems.delete(id)\n disabledTransitions.delete(id)\n registered.value = registered.value.filter(v => v !== id)\n },\n mainRect,\n mainStyles,\n getLayoutItem,\n items,\n layoutRect,\n rootZIndex,\n layoutIsReady,\n })\n\n const layoutClasses = computed(() => [\n 'v-layout',\n { 'v-layout--full-height': props.fullHeight },\n ])\n\n const layoutStyles = computed(() => ({\n zIndex: parentLayout ? rootZIndex.value : undefined,\n position: parentLayout ? 'relative' as const : undefined,\n overflow: parentLayout ? 'hidden' : undefined,\n }))\n\n return {\n layoutClasses,\n layoutStyles,\n getLayoutItem,\n items,\n layoutRect,\n layoutIsReady,\n layoutRef: resizeRef,\n }\n}\n","// Utilities\nimport { effectScope, onScopeDispose, watch } from 'vue'\n\n// Types\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource, fn: (reset: () => void) => void) {\n let scope: EffectScope | undefined\n function start () {\n scope = effectScope()\n scope.run(() => fn.length\n ? fn(() => { scope?.stop(); start() })\n : (fn as any)()\n )\n }\n\n watch(source, active => {\n if (active && !scope) {\n start()\n } else if (!active) {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n","// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { EventProp } from '@/util'\n\ntype InnerVal = T extends any[] ? Readonly : T\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: EventProp | undefined },\n Prop extends Extract,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n const internal = ref(props[prop] !== undefined ? props[prop] : defaultValue) as Ref\n const kebabProp = toKebabCase(prop)\n const checkKebab = kebabProp !== prop\n\n const isControlled = checkKebab\n ? computed(() => {\n void props[prop]\n return !!(\n (vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) &&\n (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`))\n )\n })\n : computed(() => {\n void props[prop]\n return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`))\n })\n\n useToggleScope(() => !isControlled.value, () => {\n watch(() => props[prop], val => {\n internal.value = val\n })\n })\n\n const model = computed({\n get (): any {\n const externalValue = props[prop]\n return transformIn(isControlled.value ? externalValue : internal.value)\n },\n set (internalValue) {\n const newValue = transformOut(internalValue)\n const value = toRaw(isControlled.value ? props[prop] : internal.value)\n if (value === newValue || transformIn(value) === internalValue) {\n return\n }\n internal.value = newValue\n vm?.emit(`update:${prop}`, newValue)\n },\n }) as any as Ref> & { readonly externalValue: Props[Prop] }\n\n Object.defineProperty(model, 'externalValue', {\n get: () => isControlled.value ? props[prop] : internal.value,\n })\n\n return model\n}\n","export default {\n badge: 'Badge',\n open: 'Open',\n close: 'Close',\n dismiss: 'Dismiss',\n confirmEdit: {\n ok: 'OK',\n cancel: 'Cancel',\n },\n dataIterator: {\n noResultsText: 'No matching records found',\n loadingText: 'Loading items...',\n },\n dataTable: {\n itemsPerPageText: 'Rows per page:',\n ariaLabel: {\n sortDescending: 'Sorted descending.',\n sortAscending: 'Sorted ascending.',\n sortNone: 'Not sorted.',\n activateNone: 'Activate to remove sorting.',\n activateDescending: 'Activate to sort descending.',\n activateAscending: 'Activate to sort ascending.',\n },\n sortBy: 'Sort by',\n },\n dataFooter: {\n itemsPerPageText: 'Items per page:',\n itemsPerPageAll: 'All',\n nextPage: 'Next page',\n prevPage: 'Previous page',\n firstPage: 'First page',\n lastPage: 'Last page',\n pageText: '{0}-{1} of {2}',\n },\n dateRangeInput: {\n divider: 'to',\n },\n datePicker: {\n itemsSelected: '{0} selected',\n range: {\n title: 'Select dates',\n header: 'Enter dates',\n },\n title: 'Select date',\n header: 'Enter date',\n input: {\n placeholder: 'Enter date',\n },\n },\n noDataText: 'No data available',\n carousel: {\n prev: 'Previous visual',\n next: 'Next visual',\n ariaLabel: {\n delimiter: 'Carousel slide {0} of {1}',\n },\n },\n calendar: {\n moreEvents: '{0} more',\n today: 'Today',\n },\n input: {\n clear: 'Clear {0}',\n prependAction: '{0} prepended action',\n appendAction: '{0} appended action',\n otp: 'Please enter OTP character {0}',\n },\n fileInput: {\n counter: '{0} files',\n counterSize: '{0} files ({1} in total)',\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n title: 'Select Time',\n },\n pagination: {\n ariaLabel: {\n root: 'Pagination Navigation',\n next: 'Next page',\n previous: 'Previous page',\n page: 'Go to page {0}',\n currentPage: 'Page {0}, Current page',\n first: 'First page',\n last: 'Last page',\n },\n },\n stepper: {\n next: 'Next',\n prev: 'Previous',\n },\n rating: {\n ariaLabel: {\n item: 'Rating {0} of {1}',\n },\n },\n loading: 'Loading...',\n infiniteScroll: {\n loadMore: 'Load more',\n empty: 'No more',\n },\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { ref, shallowRef, watch } from 'vue'\nimport { consoleError, consoleWarn, getObjectValueByPath } from '@/util'\n\n// Locales\nimport en from '@/locale/en'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { LocaleInstance, LocaleMessages, LocaleOptions } from '@/composables/locale'\n\nconst LANG_PREFIX = '$vuetify.'\n\nconst replace = (str: string, params: unknown[]) => {\n return str.replace(/\\{(\\d+)\\}/g, (match: string, index: string) => {\n return String(params[+index])\n })\n}\n\nconst createTranslateFunction = (\n current: Ref,\n fallback: Ref,\n messages: Ref,\n) => {\n return (key: string, ...params: unknown[]) => {\n if (!key.startsWith(LANG_PREFIX)) {\n return replace(key, params)\n }\n\n const shortKey = key.replace(LANG_PREFIX, '')\n const currentLocale = current.value && messages.value[current.value]\n const fallbackLocale = fallback.value && messages.value[fallback.value]\n\n let str: string = getObjectValueByPath(currentLocale, shortKey, null)\n\n if (!str) {\n consoleWarn(`Translation key \"${key}\" not found in \"${current.value}\", trying fallback locale`)\n str = getObjectValueByPath(fallbackLocale, shortKey, null)\n }\n\n if (!str) {\n consoleError(`Translation key \"${key}\" not found in fallback`)\n str = key\n }\n\n if (typeof str !== 'string') {\n consoleError(`Translation key \"${key}\" has a non-string value`)\n str = key\n }\n\n return replace(str, params)\n }\n}\n\nfunction createNumberFunction (current: Ref, fallback: Ref) {\n return (value: number, options?: Intl.NumberFormatOptions) => {\n const numberFormat = new Intl.NumberFormat([current.value, fallback.value], options)\n\n return numberFormat.format(value)\n }\n}\n\nfunction useProvided (props: any, prop: string, provided: Ref) {\n const internal = useProxiedModel(props, prop, props[prop] ?? provided.value)\n\n // TODO: Remove when defaultValue works\n internal.value = props[prop] ?? provided.value\n\n watch(provided, v => {\n if (props[prop] == null) {\n internal.value = provided.value\n }\n })\n\n return internal as Ref\n}\n\nfunction createProvideFunction (state: { current: Ref, fallback: Ref, messages: Ref }) {\n return (props: LocaleOptions): LocaleInstance => {\n const current = useProvided(props, 'locale', state.current)\n const fallback = useProvided(props, 'fallback', state.fallback)\n const messages = useProvided(props, 'messages', state.messages)\n\n return {\n name: 'vuetify',\n current,\n fallback,\n messages,\n t: createTranslateFunction(current, fallback, messages),\n n: createNumberFunction(current, fallback),\n provide: createProvideFunction({ current, fallback, messages }),\n }\n }\n}\n\nexport function createVuetifyAdapter (options?: LocaleOptions): LocaleInstance {\n const current = shallowRef(options?.locale ?? 'en')\n const fallback = shallowRef(options?.fallback ?? 'en')\n const messages = ref({ en, ...options?.messages })\n\n return {\n name: 'vuetify',\n current,\n fallback,\n messages,\n t: createTranslateFunction(current, fallback, messages),\n n: createNumberFunction(current, fallback),\n provide: createProvideFunction({ current, fallback, messages }),\n }\n}\n","// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { createVuetifyAdapter } from '@/locale/adapters/vuetify'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nexport interface LocaleMessages {\n [key: string]: LocaleMessages | string\n}\n\nexport interface LocaleOptions {\n messages?: LocaleMessages\n locale?: string\n fallback?: string\n adapter?: LocaleInstance\n}\n\nexport interface LocaleInstance {\n name: string\n messages: Ref\n current: Ref\n fallback: Ref\n t: (key: string, ...params: unknown[]) => string\n n: (value: number) => string\n provide: (props: LocaleOptions) => LocaleInstance\n}\n\nexport const LocaleSymbol: InjectionKey = Symbol.for('vuetify:locale')\n\nfunction isLocaleInstance (obj: any): obj is LocaleInstance {\n return obj.name != null\n}\n\nexport function createLocale (options?: LocaleOptions & RtlOptions) {\n const i18n = options?.adapter && isLocaleInstance(options?.adapter) ? options?.adapter : createVuetifyAdapter(options)\n const rtl = createRtl(i18n, options)\n\n return { ...i18n, ...rtl }\n}\n\nexport function useLocale () {\n const locale = inject(LocaleSymbol)\n\n if (!locale) throw new Error('[Vuetify] Could not find injected locale instance')\n\n return locale\n}\n\nexport function provideLocale (props: LocaleOptions & RtlProps) {\n const locale = inject(LocaleSymbol)\n\n if (!locale) throw new Error('[Vuetify] Could not find injected locale instance')\n\n const i18n = locale.provide(props)\n const rtl = provideRtl(i18n, locale.rtl, props)\n\n const data = { ...i18n, ...rtl }\n\n provide(LocaleSymbol, data)\n\n return data\n}\n\n// RTL\n\nexport interface RtlOptions {\n rtl?: Record\n}\n\nexport interface RtlProps {\n rtl?: boolean\n}\n\nexport interface RtlInstance {\n isRtl: Ref\n rtl: Ref>\n rtlClasses: Ref\n}\n\nexport const RtlSymbol: InjectionKey = Symbol.for('vuetify:rtl')\n\nfunction genDefaults () {\n return {\n af: false,\n ar: true,\n bg: false,\n ca: false,\n ckb: false,\n cs: false,\n de: false,\n el: false,\n en: false,\n es: false,\n et: false,\n fa: true,\n fi: false,\n fr: false,\n hr: false,\n hu: false,\n he: true,\n id: false,\n it: false,\n ja: false,\n km: false,\n ko: false,\n lv: false,\n lt: false,\n nl: false,\n no: false,\n pl: false,\n pt: false,\n ro: false,\n ru: false,\n sk: false,\n sl: false,\n srCyrl: false,\n srLatn: false,\n sv: false,\n th: false,\n tr: false,\n az: false,\n uk: false,\n vi: false,\n zhHans: false,\n zhHant: false,\n }\n}\n\nexport function createRtl (i18n: LocaleInstance, options?: RtlOptions): RtlInstance {\n const rtl = ref>(options?.rtl ?? genDefaults())\n const isRtl = computed(() => rtl.value[i18n.current.value] ?? false)\n\n return {\n isRtl,\n rtl,\n rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`),\n }\n}\n\nexport function provideRtl (locale: LocaleInstance, rtl: RtlInstance['rtl'], props: RtlProps): RtlInstance {\n const isRtl = computed(() => props.rtl ?? rtl.value[locale.current.value] ?? false)\n\n return {\n isRtl,\n rtl,\n rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`),\n }\n}\n\nexport function useRtl () {\n const locale = inject(LocaleSymbol)\n\n if (!locale) throw new Error('[Vuetify] Could not find injected rtl instance')\n\n return { isRtl: locale.isRtl, rtlClasses: locale.rtlClasses }\n}\n","// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getForeground,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\n\n// Types\nimport type { VueHeadClient } from '@unhead/vue'\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record\n}\nexport type ThemeDefinition = DeepPartial\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref>\n\n readonly name: Readonly>\n readonly current: DeepReadonly>\n readonly computedThemes: DeepReadonly>>\n\n readonly themeClasses: Readonly>\n readonly styles: Readonly>\n\n readonly global: {\n readonly name: Ref\n readonly current: DeepReadonly>\n }\n}\n\nexport const ThemeSymbol: InjectionKey = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nfunction genDefaults () {\n return {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-bright': '#FFFFFF',\n 'surface-light': '#EEEEEE',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#1867C0',\n 'primary-darken-1': '#1F5592',\n secondary: '#48A9A6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-bright': '#ccbfd6',\n 'surface-light': '#424242',\n 'surface-variant': '#a3a3a3',\n 'on-surface-variant': '#424242',\n primary: '#2196F3',\n 'primary-darken-1': '#277CC1',\n secondary: '#54B6B2',\n 'secondary-darken-1': '#48A9A6',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n }\n}\n\nfunction parseThemeOptions (options: ThemeOptions = genDefaults()): InternalThemeOptions {\n const defaults = genDefaults()\n\n if (!options) return { ...defaults, isDisabled: true } as any\n\n const themes: Record = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaults.themes?.dark\n : defaults.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaults,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n theme.colors[onColor] = getForeground(colorVal)\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value?.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient & VueHeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n if (IN_BROWSER) {\n watch(styles, () => { entry.patch(getHead) })\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed(() => {\n return props.theme ?? theme.name.value\n })\n const current = computed(() => theme.themes.value[name.value])\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n current,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n","// Styles\nimport './VApp.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createLayout, makeLayoutProps } from '@/composables/layout'\nimport { useRtl } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { Suspense } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVAppProps = propsFactory({\n ...makeComponentProps(),\n ...makeLayoutProps({ fullHeight: true }),\n ...makeThemeProps(),\n}, 'VApp')\n\nexport const VApp = genericComponent()({\n name: 'VApp',\n\n props: makeVAppProps(),\n\n setup (props, { slots }) {\n const theme = provideTheme(props)\n const { layoutClasses, getLayoutItem, items, layoutRef } = createLayout(props)\n const { rtlClasses } = useRtl()\n\n useRender(() => (\n \n

\n \n <>\n { slots.default?.() }\n \n \n
\n \n ))\n\n return {\n getLayoutItem,\n items,\n theme,\n }\n },\n})\n\nexport type VApp = InstanceType\n","// Utilities\nimport { propsFactory } from '@/util'\n\n// Types\nexport interface TagProps {\n tag: string\n}\n\n// Composables\nexport const makeTagProps = propsFactory({\n tag: {\n type: String,\n default: 'div',\n },\n}, 'tag')\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVToolbarTitleProps = propsFactory({\n text: String,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VToolbarTitle')\n\nexport type VToolbarTitleSlots = {\n default: never\n text: never\n}\n\nexport const VToolbarTitle = genericComponent()({\n name: 'VToolbarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const hasText = !!(slots.default || slots.text || props.text)\n\n return (\n \n { hasText && (\n
\n { slots.text ? slots.text() : props.text }\n\n { slots.default?.() }\n
\n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VToolbarTitle = InstanceType\n","// Utilities\nimport { h, Transition, TransitionGroup } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { FunctionalComponent, PropType } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n disabled: Boolean,\n group: Boolean,\n hideOnLeave: Boolean,\n leaveAbsolute: Boolean,\n mode: String,\n origin: String,\n}, 'transition')\n\nexport function createCssTransition (\n name: string,\n origin?: string,\n mode?: string\n) {\n return genericComponent()({\n name,\n\n props: makeTransitionProps({\n mode,\n origin,\n }),\n\n setup (props, { slots }) {\n const functions = {\n onBeforeEnter (el: HTMLElement) {\n if (props.origin) {\n el.style.transformOrigin = props.origin\n }\n },\n onLeave (el: HTMLElement) {\n if (props.leaveAbsolute) {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = `${offsetTop}px`\n el.style.left = `${offsetLeft}px`\n el.style.width = `${offsetWidth}px`\n el.style.height = `${offsetHeight}px`\n }\n\n if (props.hideOnLeave) {\n el.style.setProperty('display', 'none', 'important')\n }\n },\n onAfterLeave (el: HTMLElement) {\n if (props.leaveAbsolute && el?._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n },\n }\n\n return () => {\n const tag = props.group ? TransitionGroup : Transition\n\n return h(tag as FunctionalComponent, {\n name: props.disabled ? '' : name,\n css: !props.disabled,\n ...(props.group ? undefined : { mode: props.mode }),\n ...(props.disabled ? {} : functions),\n }, slots.default)\n }\n },\n })\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n) {\n return genericComponent()({\n name,\n\n props: {\n mode: {\n type: String as PropType<'in-out' | 'out-in' | 'default'>,\n default: mode,\n },\n disabled: Boolean,\n group: Boolean,\n },\n\n setup (props, { slots }) {\n const tag = props.group ? TransitionGroup : Transition\n\n return () => {\n return h(tag as FunctionalComponent, {\n name: props.disabled ? '' : name,\n css: !props.disabled,\n // mode: props.mode, // TODO: vuejs/vue-next#3104\n ...(props.disabled ? {} : functions),\n }, slots.default)\n }\n },\n })\n}\n","// Utilities\nimport { camelize } from 'vue'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = camelize(`offset-${sizeProperty}`) as 'offsetHeight' | 'offsetWidth'\n\n return {\n onBeforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n onEnter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n onAfterEnter: resetStyles,\n onEnterCancelled: resetStyles,\n\n onLeave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n onAfterLeave,\n onLeaveCancelled: onAfterLeave,\n }\n\n function onAfterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","// Utilities\nimport { Transition } from 'vue'\nimport {\n acceleratedEasing,\n animate,\n deceleratedEasing,\n genericComponent,\n nullifyTransforms,\n propsFactory,\n standardEasing,\n} from '@/util'\nimport { getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDialogTransitionProps = propsFactory({\n target: [Object, Array] as PropType,\n}, 'v-dialog-transition')\n\nexport const VDialogTransition = genericComponent()({\n name: 'VDialogTransition',\n\n props: makeVDialogTransitionProps(),\n\n setup (props, { slots }) {\n const functions = {\n onBeforeEnter (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n ;(el as HTMLElement).style.visibility = 'hidden'\n },\n async onEnter (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n ;(el as HTMLElement).style.visibility = ''\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n {},\n ], {\n duration: 225 * speed,\n easing: deceleratedEasing,\n })\n getChildren(el)?.forEach(el => {\n animate(el, [\n { opacity: 0 },\n { opacity: 0, offset: 0.33 },\n {},\n ], {\n duration: 225 * 2 * speed,\n easing: standardEasing,\n })\n })\n animation.finished.then(() => done())\n },\n onAfterEnter (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n onBeforeLeave (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n },\n async onLeave (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n {},\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n ], {\n duration: 125 * speed,\n easing: acceleratedEasing,\n })\n animation.finished.then(() => done())\n getChildren(el)?.forEach(el => {\n animate(el, [\n {},\n { opacity: 0, offset: 0.2 },\n { opacity: 0 },\n ], {\n duration: 125 * 2 * speed,\n easing: standardEasing,\n })\n })\n },\n onAfterLeave (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n }\n\n return () => {\n return props.target\n ? (\n \n )\n : \n }\n },\n})\n\n/** Animatable children (card, sheet, list) */\nfunction getChildren (el: Element) {\n const els = el.querySelector(':scope > .v-card, :scope > .v-sheet, :scope > .v-list')?.children\n return els && [...els]\n}\n\nfunction getDimensions (target: HTMLElement | [x: number, y: number], el: HTMLElement) {\n const targetBox = getTargetBox(target)\n const elBox = nullifyTransforms(el)\n const [originX, originY] = getComputedStyle(el).transformOrigin.split(' ').map(v => parseFloat(v))\n\n const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue('--v-overlay-anchor-origin').split(' ')\n\n let offsetX = targetBox.left + targetBox.width / 2\n if (anchorSide === 'left' || anchorOffset === 'left') {\n offsetX -= targetBox.width / 2\n } else if (anchorSide === 'right' || anchorOffset === 'right') {\n offsetX += targetBox.width / 2\n }\n\n let offsetY = targetBox.top + targetBox.height / 2\n if (anchorSide === 'top' || anchorOffset === 'top') {\n offsetY -= targetBox.height / 2\n } else if (anchorSide === 'bottom' || anchorOffset === 'bottom') {\n offsetY += targetBox.height / 2\n }\n\n const tsx = targetBox.width / elBox.width\n const tsy = targetBox.height / elBox.height\n const maxs = Math.max(1, tsx, tsy)\n const sx = tsx / maxs || 0\n const sy = tsy / maxs || 0\n\n // Animate elements larger than 12% of the screen area up to 1.5x slower\n const asa = (elBox.width * elBox.height) / (window.innerWidth * window.innerHeight)\n const speed = asa > 0.12\n ? Math.min(1.5, (asa - 0.12) * 10 + 1)\n : 1\n\n return {\n x: offsetX - (originX + elBox.left),\n y: offsetY - (originY + elBox.top),\n sx,\n sy,\n speed,\n }\n}\n\nexport type VDialogTransition = InstanceType\n","import {\n createCssTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VFabTransition = createCssTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogBottomTransition = createCssTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createCssTransition('dialog-top-transition')\nexport const VFadeTransition = createCssTransition('fade-transition')\nexport const VScaleTransition = createCssTransition('scale-transition')\nexport const VScrollXTransition = createCssTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createCssTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createCssTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createCssTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createCssTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createCssTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createCssTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createCssTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport { VDialogTransition } from './dialog-transition'\n\nexport type VFabTransition = InstanceType\nexport type VDialogBottomTransition = InstanceType\nexport type VDialogTopTransition = InstanceType\nexport type VFadeTransition = InstanceType\nexport type VScaleTransition = InstanceType\nexport type VScrollXTransition = InstanceType\nexport type VScrollXReverseTransition = InstanceType\nexport type VScrollYTransition = InstanceType\nexport type VScrollYReverseTransition = InstanceType\nexport type VSlideXTransition = InstanceType\nexport type VSlideXReverseTransition = InstanceType\nexport type VSlideYTransition = InstanceType\nexport type VSlideYReverseTransition = InstanceType\nexport type VExpandTransition = InstanceType\nexport type VExpandXTransition = InstanceType\n","// Composables\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { toRefs } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DefaultsOptions } from '@/composables/defaults'\n\nexport const makeVDefaultsProviderProps = propsFactory({\n defaults: Object as PropType,\n disabled: Boolean,\n reset: [Number, String],\n root: [Boolean, String],\n scoped: Boolean,\n}, 'VDefaultsProvider')\n\nexport const VDefaultsProvider = genericComponent(false)({\n name: 'VDefaultsProvider',\n\n props: makeVDefaultsProviderProps(),\n\n setup (props, { slots }) {\n const { defaults, disabled, reset, root, scoped } = toRefs(props)\n\n provideDefaults(defaults, {\n reset,\n root,\n scoped,\n disabled,\n })\n\n return () => slots.default?.()\n },\n})\n\nexport type VDefaultsProvider = InstanceType\n","// Utilities\nimport { computed } from 'vue'\nimport { convertToUnit, propsFactory } from '@/util'\n\n// Types\nexport interface DimensionProps {\n height?: number | string\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n width?: number | string\n}\n\n// Composables\nexport const makeDimensionProps = propsFactory({\n height: [Number, String],\n maxHeight: [Number, String],\n maxWidth: [Number, String],\n minHeight: [Number, String],\n minWidth: [Number, String],\n width: [Number, String],\n}, 'dimension')\n\nexport function useDimension (props: DimensionProps) {\n const dimensionStyles = computed(() => ({\n height: convertToUnit(props.height),\n maxHeight: convertToUnit(props.maxHeight),\n maxWidth: convertToUnit(props.maxWidth),\n minHeight: convertToUnit(props.minHeight),\n minWidth: convertToUnit(props.minWidth),\n width: convertToUnit(props.width),\n }))\n\n return { dimensionStyles }\n}\n","// Styles\nimport './VResponsive.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VResponsiveSlots = {\n default: never\n additional: never\n}\n\nexport function useAspectStyles (props: { aspectRatio?: string | number }) {\n return {\n aspectStyles: computed(() => {\n const ratio = Number(props.aspectRatio)\n\n return ratio\n ? { paddingBottom: String(1 / ratio * 100) + '%' }\n : undefined\n }),\n }\n}\n\nexport const makeVResponsiveProps = propsFactory({\n aspectRatio: [String, Number],\n contentClass: null,\n inline: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VResponsive')\n\nexport const VResponsive = genericComponent()({\n name: 'VResponsive',\n\n props: makeVResponsiveProps(),\n\n setup (props, { slots }) {\n const { aspectStyles } = useAspectStyles(props)\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n \n
\n\n { slots.additional?.() }\n\n { slots.default && (\n
{ slots.default() }
\n )}\n
\n ))\n\n return {}\n },\n})\n\nexport type VResponsive = InstanceType\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { destructComputed, getForeground, isCssColor, isParsableColor, parseColor } from '@/util'\n\n// Types\nimport type { CSSProperties, Ref } from 'vue'\n\ntype ColorValue = string | false | null | undefined\n\nexport interface TextColorData {\n textColorClasses: Ref\n textColorStyles: Ref\n}\n\nexport interface BackgroundColorData {\n backgroundColorClasses: Ref\n backgroundColorStyles: Ref\n}\n\n// Composables\nexport function useColor (colors: Ref<{ background?: ColorValue, text?: ColorValue }>) {\n return destructComputed(() => {\n const classes: string[] = []\n const styles: CSSProperties = {}\n\n if (colors.value.background) {\n if (isCssColor(colors.value.background)) {\n styles.backgroundColor = colors.value.background\n\n if (!colors.value.text && isParsableColor(colors.value.background)) {\n const backgroundColor = parseColor(colors.value.background)\n if (backgroundColor.a == null || backgroundColor.a === 1) {\n const textColor = getForeground(backgroundColor)\n\n styles.color = textColor\n styles.caretColor = textColor\n }\n }\n } else {\n classes.push(`bg-${colors.value.background}`)\n }\n }\n\n if (colors.value.text) {\n if (isCssColor(colors.value.text)) {\n styles.color = colors.value.text\n styles.caretColor = colors.value.text\n } else {\n classes.push(`text-${colors.value.text}`)\n }\n }\n\n return { colorClasses: classes, colorStyles: styles }\n })\n}\n\nexport function useTextColor (color: Ref): TextColorData\nexport function useTextColor , K extends string> (props: T, name: K): TextColorData\nexport function useTextColor , K extends string> (\n props: T | Ref,\n name?: K\n): TextColorData {\n const colors = computed(() => ({\n text: isRef(props) ? props.value : (name ? props[name] : null),\n }))\n\n const {\n colorClasses: textColorClasses,\n colorStyles: textColorStyles,\n } = useColor(colors)\n\n return { textColorClasses, textColorStyles }\n}\n\nexport function useBackgroundColor (color: Ref): BackgroundColorData\nexport function useBackgroundColor , K extends string> (props: T, name: K): BackgroundColorData\nexport function useBackgroundColor , K extends string> (\n props: T | Ref,\n name?: K\n): BackgroundColorData {\n const colors = computed(() => ({\n background: isRef(props) ? props.value : (name ? props[name] : null),\n }))\n\n const {\n colorClasses: backgroundColorClasses,\n colorStyles: backgroundColorStyles,\n } = useColor(colors)\n\n return { backgroundColorClasses, backgroundColorStyles }\n}\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype RoundedValue = boolean | string | number | null | undefined\n\nexport interface RoundedProps {\n rounded?: RoundedValue\n tile?: boolean\n}\n\ntype RoundedData = {\n roundedClasses: Ref\n}\n\n// Composables\nexport const makeRoundedProps = propsFactory({\n rounded: {\n type: [Boolean, Number, String],\n default: undefined,\n },\n tile: Boolean,\n}, 'rounded')\n\nexport function useRounded (\n props: RoundedProps | Ref,\n name = getCurrentInstanceName(),\n): RoundedData {\n const roundedClasses = computed(() => {\n const rounded = isRef(props) ? props.value : props.rounded\n const tile = isRef(props) ? props.value : props.tile\n const classes: string[] = []\n\n if (rounded === true || rounded === '') {\n classes.push(`${name}--rounded`)\n } else if (\n typeof rounded === 'string' ||\n rounded === 0\n ) {\n for (const value of String(rounded).split(' ')) {\n classes.push(`rounded-${value}`)\n }\n } else if (tile || rounded === false) {\n classes.push('rounded-0')\n }\n\n return classes\n })\n\n return { roundedClasses }\n}\n","// Utilities\nimport { h, mergeProps, Transition, TransitionGroup } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Component, FunctionalComponent, PropType, TransitionProps } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: [Boolean, String, Object] as PropType,\n default: 'fade-transition',\n validator: val => val !== true,\n },\n}, 'transition')\n\ninterface MaybeTransitionProps extends TransitionProps {\n transition?: string | boolean | TransitionProps & { component?: any }\n disabled?: boolean\n group?: boolean\n}\n\nexport const MaybeTransition: FunctionalComponent = (props, { slots }) => {\n const { transition, disabled, group, ...rest } = props\n\n const {\n component = group ? TransitionGroup : Transition,\n ...customProps\n } = typeof transition === 'object' ? transition : {}\n\n return h(\n component,\n mergeProps(\n typeof transition === 'string'\n ? { name: disabled ? '' : transition }\n : customProps as any,\n typeof transition === 'string'\n ? {}\n : Object.fromEntries(Object.entries({ disabled, group }).filter(([_, v]) => v !== undefined)),\n rest as any,\n ),\n slots\n )\n}\n","// Utilities\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\ntype ObserveHandler = (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n) => void\n\nexport interface ObserveDirectiveBinding extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n if (!SUPPORTS_INTERSECTION) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[binding.instance!.$.uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(isIntersecting, entries, observer)\n }\n\n if (isIntersecting && modifiers.once) unmounted(el, binding)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![binding.instance!.$.uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unmounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n const observe = el._observe?.[binding.instance!.$.uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![binding.instance!.$.uid]\n}\n\nexport const Intersect = {\n mounted,\n unmounted,\n}\n\nexport default Intersect\n","// Styles\nimport './VImg.sass'\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from '@/components/VResponsive/VResponsive'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n ref,\n shallowRef,\n toRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n propsFactory,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: never\n placeholder: never\n error: never\n sources: never\n}\n\nexport const makeVImgProps = propsFactory({\n alt: String,\n cover: Boolean,\n color: String,\n draggable: {\n type: [Boolean, String] as PropType,\n default: undefined,\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n crossorigin: String as PropType<'' | 'anonymous' | 'use-credentials'>,\n referrerpolicy: String as PropType<\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url'\n >,\n srcset: String,\n position: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: makeVImgProps(),\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { roundedClasses } = useRounded(props)\n const vm = getCurrentInstance('VImg')\n\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef()\n const naturalHeight = shallowRef()\n\n const normalisedSrc = computed(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n setTimeout(() => {\n if (vm.isUnmounted) return\n\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n if (state.value === 'loading') onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n })\n }\n\n function onLoad () {\n if (vm.isUnmounted) return\n\n getSrc()\n pollForSize(image.value!)\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n if (vm.isUnmounted) return\n\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n\n onBeforeUnmount(() => {\n clearTimeout(timer)\n })\n\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n if (vm.isUnmounted) return\n\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = computed(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n \n )\n\n const sources = slots.sources?.()\n\n return (\n \n {\n withDirectives(\n sources\n ? { sources }{ img }\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n \n )\n }\n\n const __preloadImage = () => (\n \n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n \n )}\n \n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n \n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n
{ slots.placeholder() }
\n }\n
\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n \n { state.value === 'error' &&\n
{ slots.error() }
\n }\n
\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return
\n }\n\n const isBooted = shallowRef(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => {\n const responsiveProps = VResponsive.filterProps(props)\n return (\n {{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n \n ),\n default: slots.default,\n }}\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nexport interface BorderProps {\n border?: boolean | number | string\n}\n\n// Composables\nexport const makeBorderProps = propsFactory({\n border: [Boolean, Number, String],\n}, 'border')\n\nexport function useBorder (\n props: BorderProps,\n name = getCurrentInstanceName(),\n) {\n const borderClasses = computed(() => {\n const border = isRef(props) ? props.value : props.border\n const classes: string[] = []\n\n if (border === true || border === '') {\n classes.push(`${name}--border`)\n } else if (\n typeof border === 'string' ||\n border === 0\n ) {\n for (const value of String(border).split(' ')) {\n classes.push(`border-${value}`)\n }\n }\n\n return classes\n })\n\n return { borderClasses }\n}\n","// Utilities\nimport { computed, isRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nexport interface ElevationProps {\n elevation?: number | string | null\n}\n\n// Composables\nexport const makeElevationProps = propsFactory({\n elevation: {\n type: [Number, String],\n validator (v: any) {\n const value = parseInt(v)\n\n return (\n !isNaN(value) &&\n value >= 0 &&\n // Material Design has a maximum elevation of 24\n // https://material.io/design/environment/elevation.html#default-elevations\n value <= 24\n )\n },\n },\n}, 'elevation')\n\ntype ElevationData = {\n elevationClasses: Ref\n}\n\nexport function useElevation (props: ElevationProps | Ref): ElevationData {\n const elevationClasses = computed(() => {\n const elevation = isRef(props) ? props.value : props.elevation\n const classes: string[] = []\n\n if (elevation == null) return classes\n\n classes.push(`elevation-${elevation}`)\n\n return classes\n })\n\n return { elevationClasses }\n}\n","// Styles\nimport './VToolbar.sass'\n\n// Components\nimport { VToolbarTitle } from './VToolbarTitle'\nimport { VExpandTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedDensities = [null, 'prominent', 'default', 'comfortable', 'compact'] as const\n\nexport type Density = null | 'prominent' | 'default' | 'comfortable' | 'compact'\n\nexport const makeVToolbarProps = propsFactory({\n absolute: Boolean,\n collapse: Boolean,\n color: String,\n density: {\n type: String as PropType,\n default: 'default',\n validator: (v: any) => allowedDensities.includes(v),\n },\n extended: Boolean,\n extensionHeight: {\n type: [Number, String],\n default: 48,\n },\n flat: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default: 64,\n },\n image: String,\n title: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'header' }),\n ...makeThemeProps(),\n}, 'VToolbar')\n\nexport type VToolbarSlots = {\n default: never\n image: never\n prepend: never\n append: never\n title: never\n extension: never\n}\n\nexport const VToolbar = genericComponent()({\n name: 'VToolbar',\n\n props: makeVToolbarProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { themeClasses } = provideTheme(props)\n const { rtlClasses } = useRtl()\n\n const isExtended = shallowRef(!!(props.extended || slots.extension?.()))\n const contentHeight = computed(() => parseInt((\n Number(props.height) +\n (props.density === 'prominent' ? Number(props.height) : 0) -\n (props.density === 'comfortable' ? 8 : 0) -\n (props.density === 'compact' ? 16 : 0)\n ), 10))\n const extensionHeight = computed(() => isExtended.value\n ? parseInt((\n Number(props.extensionHeight) +\n (props.density === 'prominent' ? Number(props.extensionHeight) : 0) -\n (props.density === 'comfortable' ? 4 : 0) -\n (props.density === 'compact' ? 8 : 0)\n ), 10)\n : 0\n )\n\n provideDefaults({\n VBtn: {\n variant: 'text',\n },\n })\n\n useRender(() => {\n const hasTitle = !!(props.title || slots.title)\n const hasImage = !!(slots.image || props.image)\n\n const extension = slots.extension?.()\n isExtended.value = !!(props.extended || extension)\n\n return (\n \n { hasImage && (\n
\n { !slots.image ? (\n \n ) : (\n \n )}\n
\n )}\n\n \n \n { slots.prepend && (\n
\n { slots.prepend?.() }\n
\n )}\n\n { hasTitle && (\n \n {{ text: slots.title }}\n \n )}\n\n { slots.default?.() }\n\n { slots.append && (\n
\n { slots.append?.() }\n
\n )}\n
\n \n\n \n \n { isExtended.value && (\n \n { extension }\n \n )}\n \n \n \n )\n })\n\n return {\n contentHeight,\n extensionHeight,\n }\n },\n})\n\nexport type VToolbar = InstanceType\n","// Utilities\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n watch,\n} from 'vue'\nimport { clamp, consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport interface ScrollProps {\n scrollTarget?: string\n scrollThreshold?: string | number\n}\n\nexport interface ThresholdMetCallbackData {\n isScrollingUp: boolean\n currentThreshold: number\n savedScroll: Ref\n}\n\n// Composables\nexport const makeScrollProps = propsFactory({\n scrollTarget: {\n type: String,\n },\n scrollThreshold: {\n type: [String, Number],\n default: 300,\n },\n}, 'scroll')\n\nexport interface ScrollArguments {\n canScroll?: Readonly>\n}\n\nexport function useScroll (\n props: ScrollProps,\n args: ScrollArguments = {},\n) {\n const { canScroll } = args\n let previousScroll = 0\n const target = ref(null)\n const currentScroll = shallowRef(0)\n const savedScroll = shallowRef(0)\n const currentThreshold = shallowRef(0)\n const isScrollActive = shallowRef(false)\n const isScrollingUp = shallowRef(false)\n\n const scrollThreshold = computed(() => {\n return Number(props.scrollThreshold)\n })\n\n /**\n * 1: at top\n * 0: at threshold\n */\n const scrollRatio = computed(() => {\n return clamp(((scrollThreshold.value - currentScroll.value) / scrollThreshold.value) || 0)\n })\n\n const onScroll = () => {\n const targetEl = target.value\n\n if (!targetEl || (canScroll && !canScroll.value)) return\n\n previousScroll = currentScroll.value\n currentScroll.value = ('window' in targetEl) ? targetEl.pageYOffset : targetEl.scrollTop\n\n isScrollingUp.value = currentScroll.value < previousScroll\n currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value)\n }\n\n watch(isScrollingUp, () => {\n savedScroll.value = savedScroll.value || currentScroll.value\n })\n\n watch(isScrollActive, () => {\n savedScroll.value = 0\n })\n\n onMounted(() => {\n watch(() => props.scrollTarget, scrollTarget => {\n const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window\n\n if (!newTarget) {\n consoleWarn(`Unable to locate element with identifier ${scrollTarget}`)\n return\n }\n\n if (newTarget === target.value) return\n\n target.value?.removeEventListener('scroll', onScroll)\n target.value = newTarget\n target.value.addEventListener('scroll', onScroll, { passive: true })\n }, { immediate: true })\n })\n\n onBeforeUnmount(() => {\n target.value?.removeEventListener('scroll', onScroll)\n })\n\n // Do we need this? If yes - seems that\n // there's no need to expose onScroll\n canScroll && watch(canScroll, onScroll, { immediate: true })\n\n return {\n scrollThreshold,\n currentScroll,\n currentThreshold,\n isScrollActive,\n scrollRatio,\n\n // required only for testing\n // probably can be removed\n // later (2 chars chlng)\n isScrollingUp,\n savedScroll,\n }\n}\n","// Utilities\nimport { computed, onMounted, readonly, shallowRef } from 'vue'\n\n// Composables\nexport function useSsrBoot () {\n const isBooted = shallowRef(false)\n\n onMounted(() => {\n window.requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n\n const ssrBootStyles = computed(() => !isBooted.value ? ({\n transition: 'none !important',\n }) : undefined)\n\n return { ssrBootStyles, isBooted: readonly(isBooted) }\n}\n","// Styles\nimport './VAppBar.sass'\n\n// Components\nimport { makeVToolbarProps, VToolbar } from '@/components/VToolbar/VToolbar'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeScrollProps, useScroll } from '@/composables/scroll'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VToolbarSlots } from '@/components/VToolbar/VToolbar'\n\nexport const makeVAppBarProps = propsFactory({\n scrollBehavior: String as PropType<'hide' | 'inverted' | 'collapse' | 'elevate' | 'fade-image' | (string & {})>,\n modelValue: {\n type: Boolean,\n default: true,\n },\n location: {\n type: String as PropType<'top' | 'bottom'>,\n default: 'top',\n validator: (value: any) => ['top', 'bottom'].includes(value),\n },\n\n ...makeVToolbarProps(),\n ...makeLayoutItemProps(),\n ...makeScrollProps(),\n\n height: {\n type: [Number, String],\n default: 64,\n },\n}, 'VAppBar')\n\nexport const VAppBar = genericComponent()({\n name: 'VAppBar',\n\n props: makeVAppBarProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const vToolbarRef = ref()\n const isActive = useProxiedModel(props, 'modelValue')\n const scrollBehavior = computed(() => {\n const behavior = new Set(props.scrollBehavior?.split(' ') ?? [])\n return {\n hide: behavior.has('hide'),\n fullyHide: behavior.has('fully-hide'),\n inverted: behavior.has('inverted'),\n collapse: behavior.has('collapse'),\n elevate: behavior.has('elevate'),\n fadeImage: behavior.has('fade-image'),\n // shrink: behavior.has('shrink'),\n }\n })\n const canScroll = computed(() => {\n const behavior = scrollBehavior.value\n return (\n behavior.hide ||\n behavior.fullyHide ||\n behavior.inverted ||\n behavior.collapse ||\n behavior.elevate ||\n behavior.fadeImage ||\n // behavior.shrink ||\n !isActive.value\n )\n })\n const {\n currentScroll,\n scrollThreshold,\n isScrollingUp,\n scrollRatio,\n } = useScroll(props, { canScroll })\n\n const canHide = computed(() => (\n scrollBehavior.value.hide ||\n scrollBehavior.value.fullyHide\n ))\n const isCollapsed = computed(() => props.collapse || (\n scrollBehavior.value.collapse &&\n (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0)\n ))\n const isFlat = computed(() => props.flat || (\n scrollBehavior.value.fullyHide &&\n !isActive.value\n ) || (\n scrollBehavior.value.elevate &&\n (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0)\n ))\n const opacity = computed(() => (\n scrollBehavior.value.fadeImage\n ? (scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value)\n : undefined\n ))\n const height = computed(() => {\n const height = Number(vToolbarRef.value?.contentHeight ?? props.height)\n const extensionHeight = Number(vToolbarRef.value?.extensionHeight ?? 0)\n\n if (!canHide.value) return (height + extensionHeight)\n\n return currentScroll.value < scrollThreshold.value || scrollBehavior.value.fullyHide\n ? (height + extensionHeight)\n : height\n })\n\n useToggleScope(computed(() => !!props.scrollBehavior), () => {\n watchEffect(() => {\n if (canHide.value) {\n if (scrollBehavior.value.inverted) {\n isActive.value = currentScroll.value > scrollThreshold.value\n } else {\n isActive.value = isScrollingUp.value || (currentScroll.value < scrollThreshold.value)\n }\n } else {\n isActive.value = true\n }\n })\n })\n\n const { ssrBootStyles } = useSsrBoot()\n const { layoutItemStyles, layoutIsReady } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'location'),\n layoutSize: height,\n elementSize: shallowRef(undefined),\n active: isActive,\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => {\n const toolbarProps = VToolbar.filterProps(props)\n\n return (\n \n )\n })\n\n return layoutIsReady\n },\n})\n\nexport type VAppBar = InstanceType\n","// Utilities\nimport { computed } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedDensities = [null, 'default', 'comfortable', 'compact'] as const\n\n// typeof allowedDensities[number] evalutes to any\n// when generating api types for whatever reason.\nexport type Density = null | 'default' | 'comfortable' | 'compact'\n\nexport interface DensityProps {\n density?: Density\n}\n\n// Composables\nexport const makeDensityProps = propsFactory({\n density: {\n type: String as PropType,\n default: 'default',\n validator: (v: any) => allowedDensities.includes(v),\n },\n}, 'density')\n\nexport function useDensity (\n props: DensityProps,\n name = getCurrentInstanceName(),\n) {\n const densityClasses = computed(() => {\n return `${name}--density-${props.density}`\n })\n\n return { densityClasses }\n}\n","// Composables\nimport { useColor } from '@/composables/color'\n\n// Utilities\nimport { computed, unref } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport const allowedVariants = [\n 'elevated',\n 'flat',\n 'tonal',\n 'outlined',\n 'text',\n 'plain',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n color?: string\n variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n return (\n <>\n { isClickable && }\n\n \n \n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType,\n default: 'elevated',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'variant')\n\nexport function useVariant (\n props: MaybeRef,\n name = getCurrentInstanceName(),\n) {\n const variantClasses = computed(() => {\n const { variant } = unref(props)\n return `${name}--variant-${variant}`\n })\n\n const { colorClasses, colorStyles } = useColor(computed(() => {\n const { variant, color } = unref(props)\n return {\n [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color,\n }\n }))\n\n return { colorClasses, colorStyles, variantClasses }\n}\n","// Styles\nimport './VBtnGroup.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBtnGroupProps = propsFactory({\n baseColor: String,\n divided: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps(),\n}, 'VBtnGroup')\n\nexport const VBtnGroup = genericComponent()({\n name: 'VBtnGroup',\n\n props: makeVBtnGroupProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n provideDefaults({\n VBtn: {\n height: 'auto',\n baseColor: toRef(props, 'baseColor'),\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n flat: true,\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => {\n return (\n \n )\n })\n },\n})\n\nexport type VBtnGroup = InstanceType\n","// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: number\n value: Ref\n disabled: Ref\n useIndexAsValue?: boolean\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': EventProp<[unknown]> | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: number) => void\n select: (id: number, value: boolean) => void\n selected: Ref>\n isSelected: (id: number) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref\n items: ComputedRef<{\n id: number\n value: unknown\n disabled: boolean | undefined\n }[]>\n disabled: Ref\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: number\n isSelected: Ref\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref\n disabled: Ref\n group: GroupProvide\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes> {\n 'onGroup:selected': EventProp<[{ value: boolean }]> | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = getUid()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(props, 'value')\n const disabled = computed(() => !!(group.disabled.value || props.disabled))\n\n group.register({\n id,\n value,\n disabled,\n }, vm)\n\n onBeforeUnmount(() => {\n group.unregister(id)\n })\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n }, { flush: 'sync' })\n\n return {\n id,\n isSelected,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey\n) {\n let isUnmounted = false\n const items = reactive([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v == null) return []\n\n return getIds(items, wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (unref(unwrapped.value) == null) {\n unwrapped.value = index\n unwrapped.useIndexAsValue = true\n }\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: number) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i\n }\n }\n })\n\n function select (id: number, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(props, 'disabled'),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: number) => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef, modelValue: any[]) {\n const ids: number[] = []\n\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value))\n const itemByIndex = items[value]\n\n if (item?.value != null) {\n ids.push(item.id)\n } else if (itemByIndex != null) {\n ids.push(itemByIndex.id)\n }\n })\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef, ids: any[]) {\n const values: unknown[] = []\n\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id)\n if (~itemIndex) {\n const item = items[itemIndex]\n values.push(item.value != null ? item.value : itemIndex)\n }\n })\n\n return values\n}\n","// Styles\nimport './VBtnToggle.sass'\n\n// Components\nimport { makeVBtnGroupProps, VBtnGroup } from '@/components/VBtnGroup/VBtnGroup'\n\n// Composables\nimport { makeGroupProps, useGroup } from '@/composables/group'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport type BtnToggleSlotProps = 'isSelected' | 'select' | 'selected' | 'next' | 'prev'\nexport interface DefaultBtnToggleSlot extends Pick {}\n\nexport const VBtnToggleSymbol: InjectionKey = Symbol.for('vuetify:v-btn-toggle')\n\ntype VBtnToggleSlots = {\n default: DefaultBtnToggleSlot\n}\n\nexport const makeVBtnToggleProps = propsFactory({\n ...makeVBtnGroupProps(),\n ...makeGroupProps(),\n}, 'VBtnToggle')\n\nexport const VBtnToggle = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VBtnToggleSlots,\n) => GenericProps>()({\n name: 'VBtnToggle',\n\n props: makeVBtnToggleProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isSelected, next, prev, select, selected } = useGroup(props, VBtnToggleSymbol)\n\n useRender(() => {\n const btnGroupProps = VBtnGroup.filterProps(props)\n\n return (\n \n { slots.default?.({\n isSelected,\n next,\n prev,\n select,\n selected,\n })}\n \n )\n })\n\n return {\n next,\n prev,\n select,\n }\n },\n})\n\nexport type VBtnToggle = InstanceType\n","// Utilities\nimport { convertToUnit, destructComputed, getCurrentInstanceName, includes, propsFactory } from '@/util'\n\n// Types\nconst predefinedSizes = ['x-small', 'small', 'default', 'large', 'x-large']\n\nexport interface SizeProps {\n size?: string | number\n}\n\n// Composables\nexport const makeSizeProps = propsFactory({\n size: {\n type: [String, Number],\n default: 'default',\n },\n}, 'size')\n\nexport function useSize (\n props: SizeProps,\n name = getCurrentInstanceName(),\n) {\n return destructComputed(() => {\n let sizeClasses\n let sizeStyles\n if (includes(predefinedSizes, props.size)) {\n sizeClasses = `${name}--size-${props.size}`\n } else if (props.size) {\n sizeStyles = {\n width: convertToUnit(props.size),\n height: convertToUnit(props.size),\n }\n }\n return { sizeClasses, sizeStyles }\n })\n}\n","// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, Text, toRef } from 'vue'\nimport { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n disabled: Boolean,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'VIcon')\n\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n const slotIcon = ref()\n\n const { themeClasses } = provideTheme(props)\n const { iconData } = useIcon(computed(() => slotIcon.value || props.icon))\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => {\n const slotValue = slots.default?.()\n if (slotValue) {\n slotIcon.value = flattenFragments(slotValue).filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n }\n const hasClick = !!(attrs.onClick || attrs.onClickOnce)\n\n return (\n \n { slotValue }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType\n","// Utilities\nimport { onBeforeUnmount, ref, shallowRef, watch } from 'vue'\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\nexport function useIntersectionObserver (callback?: IntersectionObserverCallback, options?: IntersectionObserverInit) {\n const intersectionRef = ref()\n const isIntersecting = shallowRef(false)\n\n if (SUPPORTS_INTERSECTION) {\n const observer = new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n callback?.(entries, observer)\n\n isIntersecting.value = !!entries.find(entry => entry.isIntersecting)\n }, options)\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(intersectionRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n isIntersecting.value = false\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return { intersectionRef, isIntersecting }\n}\n","// Styles\nimport './VProgressCircular.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, toRef, watchEffect } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVProgressCircularProps = propsFactory({\n bgColor: String,\n color: String,\n indeterminate: [Boolean, String] as PropType,\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n rotate: {\n type: [Number, String],\n default: 0,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'div' }),\n ...makeThemeProps(),\n}, 'VProgressCircular')\n\ntype VProgressCircularSlots = {\n default: { value: number }\n}\n\nexport const VProgressCircular = genericComponent()({\n name: 'VProgressCircular',\n\n props: makeVProgressCircularProps(),\n\n setup (props, { slots }) {\n const MAGIC_RADIUS_CONSTANT = 20\n const CIRCUMFERENCE = 2 * Math.PI * MAGIC_RADIUS_CONSTANT\n\n const root = ref()\n\n const { themeClasses } = provideTheme(props)\n const { sizeClasses, sizeStyles } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const { textColorClasses: underlayColorClasses, textColorStyles: underlayColorStyles } = useTextColor(toRef(props, 'bgColor'))\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n const { resizeRef, contentRect } = useResizeObserver()\n\n const normalizedValue = computed(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))))\n const width = computed(() => Number(props.width))\n const size = computed(() => {\n // Get size from element if size prop value is small, large etc\n return sizeStyles.value\n ? Number(props.size)\n : contentRect.value\n ? contentRect.value.width\n : Math.max(width.value, 32)\n })\n const diameter = computed(() => (MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value)) * 2)\n const strokeWidth = computed(() => width.value / size.value * diameter.value)\n const strokeDashOffset = computed(() => convertToUnit(((100 - normalizedValue.value) / 100) * CIRCUMFERENCE))\n\n watchEffect(() => {\n intersectionRef.value = root.value\n resizeRef.value = root.value\n })\n\n useRender(() => (\n \n \n \n\n \n \n\n { slots.default && (\n
\n { slots.default({ value: normalizedValue.value }) }\n
\n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VProgressCircular = InstanceType\n","// Composables\nimport { useRtl } from '@/composables/locale'\n\n// Utilities\nimport { computed } from 'vue'\nimport { parseAnchor, propsFactory } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType } from 'vue'\nimport type { Anchor } from '@/util'\n\nconst oppositeMap = {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n} as const\n\nexport interface LocationProps {\n location: Anchor | undefined\n}\n\nexport const makeLocationProps = propsFactory({\n location: String as PropType,\n}, 'location')\n\nexport function useLocation (props: LocationProps, opposite = false, offset?: (side: string) => number) {\n const { isRtl } = useRtl()\n\n const locationStyles = computed(() => {\n if (!props.location) return {}\n\n const { side, align } = parseAnchor(\n props.location.split(' ').length > 1\n ? props.location\n : `${props.location} center` as Anchor,\n isRtl.value\n )\n\n function getOffset (side: string) {\n return offset\n ? offset(side)\n : 0\n }\n\n const styles = {} as CSSProperties\n\n if (side !== 'center') {\n if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`\n else styles[side] = 0\n }\n if (align !== 'center') {\n if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`\n else styles[align] = 0\n } else {\n if (side === 'center') styles.top = styles.left = '50%'\n else {\n styles[({\n top: 'left',\n bottom: 'left',\n left: 'top',\n right: 'top',\n } as const)[side]] = '50%'\n }\n styles.transform = {\n top: 'translateX(-50%)',\n bottom: 'translateX(-50%)',\n left: 'translateY(-50%)',\n right: 'translateY(-50%)',\n center: 'translate(-50%, -50%)',\n }[side]\n }\n\n return styles\n })\n\n return { locationStyles }\n}\n","// Styles\nimport './VProgressLinear.sass'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useRtl } from '@/composables/locale'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, Transition } from 'vue'\nimport { clamp, convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\ntype VProgressLinearSlots = {\n default: { value: number, buffer: number }\n}\n\nexport const makeVProgressLinearProps = propsFactory({\n absolute: Boolean,\n active: {\n type: Boolean,\n default: true,\n },\n bgColor: String,\n bgOpacity: [Number, String],\n bufferValue: {\n type: [Number, String],\n default: 0,\n },\n bufferColor: String,\n bufferOpacity: [Number, String],\n clickable: Boolean,\n color: String,\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n opacity: [Number, String],\n reverse: Boolean,\n stream: Boolean,\n striped: Boolean,\n roundedBar: Boolean,\n\n ...makeComponentProps(),\n ...makeLocationProps({ location: 'top' } as const),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VProgressLinear')\n\nexport const VProgressLinear = genericComponent()({\n name: 'VProgressLinear',\n\n props: makeVProgressLinearProps(),\n\n emits: {\n 'update:modelValue': (value: number) => true,\n },\n\n setup (props, { slots }) {\n const progress = useProxiedModel(props, 'modelValue')\n const { isRtl, rtlClasses } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { locationStyles } = useLocation(props)\n const { textColorClasses, textColorStyles } = useTextColor(props, 'color')\n const {\n backgroundColorClasses,\n backgroundColorStyles,\n } = useBackgroundColor(computed(() => props.bgColor || props.color))\n const {\n backgroundColorClasses: bufferColorClasses,\n backgroundColorStyles: bufferColorStyles,\n } = useBackgroundColor(computed(() => props.bufferColor || props.bgColor || props.color))\n const {\n backgroundColorClasses: barColorClasses,\n backgroundColorStyles: barColorStyles,\n } = useBackgroundColor(props, 'color')\n const { roundedClasses } = useRounded(props)\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n\n const max = computed(() => parseFloat(props.max))\n const height = computed(() => parseFloat(props.height))\n const normalizedBuffer = computed(() => clamp(parseFloat(props.bufferValue) / max.value * 100, 0, 100))\n const normalizedValue = computed(() => clamp(parseFloat(progress.value) / max.value * 100, 0, 100))\n const isReversed = computed(() => isRtl.value !== props.reverse)\n const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition')\n\n function handleClick (e: MouseEvent) {\n if (!intersectionRef.value) return\n\n const { left, right, width } = intersectionRef.value.getBoundingClientRect()\n const value = isReversed.value ? (width - e.clientX) + (right - width) : e.clientX - left\n\n progress.value = Math.round(value / width * max.value)\n }\n\n useRender(() => (\n \n { props.stream && (\n \n )}\n\n \n\n \n\n \n { !props.indeterminate ? (\n \n ) : (\n
\n {['long', 'short'].map(bar => (\n \n ))}\n
\n )}\n
\n\n { slots.default && (\n
\n { slots.default({ value: normalizedValue.value, buffer: normalizedBuffer.value }) }\n
\n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VProgressLinear = InstanceType\n","// Components\nimport { VProgressLinear } from '@/components/VProgressLinear'\n\n// Utilities\nimport { computed } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, SetupContext } from 'vue'\nimport type { SlotsToProps } from '@/util'\n\nexport interface LoaderSlotProps {\n color: string | undefined\n isActive: boolean\n}\n\nexport interface LoaderProps {\n loading?: boolean | string\n}\n\n// Composables\nexport const makeLoaderProps = propsFactory({\n loading: [Boolean, String],\n}, 'loader')\n\nexport function useLoader (\n props: LoaderProps,\n name = getCurrentInstanceName(),\n) {\n const loaderClasses = computed(() => ({\n [`${name}--loading`]: props.loading,\n }))\n\n return { loaderClasses }\n}\n\nexport function LoaderSlot (\n props: {\n absolute?: boolean\n active: boolean\n name: string\n color?: string\n } & ExtractPropTypes>,\n { slots }: SetupContext,\n) {\n return (\n
\n { slots.default?.({\n color: props.color,\n isActive: props.active,\n } as LoaderSlotProps) || (\n \n )}\n
\n )\n}\n","// Utilities\nimport { computed } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst positionValues = ['static', 'relative', 'fixed', 'absolute', 'sticky'] as const\n\ntype Position = typeof positionValues[number]\n\nexport interface PositionProps {\n position: Position | undefined\n}\n\n// Composables\nexport const makePositionProps = propsFactory({\n position: {\n type: String as PropType,\n validator: /* istanbul ignore next */ (v: any) => positionValues.includes(v),\n },\n}, 'position')\n\nexport function usePosition (\n props: PositionProps,\n name = getCurrentInstanceName(),\n) {\n const positionClasses = computed(() => {\n return props.position ? `${name}--${props.position}` : undefined\n })\n\n return { positionClasses }\n}\n","// Utilities\nimport {\n computed,\n nextTick,\n onScopeDispose,\n resolveDynamicComponent,\n toRef,\n} from 'vue'\nimport { deepEqual, getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref, SetupContext } from 'vue'\nimport type {\n RouterLink as _RouterLink,\n useLink as _useLink,\n NavigationGuardNext,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n Router,\n UseLinkOptions,\n} from 'vue-router'\nimport type { EventProp } from '@/util'\n\nexport function useRoute (): Ref {\n const vm = getCurrentInstance('useRoute')\n\n return computed(() => vm?.proxy?.$route)\n}\n\nexport function useRouter (): Router | undefined {\n return getCurrentInstance('useRouter')?.proxy?.$router\n}\n\nexport interface LinkProps {\n href: string | undefined\n replace: boolean | undefined\n to: RouteLocationRaw | undefined\n exact: boolean | undefined\n}\n\nexport interface LinkListeners {\n onClick?: EventProp | undefined\n onClickOnce?: EventProp | undefined\n}\n\nexport interface UseLink extends Omit>, 'href'> {\n isLink: ComputedRef\n isClickable: ComputedRef\n href: Ref\n}\n\nexport function useLink (props: LinkProps & LinkListeners, attrs: SetupContext['attrs']): UseLink {\n const RouterLink = resolveDynamicComponent('RouterLink') as typeof _RouterLink | string\n\n const isLink = computed(() => !!(props.href || props.to))\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click')\n })\n\n if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {\n return {\n isLink,\n isClickable,\n href: toRef(props, 'href'),\n }\n }\n // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined\n const linkProps = computed(() => ({\n ...props,\n to: toRef(() => props.to || ''),\n }))\n\n const routerLink = RouterLink.useLink(linkProps.value as UseLinkOptions)\n // Actual link needs to be undefined when to prop is not used\n const link = computed(() => props.to ? routerLink : undefined)\n const route = useRoute()\n\n return {\n isLink,\n isClickable,\n route: link.value?.route,\n navigate: link.value?.navigate,\n isActive: computed(() => {\n if (!link.value) return false\n if (!props.exact) return link.value.isActive?.value ?? false\n if (!route.value) return link.value.isExactActive?.value ?? false\n\n return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query)\n }),\n href: computed(() => props.to ? link.value?.route.value.href : props.href),\n }\n}\n\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object] as PropType,\n exact: Boolean,\n}, 'router')\n\nlet inTransition = false\nexport function useBackButton (router: Router | undefined, cb: (next: NavigationGuardNext) => void) {\n let popped = false\n let removeBefore: (() => void) | undefined\n let removeAfter: (() => void) | undefined\n\n if (IN_BROWSER) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate)\n removeBefore = router?.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next())\n } else {\n popped ? cb(next) : next()\n }\n inTransition = true\n })\n removeAfter = router?.afterEach(() => {\n inTransition = false\n })\n })\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate)\n removeBefore?.()\n removeAfter?.()\n })\n }\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { isObject, keyCodes } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\nconst stopSymbol = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [stopSymbol]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\ninterface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nexport interface RippleDirectiveBinding extends Omit {\n value?: boolean | { class: string }\n modifiers: {\n center?: boolean\n circle?: boolean\n stop?: boolean\n }\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple?.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el?._ripple?.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el?._ripple?.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleStop (e: VuetifyRippleEvent) {\n e[stopSymbol] = true\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element?._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: RippleDirectiveBinding, wasEnabled: boolean) {\n const { value, modifiers } = binding\n const enabled = isRippleEnabled(value)\n if (!enabled) {\n ripples.hide(el)\n }\n\n el._ripple = el._ripple ?? {}\n el._ripple.enabled = enabled\n el._ripple.centered = modifiers.center\n el._ripple.circle = modifiers.circle\n if (isObject(value) && value.class) {\n el._ripple.class = value.class\n }\n\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, { passive: true })\n el.addEventListener('mousedown', rippleStop)\n return\n }\n\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction mounted (el: HTMLElement, binding: RippleDirectiveBinding) {\n updateRipple(el, binding, false)\n}\n\nfunction unmounted (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction updated (el: HTMLElement, binding: RippleDirectiveBinding) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Ripple\n","// Styles\nimport './VBtn.sass'\n\n// Components\nimport { VBtnToggleSymbol } from '@/components/VBtnToggle/VBtnToggle'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { useSelectLink } from '@/composables/selectLink'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, withDirectives } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VBtnSlots = {\n default: never\n prepend: never\n append: never\n loader: never\n}\n\nexport const makeVBtnProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n baseColor: String,\n symbol: {\n type: null,\n default: VBtnToggleSymbol,\n },\n flat: Boolean,\n icon: [Boolean, String, Function, Object] as PropType,\n prependIcon: IconValue,\n appendIcon: IconValue,\n\n block: Boolean,\n readonly: Boolean,\n slim: Boolean,\n stacked: Boolean,\n\n ripple: {\n type: [Boolean, Object] as PropType,\n default: true,\n },\n\n text: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'button' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'elevated' } as const),\n}, 'VBtn')\n\nexport const VBtn = genericComponent()({\n name: 'VBtn',\n\n props: makeVBtnProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { loaderClasses } = useLoader(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const { sizeClasses, sizeStyles } = useSize(props)\n const group = useGroupItem(props, props.symbol, false)\n const link = useLink(props, attrs)\n\n const isActive = computed(() => {\n if (props.active !== undefined) {\n return props.active\n }\n\n if (link.isLink.value) {\n return link.isActive?.value\n }\n\n return group?.isSelected.value\n })\n\n const variantProps = computed(() => {\n const showColor = (\n (group?.isSelected.value && (!link.isLink.value || link.isActive?.value)) ||\n (!group || link.isActive?.value)\n )\n return ({\n color: showColor ? props.color ?? props.baseColor : props.baseColor,\n variant: props.variant,\n })\n })\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n\n const isDisabled = computed(() => group?.disabled.value || props.disabled)\n const isElevated = computed(() => {\n return props.variant === 'elevated' && !(props.disabled || props.flat || props.border)\n })\n const valueAttr = computed(() => {\n if (props.value === undefined || typeof props.value === 'symbol') return undefined\n\n return Object(props.value) === props.value\n ? JSON.stringify(props.value, null, 0)\n : props.value\n })\n\n function onClick (e: MouseEvent) {\n if (\n isDisabled.value ||\n (link.isLink.value && (\n e.metaKey ||\n e.ctrlKey ||\n e.shiftKey ||\n (e.button !== 0) ||\n attrs.target === '_blank'\n ))\n ) return\n\n link.navigate?.(e)\n group?.toggle()\n }\n\n useSelectLink(link, group?.select)\n\n useRender(() => {\n const Tag = (link.isLink.value) ? 'a' : props.tag\n const hasPrepend = !!(props.prependIcon || slots.prepend)\n const hasAppend = !!(props.appendIcon || slots.append)\n const hasIcon = !!(props.icon && props.icon !== true)\n\n return withDirectives(\n \n { genOverlays(true, 'v-btn') }\n\n { !props.icon && hasPrepend && (\n \n { !slots.prepend ? (\n \n ) : (\n \n )}\n \n )}\n\n \n { (!slots.default && hasIcon) ? (\n \n ) : (\n \n { slots.default?.() ?? props.text }\n \n )}\n \n\n { !props.icon && hasAppend && (\n \n { !slots.append ? (\n \n ) : (\n \n )}\n \n )}\n\n { !!props.loading && (\n \n { slots.loader?.() ?? (\n \n )}\n \n )}\n ,\n [[\n Ripple,\n !isDisabled.value && !!props.ripple,\n '',\n { center: !!props.icon },\n ]]\n )\n })\n\n return { group }\n },\n})\n\nexport type VBtn = InstanceType\n","// Utilities\nimport { nextTick, watch } from 'vue'\n\n// Types\nimport type { UseLink } from './router'\n\nexport function useSelectLink (link: UseLink, select?: (value: boolean, e?: Event) => void) {\n watch(() => link.isActive?.value, isActive => {\n if (link.isLink.value && isActive && select) {\n nextTick(() => {\n select(true)\n })\n }\n }, {\n immediate: true,\n })\n}\n","// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVAppBarNavIconProps = propsFactory({\n ...makeVBtnProps({\n icon: '$menu',\n variant: 'text' as const,\n }),\n}, 'VAppBarNavIcon')\n\nexport const VAppBarNavIcon = genericComponent()({\n name: 'VAppBarNavIcon',\n\n props: makeVAppBarNavIconProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VAppBarNavIcon = InstanceType\n","// Components\nimport { makeVToolbarTitleProps, VToolbarTitle } from '@/components/VToolbar/VToolbarTitle'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { VToolbarTitleSlots } from '@/components/VToolbar/VToolbarTitle'\n\nexport const VAppBarTitle = genericComponent()({\n name: 'VAppBarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VAppBarTitle = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VAlertTitle = createSimpleFunctional('v-alert-title')\n\nexport type VAlertTitle = InstanceType\n","// Styles\nimport './VAlert.sass'\n\n// Components\nimport { VAlertTitle } from './VAlertTitle'\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nconst allowedTypes = ['success', 'info', 'warning', 'error'] as const\n\ntype ContextualType = typeof allowedTypes[number]\n\nexport const makeVAlertProps = propsFactory({\n border: {\n type: [Boolean, String] as PropType,\n validator: (val: boolean | string) => {\n return typeof val === 'boolean' || [\n 'top',\n 'end',\n 'bottom',\n 'start',\n ].includes(val)\n },\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n icon: {\n type: [Boolean, String, Function, Object] as PropType,\n default: null,\n },\n modelValue: {\n type: Boolean,\n default: true,\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String as PropType,\n validator: (val: ContextualType) => allowedTypes.includes(val),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'VAlert')\n\nexport type VAlertSlots = {\n default: never\n prepend: never\n title: never\n text: never\n append: never\n close: { props: Record }\n}\n\nexport const VAlert = genericComponent()({\n name: 'VAlert',\n\n props: makeVAlertProps(),\n\n emits: {\n 'click:close': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const icon = computed(() => {\n if (props.icon === false) return undefined\n if (!props.type) return props.icon\n\n return props.icon ?? `$${props.type}`\n })\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant,\n }))\n\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'borderColor'))\n const { t } = useLocale()\n\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick (e: MouseEvent) {\n isActive.value = false\n\n emit('click:close', e)\n },\n }))\n\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value)\n const hasTitle = !!(slots.title || props.title)\n const hasClose = !!(slots.close || props.closable)\n\n return isActive.value && (\n \n { genOverlays(false, 'v-alert') }\n\n { props.border && (\n \n )}\n\n { hasPrepend && (\n
\n { !slots.prepend ? (\n \n ) : (\n \n )}\n
\n )}\n\n
\n { hasTitle && (\n \n { slots.title?.() ?? props.title }\n \n )}\n\n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n
\n\n { slots.append && (\n
\n { slots.append() }\n
\n )}\n\n { hasClose && (\n
\n { !slots.close ? (\n \n ) : (\n \n { slots.close?.({ props: closeProps.value }) }\n \n )}\n
\n )}\n \n )\n }\n },\n})\n\nexport type VAlert = InstanceType\n","// Styles\nimport './VAvatar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVAvatarProps = propsFactory({\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n image: String,\n text: String,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'VAvatar')\n\nexport const VAvatar = genericComponent()({\n name: 'VAvatar',\n\n props: makeVAvatarProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { roundedClasses } = useRounded(props)\n const { sizeClasses, sizeStyles } = useSize(props)\n\n useRender(() => (\n \n { !slots.default ? (\n props.image\n ? ()\n : props.icon\n ? ()\n : props.text\n ) : (\n \n { slots.default() }\n \n )}\n\n { genOverlays(false, 'v-avatar') }\n \n ))\n\n return {}\n },\n})\n\nexport type VAvatar = InstanceType\n","// Styles\nimport './VLabel.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeThemeProps } from '@/composables/theme'\n\n// Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLabelProps = propsFactory({\n text: String,\n\n onClick: EventProp<[MouseEvent]>(),\n\n ...makeComponentProps(),\n ...makeThemeProps(),\n}, 'VLabel')\n\nexport const VLabel = genericComponent()({\n name: 'VLabel',\n\n props: makeVLabelProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n { props.text }\n\n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VLabel = InstanceType\n","// Styles\nimport './VSelectionControlGroup.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeThemeProps } from '@/composables/theme'\n\n// Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue'\nimport { deepEqual, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\nimport type { GenericProps } from '@/util'\n\nexport interface VSelectionGroupContext {\n modelValue: Ref\n forceUpdate: () => void\n onForceUpdate: (fn: () => void) => void\n}\n\nexport const VSelectionControlGroupSymbol: InjectionKey = Symbol.for('vuetify:selection-control-group')\n\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: {\n type: Boolean as PropType,\n default: null,\n },\n defaultsTarget: String,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType,\n default: true,\n },\n multiple: {\n type: Boolean as PropType,\n default: null,\n },\n name: String,\n readonly: {\n type: Boolean as PropType,\n default: null,\n },\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function as PropType,\n default: deepEqual,\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeThemeProps(),\n}, 'SelectionControlGroup')\n\nexport const makeVSelectionControlGroupProps = propsFactory({\n ...makeSelectionControlGroupProps({\n defaultsTarget: 'VSelectionControl',\n }),\n}, 'VSelectionControlGroup')\n\nexport const VSelectionControlGroup = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: { default: never },\n) => GenericProps>()({\n name: 'VSelectionControlGroup',\n\n props: makeVSelectionControlGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const modelValue = useProxiedModel(props, 'modelValue')\n const uid = getUid()\n const id = computed(() => props.id || `v-selection-control-group-${uid}`)\n const name = computed(() => props.name || id.value)\n\n const updateHandlers = new Set<() => void>()\n provide(VSelectionControlGroupSymbol, {\n modelValue,\n forceUpdate: () => {\n updateHandlers.forEach(fn => fn())\n },\n onForceUpdate: cb => {\n updateHandlers.add(cb)\n onScopeDispose(() => {\n updateHandlers.delete(cb)\n })\n },\n })\n\n provideDefaults({\n [props.defaultsTarget]: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n density: toRef(props, 'density'),\n error: toRef(props, 'error'),\n inline: toRef(props, 'inline'),\n modelValue,\n multiple: computed(() => !!props.multiple || (props.multiple == null && Array.isArray(modelValue.value))),\n name,\n falseIcon: toRef(props, 'falseIcon'),\n trueIcon: toRef(props, 'trueIcon'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n type: toRef(props, 'type'),\n valueComparator: toRef(props, 'valueComparator'),\n },\n })\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VSelectionControlGroup = InstanceType\n","// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n matchesSelector,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, VNode, WritableComputedRef } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { EventProp, GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef\n textColorClasses: Ref\n textColorStyles: Ref\n backgroundColorClasses: Ref\n backgroundColorStyles: Ref\n inputNode: VNode\n icon: IconValue | undefined\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: {\n backgroundColorClasses: Ref\n backgroundColorStyles: Ref\n }\n label: { label: string | undefined, props: Record }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n baseColor: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes> & {\n 'onUpdate:modelValue': EventProp | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? wrapInArray(val).some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n if (props.error || props.disabled) return undefined\n\n return model.value ? props.color : props.baseColor\n }))\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : props.baseColor\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSelectionControlSlots,\n) => GenericProps>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref()\n const id = computed(() => props.id || `input-${uid}`)\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n if (!isInteractive.value) return\n\n isFocused.value = true\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') !== false) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onClickLabel (e: Event) {\n e.stopPropagation()\n }\n\n function onInput (e: Event) {\n if (!isInteractive.value) return\n\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const inputNode = (\n \n )\n\n return (\n \n \n { slots.default?.({\n backgroundColorClasses,\n backgroundColorStyles,\n })}\n\n \n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n backgroundColorClasses,\n backgroundColorStyles,\n inputNode,\n icon: icon.value,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } satisfies SelectionControlSlot) ?? (\n <>\n { icon.value && }\n\n { inputNode }\n \n )}\n \n \n\n { label && (\n \n { label }\n \n )}\n \n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType\n","// Components\nimport { makeVSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\nimport type { GenericProps } from '@/util'\n\nexport const makeVCheckboxBtnProps = propsFactory({\n indeterminate: Boolean,\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate',\n },\n\n ...makeVSelectionControlProps({\n falseIcon: '$checkboxOff',\n trueIcon: '$checkboxOn',\n }),\n}, 'VCheckboxBtn')\n\nexport const VCheckboxBtn = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSelectionControlSlots,\n) => GenericProps>()({\n name: 'VCheckboxBtn',\n\n props: makeVCheckboxBtnProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:indeterminate': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const indeterminate = useProxiedModel(props, 'indeterminate')\n const model = useProxiedModel(props, 'modelValue')\n\n function onChange (v: any) {\n if (indeterminate.value) {\n indeterminate.value = false\n }\n }\n\n const falseIcon = computed(() => {\n return indeterminate.value\n ? props.indeterminateIcon\n : props.falseIcon\n })\n\n const trueIcon = computed(() => {\n return indeterminate.value\n ? props.indeterminateIcon\n : props.trueIcon\n })\n\n useRender(() => {\n const controlProps = omit(VSelectionControl.filterProps(props), ['modelValue'])\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCheckboxBtn = InstanceType\n","// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Types\nimport type { IconValue } from '@/composables/icons'\n\ntype names = 'clear' | 'prepend' | 'append' | 'appendInner' | 'prependInner'\n\ntype EventProp any> = T | T[]\ntype InputIconProps = {\n label: string | undefined\n} & {\n [K in `${T}Icon`]: IconValue | undefined\n} & {\n [K in `onClick:${T}`]: EventProp | undefined\n}\n\ntype Listeners = U extends `onClick:${infer V extends names}` ? V : never\n\nexport function useInputIcon> (props: T & InputIconProps) {\n const { t } = useLocale()\n\n function InputIcon ({ name }: { name: Extract }) {\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendInner: 'appendAction',\n clear: 'clear',\n }[name]\n const listener = props[`onClick:${name}`]\n const label = listener && localeKey\n ? t(`$vuetify.input.${localeKey}`, props.label ?? '')\n : undefined\n\n return (\n \n )\n }\n\n return { InputIcon }\n}\n","// Styles\nimport './VMessages.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { Component, PropType } from 'vue'\n\nexport type VMessageSlot = {\n message: string\n}\n\nexport type VMessagesSlots = {\n message: VMessageSlot\n}\n\nexport const makeVMessagesProps = propsFactory({\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String] as PropType,\n default: () => ([]),\n },\n\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition as Component,\n leaveAbsolute: true,\n group: true,\n },\n }),\n}, 'VMessages')\n\nexport const VMessages = genericComponent()({\n name: 'VMessages',\n\n props: makeVMessagesProps(),\n\n setup (props, { slots }) {\n const messages = computed(() => wrapInArray(props.messages))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => props.color))\n\n useRender(() => (\n \n { props.active && (\n messages.value.map((message, i) => (\n \n { slots.message ? slots.message({ message }) : message }\n \n ))\n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VMessages = InstanceType\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nexport interface FocusProps {\n focused: boolean\n 'onUpdate:focused': ((focused: boolean) => any) | undefined\n}\n\n// Composables\nexport const makeFocusProps = propsFactory({\n focused: Boolean,\n 'onUpdate:focused': EventProp<[boolean]>(),\n}, 'focus')\n\nexport function useFocus (\n props: FocusProps,\n name = getCurrentInstanceName()\n) {\n const isFocused = useProxiedModel(props, 'focused')\n const focusClasses = computed(() => {\n return ({\n [`${name}--focused`]: isFocused.value,\n })\n })\n\n function focus () {\n isFocused.value = true\n }\n\n function blur () {\n isFocused.value = false\n }\n\n return { focusClasses, isFocused, focus, blur }\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, markRaw, provide, ref, shallowRef, toRef, watch } from 'vue'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ComputedRef, InjectionKey, PropType, Raw, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\nimport type { EventProp } from '@/util'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n vm: ComponentInternalInstance\n validate: () => Promise\n reset: () => Promise\n resetValidation: () => Promise\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref\n isDisabled: ComputedRef\n isReadonly: ComputedRef\n isValidating: Ref\n isValid: Ref\n validateOn: Ref\n}\n\nexport interface FormField {\n id: number | string\n validate: () => Promise\n reset: () => Promise\n resetValidation: () => Promise\n vm: Raw\n isValid: boolean | null\n errorMessages: string[]\n}\n\nexport interface FieldValidationResult {\n id: number | string\n errorMessages: string[]\n}\n\nexport interface FormValidationResult {\n valid: boolean\n errors: FieldValidationResult[]\n}\n\nexport interface SubmitEventPromise extends SubmitEvent, Promise {}\n\nexport const FormKey: InjectionKey = Symbol.for('vuetify:form')\n\nexport interface FormProps {\n disabled: boolean\n fastFail: boolean\n readonly: boolean\n modelValue: boolean | null\n 'onUpdate:modelValue': EventProp<[boolean | null]> | undefined\n validateOn: ValidationProps['validateOn']\n}\n\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean as PropType,\n default: null,\n },\n validateOn: {\n type: String as PropType,\n default: 'input',\n },\n}, 'form')\n\nexport function createForm (props: FormProps) {\n const model = useProxiedModel(props, 'modelValue')\n\n const isDisabled = computed(() => props.disabled)\n const isReadonly = computed(() => props.readonly)\n const isValidating = shallowRef(false)\n const items = ref([])\n const errors = ref([])\n\n async function validate () {\n const results = []\n let valid = true\n\n errors.value = []\n isValidating.value = true\n\n for (const item of items.value) {\n const itemErrorMessages = await item.validate()\n\n if (itemErrorMessages.length > 0) {\n valid = false\n\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages,\n })\n }\n\n if (!valid && props.fastFail) break\n }\n\n errors.value = results\n isValidating.value = false\n\n return { valid, errors: errors.value }\n }\n\n function reset () {\n items.value.forEach(item => item.reset())\n }\n\n function resetValidation () {\n items.value.forEach(item => item.resetValidation())\n }\n\n watch(items, () => {\n let valid = 0\n let invalid = 0\n const results = []\n\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++\n results.push({\n id: item.id,\n errorMessages: item.errorMessages,\n })\n } else if (item.isValid === true) valid++\n }\n\n errors.value = results\n model.value =\n invalid > 0 ? false\n : valid === items.value.length ? true\n : null\n }, { deep: true, flush: 'post' })\n\n provide(FormKey, {\n register: ({ id, vm, validate, reset, resetValidation }) => {\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`)\n }\n\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n vm: markRaw(vm),\n isValid: null,\n errorMessages: [],\n })\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id\n })\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id)\n\n if (!found) return\n\n found.isValid = isValid\n found.errorMessages = errorMessages\n },\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validateOn: toRef(props, 'validateOn'),\n })\n\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n isValid: model,\n items,\n validate,\n reset,\n resetValidation,\n }\n}\n\nexport function useForm () {\n return inject(FormKey, null)\n}\n","// Composables\nimport { makeFocusProps } from '@/composables/focus'\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, shallowRef, unref, watch } from 'vue'\nimport { getCurrentInstance, getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { EventProp, MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike)\n\ntype ValidateOnValue = 'blur' | 'input' | 'submit'\n\nexport interface ValidationProps {\n disabled: boolean | null\n error: boolean\n errorMessages: string | readonly string[] | null\n focused: boolean\n maxErrors: string | number\n name: string | undefined\n label: string | undefined\n readonly: boolean | null\n rules: readonly ValidationRule[]\n modelValue: any\n 'onUpdate:modelValue': EventProp | undefined\n validateOn?: ValidateOnValue | `${ValidateOnValue} lazy` | `lazy ${ValidateOnValue}` | 'lazy'\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: {\n type: Boolean as PropType,\n default: null,\n },\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n label: String,\n readonly: {\n type: Boolean as PropType,\n default: null,\n },\n rules: {\n type: Array as PropType,\n default: () => ([]),\n },\n modelValue: null,\n validateOn: String as PropType,\n validationValue: null,\n\n ...makeFocusProps(),\n}, 'validation')\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef = getUid(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue)\n const form = useForm()\n const internalErrorMessages = ref([])\n const isPristine = shallowRef(true)\n const isDirty = computed(() => !!(\n wrapInArray(model.value === '' ? null : model.value).length ||\n wrapInArray(validationModel.value === '' ? null : validationModel.value).length\n ))\n const isDisabled = computed(() => !!(props.disabled ?? form?.isDisabled.value))\n const isReadonly = computed(() => !!(props.readonly ?? form?.isReadonly.value))\n const errorMessages = computed(() => {\n return props.errorMessages?.length\n ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, +props.maxErrors))\n : internalErrorMessages.value\n })\n const validateOn = computed(() => {\n let value = (props.validateOn ?? form?.validateOn.value) || 'input'\n if (value === 'lazy') value = 'input lazy'\n const set = new Set(value?.split(' ') ?? [])\n\n return {\n blur: set.has('blur') || set.has('input'),\n input: set.has('input'),\n submit: set.has('submit'),\n lazy: set.has('lazy'),\n }\n })\n const isValid = computed(() => {\n if (props.error || props.errorMessages?.length) return false\n if (!props.rules.length) return true\n if (isPristine.value) {\n return internalErrorMessages.value.length || validateOn.value.lazy ? null : true\n } else {\n return !internalErrorMessages.value.length\n }\n })\n const isValidating = shallowRef(false)\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value,\n }\n })\n\n const vm = getCurrentInstance('validation')\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\n vm,\n validate,\n reset,\n resetValidation,\n })\n })\n\n onBeforeUnmount(() => {\n form?.unregister(uid.value)\n })\n\n onMounted(async () => {\n if (!validateOn.value.lazy) {\n await validate(true)\n }\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n useToggleScope(() => validateOn.value.input, () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate()\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate()\n\n unwatch()\n })\n }\n })\n })\n\n useToggleScope(() => validateOn.value.blur, () => {\n watch(() => props.focused, val => {\n if (!val) validate()\n })\n })\n\n watch([isValid, errorMessages], () => {\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n async function reset () {\n model.value = null\n await nextTick()\n await resetValidation()\n }\n\n async function resetValidation () {\n isPristine.value = true\n if (!validateOn.value.lazy) {\n await validate(true)\n } else {\n internalErrorMessages.value = []\n }\n }\n\n async function validate (silent = false) {\n const results = []\n\n isValidating.value = true\n\n for (const rule of props.rules) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule\n const result = await handler(validationModel.value)\n\n if (result === true) continue\n\n if (result !== false && typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`)\n\n continue\n }\n\n results.push(result || '')\n }\n\n internalErrorMessages.value = results\n isValidating.value = false\n isPristine.value = silent\n\n return internalErrorMessages.value\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport { useInputIcon } from '@/components/VInput/InputIcon'\nimport { VMessages } from '@/components/VMessages/VMessages'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, getUid, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType, Ref } from 'vue'\nimport type { VMessageSlot } from '@/components/VMessages/VMessages'\nimport type { GenericProps } from '@/util'\n\nexport interface VInputSlot {\n id: ComputedRef\n messagesId: ComputedRef\n isDirty: ComputedRef\n isDisabled: ComputedRef\n isReadonly: ComputedRef\n isPristine: Ref\n isValid: ComputedRef\n isValidating: Ref\n reset: () => void\n resetValidation: () => void\n validate: () => void\n}\n\nexport const makeVInputProps = propsFactory({\n id: String,\n appendIcon: IconValue,\n centerAffix: {\n type: Boolean,\n default: true,\n },\n prependIcon: IconValue,\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n persistentHint: Boolean,\n messages: {\n type: [Array, String] as PropType,\n default: () => ([]),\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['horizontal', 'vertical'].includes(v),\n },\n\n 'onClick:prepend': EventProp<[MouseEvent]>(),\n 'onClick:append': EventProp<[MouseEvent]>(),\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...only(makeDimensionProps(), [\n 'maxWidth',\n 'minWidth',\n 'width',\n ]),\n ...makeThemeProps(),\n ...makeValidationProps(),\n}, 'VInput')\n\nexport type VInputSlots = {\n default: VInputSlot\n prepend: VInputSlot\n append: VInputSlot\n details: VInputSlot\n message: VMessageSlot\n}\n\nexport const VInput = genericComponent(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VInputSlots,\n) => GenericProps>()({\n name: 'VInput',\n\n props: {\n ...makeVInputProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { themeClasses } = provideTheme(props)\n const { rtlClasses } = useRtl()\n const { InputIcon } = useInputIcon(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n } = useValidation(props, 'v-input', id)\n\n const slotProps = computed(() => ({\n id,\n messagesId,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n }))\n\n const messages = computed(() => {\n if (props.errorMessages?.length || (!isPristine.value && errorMessages.value.length)) {\n return errorMessages.value\n } else if (props.hint && (props.persistentHint || props.focused)) {\n return props.hint\n } else {\n return props.messages\n }\n })\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.prependIcon)\n const hasAppend = !!(slots.append || props.appendIcon)\n const hasMessages = messages.value.length > 0\n const hasDetails = !props.hideDetails || (\n props.hideDetails === 'auto' &&\n (hasMessages || !!slots.details)\n )\n\n return (\n \n { hasPrepend && (\n
\n { slots.prepend?.(slotProps.value) }\n\n { props.prependIcon && (\n \n )}\n
\n )}\n\n { slots.default && (\n
\n { slots.default?.(slotProps.value) }\n
\n )}\n\n { hasAppend && (\n
\n { props.appendIcon && (\n \n )}\n\n { slots.append?.(slotProps.value) }\n
\n )}\n\n { hasDetails && (\n
\n \n\n { slots.details?.(slotProps.value) }\n
\n )}\n \n )\n })\n\n return {\n reset,\n resetValidation,\n validate,\n isValid,\n errorMessages,\n }\n },\n})\n\nexport type VInput = InstanceType\n","// Styles\nimport './VCheckbox.sass'\n\n// Components\nimport { makeVCheckboxBtnProps, VCheckboxBtn } from './VCheckboxBtn'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSelectionControlSlots } from '../VSelectionControl/VSelectionControl'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { GenericProps } from '@/util'\n\nexport type VCheckboxSlots = Omit & VSelectionControlSlots\n\nexport const makeVCheckboxProps = propsFactory({\n ...makeVInputProps(),\n ...omit(makeVCheckboxBtnProps(), ['inline']),\n}, 'VCheckbox')\n\nexport const VCheckbox = genericComponent(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VCheckboxSlots,\n) => GenericProps>()({\n name: 'VCheckbox',\n\n inheritAttrs: false,\n\n props: makeVCheckboxProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:focused': (focused: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n\n const uid = getUid()\n const id = computed(() => props.id || `checkbox-${uid}`)\n\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs)\n const inputProps = VInput.filterProps(props)\n const checkboxProps = VCheckboxBtn.filterProps(props)\n\n return (\n \n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid,\n }) => (\n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCheckbox = InstanceType\n","// Utilities\nimport { computed, inject, reactive, shallowRef, toRefs, watchEffect } from 'vue'\nimport { getCurrentInstanceName, mergeDeep, propsFactory } from '@/util'\nimport { IN_BROWSER, SUPPORTS_TOUCH } from '@/util/globals'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\n\nexport const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl'] as const // no xs\n\nexport type Breakpoint = typeof breakpoints[number]\n\nexport type DisplayBreakpoint = 'xs' | Breakpoint\n\nexport type DisplayThresholds = {\n [key in DisplayBreakpoint]: number\n}\n\nexport interface DisplayProps {\n mobile?: boolean | null\n mobileBreakpoint?: number | DisplayBreakpoint\n}\n\nexport interface DisplayOptions {\n mobileBreakpoint?: number | DisplayBreakpoint\n thresholds?: Partial\n}\n\nexport interface InternalDisplayOptions {\n mobileBreakpoint: number | DisplayBreakpoint\n thresholds: DisplayThresholds\n}\n\nexport type SSROptions = boolean | {\n clientWidth: number\n clientHeight?: number\n}\n\nexport interface DisplayPlatform {\n android: boolean\n ios: boolean\n cordova: boolean\n electron: boolean\n chrome: boolean\n edge: boolean\n firefox: boolean\n opera: boolean\n win: boolean\n mac: boolean\n linux: boolean\n touch: boolean\n ssr: boolean\n}\n\nexport interface DisplayInstance {\n xs: Ref\n sm: Ref\n md: Ref\n lg: Ref\n xl: Ref\n xxl: Ref\n smAndUp: Ref\n mdAndUp: Ref\n lgAndUp: Ref\n xlAndUp: Ref\n smAndDown: Ref\n mdAndDown: Ref\n lgAndDown: Ref\n xlAndDown: Ref\n name: Ref\n height: Ref\n width: Ref\n mobile: Ref\n mobileBreakpoint: Ref\n platform: Ref\n thresholds: Ref\n\n /** @internal */\n ssr: boolean\n\n update (): void\n}\n\nexport const DisplaySymbol: InjectionKey = Symbol.for('vuetify:display')\n\nconst defaultDisplayOptions: DisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560,\n },\n}\n\nconst parseDisplayOptions = (options: DisplayOptions = defaultDisplayOptions) => {\n return mergeDeep(defaultDisplayOptions, options) as InternalDisplayOptions\n}\n\nfunction getClientWidth (ssr?: SSROptions) {\n return IN_BROWSER && !ssr\n ? window.innerWidth\n : (typeof ssr === 'object' && ssr.clientWidth) || 0\n}\n\nfunction getClientHeight (ssr?: SSROptions) {\n return IN_BROWSER && !ssr\n ? window.innerHeight\n : (typeof ssr === 'object' && ssr.clientHeight) || 0\n}\n\nfunction getPlatform (ssr?: SSROptions): DisplayPlatform {\n const userAgent = IN_BROWSER && !ssr\n ? window.navigator.userAgent\n : 'ssr'\n\n function match (regexp: RegExp) {\n return Boolean(userAgent.match(regexp))\n }\n\n const android = match(/android/i)\n const ios = match(/iphone|ipad|ipod/i)\n const cordova = match(/cordova/i)\n const electron = match(/electron/i)\n const chrome = match(/chrome/i)\n const edge = match(/edge/i)\n const firefox = match(/firefox/i)\n const opera = match(/opera/i)\n const win = match(/win/i)\n const mac = match(/mac/i)\n const linux = match(/linux/i)\n\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr',\n }\n}\n\nexport function createDisplay (options?: DisplayOptions, ssr?: SSROptions): DisplayInstance {\n const { thresholds, mobileBreakpoint } = parseDisplayOptions(options)\n\n const height = shallowRef(getClientHeight(ssr))\n const platform = shallowRef(getPlatform(ssr))\n const state = reactive({} as DisplayInstance)\n const width = shallowRef(getClientWidth(ssr))\n\n function updateSize () {\n height.value = getClientHeight()\n width.value = getClientWidth()\n }\n function update () {\n updateSize()\n platform.value = getPlatform()\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm\n const sm = width.value < thresholds.md && !xs\n const md = width.value < thresholds.lg && !(sm || xs)\n const lg = width.value < thresholds.xl && !(md || sm || xs)\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs)\n const xxl = width.value >= thresholds.xxl\n const name =\n xs ? 'xs'\n : sm ? 'sm'\n : md ? 'md'\n : lg ? 'lg'\n : xl ? 'xl'\n : 'xxl'\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint]\n const mobile = width.value < breakpointValue\n\n state.xs = xs\n state.sm = sm\n state.md = md\n state.lg = lg\n state.xl = xl\n state.xxl = xxl\n state.smAndUp = !xs\n state.mdAndUp = !(xs || sm)\n state.lgAndUp = !(xs || sm || md)\n state.xlAndUp = !(xs || sm || md || lg)\n state.smAndDown = !(md || lg || xl || xxl)\n state.mdAndDown = !(lg || xl || xxl)\n state.lgAndDown = !(xl || xxl)\n state.xlAndDown = !xxl\n state.name = name\n state.height = height.value\n state.width = width.value\n state.mobile = mobile\n state.mobileBreakpoint = mobileBreakpoint\n state.platform = platform.value\n state.thresholds = thresholds\n })\n\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, { passive: true })\n }\n\n return { ...toRefs(state), update, ssr: !!ssr }\n}\n\nexport const makeDisplayProps = propsFactory({\n mobile: {\n type: Boolean as PropType,\n default: false,\n },\n mobileBreakpoint: [Number, String] as PropType,\n}, 'display')\n\nexport function useDisplay (\n props: DisplayProps = {},\n name = getCurrentInstanceName(),\n) {\n const display = inject(DisplaySymbol)\n\n if (!display) throw new Error('Could not find Vuetify display injection')\n\n const mobile = computed(() => {\n if (props.mobile != null) return props.mobile\n if (!props.mobileBreakpoint) return display.mobile.value\n\n const breakpointValue = typeof props.mobileBreakpoint === 'number'\n ? props.mobileBreakpoint\n : display.thresholds.value[props.mobileBreakpoint]\n\n return display.width.value < breakpointValue\n })\n\n const displayClasses = computed(() => {\n if (!name) return {}\n\n return { [`${name}--mobile`]: mobile.value }\n })\n\n return { ...display, displayClasses, mobile }\n}\n","// Utilities\nimport { computed, inject } from 'vue'\nimport { useRtl } from './locale'\nimport { clamp, consoleWarn, mergeDeep, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\n\nexport interface GoToInstance {\n rtl: Ref\n options: GoToOptions\n}\n\nexport interface GoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | ((t: number) => number)\n patterns: Record number>\n}\n\nexport const GoToSymbol: InjectionKey = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic',\n patterns: {\n linear: (t: number) => t,\n easeInQuad: (t: number) => t ** 2,\n easeOutQuad: (t: number) => t * (2 - t),\n easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t),\n easeInCubic: (t: number) => t ** 3,\n easeOutCubic: (t: number) => --t ** 3 + 1,\n easeInOutCubic: (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: (t: number) => t ** 4,\n easeOutQuart: (t: number) => 1 - --t ** 4,\n easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4),\n easeInQuint: (t: number) => t ** 5,\n easeOutQuint: (t: number) => 1 + --t ** 5,\n easeInOutQuint: (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5,\n },\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (options: Partial | undefined, locale: LocaleInstance & RtlInstance) {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options),\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: Partial,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal)\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: Partial = {}) {\n const goToInstance = inject(GoToSymbol)\n const { isRtl } = useRtl()\n\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance')\n\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: computed(() => goToInstance.rtl.value || isRtl.value),\n }\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget (\n container: HTMLElement,\n value: number,\n rtl: boolean,\n horizontal: boolean,\n) {\n const { scrollWidth, scrollHeight } = container\n const [containerWidth, containerHeight] = container === document.scrollingElement\n ? [window.innerWidth, window.innerHeight]\n : [container.offsetWidth, container.offsetHeight]\n\n let min: number\n let max: number\n\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth)\n max = 0\n } else {\n min = 0\n max = scrollWidth - containerWidth\n }\n } else {\n min = 0\n max = scrollHeight + -containerHeight\n }\n\n return Math.max(Math.min(value, max), min)\n}\n","export function calculateUpdatedTarget ({\n selectedElement,\n containerElement,\n isRtl,\n isHorizontal,\n}: {\n selectedElement: HTMLElement\n containerElement: HTMLElement\n isRtl: boolean\n isHorizontal: boolean\n}): number {\n const containerSize = getOffsetSize(isHorizontal, containerElement)\n const scrollPosition = getScrollPosition(isHorizontal, isRtl, containerElement)\n\n const childrenSize = getOffsetSize(isHorizontal, selectedElement)\n const childrenStartPosition = getOffsetPosition(isHorizontal, selectedElement)\n\n const additionalOffset = childrenSize * 0.4\n\n if (scrollPosition > childrenStartPosition) {\n return childrenStartPosition - additionalOffset\n } else if (scrollPosition + containerSize < childrenStartPosition + childrenSize) {\n return childrenStartPosition - containerSize + childrenSize + additionalOffset\n }\n\n return scrollPosition\n}\n\nexport function calculateCenteredTarget ({\n selectedElement,\n containerElement,\n isHorizontal,\n}: {\n selectedElement: HTMLElement\n containerElement: HTMLElement\n isHorizontal: boolean\n}): number {\n const containerOffsetSize = getOffsetSize(isHorizontal, containerElement)\n const childrenOffsetPosition = getOffsetPosition(isHorizontal, selectedElement)\n const childrenOffsetSize = getOffsetSize(isHorizontal, selectedElement)\n\n return childrenOffsetPosition - (containerOffsetSize / 2) + (childrenOffsetSize / 2)\n}\n\nexport function getScrollSize (isHorizontal: boolean, element?: HTMLElement) {\n const key = isHorizontal ? 'scrollWidth' : 'scrollHeight'\n return element?.[key] || 0\n}\n\nexport function getClientSize (isHorizontal: boolean, element?: HTMLElement) {\n const key = isHorizontal ? 'clientWidth' : 'clientHeight'\n return element?.[key] || 0\n}\n\nexport function getScrollPosition (isHorizontal: boolean, rtl: boolean, element?: HTMLElement) {\n if (!element) {\n return 0\n }\n\n const {\n scrollLeft,\n offsetWidth,\n scrollWidth,\n } = element\n\n if (isHorizontal) {\n return rtl\n ? scrollWidth - offsetWidth + scrollLeft\n : scrollLeft\n }\n\n return element.scrollTop\n}\n\nexport function getOffsetSize (isHorizontal: boolean, element?: HTMLElement) {\n const key = isHorizontal ? 'offsetWidth' : 'offsetHeight'\n return element?.[key] || 0\n}\n\nexport function getOffsetPosition (isHorizontal: boolean, element?: HTMLElement) {\n const key = isHorizontal ? 'offsetLeft' : 'offsetTop'\n return element?.[key] || 0\n}\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useGoTo } from '@/composables/goto'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useRtl } from '@/composables/locale'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport {\n calculateCenteredTarget,\n calculateUpdatedTarget,\n getClientSize,\n getOffsetSize,\n getScrollPosition,\n getScrollSize,\n} from './helpers'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const VSlideGroupSymbol: InjectionKey = Symbol.for('vuetify:v-slide-group')\n\ninterface SlideGroupSlot {\n next: GroupProvide['next']\n prev: GroupProvide['prev']\n select: GroupProvide['select']\n isSelected: GroupProvide['isSelected']\n}\n\ntype VSlideGroupSlots = {\n default: SlideGroupSlot\n prev: SlideGroupSlot\n next: SlideGroupSlot\n}\n\nexport const makeVSlideGroupProps = propsFactory({\n centerActive: Boolean,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n symbol: {\n type: null,\n default: VSlideGroupSymbol,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n\n ...makeComponentProps(),\n ...makeDisplayProps(),\n ...makeTagProps(),\n ...makeGroupProps({\n selectedClass: 'v-slide-group-item--active',\n }),\n}, 'VSlideGroup')\n\nexport const VSlideGroup = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VSlideGroupSlots,\n) => GenericProps>()({\n name: 'VSlideGroup',\n\n props: makeVSlideGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { isRtl } = useRtl()\n const { displayClasses, mobile } = useDisplay(props)\n const group = useGroup(props, props.symbol)\n const isOverflowing = shallowRef(false)\n const scrollOffset = shallowRef(0)\n const containerSize = shallowRef(0)\n const contentSize = shallowRef(0)\n const isHorizontal = computed(() => props.direction === 'horizontal')\n\n const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver()\n const { resizeRef: contentRef, contentRect } = useResizeObserver()\n\n const goTo = useGoTo()\n const goToOptions = computed>(() => {\n return {\n container: containerRef.el,\n duration: 200,\n easing: 'easeOutQuart',\n }\n })\n\n const firstSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[0])\n })\n\n const lastSelectedIndex = computed(() => {\n if (!group.selected.value.length) return -1\n\n return group.items.value.findIndex(item => item.id === group.selected.value[group.selected.value.length - 1])\n })\n\n if (IN_BROWSER) {\n let frame = -1\n watch(() => [group.selected.value, containerRect.value, contentRect.value, isHorizontal.value], () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n if (containerRect.value && contentRect.value) {\n const sizeProperty = isHorizontal.value ? 'width' : 'height'\n\n containerSize.value = containerRect.value[sizeProperty]\n contentSize.value = contentRect.value[sizeProperty]\n\n isOverflowing.value = containerSize.value + 1 < contentSize.value\n }\n\n if (firstSelectedIndex.value >= 0 && contentRef.el) {\n // TODO: Is this too naive? Should we store element references in group composable?\n const selectedElement = contentRef.el.children[lastSelectedIndex.value] as HTMLElement\n\n scrollToChildren(selectedElement, props.centerActive)\n }\n })\n })\n }\n\n const isFocused = shallowRef(false)\n\n function scrollToChildren (children: HTMLElement, center?: boolean) {\n let target = 0\n\n if (center) {\n target = calculateCenteredTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n selectedElement: children,\n })\n } else {\n target = calculateUpdatedTarget({\n containerElement: containerRef.el!,\n isHorizontal: isHorizontal.value,\n isRtl: isRtl.value,\n selectedElement: children,\n })\n }\n\n scrollToPosition(target)\n }\n\n function scrollToPosition (newPosition: number) {\n if (!IN_BROWSER || !containerRef.el) return\n\n const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el)\n const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el)\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n\n if (\n scrollSize <= offsetSize ||\n // Prevent scrolling by only a couple of pixels, which doesn't look smooth\n Math.abs(newPosition - scrollPosition) < 16\n ) return\n\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition = (scrollWidth - containerWidth) - newPosition\n }\n\n if (isHorizontal.value) {\n goTo.horizontal(newPosition, goToOptions.value)\n } else {\n goTo(newPosition, goToOptions.value)\n }\n }\n\n function onScroll (e: Event) {\n const { scrollTop, scrollLeft } = e.target as HTMLElement\n\n scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n\n if (!isOverflowing.value || !contentRef.el) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of e.composedPath()) {\n for (const item of contentRef.el.children) {\n if (item === el) {\n scrollToChildren(item as HTMLElement)\n return\n }\n }\n }\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n // Affix clicks produce onFocus that we have to ignore to avoid extra scrollToChildren\n let ignoreFocusEvent = false\n function onFocus (e: FocusEvent) {\n if (\n !ignoreFocusEvent &&\n !isFocused.value &&\n !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget as Node))\n ) focus()\n\n ignoreFocusEvent = false\n }\n\n function onFocusAffixes () {\n ignoreFocusEvent = true\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.el) return\n\n function toFocus (location: Parameters[0]) {\n e.preventDefault()\n focus(location)\n }\n\n if (isHorizontal.value) {\n if (e.key === 'ArrowRight') {\n toFocus(isRtl.value ? 'prev' : 'next')\n } else if (e.key === 'ArrowLeft') {\n toFocus(isRtl.value ? 'next' : 'prev')\n }\n } else {\n if (e.key === 'ArrowDown') {\n toFocus('next')\n } else if (e.key === 'ArrowUp') {\n toFocus('prev')\n }\n }\n\n if (e.key === 'Home') {\n toFocus('first')\n } else if (e.key === 'End') {\n toFocus('last')\n }\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.el) return\n\n let el: HTMLElement | undefined\n\n if (!location) {\n const focusable = focusableChildren(contentRef.el)\n el = focusable[0]\n } else if (location === 'next') {\n el = contentRef.el.querySelector(':focus')?.nextElementSibling as HTMLElement | undefined\n\n if (!el) return focus('first')\n } else if (location === 'prev') {\n el = contentRef.el.querySelector(':focus')?.previousElementSibling as HTMLElement | undefined\n\n if (!el) return focus('last')\n } else if (location === 'first') {\n el = (contentRef.el.firstElementChild as HTMLElement)\n } else if (location === 'last') {\n el = (contentRef.el.lastElementChild as HTMLElement)\n }\n\n if (el) {\n el.focus({ preventScroll: true })\n }\n }\n\n function scrollTo (location: 'prev' | 'next') {\n const direction = isHorizontal.value && isRtl.value ? -1 : 1\n\n const offsetStep = (location === 'prev' ? -direction : direction) * containerSize.value\n\n let newPosition = scrollOffset.value + offsetStep\n\n // TODO: improve it\n if (isHorizontal.value && isRtl.value && containerRef.el) {\n const { scrollWidth, offsetWidth: containerWidth } = containerRef.el!\n\n newPosition += scrollWidth - containerWidth\n }\n\n scrollToPosition(newPosition)\n }\n\n const slotProps = computed(() => ({\n next: group.next,\n prev: group.prev,\n select: group.select,\n isSelected: group.isSelected,\n }))\n\n const hasAffixes = computed(() => {\n switch (props.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !mobile.value\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return isOverflowing.value || Math.abs(scrollOffset.value) > 0\n\n // Always show on mobile\n case 'mobile': return (\n mobile.value ||\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !mobile.value &&\n (isOverflowing.value || Math.abs(scrollOffset.value) > 0)\n )\n }\n })\n\n const hasPrev = computed(() => {\n // 1 pixel in reserve, may be lost after rounding\n return Math.abs(scrollOffset.value) > 1\n })\n\n const hasNext = computed(() => {\n if (!containerRef.value) return false\n\n const scrollSize = getScrollSize(isHorizontal.value, containerRef.el)\n const clientSize = getClientSize(isHorizontal.value, containerRef.el)\n\n const scrollSizeMax = scrollSize - clientSize\n\n // 1 pixel in reserve, may be lost after rounding\n return scrollSizeMax - Math.abs(scrollOffset.value) > 1\n })\n\n useRender(() => (\n \n { hasAffixes.value && (\n hasPrev.value && scrollTo('prev') }\n >\n { slots.prev?.(slotProps.value) ?? (\n \n \n \n )}\n \n )}\n\n \n \n { slots.default?.(slotProps.value) }\n \n \n\n { hasAffixes.value && (\n hasNext.value && scrollTo('next') }\n >\n { slots.next?.(slotProps.value) ?? (\n \n \n \n )}\n \n )}\n \n ))\n\n return {\n selected: group.selected,\n scrollTo,\n scrollOffset,\n focus,\n }\n },\n})\n\nexport type VSlideGroup = InstanceType\n","// Styles\nimport './VChipGroup.sass'\n\n// Components\nimport { makeVSlideGroupProps, VSlideGroup } from '@/components/VSlideGroup/VSlideGroup'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { deepEqual, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport const VChipGroupSymbol = Symbol.for('vuetify:v-chip-group')\n\nexport const makeVChipGroupProps = propsFactory({\n column: Boolean,\n filter: Boolean,\n valueComparator: {\n type: Function as PropType,\n default: deepEqual,\n },\n\n ...makeVSlideGroupProps(),\n ...makeComponentProps(),\n ...makeGroupProps({ selectedClass: 'v-chip--selected' }),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'tonal' } as const),\n}, 'VChipGroup')\n\ntype VChipGroupSlots = {\n default: {\n isSelected: (id: number) => boolean\n select: (id: number, value: boolean) => void\n next: () => void\n prev: () => void\n selected: readonly number[]\n }\n}\n\nexport const VChipGroup = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VChipGroupSlots,\n) => GenericProps>()({\n name: 'VChipGroup',\n\n props: makeVChipGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isSelected, select, next, prev, selected } = useGroup(props, VChipGroupSymbol)\n\n provideDefaults({\n VChip: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n filter: toRef(props, 'filter'),\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props)\n\n return (\n \n { slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value,\n })}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VChipGroup = InstanceType\n","/* eslint-disable complexity */\n// Styles\nimport './VChip.sass'\n\n// Components\nimport { VExpandXTransition } from '@/components/transitions'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VChipGroupSymbol } from '@/components/VChipGroup/VChipGroup'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed } from 'vue'\nimport { EventProp, genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VChipSlots = {\n default: {\n isSelected: boolean | undefined\n selectedClass: boolean | (string | undefined)[] | undefined\n select: ((value: boolean) => void) | undefined\n toggle: (() => void) | undefined\n value: unknown\n disabled: boolean\n }\n label: never\n prepend: never\n append: never\n close: never\n filter: never\n}\n\nexport const makeVChipProps = propsFactory({\n activeClass: String,\n appendAvatar: String,\n appendIcon: IconValue,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: {\n type: Boolean,\n default: undefined,\n },\n pill: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType,\n default: true,\n },\n text: String,\n modelValue: {\n type: Boolean,\n default: true,\n },\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'span' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'tonal' } as const),\n}, 'VChip')\n\nexport const VChip = genericComponent()({\n name: 'VChip',\n\n directives: { Ripple },\n\n props: makeVChipProps(),\n\n emits: {\n 'click:close': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n 'group:selected': (val: { value: boolean }) => true,\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { sizeClasses } = useSize(props)\n const { themeClasses } = provideTheme(props)\n\n const isActive = useProxiedModel(props, 'modelValue')\n const group = useGroupItem(props, VChipGroupSymbol, false)\n const link = useLink(props, attrs)\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (!!group || props.link || link.isClickable.value)\n )\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n isActive.value = false\n\n emit('click:close', e)\n },\n }))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n group?.toggle()\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n return () => {\n const Tag = (link.isLink.value) ? 'a' : props.tag\n const hasAppendMedia = !!(props.appendIcon || props.appendAvatar)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasClose = !!(slots.close || props.closable)\n const hasFilter = !!(slots.filter || props.filter) && group\n const hasPrependMedia = !!(props.prependIcon || props.prependAvatar)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n const hasColor = !group || group.isSelected.value\n\n return isActive.value && (\n \n { genOverlays(isClickable.value, 'v-chip') }\n\n { hasFilter && (\n \n \n { !slots.filter ? (\n \n ) : (\n \n )}\n \n \n )}\n\n { hasPrepend && (\n
\n { !slots.prepend ? (\n <>\n { props.prependIcon && (\n \n )}\n\n { props.prependAvatar && (\n \n )}\n \n ) : (\n \n )}\n
\n )}\n\n
\n { slots.default?.({\n isSelected: group?.isSelected.value,\n selectedClass: group?.selectedClass.value,\n select: group?.select,\n toggle: group?.toggle,\n value: group?.value.value,\n disabled: props.disabled,\n }) ?? props.text }\n
\n\n { hasAppend && (\n
\n { !slots.append ? (\n <>\n { props.appendIcon && (\n \n )}\n\n { props.appendAvatar && (\n \n )}\n \n ) : (\n \n )}\n
\n )}\n\n { hasClose && (\n \n { !slots.close ? (\n \n ) : (\n \n )}\n \n )}\n \n )\n }\n },\n})\n\nexport type VChip = InstanceType\n","// Utilities\nimport { computed, inject, provide, shallowRef } from 'vue'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\n// Depth\nexport const DepthKey: InjectionKey> = Symbol.for('vuetify:depth')\n\nexport function useDepth (hasPrepend?: Ref) {\n const parent = inject(DepthKey, shallowRef(-1))\n\n const depth = computed(() => parent.value + 1 + (hasPrepend?.value ? 1 : 0))\n\n provide(DepthKey, depth)\n\n return depth\n}\n\n// List\nexport const ListKey: InjectionKey<{\n hasPrepend: Ref\n updateHasPrepend: (value: boolean) => void\n}> = Symbol.for('vuetify:list')\n\nexport function createList () {\n const parent = inject(ListKey, { hasPrepend: shallowRef(false), updateHasPrepend: () => null })\n\n const data = {\n hasPrepend: shallowRef(false),\n updateHasPrepend: (value: boolean) => {\n if (value) data.hasPrepend.value = value\n },\n }\n\n provide(ListKey, data)\n\n return parent\n}\n\nexport function useList () {\n return inject(ListKey, null)\n}\n","/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue'\nimport { wrapInArray } from '@/util'\n\nexport type ActiveStrategyFn = (data: {\n id: unknown\n value: boolean\n activated: Set\n children: Map\n parents: Map\n event?: Event\n}) => Set\n\nexport type ActiveStrategyTransformInFn = (\n v: unknown | undefined,\n children: Map,\n parents: Map,\n) => Set\n\nexport type ActiveStrategyTransformOutFn = (\n v: Set,\n children: Map,\n parents: Map,\n) => unknown\n\nexport type ActiveStrategy = {\n activate: ActiveStrategyFn\n in: ActiveStrategyTransformInFn\n out: ActiveStrategyTransformOutFn\n}\n\nexport const independentActiveStrategy = (mandatory?: boolean): ActiveStrategy => {\n const strategy: ActiveStrategy = {\n activate: ({ id, value, activated }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value && activated.size === 1 && activated.has(id)) return activated\n\n if (value) {\n activated.add(id)\n } else {\n activated.delete(id)\n }\n\n return activated\n },\n in: (v, children, parents) => {\n let set = new Set()\n\n if (v != null) {\n for (const id of wrapInArray(v)) {\n set = strategy.activate({\n id,\n value: true,\n activated: new Set(set),\n children,\n parents,\n })\n }\n }\n\n return set\n },\n out: v => {\n return Array.from(v)\n },\n }\n\n return strategy\n}\n\nexport const independentSingleActiveStrategy = (mandatory?: boolean): ActiveStrategy => {\n const parentStrategy = independentActiveStrategy(mandatory)\n\n const strategy: ActiveStrategy = {\n activate: ({ activated, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = activated.has(id) ? new Set([id]) : new Set()\n return parentStrategy.activate({ ...rest, id, activated: singleSelected })\n },\n in: (v, children, parents) => {\n let set = new Set()\n\n if (v != null) {\n const arr = wrapInArray(v)\n if (arr.length) {\n set = parentStrategy.in(arr.slice(0, 1), children, parents)\n }\n }\n\n return set\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafActiveStrategy = (mandatory?: boolean): ActiveStrategy => {\n const parentStrategy = independentActiveStrategy(mandatory)\n\n const strategy: ActiveStrategy = {\n activate: ({ id, activated, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return activated\n\n return parentStrategy.activate({ id, activated, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleActiveStrategy = (mandatory?: boolean): ActiveStrategy => {\n const parentStrategy = independentSingleActiveStrategy(mandatory)\n\n const strategy: ActiveStrategy = {\n activate: ({ id, activated, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return activated\n\n return parentStrategy.activate({ id, activated, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n","export type OpenStrategyFn = (data: {\n id: unknown\n value: boolean\n opened: Set\n children: Map\n parents: Map\n event?: Event\n}) => Set\n\nexport type OpenSelectStrategyFn = (data: {\n id: unknown\n value: boolean\n opened: Set\n selected: Map\n children: Map\n parents: Map\n event?: Event\n}) => Set | null\n\nexport type OpenStrategy = {\n open: OpenStrategyFn\n select: OpenSelectStrategyFn\n}\n\nexport const singleOpenStrategy: OpenStrategy = {\n open: ({ id, value, opened, parents }) => {\n if (value) {\n const newOpened = new Set()\n newOpened.add(id)\n\n let parent = parents.get(id)\n\n while (parent != null) {\n newOpened.add(parent)\n parent = parents.get(parent)\n }\n\n return newOpened\n } else {\n opened.delete(id)\n return opened\n }\n },\n select: () => null,\n}\n\nexport const multipleOpenStrategy: OpenStrategy = {\n open: ({ id, value, opened, parents }) => {\n if (value) {\n let parent = parents.get(id)\n opened.add(id)\n\n while (parent != null && parent !== id) {\n opened.add(parent)\n parent = parents.get(parent)\n }\n\n return opened\n } else {\n opened.delete(id)\n }\n return opened\n },\n select: () => null,\n}\n\nexport const listOpenStrategy: OpenStrategy = {\n open: multipleOpenStrategy.open,\n select: ({ id, value, opened, parents }) => {\n if (!value) return opened\n\n const path: unknown[] = []\n\n let parent = parents.get(id)\n\n while (parent != null) {\n path.push(parent)\n parent = parents.get(parent)\n }\n\n return new Set(path)\n },\n}\n","/* eslint-disable sonarjs/no-identical-functions */\n// Utilities\nimport { toRaw } from 'vue'\n\nexport type SelectStrategyFn = (data: {\n id: unknown\n value: boolean\n selected: Map\n children: Map\n parents: Map\n event?: Event\n}) => Map\n\nexport type SelectStrategyTransformInFn = (\n v: readonly unknown[] | undefined,\n children: Map,\n parents: Map,\n) => Map\n\nexport type SelectStrategyTransformOutFn = (\n v: Map,\n children: Map,\n parents: Map,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFn\n in: SelectStrategyTransformInFn\n out: SelectStrategyTransformOutFn\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n if (v?.length) {\n map = parentStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return map\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n id = toRaw(id)\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(item, value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = parents.get(id)\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(cid) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = parents.get(parent)\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries())\n .reduce((arr, [key, value]) => {\n if (value === 'on') arr.push(key)\n return arr\n }, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, provide, ref, shallowRef, toRaw, toRef } from 'vue'\nimport {\n independentActiveStrategy,\n independentSingleActiveStrategy,\n leafActiveStrategy,\n leafSingleActiveStrategy,\n} from './activeStrategies'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { ActiveStrategy } from './activeStrategies'\nimport type { OpenStrategy } from './openStrategies'\nimport type { SelectStrategy } from './selectStrategies'\nimport type { EventProp } from '@/util'\n\nexport type ActiveStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | ActiveStrategy\n | ((mandatory: boolean) => ActiveStrategy)\nexport type SelectStrategyProp =\n | 'single-leaf'\n | 'leaf'\n | 'independent'\n | 'single-independent'\n | 'classic'\n | SelectStrategy\n | ((mandatory: boolean) => SelectStrategy)\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n activatable: boolean\n selectable: boolean\n activeStrategy: ActiveStrategyProp | undefined\n selectStrategy: SelectStrategyProp | undefined\n openStrategy: OpenStrategyProp | undefined\n activated: any\n selected: any\n opened: any\n mandatory: boolean\n 'onUpdate:activated': EventProp<[any]> | undefined\n 'onUpdate:selected': EventProp<[any]> | undefined\n 'onUpdate:opened': EventProp<[any]> | undefined\n}\n\ntype NestedProvide = {\n id: Ref\n isGroupActivator?: boolean\n root: {\n children: Ref>\n parents: Ref>\n activatable: Ref\n selectable: Ref\n opened: Ref>\n activated: Ref>\n selected: Ref>\n selectedValues: Ref\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n activate: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: shallowRef(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n activate: () => null,\n select: () => null,\n activatable: ref(false),\n selectable: ref(false),\n opened: ref(new Set()),\n activated: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n activatable: Boolean,\n selectable: Boolean,\n activeStrategy: [String, Function, Object] as PropType,\n selectStrategy: [String, Function, Object] as PropType,\n openStrategy: [String, Object] as PropType,\n opened: null,\n activated: null,\n selected: null,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map())\n const parents = ref(new Map())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const activeStrategy = computed(() => {\n if (typeof props.activeStrategy === 'object') return props.activeStrategy\n if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory)\n\n switch (props.activeStrategy) {\n case 'leaf': return leafActiveStrategy(props.mandatory)\n case 'single-leaf': return leafSingleActiveStrategy(props.mandatory)\n case 'independent': return independentActiveStrategy(props.mandatory)\n case 'single-independent':\n default: return independentSingleActiveStrategy(props.mandatory)\n }\n })\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n if (typeof props.selectStrategy === 'function') return props.selectStrategy(props.mandatory)\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const activated = useProxiedModel(\n props,\n 'activated',\n props.activated,\n v => activeStrategy.value.in(v, children.value, parents.value),\n v => activeStrategy.value.out(v, children.value, parents.value),\n )\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: shallowRef(),\n root: {\n opened,\n activatable: toRef(props, 'activatable'),\n selectable: toRef(props, 'selectable'),\n activated,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n activate: (id, value, event) => {\n if (!props.activatable) {\n return nested.root.select(id, true, event)\n }\n\n vm.emit('click:activate', { id, value, path: getPath(id), event })\n\n const newActivated = activeStrategy.value.activate({\n id,\n value,\n activated: new Set(activated.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newActivated && (activated.value = newActivated)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol(getUid())\n const computedId = computed(() => id.value !== undefined ? id.value : uidSymbol)\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n activate: (activated: boolean, e?: Event) => parent.root.activate(computedId.value, activated, e),\n isActivated: computed(() => parent.root.activated.value.has(toRaw(computedId.value))),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n","// Components\nimport { VExpandTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useList } from './list'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedGroupActivator, useNestedItem } from '@/composables/nested/nested'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VListGroupSlots = {\n default: never\n activator: { isOpen: boolean, props: Record }\n}\n\nconst VListGroupActivator = defineComponent({\n name: 'VListGroupActivator',\n\n setup (_, { slots }) {\n useNestedGroupActivator()\n\n return () => slots.default?.()\n },\n})\n\nexport const makeVListGroupProps = propsFactory({\n /* @deprecated */\n activeColor: String,\n baseColor: String,\n color: String,\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n prependIcon: IconValue,\n appendIcon: IconValue,\n fluid: Boolean,\n subgroup: Boolean,\n title: String,\n value: null,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListGroup')\n\nexport const VListGroup = genericComponent()({\n name: 'VListGroup',\n\n props: makeVListGroupProps(),\n\n setup (props, { slots }) {\n const { isOpen, open, id: _id } = useNestedItem(toRef(props, 'value'), true)\n const id = computed(() => `v-list-group--id-${String(_id.value)}`)\n const list = useList()\n const { isBooted } = useSsrBoot()\n\n function onClick (e: Event) {\n open(!isOpen.value, e)\n }\n\n const activatorProps = computed(() => ({\n onClick,\n class: 'v-list-group__header',\n id: id.value,\n }))\n\n const toggleIcon = computed(() => isOpen.value ? props.collapseIcon : props.expandIcon)\n const activatorDefaults = computed(() => ({\n VListItem: {\n active: isOpen.value,\n activeColor: props.activeColor,\n baseColor: props.baseColor,\n color: props.color,\n prependIcon: props.prependIcon || (props.subgroup && toggleIcon.value),\n appendIcon: props.appendIcon || (!props.subgroup && toggleIcon.value),\n title: props.title,\n value: props.value,\n },\n }))\n\n useRender(() => (\n \n { slots.activator && (\n \n \n { slots.activator({ props: activatorProps.value, isOpen: isOpen.value }) }\n \n \n )}\n\n \n
\n { slots.default?.() }\n
\n
\n \n ))\n\n return {\n isOpen,\n }\n },\n})\n\nexport type VListGroup = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVListItemSubtitleProps = propsFactory({\n opacity: [Number, String],\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListItemSubtitle')\n\nexport const VListItemSubtitle = genericComponent()({\n name: 'VListItemSubtitle',\n\n props: makeVListItemSubtitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VListItemSubtitle = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VListItemTitle = createSimpleFunctional('v-list-item-title')\n\nexport type VListItemTitle = InstanceType\n","// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ntype ListItemSlot = {\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType,\n default: true,\n },\n slim: Boolean,\n subtitle: [String, Number],\n title: [String, Number],\n value: null,\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const color = computed(() => props.color ?? props.activeColor)\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n \n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n
\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n \n )}\n\n { props.prependIcon && (\n \n )}\n \n ) : (\n \n { slots.prepend?.(slotProps.value) }\n \n )}\n\n
\n
\n )}\n\n
\n { hasTitle && (\n \n { slots.title?.({ title: props.title }) ?? props.title }\n \n )}\n\n { hasSubtitle && (\n \n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n \n )}\n\n { slots.default?.(slotProps.value) }\n
\n\n { hasAppend && (\n
\n { !slots.append ? (\n <>\n { props.appendIcon && (\n \n )}\n\n { props.appendAvatar && (\n \n )}\n \n ) : (\n \n { slots.append?.(slotProps.value) }\n \n )}\n\n
\n
\n )}\n \n )\n })\n\n return {\n isGroupActivator,\n isSelected,\n list,\n select,\n }\n },\n})\n\nexport type VListItem = InstanceType\n","// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVListSubheaderProps = propsFactory({\n color: String,\n inset: Boolean,\n sticky: Boolean,\n title: String,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListSubheader')\n\nexport const VListSubheader = genericComponent()({\n name: 'VListSubheader',\n\n props: makeVListSubheaderProps(),\n\n setup (props, { slots }) {\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => {\n const hasText = !!(slots.default || props.title)\n\n return (\n \n { hasText && (\n
\n { slots.default?.() ?? props.title }\n
\n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VListSubheader = InstanceType\n","// Styles\nimport './VDivider.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\ntype DividerKey = 'borderRightWidth' | 'borderTopWidth' | 'maxHeight' | 'maxWidth'\ntype DividerStyles = Partial>\n\nexport const makeVDividerProps = propsFactory({\n color: String,\n inset: Boolean,\n length: [Number, String],\n opacity: [Number, String],\n thickness: [Number, String],\n vertical: Boolean,\n\n ...makeComponentProps(),\n ...makeThemeProps(),\n}, 'VDivider')\n\nexport const VDivider = genericComponent()({\n name: 'VDivider',\n\n props: makeVDividerProps(),\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const dividerStyles = computed(() => {\n const styles: DividerStyles = {}\n\n if (props.length) {\n styles[props.vertical ? 'maxHeight' : 'maxWidth'] = convertToUnit(props.length)\n }\n\n if (props.thickness) {\n styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness)\n }\n\n return styles\n })\n\n useRender(() => {\n const divider = (\n \n )\n\n if (!slots.default) return divider\n\n return (\n \n { divider }\n\n
\n { slots.default() }\n
\n\n { divider }\n
\n )\n })\n\n return {}\n },\n})\n\nexport type VDivider = InstanceType\n","// Components\nimport { VListGroup } from './VListGroup'\nimport { VListItem } from './VListItem'\nimport { VListSubheader } from './VListSubheader'\nimport { VDivider } from '../VDivider'\n\n// Utilities\nimport { createList } from './list'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from './VList'\nimport type { VListItemSlots } from './VListItem'\nimport type { GenericProps } from '@/util'\n\nexport type VListChildrenSlots = {\n [K in keyof Omit]: VListItemSlots[K] & { item: T }\n} & {\n default: never\n item: { props: InternalListItem['props'] }\n divider: { props: InternalListItem['props'] }\n subheader: { props: InternalListItem['props'] }\n header: { props: InternalListItem['props'] }\n}\n\nexport const makeVListChildrenProps = propsFactory({\n items: Array as PropType,\n returnObject: Boolean,\n}, 'VListChildren')\n\nexport const VListChildren = genericComponent(\n props: {\n items?: readonly T[]\n returnObject?: boolean\n },\n slots: VListChildrenSlots\n) => GenericProps>()({\n name: 'VListChildren',\n\n props: makeVListChildrenProps(),\n\n setup (props, { slots }) {\n createList()\n\n return () => slots.default?.() ?? props.items?.map(({ children, props: itemProps, type, raw: item }) => {\n if (type === 'divider') {\n return slots.divider?.({ props: itemProps }) ?? (\n \n )\n }\n\n if (type === 'subheader') {\n return slots.subheader?.({ props: itemProps }) ?? (\n \n )\n }\n\n const slotsWithItem = {\n subtitle: slots.subtitle ? (slotProps: any) => slots.subtitle?.({ ...slotProps, item }) : undefined,\n prepend: slots.prepend ? (slotProps: any) => slots.prepend?.({ ...slotProps, item }) : undefined,\n append: slots.append ? (slotProps: any) => slots.append?.({ ...slotProps, item }) : undefined,\n title: slots.title ? (slotProps: any) => slots.title?.({ ...slotProps, item }) : undefined,\n }\n\n const listGroupProps = VListGroup.filterProps(itemProps)\n\n return children ? (\n \n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: props.returnObject ? item : itemProps.value,\n }\n\n return slots.header\n ? slots.header({ props: listItemProps })\n : (\n \n )\n },\n default: () => (\n \n ),\n }}\n \n ) : (\n slots.item ? slots.item({ props: itemProps }) : (\n \n )\n )\n })\n },\n})\n","// Utilities\nimport { computed } from 'vue'\nimport { deepEqual, getPropertyFromItem, omit, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport interface ListItem extends InternalItem {\n title: string\n props: {\n [key: string]: any\n title: string\n value: any\n }\n children?: ListItem[]\n}\n\nexport interface ItemProps {\n items: any[]\n itemTitle: SelectItemKey\n itemValue: SelectItemKey\n itemChildren: SelectItemKey\n itemProps: SelectItemKey\n returnObject: boolean\n valueComparator: typeof deepEqual\n}\n\n// Composables\nexport const makeItemsProps = propsFactory({\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n itemTitle: {\n type: [String, Array, Function] as PropType,\n default: 'title',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n itemChildren: {\n type: [Boolean, String, Array, Function] as PropType,\n default: 'children',\n },\n itemProps: {\n type: [Boolean, String, Array, Function] as PropType,\n default: 'props',\n },\n returnObject: Boolean,\n valueComparator: {\n type: Function as PropType,\n default: deepEqual,\n },\n}, 'list-items')\n\nexport function transformItem (props: Omit, item: any): ListItem {\n const title = getPropertyFromItem(item, props.itemTitle, item)\n const value = getPropertyFromItem(item, props.itemValue, title)\n const children = getPropertyFromItem(item, props.itemChildren)\n const itemProps = props.itemProps === true\n ? typeof item === 'object' && item != null && !Array.isArray(item)\n ? 'children' in item\n ? omit(item, ['children'])\n : item\n : undefined\n : getPropertyFromItem(item, props.itemProps)\n\n const _props = {\n title,\n value,\n ...itemProps,\n }\n\n return {\n title: String(_props.title ?? ''),\n value: _props.value,\n props: _props,\n children: Array.isArray(children) ? transformItems(props, children) : undefined,\n raw: item,\n }\n}\n\nexport function transformItems (props: Omit, items: ItemProps['items']) {\n const array: ListItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nexport function useItems (props: ItemProps) {\n const items = computed(() => transformItems(props, props.items))\n const hasNullItem = computed(() => items.value.some(item => item.value === null))\n\n function transformIn (value: any[]): ListItem[] {\n if (!hasNullItem.value) {\n // When the model value is null, return an InternalItem\n // based on null only if null is one of the items\n value = value.filter(v => v !== null)\n }\n\n return value.map(v => {\n if (props.returnObject && typeof v === 'string') {\n // String model value means value is a custom input value from combobox\n // Don't look up existing items if the model value is a string\n return transformItem(props, v)\n }\n return items.value.find(item => props.valueComparator(v, item.value)) || transformItem(props, v)\n })\n }\n\n function transformOut (value: ListItem[]): any[] {\n return props.returnObject\n ? value.map(({ raw }) => raw)\n : value.map(({ value }) => value)\n }\n\n return { items, transformIn, transformOut }\n}\n","// Styles\nimport './VList.sass'\n\n// Components\nimport { VListChildren } from './VListChildren'\n\n// Composables\nimport { createList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeItemsProps } from '@/composables/list-items'\nimport { makeNestedProps, useNested } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef } from 'vue'\nimport { focusChild, genericComponent, getPropertyFromItem, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VListChildrenSlots } from './VListChildren'\nimport type { ItemProps, ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport interface InternalListItem extends ListItem {\n type?: 'item' | 'subheader' | 'divider'\n}\n\nfunction isPrimitive (value: unknown): value is string | number | boolean {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'\n}\n\nfunction transformItem (props: ItemProps & { itemType: string }, item: any): InternalListItem {\n const type = getPropertyFromItem(item, props.itemType, 'item')\n const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle)\n const value = getPropertyFromItem(item, props.itemValue, undefined)\n const children = getPropertyFromItem(item, props.itemChildren)\n const itemProps = props.itemProps === true\n ? omit(item, ['children'])\n : getPropertyFromItem(item, props.itemProps)\n\n const _props = {\n title,\n value,\n ...itemProps,\n }\n\n return {\n type,\n title: _props.title,\n value: _props.value,\n props: _props,\n children: type === 'item' && children ? transformItems(props, children) : undefined,\n raw: item,\n }\n}\n\nfunction transformItems (props: ItemProps & { itemType: string }, items: (string | object)[]) {\n const array: InternalListItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nexport function useListItems (props: ItemProps & { itemType: string }) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n\nexport const makeVListProps = propsFactory({\n baseColor: String,\n /* @deprecated */\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n expandIcon: String,\n collapseIcon: String,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n slim: Boolean,\n nav: Boolean,\n\n ...makeNestedProps({\n selectStrategy: 'single-leaf' as const,\n openStrategy: 'list' as const,\n }),\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n itemType: {\n type: String,\n default: 'type',\n },\n ...makeItemsProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VList')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VList = genericComponent(\n props: {\n items?: T\n itemTitle?: SelectItemKey>\n itemValue?: SelectItemKey>\n itemChildren?: SelectItemKey>\n itemProps?: SelectItemKey>\n selected?: S\n 'onUpdate:selected'?: (value: S) => void\n opened?: O\n 'onUpdate:opened'?: (value: O) => void\n },\n slots: VListChildrenSlots>\n) => GenericProps>()({\n name: 'VList',\n\n props: makeVListProps(),\n\n emits: {\n 'update:selected': (value: unknown) => true,\n 'update:activated': (value: unknown) => true,\n 'update:opened': (value: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:activate': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { children, open, parents, select } = useNested(props)\n const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined)\n const activeColor = toRef(props, 'activeColor')\n const baseColor = toRef(props, 'baseColor')\n const color = toRef(props, 'color')\n\n createList()\n\n provideDefaults({\n VListGroup: {\n activeColor,\n baseColor,\n color,\n expandIcon: toRef(props, 'expandIcon'),\n collapseIcon: toRef(props, 'collapseIcon'),\n },\n VListItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n baseColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n nav: toRef(props, 'nav'),\n slim: toRef(props, 'slim'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const isFocused = shallowRef(false)\n const contentRef = ref()\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n const target = e.target as HTMLElement\n\n if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) return\n\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n } else if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n } else {\n return\n }\n\n e.preventDefault()\n }\n\n function onMousedown (e: MouseEvent) {\n isFocused.value = true\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (contentRef.value) {\n return focusChild(contentRef.value, location)\n }\n }\n\n useRender(() => {\n return (\n \n \n \n )\n })\n\n return {\n open,\n select,\n focus,\n children,\n parents,\n }\n },\n})\n\nexport type VList = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VListImg = createSimpleFunctional('v-list-img')\n\nexport type VListImg = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVListItemActionProps = propsFactory({\n start: Boolean,\n end: Boolean,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListItemAction')\n\nexport const VListItemAction = genericComponent()({\n name: 'VListItemAction',\n\n props: makeVListItemActionProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VListItemAction = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVListItemMediaProps = propsFactory({\n start: Boolean,\n end: Boolean,\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VListItemMedia')\n\nexport const VListItemMedia = genericComponent()({\n name: 'VListItemMedia',\n\n props: makeVListItemMediaProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VListItemMedia = InstanceType\n","// Types\nimport type { ParsedAnchor } from '@/util'\nimport type { Box } from '@/util/box'\n\ntype Point = { x: number, y: number }\ndeclare class As {\n private as: T\n}\ntype ElementPoint = Point & As<'element'>\ntype ViewportPoint = Point & As<'viewport'>\ntype Offset = Point & As<'offset'>\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport (point: ElementPoint, offset: Offset | Box) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y,\n } as ViewportPoint\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement (point: ViewportPoint, offset: Offset | Box) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y,\n } as ElementPoint\n}\n\n/** Get the difference between two points */\nexport function getOffset (a: T, b: T) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n } as Offset\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint (anchor: ParsedAnchor, box: Box): ViewportPoint {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const { side, align } = anchor\n\n const x: number =\n align === 'left' ? 0\n : align === 'center' ? box.width / 2\n : align === 'right' ? box.width\n : align\n const y: number =\n side === 'top' ? 0\n : side === 'bottom' ? box.height\n : side\n\n return elementToViewport({ x, y } as ElementPoint, box)\n } else if (anchor.side === 'left' || anchor.side === 'right') {\n const { side, align } = anchor\n\n const x: number =\n side === 'left' ? 0\n : side === 'right' ? box.width\n : side\n const y: number =\n align === 'top' ? 0\n : align === 'center' ? box.height / 2\n : align === 'bottom' ? box.height\n : align\n\n return elementToViewport({ x, y } as ElementPoint, box)\n }\n\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2,\n } as ElementPoint, box)\n}\n","// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue'\nimport { anchorToPoint, getOffset } from './util/point'\nimport {\n clamp,\n consoleError,\n convertToUnit,\n destructComputed,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n getScrollParents,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n parseAnchor,\n propsFactory,\n} from '@/util'\nimport { Box, getOverflow, getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref\n target: Ref\n isActive: Ref\n isRtl: Ref\n}\n\ntype LocationStrategyFn = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref>\n) => undefined | { updateLocation: (e: Event) => void }\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | LocationStrategyFn\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string | number[]\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType,\n default: 'bottom',\n },\n origin: {\n type: String as PropType,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType,\n}, 'VOverlay-location-strategies')\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset)\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\n\n window.addEventListener('resize', onResize, { passive: true })\n\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n }\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize (el: HTMLElement, isRtl: boolean) {\n // const scrollables = new Map()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n if (isRtl) {\n el.style.removeProperty('left')\n } else {\n el.style.removeProperty('right')\n }\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el)\n\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0)\n } else {\n contentBox.x -= parseFloat(el.style.left || 0)\n }\n contentBox.y -= parseFloat(el.style.top || 0)\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref>) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0,\n })\n }\n\n const { preferredAnchor, preferredOrigin } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value)\n const parsedOrigin =\n props.origin === 'overlap' ? parsedAnchor\n : props.origin === 'auto' ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, data.isRtl.value)\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n }\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n }\n }\n })\n\n const [minWidth, minHeight, maxWidth, maxHeight] =\n (['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const).map(key => {\n return computed(() => {\n const val = parseFloat(props[key]!)\n return isNaN(val) ? Infinity : val\n })\n })\n\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat)\n if (offset.length < 2) offset.push(0)\n return offset\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0]\n })\n\n let observe = false\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n\n watch([data.target, data.contentEl], ([newTarget, newContentEl], [oldTarget, oldContentEl]) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget)\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget)\n\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, {\n immediate: true,\n })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => observe = true)\n\n if (!data.target.value || !data.contentEl.value) return\n\n const targetBox = getTargetBox(data.target.value)\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value)\n const scrollParents = getScrollParents(data.contentEl.value)\n const viewportMargin = 12\n\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement)\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0)\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0)\n }\n }\n\n const viewport = scrollParents.reduce((box: Box | undefined, el) => {\n const rect = el.getBoundingClientRect()\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n })\n\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top),\n })\n }\n return scrollBox\n }, undefined!)\n viewport.x += viewportMargin\n viewport.y += viewportMargin\n viewport.width -= viewportMargin * 2\n viewport.height -= viewportMargin * 2\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n }\n\n function checkOverflow (_placement: typeof placement) {\n const box = new Box(contentBox)\n const targetPoint = anchorToPoint(_placement.anchor, targetBox)\n const contentPoint = anchorToPoint(_placement.origin, box)\n\n let { x, y } = getOffset(targetPoint, contentPoint)\n\n switch (_placement.anchor.side) {\n case 'top': y -= offset.value[0]; break\n case 'bottom': y += offset.value[0]; break\n case 'left': x -= offset.value[0]; break\n case 'right': x += offset.value[0]; break\n }\n\n switch (_placement.anchor.align) {\n case 'top': y -= offset.value[1]; break\n case 'bottom': y += offset.value[1]; break\n case 'left': x -= offset.value[1]; break\n case 'right': x += offset.value[1]; break\n }\n\n box.x += x\n box.y += y\n\n box.width = Math.min(box.width, maxWidth.value)\n box.height = Math.min(box.height, maxHeight.value)\n\n const overflows = getOverflow(box, viewport)\n\n return { overflows, x, y }\n }\n\n let x = 0; let y = 0\n const available = { x: 0, y: 0 }\n const flipped = { x: false, y: false }\n let resets = -1\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy')\n break\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement)\n\n x += _x\n y += _y\n\n contentBox.x += _x\n contentBox.y += _y\n\n // flip\n {\n const axis = getAxis(placement.anchor)\n const hasOverflowX = overflows.x.before || overflows.x.after\n const hasOverflowY = overflows.y.before || overflows.y.after\n\n let reset = false\n ;['x', 'y'].forEach(key => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = { anchor: { ...placement.anchor }, origin: { ...placement.origin } }\n const flip = key === 'x'\n ? axis === 'y' ? flipAlign : flipSide\n : axis === 'y' ? flipSide : flipAlign\n newPlacement.anchor = flip(newPlacement.anchor)\n newPlacement.origin = flip(newPlacement.origin)\n const { overflows: newOverflows } = checkOverflow(newPlacement)\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n (newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2)\n ) {\n placement = newPlacement\n reset = flipped[key] = true\n }\n }\n })\n if (reset) continue\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before\n contentBox.x += overflows.x.before\n }\n if (overflows.x.after) {\n x -= overflows.x.after\n contentBox.x -= overflows.x.after\n }\n if (overflows.y.before) {\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n if (overflows.y.after) {\n y -= overflows.y.after\n contentBox.y -= overflows.y.after\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport)\n available.x = viewport.width - overflows.x.before - overflows.x.after\n available.y = viewport.height - overflows.y.before - overflows.y.after\n\n x += overflows.x.before\n contentBox.x += overflows.x.before\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n\n break\n }\n\n const axis = getAxis(placement.anchor)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value))),\n })\n\n return {\n available,\n contentBox,\n }\n }\n\n watch(\n () => [\n preferredAnchor.value,\n preferredOrigin.value,\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateLocation(),\n )\n\n nextTick(() => {\n const result = updateLocation()\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return\n const { available, contentBox } = result\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation()\n requestAnimationFrame(() => {\n updateLocation()\n })\n })\n }\n })\n\n return { updateLocation }\n}\n\nfunction pixelRound (val: number) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio\n}\n\nfunction pixelCeil (val: number) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio\n}\n","export function isFixedPosition (el?: HTMLElement) {\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n return true\n }\n el = el.offsetParent as HTMLElement\n }\n return false\n}\n","let clean = true\nconst frames = [] as any[]\n\n/**\n * Schedule a task to run in an animation frame on its own\n * This is useful for heavy tasks that may cause jank if all ran together\n */\nexport function requestNewFrame (cb: () => void) {\n if (!clean || frames.length) {\n frames.push(cb)\n run()\n } else {\n clean = false\n cb()\n run()\n }\n}\n\nlet raf = -1\nfunction run () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n const frame = frames.shift()\n if (frame) frame()\n\n if (frames.length) run()\n else clean = true\n })\n}\n","// Utilities\nimport { effectScope, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref\n contentEl: Ref\n targetEl: Ref\n isActive: Ref\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\ntype ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) => void\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn\n contained: boolean | undefined\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n}, 'VOverlay-scroll-strategies')\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await new Promise(resolve => setTimeout(resolve))\n scope.active && scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!)\n }\n })\n })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.targetEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent\n const scrollElements = [...new Set([\n ...getScrollParents(data.targetEl.value, props.contained ? offsetParent : undefined),\n ...getScrollParents(data.contentEl.value, props.contained ? offsetParent : undefined),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n\n if (el !== document.documentElement) {\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n }\n\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n const scrollBehavior = el.style.scrollBehavior\n\n el.style.scrollBehavior = 'auto'\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n\n el.style.scrollBehavior = scrollBehavior\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData, props: StrategyProps, scope: EffectScope) {\n let slow = false\n let raf = -1\n let ric = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n ric = (typeof requestIdleCallback === 'undefined' ? (cb: Function) => cb() : requestIdleCallback)(() => {\n scope.run(() => {\n bindScroll(data.targetEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n })\n })\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric)\n cancelAnimationFrame(raf)\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n","// Types\nimport type { InjectionKey } from 'vue'\n\ninterface MenuProvide {\n register (): void\n unregister (): void\n closeParents (e?: MouseEvent): void\n}\n\nexport const VMenuSymbol: InjectionKey = Symbol.for('vuetify:v-menu')\n","// Utilities\nimport { defer, propsFactory } from '@/util'\n\n// Types\nexport interface DelayProps {\n closeDelay?: number | string\n openDelay?: number | string\n}\n\n// Composables\nexport const makeDelayProps = propsFactory({\n closeDelay: [Number, String],\n openDelay: [Number, String],\n}, 'delay')\n\nexport function useDelay (props: DelayProps, cb?: (value: boolean) => void) {\n let clearDelay: (() => void) = () => {}\n\n function runDelay (isOpening: boolean) {\n clearDelay?.()\n\n const delay = Number(isOpening ? props.openDelay : props.closeDelay)\n\n return new Promise(resolve => {\n clearDelay = defer(delay, () => {\n cb?.(isOpening)\n resolve(isOpening)\n })\n })\n }\n\n function runOpenDelay () {\n return runDelay(true)\n }\n\n function runCloseDelay () {\n return runDelay(false)\n }\n\n return {\n clearDelay,\n runOpenDelay,\n runCloseDelay,\n }\n}\n","// Components\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\n\n// Utilities\nimport {\n computed,\n effectScope,\n inject,\n mergeProps,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n bindProps,\n getCurrentInstance,\n IN_BROWSER,\n matchesSelector,\n propsFactory,\n templateRef,\n unbindProps,\n} from '@/util'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\nimport type { DelayProps } from '@/composables/delay'\n\ninterface ActivatorProps extends DelayProps {\n target: 'parent' | 'cursor' | (string & {}) | Element | ComponentPublicInstance | [x: number, y: number] | undefined\n activator: 'parent' | (string & {}) | Element | ComponentPublicInstance | undefined\n activatorProps: Record\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n target: [String, Object] as PropType,\n activator: [String, Object] as PropType,\n activatorProps: {\n type: Object as PropType,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'VOverlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref, isTop: Ref }\n) {\n const vm = getCurrentInstance('useActivator')\n const activatorEl = ref()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const cursorTarget = ref<[x: number, y: number]>()\n const availableEvents = {\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY]\n }\n isActive.value = !isActive.value\n },\n onMouseenter: (e: MouseEvent) => {\n if (e.sourceCapabilities?.firesTouchEvents) return\n\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n onMouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n onFocus: (e: FocusEvent) => {\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') === false) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n onBlur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial = {}\n\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter\n events.onMouseleave = availableEvents.onMouseleave\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus\n events.onBlur = availableEvents.onBlur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Record = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true\n runOpenDelay()\n }\n events.onFocusout = () => {\n isFocused = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.onClick = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Record = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined\n })\n }\n }, { flush: 'post' })\n\n const activatorRef = templateRef()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n activatorEl.value = activatorRef.el\n })\n })\n\n const targetRef = templateRef()\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value\n if (targetRef.value) return targetRef.el\n return getTarget(props.target, vm) || activatorEl.value\n })\n const targetEl = computed(() => {\n return Array.isArray(target.value)\n ? undefined\n : target.value\n })\n\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, target, targetEl, targetRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n bindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n unbindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n const activator = getTarget(selector, vm)\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined\n\n return activatorEl.value\n }\n}\n\nfunction getTarget (\n selector: T,\n vm: ComponentInternalInstance\n): HTMLElement | undefined | (T extends any[] ? [x: number, y: number] : never) {\n if (!selector) return\n\n let target\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n target = el\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el\n } else {\n // HTMLElement | Element | [x, y]\n target = selector\n }\n\n return target\n}\n","// Composables\nimport { useDisplay } from '@/composables/display'\n\n// Utilities\nimport { onMounted, shallowRef } from 'vue'\nimport { IN_BROWSER } from '@/util'\n\nexport function useHydration () {\n if (!IN_BROWSER) return shallowRef(false)\n\n const { ssr } = useDisplay()\n\n if (ssr) {\n const isMounted = shallowRef(false)\n onMounted(() => {\n isMounted.value = true\n })\n return isMounted\n } else {\n return shallowRef(true)\n }\n}\n","// Utilities\nimport { computed, shallowRef, watch } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport const makeLazyProps = propsFactory({\n eager: Boolean,\n}, 'lazy')\n\nexport function useLazy (props: { eager: boolean }, active: Ref) {\n const isBooted = shallowRef(false)\n const hasContent = computed(() => isBooted.value || props.eager || active.value)\n\n watch(active, () => isBooted.value = true)\n\n function onAfterLeave () {\n if (!props.eager) isBooted.value = false\n }\n\n return { isBooted, hasContent, onAfterLeave }\n}\n","// Utilities\nimport { getCurrentInstance } from '@/util'\n\nexport function useScopeId () {\n const vm = getCurrentInstance('useScopeId')\n\n const scopeId = vm!.vnode.scopeId\n\n return { scopeId: scopeId ? { [scopeId]: '' } : undefined }\n}\n","// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, shallowRef, toRaw, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nconst StackSymbol: InjectionKey = Symbol.for('vuetify:stack')\n\ninterface StackProvide {\n activeChildren: Set\n}\n\nconst globalStack = reactive<[uid: number, zIndex: number][]>([])\n\nexport function useStack (\n isActive: Readonly>,\n zIndex: Readonly>,\n disableGlobalStack: boolean\n) {\n const vm = getCurrentInstance('useStack')\n const createStackEntry = !disableGlobalStack\n\n const parent = inject(StackSymbol, undefined)\n const stack: StackProvide = reactive({\n activeChildren: new Set(),\n })\n provide(StackSymbol, stack)\n\n const _zIndex = shallowRef(+zIndex.value)\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1]\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value\n\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value])\n }\n\n parent?.activeChildren.add(vm.uid)\n\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid)\n globalStack.splice(idx, 1)\n }\n\n parent?.activeChildren.delete(vm.uid)\n })\n })\n\n const globalTop = shallowRef(true)\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid\n setTimeout(() => globalTop.value = _isTop)\n })\n }\n\n const localTop = computed(() => !stack.activeChildren.size)\n\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({ zIndex: _zIndex.value })),\n }\n}\n","// Utilities\nimport { attachedRoot } from '@/util'\n\n// Types\nimport type { DirectiveBinding } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: MouseEvent) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirectiveBinding extends DirectiveBinding {\n value: ((e: MouseEvent) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: MouseEvent, binding: ClickOutsideDirectiveBinding): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const onClick = (e: Event) => directive(e as MouseEvent, el, binding)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as MouseEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: false,\n }\n }\n\n el._clickOutside[binding.instance!.$.uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unmounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[binding.instance!.$.uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[binding.instance!.$.uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[binding.instance!.$.uid]\n },\n}\n\nexport default ClickOutside\n","// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n \n { props.modelValue && (\n \n )}\n \n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref }\n activator: { isActive: boolean, props: Record, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref()\n const scrimEl = ref()\n const contentEl = ref()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value\n )\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n \n \n \n \n [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n
\n \n \n \n )}\n \n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType\n","// Utilities\nimport { computed, warn } from 'vue'\nimport { IN_BROWSER } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTeleport (target: Ref) {\n const teleportTarget = computed(() => {\n const _target = target.value\n\n if (_target === true || !IN_BROWSER) return undefined\n\n const targetElement =\n _target === false ? document.body\n : typeof _target === 'string' ? document.querySelector(_target)\n : _target\n\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`)\n return undefined\n }\n\n let container = targetElement.querySelector(':scope > .v-overlay-container')\n\n if (!container) {\n container = document.createElement('div')\n container.className = 'v-overlay-container'\n targetElement.appendChild(container)\n }\n\n return container\n })\n\n return { teleportTarget }\n}\n","// Types\nimport type { ComponentPublicInstance, Ref, UnwrapRef } from 'vue'\nimport type { UnionToIntersection } from '@/util'\n\nconst Refs = Symbol('Forwarded refs')\n\n/** Omit properties starting with P */\ntype OmitPrefix = [Extract] extends [never] ? T : Omit\n\ntype OmitProps = T extends { $props: any } ? Omit : T\n\nfunction getDescriptor (obj: any, key: PropertyKey) {\n let currentObj = obj\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key)\n if (descriptor) return descriptor\n currentObj = Object.getPrototypeOf(currentObj)\n }\n return undefined\n}\n\nexport function forwardRefs | undefined>[]> (\n target: T,\n ...refs: U\n): T & UnionToIntersection<{ [K in keyof U]: OmitPrefix>>, '$'> }[number]> {\n (target as any)[Refs] = refs\n\n return new Proxy(target, {\n get (target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key)\n return typeof val === 'function'\n ? val.bind(ref.value)\n : val\n }\n }\n },\n has (target, key) {\n if (Reflect.has(target, key)) {\n return true\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true\n }\n }\n return false\n },\n set (target, key, value) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value)\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false\n\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return Reflect.set(ref.value, key, value)\n }\n }\n\n return false\n },\n getOwnPropertyDescriptor (target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key)\n if (descriptor) return descriptor\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined)\n if (descriptor) return descriptor\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (!childRefs) continue\n const queue = childRefs.slice()\n while (queue.length) {\n const ref = queue.shift()\n const descriptor = getDescriptor(ref.value, key)\n if (descriptor) return descriptor\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (childRefs) queue.push(...childRefs)\n }\n }\n\n return undefined\n },\n }) as any\n}\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n getUid,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition as Component },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(0)\n provide(VMenuSymbol, {\n register () {\n ++openChildren.value\n },\n unregister () {\n --openChildren.value\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value &&\n (e == null || (e && !isClickInsideElement(e, overlay.value!.contentEl!)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n document.addEventListener('focusin', onFocusIn, { once: true })\n } else {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n }\n })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab' || (e.key === 'Enter' && !props.closeOnContentClick)) {\n if (e.key === 'Enter') e.preventDefault()\n\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {\n isActive.value = false\n parent?.closeParents()\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n focusChild(el, 'prev')\n }\n } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n\n return (\n \n {{\n activator: slots.activator,\n default: (...args) => (\n \n { slots.default?.(...args) }\n \n ),\n }}\n \n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType\n","// Styles\nimport './VCounter.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\n\nexport const makeVCounterProps = propsFactory({\n active: Boolean,\n disabled: Boolean,\n max: [Number, String],\n value: {\n type: [Number, String],\n default: 0,\n },\n\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: { component: VSlideYTransition as Component },\n }),\n}, 'VCounter')\n\nexport type VCounterSlot = {\n counter: string\n max: string | number | undefined\n value: string | number | undefined\n}\n\ntype VCounterSlots = {\n default: VCounterSlot\n}\n\nexport const VCounter = genericComponent()({\n name: 'VCounter',\n\n functional: true,\n\n props: makeVCounterProps(),\n\n setup (props, { slots }) {\n const counter = computed(() => {\n return props.max ? `${props.value} / ${props.max}` : String(props.value)\n })\n\n useRender(() => (\n \n parseFloat(props.max),\n },\n props.class,\n ]}\n style={ props.style }\n >\n { slots.default\n ? slots.default({\n counter: counter.value,\n max: props.max,\n value: props.value,\n })\n : counter.value\n }\n \n \n ))\n\n return {}\n },\n})\n\nexport type VCounter = InstanceType\n","// Components\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVFieldLabelProps = propsFactory({\n floating: Boolean,\n\n ...makeComponentProps(),\n}, 'VFieldLabel')\n\nexport const VFieldLabel = genericComponent()({\n name: 'VFieldLabel',\n\n props: makeVFieldLabelProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VFieldLabel = InstanceType\n","// Styles\nimport './VField.sass'\n\n// Components\nimport { VFieldLabel } from './VFieldLabel'\nimport { VExpandXTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport {\n animate,\n convertToUnit,\n EventProp,\n genericComponent,\n getUid,\n isOn,\n nullifyTransforms,\n pick,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'] as const\ntype Variant = typeof allowedVariants[number]\n\nexport interface DefaultInputSlot {\n isActive: Ref\n isFocused: Ref\n controlRef: Ref\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record\n}\n\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear',\n },\n active: Boolean,\n centerAffix: {\n type: Boolean,\n default: undefined,\n },\n color: String,\n baseColor: String,\n dirty: Boolean,\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n flat: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String as PropType,\n default: 'filled',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n 'onClick:clear': EventProp<[MouseEvent]>(),\n 'onClick:appendInner': EventProp<[MouseEvent]>(),\n 'onClick:prependInner': EventProp<[MouseEvent]>(),\n\n ...makeComponentProps(),\n ...makeLoaderProps(),\n ...makeRoundedProps(),\n ...makeThemeProps(),\n}, 'VField')\n\nexport type VFieldSlots = {\n clear: DefaultInputSlot & { props: Record }\n 'prepend-inner': DefaultInputSlot\n 'append-inner': DefaultInputSlot\n label: DefaultInputSlot & { label: string | undefined, props: Record }\n loader: LoaderSlotProps\n default: VFieldSlot\n}\n\nexport const VField = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VFieldSlots\n) => GenericProps>()({\n name: 'VField',\n\n inheritAttrs: false,\n\n props: {\n id: String,\n\n ...makeFocusProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { loaderClasses } = useLoader(props)\n const { focusClasses, isFocused, focus, blur } = useFocus(props)\n const { InputIcon } = useInputIcon(props)\n const { roundedClasses } = useRounded(props)\n const { rtlClasses } = useRtl()\n\n const isActive = computed(() => props.dirty || props.active)\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label))\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const labelRef = ref()\n const floatingLabelRef = ref()\n const controlRef = ref()\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return props.error || props.disabled ? undefined\n : isActive.value && isFocused.value ? props.color\n : props.baseColor\n }))\n\n watch(isActive, val => {\n if (hasLabel.value) {\n const el: HTMLElement = labelRef.value!.$el\n const targetEl: HTMLElement = floatingLabelRef.value!.$el\n\n requestAnimationFrame(() => {\n const rect = nullifyTransforms(el)\n const targetRect = targetEl.getBoundingClientRect()\n\n const x = targetRect.x - rect.x\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2)\n\n const targetWidth = targetRect.width / 0.75\n const width = Math.abs(targetWidth - rect.width) > 1\n ? { maxWidth: convertToUnit(targetWidth) }\n : undefined\n\n const style = getComputedStyle(el)\n const targetStyle = getComputedStyle(targetEl)\n const duration = parseFloat(style.transitionDuration) * 1000 || 150\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'))\n const color = targetStyle.getPropertyValue('color')\n\n el.style.visibility = 'visible'\n targetEl.style.visibility = 'hidden'\n\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width,\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse',\n }).finished.then(() => {\n el.style.removeProperty('visibility')\n targetEl.style.removeProperty('visibility')\n })\n })\n }\n }, { flush: 'post' })\n\n const slotProps = computed(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus,\n }))\n\n function onClick (e: MouseEvent) {\n if (e.target !== document.activeElement) {\n e.preventDefault()\n }\n }\n\n function onKeydownClear (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n props['onClick:clear']?.(new MouseEvent('click'))\n }\n\n useRender(() => {\n const isOutlined = props.variant === 'outlined'\n const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon)\n const hasClear = !!(props.clearable || slots.clear)\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear)\n const label = () => (\n slots.label\n ? slots.label({\n ...slotProps.value,\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n )\n\n return (\n \n
\n\n \n\n { hasPrepend && (\n
\n { props.prependInnerIcon && (\n \n )}\n\n { slots['prepend-inner']?.(slotProps.value) }\n
\n )}\n\n
\n {['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && (\n \n { label() }\n \n )}\n\n \n { label() }\n \n\n { slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value,\n },\n focus,\n blur,\n } as VFieldSlot)}\n
\n\n { hasClear && (\n \n {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n \n { slots.clear\n ? slots.clear({\n ...slotProps.value,\n props: {\n onKeydown: onKeydownClear,\n onFocus: focus,\n onBlur: blur,\n onClick: props['onClick:clear'],\n },\n })\n : (\n \n )}\n \n
\n \n )}\n\n { hasAppend && (\n
\n { slots['append-inner']?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n \n )}\n
\n )}\n\n \n { isOutlined && (\n <>\n
\n\n { hasLabel.value && (\n
\n \n { label() }\n \n
\n )}\n\n
\n \n )}\n\n { isPlainOrUnderlined.value && hasLabel.value && (\n \n { label() }\n \n )}\n
\n
\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style')\n return pick(attrs, keys)\n}\n","// Styles\nimport './VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String],\n counterValue: [Number, Function] as PropType number)>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n role: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref()\n const vFieldRef = ref()\n const inputRef = ref()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || (props.counter !== false && props.counter != null))\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = filterFieldProps(props)\n\n return (\n \n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n \n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n \n )\n\n return (\n <>\n { props.prefix && (\n \n \n { props.prefix }\n \n \n )}\n\n { slots.default ? (\n \n { slots.default() }\n { inputNode }\n \n ) : cloneVNode(inputNode, { class: fieldClass })}\n\n { props.suffix && (\n \n \n { props.suffix }\n \n \n )}\n \n )\n },\n }}\n \n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n \n\n \n \n )}\n \n ) : undefined,\n }}\n \n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { GenericProps, TemplateRef } from '@/util'\n\nexport const makeVVirtualScrollItemProps = propsFactory({\n renderless: Boolean,\n\n ...makeComponentProps(),\n}, 'VVirtualScrollItem')\n\nexport const VVirtualScrollItem = genericComponent(\n props: {\n renderless?: Renderless\n },\n slots: {\n default: Renderless extends true ? {\n itemRef: TemplateRef\n } : never\n }\n) => GenericProps>()({\n name: 'VVirtualScrollItem',\n\n inheritAttrs: false,\n\n props: makeVVirtualScrollItemProps(),\n\n emits: {\n 'update:height': (height: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { resizeRef, contentRect } = useResizeObserver(undefined, 'border')\n\n watch(() => contentRect.value?.height, height => {\n if (height != null) emit('update:height', height)\n })\n\n useRender(() => props.renderless ? (\n <>\n { slots.default?.({ itemRef: resizeRef }) }\n \n ) : (\n \n { (slots.default as any)?.() }\n \n ))\n },\n})\n","// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, debounce, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight?: number | string\n height?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual (props: VirtualProps, items: Ref) {\n const display = useDisplay()\n\n const itemHeight = shallowRef(0)\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0)\n })\n\n const first = shallowRef(0)\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)\n ) || 1)\n const paddingTop = shallowRef(0)\n const paddingBottom = shallowRef(0)\n\n /** The scrollable element */\n const containerRef = ref()\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref()\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0\n\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0\n })\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value)\n })\n\n let sizes = Array.from({ length: items.value.length })\n let offsets = Array.from({ length: items.value.length })\n const updateTime = shallowRef(0)\n let targetScrollIndex = -1\n\n function getSize (index: number) {\n return sizes[index] || itemHeight.value\n }\n\n const updateOffsets = debounce(() => {\n const start = performance.now()\n offsets[0] = 0\n const length = items.value.length\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1)\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start)\n }, updateTime)\n\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch()\n markerOffset = markerRef.value!.offsetTop\n updateOffsets.immediate()\n calculateVisibleItems()\n\n if (!~targetScrollIndex) return\n\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex)\n targetScrollIndex = -1\n })\n })\n })\n\n onScopeDispose(() => {\n updateOffsets.clear()\n })\n\n function handleItemResize (index: number, height: number) {\n const prevHeight = sizes[index]\n const prevMinHeight = itemHeight.value\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height\n updateOffsets()\n }\n }\n\n function calculateOffset (index: number) {\n index = clamp(index, 0, items.value.length - 1)\n return offsets[index] || 0\n }\n\n function calculateIndex (scrollTop: number) {\n return binaryClosest(offsets, scrollTop)\n }\n\n let lastScrollTop = 0\n let scrollVelocity = 0\n let lastScrollTime = 0\n\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems()\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0\n calculateVisibleItems()\n })\n }\n }\n })\n\n function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value,\n }))\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: true })\n\n return {\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike, val: number) {\n let high = arr.length - 1\n let low = 0\n let mid = 0\n let item = null\n let target = -1\n\n if (arr[high]! < val) {\n return high\n }\n\n while (low <= high) {\n mid = (low + high) >> 1\n item = arr[mid]!\n\n if (item > val) {\n high = mid - 1\n } else if (item < val) {\n target = mid\n low = mid + 1\n } else if (item === val) {\n return mid\n } else {\n return low\n }\n }\n\n return target\n}\n","// Styles\nimport './VVirtualScroll.sass'\n\n// Components\nimport { VVirtualScrollItem } from './VVirtualScrollItem'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { onMounted, onScopeDispose, toRef } from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n getScrollParent,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport interface VVirtualScrollSlot {\n item: T\n index: number\n}\n\nexport const makeVVirtualScrollProps = propsFactory({\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n renderless: Boolean,\n\n ...makeVirtualProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VVirtualScroll')\n\nexport const VVirtualScroll = genericComponent(\n props: {\n items?: readonly T[]\n renderless?: Renderless\n },\n slots: {\n default: VVirtualScrollSlot & (Renderless extends true ? {\n itemRef: Ref\n } : {})\n }\n) => GenericProps>()({\n name: 'VVirtualScroll',\n\n props: makeVVirtualScrollProps(),\n\n setup (props, { slots }) {\n const vm = getCurrentInstance('VVirtualScroll')\n const { dimensionStyles } = useDimension(props)\n const {\n containerRef,\n markerRef,\n handleScroll,\n handleScrollend,\n handleItemResize,\n scrollToIndex,\n paddingTop,\n paddingBottom,\n computedItems,\n } = useVirtual(props, toRef(props, 'items'))\n\n useToggleScope(() => props.renderless, () => {\n function handleListeners (add = false) {\n const method = add ? 'addEventListener' : 'removeEventListener'\n\n if (containerRef.value === document.documentElement) {\n document[method]('scroll', handleScroll, { passive: true })\n document[method]('scrollend', handleScrollend)\n } else {\n containerRef.value?.[method]('scroll', handleScroll, { passive: true })\n containerRef.value?.[method]('scrollend', handleScrollend)\n }\n }\n\n onMounted(() => {\n containerRef.value = getScrollParent(vm.vnode.el as HTMLElement, true)\n handleListeners(true)\n })\n onScopeDispose(handleListeners)\n })\n\n useRender(() => {\n const children = computedItems.value.map(item => (\n handleItemResize(item.index, height) }\n >\n { slotProps => slots.default?.({ item: item.raw, index: item.index, ...slotProps }) }\n \n ))\n\n return props.renderless ? (\n <>\n
\n { children }\n
\n \n ) : (\n \n \n { children }\n
\n
\n )\n })\n\n return {\n scrollToIndex,\n }\n },\n})\n\nexport type VVirtualScroll = InstanceType\n","// Utilities\nimport { shallowRef, watch } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { VList } from '@/components/VList'\nimport type { VTextField } from '@/components/VTextField'\n\nexport function useScrolling (listRef: Ref, textFieldRef: Ref) {\n const isScrolling = shallowRef(false)\n let scrollTimeout: number\n function onListScroll (e: Event) {\n cancelAnimationFrame(scrollTimeout)\n isScrolling.value = true\n scrollTimeout = requestAnimationFrame(() => {\n scrollTimeout = requestAnimationFrame(() => {\n isScrolling.value = false\n })\n })\n }\n async function finishScrolling () {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => {\n if (isScrolling.value) {\n const stop = watch(isScrolling, () => {\n stop()\n resolve()\n })\n } else resolve()\n })\n }\n async function onListKeydown (e: KeyboardEvent) {\n if (e.key === 'Tab') {\n textFieldRef.value?.focus()\n }\n\n if (!['PageDown', 'PageUp', 'Home', 'End'].includes(e.key)) return\n const el: HTMLElement = listRef.value?.$el\n if (!el) return\n\n if (e.key === 'Home' || e.key === 'End') {\n el.scrollTo({\n top: e.key === 'Home' ? 0 : el.scrollHeight,\n behavior: 'smooth',\n })\n }\n\n await finishScrolling()\n\n const children = el.querySelectorAll(':scope > :not(.v-virtual-scroll__spacer)')\n\n if (e.key === 'PageDown' || e.key === 'Home') {\n const top = el.getBoundingClientRect().top\n for (const child of children) {\n if (child.getBoundingClientRect().top >= top) {\n (child as HTMLElement).focus()\n break\n }\n }\n } else {\n const bottom = el.getBoundingClientRect().bottom\n for (const child of [...children].reverse()) {\n if (child.getBoundingClientRect().bottom <= bottom) {\n (child as HTMLElement).focus()\n break\n }\n }\n }\n }\n\n return { onListScroll, onListKeydown }\n}\n","// Styles\nimport './VSelect.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\nimport { VVirtualScroll } from '@/components/VVirtualScroll'\n\n// Composables\nimport { useScrolling } from './useScrolling'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\nimport { makeItemsProps, useItems } from '@/composables/list-items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTransitionProps } from '@/composables/transition'\n\n// Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue'\nimport {\n ensureValidVNode,\n genericComponent,\n IN_BROWSER,\n matchesSelector,\n omit,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { Component, PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val = [T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value =\n Multiple extends true\n ? readonly Val[]\n : Val | null\n\nexport const makeSelectProps = propsFactory({\n chips: Boolean,\n closableChips: Boolean,\n closeText: {\n type: String,\n default: '$vuetify.close',\n },\n openText: {\n type: String,\n default: '$vuetify.open',\n },\n eager: Boolean,\n hideNoData: Boolean,\n hideSelected: Boolean,\n listProps: {\n type: Object as PropType,\n },\n menu: Boolean,\n menuIcon: {\n type: IconValue,\n default: '$dropdown',\n },\n menuProps: {\n type: Object as PropType,\n },\n multiple: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n openOnClear: Boolean,\n itemColor: String,\n\n ...makeItemsProps({ itemChildren: false }),\n}, 'Select')\n\nexport const makeVSelectProps = propsFactory({\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox',\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: { component: VDialogTransition as Component } }),\n}, 'VSelect')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VSelect = genericComponent,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value = Value\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey>\n itemValue?: SelectItemKey>\n itemProps?: SelectItemKey>\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: Omit & {\n item: { item: ListItem, index: number, props: Record }\n chip: { item: ListItem, index: number, props: Record }\n selection: { item: ListItem, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps>()({\n name: 'VSelect',\n\n props: makeVSelectProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n 'update:menu': (ue: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const vMenuRef = ref()\n const vVirtualScrollRef = ref()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(v === null ? [null] : wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : model.value.length\n })\n const form = useForm()\n const selectedValues = computed(() => model.value.map(selection => selection.value))\n const isFocused = shallowRef(false)\n const label = computed(() => menu.value ? props.closeText : props.openText)\n\n let keyboardLookupPrefix = ''\n let keyboardLookupLastTime: number\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return items.value.filter(item => !model.value.some(s => s === item))\n }\n return items.value\n })\n\n const menuDisabled = computed(() => (\n (props.hideNoData && !displayItems.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const computedMenuProps = computed(() => {\n return {\n ...props.menuProps,\n activatorProps: {\n ...(props.menuProps?.activatorProps || {}),\n 'aria-haspopup': 'listbox', // Set aria-haspopup to 'listbox'\n },\n }\n })\n\n const listRef = ref()\n const { onListScroll, onListKeydown } = useScrolling(listRef, vTextFieldRef)\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onMousedownControl () {\n if (menuDisabled.value) return\n\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (!e.key || props.readonly || form?.isReadonly.value) return\n\n if (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown', ' '].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape', 'Tab'].includes(e.key)) {\n menu.value = false\n }\n\n if (e.key === 'Home') {\n listRef.value?.focus('first')\n } else if (e.key === 'End') {\n listRef.value?.focus('last')\n }\n\n // html select hotkeys\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n\n function checkPrintable (e: KeyboardEvent) {\n const isPrintableChar = e.key.length === 1\n const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey\n return isPrintableChar && noModifier\n }\n\n if (props.multiple || !checkPrintable(e)) return\n\n const now = performance.now()\n if (now - keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n keyboardLookupPrefix = ''\n }\n keyboardLookupPrefix += e.key.toLowerCase()\n keyboardLookupLastTime = now\n\n const item = items.value.find(item => item.title.toLowerCase().startsWith(keyboardLookupPrefix))\n if (item !== undefined) {\n model.value = [item]\n const index = displayItems.value.indexOf(item)\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index)\n })\n }\n }\n\n /** @param set - null means toggle */\n function select (item: ListItem, set: boolean | null = true) {\n if (item.props.disabled) return\n\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value))\n const add = set == null ? !~index : set\n\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value]\n value.splice(index, 1)\n model.value = value\n } else if (add) {\n model.value = [...model.value, item]\n }\n } else {\n const add = set !== false\n model.value = add ? [item] : []\n\n nextTick(() => {\n menu.value = false\n })\n }\n }\n function onBlur (e: FocusEvent) {\n if (!listRef.value?.$el.contains(e.relatedTarget as HTMLElement)) {\n menu.value = false\n }\n }\n function onAfterLeave () {\n if (isFocused.value) {\n vTextFieldRef.value?.focus()\n }\n }\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n function onModelUpdate (v: any) {\n if (v == null) model.value = []\n else if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === v)\n if (item) {\n select(item)\n }\n } else if (vTextFieldRef.value) {\n vTextFieldRef.value.value = ''\n }\n }\n\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(\n item => model.value.some(s => props.valueComparator(s.value, item.value))\n )\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index)\n })\n }\n })\n\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return\n\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!(\n (!props.hideNoData || displayItems.value.length) ||\n slots['prepend-item'] ||\n slots['append-item'] ||\n slots['no-data']\n )\n const isDirty = model.value.length > 0\n const textFieldProps = VTextField.filterProps(props)\n\n const placeholder = isDirty || (\n !isFocused.value &&\n props.label &&\n !props.persistentPlaceholder\n ) ? undefined : props.placeholder\n\n return (\n v.props.value).join(', ') }\n onUpdate:modelValue={ onModelUpdate }\n v-model:focused={ isFocused.value }\n validationValue={ model.externalValue }\n counterValue={ counterValue.value }\n dirty={ isDirty }\n class={[\n 'v-select',\n {\n 'v-select--active-menu': menu.value,\n 'v-select--chips': !!props.chips,\n [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-select--selected': model.value.length,\n 'v-select--selection-slot': !!slots.selection,\n },\n props.class,\n ]}\n style={ props.style }\n inputmode=\"none\"\n placeholder={ placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n aria-label={ t(label.value) }\n title={ t(label.value) }\n >\n {{\n ...slots,\n default: () => (\n <>\n \n { hasList && (\n e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n onScrollPassive={ onListScroll }\n tabindex=\"-1\"\n aria-live=\"polite\"\n color={ props.itemColor ?? props.color }\n { ...props.listProps }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n \n ))}\n\n \n { ({ item, index, itemRef }) => {\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n onClick: () => select(item, null),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n \n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n \n ) : undefined }\n\n { item.props.prependAvatar && (\n \n )}\n\n { item.props.prependIcon && (\n \n )}\n \n ),\n }}\n \n )\n }}\n \n\n { slots['append-item']?.() }\n \n )}\n \n\n { model.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item, false)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n onChipClose(e)\n },\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n const hasSlot = hasChips ? !!slots.chip : !!slots.selection\n const slotContent = hasSlot\n ? ensureValidVNode(\n hasChips\n ? slots.chip!({ item, index, props: slotProps })\n : slots.selection!({ item, index })\n )\n : undefined\n\n if (hasSlot && !slotContent) return undefined\n\n return (\n
\n { hasChips ? (\n !slots.chip ? (\n \n ) : (\n \n { slotContent }\n \n )\n ) : (\n slotContent ?? (\n \n { item.title }\n { props.multiple && (index < model.value.length - 1) && (\n ,\n )}\n \n )\n )}\n
\n )\n })}\n \n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { props.menuIcon ? (\n \n ) : undefined }\n \n ),\n }}\n
\n )\n })\n\n return forwardRefs({\n isFocused,\n menu,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VSelect = InstanceType\n","/* eslint-disable max-statements */\n/* eslint-disable no-labels */\n\n// Utilities\nimport { computed, ref, unref, watchEffect } from 'vue'\nimport { getPropertyFromItem, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\n/**\n * - match without highlight\n * - single match (index), length already known\n * - single match (start, end)\n * - multiple matches (start, end), probably shouldn't overlap\n */\nexport type FilterMatch = boolean | number | [number, number] | [number, number][]\nexport type FilterFunction = (value: string, query: string, item?: InternalItem) => FilterMatch\nexport type FilterKeyFunctions = Record\nexport type FilterKeys = string | string[]\nexport type FilterMode = 'some' | 'every' | 'union' | 'intersection'\n\nexport interface FilterProps {\n customFilter?: FilterFunction\n customKeyFilter?: FilterKeyFunctions\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n}\n\nexport interface InternalItem {\n value: any\n raw: T\n}\n\n// Composables\nexport const defaultFilter: FilterFunction = (value, query, item) => {\n if (value == null || query == null) return -1\n\n return value.toString().toLocaleLowerCase().indexOf(query.toString().toLocaleLowerCase())\n}\n\nexport const makeFilterProps = propsFactory({\n customFilter: Function as PropType,\n customKeyFilter: Object as PropType,\n filterKeys: [Array, String] as PropType,\n filterMode: {\n type: String as PropType,\n default: 'intersection',\n },\n noFilter: Boolean,\n}, 'filter')\n\nexport function filterItems (\n items: readonly (readonly [item: InternalItem, transformed: {}])[] | readonly InternalItem[],\n query: string,\n options?: {\n customKeyFilter?: FilterKeyFunctions\n default?: FilterFunction\n filterKeys?: FilterKeys\n filterMode?: FilterMode\n noFilter?: boolean\n },\n) {\n const array: { index: number, matches: Record }[] = []\n // always ensure we fall back to a functioning filter\n const filter = options?.default ?? defaultFilter\n const keys = options?.filterKeys ? wrapInArray(options.filterKeys) : false\n const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length\n\n if (!items?.length) return array\n\n loop:\n for (let i = 0; i < items.length; i++) {\n const [item, transformed = item] = wrapInArray(items[i]) as readonly [InternalItem, {}]\n const customMatches: Record = {}\n const defaultMatches: Record = {}\n let match: FilterMatch = -1\n\n if (query && !options?.noFilter) {\n if (typeof item === 'object') {\n const filterKeys = keys || Object.keys(transformed)\n\n for (const key of filterKeys) {\n const value = getPropertyFromItem(transformed, key)\n const keyFilter = options?.customKeyFilter?.[key]\n\n match = keyFilter\n ? keyFilter(value, query, item)\n : filter(value, query, item)\n\n if (match !== -1 && match !== false) {\n if (keyFilter) customMatches[key] = match\n else defaultMatches[key] = match\n } else if (options?.filterMode === 'every') {\n continue loop\n }\n }\n } else {\n match = filter(item, query, item)\n if (match !== -1 && match !== false) {\n defaultMatches.title = match\n }\n }\n\n const defaultMatchesLength = Object.keys(defaultMatches).length\n const customMatchesLength = Object.keys(customMatches).length\n\n if (!defaultMatchesLength && !customMatchesLength) continue\n\n if (\n options?.filterMode === 'union' &&\n customMatchesLength !== customFiltersLength &&\n !defaultMatchesLength\n ) continue\n\n if (\n options?.filterMode === 'intersection' &&\n (\n customMatchesLength !== customFiltersLength ||\n !defaultMatchesLength\n )\n ) continue\n }\n\n array.push({ index: i, matches: { ...defaultMatches, ...customMatches } })\n }\n\n return array\n}\n\nexport function useFilter (\n props: FilterProps,\n items: MaybeRef,\n query: Ref | (() => string | undefined),\n options?: {\n transform?: (item: T) => {}\n customKeyFilter?: MaybeRef\n }\n) {\n const filteredItems: Ref = ref([])\n const filteredMatches: Ref>> = ref(new Map())\n const transformedItems = computed(() => (\n options?.transform\n ? unref(items).map(item => ([item, options.transform!(item)] as const))\n : unref(items)\n ))\n\n watchEffect(() => {\n const _query = typeof query === 'function' ? query() : unref(query)\n const strQuery = (\n typeof _query !== 'string' &&\n typeof _query !== 'number'\n ) ? '' : String(_query)\n\n const results = filterItems(\n transformedItems.value,\n strQuery,\n {\n customKeyFilter: {\n ...props.customKeyFilter,\n ...unref(options?.customKeyFilter),\n },\n default: props.customFilter,\n filterKeys: props.filterKeys,\n filterMode: props.filterMode,\n noFilter: props.noFilter,\n },\n )\n\n const originalItems = unref(items)\n\n const _filteredItems: typeof filteredItems['value'] = []\n const _filteredMatches: typeof filteredMatches['value'] = new Map()\n results.forEach(({ index, matches }) => {\n const item = originalItems[index]\n _filteredItems.push(item)\n _filteredMatches.set(item.value, matches)\n })\n filteredItems.value = _filteredItems\n filteredMatches.value = _filteredMatches\n })\n\n function getMatches (item: T) {\n return filteredMatches.value.get(item.value)\n }\n\n return { filteredItems, filteredMatches, getMatches }\n}\n","// Styles\nimport './VAutocomplete.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\nimport { VVirtualScroll } from '@/components/VVirtualScroll'\n\n// Composables\nimport { useScrolling } from '../VSelect/useScrolling'\nimport { useTextColor } from '@/composables/color'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useItems } from '@/composables/list-items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTransitionProps } from '@/composables/transition'\n\n// Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue'\nimport {\n ensureValidVNode,\n genericComponent,\n IN_BROWSER,\n matchesSelector,\n noop,\n omit,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n { text.substr(0, matches) }\n { text.substr(matches, length) }\n { text.substr(matches + length) }\n \n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val = [T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value =\n Multiple extends true\n ? readonly Val[]\n : Val | null\n\nexport const makeVAutocompleteProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String] as PropType,\n },\n clearOnSelect: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox',\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n}, 'VAutocomplete')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VAutocomplete = genericComponent,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value = Value\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey>\n itemValue?: SelectItemKey>\n itemProps?: SelectItemKey>\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: Omit & {\n item: { item: ListItem, index: number, props: Record }\n chip: { item: ListItem, index: number, props: Record }\n selection: { item: ListItem, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps>()({\n name: 'VAutocomplete',\n\n props: makeVAutocompleteProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:search': (value: any) => true,\n 'update:modelValue': (value: any) => true,\n 'update:menu': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = shallowRef(false)\n const isPristine = shallowRef(true)\n const listHasFocus = shallowRef(false)\n const vMenuRef = ref()\n const vVirtualScrollRef = ref()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const selectionIndex = shallowRef(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const label = computed(() => menu.value ? props.closeText : props.openText)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const search = useProxiedModel(props, 'search', '')\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(v === null ? [null] : wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : model.value.length\n })\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, () => isPristine.value ? '' : search.value)\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const hasChips = computed(() => !!(props.chips || slots.chip))\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection)\n\n const selectedValues = computed(() => model.value.map(selection => selection.props.value))\n\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true ||\n (props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title)\n return selectFirst &&\n displayItems.value.length > 0 &&\n !isPristine.value &&\n !listHasFocus.value\n })\n\n const menuDisabled = computed(() => (\n (props.hideNoData && !displayItems.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const listRef = ref()\n const { onListScroll, onListKeydown } = useScrolling(listRef, vTextFieldRef)\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n\n search.value = ''\n }\n function onMousedownControl () {\n if (menuDisabled.value) return\n\n menu.value = true\n }\n function onMousedownMenuIcon (e: MouseEvent) {\n if (menuDisabled.value) return\n\n if (isFocused.value) {\n e.preventDefault()\n e.stopPropagation()\n }\n menu.value = !menu.value\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = model.value.length\n\n if (\n selectionIndex.value > -1 ||\n ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {\n select(displayItems.value[0])\n }\n\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next')\n }\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (\n !props.multiple &&\n hasSelectionSlot.value &&\n model.value.length > 0 &&\n !search.value\n ) return select(model.value[0], false)\n\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value\n select(model.value[selectionIndex.value], false)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n }\n\n if (!props.multiple) return\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (model.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value?.length, search.value?.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (model.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n }\n\n function onChange (e: Event) {\n if (matchesSelector(vTextFieldRef.value, ':autofill') || matchesSelector(vTextFieldRef.value, ':-webkit-autofill')) {\n const item = items.value.find(item => item.title === (e.target as HTMLInputElement).value)\n if (item) {\n select(item)\n }\n }\n }\n\n function onAfterLeave () {\n if (isFocused.value) {\n isPristine.value = true\n vTextFieldRef.value?.focus()\n }\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n setTimeout(() => {\n listHasFocus.value = true\n })\n }\n function onFocusout (e: FocusEvent) {\n listHasFocus.value = false\n }\n function onUpdateModelValue (v: any) {\n if (v == null || (v === '' && !props.multiple && !hasSelectionSlot.value)) model.value = []\n }\n\n const isSelecting = shallowRef(false)\n\n /** @param set - null means toggle */\n function select (item: ListItem | undefined, set: boolean | null = true) {\n if (!item || item.props.disabled) return\n\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value))\n const add = set == null ? !~index : set\n\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value]\n value.splice(index, 1)\n model.value = value\n } else if (add) {\n model.value = [...model.value, item]\n }\n\n if (props.clearOnSelect) {\n search.value = ''\n }\n } else {\n const add = set !== false\n model.value = add ? [item] : []\n search.value = add && !hasSelectionSlot.value ? item.title : ''\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n watch(isFocused, (val, oldVal) => {\n if (val === oldVal) return\n\n if (val) {\n isSelecting.value = true\n search.value = (props.multiple || hasSelectionSlot.value) ? '' : String(model.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n if (!props.multiple && search.value == null) model.value = []\n else if (\n highlightFirst.value &&\n !listHasFocus.value &&\n !model.value.some(({ value }) => value === displayItems.value[0].value)\n ) {\n select(displayItems.value[0])\n }\n menu.value = false\n if (props.multiple || hasSelectionSlot.value) search.value = ''\n selectionIndex.value = -1\n }\n })\n\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return\n\n if (val) menu.value = true\n\n isPristine.value = !val\n })\n\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(\n item => model.value.some(s => item.value === s.value)\n )\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index)\n })\n }\n })\n\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return\n\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true\n }\n })\n\n useRender(() => {\n const hasList = !!(\n (!props.hideNoData || displayItems.value.length) ||\n slots['prepend-item'] ||\n slots['append-item'] ||\n slots['no-data']\n )\n const isDirty = model.value.length > 0\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n -1,\n },\n props.class,\n ]}\n style={ props.style }\n readonly={ props.readonly }\n placeholder={ isDirty ? undefined : props.placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n \n { hasList && (\n e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onScrollPassive={ onListScroll }\n tabindex=\"-1\"\n aria-live=\"polite\"\n color={ props.itemColor ?? props.color }\n { ...props.listProps }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n \n ))}\n\n \n { ({ item, index, itemRef }) => {\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: (highlightFirst.value && index === 0) ? true : undefined,\n onClick: () => select(item, null),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n \n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n \n ) : undefined }\n\n { item.props.prependAvatar && (\n \n )}\n\n { item.props.prependIcon && (\n \n )}\n \n ),\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n \n )\n }}\n \n\n { slots['append-item']?.() }\n \n )}\n \n\n { model.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item, false)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n onChipClose(e)\n },\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection\n const slotContent = hasSlot\n ? ensureValidVNode(\n hasChips.value\n ? slots.chip!({ item, index, props: slotProps })\n : slots.selection!({ item, index })\n )\n : undefined\n\n if (hasSlot && !slotContent) return undefined\n\n return (\n \n { hasChips.value ? (\n !slots.chip ? (\n \n ) : (\n \n { slotContent }\n \n )\n ) : (\n slotContent ?? (\n \n { item.title }\n { props.multiple && (index < model.value.length - 1) && (\n ,\n )}\n \n )\n )}\n \n )\n })}\n \n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { props.menuIcon ? (\n \n ) : undefined }\n \n ),\n }}\n \n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VAutocomplete = InstanceType\n","// Styles\nimport './VBadge.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, pickWithRest, propsFactory, useRender } from '@/util'\n\nexport type VBadgeSlots = {\n default: never\n badge: never\n}\n\nexport const makeVBadgeProps = propsFactory({\n bordered: Boolean,\n color: String,\n content: [Number, String],\n dot: Boolean,\n floating: Boolean,\n icon: IconValue,\n inline: Boolean,\n label: {\n type: String,\n default: '$vuetify.badge',\n },\n max: [Number, String],\n modelValue: {\n type: Boolean,\n default: true,\n },\n offsetX: [Number, String],\n offsetY: [Number, String],\n textColor: String,\n\n ...makeComponentProps(),\n ...makeLocationProps({ location: 'top end' } as const),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeTransitionProps({ transition: 'scale-rotate-transition' }),\n}, 'VBadge')\n\nexport const VBadge = genericComponent()({\n name: 'VBadge',\n\n inheritAttrs: false,\n\n props: makeVBadgeProps(),\n\n setup (props, ctx) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { roundedClasses } = useRounded(props)\n const { t } = useLocale()\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'textColor'))\n const { themeClasses } = useTheme()\n\n const { locationStyles } = useLocation(props, true, side => {\n const base = props.floating\n ? (props.dot ? 2 : 4)\n : (props.dot ? 8 : 12)\n\n return base + (\n ['top', 'bottom'].includes(side) ? +(props.offsetY ?? 0)\n : ['left', 'right'].includes(side) ? +(props.offsetX ?? 0)\n : 0\n )\n })\n\n useRender(() => {\n const value = Number(props.content)\n const content = (!props.max || isNaN(value)) ? props.content\n : value <= +props.max ? value\n : `${props.max}+`\n\n const [badgeAttrs, attrs] = pickWithRest(ctx.attrs as Record, [\n 'aria-atomic',\n 'aria-label',\n 'aria-live',\n 'role',\n 'title',\n ])\n\n return (\n \n
\n { ctx.slots.default?.() }\n\n \n \n {\n props.dot ? undefined\n : ctx.slots.badge ? ctx.slots.badge?.()\n : props.icon ? \n : content\n }\n \n \n
\n \n )\n })\n\n return {}\n },\n})\n\nexport type VBadge = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBannerActionsProps = propsFactory({\n color: String,\n density: String,\n\n ...makeComponentProps(),\n}, 'VBannerActions')\n\nexport const VBannerActions = genericComponent()({\n name: 'VBannerActions',\n\n props: makeVBannerActionsProps(),\n\n setup (props, { slots }) {\n provideDefaults({\n VBtn: {\n color: props.color,\n density: props.density,\n slim: true,\n variant: 'text',\n },\n })\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VBannerActions = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VBannerText = createSimpleFunctional('v-banner-text')\n\nexport type VBannerText = InstanceType\n","// Styles\nimport './VBanner.sass'\n\n// Components\nimport { VBannerActions } from './VBannerActions'\nimport { VBannerText } from './VBannerText'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VBannerSlots = {\n default: never\n prepend: never\n text: never\n actions: never\n}\n\nexport const makeVBannerProps = propsFactory({\n avatar: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n lines: String as PropType<'one' | 'two' | 'three'>,\n stacked: Boolean,\n sticky: Boolean,\n text: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeDisplayProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VBanner')\n\nexport const VBanner = genericComponent()({\n name: 'VBanner',\n\n props: makeVBannerProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { displayClasses, mobile } = useDisplay(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n\n const { themeClasses } = provideTheme(props)\n\n const color = toRef(props, 'color')\n const density = toRef(props, 'density')\n\n provideDefaults({ VBannerActions: { color, density } })\n\n useRender(() => {\n const hasText = !!(props.text || slots.text)\n const hasPrependMedia = !!(props.avatar || props.icon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n return (\n \n { hasPrepend && (\n
\n { !slots.prepend ? (\n \n ) : (\n \n )}\n
\n )}\n\n
\n { hasText && (\n \n { slots.text?.() ?? props.text }\n \n )}\n\n { slots.default?.() }\n
\n\n { slots.actions && (\n \n )}\n \n )\n })\n },\n})\n\nexport type VBanner = InstanceType\n","// Styles\nimport './VBottomNavigation.sass'\n\n// Components\nimport { VBtnToggleSymbol } from '@/components/VBtnToggle/VBtnToggle'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { GenericProps } from '@/util'\n\nexport const makeVBottomNavigationProps = propsFactory({\n baseColor: String,\n bgColor: String,\n color: String,\n grow: Boolean,\n mode: {\n type: String,\n validator: (v: any) => !v || ['horizontal', 'shift'].includes(v),\n },\n height: {\n type: [Number, String],\n default: 56,\n },\n active: {\n type: Boolean,\n default: true,\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeLayoutItemProps({ name: 'bottom-navigation' }),\n ...makeTagProps({ tag: 'header' }),\n ...makeGroupProps({ selectedClass: 'v-btn--selected' }),\n ...makeThemeProps(),\n}, 'VBottomNavigation')\n\nexport const VBottomNavigation = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: { default: never },\n) => GenericProps>()({\n name: 'VBottomNavigation',\n\n props: makeVBottomNavigationProps(),\n\n emits: {\n 'update:active': (value: any) => true,\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = useTheme()\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { densityClasses } = useDensity(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { ssrBootStyles } = useSsrBoot()\n const height = computed(() => (\n Number(props.height) -\n (props.density === 'comfortable' ? 8 : 0) -\n (props.density === 'compact' ? 16 : 0)\n ))\n const isActive = useProxiedModel(props, 'active', props.active)\n const { layoutItemStyles, layoutIsReady } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: computed(() => 'bottom'),\n layoutSize: computed(() => isActive.value ? height.value : 0),\n elementSize: height,\n active: isActive,\n absolute: toRef(props, 'absolute'),\n })\n\n useGroup(props, VBtnToggleSymbol)\n\n provideDefaults({\n VBtn: {\n baseColor: toRef(props, 'baseColor'),\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n stacked: computed(() => props.mode !== 'horizontal'),\n variant: 'text',\n },\n }, { scoped: true })\n\n useRender(() => {\n return (\n \n { slots.default && (\n
\n { slots.default() }\n
\n )}\n \n )\n })\n\n return layoutIsReady\n },\n})\n\nexport type VBottomNavigation = InstanceType\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { mergeProps, nextTick, ref, watch } from 'vue'\nimport { focusableChildren, genericComponent, IN_BROWSER, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVDialogProps = propsFactory({\n fullscreen: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n\n ...makeVOverlayProps({\n origin: 'center center' as const,\n scrollStrategy: 'block' as const,\n transition: { component: VDialogTransition as Component },\n zIndex: 2400,\n }),\n}, 'VDialog')\n\nexport const VDialog = genericComponent()({\n name: 'VDialog',\n\n props: makeVDialogProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const overlay = ref()\n function onFocusin (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n if (\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.globalTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (before === firstElement) {\n lastElement.focus()\n } else {\n firstElement.focus()\n }\n }\n }\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val\n ? document.addEventListener('focusin', onFocusin)\n : document.removeEventListener('focusin', onFocusin)\n }, { immediate: true })\n }\n\n function onAfterEnter () {\n if (overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {\n overlay.value.contentEl.focus({ preventScroll: true })\n }\n }\n\n function onAfterLeave () {\n emit('afterLeave')\n }\n\n watch(isActive, async val => {\n if (!val) {\n await nextTick()\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const activatorProps = mergeProps({\n 'aria-haspopup': 'dialog',\n 'aria-expanded': String(isActive.value),\n }, props.activatorProps)\n const contentProps = mergeProps({\n tabindex: -1,\n }, props.contentProps)\n\n return (\n \n {{\n activator: slots.activator,\n default: (...args) => (\n \n { slots.default?.(...args) }\n \n ),\n }}\n \n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VDialog = InstanceType\n","// Styles\nimport './VBottomSheet.sass'\n\n// Components\nimport { makeVDialogProps, VDialog } from '@/components/VDialog/VDialog'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVBottomSheetProps = propsFactory({\n inset: Boolean,\n\n ...makeVDialogProps({\n transition: 'bottom-sheet-transition',\n }),\n}, 'VBottomSheet')\n\nexport const VBottomSheet = genericComponent()({\n name: 'VBottomSheet',\n\n props: makeVBottomSheetProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n\n useRender(() => {\n const dialogProps = VDialog.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VBottomSheet = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBreadcrumbsDividerProps = propsFactory({\n divider: [Number, String],\n\n ...makeComponentProps(),\n}, 'VBreadcrumbsDivider')\n\nexport const VBreadcrumbsDivider = genericComponent()({\n name: 'VBreadcrumbsDivider',\n\n props: makeVBreadcrumbsDividerProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n { slots?.default?.() ?? props.divider }\n \n ))\n\n return {}\n },\n})\n\nexport type VBreadcrumbsDivider = InstanceType\n","// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVBreadcrumbsItemProps = propsFactory({\n active: Boolean,\n activeClass: String,\n activeColor: String,\n color: String,\n disabled: Boolean,\n title: String,\n\n ...makeComponentProps(),\n ...makeRouterProps(),\n ...makeTagProps({ tag: 'li' }),\n}, 'VBreadcrumbsItem')\n\nexport const VBreadcrumbsItem = genericComponent()({\n name: 'VBreadcrumbsItem',\n\n props: makeVBreadcrumbsItemProps(),\n\n setup (props, { slots, attrs }) {\n const link = useLink(props, attrs)\n const isActive = computed(() => props.active || link.isActive?.value)\n const color = computed(() => isActive.value ? props.activeColor : props.color)\n\n const { textColorClasses, textColorStyles } = useTextColor(color)\n\n useRender(() => {\n return (\n \n { !link.isLink.value ? slots.default?.() ?? props.title : (\n \n { slots.default?.() ?? props.title }\n \n )}\n \n )\n })\n return {}\n },\n})\n\nexport type VBreadcrumbsItem = InstanceType\n","// Styles\nimport './VBreadcrumbs.sass'\n\n// Components\nimport { VBreadcrumbsDivider } from './VBreadcrumbsDivider'\nimport { VBreadcrumbsItem } from './VBreadcrumbsItem'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { LinkProps } from '@/composables/router'\nimport type { GenericProps } from '@/util'\n\nexport type InternalBreadcrumbItem = Partial & {\n title: string\n disabled?: boolean\n}\n\nexport type BreadcrumbItem = string | InternalBreadcrumbItem\n\nexport const makeVBreadcrumbsProps = propsFactory({\n activeClass: String,\n activeColor: String,\n bgColor: String,\n color: String,\n disabled: Boolean,\n divider: {\n type: String,\n default: '/',\n },\n icon: IconValue,\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'ul' }),\n}, 'VBreadcrumbs')\n\nexport const VBreadcrumbs = genericComponent(\n props: {\n items?: T[]\n },\n slots: {\n prepend: never\n title: { item: InternalBreadcrumbItem, index: number }\n divider: { item: T, index: number }\n item: { item: InternalBreadcrumbItem, index: number }\n default: never\n }\n) => GenericProps>()({\n name: 'VBreadcrumbs',\n\n props: makeVBreadcrumbsProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { densityClasses } = useDensity(props)\n const { roundedClasses } = useRounded(props)\n\n provideDefaults({\n VBreadcrumbsDivider: {\n divider: toRef(props, 'divider'),\n },\n VBreadcrumbsItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor: toRef(props, 'activeColor'),\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n },\n })\n\n const items = computed(() => props.items.map(item => {\n return typeof item === 'string' ? { item: { title: item }, raw: item } : { item, raw: item }\n }))\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.icon)\n\n return (\n \n { hasPrepend && (\n
  • \n { !slots.prepend ? (\n \n ) : (\n \n )}\n
  • \n )}\n\n { items.value.map(({ item, raw }, index, array) => (\n <>\n { slots.item?.({ item, index }) ?? (\n = array.length - 1 }\n { ...(typeof item === 'string' ? { title: item } : item) }\n v-slots={{\n default: slots.title ? () => slots.title?.({ item, index }) : undefined,\n }}\n />\n )}\n\n { index < array.length - 1 && (\n slots.divider?.({ item: raw, index }) : undefined,\n }}\n />\n )}\n \n ))}\n\n { slots.default?.() }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VBreadcrumbs = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\nexport const VCardActions = genericComponent()({\n name: 'VCardActions',\n\n props: makeComponentProps(),\n\n setup (props, { slots }) {\n provideDefaults({\n VBtn: {\n slim: true,\n variant: 'text',\n },\n })\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VCardActions = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVCardSubtitleProps = propsFactory({\n opacity: [Number, String],\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VCardSubtitle')\n\nexport const VCardSubtitle = genericComponent()({\n name: 'VCardSubtitle',\n\n props: makeVCardSubtitleProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VCardSubtitle = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VCardTitle = createSimpleFunctional('v-card-title')\n\nexport type VCardTitle = InstanceType\n","// Components\nimport { VCardSubtitle } from './VCardSubtitle'\nimport { VCardTitle } from './VCardTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VCardItemSlots = {\n default: never\n prepend: never\n append: never\n title: never\n subtitle: never\n}\n\nexport const makeCardItemProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n prependAvatar: String,\n prependIcon: IconValue,\n subtitle: [String, Number],\n title: [String, Number],\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n}, 'VCardItem')\n\nexport const VCardItem = genericComponent()({\n name: 'VCardItem',\n\n props: makeCardItemProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasTitle = !!(props.title != null || slots.title)\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle)\n\n return (\n \n { hasPrepend && (\n
    \n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n \n )}\n\n { props.prependIcon && (\n \n )}\n \n ) : (\n \n )}\n
    \n )}\n\n
    \n { hasTitle && (\n \n { slots.title?.() ?? props.title }\n \n )}\n\n { hasSubtitle && (\n \n { slots.subtitle?.() ?? props.subtitle }\n \n )}\n\n { slots.default?.() }\n
    \n\n { hasAppend && (\n
    \n { !slots.append ? (\n <>\n { props.appendIcon && (\n \n )}\n\n { props.appendAvatar && (\n \n )}\n \n ) : (\n \n )}\n
    \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCardItem = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVCardTextProps = propsFactory({\n opacity: [Number, String],\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VCardText')\n\nexport const VCardText = genericComponent()({\n name: 'VCardText',\n\n props: makeVCardTextProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VCardText = InstanceType\n","/* eslint-disable complexity */\n\n// Styles\nimport './VCard.sass'\n\n// Components\nimport { VCardActions } from './VCardActions'\nimport { VCardItem } from './VCardItem'\nimport { VCardText } from './VCardText'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCardItemSlots } from './VCardItem'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport const makeVCardProps = propsFactory({\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n image: String,\n link: {\n type: Boolean,\n default: undefined,\n },\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType,\n default: true,\n },\n subtitle: [String, Number],\n text: [String, Number],\n title: [String, Number],\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'elevated' } as const),\n}, 'VCard')\n\nexport type VCardSlots = VCardItemSlots & {\n default: never\n actions: never\n text: never\n loader: LoaderSlotProps\n image: never\n item: never\n}\n\nexport const VCard = genericComponent()({\n name: 'VCard',\n\n directives: { Ripple },\n\n props: makeVCardProps(),\n\n setup (props, { attrs, slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { loaderClasses } = useLoader(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const link = useLink(props, attrs)\n\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value)\n )\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = !!(slots.title || props.title != null)\n const hasSubtitle = !!(slots.subtitle || props.subtitle != null)\n const hasHeader = hasTitle || hasSubtitle\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon)\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon)\n const hasImage = !!(slots.image || props.image)\n const hasCardItem = hasHeader || hasPrepend || hasAppend\n const hasText = !!(slots.text || props.text != null)\n\n return (\n \n { hasImage && (\n
    \n { !slots.image ? (\n \n ) : (\n \n )}\n
    \n )}\n\n \n\n { hasCardItem && (\n \n {{\n default: slots.item,\n prepend: slots.prepend,\n title: slots.title,\n subtitle: slots.subtitle,\n append: slots.append,\n }}\n \n )}\n\n { hasText && (\n \n { slots.text?.() ?? props.text }\n \n )}\n\n { slots.default?.() }\n\n { slots.actions && (\n \n )}\n\n { genOverlays(isClickable.value, 'v-card') }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCard = InstanceType\n","// Utilities\nimport { keys } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\nexport interface TouchHandlers {\n start?: (wrapperEvent: { originalEvent: TouchEvent } & TouchData) => void\n end?: (wrapperEvent: { originalEvent: TouchEvent } & TouchData) => void\n move?: (wrapperEvent: { originalEvent: TouchEvent } & TouchData) => void\n left?: (wrapper: TouchData) => void\n right?: (wrapper: TouchData) => void\n up?: (wrapper: TouchData) => void\n down?: (wrapper: TouchData) => void\n}\n\nexport interface TouchData {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n touchendX: number\n touchendY: number\n offsetX: number\n offsetY: number\n}\n\nexport type TouchWrapper = TouchHandlers & TouchData\n\nexport interface TouchValue extends TouchHandlers {\n parent?: boolean\n options?: AddEventListenerOptions\n}\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\nexport interface TouchDirectiveBinding extends Omit {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start?.({ originalEvent: event, ...wrapper })\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end?.({ originalEvent: event, ...wrapper })\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move?.({ originalEvent: event, ...wrapper })\n}\n\nfunction createHandlers (value: TouchHandlers = {}): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction mounted (el: HTMLElement, binding: TouchDirectiveBinding) {\n const value = binding.value\n const target = value?.parent ? el.parentElement : el\n const options = value?.options ?? { passive: true }\n const uid = binding.instance?.$.uid // TODO: use custom uid generator\n\n if (!target || !uid) return\n\n const handlers = createHandlers(binding.value)\n\n target._touchHandlers = target._touchHandlers ?? Object.create(null)\n target._touchHandlers![uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options)\n })\n}\n\nfunction unmounted (el: HTMLElement, binding: TouchDirectiveBinding) {\n const target = binding.value?.parent ? el.parentElement : el\n const uid = binding.instance?.$.uid\n\n if (!target?._touchHandlers || !uid) return\n\n const handlers = target._touchHandlers[uid]\n\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n\n delete target._touchHandlers[uid]\n}\n\nexport const Touch = {\n mounted,\n unmounted,\n}\n\nexport default Touch\n","// Styles\nimport './VWindow.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useGroup } from '@/composables/group'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Directives\nimport { Touch } from '@/directives/touch'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { GroupItemProvide, GroupProvide } from '@/composables/group'\nimport type { IconValue } from '@/composables/icons'\nimport type { TouchHandlers } from '@/directives/touch'\nimport type { GenericProps } from '@/util'\n\nexport type VWindowSlots = {\n default: { group: GroupProvide }\n additional: { group: GroupProvide }\n prev: { props: ControlProps }\n next: { props: ControlProps }\n}\n\ntype WindowProvide = {\n transition: ComputedRef\n transitionCount: Ref\n transitionHeight: Ref\n isReversed: Ref\n rootRef: Ref\n}\n\ntype ControlProps = {\n icon: IconValue\n class: string\n onClick: () => void\n 'aria-label': string\n}\n\nexport const VWindowSymbol: InjectionKey = Symbol.for('vuetify:v-window')\nexport const VWindowGroupSymbol: InjectionKey = Symbol.for('vuetify:v-window-group')\n\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object] as PropType,\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String, Function, Object] as PropType,\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => typeof v === 'boolean' || v === 'hover',\n },\n touch: {\n type: [Object, Boolean] as PropType,\n default: undefined,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active',\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String] as PropType,\n default: 'force' as const,\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VWindow')\n\nexport const VWindow = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VWindowSlots,\n) => GenericProps>()({\n name: 'VWindow',\n\n directives: {\n Touch,\n },\n\n props: makeVWindowProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isRtl } = useRtl()\n const { t } = useLocale()\n\n const group = useGroup(props, VWindowGroupSymbol)\n\n const rootRef = ref()\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse)\n const isReversed = shallowRef(false)\n const transition = computed(() => {\n const axis = props.direction === 'vertical' ? 'y' : 'x'\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n })\n const transitionCount = shallowRef(0)\n const transitionHeight = ref(undefined)\n\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id))\n })\n\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false\n } else {\n isReversed.value = newVal < oldVal\n }\n })\n\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef,\n })\n\n const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0)\n const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1)\n\n function prev () {\n canMoveBack.value && group.prev()\n }\n\n function next () {\n canMoveForward.value && group.next()\n }\n\n const arrows = computed(() => {\n const arrows = []\n\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev'),\n }\n\n arrows.push(canMoveBack.value\n ? slots.prev\n ? slots.prev({ props: prevProps })\n : \n :
    \n )\n\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next'),\n }\n\n arrows.push(canMoveForward.value\n ? slots.next\n ? slots.next({ props: nextProps })\n : \n :
    \n )\n\n return arrows\n })\n\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch\n\n const options: TouchHandlers = {\n left: () => {\n isRtlReverse.value ? prev() : next()\n },\n right: () => {\n isRtlReverse.value ? next() : prev()\n },\n start: ({ originalEvent }) => {\n originalEvent.stopPropagation()\n },\n }\n\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch),\n }\n })\n\n useRender(() => (\n \n \n { slots.default?.({ group }) }\n\n { props.showArrows !== false && (\n
    \n { arrows.value }\n
    \n )}\n
    \n\n { slots.additional?.({ group }) }\n \n ))\n\n return {\n group,\n }\n },\n})\n\nexport type VWindow = InstanceType\n","// Styles\nimport './VCarousel.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VProgressLinear } from '@/components/VProgressLinear'\nimport { makeVWindowProps, VWindow } from '@/components/VWindow/VWindow'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { onMounted, ref, watch } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VWindowSlots } from '@/components/VWindow/VWindow'\nimport type { GroupProvide } from '@/composables/group'\nimport type { GenericProps } from '@/util'\n\nexport const makeVCarouselProps = propsFactory({\n color: String,\n cycle: Boolean,\n delimiterIcon: {\n type: IconValue,\n default: '$delimiter',\n },\n height: {\n type: [Number, String],\n default: 500,\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: (value: string | number) => Number(value) > 0,\n },\n progress: [Boolean, String],\n verticalDelimiters: [Boolean, String] as PropType,\n\n ...makeVWindowProps({\n continuous: true,\n mandatory: 'force' as const,\n showArrows: true,\n }),\n}, 'VCarousel')\n\ntype VCarouselSlots = VWindowSlots & {\n item: {\n props: Record\n item: {\n id: number\n value: unknown\n disabled: boolean | undefined\n }\n }\n}\n\nexport const VCarousel = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VCarouselSlots,\n) => GenericProps>()({\n name: 'VCarousel',\n\n props: makeVCarouselProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { t } = useLocale()\n const windowRef = ref()\n\n let slideTimeout = -1\n watch(model, restartTimeout)\n watch(() => props.interval, restartTimeout)\n watch(() => props.cycle, val => {\n if (val) restartTimeout()\n else window.clearTimeout(slideTimeout)\n })\n\n onMounted(startTimeout)\n\n function startTimeout () {\n if (!props.cycle || !windowRef.value) return\n\n slideTimeout = window.setTimeout(windowRef.value.group.next, +props.interval > 0 ? +props.interval : 6000)\n }\n\n function restartTimeout () {\n window.clearTimeout(slideTimeout)\n window.requestAnimationFrame(startTimeout)\n }\n\n useRender(() => {\n const windowProps = VWindow.filterProps(props)\n\n return (\n \n {{\n default: slots.default,\n additional: ({ group }: { group: GroupProvide }) => (\n <>\n { !props.hideDelimiters && (\n \n { group.items.value.length > 0 && (\n \n { group.items.value.map((item, index) => {\n const props = {\n id: `carousel-item-${item.id}`,\n 'aria-label': t('$vuetify.carousel.ariaLabel.delimiter', index + 1, group.items.value.length),\n class: [\n 'v-carousel__controls__item',\n group.isSelected(item.id) && 'v-btn--active',\n ],\n onClick: () => group.select(item.id, true),\n }\n\n return slots.item\n ? slots.item({ props, item })\n : ()\n })}\n \n )}\n
    \n )}\n\n { props.progress && (\n \n )}\n \n ),\n prev: slots.prev,\n next: slots.next,\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VCarousel = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport Touch from '@/directives/touch'\n\n// Utilities\nimport { computed, inject, nextTick, shallowRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VWindowGroupSymbol, VWindowSymbol } from './VWindow'\n\nexport const makeVWindowItemProps = propsFactory({\n reverseTransition: {\n type: [Boolean, String],\n default: undefined,\n },\n transition: {\n type: [Boolean, String],\n default: undefined,\n },\n\n ...makeComponentProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps(),\n}, 'VWindowItem')\n\nexport const VWindowItem = genericComponent()({\n name: 'VWindowItem',\n\n directives: {\n Touch,\n },\n\n props: makeVWindowItemProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const window = inject(VWindowSymbol)\n const groupItem = useGroupItem(props, VWindowGroupSymbol)\n const { isBooted } = useSsrBoot()\n\n if (!window || !groupItem) throw new Error('[Vuetify] VWindowItem must be used inside VWindow')\n\n const isTransitioning = shallowRef(false)\n const hasTransition = computed(() => isBooted.value && (\n window.isReversed.value\n ? props.reverseTransition !== false\n : props.transition !== false\n ))\n\n function onAfterTransition () {\n if (!isTransitioning.value || !window) {\n return\n }\n\n // Finalize transition state.\n isTransitioning.value = false\n if (window.transitionCount.value > 0) {\n window.transitionCount.value -= 1\n\n // Remove container height if we are out of transition.\n if (window.transitionCount.value === 0) {\n window.transitionHeight.value = undefined\n }\n }\n }\n\n function onBeforeTransition () {\n if (isTransitioning.value || !window) {\n return\n }\n\n // Initialize transition state here.\n isTransitioning.value = true\n\n if (window.transitionCount.value === 0) {\n // Set initial height for height transition.\n window.transitionHeight.value = convertToUnit(window.rootRef.value?.clientHeight)\n }\n\n window.transitionCount.value += 1\n }\n\n function onTransitionCancelled () {\n onAfterTransition() // This should have the same path as normal transition end.\n }\n\n function onEnterTransition (el: Element) {\n if (!isTransitioning.value) {\n return\n }\n\n nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!hasTransition.value || !isTransitioning.value || !window) {\n return\n }\n\n // Set transition target height.\n window.transitionHeight.value = convertToUnit(el.clientHeight)\n })\n }\n\n const transition = computed(() => {\n const name = window.isReversed.value\n ? props.reverseTransition\n : props.transition\n\n return !hasTransition.value ? false : {\n name: typeof name !== 'string' ? window.transition.value : name,\n onBeforeEnter: onBeforeTransition,\n onAfterEnter: onAfterTransition,\n onEnterCancelled: onTransitionCancelled,\n onBeforeLeave: onBeforeTransition,\n onAfterLeave: onAfterTransition,\n onLeaveCancelled: onTransitionCancelled,\n onEnter: onEnterTransition,\n }\n })\n\n const { hasContent } = useLazy(props, groupItem.isSelected)\n\n useRender(() => (\n \n \n { hasContent.value && slots.default?.() }\n \n \n ))\n\n return { groupItem }\n },\n})\n\nexport type VWindowItem = InstanceType\n","// Components\nimport { makeVImgProps, VImg } from '@/components/VImg/VImg'\nimport { makeVWindowItemProps, VWindowItem } from '@/components/VWindow/VWindowItem'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VImgSlots } from '@/components/VImg/VImg'\n\nexport const makeVCarouselItemProps = propsFactory({\n ...makeVImgProps(),\n ...makeVWindowItemProps(),\n}, 'VCarouselItem')\n\nexport const VCarouselItem = genericComponent()({\n name: 'VCarouselItem',\n\n inheritAttrs: false,\n\n props: makeVCarouselItemProps(),\n\n setup (props, { slots, attrs }) {\n useRender(() => {\n const imgProps = VImg.filterProps(props)\n const windowItemProps = VWindowItem.filterProps(props)\n\n return (\n \n \n \n )\n })\n },\n})\n\nexport type VCarouselItem = InstanceType\n","// Styles\nimport './VCode.sass'\n\n// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VCode = createSimpleFunctional('v-code')\n\nexport type VCode = InstanceType\n","// Styles\nimport './VColorPickerCanvas.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, onMounted, ref, shallowRef, watch } from 'vue'\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const makeVColorPickerCanvasProps = propsFactory({\n color: {\n type: Object as PropType,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n\n ...makeComponentProps(),\n}, 'VColorPickerCanvas')\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: makeVColorPickerCanvasProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = shallowRef(false)\n const canvasRef = ref()\n const canvasWidth = shallowRef(parseFloat(props.width))\n const canvasHeight = shallowRef(parseFloat(props.height))\n\n const _dotPosition = ref({ x: 0, y: 0 })\n const dotPosition = computed({\n get: () => _dotPosition.value,\n set (val) {\n if (!canvasRef.value) return\n\n const { x, y } = val\n _dotPosition.value = val\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,\n v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,\n a: props.color?.a ?? 1,\n })\n },\n })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const { resizeRef } = useResizeObserver(entries => {\n if (!resizeRef.el?.offsetParent) return\n\n const { width, height } = entries[0].contentRect\n\n canvasWidth.value = width\n canvasHeight.value = height\n })\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousedown') {\n // Prevent text selection while dragging\n e.preventDefault()\n }\n\n if (props.disabled) return\n\n handleMouseMove(e)\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 0%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {\n updateCanvas()\n _dotPosition.value = {\n x: dotPosition.value.x * newVal[0] / oldVal[0],\n y: dotPosition.value.y * newVal[1] / oldVal[1],\n }\n }, { flush: 'post' })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n _dotPosition.value = props.color ? {\n x: props.color.s * canvasWidth.value,\n y: (1 - props.color.v) * canvasHeight.value,\n } : { x: 0, y: 0 }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n \n \n { props.color && (\n \n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType\n","// Utilities\nimport {\n HexToHSV,\n HSLtoHSV,\n HSVtoHex,\n HSVtoHSL,\n HSVtoRGB,\n RGBtoHSV,\n} from '@/util/colorUtils'\nimport { has } from '@/util/helpers'\n\n// Types\nimport type { HSL, HSV, RGB } from '@/util/colorUtils'\n\nfunction stripAlpha (color: any, stripAlpha: boolean) {\n if (stripAlpha) {\n const { a, ...rest } = color\n\n return rest\n }\n\n return color\n}\n\nexport function extractColor (color: HSV, input: any) {\n if (input == null || typeof input === 'string') {\n const hex = HSVtoHex(color)\n\n if (color.a === 1) return hex.slice(0, 7)\n else return hex\n }\n\n if (typeof input === 'object') {\n let converted\n\n if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color)\n else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color)\n else if (has(input, ['h', 's', 'v'])) converted = color\n\n return stripAlpha(converted, !has(input, ['a']) && color.a === 1)\n }\n\n return color\n}\n\nexport function hasAlpha (color: any) {\n if (!color) return false\n\n if (typeof color === 'string') {\n return color.length > 7\n }\n\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha'])\n }\n\n return false\n}\n\nexport const nullColor = { h: 0, s: 0, v: 0, a: 1 }\n\nexport type ColorPickerMode = {\n inputProps: Record\n inputs: {\n [key: string]: any\n getValue: (color: any) => number | string\n getColor: (color: any, v: string) => any\n }[]\n from: (color: any) => HSV\n to: (color: HSV) => any\n}\n\nconst rgba: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'R',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.r),\n getColor: (c: RGB, v: string): RGB => ({ ...c, r: Number(v) }),\n },\n {\n label: 'G',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.g),\n getColor: (c: RGB, v: string): RGB => ({ ...c, g: Number(v) }),\n },\n {\n label: 'B',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.b),\n getColor: (c: RGB, v: string): RGB => ({ ...c, b: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: RGB) => a != null ? Math.round(a * 100) / 100 : 1,\n getColor: (c: RGB, v: string): RGB => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoRGB,\n from: RGBtoHSV,\n}\n\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3),\n}\n\nconst hsla: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'H',\n max: 360,\n step: 1,\n getValue: (c: HSL) => Math.round(c.h),\n getColor: (c: HSL, v: string): HSL => ({ ...c, h: Number(v) }),\n },\n {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.s * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, s: Number(v) }),\n },\n {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.l * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, l: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: HSL) => a != null ? Math.round(a * 100) / 100 : 1,\n getColor: (c: HSL, v: string): HSL => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoHSL,\n from: HSLtoHSV,\n}\n\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3),\n}\n\nconst hexa: ColorPickerMode = {\n inputProps: {\n type: 'text',\n },\n inputs: [\n {\n label: 'HEXA',\n getValue: (c: string) => c,\n getColor: (c: string, v: string) => v,\n },\n ],\n to: HSVtoHex,\n from: HexToHSV,\n}\n\nconst hex = {\n ...hexa,\n inputs: [\n {\n label: 'HEX',\n getValue: (c: string) => c.slice(0, 7),\n getColor: (c: string, v: string) => v,\n },\n ],\n}\n\nexport const modes = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa,\n} satisfies Record\n","// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { computed } from 'vue'\nimport { modes, nullColor } from './util'\nimport { defineComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util/colorUtils'\n\nconst VColorPickerInput = ({ label, ...rest }: any) => {\n return (\n \n \n { label }\n \n )\n}\n\nexport const makeVColorPickerEditProps = propsFactory({\n color: Object as PropType,\n disabled: Boolean,\n mode: {\n type: String as PropType,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType,\n default: () => Object.keys(modes),\n validator: (v: any) => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m)),\n },\n\n ...makeComponentProps(),\n}, 'VColorPickerEdit')\n\nexport const VColorPickerEdit = defineComponent({\n name: 'VColorPickerEdit',\n\n props: makeVColorPickerEditProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:mode': (mode: keyof typeof modes) => true,\n },\n\n setup (props, { emit }) {\n const enabledModes = computed(() => {\n return props.modes.map(key => ({ ...modes[key], name: key }))\n })\n\n const inputs = computed(() => {\n const mode = enabledModes.value.find(m => m.name === props.mode)\n\n if (!mode) return []\n\n const color = props.color ? mode.to(props.color) : null\n\n return mode.inputs?.map(({ getValue, getColor, ...inputProps }) => {\n return {\n ...mode.inputProps,\n ...inputProps,\n disabled: props.disabled,\n value: color && getValue(color),\n onChange: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | null\n\n if (!target) return\n\n emit('update:color', mode.from(getColor(color ?? mode.to(nullColor), target.value)))\n },\n }\n })\n })\n\n useRender(() => (\n \n { inputs.value?.map(props => (\n \n ))}\n { enabledModes.value.length > 1 && (\n {\n const mi = enabledModes.value.findIndex(m => m.name === props.mode)\n\n emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name)\n }}\n />\n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VColorPickerEdit = InstanceType\n","/* eslint-disable max-statements */\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps } from '@/composables/rounded'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, toRef } from 'vue'\nimport { clamp, createRange, getDecimals, propsFactory } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue'\nimport type { VSliderTrack } from './VSliderTrack'\n\nexport type Tick = {\n value: number\n position: number\n label?: string\n}\n\ntype SliderProvide = {\n activeThumbRef: Ref\n color: Ref\n decimals: Ref\n direction: Ref<'vertical' | 'horizontal'>\n disabled: Ref\n elevation: Ref\n min: Ref\n max: Ref\n mousePressed: Ref\n numTicks: Ref\n onSliderMousedown: (e: MouseEvent) => void\n onSliderTouchstart: (e: TouchEvent) => void\n parseMouseMove: (e: MouseEvent | TouchEvent) => number\n position: (val: number) => number\n readonly: Ref\n rounded: Ref\n roundValue: (value: number) => number\n thumbLabel: Ref\n showTicks: Ref\n startOffset: Ref\n step: Ref\n thumbSize: Ref\n thumbColor: Ref\n trackColor: Ref\n trackFillColor: Ref\n trackSize: Ref\n ticks: Ref | undefined>\n tickSize: Ref\n trackContainerRef: Ref\n vertical: Ref\n parsedTicks: Ref\n hasLabels: Ref\n isReversed: Ref\n indexFromEnd: Ref\n}\n\nexport const VSliderSymbol: InjectionKey = Symbol.for('vuetify:v-slider')\n\nexport function getOffset (e: MouseEvent | TouchEvent, el: HTMLElement, direction: string) {\n const vertical = direction === 'vertical'\n const rect = el.getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n return vertical\n ? touch.clientY - (rect.top + rect.height / 2)\n : touch.clientX - (rect.left + rect.width / 2)\n}\n\nfunction getPosition (e: MouseEvent | TouchEvent, position: 'clientX' | 'clientY'): number {\n if ('touches' in e && e.touches.length) return e.touches[0][position]\n else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position]\n else return (e as MouseEvent)[position]\n}\n\nexport const makeSliderProps = propsFactory({\n disabled: {\n type: Boolean as PropType,\n default: null,\n },\n error: Boolean,\n readonly: {\n type: Boolean as PropType,\n default: null,\n },\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 0,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType,\n default: undefined,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 20,\n },\n showTicks: {\n type: [Boolean, String] as PropType,\n default: false,\n validator: (v: any) => typeof v === 'boolean' || v === 'always',\n },\n ticks: {\n type: [Array, Object] as PropType>,\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n color: String,\n trackColor: String,\n trackFillColor: String,\n trackSize: {\n type: [Number, String],\n default: 4,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n reverse: Boolean,\n\n ...makeRoundedProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n ripple: {\n type: Boolean,\n default: true,\n },\n}, 'Slider')\n\ntype SliderProps = ExtractPropTypes>\n\ntype SliderData = {\n value: number\n}\n\nexport const useSteps = (props: SliderProps) => {\n const min = computed(() => parseFloat(props.min))\n const max = computed(() => parseFloat(props.max))\n const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0)\n const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)))\n\n function roundValue (value: string | number) {\n value = parseFloat(value)\n\n if (step.value <= 0) return value\n\n const clamped = clamp(value, min.value, max.value)\n const offset = min.value % step.value\n const newValue = Math.round((clamped - offset) / step.value) * step.value + offset\n\n return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value))\n }\n\n return { min, max, step, decimals, roundValue }\n}\n\nexport const useSlider = ({\n props,\n steps,\n onSliderStart,\n onSliderMove,\n onSliderEnd,\n getActiveThumb,\n}: {\n props: SliderProps\n steps: ReturnType\n onSliderEnd: (data: SliderData) => void\n onSliderStart: (data: SliderData) => void\n onSliderMove: (data: SliderData) => void\n getActiveThumb: (e: MouseEvent | TouchEvent) => HTMLElement\n}) => {\n const { isRtl } = useRtl()\n const isReversed = toRef(props, 'reverse')\n const vertical = computed(() => props.direction === 'vertical')\n const indexFromEnd = computed(() => vertical.value !== isReversed.value)\n\n const { min, max, step, decimals, roundValue } = steps\n\n const thumbSize = computed(() => parseInt(props.thumbSize, 10))\n const tickSize = computed(() => parseInt(props.tickSize, 10))\n const trackSize = computed(() => parseInt(props.trackSize, 10))\n const numTicks = computed(() => (max.value - min.value) / step.value)\n const disabled = toRef(props, 'disabled')\n\n const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color)\n const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color)\n const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color)\n\n const mousePressed = shallowRef(false)\n\n const startOffset = shallowRef(0)\n const trackContainerRef = ref()\n const activeThumbRef = ref()\n\n function parseMouseMove (e: MouseEvent | TouchEvent): number {\n const vertical = props.direction === 'vertical'\n const start = vertical ? 'top' : 'left'\n const length = vertical ? 'height' : 'width'\n const position = vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = trackContainerRef.value?.$el.getBoundingClientRect()\n const clickOffset = getPosition(e, position)\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0\n\n if (vertical ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos\n\n return roundValue(min.value + clickPos * (max.value - min.value))\n }\n\n const handleStop = (e: MouseEvent | TouchEvent) => {\n onSliderEnd({ value: parseMouseMove(e) })\n\n mousePressed.value = false\n startOffset.value = 0\n }\n\n const handleStart = (e: MouseEvent | TouchEvent) => {\n activeThumbRef.value = getActiveThumb(e)\n\n if (!activeThumbRef.value) return\n\n activeThumbRef.value.focus()\n mousePressed.value = true\n\n if (activeThumbRef.value.contains(e.target as Node)) {\n startOffset.value = getOffset(e, activeThumbRef.value, props.direction)\n } else {\n startOffset.value = 0\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n onSliderStart({ value: parseMouseMove(e) })\n }\n\n const moveListenerOptions = { passive: true, capture: true }\n\n function onMouseMove (e: MouseEvent | TouchEvent) {\n onSliderMove({ value: parseMouseMove(e) })\n }\n\n function onSliderMouseUp (e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n\n handleStop(e)\n\n window.removeEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.removeEventListener('mouseup', onSliderMouseUp)\n }\n\n function onSliderTouchend (e: TouchEvent) {\n handleStop(e)\n\n window.removeEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.removeEventListener('touchend', onSliderTouchend as EventListener)\n }\n\n function onSliderTouchstart (e: TouchEvent) {\n handleStart(e)\n\n window.addEventListener('touchmove', onMouseMove, moveListenerOptions)\n e.target?.addEventListener('touchend', onSliderTouchend as EventListener, { passive: false })\n }\n\n function onSliderMousedown (e: MouseEvent) {\n e.preventDefault()\n\n handleStart(e)\n\n window.addEventListener('mousemove', onMouseMove, moveListenerOptions)\n window.addEventListener('mouseup', onSliderMouseUp, { passive: false })\n }\n\n const position = (val: number) => {\n const percentage = (val - min.value) / (max.value - min.value) * 100\n return clamp(isNaN(percentage) ? 0 : percentage, 0, 100)\n }\n\n const showTicks = toRef(props, 'showTicks')\n const parsedTicks = computed(() => {\n if (!showTicks.value) return []\n\n if (!props.ticks) {\n return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {\n const value = min.value + (t * step.value)\n return {\n value,\n position: position(value),\n }\n }) : []\n }\n if (Array.isArray(props.ticks)) return props.ticks.map(t => ({ value: t, position: position(t), label: t.toString() }))\n return Object.keys(props.ticks).map(key => ({\n value: parseFloat(key),\n position: position(parseFloat(key)),\n label: (props.ticks as Record)[key],\n }))\n })\n\n const hasLabels = computed(() => parsedTicks.value.some(({ label }) => !!label))\n\n const data: SliderProvide = {\n activeThumbRef,\n color: toRef(props, 'color'),\n decimals,\n disabled,\n direction: toRef(props, 'direction'),\n elevation: toRef(props, 'elevation'),\n hasLabels,\n isReversed,\n indexFromEnd,\n min,\n max,\n mousePressed,\n numTicks,\n onSliderMousedown,\n onSliderTouchstart,\n parsedTicks,\n parseMouseMove,\n position,\n readonly: toRef(props, 'readonly'),\n rounded: toRef(props, 'rounded'),\n roundValue,\n showTicks,\n startOffset,\n step,\n thumbSize,\n thumbColor,\n thumbLabel: toRef(props, 'thumbLabel'),\n ticks: toRef(props, 'ticks'),\n tickSize,\n trackColor,\n trackContainerRef,\n trackFillColor,\n trackSize,\n vertical,\n }\n\n provide(VSliderSymbol, data)\n\n return data\n}\n","// Styles\nimport './VSliderThumb.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\nimport { VScaleTransition } from '../transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useElevation } from '@/composables/elevation'\nimport { useRtl } from '@/composables/locale'\n\n// Directives\nimport Ripple from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type VSliderThumbSlots = {\n 'thumb-label': { modelValue: number }\n}\n\nexport const makeVSliderThumbProps = propsFactory({\n focused: Boolean,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n modelValue: {\n type: Number,\n required: true,\n },\n position: {\n type: Number,\n required: true,\n },\n ripple: {\n type: [Boolean, Object] as PropType,\n default: true,\n },\n\n ...makeComponentProps(),\n}, 'VSliderThumb')\n\nexport const VSliderThumb = genericComponent()({\n name: 'VSliderThumb',\n\n directives: { Ripple },\n\n props: makeVSliderThumbProps(),\n\n emits: {\n 'update:modelValue': (v: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const slider = inject(VSliderSymbol)\n const { isRtl, rtlClasses } = useRtl()\n if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider')\n\n const {\n thumbColor,\n step,\n disabled,\n thumbSize,\n thumbLabel,\n direction,\n isReversed,\n vertical,\n readonly,\n elevation,\n mousePressed,\n decimals,\n indexFromEnd,\n } = slider\n\n const elevationProps = computed(() => !disabled.value ? elevation.value : undefined)\n const { elevationClasses } = useElevation(elevationProps)\n const { textColorClasses, textColorStyles } = useTextColor(thumbColor)\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyValues\n const relevantKeys = [pageup, pagedown, end, home, left, right, down, up]\n\n const multipliers = computed(() => {\n if (step.value) return [1, 2, 3]\n else return [1, 5, 10]\n })\n\n function parseKeydown (e: KeyboardEvent, value: number) {\n if (!relevantKeys.includes(e.key)) return\n\n e.preventDefault()\n\n const _step = step.value || 0.1\n const steps = (props.max - props.min) / _step\n if ([left, right, down, up].includes(e.key)) {\n const increase = vertical.value\n ? [isRtl.value ? left : right, isReversed.value ? down : up]\n : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up]\n const direction = increase.includes(e.key) ? 1 : -1\n const multiplier = e.shiftKey ? 2 : (e.ctrlKey ? 1 : 0)\n\n value = value + (direction * _step * multipliers.value[multiplier])\n } else if (e.key === home) {\n value = props.min\n } else if (e.key === end) {\n value = props.max\n } else {\n const direction = e.key === pagedown ? 1 : -1\n value = value - (direction * _step * (steps > 100 ? steps / 10 : 10))\n }\n\n return Math.max(props.min, Math.min(props.max, value))\n }\n\n function onKeydown (e: KeyboardEvent) {\n const newValue = parseKeydown(e, props.modelValue)\n\n newValue != null && emit('update:modelValue', newValue)\n }\n\n useRender(() => {\n const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, '%')\n\n return (\n \n \n \n \n \n \n
    \n { slots['thumb-label']?.({ modelValue: props.modelValue }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1) }\n
    \n \n \n
    \n \n )\n })\n\n return {}\n },\n})\n\nexport type VSliderThumb = InstanceType\n","// Styles\nimport './VSliderTrack.sass'\n\n// Components\nimport { VSliderSymbol } from './slider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useRounded } from '@/composables/rounded'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Tick } from './slider'\n\nexport type VSliderTrackSlots = {\n 'tick-label': { tick: Tick, index: number }\n}\n\nexport const makeVSliderTrackProps = propsFactory({\n start: {\n type: Number,\n required: true,\n },\n stop: {\n type: Number,\n required: true,\n },\n\n ...makeComponentProps(),\n}, 'VSliderTrack')\n\nexport const VSliderTrack = genericComponent()({\n name: 'VSliderTrack',\n\n props: makeVSliderTrackProps(),\n\n emits: {},\n\n setup (props, { slots }) {\n const slider = inject(VSliderSymbol)\n\n if (!slider) throw new Error('[Vuetify] v-slider-track must be inside v-slider or v-range-slider')\n\n const {\n color,\n parsedTicks,\n rounded,\n showTicks,\n tickSize,\n trackColor,\n trackFillColor,\n trackSize,\n vertical,\n min,\n max,\n indexFromEnd,\n } = slider\n\n const { roundedClasses } = useRounded(rounded)\n\n const {\n backgroundColorClasses: trackFillColorClasses,\n backgroundColorStyles: trackFillColorStyles,\n } = useBackgroundColor(trackFillColor)\n\n const {\n backgroundColorClasses: trackColorClasses,\n backgroundColorStyles: trackColorStyles,\n } = useBackgroundColor(trackColor)\n\n const startDir = computed(() => `inset-${vertical.value ? 'block' : 'inline'}-${indexFromEnd.value ? 'end' : 'start'}`)\n const endDir = computed(() => vertical.value ? 'height' : 'width')\n\n const backgroundStyles = computed(() => {\n return {\n [startDir.value]: '0%',\n [endDir.value]: '100%',\n }\n })\n\n const trackFillWidth = computed(() => props.stop - props.start)\n\n const trackFillStyles = computed(() => {\n return {\n [startDir.value]: convertToUnit(props.start, '%'),\n [endDir.value]: convertToUnit(trackFillWidth.value, '%'),\n }\n })\n\n const computedTicks = computed(() => {\n if (!showTicks.value) return []\n\n const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value\n\n return ticks.map((tick, index) => {\n const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, '%') : undefined\n\n return (\n = props.start && tick.position <= props.stop,\n 'v-slider-track__tick--first': tick.value === min.value,\n 'v-slider-track__tick--last': tick.value === max.value,\n },\n ]}\n style={{ [startDir.value]: directionValue }}\n >\n {\n (tick.label || slots['tick-label']) && (\n
    \n { slots['tick-label']?.({ tick, index }) ?? tick.label }\n
    \n )\n }\n \n )\n })\n })\n\n useRender(() => {\n return (\n \n \n \n\n { showTicks.value && (\n \n { computedTicks.value }\n \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSliderTrack = InstanceType\n","// Styles\nimport './VSlider.sass'\n\n// Components\nimport { VSliderThumb } from './VSliderThumb'\nimport { VSliderTrack } from './VSliderTrack'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\n\n// Composables\nimport { makeSliderProps, useSlider, useSteps } from './slider'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSliderThumbSlots } from './VSliderThumb'\nimport type { VSliderTrackSlots } from './VSliderTrack'\nimport type { VInputSlot, VInputSlots } from '@/components/VInput/VInput'\n\nexport type VSliderSlots = VInputSlots & VSliderThumbSlots & VSliderTrackSlots & {\n label: VInputSlot\n}\n\nexport const makeVSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeSliderProps(),\n ...makeVInputProps(),\n\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n}, 'VSlider')\n\nexport const VSlider = genericComponent()({\n name: 'VSlider',\n\n props: makeVSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (v: number) => true,\n start: (value: number) => true,\n end: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const thumbContainerRef = ref()\n const { rtlClasses } = useRtl()\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n value => {\n return steps.roundValue(value == null ? steps.min.value : value)\n },\n )\n\n const {\n min,\n max,\n mousePressed,\n roundValue,\n onSliderMousedown,\n onSliderTouchstart,\n trackContainerRef,\n position,\n hasLabels,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const roundedValue = roundValue(value)\n model.value = roundedValue\n emit('end', roundedValue)\n },\n onSliderMove: ({ value }) => model.value = roundValue(value),\n getActiveThumb: () => thumbContainerRef.value?.$el,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStop = computed(() => position(model.value))\n\n useRender(() => {\n const inputProps = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n \n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? (\n props.label\n ? (\n \n ) : undefined\n )}\n\n { slots.prepend?.(slotProps) }\n \n ) : undefined,\n default: ({ id, messagesId }) => (\n \n \n\n \n {{ 'tick-label': slots['tick-label'] }}\n
    \n\n (model.value = v) }\n position={ trackStop.value }\n elevation={ props.elevation }\n onFocus={ focus }\n onBlur={ blur }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n \n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSlider = InstanceType\n","// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSlider } from '@/components/VSlider'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport { onUnmounted } from 'vue'\nimport { nullColor } from './util'\nimport {\n defineComponent,\n HexToHSV,\n HSVtoCSS,\n propsFactory,\n SUPPORTS_EYE_DROPPER,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Hex, HSV } from '@/util'\n\nexport const makeVColorPickerPreviewProps = propsFactory({\n color: {\n type: Object as PropType,\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n\n ...makeComponentProps(),\n}, 'VColorPickerPreview')\n\nexport const VColorPickerPreview = defineComponent({\n name: 'VColorPickerPreview',\n\n props: makeVColorPickerPreviewProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n },\n\n setup (props, { emit }) {\n const abortController = new AbortController()\n\n onUnmounted(() => abortController.abort())\n\n async function openEyeDropper () {\n if (!SUPPORTS_EYE_DROPPER) return\n\n const eyeDropper = new window.EyeDropper()\n try {\n const result = await eyeDropper.open({ signal: abortController.signal })\n const colorHexValue = HexToHSV(result.sRGBHex as Hex)\n emit('update:color', { ...(props.color ?? nullColor), ...colorHexValue })\n } catch (e) {}\n }\n\n useRender(() => (\n \n { SUPPORTS_EYE_DROPPER && (\n
    \n \n
    \n )}\n\n
    \n
    \n
    \n\n
    \n emit('update:color', { ...(props.color ?? nullColor), h }) }\n step={ 0 }\n min={ 0 }\n max={ 360 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n\n { !props.hideAlpha && (\n emit('update:color', { ...(props.color ?? nullColor), a }) }\n step={ 1 / 256 }\n min={ 0 }\n max={ 1 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n )}\n
    \n
    \n ))\n\n return {}\n },\n})\n\nexport type VColorPickerPreview = InstanceType\n","export const red = {\n base: '#f44336',\n lighten5: '#ffebee',\n lighten4: '#ffcdd2',\n lighten3: '#ef9a9a',\n lighten2: '#e57373',\n lighten1: '#ef5350',\n darken1: '#e53935',\n darken2: '#d32f2f',\n darken3: '#c62828',\n darken4: '#b71c1c',\n accent1: '#ff8a80',\n accent2: '#ff5252',\n accent3: '#ff1744',\n accent4: '#d50000',\n}\n\nexport const pink = {\n base: '#e91e63',\n lighten5: '#fce4ec',\n lighten4: '#f8bbd0',\n lighten3: '#f48fb1',\n lighten2: '#f06292',\n lighten1: '#ec407a',\n darken1: '#d81b60',\n darken2: '#c2185b',\n darken3: '#ad1457',\n darken4: '#880e4f',\n accent1: '#ff80ab',\n accent2: '#ff4081',\n accent3: '#f50057',\n accent4: '#c51162',\n}\n\nexport const purple = {\n base: '#9c27b0',\n lighten5: '#f3e5f5',\n lighten4: '#e1bee7',\n lighten3: '#ce93d8',\n lighten2: '#ba68c8',\n lighten1: '#ab47bc',\n darken1: '#8e24aa',\n darken2: '#7b1fa2',\n darken3: '#6a1b9a',\n darken4: '#4a148c',\n accent1: '#ea80fc',\n accent2: '#e040fb',\n accent3: '#d500f9',\n accent4: '#aa00ff',\n}\n\nexport const deepPurple = {\n base: '#673ab7',\n lighten5: '#ede7f6',\n lighten4: '#d1c4e9',\n lighten3: '#b39ddb',\n lighten2: '#9575cd',\n lighten1: '#7e57c2',\n darken1: '#5e35b1',\n darken2: '#512da8',\n darken3: '#4527a0',\n darken4: '#311b92',\n accent1: '#b388ff',\n accent2: '#7c4dff',\n accent3: '#651fff',\n accent4: '#6200ea',\n}\n\nexport const indigo = {\n base: '#3f51b5',\n lighten5: '#e8eaf6',\n lighten4: '#c5cae9',\n lighten3: '#9fa8da',\n lighten2: '#7986cb',\n lighten1: '#5c6bc0',\n darken1: '#3949ab',\n darken2: '#303f9f',\n darken3: '#283593',\n darken4: '#1a237e',\n accent1: '#8c9eff',\n accent2: '#536dfe',\n accent3: '#3d5afe',\n accent4: '#304ffe',\n}\n\nexport const blue = {\n base: '#2196f3',\n lighten5: '#e3f2fd',\n lighten4: '#bbdefb',\n lighten3: '#90caf9',\n lighten2: '#64b5f6',\n lighten1: '#42a5f5',\n darken1: '#1e88e5',\n darken2: '#1976d2',\n darken3: '#1565c0',\n darken4: '#0d47a1',\n accent1: '#82b1ff',\n accent2: '#448aff',\n accent3: '#2979ff',\n accent4: '#2962ff',\n}\n\nexport const lightBlue = {\n base: '#03a9f4',\n lighten5: '#e1f5fe',\n lighten4: '#b3e5fc',\n lighten3: '#81d4fa',\n lighten2: '#4fc3f7',\n lighten1: '#29b6f6',\n darken1: '#039be5',\n darken2: '#0288d1',\n darken3: '#0277bd',\n darken4: '#01579b',\n accent1: '#80d8ff',\n accent2: '#40c4ff',\n accent3: '#00b0ff',\n accent4: '#0091ea',\n}\n\nexport const cyan = {\n base: '#00bcd4',\n lighten5: '#e0f7fa',\n lighten4: '#b2ebf2',\n lighten3: '#80deea',\n lighten2: '#4dd0e1',\n lighten1: '#26c6da',\n darken1: '#00acc1',\n darken2: '#0097a7',\n darken3: '#00838f',\n darken4: '#006064',\n accent1: '#84ffff',\n accent2: '#18ffff',\n accent3: '#00e5ff',\n accent4: '#00b8d4',\n}\n\nexport const teal = {\n base: '#009688',\n lighten5: '#e0f2f1',\n lighten4: '#b2dfdb',\n lighten3: '#80cbc4',\n lighten2: '#4db6ac',\n lighten1: '#26a69a',\n darken1: '#00897b',\n darken2: '#00796b',\n darken3: '#00695c',\n darken4: '#004d40',\n accent1: '#a7ffeb',\n accent2: '#64ffda',\n accent3: '#1de9b6',\n accent4: '#00bfa5',\n}\n\nexport const green = {\n base: '#4caf50',\n lighten5: '#e8f5e9',\n lighten4: '#c8e6c9',\n lighten3: '#a5d6a7',\n lighten2: '#81c784',\n lighten1: '#66bb6a',\n darken1: '#43a047',\n darken2: '#388e3c',\n darken3: '#2e7d32',\n darken4: '#1b5e20',\n accent1: '#b9f6ca',\n accent2: '#69f0ae',\n accent3: '#00e676',\n accent4: '#00c853',\n}\n\nexport const lightGreen = {\n base: '#8bc34a',\n lighten5: '#f1f8e9',\n lighten4: '#dcedc8',\n lighten3: '#c5e1a5',\n lighten2: '#aed581',\n lighten1: '#9ccc65',\n darken1: '#7cb342',\n darken2: '#689f38',\n darken3: '#558b2f',\n darken4: '#33691e',\n accent1: '#ccff90',\n accent2: '#b2ff59',\n accent3: '#76ff03',\n accent4: '#64dd17',\n}\n\nexport const lime = {\n base: '#cddc39',\n lighten5: '#f9fbe7',\n lighten4: '#f0f4c3',\n lighten3: '#e6ee9c',\n lighten2: '#dce775',\n lighten1: '#d4e157',\n darken1: '#c0ca33',\n darken2: '#afb42b',\n darken3: '#9e9d24',\n darken4: '#827717',\n accent1: '#f4ff81',\n accent2: '#eeff41',\n accent3: '#c6ff00',\n accent4: '#aeea00',\n}\n\nexport const yellow = {\n base: '#ffeb3b',\n lighten5: '#fffde7',\n lighten4: '#fff9c4',\n lighten3: '#fff59d',\n lighten2: '#fff176',\n lighten1: '#ffee58',\n darken1: '#fdd835',\n darken2: '#fbc02d',\n darken3: '#f9a825',\n darken4: '#f57f17',\n accent1: '#ffff8d',\n accent2: '#ffff00',\n accent3: '#ffea00',\n accent4: '#ffd600',\n}\n\nexport const amber = {\n base: '#ffc107',\n lighten5: '#fff8e1',\n lighten4: '#ffecb3',\n lighten3: '#ffe082',\n lighten2: '#ffd54f',\n lighten1: '#ffca28',\n darken1: '#ffb300',\n darken2: '#ffa000',\n darken3: '#ff8f00',\n darken4: '#ff6f00',\n accent1: '#ffe57f',\n accent2: '#ffd740',\n accent3: '#ffc400',\n accent4: '#ffab00',\n}\n\nexport const orange = {\n base: '#ff9800',\n lighten5: '#fff3e0',\n lighten4: '#ffe0b2',\n lighten3: '#ffcc80',\n lighten2: '#ffb74d',\n lighten1: '#ffa726',\n darken1: '#fb8c00',\n darken2: '#f57c00',\n darken3: '#ef6c00',\n darken4: '#e65100',\n accent1: '#ffd180',\n accent2: '#ffab40',\n accent3: '#ff9100',\n accent4: '#ff6d00',\n}\n\nexport const deepOrange = {\n base: '#ff5722',\n lighten5: '#fbe9e7',\n lighten4: '#ffccbc',\n lighten3: '#ffab91',\n lighten2: '#ff8a65',\n lighten1: '#ff7043',\n darken1: '#f4511e',\n darken2: '#e64a19',\n darken3: '#d84315',\n darken4: '#bf360c',\n accent1: '#ff9e80',\n accent2: '#ff6e40',\n accent3: '#ff3d00',\n accent4: '#dd2c00',\n}\n\nexport const brown = {\n base: '#795548',\n lighten5: '#efebe9',\n lighten4: '#d7ccc8',\n lighten3: '#bcaaa4',\n lighten2: '#a1887f',\n lighten1: '#8d6e63',\n darken1: '#6d4c41',\n darken2: '#5d4037',\n darken3: '#4e342e',\n darken4: '#3e2723',\n}\n\nexport const blueGrey = {\n base: '#607d8b',\n lighten5: '#eceff1',\n lighten4: '#cfd8dc',\n lighten3: '#b0bec5',\n lighten2: '#90a4ae',\n lighten1: '#78909c',\n darken1: '#546e7a',\n darken2: '#455a64',\n darken3: '#37474f',\n darken4: '#263238',\n}\n\nexport const grey = {\n base: '#9e9e9e',\n lighten5: '#fafafa',\n lighten4: '#f5f5f5',\n lighten3: '#eeeeee',\n lighten2: '#e0e0e0',\n lighten1: '#bdbdbd',\n darken1: '#757575',\n darken2: '#616161',\n darken3: '#424242',\n darken4: '#212121',\n}\n\nexport const shades = {\n black: '#000000',\n white: '#ffffff',\n transparent: '#ffffff00',\n}\n\nexport default {\n red,\n pink,\n purple,\n deepPurple,\n indigo,\n blue,\n lightBlue,\n cyan,\n teal,\n green,\n lightGreen,\n lime,\n yellow,\n amber,\n orange,\n deepOrange,\n brown,\n blueGrey,\n grey,\n shades,\n}\n","// Styles\nimport './VColorPickerSwatches.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\n\n// Utilities\nimport {\n convertToUnit,\n deepEqual,\n defineComponent,\n getContrast,\n parseColor,\n propsFactory,\n RGBtoCSS,\n RGBtoHSV,\n useRender,\n} from '@/util'\nimport colors from '@/util/colors'\n\n// Types\nimport type { DeepReadonly, PropType } from 'vue'\nimport type { Color, HSV } from '@/util'\n\nexport const makeVColorPickerSwatchesProps = propsFactory({\n swatches: {\n type: Array as PropType>,\n default: () => parseDefaultColors(colors),\n },\n disabled: Boolean,\n color: Object as PropType,\n maxHeight: [Number, String],\n\n ...makeComponentProps(),\n}, 'VColorPickerSwatches')\n\nfunction parseDefaultColors (colors: Record>) {\n return Object.keys(colors).map(key => {\n const color = colors[key]\n return color.base ? [\n color.base,\n color.darken4,\n color.darken3,\n color.darken2,\n color.darken1,\n color.lighten1,\n color.lighten2,\n color.lighten3,\n color.lighten4,\n color.lighten5,\n ] : [\n color.black,\n color.white,\n color.transparent,\n ]\n })\n}\n\nexport const VColorPickerSwatches = defineComponent({\n name: 'VColorPickerSwatches',\n\n props: makeVColorPickerSwatchesProps(),\n\n emits: {\n 'update:color': (color: HSV) => true,\n },\n\n setup (props, { emit }) {\n useRender(() => (\n \n
    \n { props.swatches.map(swatch => (\n
    \n { swatch.map(color => {\n const rgba = parseColor(color)\n const hsva = RGBtoHSV(rgba)\n const background = RGBtoCSS(rgba)\n\n return (\n hsva && emit('update:color', hsva) }\n >\n
    \n { props.color && deepEqual(props.color, hsva)\n ? 2 ? 'white' : 'black' } />\n : undefined\n }\n
    \n
    \n )\n })}\n
    \n ))}\n \n \n ))\n\n return {}\n },\n})\n\nexport type VColorPickerSwatches = InstanceType\n","// Styles\nimport './VSheet.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVSheetProps = propsFactory({\n color: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VSheet')\n\nexport const VSheet = genericComponent()({\n name: 'VSheet',\n\n props: makeVSheetProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VSheet = InstanceType\n","// Styles\nimport './VColorPicker.sass'\n\n// Components\nimport { VColorPickerCanvas } from './VColorPickerCanvas'\nimport { VColorPickerEdit } from './VColorPickerEdit'\nimport { VColorPickerPreview } from './VColorPickerPreview'\nimport { VColorPickerSwatches } from './VColorPickerSwatches'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, onMounted, ref, watch } from 'vue'\nimport { extractColor, modes, nullColor } from './util'\nimport { consoleWarn, defineComponent, HSVtoCSS, omit, parseColor, propsFactory, RGBtoHSV, useRender } from '@/util'\n\n// Types\nimport type { DeepReadonly, PropType } from 'vue'\nimport type { Color, HSV } from '@/util'\n\nexport const makeVColorPickerProps = propsFactory({\n canvasHeight: {\n type: [String, Number],\n default: 150,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n mode: {\n type: String as PropType,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType,\n default: () => Object.keys(modes),\n validator: (v: any) => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m)),\n },\n showSwatches: Boolean,\n swatches: Array as PropType>,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n modelValue: {\n type: [Object, String] as PropType | string | undefined | null>,\n },\n\n ...omit(makeVSheetProps({ width: 300 }), [\n 'height',\n 'location',\n 'minHeight',\n 'maxHeight',\n 'minWidth',\n 'maxWidth',\n ]),\n}, 'VColorPicker')\n\nexport const VColorPicker = defineComponent({\n name: 'VColorPicker',\n\n props: makeVColorPickerProps(),\n\n emits: {\n 'update:modelValue': (color: any) => true,\n 'update:mode': (mode: keyof typeof modes) => true,\n },\n\n setup (props) {\n const mode = useProxiedModel(props, 'mode')\n const hue = ref(null)\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => {\n if (v == null || v === '') return null\n\n let c: HSV\n try {\n c = RGBtoHSV(parseColor(v as any))\n } catch (err) {\n consoleWarn(err as any)\n return null\n }\n\n return c\n },\n v => {\n if (!v) return null\n\n return extractColor(v, props.modelValue)\n }\n )\n const currentColor = computed(() => {\n return model.value\n ? { ...model.value, h: hue.value ?? model.value.h }\n : null\n })\n const { rtlClasses } = useRtl()\n\n let externalChange = true\n watch(model, v => {\n if (!externalChange) {\n // prevent hue shift from rgb conversion inaccuracy\n externalChange = true\n return\n }\n if (!v) return\n hue.value = v.h\n }, { immediate: true })\n\n const updateColor = (hsva: HSV) => {\n externalChange = false\n hue.value = hsva.h\n model.value = hsva\n }\n\n onMounted(() => {\n if (!props.modes.includes(mode.value)) mode.value = props.modes[0]\n })\n\n provideDefaults({\n VSlider: {\n color: undefined,\n trackColor: undefined,\n trackFillColor: undefined,\n },\n })\n\n useRender(() => {\n const sheetProps = VSheet.filterProps(props)\n\n return (\n \n { !props.hideCanvas && (\n \n )}\n\n { (!props.hideSliders || !props.hideInputs) && (\n
    \n { !props.hideSliders && (\n \n )}\n\n { !props.hideInputs && (\n mode.value = m }\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n disabled={ props.disabled }\n />\n )}\n
    \n )}\n\n { props.showSwatches && (\n \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VColorPicker = InstanceType\n","// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VTextField } from '@/components/VTextField'\nimport { makeVTextFieldProps } from '@/components/VTextField/VTextField'\nimport { VVirtualScroll } from '@/components/VVirtualScroll'\n\n// Composables\nimport { useScrolling } from '../VSelect/useScrolling'\nimport { useTextColor } from '@/composables/color'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { transformItem, useItems } from '@/composables/list-items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTransitionProps } from '@/composables/transition'\n\n// Utilities\nimport { computed, mergeProps, nextTick, ref, shallowRef, watch } from 'vue'\nimport {\n ensureValidVNode,\n genericComponent,\n IN_BROWSER,\n isComposingIgnoreKey,\n noop,\n omit,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n { text.substr(0, matches) }\n { text.substr(matches, length) }\n { text.substr(matches + length) }\n \n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val = string | ([T] extends [Primitive]\n ? T\n : (ReturnObject extends true ? T : any))\n\ntype Value =\n Multiple extends true\n ? readonly Val[]\n : Val | null\n\nexport const makeVComboboxProps = propsFactory({\n autoSelectFirst: {\n type: [Boolean, String] as PropType,\n },\n clearOnSelect: {\n type: Boolean,\n default: true,\n },\n delimiters: Array as PropType,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true, returnObject: true }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n role: 'combobox',\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n}, 'VCombobox')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VCombobox = genericComponent,\n ReturnObject extends boolean = true,\n Multiple extends boolean = false,\n V extends Value = Value\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey>\n itemValue?: SelectItemKey>\n itemProps?: SelectItemKey>\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V | null\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: Omit & {\n item: { item: ListItem, index: number, props: Record }\n chip: { item: ListItem, index: number, props: Record }\n selection: { item: ListItem, index: number }\n 'prepend-item': never\n 'append-item': never\n 'no-data': never\n }\n) => GenericProps>()({\n name: 'VCombobox',\n\n props: makeVComboboxProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n 'update:search': (value: string) => true,\n 'update:menu': (value: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = shallowRef(false)\n const isPristine = shallowRef(true)\n const listHasFocus = shallowRef(false)\n const vMenuRef = ref()\n const vVirtualScrollRef = ref()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const selectionIndex = shallowRef(-1)\n let cleared = false\n const color = computed(() => vTextFieldRef.value?.color)\n const label = computed(() => menu.value ? props.closeText : props.openText)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n\n const hasChips = computed(() => !!(props.chips || slots.chip))\n const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection)\n\n const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '')\n\n const search = computed({\n get: () => {\n return _search.value\n },\n set: (val: string | null) => {\n _search.value = val ?? ''\n if (!props.multiple && !hasSelectionSlot.value) {\n model.value = [transformItem(props, val)]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select(transformItem(props, v))\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n\n isPristine.value = !val\n },\n })\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function' ? props.counterValue(model.value)\n : typeof props.counterValue === 'number' ? props.counterValue\n : (props.multiple ? model.value.length : search.value.length)\n })\n watch(_search, value => {\n if (cleared) {\n // wait for clear to finish, VTextField sets _search to null\n // then search computed triggers and updates _search to ''\n nextTick(() => (cleared = false))\n } else if (isFocused.value && !menu.value) {\n menu.value = true\n }\n\n emit('update:search', value)\n })\n\n watch(model, value => {\n if (!props.multiple && !hasSelectionSlot.value) {\n _search.value = value[0]?.title ?? ''\n }\n })\n\n const { filteredItems, getMatches } = useFilter(props, items, () => isPristine.value ? '' : search.value)\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selectedValues = computed(() => model.value.map(selection => selection.value))\n\n const highlightFirst = computed(() => {\n const selectFirst = props.autoSelectFirst === true ||\n (props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title)\n return selectFirst &&\n displayItems.value.length > 0 &&\n !isPristine.value &&\n !listHasFocus.value\n })\n\n const menuDisabled = computed(() => (\n (props.hideNoData && !displayItems.value.length) ||\n props.readonly || form?.isReadonly.value\n ))\n\n const listRef = ref()\n const { onListScroll, onListKeydown } = useScrolling(listRef, vTextFieldRef)\n function onClear (e: MouseEvent) {\n cleared = true\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onMousedownControl () {\n if (menuDisabled.value) return\n\n menu.value = true\n }\n function onMousedownMenuIcon (e: MouseEvent) {\n if (menuDisabled.value) return\n\n if (isFocused.value) {\n e.preventDefault()\n e.stopPropagation()\n }\n menu.value = !menu.value\n }\n // eslint-disable-next-line complexity\n function onKeydown (e: KeyboardEvent) {\n if (isComposingIgnoreKey(e) || props.readonly || form?.isReadonly.value) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = model.value.length\n\n if (\n selectionIndex.value > -1 ||\n ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\n e.preventDefault()\n }\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {\n select(filteredItems.value[0])\n }\n\n isPristine.value = true\n }\n\n if (e.key === 'ArrowDown' && highlightFirst.value) {\n listRef.value?.focus('next')\n }\n\n if (e.key === 'Enter' && search.value) {\n select(transformItem(props, search.value))\n if (hasSelectionSlot.value) _search.value = ''\n }\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (\n !props.multiple &&\n hasSelectionSlot.value &&\n model.value.length > 0 &&\n !search.value\n ) return select(model.value[0], false)\n\n if (~selectionIndex.value) {\n const originalSelectionIndex = selectionIndex.value\n select(model.value[selectionIndex.value], false)\n\n selectionIndex.value = originalSelectionIndex >= length - 1 ? (length - 2) : originalSelectionIndex\n } else if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n }\n\n if (!props.multiple) return\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (model.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (model.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n }\n function onAfterLeave () {\n if (isFocused.value) {\n isPristine.value = true\n vTextFieldRef.value?.focus()\n }\n }\n /** @param set - null means toggle */\n function select (item: ListItem | undefined, set: boolean | null = true) {\n if (!item || item.props.disabled) return\n\n if (props.multiple) {\n const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value))\n const add = set == null ? !~index : set\n\n if (~index) {\n const value = add ? [...model.value, item] : [...model.value]\n value.splice(index, 1)\n model.value = value\n } else if (add) {\n model.value = [...model.value, item]\n }\n\n if (props.clearOnSelect) {\n search.value = ''\n }\n } else {\n const add = set !== false\n model.value = add ? [item] : []\n _search.value = add && !hasSelectionSlot.value ? item.title : ''\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n setTimeout(() => {\n listHasFocus.value = true\n })\n }\n function onFocusout (e: FocusEvent) {\n listHasFocus.value = false\n }\n function onUpdateModelValue (v: any) {\n if (v == null || (v === '' && !props.multiple && !hasSelectionSlot.value)) model.value = []\n }\n\n watch(isFocused, (val, oldVal) => {\n if (val || val === oldVal) return\n\n selectionIndex.value = -1\n menu.value = false\n\n if (\n highlightFirst.value &&\n !listHasFocus.value &&\n !model.value.some(({ value }) => value === displayItems.value[0].value)\n ) {\n select(displayItems.value[0])\n return\n }\n\n if (search.value) {\n if (props.multiple) {\n select(transformItem(props, search.value))\n return\n }\n\n if (!hasSelectionSlot.value) return\n\n if (model.value.some(({ title }) => title === search.value)) {\n _search.value = ''\n } else {\n select(transformItem(props, search.value))\n }\n }\n })\n\n watch(menu, () => {\n if (!props.hideSelected && menu.value && model.value.length) {\n const index = displayItems.value.findIndex(\n item => model.value.some(s => props.valueComparator(s.value, item.value))\n )\n IN_BROWSER && window.requestAnimationFrame(() => {\n index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index)\n })\n }\n })\n\n watch(() => props.items, (newVal, oldVal) => {\n if (menu.value) return\n\n if (isFocused.value && !oldVal.length && newVal.length) {\n menu.value = true\n }\n })\n\n useRender(() => {\n const hasList = !!(\n (!props.hideNoData || displayItems.value.length) ||\n slots['prepend-item'] ||\n slots['append-item'] ||\n slots['no-data']\n )\n const isDirty = model.value.length > 0\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n props.class,\n ]}\n style={ props.style }\n readonly={ props.readonly }\n placeholder={ isDirty ? undefined : props.placeholder }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n \n { hasList && (\n e.preventDefault() }\n onKeydown={ onListKeydown }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onScrollPassive={ onListScroll }\n tabindex=\"-1\"\n aria-live=\"polite\"\n color={ props.itemColor ?? props.color }\n { ...props.listProps }\n >\n { slots['prepend-item']?.() }\n\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n \n ))}\n\n \n { ({ item, index, itemRef }) => {\n const itemProps = mergeProps(item.props, {\n ref: itemRef,\n key: index,\n active: (highlightFirst.value && index === 0) ? true : undefined,\n onClick: () => select(item, null),\n })\n\n return slots.item?.({\n item,\n index,\n props: itemProps,\n }) ?? (\n \n {{\n prepend: ({ isSelected }) => (\n <>\n { props.multiple && !props.hideSelected ? (\n \n ) : undefined }\n\n { item.props.prependAvatar && (\n \n )}\n\n { item.props.prependIcon && (\n \n )}\n \n ),\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n \n )\n }}\n \n\n { slots['append-item']?.() }\n \n )}\n \n\n { model.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item, false)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n onChipClose(e)\n },\n onMousedown (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n },\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection\n const slotContent = hasSlot\n ? ensureValidVNode(\n hasChips.value\n ? slots.chip!({ item, index, props: slotProps })\n : slots.selection!({ item, index })\n )\n : undefined\n\n if (hasSlot && !slotContent) return undefined\n\n return (\n \n { hasChips.value ? (\n !slots.chip ? (\n \n ) : (\n \n { slotContent }\n \n )\n ) : (\n slotContent ?? (\n \n { item.title }\n { props.multiple && (index < model.value.length - 1) && (\n ,\n )}\n \n )\n )}\n \n )\n })}\n \n ),\n 'append-inner': (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { (!props.hideNoData || props.items.length) && props.menuIcon ? (\n \n ) : undefined }\n \n ),\n }}\n \n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType\n","// Utilities\nimport { createRange, padStart } from '@/util'\n\n// Types\nimport type { DateAdapter } from '../DateAdapter'\n\ntype CustomDateFormat = Intl.DateTimeFormatOptions | ((date: Date, formatString: string, locale: string) => string)\n\nconst firstDay: Record = {\n '001': 1,\n AD: 1,\n AE: 6,\n AF: 6,\n AG: 0,\n AI: 1,\n AL: 1,\n AM: 1,\n AN: 1,\n AR: 1,\n AS: 0,\n AT: 1,\n AU: 1,\n AX: 1,\n AZ: 1,\n BA: 1,\n BD: 0,\n BE: 1,\n BG: 1,\n BH: 6,\n BM: 1,\n BN: 1,\n BR: 0,\n BS: 0,\n BT: 0,\n BW: 0,\n BY: 1,\n BZ: 0,\n CA: 0,\n CH: 1,\n CL: 1,\n CM: 1,\n CN: 1,\n CO: 0,\n CR: 1,\n CY: 1,\n CZ: 1,\n DE: 1,\n DJ: 6,\n DK: 1,\n DM: 0,\n DO: 0,\n DZ: 6,\n EC: 1,\n EE: 1,\n EG: 6,\n ES: 1,\n ET: 0,\n FI: 1,\n FJ: 1,\n FO: 1,\n FR: 1,\n GB: 1,\n 'GB-alt-variant': 0,\n GE: 1,\n GF: 1,\n GP: 1,\n GR: 1,\n GT: 0,\n GU: 0,\n HK: 0,\n HN: 0,\n HR: 1,\n HU: 1,\n ID: 0,\n IE: 1,\n IL: 0,\n IN: 0,\n IQ: 6,\n IR: 6,\n IS: 1,\n IT: 1,\n JM: 0,\n JO: 6,\n JP: 0,\n KE: 0,\n KG: 1,\n KH: 0,\n KR: 0,\n KW: 6,\n KZ: 1,\n LA: 0,\n LB: 1,\n LI: 1,\n LK: 1,\n LT: 1,\n LU: 1,\n LV: 1,\n LY: 6,\n MC: 1,\n MD: 1,\n ME: 1,\n MH: 0,\n MK: 1,\n MM: 0,\n MN: 1,\n MO: 0,\n MQ: 1,\n MT: 0,\n MV: 5,\n MX: 0,\n MY: 1,\n MZ: 0,\n NI: 0,\n NL: 1,\n NO: 1,\n NP: 0,\n NZ: 1,\n OM: 6,\n PA: 0,\n PE: 0,\n PH: 0,\n PK: 0,\n PL: 1,\n PR: 0,\n PT: 0,\n PY: 0,\n QA: 6,\n RE: 1,\n RO: 1,\n RS: 1,\n RU: 1,\n SA: 0,\n SD: 6,\n SE: 1,\n SG: 0,\n SI: 1,\n SK: 1,\n SM: 1,\n SV: 0,\n SY: 6,\n TH: 0,\n TJ: 1,\n TM: 1,\n TR: 1,\n TT: 0,\n TW: 0,\n UA: 1,\n UM: 0,\n US: 0,\n UY: 1,\n UZ: 1,\n VA: 1,\n VE: 0,\n VI: 0,\n VN: 1,\n WS: 0,\n XK: 1,\n YE: 0,\n ZA: 0,\n ZW: 0,\n}\n\nfunction getWeekArray (date: Date, locale: string) {\n const weeks = []\n let currentWeek = []\n const firstDayOfMonth = startOfMonth(date)\n const lastDayOfMonth = endOfMonth(date)\n const firstDayWeekIndex = (firstDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()] + 7) % 7\n const lastDayWeekIndex = (lastDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()] + 7) % 7\n\n for (let i = 0; i < firstDayWeekIndex; i++) {\n const adjacentDay = new Date(firstDayOfMonth)\n adjacentDay.setDate(adjacentDay.getDate() - (firstDayWeekIndex - i))\n currentWeek.push(adjacentDay)\n }\n\n for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {\n const day = new Date(date.getFullYear(), date.getMonth(), i)\n\n // Add the day to the current week\n currentWeek.push(day)\n\n // If the current week has 7 days, add it to the weeks array and start a new week\n if (currentWeek.length === 7) {\n weeks.push(currentWeek)\n currentWeek = []\n }\n }\n\n for (let i = 1; i < 7 - lastDayWeekIndex; i++) {\n const adjacentDay = new Date(lastDayOfMonth)\n adjacentDay.setDate(adjacentDay.getDate() + i)\n currentWeek.push(adjacentDay)\n }\n\n if (currentWeek.length > 0) {\n weeks.push(currentWeek)\n }\n\n return weeks\n}\n\nfunction startOfWeek (date: Date, locale: string) {\n const d = new Date(date)\n while (d.getDay() !== (firstDay[locale.slice(-2).toUpperCase()] ?? 0)) {\n d.setDate(d.getDate() - 1)\n }\n return d\n}\n\nfunction endOfWeek (date: Date, locale: string) {\n const d = new Date(date)\n const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7\n while (d.getDay() !== lastDay) {\n d.setDate(d.getDate() + 1)\n }\n return d\n}\n\nfunction startOfMonth (date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction endOfMonth (date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0)\n}\n\nfunction parseLocalDate (value: string): Date {\n const parts = value.split('-').map(Number)\n\n // new Date() uses local time zone when passing individual date component values\n return new Date(parts[0], parts[1] - 1, parts[2])\n}\n\nconst _YYYMMDD = /^([12]\\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\\d|3[01]))$/\n\nfunction date (value?: any): Date | null {\n if (value == null) return new Date()\n\n if (value instanceof Date) return value\n\n if (typeof value === 'string') {\n let parsed\n\n if (_YYYMMDD.test(value)) {\n return parseLocalDate(value)\n } else {\n parsed = Date.parse(value)\n }\n\n if (!isNaN(parsed)) return new Date(parsed)\n }\n\n return null\n}\n\nconst sundayJanuarySecond2000 = new Date(2000, 0, 2)\n\nfunction getWeekdays (locale: string) {\n const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()]\n\n return createRange(7).map(i => {\n const weekday = new Date(sundayJanuarySecond2000)\n weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i)\n return new Intl.DateTimeFormat(locale, { weekday: 'narrow' }).format(weekday)\n })\n}\n\nfunction format (\n value: Date,\n formatString: string,\n locale: string,\n formats?: Record\n): string {\n const newDate = date(value) ?? new Date()\n const customFormat = formats?.[formatString]\n\n if (typeof customFormat === 'function') {\n return customFormat(newDate, formatString, locale)\n }\n\n let options: Intl.DateTimeFormatOptions = {}\n switch (formatString) {\n case 'fullDate':\n options = { year: 'numeric', month: 'long', day: 'numeric' }\n break\n case 'fullDateWithWeekday':\n options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }\n break\n case 'normalDate':\n const day = newDate.getDate()\n const month = new Intl.DateTimeFormat(locale, { month: 'long' }).format(newDate)\n return `${day} ${month}`\n case 'normalDateWithWeekday':\n options = { weekday: 'short', day: 'numeric', month: 'short' }\n break\n case 'shortDate':\n options = { month: 'short', day: 'numeric' }\n break\n case 'year':\n options = { year: 'numeric' }\n break\n case 'month':\n options = { month: 'long' }\n break\n case 'monthShort':\n options = { month: 'short' }\n break\n case 'monthAndYear':\n options = { month: 'long', year: 'numeric' }\n break\n case 'monthAndDate':\n options = { month: 'long', day: 'numeric' }\n break\n case 'weekday':\n options = { weekday: 'long' }\n break\n case 'weekdayShort':\n options = { weekday: 'short' }\n break\n case 'dayOfMonth':\n return new Intl.NumberFormat(locale).format(newDate.getDate())\n case 'hours12h':\n options = { hour: 'numeric', hour12: true }\n break\n case 'hours24h':\n options = { hour: 'numeric', hour12: false }\n break\n case 'minutes':\n options = { minute: 'numeric' }\n break\n case 'seconds':\n options = { second: 'numeric' }\n break\n case 'fullTime':\n options = { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'fullTime12h':\n options = { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'fullTime24h':\n options = { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }\n break\n case 'fullDateTime':\n options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'fullDateTime12h':\n options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'fullDateTime24h':\n options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }\n break\n case 'keyboardDate':\n options = { year: 'numeric', month: '2-digit', day: '2-digit' }\n break\n case 'keyboardDateTime':\n options = { year: 'numeric', month: '2-digit', day: '2-digit', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }\n break\n case 'keyboardDateTime12h':\n options = { year: 'numeric', month: '2-digit', day: '2-digit', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true }\n break\n case 'keyboardDateTime24h':\n options = { year: 'numeric', month: '2-digit', day: '2-digit', hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }\n break\n default:\n options = customFormat ?? { timeZone: 'UTC', timeZoneName: 'short' }\n }\n\n return new Intl.DateTimeFormat(locale, options).format(newDate)\n}\n\nfunction toISO (adapter: DateAdapter, value: Date) {\n const date = adapter.toJsDate(value)\n const year = date.getFullYear()\n const month = padStart(String(date.getMonth() + 1), 2, '0')\n const day = padStart(String(date.getDate()), 2, '0')\n\n return `${year}-${month}-${day}`\n}\n\nfunction parseISO (value: string) {\n const [year, month, day] = value.split('-').map(Number)\n\n return new Date(year, month - 1, day)\n}\n\nfunction addMinutes (date: Date, amount: number) {\n const d = new Date(date)\n d.setMinutes(d.getMinutes() + amount)\n return d\n}\n\nfunction addHours (date: Date, amount: number) {\n const d = new Date(date)\n d.setHours(d.getHours() + amount)\n return d\n}\n\nfunction addDays (date: Date, amount: number) {\n const d = new Date(date)\n d.setDate(d.getDate() + amount)\n return d\n}\n\nfunction addWeeks (date: Date, amount: number) {\n const d = new Date(date)\n d.setDate(d.getDate() + (amount * 7))\n return d\n}\n\nfunction addMonths (date: Date, amount: number) {\n const d = new Date(date)\n d.setDate(1)\n d.setMonth(d.getMonth() + amount)\n return d\n}\n\nfunction getYear (date: Date) {\n return date.getFullYear()\n}\n\nfunction getMonth (date: Date) {\n return date.getMonth()\n}\n\nfunction getDate (date: Date) {\n return date.getDate()\n}\n\nfunction getNextMonth (date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 1)\n}\n\nfunction getPreviousMonth (date: Date) {\n return new Date(date.getFullYear(), date.getMonth() - 1, 1)\n}\n\nfunction getHours (date: Date) {\n return date.getHours()\n}\n\nfunction getMinutes (date: Date) {\n return date.getMinutes()\n}\n\nfunction startOfYear (date: Date) {\n return new Date(date.getFullYear(), 0, 1)\n}\nfunction endOfYear (date: Date) {\n return new Date(date.getFullYear(), 11, 31)\n}\n\nfunction isWithinRange (date: Date, range: [Date, Date]) {\n return isAfter(date, range[0]) && isBefore(date, range[1])\n}\n\nfunction isValid (date: any) {\n const d = new Date(date)\n\n return d instanceof Date && !isNaN(d.getTime())\n}\n\nfunction isAfter (date: Date, comparing: Date) {\n return date.getTime() > comparing.getTime()\n}\n\nfunction isAfterDay (date: Date, comparing: Date): boolean {\n return isAfter(startOfDay(date), startOfDay(comparing))\n}\n\nfunction isBefore (date: Date, comparing: Date) {\n return date.getTime() < comparing.getTime()\n}\n\nfunction isEqual (date: Date, comparing: Date) {\n return date.getTime() === comparing.getTime()\n}\n\nfunction isSameDay (date: Date, comparing: Date) {\n return date.getDate() === comparing.getDate() &&\n date.getMonth() === comparing.getMonth() &&\n date.getFullYear() === comparing.getFullYear()\n}\n\nfunction isSameMonth (date: Date, comparing: Date) {\n return date.getMonth() === comparing.getMonth() &&\n date.getFullYear() === comparing.getFullYear()\n}\n\nfunction isSameYear (date: Date, comparing: Date) {\n return date.getFullYear() === comparing.getFullYear()\n}\n\nfunction getDiff (date: Date, comparing: Date | string, unit?: string) {\n const d = new Date(date)\n const c = new Date(comparing)\n\n switch (unit) {\n case 'years':\n return d.getFullYear() - c.getFullYear()\n case 'quarters':\n return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4)\n case 'months':\n return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12\n case 'weeks':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7))\n case 'days':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24))\n case 'hours':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60))\n case 'minutes':\n return Math.floor((d.getTime() - c.getTime()) / (1000 * 60))\n case 'seconds':\n return Math.floor((d.getTime() - c.getTime()) / 1000)\n default: {\n return d.getTime() - c.getTime()\n }\n }\n}\n\nfunction setHours (date: Date, count: number) {\n const d = new Date(date)\n d.setHours(count)\n return d\n}\n\nfunction setMinutes (date: Date, count: number) {\n const d = new Date(date)\n d.setMinutes(count)\n return d\n}\n\nfunction setMonth (date: Date, count: number) {\n const d = new Date(date)\n d.setMonth(count)\n return d\n}\n\nfunction setDate (date: Date, day: number) {\n const d = new Date(date)\n d.setDate(day)\n return d\n}\n\nfunction setYear (date: Date, year: number) {\n const d = new Date(date)\n d.setFullYear(year)\n return d\n}\n\nfunction startOfDay (date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0)\n}\n\nfunction endOfDay (date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999)\n}\n\nexport class VuetifyDateAdapter implements DateAdapter {\n locale: string\n formats?: Record\n\n constructor (options: { locale: string, formats?: Record }) {\n this.locale = options.locale\n this.formats = options.formats\n }\n\n date (value?: any) {\n return date(value)\n }\n\n toJsDate (date: Date) {\n return date\n }\n\n toISO (date: Date): string {\n return toISO(this, date)\n }\n\n parseISO (date: string) {\n return parseISO(date)\n }\n\n addMinutes (date: Date, amount: number) {\n return addMinutes(date, amount)\n }\n\n addHours (date: Date, amount: number) {\n return addHours(date, amount)\n }\n\n addDays (date: Date, amount: number) {\n return addDays(date, amount)\n }\n\n addWeeks (date: Date, amount: number) {\n return addWeeks(date, amount)\n }\n\n addMonths (date: Date, amount: number) {\n return addMonths(date, amount)\n }\n\n getWeekArray (date: Date) {\n return getWeekArray(date, this.locale)\n }\n\n startOfWeek (date: Date): Date {\n return startOfWeek(date, this.locale)\n }\n\n endOfWeek (date: Date): Date {\n return endOfWeek(date, this.locale)\n }\n\n startOfMonth (date: Date) {\n return startOfMonth(date)\n }\n\n endOfMonth (date: Date) {\n return endOfMonth(date)\n }\n\n format (date: Date, formatString: string) {\n return format(date, formatString, this.locale, this.formats)\n }\n\n isEqual (date: Date, comparing: Date) {\n return isEqual(date, comparing)\n }\n\n isValid (date: any) {\n return isValid(date)\n }\n\n isWithinRange (date: Date, range: [Date, Date]) {\n return isWithinRange(date, range)\n }\n\n isAfter (date: Date, comparing: Date) {\n return isAfter(date, comparing)\n }\n\n isAfterDay (date: Date, comparing: Date) {\n return isAfterDay(date, comparing)\n }\n\n isBefore (date: Date, comparing: Date) {\n return !isAfter(date, comparing) && !isEqual(date, comparing)\n }\n\n isSameDay (date: Date, comparing: Date) {\n return isSameDay(date, comparing)\n }\n\n isSameMonth (date: Date, comparing: Date) {\n return isSameMonth(date, comparing)\n }\n\n isSameYear (date: Date, comparing: Date) {\n return isSameYear(date, comparing)\n }\n\n setMinutes (date: Date, count: number) {\n return setMinutes(date, count)\n }\n\n setHours (date: Date, count: number) {\n return setHours(date, count)\n }\n\n setMonth (date: Date, count: number) {\n return setMonth(date, count)\n }\n\n setDate (date: Date, day: number): Date {\n return setDate(date, day)\n }\n\n setYear (date: Date, year: number) {\n return setYear(date, year)\n }\n\n getDiff (date: Date, comparing: Date | string, unit?: string) {\n return getDiff(date, comparing, unit)\n }\n\n getWeekdays () {\n return getWeekdays(this.locale)\n }\n\n getYear (date: Date) {\n return getYear(date)\n }\n\n getMonth (date: Date) {\n return getMonth(date)\n }\n\n getDate (date: Date) {\n return getDate(date)\n }\n\n getNextMonth (date: Date) {\n return getNextMonth(date)\n }\n\n getPreviousMonth (date: Date) {\n return getPreviousMonth(date)\n }\n\n getHours (date: Date) {\n return getHours(date)\n }\n\n getMinutes (date: Date) {\n return getMinutes(date)\n }\n\n startOfDay (date: Date) {\n return startOfDay(date)\n }\n\n endOfDay (date: Date) {\n return endOfDay(date)\n }\n\n startOfYear (date: Date) {\n return startOfYear(date)\n }\n\n endOfYear (date: Date) {\n return endOfYear(date)\n }\n}\n","// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { inject, reactive, watch } from 'vue'\nimport { mergeDeep } from '@/util'\n\n// Types\nimport type { InjectionKey } from 'vue'\nimport type { DateAdapter } from './DateAdapter'\nimport type { LocaleInstance } from '@/composables/locale'\n\n// Adapters\nimport { VuetifyDateAdapter } from './adapters/vuetify'\n\nexport interface DateInstance extends DateModule.InternalAdapter {\n locale?: any\n}\n\n/** Supports module augmentation to specify date adapter types */\nexport namespace DateModule {\n interface Adapter {}\n\n export type InternalAdapter = {} extends Adapter ? DateAdapter : Adapter\n}\n\nexport type InternalDateOptions = {\n adapter: (new (options: { locale: any, formats?: any }) => DateInstance) | DateInstance\n formats?: Record\n locale: Record\n}\n\nexport type DateOptions = Partial\n\nexport const DateOptionsSymbol: InjectionKey = Symbol.for('vuetify:date-options')\nexport const DateAdapterSymbol: InjectionKey = Symbol.for('vuetify:date-adapter')\n\nexport function createDate (options: DateOptions | undefined, locale: LocaleInstance) {\n const _options = mergeDeep({\n adapter: VuetifyDateAdapter,\n locale: {\n af: 'af-ZA',\n // ar: '', # not the same value for all variants\n bg: 'bg-BG',\n ca: 'ca-ES',\n ckb: '',\n cs: 'cs-CZ',\n de: 'de-DE',\n el: 'el-GR',\n en: 'en-US',\n // es: '', # not the same value for all variants\n et: 'et-EE',\n fa: 'fa-IR',\n fi: 'fi-FI',\n // fr: '', #not the same value for all variants\n hr: 'hr-HR',\n hu: 'hu-HU',\n he: 'he-IL',\n id: 'id-ID',\n it: 'it-IT',\n ja: 'ja-JP',\n ko: 'ko-KR',\n lv: 'lv-LV',\n lt: 'lt-LT',\n nl: 'nl-NL',\n no: 'no-NO',\n pl: 'pl-PL',\n pt: 'pt-PT',\n ro: 'ro-RO',\n ru: 'ru-RU',\n sk: 'sk-SK',\n sl: 'sl-SI',\n srCyrl: 'sr-SP',\n srLatn: 'sr-SP',\n sv: 'sv-SE',\n th: 'th-TH',\n tr: 'tr-TR',\n az: 'az-AZ',\n uk: 'uk-UA',\n vi: 'vi-VN',\n zhHans: 'zh-CN',\n zhHant: 'zh-TW',\n },\n }, options) as InternalDateOptions\n\n return {\n options: _options,\n instance: createInstance(_options, locale),\n }\n}\n\nfunction createInstance (options: InternalDateOptions, locale: LocaleInstance) {\n const instance = reactive(\n typeof options.adapter === 'function'\n // eslint-disable-next-line new-cap\n ? new options.adapter({\n locale: options.locale[locale.current.value] ?? locale.current.value,\n formats: options.formats,\n })\n : options.adapter\n )\n\n watch(locale.current, value => {\n instance.locale = options.locale[value] ?? value ?? instance.locale\n })\n\n return instance\n}\n\nexport function useDate (): DateInstance {\n const options = inject(DateOptionsSymbol)\n\n if (!options) throw new Error('[Vuetify] Could not find injected date options')\n\n const locale = useLocale()\n\n return createInstance(options, locale)\n}\n\n// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024\nexport function getWeek (adapter: DateAdapter, value: any) {\n const date = adapter.toJsDate(value)\n let year = date.getFullYear()\n let d1w1 = new Date(year, 0, 1)\n\n if (date < d1w1) {\n year = year - 1\n d1w1 = new Date(year, 0, 1)\n } else {\n const tv = new Date(year + 1, 0, 1)\n if (date >= tv) {\n year = year + 1\n d1w1 = tv\n }\n }\n\n const diffTime = Math.abs(date.getTime() - d1w1.getTime())\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n\n return Math.floor(diffDays / 7) + 1\n}\n","// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, toRaw, watchEffect } from 'vue'\nimport { deepEqual, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Ref, VNode } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type VConfirmEditSlots = {\n default: {\n model: Ref\n get actions (): VNode\n }\n}\n\nexport const makeVConfirmEditProps = propsFactory({\n modelValue: null,\n color: String,\n cancelText: {\n type: String,\n default: '$vuetify.confirmEdit.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.confirmEdit.ok',\n },\n}, 'VConfirmEdit')\n\nexport const VConfirmEdit = genericComponent (\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n 'onSave'?: (value: T) => void\n },\n slots: VConfirmEditSlots\n) => GenericProps>()({\n name: 'VConfirmEdit',\n\n props: makeVConfirmEditProps(),\n\n emits: {\n cancel: () => true,\n save: (value: any) => true,\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const internalModel = ref()\n watchEffect(() => {\n internalModel.value = structuredClone(toRaw(model.value))\n })\n\n const { t } = useLocale()\n\n const isPristine = computed(() => {\n return deepEqual(model.value, internalModel.value)\n })\n\n function save () {\n model.value = internalModel.value\n emit('save', internalModel.value)\n }\n\n function cancel () {\n internalModel.value = structuredClone(toRaw(model.value))\n emit('cancel')\n }\n\n let actionsUsed = false\n useRender(() => {\n const actions = (\n <>\n \n\n \n \n )\n return (\n <>\n {\n slots.default?.({\n model: internalModel,\n get actions () {\n actionsUsed = true\n return actions\n },\n })\n }\n\n { !actionsUsed && actions }\n \n )\n })\n },\n})\n\nexport type VConfirmEdit = InstanceType\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { inject, provide, toRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem } from '../types'\n\nexport const makeDataTableExpandProps = propsFactory({\n expandOnClick: Boolean,\n showExpand: Boolean,\n expanded: {\n type: Array as PropType,\n default: () => ([]),\n },\n}, 'DataTable-expand')\n\nexport const VDataTableExpandedKey: InjectionKey<{\n expand: (item: DataTableItem, value: boolean) => void\n expanded: Ref>\n expandOnClick: Ref\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n}> = Symbol.for('vuetify:datatable:expanded')\n\ntype ExpandProps = {\n expandOnClick: boolean\n expanded: readonly string[]\n 'onUpdate:expanded': ((value: any[]) => void) | undefined\n}\n\nexport function provideExpanded (props: ExpandProps) {\n const expandOnClick = toRef(props, 'expandOnClick')\n const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {\n return new Set(v)\n }, v => {\n return [...v.values()]\n })\n\n function expand (item: DataTableItem, value: boolean) {\n const newExpanded = new Set(expanded.value)\n\n if (!value) {\n newExpanded.delete(item.value)\n } else {\n newExpanded.add(item.value)\n }\n\n expanded.value = newExpanded\n }\n\n function isExpanded (item: DataTableItem) {\n return expanded.value.has(item.value)\n }\n\n function toggleExpand (item: DataTableItem) {\n expand(item, !isExpanded(item))\n }\n\n const data = { expand, expanded, expandOnClick, isExpanded, toggleExpand }\n\n provide(VDataTableExpandedKey, data)\n\n return data\n}\n\nexport function useExpanded () {\n const data = inject(VDataTableExpandedKey)\n\n if (!data) throw new Error('foo')\n\n return data\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableItem } from '../types'\n\nexport interface GroupableItem {\n type: 'item'\n raw: T\n}\n\nexport interface Group {\n type: 'group'\n depth: number\n id: string\n key: string\n value: any\n items: readonly (T | Group)[]\n}\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType,\n default: () => ([]),\n },\n}, 'DataTable-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref>\n toggleGroup: (group: Group) => void\n isGroupOpen: (group: Group) => boolean\n sortByWithGroups: Ref\n groupBy: Ref\n extractRows: (items: (DataTableItem | Group)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n groupBy: readonly SortItem[]\n 'onUpdate:groupBy': ((value: SortItem[]) => void) | undefined\n}\n\nexport function createGroupBy (props: GroupProps) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n return { groupBy }\n}\n\nexport function provideGroupBy (options: { groupBy: Ref, sortBy: Ref }) {\n const { groupBy, sortBy } = options\n const opened = ref(new Set())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(sortBy.value)\n })\n\n function isGroupOpen (group: Group) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: Group) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows (items: readonly (T | Group)[]) {\n function dive (group: Group): T[] {\n const arr = []\n\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item))\n } else {\n arr.push(item as T)\n }\n }\n\n return arr\n }\n return dive({ type: 'group', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty (items: readonly T[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems (items: readonly T[], groupBy: readonly string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: Group[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group',\n })\n })\n\n return groups\n}\n\nfunction flattenItems (items: readonly (T | Group)[], opened: Set): readonly (T | Group)[] {\n const flatItems: (T | Group)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened))\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems (\n items: Ref,\n groupBy: Ref,\n opened: Ref>\n) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value)\n })\n\n return { flatItems }\n}\n","// Utilities\nimport { computed, watch } from 'vue'\nimport { deepEqual, getCurrentInstance } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { SortItem } from './sort'\n\nexport function useOptions ({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n}: {\n page: Ref\n itemsPerPage: Ref\n sortBy: Ref\n groupBy: Ref\n search: Ref\n}) {\n const vm = getCurrentInstance('VDataTable')\n\n const options = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n groupBy: groupBy.value,\n search: search.value,\n }))\n\n let oldOptions: typeof options.value | null = null\n watch(options, () => {\n if (deepEqual(oldOptions, options.value)) return\n\n // Reset page when searching\n if (oldOptions && oldOptions.search !== options.value.search) {\n page.value = 1\n }\n\n vm.emit('update:options', options.value)\n oldOptions = options.value\n }, { deep: true, immediate: true })\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, watch, watchEffect } from 'vue'\nimport { clamp, getCurrentInstance, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { Group } from './group'\nimport type { EventProp } from '@/util'\n\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1,\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10,\n },\n}, 'DataTable-paginate')\n\nconst VDataTablePaginationSymbol: InjectionKey<{\n page: Ref\n itemsPerPage: Ref\n startIndex: Ref\n stopIndex: Ref\n pageCount: Ref\n itemsLength: Ref\n prevPage: () => void\n nextPage: () => void\n setPage: (value: number) => void\n setItemsPerPage: (value: number) => void\n}> = Symbol.for('vuetify:data-table-pagination')\n\ntype PaginationProps = {\n page: number | string\n 'onUpdate:page': EventProp | undefined\n itemsPerPage: number | string\n 'onUpdate:itemsPerPage': EventProp | undefined\n itemsLength?: number | string\n}\n\nexport function createPagination (props: PaginationProps) {\n const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1))\n const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10))\n\n return { page, itemsPerPage }\n}\n\nexport function providePagination (options: {\n page: Ref\n itemsPerPage: Ref\n itemsLength: Ref\n}) {\n const { page, itemsPerPage, itemsLength } = options\n\n const startIndex = computed(() => {\n if (itemsPerPage.value === -1) return 0\n\n return itemsPerPage.value * (page.value - 1)\n })\n const stopIndex = computed(() => {\n if (itemsPerPage.value === -1) return itemsLength.value\n\n return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value)\n })\n\n const pageCount = computed(() => {\n if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1\n\n return Math.ceil(itemsLength.value / itemsPerPage.value)\n })\n\n watchEffect(() => {\n if (page.value > pageCount.value) {\n page.value = pageCount.value\n }\n })\n\n function setItemsPerPage (value: number) {\n itemsPerPage.value = value\n page.value = 1\n }\n\n function nextPage () {\n page.value = clamp(page.value + 1, 1, pageCount.value)\n }\n\n function prevPage () {\n page.value = clamp(page.value - 1, 1, pageCount.value)\n }\n\n function setPage (value: number) {\n page.value = clamp(value, 1, pageCount.value)\n }\n\n const data = { page, itemsPerPage, startIndex, stopIndex, pageCount, itemsLength, nextPage, prevPage, setPage, setItemsPerPage }\n\n provide(VDataTablePaginationSymbol, data)\n\n return data\n}\n\nexport function usePagination () {\n const data = inject(VDataTablePaginationSymbol)\n\n if (!data) throw new Error('Missing pagination!')\n\n return data\n}\n\nexport function usePaginatedItems (options: {\n items: Ref)[]>\n startIndex: Ref\n stopIndex: Ref\n itemsPerPage: Ref\n}) {\n const vm = getCurrentInstance('usePaginatedItems')\n\n const { items, startIndex, stopIndex, itemsPerPage } = options\n const paginatedItems = computed(() => {\n if (itemsPerPage.value <= 0) return items.value\n\n return items.value.slice(startIndex.value, stopIndex.value)\n })\n\n watch(paginatedItems, val => {\n vm.emit('update:currentItems', val)\n })\n\n return { paginatedItems }\n}\n","// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide } from 'vue'\nimport { deepEqual, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItemProps } from './items'\nimport type { EventProp } from '@/util'\n\nexport interface SelectableItem {\n value: any\n selectable: boolean\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean\n allSelected: (data: {\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n }) => SelectableItem[]\n select: (data: {\n items: SelectableItem[]\n value: boolean\n selected: Set\n }) => Set\n selectAll: (data: {\n value: boolean\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n selected: Set\n }) => Set\n}\n\ntype SelectionProps = Pick & {\n modelValue: readonly any[]\n selectStrategy: 'single' | 'page' | 'all'\n valueComparator: typeof deepEqual\n 'onUpdate:modelValue': EventProp<[any[]]> | undefined\n}\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : [])\n },\n selectAll: ({ selected }) => selected,\n}\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ currentPage }) => currentPage,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, currentPage, selected }) => pageSelectStrategy.select({ items: currentPage, value, selected }),\n}\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, allItems, selected }) => allSelectStrategy.select({ items: allItems, value, selected }),\n}\n\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType,\n default: () => ([]),\n },\n valueComparator: {\n type: Function as PropType,\n default: deepEqual,\n },\n}, 'DataTable-select')\n\nexport const VDataTableSelectionSymbol: InjectionKey> = Symbol.for('vuetify:data-table-selection')\n\nexport function provideSelection (\n props: SelectionProps,\n { allItems, currentPage }: { allItems: Ref, currentPage: Ref }\n) {\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(wrapInArray(v).map(v => {\n return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v\n }))\n }, v => {\n return [...v.values()]\n })\n\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable))\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable))\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single': return singleSelectStrategy\n case 'all': return allSelectStrategy\n case 'page':\n default: return pageSelectStrategy\n }\n })\n\n function isSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every(item => selected.value.has(item.value))\n }\n\n function isSomeSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some(item => selected.value.has(item.value))\n }\n\n function select (items: SelectableItem[], value: boolean) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n function toggleSelect (item: SelectableItem) {\n select([item], !isSelected([item]))\n }\n\n function selectAll (value: boolean) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n const someSelected = computed(() => selected.value.size > 0)\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n })\n return !!items.length && isSelected(items)\n })\n const showSelectAll = computed(() => selectStrategy.value.showSelectAll)\n\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll,\n }\n\n provide(VDataTableSelectionSymbol, data)\n\n return data\n}\n\nexport function useSelection () {\n const data = inject(VDataTableSelectionSymbol)\n\n if (!data) throw new Error('Missing selection!')\n\n return data\n}\n","// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType,\n default: () => ([]),\n },\n customKeySort: Object as PropType>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(props, 'mustSort')\n const multiSort = toRef(props, 'multiSort')\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref\n mustSort: Ref\n multiSort: Ref\n page?: Ref\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) newSortBy = [...newSortBy, { key: column.key, order: 'asc' }]\n else newSortBy = [{ key: column.key, order: 'asc' }]\n } else if (item.order === 'desc') {\n if (mustSort.value) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems (\n props: { customKeySort: Record | undefined },\n items: Ref,\n sortBy: Ref,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref | undefined>\n sortRawFunctions?: Ref | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record\n sortFunctions?: Record\n sortRawFunctions?: Record\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = a[1][sortKey]\n let sortB = b[1][sortKey]\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n","// Utilities\nimport { computed } from 'vue'\nimport { getPropertyFromItem, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { GroupableItem } from '@/components/VDataTable/composables/group'\nimport type { SelectableItem } from '@/components/VDataTable/composables/select'\nimport type { SelectItemKey } from '@/util'\n\nexport interface DataIteratorItemProps {\n items: any[]\n itemValue: SelectItemKey\n itemSelectable: SelectItemKey\n returnObject: boolean\n}\n\nexport interface DataIteratorItem extends GroupableItem, SelectableItem {\n value: unknown\n}\n\n// Composables\nexport const makeDataIteratorItemsProps = propsFactory({\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'id',\n },\n itemSelectable: {\n type: [String, Array, Function] as PropType,\n default: null,\n },\n returnObject: Boolean,\n}, 'DataIterator-items')\n\nexport function transformItem (\n props: Omit,\n item: any\n): DataIteratorItem {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue)\n const selectable = getPropertyFromItem(item, props.itemSelectable, true)\n\n return {\n type: 'item',\n value,\n selectable,\n raw: item,\n }\n}\n\nexport function transformItems (\n props: Omit,\n items: DataIteratorItemProps['items']\n) {\n const array: DataIteratorItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nexport function useDataIteratorItems (props: DataIteratorItemProps) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n","// Components\nimport { VFadeTransition } from '@/components/transitions'\nimport { makeDataTableExpandProps, provideExpanded } from '@/components/VDataTable/composables/expand'\nimport { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from '@/components/VDataTable/composables/group'\nimport { useOptions } from '@/components/VDataTable/composables/options'\nimport {\n createPagination,\n makeDataTablePaginateProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/VDataTable/composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from '@/components/VDataTable/composables/select'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from '@/components/VDataTable/composables/sort'\n\n// Composables\nimport { makeDataIteratorItemsProps, useDataIteratorItems } from './composables/items'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { LoaderSlot } from '@/composables/loader'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { DataIteratorItem } from './composables/items'\nimport type { Group } from '@/components/VDataTable/composables/group'\nimport type { SortItem } from '@/components/VDataTable/composables/sort'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\ntype VDataIteratorSlotProps = {\n page: number\n itemsPerPage: number\n sortBy: readonly SortItem[]\n pageCount: number\n toggleSort: ReturnType['toggleSort']\n prevPage: ReturnType['prevPage']\n nextPage: ReturnType['nextPage']\n setPage: ReturnType['setPage']\n setItemsPerPage: ReturnType['setItemsPerPage']\n isSelected: ReturnType['isSelected']\n select: ReturnType['select']\n selectAll: ReturnType['selectAll']\n toggleSelect: ReturnType['toggleSelect']\n isExpanded: ReturnType['isExpanded']\n toggleExpand: ReturnType['toggleExpand']\n isGroupOpen: ReturnType['isGroupOpen']\n toggleGroup: ReturnType['toggleGroup']\n items: readonly DataIteratorItem[]\n groupedItems: readonly (DataIteratorItem | Group>)[]\n}\n\nexport type VDataIteratorSlots = {\n default: VDataIteratorSlotProps\n header: VDataIteratorSlotProps\n footer: VDataIteratorSlotProps\n loader: LoaderSlotProps\n 'no-data': never\n}\n\nexport const makeVDataIteratorProps = propsFactory({\n search: String,\n loading: Boolean,\n\n ...makeComponentProps(),\n ...makeDataIteratorItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps({ itemsPerPage: 5 }),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeFilterProps(),\n ...makeTagProps(),\n ...makeTransitionProps({\n transition: {\n component: VFadeTransition as Component,\n hideOnLeave: true,\n },\n }),\n}, 'VDataIterator')\n\nexport const VDataIterator = genericComponent (\n props: {\n items?: readonly T[]\n },\n slots: VDataIteratorSlots,\n) => GenericProps>()({\n name: 'VDataIterator',\n\n props: makeVDataIteratorProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:groupBy': (value: any) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'update:currentItems': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n const search = toRef(props, 'search')\n\n const { items } = useDataIteratorItems(props)\n const { filteredItems } = useFilter(props, items, search, { transform: item => item.raw })\n\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, { transform: item => item.raw })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const itemsLength = computed(() => flatItems.value.length)\n\n const {\n startIndex,\n stopIndex,\n pageCount,\n prevPage,\n nextPage,\n setItemsPerPage,\n setPage,\n } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n } = provideSelection(props, { allItems: items, currentPage: paginatedItemsWithoutGroups })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n const slotProps = computed(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n prevPage,\n nextPage,\n setPage,\n setItemsPerPage,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value,\n }))\n\n useRender(() => (\n \n { slots.header?.(slotProps.value) }\n\n \n { props.loading ? (\n \n { slotProps => slots.loader?.(slotProps) }\n \n ) : (\n
    \n { !paginatedItems.value.length\n ? slots['no-data']?.()\n : slots.default?.(slotProps.value)\n }\n
    \n )}\n
    \n\n { slots.footer?.(slotProps.value) }\n \n ))\n\n return {}\n },\n})\n\nexport type VDataIterator = InstanceType\n","// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue'\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\ntype ItemSlot = {\n isActive: boolean\n key: string | number\n page: string\n props: Record\n}\n\ntype ControlSlot = {\n icon: IconValue\n onClick: (e: Event) => void\n disabled: boolean\n 'aria-label': string\n 'aria-disabled': boolean\n}\n\nexport type VPaginationSlots = {\n item: ItemSlot\n first: ControlSlot\n prev: ControlSlot\n next: ControlSlot\n last: ControlSlot\n}\n\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start as number,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VPagination')\n\nexport const VPagination = genericComponent()({\n name: 'VPagination',\n\n props: makeVPaginationProps(),\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { width } = useDisplay()\n const maxButtons = shallowRef(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n\n maxButtons.value = getMax(totalWidth, itemWidth)\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible != null) return parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return getMax(width.value, 58)\n })\n\n function getMax (totalWidth: number, itemWidth: number) {\n const minButtons = props.showFirstLastPage ? 5 : 3\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\n }\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 0) return []\n else if (totalVisible.value === 1) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n 'aria-current': isActive,\n 'aria-label': t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n 'aria-label': t(props.firstAriaLabel),\n 'aria-disabled': prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n 'aria-label': t(props.previousAriaLabel),\n 'aria-disabled': prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n 'aria-label': t(props.nextAriaLabel),\n 'aria-disabled': nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n 'aria-label': t(props.lastAriaLabel),\n 'aria-disabled': nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n \n
      \n { props.showFirstLastPage && (\n
    • \n { slots.first ? slots.first(controls.value.first!) : (\n \n )}\n
    • \n )}\n\n
    • \n { slots.prev ? slots.prev(controls.value.prev) : (\n \n )}\n
    • \n\n { items.value.map((item, index) => (\n \n { slots.item ? slots.item(item) : (\n { item.page }\n )}\n \n ))}\n\n \n { slots.next ? slots.next(controls.value.next) : (\n \n )}\n \n\n { props.showFirstLastPage && (\n \n { slots.last ? slots.last(controls.value.last!) : (\n \n )}\n \n )}\n
    \n \n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType\n","// Utilities\nimport { onBeforeUpdate, ref } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useRefs () {\n const refs = ref<(T | undefined)[]>([]) as Ref<(T | undefined)[]>\n\n onBeforeUpdate(() => (refs.value = []))\n\n function updateRef (e: any, i: number) {\n refs.value[i] = e\n }\n\n return { refs, updateRef }\n}\n","// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VPagination } from '@/components/VPagination'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { usePagination } from './composables/paginate'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage',\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage',\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage',\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage',\n },\n itemsPerPageOptions: {\n type: Array as PropType,\n default: () => ([\n { value: 10, title: '10' },\n { value: 25, title: '25' },\n { value: 50, title: '50' },\n { value: 100, title: '100' },\n { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n ]),\n },\n showCurrentPage: Boolean,\n}, 'VDataTableFooter')\n\nexport const VDataTableFooter = genericComponent<{ prepend: never }>()({\n name: 'VDataTableFooter',\n\n props: makeVDataTableFooterProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage, setItemsPerPage } = usePagination()\n\n const itemsPerPageOptions = computed(() => (\n props.itemsPerPageOptions.map(option => {\n if (typeof option === 'number') {\n return {\n value: option,\n title: option === -1\n ? t('$vuetify.dataFooter.itemsPerPageAll')\n : String(option),\n }\n }\n\n return {\n ...option,\n title: !isNaN(Number(option.title)) ? option.title : t(option.title),\n }\n })\n ))\n\n useRender(() => {\n const paginationProps = VPagination.filterProps(props)\n\n return (\n
    \n { slots.prepend?.() }\n\n \n\n \n\n \n
    \n )\n })\n\n return {}\n },\n})\n","// Utilities\nimport { convertToUnit, defineFunctionalComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VDataTableColumn = defineFunctionalComponent({\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n fixed: Boolean,\n fixedOffset: [Number, String],\n height: [Number, String],\n lastFixed: Boolean,\n noPadding: Boolean,\n tag: String,\n width: [Number, String],\n maxWidth: [Number, String],\n nowrap: Boolean,\n}, (props, { slots }) => {\n const Tag = props.tag ?? 'td'\n return (\n \n { slots.default?.() }\n \n )\n})\n","// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue'\nimport { consoleError, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableCompareFunction, DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { FilterKeyFunctions } from '@/composables/filter'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array as PropType>,\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref\n columns: Ref\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly | undefined\n items: any[]\n}\n\nconst defaultHeader = { title: '', sortable: false }\nconst defaultActionHeader = { ...defaultHeader, width: 48 }\n\nfunction priorityQueue (arr: T[] = []) {\n const queue: { element: T, priority: number }[] = arr.map(element => ({ element, priority: 0 }))\n\n return {\n enqueue: (element: T, priority: number) => {\n let added = false\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i]\n if (item.priority > priority) {\n queue.splice(i, 0, { element, priority })\n added = true\n break\n }\n }\n\n if (!added) queue.push({ element, priority })\n },\n size: () => queue.length,\n count: () => {\n let count = 0\n\n if (!queue.length) return 0\n\n const whole = Math.floor(queue[0].priority)\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1\n }\n\n return count\n },\n dequeue: () => {\n return queue.shift()\n },\n }\n}\n\nfunction extractLeaves (item: InternalDataTableHeader, columns: InternalDataTableHeader[] = []) {\n if (!item.children) {\n columns.push(item)\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns)\n }\n }\n\n return columns\n}\n\nfunction extractKeys (headers: DeepReadonly, keys = new Set()) {\n for (const item of headers) {\n if (item.key) keys.add(item.key)\n\n if (item.children) {\n extractKeys(item.children, keys)\n }\n }\n\n return keys\n}\n\nfunction getDefaultItem (item: DeepReadonly) {\n if (!item.key) return undefined\n if (item.key === 'data-table-group') return defaultHeader\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader\n return undefined\n}\n\nfunction getDepth (item: InternalDataTableHeader, depth = 0): number {\n if (!item.children) return depth\n\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)))\n}\n\nfunction parseFixedColumns (items: InternalDataTableHeader[]) {\n let seenFixed = false\n function setFixed (item: InternalDataTableHeader, parentFixed = false) {\n if (!item) return\n\n if (parentFixed) {\n item.fixed = true\n }\n\n if (item.fixed) {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], true)\n }\n } else {\n if (!seenFixed) {\n item.lastFixed = true\n } else if (isNaN(+item.width!)) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`)\n }\n seenFixed = true\n }\n } else {\n if (item.children) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i])\n }\n } else {\n seenFixed = false\n }\n }\n }\n\n for (let i = items.length - 1; i >= 0; i--) {\n setFixed(items[i])\n }\n\n function setFixedOffset (item: InternalDataTableHeader, fixedOffset = 0) {\n if (!item) return fixedOffset\n\n if (item.children) {\n item.fixedOffset = fixedOffset\n for (const child of item.children) {\n fixedOffset = setFixedOffset(child, fixedOffset)\n }\n } else if (item.fixed) {\n item.fixedOffset = fixedOffset\n fixedOffset += parseFloat(item.width || '0') || 0\n }\n\n return fixedOffset\n }\n\n let fixedOffset = 0\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset)\n }\n}\n\nfunction parse (items: InternalDataTableHeader[], maxDepth: number) {\n const headers: InternalDataTableHeader[][] = []\n let currentDepth = 0\n const queue = priorityQueue(items)\n\n while (queue.size() > 0) {\n let rowSize = queue.count()\n const row: InternalDataTableHeader[] = []\n let fraction = 1\n while (rowSize > 0) {\n const { element: item, priority } = queue.dequeue()!\n const diff = maxDepth - currentDepth - getDepth(item)\n\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1,\n })\n\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + (fraction / Math.pow(10, currentDepth + 2))\n queue.enqueue(child, currentDepth + diff + sort)\n }\n }\n\n fraction += 1\n rowSize -= 1\n }\n currentDepth += 1\n headers.push(row)\n }\n\n const columns = items.map(item => extractLeaves(item)).flat()\n\n return { columns, headers }\n}\n\nfunction convertToInternalHeaders (items: DeepReadonly) {\n const internalHeaders: InternalDataTableHeader[] = []\n for (const item of items) {\n const defaultItem = { ...getDefaultItem(item), ...item }\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null)\n const value = defaultItem.value ?? key ?? null\n const internalItem: InternalDataTableHeader = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined,\n }\n\n internalHeaders.push(internalItem)\n }\n\n return internalHeaders\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref\n showSelect?: Ref\n showExpand?: Ref\n }\n) {\n const headers = ref([])\n const columns = ref([])\n const sortFunctions = ref>({})\n const sortRawFunctions = ref>({})\n const filterFunctions = ref({})\n\n watchEffect(() => {\n const _headers = props.headers ||\n Object.keys(props.items[0] ?? {}).map(key => ({ key, title: capitalize(key) })) as never\n\n const items = _headers.slice()\n const keys = extractKeys(items)\n\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({ key: 'data-table-group', title: 'Group' })\n }\n\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({ key: 'data-table-select' })\n }\n\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({ key: 'data-table-expand' })\n }\n\n const internalHeaders = convertToInternalHeaders(items)\n\n parseFixedColumns(internalHeaders)\n\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1\n const parsed = parse(internalHeaders, maxDepth)\n\n headers.value = parsed.headers\n columns.value = parsed.columns\n\n const flatHeaders = parsed.headers.flat(1)\n\n for (const header of flatHeaders) {\n if (!header.key) continue\n\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort\n }\n\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw\n }\n }\n\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter\n }\n }\n })\n\n const data = { headers, columns, sortFunctions, sortRawFunctions, filterFunctions }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n","// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VIcon } from '@/components/VIcon'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, mergeProps } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, PropType, UnwrapRef } from 'vue'\nimport type { provideSelection } from './composables/select'\nimport type { provideSort } from './composables/sort'\nimport type { InternalDataTableHeader } from './types'\nimport type { ItemProps } from '@/composables/list-items'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef['sortBy']>\n someSelected: UnwrapRef['someSelected']>\n allSelected: UnwrapRef['allSelected']>\n toggleSort: ReturnType['toggleSort']\n selectAll: ReturnType['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n isSorted: ReturnType['isSorted']\n}\n\nexport type VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType['selectAll']\n isSorted: ReturnType['isSorted']\n toggleSort: ReturnType['toggleSort']\n sortBy: UnwrapRef['sortBy']>\n someSelected: UnwrapRef['someSelected']>\n allSelected: UnwrapRef['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: HeadersSlotProps\n loader: LoaderSlotProps\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & { [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n headerProps: {\n type: Object as PropType>,\n },\n\n ...makeDisplayProps(),\n ...makeLoaderProps(),\n}, 'VDataTableHeaders')\n\nexport const VDataTableHeaders = genericComponent()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll, showSelectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n function getFixedStyles (column: InternalDataTableHeader, y: number): CSSProperties | undefined {\n if (!props.sticky && !column.fixed) return undefined\n\n return {\n position: 'sticky',\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined,\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const { displayClasses, mobile } = useDisplay(props)\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n } satisfies HeadersSlotProps))\n\n const headerCellClasses = computed(() => ([\n 'v-data-table__th',\n {\n 'v-data-table__th--sticky': props.sticky,\n },\n displayClasses.value,\n loaderClasses.value,\n ]))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n const headerProps = mergeProps(props.headerProps ?? {}, column.headerProps ?? {})\n\n return (\n toggleSort(column) : undefined }\n fixed={ column.fixed }\n nowrap={ column.nowrap }\n lastFixed={ column.lastFixed }\n noPadding={ noPadding }\n { ...headerProps }\n >\n {{\n default: () => {\n const columnSlotName = `header.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['header.data-table-select']?.(columnSlotProps) ?? (showSelectAll.value && (\n \n ))\n }\n\n return (\n
    \n { column.title }\n { column.sortable && (\n \n )}\n { props.multiSort && isSorted(column) && (\n \n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n
    \n )}\n \n )\n },\n }}\n \n )\n }\n\n const VDataTableMobileHeaderCell = () => {\n const headerProps = mergeProps(props.headerProps ?? {} ?? {})\n\n const displayItems = computed(() => {\n return columns.value.filter(column => column?.sortable)\n })\n\n const appendIcon = computed(() => {\n const showSelectColumn = columns.value.find(column => column.key === 'data-table-select')\n\n if (showSelectColumn == null) return\n\n return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff'\n })\n\n return (\n \n
    \n sortBy.value = [] }\n appendIcon={ appendIcon.value }\n onClick:append={ () => selectAll(!allSelected.value) }\n >\n {{\n ...slots,\n chip: props => (\n toggleSort(props.item.raw) : undefined }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n { props.item.title }\n \n \n ),\n }}\n \n
    \n \n )\n }\n\n useRender(() => {\n return mobile.value ? (\n \n \n \n ) : (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n \n { row.map((column, x) => (\n \n ))}\n \n ))}\n\n { props.loading && (\n \n \n \n \n \n )}\n \n )\n })\n },\n})\n\nexport type VDataTableHeaders = InstanceType\n","// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useGroupBy } from './composables/group'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Group } from './composables/group'\n\nexport type VDataTableGroupHeaderRowSlots = {\n 'data-table-group': { item: Group, count: number, props: Record }\n 'data-table-select': { props: Record }\n}\n\nexport const makeVDataTableGroupHeaderRowProps = propsFactory({\n item: {\n type: Object as PropType,\n required: true,\n },\n}, 'VDataTableGroupHeaderRow')\n\nexport const VDataTableGroupHeaderRow = genericComponent()({\n name: 'VDataTableGroupHeaderRow',\n\n props: makeVDataTableGroupHeaderRowProps(),\n\n setup (props, { slots }) {\n const { isGroupOpen, toggleGroup, extractRows } = useGroupBy()\n const { isSelected, isSomeSelected, select } = useSelection()\n const { columns } = useHeaders()\n\n const rows = computed(() => {\n return extractRows([props.item])\n })\n\n return () => (\n \n { columns.value.map(column => {\n if (column.key === 'data-table-group') {\n const icon = isGroupOpen(props.item) ? '$expand' : '$next'\n const onClick = () => toggleGroup(props.item)\n\n return slots['data-table-group']?.({ item: props.item, count: rows.value.length, props: { icon, onClick } }) ?? (\n \n \n { props.item.value }\n ({ rows.value.length })\n \n )\n }\n\n if (column.key === 'data-table-select') {\n const modelValue = isSelected(rows.value)\n const indeterminate = isSomeSelected(rows.value) && !modelValue\n const selectGroup = (v: boolean) => select(rows.value, v)\n return slots['data-table-select']?.({ props: { modelValue, indeterminate, 'onUpdate:modelValue': selectGroup } }) ?? (\n \n \n \n )\n }\n\n return \n })}\n \n )\n },\n})\n","// Components\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\n\n// Utilities\nimport { toDisplayString, withModifiers } from 'vue'\nimport { EventProp, genericComponent, getObjectValueByPath, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { CellProps, DataTableItem, ItemKeySlot } from './types'\nimport type { VDataTableHeaderCellColumnSlotProps } from './VDataTableHeaders'\nimport type { GenericProps } from '@/util'\n\nexport type VDataTableRowSlots = {\n 'item.data-table-select': Omit, 'value'>\n 'item.data-table-expand': Omit, 'value'>\n 'header.data-table-select': VDataTableHeaderCellColumnSlotProps\n 'header.data-table-expand': VDataTableHeaderCellColumnSlotProps\n} & {\n [key: `item.${string}`]: ItemKeySlot\n [key: `header.${string}`]: VDataTableHeaderCellColumnSlotProps\n}\n\nexport const makeVDataTableRowProps = propsFactory({\n index: Number,\n item: Object as PropType,\n cellProps: [Object, Function] as PropType>,\n onClick: EventProp<[MouseEvent]>(),\n onContextmenu: EventProp<[MouseEvent]>(),\n onDblclick: EventProp<[MouseEvent]>(),\n\n ...makeDisplayProps(),\n}, 'VDataTableRow')\n\nexport const VDataTableRow = genericComponent(\n props: {\n item?: DataTableItem\n cellProps?: CellProps\n },\n slots: VDataTableRowSlots,\n) => GenericProps>()({\n name: 'VDataTableRow',\n\n props: makeVDataTableRowProps(),\n\n setup (props, { slots }) {\n const { displayClasses, mobile } = useDisplay(props, 'v-data-table__tr')\n const { isSelected, toggleSelect, someSelected, allSelected, selectAll } = useSelection()\n const { isExpanded, toggleExpand } = useExpanded()\n const { toggleSort, sortBy, isSorted } = useSort()\n const { columns } = useHeaders()\n\n useRender(() => (\n \n { props.item && columns.value.map((column, i) => {\n const item = props.item!\n const slotName = `item.${column.key}` as const\n const headerSlotName = `header.${column.key}` as const\n const slotProps = {\n index: props.index!,\n item: item.raw,\n internalItem: item,\n value: getObjectValueByPath(item.columns, column.key),\n column,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand,\n } satisfies ItemKeySlot\n\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon: () => '',\n }\n\n const cellProps = typeof props.cellProps === 'function'\n ? props.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value,\n column,\n })\n : props.cellProps\n const columnCellProps = typeof column.cellProps === 'function'\n ? column.cellProps({\n index: slotProps.index,\n item: slotProps.item,\n internalItem: slotProps.internalItem,\n value: slotProps.value,\n })\n : column.cellProps\n\n return (\n \n {{\n default: () => {\n if (slots[slotName] && !mobile.value) return slots[slotName]?.(slotProps)\n\n if (column.key === 'data-table-select') {\n return slots['item.data-table-select']?.(slotProps) ?? (\n toggleSelect(item), ['stop']) }\n />\n )\n }\n\n if (column.key === 'data-table-expand') {\n return slots['item.data-table-expand']?.(slotProps) ?? (\n toggleExpand(item), ['stop']) }\n />\n )\n }\n\n const displayValue = toDisplayString(slotProps.value)\n\n return !mobile.value ? displayValue : (\n <>\n
    \n { slots[headerSlotName]?.(columnSlotProps) ?? column.title }\n
    \n\n
    \n { slots[slotName]?.(slotProps) ?? displayValue }\n
    \n \n )\n },\n }}\n \n )\n })}\n \n ))\n },\n})\n\nexport type VDataTableRow = InstanceType\n","// Components\nimport { VDataTableGroupHeaderRow } from './VDataTableGroupHeaderRow'\nimport { VDataTableRow } from './VDataTableRow'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useGroupBy } from './composables/group'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { Fragment, mergeProps } from 'vue'\nimport { genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Group } from './composables/group'\nimport type { CellProps, DataTableItem, GroupHeaderSlot, ItemSlot, RowProps } from './types'\nimport type { VDataTableGroupHeaderRowSlots } from './VDataTableGroupHeaderRow'\nimport type { VDataTableRowSlots } from './VDataTableRow'\nimport type { GenericProps } from '@/util'\n\nexport type VDataTableRowsSlots = VDataTableGroupHeaderRowSlots & VDataTableRowSlots & {\n item: ItemSlot & { props: Record }\n loading: never\n 'group-header': GroupHeaderSlot\n 'no-data': never\n 'expanded-row': ItemSlot\n}\n\nexport const makeVDataTableRowsProps = propsFactory({\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideNoData: Boolean,\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n rowProps: [Object, Function] as PropType>,\n cellProps: [Object, Function] as PropType>,\n\n ...makeDisplayProps(),\n}, 'VDataTableRows')\n\nexport const VDataTableRows = genericComponent(\n props: {\n items?: readonly (DataTableItem | Group)[]\n },\n slots: VDataTableRowsSlots,\n) => GenericProps>()({\n name: 'VDataTableRows',\n\n inheritAttrs: false,\n\n props: makeVDataTableRowsProps(),\n\n setup (props, { attrs, slots }) {\n const { columns } = useHeaders()\n const { expandOnClick, toggleExpand, isExpanded } = useExpanded()\n const { isSelected, toggleSelect } = useSelection()\n const { toggleGroup, isGroupOpen } = useGroupBy()\n const { t } = useLocale()\n const { mobile } = useDisplay(props)\n\n useRender(() => {\n if (props.loading && (!props.items.length || slots.loading)) {\n return (\n \n \n { slots.loading?.() ?? t(props.loadingText) }\n \n \n )\n }\n\n if (!props.loading && !props.items.length && !props.hideNoData) {\n return (\n \n \n { slots['no-data']?.() ?? t(props.noDataText) }\n \n \n )\n }\n\n return (\n <>\n { props.items.map((item, index) => {\n if (item.type === 'group') {\n const slotProps = {\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n toggleGroup,\n isGroupOpen,\n } satisfies GroupHeaderSlot\n\n return slots['group-header'] ? slots['group-header'](slotProps) : (\n slotProps) }\n v-slots={ slots }\n />\n )\n }\n\n const slotProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n } satisfies ItemSlot\n\n const itemSlotProps = {\n ...slotProps,\n props: mergeProps(\n {\n key: `item_${item.key ?? item.index}`,\n onClick: expandOnClick.value ? () => {\n toggleExpand(item)\n } : undefined,\n index,\n item,\n cellProps: props.cellProps,\n mobile: mobile.value,\n },\n getPrefixedEventHandlers(attrs, ':row', () => slotProps),\n typeof props.rowProps === 'function'\n ? props.rowProps({\n item: slotProps.item,\n index: slotProps.index,\n internalItem: slotProps.internalItem,\n })\n : props.rowProps,\n ),\n }\n\n return (\n \n { slots.item ? slots.item(itemSlotProps) : (\n \n )}\n\n { isExpanded(item) && slots['expanded-row']?.(slotProps) }\n \n )\n })}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VDataTableRows = InstanceType\n","// Styles\nimport './VTable.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport type VTableSlots = {\n default: never\n top: never\n bottom: never\n wrapper: never\n}\n\nexport const makeVTableProps = propsFactory({\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n height: [Number, String],\n hover: Boolean,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VTable')\n\nexport const VTable = genericComponent()({\n name: 'VTable',\n\n props: makeVTableProps(),\n\n setup (props, { slots, emit }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n\n useRender(() => (\n \n { slots.top?.() }\n\n { slots.default ? (\n \n \n { slots.default() }\n
    \n \n ) : slots.wrapper?.()}\n\n { slots.bottom?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VTable = InstanceType\n","// Utilities\nimport { computed } from 'vue'\nimport { getPropertyFromItem, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { CellProps, DataTableItem, InternalDataTableHeader, RowProps } from '../types'\nimport type { SelectItemKey } from '@/util'\n\nexport interface DataTableItemProps {\n items: any[]\n itemValue: SelectItemKey\n itemSelectable: SelectItemKey\n returnObject: boolean\n}\n\n// Composables\nexport const makeDataTableItemsProps = propsFactory({\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'id',\n },\n itemSelectable: {\n type: [String, Array, Function] as PropType,\n default: null,\n },\n rowProps: [Object, Function] as PropType>,\n cellProps: [Object, Function] as PropType>,\n returnObject: Boolean,\n}, 'DataTable-items')\n\nexport function transformItem (\n props: Omit,\n item: any,\n index: number,\n columns: InternalDataTableHeader[]\n): DataTableItem {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue)\n const selectable = getPropertyFromItem(item, props.itemSelectable, true)\n const itemColumns = columns.reduce((obj, column) => {\n if (column.key != null) obj[column.key] = getPropertyFromItem(item, column.value!)\n return obj\n }, {} as Record)\n\n return {\n type: 'item',\n key: props.returnObject ? getPropertyFromItem(item, props.itemValue) : value,\n index,\n value,\n selectable,\n columns: itemColumns,\n raw: item,\n }\n}\n\nexport function transformItems (\n props: Omit,\n items: DataTableItemProps['items'],\n columns: InternalDataTableHeader[]\n): DataTableItem[] {\n return items.map((item, index) => transformItem(props, item, index, columns))\n}\n\nexport function useDataTableItems (props: DataTableItemProps, columns: Ref) {\n const items = computed(() => transformItems(props, props.items, columns.value))\n\n return { items }\n}\n","// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { makeVDataTableHeadersProps, VDataTableHeaders } from './VDataTableHeaders'\nimport { makeVDataTableRowsProps, VDataTableRows } from './VDataTableRows'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTableProps, VTable } from '@/components/VTable/VTable'\n\n// Composables\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemsProps, useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from './composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DeepReadonly, UnwrapRef } from 'vue'\nimport type { Group } from './composables/group'\nimport type { CellProps, DataTableHeader, DataTableItem, InternalDataTableHeader, RowProps } from './types'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport type VDataTableSlotProps = {\n page: number\n itemsPerPage: number\n sortBy: UnwrapRef['sortBy']>\n pageCount: number\n toggleSort: ReturnType['toggleSort']\n setItemsPerPage: ReturnType['setItemsPerPage']\n someSelected: boolean\n allSelected: boolean\n isSelected: ReturnType['isSelected']\n select: ReturnType['select']\n selectAll: ReturnType['selectAll']\n toggleSelect: ReturnType['toggleSelect']\n isExpanded: ReturnType['isExpanded']\n toggleExpand: ReturnType['toggleExpand']\n isGroupOpen: ReturnType['isGroupOpen']\n toggleGroup: ReturnType['toggleGroup']\n items: readonly T[]\n internalItems: readonly DataTableItem[]\n groupedItems: readonly (DataTableItem | Group>)[]\n columns: InternalDataTableHeader[]\n headers: InternalDataTableHeader[][]\n}\n\nexport type VDataTableSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n default: VDataTableSlotProps\n colgroup: VDataTableSlotProps\n top: VDataTableSlotProps\n body: VDataTableSlotProps\n tbody: VDataTableSlotProps\n thead: VDataTableSlotProps\n tfoot: VDataTableSlotProps\n bottom: VDataTableSlotProps\n 'body.prepend': VDataTableSlotProps\n 'body.append': VDataTableSlotProps\n 'footer.prepend': never\n}\n\nexport const makeDataTableProps = propsFactory({\n ...makeVDataTableRowsProps(),\n\n width: [String, Number],\n search: String,\n\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemsProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeVDataTableHeadersProps(),\n ...makeVTableProps(),\n}, 'DataTable')\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeFilterProps(),\n ...makeVDataTableFooterProps(),\n}, 'VDataTable')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTable = genericComponent(\n props: {\n items?: T\n itemValue?: SelectItemKey>\n rowProps?: RowProps>\n cellProps?: CellProps>\n itemSelectable?: SelectItemKey>\n headers?: DeepReadonly>[]>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableSlots>,\n) => GenericProps>()({\n name: 'VDataTable',\n\n props: makeVDataTableProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'update:currentItems': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n\n const {\n columns,\n headers,\n sortFunctions,\n sortRawFunctions,\n filterFunctions,\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions,\n })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => item.columns,\n sortFunctions,\n sortRawFunctions,\n })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n const itemsLength = computed(() => flatItems.value.length)\n\n const { startIndex, stopIndex, pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, currentPage: paginatedItemsWithoutGroups })\n\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed>(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: paginatedItemsWithoutGroups.value.map(item => item.raw),\n internalItems: paginatedItemsWithoutGroups.value,\n groupedItems: paginatedItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props)\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n \n {{\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : (\n <>\n { slots.colgroup?.(slotProps.value) }\n \n \n \n { slots.thead?.(slotProps.value) }\n \n { slots['body.prepend']?.(slotProps.value) }\n { slots.body ? slots.body(slotProps.value) : (\n \n )}\n { slots['body.append']?.(slotProps.value) }\n \n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n \n ),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : (\n <>\n \n\n \n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType\n","// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRow } from './VDataTableRow'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\nimport { VVirtualScrollItem } from '@/components/VVirtualScroll/VVirtualScrollItem'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { CellProps, RowProps } from '@/components/VDataTable/types'\nimport type { GenericProps, SelectItemKey, TemplateRef } from '@/util'\n\ntype VDataTableVirtualSlotProps = Omit<\n VDataTableSlotProps,\n | 'setItemsPerPage'\n | 'page'\n | 'pageCount'\n | 'itemsPerPage'\n>\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n colgroup: VDataTableVirtualSlotProps\n top: VDataTableVirtualSlotProps\n headers: VDataTableHeadersSlots['headers']\n bottom: VDataTableVirtualSlotProps\n 'body.prepend': VDataTableVirtualSlotProps\n 'body.append': VDataTableVirtualSlotProps\n item: {\n itemRef: TemplateRef\n }\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps(),\n}, 'VDataTableVirtual')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTableVirtual = genericComponent(\n props: {\n items?: T\n itemValue?: SelectItemKey>\n rowProps?: RowProps>\n cellProps?: CellProps>\n itemSelectable?: SelectItemKey>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableVirtualSlots>,\n) => GenericProps>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n\n const {\n columns,\n headers,\n filterFunctions,\n sortFunctions,\n sortRawFunctions,\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions,\n })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => item.columns,\n sortFunctions,\n sortRawFunctions,\n })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const {\n containerRef,\n markerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n handleScrollend,\n } = useVirtual(props, flatItems)\n const displayItems = computed(() => computedItems.value.map(item => item.raw))\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value.map(item => item.raw),\n internalItems: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n \n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n \n \n { slots.colgroup?.(slotProps.value) }\n \n \n \n \n \n \n \n\n { slots['body.prepend']?.(slotProps.value) }\n\n \n {{\n ...slots,\n item: itemSlotProps => (\n handleItemResize(itemSlotProps.internalItem.index, height) }\n >\n { ({ itemRef }) => (\n slots.item?.({ ...itemSlotProps, itemRef }) ?? (\n \n )\n )}\n \n ),\n }}\n \n\n { slots['body.append']?.(slotProps.value) }\n\n \n \n \n \n
    \n \n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n \n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType\n","// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VDivider } from '@/components/VDivider'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VDataTableSlotProps, VDataTableSlots } from './VDataTable'\nimport type { CellProps, RowProps } from '@/components/VDataTable/types'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps(),\n}, 'VDataTableServer')\n\ntype ItemType = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTableServer = genericComponent(\n props: {\n items?: T\n itemValue?: SelectItemKey>\n rowProps?: RowProps>\n cellProps?: CellProps>\n itemSelectable?: SelectItemKey>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableSlots>,\n) => GenericProps>()({\n name: 'VDataTableServer',\n\n props: makeVDataTableServerProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:itemsPerPage': (page: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (options: any) => true,\n 'update:groupBy': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened, isGroupOpen, toggleGroup, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems: items,\n currentPage: items,\n })\n\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const itemsWithoutGroups = computed(() => extractRows(items.value))\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search'),\n })\n\n provide('v-data-table', {\n toggleSort,\n sortBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed>(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: itemsWithoutGroups.value.map(item => item.raw),\n internalItems: itemsWithoutGroups.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableFooterProps = VDataTableFooter.filterProps(props)\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n \n {{\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : (\n <>\n { slots.colgroup?.(slotProps.value) }\n \n \n \n { slots.thead?.(slotProps.value) }\n \n { slots['body.prepend']?.(slotProps.value) }\n { slots.body ? slots.body(slotProps.value) : (\n \n )}\n { slots['body.append']?.(slotProps.value) }\n \n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n \n ),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : (\n <>\n \n\n \n \n ),\n }}\n \n )\n })\n },\n})\n\nexport type VDataTableServer = InstanceType\n","// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVContainerProps = propsFactory({\n fluid: {\n type: Boolean,\n default: false,\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VContainer')\n\nexport const VContainer = genericComponent()({\n name: 'VContainer',\n\n props: makeVContainerProps(),\n\n setup (props, { slots }) {\n const { rtlClasses } = useRtl()\n\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VContainer = InstanceType\n","// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { breakpoints } from '@/composables/display'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { capitalize, computed, h } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { Prop, PropType } from 'vue'\nimport type { Breakpoint } from '@/composables/display'\n\ntype BreakpointOffset = `offset${Capitalize}`\ntype BreakpointOrder = `order${Capitalize}`\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Record>)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n const offsetKey = ('offset' + capitalize(val)) as BreakpointOffset\n props[offsetKey] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Record>)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n const orderKey = ('order' + capitalize(val)) as BreakpointOrder\n props[orderKey] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Record>)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className: string = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n if (type === 'col') {\n className = 'v-' + className\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .v-col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch'] as const\n\nexport const makeVColProps = propsFactory({\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String as PropType,\n default: null,\n validator: (str: any) => ALIGN_SELF_VALUES.includes(str),\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VCol')\n\nexport const VCol = genericComponent()({\n name: 'VCol',\n\n props: makeVColProps(),\n\n setup (props, { slots }) {\n const classes = computed(() => {\n const classList: any[] = []\n\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('v-col-'))\n\n classList.push({\n // Default to .v-col if no other col-{bp}-* classes generated nor `cols` specified.\n 'v-col': !hasColClasses || !props.cols,\n [`v-col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n return classList\n })\n\n return () => h(props.tag, {\n class: [\n classes.value,\n props.class,\n ],\n style: props.style,\n }, slots.default?.())\n },\n})\n\nexport type VCol = InstanceType\n","// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { breakpoints } from '@/composables/display'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { capitalize, computed, h } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { Prop, PropType } from 'vue'\nimport type { Breakpoint } from '@/composables/display'\n\nconst ALIGNMENT = ['start', 'end', 'center'] as const\n\ntype BreakpointAlign = `align${Capitalize}`\ntype BreakpointJustify = `justify${Capitalize}`\ntype BreakpointAlignContent = `alignContent${Capitalize}`\n\nconst SPACE = ['space-between', 'space-around', 'space-evenly'] as const\n\nfunction makeRowProps <\n Name extends BreakpointAlign | BreakpointJustify | BreakpointAlignContent,\n Type,\n> (prefix: string, def: () => Prop) {\n return breakpoints.reduce((props, val) => {\n const prefixKey = prefix + capitalize(val) as Name\n props[prefixKey] = def()\n return props\n }, {} as Record>)\n}\n\nconst ALIGN_VALUES = [...ALIGNMENT, 'baseline', 'stretch'] as const\ntype AlignValue = typeof ALIGN_VALUES[number]\nconst alignValidator = (str: any) => ALIGN_VALUES.includes(str)\nconst alignProps = makeRowProps('align', () => ({\n type: String as PropType,\n default: null,\n validator: alignValidator,\n}))\n\nconst JUSTIFY_VALUES = [...ALIGNMENT, ...SPACE] as const\ntype JustifyValue = typeof JUSTIFY_VALUES[number]\nconst justifyValidator = (str: any) => JUSTIFY_VALUES.includes(str)\nconst justifyProps = makeRowProps('justify', () => ({\n type: String as PropType,\n default: null,\n validator: justifyValidator,\n}))\n\nconst ALIGN_CONTENT_VALUES = [...ALIGNMENT, ...SPACE, 'stretch'] as const\ntype AlignContentValue = typeof ALIGN_CONTENT_VALUES[number]\nconst alignContentValidator = (str: any) => ALIGN_CONTENT_VALUES.includes(str)\nconst alignContentProps = makeRowProps('alignContent', () => ({\n type: String as PropType,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nexport const makeVRowProps = propsFactory({\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String as PropType,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String as PropType,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String as PropType,\n default: null,\n validator: alignContentValidator,\n },\n\n ...alignContentProps,\n ...makeComponentProps(),\n ...makeTagProps(),\n}, 'VRow')\n\nexport const VRow = genericComponent()({\n name: 'VRow',\n\n props: makeVRowProps(),\n\n setup (props, { slots }) {\n const classes = computed(() => {\n const classList: any[] = []\n\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'v-row--no-gutters': props.noGutters,\n 'v-row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n return classList\n })\n\n return () => h(props.tag, {\n class: [\n 'v-row',\n classes.value,\n props.class,\n ],\n style: props.style,\n }, slots.default?.())\n },\n})\n\nexport type VRow = InstanceType\n","// Styles\nimport './VGrid.sass'\n\n// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VSpacer = createSimpleFunctional('v-spacer', 'div', 'VSpacer')\n\nexport type VSpacer = InstanceType\n","// Styles\nimport './VDatePickerControls.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSpacer } from '@/components/VGrid'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDatePickerControlsProps = propsFactory({\n active: {\n type: [String, Array] as PropType,\n default: undefined,\n },\n disabled: {\n type: [Boolean, String, Array] as PropType,\n default: false,\n },\n nextIcon: {\n type: [String],\n default: '$next',\n },\n prevIcon: {\n type: [String],\n default: '$prev',\n },\n modeIcon: {\n type: [String],\n default: '$subgroup',\n },\n text: String,\n viewMode: {\n type: String as PropType<'month' | 'months' | 'year'>,\n default: 'month',\n },\n}, 'VDatePickerControls')\n\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n\n props: makeVDatePickerControlsProps(),\n\n emits: {\n 'click:year': () => true,\n 'click:month': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n 'click:text': () => true,\n },\n\n setup (props, { emit }) {\n const disableMonth = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('text')\n : !!props.disabled\n })\n const disableYear = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('mode')\n : !!props.disabled\n })\n const disablePrev = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('prev')\n : !!props.disabled\n })\n const disableNext = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('next')\n : !!props.disabled\n })\n\n function onClickPrev () {\n emit('click:prev')\n }\n\n function onClickNext () {\n emit('click:next')\n }\n\n function onClickYear () {\n emit('click:year')\n }\n\n function onClickMonth () {\n emit('click:month')\n }\n\n useRender(() => {\n // TODO: add slot support and scope defaults\n return (\n \n
    \n\n \n\n \n\n \n \n\n \n \n \n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerControls = InstanceType\n","// Styles\nimport './VDatePickerHeader.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerHeaderSlots = {\n prepend: never\n default: never\n append: never\n}\n\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n onClick: EventProp<[MouseEvent]>(),\n}, 'VDatePickerHeader')\n\nexport const VDatePickerHeader = genericComponent()({\n name: 'VDatePickerHeader',\n\n props: makeVDatePickerHeaderProps(),\n\n emits: {\n click: () => true,\n 'click:append': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n function onClick () {\n emit('click')\n }\n\n function onClickAppend () {\n emit('click:append')\n }\n\n useRender(() => {\n const hasContent = !!(slots.default || props.header)\n const hasAppend = !!(slots.append || props.appendIcon)\n\n return (\n \n { slots.prepend && (\n
    \n { slots.prepend() }\n
    \n )}\n\n { hasContent && (\n \n
    \n { slots.default?.() ?? props.header }\n
    \n
    \n )}\n\n { hasAppend && (\n
    \n { !slots.append ? (\n \n ) : (\n \n { slots.append?.() }\n \n )}\n
    \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerHeader = InstanceType\n","// Composables\nimport { getWeek, useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n weeksInMonth: 'dynamic' | 'static'\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType boolean)>,\n disabled: Boolean,\n displayValue: null as any as PropType,\n modelValue: Array as PropType,\n month: [Number, String],\n max: null as any as PropType,\n min: null as any as PropType,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n function genDays (days: unknown[], today: unknown) {\n return days.filter(date => {\n return props.weekdays.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth'),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value)\n const week = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day))\n }\n\n const today = adapter.date()\n\n return genDays(week, today)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat()\n const today = adapter.date() as Date\n\n return genDays(days, today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return false\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekNumbers,\n }\n}\n","// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType,\n showWeek: Boolean,\n transition: {\n type: String,\n default: 'picker-transition',\n },\n reverseTransition: {\n type: String,\n default: 'picker-reverse-transition',\n },\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n const isReverse = shallowRef(false)\n\n const transition = computed(() => {\n return !isReverse.value ? props.transition : props.reverseTransition\n })\n\n if (props.multiple === 'range' && model.value.length > 0) {\n rangeStart.value = model.value[0]\n if (model.value.length > 1) {\n rangeStop.value = model.value[model.value.length - 1]\n }\n }\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n watch(daysInMonth, (val, oldVal) => {\n if (!oldVal) return\n\n isReverse.value = adapter.isBefore(val[0].date, oldVal[0].date)\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(_value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(_value, rangeStart.value)) {\n rangeStop.value = adapter.endOfDay(rangeStart.value)\n rangeStart.value = _value\n } else {\n rangeStop.value = adapter.endOfDay(_value)\n }\n\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days')\n const datesInRange = [rangeStart.value]\n\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i)\n datesInRange.push(nextDate)\n }\n\n datesInRange.push(rangeStop.value)\n\n model.value = datesInRange\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n
    \n { props.showWeek && (\n
    \n { !props.hideWeekdays && (\n
     
    \n )}\n { weekNumbers.value.map(week => (\n { week }
    \n ))}\n
    \n )}\n\n \n \n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n { weekDay }\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n \n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n \n )}\n \n )}\n \n )\n })}\n \n \n \n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType\n","// Styles\nimport './VDatePickerMonths.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerMonthsSlots = {\n month: {\n month: {\n text: string\n value: number\n }\n i: number\n props: {\n onClick: () => void\n }\n }\n}\n\nexport const makeVDatePickerMonthsProps = propsFactory({\n color: String,\n height: [String, Number],\n modelValue: Number,\n}, 'VDatePickerMonths')\n\nexport const VDatePickerMonths = genericComponent()({\n name: 'VDatePickerMonths',\n\n props: makeVDatePickerMonthsProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const model = useProxiedModel(props, 'modelValue')\n\n const months = computed(() => {\n let date = adapter.startOfYear(adapter.date())\n\n return createRange(12).map(i => {\n const text = adapter.format(date, 'monthShort')\n date = adapter.getNextMonth(date)\n\n return {\n text,\n value: i,\n }\n })\n })\n\n watchEffect(() => {\n model.value = model.value ?? adapter.getMonth(adapter.date())\n })\n\n useRender(() => (\n \n
    \n { months.value.map((month, i) => {\n const btnProps = {\n active: model.value === i,\n color: model.value === i ? props.color : undefined,\n rounded: true,\n text: month.text,\n variant: model.value === month.value ? 'flat' : 'text',\n onClick: () => onClick(i),\n } as const\n\n function onClick (i: number) {\n if (model.value === i) {\n emit('update:modelValue', model.value)\n return\n }\n model.value = i\n }\n\n return slots.month?.({\n month,\n i,\n props: btnProps,\n }) ?? (\n \n )\n })}\n
    \n \n ))\n\n return {}\n },\n})\n\nexport type VDatePickerMonths = InstanceType\n","// Styles\nimport './VDatePickerYears.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, templateRef, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VDatePickerYearsSlots = {\n year: {\n year: {\n text: string\n value: number\n }\n i: number\n props: {\n active: boolean\n color?: string\n rounded: boolean\n text: string\n variant: 'flat' | 'text'\n onClick: () => void\n }\n }\n}\n\nexport const makeVDatePickerYearsProps = propsFactory({\n color: String,\n height: [String, Number],\n min: null as any as PropType,\n max: null as any as PropType,\n modelValue: Number,\n}, 'VDatePickerYears')\n\nexport const VDatePickerYears = genericComponent()({\n name: 'VDatePickerYears',\n\n props: makeVDatePickerYearsProps(),\n\n emits: {\n 'update:modelValue': (year: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const model = useProxiedModel(props, 'modelValue')\n const years = computed(() => {\n const year = adapter.getYear(adapter.date())\n\n let min = year - 100\n let max = year + 52\n\n if (props.min) {\n min = adapter.getYear(adapter.date(props.min))\n }\n\n if (props.max) {\n max = adapter.getYear(adapter.date(props.max))\n }\n\n let date = adapter.startOfYear(adapter.date())\n\n date = adapter.setYear(date, min)\n\n return createRange(max - min + 1, min).map(i => {\n const text = adapter.format(date, 'year')\n date = adapter.setYear(date, adapter.getYear(date) + 1)\n\n return {\n text,\n value: i,\n }\n })\n })\n\n watchEffect(() => {\n model.value = model.value ?? adapter.getYear(adapter.date())\n })\n\n const yearRef = templateRef()\n\n onMounted(async () => {\n await nextTick()\n yearRef.el?.scrollIntoView({ block: 'center' })\n })\n\n useRender(() => (\n \n
    \n { years.value.map((year, i) => {\n const btnProps = {\n ref: model.value === year.value ? yearRef : undefined,\n active: model.value === year.value,\n color: model.value === year.value ? props.color : undefined,\n rounded: true,\n text: year.text,\n variant: model.value === year.value ? 'flat' : 'text',\n onClick: () => {\n if (model.value === year.value) {\n emit('update:modelValue', model.value)\n return\n }\n model.value = year.value\n },\n } as const\n\n return slots.year?.({\n year,\n i,\n props: btnProps,\n }) ?? (\n \n )\n })}\n
    \n \n ))\n\n return {}\n },\n})\n\nexport type VDatePickerYears = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VPickerTitle = createSimpleFunctional('v-picker-title')\n\nexport type VPickerTitle = InstanceType\n","// Styles\nimport './VPicker.sass'\n\n// Components\nimport { VPickerTitle } from './VPickerTitle'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VPickerSlots = {\n header: never\n default: never\n actions: never\n title: never\n}\n\nexport const makeVPickerProps = propsFactory({\n bgColor: String,\n landscape: Boolean,\n title: String,\n hideHeader: Boolean,\n\n ...makeVSheetProps(),\n}, 'VPicker')\n\nexport const VPicker = genericComponent()({\n name: 'VPicker',\n\n props: makeVPickerProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n useRender(() => {\n const sheetProps = VSheet.filterProps(props)\n const hasTitle = !!(props.title || slots.title)\n\n return (\n \n { !props.hideHeader && (\n \n { hasTitle && (\n \n { slots.title?.() ?? props.title }\n \n )}\n\n { slots.header && (\n
    \n { slots.header() }\n
    \n )}\n \n )}\n\n
    \n { slots.default?.() }\n
    \n\n { slots.actions && (\n \n
    \n { slots.actions() }\n
    \n \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VPicker = InstanceType\n","// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots = Omit & {\n header: {\n header: string\n transition: string\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps({\n weeksInMonth: 'static' as const,\n }),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent (\n props: {\n modelValue?: TModel\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n // const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0])\n\n return value && adapter.isValid(value) ? value : adapter.date()\n })\n\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))))\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))))\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n if (props.multiple && model.value.length > 1) {\n return t('$vuetify.datePicker.itemsSelected', model.value.length)\n }\n\n return (model.value[0] && adapter.isValid(model.value[0]))\n ? adapter.format(adapter.date(model.value[0]), 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n let date = adapter.date()\n\n date = adapter.setDate(date, 1)\n date = adapter.setMonth(date, month.value)\n date = adapter.setYear(date, year.value)\n\n return adapter.format(date, 'monthAndYear')\n })\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.setYear(_date, year.value)\n _date = adapter.setMonth(_date, month.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n onUpdateYear(year.value)\n }\n onUpdateMonth(month.value)\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n onUpdateYear(year.value)\n }\n onUpdateMonth(month.value)\n }\n\n function onClickDate () {\n viewMode.value = 'month'\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n function onUpdateMonth (value: number) {\n if (viewMode.value === 'months') onClickMonth()\n\n emit('update:month', value)\n }\n\n function onUpdateYear (value: number) {\n if (viewMode.value === 'year') onClickYear()\n\n emit('update:year', value)\n }\n\n watch(model, (val, oldVal) => {\n const before = adapter.date(wrapInArray(oldVal)[oldVal.length - 1])\n const after = adapter.date(wrapInArray(val)[val.length - 1])\n const newMonth = adapter.getMonth(after)\n const newYear = adapter.getYear(after)\n\n if (newMonth !== month.value) {\n month.value = newMonth\n onUpdateMonth(month.value)\n }\n\n if (newYear !== year.value) {\n year.value = newYear\n onUpdateYear(year.value)\n }\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n header: header.value,\n transition: headerTransition.value,\n }\n\n return (\n slots.title?.() ?? (\n
    \n { t(props.title) }\n
    \n ),\n header: () => slots.header ? (\n \n { slots.header?.(headerProps) }\n \n ) : (\n \n ),\n default: () => (\n <>\n \n\n \n { viewMode.value === 'months' ? (\n \n ) : viewMode.value === 'year' ? (\n \n ) : (\n \n )}\n \n \n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType\n","// Styles\nimport './VEmptyState.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\n\nexport type VEmptyStateSlots = {\n actions: {\n props: {\n onClick: (e: Event) => void\n }\n }\n default: never\n headline: never\n title: never\n media: never\n text: never\n}\n\nexport const makeVEmptyStateProps = propsFactory({\n actionText: String,\n bgColor: String,\n color: String,\n icon: IconValue,\n image: String,\n justify: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'center',\n },\n headline: String,\n title: String,\n text: String,\n textWidth: {\n type: [Number, String],\n default: 500,\n },\n href: String,\n to: String,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeSizeProps({ size: undefined }),\n ...makeThemeProps(),\n}, 'VEmptyState')\n\nexport const VEmptyState = genericComponent()({\n name: 'VEmptyState',\n\n props: makeVEmptyStateProps(),\n\n emits: {\n 'click:action': (e: Event) => true,\n },\n\n setup (props, { emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { dimensionStyles } = useDimension(props)\n const { displayClasses } = useDisplay()\n\n function onClickAction (e: Event) {\n emit('click:action', e)\n }\n\n useRender(() => {\n const hasActions = !!(slots.actions || props.actionText)\n const hasHeadline = !!(slots.headline || props.headline)\n const hasTitle = !!(slots.title || props.title)\n const hasText = !!(slots.text || props.text)\n const hasMedia = !!(slots.media || props.image || props.icon)\n const size = props.size || (props.image ? 200 : 96)\n\n return (\n \n { hasMedia && (\n
    \n { !slots.media ? (\n <>\n { props.image ? (\n \n ) : props.icon ? (\n \n ) : undefined }\n \n ) : (\n \n { slots.media() }\n \n )}\n
    \n )}\n\n { hasHeadline && (\n
    \n { slots.headline?.() ?? props.headline }\n
    \n )}\n\n { hasTitle && (\n
    \n { slots.title?.() ?? props.title }\n
    \n )}\n\n { hasText && (\n \n { slots.text?.() ?? props.text }\n \n )}\n\n { slots.default && (\n
    \n { slots.default() }\n
    \n )}\n\n { hasActions && (\n
    \n \n {\n slots.actions?.({ props: { onClick: onClickAction } }) ?? (\n \n )\n }\n \n
    \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VEmptyState = InstanceType\n","// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VExpandTransition } from '@/components/transitions'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\n\n// Utilities\nimport { inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVExpansionPanelTextProps = propsFactory({\n ...makeComponentProps(),\n ...makeLazyProps(),\n}, 'VExpansionPanelText')\n\nexport const VExpansionPanelText = genericComponent()({\n name: 'VExpansionPanelText',\n\n props: makeVExpansionPanelTextProps(),\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel')\n\n const { hasContent, onAfterLeave } = useLazy(props, expansionPanel.isSelected)\n\n useRender(() => (\n \n \n { slots.default && hasContent.value && (\n
    \n { slots.default?.() }\n
    \n )}\n \n
    \n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelText = InstanceType\n","// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue } from '@/composables/icons'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ninterface ExpansionPanelTitleSlot {\n collapseIcon: IconValue\n disabled: boolean | undefined\n expanded: boolean\n expandIcon: IconValue\n readonly: boolean\n}\n\nexport type VExpansionPanelTitleSlots = {\n default: ExpansionPanelTitleSlot\n actions: ExpansionPanelTitleSlot\n}\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: IconValue,\n default: '$expand',\n },\n collapseIcon: {\n type: IconValue,\n default: '$collapse',\n },\n hideActions: Boolean,\n focusable: Boolean,\n static: Boolean,\n ripple: {\n type: [Boolean, Object] as PropType,\n default: false,\n },\n readonly: Boolean,\n\n ...makeComponentProps(),\n}, 'VExpansionPanelTitle')\n\nexport const VExpansionPanelTitle = genericComponent()({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: makeVExpansionPanelTitleProps(),\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly,\n }))\n\n useRender(() => (\n \n \n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n \n {\n slots.actions ? slots.actions(slotProps.value)\n : \n }\n \n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType\n","// Components\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\nimport { makeVExpansionPanelTextProps, VExpansionPanelText } from './VExpansionPanelText'\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, provide } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVExpansionPanelProps = propsFactory({\n title: String,\n text: String,\n bgColor: String,\n\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n ...makeVExpansionPanelTextProps(),\n}, 'VExpansionPanel')\n\nexport type VExpansionPanelSlots = {\n default: never\n title: never\n text: never\n}\n\nexport const VExpansionPanel = genericComponent()({\n name: 'VExpansionPanel',\n\n props: makeVExpansionPanelProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const groupItem = useGroupItem(props, VExpansionPanelSymbol)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled)\n\n const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {\n if (groupItem.group.selected.value.includes(item.id)) arr.push(index)\n return arr\n }, []))\n\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - index === 1)\n })\n\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - index === -1)\n })\n\n provide(VExpansionPanelSymbol, groupItem)\n\n useRender(() => {\n const hasText = !!(slots.text || props.text)\n const hasTitle = !!(slots.title || props.title)\n\n const expansionPanelTitleProps = VExpansionPanelTitle.filterProps(props)\n const expansionPanelTextProps = VExpansionPanelText.filterProps(props)\n\n return (\n \n \n\n { hasTitle && (\n \n { slots.title ? slots.title() : props.title }\n \n )}\n\n { hasText && (\n \n { slots.text ? slots.text() : props.text }\n \n )}\n\n { slots.default?.() }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VExpansionPanel = InstanceType\n","// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { makeVExpansionPanelProps } from './VExpansionPanel'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport const makeVExpansionPanelsProps = propsFactory({\n flat: Boolean,\n\n ...makeGroupProps(),\n ...makeVExpansionPanelProps(),\n ...makeThemeProps(),\n\n variant: {\n type: String as PropType,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'VExpansionPanels')\n\nexport const VExpansionPanels = genericComponent()({\n name: 'VExpansionPanels',\n\n props: makeVExpansionPanelsProps(),\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n bgColor: toRef(props, 'bgColor'),\n collapseIcon: toRef(props, 'collapseIcon'),\n color: toRef(props, 'color'),\n eager: toRef(props, 'eager'),\n elevation: toRef(props, 'elevation'),\n expandIcon: toRef(props, 'expandIcon'),\n focusable: toRef(props, 'focusable'),\n hideActions: toRef(props, 'hideActions'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n rounded: toRef(props, 'rounded'),\n static: toRef(props, 'static'),\n },\n })\n\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanels = InstanceType\n","// Styles\nimport './VFab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType } from 'vue'\nimport type { Position } from '@/composables/layout'\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const makeVFabProps = propsFactory({\n app: Boolean,\n appear: Boolean,\n extended: Boolean,\n layout: Boolean,\n location: {\n type: String as PropType,\n default: 'bottom end',\n },\n offset: Boolean,\n modelValue: {\n type: Boolean,\n default: true,\n },\n\n ...omit(makeVBtnProps({ active: true }), ['location']),\n ...makeLayoutItemProps(),\n ...makeTransitionProps({ transition: 'fab-transition' }),\n}, 'VFab')\n\nexport const VFab = genericComponent()({\n name: 'VFab',\n\n props: makeVFabProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const height = shallowRef(56)\n const layoutItemStyles = ref()\n\n const { resizeRef } = useResizeObserver(entries => {\n if (!entries.length) return\n height.value = entries[0].target.clientHeight\n })\n\n const hasPosition = computed(() => props.app || props.absolute)\n\n const position = computed(() => {\n if (!hasPosition.value) return false\n\n return props.location.split(' ').shift()\n }) as ComputedRef\n\n const orientation = computed(() => {\n if (!hasPosition.value) return false\n\n return props.location.split(' ')[1] ?? 'end'\n })\n\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position,\n layoutSize: computed(() => props.layout ? height.value + 24 : 0),\n elementSize: computed(() => height.value + 24),\n active: computed(() => props.app && model.value),\n absolute: toRef(props, 'absolute'),\n })\n\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value\n })\n })\n\n const vFabRef = ref()\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n \n
    \n \n \n \n
    \n \n )\n })\n\n return {}\n },\n})\n\nexport type VFab = InstanceType\n","// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : (val[0] ?? null),\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref()\n const vFieldRef = ref()\n const inputRef = ref()\n const isActive = computed(() => (\n isFocused.value ||\n props.active\n ))\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = filterFieldProps(props)\n\n return (\n \n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n \n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n
    \n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n \n ))\n : fileNames.value.join(', ')\n )}\n
    \n \n ),\n }}\n \n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n \n\n \n \n )}\n \n ) : undefined,\n }}\n
    \n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType\n","// Styles\nimport './VFooter.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVFooterProps = propsFactory({\n app: Boolean,\n color: String,\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'footer' }),\n ...makeThemeProps(),\n}, 'VFooter')\n\nexport const VFooter = genericComponent()({\n name: 'VFooter',\n\n props: makeVFooterProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n const autoHeight = shallowRef(32)\n const { resizeRef } = useResizeObserver(entries => {\n if (!entries.length) return\n autoHeight.value = entries[0].target.clientHeight\n })\n const height = computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10))\n const { layoutItemStyles, layoutIsReady } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: computed(() => 'bottom'),\n layoutSize: height,\n elementSize: computed(() => props.height === 'auto' ? undefined : height.value),\n active: computed(() => props.app),\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => (\n \n ))\n\n return props.app ? layoutIsReady : {}\n },\n})\n\nexport type VFooter = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createForm, makeFormProps } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { SubmitEventPromise } from '@/composables/form'\n\nexport const makeVFormProps = propsFactory({\n ...makeComponentProps(),\n ...makeFormProps(),\n}, 'VForm')\n\ntype VFormSlots = {\n default: ReturnType\n}\n\nexport const VForm = genericComponent()({\n name: 'VForm',\n\n props: makeVFormProps(),\n\n emits: {\n 'update:modelValue': (val: boolean | null) => true,\n submit: (e: SubmitEventPromise) => true,\n },\n\n setup (props, { slots, emit }) {\n const form = createForm(props)\n const formRef = ref()\n\n function onReset (e: Event) {\n e.preventDefault()\n form.reset()\n }\n\n function onSubmit (_e: Event) {\n const e = _e as SubmitEventPromise\n\n const ready = form.validate()\n e.then = ready.then.bind(ready)\n e.catch = ready.catch.bind(ready)\n e.finally = ready.finally.bind(ready)\n\n emit('submit', e)\n\n if (!e.defaultPrevented) {\n ready.then(({ valid }) => {\n if (valid) {\n formRef.value?.submit()\n }\n })\n }\n\n e.preventDefault()\n }\n\n useRender(() => ((\n \n { slots.default?.(form) }\n \n )))\n\n return forwardRefs(form, formRef)\n },\n})\n\nexport type VForm = InstanceType\n","// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { genericComponent, propsFactory } from '@/util'\n\ntype VHoverSlots = {\n default: {\n isHovering: boolean | null\n props: Record\n }\n}\n\nexport const makeVHoverProps = propsFactory({\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: null,\n },\n\n ...makeDelayProps(),\n}, 'VHover')\n\nexport const VHover = genericComponent()({\n name: 'VHover',\n\n props: makeVHoverProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isHovering = useProxiedModel(props, 'modelValue')\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => !props.disabled && (isHovering.value = value))\n\n return () => slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: runOpenDelay,\n onMouseleave: runCloseDelay,\n },\n })\n },\n})\n\nexport type VHover = InstanceType\n","// Styles\nimport './VInfiniteScroll.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue'\nimport { convertToUnit, defineComponent, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type InfiniteScrollSide = 'start' | 'end' | 'both'\nexport type InfiniteScrollStatus = 'ok' | 'empty' | 'loading' | 'error'\n\ntype InfiniteScrollSlot = {\n side: InfiniteScrollSide\n props: Record\n}\n\ntype VInfiniteScrollSlots = {\n default: never\n loading: InfiniteScrollSlot\n error: InfiniteScrollSlot\n empty: InfiniteScrollSlot\n 'load-more': InfiniteScrollSlot\n}\n\nexport const makeVInfiniteScrollProps = propsFactory({\n color: String,\n direction: {\n type: String as PropType<'vertical' | 'horizontal'>,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n side: {\n type: String as PropType,\n default: 'end',\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n },\n mode: {\n type: String as PropType<'intersect' | 'manual'>,\n default: 'intersect',\n validator: (v: any) => ['intersect', 'manual'].includes(v),\n },\n margin: [Number, String],\n loadMoreText: {\n type: String,\n default: '$vuetify.infiniteScroll.loadMore',\n },\n emptyText: {\n type: String,\n default: '$vuetify.infiniteScroll.empty',\n },\n\n ...makeDimensionProps(),\n ...makeTagProps(),\n}, 'VInfiniteScroll')\n\nexport const VInfiniteScrollIntersect = defineComponent({\n name: 'VInfiniteScrollIntersect',\n\n props: {\n side: {\n type: String as PropType,\n required: true,\n },\n rootRef: null,\n rootMargin: String,\n },\n\n emits: {\n intersect: (side: InfiniteScrollSide, isIntersecting: boolean) => true,\n },\n\n setup (props, { emit }) {\n const { intersectionRef, isIntersecting } = useIntersectionObserver(entries => {\n }, props.rootMargin ? {\n rootMargin: props.rootMargin,\n } : undefined)\n\n watch(isIntersecting, async val => {\n emit('intersect', props.side, val)\n })\n\n useRender(() => (\n
     
    \n ))\n\n return {}\n },\n})\n\nexport const VInfiniteScroll = genericComponent()({\n name: 'VInfiniteScroll',\n\n props: makeVInfiniteScrollProps(),\n\n emits: {\n load: (options: { side: InfiniteScrollSide, done: (status: InfiniteScrollStatus) => void }) => true,\n },\n\n setup (props, { slots, emit }) {\n const rootEl = ref()\n const startStatus = shallowRef('ok')\n const endStatus = shallowRef('ok')\n const margin = computed(() => convertToUnit(props.margin))\n const isIntersecting = shallowRef(false)\n\n function setScrollAmount (amount: number) {\n if (!rootEl.value) return\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n rootEl.value[property] = amount\n }\n\n function getScrollAmount () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n return rootEl.value[property]\n }\n\n function getScrollSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth'\n return rootEl.value[property]\n }\n\n function getContainerSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth'\n return rootEl.value[property]\n }\n\n onMounted(() => {\n if (!rootEl.value) return\n\n if (props.side === 'start') {\n setScrollAmount(getScrollSize())\n } else if (props.side === 'both') {\n setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2)\n }\n })\n\n function setStatus (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (side === 'start') {\n startStatus.value = status\n } else if (side === 'end') {\n endStatus.value = status\n }\n }\n\n function getStatus (side: string) {\n return side === 'start' ? startStatus.value : endStatus.value\n }\n\n let previousScrollSize = 0\n function handleIntersect (side: InfiniteScrollSide, _isIntersecting: boolean) {\n isIntersecting.value = _isIntersecting\n if (isIntersecting.value) {\n intersecting(side)\n }\n }\n\n function intersecting (side: InfiniteScrollSide) {\n if (props.mode !== 'manual' && !isIntersecting.value) return\n\n const status = getStatus(side)\n if (!rootEl.value || ['empty', 'loading'].includes(status)) return\n\n previousScrollSize = getScrollSize()\n setStatus(side, 'loading')\n\n function done (status: InfiniteScrollStatus) {\n setStatus(side, status)\n\n nextTick(() => {\n if (status === 'empty' || status === 'error') return\n\n if (status === 'ok' && side === 'start') {\n setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount())\n }\n if (props.mode !== 'manual') {\n nextTick(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n intersecting(side)\n })\n })\n })\n })\n }\n })\n }\n\n emit('load', { side, done })\n }\n\n const { t } = useLocale()\n\n function renderSide (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (props.side !== side && props.side !== 'both') return\n\n const onClick = () => intersecting(side)\n const slotProps = { side, props: { onClick, color: props.color } }\n\n if (status === 'error') return slots.error?.(slotProps)\n\n if (status === 'empty') return slots.empty?.(slotProps) ??
    { t(props.emptyText) }
    \n\n if (props.mode === 'manual') {\n if (status === 'loading') {\n return slots.loading?.(slotProps) ?? (\n \n )\n }\n\n return slots['load-more']?.(slotProps) ?? (\n \n { t(props.loadMoreText) }\n \n )\n }\n\n return slots.loading?.(slotProps) ?? (\n \n )\n }\n\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => {\n const Tag = props.tag\n const hasStartIntersect = props.side === 'start' || props.side === 'both'\n const hasEndIntersect = props.side === 'end' || props.side === 'both'\n const intersectMode = props.mode === 'intersect'\n\n return (\n \n
    \n { renderSide('start', startStatus.value) }\n
    \n\n { rootEl.value && hasStartIntersect && intersectMode && (\n \n )}\n\n { slots.default?.() }\n\n { rootEl.value && hasEndIntersect && intersectMode && (\n \n )}\n\n
    \n { renderSide('end', endStatus.value) }\n
    \n \n )\n })\n },\n})\n\nexport type VInfiniteScroll = InstanceType\n","// Styles\nimport './VItemGroup.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { GenericProps } from '@/util'\n\nexport const VItemGroupSymbol = Symbol.for('vuetify:v-item-group')\n\nexport const makeVItemGroupProps = propsFactory({\n ...makeComponentProps(),\n ...makeGroupProps({\n selectedClass: 'v-item--selected',\n }),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VItemGroup')\n\ntype VItemGroupSlots = {\n default: {\n isSelected: (id: number) => boolean\n select: (id: number, value: boolean) => void\n next: () => void\n prev: () => void\n selected: readonly number[]\n }\n}\n\nexport const VItemGroup = genericComponent(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VItemGroupSlots,\n) => GenericProps>()({\n name: 'VItemGroup',\n\n props: makeVItemGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isSelected, select, next, prev, selected } = useGroup(props, VItemGroupSymbol)\n\n return () => (\n \n { slots.default?.({\n isSelected,\n select,\n next,\n prev,\n selected: selected.value,\n })}\n \n )\n },\n})\n\nexport type VItemGroup = InstanceType\n","// Composables\nimport { VItemGroupSymbol } from './VItemGroup'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\n\n// Utilities\nimport { genericComponent } from '@/util'\n\ntype VItemSlots = {\n default: {\n isSelected: boolean | undefined\n selectedClass: boolean | (string | undefined)[] | undefined\n select: ((value: boolean) => void) | undefined\n toggle: (() => void) | undefined\n value: unknown\n disabled: boolean | undefined\n }\n}\n\nexport const VItem = genericComponent()({\n name: 'VItem',\n\n props: makeGroupItemProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const { isSelected, select, toggle, selectedClass, value, disabled } = useGroupItem(props, VItemGroupSymbol)\n return () => slots.default?.({\n isSelected: isSelected.value,\n selectedClass: selectedClass.value,\n select,\n toggle,\n value: value.value,\n disabled: disabled.value,\n })\n },\n})\n\nexport type VItem = InstanceType\n","// Styles\nimport './VKbd.sass'\n\n// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VKbd = createSimpleFunctional('v-kbd')\n\nexport type VKbd = InstanceType\n","// Styles\nimport './VLayout.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { createLayout, makeLayoutProps } from '@/composables/layout'\n\n// Utilities\nimport { Suspense } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLayoutProps = propsFactory({\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLayoutProps(),\n}, 'VLayout')\n\nexport const VLayout = genericComponent()({\n name: 'VLayout',\n\n props: makeVLayoutProps(),\n\n setup (props, { slots }) {\n const { layoutClasses, layoutStyles, getLayoutItem, items, layoutRef } = createLayout(props)\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n \n \n <>\n { slots.default?.() }\n \n \n \n ))\n\n return {\n getLayoutItem,\n items,\n }\n },\n})\n\nexport type VLayout = InstanceType\n","// Styles\nimport './VLayoutItem.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVLayoutItemProps = propsFactory({\n position: {\n type: String as PropType<'top' | 'right' | 'bottom' | 'left'>,\n required: true,\n },\n size: {\n type: [Number, String],\n default: 300,\n },\n modelValue: Boolean,\n\n ...makeComponentProps(),\n ...makeLayoutItemProps(),\n}, 'VLayoutItem')\n\nexport const VLayoutItem = genericComponent()({\n name: 'VLayoutItem',\n\n props: makeVLayoutItemProps(),\n\n setup (props, { slots }) {\n const { layoutItemStyles, layoutIsReady } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(props, 'position'),\n elementSize: toRef(props, 'size'),\n layoutSize: toRef(props, 'size'),\n active: toRef(props, 'modelValue'),\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return layoutIsReady\n },\n})\n\nexport type VLayoutItem = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVLazyProps = propsFactory({\n modelValue: Boolean,\n options: {\n type: Object as PropType,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps(),\n ...makeTransitionProps({ transition: 'fade-transition' }),\n}, 'VLazy')\n\nexport const VLazy = genericComponent()({\n name: 'VLazy',\n\n directives: { intersect },\n\n props: makeVLazyProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const isActive = useProxiedModel(props, 'modelValue')\n\n function onIntersect (isIntersecting: boolean) {\n if (isActive.value) return\n\n isActive.value = isIntersecting\n }\n\n useRender(() => (\n \n { isActive.value && (\n \n { slots.default?.() }\n \n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VLazy = InstanceType\n","// Styles\nimport './VLocaleProvider.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideLocale } from '@/composables/locale'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVLocaleProviderProps = propsFactory({\n locale: String,\n fallbackLocale: String,\n messages: Object,\n rtl: {\n type: Boolean,\n default: undefined,\n },\n\n ...makeComponentProps(),\n}, 'VLocaleProvider')\n\nexport const VLocaleProvider = genericComponent()({\n name: 'VLocaleProvider',\n\n props: makeVLocaleProviderProps(),\n\n setup (props, { slots }) {\n const { rtlClasses } = provideLocale(props)\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VLocaleProvider = InstanceType\n","// Styles\nimport './VMain.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useLayout } from '@/composables/layout'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVMainProps = propsFactory({\n scrollable: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps({ tag: 'main' }),\n}, 'VMain')\n\nexport const VMain = genericComponent()({\n name: 'VMain',\n\n props: makeVMainProps(),\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n const { mainStyles, layoutIsReady } = useLayout()\n const { ssrBootStyles } = useSsrBoot()\n\n useRender(() => (\n \n { props.scrollable\n ? (\n
    \n { slots.default?.() }\n
    \n )\n : slots.default?.()\n }\n \n ))\n\n return layoutIsReady\n },\n})\n\nexport type VMain = InstanceType\n","// Utilities\nimport { CircularBuffer } from '@/util'\n\nconst HORIZON = 100 // ms\nconst HISTORY = 20 // number of samples to keep\n\nexport interface Sample {\n t: number\n d: number\n}\n\n/** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */\nfunction kineticEnergyToVelocity (work: number) {\n const sqrt2 = 1.41421356237\n return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2\n}\n\n/**\n * Returns pointer velocity in px/s\n */\nexport function calculateImpulseVelocity (samples: Sample[]) {\n // The input should be in reversed time order (most recent sample at index i=0)\n if (samples.length < 2) {\n // if 0 or 1 points, velocity is zero\n return 0\n }\n // if (samples[1].t > samples[0].t) {\n // // Algorithm will still work, but not perfectly\n // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')\n // }\n if (samples.length === 2) {\n // if 2 points, basic linear calculation\n if (samples[1].t === samples[0].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)\n return 0\n }\n return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t)\n }\n // Guaranteed to have at least 3 points here\n // start with the oldest sample and go forward in time\n let work = 0\n for (let i = samples.length - 1; i > 0; i--) {\n if (samples[i].t === samples[i - 1].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)\n continue\n }\n const vprev = kineticEnergyToVelocity(work) // v[i-1]\n const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t) // v[i]\n work += (vcurr - vprev) * Math.abs(vcurr)\n if (i === samples.length - 1) {\n work *= 0.5\n }\n }\n return kineticEnergyToVelocity(work) * 1000\n}\n\nexport function useVelocity () {\n const touches: Record | undefined> = {}\n\n function addMovement (e: TouchEvent) {\n Array.from(e.changedTouches).forEach(touch => {\n const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY))\n samples.push([e.timeStamp, touch])\n })\n }\n\n function endTouch (e: TouchEvent) {\n Array.from(e.changedTouches).forEach(touch => {\n delete touches[touch.identifier]\n })\n }\n\n function getVelocity (id: number) {\n const samples = touches[id]?.values().reverse()\n\n if (!samples) {\n throw new Error(`No samples for touch id ${id}`)\n }\n\n const newest = samples[0]\n const x: Sample[] = []\n const y: Sample[] = []\n for (const val of samples) {\n if (newest[0] - val[0] > HORIZON) break\n\n x.push({ t: val[0], d: val[1].clientX })\n y.push({ t: val[0], d: val[1].clientY })\n }\n\n return {\n x: calculateImpulseVelocity(x),\n y: calculateImpulseVelocity(y),\n get direction () {\n const { x, y } = this\n const [absX, absY] = [Math.abs(x), Math.abs(y)]\n\n return absX > absY && x >= 0 ? 'right'\n : absX > absY && x <= 0 ? 'left'\n : absY > absX && y >= 0 ? 'down'\n : absY > absX && y <= 0 ? 'up'\n : oops()\n },\n }\n }\n\n return { addMovement, endTouch, getVelocity }\n}\n\nfunction oops (): never {\n throw new Error()\n}\n","// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { useVelocity } from '@/composables/touch'\n\n// Utilities\nimport { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTouch ({\n el,\n isActive,\n isTemporary,\n width,\n touchless,\n position,\n}: {\n el: Ref\n isActive: Ref\n isTemporary: Ref\n width: Ref\n touchless: Ref\n position: Ref<'left' | 'right' | 'top' | 'bottom'>\n}) {\n onMounted(() => {\n window.addEventListener('touchstart', onTouchstart, { passive: true })\n window.addEventListener('touchmove', onTouchmove, { passive: false })\n window.addEventListener('touchend', onTouchend, { passive: true })\n })\n\n onBeforeUnmount(() => {\n window.removeEventListener('touchstart', onTouchstart)\n window.removeEventListener('touchmove', onTouchmove)\n window.removeEventListener('touchend', onTouchend)\n })\n\n const isHorizontal = computed(() => ['left', 'right'].includes(position.value))\n\n const { addMovement, endTouch, getVelocity } = useVelocity()\n let maybeDragging = false\n const isDragging = shallowRef(false)\n const dragProgress = shallowRef(0)\n const offset = shallowRef(0)\n let start: [number, number] | undefined\n\n function getOffset (pos: number, active: boolean): number {\n return (\n position.value === 'left' ? pos\n : position.value === 'right' ? document.documentElement.clientWidth - pos\n : position.value === 'top' ? pos\n : position.value === 'bottom' ? document.documentElement.clientHeight - pos\n : oops()\n ) - (active ? width.value : 0)\n }\n\n function getProgress (pos: number, limit = true): number {\n const progress = (\n position.value === 'left' ? (pos - offset.value) / width.value\n : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value\n : position.value === 'top' ? (pos - offset.value) / width.value\n : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value\n : oops()\n )\n return limit ? Math.max(0, Math.min(1, progress)) : progress\n }\n\n function onTouchstart (e: TouchEvent) {\n if (touchless.value) return\n\n const touchX = e.changedTouches[0].clientX\n const touchY = e.changedTouches[0].clientY\n\n const touchZone = 25\n const inTouchZone: boolean =\n position.value === 'left' ? touchX < touchZone\n : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone\n : position.value === 'top' ? touchY < touchZone\n : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone\n : oops()\n\n const inElement: boolean = isActive.value && (\n position.value === 'left' ? touchX < width.value\n : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value\n : position.value === 'top' ? touchY < width.value\n : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value\n : oops()\n )\n\n if (\n inTouchZone ||\n inElement ||\n (isActive.value && isTemporary.value)\n ) {\n start = [touchX, touchY]\n\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value)\n dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY)\n\n maybeDragging = offset.value > -20 && offset.value < 80\n endTouch(e)\n addMovement(e)\n }\n }\n\n function onTouchmove (e: TouchEvent) {\n const touchX = e.changedTouches[0].clientX\n const touchY = e.changedTouches[0].clientY\n\n if (maybeDragging) {\n if (!e.cancelable) {\n maybeDragging = false\n return\n }\n\n const dx = Math.abs(touchX - start![0])\n const dy = Math.abs(touchY - start![1])\n\n const thresholdMet = isHorizontal.value\n ? dx > dy && dx > 3\n : dy > dx && dy > 3\n\n if (thresholdMet) {\n isDragging.value = true\n maybeDragging = false\n } else if ((isHorizontal.value ? dy : dx) > 3) {\n maybeDragging = false\n }\n }\n\n if (!isDragging.value) return\n\n e.preventDefault()\n addMovement(e)\n\n const progress = getProgress(isHorizontal.value ? touchX : touchY, false)\n dragProgress.value = Math.max(0, Math.min(1, progress))\n\n if (progress > 1) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, true)\n } else if (progress < 0) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, false)\n }\n }\n\n function onTouchend (e: TouchEvent) {\n maybeDragging = false\n\n if (!isDragging.value) return\n\n addMovement(e)\n\n isDragging.value = false\n\n const velocity = getVelocity(e.changedTouches[0].identifier)\n const vx = Math.abs(velocity.x)\n const vy = Math.abs(velocity.y)\n const thresholdMet = isHorizontal.value\n ? vx > vy && vx > 400\n : vy > vx && vy > 3\n\n if (thresholdMet) {\n isActive.value = velocity.direction === ({\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up',\n }[position.value] || oops())\n } else {\n isActive.value = dragProgress.value > 0.5\n }\n }\n\n const dragStyles = computed(() => {\n return isDragging.value ? {\n transform:\n position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))`\n : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))`\n : position.value === 'top' ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))`\n : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))`\n : oops(),\n transition: 'none',\n } : undefined\n })\n\n useToggleScope(isDragging, () => {\n const transform = el.value?.style.transform ?? null\n const transition = el.value?.style.transition ?? null\n\n watchEffect(() => {\n el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none')\n el.value?.style.setProperty('transition', dragStyles.value?.transition || null)\n })\n\n onScopeDispose(() => {\n el.value?.style.setProperty('transform', transform)\n el.value?.style.setProperty('transition', transition)\n })\n })\n\n return {\n isDragging,\n dragProgress,\n dragStyles,\n }\n}\n\nfunction oops (): never {\n throw new Error()\n}\n","// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { useSticky } from './sticky'\nimport { useTouch } from './touch'\nimport { useRtl } from '@/composables'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, Transition, watch } from 'vue'\nimport { genericComponent, propsFactory, toPhysical, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VNavigationDrawerImageSlot = {\n image: string | undefined\n}\n\nexport type VNavigationDrawerSlots = {\n default: never\n prepend: never\n append: never\n image: VNavigationDrawerImageSlot\n}\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const makeVNavigationDrawerProps = propsFactory({\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType,\n default: null,\n },\n permanent: Boolean,\n rail: {\n type: Boolean as PropType,\n default: null,\n },\n railWidth: {\n type: [Number, String],\n default: 56,\n },\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n image: String,\n temporary: Boolean,\n persistent: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDelayProps(),\n ...makeDisplayProps({ mobile: null }),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n}, 'VNavigationDrawer')\n\nexport const VNavigationDrawer = genericComponent()({\n name: 'VNavigationDrawer',\n\n props: makeVNavigationDrawerProps(),\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n 'update:rail': (val: boolean) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { displayClasses, mobile } = useDisplay(props)\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const { ssrBootStyles } = useSsrBoot()\n const { scopeId } = useScopeId()\n\n const rootEl = ref()\n const isHovering = shallowRef(false)\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n isHovering.value = value\n })\n\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value) as 'left' | 'right' | 'bottom'\n })\n const isPersistent = computed(() => props.persistent)\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n const isSticky = computed(() =>\n props.sticky &&\n !isTemporary.value &&\n location.value !== 'bottom'\n )\n\n useToggleScope(() => props.expandOnHover && props.rail != null, () => {\n watch(isHovering, val => emit('update:rail', !val))\n })\n\n useToggleScope(() => !props.disableResizeWatcher, () => {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n })\n\n useToggleScope(() => !props.disableRouteWatcher && !!router, () => {\n watch(router!.currentRoute, () => isTemporary.value && (isActive.value = false))\n })\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n if (props.modelValue == null && !isTemporary.value) {\n isActive.value = props.permanent || !mobile.value\n }\n\n const { isDragging, dragProgress } = useTouch({\n el: rootEl,\n isActive,\n isTemporary,\n width,\n touchless: toRef(props, 'touchless'),\n position: location,\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n const elementSize = computed(() => ['top', 'bottom'].includes(props.location) ? 0 : width.value)\n const { layoutItemStyles, layoutItemScrimStyles, layoutIsReady } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize,\n active: computed(() => isActive.value || isDragging.value),\n disableTransitions: computed(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || (isSticky.value && typeof isStuck.value !== 'string')\n ),\n })\n\n const { isStuck, stickyStyles } = useSticky({ rootEl, isSticky, layoutItemStyles })\n\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n provideDefaults({\n VList: {\n bgColor: 'transparent',\n },\n })\n\n useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n \n { hasImage && (\n
    \n { !slots.image ? (\n \n ) : (\n \n )}\n
    \n )}\n\n { slots.prepend && (\n
    \n { slots.prepend?.() }\n
    \n )}\n\n
    \n { slots.default?.() }\n
    \n\n { slots.append && (\n
    \n { slots.append?.() }\n
    \n )}\n \n\n \n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n {\n if (isPersistent.value) return\n isActive.value = false\n }}\n { ...scopeId }\n />\n )}\n \n \n )\n })\n\n return layoutIsReady.then(() => ({ isStuck }))\n },\n})\n\nexport type VNavigationDrawer = InstanceType\n","// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue'\nimport { convertToUnit } from '@/util'\n\n// Types\nimport type { CSSProperties, Ref } from 'vue'\n\ninterface StickyProps {\n rootEl: Ref\n isSticky: Ref\n layoutItemStyles: Ref\n}\n\nexport function useSticky ({ rootEl, isSticky, layoutItemStyles }: StickyProps) {\n const isStuck = shallowRef(false)\n const stuckPosition = shallowRef(0)\n\n const stickyStyles = computed(() => {\n const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value\n return [\n isSticky.value ? { top: 'auto', bottom: 'auto', height: undefined } : undefined,\n isStuck.value\n ? { [side]: convertToUnit(stuckPosition.value) }\n : { top: layoutItemStyles.value.top },\n ]\n })\n\n onMounted(() => {\n watch(isSticky, val => {\n if (val) {\n window.addEventListener('scroll', onScroll, { passive: true })\n } else {\n window.removeEventListener('scroll', onScroll)\n }\n }, { immediate: true })\n })\n\n onBeforeUnmount(() => {\n window.removeEventListener('scroll', onScroll)\n })\n\n let lastScrollTop = 0\n function onScroll () {\n const direction = lastScrollTop > window.scrollY ? 'up' : 'down'\n const rect = rootEl.value!.getBoundingClientRect()\n const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0)\n const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop)\n const bottom =\n rect.height +\n Math.max(stuckPosition.value, layoutTop) -\n window.scrollY -\n window.innerHeight\n const bodyScroll = parseFloat(getComputedStyle(rootEl.value!).getPropertyValue('--v-body-scroll-y')) || 0\n\n if (rect.height < window.innerHeight - layoutTop) {\n isStuck.value = 'top'\n stuckPosition.value = layoutTop\n } else if (\n (direction === 'up' && isStuck.value === 'bottom') ||\n (direction === 'down' && isStuck.value === 'top')\n ) {\n stuckPosition.value = window.scrollY + rect.top - bodyScroll\n isStuck.value = true\n } else if (direction === 'down' && bottom <= 0) {\n stuckPosition.value = 0\n isStuck.value = 'bottom'\n } else if (direction === 'up' && top <= 0) {\n if (!bodyScroll) {\n stuckPosition.value = rect.top + top\n isStuck.value = 'top'\n } else if (isStuck.value !== 'top') {\n stuckPosition.value = -top + bodyScroll + layoutTop\n isStuck.value = 'top'\n }\n }\n\n lastScrollTop = window.scrollY\n }\n\n return { isStuck, stickyStyles }\n}\n","// Composables\nimport { useHydration } from '@/composables/hydration'\n\n// Utilities\nimport { defineComponent } from '@/util'\n\nexport const VNoSsr = defineComponent({\n name: 'VNoSsr',\n\n setup (_, { slots }) {\n const show = useHydration()\n\n return () => show.value && slots.default?.()\n },\n})\n\nexport type VNoSsr = InstanceType\n","// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref()\n const inputRef = ref([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text') ?? ''\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[index].blur()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''))\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n \n \n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n { props.divider }\n )}\n\n \n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength=\"1\"\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n \n \n ))}\n\n \n\n \n { slots.loader?.() ?? (\n \n )}\n \n\n { slots.default?.() }\n \n \n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType\n","// Styles\nimport './VParallax.sass'\n\n// Components\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeComponentProps } from '@/composables/component'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, onBeforeUnmount, ref, watch, watchEffect } from 'vue'\nimport { clamp, genericComponent, getScrollParent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VImgSlots } from '@/components/VImg/VImg'\n\nfunction floor (val: number) {\n return Math.floor(Math.abs(val)) * Math.sign(val)\n}\n\nexport const makeVParallaxProps = propsFactory({\n scale: {\n type: [Number, String],\n default: 0.5,\n },\n\n ...makeComponentProps(),\n}, 'VParallax')\n\nexport const VParallax = genericComponent()({\n name: 'VParallax',\n\n props: makeVParallaxProps(),\n\n setup (props, { slots }) {\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n const { resizeRef, contentRect } = useResizeObserver()\n const { height: displayHeight } = useDisplay()\n\n const root = ref()\n\n watchEffect(() => {\n intersectionRef.value = resizeRef.value = root.value?.$el\n })\n\n let scrollParent: Element | Document\n watch(isIntersecting, val => {\n if (val) {\n scrollParent = getScrollParent(intersectionRef.value)\n scrollParent = scrollParent === document.scrollingElement ? document : scrollParent\n scrollParent.addEventListener('scroll', onScroll, { passive: true })\n onScroll()\n } else {\n scrollParent.removeEventListener('scroll', onScroll)\n }\n })\n\n onBeforeUnmount(() => {\n scrollParent?.removeEventListener('scroll', onScroll)\n })\n\n watch(displayHeight, onScroll)\n watch(() => contentRect.value?.height, onScroll)\n\n const scale = computed(() => {\n return 1 - clamp(+props.scale)\n })\n\n let frame = -1\n function onScroll () {\n if (!isIntersecting.value) return\n\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n const el: HTMLElement | null = (root.value?.$el as Element).querySelector('.v-img__img')\n if (!el) return\n\n const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight\n const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop\n const top = intersectionRef.value!.getBoundingClientRect().top + scrollPos\n const height = contentRect.value!.height\n\n const center = top + (height - scrollHeight) / 2\n const translate = floor((scrollPos - center) * scale.value)\n const sizeScale = Math.max(1, (scale.value * (scrollHeight - height) + height) / height)\n\n el.style.setProperty('transform', `translateY(${translate}px) scale(${sizeScale})`)\n })\n }\n\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VParallax = InstanceType\n","// Components\nimport { makeVSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\n\nexport const makeVRadioProps = propsFactory({\n ...makeVSelectionControlProps({\n falseIcon: '$radioOff',\n trueIcon: '$radioOn',\n }),\n}, 'VRadio')\n\nexport const VRadio = genericComponent()({\n name: 'VRadio',\n\n props: makeVRadioProps(),\n\n setup (props, { slots }) {\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VRadio = InstanceType\n","// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControl } from '@/components/VSelectionControl'\nimport { makeSelectionControlGroupProps, VSelectionControlGroup } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { GenericProps } from '@/util'\n\nexport type VRadioGroupSlots = Omit & {\n default: never\n label: {\n label: string | undefined\n props: Record\n }\n}\n\nexport const makeVRadioGroupProps = propsFactory({\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...omit(makeSelectionControlGroupProps(), ['multiple']),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n}, 'VRadioGroup')\n\nexport const VRadioGroup = genericComponent(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VRadioGroupSlots,\n) => GenericProps>()({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: makeVRadioGroupProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n const model = useProxiedModel(props, 'modelValue')\n\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs)\n const inputProps = VInput.filterProps(props)\n const controlProps = VSelectionControl.filterProps(props)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n \n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n \n { label }\n \n )}\n\n \n \n ),\n }}\n
    \n )\n })\n\n return {}\n },\n})\n\nexport type VRadioGroup = InstanceType\n","// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { getOffset, makeSliderProps, useSlider, useSteps } from '@/components/VSlider/slider'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\nimport type { VSliderSlots } from '../VSlider/VSlider'\n\nexport const makeVRangeSliderProps = propsFactory({\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType,\n default: () => ([0, 0]),\n },\n}, 'VRangeSlider')\n\nexport const VRangeSlider = genericComponent()({\n name: 'VRangeSlider',\n\n props: makeVRangeSliderProps(),\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n end: (value: [number, number]) => true,\n start: (value: [number, number]) => true,\n },\n\n setup (props, { slots, emit }) {\n const startThumbRef = ref()\n const stopThumbRef = ref()\n const inputRef = ref()\n const { rtlClasses } = useRtl()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const steps = useSteps(props)\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr?.length) return [0, 0]\n\n return arr.map(value => steps.roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n trackContainerRef,\n readonly,\n } = useSlider({\n props,\n steps,\n onSliderStart: () => {\n emit('start', model.value)\n },\n onSliderEnd: ({ value }) => {\n const newValue: [number, number] = activeThumbRef.value === startThumbRef.value?.$el\n ? [value, model.value[1]]\n : [model.value[0], value]\n\n if (!props.strict && newValue[0] < newValue[1]) {\n model.value = newValue\n }\n\n emit('end', model.value)\n },\n onSliderMove: ({ value }) => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(value, stop), stop]\n } else {\n model.value = [start, Math.max(start, value)]\n }\n },\n getActiveThumb,\n })\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const inputProps = VInput.filterProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n \n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? (\n props.label\n ? (\n \n ) : undefined\n )}\n\n { slots.prepend?.(slotProps) }\n \n ) : undefined,\n default: ({ id, messagesId }) => (\n \n \n\n \n\n \n {{ 'tick-label': slots['tick-label'] }}\n \n\n (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n \n\n (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n }}\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n }}\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n ripple={ props.ripple }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n \n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType\n","// Styles\nimport './VRating.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef } from 'vue'\nimport { clamp, createRange, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\nimport type { Variant } from '@/composables/variant'\n\ntype VRatingItemSlot = {\n value: number\n index: number\n isFilled: boolean\n isHovered: boolean\n icon: IconValue\n color?: string\n props: Record\n rating: number\n}\n\ntype VRatingItemLabelSlot = {\n value: number\n index: number\n label?: string\n}\n\ntype VRatingSlots = {\n item: VRatingItemSlot\n 'item-label': VRatingItemLabelSlot\n}\n\nexport const makeVRatingProps = propsFactory({\n name: String,\n itemAriaLabel: {\n type: String,\n default: '$vuetify.rating.ariaLabel.item',\n },\n activeColor: String,\n color: String,\n clearable: Boolean,\n disabled: Boolean,\n emptyIcon: {\n type: IconValue,\n default: '$ratingEmpty',\n },\n fullIcon: {\n type: IconValue,\n default: '$ratingFull',\n },\n halfIncrements: Boolean,\n hover: Boolean,\n length: {\n type: [Number, String],\n default: 5,\n },\n readonly: Boolean,\n modelValue: {\n type: [Number, String],\n default: 0,\n },\n itemLabels: Array as Prop,\n itemLabelPosition: {\n type: String,\n default: 'top',\n validator: (v: any) => ['top', 'bottom'].includes(v),\n },\n ripple: Boolean,\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VRating')\n\nexport const VRating = genericComponent()({\n name: 'VRating',\n\n props: makeVRatingProps(),\n\n emits: {\n 'update:modelValue': (value: number | string) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { themeClasses } = provideTheme(props)\n const rating = useProxiedModel(props, 'modelValue')\n const normalizedValue = computed(() => clamp(parseFloat(rating.value), 0, +props.length))\n\n const range = computed(() => createRange(Number(props.length), 1))\n const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]))\n const hoverIndex = shallowRef(-1)\n\n const itemState = computed(() => increments.value.map(value => {\n const isHovering = props.hover && hoverIndex.value > -1\n const isFilled = normalizedValue.value >= value\n const isHovered = hoverIndex.value >= value\n const isFullIcon = isHovering ? isHovered : isFilled\n const icon = isFullIcon ? props.fullIcon : props.emptyIcon\n const activeColor = props.activeColor ?? props.color\n const color = (isFilled || isHovered) ? activeColor : props.color\n\n return { isFilled, isHovered, icon, color }\n }))\n\n const eventState = computed(() => [0, ...increments.value].map(value => {\n function onMouseenter () {\n hoverIndex.value = value\n }\n\n function onMouseleave () {\n hoverIndex.value = -1\n }\n\n function onClick () {\n if (props.disabled || props.readonly) return\n rating.value = normalizedValue.value === value && props.clearable ? 0 : value\n }\n\n return {\n onMouseenter: props.hover ? onMouseenter : undefined,\n onMouseleave: props.hover ? onMouseleave : undefined,\n onClick,\n }\n }))\n\n const name = computed(() => props.name ?? `v-rating-${getUid()}`)\n\n function VRatingItem ({ value, index, showStar = true }: { value: number, index: number, showStar?: boolean }) {\n const { onMouseenter, onMouseleave, onClick } = eventState.value[index + 1]\n const id = `${name.value}-${String(value).replace('.', '-')}`\n const btnProps = {\n color: itemState.value[index]?.color,\n density: props.density,\n disabled: props.disabled,\n icon: itemState.value[index]?.icon,\n ripple: props.ripple,\n size: props.size,\n variant: 'plain' as Variant,\n }\n\n return (\n <>\n 0,\n 'v-rating__item--full': props.halfIncrements && value % 1 === 0,\n }}\n onMouseenter={ onMouseenter }\n onMouseleave={ onMouseleave }\n onClick={ onClick }\n >\n { t(props.itemAriaLabel, value, props.length) }\n {\n !showStar ? undefined\n : slots.item ? slots.item({\n ...itemState.value[index],\n props: btnProps,\n value,\n index,\n rating: normalizedValue.value,\n })\n : (\n \n )\n }\n \n\n \n \n )\n }\n\n function createLabel (labelProps: { value: number, index: number, label?: string }) {\n if (slots['item-label']) return slots['item-label'](labelProps)\n\n if (labelProps.label) return { labelProps.label }\n\n return  \n }\n\n useRender(() => {\n const hasLabels = !!props.itemLabels?.length || slots['item-label']\n\n return (\n \n \n\n { range.value.map((value, i) => (\n
    \n {\n hasLabels && props.itemLabelPosition === 'top'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n
    \n { props.halfIncrements ? (\n <>\n \n \n \n ) : (\n \n )}\n
    \n {\n hasLabels && props.itemLabelPosition === 'bottom'\n ? createLabel({ value, index: i, label: props.itemLabels?.[i] })\n : undefined\n }\n
    \n ))}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VRating = InstanceType\n","// Styles\nimport './VSkeletonLoader.sass'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useLocale } from '@/composables/locale'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\ntype VSkeletonBone = T | VSkeletonBone[]\n\nexport type VSkeletonBones = VSkeletonBone\nexport type VSkeletonLoaderType = keyof typeof rootTypes\n\nexport const rootTypes = {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, heading',\n 'card-avatar': 'image, list-item-avatar',\n chip: 'chip',\n 'date-picker': 'list-item, heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n divider: 'divider',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n ossein: 'ossein',\n paragraph: 'text@3',\n sentences: 'text@2',\n subtitle: 'text',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'chip, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'text@6',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n} as const\n\nfunction genBone (type: string, children: VSkeletonBones = []) {\n return (\n \n { children }\n \n )\n}\n\nfunction genBones (bone: string) {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [VSkeletonLoaderType, number]\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(() => genStructure(type))\n}\n\nfunction genStructure (type?: string): VSkeletonBones {\n let children: VSkeletonBones = []\n\n if (!type) return children\n\n // TODO: figure out a better way to type this\n const bone = (rootTypes as Record)[type]\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.includes(',')) return mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.includes('@')) return genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.includes(',')) children = mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.includes('@')) children = genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(genStructure(bone))\n\n return [genBone(type, children)]\n}\n\nfunction mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(genStructure)\n}\n\nexport const makeVSkeletonLoaderProps = propsFactory({\n boilerplate: Boolean,\n color: String,\n loading: Boolean,\n loadingText: {\n type: String,\n default: '$vuetify.loading',\n },\n type: {\n type: [String, Array] as PropType<\n | VSkeletonLoaderType | (string & {})\n | ReadonlyArray\n >,\n default: 'ossein',\n },\n\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeThemeProps(),\n}, 'VSkeletonLoader')\n\nexport const VSkeletonLoader = genericComponent()({\n name: 'VSkeletonLoader',\n\n props: makeVSkeletonLoaderProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { themeClasses } = provideTheme(props)\n const { t } = useLocale()\n\n const items = computed(() => genStructure(wrapInArray(props.type).join(',')))\n\n useRender(() => {\n const isLoading = !slots.default || props.loading\n\n return (\n \n { isLoading ? items.value : slots.default?.() }\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSkeletonLoader = InstanceType\n","// Composables\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\n\n// Utilities\nimport { VSlideGroupSymbol } from './VSlideGroup'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { UnwrapRef } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\ntype VSlideGroupItemSlots = {\n default: {\n isSelected: UnwrapRef\n select: GroupItemProvide['select']\n toggle: GroupItemProvide['toggle']\n selectedClass: UnwrapRef\n }\n}\n\nexport const VSlideGroupItem = genericComponent()({\n name: 'VSlideGroupItem',\n\n props: makeGroupItemProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const slideGroupItem = useGroupItem(props, VSlideGroupSymbol)\n\n return () => slots.default?.({\n isSelected: slideGroupItem.isSelected.value,\n select: slideGroupItem.select,\n toggle: slideGroupItem.toggle,\n selectedClass: slideGroupItem.selectedClass.value,\n })\n },\n})\n\nexport type VSlideGroupItem = InstanceType\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\nimport { VProgressLinear } from '@/components/VProgressLinear'\n\n// Composables\nimport { useLayout } from '@/composables'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { VuetifyLayoutKey } from '@/composables/layout'\nimport { makeLocationProps } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, refElement, useRender } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype VSnackbarSlots = {\n activator: { isActive: boolean, props: Record }\n default: never\n actions: { isActive: Ref }\n text: never\n}\n\nfunction useCountdown (milliseconds: number) {\n const time = shallowRef(milliseconds)\n let timer = -1\n\n function clear () {\n clearInterval(timer)\n }\n\n function reset () {\n clear()\n\n nextTick(() => time.value = milliseconds)\n }\n\n function start (el?: HTMLElement) {\n const style = el ? getComputedStyle(el) : { transitionDuration: 0.2 }\n const interval = parseFloat(style.transitionDuration) * 1000 || 200\n\n clear()\n\n if (time.value <= 0) return\n\n const startTime = performance.now()\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval\n time.value = Math.max(milliseconds - elapsed, 0)\n\n if (time.value <= 0) clear()\n }, interval)\n }\n\n onScopeDispose(clear)\n\n return { clear, time, start, reset }\n}\n\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n vertical: Boolean,\n\n ...makeLocationProps({ location: 'bottom' } as const),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition',\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy']),\n}, 'VSnackbar')\n\nexport const VSnackbar = genericComponent()({\n name: 'VSnackbar',\n\n props: makeVSnackbarProps(),\n\n emits: {\n 'update:modelValue': (v: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { positionClasses } = usePosition(props)\n const { scopeId } = useScopeId()\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { roundedClasses } = useRounded(props)\n const countdown = useCountdown(Number(props.timeout))\n\n const overlay = ref()\n const timerRef = ref()\n const isHovering = shallowRef(false)\n const startY = shallowRef(0)\n const mainStyles = ref()\n const hasLayout = inject(VuetifyLayoutKey, undefined)\n\n useToggleScope(() => !!hasLayout, () => {\n const layout = useLayout()\n\n watchEffect(() => {\n mainStyles.value = layout.mainStyles.value\n })\n })\n\n watch(isActive, startTimeout)\n watch(() => props.timeout, startTimeout)\n\n onMounted(() => {\n if (isActive.value) startTimeout()\n })\n\n let activeTimeout = -1\n function startTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n const timeout = Number(props.timeout)\n\n if (!isActive.value || timeout === -1) return\n\n const element = refElement(timerRef.value)\n\n countdown.start(element)\n\n activeTimeout = window.setTimeout(() => {\n isActive.value = false\n }, timeout)\n }\n\n function clearTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n }\n\n function onPointerenter () {\n isHovering.value = true\n clearTimeout()\n }\n\n function onPointerleave () {\n isHovering.value = false\n startTimeout()\n }\n\n function onTouchstart (event: TouchEvent) {\n startY.value = event.touches[0].clientY\n }\n\n function onTouchend (event: TouchEvent) {\n if (Math.abs(startY.value - event.changedTouches[0].clientY) > 50) {\n isActive.value = false\n }\n }\n\n const locationClasses = computed(() => {\n return props.location.split(' ').reduce((acc, loc) => {\n acc[`v-snackbar--${loc}`] = true\n\n return acc\n }, {} as Record)\n })\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const hasContent = !!(slots.default || slots.text || props.text)\n\n return (\n \n { genOverlays(false, 'v-snackbar') }\n\n { props.timer && !isHovering.value && (\n
    \n \n
    \n )}\n\n { hasContent && (\n \n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n \n )}\n\n { slots.actions && (\n \n
    \n { slots.actions({ isActive }) }\n
    \n \n )}\n
    \n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VSnackbar = InstanceType\n","// Utilities\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type SparklineItem = number | { value: number }\n\nexport const makeLineProps = propsFactory({\n autoDraw: Boolean,\n autoDrawDuration: [Number, String],\n autoDrawEasing: {\n type: String,\n default: 'ease',\n },\n color: String,\n gradient: {\n type: Array as PropType,\n default: () => ([]),\n },\n gradientDirection: {\n type: String as PropType<'top' | 'bottom' | 'left' | 'right'>,\n validator: (val: string) => ['top', 'bottom', 'left', 'right'].includes(val),\n default: 'top',\n },\n height: {\n type: [String, Number],\n default: 75,\n },\n labels: {\n type: Array as PropType,\n default: () => ([]),\n },\n labelSize: {\n type: [Number, String],\n default: 7,\n },\n lineWidth: {\n type: [String, Number],\n default: 4,\n },\n id: String,\n itemValue: {\n type: String,\n default: 'value',\n },\n modelValue: {\n type: Array as PropType,\n default: () => ([]),\n },\n min: [String, Number],\n max: [String, Number],\n padding: {\n type: [String, Number],\n default: 8,\n },\n showLabels: Boolean,\n smooth: Boolean,\n width: {\n type: [Number, String],\n default: 300,\n },\n}, 'Line')\n","// Utilities\nimport { computed } from 'vue'\nimport { makeLineProps } from './util/line'\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VBarlineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport type SparklineItem = number | { value: number }\n\nexport type SparklineText = {\n x: number\n value: string\n}\n\nexport interface Boundary {\n minX: number\n minY: number\n maxX: number\n maxY: number\n}\n\nexport interface Bar {\n x: number\n y: number\n height: number\n value: number\n}\n\nexport const makeVBarlineProps = propsFactory({\n autoLineWidth: Boolean,\n\n ...makeLineProps(),\n}, 'VBarline')\n\nexport const VBarline = genericComponent()({\n name: 'VBarline',\n\n props: makeVBarlineProps(),\n\n setup (props, { slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `barline-${uid}`)\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || 500)\n\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n\n const lineWidth = computed(() => parseFloat(props.lineWidth) || 4)\n\n const totalWidth = computed(() => Math.max(props.modelValue.length * lineWidth.value, Number(props.width)))\n\n const boundary = computed(() => {\n return {\n minX: 0,\n maxX: totalWidth.value,\n minY: 0,\n maxY: parseInt(props.height, 10),\n }\n })\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)))\n\n function genBars (\n values: number[],\n boundary: Boundary\n ): Bar[] {\n const { minX, maxX, minY, maxY } = boundary\n const totalValues = values.length\n let maxValue = props.max != null ? Number(props.max) : Math.max(...values)\n let minValue = props.min != null ? Number(props.min) : Math.min(...values)\n\n if (minValue > 0 && props.min == null) minValue = 0\n if (maxValue < 0 && props.max == null) maxValue = 0\n\n const gridX = maxX / totalValues\n const gridY = (maxY - minY) / ((maxValue - minValue) || 1)\n const horizonY = maxY - Math.abs(minValue * gridY)\n\n return values.map((value, index) => {\n const height = Math.abs(gridY * value)\n\n return {\n x: minX + index * gridX,\n y: horizonY - height +\n +(value < 0) * height,\n height,\n value,\n }\n })\n }\n\n const parsedLabels = computed(() => {\n const labels = []\n const points = genBars(items.value, boundary.value)\n const len = points.length\n\n for (let i = 0; labels.length < len; i++) {\n const item = points[i]\n let value = props.labels[i]\n\n if (!value) {\n value = typeof item === 'object'\n ? item.value\n : item\n }\n\n labels.push({\n x: item.x,\n value: String(value),\n })\n }\n\n return labels\n })\n\n const bars = computed(() => genBars(items.value, boundary.value))\n const offsetX = computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2)\n\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse()\n return (\n \n \n \n {\n gradientData.map((color, index) => (\n \n ))\n }\n \n \n\n \n {\n bars.value.map(item => (\n \n { props.autoDraw && (\n <>\n \n \n \n )}\n \n ))\n }\n \n\n { hasLabels.value && (\n \n {\n parsedLabels.value.map((item, i) => (\n \n { slots.label?.({ index: i, value: item.value }) ?? item.value }\n \n ))\n }\n \n )}\n\n \n \n \n \n )\n })\n },\n})\n\nexport type VBarline = InstanceType\n","// @ts-nocheck\n/* eslint-disable */\n\nimport { Point } from '../VSparkline'\n// import { checkCollinear, getDistance, moveTo } from './math'\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nexport function genPath (points: Point[], radius: number, fill = false, height = 75) {\n if (points.length === 0) return ''\n const start = points.shift()!\n const end = points[points.length - 1]\n\n return (\n (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) +\n points\n .map((point, index) => {\n const next = points[index + 1]\n const prev = points[index - 1] || start\n const isCollinear = next && checkCollinear(next, point, prev)\n\n if (!next || isCollinear) {\n return `L${point.x} ${point.y}`\n }\n\n const threshold = Math.min(\n getDistance(prev, point),\n getDistance(next, point)\n )\n const isTooCloseForRadius = threshold / 2 < radius\n const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius\n\n const before = moveTo(prev, point, radiusForPoint)\n const after = moveTo(next, point, radiusForPoint)\n\n return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`\n })\n .join('') +\n (fill ? `L${end.x} ${height - start.x + 2} Z` : '')\n )\n}\n\nfunction int (value: string | number): number {\n return parseInt(value, 10)\n}\n\n/**\n * https://en.wikipedia.org/wiki/Collinearity\n * x=(x1+x2)/2\n * y=(y1+y2)/2\n */\nexport function checkCollinear (p0: Point, p1: Point, p2: Point): boolean {\n return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y)\n}\n\nexport function getDistance (p1: Point, p2: Point): number {\n return Math.sqrt(\n Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)\n )\n}\n\nexport function moveTo (to: Point, from: Point, radius: number) {\n const vector = { x: to.x - from.x, y: to.y - from.y }\n const length = Math.sqrt((vector.x * vector.x) + (vector.y * vector.y))\n const unitVector = { x: vector.x / length, y: vector.y / length }\n\n return {\n x: from.x + unitVector.x * radius,\n y: from.y + unitVector.y * radius,\n }\n}\n","// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { makeLineProps } from './util/line'\nimport { genPath as _genPath } from './util/path'\nimport { genericComponent, getPropertyFromItem, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VTrendlineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport type SparklineItem = number | { value: number }\n\nexport type SparklineText = {\n x: number\n value: string\n}\n\nexport interface Boundary {\n minX: number\n minY: number\n maxX: number\n maxY: number\n}\n\nexport interface Point {\n x: number\n y: number\n value: number\n}\n\nexport const makeVTrendlineProps = propsFactory({\n fill: Boolean,\n\n ...makeLineProps(),\n}, 'VTrendline')\n\nexport const VTrendline = genericComponent()({\n name: 'VTrendline',\n\n props: makeVTrendlineProps(),\n\n setup (props, { slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `trendline-${uid}`)\n const autoDrawDuration = computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000))\n\n const lastLength = ref(0)\n const path = ref(null)\n\n function genPoints (\n values: number[],\n boundary: Boundary\n ): Point[] {\n const { minX, maxX, minY, maxY } = boundary\n const totalValues = values.length\n const maxValue = props.max != null ? Number(props.max) : Math.max(...values)\n const minValue = props.min != null ? Number(props.min) : Math.min(...values)\n\n const gridX = (maxX - minX) / (totalValues - 1)\n const gridY = (maxY - minY) / ((maxValue - minValue) || 1)\n\n return values.map((value, index) => {\n return {\n x: minX + index * gridX,\n y: maxY - (value - minValue) * gridY,\n value,\n }\n })\n }\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n const lineWidth = computed(() => {\n return parseFloat(props.lineWidth) || 4\n })\n const totalWidth = computed(() => Number(props.width))\n\n const boundary = computed(() => {\n const padding = Number(props.padding)\n\n return {\n minX: padding,\n maxX: totalWidth.value - padding,\n minY: padding,\n maxY: parseInt(props.height, 10) - padding,\n }\n })\n const items = computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)))\n const parsedLabels = computed(() => {\n const labels = []\n const points = genPoints(items.value, boundary.value)\n const len = points.length\n\n for (let i = 0; labels.length < len; i++) {\n const item = points[i]\n let value = props.labels[i]\n\n if (!value) {\n value = typeof item === 'object'\n ? item.value\n : item\n }\n\n labels.push({\n x: item.x,\n value: String(value),\n })\n }\n\n return labels\n })\n\n watch(() => props.modelValue, async () => {\n await nextTick()\n\n if (!props.autoDraw || !path.value) return\n\n const pathRef = path.value\n const length = pathRef.getTotalLength()\n\n if (!props.fill) {\n // Initial setup to \"hide\" the line by using the stroke dash array\n pathRef.style.strokeDasharray = `${length}`\n pathRef.style.strokeDashoffset = `${length}`\n\n // Force reflow to ensure the transition starts from this state\n pathRef.getBoundingClientRect()\n\n // Animate the stroke dash offset to \"draw\" the line\n pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`\n pathRef.style.strokeDashoffset = '0'\n } else {\n // Your existing logic for filled paths remains the same\n pathRef.style.transformOrigin = 'bottom center'\n pathRef.style.transition = 'none'\n pathRef.style.transform = `scaleY(0)`\n pathRef.getBoundingClientRect()\n pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`\n pathRef.style.transform = `scaleY(1)`\n }\n\n lastLength.value = length\n }, { immediate: true })\n\n function genPath (fill: boolean) {\n return _genPath(\n genPoints(items.value, boundary.value),\n props.smooth ? 8 : Number(props.smooth),\n fill,\n parseInt(props.height, 10)\n )\n }\n\n useRender(() => {\n const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse()\n\n return (\n \n \n \n {\n gradientData.map((color, index) => (\n \n ))\n }\n \n \n\n { hasLabels.value && (\n \n {\n parsedLabels.value.map((item, i) => (\n \n { slots.label?.({ index: i, value: item.value }) ?? item.value }\n \n ))\n }\n \n )}\n\n \n\n { props.fill && (\n \n )}\n \n )\n })\n },\n})\n\nexport type VTrendline = InstanceType\n","// Components\nimport { makeVBarlineProps, VBarline } from './VBarline'\nimport { makeVTrendlineProps, VTrendline } from './VTrendline'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\n\nexport const makeVSparklineProps = propsFactory({\n type: {\n type: String as PropType<'trend' | 'bar'>,\n default: 'trend',\n },\n\n ...makeVBarlineProps(),\n ...makeVTrendlineProps(),\n}, 'VSparkline')\n\nexport type VSparklineSlots = {\n default: void\n label: { index: number, value: string }\n}\n\nexport const VSparkline = genericComponent()({\n name: 'VSparkline',\n\n props: makeVSparklineProps(),\n\n setup (props, { slots }) {\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n const hasLabels = computed(() => {\n return Boolean(\n props.showLabels ||\n props.labels.length > 0 ||\n !!slots?.label\n )\n })\n const totalHeight = computed(() => {\n let height = parseInt(props.height, 10)\n\n if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5\n\n return height\n })\n\n useRender(() => {\n const Tag = props.type === 'trend' ? VTrendline : VBarline\n const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props)\n\n return (\n \n )\n })\n },\n})\n\nexport type VSparkline = InstanceType\n","// Styles\nimport './VSpeedDial.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVMenuProps, VMenu } from '@/components/VMenu/VMenu'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\nimport type { Anchor } from '@/util'\n\nexport const makeVSpeedDialProps = propsFactory({\n ...makeComponentProps(),\n ...makeVMenuProps({\n offset: 8,\n minWidth: 0,\n openDelay: 0,\n closeDelay: 100,\n location: 'top center' as const,\n transition: 'scale-transition',\n }),\n}, 'VSpeedDial')\n\nexport const VSpeedDial = genericComponent()({\n name: 'VSpeedDial',\n\n props: makeVSpeedDialProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n\n const menuRef = ref()\n\n const location = computed(() => {\n const [y, x = 'center'] = props.location.split(' ')\n\n return `${y} ${x}`\n }) as ComputedRef\n\n const locationClasses = computed(() => ({\n [`v-speed-dial__content--${location.value.replace(' ', '-')}`]: true,\n }))\n\n useRender(() => {\n const menuProps = VMenu.filterProps(props)\n\n return (\n \n {{\n ...slots,\n default: slotProps => (\n \n \n { slots.default?.(slotProps) }\n \n \n ),\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSpeedDial = InstanceType\n","// Components\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VStepperActionsSlots = {\n prev: {\n props: { onClick: () => void }\n }\n next: {\n props: { onClick: () => void }\n }\n}\n\nexport const makeVStepperActionsProps = propsFactory({\n color: String,\n disabled: {\n type: [Boolean, String] as PropType,\n default: false,\n },\n prevText: {\n type: String,\n default: '$vuetify.stepper.prev',\n },\n nextText: {\n type: String,\n default: '$vuetify.stepper.next',\n },\n}, 'VStepperActions')\n\nexport const VStepperActions = genericComponent()({\n name: 'VStepperActions',\n\n props: makeVStepperActionsProps(),\n\n emits: {\n 'click:prev': () => true,\n 'click:next': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n function onClickPrev () {\n emit('click:prev')\n }\n\n function onClickNext () {\n emit('click:next')\n }\n\n useRender(() => {\n const prevSlotProps = {\n onClick: onClickPrev,\n }\n const nextSlotProps = {\n onClick: onClickNext,\n }\n\n return (\n
    \n \n { slots.prev?.({ props: prevSlotProps }) ?? (\n \n )}\n \n\n \n { slots.next?.({ props: nextSlotProps }) ?? (\n \n )}\n \n
    \n )\n })\n\n return {}\n },\n})\n\nexport type VStepperActions = InstanceType\n","// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VStepperHeader = createSimpleFunctional('v-stepper-header')\n\nexport type VStepperHeader = InstanceType\n","// Styles\nimport './VStepperItem.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar/VAvatar'\nimport { VIcon } from '@/components/VIcon/VIcon'\n\n// Composables\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed } from 'vue'\nimport { VStepperSymbol } from './VStepper'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type StepperItemSlot = {\n canEdit: boolean\n hasError: boolean\n hasCompleted: boolean\n title?: string | number\n subtitle?: string | number\n step: any\n}\n\nexport type VStepperItemSlots = {\n default: StepperItemSlot\n icon: StepperItemSlot\n title: StepperItemSlot\n subtitle: StepperItemSlot\n}\n\nexport type ValidationRule = () => string | boolean\n\nexport const makeVStepperItemProps = propsFactory({\n color: String,\n title: String,\n subtitle: String,\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$complete',\n },\n editable: Boolean,\n editIcon: {\n type: String,\n default: '$edit',\n },\n error: Boolean,\n errorIcon: {\n type: String,\n default: '$error',\n },\n icon: String,\n ripple: {\n type: [Boolean, Object] as PropType,\n default: true,\n },\n rules: {\n type: Array as PropType,\n default: () => ([]),\n },\n\n ...makeGroupItemProps(),\n}, 'VStepperItem')\n\nexport const VStepperItem = genericComponent()({\n name: 'VStepperItem',\n\n directives: { Ripple },\n\n props: makeVStepperItemProps(),\n\n emits: {\n 'group:selected': (val: { value: boolean }) => true,\n },\n\n setup (props, { slots }) {\n const group = useGroupItem(props, VStepperSymbol, true)\n const step = computed(() => group?.value.value ?? props.value)\n const isValid = computed(() => props.rules.every(handler => handler() === true))\n const canEdit = computed(() => !props.disabled && props.editable)\n const hasError = computed(() => props.error || !isValid.value)\n const hasCompleted = computed(() => props.complete || (props.rules.length > 0 && isValid.value))\n const icon = computed(() => {\n if (hasError.value) return props.errorIcon\n if (hasCompleted.value) return props.completeIcon\n if (props.editable) return props.editIcon\n\n return props.icon\n })\n const slotProps = computed(() => ({\n canEdit: canEdit.value,\n hasError: hasError.value,\n hasCompleted: hasCompleted.value,\n title: props.title,\n subtitle: props.subtitle,\n step: step.value,\n value: props.value,\n }))\n\n useRender(() => {\n const hasColor = (\n !group ||\n group.isSelected.value ||\n hasCompleted.value ||\n canEdit.value\n ) && (\n !hasError.value &&\n !props.disabled\n )\n const hasTitle = !!(props.title != null || slots.title)\n const hasSubtitle = !!(props.subtitle != null || slots.subtitle)\n\n function onClick () {\n group?.toggle()\n }\n\n return (\n \n \n { slots.icon?.(slotProps.value) ?? (\n icon.value ? (\n \n ) : step.value\n )}\n \n\n
    \n { hasTitle && (\n \n { slots.title?.(slotProps.value) ?? props.title }\n
    \n )}\n\n { hasSubtitle && (\n \n { slots.subtitle?.(slotProps.value) ?? props.subtitle }\n \n )}\n\n { slots.default?.(slotProps.value) }\n \n \n )\n })\n return {}\n },\n})\n\nexport type VStepperItem = InstanceType\n","// Components\nimport { makeVWindowProps, VWindow } from '@/components/VWindow/VWindow'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\n\nexport const VStepperSymbol: InjectionKey = Symbol.for('vuetify:v-stepper')\n\nexport const makeVStepperWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory']),\n}, 'VStepperWindow')\n\nexport const VStepperWindow = genericComponent()({\n name: 'VStepperWindow',\n\n props: makeVStepperWindowProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const group = inject(VStepperSymbol, null)\n const _model = useProxiedModel(props, 'modelValue')\n\n const model = computed({\n get () {\n // Always return modelValue if defined\n // or if not within a VStepper group\n if (_model.value != null || !group) return _model.value\n\n // If inside of a VStepper, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value\n },\n set (val) {\n _model.value = val\n },\n })\n\n useRender(() => {\n const windowProps = VWindow.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VStepperWindow = InstanceType\n","// Components\nimport { makeVWindowItemProps, VWindowItem } from '@/components/VWindow/VWindowItem'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVStepperWindowItemProps = propsFactory({\n ...makeVWindowItemProps(),\n}, 'VStepperWindowItem')\n\nexport const VStepperWindowItem = genericComponent()({\n name: 'VStepperWindowItem',\n\n props: makeVStepperWindowItemProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VStepperWindowItem = InstanceType\n","// Styles\nimport './VStepper.sass'\n\n// Components\nimport { makeVStepperActionsProps, VStepperActions } from './VStepperActions'\nimport { VStepperHeader } from './VStepperHeader'\nimport { VStepperItem } from './VStepperItem'\nimport { VStepperWindow } from './VStepperWindow'\nimport { VStepperWindowItem } from './VStepperWindowItem'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeGroupProps, useGroup } from '@/composables/group'\n\n// Utilities\nimport { computed, toRefs } from 'vue'\nimport { genericComponent, getPropertyFromItem, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { StepperItemSlot } from './VStepperItem'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VStepperSymbol: InjectionKey = Symbol.for('vuetify:v-stepper')\n\nexport type StepperItem = string | Record\n\nexport type VStepperSlot = {\n prev: () => void\n next: () => void\n}\n\nexport type VStepperSlots = {\n actions: VStepperSlot\n default: VStepperSlot\n header: StepperItem\n 'header-item': StepperItemSlot\n icon: StepperItemSlot\n title: StepperItemSlot\n subtitle: StepperItemSlot\n item: StepperItem\n prev: never\n next: never\n} & {\n [key: `header-item.${string}`]: StepperItemSlot\n [key: `item.${string}`]: StepperItem\n}\n\nexport const makeVStepperProps = propsFactory({\n altLabels: Boolean,\n bgColor: String,\n editable: Boolean,\n hideActions: Boolean,\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n itemTitle: {\n type: String,\n default: 'title',\n },\n itemValue: {\n type: String,\n default: 'value',\n },\n mobile: Boolean,\n nonLinear: Boolean,\n flat: Boolean,\n\n ...makeGroupProps({\n mandatory: 'force' as const,\n selectedClass: 'v-stepper-item--selected',\n }),\n ...makeVSheetProps(),\n ...only(makeVStepperActionsProps(), ['prevText', 'nextText']),\n}, 'VStepper')\n\nexport const VStepper = genericComponent()({\n name: 'VStepper',\n\n props: makeVStepperProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const { items: _items, next, prev, selected } = useGroup(props, VStepperSymbol)\n const { color, editable, prevText, nextText } = toRefs(props)\n\n const items = computed(() => props.items.map((item, index) => {\n const title = getPropertyFromItem(item, props.itemTitle, item)\n const value = getPropertyFromItem(item, props.itemValue, index + 1)\n\n return {\n title,\n value,\n raw: item,\n }\n }))\n const activeIndex = computed(() => {\n return _items.value.findIndex(item => selected.value.includes(item.id))\n })\n const disabled = computed(() => {\n if (props.disabled) return props.disabled\n if (activeIndex.value === 0) return 'prev'\n if (activeIndex.value === _items.value.length - 1) return 'next'\n\n return false\n })\n\n provideDefaults({\n VStepperItem: {\n editable,\n prevText,\n nextText,\n },\n VStepperActions: {\n color,\n disabled,\n prevText,\n nextText,\n },\n })\n\n useRender(() => {\n const sheetProps = VSheet.filterProps(props)\n\n const hasHeader = !!(slots.header || props.items.length)\n const hasWindow = props.items.length > 0\n const hasActions = !props.hideActions && !!(hasWindow || slots.actions)\n\n return (\n \n { hasHeader && (\n \n { items.value.map((item, index) => (\n <>\n { !!index && () }\n\n \n \n ))}\n \n )}\n\n { hasWindow && (\n \n { items.value.map(item => (\n slots[`item.${item.value}`]?.(item) ?? slots.item?.(item),\n }}\n />\n ))}\n \n )}\n\n { slots.default?.({ prev, next }) }\n\n { hasActions && (\n slots.actions?.({ next, prev }) ?? (\n \n )\n )}\n \n )\n })\n\n return {\n prev,\n next,\n }\n },\n})\n\nexport type VStepper = InstanceType\n","// Styles\nimport './VSwitch.sass'\n\n// Components\nimport { VScaleTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VProgressCircular } from '@/components/VProgressCircular'\nimport { makeVSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { LoaderSlot, useLoader } from '@/composables/loader'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { filterInputAttrs, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, Ref } from 'vue'\nimport type { VInputSlots } from '@/components/VInput/VInput'\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\nimport type { IconValue } from '@/composables/icons'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\nexport type VSwitchSlot = {\n model: Ref\n isValid: ComputedRef\n}\n\nexport type VSwitchSlots =\n & VInputSlots\n & VSelectionControlSlots\n & {\n loader: LoaderSlotProps\n thumb: { icon: IconValue | undefined } & VSwitchSlot\n 'track-false': VSwitchSlot\n 'track-true': VSwitchSlot\n }\n\nexport const makeVSwitchProps = propsFactory({\n indeterminate: Boolean,\n inset: Boolean,\n flat: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n\n ...makeVInputProps(),\n ...makeVSelectionControlProps(),\n}, 'VSwitch')\n\nexport const VSwitch = genericComponent(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VSwitchSlots,\n) => GenericProps>()({\n name: 'VSwitch',\n\n inheritAttrs: false,\n\n props: makeVSwitchProps(),\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n 'update:indeterminate': (value: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const indeterminate = useProxiedModel(props, 'indeterminate')\n const model = useProxiedModel(props, 'modelValue')\n const { loaderClasses } = useLoader(props)\n const { isFocused, focus, blur } = useFocus(props)\n const control = ref()\n\n const loaderColor = computed(() => {\n return typeof props.loading === 'string' && props.loading !== ''\n ? props.loading\n : props.color\n })\n\n const uid = getUid()\n const id = computed(() => props.id || `switch-${uid}`)\n\n function onChange () {\n if (indeterminate.value) {\n indeterminate.value = false\n }\n }\n function onTrackClick (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n control.value?.input?.click()\n }\n\n useRender(() => {\n const [rootAttrs, controlAttrs] = filterInputAttrs(attrs)\n const inputProps = VInput.filterProps(props)\n const controlProps = VSelectionControl.filterProps(props)\n\n return (\n \n {{\n ...slots,\n default: ({\n id,\n messagesId,\n isDisabled,\n isReadonly,\n isValid,\n }) => {\n const slotProps = {\n model,\n isValid,\n }\n\n return (\n \n {{\n ...slots,\n default: ({ backgroundColorClasses, backgroundColorStyles }) => (\n \n { slots['track-true'] && (\n
    \n { slots['track-true'](slotProps) }\n
    \n )}\n\n { slots['track-false'] && (\n
    \n { slots['track-false'](slotProps) }\n
    \n )}\n \n ),\n input: ({ inputNode, icon, backgroundColorClasses, backgroundColorStyles }) => (\n <>\n { inputNode }\n \n { slots.thumb ? (\n \n { slots.thumb({ ...slotProps, icon }) }\n \n ) : (\n \n { !props.loading ? (\n (icon && (\n \n ))) : (\n \n { slotProps => (\n slots.loader\n ? slots.loader(slotProps)\n : (\n \n )\n )}\n \n )}\n \n )}\n \n \n ),\n }}\n
    \n )\n },\n }}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VSwitch = InstanceType\n","// Styles\nimport './VSystemBar.sass'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVSystemBarProps = propsFactory({\n color: String,\n height: [Number, String],\n window: Boolean,\n\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VSystemBar')\n\nexport const VSystemBar = genericComponent()({\n name: 'VSystemBar',\n\n props: makeVSystemBarProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { ssrBootStyles } = useSsrBoot()\n const height = computed(() => props.height ?? (props.window ? 32 : 24))\n const { layoutItemStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: shallowRef('top'),\n layoutSize: height,\n elementSize: height,\n active: computed(() => true),\n absolute: toRef(props, 'absolute'),\n })\n\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VSystemBar = InstanceType\n","// Types\nimport type { InjectionKey } from 'vue'\nimport type { GroupProvide } from '@/composables/group'\n\nexport const VTabsSymbol: InjectionKey = Symbol.for('vuetify:v-tabs')\n","// Styles\nimport './VTab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'VTab')\n\nexport const VTab = genericComponent()({\n name: 'VTab',\n\n props: makeVTabProps(),\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n\n const rootEl = ref()\n const sliderEl = ref()\n\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false)\n\n function updateSlider ({ value }: { value: boolean }) {\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0\n\n const sigma = 1.5\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n 'none',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n \n {{\n ...slots,\n default: () => (\n <>\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n \n )}\n \n ),\n }}\n \n )\n })\n\n return forwardRefs({}, rootEl)\n },\n})\n\nexport type VTab = InstanceType\n","// Components\nimport { makeVWindowProps, VWindow } from '@/components/VWindow/VWindow'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTabsSymbol } from './shared'\n\nexport const makeVTabsWindowProps = propsFactory({\n ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory']),\n}, 'VTabsWindow')\n\nexport const VTabsWindow = genericComponent()({\n name: 'VTabsWindow',\n\n props: makeVTabsWindowProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const group = inject(VTabsSymbol, null)\n const _model = useProxiedModel(props, 'modelValue')\n\n const model = computed({\n get () {\n // Always return modelValue if defined\n // or if not within a VTabs group\n if (_model.value != null || !group) return _model.value\n\n // If inside of a VTabs, find the currently selected\n // item by id. Item value may be assigned by its index\n return group.items.value.find(item => group.selected.value.includes(item.id))?.value\n },\n set (val) {\n _model.value = val\n },\n })\n\n useRender(() => {\n const windowProps = VWindow.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VTabsWindow = InstanceType\n","// Components\nimport { makeVWindowItemProps, VWindowItem } from '@/components/VWindow/VWindowItem'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVTabsWindowItemProps = propsFactory({\n ...makeVWindowItemProps(),\n}, 'VTabsWindowItem')\n\nexport const VTabsWindowItem = genericComponent()({\n name: 'VTabsWindowItem',\n\n props: makeVTabsWindowItemProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const windowItemProps = VWindowItem.filterProps(props)\n\n return (\n \n )\n })\n\n return {}\n },\n})\n\nexport type VTabsWindowItem = InstanceType\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VTab } from './VTab'\nimport { VTabsWindow } from './VTabsWindow'\nimport { VTabsWindowItem } from './VTabsWindowItem'\nimport { makeVSlideGroupProps, VSlideGroup } from '@/components/VSlideGroup/VSlideGroup'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, isObject, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport type TabItem = string | number | Record\n\nexport type VTabsSlot = {\n item: TabItem\n}\n\nexport type VTabsSlots = {\n default: never\n tab: VTabsSlot\n item: VTabsSlot\n window: never\n} & {\n [key: `tab.${string}`]: VTabsSlot\n [key: `item.${string}`]: VTabsSlot\n}\n\nfunction parseItems (items: readonly TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (!isObject(item)) return { text: item, value: item }\n\n return item\n })\n}\n\nexport const makeVTabsProps = propsFactory({\n alignTabs: {\n type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n default: 'start',\n },\n color: String,\n fixedTabs: Boolean,\n items: {\n type: Array as PropType,\n default: () => ([]),\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n sliderColor: String,\n\n ...makeVSlideGroupProps({\n mandatory: 'force' as const,\n selectedClass: 'v-tab-item--selected',\n }),\n ...makeDensityProps(),\n ...makeTagProps(),\n}, 'VTabs')\n\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n\n props: makeVTabsProps(),\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { attrs, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const items = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { scopeId } = useScopeId()\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n useRender(() => {\n const slideGroupProps = VSlideGroup.filterProps(props)\n const hasWindow = !!(slots.window || props.items.length > 0)\n\n return (\n <>\n \n { slots.default?.() ?? items.value.map(item => (\n slots.tab?.({ item }) ?? (\n slots[`tab.${item.value}`]?.({ item }),\n }}\n />\n )\n ))}\n \n\n { hasWindow && (\n \n { items.value.map(item => slots.item?.({ item }) ?? (\n slots[`item.${item.value}`]?.({ item }),\n }}\n />\n ))}\n\n { slots.window?.() }\n \n )}\n \n )\n })\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType\n","// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport const makeVTextareaProps = propsFactory({\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n maxRows: {\n type: [Number, String],\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n suffix: String,\n modelModifiers: Object as PropType>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextarea')\n\ntype VTextareaSlots = Omit & {\n counter: VCounterSlot\n}\n\nexport const VTextarea = genericComponent()({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextareaProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value || '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as string | number\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref()\n const vFieldRef = ref()\n const controlHeight = shallowRef('')\n const textareaRef = ref()\n const isActive = computed(() => (\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLTextAreaElement\n model.value = el.value\n if (props.modelModifiers?.trim) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n const sizerRef = ref()\n const rows = ref(+props.rows)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n watchEffect(() => {\n if (!props.autoGrow) rows.value = +props.rows\n })\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n const fieldStyle = getComputedStyle(vFieldRef.value.$el)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-input-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = Math.max(\n parseFloat(props.rows) * lineHeight + padding,\n parseFloat(fieldStyle.getPropertyValue('--v-input-control-height'))\n )\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n const newHeight = clamp(height ?? 0, minHeight, maxHeight)\n rows.value = Math.floor((newHeight - padding) / lineHeight)\n\n controlHeight.value = convertToUnit(newHeight)\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n watch(() => props.density, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = filterFieldProps(props)\n\n return (\n \n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n \n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n \n { props.prefix }\n \n )}\n\n \n\n { props.autoGrow && (\n \n )}\n\n { props.suffix && (\n \n { props.suffix }\n \n )}\n \n ),\n }}\n \n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n \n\n \n \n )}\n \n ) : undefined,\n }}\n \n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType\n","// Styles\nimport './VThemeProvider.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, propsFactory } from '@/util'\n\nexport const makeVThemeProviderProps = propsFactory({\n withBackground: Boolean,\n\n ...makeComponentProps(),\n ...makeThemeProps(),\n ...makeTagProps(),\n}, 'VThemeProvider')\n\nexport const VThemeProvider = genericComponent()({\n name: 'VThemeProvider',\n\n props: makeVThemeProviderProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n\n return () => {\n if (!props.withBackground) return slots.default?.()\n\n return (\n \n { slots.default?.() }\n \n )\n }\n },\n})\n\nexport type VThemeProvider = InstanceType\n","// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeSizeProps, useSize } from '@/composables/size'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVTimelineDividerProps = propsFactory({\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n icon: IconValue,\n iconColor: String,\n lineColor: String,\n\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeElevationProps(),\n}, 'VTimelineDivider')\n\nexport const VTimelineDivider = genericComponent()({\n name: 'VTimelineDivider',\n\n props: makeVTimelineDividerProps(),\n\n setup (props, { slots }) {\n const { sizeClasses, sizeStyles } = useSize(props, 'v-timeline-divider__dot')\n const { backgroundColorStyles, backgroundColorClasses } = useBackgroundColor(toRef(props, 'dotColor'))\n const { roundedClasses } = useRounded(props, 'v-timeline-divider__dot')\n const { elevationClasses } = useElevation(props)\n const {\n backgroundColorClasses: lineColorClasses,\n backgroundColorStyles: lineColorStyles,\n } = useBackgroundColor(toRef(props, 'lineColor'))\n\n useRender(() => (\n \n \n\n { !props.hideDot && (\n \n \n { !slots.default ? (\n \n ) : (\n \n )}\n \n \n )}\n\n \n \n ))\n\n return {}\n },\n})\n\nexport type VTimelineDivider = InstanceType\n","// Components\nimport { VTimelineDivider } from './VTimelineDivider'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { ref, shallowRef, watch } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VTimelineItemSlots = {\n default: never\n icon: never\n opposite: never\n}\n\nexport const makeVTimelineItemProps = propsFactory({\n density: String as PropType<'default' | 'compact'>,\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n hideOpposite: {\n type: Boolean,\n default: undefined,\n },\n icon: IconValue,\n iconColor: String,\n lineInset: [Number, String],\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n}, 'VTimelineItem')\n\nexport const VTimelineItem = genericComponent()({\n name: 'VTimelineItem',\n\n props: makeVTimelineItemProps(),\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const dotSize = shallowRef(0)\n const dotRef = ref()\n watch(dotRef, newValue => {\n if (!newValue) return\n dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0\n }, {\n flush: 'post',\n })\n\n useRender(() => (\n \n \n { slots.default?.() }\n \n\n \n\n { props.density !== 'compact' && (\n
    \n { !props.hideOpposite && slots.opposite?.() }\n
    \n )}\n \n ))\n\n return {}\n },\n})\n\nexport type VTimelineItem = InstanceType\n","// Styles\nimport './VTimeline.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Prop } from 'vue'\nimport { makeVTimelineItemProps } from './VTimelineItem'\n\nexport type TimelineDirection = 'vertical' | 'horizontal'\nexport type TimelineSide = 'start' | 'end' | undefined\nexport type TimelineAlign = 'center' | 'start'\nexport type TimelineTruncateLine = 'start' | 'end' | 'both' | undefined\n\nexport const makeVTimelineProps = propsFactory({\n align: {\n type: String,\n default: 'center',\n validator: (v: any) => ['center', 'start'].includes(v),\n } as Prop,\n direction: {\n type: String,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n } as Prop,\n justify: {\n type: String,\n default: 'auto',\n validator: (v: any) => ['auto', 'center'].includes(v),\n },\n side: {\n type: String,\n validator: (v: any) => v == null || ['start', 'end'].includes(v),\n } as Prop,\n lineThickness: {\n type: [String, Number],\n default: 2,\n },\n lineColor: String,\n truncateLine: {\n type: String,\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n } as Prop,\n\n ...only(makeVTimelineItemProps({\n lineInset: 0,\n }), ['dotColor', 'fillDot', 'hideOpposite', 'iconColor', 'lineInset', 'size']),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VTimeline')\n\nexport const VTimeline = genericComponent()({\n name: 'VTimeline',\n\n props: makeVTimelineProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { densityClasses } = useDensity(props)\n const { rtlClasses } = useRtl()\n\n provideDefaults({\n VTimelineDivider: {\n lineColor: toRef(props, 'lineColor'),\n },\n VTimelineItem: {\n density: toRef(props, 'density'),\n dotColor: toRef(props, 'dotColor'),\n fillDot: toRef(props, 'fillDot'),\n hideOpposite: toRef(props, 'hideOpposite'),\n iconColor: toRef(props, 'iconColor'),\n lineColor: toRef(props, 'lineColor'),\n lineInset: toRef(props, 'lineInset'),\n size: toRef(props, 'size'),\n },\n })\n\n const sideClasses = computed(() => {\n const side = props.side ? props.side : props.density !== 'default' ? 'end' : null\n\n return side && `v-timeline--side-${side}`\n })\n\n const truncateClasses = computed(() => {\n const classes = [\n 'v-timeline--truncate-line-start',\n 'v-timeline--truncate-line-end',\n ]\n\n switch (props.truncateLine) {\n case 'both': return classes\n case 'start': return classes[0]\n case 'end': return classes[1]\n default: return null\n }\n })\n\n useRender(() => (\n \n ))\n\n return {}\n },\n})\n\nexport type VTimeline = InstanceType\n","// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVToolbarItemsProps = propsFactory({\n ...makeComponentProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VToolbarItems')\n\nexport const VToolbarItems = genericComponent()({\n name: 'VToolbarItems',\n\n props: makeVToolbarItemsProps(),\n\n setup (props, { slots }) {\n provideDefaults({\n VBtn: {\n color: toRef(props, 'color'),\n height: 'inherit',\n variant: toRef(props, 'variant'),\n },\n })\n\n useRender(() => (\n \n { slots.default?.() }\n \n ))\n\n return {}\n },\n})\n\nexport type VToolbarItems = InstanceType\n","// Styles\nimport './VTooltip.sass'\n\n// Components\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, mergeProps, ref } from 'vue'\nimport { genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVTooltipProps = propsFactory({\n id: String,\n text: String,\n\n ...omit(makeVOverlayProps({\n closeOnBack: false,\n location: 'end' as const,\n locationStrategy: 'connected' as const,\n eager: true,\n minWidth: 0,\n offset: 10,\n openOnClick: false,\n openOnHover: true,\n origin: 'auto' as const,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: false,\n }), [\n 'absolute',\n 'persistent',\n ]),\n}, 'VTooltip')\n\nexport const VTooltip = genericComponent()({\n name: 'VTooltip',\n\n props: makeVTooltipProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-tooltip-${uid}`)\n\n const overlay = ref()\n\n const location = computed(() => {\n return props.location.split(' ').length > 1\n ? props.location\n : props.location + ' center' as StrategyProps['location']\n })\n\n const origin = computed(() => {\n return (\n props.origin === 'auto' ||\n props.origin === 'overlap' ||\n props.origin.split(' ').length > 1 ||\n props.location.split(' ').length > 1\n ) ? props.origin\n : props.origin + ' center' as StrategyProps['origin']\n })\n\n const transition = computed(() => {\n if (props.transition) return props.transition\n return isActive.value ? 'scale-transition' : 'fade-transition'\n })\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-describedby': id.value,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n\n return (\n \n {{\n activator: slots.activator,\n default: (...args) => slots.default?.(...args) ?? props.text,\n }}\n \n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VTooltip = InstanceType\n","// Composables\nimport { makeValidationProps, useValidation } from '@/composables/validation'\n\n// Utilities\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { GenericProps } from '@/util'\n\nexport type VValidationSlots = {\n default: ReturnType\n}\n\nexport const VValidation = genericComponent(\n props: {\n modelValue?: T | null\n 'onUpdate:modelValue'?: (value: T | null) => void\n },\n slots: VValidationSlots,\n) => GenericProps>()({\n name: 'VValidation',\n\n props: makeValidationProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const validation = useValidation(props, 'validation')\n\n return () => slots.default?.(validation)\n },\n})\n\nexport type VValidation = InstanceType\n","// Types\nimport type { DirectiveBinding } from 'vue'\nimport type { MutationOptions } from '@/composables/mutationObserver'\n\nexport interface MutationDirectiveBinding extends Omit {\n value: MutationCallback | { handler: MutationCallback, options?: MutationObserverInit }\n modifiers: MutationOptions\n}\n\nfunction mounted (el: HTMLElement, binding: MutationDirectiveBinding) {\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { once, immediate, ...modifierKeys } = modifiers\n const defaultValue = !Object.keys(modifierKeys).length\n\n const { handler, options } = typeof value === 'object'\n ? value\n : {\n handler: value,\n options: {\n attributes: modifierKeys?.attr ?? defaultValue,\n characterData: modifierKeys?.char ?? defaultValue,\n childList: modifierKeys?.child ?? defaultValue,\n subtree: modifierKeys?.sub ?? defaultValue,\n },\n }\n\n const observer = new MutationObserver((\n mutations: MutationRecord[] = [],\n observer: MutationObserver\n ) => {\n handler?.(mutations, observer)\n\n if (once) unmounted(el, binding)\n })\n\n if (immediate) handler?.([], observer)\n\n el._mutate = Object(el._mutate)\n el._mutate![binding.instance!.$.uid] = { observer }\n\n observer.observe(el, options)\n}\n\nfunction unmounted (el: HTMLElement, binding: MutationDirectiveBinding) {\n if (!el._mutate?.[binding.instance!.$.uid]) return\n\n el._mutate[binding.instance!.$.uid]!.observer.disconnect()\n delete el._mutate[binding.instance!.$.uid]\n}\n\nexport const Mutate = {\n mounted,\n unmounted,\n}\n\nexport default Mutate\n","// Types\nimport type { DirectiveBinding } from 'vue'\n\ninterface ResizeDirectiveBinding extends Omit {\n value: () => void\n modifiers?: {\n active?: boolean\n quiet?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ResizeDirectiveBinding) {\n const handler = binding.value\n const options: AddEventListenerOptions = {\n passive: !binding.modifiers?.active,\n }\n\n window.addEventListener('resize', handler, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![binding.instance!.$.uid] = {\n handler,\n options,\n }\n\n if (!binding.modifiers?.quiet) {\n handler()\n }\n}\n\nfunction unmounted (el: HTMLElement, binding: ResizeDirectiveBinding) {\n if (!el._onResize?.[binding.instance!.$.uid]) return\n\n const { handler, options } = el._onResize[binding.instance!.$.uid]!\n\n window.removeEventListener('resize', handler, options)\n\n delete el._onResize[binding.instance!.$.uid]\n}\n\nexport const Resize = {\n mounted,\n unmounted,\n}\n\nexport default Resize\n","// Types\nimport type { DirectiveBinding } from 'vue'\n\ninterface ScrollDirectiveBinding extends Omit {\n value: EventListener | {\n handler: EventListener\n options?: AddEventListenerOptions\n } | EventListenerObject & { options?: AddEventListenerOptions }\n modifiers?: {\n self?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ScrollDirectiveBinding) {\n const { self = false } = binding.modifiers ?? {}\n const value = binding.value\n const options = (typeof value === 'object' && value.options) || { passive: true }\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler\n\n const target = self\n ? el\n : binding.arg\n ? document.querySelector(binding.arg)\n : window\n\n if (!target) return\n\n target.addEventListener('scroll', handler, options)\n\n el._onScroll = Object(el._onScroll)\n el._onScroll![binding.instance!.$.uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target,\n }\n}\n\nfunction unmounted (el: HTMLElement, binding: ScrollDirectiveBinding) {\n if (!el._onScroll?.[binding.instance!.$.uid]) return\n\n const { handler, options, target = el } = el._onScroll[binding.instance!.$.uid]!\n\n target.removeEventListener('scroll', handler, options)\n delete el._onScroll[binding.instance!.$.uid]\n}\n\nfunction updated (el: HTMLElement, binding: ScrollDirectiveBinding) {\n if (binding.value === binding.oldValue) return\n\n unmounted(el, binding)\n mounted(el, binding)\n}\n\nexport const Scroll = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Scroll\n","// Components\nimport { VTooltip } from '@/components/VTooltip'\n\n// Composables\nimport { useDirectiveComponent } from '@/composables/directiveComponent'\n\n// Types\nimport type { DirectiveBinding } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface TooltipDirectiveBinding extends Omit, 'arg' | 'value'> {\n arg?: { [T in Anchor]: T extends `${infer A} ${infer B}` ? `${A}-${B}` : T }[Anchor]\n value: boolean | string | Record\n}\n\nexport const Tooltip = useDirectiveComponent(VTooltip, binding => {\n return {\n activator: 'parent',\n location: binding.arg?.replace('-', ' ') ?? 'top',\n text: typeof binding.value === 'boolean' ? undefined : binding.value,\n }\n})\n\nexport default Tooltip\n","// Utilities\nimport { h, mergeProps, render, resolveComponent } from 'vue'\nimport { isObject } from '@/util'\n\n// Types\nimport type {\n Component,\n ComponentInternalInstance,\n ComponentPublicInstance,\n ConcreteComponent,\n DirectiveBinding,\n ObjectDirective,\n VNode,\n} from 'vue'\nimport type { ComponentInstance } from '@/util'\n\ntype ExcludeProps =\n | 'v-slots'\n | `v-slot:${string}`\n | `on${Uppercase}${string}`\n | 'key'\n | 'ref'\n | 'ref_for'\n | 'ref_key'\n | '$children'\n\ndeclare const CustomDirectiveSymbol: unique symbol\ntype DirectiveHook = (el: any, binding: B, vnode: VNode, prevVNode: VNode) => void\nexport interface CustomDirective {\n created?: DirectiveHook\n beforeMount?: DirectiveHook\n mounted?: DirectiveHook\n beforeUpdate?: DirectiveHook\n updated?: DirectiveHook\n beforeUnmount?: DirectiveHook\n unmounted?: DirectiveHook\n [CustomDirectiveSymbol]: true\n}\n\nexport function useDirectiveComponent <\n Binding extends DirectiveBinding,\n> (component: string | Component, props?: (binding: Binding) => Record): CustomDirective\nexport function useDirectiveComponent <\n C extends Component,\n Props = Omit['$props'], ExcludeProps>\n> (component: string | C, props?: Record): ObjectDirective\nexport function useDirectiveComponent (\n component: string | Component,\n props?: Record | ((binding: DirectiveBinding) => Record)\n): ObjectDirective | CustomDirective {\n const concreteComponent = (typeof component === 'string'\n ? resolveComponent(component)\n : component) as ConcreteComponent\n\n const hook = mountComponent(concreteComponent, props)\n\n return {\n mounted: hook,\n updated: hook,\n unmounted (el: HTMLElement) {\n render(null, el)\n },\n }\n}\n\nfunction mountComponent (component: ConcreteComponent, props?: Record | ((binding: DirectiveBinding) => Record)) {\n return function (el: HTMLElement, binding: DirectiveBinding, vnode: VNode) {\n const _props = typeof props === 'function' ? props(binding) : props\n const text = binding.value?.text ?? binding.value ?? _props?.text\n const value = isObject(binding.value) ? binding.value : {}\n\n // Get the children from the props or directive value, or the element's children\n const children = () => text ?? el.innerHTML\n\n // If vnode.ctx is the same as the instance, then we're bound to a plain element\n // and need to find the nearest parent component instance to inherit provides from\n const provides = (vnode.ctx === binding.instance!.$\n ? findComponentParent(vnode, binding.instance!.$)?.provides\n : vnode.ctx?.provides) ?? binding.instance!.$.provides\n\n const node = h(component, mergeProps(_props, value), children)\n node.appContext = Object.assign(\n Object.create(null),\n (binding.instance as ComponentPublicInstance).$.appContext,\n { provides }\n )\n\n render(node, el)\n }\n}\n\nfunction findComponentParent (vnode: VNode, root: ComponentInternalInstance): ComponentInternalInstance | null {\n // Walk the tree from root until we find the child vnode\n const stack = new Set()\n const walk = (children: VNode[]): boolean => {\n for (const child of children) {\n if (!child) continue\n\n if (child === vnode) {\n return true\n }\n\n stack.add(child)\n let result\n if (child.suspense) {\n result = walk([child.ssContent!])\n } else if (Array.isArray(child.children)) {\n result = walk(child.children as VNode[])\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree])\n }\n if (result) {\n return result\n }\n stack.delete(child)\n }\n\n return false\n }\n if (!walk([root.subTree])) {\n throw new Error('Could not find original vnode')\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse()\n for (const child of result) {\n if (child.component) {\n return child.component\n }\n }\n return root\n}\n","// Composables\nimport { createDate, DateAdapterSymbol, DateOptionsSymbol } from '@/composables/date/date'\nimport { createDefaults, DefaultsSymbol } from '@/composables/defaults'\nimport { createDisplay, DisplaySymbol } from '@/composables/display'\nimport { createGoTo, GoToSymbol } from '@/composables/goto'\nimport { createIcons, IconSymbol } from '@/composables/icons'\nimport { createLocale, LocaleSymbol } from '@/composables/locale'\nimport { createTheme, ThemeSymbol } from '@/composables/theme'\n\n// Utilities\nimport { nextTick, reactive } from 'vue'\nimport { defineComponent, getUid, IN_BROWSER, mergeDeep } from '@/util'\n\n// Types\nimport type { App, ComponentPublicInstance, InjectionKey } from 'vue'\nimport type { DateOptions } from '@/composables/date'\nimport type { DefaultsOptions } from '@/composables/defaults'\nimport type { DisplayOptions, SSROptions } from '@/composables/display'\nimport type { GoToOptions } from '@/composables/goto'\nimport type { IconOptions } from '@/composables/icons'\nimport type { LocaleOptions, RtlOptions } from '@/composables/locale'\nimport type { ThemeOptions } from '@/composables/theme'\nexport * from './composables'\nexport type { DateOptions, DateInstance, DateModule } from '@/composables/date'\n\nexport interface VuetifyOptions {\n aliases?: Record\n blueprint?: Blueprint\n components?: Record\n date?: DateOptions\n directives?: Record\n defaults?: DefaultsOptions\n display?: DisplayOptions\n goTo?: GoToOptions\n theme?: ThemeOptions\n icons?: IconOptions\n locale?: LocaleOptions & RtlOptions\n ssr?: SSROptions\n}\n\nexport interface Blueprint extends Omit {}\n\nexport function createVuetify (vuetify: VuetifyOptions = {}) {\n const { blueprint, ...rest } = vuetify\n const options: VuetifyOptions = mergeDeep(blueprint, rest)\n const {\n aliases = {},\n components = {},\n directives = {},\n } = options\n\n const defaults = createDefaults(options.defaults)\n const display = createDisplay(options.display, options.ssr)\n const theme = createTheme(options.theme)\n const icons = createIcons(options.icons)\n const locale = createLocale(options.locale)\n const date = createDate(options.date, locale)\n const goTo = createGoTo(options.goTo, locale)\n\n const install = (app: App) => {\n for (const key in directives) {\n app.directive(key, directives[key])\n }\n\n for (const key in components) {\n app.component(key, components[key])\n }\n\n for (const key in aliases) {\n app.component(key, defineComponent({\n ...aliases[key],\n name: key,\n aliasName: aliases[key].name,\n }))\n }\n\n theme.install(app)\n\n app.provide(DefaultsSymbol, defaults)\n app.provide(DisplaySymbol, display)\n app.provide(ThemeSymbol, theme)\n app.provide(IconSymbol, icons)\n app.provide(LocaleSymbol, locale)\n app.provide(DateOptionsSymbol, date.options)\n app.provide(DateAdapterSymbol, date.instance)\n app.provide(GoToSymbol, goTo)\n\n if (IN_BROWSER && options.ssr) {\n if (app.$nuxt) {\n app.$nuxt.hook('app:suspense:resolve', () => {\n display.update()\n })\n } else {\n const { mount } = app\n app.mount = (...args) => {\n const vm = mount(...args)\n nextTick(() => display.update())\n app.mount = mount\n return vm\n }\n }\n }\n\n getUid.reset()\n\n if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n app.mixin({\n computed: {\n $vuetify () {\n return reactive({\n defaults: inject.call(this, DefaultsSymbol),\n display: inject.call(this, DisplaySymbol),\n theme: inject.call(this, ThemeSymbol),\n icons: inject.call(this, IconSymbol),\n locale: inject.call(this, LocaleSymbol),\n date: inject.call(this, DateAdapterSymbol),\n })\n },\n },\n })\n }\n }\n\n return {\n install,\n defaults,\n display,\n theme,\n icons,\n locale,\n date,\n goTo,\n }\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\n// Vue's inject() can only be used in setup\nfunction inject (this: ComponentPublicInstance, key: InjectionKey | string) {\n const vm = this.$\n\n const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides\n\n if (provides && (key as any) in provides) {\n return provides[(key as string)]\n }\n}\n","/* eslint-disable local-rules/sort-imports */\n\n// Styles\nimport './styles/main.sass'\n\n// Components\nimport * as blueprints from './blueprints'\nimport * as components from './components'\nimport * as directives from './directives'\nimport { createVuetify as _createVuetify } from './framework'\n\n// Types\nimport type { VuetifyOptions } from './framework'\n\nexport const createVuetify = (options: VuetifyOptions = {}) => {\n return _createVuetify({ components, directives, ...options })\n}\n\nexport const version = __VUETIFY_VERSION__\ncreateVuetify.version = version\n\nexport {\n blueprints,\n components,\n directives,\n}\nexport * from './composables'\n"],"names":["IN_BROWSER","window","SUPPORTS_INTERSECTION","SUPPORTS_TOUCH","navigator","maxTouchPoints","SUPPORTS_EYE_DROPPER","getNestedValue","obj","path","fallback","last","length","undefined","i","deepEqual","a","b","Date","getTime","Object","props","keys","every","p","getObjectValueByPath","replace","split","getPropertyFromItem","item","property","value","Array","isArray","createRange","start","arguments","from","v","k","convertToUnit","str","unit","isNaN","String","isFinite","Number","isObject","refElement","el","$el","nodeType","Node","TEXT_NODE","nextElementSibling","keyCodes","freeze","enter","tab","delete","esc","space","up","down","left","right","end","home","del","backspace","insert","pageup","pagedown","shift","keyValues","o","has","key","hasOwnProperty","pick","paths","found","Set","pickWithRest","exclude","create","rest","some","RegExp","test","omit","clone","forEach","prop","only","include","onRE","isOn","bubblingEvents","compositionIgnoreKeys","filterInputAttrs","attrs","events","inputEvents","rootAttrs","inputAttrs","assign","wrapInArray","clamp","min","max","Math","getDecimals","trimmedStr","toString","trim","includes","indexOf","padEnd","char","repeat","padStart","humanReadableFileSize","bytes","base","prefix","abs","toFixed","mergeDeep","source","target","arrayFn","out","sourceProperty","targetProperty","flattenFragments","nodes","map","node","type","Fragment","children","flat","toKebabCase","cache","get","kebab","toLowerCase","set","findChildrenWithProvide","vnode","child","component","getOwnPropertySymbols","provides","subTree","Map","_arr","WeakMap","_pointer","CircularBuffer","constructor","size","_classPrivateFieldInitSpec","this","push","val","_classPrivateFieldGet","values","slice","concat","destructComputed","getter","refs","reactive","computed","watchEffect","flush","toRefs","arr","eventName","propName","EventProp","Function","hasEvent","name","capitalize","callEvent","handler","_len2","args","_key2","h","focusableChildren","filterByTabIndex","targets","s","join","querySelectorAll","getNextElement","elements","location","condition","_el","idx","document","activeElement","inc","offsetParent","focusChild","focusable","focus","at","contains","isEmpty","noop","matchesSelector","selector","CSS","supports","matches","err","ensureValidVNode","vnodes","isVNode","Comment","eagerComputed","fn","options","result","shallowRef","readonly","templateRef","defineProperty","enumerable","block","inline","parseAnchor","anchor","isRtl","side","align","toPhysical","flipSide","center","top","bottom","flipAlign","flipCorner","getAxis","Box","_ref","x","y","width","height","getOverflow","before","after","getTargetBox","getBoundingClientRect","nullifyTransforms","rect","style","getComputedStyle","tx","transform","ta","sx","sy","dx","dy","startsWith","to","transformOrigin","parseFloat","w","offsetWidth","offsetHeight","animate","keyframes","finished","Promise","resolve","animation","onfinish","handlers","bindProps","n","removeEventListener","addEventListener","_handler","add","removeAttribute","setAttribute","unbindProps","mainTRC","Rco","Gco","Bco","blkThrs","loConFactor","loConOffset","APCAcontrast","text","background","Rtxt","r","Gtxt","g","Btxt","Rbg","Gbg","Bbg","outputContrast","Ytxt","Ybg","SAPC","consoleWarn","message","warn","consoleError","delta","cielabForwardTransform","t","cbrt","cielabReverseTransform","fromXYZ","xyz","transformedY","toXYZ","lab","Ln","srgbForwardMatrix","srgbForwardTransform","C","srgbReverseMatrix","srgbReverseTransform","rgb","matrix","round","isCssColor","color","cssColorRe","mappers","rgba","hsl","l","HSLtoRGB","hsla","hsv","HSVtoRGB","hsva","parseColor","groups","match","realValues","endsWith","hex","int","parseInt","HexToRGB","HSLtoHSV","TypeError","f","RGBtoHSV","HSVtoHSL","RGBtoCSS","HSVtoCSS","toHex","substr","toUpperCase","RGBtoHex","_ref2","parseHex","chunked","index","chunk","c","HexToHSV","HSVtoHex","lighten","amount","CIELAB","sRGB","darken","getLuma","getContrast","first","second","l1","l2","getForeground","blackContrast","propsFactory","defaults","reduce","definition","default","makeComponentProps","class","DefaultsSymbol","Symbol","for","createDefaults","ref","injectDefaults","inject","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","unref","disabled","scoped","reset","root","properties","prev","len","Infinity","provide","propIsDefined","internalUseDefaults","vm","getCurrentInstance","__name","componentDefaults","_as","_props","Proxy","propValue","Reflect","filter","global","_subcomponentDefaults","provideSubDefaults","injected","injectSelf","subComponents","entries","fromEntries","defineComponent","_setup","setup","propKeys","filterProps","ctx","setupBindings","genericComponent","exposeDefaults","_defineComponent","createSimpleFunctional","klass","tag","camelize","slots","attachedRoot","getRootNode","parentNode","composed","standardEasing","getPrefixedEventHandlers","suffix","getData","acc","event","_getCurrentInstance","getCurrentInstanceName","aliasName","_uid","_map","getUid","uid","getScrollParent","includeHidden","isPotentiallyScrollable","hasScrollbar","parentElement","scrollingElement","getScrollParents","stopAt","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","useRender","render","IconValue","IconSymbol","makeIconProps","icon","required","VComponentIcon","Icon","_createVNode","createVNode","VSvgIcon","inheritAttrs","_mergeProps","xmlns","viewBox","role","d","VLigatureIcon","VClassIcon","createIcons","sets","svg","defaultSet","mdi","aliases","vuetify","collapse","complete","cancel","close","clear","success","info","warning","error","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sortAsc","sortDesc","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","loading","unfold","file","plus","minus","calendar","treeviewCollapse","treeviewExpand","eyeDropper","md1","rounded","VAvatar","VAutocomplete","variant","VBanner","VBtn","VCheckbox","VCombobox","VSelect","VSlider","VTabs","VTextarea","VTextField","VToolbar","icons","theme","themes","light","colors","primary","secondary","accent","md2","md3","VAppBar","VBottomSheet","contentClass","VBtnGroup","VCard","inset","VChip","VNavigationDrawer","tertiary","surface","useResizeObserver","callback","box","resizeRef","contentRect","observer","ResizeObserver","onBeforeUnmount","disconnect","watch","newValue","oldValue","unobserve","observe","VuetifyLayoutKey","VuetifyLayoutItemKey","makeLayoutProps","overlaps","fullHeight","Boolean","makeLayoutItemProps","order","absolute","useLayout","layout","layoutIsReady","nextTick","getLayoutItem","mainRect","mainStyles","useLayoutItem","id","isKeptAlive","onDeactivated","onActivated","layoutItemStyles","layoutItemScrimStyles","register","active","unregister","layoutRect","createLayout","parentLayout","rootZIndex","registered","positions","layoutSizes","priorities","activeItems","disabledTransitions","layers","uniquePriorities","sort","items","generateLayers","previousLayer","layer","position","transitionsEnabled","transition","find","rootVm","layoutSize","elementSize","disableTransitions","instanceIndex","splice","findIndex","zIndex","isHorizontal","isOppositeHorizontal","isOppositeVertical","styles","layoutClasses","layoutStyles","overflow","layoutRef","useToggleScope","scope","effectScope","run","stop","immediate","onScopeDispose","useProxiedModel","defaultValue","transformIn","transformOut","internal","kebabProp","checkKebab","isControlled","model","externalValue","internalValue","toRaw","emit","en","badge","open","dismiss","confirmEdit","ok","dataIterator","noResultsText","loadingText","dataTable","itemsPerPageText","ariaLabel","sortDescending","sortAscending","sortNone","activateNone","activateDescending","activateAscending","sortBy","dataFooter","itemsPerPageAll","nextPage","prevPage","firstPage","lastPage","pageText","dateRangeInput","divider","datePicker","itemsSelected","range","title","header","input","placeholder","noDataText","carousel","moreEvents","today","prependAction","appendAction","otp","fileInput","counter","counterSize","timePicker","am","pm","pagination","previous","page","currentPage","stepper","rating","infiniteScroll","loadMore","empty","LANG_PREFIX","params","createTranslateFunction","current","messages","_len","_key","shortKey","currentLocale","fallbackLocale","createNumberFunction","Intl","NumberFormat","format","useProvided","provided","createProvideFunction","state","LocaleSymbol","createLocale","i18n","adapter","locale","createVuetifyAdapter","rtl","af","ar","bg","ca","ckb","cs","de","es","et","fa","fi","fr","hr","hu","he","it","ja","km","ko","lv","lt","nl","no","pl","pt","ro","ru","sk","sl","srCyrl","srLatn","sv","th","tr","az","uk","vi","zhHans","zhHant","rtlClasses","createRtl","useLocale","provideLocale","provideRtl","data","useRtl","ThemeSymbol","makeThemeProps","createTheme","parsedOptions","genDefaults","defaultTheme","variations","dark","variables","isDisabled","parseThemeOptions","computedThemes","original","variation","onColor","colorVal","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","flatMap","getHead","nonce","cspNonce","themeClasses","install","app","head","_context","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","getElementById","updateStyles","createElement","appendChild","innerHTML","provideTheme","newTheme","useTheme","content","line","lightOverlay","darkOverlay","makeVAppProps","VApp","Suspense","_Fragment","makeTagProps","makeVToolbarTitleProps","VToolbarTitle","hasText","makeTransitionProps","group","hideOnLeave","leaveAbsolute","mode","origin","createCssTransition","functions","onBeforeEnter","onLeave","offsetTop","offsetLeft","_transitionInitialStyles","setProperty","onAfterLeave","TransitionGroup","Transition","css","createJavascriptTransition","ExpandTransitionGenerator","expandedParentClass","sizeProperty","offsetProperty","_parent","_initialStyle","onEnter","initialStyle","offset","classList","requestAnimationFrame","onAfterEnter","resetStyles","onEnterCancelled","onLeaveCancelled","remove","makeVDialogTransitionProps","VDialogTransition","pointerEvents","visibility","done","speed","getDimensions","opacity","duration","easing","getChildren","then","removeProperty","onBeforeLeave","els","querySelector","targetBox","elBox","originX","originY","anchorSide","anchorOffset","getPropertyValue","offsetX","offsetY","tsx","tsy","maxs","asa","innerWidth","innerHeight","VFabTransition","VDialogBottomTransition","VDialogTopTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VScrollXReverseTransition","VScrollYTransition","VScrollYReverseTransition","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","VExpandTransition","VExpandXTransition","makeVDefaultsProviderProps","VDefaultsProvider","makeDimensionProps","maxHeight","maxWidth","minHeight","minWidth","useDimension","dimensionStyles","makeVResponsiveProps","aspectRatio","VResponsive","aspectStyles","ratio","paddingBottom","useAspectStyles","additional","useColor","classes","backgroundColor","textColor","caretColor","colorClasses","colorStyles","useTextColor","isRef","textColorClasses","textColorStyles","useBackgroundColor","backgroundColorClasses","backgroundColorStyles","makeRoundedProps","tile","useRounded","roundedClasses","validator","MaybeTransition","customProps","mergeProps","_","unmounted","binding","_observe","instance","$","Intersect","modifiers","IntersectionObserver","isIntersecting","quiet","init","once","makeVImgProps","alt","cover","draggable","eager","gradient","lazySrc","rootMargin","threshold","sizes","src","crossorigin","referrerpolicy","srcset","VImg","directives","intersect","emits","loadstart","load","toRef","currentSrc","image","naturalWidth","naturalHeight","normalisedSrc","aspect","lazyImg","Image","pollForSize","setTimeout","isUnmounted","onError","onLoad","getSrc","img","oldVal","onBeforeMount","timer","timeout","poll","clearTimeout","imgHeight","imgWidth","containClasses","__image","objectPosition","sources","appear","withDirectives","vShow","__preloadImage","__placeholder","__error","__gradient","backgroundImage","isBooted","responsiveProps","_withDirectives","_resolveDirective","makeBorderProps","border","useBorder","borderClasses","makeElevationProps","elevation","useElevation","elevationClasses","allowedDensities","makeVToolbarProps","density","extended","extensionHeight","floating","isExtended","extension","contentHeight","hasTitle","hasImage","prepend","append","makeScrollProps","scrollTarget","scrollThreshold","useSsrBoot","onMounted","ssrBootStyles","makeVAppBarProps","scrollBehavior","modelValue","vToolbarRef","isActive","behavior","hide","fullyHide","inverted","elevate","fadeImage","canScroll","currentScroll","isScrollingUp","scrollRatio","previousScroll","savedScroll","currentThreshold","isScrollActive","onScroll","targetEl","pageYOffset","scrollTop","newTarget","passive","useScroll","canHide","isCollapsed","isFlat","toolbarProps","makeDensityProps","useDensity","densityClasses","allowedVariants","genOverlays","isClickable","makeVariantProps","useVariant","variantClasses","makeVBtnGroupProps","baseColor","divided","makeGroupProps","multiple","mandatory","selectedClass","makeGroupItemProps","useGroupItem","injectKey","description","isSelected","toggle","select","useGroup","selected","getIds","ids","itemIndex","getValues","groupVm","forceMandatoryValue","step","currentId","currentIndex","newIndex","newItem","onUpdated","useIndexAsValue","unwrapped","getItemIndex","itemByIndex","VBtnToggleSymbol","makeVBtnToggleProps","VBtnToggle","btnGroupProps","predefinedSizes","makeSizeProps","useSize","sizeClasses","sizeStyles","makeVIconProps","VIcon","slotIcon","iconData","iconAlias","iconSetName","setName","iconName","useIcon","slotValue","Text","hasClick","onClick","onClickOnce","fontSize","tabindex","useIntersectionObserver","intersectionRef","makeVProgressCircularProps","bgColor","indeterminate","rotate","VProgressCircular","CIRCUMFERENCE","PI","underlayColorClasses","underlayColorStyles","normalizedValue","diameter","strokeWidth","strokeDashOffset","fill","cx","cy","oppositeMap","makeLocationProps","useLocation","opposite","locationStyles","getOffset","makeVProgressLinearProps","bgOpacity","bufferValue","bufferColor","bufferOpacity","clickable","reverse","stream","striped","roundedBar","VProgressLinear","progress","bufferColorClasses","bufferColorStyles","barColorClasses","barColorStyles","normalizedBuffer","isReversed","handleClick","e","clientX","borderTop","bar","buffer","makeLoaderProps","useLoader","loaderClasses","LoaderSlot","positionValues","makePositionProps","usePosition","positionClasses","useRouter","proxy","$router","useLink","RouterLink","resolveDynamicComponent","isLink","href","linkProps","routerLink","link","route","$route","useRoute","navigate","exact","isExactActive","query","makeRouterProps","inTransition","stopSymbol","webkitTransform","isTouchEvent","isKeyboardEvent","ripples","show","_ripple","enabled","container","className","radius","scale","centerX","centerY","localX","localY","touches","clientY","circle","clientWidth","sqrt","calculate","dataset","previousPosition","activated","performance","now","getElementsByClassName","isHiding","diff","delay","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","keyboardRippleHide","focusRippleHide","updateRipple","wasEnabled","removeListeners","Ripple","updated","makeVBtnProps","symbol","prependIcon","appendIcon","slim","stacked","ripple","variantProps","isElevated","valueAttr","JSON","stringify","metaKey","ctrlKey","shiftKey","button","useSelectLink","Tag","hasPrepend","hasAppend","hasIcon","loader","makeVAppBarNavIconProps","VAppBarNavIcon","VAppBarTitle","VAlertTitle","allowedTypes","makeVAlertProps","borderColor","closable","closeIcon","closeLabel","prominent","VAlert","closeProps","hasClose","makeVAvatarProps","makeVLabelProps","VLabel","VSelectionControlGroupSymbol","makeSelectionControlGroupProps","defaultsTarget","falseIcon","trueIcon","valueComparator","makeVSelectionControlGroupProps","VSelectionControlGroup","updateHandlers","forceUpdate","onForceUpdate","cb","makeVSelectionControlProps","label","trueValue","falseValue","VSelectionControl","isMultiple","currentValue","newVal","useSelectionControl","isFocused","isFocusVisible","isInteractive","onFocus","onBlur","onClickLabel","stopPropagation","onInput","checked","inputNode","resolveDirective","makeVCheckboxBtnProps","indeterminateIcon","VCheckboxBtn","onChange","controlProps","$event","useInputIcon","InputIcon","localeKey","prependInner","appendInner","listener","makeVMessagesProps","VMessages","makeFocusProps","focused","useFocus","focusClasses","blur","FormKey","makeFormProps","fastFail","validateOn","useForm","makeValidationProps","errorMessages","maxErrors","rules","validationValue","useValidation","validationModel","form","internalErrorMessages","isPristine","isDirty","isReadonly","submit","lazy","isValid","isValidating","validationClasses","async","resetValidation","validate","silent","results","rule","console","update","unwatch","makeVInputProps","centerAffix","hideDetails","hideSpinButtons","hint","persistentHint","direction","VInput","messagesId","slotProps","hasMessages","hasDetails","details","makeVCheckboxProps","controlAttrs","inputProps","checkboxProps","breakpoints","DisplaySymbol","defaultDisplayOptions","mobileBreakpoint","thresholds","xs","sm","md","lg","xl","xxl","getClientWidth","ssr","getClientHeight","getPlatform","userAgent","regexp","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","touch","createDisplay","parseDisplayOptions","platform","updateSize","breakpointValue","mobile","smAndUp","mdAndUp","lgAndUp","xlAndUp","smAndDown","mdAndDown","lgAndDown","xlAndDown","makeDisplayProps","useDisplay","display","displayClasses","GoToSymbol","getTarget","horizontal","totalOffset","createGoTo","patterns","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","scrollTo","_target","_options","goTo","HTMLElement","body","ease","targetLocation","layoutOffset","scrollWidth","containerWidth","containerHeight","clampTarget","startLocation","startTime","currentTime","floor","useGoTo","goToInstance","go","getScrollSize","getScrollPosition","scrollLeft","getOffsetSize","getOffsetPosition","VSlideGroupSymbol","makeVSlideGroupProps","centerActive","nextIcon","prevIcon","showArrows","VSlideGroup","isOverflowing","scrollOffset","containerSize","contentSize","containerRef","containerRect","contentRef","goToOptions","firstSelectedIndex","lastSelectedIndex","frame","cancelAnimationFrame","scrollToChildren","selectedElement","containerElement","containerOffsetSize","calculateCenteredTarget","scrollPosition","childrenSize","childrenStartPosition","additionalOffset","calculateUpdatedTarget","scrollToPosition","newPosition","offsetSize","onFocusin","composedPath","onFocusout","ignoreFocusEvent","relatedTarget","onFocusAffixes","onKeydown","toFocus","preventDefault","previousElementSibling","firstElementChild","lastElementChild","preventScroll","offsetStep","hasAffixes","hasPrev","hasNext","getClientSize","onMousedown","VChipGroupSymbol","makeVChipGroupProps","column","VChipGroup","slideGroupProps","makeVChipProps","activeClass","appendAvatar","filterIcon","pill","prependAvatar","click","onKeyDown","hasAppendMedia","hasFilter","hasPrependMedia","hasColor","_vShow","ListKey","createList","parent","updateHasPrepend","useList","independentActiveStrategy","strategy","activate","in","parents","independentSingleActiveStrategy","parentStrategy","singleSelected","singleOpenStrategy","opened","newOpened","multipleOpenStrategy","listOpenStrategy","_ref3","independentSelectStrategy","on","independentSingleSelectStrategy","VNestedSymbol","emptyNested","openOnSelect","activatable","selectable","selectedValues","makeNestedProps","activeStrategy","selectStrategy","openStrategy","useNested","leafActiveStrategy","_ref4","leafSingleActiveStrategy","_ref5","leafSingleSelectStrategy","leafSelectStrategy","_ref6","childrenIds","everySelected","cid","noneSelected","_ref7","classicSelectStrategy","getPath","unshift","nested","parentId","isGroup","list","newSelected","newActivated","useNestedItem","uidSymbol","computedId","isOpen","isActivated","isIndeterminate","isLeaf","isGroupActivator","VListGroupActivator","useNestedGroupActivator","makeVListGroupProps","activeColor","collapseIcon","expandIcon","fluid","VListGroup","_id","activatorProps","toggleIcon","activatorDefaults","VListItem","activator","makeVListItemSubtitleProps","VListItemSubtitle","VListItemTitle","makeVListItemProps","nav","subtitle","roundedProps","lineClasses","hasSubtitle","replacement","VListItemAction","makeVListSubheaderProps","sticky","VListSubheader","makeVDividerProps","thickness","vertical","VDivider","dividerStyles","makeVListChildrenProps","returnObject","VListChildren","itemProps","raw","subheader","slotsWithItem","listGroupProps","listItemProps","makeItemsProps","itemTitle","itemValue","itemChildren","transformItem","transformItems","array","useItems","hasNullItem","itemType","isPrimitive","makeVListProps","VList","useListItems","tagName","VListImg","makeVListItemActionProps","makeVListItemMediaProps","VListItemMedia","elementToViewport","point","anchorToPoint","locationStrategies","static","connected","contentStyles","isFixedPosition","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","updateLocation","contentEl","contentBox","getIntrinsicSize","scrollParents","documentElement","viewport","scrollBox","viewportMargin","placement","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","hasOverflowY","newPlacement","flip","newOverflows","pixelRound","pixelCeil","newContentEl","oldTarget","oldContentEl","makeLocationStrategyProps","locationStrategy","devicePixelRatio","ceil","clean","frames","raf","scrollStrategies","none","bindScroll","scrollElements","contained","scrollbarWidth","scrollableParent","reposition","slow","ric","time","requestIdleCallback","cancelIdleCallback","makeScrollStrategyProps","scrollStrategy","VMenuSymbol","makeDelayProps","closeDelay","openDelay","useDelay","clearDelay","runDelay","isOpening","timeoutId","defer","runOpenDelay","runCloseDelay","makeActivatorProps","openOnClick","openOnHover","openOnFocus","closeOnContentClick","useActivator","isTop","activatorEl","isHovered","firstEnter","cursorTarget","availableEvents","sourceCapabilities","firesTouchEvents","activatorEvents","onMouseenter","onMouseleave","contentEvents","closeParents","scrimEvents","activatorRef","targetRef","bindActivatorProps","getActivator","unbindActivatorProps","_useActivator","hasAttribute","useHydration","isMounted","makeLazyProps","useLazy","hasContent","useScopeId","scopeId","StackSymbol","globalStack","defaultConditional","checkEvent","checkIsActive","ShadowRoot","host","closeConditional","handleShadow","ClickOutside","mounted","_clickOutside","lastMousedownWasOutside","directive","Scrim","makeVOverlayProps","attach","closeOnBack","contentProps","noClickAnimation","persistent","scrim","VOverlay","_disableGlobalStack","afterEnter","afterLeave","teleportTarget","targetElement","useTeleport","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","disableGlobalStack","createStackEntry","stack","activeChildren","_zIndex","lastZIndex","_isTop","useStack","scrimEl","onResize","useLocationStrategies","onClickOutside","animateClick","useScrollStrategies","router","removeBefore","removeAfter","popped","onPopstate","replaced","beforeEach","afterEach","useBackButton","scrollParent","Teleport","persisted","Refs","getDescriptor","currentObj","descriptor","getOwnPropertyDescriptor","getPrototypeOf","forwardRefs","bind","setupState","childRefs","queue","makeVMenuProps","VMenu","overlay","openChildren","onFocusIn","tabIndex","onActivatorKeydown","targetDiv","mouseX","mouseY","divRect","divLeft","divTop","divRight","divBottom","isClickInsideElement","overlayProps","ΨopenChildren","makeVCounterProps","VCounter","functional","makeVFieldLabelProps","VFieldLabel","makeVFieldProps","appendInnerIcon","clearable","clearIcon","dirty","persistentClear","prependInnerIcon","singleLine","VField","hasLabel","labelRef","floatingLabelRef","controlRef","isPlainOrUnderlined","targetRect","targetWidth","targetStyle","transitionDuration","onKeydownClear","MouseEvent","isOutlined","hasClear","filterFieldProps","activeTypes","makeVTextFieldProps","autofocus","counterValue","persistentPlaceholder","persistentCounter","modelModifiers","maxlength","onIntersect","vInputRef","vFieldRef","inputRef","onControlMousedown","onControlClick","onClear","caretPosition","selectionStart","selectionEnd","hasCounter","fieldProps","fieldClass","cloneVNode","makeVVirtualScrollItemProps","renderless","VVirtualScrollItem","itemRef","makeVirtualProps","itemHeight","useVirtual","paddingTop","markerRef","markerOffset","viewportHeight","hasInitialRender","offsets","updateTime","targetScrollIndex","getSize","updateOffsets","wrap","debounce","calculateVisibleItems","scrollToIndex","calculateOffset","calculateIndex","high","low","mid","binaryClosest","lastScrollTop","scrollVelocity","lastScrollTime","_calculateVisibleItems","sign","topOverflow","bottomOverflow","computedItems","deep","handleScroll","scrollTime","handleScrollend","handleItemResize","prevHeight","prevMinHeight","makeVVirtualScrollProps","VVirtualScroll","handleListeners","method","onScrollPassive","onScrollend","useScrolling","listRef","textFieldRef","isScrolling","scrollTimeout","onListScroll","onListKeydown","finishScrolling","makeSelectProps","chips","closableChips","closeText","openText","hideNoData","hideSelected","listProps","menuIcon","menuProps","openOnClear","itemColor","makeVSelectProps","ue","vTextFieldRef","vMenuRef","vVirtualScrollRef","_menu","transformed","selection","keyboardLookupLastTime","keyboardLookupPrefix","displayItems","menuDisabled","computedMenuProps","onMousedownControl","isPrintableChar","noModifier","altKey","checkPrintable","onModelUpdate","hasChips","chip","hasList","textFieldProps","inputmode","onChipClose","hasSlot","slotContent","_createTextVNode","createTextVNode","defaultFilter","toLocaleLowerCase","makeFilterProps","customFilter","customKeyFilter","filterKeys","filterMode","noFilter","useFilter","filteredItems","filteredMatches","transformedItems","_query","strQuery","customFiltersLength","loop","customMatches","defaultMatches","keyFilter","defaultMatchesLength","customMatchesLength","filterItems","originalItems","_filteredItems","_filteredMatches","getMatches","makeVAutocompleteProps","autoSelectFirst","clearOnSelect","search","listHasFocus","selectionIndex","filteredItem","hasSelectionSlot","highlightFirst","onMousedownMenuIcon","originalSelectionIndex","setSelectionRange","onUpdateModelValue","isSelecting","highlightResult","makeVBadgeProps","bordered","dot","VBadge","badgeAttrs","makeVBannerActionsProps","VBannerActions","VBannerText","makeVBannerProps","avatar","actions","makeVBottomNavigationProps","grow","VBottomNavigation","makeVDialogProps","fullscreen","retainFocus","scrollable","VDialog","firstElement","lastElement","makeVBottomSheetProps","dialogProps","makeVBreadcrumbsDividerProps","VBreadcrumbsDivider","makeVBreadcrumbsItemProps","VBreadcrumbsItem","makeVBreadcrumbsProps","VBreadcrumbs","VCardActions","makeVCardSubtitleProps","VCardSubtitle","VCardTitle","makeCardItemProps","VCardItem","makeVCardTextProps","VCardText","makeVCardProps","hover","hasHeader","hasCardItem","touchstart","wrapper","changedTouches","touchstartX","touchstartY","originalEvent","touchend","touchendX","touchendY","handleGesture","touchmove","touchmoveX","touchmoveY","move","Touch","createHandlers","_touchHandlers","VWindowSymbol","VWindowGroupSymbol","makeVWindowProps","continuous","VWindow","rootRef","isRtlReverse","transitionCount","transitionHeight","activeIndex","itemsLength","lastIndex","canMoveBack","canMoveForward","arrows","prevProps","nextProps","touchOptions","makeVCarouselProps","cycle","delimiterIcon","hideDelimiters","hideDelimiterBackground","interval","verticalDelimiters","VCarousel","windowRef","slideTimeout","startTimeout","restartTimeout","windowProps","makeVWindowItemProps","reverseTransition","VWindowItem","groupItem","isTransitioning","hasTransition","onAfterTransition","onBeforeTransition","onTransitionCancelled","onEnterTransition","makeVCarouselItemProps","VCarouselItem","imgProps","windowItemProps","VCode","VColorPickerCanvas","dotSize","makeVColorPickerCanvasProps","hue","isInteracting","canvasRef","canvasWidth","canvasHeight","_dotPosition","dotPosition","dotStyles","handleMouseDown","handleMouseMove","handleMouseUp","coords","getEventCoordinates","updateDotPosition","updateCanvas","canvas","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","onTouchstartPassive","nullColor","inputs","getValue","getColor","hexa","modes","VColorPickerInput","VColorPickerEdit","m","makeVColorPickerEditProps","enabledModes","mi","VSliderSymbol","makeSliderProps","thumbColor","thumbLabel","thumbSize","showTicks","ticks","tickSize","trackColor","trackFillColor","trackSize","useSteps","decimals","roundValue","clamped","useSlider","steps","onSliderStart","onSliderMove","onSliderEnd","getActiveThumb","indexFromEnd","numTicks","mousePressed","startOffset","trackContainerRef","activeThumbRef","parseMouseMove","trackStart","trackLength","clickOffset","getPosition","clickPos","handleStop","handleStart","moveListenerOptions","capture","onMouseMove","onSliderMouseUp","onSliderTouchend","percentage","parsedTicks","hasLabels","onSliderMousedown","onSliderTouchstart","makeVSliderThumbProps","VSliderThumb","slider","elevationProps","relevantKeys","multipliers","_step","multiplier","parseKeydown","positionPercentage","makeVSliderTrackProps","VSliderTrack","trackFillColorClasses","trackFillColorStyles","trackColorClasses","trackColorStyles","startDir","endDir","backgroundStyles","trackFillWidth","trackFillStyles","computedTicks","tick","directionValue","makeVSliderProps","thumbContainerRef","roundedValue","trackStop","VColorPickerPreview","hideAlpha","makeVColorPickerPreviewProps","abortController","AbortController","openEyeDropper","EyeDropper","colorHexValue","signal","sRGBHex","onUnmounted","abort","red","lighten5","lighten4","lighten3","lighten2","lighten1","darken1","darken2","darken3","darken4","accent1","accent2","accent3","accent4","pink","purple","deepPurple","indigo","blue","lightBlue","cyan","teal","green","lightGreen","lime","yellow","amber","orange","deepOrange","brown","blueGrey","grey","shades","black","white","transparent","VColorPickerSwatches","swatches","parseDefaultColors","makeVColorPickerSwatchesProps","swatch","makeVSheetProps","VSheet","VColorPicker","hideCanvas","hideSliders","hideInputs","showSwatches","swatchesMaxHeight","makeVColorPickerProps","converted","stripAlpha","extractColor","currentColor","externalChange","updateColor","sheetProps","makeVComboboxProps","delimiters","cleared","_search","isComposing","isComposingIgnoreKey","firstDay","AD","AE","AF","AG","AI","AL","AM","AN","AR","AS","AT","AU","AX","AZ","BA","BD","BE","BG","BH","BM","BN","BR","BS","BT","BW","BY","BZ","CA","CH","CL","CM","CN","CO","CR","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ES","ET","FI","FJ","FO","FR","GB","GE","GF","GP","GR","GT","GU","HK","HN","HR","HU","ID","IE","IL","IN","IQ","IR","IS","IT","JM","JO","JP","KE","KG","KH","KR","KW","KZ","LA","LB","LI","LK","LT","LU","LV","LY","MC","MD","ME","MH","MK","MM","MN","MO","MQ","MT","MV","MX","MY","MZ","NI","NL","NO","NP","NZ","OM","PA","PE","PH","PK","PL","PR","PT","PY","QA","RE","RO","RS","RU","SA","SD","SE","SG","SI","SK","SM","SV","SY","TH","TJ","TM","TR","TT","TW","UA","UM","US","UY","UZ","VA","VE","VI","VN","WS","XK","YE","ZA","ZW","startOfMonth","date","getFullYear","getMonth","endOfMonth","_YYYMMDD","parsed","parts","parseLocalDate","parse","sundayJanuarySecond2000","formatString","formats","newDate","customFormat","year","month","day","weekday","getDate","DateTimeFormat","hour","hour12","minute","timeZone","timeZoneName","isAfter","comparing","isEqual","startOfDay","VuetifyDateAdapter","toJsDate","toISO","parseISO","addMinutes","setMinutes","getMinutes","addHours","setHours","getHours","addDays","setDate","addWeeks","addMonths","setMonth","getWeekArray","weeks","currentWeek","firstDayOfMonth","lastDayOfMonth","firstDayWeekIndex","getDay","lastDayWeekIndex","adjacentDay","startOfWeek","endOfWeek","lastDay","isWithinRange","isBefore","isAfterDay","isSameDay","isSameMonth","isSameYear","count","setYear","setFullYear","getDiff","getWeekdays","daysFromSunday","getYear","getNextMonth","getPreviousMonth","endOfDay","startOfYear","endOfYear","DateOptionsSymbol","DateAdapterSymbol","createDate","createInstance","useDate","makeVConfirmEditProps","cancelText","okText","VConfirmEdit","save","internalModel","structuredClone","actionsUsed","makeDataTableExpandProps","expandOnClick","showExpand","expanded","VDataTableExpandedKey","provideExpanded","newExpanded","isExpanded","toggleExpand","useExpanded","makeDataTableGroupProps","groupBy","VDataTableGroupSymbol","createGroupBy","provideGroupBy","isGroupOpen","sortByWithGroups","toggleGroup","extractRows","dive","depth","useGroupBy","groupItemsByProperty","groupItems","groupedItems","flattenItems","flatItems","useGroupedItems","useOptions","itemsPerPage","oldOptions","makeDataTablePaginateProps","VDataTablePaginationSymbol","createPagination","providePagination","startIndex","stopIndex","pageCount","setPage","setItemsPerPage","usePaginatedItems","paginatedItems","singleSelectStrategy","showSelectAll","allSelected","selectAll","pageSelectStrategy","allSelectStrategy","allItems","_ref8","makeDataTableSelectProps","showSelect","VDataTableSelectionSymbol","provideSelection","_ref9","allSelectable","currentPageSelectable","someSelected","toggleSelect","isSomeSelected","useSelection","makeDataTableSortProps","customKeySort","multiSort","mustSort","VDataTableSortSymbol","createSort","provideSort","toggleSort","newSortBy","isSorted","useSort","useSortedItems","sortedItems","sortByItems","stringCollator","Collator","sensitivity","usage","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","sortBRaw","sortRawFunctions","customResult","sortFunctions","compare","sortItems","makeDataIteratorItemsProps","itemSelectable","useDataIteratorItems","makeVDataIteratorProps","VDataIterator","paginatedItemsWithoutGroups","footer","makeVPaginationProps","totalVisible","firstIcon","lastIcon","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","VPagination","maxButtons","firstItem","totalWidth","itemWidth","marginRight","getMax","minButtons","MAX_SAFE_INTEGER","even","middle","rangeLength","rangeStart","setValue","updateRef","onBeforeUpdate","useRefs","VPaginationBtn","controls","prevDisabled","nextDisabled","updateFocus","makeVDataTableFooterProps","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","showCurrentPage","VDataTableFooter","usePagination","option","paginationProps","VDataTableColumn","fixed","fixedOffset","lastFixed","noPadding","nowrap","makeDataTableHeaderProps","headers","VDataTableHeadersSymbol","defaultHeader","sortable","defaultActionHeader","extractLeaves","columns","extractKeys","getDefaultItem","getDepth","maxDepth","currentDepth","priority","enqueue","added","whole","dequeue","priorityQueue","rowSize","row","fraction","rowspan","colspan","pow","convertToInternalHeaders","internalHeaders","defaultItem","internalItem","createHeaders","filterFunctions","seenFixed","setFixed","setFixedOffset","parseFixedColumns","flatHeaders","sortRaw","useHeaders","makeVDataTableHeadersProps","sortAscIcon","sortDescIcon","headerProps","VDataTableHeaders","getFixedStyles","getSortIcon","headerCellClasses","VDataTableHeaderCell","columnSlotName","columnSlotProps","VDataTableMobileHeaderCell","onClick:clear","onClick:append","makeVDataTableGroupHeaderRowProps","VDataTableGroupHeaderRow","rows","selectGroup","makeVDataTableRowProps","cellProps","onContextmenu","onDblclick","VDataTableRow","slotName","headerSlotName","columnCellProps","withModifiers","displayValue","toDisplayString","makeVDataTableRowsProps","rowProps","VDataTableRows","itemSlotProps","makeVTableProps","fixedHeader","fixedFooter","VTable","makeDataTableItemsProps","itemColumns","useDataTableItems","makeDataTableProps","makeVDataTableProps","VDataTable","internalItems","dataTableFooterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","colgroup","thead","tbody","tfoot","makeVDataTableVirtualProps","VDataTableVirtual","makeVDataTableServerProps","VDataTableServer","itemsWithoutGroups","makeVContainerProps","VContainer","breakpointProps","offsetProps","orderProps","propMap","col","breakpointClass","ALIGN_SELF_VALUES","makeVColProps","cols","alignSelf","VCol","hasColClasses","ALIGNMENT","SPACE","makeRowProps","def","ALIGN_VALUES","alignValidator","alignProps","JUSTIFY_VALUES","justifyValidator","justifyProps","ALIGN_CONTENT_VALUES","alignContentValidator","alignContentProps","justify","alignContent","classMap","makeVRowProps","dense","noGutters","VRow","VSpacer","makeVDatePickerControlsProps","modeIcon","viewMode","VDatePickerControls","click:year","click:month","click:prev","click:next","click:text","disableMonth","disableYear","disablePrev","disableNext","onClickPrev","onClickNext","onClickYear","onClickMonth","makeVDatePickerHeaderProps","VDatePickerHeader","click:append","onClickAppend","makeCalendarProps","allowedDates","showAdjacentMonths","weekdays","weeksInMonth","useCalendar","days","week","genDays","isoDate","isAdjacent","isStart","isEnd","isSame","formatted","isWeekStart","isWeekEnd","isToday","isHidden","localized","daysInWeek","daysInMonth","weekNumbers","d1w1","tv","diffTime","diffDays","getWeek","makeVDatePickerMonthProps","hideWeekdays","showWeek","VDatePickerMonth","daysRef","rangeStop","isReverse","atMax","_value","datesInRange","nextDate","onRangeClick","onMultipleClick","weekDay","makeVDatePickerMonthsProps","VDatePickerMonths","months","btnProps","makeVDatePickerYearsProps","VDatePickerYears","years","yearRef","scrollIntoView","VPickerTitle","makeVPickerProps","landscape","hideHeader","VPicker","makeVDatePickerProps","VDatePicker","isReversing","headerTransition","minDate","maxDate","_date","onUpdateYear","onUpdateMonth","onClickDate","newMonth","newYear","pickerProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","makeVEmptyStateProps","actionText","headline","textWidth","VEmptyState","onClickAction","hasActions","hasHeadline","hasMedia","media","makeVExpansionPanelTextProps","VExpansionPanelText","expansionPanel","VExpansionPanelSymbol","makeVExpansionPanelTitleProps","hideActions","VExpansionPanelTitle","makeVExpansionPanelProps","VExpansionPanel","selectedIndices","isBeforeSelected","selectedIndex","isAfterSelected","expansionPanelTitleProps","expansionPanelTextProps","makeVExpansionPanelsProps","VExpansionPanels","variantClass","makeVFabProps","VFab","hasPosition","orientation","vFabRef","makeVFileInputProps","counterSizeString","counterString","hideInput","showSize","VFileInput","files","totalBytes","totalBytesReadable","fileNames","fileCount","onClickPrepend","makeVFooterProps","VFooter","autoHeight","makeVFormProps","VForm","errors","valid","invalid","markRaw","itemErrorMessages","createForm","formRef","onReset","onSubmit","_e","ready","catch","finally","defaultPrevented","novalidate","makeVHoverProps","VHover","isHovering","makeVInfiniteScrollProps","margin","loadMoreText","emptyText","VInfiniteScrollIntersect","VInfiniteScroll","rootEl","startStatus","endStatus","setScrollAmount","setStatus","status","getContainerSize","previousScrollSize","handleIntersect","_isIntersecting","intersecting","getStatus","getScrollAmount","renderSide","hasStartIntersect","hasEndIntersect","intersectMode","VItemGroupSymbol","makeVItemGroupProps","VItemGroup","VItem","VKbd","makeVLayoutProps","VLayout","makeVLayoutItemProps","VLayoutItem","makeVLazyProps","VLazy","makeVLocaleProviderProps","VLocaleProvider","makeVMainProps","VMain","kineticEnergyToVelocity","work","calculateImpulseVelocity","samples","vprev","vcurr","useVelocity","addMovement","identifier","timeStamp","endTouch","getVelocity","newest","absX","absY","oops","locations","makeVNavigationDrawerProps","disableResizeWatcher","disableRouteWatcher","expandOnHover","permanent","rail","railWidth","temporary","touchless","isPersistent","isTemporary","isSticky","currentRoute","isDragging","dragProgress","onTouchstart","onTouchmove","onTouchend","maybeDragging","pos","getProgress","limit","touchX","touchY","inTouchZone","inElement","cancelable","velocity","vx","vy","thresholdMet","dragStyles","useTouch","isStuck","stickyStyles","stuckPosition","scrollY","layoutTop","bodyScroll","useSticky","scrimStyles","VNoSsr","makeVOtpInputProps","focusAll","VOtpInput","finish","fields","focusIndex","isValidNumber","autocomplete","onPaste","clipboardText","clipboardData","makeVParallaxProps","VParallax","displayHeight","Document","scrollPos","translate","sizeScale","onLoadstart","makeVRadioProps","VRadio","makeVRadioGroupProps","VRadioGroup","makeVRangeSliderProps","strict","VRangeSlider","startThumbRef","stopThumbRef","stopOffset","makeVRatingProps","itemAriaLabel","emptyIcon","fullIcon","halfIncrements","itemLabels","itemLabelPosition","VRating","increments","hoverIndex","itemState","isFilled","eventState","VRatingItem","showStar","createLabel","labelProps","rootTypes","article","card","heading","ossein","paragraph","sentences","table","genBone","genBones","bone","genStructure","mapBones","bones","makeVSkeletonLoaderProps","boilerplate","VSkeletonLoader","isLoading","VSlideGroupItem","slideGroupItem","makeVSnackbarProps","multiLine","VSnackbar","countdown","milliseconds","clearInterval","setInterval","elapsed","useCountdown","timerRef","startY","hasLayout","activeTimeout","onPointerenter","onPointerleave","locationClasses","loc","makeLineProps","autoDraw","autoDrawDuration","autoDrawEasing","gradientDirection","labels","labelSize","lineWidth","padding","showLabels","smooth","makeVBarlineProps","autoLineWidth","VBarline","boundary","minX","maxX","minY","maxY","genBars","totalValues","maxValue","minValue","gridX","gridY","horizonY","parsedLabels","points","bars","gradientData","gradientUnits","x1","y1","x2","y2","rx","ry","attributeName","dur","textAnchor","dominantBaseline","checkCollinear","p0","p1","p2","getDistance","moveTo","vector","unitVector","makeVTrendlineProps","VTrendline","lastLength","genPoints","genPath","isCollinear","radiusForPoint","_genPath","pathRef","getTotalLength","strokeDasharray","strokeDashoffset","stroke","makeVSparklineProps","VSparkline","totalHeight","lineProps","makeVSpeedDialProps","VSpeedDial","menuRef","makeVStepperActionsProps","prevText","nextText","VStepperActions","prevSlotProps","nextSlotProps","VStepperHeader","makeVStepperItemProps","completeIcon","editable","editIcon","errorIcon","VStepperItem","VStepperSymbol","canEdit","hasError","hasCompleted","makeVStepperWindowProps","VStepperWindow","_model","makeVStepperWindowItemProps","VStepperWindowItem","makeVStepperProps","altLabels","nonLinear","VStepper","_items","hasWindow","makeVSwitchProps","VSwitch","control","loaderColor","onTrackClick","thumb","makeVSystemBarProps","VSystemBar","VTabsSymbol","makeVTabProps","sliderColor","hideSlider","VTab","sliderColorClasses","sliderColorStyles","sliderEl","updateSlider","prevEl","nextEl","prevBox","nextBox","xy","XY","rightBottom","widthHeight","sigma","makeVTabsWindowProps","VTabsWindow","makeVTabsWindowItemProps","VTabsWindowItem","makeVTabsProps","alignTabs","fixedTabs","parseItems","makeVTextareaProps","autoGrow","noResize","maxRows","controlHeight","textareaRef","sizerRef","calculateInputHeight","fieldStyle","lineHeight","newHeight","_vModelText","makeVThemeProviderProps","withBackground","VThemeProvider","makeVTimelineDividerProps","dotColor","fillDot","hideDot","iconColor","lineColor","VTimelineDivider","lineColorClasses","lineColorStyles","makeVTimelineItemProps","hideOpposite","lineInset","VTimelineItem","dotRef","makeVTimelineProps","lineThickness","truncateLine","VTimeline","sideClasses","truncateClasses","makeVToolbarItemsProps","VToolbarItems","makeVTooltipProps","VTooltip","VValidation","validation","_mutate","Mutate","modifierKeys","attributes","attr","characterData","childList","subtree","sub","MutationObserver","mutations","Resize","_onResize","self","arg","_onScroll","Scroll","Tooltip","hook","walk","suspense","ssContent","findComponentParent","appContext","mountComponent","resolveComponent","useDirectiveComponent","createVuetify","blueprint","components","$nuxt","mount","__VUE_OPTIONS_API__","mixin","$vuetify","call","version","_createVuetify"],"mappings":";;;;;;AAAO,MAAMA,EAA+B,oBAAXC,OACpBC,EAAwBF,GAAc,yBAA0BC,OAChEE,EAAiBH,IAAe,iBAAkBC,QAAUA,OAAOG,UAAUC,eAAiB,GAC9FC,EAAuBN,GAAc,eAAgBC;;qECgB3D,SAASM,EAAgBC,EAAUC,EAA2BC,GACnE,MAAMC,EAAOF,EAAKG,OAAS;AAE3B,GAAID,EAAO,EAAG,YAAeE,IAARL,EAAoBE,EAAWF;AAEpD,IAAK,IAAIM,EAAI,EAAGA,EAAIH,EAAMG,IAAK,CAC7B,GAAW,MAAPN,EACF,OAAOE;AAETF,EAAMA,EAAIC,EAAKK,IAGjB,OAAW,MAAPN,QAEuBK,IAApBL,EAAIC,EAAKE,IAFQD,EAE0BF,EAAIC,EAAKE,IAGtD,SAASI,EAAWC,EAAQC,GACjC,GAAID,IAAMC,EAAG,OAAO;AAEpB,GACED,aAAaE,MACbD,aAAaC,MACbF,EAAEG,YAAcF,EAAEE,UAGlB,OAAO;AAGT,GAAIH,IAAMI,OAAOJ,IAAMC,IAAMG,OAAOH,GAElC,OAAO;AAGT,MAAMI,EAAQD,OAAOE,KAAKN;AAE1B,OAAIK,EAAMT,SAAWQ,OAAOE,KAAKL,GAAGL,QAK7BS,EAAME,OAAMC,GAAKT,EAAUC,EAAEQ,GAAIP,EAAEO,MAGrC,SAASC,EAAsBjB,EAAUC,EAAsBC,GAEpE,OAAW,MAAPF,GAAgBC,GAAwB,iBAATA,OACjBI,IAAdL,EAAIC,GAA4BD,EAAIC,GAGjCF,EAAeC,GADtBC,GADAA,EAAOA,EAAKiB,QAAQ,aAAc,QACtBA,QAAQ,MAAO,KACKC,MAAM,KAAMjB,GAJiBA,EAaxD,SAASkB,EACdC,EACAC,EACApB,GAEA,IAAiB,IAAboB,EAAmB,YAAgBjB,IAATgB,EAAqBnB,EAAWmB;AAE9D,GAAgB,MAAZC,GAAwC,kBAAbA,EAAwB,OAAOpB;AAE9D,GAAImB,IAAST,OAAOS,GAAO,CACzB,GAAwB,mBAAbC,EAAyB,OAAOpB;AAE3C,MAAMqB,EAAQD,EAASD,EAAMnB;AAE7B,YAAwB,IAAVqB,EAAwBrB,EAAWqB,EAGnD,GAAwB,iBAAbD,EAAuB,OAAOL,EAAqBI,EAAMC,EAAUpB;AAE9E,GAAIsB,MAAMC,QAAQH,GAAW,OAAOvB,EAAesB,EAAMC,EAAUpB;AAEnE,GAAwB,mBAAboB,EAAyB,OAAOpB;AAE3C,MAAMqB,EAAQD,EAASD,EAAMnB;AAE7B,YAAwB,IAAVqB,EAAwBrB,EAAWqB,EAG5C,SAASG,EAAatB,GAAqC,IAArBuB,EAAKC,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACnD,OAAOJ,MAAMK,KAAK,CAAEzB,OAAAA,IAAU,CAAC0B,EAAGC,IAAMJ,EAAQI,IAc3C,SAASC,EAAeC,GAA0E,IAAjCC,EAAIN,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAC7E,OAAW,MAAPK,GAAuB,KAARA,OACjB,EACSE,OAAOF,GACTG,OAAOH,GACJI,UAAUJ,GAGZ,GAAEK,OAAOL,KAAOC,SAFxB,EAMG,SAASK,EAAUvC,GACxB,OAAe,OAARA,GAA+B,iBAARA,IAAqBwB,MAAMC,QAAQzB,GAG5D,SAASwC,EAAYxC,GAC1B,GAAIA,GAAO,QAASA,EAAK,CACvB,MAAMyC,EAAKzC,EAAI0C;AACf,OAAID,GAAIE,WAAaC,KAAKC,UAEjBJ,EAAGK,mBAELL,EAET,OAAOzC,EAIF,MAAM+C,EAAWnC,OAAOoC,OAAO,CACpCC,MAAO,GACPC,IAAK,EACLC,OAAQ,GACRC,IAAK,GACLC,MAAO,GACPC,GAAI,GACJC,KAAM,GACNC,KAAM,GACNC,MAAO,GACPC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,UAAW,EACXC,OAAQ,GACRC,OAAQ,GACRC,SAAU,GACVC,MAAO,KAGIC,EAAoCtD,OAAOoC,OAAO,CAC7DC,MAAO,QACPC,IAAK,MACLC,OAAQ,SACRC,IAAK,SACLC,MAAO,QACPC,GAAI,UACJC,KAAM,YACNC,KAAM,YACNC,MAAO,aACPC,IAAK,MACLC,KAAM,OACNC,IAAK,SACLC,UAAW,YACXC,OAAQ,SACRC,OAAQ,SACRC,SAAU,WACVC,MAAO;AAGF,SAASnD,EAAoBqD,GAClC,OAAOvD,OAAOE,KAAKqD,GAGd,SAASC,EAAuBpE,EAAaqE,GAClD,OAAOA,EAAItD,OAAMgB,GAAK/B,EAAIsE,eAAevC,KASpC,SAASwC,EAGbvE,EAAQwE,GACT,MAAMC,EAAa,GAEb3D,EAAO,IAAI4D,IAAI9D,OAAOE,KAAKd;AACjC,IAAK,MAAMC,KAAQuE,EACb1D,EAAKsD,IAAInE,KACXwE,EAAMxE,GAAQD,EAAIC;AAItB,OAAOwE,EAeF,SAASE,EAIb3E,EAAQwE,EAAuBI,GAChC,MAAMH,EAAQ7D,OAAOiE,OAAO,MACtBC,EAAOlE,OAAOiE,OAAO;AAE3B,IAAK,MAAMR,KAAOrE,EAEdwE,EAAMO,MAAK9E,GAAQA,aAAgB+E,OAC/B/E,EAAKgF,KAAKZ,GACVpE,IAASoE,MACPO,GAASG,MAAK9E,GAAQA,IAASoE,IAErCI,EAAMJ,GAAOrE,EAAIqE,GAEjBS,EAAKT,GAAOrE,EAAIqE;AAIpB,MAAO,CAACI,EAAOK,GAGV,SAASI,EAGblF,EAAQ4E,GACT,MAAMO,EAAQ,IAAKnF;AAInB,OAFA4E,EAAQQ,SAAQC,UAAeF,EAAME,KAE9BF,EAGF,SAASG,EAGbtF,EAAQuF,GACT,MAAMJ,EAAQ;AAId,OAFAI,EAAQH,SAAQC,GAAQF,EAAME,GAAQrF,EAAIqF,KAEnCF,EAGT,MAAMK,EAAO,YACAC,EAAQpB,GAAgBmB,EAAKP,KAAKZ,GAEzCqB,EAAiB,CACrB,uBACA,oBACA,iBACA,uBACA,mBACA,aACA,gBACA,wBACA,WACA,UACA,mBACA,qBACA,sBACA,gBACA,SACA,QACA,aACA,YACA,aACA,qBACA,oBACA,kBACA,eACA,iBACA,sBACA,UACA,YACA,aACA,UACA,uBACA,cACA,cACA,aACA,cACA,YACA,eACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,UACA,WACA,WACA,gBACA,aACA,cACA,eACA,qBACA,kBACA,kBACA,oBACA,WAGIC,EAAwB,CAC5B,UACA,YACA,aACA,YACA,QACA,SACA,MACA;AAYK,SAASC,EAAkBC,GAChC,MAAOC,EAAQjF,GAAS8D,EAAakB,EAAO,CAACL,IACvCO,EAAcb,EAAKY,EAAQJ,IAC1BM,EAAWC,GAActB,EAAa9D,EAAO,CAAC,QAAS,QAAS,KAAM;AAG7E,OAFAD,OAAOsF,OAAOF,EAAWF,GACzBlF,OAAOsF,OAAOD,EAAYF,GACnB,CAACC,EAAWC,GAed,SAASE,EACdrE,GAIA,OAAY,MAALA,EACH,GACAN,MAAMC,QAAQK,GACZA,EAAW,CAACA,GAkCb,SAASsE,EAAO7E,GAAiC,IAAlB8E,EAAGzE,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,EAAG0E,EAAG1E,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACnD,OAAO2E,KAAKD,IAAID,EAAKE,KAAKF,IAAIC,EAAK/E,IAG9B,SAASiF,EAAajF,GAC3B,MAAMkF,EAAalF,EAAMmF,WAAWC;AACpC,OAAOF,EAAWG,SAAS,KACtBH,EAAWrG,OAASqG,EAAWI,QAAQ,KAAO,EAC/C,EAGC,SAASC,EAAQ7E,EAAa7B,GAA4B,IAAZ2G,EAAInF,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAC1D,OAAOK,EAAM8E,EAAKC,OAAOT,KAAKD,IAAI,EAAGlG,EAAS6B,EAAI7B,SAG7C,SAAS6G,EAAUhF,EAAa7B,GAA4B,IAAZ2G,EAAInF,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAC5D,OAAOmF,EAAKC,OAAOT,KAAKD,IAAI,EAAGlG,EAAS6B,EAAI7B,SAAW6B,EAmBlD,SAASiF,EAAuBC,GAAiD,IAAlCC,EAAiBxF,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACxE,GAAIuF,EAAQC,EACV,MAAQ,GAAED;AAGZ,MAAME,EAAkB,OAATD,EAAgB,CAAC,KAAM,KAAM,MAAQ,CAAC,IAAK,IAAK;AAC/D,IAAIlF,GAAQ;AACZ,KAAOqE,KAAKe,IAAIH,IAAUC,GAAQlF,EAAOmF,EAAOjH,OAAS,GACvD+G,GAASC,IACPlF;AAEJ,MAAQ,GAAEiF,EAAMI,QAAQ,MAAMF,EAAOnF,MAGhC,SAASsF,IAId,IAHAC,EAA2B7F,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GAC9B8F,EAA2B9F,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GAC9B+F,EAAmD/F,UAAAxB,OAAAwB,EAAAA,kBAAAvB;AAEnD,MAAMuH,EAA2B;AAEjC,IAAK,MAAMvD,KAAOoD,EAChBG,EAAIvD,GAAOoD,EAAOpD;AAGpB,IAAK,MAAMA,KAAOqD,EAAQ,CACxB,MAAMG,EAAiBJ,EAAOpD,GACxByD,EAAiBJ,EAAOrD;AAK5B9B,EAASsF,IACTtF,EAASuF,GAETF,EAAIvD,GAAOmD,EAAUK,EAAgBC,EAAgBH,GAKnDnG,MAAMC,QAAQoG,IAAmBrG,MAAMC,QAAQqG,IAAmBH,EACpEC,EAAIvD,GAAOsD,EAAQE,EAAgBC,GAKrCF,EAAIvD,GAAOyD,EAGb,OAAOF,EAGF,SAASG,EAAkBC,GAChC,OAAOA,EAAMC,KAAIC,GACXA,EAAKC,OAASC,WACTL,EAAiBG,EAAKG,UAEtBH,IAERI,OAGE,SAASC,IAAuB,IAAVtG,EAAGL,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACjC,GAAI2G,EAAYC,MAAMpE,IAAInC,GAAM,OAAOsG,EAAYC,MAAMC,IAAIxG;AAC7D,MAAMyG,EAAQzG,EACXf,QAAQ,WAAY,KACpBA,QAAQ,aAAc,OACtByH;AAEH,OADAJ,EAAYC,MAAMI,IAAI3G,EAAKyG,GACpBA,EAMF,SAASG,EACdxE,EACAyE,GAEA,IAAKA,GAA0B,iBAAVA,EAAoB,MAAO;AAEhD,GAAItH,MAAMC,QAAQqH,GAChB,OAAOA,EAAMb,KAAIc,GAASF,EAAwBxE,EAAK0E,KAAQT,KAAK;AAC/D,GAAI9G,MAAMC,QAAQqH,EAAMT,UAC7B,OAAOS,EAAMT,SAASJ,KAAIc,GAASF,EAAwBxE,EAAK0E,KAAQT,KAAK;AACxE,GAAIQ,EAAME,UAAW,CAC1B,GAAIpI,OAAOqI,sBAAsBH,EAAME,UAAUE,UAAUtC,SAASvC,GAClE,MAAO,CAACyE,EAAME;AACT,GAAIF,EAAME,UAAUG,QACzB,OAAON,EAAwBxE,EAAKyE,EAAME,UAAUG,SAASb,KAAK,GAItE,MAAO,GAtBTC,EAAYC,MAAQ,IAAIY;AAuBvB,IAAAC,MAAAC,QAAAC,MAAAD;AAEM,MAAME,EAIXC,YAA6BC,GAAcC,EAAAC,KAAAP,EAHjB,IAAEM,EAAAC,KAAAL,EACjB,GAACK,KAEiBF,KAAAA,EAE7BG,KAAMC;AACJC,EAAAV,EAAAO,MAAIG,EAAAR,EAAMK,OAAiBE,IAC3BP,IAAIK,QAAaG,EAAAR,EAAAK,MAAgB,GAAKA,KAAKF,qBAG7CM,SACE,OAAOD,EAAAV,EAAAO,MAAUK,MAAKF,EAAAR,EAACK,OAAeM,OAAOH,EAAAV,EAAIO,MAAMK,MAAM,EAACF,EAAAR,EAAEK,SAwB7D,SAASO,EAAoCC,GAClD,MAAMC,EAAOC,WAAS,IAChBlD,EAAOmD,WAASH;AAMtB,OALAI,EAAAA,aAAY,KACV,IAAK,MAAMnG,KAAO+C,EAAK7F,MACrB8I,EAAKhG,GAAO+C,EAAK7F,MAAM8C,KAExB,CAAEoG,MAAO,SACLC,EAAAA,OAAOL,GAIT,SAASzD,EAAU+D,EAAqBb,GAC7C,OAAOa,EAAI/D,SAASkD,GAGf,SAASc,EAAWC,GACzB,OAAOA,EAAS,GAAGlC,cAAgBkC,EAASZ,MAAM,GAI7C,MAAMa,EAAYA,IAA+B,CAACC,SAAUvJ;AAE5D,SAASwJ,EAAUnK,EAA4BoK,GAEpD,SAAUpK,EADVoK,EAAO,KAAOC,aAAWD,KACApK,EAAO,GAAEoK,UAAepK,EAAO,GAAEoK,aAAkBpK,EAAO,GAAEoK,iBAAsBpK,EAAO,GAAEoK,iBAG/G,SAASE,EAA4BC,GAA+C,IAAAC,IAAAA,EAAAzJ,UAAAxB,OAATkL,MAAI9J,MAAA6J,EAAAA,EAAAA,OAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,EAAA3J,GAAAA,UAAA2J;AACpF,GAAI/J,MAAMC,QAAQ2J,GAChB,IAAK,MAAMI,KAAKJ,EACdI,KAAKF;IAEqB,mBAAZF,GAChBA,KAAWE,GAIR,SAASG,EAAmBhJ,GAAsC,IAAzBiJ,IAAgB9J,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,KAAAA,UAAA;AAC9D,MAAM+J,EAAU,CAAC,SAAU,SAAU,6BAA8B,SAAU,WAAY,cACtF1D,KAAI2D,GAAM,GAAEA,IAAIF,EAAmB,wBAA0B,uBAC7DG,KAAK;AACR,MAAO,IAAIpJ,EAAGqJ,iBAAiBH,IAG1B,SAASI,EAAgBC,EAAyBC,EAA4BC,GACnF,IAAIC,EACAC,EAAMJ,EAASnF,QAAQwF,SAASC;AACpC,MAAMC,EAAmB,SAAbN,EAAsB,GAAK;AACvC,GACEG,GAAOG,EACPJ,EAAMH,EAASI,WACND,GAA2B,MAApBA,EAAIK,gBAA0BN,IAAYC,IAAQ,KAAUC,EAAMJ,EAAS5L,QAAUgM,GAAO;AAC9G,OAAOD,EAGF,SAASM,EAAYhK,EAAawJ,GACvC,MAAMS,EAAYjB,EAAkBhJ;AAEpC,GAAKwJ,EAIE,GAAiB,UAAbA,EACTS,EAAU,IAAIC;KACT,GAAiB,SAAbV,EACTS,EAAUE,IAAI,IAAID;KACb,GAAwB,iBAAbV,EAChBS,EAAUT,IAAWU;IAChB,CACL,MAAMR,EAAMJ,EAAeW,EAAWT;AAClCE,EAAKA,EAAIQ,QACRF,EAAWhK,EAAiB,SAAbwJ,EAAsB,QAAU,aAZhDxJ,IAAO4J,SAASC,eAAkB7J,EAAGoK,SAASR,SAASC,gBACzDI,EAAU,IAAIC,QAeb,SAASG,EAAShD,GACvB,OAAOA,MAAAA,GAAqD,iBAARA,GAAmC,KAAfA,EAAInD,OAGvE,SAASoG,KAGT,SAASC,GAAiBvK,EAAyBwK,GAMxD,KALyBzN,GACR,oBAAR0N,UACiB,IAAjBA,IAAIC,UACXD,IAAIC,SAAU,YAAWF,OAEJ,OAAO;AAE9B,IACE,QAASxK,GAAMA,EAAG2K,QAAQH,GAC1B,MAAOI,GACP,OAAO,MAIJ,SAASC,GAAkBC,GAChC,OAAOA,EAAOxI,MAAKgE,IACZyE,EAAOA,QAACzE,IACTA,EAAMZ,OAASsF,EAAOA,UACnB1E,EAAMZ,OAASC,EAAAA,UACpBkF,GAAiBvE,EAAMV,aAEvBkF,EACA,KAeC,SAASG,GAAkBC,EAAaC,GAC7C,MAAMC,EAASC,EAAAA;AASf,OAPAtD,EAAAA,aAAY,KACVqD,EAAOtM,MAAQoM,MACd,CACDlD,MAAO,UACJmD,IAGEG,EAAAA,SAASF,GAqBX,SAASG,KACd,MAAMvL,EAAKqL,EAAAA,aACLH,EAAMjG,IACVjF,EAAGlB,MAAQmG;AAYb,OAVA9G,OAAOqN,eAAeN,EAAI,QAAS,CACjCO,YAAY,EACZzF,IAAKA,IAAMhG,EAAGlB,MACdqH,IAAKkB,GAAOrH,EAAGlB,MAAQuI,IAEzBlJ,OAAOqN,eAAeN,EAAI,KAAM,CAC9BO,YAAY,EACZzF,IAAKA,IAAMjG,EAAWC,EAAGlB,SAGpBoM,ECnvBT,MAAMQ,GAAQ,CAAC,MAAO,UAChBC,GAAS,CAAC,QAAS,MAAO,OAAQ;AAgBjC,SAASC,GAAaC,EAAgBC,GAC3C,IAAKC,EAAMC,GAASH,EAAOnN,MAAM;AAQjC,OAPKsN,IACHA,EACE7H,EAASuH,GAAOK,GAAQ,QACtB5H,EAASwH,GAAQI,GAAQ,MACzB,UAGC,CACLA,KAAME,GAAWF,EAAMD,GACvBE,MAAOC,GAAWD,EAAOF,IAItB,SAASG,GAAYzM,EAAkCsM,GAC5D,MAAY,UAARtM,EAAwBsM,EAAQ,QAAU,OAClC,QAARtM,EAAsBsM,EAAQ,OAAS,QACpCtM,EAGF,SAAS0M,GAAUL,GACxB,MAAO,CACLE,KAAM,CACJI,OAAQ,SACRC,IAAK,SACLC,OAAQ,MACRtL,KAAM,QACNC,MAAO,QACP6K,EAAOE,MACTC,MAAOH,EAAOG,OAIX,SAASM,GAAWT,GACzB,MAAO,CACLE,KAAMF,EAAOE,KACbC,MAAO,CACLG,OAAQ,SACRC,IAAK,SACLC,OAAQ,MACRtL,KAAM,QACNC,MAAO,QACP6K,EAAOG,QAIN,SAASO,GAAYV,GAC1B,MAAO,CACLE,KAAMF,EAAOG,MACbA,MAAOH,EAAOE,MAIX,SAASS,GAASX,GACvB,OAAO1H,EAASuH,GAAOG,EAAOE,MAAQ,IAAM,IC3EvC,MAAMU,GAMXzF,YAAW0F,GAKR,IALUC,EAAEA,EAACC,EAAEA,EAACC,MAAEA,EAAKC,OAAEA,GAK3BJ;AACCvF,KAAKwF,EAAIA,EACTxF,KAAKyF,EAAIA,EACTzF,KAAK0F,MAAQA,EACb1F,KAAK2F,OAASA,EAGhBV,UAAa,OAAOjF,KAAKyF,EACzBP,aAAgB,OAAOlF,KAAKyF,EAAIzF,KAAK2F,OACrC/L,WAAc,OAAOoG,KAAKwF,EAC1B3L,YAAe,OAAOmG,KAAKwF,EAAIxF,KAAK0F,OAG/B,SAASE,GAAahP,EAAQC,GACnC,MAAO,CACL2O,EAAG,CACDK,OAAQlJ,KAAKD,IAAI,EAAG7F,EAAE+C,KAAOhD,EAAEgD,MAC/BkM,MAAOnJ,KAAKD,IAAI,EAAG9F,EAAEiD,MAAQhD,EAAEgD,QAEjC4L,EAAG,CACDI,OAAQlJ,KAAKD,IAAI,EAAG7F,EAAEoO,IAAMrO,EAAEqO,KAC9Ba,MAAOnJ,KAAKD,IAAI,EAAG9F,EAAEsO,OAASrO,EAAEqO,UAK/B,SAASa,GAAcjI,GAC5B,OAAIlG,MAAMC,QAAQiG,GACT,IAAIwH,GAAI,CACbE,EAAG1H,EAAO,GACV2H,EAAG3H,EAAO,GACV4H,MAAO,EACPC,OAAQ,IAGH7H,EAAOkI,wBC1CX,SAASC,GAAmBpN,GACjC,MAAMqN,EAAOrN,EAAGmN,wBACVG,EAAQC,iBAAiBvN,GACzBwN,EAAKF,EAAMG;AAEjB,GAAID,EAAI,CACN,IAAIE,EAAIC,EAAIC,EAAIC,EAAIC;AACpB,GAAIN,EAAGO,WAAW,aAChBL,EAAKF,EAAGhG,MAAM,GAAI,GAAG9I,MAAM,MAC3BiP,GAAMD,EAAG,GACTE,GAAMF,EAAG,GACTG,GAAMH,EAAG,IACTI,GAAMJ,EAAG;IACJ,CAAA,IAAIF,EAAGO,WAAW,WAOvB,OAAO,IAAItB,GAAIY;AANfK,EAAKF,EAAGhG,MAAM,GAAI,GAAG9I,MAAM,MAC3BiP,GAAMD,EAAG,GACTE,GAAMF,EAAG,GACTG,GAAMH,EAAG,GACTI,GAAMJ,EAAG,GAKX,MAAMM,EAAKV,EAAMW,gBACXtB,EAAIU,EAAKV,EAAIkB,GAAM,EAAIF,GAAMO,WAAWF,GACxCpB,EAAIS,EAAKT,EAAIkB,GAAM,EAAIF,GAAMM,WAAWF,EAAGxG,MAAMwG,EAAG5J,QAAQ,KAAO,IACnE+J,EAAIR,EAAKN,EAAKR,MAAQc,EAAK3N,EAAGoO,YAAc,EAC5CrF,EAAI6E,EAAKP,EAAKP,OAASc,EAAK5N,EAAGqO,aAAe;AAEpD,OAAO,IAAI5B,GAAI,CAAEE,EAAAA,EAAGC,EAAAA,EAAGC,MAAOsB,EAAGrB,OAAQ/D,IAEzC,OAAO,IAAI0D,GAAIY,GAIZ,SAASiB,GACdtO,EACAuO,EACApD,GAEA,QAA0B,IAAfnL,EAAGsO,QAAyB,MAAO,CAAEE,SAAUC,QAAQC;AAElE,IAAIC;AACJ,IACEA,EAAY3O,EAAGsO,QAAQC,EAAWpD,GAClC,MAAOP,GACP,MAAO,CAAE4D,SAAUC,QAAQC,WAW7B,YARkC,IAAvBC,EAAUH,WAClBG,EAAkBH,SAAW,IAAIC,SAAQC,IACxCC,EAAUC,SAAW,KACnBF,EAAQC,QAKPA,EC1DT,MAAME,GAAW,IAAIhI;AAEd,SAASiI,GAAW9O,EAAiB5B,GAC1CD,OAAOE,KAAKD,GAAOuE,SAAQrD,IACzB,GAAI0D,EAAK1D,GAAI,CACX,MAAMkJ,EAAOL,EAAU7I,GACjBqJ,EAAUkG,GAAS7I,IAAIhG;AAC7B,GAAgB,MAAZ5B,EAAMkB,GACRqJ,GAAShG,SAAQtD,IACf,MAAO0P,EAAG7D,GAAM7L;AACZ0P,IAAMvG,IACRxI,EAAGgP,oBAAoBxG,EAAM0C,GAC7BvC,EAAQjI,OAAOrB;KAGd,IAAKsJ,IAAY,IAAIA,IAAUrG,MAAKjD,GAAKA,EAAE,KAAOmJ,GAAQnJ,EAAE,KAAOjB,EAAMkB,KAAK,CACnFU,EAAGiP,iBAAiBzG,EAAMpK,EAAMkB;AAChC,MAAM4P,EAAWvG,GAAW,IAAI1G;AAChCiN,EAASC,IAAI,CAAC3G,EAAMpK,EAAMkB,KACrBuP,GAASlN,IAAI3B,IAAK6O,GAAS1I,IAAInG,EAAIkP,SAG1B,MAAZ9Q,EAAMkB,GACRU,EAAGoP,gBAAgB9P,GAEnBU,EAAGqP,aAAa/P,EAAGlB,EAAMkB,OAM1B,SAASgQ,GAAatP,EAAiB5B,GAC5CD,OAAOE,KAAKD,GAAOuE,SAAQrD,IACzB,GAAI0D,EAAK1D,GAAI,CACX,MAAMkJ,EAAOL,EAAU7I,GACjBqJ,EAAUkG,GAAS7I,IAAIhG;AAC7B2I,GAAShG,SAAQtD,IACf,MAAO0P,EAAG7D,GAAM7L;AACZ0P,IAAMvG,IACRxI,EAAGgP,oBAAoBxG,EAAM0C,GAC7BvC,EAAQjI,OAAOrB,YAInBW,EAAGoP,gBAAgB9P,MC/BzB,MAAMiQ,GAAU,IAEVC,GAAM,SACNC,GAAM,SACNC,GAAM,QAcNC,GAAU,IAMVC,GAAc,kBACdC,GAAc;AAGb,SAASC,GAAcC,EAAWC,GAEvC,MAAMC,GAAQF,EAAKG,EAAI,MAAQX,GACzBY,GAAQJ,EAAKK,EAAI,MAAQb,GACzBc,GAAQN,EAAK/R,EAAI,MAAQuR,GAEzBe,GAAON,EAAWE,EAAI,MAAQX,GAC9BgB,GAAOP,EAAWI,EAAI,MAAQb,GAC9BiB,GAAOR,EAAWhS,EAAI,MAAQuR;AAGpC,IAaIkB,EAbAC,EAAQT,EAAOT,GAAQW,EAAOV,GAAQY,EAAOX,GAC7CiB,EAAOL,EAAMd,GAAQe,EAAMd,GAAQe,EAAMd;AAQ7C,GAJIgB,GAAQf,KAASe,IAASf,GAAUe,IAzB1B,MA0BVC,GAAOhB,KAASgB,IAAQhB,GAAUgB,IA1BxB,MA6BV7M,KAAKe,IAAI8L,EAAMD,GA5BH,KA4BsB,OAAO;AAK7C,GAAIC,EAAMD,EAAM,CAId,MAAME,EApCO,MAoCED,GA9CJ,IA8CsBD,GA7CrB;AAoDZD,EACGG,EAvCQ,KAuCS,EACfA,EA3CW,KA2CWA,EAAOA,EAAOhB,GAAcC,GACnDe,EAAOf,OACN,CAIL,MAAMe,EAlDO,MAkDED,GA1DL,IA0DsBD,GA3DrB;AA6DXD,EACGG,GAjDQ,KAiDU,EAChBA,GArDW,KAqDYA,EAAOA,EAAOhB,GAAcC,GACpDe,EAAOf,GAGb,OAAwB,IAAjBY,EC3FF,SAASI,GAAaC,GAC3BC,EAAAA,KAAM,YAAWD,KAGZ,SAASE,GAAcF,GAC5BC,EAAAA,KAAM,kBAAiBD,KCPzB,MAAMG,GAAQ,mBAERC,GAA0BC,GAC9BA,EAAIF,IAAS,EACTnN,KAAKsN,KAAKD,GACTA,GAAK,EAAIF,IAAS,GAAM,EAAI,GAG7BI,GAA0BF,GAC9BA,EAAIF,GACAE,GAAK,EACJ,EAAIF,IAAS,GAAME,EAAI,EAAI;AAG3B,SAASG,GAASC,GACvB,MAAM9D,EAAYyD,GACZM,EAAe/D,EAAU8D,EAAI;AAEnC,MAAO,CACL,IAAMC,EAAe,GACrB,KAAO/D,EAAU8D,EAAI,GAAK,QAAWC,GACrC,KAAOA,EAAe/D,EAAU8D,EAAI,GAAK,WAItC,SAASE,GAAOC,GACrB,MAAMjE,EAAY4D,GACZM,GAAMD,EAAI,GAAK,IAAM;AAC3B,MAAO,CAC0B,OAA/BjE,EAAUkE,EAAKD,EAAI,GAAK,KACxBjE,EAAUkE,GACqB,QAA/BlE,EAAUkE,EAAKD,EAAI,GAAK,MC3B5B,MAAME,GAAoB,CACxB,CAAC,QAAS,QAAS,OACnB,EAAE,MAAQ,OAAQ,OAClB,CAAC,OAAS,KAAQ,QAIdC,GAAwBC,GAC5BA,GAAK,SACG,MAAJA,EACA,MAAQA,IAAM,EAAI,KAAO,KAIzBC,GAAoB,CACxB,CAAC,MAAQ,MAAQ,OACjB,CAAC,MAAQ,MAAQ,OACjB,CAAC,MAAQ,MAAQ,QAIbC,GAAwBF,GAC5BA,GAAK,OACDA,EAAI,QACFA,EAAI,MAAS,QAAU;AAGxB,SAASR,GAASC,GACvB,MAAMU,EAAMlT,MAAM,GACZ0O,EAAYoE,GACZK,EAASN;AAGf,IAAK,IAAI/T,EAAI,EAAGA,EAAI,IAAKA,EAEvBoU,EAAIpU,GAAKiG,KAAKqO,MAIT,IAJexO,EAAM8J,EACxByE,EAAOrU,GAAG,GAAK0T,EAAI,GACnBW,EAAOrU,GAAG,GAAK0T,EAAI,GACnBW,EAAOrU,GAAG,GAAK0T,EAAI;AAIvB,MAAO,CACLrB,EAAG+B,EAAI,GACP7B,EAAG6B,EAAI,GACPjU,EAAGiU,EAAI,IAIJ,SAASR,GAAK/E,GAAyB,IAAvBwD,EAAEA,EAACE,EAAEA,EAACpS,EAAEA,GAAQ0O;AACrC,MAAM6E,EAAW,CAAC,EAAG,EAAG,GAClB9D,EAAYuE,GACZE,EAASH;AAGf7B,EAAIzC,EAAUyC,EAAI,KAClBE,EAAI3C,EAAU2C,EAAI,KAClBpS,EAAIyP,EAAUzP,EAAI;AAGlB,IAAK,IAAIH,EAAI,EAAGA,EAAI,IAAKA,EACvB0T,EAAI1T,GAAKqU,EAAOrU,GAAG,GAAKqS,EAAIgC,EAAOrU,GAAG,GAAKuS,EAAI8B,EAAOrU,GAAG,GAAKG;AAGhE,OAAOuT,ECrDF,SAASa,GAAYC,GAC1B,QAASA,GAAS,6BAA6B7P,KAAK6P,GAOtD,MAAMC,GAAa,yCACbC,GAAU,CACdN,IAAKA,CAAC/B,EAAWE,EAAWpS,EAAWD,KAAgB,CAAEmS,EAAAA,EAAGE,EAAAA,EAAGpS,EAAAA,EAAGD,EAAAA,IAClEyU,KAAMA,CAACtC,EAAWE,EAAWpS,EAAWD,KAAgB,CAAEmS,EAAAA,EAAGE,EAAAA,EAAGpS,EAAAA,EAAGD,EAAAA,IACnE0U,IAAKA,CAAC1J,EAAWI,EAAWuJ,EAAW3U,IAAe4U,GAAS,CAAE5J,EAAAA,EAAGI,EAAAA,EAAGuJ,EAAAA,EAAG3U,EAAAA,IAC1E6U,KAAMA,CAAC7J,EAAWI,EAAWuJ,EAAW3U,IAAe4U,GAAS,CAAE5J,EAAAA,EAAGI,EAAAA,EAAGuJ,EAAAA,EAAG3U,EAAAA,IAC3E8U,IAAKA,CAAC9J,EAAWI,EAAW9J,EAAWtB,IAAe+U,GAAS,CAAE/J,EAAAA,EAAGI,EAAAA,EAAG9J,EAAAA,EAAGtB,EAAAA,IAC1EgV,KAAMA,CAAChK,EAAWI,EAAW9J,EAAWtB,IAAe+U,GAAS,CAAE/J,EAAAA,EAAGI,EAAAA,EAAG9J,EAAAA,EAAGtB,EAAAA;AAGtE,SAASiV,GAAYX,GAC1B,GAAqB,iBAAVA,EAKT,OAJI3S,MAAM2S,IAAUA,EAAQ,GAAKA,EAAQ,WACvCxB,GAAa,IAAGwB,+BAGX,CACLnC,GAAY,SAARmC,IAAqB,GACzBjC,GAAY,MAARiC,IAAmB,EACvBrU,EAAY,IAARqU;AAED,GAAqB,iBAAVA,GAAsBC,GAAW9P,KAAK6P,GAAQ,CAC9D,MAAMY,OAAEA,GAAWZ,EAAMa,MAAMZ,KACzBpH,GAAEA,EAAE3D,OAAEA,GAAW0L,EACjBE,EAAa5L,EAAO7I,MAAM,QAC7B8G,KAAInG,GACCA,EAAE+T,SAAS,MAAQ,CAAC,MAAO,OAAQ,MAAO,QAAQjP,SAAS+G,GACtDgD,WAAW7O,GAAK,IAEhB6O,WAAW7O;AAIxB,OAAOkT,GAAQrH,MAAOiI,GACjB,GAAqB,iBAAVd,EAAoB,CACpC,IAAIgB,EAAMhB,EAAMtE,WAAW,KAAOsE,EAAM7K,MAAM,GAAK6K,EAE/C,CAAC,EAAG,GAAGlO,SAASkP,EAAI1V,QACtB0V,EAAMA,EAAI3U,MAAM,IAAI8G,KAAIlB,GAAQA,EAAOA,IAAM8E,KAAK,IACxC,CAAC,EAAG,GAAGjF,SAASkP,EAAI1V,SAC9BkT,GAAa,IAAGwB;AAGlB,MAAMiB,EAAMC,SAASF,EAAK;AAK1B,OAJI3T,MAAM4T,IAAQA,EAAM,GAAKA,EAAM,aACjCzC,GAAa,IAAGwB,kCAGXmB,GAASH,GACX,GAAqB,iBAAVhB,EAAoB,CACpC,GAAI1Q,EAAI0Q,EAAO,CAAC,IAAK,IAAK,MACxB,OAAOA;AACF,GAAI1Q,EAAI0Q,EAAO,CAAC,IAAK,IAAK,MAC/B,OAAOS,GAASW,GAASpB;AACpB,GAAI1Q,EAAI0Q,EAAO,CAAC,IAAK,IAAK,MAC/B,OAAOS,GAAST,GAIpB,MAAM,IAAIqB,UAAW,kBAA0B,MAATrB,EAAgBA,EAAS1S,OAAO0S,IAAWA,EAAcrL,YAAYwB,8EA8BtG,SAASsK,GAAUC,GACxB,MAAMhK,EAAEA,EAACI,EAAEA,EAAC9J,EAAEA,EAACtB,EAAEA,GAAMgV,EACjBY,EAAK5E,IACT,MAAMzP,GAAKyP,EAAKhG,EAAI,IAAO;AAC3B,OAAO1J,EAAIA,EAAI8J,EAAIrF,KAAKD,IAAIC,KAAKF,IAAItE,EAAG,EAAIA,EAAG,GAAI,IAG/C2S,EAAM,CAAC0B,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAInO,KAAInG,GAAKyE,KAAKqO,MAAU,IAAJ9S;AAEnD,MAAO,CAAE6Q,EAAG+B,EAAI,GAAI7B,EAAG6B,EAAI,GAAIjU,EAAGiU,EAAI,GAAIlU,EAAAA,GAGrC,SAAS4U,GAAUC,GACxB,OAAOE,GAASW,GAASb,IAIpB,SAASgB,GAAUpB,GACxB,IAAKA,EAAM,MAAO,CAAEzJ,EAAG,EAAGI,EAAG,EAAG9J,EAAG,EAAGtB,EAAG;AAEzC,MAAMmS,EAAIsC,EAAKtC,EAAI,IACbE,EAAIoC,EAAKpC,EAAI,IACbpS,EAAIwU,EAAKxU,EAAI,IACb6F,EAAMC,KAAKD,IAAIqM,EAAGE,EAAGpS,GACrB4F,EAAME,KAAKF,IAAIsM,EAAGE,EAAGpS;AAE3B,IAAI+K,EAAI;AAEJlF,IAAQD,IACNC,IAAQqM,EACVnH,EAAI,IAAM,GAAMqH,EAAIpS,IAAM6F,EAAMD,IACvBC,IAAQuM,EACjBrH,EAAI,IAAM,GAAM/K,EAAIkS,IAAMrM,EAAMD,IACvBC,IAAQ7F,IACjB+K,EAAI,IAAM,GAAMmH,EAAIE,IAAMvM,EAAMD,MAIhCmF,EAAI,IAAGA,GAAQ;AAEnB,MACM8J,EAAM,CAAC9J,EADK,IAARlF,EAAY,GAAKA,EAAMD,GAAOC,EACrBA;AAEnB,MAAO,CAAEkF,EAAG8J,EAAI,GAAI1J,EAAG0J,EAAI,GAAIxT,EAAGwT,EAAI,GAAI9U,EAAGyU,EAAKzU,GAG7C,SAAS8V,GAAUd,GACxB,MAAMhK,EAAEA,EAACI,EAAEA,EAAC9J,EAAEA,EAACtB,EAAEA,GAAMgV,EAEjBL,EAAIrT,EAAKA,EAAI8J,EAAI;AAIvB,MAAO,CAAEJ,EAAAA,EAAGI,EAFS,IAANuJ,GAAiB,IAANA,EAAU,GAAKrT,EAAIqT,GAAK5O,KAAKF,IAAI8O,EAAG,EAAIA,GAE3CA,EAAAA,EAAG3U,EAAAA,GAGrB,SAAS0V,GAAUhB,GACxB,MAAM1J,EAAEA,EAACI,EAAEA,EAACuJ,EAAG3U,EAAEA,GAAM0U,EAEjBpT,EAAIqT,EAAIvJ,EAAIrF,KAAKF,IAAI8O,EAAG,EAAIA;AAIlC,MAAO,CAAE3J,EAAAA,EAAGI,EAFS,IAAN9J,EAAU,EAAI,EAAK,EAAIqT,EAAIrT,EAEnBA,EAAAA,EAAGtB,EAAAA,GAGrB,SAAS+V,GAAQpH,GAA+B,IAA7BwD,EAAEA,EAACE,EAAEA,EAACpS,EAAEA,EAACD,EAAEA,GAAQ2O;AAC3C,YAAa9O,IAANG,EAAmB,OAAMmS,MAAME,MAAMpS,KAAQ,QAAOkS,MAAME,MAAMpS,MAAMD,KAGxE,SAASgW,GAAUhB,GACxB,OAAOe,GAAShB,GAASC,IAG3B,SAASiB,GAAO3U,GACd,MAAM0J,EAAIjF,KAAKqO,MAAM9S,GAAG4E,SAAS;AACjC,OAAQ,KAAKgQ,OAAO,EAAG,EAAIlL,EAAEpL,QAAUoL,GAAGmL,cAGrC,SAASC,GAAQC,GAA4B,IAA1BlE,EAAEA,EAACE,EAAEA,EAACpS,EAAEA,EAACD,EAAEA,GAAQqW;AAC3C,MAAQ,IAAG,CACTJ,GAAM9D,GACN8D,GAAM5D,GACN4D,GAAMhW,QACAJ,IAANG,EAAkBiW,GAAMlQ,KAAKqO,MAAU,IAAJpU,IAAY,IAC/CqL,KAAK,MAGF,SAASoK,GAAUH,GACxBA,EAgBK,SAAmBA,GACpBA,EAAItF,WAAW,OACjBsF,EAAMA,EAAI7L,MAAM;AAKC,KAFnB6L,EAAMA,EAAI5U,QAAQ,gBAAiB,MAE3Bd,QAA+B,IAAf0V,EAAI1V,SAC1B0V,EAAMA,EAAI3U,MAAM,IAAI8G,KAAImH,GAAKA,EAAIA,IAAGvD,KAAK;AAGxB,IAAfiK,EAAI1V,SACN0V,EAAMhP,EAAOA,EAAOgP,EAAK,GAAI,EAAG;AAGlC,OAAOA,EA/BDgB,CAAShB;AACf,IAAKnD,EAAGE,EAAGpS,EAAGD,GT8OT,SAAgByB,GAAuB,IAAVyH,EAAI9H,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACzC,MAAMmV,EAAoB;AAC1B,IAAIC,EAAQ;AACZ,KAAOA,EAAQ/U,EAAI7B,QACjB2W,EAAQlN,KAAK5H,EAAIyU,OAAOM,EAAOtN,IAC/BsN,GAAStN;AAEX,OAAOqN,ESrPYE,CAAMnB,EAAK,GAAG7N,KAAKiP,GAAclB,SAASkB,EAAG;AAGhE,OAFA1W,OAAUH,IAANG,EAAkBA,EAAKA,EAAI,IAExB,CAAEmS,EAAAA,EAAGE,EAAAA,EAAGpS,EAAAA,EAAGD,EAAAA,GAGb,SAAS2W,GAAUrB,GAExB,OAAOO,GADKJ,GAASH,IAIhB,SAASsB,GAAU5B,GACxB,OAAOoB,GAASrB,GAASC,IAiCpB,SAAS6B,GAAS9V,EAAY+V,GACnC,MAAMnD,EAAMoD,GAAeC,GAAWjW;AAGtC,OAFA4S,EAAI,GAAKA,EAAI,GAAc,GAATmD,EAEXE,GAAaD,GAAapD,IAG5B,SAASsD,GAAQlW,EAAY+V,GAClC,MAAMnD,EAAMoD,GAAeC,GAAWjW;AAGtC,OAFA4S,EAAI,GAAKA,EAAI,GAAc,GAATmD,EAEXE,GAAaD,GAAapD,IAO5B,SAASuD,GAAS5C,GAGvB,OAAO0C,GAFK/B,GAAWX,IAEA,GAOlB,SAAS6C,GAAaC,EAAcC,GACzC,MAAMC,EAAKJ,GAAQE,GACbG,EAAKL,GAAQG;AAKnB,OAHctR,KAAKD,IAAIwR,EAAIC,GAGX,MAFHxR,KAAKF,IAAIyR,EAAIC,GAEM,KAG3B,SAASC,GAAelD,GAC7B,MAAMmD,EAAgB1R,KAAKe,IAAIiL,GAAakD,GAAW,GAAIA,GAAWX;AAatE,OAZsBvO,KAAKe,IAAIiL,GAAakD,GAAW,UAAWA,GAAWX,KAYtDvO,KAAKF,IAAI4R,EAAe,IAAM,OAAS,OChRzD,SAASC,GAEbrX,EAAqB4G,GACtB,OACE0Q,GAEOvX,OAAOE,KAAKD,GAAOuX,QAAY,CAACpY,EAAKqF,KAC1C,MACMgT,EAD4C,iBAAhBxX,EAAMwE,IAAqC,MAAfxE,EAAMwE,KAAkB7D,MAAMC,QAAQZ,EAAMwE,IAClExE,EAAMwE,GAAQ,CAAE8C,KAAMtH,EAAMwE;AAepE,OAZErF,EAAIqF,GADF8S,GAAY9S,KAAQ8S,EACV,IACPE,EACHC,QAASH,EAAS9S,IAGRgT,EAGV5Q,IAAWzH,EAAIqF,GAAMoC,SACvBzH,EAAIqF,GAAMoC,OAASA,GAGdzH,IACN,ICxCA,MAAMuY,GAAqBL,GAAa,CAC7CM,MAAO,CAACpW,OAAQZ,MAAOZ,QACvBmP,MAAO,CACL5H,KAAM,CAAC/F,OAAQZ,MAAOZ,QACtB0X,QAAS,OAEV,aCLUG,GAAsDC,OAAOC,IAAI;AAEvE,SAASC,GAAgBhL,GAC9B,OAAOiL,EAAAA,IAAIjL,GAGN,SAASkL,KACd,MAAMX,EAAWY,SAAON;AAExB,IAAKN,EAAU,MAAM,IAAIa,MAAM;AAE/B,OAAOb,EAGF,SAASc,GACdd,EACAvK,GAOA,MAAMsL,EAAmBJ,KACnBK,EAAmBN,MAAIV,GAEvBiB,EAAc7O,EAAAA,UAAS,KAG3B,GAFiB8O,EAAAA,MAAMzL,GAAS0L,UAElB,OAAOJ,EAAiB3X;AAEtC,MAAMgY,EAASF,EAAAA,MAAMzL,GAAS2L,QACxBC,EAAQH,EAAAA,MAAMzL,GAAS4L,OACvBC,EAAOJ,EAAAA,MAAMzL,GAAS6L;AAE5B,GAA8B,MAA1BN,EAAiB5X,SAAmBgY,GAAUC,GAASC,GAAO,OAAOP,EAAiB3X;AAE1F,IAAImY,EAAalS,EAAU2R,EAAiB5X,MAAO,CAAEoY,KAAMT,EAAiB3X;AAE5E,GAAIgY,EAAQ,OAAOG;AAEnB,GAAIF,GAASC,EAAM,CACjB,MAAMG,EAAMtX,OAAOkX,GAASK,EAAAA;AAE5B,IAAK,IAAIvZ,EAAI,EAAGA,GAAKsZ,IACdF,GAAgB,SAAUA,GADPpZ,IAKxBoZ,EAAaA,EAAWC;AAO1B,OAJID,GAA8B,iBAATD,GAAqBA,KAAQC,IACpDA,EAAalS,EAAUA,EAAUkS,EAAY,CAAEC,KAAMD,IAAeA,EAAWD,KAG1EC,EAGT,OAAOA,EAAWC,KACdnS,EAAUkS,EAAWC,KAAMD,GAC3BA;AAKN,OAFAI,UAAQrB,GAAgBW,GAEjBA,EAGT,SAASW,GAAejR,EAAczD,GACpC,YAAsC,IAAxByD,EAAMjI,QAAQwE,SACkB,IAArCyD,EAAMjI,QAAQ0H,EAAYlD,IAG9B,SAAS2U,KAId,IAHAnZ,EAA0Be,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GAC7BqJ,EAAarJ,UAAAxB,OAAAwB,EAAAA,kBAAAvB,EACb8X,EAAQvW,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGkX,GAAAA;AAEX,MAAMmB,EAAKC,GAAmB;AAG9B,GADAjP,EAAOA,GAAQgP,EAAG9R,KAAK8C,MAAQgP,EAAG9R,KAAKgS,QAClClP,EACH,MAAM,IAAI+N,MAAM;AAGlB,MAAMoB,EAAoB7P,EAAQA,UAAC,IAAM4N,EAAS5W,QAAQV,EAAMwZ,KAAOpP,KACjEqP,EAAS,IAAIC,MAAM1Z,EAAO,CAC9B4H,IAAKf,EAAQrC,GACX,MAAMmV,EAAYC,QAAQhS,IAAIf,EAAQrC;AACtC,MAAa,UAATA,GAA6B,UAATA,EACf,CAAC+U,EAAkB7Y,QAAQ8D,GAAOmV,GAAWE,QAAO5Y,GAAU,MAALA,IACvC,iBAATuD,GAAsB0U,GAAcE,EAAGnR,MAAOzD,GAGzDmV,EAFEJ,EAAkB7Y,QAAQ8D,IAAS8S,EAAS5W,OAAOoZ,SAAStV,IAASmV,KAM5EI,EAAwB9M,EAAAA;AAU9B,SAAS+M,IACP,MAAMC,EAAWC,GAAWtC,GAAgBwB;AAC5CH,UAAQrB,GAAgBlO,EAAAA,UAAS,IACxBqQ,EAAsBrZ,MAAQiG,EACnCsT,GAAUvZ,OAAS,GACnBqZ,EAAsBrZ,OACpBuZ,GAAUvZ,SAIlB,OAnBAiJ,EAAAA,aAAY,KACV,GAAI4P,EAAkB7Y,MAAO,CAC3B,MAAMyZ,EAAgBpa,OAAOqa,QAAQb,EAAkB7Y,OAAOmZ,QAAOvL,IAAA,IAAE9K,GAAI8K;AAAA,OAAK9K,EAAImM,WAAWnM,EAAI,GAAGsS;AACtGiE,EAAsBrZ,MAAQyZ,EAAc5a,OAASQ,OAAOsa,YAAYF,QAAiB3a,OAEzFua,EAAsBrZ,WAAQlB,KAc3B,CAAEQ,MAAOyZ,EAAQO,mBAAAA,GCjCnB,SAASM,GAAiBvN,GAG/B,GAFAA,EAAQwN,OAASxN,EAAQwN,QAAUxN,EAAQyN,OAEtCzN,EAAQ3C,KAGX,OAFAqI,GAAY,oFAEL1F;AAGT,GAAIA,EAAQwN,OAAQ,CAClBxN,EAAQ/M,MAAQqX,GAAatK,EAAQ/M,OAAS,GAAI+M,EAAQ3C,KAA1CiN;AAChB,MAAMoD,EAAW1a,OAAOE,KAAK8M,EAAQ/M,OAAO6Z,QAAOrW,GAAe,UAARA,GAA2B,UAARA;AAC7EuJ,EAAQ2N,YAAc,SAAsB1a,GAC1C,OAAO0D,EAAK1D,EAAOya,IAGrB1N,EAAQ/M,MAAMwZ,IAAMjY,OACpBwL,EAAQyN,MAAQ,SAAgBxa,EAA4B2a,GAC1D,MAAMrD,EAAWW;AAGjB,IAAKX,EAAS5W,MAAO,OAAOqM,EAAQwN,OAAOva,EAAO2a;AAElD,MAAQ3a,MAAOyZ,EAAMO,mBAAEA,GAAuBb,GAAoBnZ,EAAOA,EAAMwZ,KAAOzM,EAAQ3C,KAAMkN,GAE9FsD,EAAgB7N,EAAQwN,OAAOd,EAAQkB;AAI7C,OAFAX,IAEOY,GAIX,OAAO7N,EA4HF,SAAS8N,KAAyC,IAAvBC,IAAc/Z,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,KAAAA,UAAA;AAC9C,OAAQgM,IAAmB+N,EAAiBR,GAAkBS,EAAgBT,iBAAUvN,GC5PnF,SAASiO,GACdC,GAGA,IAFAC,EAAGna,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,MACNqJ,EAAarJ,UAAAxB,OAAAwB,EAAAA,kBAAAvB;AAEb,OAAOqb,IAAAA,CAAmB,CACxBzQ,KAAMA,GAAQC,EAAAA,WAAW8Q,EAAQA,SAACF,EAAM5a,QAAQ,MAAO,OAEvDL,MAAO,CACLkb,IAAK,CACH5T,KAAM/F,OACNkW,QAASyD,MAGRxD,MAGL8C,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAO,IACE3D,EAACA,EAAC3K,EAAMkb,IAAK,CAClBvD,MAAO,CAACsD,EAAOjb,EAAM2X,OACrBzI,MAAOlP,EAAMkP,OACZkM,EAAM3D,gBCxBV,SAAS4D,GAAchU,GAE5B,GAAgC,mBAArBA,EAAKiU,YAA4B,CAE1C,KAAOjU,EAAKkU,YAAYlU,EAAOA,EAAKkU;AAGpC,OAAIlU,IAASmE,SAAiB,KAEvBA,SAGT,MAAMoN,EAAOvR,EAAKiU;AAGlB,OAAI1C,IAASpN,UAAYoN,EAAK0C,YAAY,CAAEE,UAAU,MAAYhQ,SAAiB,KAE5EoN,ECtBF,MAAM6C,GAAiB;ACKvB,SAASC,GACd1W,EACA2W,EACAC,GAEA,OAAO7b,OAAOE,KAAK+E,GAChB6U,QAAOrW,GAAOoB,EAAKpB,IAAQA,EAAIwR,SAAS2G,KACxCpE,QAAO,CAACsE,EAAUrY,KACjBqY,EAAIrY,EAAI4F,MAAM,GAAIuS,EAAOpc,SAAYuc,GAAiB9W,EAAMxB,GAAKsY,EAAOF,EAAQE,IACzED,IACN,ICRA,SAASxC,GAAoBjP,EAAcsI,GAChD,MAAM0G,EAAK2C,EAAAA;AAEX,IAAK3C,EACH,MAAM,IAAIjB,MAAO,aAAY/N,KAAQsI,GAAW;AAGlD,OAAO0G,EAGF,SAAS4C,KAA8C,IAAtB5R,EAAIrJ,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAC7C,MAAMqY,EAAKC,GAAmBjP,GAAM9C;AAEpC,OAAOI,EAAY0R,GAAI6C,WAAa7C,GAAIhP,MAG1C,IAAI8R,GAAO,EACPC,GAAO,IAAI1T;AACR,SAAS2T,KACd,MAAMhD,EAAKC,GAAmB;AAE9B,GAAI8C,GAAK5Y,IAAI6V,GAAK,OAAO+C,GAAKvU,IAAIwR;AAC7B,CACH,MAAMiD,EAAMH;AAEZ,OADAC,GAAKpU,IAAIqR,EAAIiD,GACNA,GChCJ,SAASC,GAAiB1a,GAAyC,IAAvB2a,EAAaxb,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,IAAAA,UAAA;AAC9D,KAAOa,GAAI,CACT,GAAI2a,EAAgBC,GAAwB5a,GAAM6a,GAAa7a,GAAK,OAAOA;AAC3EA,EAAKA,EAAG8a,cAGV,OAAOlR,SAASmR,iBAGX,SAASC,GAAkBhb,EAAqBib,GACrD,MAAM1R,EAA0B;AAEhC,GAAI0R,GAAUjb,IAAOib,EAAO7Q,SAASpK,GAAK,OAAOuJ;AAEjD,KAAOvJ,IACD6a,GAAa7a,IAAKuJ,EAASnC,KAAKpH,GAChCA,IAAOib,IACXjb,EAAKA,EAAG8a;AAGV,OAAOvR,EAGF,SAASsR,GAAc7a,GAC5B,IAAKA,GAAMA,EAAGE,WAAaC,KAAK+a,aAAc,OAAO;AAErD,MAAM5N,EAAQtQ,OAAOuQ,iBAAiBvN;AACtC,MAA2B,WAApBsN,EAAM6N,WAA+C,SAApB7N,EAAM6N,WAAwBnb,EAAGob,aAAepb,EAAGqb,aAG7F,SAAST,GAAyB5a,GAChC,IAAKA,GAAMA,EAAGE,WAAaC,KAAK+a,aAAc,OAAO;AAErD,MAAM5N,EAAQtQ,OAAOuQ,iBAAiBvN;AACtC,MAAO,CAAC,SAAU,QAAQmE,SAASmJ,EAAM6N,WC3BpC,SAAS7C,GAAY1W,GAAwE,IAAvC4V,EAAErY,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAA,GAAGsY,GAAmB;AACnF,MAAMhR,SAAEA,GAAa+Q;AAErB,GAAI/Q,GAAa7E,KAA2B6E,EAE1C,OAAOA,EAAS7E,GCNb,SAAS0Z,GAAWC,GACd9D,GAAmB,aAC3B8D,OAASA,EH2Bdf,GAAOzD,MAAQ,KACbuD,GAAO,EACPC,GAAO,IAAI1T;AIvBN,MAAM2U,GAAY,CAAC7b,OAAQ2I,SAAUnK,OAAQY,OAgEvC0c,GAAkDxF,OAAOC,IAAI,iBAE7DwF,GAAgBjG,GAAa,CACxCkG,KAAM,CACJjW,KAAM8V,IAGRlC,IAAK,CACH5T,KAAM/F,OACNic,UAAU,IAEX,QAEUC,GAAiB5C,IAAAA,CAAmB,CAC/CzQ,KAAM,iBAENpK,MAAOsd,KAEP9C,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAO,KACL,MAAMoP,EAAO1d,EAAMud;AACnB,OAAAI,cAAA3d,EAAAkb,IAAA,KAAA,CAAAzD,QAAAA,IAEMzX,CAAAA,EAAMud,KAAII,EAAAC,YAAAF,EAActC,KAAAA,MAAAA,EAAM3D,mBAQ7BoG,GAAWvD,GAAgB,CACtClQ,KAAM,WAEN0T,cAAc,EAEd9d,MAAOsd,KAEP9C,MAAOxa,EAAKgW,GAAa,IAAXhR,MAAEA,GAAOgR;AACrB,MAAO,IACL2H,EAAAC,YAAA5d,EAAAkb,IAAA6C,EAAAA,WACkB/Y,EAAK,CAAAkK,MAAW,OAAI,CAAAuI,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,cAAAqG,MAAA,6BAAAC,QAAA,YAAAC,KAAA,MAAA,cAAA,QAQ9Bvd,CAAAA,MAAMC,QAAQZ,EAAMud,MAClBvd,EAAMud,KAAKnW,KAAIhI,GACfuB,MAAMC,QAAQxB,GAAKue,EAAAC,YAAA,OAAA,CAAAO,EACL/e,EAAK,GAAE,eAA4BA,EAAK,IAAE,MAAAue,EAAAC,YAAA,OAAA,CAAAO,EAC1C/e,GACf,QAACue,EAAAC,YAAA,OAAA,CAAAO,EACUne,EAAMud,MAAwB,cAU3Ca,GAAgB9D,GAAgB,CAC3ClQ,KAAM,gBAENpK,MAAOsd,KAEP9C,MAAOxa,GACE,IACL2d,cAAA3d,EAAAkb,IAAA,KAAA,CAAAzD,QAAAA,IAAoBzX,CAAAA,EAAMud,UAMnBc,GAAa/D,GAAgB,CACxClQ,KAAM,aAENpK,MAAOsd,KAEP9C,MAAOxa,GACE,IACL2d,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAA0B3X,EAAMud,MAAI;AAkBnC,SAASe,GAAavR,GAC3B,MAAMwR,EAZC,CACLC,IAAK,CACHrW,UAAW0V,IAEblG,MAAO,CACLxP,UAAWkW,KAQTI,EAAa1R,GAAS0R,YAAc;AAM1C,MAJmB,QAAfA,GAAyBF,EAAKG,MAChCH,EAAKG,IAAMA,IAGN/X,EAAU,CACf8X,WAAAA,EACAF,KAAAA,EACAI,QAAS,IACJA,GAEHC,QAAS,CACP,qDACA,CAAC,yFAA0F,KAE7F,kBAAmB,gJACnB,eAAgB,CACd,uYACA,CAAC,qdAAsd,OAI1d7R,GAGE,MCxMD4R,GAAuB,CAC3BE,SAAU,iBACVC,SAAU,YACVC,OAAQ,mBACRC,MAAO,YACP1c,OAAQ,mBACR2c,MAAO,mBACPC,QAAS,mBACTC,KAAM,kBACNC,QAAS,mBACTC,MAAO,mBACPvG,KAAM,mBACNwG,KAAM,oBACNC,WAAY,sBACZC,YAAa,6BACbC,sBAAuB,gBACvBC,UAAW,aACXC,QAAS,eACTC,SAAU,iBACVC,OAAQ,mBACRC,KAAM,WACNC,SAAU,gBACVC,SAAU,gBACVC,QAAS,sBACTC,SAAU,qBACVC,KAAM,aACNC,YAAa,mBACbC,WAAY,WACZC,WAAY,qBACZC,QAAS,aACTxJ,MAAO,iBACPzX,KAAM,gBACNkhB,OAAQ,6BACRC,KAAM,gBACNC,KAAM,WACNC,MAAO,YACPC,SAAU,eACVC,iBAAkB,gBAClBC,eAAgB,iBAChBC,WAAY,kBAGRrC,GAAe,CAEnBvW,UAAYnI,GAAe2K,EAACA,EAAC0T,GAAY,IAAKre,EAAO2X,MAAO,SC/CjDqJ,GAAiB,CAC5B1J,SAAU,CACRwC,OAAQ,CACNmH,QAAS,MAEXC,QAAS,CACPD,QAAS,UAEXE,cAAe,CACbC,QAAS,cAEXC,QAAS,CACPpN,MAAO,WAETqN,KAAM,CACJrN,MAAO,UACPgN,QAAS,GAEXM,UAAW,CACTtN,MAAO,aAETuN,UAAW,CACTJ,QAAS,cAEXK,QAAS,CACPL,QAAS,cAEXM,QAAS,CACPzN,MAAO,WAET0N,MAAO,CACL1N,MAAO,WAET2N,UAAW,CACTR,QAAS,cAEXS,WAAY,CACVT,QAAS,cAEXU,SAAU,CACRR,KAAM,CACJrN,MAAO,QAIb8N,MAAO,CACLtD,WAAY,MACZF,KAAM,CACJG,IAAAA,KAGJsD,MAAO,CACLC,OAAQ,CACNC,MAAO,CACLC,OAAQ,CACNC,QAAS,UACT,mBAAoB,UACpB,oBAAqB,UACrBC,UAAW,UACX,qBAAsB,UACtB,sBAAuB,UACvBC,OAAQ,eC7DLC,GAAiB,CAC5BjL,SAAU,CACRwC,OAAQ,CACNmH,QAAS,MAEXC,QAAS,CACPD,QAAS,UAEXE,cAAe,CACbC,QAAS,UAEXC,QAAS,CACPpN,MAAO,WAETqN,KAAM,CACJrN,MAAO,WAETsN,UAAW,CACTtN,MAAO,aAETuN,UAAW,CACTJ,QAAS,UAEXK,QAAS,CACPL,QAAS,UAEXM,QAAS,CACPzN,MAAO,WAET0N,MAAO,CACL1N,MAAO,WAET2N,UAAW,CACTR,QAAS,UAEXS,WAAY,CACVT,QAAS,UAEXU,SAAU,CACRR,KAAM,CACJrN,MAAO,QAIb8N,MAAO,CACLtD,WAAY,MACZF,KAAM,CACJG,IAAAA,KAGJsD,MAAO,CACLC,OAAQ,CACNC,MAAO,CACLC,OAAQ,CACNC,QAAS,UACT,mBAAoB,UACpBC,UAAW,UACX,qBAAsB,UACtBhD,MAAO,eC1DJmD,GAAiB,CAC5BlL,SAAU,CACRmL,QAAS,CACPhb,MAAM,GAER0Z,cAAe,CACbC,QAAS,UAEXC,QAAS,CACPpN,MAAO,WAETyO,aAAc,CACZC,aAAc,gCAEhBrB,KAAM,CACJrN,MAAO,UACPgN,QAAS,MAEX2B,UAAW,CACT3B,QAAS,KACTK,KAAM,CAAEL,QAAS,OAEnB4B,MAAO,CACL5B,QAAS,MAEXM,UAAW,CACTtN,MAAO,YACP6O,OAAO,GAETC,MAAO,CACL9B,QAAS,MAEXO,UAAW,CACTJ,QAAS,UAEX4B,kBAAmB,GAQnBvB,QAAS,CACPL,QAAS,UAEXM,QAAS,CACPzN,MAAO,WAET0N,MAAO,CACL1N,MAAO,WAET2N,UAAW,CACTR,QAAS,UAEXS,WAAY,CACVT,QAAS,UAEXU,SAAU,CACRR,KAAM,CACJrN,MAAO,QAIb8N,MAAO,CACLtD,WAAY,MACZF,KAAM,CACJG,IAAAA,KAGJsD,MAAO,CACLC,OAAQ,CACNC,MAAO,CACLC,OAAQ,CACNC,QAAS,UACTC,UAAW,UACXY,SAAU,UACV5D,MAAO,UACP6D,QAAS;;ACtEZ,SAASC,GAAmBC,GAAuF,IAApDC,EAAyBtiB,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAChG,MAAMuiB,EAAYnW,KACZoW,EAAcvL,EAAAA;AAEpB,GAAIrZ,EAAY,CACd,MAAM6kB,EAAW,IAAIC,gBAAgBrJ,IACnCgJ,IAAWhJ,EAASoJ,GAEfpJ,EAAQ7a,SAGXgkB,EAAY7iB,MADF,YAAR2iB,EACkBjJ,EAAQ,GAAGmJ,YAEXnJ,EAAQ,GAAGvT,OAAOkI;AAI1C2U,EAAAA,iBAAgB,KACdF,EAASG,gBAGXC,EAAAA,OAAM,IAAMN,EAAU1hB,KAAI,CAACiiB,EAAUC,KAC/BA,IACFN,EAASO,UAAUD,GACnBP,EAAY7iB,WAAQlB,GAGlBqkB,GAAUL,EAASQ,QAAQH,KAC9B,CACDja,MAAO,SAIX,MAAO,CACL0Z,UAAAA,EACAC,YAAarW,EAAQA,SAACqW,ICenB,MAAMU,GAAgDpM,OAAOC,IAAI,kBAC3DoM,GAAqDrM,OAAOC,IAAI,uBAIhEqM,GAAkB9M,GAAa,CAC1C+M,SAAU,CACR9c,KAAM3G,MACN8W,QAASA,IAAO,IAElB4M,WAAYC,SACX,UAGUC,GAAsBlN,GAAa,CAC9CjN,KAAM,CACJ9C,KAAM/F,QAERijB,MAAO,CACLld,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXgN,SAAUH,SACT;AAEI,SAASI,KACd,MAAMC,EAASzM,SAAO+L;AAEtB,IAAKU,EAAQ,MAAM,IAAIxM,MAAM;AAI7B,MAAO,CACLyM,cAHoBC,EAAAA,WAIpBC,cAAeH,EAAOG,cACtBC,SAAUJ,EAAOI,SACjBC,WAAYL,EAAOK,YAIhB,SAASC,GAAelY,GAU7B,MAAM4X,EAASzM,SAAO+L;AAEtB,IAAKU,EAAQ,MAAM,IAAIxM,MAAM;AAE7B,MAAM+M,EAAKnY,EAAQmY,IAAO,eAAc9I,OAElChD,EAAKC,GAAmB;AAE9BJ,EAAAA,QAAQiL,GAAsB,CAAEgB,GAAAA;AAEhC,MAAMC,EAAclY,cAAW;AAC/BmY,EAAAA,eAAc,IAAMD,EAAYzkB,OAAQ,IACxC2kB,EAAAA,aAAY,IAAMF,EAAYzkB,OAAQ;AAEtC,MAAMkkB,EAAgBC,EAAAA,YAEhBS,iBACJA,EAAgBC,sBAChBA,GACEZ,EAAOa,SAASpM,EAAI,IACnBrM,EACH0Y,OAAQ/b,EAAAA,UAAS,KAAMyb,EAAYzkB,OAAgBqM,EAAQ0Y,OAAO/kB,QAClEwkB,GAAAA;AAKF,OAFAxB,EAAAA,iBAAgB,IAAMiB,EAAOe,WAAWR,KAEjC,CAAEI,iBAAAA,EAAkBK,WAAYhB,EAAOgB,WAAYJ,sBAAAA,EAAuBX,cAAAA,GAiC5E,SAASgB,GAAc5lB,GAC5B,MAAM6lB,EAAe3N,EAAAA,OAAO+L,GAAkB,MACxC6B,EAAapc,YAAS,IAAMmc,EAAeA,EAAaC,WAAWplB,MAAQ,IA7G/D,MA8GZqlB,EAAa/N,MAAc,IAC3BgO,EAAYvc,EAAAA,SAAS,IAAIlB,KACzB0d,EAAcxc,EAAAA,SAAS,IAAIlB,KAC3B2d,EAAazc,EAAAA,SAAS,IAAIlB,KAC1B4d,EAAc1c,EAAAA,SAAS,IAAIlB,KAC3B6d,EAAsB3c,EAAAA,SAAS,IAAIlB,MACnC+a,UAAEA,EAAWC,YAAaoC,GAAexC,KAEzCkD,EAASxZ,IAAc,KAC3B,MAAMyZ,EAAmB,IAAI,IAAIziB,IAAI,IAAIqiB,EAAW/c,UAAU/B,KAAIjH,GAAKA,EAAEO,UAAS6lB,MAAK,CAAC5mB,EAAGC,IAAMD,EAAIC,IAC/F+kB,EAAS;AACf,IAAK,MAAMxkB,KAAKmmB,EAAkB,CAChC,MAAME,EAAQT,EAAWrlB,MAAMmZ,QAAOqL,GAAMgB,EAAWte,IAAIsd,IAAKxkB,QAAUP;AAC1EwkB,EAAO3b,QAAQwd,GAEjB,MAhDmBC,EACrB9B,EACAqB,EACAC,EACAE,KAEA,IAAIO,EAAuB,CAAE1Y,IAAK,EAAGrL,KAAM,EAAGC,MAAO,EAAGqL,OAAQ;AAChE,MAAMoY,EAAS,CAAC,CAAEnB,GAAI,GAAIyB,MAAO,IAAKD;AACtC,IAAK,MAAMxB,KAAMP,EAAQ,CACvB,MAAMiC,EAAWZ,EAAUpe,IAAIsd,GACzBzO,EAASwP,EAAYre,IAAIsd,GACzBO,EAASU,EAAYve,IAAIsd;AAC/B,IAAK0B,IAAanQ,IAAWgP,EAAQ;AAErC,MAAMkB,EAAQ,IACTD,EACH,CAACE,EAASlmB,OAAQyU,SAASuR,EAAcE,EAASlmB,OAAQ,KAAO+kB,EAAO/kB,MAAQyU,SAASsB,EAAO/V,MAAO,IAAM;AAG/G2lB,EAAOrd,KAAK,CACVkc,GAAAA,EACAyB,MAAAA,IAGFD,EAAgBC,EAGlB,OAAON,GAqBEI,CAAe9B,EAAQqB,EAAWC,EAAaE,MAGlDU,EAAqBnd,EAAAA,UAAS,KAC1B/I,MAAMK,KAAKolB,EAAoBjd,UAAUjF,MAAK8T,GAAOA,EAAItX,UAG7DqkB,EAAWrb,EAAAA,UAAS,IACjB2c,EAAO3lB,MAAM2lB,EAAO3lB,MAAMnB,OAAS,GAAGonB,QAGzC3B,EAAatb,EAAAA,UAAwB,KAClC,CACL,kBAAmBvI,EAAc4jB,EAASrkB,MAAMiC,MAChD,mBAAoBxB,EAAc4jB,EAASrkB,MAAMkC,OACjD,iBAAkBzB,EAAc4jB,EAASrkB,MAAMsN,KAC/C,oBAAqB7M,EAAc4jB,EAASrkB,MAAMuN,WAC9C4Y,EAAmBnmB,WAAQlB,EAAY,CAAEsnB,WAAY,YAIvDN,EAAQ3Z,IAAc,IACnBwZ,EAAO3lB,MAAM0I,MAAM,GAAGhC,KAAI,CAAAkH,EAAS6H,KAAU,IAAlB+O,GAAEA,GAAI5W;AACtC,MAAMqY,MAAEA,GAAUN,EAAO3lB,MAAMyV,GACzBtN,EAAOod,EAAYre,IAAIsd,GACvB0B,EAAWZ,EAAUpe,IAAIsd;AAE/B,MAAO,CACLA,GAAAA,KACGyB,EACH9d,KAAMpH,OAAOoH,EAAMnI,OACnBkmB,SAAUA,EAAUlmB,YAKpBokB,EAAiBI,GACdsB,EAAM9lB,MAAMqmB,MAAKvmB,GAAQA,EAAK0kB,KAAOA,IAGxC8B,EAAS3N,GAAmB,gBAE5BuL,EAAgBC,EAAAA;AAEtB5L,EAAAA,QAAQgL,GAAkB,CACxBuB,SAAUA,CACRpM,EAA6BpD,KAW1B,IAVHkP,GACEA,EAAEV,MACFA,EAAKoC,SACLA,EAAQK,WACRA,EAAUC,YACVA,EAAWzB,OACXA,EAAM0B,mBACNA,EAAkB1C,SAClBA,GACDzO;AAEDkQ,EAAWne,IAAImd,EAAIV,GACnBwB,EAAUje,IAAImd,EAAI0B,GAClBX,EAAYle,IAAImd,EAAI+B,GACpBd,EAAYpe,IAAImd,EAAIO,GACpB0B,GAAsBf,EAAoBre,IAAImd,EAAIiC;AAElD,MACMC,EADYpf,EAAwBkc,GAAsB8C,GAAQ/e,OACxCjC,QAAQoT;AAEpCgO,GAAiB,EAAGrB,EAAWrlB,MAAM2mB,OAAOD,EAAe,EAAGlC,GAC7Da,EAAWrlB,MAAMsI,KAAKkc;AAE3B,MAAM/O,EAAQzM,EAAAA,UAAS,IAAM8c,EAAM9lB,MAAM4mB,WAAU7nB,GAAKA,EAAEylB,KAAOA,MAC3DqC,EAAS7d,EAAQA,UAAC,IAAMoc,EAAWplB,MAA+B,EAAtB2lB,EAAO3lB,MAAMnB,OAA6B,EAAd4W,EAAMzV;AA4CpF,MAAO,CAAE4kB,iBA1CgB5b,EAAAA,UAAwB,KAC/C,MAAM8d,EAAkC,SAAnBZ,EAASlmB,OAAuC,UAAnBkmB,EAASlmB,MACrD+mB,EAA0C,UAAnBb,EAASlmB,MAChCgnB,EAAwC,WAAnBd,EAASlmB,MAC9BmI,EAAOqe,EAAYxmB,OAASumB,EAAWvmB,MACvCW,EAAgB,IAATwH,EAAa,IAAM,KAE1B8e,EAAS,CACb,CAACf,EAASlmB,OAAQ,EAClB6mB,OAAQA,EAAO7mB,MACf2O,UAAY,YAAWmY,EAAe,IAAM,QAAQ/B,EAAO/kB,MAAQ,IAAe,IAATmI,EAAa,IAAMA,KAAU4e,GAAwBC,GAAsB,EAAI,KAAKrmB,KAC7JulB,SAAUnC,EAAS/jB,OAjNT,MAiNkBolB,EAAWplB,MAAwB,WAAa,WACxEmmB,EAAmBnmB,WAAQlB,EAAY,CAAEsnB,WAAY;AAG3D,GAAI3Q,EAAMzV,MAAQ,EAAG,MAAM,IAAIyX,MAAO,gBAAe+M;AAErD,MAAM1kB,EAAOgmB,EAAM9lB,MAAMyV,EAAMzV;AAE/B,IAAKF,EAAM,MAAM,IAAI2X,MAAO,yCAAwC+M;AAEpE,MAAO,IACFyC,EACHjZ,OACE8Y,EAAgB,eAAchnB,EAAKwN,WAAWxN,EAAKyN,YACjDiZ,EAAYxmB,MAAS,GAAEwmB,EAAYxmB,eACnClB,EACJmD,KAAM8kB,OAAuBjoB,EAAa,GAAEgB,EAAKmC,SACjDC,MAAO6kB,EAAwB,GAAEjnB,EAAKoC,eAAYpD,EAClDwO,IAAwB,WAAnB4Y,EAASlmB,MAAsB,GAAEF,EAAKwN,aAAUxO,EACrDyO,OAA2B,QAAnB2Y,EAASlmB,MAAmB,GAAEF,EAAKyN,gBAAazO,EACxDiP,MACG+Y,EACCN,EAAYxmB,MAAS,GAAEwmB,EAAYxmB,eACnClB,EAFe,eAAcgB,EAAKmC,YAAYnC,EAAKoC,eAUhC2iB,sBAJG7b,EAAAA,UAAwB,KAAO,CAC3D6d,OAAQA,EAAO7mB,MAAQ,MAGyB6mB,OAAAA,IAEpD7B,WAAaR,IACXgB,EAAW5jB,OAAO4iB,GAClBc,EAAU1jB,OAAO4iB,GACjBe,EAAY3jB,OAAO4iB,GACnBiB,EAAY7jB,OAAO4iB,GACnBkB,EAAoB9jB,OAAO4iB,GAC3Ba,EAAWrlB,MAAQqlB,EAAWrlB,MAAMmZ,QAAO5Y,GAAKA,IAAMikB,KAExDH,SAAAA,EACAC,WAAAA,EACAF,cAAAA,EACA0B,MAAAA,EACAb,WAAAA,EACAG,WAAAA,EACAlB,cAAAA;AAcF,MAAO,CACLgD,cAZoBle,EAAAA,UAAS,IAAM,CACnC,WACA,CAAE,wBAAyB1J,EAAMqkB,eAWjCwD,aARmBne,EAAAA,UAAS,KAAO,CACnC6d,OAAQ1B,EAAeC,EAAWplB,WAAQlB,EAC1ConB,SAAUf,EAAe,gBAAsBrmB,EAC/CsoB,SAAUjC,EAAe,cAAWrmB,MAMpCslB,cAAAA,EACA0B,MAAAA,EACAb,WAAAA,EACAf,cAAAA,EACAmD,UAAWzE,GClVR,SAAS0E,GAAgBphB,EAA8BkG,GAC5D,IAAImb;AACJ,SAASnnB,IACPmnB,EAAQC,EAAWA,cACnBD,EAAME,KAAI,IAAMrb,EAAGvN,OACfuN,GAAG,KAAQmb,GAAOG,OAAQtnB,OACzBgM,MAIP8W,EAAKA,MAAChd,GAAQ6e,IACRA,IAAWwC,EACbnnB,IACU2kB,IACVwC,GAAOG,OACPH,OAAQzoB,KAET,CAAE6oB,WAAW,IAEhBC,EAAAA,gBAAe,KACbL,GAAOG,UCZJ,SAASG,GAKdvoB,EACAwE,EACAgkB,GAGA,IAFAC,EAA2C1nB,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAIE,GAAAA,GAAWA,EAC1DynB,EAA2C3nB,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAIE,GAAAA,GAAWA;AAE1D,MAAMmY,EAAKC,GAAmB,mBACxBsP,EAAW3Q,WAAoBxY,IAAhBQ,EAAMwE,GAAsBxE,EAAMwE,GAAQgkB,GACzDI,EAAYlhB,EAAYlD,GACxBqkB,EAAaD,IAAcpkB,EAE3BskB,EAAeD,EACjBnf,EAAAA,UAAS,KACJ1J,EAAMwE,MAER4U,EAAGnR,MAAMjI,OAAOyD,eAAee,KAAS4U,EAAGnR,MAAMjI,OAAOyD,eAAemlB,KACvExP,EAAGnR,MAAMjI,OAAOyD,eAAgB,YAAWe,OAAW4U,EAAGnR,MAAMjI,OAAOyD,eAAgB,YAAWmlB,SAGpGlf,EAAQA,UAAC,KACJ1J,EAAMwE,MACD4U,EAAGnR,MAAMjI,OAAOyD,eAAee,KAAS4U,EAAGnR,MAAMjI,OAAOyD,eAAgB,YAAWe;AAGjGwjB,IAAe,KAAOc,EAAapoB,QAAO,KACxCkjB,EAAAA,OAAM,IAAM5jB,EAAMwE,KAAOyE,IACvB0f,EAASjoB,MAAQuI;AAIrB,MAAM8f,EAAQrf,EAAAA,SAAS,CACrB9B,MACE,MAAMohB,EAAgBhpB,EAAMwE;AAC5B,OAAOikB,EAAYK,EAAapoB,MAAQsoB,EAAgBL,EAASjoB,QAEnEqH,IAAKkhB,GACH,MAAMpF,EAAW6E,EAAaO,GACxBvoB,EAAQwoB,QAAMJ,EAAapoB,MAAQV,EAAMwE,GAAQmkB,EAASjoB;AAC5DA,IAAUmjB,GAAY4E,EAAY/nB,KAAWuoB,IAGjDN,EAASjoB,MAAQmjB,EACjBzK,GAAI+P,KAAM,UAAS3kB,IAAQqf;AAQ/B,OAJA9jB,OAAOqN,eAAe2b,EAAO,gBAAiB,CAC5CnhB,IAAKA,IAAMkhB,EAAapoB,MAAQV,EAAMwE,GAAQmkB,EAASjoB,QAGlDqoB,ECrEM,IAAAK,GAAA,CACbC,MAAO,QACPC,KAAM,OACNtK,MAAO,QACPuK,QAAS,UACTC,YAAa,CACXC,GAAI,KACJ1K,OAAQ,UAEV2K,aAAc,CACZC,cAAe,4BACfC,YAAa,oBAEfC,UAAW,CACTC,iBAAkB,iBAClBC,UAAW,CACTC,eAAgB,qBAChBC,cAAe,oBACfC,SAAU,cACVC,aAAc,8BACdC,mBAAoB,+BACpBC,kBAAmB,+BAErBC,OAAQ,WAEVC,WAAY,CACVT,iBAAkB,kBAClBU,gBAAiB,MACjBC,SAAU,YACVC,SAAU,gBACVC,UAAW,aACXC,SAAU,YACVC,SAAU,kBAEZC,eAAgB,CACdC,QAAS,MAEXC,WAAY,CACVC,cAAe,eACfC,MAAO,CACLC,MAAO,eACPC,OAAQ,eAEVD,MAAO,cACPC,OAAQ,aACRC,MAAO,CACLC,YAAa,eAGjBC,WAAY,oBACZC,SAAU,CACR1S,KAAM,kBACNwG,KAAM,cACNyK,UAAW,CACTrK,UAAW,8BAGfkB,SAAU,CACR6K,WAAY,WACZC,MAAO,SAETL,MAAO,CACLpM,MAAO,YACP0M,cAAe,uBACfC,aAAc,sBACdC,IAAK,kCAEPC,UAAW,CACTC,QAAS,YACTC,YAAa,4BAEfC,WAAY,CACVC,GAAI,KACJC,GAAI,KACJhB,MAAO,eAETiB,WAAY,CACVrC,UAAW,CACTnR,KAAM,wBACN0G,KAAM,YACN+M,SAAU,gBACVC,KAAM,iBACNC,YAAa,yBACbxV,MAAO,aACPzX,KAAM,cAGVktB,QAAS,CACPlN,KAAM,OACNxG,KAAM,YAER2T,OAAQ,CACN1C,UAAW,CACTvpB,KAAM,sBAGV+f,QAAS,aACTmM,eAAgB,CACdC,SAAU,YACVC,MAAO;ACrFX,MAAMC,GAAc,YAEdxsB,GAAUA,CAACe,EAAa0rB,IACrB1rB,EAAIf,QAAQ,cAAc,CAACyU,EAAeqB,IACxC5U,OAAOurB,GAAQ3W,MAIpB4W,GAA0BA,CAC9BC,EACA3tB,EACA4tB,IAEO,SAACzpB,GAAsC,IAAA0pB,IAAAA,EAAAnsB,UAAAxB,OAAtButB,MAAMnsB,MAAAusB,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANL,EAAMK,EAAApsB,GAAAA,UAAAosB;AAC5B,IAAK3pB,EAAImM,WAAWkd,IAClB,OAAOxsB,GAAQmD,EAAKspB;AAGtB,MAAMM,EAAW5pB,EAAInD,QAAQwsB,GAAa,IACpCQ,EAAgBL,EAAQtsB,OAASusB,EAASvsB,MAAMssB,EAAQtsB,OACxD4sB,EAAiBjuB,EAASqB,OAASusB,EAASvsB,MAAMrB,EAASqB;AAEjE,IAAIU,EAAchB,EAAqBitB,EAAeD,EAAU;AAiBhE,OAfKhsB,IACHqR,GAAa,oBAAmBjP,oBAAsBwpB,EAAQtsB,kCAC9DU,EAAMhB,EAAqBktB,EAAgBF,EAAU,OAGlDhsB,IACHwR,GAAc,oBAAmBpP,4BACjCpC,EAAMoC,GAGW,iBAARpC,IACTwR,GAAc,oBAAmBpP,6BACjCpC,EAAMoC,GAGDnD,GAAQe,EAAK0rB;AAIxB,SAASS,GAAsBP,EAAsB3tB,GACnD,MAAO,CAACqB,EAAeqM,IACA,IAAIygB,KAAKC,aAAa,CAACT,EAAQtsB,MAAOrB,EAASqB,OAAQqM,GAExD2gB,OAAOhtB,GAI/B,SAASitB,GAAiB3tB,EAAYwE,EAAcopB,GAClD,MAAMjF,EAAWJ,GAAgBvoB,EAAOwE,EAAMxE,EAAMwE,IAASopB,EAASltB;AAWtE,OARAioB,EAASjoB,MAAQV,EAAMwE,IAASopB,EAASltB,MAEzCkjB,EAAKA,MAACgK,GAAU3sB,IACK,MAAfjB,EAAMwE,KACRmkB,EAASjoB,MAAQktB,EAASltB,UAIvBioB,EAGT,SAASkF,GAAuBC,GAC9B,OAAQ9tB,IACN,MAAMgtB,EAAUW,GAAY3tB,EAAO,SAAU8tB,EAAMd,SAC7C3tB,EAAWsuB,GAAY3tB,EAAO,WAAY8tB,EAAMzuB,UAChD4tB,EAAWU,GAAY3tB,EAAO,WAAY8tB,EAAMb;AAEtD,MAAO,CACL7iB,KAAM,UACN4iB,QAAAA,EACA3tB,SAAAA,EACA4tB,SAAAA,EACAla,EAAGga,GAAwBC,EAAS3tB,EAAU4tB,GAC9Ctc,EAAG4c,GAAqBP,EAAS3tB,GACjC4Z,QAAS4U,GAAsB,CAAEb,QAAAA,EAAS3tB,SAAAA,EAAU4tB,SAAAA,MCjEnD,MAAMc,GAA2DlW,OAAOC,IAAI;AAM5E,SAASkW,GAAcjhB,GAC5B,MAAMkhB,EAAOlhB,GAASmhB,UALG/uB,EAKyB4N,GAASmhB,QAJxC,MAAZ/uB,EAAIiL,MAI2D2C,GAASmhB,QD+D1E,SAA+BnhB,GACpC,MAAMigB,EAAU/f,EAAUA,WAACF,GAASohB,QAAU,MACxC9uB,EAAW4N,EAAUA,WAACF,GAAS1N,UAAY,MAC3C4tB,EAAWjV,EAAAA,IAAI,CAAEoR,GAAAA,MAAOrc,GAASkgB;AAEvC,MAAO,CACL7iB,KAAM,UACN4iB,QAAAA,EACA3tB,SAAAA,EACA4tB,SAAAA,EACAla,EAAGga,GAAwBC,EAAS3tB,EAAU4tB,GAC9Ctc,EAAG4c,GAAqBP,EAAS3tB,GACjC4Z,QAAS4U,GAAsB,CAAEb,QAAAA,EAAS3tB,SAAAA,EAAU4tB,SAAAA,KC3EmCmB,CAAqBrhB;AALhH,IAA2B5N;AAMzB,MAAMkvB,EA6FD,SAAoBJ,EAAsBlhB,GAC/C,MAAMshB,EAAMrW,EAAAA,IAA6BjL,GAASshB,KA/C3C,CACLC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJhtB,IAAI,EACJwnB,IAAI,EACJyF,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJlK,IAAI,EACJmK,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EACRC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,QAAQ,IAMJljB,EAAQhE,YAAS,IAAM2kB,EAAI3tB,MAAMutB,EAAKjB,QAAQtsB,SAAU;AAE9D,MAAO,CACLgN,MAAAA,EACA2gB,IAAAA,EACAwC,WAAYnnB,EAAAA,UAAS,IAAO,iBAAegE,EAAMhN,MAAQ,MAAQ,UApGvDowB,CAAU7C,EAAMlhB;AAE5B,MAAO,IAAKkhB,KAASI,GAGhB,SAAS0C,KACd,MAAM5C,EAASjW,SAAO6V;AAEtB,IAAKI,EAAQ,MAAM,IAAIhW,MAAM;AAE7B,OAAOgW,EAGF,SAAS6C,GAAehxB,GAC7B,MAAMmuB,EAASjW,SAAO6V;AAEtB,IAAKI,EAAQ,MAAM,IAAIhW,MAAM;AAE7B,MAAM8V,EAAOE,EAAOlV,QAAQjZ,GACtBquB,EAqFD,SAAqBF,EAAwBE,EAAyBruB,GAC3E,MAAM0N,EAAQhE,EAAAA,UAAS,IAAM1J,EAAMquB,KAAOA,EAAI3tB,MAAMytB,EAAOnB,QAAQtsB,SAAU;AAE7E,MAAO,CACLgN,MAAAA,EACA2gB,IAAAA,EACAwC,WAAYnnB,EAAAA,UAAS,IAAO,iBAAegE,EAAMhN,MAAQ,MAAQ,UA3FvDuwB,CAAWhD,EAAME,EAAOE,IAAKruB,GAEnCkxB,EAAO,IAAKjD,KAASI;AAI3B,OAFApV,UAAQ8U,GAAcmD,GAEfA,EAyFF,SAASC,KACd,MAAMhD,EAASjW,SAAO6V;AAEtB,IAAKI,EAAQ,MAAM,IAAIhW,MAAM;AAE7B,MAAO,CAAEzK,MAAOygB,EAAOzgB,MAAOmjB,WAAY1C,EAAO0C,YCtD5C,MAAMO,GAA2CvZ,OAAOC,IAAI,iBAEtDuZ,GAAiBha,GAAa,CACzC2K,MAAOzgB,QACN;AAyGI,SAAS+vB,GAAavkB,GAC3B,MAAMwkB,EArBR,WAAyF,IAA7DxkB,EAAqBhM,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGywB,GAlF3C,CACLC,aAAc,QACdC,WAAY,CAAEvP,OAAQ,GAAI3L,QAAS,EAAGI,OAAQ,GAC9CqL,OAAQ,CACNC,MAAO,CACLyP,MAAM,EACNxP,OAAQ,CACNvQ,WAAY,UACZsR,QAAS,UACT,iBAAkB,UAClB,gBAAiB,UACjB,kBAAmB,UACnB,qBAAsB,UACtBd,QAAS,UACT,mBAAoB,UACpBC,UAAW,UACX,qBAAsB,UACtBhD,MAAO,UACPF,KAAM,UACND,QAAS,UACTE,QAAS,WAEXwS,UAAW,CACT,eAAgB,UAChB,iBAAkB,IAClB,wBAAyB,IACzB,0BAA2B,GAC3B,mBAAoB,IACpB,eAAgB,IAChB,gBAAiB,IACjB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,IACrB,kBAAmB,IACnB,kBAAmB,IACnB,YAAa,UACb,eAAgB,UAChB,aAAc,UACd,gBAAiB,YAGrBD,KAAM,CACJA,MAAM,EACNxP,OAAQ,CACNvQ,WAAY,UACZsR,QAAS,UACT,iBAAkB,UAClB,gBAAiB,UACjB,kBAAmB,UACnB,qBAAsB,UACtBd,QAAS,UACT,mBAAoB,UACpBC,UAAW,UACX,qBAAsB,UACtBhD,MAAO,UACPF,KAAM,UACND,QAAS,UACTE,QAAS,WAEXwS,UAAW,CACT,eAAgB,UAChB,iBAAkB,IAClB,wBAAyB,EACzB,0BAA2B,GAC3B,mBAAoB,GACpB,eAAgB,GAChB,gBAAiB,IACjB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,IACrB,kBAAmB,IACnB,kBAAmB,IACnB,YAAa,UACb,eAAgB,UAChB,aAAc,UACd,gBAAiB;AAQzB,MAAMta,EAnFC,CACLma,aAAc,QACdC,WAAY,CAAEvP,OAAQ,GAAI3L,QAAS,EAAGI,OAAQ,GAC9CqL,OAAQ,CACNC,MAAO,CACLyP,MAAM,EACNxP,OAAQ,CACNvQ,WAAY,UACZsR,QAAS,UACT,iBAAkB,UAClB,gBAAiB,UACjB,kBAAmB,UACnB,qBAAsB,UACtBd,QAAS,UACT,mBAAoB,UACpBC,UAAW,UACX,qBAAsB,UACtBhD,MAAO,UACPF,KAAM,UACND,QAAS,UACTE,QAAS,WAEXwS,UAAW,CACT,eAAgB,UAChB,iBAAkB,IAClB,wBAAyB,IACzB,0BAA2B,GAC3B,mBAAoB,IACpB,eAAgB,IAChB,gBAAiB,IACjB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,IACrB,kBAAmB,IACnB,kBAAmB,IACnB,YAAa,UACb,eAAgB,UAChB,aAAc,UACd,gBAAiB,YAGrBD,KAAM,CACJA,MAAM,EACNxP,OAAQ,CACNvQ,WAAY,UACZsR,QAAS,UACT,iBAAkB,UAClB,gBAAiB,UACjB,kBAAmB,UACnB,qBAAsB,UACtBd,QAAS,UACT,mBAAoB,UACpBC,UAAW,UACX,qBAAsB,UACtBhD,MAAO,UACPF,KAAM,UACND,QAAS,UACTE,QAAS,WAEXwS,UAAW,CACT,eAAgB,UAChB,iBAAkB,IAClB,wBAAyB,EACzB,0BAA2B,GAC3B,mBAAoB,GACpB,eAAgB,GAChB,gBAAiB,IACjB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,IACrB,kBAAmB,IACnB,kBAAmB,IACnB,YAAa,UACb,eAAgB,UAChB,aAAc,UACd,gBAAiB;AAUzB,IAAK7kB,EAAS,MAAO,IAAKuK,EAAUua,YAAY;AAEhD,MAAM5P,EAAkD;AACxD,IAAK,MAAOze,EAAKwe,KAAUjiB,OAAOqa,QAAQrN,EAAQkV,QAAU,IAAK,CAC/D,MAAMwP,EAAezP,EAAM2P,MAAgB,SAARnuB,EAC/B8T,EAAS2K,QAAQ0P,KACjBra,EAAS2K,QAAQC;AACrBD,EAAOze,GAAOmD,EAAU8qB,EAAczP,GAGxC,OAAOrb,EACL2Q,EACA,IAAKvK,EAASkV,OAAAA,IAMM6P,CAAkB/kB,GAClC3C,EAAO4N,EAAAA,IAAIuZ,EAAcE,cACzBxP,EAASjK,EAAAA,IAAIuZ,EAActP,QAE3B8P,EAAiBroB,EAAAA,UAAS,KAC9B,MAAMmS,EAA+C;AACrD,IAAK,MAAOzR,EAAM4nB,KAAajyB,OAAOqa,QAAQ6H,EAAOvhB,OAAQ,CAC3D,MAAMshB,EAAiCnG,EAAIzR,GAAQ,IAC9C4nB,EACH7P,OAAQ,IACH6P,EAAS7P;AAIhB,GAAIoP,EAAcG,WAChB,IAAK,MAAMtnB,KAAQmnB,EAAcG,WAAWvP,OAAQ,CAClD,MAAMlO,EAAQ+N,EAAMG,OAAO/X;AAE3B,GAAK6J,EAEL,IAAK,MAAMge,IAAc,CAAC,UAAW,UAAqB,CACxD,MAAMnlB,EAAmB,YAAdmlB,EAA0Bzb,GAAUI;AAC/C,IAAK,MAAMH,KAAU5V,EAAY0wB,EAAcG,WAAWO,GAAY,GACpEjQ,EAAMG,OAAQ,GAAE/X,KAAQ6nB,KAAaxb,KAAYV,GAASjJ,EAAG8H,GAAWX,GAAQwC,KAMxF,IAAK,MAAMxC,KAASlU,OAAOE,KAAK+hB,EAAMG,QAAS,CAC7C,GAAI,YAAY/d,KAAK6P,IAAU+N,EAAMG,OAAQ,MAAKlO,KAAU;AAE5D,MAAMie,EAAW,MAAKje,IAChBke,EAAWvd,GAAWoN,EAAMG,OAAOlO;AAEzC+N,EAAMG,OAAO+P,GAAW/a,GAAcgb,IAI1C,OAAOtW,KAEHmR,EAAUtjB,EAAAA,UAAS,IAAMqoB,EAAerxB,MAAM0J,EAAK1J,SAEnDinB,EAASje,EAAAA,UAAS,KACtB,MAAM0oB,EAAkB;AAEpBpF,EAAQtsB,OAAOixB,MACjBU,GAAeD,EAAO,QAAS,CAAC,uBAGlCC,GAAeD,EAAO,QAASE,GAAgBtF,EAAQtsB;AAEvD,IAAK,MAAO6xB,EAAWvQ,KAAUjiB,OAAOqa,QAAQ2X,EAAerxB,OAC7D2xB,GAAeD,EAAQ,aAAYG,IAAa,CAC7C,kBAAgBvQ,EAAM2P,KAAO,OAAS,aACpCW,GAAgBtQ;AAIvB,MAAMwQ,EAAoB,GACpBC,EAAoB,GAEpBtQ,EAAS,IAAIte,IAAI9D,OAAOoJ,OAAO4oB,EAAerxB,OAAOgyB,SAAQ1Q,GAASjiB,OAAOE,KAAK+hB,EAAMG;AAC9F,IAAK,MAAM3e,KAAO2e,EACZ,YAAY/d,KAAKZ,GACnB6uB,GAAeI,EAAU,IAAGjvB,IAAO,CAAE,4BAA2BA,oBAEhE6uB,GAAeG,EAAU,OAAMhvB,IAAO,CACnC,+CAA8CA,wBAC9C,uCAAsCA,iBACtC,+BAA8BA,mBAEjC6uB,GAAeI,EAAU,SAAQjvB,IAAO,CAAE,4BAA2BA,mBACrE6uB,GAAeI,EAAU,WAAUjvB,IAAO,CAAE,mCAAkCA;AAMlF,OAFA4uB,EAAMppB,QAAQwpB,KAAYC,GAEnBL,EAAMhrB,KAAI,CAAChG,EAAK3B,IAAY,IAANA,EAAU2B,EAAO,OAAMA,MAAO4J,KAAK;AAGlE,SAAS2nB,IACP,MAAO,CACLzjB,MAAO,CAAC,CACN1H,SAAUmgB,EAAOjnB,MACjBwkB,GAAI,2BACJ0N,MAAOrB,EAAcsB,WAAY,KAkDvC,MAAMC,EAAeppB,EAAAA,UAAS,IAAM6nB,EAAcM,gBAAaryB,EAAa,YAAW4K,EAAK1J;AAE5F,MAAO,CACLqyB,QAhDF,SAAkBC,GAChB,GAAIzB,EAAcM,WAAY;AAE9B,MAAMoB,EAAOD,EAAIE,SAAS7qB,SAAS8qB;AACnC,GAAIF,EACF,GAAIA,EAAKjqB,KAAM,CACb,MAAMoqB,EAAQH,EAAKjqB,KAAK2pB;AACpBh0B,GACFilB,EAAKA,MAAC+D,GAAQ,KAAQyL,EAAMC,MAAMV,WAGhCh0B,GACFs0B,EAAKK,YAAY5pB,WAASipB,IAC1BhpB,EAAAA,aAAY,IAAMspB,EAAKM,eAEvBN,EAAKK,YAAYX;IAGhB,CACL,IAAIa,EAAU70B,EACV6M,SAASioB,eAAe,4BACxB;AAQJ,SAASC,IACP,GAAwB,oBAAbloB,WAA6BgoB,EAAS,CAC/C,MAAM5xB,EAAK4J,SAASmoB,cAAc;AAClC/xB,EAAG0F,KAAO,WACV1F,EAAGsjB,GAAK,2BACJqM,EAAcsB,UAAUjxB,EAAGqP,aAAa,QAASsgB,EAAcsB,UAEnEW,EAAU5xB,EACV4J,SAASynB,KAAKW,YAAYJ,GAGxBA,IAASA,EAAQK,UAAYlM,EAAOjnB,OAjBtC/B,EACFilB,EAAKA,MAAC+D,EAAQ+L,EAAc,CAAErL,WAAW,IAEzCqL,MAuBJ7B,WAAYN,EAAcM,WAC1BznB,KAAAA,EACA6X,OAAAA,EACA+K,QAAAA,EACA+E,eAAAA,EACAe,aAAAA,EACAnL,OAAAA,EACA7N,OAAQ,CACN1P,KAAAA,EACA4iB,QAAAA,IAKC,SAAS8G,GAAc9zB,GAC5BqZ,GAAmB;AAEnB,MAAM2I,EAAQ9J,EAAAA,OAAOkZ,GAAa;AAElC,IAAKpP,EAAO,MAAM,IAAI7J,MAAM;AAE5B,MAAM/N,EAAOV,EAAAA,UAAiB,IACrB1J,EAAMgiB,OAASA,EAAM5X,KAAK1J,QAE7BssB,EAAUtjB,EAAQA,UAAC,IAAMsY,EAAMC,OAAOvhB,MAAM0J,EAAK1J,SAEjDoyB,EAAeppB,EAAAA,UAAS,IAAMsY,EAAM6P,gBAAaryB,EAAa,YAAW4K,EAAK1J,UAE9EqzB,EAA0B,IAC3B/R,EACH5X,KAAAA,EACA4iB,QAAAA,EACA8F,aAAAA;AAKF,OAFA7Z,UAAQmY,GAAa2C,GAEdA,EAGF,SAASC,KACd3a,GAAmB;AAEnB,MAAM2I,EAAQ9J,EAAAA,OAAOkZ,GAAa;AAElC,IAAKpP,EAAO,MAAM,IAAI7J,MAAM;AAE5B,OAAO6J,EAGT,SAASqQ,GAAgBD,EAAiBhmB,EAAkB6nB,GAC1D7B,EAAMppB,KACH,GAAEoD,WACA6nB,EAAQ7sB,KAAI8sB,GAAS,KAAIA,SAC5B,OAIJ,SAAS5B,GAAiBtQ,GACxB,MAAMmS,EAAenS,EAAM2P,KAAO,EAAI,EAChCyC,EAAcpS,EAAM2P,KAAO,EAAI,EAE/BC,EAAsB;AAC5B,IAAK,MAAOpuB,EAAK9C,KAAUX,OAAOqa,QAAQ4H,EAAMG,QAAS,CACvD,MAAMtO,EAAMe,GAAWlU;AACvBkxB,EAAU5oB,KAAM,aAAYxF,MAAQqQ,EAAI/B,KAAK+B,EAAI7B,KAAK6B,EAAIjU,KACrD4D,EAAImM,WAAW,QAClBiiB,EAAU5oB,KAAM,aAAYxF,yBAA2BqT,GAAQnW,GAAS,IAAOyzB,EAAeC,KAIlG,IAAK,MAAO5wB,EAAK9C,KAAUX,OAAOqa,QAAQ4H,EAAM4P,WAAY,CAC1D,MAAM3d,EAAyB,iBAAVvT,GAAsBA,EAAMiP,WAAW,KAAOiF,GAAWlU,QAASlB,EACjFqU,EAAMI,EAAS,GAAEA,EAAMnC,MAAMmC,EAAMjC,MAAMiC,EAAMrU,SAAMJ;AAC3DoyB,EAAU5oB,KAAM,OAAMxF,MAAQqQ,GAAOnT,KAGvC,OAAOkxB,EChaF,MAAMyC,GAAgBhd,GAAa,IACrCK,QACAyM,GAAgB,CAAEE,YAAY,OAC9BgN,MACF,QAEUiD,GAAOzZ,IAAAA,CAAmB,CACrCzQ,KAAM,OAENpK,MAAOq0B,KAEP7Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM0T,EAAQ8R,GAAa9zB,IACrB4nB,cAAEA,EAAa9C,cAAEA,EAAa0B,MAAEA,EAAKuB,UAAEA,GAAcnC,GAAa5lB,IAClE6wB,WAAEA,GAAeM;AA0BvB,OAxBAjU,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAA5F,IAEA+P,EAASpQ,MACR,CACL,gBACAqK,EAAM8Q,aAAapyB,MACnBknB,EAAclnB,MACdmwB,EAAWnwB,MACXV,EAAM2X,OACPzI,MACM,CACLlP,EAAMkP,QACP,CAAAyO,EAAAC,YAAA,MAAA,CAAAjG,MAAA,uBAAAgG,CAAAA,EAAAA,YAAA4W,EAAAA,SAAA,KAAA,CAAA9c,QAAAA,IAAA,CAAAkG,EAAAA,YAAA6W,EAAAjtB,SAAA,KAAA,CAKO6T,EAAM3D,uBAOX,CACLqN,cAAAA,EACA0B,MAAAA,EACAxE,MAAAA,MC/COyS,GAAepd,GAAa,CACvC6D,IAAK,CACH5T,KAAM/F,OACNkW,QAAS,QAEV,OCPUid,GAAyBrd,GAAa,CACjD1F,KAAMpQ,UAEHmW,QACA+c,MACF,iBAOUE,GAAgB9Z,IAAAA,CAAuC,CAClEzQ,KAAM,gBAENpK,MAAO00B,KAEPla,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAuBrB,OAtBA4O,IAAU,KACR,MAAM0X,KAAaxZ,EAAM3D,SAAW2D,EAAMzJ,MAAQ3R,EAAM2R;AAExD,OAAAgM,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,kBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAuI,QAAAA,IAEjBmd,CAAAA,GAAOjX,EAAAA,YAAA,MAAA,CAAAhG,MAAA,gCAAA,CAEHyD,EAAMzJ,KAAOyJ,EAAMzJ,OAAS3R,EAAM2R,KAElCyJ,EAAM3D,oBAOX,MCxCEod,GAAsBxd,GAAa,CAC9CoB,SAAU6L,QACVwQ,MAAOxQ,QACPyQ,YAAazQ,QACb0Q,cAAe1Q,QACf2Q,KAAM1zB,OACN2zB,OAAQ3zB,QACP;AAEI,SAAS4zB,GACd/qB,EACA8qB,EACAD,GAEA,OAAOpa,IAAAA,CAAmB,CACxBzQ,KAAAA,EAEApK,MAAO60B,GAAoB,CACzBI,KAAAA,EACAC,OAAAA,IAGF1a,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM8mB,EAAY,CAChBC,cAAezzB,GACT5B,EAAMk1B,SACRtzB,EAAGsN,MAAMW,gBAAkB7P,EAAMk1B,SAGrCI,QAAS1zB,GACP,GAAI5B,EAAMg1B,cAAe,CACvB,MAAMO,UAAEA,EAASC,WAAEA,EAAUxlB,YAAEA,EAAWC,aAAEA,GAAiBrO;AAC7DA,EAAG6zB,yBAA2B,CAC5B7O,SAAUhlB,EAAGsN,MAAM0X,SACnB5Y,IAAKpM,EAAGsN,MAAMlB,IACdrL,KAAMf,EAAGsN,MAAMvM,KACf8L,MAAO7M,EAAGsN,MAAMT,MAChBC,OAAQ9M,EAAGsN,MAAMR,QAEnB9M,EAAGsN,MAAM0X,SAAW,WACpBhlB,EAAGsN,MAAMlB,IAAO,GAAEunB,MAClB3zB,EAAGsN,MAAMvM,KAAQ,GAAE6yB,MACnB5zB,EAAGsN,MAAMT,MAAS,GAAEuB,MACpBpO,EAAGsN,MAAMR,OAAU,GAAEuB,MAGnBjQ,EAAM+0B,aACRnzB,EAAGsN,MAAMwmB,YAAY,UAAW,OAAQ,cAG5CC,aAAc/zB,GACZ,GAAI5B,EAAMg1B,eAAiBpzB,GAAI6zB,yBAA0B,CACvD,MAAM7O,SAAEA,EAAQ5Y,IAAEA,EAAGrL,KAAEA,EAAI8L,MAAEA,EAAKC,OAAEA,GAAW9M,EAAG6zB;OAC3C7zB,EAAG6zB,yBACV7zB,EAAGsN,MAAM0X,SAAWA,GAAY,GAChChlB,EAAGsN,MAAMlB,IAAMA,GAAO,GACtBpM,EAAGsN,MAAMvM,KAAOA,GAAQ,GACxBf,EAAGsN,MAAMT,MAAQA,GAAS,GAC1B7M,EAAGsN,MAAMR,OAASA,GAAU;AAKlC,MAAO,KACL,MAAMwM,EAAMlb,EAAM80B,MAAQc,EAAAA,gBAAkBC,EAAAA;AAE5C,OAAOlrB,EAAAA,EAAEuQ,EAA4B,CACnC9Q,KAAMpK,EAAMyY,SAAW,GAAKrO,EAC5B0rB,KAAM91B,EAAMyY,YACRzY,EAAM80B,WAAQt1B,EAAY,CAAEy1B,KAAMj1B,EAAMi1B,SACxCj1B,EAAMyY,SAAW,GAAK2c,GACzBha,EAAM3D,aAMV,SAASse,GACd3rB,EACAgrB,GAEA,IADAH,EAAIl0B,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAEP,OAAO8Z,IAAAA,CAAmB,CACxBzQ,KAAAA,EAEApK,MAAO,CACLi1B,KAAM,CACJ3tB,KAAM/F,OACNkW,QAASwd,GAEXxc,SAAU6L,QACVwQ,MAAOxQ,SAGT9J,MAAOxa,EAAKgW,GAAa,IAAXoF,MAAEA,GAAOpF;AACrB,MAAMkF,EAAMlb,EAAM80B,MAAQc,EAAAA,gBAAkBC,EAAAA;AAE5C,MAAO,IACElrB,EAAAA,EAAEuQ,EAA4B,CACnC9Q,KAAMpK,EAAMyY,SAAW,GAAKrO,EAC5B0rB,KAAM91B,EAAMyY,YAERzY,EAAMyY,SAAW,GAAK2c,GACzBha,EAAM3D,YCjGF,SAAAue,KAA+C,IAArCC,EAAmBl1B,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GAAIwN,EAACxN,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,IAAAA,UAAA;AAClD,MAAMm1B,EAAe3nB,EAAI,QAAU,SAC7B4nB,EAAiBhb,EAAAA,SAAU,UAAS+a;AAE1C,MAAO,CACLb,cAAezzB,GACbA,EAAGw0B,QAAUx0B,EAAG2Z,WAChB3Z,EAAGy0B,cAAgB,CACjBvP,WAAYllB,EAAGsN,MAAM4X,WACrBgB,SAAUlmB,EAAGsN,MAAM4Y,SACnBoO,CAACA,GAAet0B,EAAGsN,MAAMgnB,KAI7BI,QAAS10B,GACP,MAAM20B,EAAe30B,EAAGy0B;AAExBz0B,EAAGsN,MAAMwmB,YAAY,aAAc,OAAQ,aAE3C9zB,EAAGsN,MAAM4Y,SAAW;AACpB,MAAM0O,EAAU,GAAE50B,EAAGu0B;AAErBv0B,EAAGsN,MAAMgnB,GAAgB,IAEpBt0B,EAAGqO,aAERrO,EAAGsN,MAAM4X,WAAayP,EAAazP,WAE/BmP,GAAuBr0B,EAAGw0B,SAC5Bx0B,EAAGw0B,QAAQK,UAAU1lB,IAAIklB,GAG3BS,uBAAsB,KACpB90B,EAAGsN,MAAMgnB,GAAgBM,MAI7BG,aAAcC,EACdC,iBAAkBD,EAElBtB,QAAS1zB,GACPA,EAAGy0B,cAAgB,CACjBvP,WAAY,GACZgB,SAAUlmB,EAAGsN,MAAM4Y,SACnBoO,CAACA,GAAet0B,EAAGsN,MAAMgnB,IAG3Bt0B,EAAGsN,MAAM4Y,SAAW,SACpBlmB,EAAGsN,MAAMgnB,GAAiB,GAAEt0B,EAAGu0B,OAC1Bv0B,EAAGqO,aAERymB,uBAAsB,IAAO90B,EAAGsN,MAAMgnB,GAAgB,OAGxDP,aAAAA,EACAmB,iBAAkBnB;AAGpB,SAASA,EAAc/zB,GACjBq0B,GAAuBr0B,EAAGw0B,SAC5Bx0B,EAAGw0B,QAAQK,UAAUM,OAAOd,GAE9BW,EAAYh1B,GAGd,SAASg1B,EAAah1B,GACpB,MAAMiH,EAAOjH,EAAGy0B,cAAeH;AAC/Bt0B,EAAGsN,MAAM4Y,SAAWlmB,EAAGy0B,cAAevO,SAC1B,MAARjf,IAAcjH,EAAGsN,MAAMgnB,GAAgBrtB,UACpCjH,EAAGy0B,eClEP,MAAMW,GAA6B3f,GAAa,CACrDxQ,OAAQ,CAAC9G,OAAQY,QAChB,uBAEUs2B,GAAoBpc,IAAAA,CAAmB,CAClDzQ,KAAM,oBAENpK,MAAOg3B,KAEPxc,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM8mB,EAAY,CAChBC,cAAezzB,GACZA,EAAmBsN,MAAMgoB,cAAgB,OACxCt1B,EAAmBsN,MAAMioB,WAAa,UAE1Cb,cAAe10B,EAAaw1B,SACpB,IAAI/mB,SAAQC,GAAWomB,sBAAsBpmB,WAC7C,IAAID,SAAQC,GAAWomB,sBAAsBpmB,KACjD1O,EAAmBsN,MAAMioB,WAAa;AAExC,MAAM5oB,EAAEA,EAACC,EAAEA,EAACe,GAAEA,EAAEC,GAAEA,EAAE6nB,MAAEA,GAAUC,GAAct3B,EAAM6G,OAASjF,GAEvD2O,EAAYL,GAAQtO,EAAI,CAC5B,CAAEyN,UAAY,aAAYd,QAAQC,cAAce,MAAOC,KAAO+nB,QAAS,GACvE,IACC,CACDC,SAAU,IAAMH,EAChBI,OxB1CuB;AwB4CzBC,GAAY91B,IAAK2C,SAAQ3C,IACvBsO,GAAQtO,EAAI,CACV,CAAE21B,QAAS,GACX,CAAEA,QAAS,EAAGf,OAAQ,KACtB,IACC,CACDgB,SAAU,IAAUH,EACpBI,OAAQhc,QAGZlL,EAAUH,SAASunB,MAAK,IAAMP,OAEhCT,aAAc/0B,GACXA,EAAmBsN,MAAM0oB,eAAe,mBAE3CC,cAAej2B,GACZA,EAAmBsN,MAAMgoB,cAAgB,QAE5C5B,cAAe1zB,EAAaw1B,SACpB,IAAI/mB,SAAQC,GAAWomB,sBAAsBpmB;AAEnD,MAAM/B,EAAEA,EAACC,EAAEA,EAACe,GAAEA,EAAEC,GAAEA,EAAE6nB,MAAEA,GAAUC,GAAct3B,EAAM6G,OAASjF;AAE3CsO,GAAQtO,EAAI,CAC5B,GACA,CAAEyN,UAAY,aAAYd,QAAQC,cAAce,MAAOC,KAAO+nB,QAAS,IACtE,CACDC,SAAU,IAAMH,EAChBI,OxBvEuB,+BwByEfrnB,SAASunB,MAAK,IAAMP,MAC9BM,GAAY91B,IAAK2C,SAAQ3C,IACvBsO,GAAQtO,EAAI,CACV,GACA,CAAE21B,QAAS,EAAGf,OAAQ,IACtB,CAAEe,QAAS,IACV,CACDC,SAAU,IAAUH,EACpBI,OAAQhc,SAIdka,aAAc/zB,GACXA,EAAmBsN,MAAM0oB,eAAe;AAI7C,MAAO,IACE53B,EAAM6G,OAAM8W,cAAAkY,EAAAA,WAAA9X,EAAAA,WAAA,CAAA3T,KAAA,qBAIRgrB,EAAS,CAAAU,KACR,IACI1a,GAAKuC,EAAAC,YAAAiY,aAAA,CAAAzrB,KAAA,qBAG8BgR;AAMzD,SAASsc,GAAa91B,GACpB,MAAMk2B,EAAMl2B,EAAGm2B,cAAc,0DAA0DvwB;AACvF,OAAOswB,GAAO,IAAIA,GAGpB,SAASR,GAAezwB,EAA8CjF,GACpE,MAAMo2B,EAAYlpB,GAAajI,GACzBoxB,EAAQjpB,GAAkBpN,IACzBs2B,EAASC,GAAWhpB,iBAAiBvN,GAAIiO,gBAAgBvP,MAAM,KAAK8G,KAAInG,GAAK6O,WAAW7O,MAExFm3B,EAAYC,GAAgBlpB,iBAAiBvN,GAAI02B,iBAAiB,6BAA6Bh4B,MAAM;AAE5G,IAAIi4B,EAAUP,EAAUr1B,KAAOq1B,EAAUvpB,MAAQ;AAC9B,SAAf2pB,GAA0C,SAAjBC,EAC3BE,GAAWP,EAAUvpB,MAAQ,EACL,UAAf2pB,GAA2C,UAAjBC,IACnCE,GAAWP,EAAUvpB,MAAQ;AAG/B,IAAI+pB,EAAUR,EAAUhqB,IAAMgqB,EAAUtpB,OAAS;AAC9B,QAAf0pB,GAAyC,QAAjBC,EAC1BG,GAAWR,EAAUtpB,OAAS,EACN,WAAf0pB,GAA4C,WAAjBC,IACpCG,GAAWR,EAAUtpB,OAAS;AAGhC,MAAM+pB,EAAMT,EAAUvpB,MAAQwpB,EAAMxpB,MAC9BiqB,EAAMV,EAAUtpB,OAASupB,EAAMvpB,OAC/BiqB,EAAOjzB,KAAKD,IAAI,EAAGgzB,EAAKC,GACxBnpB,EAAKkpB,EAAME,GAAQ,EACnBnpB,EAAKkpB,EAAMC,GAAQ,EAGnBC,EAAOX,EAAMxpB,MAAQwpB,EAAMvpB,QAAW9P,OAAOi6B,WAAaj6B,OAAOk6B,aACjEzB,EAAQuB,EAAM,IAChBlzB,KAAKF,IAAI,IAAoB,IAAdozB,EAAM,KAAa,GAClC;AAEJ,MAAO,CACLrqB,EAAGgqB,GAAWL,EAAUD,EAAMt1B,MAC9B6L,EAAGgqB,GAAWL,EAAUF,EAAMjqB,KAC9BuB,GAAAA,EACAC,GAAAA,EACA6nB,MAAAA,GC/IG,MAAM0B,GAAiB5D,GAAoB,iBAAkB,gBAAiB,UAGxE6D,GAA0B7D,GAAoB,4BAC9C8D,GAAuB9D,GAAoB,yBAC3C+D,GAAkB/D,GAAoB,mBACtCgE,GAAmBhE,GAAoB,oBACvCiE,GAAqBjE,GAAoB,uBACzCkE,GAA4BlE,GAAoB,+BAChDmE,GAAqBnE,GAAoB,uBACzCoE,GAA4BpE,GAAoB,+BAChDqE,GAAoBrE,GAAoB,sBACxCsE,GAA2BtE,GAAoB,8BAC/CuE,GAAoBvE,GAAoB,sBACxCwE,GAA2BxE,GAAoB,8BAG/CyE,GAAoB7D,GAA2B,oBAAqBC,MACpE6D,GAAqB9D,GAA2B,sBAAuBC,GAA0B,IAAI,ICfrG8D,GAA6BziB,GAAa,CACrDC,SAAUvX,OACV0Y,SAAU6L,QACV3L,MAAO,CAAClX,OAAQF,QAChBqX,KAAM,CAAC0L,QAAS/iB,QAChBmX,OAAQ4L,SACP,qBAEUyV,GAAoBlf,IAAiB,EAAjBA,CAAwB,CACvDzQ,KAAM,oBAENpK,MAAO85B,KAEPtf,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMgJ,SAAEA,EAAQmB,SAAEA,EAAQE,MAAEA,EAAKC,KAAEA,EAAIF,OAAEA,GAAW7O,EAAAA,OAAO7J;AAS3D,OAPAoY,GAAgBd,EAAU,CACxBqB,MAAAA,EACAC,KAAAA,EACAF,OAAAA,EACAD,SAAAA,IAGK,IAAM2C,EAAM3D,eCnBVuiB,GAAqB3iB,GAAa,CAC7C3I,OAAQ,CAACjN,OAAQF,QACjB04B,UAAW,CAACx4B,OAAQF,QACpB24B,SAAU,CAACz4B,OAAQF,QACnB44B,UAAW,CAAC14B,OAAQF,QACpB64B,SAAU,CAAC34B,OAAQF,QACnBkN,MAAO,CAAChN,OAAQF,SACf;AAEI,SAAS84B,GAAcr6B,GAU5B,MAAO,CAAEs6B,gBATe5wB,EAAAA,UAAS,KAAO,CACtCgF,OAAQvN,EAAcnB,EAAM0O,QAC5BurB,UAAW94B,EAAcnB,EAAMi6B,WAC/BC,SAAU/4B,EAAcnB,EAAMk6B,UAC9BC,UAAWh5B,EAAcnB,EAAMm6B,WAC/BC,SAAUj5B,EAAcnB,EAAMo6B,UAC9B3rB,MAAOtN,EAAcnB,EAAMyO,YCHxB,MAAM8rB,GAAuBljB,GAAa,CAC/CmjB,YAAa,CAACj5B,OAAQE,QACtBkhB,aAAc,KACdpV,OAAQ+W,WAEL5M,QACAsiB,MACF,eAEUS,GAAc5f,IAAAA,CAAqC,CAC9DzQ,KAAM,cAENpK,MAAOu6B,KAEP/f,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMosB,aAAEA,GA3BL,SAA0B16B,GAC/B,MAAO,CACL06B,aAAchxB,EAAQA,UAAC,KACrB,MAAMixB,EAAQl5B,OAAOzB,EAAMw6B;AAE3B,OAAOG,EACH,CAAEC,cAAer5B,OAAO,EAAIo5B,EAAQ,KAAO,UAC3Cn7B,MAoBmBq7B,CAAgB76B,IACnCs6B,gBAAEA,GAAoBD,GAAar6B;AAwBzC,OAtBAkd,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,eACA,CAAE,uBAAwB3X,EAAMuN,QAChCvN,EAAM2X,OACPzI,MACM,CACLorB,EAAgB55B,MAChBV,EAAMkP,QACP,CAAAyO,EAAAC,YAAA,MAAA,CAAAjG,MAAA,sBAAAzI,MAEwCwrB,EAAah6B,OAEpD0a,MAAAA,EAAM0f,eAEN1f,EAAM3D,SAAOkG,EAAAC,YAAA,MAAA,CAAAjG,MACD,CAAC,wBAAyB3X,EAAM2iB,eAAa,CAAIvH,EAAM3D,gBAKlE;AChDJ,SAASsjB,GAAU5Y,GACxB,OAAO7Y,GAAiB,KACtB,MAAM0xB,EAAoB,GACpBrT,EAAwB;AAE9B,GAAIxF,EAAOzhB,MAAMkR,WACf,GAAIoC,GAAWmO,EAAOzhB,MAAMkR,aAG1B,GAFA+V,EAAOsT,gBAAkB9Y,EAAOzhB,MAAMkR,YAEjCuQ,EAAOzhB,MAAMiR,OpCNjBqC,GADwBC,EoCOiBkO,EAAOzhB,MAAMkR,cpCNhC,2BAA2BxN,KAAK6P,IoCMa,CAClE,MAAMgnB,EAAkBrmB,GAAWuN,EAAOzhB,MAAMkR;AAChD,GAAyB,MAArBqpB,EAAgBt7B,GAAmC,IAAtBs7B,EAAgBt7B,EAAS,CACxD,MAAMu7B,EAAY/jB,GAAc8jB;AAEhCtT,EAAO1T,MAAQinB,EACfvT,EAAOwT,WAAaD,SAIxBF,EAAQhyB,KAAM,MAAKmZ,EAAOzhB,MAAMkR;ApCjBjC,IAA0BqC;AoC8B7B,OATIkO,EAAOzhB,MAAMiR,OACXqC,GAAWmO,EAAOzhB,MAAMiR,OAC1BgW,EAAO1T,MAAQkO,EAAOzhB,MAAMiR,KAC5BgW,EAAOwT,WAAahZ,EAAOzhB,MAAMiR,MAEjCqpB,EAAQhyB,KAAM,QAAOmZ,EAAOzhB,MAAMiR,SAI/B,CAAEypB,aAAcJ,EAASK,YAAa1T,MAM1C,SAAS2T,GACdt7B,EACAoK,GAEA,MAAM+X,EAASzY,EAAAA,UAAS,KAAO,CAC7BiI,KAAM4pB,EAAAA,MAAMv7B,GAASA,EAAMU,MAAS0J,EAAOpK,EAAMoK,GAAQ,UAIzDgxB,aAAcI,EACdH,YAAaI,GACXV,GAAS5Y;AAEb,MAAO,CAAEqZ,iBAAAA,EAAkBC,gBAAAA,GAKtB,SAASC,GACd17B,EACAoK,GAEA,MAAM+X,EAASzY,EAAAA,UAAS,KAAO,CAC7BkI,WAAY2pB,EAAAA,MAAMv7B,GAASA,EAAMU,MAAS0J,EAAOpK,EAAMoK,GAAQ,UAI/DgxB,aAAcO,EACdN,YAAaO,GACXb,GAAS5Y;AAEb,MAAO,CAAEwZ,uBAAAA,EAAwBC,sBAAAA,GCtE5B,MAAMC,GAAmBxkB,GAAa,CAC3C4J,QAAS,CACP3Z,KAAM,CAACgd,QAAS7iB,OAAQF,QACxBkW,aAASjY,GAEXs8B,KAAMxX,SACL;AAEI,SAASyX,GACd/7B,GAEa,IADboK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,MAAMggB,EAAiBtyB,EAAAA,UAAS,KAC9B,MAAMuX,EAAUsa,EAAAA,MAAMv7B,GAASA,EAAMU,MAAQV,EAAMihB,QAC7C6a,EAAOP,EAAAA,MAAMv7B,GAASA,EAAMU,MAAQV,EAAM87B,KAC1Cd,EAAoB;AAE1B,IAAgB,IAAZ/Z,GAAgC,KAAZA,EACtB+Z,EAAQhyB,KAAM,GAAEoB;KACX,GACc,iBAAZ6W,GACK,IAAZA,EAEA,IAAK,MAAMvgB,KAASa,OAAO0f,GAAS3gB,MAAM,KACxC06B,EAAQhyB,KAAM,WAAUtI;KAEjBo7B,IAAoB,IAAZ7a,IACjB+Z,EAAQhyB,KAAK;AAGf,OAAOgyB;AAGT,MAAO,CAAEgB,eAAAA,GC7CJ,MAAMnH,GAAsBxd,GAAa,CAC9CyP,WAAY,CACVxf,KAAM,CAACgd,QAAS/iB,OAAQxB,QACxB0X,QAAS,kBACTwkB,UAAWhzB,IAAe,IAARA,IAEnB,cAQUizB,GAA6DA,CAACl8B,EAAKsO,KAAgB,IAAd8M,MAAEA,GAAO9M;AACzF,MAAMwY,WAAEA,EAAUrO,SAAEA,EAAQqc,MAAEA,KAAU7wB,GAASjE,GAE3CmI,UACJA,GAAY2sB,EAAQc,EAAAA,gBAAkBC,EAAUA,eAC7CsG,GACqB,iBAAfrV,EAA0BA,EAAa;AAElD,OAAOnc,EAACA,EACNxC,EACAi0B,EAAUA,WACc,iBAAftV,EACH,CAAE1c,KAAMqO,EAAW,GAAKqO,GACxBqV,EACkB,iBAAfrV,EACH,GACA/mB,OAAOsa,YAAYta,OAAOqa,QAAQ,CAAE3B,SAAAA,EAAUqc,MAAAA,IAASjb,QAAO7D,IAAA,IAAEqmB,EAAGp7B,GAAE+U;AAAA,YAAWxW,IAANyB,MAC9EgD,GAEFmX;ACyBJ,SAASkhB,GAAW16B,EAAiB26B,GACnC,MAAMvY,EAAUpiB,EAAG46B,WAAWD,EAAQE,SAAUC,EAAErgB;AAC7C2H,IAELA,EAAQR,SAASO,UAAUniB,UACpBA,EAAG46B,SAAUD,EAAQE,SAAUC,EAAErgB,MAGnC,MAAMsgB,GAAY,SAnDzB,SAAkB/6B,EAAiB26B,GACjC,IAAK19B,EAAuB;AAE5B,MAAM+9B,EAAYL,EAAQK,WAAa,GACjCl8B,EAAQ67B,EAAQ77B,OAChB6J,QAAEA,EAAOwC,QAAEA,GAA6B,iBAAVrM,EAChCA,EACA,CAAE6J,QAAS7J,EAAOqM,QAAS,IAEzByW,EAAW,IAAIqZ,sBAAqB,WAGrC,IAFHziB,EAAoCrZ,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GACvCyiB,EAA8BziB,UAAAxB,OAAAwB,EAAAA,kBAAAvB;AAE9B,MAAMg9B,EAAW56B,EAAG46B,WAAWD,EAAQE,SAAUC,EAAErgB;AACnD,IAAKmgB,EAAU;AAEf,MAAMM,EAAiB1iB,EAAQlW,MAAKkvB,GAASA,EAAM0J;CAKjDvyB,GACGqyB,EAAUG,QACXP,EAASQ,MAERJ,EAAUK,OACXH,IACAN,EAASQ,MAGXzyB,EAAQuyB,EAAgB1iB,EAASoJ,GAG/BsZ,GAAkBF,EAAUK,KAAMX,GAAU16B,EAAI26B,GAC/CC,EAASQ,MAAO,IACpBjwB;AAEHnL,EAAG46B,SAAWz8B,OAAO6B,EAAG46B,UACxB56B,EAAG46B,SAAUD,EAAQE,SAAUC,EAAErgB,KAAO,CAAE2gB,MAAM,EAAOxZ,SAAAA,GAEvDA,EAASQ,QAAQpiB,IAajB06B,UAAAA,ICpBWY,GAAgB7lB,GAAa,CACxC8lB,IAAK57B,OACL67B,MAAO9Y,QACPrQ,MAAO1S,OACP87B,UAAW,CACT/1B,KAAM,CAACgd,QAAS/iB,QAChBkW,aAASjY,GAEX89B,MAAOhZ,QACPiZ,SAAUh8B,OACVi8B,QAASj8B,OACTwL,QAAS,CACPzF,KAAMvH,OAGN0X,QAASA,KAAO,CACdmB,UAAMpZ,EACNi+B,gBAAYj+B,EACZk+B,eAAWl+B,KAGfm+B,MAAOp8B,OACPq8B,IAAK,CACHt2B,KAAM,CAAC/F,OAAQxB,QACf0X,QAAS,IAEXomB,YAAat8B,OACbu8B,eAAgBv8B,OAUhBw8B,OAAQx8B,OACRqlB,SAAUrlB,UAEPg5B,QACA7iB,QACAmkB,QACAhH,MACF,QAEUmJ,GAAOnjB,IAAAA,CAA8B,CAChDzQ,KAAM,OAEN6zB,WAAY,CAAEC,UAAAA,IAEdl+B,MAAOk9B,KAEPiB,MAAO,CACLC,UAAY19B,IAA8B,EAC1C29B,KAAO39B,IAA8B,EACrC2e,MAAQ3e,IAA8B,GAGxC8Z,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAMqtB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,WACpFg8B,eAAEA,GAAmBD,GAAW/7B,GAChCoZ,EAAKC,GAAmB,QAExBklB,EAAatxB,aAAW,IACxBuxB,EAAQxmB,EAAAA,MACR8V,EAAQ7gB,EAAAA,WAAoDjN,EAAMs9B,MAAQ,UAAY,QACtFmB,EAAexxB,EAAAA,aACfyxB,EAAgBzxB,EAAAA,aAEhB0xB,EAAgBj1B,EAAAA,UAAoB,IACjC1J,EAAM49B,KAA4B,iBAAd59B,EAAM49B,IAC7B,CACAA,IAAK59B,EAAM49B,IAAIA,IACfG,OAAQ/9B,EAAM+9B,QAAU/9B,EAAM49B,IAAIG,OAClCP,QAASx9B,EAAMw9B,SAAWx9B,EAAM49B,IAAIJ,QACpCoB,OAAQn9B,OAAOzB,EAAMw6B,aAAex6B,EAAM49B,IAAIgB,QAAU,IACtD,CACFhB,IAAK59B,EAAM49B,IACXG,OAAQ/9B,EAAM+9B,OACdP,QAASx9B,EAAMw9B,QACfoB,OAAQn9B,OAAOzB,EAAMw6B,aAAe,MAGpCA,EAAc9wB,EAAAA,UAAS,IACpBi1B,EAAcj+B,MAAMk+B,QAAUH,EAAa/9B,MAASg+B,EAAch+B,OAAU;AAgBrF,SAASs8B,EAAMF,GACb,KAAI98B,EAAMs9B,QAASR,MAEjBj+B,GACCi+B,GACA98B,EAAMs9B,OAHT,CAQA,GAFAxP,EAAMptB,MAAQ,UAEVi+B,EAAcj+B,MAAM88B,QAAS,CAC/B,MAAMqB,EAAU,IAAIC;AACpBD,EAAQjB,IAAMe,EAAcj+B,MAAM88B,QAClCuB,EAAYF,EAAS,MAGlBF,EAAcj+B,MAAMk9B,KAEzB/Y,EAAAA,UAAS,KACPsE,EAAK,YAAaqV,EAAM99B,OAAO69B,YAAcI,EAAcj+B,MAAMk9B,KAEjEoB,YAAW,KACT,IAAI5lB,EAAG6lB,YAEP,GAAIT,EAAM99B,OAAOoe,SAAU,CAKzB,GAJK0f,EAAM99B,MAAM+9B,cACfS,IAGkB,UAAhBpR,EAAMptB,MAAmB;AAExB85B,EAAY95B,OAAOq+B,EAAYP,EAAM99B,MAAO,MAC7B,YAAhBotB,EAAMptB,OAAqBy+B,SAE1B3E,EAAY95B,OAAOq+B,EAAYP,EAAM99B,OAC1C0+B,WAMR,SAASD,IACH/lB,EAAG6lB,cAEPG,IACAL,EAAYP,EAAM99B,OAClBotB,EAAMptB,MAAQ,SACdyoB,EAAK,OAAQqV,EAAM99B,OAAO69B,YAAcI,EAAcj+B,MAAMk9B,MAG9D,SAASsB,IACH9lB,EAAG6lB,cAEPnR,EAAMptB,MAAQ,QACdyoB,EAAK,QAASqV,EAAM99B,OAAO69B,YAAcI,EAAcj+B,MAAMk9B,MAG/D,SAASwB,IACP,MAAMC,EAAMb,EAAM99B;AACd2+B,IAAKd,EAAW79B,MAAQ2+B,EAAId,YAAcc,EAAIzB,KAxEpDha,SAAM,IAAM5jB,EAAM49B,MAAK,KACrBZ,EAAqB,SAAhBlP,EAAMptB,UAEbkjB,EAAAA,MAAM4W,GAAa,CAACvxB,EAAKq2B,MAClBr2B,GAAOq2B,GAAUd,EAAM99B,OAC1Bq+B,EAAYP,EAAM99B,UAMtB6+B,iBAAc,IAAMvC;AAgEpB,IAAIwC,GAAS;AAMb,SAAST,EAAaM,GAAqD,IAA9BI,EAAsB1+B,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACpE,MAAM2+B,EAAOA,KAEX,GADAC,aAAaH,GACTpmB,EAAG6lB,YAAa;AAEpB,MAAQP,cAAekB,EAAWnB,aAAcoB,GAAaR;AAEzDO,GAAaC,GACfpB,EAAa/9B,MAAQm/B,EACrBnB,EAAch+B,MAAQk/B,GACZP,EAAIvgB,UAA4B,YAAhBgP,EAAMptB,OAAkC,MAAX++B,GAE9CJ,EAAId,WAAWvpB,SAAS,SAAWqqB,EAAId,WAAW5uB,WAAW,yBACtE8uB,EAAa/9B,MAAQ,EACrBg+B,EAAch+B,MAAQ,GAHtB8+B,EAAQ5gC,OAAOogC,WAAWU,EAAMD;AAOpCC,IAtBFhc,EAAAA,iBAAgB,KACdic,aAAaH;AAwBf,MAAMM,EAAiBp2B,EAAAA,UAAS,KAAO,CACrC,oBAAqB1J,EAAMo9B,MAC3B,uBAAwBp9B,EAAMo9B,UAG1B2C,EAAUA,KACd,IAAKpB,EAAcj+B,MAAMk9B,KAAuB,SAAhB9P,EAAMptB,MAAkB,OAAO;AAE/D,MAAM2+B,EAAG1hB,EAAAC,YAAA,MAAA,CAAAjG,MAEE,CAAC,aAAcmoB,EAAep/B,OAAMwO,MACpC,CAAE8wB,eAAgBhgC,EAAM4mB,UAAUgX,IACnCe,EAAcj+B,MAAMk9B,IAAGG,OACpBY,EAAcj+B,MAAMq9B,OAAMZ,IAC7Bn9B,EAAMm9B,IAAGU,YACD79B,EAAM69B,YAAWC,eACd99B,EAAM89B,eAAcT,UACzBr9B,EAAMq9B,UAASM,MACnB39B,EAAM29B,MAAK3lB,IACbwmB,EAAKW,OACFA,EAAMD,QACLA,GAEb,MAEKe,EAAU7kB,EAAM6kB;AAEtB,OAAAtiB,EAAAA,YAAAue,GAAA,CAAApV,WACgC9mB,EAAM8mB,WAAUoZ,QAAA,GAAA,CAAAzoB,QAAAA,IAAA,CAE1C0oB,EAAAA,eACEF,EAAOtiB,EAAAA,YAAA,UAAA,CAAAhG,MAAA,kBAAA,CAC+BsoB,EAAWZ,IAC7CA,EACJ,CAAC,CAACe,EAAKA,MAAkB,WAAhBtS,EAAMptB,aAOnB2/B,EAAiBA,IAAA1iB,EAAAC,YAAAse,GAAA,CAAApV,WACS9mB,EAAM8mB,YAAU,CAAArP,QAAAA,IAC1CknB,CAAAA,EAAcj+B,MAAM88B,SAA2B,WAAhB1P,EAAMptB,OAAkBid,EAAAC,YAAA,MAAA,CAAAjG,MAE9C,CAAC,aAAc,sBAAuBmoB,EAAep/B,OAAMwO,MAC3D,CAAE8wB,eAAgBhgC,EAAM4mB,UAAUgX,IACnCe,EAAcj+B,MAAM88B,QAAOL,IAC3Bn9B,EAAMm9B,IAAGU,YACD79B,EAAM69B,YAAWC,eACd99B,EAAM89B,eAAcT,UACzBr9B,EAAMq9B,WAErB,SAICiD,EAAgBA,IACfllB,EAAMkQ,YAEX3N,EAAAA,YAAAue,GAAA,CAAApV,WACgC9mB,EAAM8mB,WAAUoZ,QAAA,GAAA,CAAAzoB,QAAAA,IAC1C,EAAiB,YAAhBqW,EAAMptB,OAAwC,UAAhBotB,EAAMptB,QAAsB0a,EAAMiE,QAAM1B,EAAAA,YAAA,MAAA,CAAAhG,MAAA,sBAAA,CACvCyD,EAAMkQ,mBALb,KAW3BiV,EAAUA,IACTnlB,EAAMiE,MAEX1B,EAAAA,YAAAue,GAAA,CAAApV,WACgC9mB,EAAM8mB,WAAUoZ,QAAA,GAAA,CAAAzoB,QAAAA,IAC1CqW,CAAgB,UAAhBA,EAAMptB,OAAiBid,EAAAC,YAAA,MAAA,CAAAjG,MAAA,gBAAA,CACKyD,EAAMiE,aALf,KAWrBmhB,EAAaA,IACZxgC,EAAMu9B,SAEX5f,EAAAA,YAAA,MAAA,CAAAhG,MAAA,kBAAAzI,MAA2C,CAAEuxB,gBAAkB,mBAAkBzgC,EAAMu9B,cAAa,MAFxE,KAKxBmD,EAAWzzB,cAAW;AAC5B,CACE,MAAMmb,EAAOxE,EAAAA,MAAM4W,GAAavxB,IAC1BA,IAEFytB,uBAAsB,KACpBA,uBAAsB,KACpBgK,EAAShgC,OAAQ,QAGrB0nB,QA4CN,OAvCAlL,IAAU,KACR,MAAMyjB,EAAkBlG,GAAY/f,YAAY1a;AAChD,OAAA4gC,iBAAAjjB,EAAAA,YAAA8c,GAAA1c,aAAA,CAAApG,MAEW,CACL,QACA,CAAE,kBAAmB+oB,EAAShgC,OAC9Bi7B,EAAuBj7B,MACvBs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL,CAAET,MAAOtN,EAA8B,SAAhBnB,EAAMyO,MAAmBgwB,EAAa/9B,MAAQV,EAAMyO,QAC3EmtB,EAAsBl7B,MACtBV,EAAMkP,QAEHyxB,EAAe,CAAAnG,YACNA,EAAY95B,MAAK,aAClBV,EAAMm9B,IAAGjf,KACfle,EAAMm9B,IAAM,WAAQ39B,IAAS,CAMpCs7B,WAAYA,IAAAnd,EAAAC,YAAA4W,WAAA,KAAA,CAAA7W,EAAAC,YAAAmiB,EAAA,KAAA,MAAApiB,EAAAC,YAAAyiB,EAAA1iB,KAAAA,MAAAA,EAAAC,YAAA4iB,EAAA7iB,KAAAA,MAAAA,EAAAA,YAAA2iB,EAAA3iB,KAAAA,MAAAA,EAAAA,YAAA4iB,EAQX,KAAA,QACD9oB,QAAS2D,EAAM3D,UAAO,CAAA,CAAAopB,mBAdR,aAAA,CACZt2B,QAASyyB,EACTjwB,QAAS/M,EAAM+M,SACd,KAAI,CAAAkwB,MAAA,SAgBN,CACLsB,WAAAA,EACAC,MAAAA,EACA1Q,MAAAA,EACA2Q,aAAAA,EACAC,cAAAA,MC7XOoC,GAAkBzpB,GAAa,CAC1C0pB,OAAQ,CAACzc,QAAS7iB,OAAQF,SACzB;AAEI,SAASy/B,GACdhhC,GAEA,IADAoK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,MAAMilB,EAAgBv3B,EAAAA,UAAS,KAC7B,MAAMq3B,EAASxF,EAAAA,MAAMv7B,GAASA,EAAMU,MAAQV,EAAM+gC,OAC5C/F,EAAoB;AAE1B,IAAe,IAAX+F,GAA8B,KAAXA,EACrB/F,EAAQhyB,KAAM,GAAEoB;KACX,GACa,iBAAX22B,GACI,IAAXA,EAEA,IAAK,MAAMrgC,KAASa,OAAOw/B,GAAQzgC,MAAM,KACvC06B,EAAQhyB,KAAM,UAAStI;AAI3B,OAAOs6B;AAGT,MAAO,CAAEiG,cAAAA,GCzBJ,MAAMC,GAAqB7pB,GAAa,CAC7C8pB,UAAW,CACT75B,KAAM,CAAC7F,OAAQF,QACf06B,UAAWh7B,GACT,MAAMP,EAAQyU,SAASlU;AAEvB,OACGK,MAAMZ,IACPA,GAAS,GAGTA,GAAS,MAId;AAMI,SAAS0gC,GAAcphC,GAY5B,MAAO,CAAEqhC,iBAXgB33B,EAAAA,UAAS,KAChC,MAAMy3B,EAAY5F,EAAAA,MAAMv7B,GAASA,EAAMU,MAAQV,EAAMmhC,UAC/CnG,EAAoB;AAE1B,OAAiB,MAAbmG,GAEJnG,EAAQhyB,KAAM,aAAYm4B,KAFInG,MCVlC,MAAMsG,GAAmB,CAAC,KAAM,YAAa,UAAW,cAAe,WAI1DC,GAAoBlqB,GAAa,CAC5CoN,SAAUH,QACVzF,SAAUyF,QACVrQ,MAAO1S,OACPigC,QAAS,CACPl6B,KAAM/F,OACNkW,QAAS,UACTwkB,UAAYh7B,GAAWqgC,GAAiBv7B,SAAS9E,IAEnDwgC,SAAUnd,QACVod,gBAAiB,CACfp6B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IAEXhQ,KAAM6c,QACNqd,SAAUrd,QACV5V,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IAEX+mB,MAAOj9B,OACP4pB,MAAO5pB,UAEJu/B,QACAppB,QACAwpB,QACArF,QACApH,GAAa,CAAEvZ,IAAK,cACpBmW,MACF,YAWUvP,GAAWjH,IAAAA,CAAkC,CACxDzQ,KAAM,WAENpK,MAAOuhC,KAEP/mB,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMqtB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,WACpFihC,cAAEA,GAAkBD,GAAUhhC,IAC9BqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAW/7B,IAChC8yB,aAAEA,GAAiBgB,GAAa9zB,IAChC6wB,WAAEA,GAAeM,KAEjByQ,EAAa30B,EAAUA,cAAIjN,EAAMyhC,WAAYrmB,EAAMymB,gBACnDC,EAAgBp4B,EAAQA,UAAC,IAAMyL,SACnC1T,OAAOzB,EAAM0O,SACM,cAAlB1O,EAAMwhC,QAA0B//B,OAAOzB,EAAM0O,QAAU,IACrC,gBAAlB1O,EAAMwhC,QAA4B,EAAI,IACpB,YAAlBxhC,EAAMwhC,QAAwB,GAAK,GACnC,MACGE,EAAkBh4B,EAAAA,UAAS,IAAMk4B,EAAWlhC,MAC9CyU,SACA1T,OAAOzB,EAAM0hC,kBACM,cAAlB1hC,EAAMwhC,QAA0B//B,OAAOzB,EAAM0hC,iBAAmB,IAC9C,gBAAlB1hC,EAAMwhC,QAA4B,EAAI,IACpB,YAAlBxhC,EAAMwhC,QAAwB,EAAI,GAClC,IACD;AAuHJ,OApHAppB,GAAgB,CACdkJ,KAAM,CACJF,QAAS,UAIblE,IAAU,KACR,MAAM6kB,KAAc/hC,EAAMmrB,QAAS/P,EAAM+P,OACnC6W,KAAc5mB,EAAMojB,QAASx+B,EAAMw+B,OAEnCqD,EAAYzmB,EAAMymB;AAGxB,OAFAD,EAAWlhC,SAAWV,EAAMyhC,WAAYI,GAExClkB,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,YACA,CACE,sBAAuB3X,EAAMykB,SAC7B,sBAAuBzkB,EAAM6e,SAC7B,kBAAmB7e,EAAMyH,KACzB,sBAAuBzH,EAAM2hC,SAC7B,CAAE,sBAAqB3hC,EAAMwhC,YAAY,GAE3C7F,EAAuBj7B,MACvBugC,EAAcvgC,MACd2gC,EAAiB3gC,MACjBs7B,EAAet7B,MACfoyB,EAAapyB,MACbmwB,EAAWnwB,MACXV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtBV,EAAMkP,QACP,CAAAuI,QAAAA,IAECuqB,CAAAA,GAAQrkB,EAAAA,YAAA,MAAA,CAAAna,IAAA,QAAAmU,MAAA,oBAAA,CAEHyD,EAAMojB,MAIY7gB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,iBAAAiV,UAKLzY,EAAMw+B,MAAKlnB,SACb,CACR0mB,KAAM,CACJZ,OAAO,EACPQ,IAAK59B,EAAMw+B,SAGGpjB,EAAMojB,OAhBd7gB,EAAAA,YAAAqgB,GAAA,CAAAx6B,IAAA,YAAA45B,OAAA,EAAAQ,IAIJ59B,EAAMw+B,OAAK7gB,QAgBxBA,EAAAA,YAAAoc,GAAA,CAAAziB,SAGW,CACRqK,MAAO,CACLjT,OAAQvN,EAAc2gC,EAAcphC,UAEvC,CAAA+W,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,qBAAAzI,MAIQ,CAAER,OAAQvN,EAAc2gC,EAAcphC,SAAQ,CAEnD0a,EAAM6mB,SAAOtkB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,sBAETyD,CAAAA,EAAM6mB,cAIVF,GAAQpkB,EAAAC,YAAA+W,GAAA,CAAAnxB,IAAA,QAAAmO,KAC0B3R,EAAMmrB,OAAK,CACxCxZ,KAAMyJ,EAAM+P,QAIjB/P,EAAM3D,YAEN2D,EAAM8mB,QAAMvkB,EAAAC,YAAA,MAAA,CAAAjG,MAAA,qBAAA,CAERyD,EAAM8mB,kBAEXvkB,EAAAC,YAAAmc,GAAA,CAAAziB,SAKO,CACRqK,MAAO,CACLjT,OAAQvN,EAAcugC,EAAgBhhC,UAEzC,CAAA+W,QAAAA,IAAAkG,CAAAA,cAAAic,GAAA,KAAA,CAAAniB,QAAAA,IAAA,CAGGmqB,EAAWlhC,OAAKid,EAAAA,YAAA,MAAA,CAAAhG,MAAA,uBAAAzI,MAGP,CAAER,OAAQvN,EAAcugC,EAAgBhhC,SAAQ,CAErDmhC,gBAST,CACLC,cAAAA,EACAJ,gBAAAA,MCjMOS,GAAkB9qB,GAAa,CAC1C+qB,aAAc,CACZ96B,KAAM/F,QAER8gC,gBAAiB,CACf/6B,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,MAEV;AC9BI,SAAS6qB,KACd,MAAM5B,EAAWzzB,cAAW;AAE5Bs1B,EAAAA,WAAU,KACR3jC,OAAO83B,uBAAsB,KAC3BgK,EAAShgC,OAAQ;AAQrB,MAAO,CAAE8hC,cAJa94B,EAAQA,UAAC,IAAOg3B,EAAShgC,WAE1ClB,EAFmD,CACtDsnB,WAAY,qBAGU4Z,SAAUxzB,EAAQA,SAACwzB,ICItC,MAAM+B,GAAmBprB,GAAa,CAC3CqrB,eAAgBnhC,OAChBohC,WAAY,CACVr7B,KAAMgd,QACN7M,SAAS,GAEXrM,SAAU,CACR9D,KAAM/F,OACNkW,QAAS,MACTwkB,UAAYv7B,GAAe,CAAC,MAAO,UAAUqF,SAASrF,OAGrD6gC,QACAhd,QACA4d,KAEHzzB,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEV,WAEUgL,GAAU5H,IAAAA,CAAkC,CACvDzQ,KAAM,UAENpK,MAAOyiC,KAEPtE,MAAO,CACL,oBAAsBz9B,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMs0B,EAAc5qB,EAAAA,MACd6qB,EAAWta,GAAgBvoB,EAAO,cAClC0iC,EAAiBh5B,EAAAA,UAAS,KAC9B,MAAMo5B,EAAW,IAAIj/B,IAAI7D,EAAM0iC,gBAAgBpiC,MAAM,MAAQ;AAC7D,MAAO,CACLyiC,KAAMD,EAASv/B,IAAI,QACnBy/B,UAAWF,EAASv/B,IAAI,cACxB0/B,SAAUH,EAASv/B,IAAI,YACvBsb,SAAUikB,EAASv/B,IAAI,YACvB2/B,QAASJ,EAASv/B,IAAI,WACtB4/B,UAAWL,EAASv/B,IAAI,kBAItB6/B,EAAY15B,EAAAA,UAAS,KACzB,MAAMo5B,EAAWJ,EAAehiC;AAChC,OACEoiC,EAASC,MACTD,EAASE,WACTF,EAASG,UACTH,EAASjkB,UACTikB,EAASI,SACTJ,EAASK,YAERN,EAASniC,UAGR2iC,cACJA,EAAahB,gBACbA,EAAeiB,cACfA,EAAaC,YACbA,GF5CC,SACLvjC,GAEA,IADAyK,EAAqB1J,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAExB,MAAMqiC,UAAEA,GAAc34B;AACtB,IAAI+4B,EAAiB;AACrB,MAAM38B,EAASmR,MAA6B,MACtCqrB,EAAgBp2B,aAAW,GAC3Bw2B,EAAcx2B,aAAW,GACzBy2B,EAAmBz2B,aAAW,GAC9B02B,EAAiB12B,cAAW,GAC5Bq2B,EAAgBr2B,cAAW,GAE3Bo1B,EAAkB34B,EAAAA,UAAS,IACxBjI,OAAOzB,EAAMqiC,mBAOhBkB,EAAc75B,EAAAA,UAAS,IACpBnE,GAAQ88B,EAAgB3hC,MAAQ2iC,EAAc3iC,OAAS2hC,EAAgB3hC,OAAU,KAGpFkjC,EAAWA,KACf,MAAMC,EAAWh9B,EAAOnG;CAEnBmjC,GAAaT,IAAcA,EAAU1iC,QAE1C8iC,EAAiBH,EAAc3iC,MAC/B2iC,EAAc3iC,MAAS,WAAYmjC,EAAYA,EAASC,YAAcD,EAASE,UAE/ET,EAAc5iC,MAAQ2iC,EAAc3iC,MAAQ8iC,EAC5CE,EAAiBhjC,MAAQgF,KAAKe,IAAI48B,EAAc3iC,MAAQ2hC,EAAgB3hC;AAoC1E,OAjCAkjB,EAAKA,MAAC0f,GAAe,KACnBG,EAAY/iC,MAAQ+iC,EAAY/iC,OAAS2iC,EAAc3iC,SAGzDkjB,EAAKA,MAAC+f,GAAgB,KACpBF,EAAY/iC,MAAQ,KAGtB6hC,EAAAA,WAAU,KACR3e,EAAAA,OAAM,IAAM5jB,EAAMoiC,eAAcA,IAC9B,MAAM4B,EAAY5B,EAAe52B,SAASusB,cAAcqK,GAAgBxjC;AAEnEolC,EAKDA,IAAcn9B,EAAOnG,QAEzBmG,EAAOnG,OAAOkQ,oBAAoB,SAAUgzB,GAC5C/8B,EAAOnG,MAAQsjC,EACfn9B,EAAOnG,MAAMmQ,iBAAiB,SAAU+yB,EAAU,CAAEK,SAAS,KAR3DxxB,GAAa,4CAA2C2vB,OASzD,CAAE/Z,WAAW,OAGlB3E,EAAAA,iBAAgB,KACd7c,EAAOnG,OAAOkQ,oBAAoB,SAAUgzB,MAK9CR,GAAaxf,EAAAA,MAAMwf,EAAWQ,EAAU,CAAEvb,WAAW,IAE9C,CACLga,gBAAAA,EACAgB,cAAAA,EACAK,iBAAAA,EACAC,eAAAA,EACAJ,YAAAA,EAKAD,cAAAA,EACAG,YAAAA,GEpCIS,CAAUlkC,EAAO,CAAEojC,UAAAA,IAEjBe,EAAUz6B,YAAS,IACvBg5B,EAAehiC,MAAMqiC,MACrBL,EAAehiC,MAAMsiC,YAEjBoB,EAAc16B,EAAAA,UAAS,IAAM1J,EAAM6e,UACvC6jB,EAAehiC,MAAMme,WACpB6jB,EAAehiC,MAAMuiC,SAAWM,EAAY7iC,MAAQ,EAA0B,IAAtB6iC,EAAY7iC,SAEjE2jC,EAAS36B,EAAAA,UAAS,IAAM1J,EAAMyH,MAClCi7B,EAAehiC,MAAMsiC,YACpBH,EAASniC,OAEVgiC,EAAehiC,MAAMwiC,UACpBR,EAAehiC,MAAMuiC,SAAWI,EAAc3iC,MAAQ,EAA4B,IAAxB2iC,EAAc3iC,SAErE62B,EAAU7tB,EAAAA,UAAS,IACvBg5B,EAAehiC,MAAMyiC,UAChBT,EAAehiC,MAAMuiC,SAAW,EAAIM,EAAY7iC,MAAQ6iC,EAAY7iC,WACrElB,IAEAkP,EAAShF,EAAAA,UAAS,KACtB,MAAMgF,EAASjN,OAAOmhC,EAAYliC,OAAOohC,eAAiB9hC,EAAM0O,QAC1DgzB,EAAkBjgC,OAAOmhC,EAAYliC,OAAOghC,iBAAmB;AAErE,OAAKyC,EAAQzjC,MAEN2iC,EAAc3iC,MAAQ2hC,EAAgB3hC,OAASgiC,EAAehiC,MAAMsiC,UACtEt0B,EAASgzB,EACVhzB,EAJwBA,EAASgzB;AAOvC1Z,GAAete,EAAQA,UAAC,MAAQ1J,EAAM0iC,kBAAiB,KACrD/4B,EAAAA,aAAY,KACNw6B,EAAQzjC,MACNgiC,EAAehiC,MAAMuiC,SACvBJ,EAASniC,MAAQ2iC,EAAc3iC,MAAQ2hC,EAAgB3hC,MAEvDmiC,EAASniC,MAAQ4iC,EAAc5iC,OAAU2iC,EAAc3iC,MAAQ2hC,EAAgB3hC,MAGjFmiC,EAASniC,OAAQ;AAKvB,MAAM8hC,cAAEA,GAAkBF,MACpBhd,iBAAEA,EAAgBV,cAAEA,GAAkBK,GAAc,CACxDC,GAAIllB,EAAMoK,KACVoa,MAAO9a,EAAQA,UAAC,IAAMyL,SAASnV,EAAMwkB,MAAO,MAC5CoC,SAAU0X,EAAAA,MAAMt+B,EAAO,YACvBinB,WAAYvY,EACZwY,YAAaja,EAAUA,gBAACzN,GACxBimB,OAAQod,EACRpe,SAAU6Z,EAAAA,MAAMt+B,EAAO;AAiCzB,OA9BAkd,IAAU,KACR,MAAMonB,EAAexiB,GAASpH,YAAY1a;AAE1C,OAAA2d,EAAAC,YAAAkE,GAAA/D,aAAA,CAAA/F,IAEU4qB,EAAWjrB,MACV,CACL,YACA,CACE,oBAAwC,WAAnB3X,EAAMoL,UAE7BpL,EAAM2X,OACPzI,MACM,CACL,IACKoW,EAAiB5kB,MACpB,4BAA6B62B,EAAQ72B,MACrCgO,YAAQlP,KACLgjC,EAAc9hC,OAEnBV,EAAMkP,QAEHo1B,EAAY,CAAAzlB,SACNulB,EAAY1jC,MAAK+G,KACrB48B,EAAO3jC,QACJ0a,MAKTwJ,KCtKL0c,GAAmB,CAAC,KAAM,UAAW,cAAe,WAW7CiD,GAAmBltB,GAAa,CAC3CmqB,QAAS,CACPl6B,KAAM/F,OACNkW,QAAS,UACTwkB,UAAYh7B,GAAWqgC,GAAiBv7B,SAAS9E,KAElD;AAEI,SAASujC,GACdxkC,GAEA,IADAoK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,MAAMyoB,EAAiB/6B,EAAAA,UAAS,IACtB,GAAEU,cAAiBpK,EAAMwhC;AAGnC,MAAO,CAAEiD,eAAAA,GCvBJ,MAAMC,GAAkB,CAC7B,WACA,OACA,QACA,WACA,OACA;AAUK,SAASC,GAAaC,EAAsBx6B,GACjD,OAAAuT,EAAAA,YAAA6W,EAAAA,SAEMoQ,KAAAA,CAAAA,GAAWjnB,EAAAC,YAAA,OAAA,CAAApa,IAAA,UAAAmU,MAAiC,GAAEvN,cAAe,MAAKuT,EAAAC,YAAA,OAAA,CAAApa,IAAA,WAAAmU,MAEtC,GAAEvN,eAAgB,QAK/C,MAAMy6B,GAAmBxtB,GAAa,CAC3CpD,MAAO1S,OACP6f,QAAS,CACP9Z,KAAM/F,OACNkW,QAAS,WACTwkB,UAAYh7B,GAAWyjC,GAAgB3+B,SAAS9E,KAEjD;AAEI,SAAS6jC,GACd9kC,GAEA,IADAoK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,MAAM+oB,EAAiBr7B,EAAAA,UAAS,KAC9B,MAAM0X,QAAEA,GAAY5I,EAAAA,MAAMxY;AAC1B,MAAQ,GAAEoK,cAAiBgX,QAGvBga,aAAEA,EAAYC,YAAEA,GAAgBN,GAASrxB,EAAAA,UAAS,KACtD,MAAM0X,QAAEA,EAAOnN,MAAEA,GAAUuE,EAAAA,MAAMxY;AACjC,MAAO,CACL,CAAC,CAAC,WAAY,QAAQ+F,SAASqb,GAAW,aAAe,QAASnN;AAItE,MAAO,CAAEmnB,aAAAA,EAAcC,YAAAA,EAAa0J,eAAAA,GC5C/B,MAAMC,GAAqB3tB,GAAa,CAC7C4tB,UAAW1jC,OACX2jC,QAAS5gB,WAENwc,QACAppB,QACA6sB,QACArD,QACArF,QACApH,QACApD,QACAwT,MACF,aAEUjiB,GAAY/H,IAAAA,CAAmB,CAC1CzQ,KAAM,YAENpK,MAAOglC,KAEPxqB,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChCykC,eAAEA,GAAmBD,GAAWxkC,IAChCihC,cAAEA,GAAkBD,GAAUhhC,IAC9BqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAW/7B;AAEtCoY,GAAgB,CACdkJ,KAAM,CACJ5S,OAAQ,OACRu2B,UAAW3G,EAAAA,MAAMt+B,EAAO,aACxBiU,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpBwhC,QAASlD,EAAAA,MAAMt+B,EAAO,WACtByH,MAAM,EACN2Z,QAASkd,EAAAA,MAAMt+B,EAAO,cAI1Bkd,IAAU,IACRS,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,cACA,CACE,uBAAwB3X,EAAMklC,SAEhCpS,EAAapyB,MACbugC,EAAcvgC,MACd+jC,EAAe/jC,MACf2gC,EAAiB3gC,MACjBs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACOlP,EAAMkP,OACJkM,QCdP+pB,GAAiB9tB,GAAa,CACzCsrB,WAAY,CACVr7B,KAAM,KACNmQ,aAASjY,GAEX4lC,SAAU9gB,QACV+gB,UAAW,CAAC/gB,QAAS/iB,QACrBkE,IAAKhE,OACL6jC,cAAe/jC,OACfkX,SAAU6L,SACT,SAEUihB,GAAqBluB,GAAa,CAC7C3W,MAAO,KACP+X,SAAU6L,QACVghB,cAAe/jC,QACd;AAiBI,SAASikC,GACdxlC,EACAylC,GAEyB,IADzBjoB,IAAQzc,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,KAAAA,UAAA;AAER,MAAMqY,EAAKC,GAAmB;AAE9B,IAAKD,EACH,MAAM,IAAIjB,MACR;AAIJ,MAAM+M,EAAK9I;AAEXnD,UAAQpB,OAAOC,IAAK,GAAE2tB,EAAUC,kBAAmBxgB;AAEnD,MAAM4P,EAAQ5c,EAAAA,OAAOutB,EAAW;AAEhC,IAAK3Q,EAAO,CACV,IAAKtX,EAAU,OAAOsX;AAEtB,MAAM,IAAI3c,MAAO,2DAA0DstB,EAAUC,eAGvF,MAAMhlC,EAAQ49B,EAAAA,MAAMt+B,EAAO,SACrByY,EAAW/O,YAAS,OAASorB,EAAMrc,SAAS/X,QAASV,EAAMyY;AAEjEqc,EAAMtP,SAAS,CACbN,GAAAA,EACAxkB,MAAAA,EACA+X,SAAAA,GACCW,GAEHsK,EAAAA,iBAAgB,KACdoR,EAAMpP,WAAWR;AAGnB,MAAMygB,EAAaj8B,EAAAA,UAAS,IACnBorB,EAAM6Q,WAAWzgB,KAGpBogB,EAAgB57B,EAAAA,UAAS,IAAMi8B,EAAWjlC,OAAS,CAACo0B,EAAMwQ,cAAc5kC,MAAOV,EAAMslC;AAM3F,OAJA1hB,EAAKA,MAAC+hB,GAAYjlC,IAChB0Y,EAAG+P,KAAK,iBAAkB,CAAEzoB,MAAAA,MAC3B,CAAEkJ,MAAO,SAEL,CACLsb,GAAAA,EACAygB,WAAAA,EACAC,OAAQA,IAAM9Q,EAAM+Q,OAAO3gB,GAAKygB,EAAWjlC,OAC3CmlC,OAASnlC,GAAmBo0B,EAAM+Q,OAAO3gB,EAAIxkB,GAC7C4kC,cAAAA,EACA5kC,MAAAA,EACA+X,SAAAA,EACAqc,MAAAA,GAIG,SAASgR,GACd9lC,EACAylC,GAEA,IAAIxG,GAAc;AAClB,MAAMzY,EAAQ/c,WAAsB,IAC9Bs8B,EAAWxd,GACfvoB,EACA,aACA,IACAiB,GACW,MAALA,EAAkB,GAEf+kC,GAAOxf,EAAOlhB,EAAYrE,MAEnCA,IACE,MAAM6I,EA8KZ,SAAoB0c,EAA+Byf,GACjD,MAAM98B,EAAoB;AAU1B,OARA88B,EAAI1hC,SAAQ2gB,IACV,MAAMghB,EAAY1f,EAAMc,WAAU9mB,GAAQA,EAAK0kB,KAAOA;AACtD,IAAKghB,EAAW,CACd,MAAM1lC,EAAOgmB,EAAM0f;AACnB/8B,EAAOH,KAAmB,MAAdxI,EAAKE,MAAgBF,EAAKE,MAAQwlC,OAI3C/8B,EAzLSg9B,CAAU3f,EAAOvlB;AAE7B,OAAOjB,EAAMolC,SAAWt7B,EAAMA,EAAI,MAIhCs8B,EAAU/sB,GAAmB;AAoCnC,SAASgtB,IACP,MAAM7lC,EAAOgmB,EAAMO,MAAKvmB,IAASA,EAAKiY;AAClCjY,GAA4B,UAApBR,EAAMqlC,YAA0BU,EAASrlC,MAAMnB,SACzDwmC,EAASrlC,MAAQ,CAACF,EAAK0kB,KA4D3B,SAASohB,EAAM9P,GAIb,GAFIx2B,EAAMolC,UAAU3yB,GAAY,2DAE3BszB,EAASrlC,MAAMnB,OAGb,CACL,MAAMgnC,EAAYR,EAASrlC,MAAM,GAC3B8lC,EAAehgB,EAAMc,WAAU7nB,GAAKA,EAAEylB,KAAOqhB;AAEnD,IAAIE,GAAYD,EAAehQ,GAAUhQ,EAAMjnB,OAC3CmnC,EAAUlgB,EAAMigB;AAEpB,KAAOC,EAAQjuB,UAAYguB,IAAaD,GACtCC,GAAYA,EAAWjQ,GAAUhQ,EAAMjnB,OACvCmnC,EAAUlgB,EAAMigB;AAGlB,GAAIC,EAAQjuB,SAAU;AAEtBstB,EAASrlC,MAAQ,CAAC8lB,EAAMigB,GAAUvhB,QAjBR,CAC1B,MAAM1kB,EAAOgmB,EAAMO,MAAKvmB,IAASA,EAAKiY;AACtCjY,IAASulC,EAASrlC,MAAQ,CAACF,EAAK0kB,MA9DpCqd,EAAAA,WAAU,KACR8D,OAGF3iB,EAAAA,iBAAgB,KACdub,GAAc,KAGhB0H,EAAAA,WAAU,KAER,IAAK,IAAIlnC,EAAI,EAAGA,EAAI+mB,EAAMjnB,OAAQE,IAC5B+mB,EAAM/mB,GAAGmnC,kBACXpgB,EAAM/mB,GAAGiB,MAAQjB;AAqEvB,MAAMquB,EAAsB,CAC1BtI,SA3HF,SAAmBhlB,EAAiB4Y,GAElC,MAAMytB,EAAYrmC,EAIZ2V,EADWnO,EADL6P,OAAOC,IAAK,GAAE2tB,EAAUC,kBACUU,GAASn+B,OAChCjC,QAAQoT;AAED,MAA1BZ,QAAMquB,EAAUnmC,SAClBmmC,EAAUnmC,MAAQyV,EAClB0wB,EAAUD,iBAAkB,GAG1BzwB,GAAS,EACXqQ,EAAMa,OAAOlR,EAAO,EAAG0wB,GAEvBrgB,EAAMxd,KAAK69B,IA4GbnhB,WAxGF,SAAqBR,GACnB,GAAI+Z,EAAa;AAMjBoH;AAEA,MAAMlwB,EAAQqQ,EAAMc,WAAU9mB,GAAQA,EAAK0kB,KAAOA;AAClDsB,EAAMa,OAAOlR,EAAO,IA+FpB4vB,SAAAA,EACAF,OApEF,SAAiB3gB,EAAYxkB,GAC3B,MAAMF,EAAOgmB,EAAMO,MAAKvmB,GAAQA,EAAK0kB,KAAOA;AAC5C,IAAIxkB,IAASF,GAAMiY,SAEnB,GAAIzY,EAAMolC,SAAU,CAClB,MAAMnc,EAAgB8c,EAASrlC,MAAM0I,QAC/B+M,EAAQ8S,EAAc3B,WAAUrmB,GAAKA,IAAMikB,IAC3CygB,GAAcxvB;AAMpB,GALAzV,EAAQA,IAAUilC,EAMhBA,GACA3lC,EAAMqlC,WACNpc,EAAc1pB,QAAU,EACxB;AAIF,IACGomC,GACY,MAAb3lC,EAAMyF,KACNwjB,EAAc1pB,OAAS,EAAIS,EAAMyF,IACjC;AAEE0Q,EAAQ,GAAKzV,EAAOuoB,EAAcjgB,KAAKkc,GAClC/O,GAAS,IAAMzV,GAAOuoB,EAAc5B,OAAOlR,EAAO,GAE3D4vB,EAASrlC,MAAQuoB,MACZ,CACL,MAAM0c,EAAaI,EAASrlC,MAAMqF,SAASmf;AAC3C,GAAIllB,EAAMqlC,WAAaM,EAAY;AAEnCI,EAASrlC,MAASA,IAAUilC,EAAc,CAACzgB,GAAM,KAkCnDzM,SAAU6lB,EAAAA,MAAMt+B,EAAO,YACvB8Y,KAAMA,IAAMwtB,EAAK9f,EAAMjnB,OAAS,GAChC+f,KAAMA,IAAMgnB,EAAK,GACjBX,WAAazgB,GAAe6gB,EAASrlC,MAAMqF,SAASmf,GACpDogB,cAAe57B,EAAQA,UAAC,IAAM1J,EAAMslC,gBACpC9e,MAAO9c,EAAAA,UAAS,IAAM8c,IACtBsgB,aAAepmC,GAQnB,SAAuB8lB,EAA+B9lB,GACpD,MAAMulC,EAAMD,GAAOxf,EAAO,CAAC9lB;AAE3B,OAAKulC,EAAI1mC,OAEFinB,EAAMc,WAAU9mB,GAAQA,EAAK0kB,KAAO+gB,EAAI,MAFtB,EAXWa,CAAatgB,EAAO9lB;AAKxD,OAFAuY,UAAQwsB,EAAW3X,GAEZA,EAWT,SAASkY,GAAQxf,EAA+Bmc,GAC9C,MAAMsD,EAAgB;AAatB,OAXAtD,EAAWp+B,SAAQ7D,IACjB,MAAMF,EAAOgmB,EAAMO,MAAKvmB,GAAQd,EAAUgB,EAAOF,EAAKE,SAChDqmC,EAAcvgB,EAAM9lB;AAEP,MAAfF,GAAME,MACRulC,EAAIj9B,KAAKxI,EAAK0kB,IACU,MAAf6hB,GACTd,EAAIj9B,KAAK+9B,EAAY7hB,OAIlB+gB,EC7TF,MAAMe,GAA+CnvB,OAAOC,IAAI,wBAM1DmvB,GAAsB5vB,GAAa,IAC3C2tB,QACAG,MACF,cAEU+B,GAAarsB,IAAAA,CAMuB,CAC/CzQ,KAAM,aAENpK,MAAOinC,KAEP9I,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMq3B,WAAEA,EAAUrmB,KAAEA,EAAIxG,KAAEA,EAAI+sB,OAAEA,EAAME,SAAEA,GAAaD,GAAS9lC,EAAOgnC;AAyBrE,OAvBA9pB,IAAU,KACR,MAAMiqB,EAAgBvkB,GAAUlI,YAAY1a;AAE5C,OAAA2d,EAAAC,YAAAgF,GAAA7E,aAAA,CAAApG,MAEW,CACL,eACA3X,EAAM2X,QAEHwvB,EAAa,CAAAj4B,MACVlP,EAAMkP,QAAK,CAAAuI,QAAAA,IAAA,CAEjB2D,EAAM3D,UAAU,CAChBkuB,WAAAA,EACArmB,KAAAA,EACAxG,KAAAA,EACA+sB,OAAAA,EACAE,SAAAA,UAMD,CACLzmB,KAAAA,EACAxG,KAAAA,EACA+sB,OAAAA,MCvEAuB,GAAkB,CAAC,UAAW,QAAS,UAAW,QAAS,WAOpDC,GAAgBhwB,GAAa,CACxCxO,KAAM,CACJvB,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,YAEV;AAEI,SAAS6vB,GACdtnC,GAEA,IADAoK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,OAAO1S,GAAiB,KACtB,IAAIi+B,EACAC;AASJ,OARIzhC,EAASqhC,GAAiBpnC,EAAM6I,MAClC0+B,EAAe,GAAEn9B,WAAcpK,EAAM6I,OAC5B7I,EAAM6I,OACf2+B,EAAa,CACX/4B,MAAOtN,EAAcnB,EAAM6I,MAC3B6F,OAAQvN,EAAcnB,EAAM6I,QAGzB,CAAE0+B,YAAAA,EAAaC,WAAAA,MClBnB,MAAMC,GAAiBpwB,GAAa,CACzCpD,MAAO1S,OACPkX,SAAU6L,QACVxjB,MAAOwjB,QACPzhB,IAAKyhB,QACL/G,KAAMH,MAEH1F,QACA2vB,QACA5S,GAAa,CAAEvZ,IAAK,SACpBmW,MACF,SAEUqW,GAAQ7sB,IAAAA,CAAmB,CACtCzQ,KAAM,QAENpK,MAAOynC,KAEPjtB,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAMq5B,EAAW3vB,EAAAA,OAEX8a,aAAEA,GAAiBgB,GAAa9zB,IAChC4nC,SAAEA,GxC4KY5nC,CAAAA,IACtB,MAAM+hB,EAAQ7J,SAAOmF;AAErB,IAAK0E,EAAO,MAAM,IAAI5J,MAAM;AA4C5B,MAAO,CAAEyvB,SA1CQl+B,EAAAA,UAAuB,KACtC,MAAMm+B,EAAYrvB,QAAMxY;AAExB,IAAK6nC,EAAW,MAAO,CAAE1/B,UAAWsV;AAEpC,IAAIF,EAA8BsqB;AAYlC,GAVoB,iBAATtqB,IACTA,EAAOA,EAAKzX,OAERyX,EAAK5N,WAAW,OAClB4N,EAAOwE,EAAMpD,UAAUpB,EAAKnU,MAAM,MAIjCmU,GAAM9K,GAAa,gCAA+Bo1B,MAEnDlnC,MAAMC,QAAQ2c,GAChB,MAAO,CACLpV,UAAW0V,GACXN,KAAAA;AAEG,GAAoB,iBAATA,EAChB,MAAO,CACLpV,UAAWsV,GACXF,KAAAA;AAIJ,MAAMuqB,EAAc/nC,OAAOE,KAAK8hB,EAAMxD,MAAMwI,MAC1CghB,GAA2B,iBAATxqB,GAAqBA,EAAK5N,WAAY,GAAEo4B,QAGtDC,EAAWF,EAAcvqB,EAAKnU,MAAM0+B,EAAYvoC,OAAS,GAAKge;AAGpE,MAAO,CACLpV,UAHc4Z,EAAMxD,KAAKupB,GAAe/lB,EAAMtD,YAG3BtW,UACnBoV,KAAMyqB,QwCvNaC,CAAQv+B,EAAAA,UAAS,IAAMi+B,EAASjnC,OAASV,EAAMud,SAC9DgqB,YAAEA,GAAgBD,GAAQtnC,IAC1Bw7B,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAagD,EAAKA,MAACt+B,EAAO;AA+CxE,OA7CAkd,IAAU,KACR,MAAMgrB,EAAY9sB,EAAM3D;AACpBywB,IACFP,EAASjnC,MAAQwG,EAAiBghC,GAAWruB,QAAOxS,GAClDA,EAAKC,OAAS6gC,EAAIA,MAAI9gC,EAAKG,UAAqC,iBAAlBH,EAAKG,WACnD,IAAIA;AAER,MAAM4gC,KAAcpjC,EAAMqjC,UAAWrjC,EAAMsjC;AAE3C,OAAA3qB,cAAAiqB,EAAAlnC,MAAAyH,UAAA,CAAA+S,IAEUlb,EAAMkb,IAAGqC,KACRqqB,EAASlnC,MAAM6c,KAAI5F,MACnB,CACL,SACA,cACAmb,EAAapyB,MACb6mC,EAAY7mC,MACZ86B,EAAiB96B,MACjB,CACE,oBAAqB0nC,EACrB,mBAAoBpoC,EAAMyY,SAC1B,gBAAiBzY,EAAMc,MACvB,cAAed,EAAM6C,KAEvB7C,EAAM2X,OACPzI,MACM,CACJq4B,EAAY7mC,WAIRlB,EAJiB,CACpB+oC,SAAUpnC,EAAcnB,EAAM6I,MAC9B6F,OAAQvN,EAAcnB,EAAM6I,MAC5B4F,MAAOtN,EAAcnB,EAAM6I,OAE7B4yB,EAAgB/6B,MAChBV,EAAMkP,OACPgP,KACMkqB,EAAW,cAAW5oC,EAAS,eACvB4oC,EAAQI,SACZJ,EAAWpoC,EAAMyY,UAAY,EAAI,OAAIjZ,GAAS,CAAAiY,QAAAA,IAAA,CAEvDywB,QAKD;AClFJ,SAASO,GAAyBrlB,EAAyCrW,GAChF,MAAM27B,EAAkB1wB,EAAAA,MAClB8kB,EAAiB7vB,cAAW;AAElC,GAAIpO,EAAuB,CACzB,MAAM2kB,EAAW,IAAIqZ,sBAAsBziB,IACzCgJ,IAAWhJ,EAASoJ,GAEpBsZ,EAAep8B,QAAU0Z,EAAQ2M,MAAKqM,GAASA,EAAM0J,mBACpD/vB;AAEH2W,EAAAA,iBAAgB,KACdF,EAASG,gBAGXC,EAAAA,MAAM8kB,GAAiB,CAAC7kB,EAAUC,KAC5BA,IACFN,EAASO,UAAUD,GACnBgZ,EAAep8B,OAAQ,GAGrBmjB,GAAUL,EAASQ,QAAQH,KAC9B,CACDja,MAAO,SAIX,MAAO,CAAE8+B,gBAAAA,EAAiB5L,eAAAA,GCZrB,MAAM6L,GAA6BtxB,GAAa,CACrDuxB,QAASrnC,OACT0S,MAAO1S,OACPsnC,cAAe,CAACvkB,QAAS/iB,QACzBohC,WAAY,CACVr7B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXqxB,OAAQ,CACNxhC,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXhJ,MAAO,CACLnH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,MAGRC,QACA2vB,QACA5S,GAAa,CAAEvZ,IAAK,WACpBmW,MACF,qBAMU0X,GAAoBluB,IAAAA,CAA2C,CAC1EzQ,KAAM,oBAENpK,MAAO2oC,KAEPnuB,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MACM06B,EAAgB,EAAItjC,KAAKujC,GADD,GAGxBrwB,EAAOZ,EAAAA,OAEP8a,aAAEA,GAAiBgB,GAAa9zB,IAChCunC,YAAEA,EAAWC,WAAEA,GAAeF,GAAQtnC,IACtCw7B,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAagD,EAAKA,MAACt+B,EAAO,WAChEw7B,iBAAkB0N,EAAsBzN,gBAAiB0N,GAAwB7N,GAAagD,EAAKA,MAACt+B,EAAO,aAC7G0oC,gBAAEA,EAAe5L,eAAEA,GAAmB2L,MACtCnlB,UAAEA,EAASC,YAAEA,GAAgBJ,KAE7BimB,EAAkB1/B,EAAQA,UAAC,IAAMhE,KAAKD,IAAI,EAAGC,KAAKF,IAAI,IAAKsK,WAAW9P,EAAM2iC,gBAC5El0B,EAAQ/E,EAAAA,UAAS,IAAMjI,OAAOzB,EAAMyO,SACpC5F,EAAOa,EAAAA,UAAS,IAEb89B,EAAW9mC,MACde,OAAOzB,EAAM6I,MACb0a,EAAY7iB,MACV6iB,EAAY7iB,MAAM+N,MAClB/I,KAAKD,IAAIgJ,EAAM/N,MAAO,MAExB2oC,EAAW3/B,EAAAA,UAAS,IAtBI,IAsB4B,EAAI+E,EAAM/N,MAAQmI,EAAKnI,OAAU,IACrF4oC,EAAc5/B,YAAS,IAAM+E,EAAM/N,MAAQmI,EAAKnI,MAAQ2oC,EAAS3oC,QACjE6oC,EAAmB7/B,EAAAA,UAAS,IAAMvI,GAAgB,IAAMioC,EAAgB1oC,OAAS,IAAOsoC;AA0E9F,OAxEAr/B,EAAAA,aAAY,KACV++B,EAAgBhoC,MAAQkY,EAAKlY,MAC7B4iB,EAAU5iB,MAAQkY,EAAKlY,SAGzBwc,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAlD,IAEAY,EAAIjB,MACH,CACL,sBACA,CACE,uCAAwC3X,EAAM6oC,cAC9C,+BAAgC/L,EAAep8B,MAC/C,sCAA+D,mBAAxBV,EAAM6oC,eAE/C/V,EAAapyB,MACb6mC,EAAY7mC,MACZ86B,EAAiB96B,MACjBV,EAAM2X,OACPzI,MACM,CACLs4B,EAAW9mC,MACX+6B,EAAgB/6B,MAChBV,EAAMkP,OACPgP,KAAA,cAAA,gBAAA,IAAA,gBAAA,MAAA,gBAIele,EAAM6oC,mBAAgBrpC,EAAY4pC,EAAgB1oC,OAAK,CAAA+W,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAA1O,MAG9D,CACLG,UAAY,wBAAuB5N,OAAOzB,EAAM8oC,gBACjD9qB,MAAA,6BAAAC,QAEU,OAAMorB,EAAS3oC,SAAS2oC,EAAS3oC,SAAO,CAAAid,EAAAC,YAAA,SAAA,CAAAjG,MAG1C,CACL,gCACAuxB,EAAqBxoC,OACtBwO,MACOi6B,EAAoBzoC,MAAK8oC,KAAA,cAAAC,GAAA,MAAAC,GAAA,MAAA53B,EApEX,GAwEG,eACVw3B,EAAY5oC,MAAK,mBACbsoC,EAAa,oBACZ,GAAC,MAAArrB,EAAAC,YAAA,SAAA,CAAAjG,MAAA,+BAAA6xB,KAAA,cAAAC,GAAA,MAAAC,GAAA,MAAA53B,EA3EC,GAmFG,eACVw3B,EAAY5oC,MAAK,mBACbsoC,EAAa,oBACZO,EAAiB7oC,OAAK,QAI5C0a,EAAM3D,SAAOkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,gCAETyD,CAAAA,EAAM3D,QAAQ,CAAE/W,MAAO0oC,EAAgB1oC,eAM1C,MC3ILipC,GAAc,CAClB57B,OAAQ,SACRC,IAAK,SACLC,OAAQ,MACRtL,KAAM,QACNC,MAAO,QAOIgnC,GAAoBvyB,GAAa,CAC5CjM,SAAU7J,QACT;AAEI,SAASsoC,GAAa7pC,GAA2E,IAArD8pC,EAAQ/oC,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,IAAAA,UAAA,GAAUy1B,EAAiCz1B,UAAAxB,OAAAwB,EAAAA,kBAAAvB;AACpG,MAAMkO,MAAEA,GAAUyjB,KAEZ4Y,EAAiBrgC,EAAAA,UAAS,KAC9B,IAAK1J,EAAMoL,SAAU,MAAO;AAE5B,MAAMuC,KAAEA,EAAIC,MAAEA,GAAUJ,GACtBxN,EAAMoL,SAAS9K,MAAM,KAAKf,OAAS,EAC/BS,EAAMoL,SACL,GAAEpL,EAAMoL,kBACbsC,EAAMhN;AAGR,SAASspC,EAAWr8B,GAClB,OAAO6oB,EACHA,EAAO7oB,GACP,EAGN,MAAMga,EAAS;AA4Bf,MA1Ba,WAATha,IACEm8B,EAAUniB,EAAOgiB,GAAYh8B,IAAU,eAAcq8B,EAAUr8B,QAC9Dga,EAAOha,GAAQ,GAER,WAAVC,EACEk8B,EAAUniB,EAAOgiB,GAAY/7B,IAAW,eAAco8B,EAAUp8B,QAC/D+Z,EAAO/Z,GAAS,GAER,WAATD,EAAmBga,EAAO3Z,IAAM2Z,EAAOhlB,KAAO,MAEhDglB,EAAQ,CACN3Z,IAAK,OACLC,OAAQ,OACRtL,KAAM,MACNC,MAAO,OACG+K,IAAS,MAEvBga,EAAOtY,UAAY,CACjBrB,IAAK,mBACLC,OAAQ,mBACRtL,KAAM,mBACNC,MAAO,mBACPmL,OAAQ,yBACRJ,IAGGga;AAGT,MAAO,CAAEoiB,eAAAA,GCvDJ,MAAME,GAA2B5yB,GAAa,CACnDoN,SAAUH,QACVmB,OAAQ,CACNne,KAAMgd,QACN7M,SAAS,GAEXmxB,QAASrnC,OACT2oC,UAAW,CAACzoC,OAAQF,QACpB4oC,YAAa,CACX7iC,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEX2yB,YAAa7oC,OACb8oC,cAAe,CAAC5oC,OAAQF,QACxB+oC,UAAWhmB,QACXrQ,MAAO1S,OACPmN,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXoxB,cAAevkB,QACf7e,IAAK,CACH6B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEXkrB,WAAY,CACVr7B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEX8f,QAAS,CAAC91B,OAAQF,QAClBgpC,QAASjmB,QACTkmB,OAAQlmB,QACRmmB,QAASnmB,QACTomB,WAAYpmB,WAET5M,QACAkyB,GAAkB,CAAEx+B,SAAU,WAC9BywB,QACApH,QACApD,MACF,mBAEUsZ,GAAkB9vB,IAAAA,CAAyC,CACtEzQ,KAAM,kBAENpK,MAAOiqC,KAEP9L,MAAO,CACL,oBAAsBz9B,IAAkB,GAG1C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMs8B,EAAWriB,GAAgBvoB,EAAO,eAClC0N,MAAEA,EAAKmjB,WAAEA,GAAeM,MACxB2B,aAAEA,GAAiBgB,GAAa9zB,IAChC+pC,eAAEA,GAAmBF,GAAY7pC,IACjCw7B,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAat7B,EAAO,UAC5D27B,uBACJA,EAAsBC,sBACtBA,GACEF,GAAmBhyB,EAAAA,UAAS,IAAM1J,EAAM4oC,SAAW5oC,EAAMiU,UAE3D0nB,uBAAwBkP,EACxBjP,sBAAuBkP,GACrBpP,GAAmBhyB,YAAS,IAAM1J,EAAMoqC,aAAepqC,EAAM4oC,SAAW5oC,EAAMiU,UAEhF0nB,uBAAwBoP,EACxBnP,sBAAuBoP,GACrBtP,GAAmB17B,EAAO,UACxBg8B,eAAEA,GAAmBD,GAAW/7B,IAChC0oC,gBAAEA,EAAe5L,eAAEA,GAAmB2L,KAEtChjC,EAAMiE,EAAAA,UAAS,IAAMoG,WAAW9P,EAAMyF,OACtCiJ,EAAShF,EAAAA,UAAS,IAAMoG,WAAW9P,EAAM0O,UACzCu8B,EAAmBvhC,EAAQA,UAAC,IAAMnE,EAAMuK,WAAW9P,EAAMmqC,aAAe1kC,EAAI/E,MAAQ,IAAK,EAAG,OAC5F0oC,EAAkB1/B,EAAQA,UAAC,IAAMnE,EAAMuK,WAAW86B,EAASlqC,OAAS+E,EAAI/E,MAAQ,IAAK,EAAG,OACxFwqC,EAAaxhC,EAAAA,UAAS,IAAMgE,EAAMhN,QAAUV,EAAMuqC,UAClDzjB,EAAapd,EAAAA,UAAS,IAAM1J,EAAM6oC,cAAgB,kBAAoB;AAE5E,SAASsC,EAAaC,GACpB,IAAK1C,EAAgBhoC,MAAO;AAE5B,MAAMiC,KAAEA,EAAIC,MAAEA,EAAK6L,MAAEA,GAAUi6B,EAAgBhoC,MAAMqO,wBAC/CrO,EAAQwqC,EAAWxqC,MAAS+N,EAAQ28B,EAAEC,SAAYzoC,EAAQ6L,GAAS28B,EAAEC,QAAU1oC;AAErFioC,EAASlqC,MAAQgF,KAAKqO,MAAMrT,EAAQ+N,EAAQhJ,EAAI/E,OA0HlD,OAvHAwc,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAlD,IAEA0wB,EAAe/wB,MACd,CACL,oBACA,CACE,8BAA+B3X,EAAMykB,SACrC,4BAA6BzkB,EAAMylB,QAAUqX,EAAep8B,MAC5D,6BAA8BwqC,EAAWxqC,MACzC,6BAA8BV,EAAMihB,QACpC,iCAAkCjhB,EAAM0qC,WACxC,6BAA8B1qC,EAAMyqC,SAEtCzO,EAAet7B,MACfoyB,EAAapyB,MACbmwB,EAAWnwB,MACXV,EAAM2X,OACPzI,MACM,CACL,CACEjB,OAA2B,WAAnBjO,EAAMoL,SAAwB,OAAI5L,EAC1CwO,IAAwB,QAAnBhO,EAAMoL,SAAqB,OAAI5L,EACpCkP,OAAQ1O,EAAMylB,OAAStkB,EAAcuN,EAAOhO,OAAS,EACrD,6BAA8BS,EAAcuN,EAAOhO,UAC/CV,EAAMykB,SAAWslB,EAAerpC,MAAQ,IAE9CV,EAAMkP,OACPgP,KAAA,cAAA,cAEale,EAAMylB,OAAS,QAAU,OAAM,gBAAA,IAAA,gBAE7BzlB,EAAMyF,IAAG,gBACTzF,EAAM6oC,mBAAgBrpC,EAAY4pC,EAAgB1oC,MAAK2nC,QAC7DroC,EAAMsqC,WAAaa,GAAW,CAAA1zB,QAAAA,IAAA,CAEtCzX,EAAMwqC,QAAM7sB,EAAAA,YAAA,MAAA,CAAAna,IAAA,SAAAmU,MAGH,CACL,4BACA6jB,EAAiB96B,OAClBwO,MACM,IACFusB,EAAgB/6B,MACnB,CAACwqC,EAAWxqC,MAAQ,OAAS,SAAUS,GAAeuN,EAAOhO,OAC7D4qC,UAAY,GAAEnqC,EAAcuN,EAAOhO,MAAQ,YAC3C62B,QAASznB,WAAW9P,EAAMqqC,eAC1Br8B,IAAM,cAAa7M,EAAcuN,EAAOhO,MAAQ,MAChD+N,MAAOtN,EAAc,IAAM8pC,EAAiBvqC,MAAO,KACnD,gCAAiCS,EAAcuN,EAAOhO,OAASwqC,EAAWxqC,MAAQ,GAAK,MACxF,MAEJid,EAAAC,YAAA,MAAA,CAAAjG,MAGQ,CACL,gCACAgkB,EAAuBj7B,OACxBwO,MACM,CACL0sB,EAAsBl7B,MACtB,CACE62B,QAASznB,WAAW9P,EAAMkqC,WAC1Bz7B,MAAOzO,EAAMwqC,OAAS,OAAIhrC,KAE7B,MAAAme,EAAAC,YAAA,MAAA,CAAAjG,MAIM,CACL,4BACAkzB,EAAmBnqC,OACpBwO,MACM,CACL47B,EAAkBpqC,MAClB,CACE62B,QAASznB,WAAW9P,EAAMqqC,eAC1B57B,MAAOtN,EAAc8pC,EAAiBvqC,MAAO,QAEhDid,MAAAA,EAAAC,YAAAiY,aAAA,CAAAzrB,KAGgB0c,EAAWpmB,OAAK,CAAA+W,QAAAA,IAC/B,CAACzX,EAAM6oC,cASJlrB,EAAAC,YAAA,MAAA,CAAAjG,MAAA,oCAIA,CAAA,CAAC,OAAQ,SAASvQ,KAAImkC,GAAG5tB,EAAAC,YAAA,MAAA,CAAApa,IAEhB+nC,EAAG5zB,MACF,CACL,mCACA4zB,EACAR,EAAgBrqC,OACjBwO,MACO87B,EAAetqC,OAAK,UArBdid,EAAAA,YAAA,MAAA,CAAAhG,MAEX,CACL,iCACAozB,EAAgBrqC,OACjBwO,MACM,CACL87B,EAAetqC,MACf,CAAE+N,MAAOtN,EAAcioC,EAAgB1oC,MAAO,QAC/C,SAmBL0a,EAAM3D,SAAOkG,EAAAA,YAAA,MAAA,CAAAhG,MAAA,8BAETyD,CAAAA,EAAM3D,QAAQ,CAAE/W,MAAO0oC,EAAgB1oC,MAAO8qC,OAAQP,EAAiBvqC,eAM1E,MChNE+qC,GAAkBp0B,GAAa,CAC1CkJ,QAAS,CAAC+D,QAAS/iB,SAClB;AAEI,SAASmqC,GACd1rC,GAEA,IADAoK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,MAAM2vB,EAAgBjiC,EAAAA,UAAS,KAAO,CACpC,CAAE,GAAEU,cAAkBpK,EAAMugB;AAG9B,MAAO,CAAEorB,cAAAA,GAGJ,SAASC,GACd5rC,EAOGsO,GAEH,IADA8M,MAAEA,GAAqB9M;AAEvB,OAAAqP,EAAAA,YAAA,MAAA,CAAAhG,MACgB,GAAE3X,EAAMoK,gBAClBgR,CAAAA,EAAM3D,UAAU,CAChBxD,MAAOjU,EAAMiU,MACb4uB,SAAU7iC,EAAMylB,UACG9H,EAAAC,YAAA+sB,GAAA,CAAAlmB,SAENzkB,EAAMykB,SAAQgB,OAChBzlB,EAAMylB,OAAMxR,MACbjU,EAAMiU,MAAKvF,OAAA,IAAAm6B,eAAA,GAItB,QCrDP,MAAMgD,GAAiB,CAAC,SAAU,WAAY,QAAS,WAAY,UAStDC,GAAoBz0B,GAAa,CAC5CuP,SAAU,CACRtf,KAAM/F,OACN06B,UAAuCh7B,GAAW4qC,GAAe9lC,SAAS9E,KAE3E;AAEI,SAAS8qC,GACd/rC,GAEA,IADAoK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,MAAMgwB,EAAkBtiC,EAAAA,UAAS,IACxB1J,EAAM4mB,SAAY,GAAExc,MAASpK,EAAM4mB,gBAAapnB;AAGzD,MAAO,CAAEwsC,gBAAAA,GCFJ,SAASC,KACd,OAAO5yB,GAAmB,cAAc6yB,OAAOC,QAqB1C,SAASC,GAASpsC,EAAkCgF,GACzD,MAAMqnC,EAAaC,0BAAwB,cAErCC,EAAS7iC,EAAQA,UAAC,OAAS1J,EAAMwsC,OAAQxsC,EAAM4P,MAC/Cg1B,EAAcl7B,EAAAA,UAAS,IACpB6iC,GAAQ7rC,OAASyJ,EAASnF,EAAO,UAAYmF,EAASnK,EAAO;AAGtE,GAA0B,iBAAfqsC,KAA6B,YAAaA,GACnD,MAAO,CACLE,OAAAA,EACA3H,YAAAA,EACA4H,KAAMlO,EAAAA,MAAMt+B,EAAO;AAIvB,MAAMysC,EAAY/iC,EAAAA,UAAS,KAAO,IAC7B1J,EACH4P,GAAI0uB,EAAAA,OAAM,IAAMt+B,EAAM4P,IAAM,SAGxB88B,EAAaL,EAAWD,QAAQK,EAAU/rC,OAE1CisC,EAAOjjC,EAAAA,UAAS,IAAM1J,EAAM4P,GAAK88B,OAAaltC,IAC9CotC,EApDD,WACL,MAAMxzB,EAAKC,GAAmB;AAE9B,OAAO3P,EAAQA,UAAC,IAAM0P,GAAI8yB,OAAOW,SAiDnBC;AAEd,MAAO,CACLP,OAAAA,EACA3H,YAAAA,EACAgI,MAAOD,EAAKjsC,OAAOksC,MACnBG,SAAUJ,EAAKjsC,OAAOqsC,SACtBlK,SAAUn5B,EAAQA,UAAC,MACZijC,EAAKjsC,QACLV,EAAMgtC,MACNJ,EAAMlsC,MAEJisC,EAAKjsC,MAAMusC,eAAevsC,OAAShB,EAAUitC,EAAKjsC,MAAMksC,MAAMlsC,MAAMwsC,MAAON,EAAMlsC,MAAMwsC,OAFrEP,EAAKjsC,MAAMusC,eAAevsC,QAAS,EADnCisC,EAAKjsC,MAAMmiC,UAAUniC,QAAS,KAKzD8rC,KAAM9iC,EAAQA,UAAC,IAAM1J,EAAM4P,GAAK+8B,EAAKjsC,OAAOksC,MAAMlsC,MAAM8rC,KAAOxsC,EAAMwsC,QAIlE,MAAMW,GAAkB91B,GAAa,CAC1Cm1B,KAAMjrC,OACNlB,QAASikB,QACT1U,GAAI,CAACrO,OAAQxB,QACbitC,MAAO1oB,SACN;AAEH,IAAI8oB,IAAe;ACzFnB,MAAMC,GAAax1B,OAAO;AAM1B,SAASxI,GAAWzN,EAAiBlB,GACnCkB,EAAGsN,MAAMG,UAAY3O,EACrBkB,EAAGsN,MAAMo+B,gBAAkB5sC,EAkB7B,SAAS6sC,GAAcnC,GACrB,MAA8B,eAAvBA,EAAExiC,YAAYwB,KAGvB,SAASojC,GAAiBpC,GACxB,MAA8B,kBAAvBA,EAAExiC,YAAYwB,KAGvB,MAmCMqjC,GAAU,CAEdC,KACEtC,EACAxpC,GAEA,IADAlB,EAAoBK,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAEvB,IAAKa,GAAI+rC,SAASC,QAChB;AAGF,MAAMC,EAAYriC,SAASmoB,cAAc,QACnCpjB,EAAY/E,SAASmoB,cAAc;AAEzCka,EAAUja,YAAYrjB,GACtBs9B,EAAUC,UAAY,sBAElBptC,EAAMiX,QACRk2B,EAAUC,WAAc,IAAGptC,EAAMiX;AAGnC,MAAMo2B,OAAEA,EAAMC,MAAEA,EAAKz/B,EAAEA,EAACC,EAAEA,EAACy/B,QAAEA,EAAOC,QAAEA,GAxDxB,SAChB9C,EACAxpC,GAEG,IADHlB,EAAoBK,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GAEnBotC,EAAS,EACTC,EAAS;AAEb,IAAKZ,GAAgBpC,GAAI,CACvB,MAAM5U,EAAS50B,EAAGmN,wBACZlI,EAAS0mC,GAAanC,GAAKA,EAAEiD,QAAQjD,EAAEiD,QAAQ9uC,OAAS,GAAK6rC;AAEnE+C,EAAStnC,EAAOwkC,QAAU7U,EAAO7zB,KACjCyrC,EAASvnC,EAAOynC,QAAU9X,EAAOxoB,IAGnC,IAAI+/B,EAAS,EACTC,EAAQ;AACRpsC,EAAG+rC,SAASY,QACdP,EAAQ,IACRD,EAASnsC,EAAG4sC,YAAc,EAC1BT,EAASrtC,EAAMqN,OAASggC,EAASA,EAASroC,KAAK+oC,MAAMN,EAASJ,IAAW,GAAKK,EAASL,IAAW,GAAK,GAEvGA,EAASroC,KAAK+oC,KAAK7sC,EAAG4sC,aAAe,EAAI5sC,EAAGqb,cAAgB,GAAK;AAGnE,MAAMgxB,GAAcrsC,EAAG4sC,YAAwB,EAATT,GAAe,EAApC,KACXG,GAActsC,EAAGqb,aAAyB,EAAT8wB,GAAe,EAArC,KAEXx/B,EAAI7N,EAAMqN,OAASkgC,EAAaE,EAASJ,EAAX,KAC9Bv/B,EAAI9N,EAAMqN,OAASmgC,EAAaE,EAASL,EAAX;AAEpC,MAAO,CAAEA,OAAAA,EAAQC,MAAAA,EAAOz/B,EAAAA,EAAGC,EAAAA,EAAGy/B,QAAAA,EAASC,QAAAA,GAwBaQ,CAAUtD,EAAGxpC,EAAIlB,GAE7DmI,EAAmB,EAATklC,EAAF;AACdx9B,EAAUu9B,UAAY,sBACtBv9B,EAAUrB,MAAMT,MAAQ5F,EACxB0H,EAAUrB,MAAMR,OAAS7F,EAEzBjH,EAAGgyB,YAAYia;AAEf,MAAMnkC,EAAW9K,OAAOuQ,iBAAiBvN;AACrC8H,GAAkC,WAAtBA,EAASkd,WACvBhlB,EAAGsN,MAAM0X,SAAW,WACpBhlB,EAAG+sC,QAAQC,iBAAmB,UAGhCr+B,EAAUkmB,UAAU1lB,IAAI,8BACxBR,EAAUkmB,UAAU1lB,IAAI,gCACxB1B,GAAUkB,EAAY,aAAYhC,MAAMC,cAAcw/B,KAASA,KAASA,MACxEz9B,EAAUo+B,QAAQE,UAAYttC,OAAOutC,YAAYC,OAEjD/P,YAAW,KACTzuB,EAAUkmB,UAAUM,OAAO,8BAC3BxmB,EAAUkmB,UAAU1lB,IAAI,2BACxB1B,GAAUkB,EAAY,aAAY09B,MAAYC,uBAC7C,IAGLnL,KAAMnhC,GACJ,IAAKA,GAAI+rC,SAASC,QAAS;AAE3B,MAAMH,EAAU7rC,EAAGotC,uBAAuB;AAE1C,GAAuB,IAAnBvB,EAAQluC,OAAc;AAC1B,MAAMgR,EAAYk9B,EAAQA,EAAQluC,OAAS;AAE3C,GAAIgR,EAAUo+B,QAAQM,SAAU;AAC3B1+B,EAAUo+B,QAAQM,SAAW;AAElC,MAAMC,EAAOJ,YAAYC,MAAQttC,OAAO8O,EAAUo+B,QAAQE,WACpDM,EAAQzpC,KAAKD,IAAI,IAAMypC,EAAM;AAEnClQ,YAAW,KACTzuB,EAAUkmB,UAAUM,OAAO,2BAC3BxmB,EAAUkmB,UAAU1lB,IAAI,4BAExBiuB,YAAW,KAEc,IADPp9B,EAAGotC,uBAAuB,uBAC9BzvC,QAAgBqC,EAAG+sC,QAAQC,mBACrChtC,EAAGsN,MAAM0X,SAAWhlB,EAAG+sC,QAAQC,wBACxBhtC,EAAG+sC,QAAQC,kBAGhBr+B,EAAUgL,YAAYA,aAAe3Z,GAAIA,EAAGwtC,YAAY7+B,EAAUgL,cACrE,OACF4zB;AAIP,SAASE,GAAiB3uC,GACxB,YAAwB,IAAVA,KAA2BA,EAG3C,SAAS4uC,GAAYlE,GACnB,MAAM1qC,EAAuB,GACvB6uC,EAAUnE,EAAEoE;AAElB,GAAKD,GAAS5B,UAAW4B,EAAQ5B,QAAQ8B,UAAWrE,EAAEiC,IAAtD,CAKA,GAFAjC,EAAEiC,KAAc,EAEZE,GAAanC,GACfmE,EAAQ5B,QAAQ8B,SAAU,EAC1BF,EAAQ5B,QAAQ+B,SAAU;KAM1B,GAAIH,EAAQ5B,QAAQ+B,QAAS;AAQ/B,GALAhvC,EAAMqN,OAASwhC,EAAQ5B,QAAQgC,UAAYnC,GAAgBpC,GACvDmE,EAAQ5B,QAAQh2B,QAClBjX,EAAMiX,MAAQ43B,EAAQ5B,QAAQh2B,OAG5B41B,GAAanC,GAAI,CAEnB,GAAImE,EAAQ5B,QAAQiC,gBAAiB;AAErCL,EAAQ5B,QAAQiC,gBAAkB,KAChCnC,GAAQC,KAAKtC,EAAGmE,EAAS7uC,IAE3B6uC,EAAQ5B,QAAQkC,UAAYjxC,OAAOogC,YAAW,KACxCuQ,GAAS5B,SAASiC,kBACpBL,EAAQ5B,QAAQiC,kBAChBL,EAAQ5B,QAAQiC,gBAAkB,QAvLrB,SA2LjBnC,GAAQC,KAAKtC,EAAGmE,EAAS7uC,IAI7B,SAASovC,GAAY1E,GACnBA,EAAEiC,KAAc,EAGlB,SAAS0C,GAAY3E,GACnB,MAAMmE,EAAUnE,EAAEoE;AAClB,GAAKD,GAAS5B,QAAd,CAMA,GAJA/uC,OAAO+gC,aAAa4P,EAAQ5B,QAAQkC,WAIrB,aAAXzE,EAAE9jC,MAAuBioC,EAAQ5B,QAAQiC,gBAQ3C,OAPAL,EAAQ5B,QAAQiC,kBAChBL,EAAQ5B,QAAQiC,gBAAkB,UAGlCL,EAAQ5B,QAAQkC,UAAYjxC,OAAOogC,YAAW,KAC5C+Q,GAAW3E;AAKfxsC,OAAOogC,YAAW,KACZuQ,EAAQ5B,UACV4B,EAAQ5B,QAAQ8B,SAAU,MAG9BhC,GAAQ1K,KAAKwM,IAGf,SAASS,GAAkB5E,GACzB,MAAMmE,EAAUnE,EAAEoE;AAEbD,GAAS5B,UAEV4B,EAAQ5B,QAAQiC,kBAClBL,EAAQ5B,QAAQiC,gBAAkB,MAGpChxC,OAAO+gC,aAAa4P,EAAQ5B,QAAQkC,YAGtC,IAAII,IAAiB;AAErB,SAASC,GAAoB9E,GACtB6E,IAAmB7E,EAAE+E,UAAYjuC,EAASE,OAASgpC,EAAE+E,UAAYjuC,EAASM,QAC7EytC,IAAiB,EACjBX,GAAWlE,IAIf,SAASgF,GAAoBhF,GAC3B6E,IAAiB,EACjBF,GAAW3E,GAGb,SAASiF,GAAiBjF,GACpB6E,KACFA,IAAiB,EACjBF,GAAW3E,IAIf,SAASkF,GAAc1uC,EAAiB26B,EAAiCgU,GACvE,MAAM7vC,MAAEA,EAAKk8B,UAAEA,GAAcL,EACvBqR,EAAUyB,GAAgB3uC;AAahC,GAZKktC,GACHH,GAAQ1K,KAAKnhC,GAGfA,EAAG+rC,QAAU/rC,EAAG+rC,SAAW,GAC3B/rC,EAAG+rC,QAAQC,QAAUA,EACrBhsC,EAAG+rC,QAAQgC,SAAW/S,EAAU7uB,OAChCnM,EAAG+rC,QAAQY,OAAS3R,EAAU2R,OAC1B7sC,EAAShB,IAAUA,EAAMiX,QAC3B/V,EAAG+rC,QAAQh2B,MAAQjX,EAAMiX,OAGvBi2B,IAAY2C,EAAY,CAC1B,GAAI3T,EAAUxU,KAGZ,OAFAxmB,EAAGiP,iBAAiB,aAAci/B,GAAY,CAAE7L,SAAS,SACzDriC,EAAGiP,iBAAiB,YAAai/B;AAInCluC,EAAGiP,iBAAiB,aAAcy+B,GAAY,CAAErL,SAAS,IACzDriC,EAAGiP,iBAAiB,WAAYk/B,GAAY,CAAE9L,SAAS,IACvDriC,EAAGiP,iBAAiB,YAAam/B,GAAkB,CAAE/L,SAAS,IAC9DriC,EAAGiP,iBAAiB,cAAek/B,IAEnCnuC,EAAGiP,iBAAiB,YAAay+B,IACjC1tC,EAAGiP,iBAAiB,UAAWk/B,IAC/BnuC,EAAGiP,iBAAiB,aAAck/B,IAElCnuC,EAAGiP,iBAAiB,UAAWq/B,IAC/BtuC,EAAGiP,iBAAiB,QAASu/B,IAE7BxuC,EAAGiP,iBAAiB,OAAQw/B,IAG5BzuC,EAAGiP,iBAAiB,YAAak/B,GAAY,CAAE9L,SAAS,SAC9C2J,GAAW2C,GACrBC,GAAgB5uC,GAIpB,SAAS4uC,GAAiB5uC,GACxBA,EAAGgP,oBAAoB,YAAa0+B,IACpC1tC,EAAGgP,oBAAoB,aAAc0+B,IACrC1tC,EAAGgP,oBAAoB,WAAYm/B,IACnCnuC,EAAGgP,oBAAoB,YAAao/B,IACpCpuC,EAAGgP,oBAAoB,cAAem/B,IACtCnuC,EAAGgP,oBAAoB,UAAWm/B,IAClCnuC,EAAGgP,oBAAoB,aAAcm/B,IACrCnuC,EAAGgP,oBAAoB,UAAWs/B,IAClCtuC,EAAGgP,oBAAoB,QAASw/B,IAChCxuC,EAAGgP,oBAAoB,YAAam/B,IACpCnuC,EAAGgP,oBAAoB,OAAQy/B,IAqB1B,MAAMI,GAAS,SAlBtB,SAAkB7uC,EAAiB26B,GACjC+T,GAAa1uC,EAAI26B,GAAS,cAG5B,SAAoB36B,UACXA,EAAG+rC,QACV6C,GAAgB5uC,IAehB8uC,QAZF,SAAkB9uC,EAAiB26B,GACjC,GAAIA,EAAQ77B,QAAU67B,EAAQzY,SAC5B;AAIFwsB,GAAa1uC,EAAI26B,EADE8S,GAAgB9S,EAAQzY,aCvShC6sB,GAAgBt5B,GAAa,CACxCoO,OAAQ,CACNne,KAAMgd,QACN7M,aAASjY,GAEXylC,UAAW1jC,OACXqvC,OAAQ,CACNtpC,KAAM,KACNmQ,QAASuvB,IAEXv/B,KAAM6c,QACN/G,KAAM,CAAC+G,QAAS/iB,OAAQ2I,SAAUnK,QAClC8wC,YAAazzB,GACb0zB,WAAY1zB,GAEZ9P,MAAOgX,QACPpX,SAAUoX,QACVysB,KAAMzsB,QACN0sB,QAAS1sB,QAET2sB,OAAQ,CACN3pC,KAAM,CAACgd,QAASvkB,QAChB0X,SAAS,GAGX9F,KAAMpQ,UAEHu/B,QACAppB,QACA6sB,QACAvK,QACAkH,QACAqE,QACAkG,QACA7B,QACAkC,QACAjQ,QACAsR,QACA9F,QACA5S,GAAa,CAAEvZ,IAAK,cACpBmW,QACAwT,GAAiB,CAAEzjB,QAAS,cAC9B,QAEUE,GAAOzG,IAAAA,CAA8B,CAChDzQ,KAAM,OAENpK,MAAO2wC,KAEPxS,MAAO,CACL,iBAAmBl1B,IAA4B,GAGjDuR,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChCihC,cAAEA,GAAkBD,GAAUhhC,IAC9BykC,eAAEA,GAAmBD,GAAWxkC,IAChCs6B,gBAAEA,GAAoBD,GAAar6B,IACnCqhC,iBAAEA,GAAqBD,GAAaphC,IACpC2rC,cAAEA,GAAkBD,GAAU1rC,IAC9B+pC,eAAEA,GAAmBF,GAAY7pC,IACjCgsC,gBAAEA,GAAoBD,GAAY/rC,IAClCg8B,eAAEA,GAAmBD,GAAW/7B,IAChCunC,YAAEA,EAAWC,WAAEA,GAAeF,GAAQtnC,GACtC80B,EAAQ0Q,GAAaxlC,EAAOA,EAAM4wC,QAAQ,GAC1CjE,EAAOP,GAAQpsC,EAAOgF,GAEtB69B,EAAWn5B,EAAAA,UAAS,SACHlK,IAAjBQ,EAAMylB,OACDzlB,EAAMylB,OAGXknB,EAAKJ,OAAO7rC,MACPisC,EAAK9J,UAAUniC,MAGjBo0B,GAAO6Q,WAAWjlC,QAGrBwwC,EAAexnC,EAAAA,UAAS,KAKpB,CACNuK,MAJC6gB,GAAO6Q,WAAWjlC,SAAWisC,EAAKJ,OAAO7rC,OAASisC,EAAK9J,UAAUniC,SAChEo0B,GAAS6X,EAAK9J,UAAUniC,MAGPV,EAAMiU,OAASjU,EAAMilC,UAAYjlC,EAAMilC,UAC1D7jB,QAASphB,EAAMohB,aAGbga,aAAEA,EAAYC,YAAEA,EAAW0J,eAAEA,GAAmBD,GAAWoM,GAE3Drf,EAAanoB,EAAQA,UAAC,IAAMorB,GAAOrc,SAAS/X,OAASV,EAAMyY,WAC3D04B,EAAaznC,EAAAA,UAAS,IACD,aAAlB1J,EAAMohB,WAA4BphB,EAAMyY,UAAYzY,EAAMyH,MAAQzH,EAAM+gC,UAE3EqQ,EAAY1nC,EAAAA,UAAS,KACzB,QAAoBlK,IAAhBQ,EAAMU,OAA8C,iBAAhBV,EAAMU,MAE9C,OAAOX,OAAOC,EAAMU,SAAWV,EAAMU,MACjC2wC,KAAKC,UAAUtxC,EAAMU,MAAO,KAAM,GAClCV,EAAMU;AAGZ,SAAS2nC,EAAS+C,GAEdvZ,EAAWnxB,OACVisC,EAAKJ,OAAO7rC,QACX0qC,EAAEmG,SACFnG,EAAEoG,SACFpG,EAAEqG,UACY,IAAbrG,EAAEsG,QACc,WAAjB1sC,EAAM6B,UAIV8lC,EAAKI,WAAW3B,GAChBtW,GAAO8Q,UA+IT,OC3SG,SAAwB+G,EAAe9G,GAC5CjiB,EAAAA,OAAM,IAAM+oB,EAAK9J,UAAUniC,QAAOmiC,IAC5B8J,EAAKJ,OAAO7rC,OAASmiC,GAAYgD,GACnChhB,EAAAA,UAAS,KACPghB,GAAO,QAGV,CACDxd,WAAW,IDuJXspB,CAAchF,EAAM7X,GAAO+Q,QAE3B3oB,IAAU,KACR,MAAM00B,EAAOjF,EAAKJ,OAAO7rC,MAAS,IAAMV,EAAMkb,IACxC22B,KAAgB7xC,EAAM6wC,cAAez1B,EAAM6mB,SAC3C6P,KAAe9xC,EAAM8wC,aAAc11B,EAAM8mB,QACzC6P,KAAa/xC,EAAMud,OAAuB,IAAfvd,EAAMud;AAEvC,OAAO4iB,EAAcA,eAAAxiB,EAAAC,YAAAg0B,EAAA,CAAAtqC,KAEF,MAARsqC,OAAcpyC,EAAY,SAAQmY,MAClC,CACL,QACAmd,GAAOwQ,cAAc5kC,MACrB,CACE,gBAAiBmiC,EAASniC,MAC1B,eAAgBV,EAAMsN,MACtB,kBAAmBukB,EAAWnxB,MAC9B,kBAAmBywC,EAAWzwC,MAC9B,cAAeV,EAAMyH,KACrB,gBAAiBzH,EAAMud,KACvB,iBAAkBvd,EAAMugB,QACxB,kBAAmBvgB,EAAMkN,SACzB,cAAelN,EAAM+wC,KACrB,iBAAkB/wC,EAAMgxC,SAE1Ble,EAAapyB,MACbugC,EAAcvgC,MACd06B,EAAa16B,MACb+jC,EAAe/jC,MACf2gC,EAAiB3gC,MACjBirC,EAAcjrC,MACdsrC,EAAgBtrC,MAChBs7B,EAAet7B,MACf6mC,EAAY7mC,MACZqkC,EAAerkC,MACfV,EAAM2X,OACPzI,MACM,CACLmsB,EAAY36B,MACZ45B,EAAgB55B,MAChBqpC,EAAerpC,MACf8mC,EAAW9mC,MACXV,EAAMkP,OACP,cACWlP,EAAMugB,cAAiB/gB,EAASiZ,SACjCoZ,EAAWnxB,YAASlB,EAASgtC,KACjCG,EAAKH,KAAK9rC,MAAK8nC,SACXxoC,EAAMugB,SAAWvgB,EAAMkN,UAAY,OAAI1N,EAAS6oC,QACjDA,EAAO3nC,MACT0wC,EAAU1wC,OAAK,CAAA+W,QAAAA,IAAA,CAErBktB,IAAY,EAAM,UAEjB3kC,EAAMud,MAAQs0B,GAAUl0B,EAAAA,YAAA,OAAA,CAAAna,IAAA,UAAAmU,MAAA,kBAAA,CAEpByD,EAAM6mB,QAGmBtkB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,mBAAAiV,UAKZzY,EAAM6wC,YAAWv5B,SACnB,CACRowB,MAAO,CACLnqB,KAAMvd,EAAM6wC,eAGEz1B,EAAM6mB,SAdZtkB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,eAAA+Z,KAGLvd,EAAM6wC,aAAWlzB,QAe/BA,EAAAA,YAAA,OAAA,CAAAhG,MAAA,iBAAA,oBAAA,IAGI,EAACyD,EAAM3D,SAAWs6B,EAAOp0B,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,eAAA+Z,KAGjBvd,EAAMud,MAAII,MAAAA,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,mBAAAiV,UAKLs5B,EAAOz6B,SACT,CACRowB,MAAO,CACLnqB,KAAMvd,EAAMud,QAEf,CAAA9F,QAAAA,IAAA,CAEC2D,EAAM3D,aAAezX,EAAM2R,WAKhC3R,EAAMud,MAAQu0B,GAASn0B,EAAAC,YAAA,OAAA,CAAApa,IAAA,SAAAmU,MAAA,iBAAA,CAEnByD,EAAM8mB,OAGkBvkB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,kBAAAiV,UAKXzY,EAAM8wC,WAAUx5B,SAClB,CACRowB,MAAO,CACLnqB,KAAMvd,EAAM8wC,cAGE11B,EAAM8mB,QAdbvkB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,cAAA+Z,KAGJvd,EAAM8wC,YAAUnzB,UAiB3B3d,EAAMugB,SAAO5C,EAAAC,YAAA,OAAA,CAAApa,IAAA,SAAAmU,MAAA,iBAEXyD,CAAAA,EAAM42B,YAAUr0B,EAAAA,YAAAorB,GAAA,CAAA90B,MAEmB,kBAAlBjU,EAAMugB,aAAwB/gB,EAAYQ,EAAMugB,QAAOsoB,eAAA,EAAAp6B,MAAA,KAAA,WAQhF,CAAC,CACCgiC,IACC5e,EAAWnxB,SAAWV,EAAMixC,OAC7B,GACA,CAAEljC,SAAU/N,EAAMud,YAKjB,CAAEuX,MAAAA,MExSAmd,GAA0B56B,GAAa,IAC/Cs5B,GAAc,CACfpzB,KAAM,QACN6D,QAAS,UAEV,kBAEU8wB,GAAiBr3B,IAAAA,CAA8B,CAC1DzQ,KAAM,iBAENpK,MAAOiyC,KAEPz3B,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAWrB,OAVA4O,IAAU,IAAAS,EAAAC,YAAA0D,GAAAvD,EAAAA,WAED/d,EAAK,CAAA2X,MACH,CACL,wBAEQyD,KAIP,MCvBE+2B,GAAet3B,IAAAA,CAAuC,CACjEzQ,KAAM,eAENpK,MAAO00B,KAEPla,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AASrB,OARA4O,IAAU,IAAAS,EAAAC,YAAA+W,GAAA5W,EAAAA,WAED/d,EAAK,CAAA2X,MAAA,oBAEAyD,KAIP,MCpBEg3B,GAAcp3B,GAAuB,iBC6B5Cq3B,GAAe,CAAC,UAAW,OAAQ,UAAW,SAIvCC,GAAkBj7B,GAAa,CAC1C0pB,OAAQ,CACNz5B,KAAM,CAACgd,QAAS/iB,QAChB06B,UAAYhzB,GACY,kBAARA,GAAqB,CACjC,MACA,MACA,SACA,SACAlD,SAASkD,IAGfspC,YAAahxC,OACbixC,SAAUluB,QACVmuB,UAAW,CACTnrC,KAAM8V,GACN3F,QAAS,UAEXi7B,WAAY,CACVprC,KAAM/F,OACNkW,QAAS,kBAEX8F,KAAM,CACJjW,KAAM,CAACgd,QAAS/iB,OAAQ2I,SAAUnK,QAClC0X,QAAS,MAEXkrB,WAAY,CACVr7B,KAAMgd,QACN7M,SAAS,GAEXk7B,UAAWruB,QACX6G,MAAO5pB,OACPoQ,KAAMpQ,OACN+F,KAAM,CACJA,KAAM/F,OACN06B,UAAYhzB,GAAwBopC,GAAatsC,SAASkD,OAGzDyO,QACA6sB,QACAvK,QACAkH,QACA0I,QACAkC,QACAjQ,QACApH,QACApD,QACAwT,GAAiB,CAAEzjB,QAAS,UAC9B,UAWUwxB,GAAS/3B,IAAAA,CAAgC,CACpDzQ,KAAM,SAENpK,MAAOsyC,KAEPnU,MAAO,CACL,cAAgBiN,IAAkB,EAClC,oBAAsB1qC,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAMu0B,EAAWta,GAAgBvoB,EAAO,cAClCud,EAAO7T,EAAAA,UAAS,KACpB,IAAmB,IAAf1J,EAAMud,KACV,OAAKvd,EAAMsH,KAEJtH,EAAMud,MAAS,IAAGvd,EAAMsH,OAFPtH,EAAMud,QAI1B2zB,EAAexnC,EAAAA,UAAS,KAAO,CACnCuK,MAAOjU,EAAMiU,OAASjU,EAAMsH,KAC5B8Z,QAASphB,EAAMohB,aAGX0R,aAAEA,GAAiBgB,GAAa9zB,IAChCo7B,aAAEA,EAAYC,YAAEA,EAAW0J,eAAEA,GAAmBD,GAAWoM,IAC3DzM,eAAEA,GAAmBD,GAAWxkC,IAChCs6B,gBAAEA,GAAoBD,GAAar6B,IACnCqhC,iBAAEA,GAAqBD,GAAaphC,IACpC+pC,eAAEA,GAAmBF,GAAY7pC,IACjCgsC,gBAAEA,GAAoBD,GAAY/rC,IAClCg8B,eAAEA,GAAmBD,GAAW/7B,IAChCw7B,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAagD,EAAKA,MAACt+B,EAAO,iBAClE+S,EAAEA,GAAMge,KAER8hB,EAAanpC,EAAAA,UAAS,KAAO,CACjC,aAAcqJ,EAAE/S,EAAM0yC,YACtBrK,QAAS+C,GACPvI,EAASniC,OAAQ,EAEjByoB,EAAK,cAAeiiB;AAIxB,MAAO,KACL,MAAMyG,KAAgBz2B,EAAM6mB,UAAW1kB,EAAK7c,OACtCqhC,KAAc3mB,EAAM+P,QAASnrB,EAAMmrB,OACnC2nB,KAAc13B,EAAM4D,QAAShf,EAAMwyC;AAEzC,OAAO3P,EAASniC,OAAKid,cAAA3d,EAAAkb,IAAA,CAAAvD,MAEV,CACL,UACA3X,EAAM+gC,QAAU,CACd,oBAAqB/gC,EAAM+gC,OAC3B,CAAE,oBAAmC,IAAjB/gC,EAAM+gC,OAAkB,QAAU/gC,EAAM+gC,WAAW,GAEzE,CACE,qBAAsB/gC,EAAM2yC,WAE9B7f,EAAapyB,MACb06B,EAAa16B,MACb+jC,EAAe/jC,MACf2gC,EAAiB3gC,MACjBsrC,EAAgBtrC,MAChBs7B,EAAet7B,MACfqkC,EAAerkC,MACfV,EAAM2X,OACPzI,MACM,CACLmsB,EAAY36B,MACZ45B,EAAgB55B,MAChBqpC,EAAerpC,MACfV,EAAMkP,OACPgP,KAAA,SAAA,CAAAzG,QAAAA,IAGCktB,CAAAA,IAAY,EAAO,WAEnB3kC,EAAM+gC,QAAMpjB,EAAAC,YAAA,MAAA,CAAApa,IAAA,SAAAmU,MAGH,CACL,kBACA6jB,EAAiB96B,OAClBwO,MACOusB,EAAgB/6B,OAE3B,MAECmxC,GAAUl0B,EAAAA,YAAA,MAAA,CAAAna,IAAA,UAAAmU,MAAA,oBAAA,CAELyD,EAAM6mB,QAK2BtkB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,mBAAAiV,UAKpB8E,EAAK7c,MAAK4W,SACZ,CACRowB,MAAO,CACLlG,QAASxhC,EAAMwhC,QACfjkB,KAAMA,EAAK7c,MACXmI,KAAM7I,EAAM2yC,UAAY,GAAK,MAGfv3B,EAAM6mB,SAlBZtkB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,eAAAg+B,QAGFxhC,EAAMwhC,QAAOjkB,KAChBA,EAAK7c,MAAKmI,KACV7I,EAAM2yC,UAAY,GAAK,IAAEh1B,QAiBvCA,EAAAA,YAAA,MAAA,CAAAhG,MAAA,oBAAA,CAGGoqB,GAAQpkB,EAAAC,YAAAw0B,GAAA,CAAA5uC,IAAA,SAAA,CAAAiU,QAAAA,IAAA,CAEJ2D,EAAM+P,WAAanrB,EAAMmrB,SAI7B/P,EAAMzJ,UAAY3R,EAAM2R,KAExByJ,EAAM3D,cAGR2D,EAAM8mB,QAAMvkB,EAAAA,YAAA,MAAA,CAAAna,IAAA,SAAAmU,MAAA,mBAERyD,CAAAA,EAAM8mB,WAIV4Q,GAAQn1B,EAAAC,YAAA,MAAA,CAAApa,IAAA,QAAAmU,MAAA,kBAEJ,CAACyD,EAAM4D,MAMgBrB,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,iBAAA8T,SAKX,CACRgK,KAAM,CACJ/D,KAAMvd,EAAMyyC,UACZ5pC,KAAM,UACNuY,QAAS,UAEZ,CAAA3J,QAAAA,IAAA,CAEC2D,EAAM4D,QAAQ,CAAEhf,MAAO6yC,EAAWnyC,WAnB1Bid,EAAAA,YAAA2D,GAAAvD,EAAAA,WAAA,CAAAva,IAAA,YAAA+Z,KAGHvd,EAAMyyC,UAAS5pC,KAAA,UAAAuY,QAAA,QAGjByxB,EAAWnyC,OAAKid,eCvN1Bo1B,GAAmB17B,GAAa,CAC3CvW,MAAOwjB,QACPzhB,IAAKyhB,QACL/G,KAAMH,GACNohB,MAAOj9B,OACPoQ,KAAMpQ,UAEHmW,QACA6sB,QACA1I,QACAwL,QACA5S,QACApD,QACAwT,GAAiB,CAAEzjB,QAAS,UAC9B,WAEUF,GAAUrG,IAAAA,CAAmB,CACxCzQ,KAAM,UAENpK,MAAO+yC,KAEPv4B,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChCo7B,aAAEA,EAAYC,YAAEA,EAAW0J,eAAEA,GAAmBD,GAAW9kC,IAC3DykC,eAAEA,GAAmBD,GAAWxkC,IAChCg8B,eAAEA,GAAmBD,GAAW/7B,IAChCunC,YAAEA,EAAWC,WAAEA,GAAeF,GAAQtnC;AAmD5C,OAjDAkd,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,WACA,CACE,kBAAmB3X,EAAMc,MACzB,gBAAiBd,EAAM6C,KAEzBiwB,EAAapyB,MACb06B,EAAa16B,MACb+jC,EAAe/jC,MACfs7B,EAAet7B,MACf6mC,EAAY7mC,MACZqkC,EAAerkC,MACfV,EAAM2X,OACPzI,MACM,CACLmsB,EAAY36B,MACZ8mC,EAAW9mC,MACXV,EAAMkP,QACP,CAAAuI,QAAAA,IAEC,CAAC2D,EAAM3D,QAKSkG,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,mBAAA8T,SAIJ,CACR0mB,KAAM,CACJZ,OAAO,EACPoB,MAAOx+B,EAAMw+B,OAEfkJ,MAAO,CACLnqB,KAAMvd,EAAMud,QAEf,CAAA9F,QAAAA,IAAA,CAEC2D,EAAM3D,aAlBVzX,EAAMw+B,MAAK7gB,EAAAC,YAAAogB,GAAA,CAAAx6B,IAAA,QAAAo6B,IACkB59B,EAAMw+B,MAAKrB,IAAA,GAAAC,OAAA,GAAA,MACpCp9B,EAAMud,KAAII,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,OAAA+Z,KACkBvd,EAAMud,MAAI,MACpCvd,EAAM2R,KAkBZgzB,IAAY,EAAO,iBAIlB,MCxFEqO,GAAkB37B,GAAa,CAC1C1F,KAAMpQ,OAEN8mC,QAASp+B,OAENyN,QACA2Z,MACF,UAEU4hB,GAASp4B,IAAAA,CAAmB,CACvCzQ,KAAM,SAENpK,MAAOgzC,KAEPx4B,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAmBrB,OAlBA4O,IAAU,IAAAS,EAAAC,YAAA,QAAA,CAAAjG,MAEC,CACL,UACA,CACE,uBAAwB3X,EAAMqoC,SAEhCroC,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKm5B,QACTroC,EAAMqoC,SAEdroC,CAAAA,EAAM2R,KAENyJ,EAAM3D,gBAIL,MCjBEy7B,GAAqEr7B,OAAOC,IAAI,mCAEhFq7B,GAAiC97B,GAAa,CACzDpD,MAAO1S,OACPkX,SAAU,CACRnR,KAAMgd,QACN7M,QAAS,MAEX27B,eAAgB7xC,OAChB8d,MAAOiF,QACPY,GAAI3jB,OACJgM,OAAQ+W,QACR+uB,UAAWj2B,GACXk2B,SAAUl2B,GACV6zB,OAAQ,CACN3pC,KAAM,CAACgd,QAASvkB,QAChB0X,SAAS,GAEX2tB,SAAU,CACR99B,KAAMgd,QACN7M,QAAS,MAEXrN,KAAM7I,OACN2L,SAAU,CACR5F,KAAMgd,QACN7M,QAAS,MAEXkrB,WAAY,KACZr7B,KAAM/F,OACNgyC,gBAAiB,CACfjsC,KAAM4C,SACNuN,QAAS/X,MAGRgY,QACA6sB,QACAlT,MACF,yBAEUmiB,GAAkCn8B,GAAa,IACvD87B,GAA+B,CAChCC,eAAgB,uBAEjB,0BAEUK,GAAyB54B,IAAAA,CAMW,CAC/CzQ,KAAM,yBAENpK,MAAOwzC,KAEPrV,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMq0B,EAAapa,GAAgBvoB,EAAO,cACpCqc,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,6BAA4B7I,MAC7DjS,EAAOV,EAAAA,UAAS,IAAM1J,EAAMoK,MAAQ8a,EAAGxkB,QAEvCgzC,EAAiB,IAAI7vC;AA+C3B,OA9CAoV,EAAAA,QAAQi6B,GAA8B,CACpCvQ,WAAAA,EACAgR,YAAaA,KACXD,EAAenvC,SAAQuI,GAAMA,OAE/B8mC,cAAeC,IACbH,EAAe3iC,IAAI8iC,GACnBvrB,EAAAA,gBAAe,KACborB,EAAepxC,OAAOuxC,SAK5Bz7B,GAAgB,CACd,CAACpY,EAAMozC,gBAAiB,CACtBn/B,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpByY,SAAU6lB,EAAAA,MAAMt+B,EAAO,YACvBwhC,QAASlD,EAAAA,MAAMt+B,EAAO,WACtBqf,MAAOif,EAAAA,MAAMt+B,EAAO,SACpBuN,OAAQ+wB,EAAAA,MAAMt+B,EAAO,UACrB2iC,WAAAA,EACAyC,SAAU17B,EAAAA,UAAS,MAAQ1J,EAAMolC,UAA+B,MAAlBplC,EAAMolC,UAAoBzkC,MAAMC,QAAQ+hC,EAAWjiC,SACjG0J,KAAAA,EACAipC,UAAW/U,EAAAA,MAAMt+B,EAAO,aACxBszC,SAAUhV,EAAAA,MAAMt+B,EAAO,YACvBkN,SAAUoxB,EAAAA,MAAMt+B,EAAO,YACvBixC,OAAQ3S,EAAAA,MAAMt+B,EAAO,UACrBsH,KAAMg3B,EAAAA,MAAMt+B,EAAO,QACnBuzC,gBAAiBjV,EAAAA,MAAMt+B,EAAO,sBAIlCkd,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,4BACA,CAAE,oCAAqC3X,EAAMuN,QAC7CvN,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKgP,KACG,UAAfle,EAAMsH,KAAmB,kBAAe9H,GAAS,CAEtD4b,EAAM3D,gBAIL,MCjFEq8B,GAA6Bz8B,GAAa,CACrD08B,MAAOxyC,OACP0jC,UAAW1jC,OACXyyC,UAAW,KACXC,WAAY,KACZvzC,MAAO,QAEJgX,QACAy7B,MACF;AA4EI,MAAMe,GAAoBr5B,IAAAA,CAMgB,CAC/CzQ,KAAM,oBAEN6zB,WAAY,CAAEwS,OAAAA,IAEd3yB,cAAc,EAEd9d,MAAO8zC,KAEP3V,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAMwmB,MACJA,EAAK2P,eACLA,EAAclnB,KACdA,EAAIwL,MACJA,EAAKyS,iBACLA,EAAgBC,gBAChBA,EAAeE,uBACfA,EAAsBC,sBACtBA,EAAqBoY,UACrBA,GAvGC,SACLh0C,GAIA,MAAM80B,EAAQ5c,EAAAA,OAAOg7B,QAA8B1zC,IAC7CilC,eAAEA,GAAmBD,GAAWxkC,GAChC2iC,EAAapa,GAAgBvoB,EAAO,cACpCg0C,EAAYtqC,EAAAA,UAAS,SACLlK,IAApBQ,EAAMg0C,UAA0Bh0C,EAAMg0C,eACpBx0C,IAAhBQ,EAAMU,OAAsBV,EAAMU,QAGhCuzC,EAAavqC,YAAS,SAA2BlK,IAArBQ,EAAMi0C,YAA2Bj0C,EAAMi0C,aACnEE,EAAazqC,EAAQA,UAAC,MACxB1J,EAAMolC,UACW,MAAlBplC,EAAMolC,UAAoBzkC,MAAMC,QAAQ+hC,EAAWjiC,SAEhDqoB,EAAQrf,EAAAA,SAAS,CACrB9B,MACE,MAAMqB,EAAM6rB,EAAQA,EAAM6N,WAAWjiC,MAAQiiC,EAAWjiC;AAExD,OAAOyzC,EAAWzzC,MACd4E,EAAY2D,GAAK/E,MAAMjD,GAAWjB,EAAMuzC,gBAAgBtyC,EAAG+yC,EAAUtzC,SACrEV,EAAMuzC,gBAAgBtqC,EAAK+qC,EAAUtzC,QAE3CqH,IAAKkB,GACH,GAAIjJ,EAAMkN,SAAU;AAEpB,MAAMknC,EAAenrC,EAAM+qC,EAAUtzC,MAAQuzC,EAAWvzC;AAExD,IAAI2zC,EAASD;AAETD,EAAWzzC,QACb2zC,EAASprC,EACL,IAAI3D,EAAYq9B,EAAWjiC,OAAQ0zC,GACnC9uC,EAAYq9B,EAAWjiC,OAAOmZ,QAAQrZ,IAAeR,EAAMuzC,gBAAgB/yC,EAAMwzC,EAAUtzC,UAG7Fo0B,EACFA,EAAM6N,WAAWjiC,MAAQ2zC,EAEzB1R,EAAWjiC,MAAQ2zC,MAInB7Y,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAa5xB,EAAAA,UAAS,KAClE,IAAI1J,EAAMqf,QAASrf,EAAMyY,SAEzB,OAAOsQ,EAAMroB,MAAQV,EAAMiU,MAAQjU,EAAMilC,eAErCtJ,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmBhyB,EAAAA,UAAS,KAElFqf,EAAMroB,OACLV,EAAMqf,OACNrf,EAAMyY,SACSzY,EAAMilC,UAApBjlC,EAAMiU,SAENsJ,EAAO7T,YAAS,IAAMqf,EAAMroB,MAAQV,EAAMszC,SAAWtzC,EAAMqzC;AAEjE,MAAO,CACLve,MAAAA,EACA2P,eAAAA,EACAuP,UAAAA,EACAC,WAAAA,EACAlrB,MAAAA,EACAyS,iBAAAA,EACAC,gBAAAA,EACAE,uBAAAA,EACAC,sBAAAA,EACAre,KAAAA,GAkCI+2B,CAAoBt0C,GAClBqc,EAAMD,KACNm4B,EAAYtnC,cAAW,GACvBunC,EAAiBvnC,cAAW,GAC5Boe,EAAQrT,EAAAA,MACRkN,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,SAAQ7I,MACzCo4B,EAAgB/qC,EAAQA,UAAC,KAAO1J,EAAMyY,WAAazY,EAAMkN;AAQ/D,SAASwnC,EAAStJ,GACXqJ,EAAc/zC,QAEnB6zC,EAAU7zC,OAAQ,GACiD,IAA/DyL,GAAgBi/B,EAAEvkC,OAAuB,oBAC3C2tC,EAAe9zC,OAAQ,IAI3B,SAASi0C,IACPJ,EAAU7zC,OAAQ,EAClB8zC,EAAe9zC,OAAQ,EAGzB,SAASk0C,EAAcxJ,GACrBA,EAAEyJ,kBAGJ,SAASC,EAAS1J,GACXqJ,EAAc/zC,QAEfV,EAAMkN,UAAY4nB,GACpBjQ,EAAAA,UAAS,IAAMiQ,EAAM6e,gBAEvB5qB,EAAMroB,MAAS0qC,EAAEvkC,OAA4BkuC,SAuG/C,OArIAjgB,GAAO8e,eAAc,KACfvoB,EAAM3qB,QACR2qB,EAAM3qB,MAAMq0C,QAAUhsB,EAAMroB,UA+BhCwc,IAAU,KACR,MAAM62B,EAAQ34B,EAAM24B,MAChB34B,EAAM24B,MAAM,CACZA,MAAO/zC,EAAM+zC,MACb/zC,MAAO,CAAE8X,IAAKoN,EAAGxkB,SAEjBV,EAAM+zC,OACH5uC,EAAWC,GAAcL,EAAiBC,GAE3CgwC,EAASr3B,EAAAA,YAAA,QAAAI,aAAA,CAAA/F,IAELqT,EAAK0pB,QACDhsB,EAAMroB,MAAK+X,WACRzY,EAAMyY,SAAQyM,GACtBA,EAAGxkB,MAAKi0C,OACJA,EAAMD,QACLA,EAAOI,QACPA,EAAO,kBACC90C,EAAMyY,SAAQ,aACnBzY,EAAM+zC,MAAKzsC,KACjBtH,EAAMsH,KAAI5G,MACTszC,EAAUtzC,MAAK0J,KAChBpK,EAAMoK,KAAI,eACa,aAAfpK,EAAMsH,KAAsByhB,EAAMroB,WAAQlB,GACpD4F,GAER;AAED,OAAAuY,EAAAC,kBAAAG,aAAA,CAAApG,MAEW,CACL,sBACA,CACE,6BAA8BoR,EAAMroB,MACpC,gCAAiCV,EAAMyY,SACvC,6BAA8BzY,EAAMqf,MACpC,+BAAgCk1B,EAAU7zC,MAC1C,qCAAsC8zC,EAAe9zC,MACrD,8BAA+BV,EAAMuN,QAEvCk3B,EAAe/jC,MACfV,EAAM2X,QAEHxS,EAAS,CAAA+J,MACNlP,EAAMkP,QAAK,CAAAyO,EAAAC,YAAA,MAAA,CAAAjG,MAGV,CACL,+BACA6jB,EAAiB96B,OAClBwO,MACOusB,EAAgB/6B,OAEtB0a,CAAAA,EAAM3D,UAAU,CAChBkkB,uBAAAA,EACAC,sBAAAA,IACAgF,EAAAA,eAAAjjB,EAAAC,YAAA,MAAA,CAAAjG,MAGO,CACL,+BAQAyD,CAAAA,EAAMiQ,QAAQ,CACdtC,MAAAA,EACAyS,iBAAAA,EACAC,gBAAAA,EACAE,uBAAAA,EACAC,sBAAAA,EACAoZ,UAAAA,EACAz3B,KAAMA,EAAK7c,MACXV,MAAO,CACL00C,QAAAA,EACAC,OAAAA,EACAzvB,GAAIA,EAAGxkB,UAEsBid,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAE3BjX,EAAK7c,OAAKid,EAAAC,YAAA8pB,GAAA,CAAAlkC,IAAA,OAAA+Z,KAA6BA,EAAK7c,OAAK,MAEjDs0C,MAEL,CAAA,CAAAnU,EAAAoU,iBAzBUj1C,UAAAA,EAAMixC,QAAU,EACxBjxC,EAAMyY,WAAazY,EAAMkN,SAC1B,KACA,CAAC,SAAU,gBA0Bf6mC,GAAKp2B,EAAAA,YAAAs1B,GAAA,CAAAn7B,IACSoN,EAAGxkB,MAAK2nC,QAAauM,GAAY,CAAAn9B,QAAAA,IAAA,CAC3Cs8B,UAOL,CACLQ,UAAAA,EACAlpB,MAAAA,MC7SO6pB,GAAwB79B,GAAa,CAChDwxB,cAAevkB,QACf6wB,kBAAmB,CACjB7tC,KAAM8V,GACN3F,QAAS,6BAGRq8B,GAA2B,CAC5BT,UAAW,eACXC,SAAU,iBAEX,gBAEU8B,GAAev6B,IAAAA,CAMqB,CAC/CzQ,KAAM,eAENpK,MAAOk1C,KAEP/W,MAAO,CACL,oBAAsBz9B,IAAe,EACrC,uBAAyBA,IAAmB,GAG9C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMu6B,EAAgBtgB,GAAgBvoB,EAAO,iBACvC+oB,EAAQR,GAAgBvoB,EAAO;AAErC,SAASq1C,EAAUp0C,GACb4nC,EAAcnoC,QAChBmoC,EAAcnoC,OAAQ,GAI1B,MAAM2yC,EAAY3pC,EAAAA,UAAS,IAClBm/B,EAAcnoC,MACjBV,EAAMm1C,kBACNn1C,EAAMqzC,YAGNC,EAAW5pC,EAAAA,UAAS,IACjBm/B,EAAcnoC,MACjBV,EAAMm1C,kBACNn1C,EAAMszC;AAwBZ,OArBAp2B,IAAU,KACR,MAAMo4B,EAAejxC,EAAK6vC,GAAkBx5B,YAAY1a,GAAQ,CAAC;AACjE,OAAA2d,cAAAu2B,GAAAn2B,EAAAqe,WAESkZ,EAAY,CAAA3S,WACP5Z,EAAMroB,MAAK,sBAAA60C,CAAAA,GAAXxsB,EAAMroB,MAAK60C,EAOCF,GAAQ19B,MANvB,CACL,iBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAK5H,KAAA,WAAA+rC,UAGPA,EAAU3yC,MAAK4yC,SAChBA,EAAS5yC,MAAK,eACVmoC,EAAcnoC,MAAQ,aAAUlB,IACrC4b,MAKT;ACjEJ,SAASo6B,GAA4Dx1C,GAC1E,MAAM+S,EAAEA,GAAMge;AAwBd,MAAO,CAAE0kB,UAtBT,SAAkBnnC,GAAyC,IAAvClE,KAAEA,GAAmCkE;AACvD,MAAMonC,EAAY,CAChBzT,QAAS,gBACT0T,aAAc,gBACdzT,OAAQ,eACR0T,YAAa,eACb32B,MAAO,SACP7U,GACIyrC,EAAW71C,EAAO,WAAUoK,KAC5B2pC,EAAQ8B,GAAYH,EACtB3iC,EAAG,kBAAiB2iC,IAAa11C,EAAM+zC,OAAS,SAChDv0C;AAEJ,OAAAme,EAAAA,YAAA+pB,GAAA,CAAAnqB,KAEWvd,EAAO,GAAEoK,SAAW,aACd2pC,EAAK1L,QACRwN,GAAQ,QChBnB,MAAMC,GAAqBz+B,GAAa,CAC7CoO,OAAQnB,QACRrQ,MAAO1S,OACP0rB,SAAU,CACR3lB,KAAM,CAAC3G,MAAOY,QACdkW,QAASA,IAAO,OAGfC,QACAmd,GAAoB,CACrB/N,WAAY,CACV3e,UAAWuxB,GACX1E,eAAe,EACfF,OAAO,MAGV,aAEUihB,GAAYl7B,IAAAA,CAAmC,CAC1DzQ,KAAM,YAENpK,MAAO81C,KAEPt7B,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM2e,EAAWvjB,EAAAA,UAAS,IAAMpE,EAAYtF,EAAMitB,aAC5CuO,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAa5xB,EAAQA,UAAC,IAAM1J,EAAMiU;AA+BhF,OA7BAiJ,IAAU,IAAAS,EAAAC,YAAAse,GAAA,CAAApV,WAEO9mB,EAAM8mB,WAAU5L,IAAA,MAAAvD,MAEtB,CACL,aACA6jB,EAAiB96B,MACjBV,EAAM2X,OACPzI,MACM,CACLusB,EAAgB/6B,MAChBV,EAAMkP,OACPgP,KAAA,QAAA,YAAA,UAAA,CAAAzG,QAAAA,IAAA,CAICzX,EAAMylB,QACNwH,EAASvsB,MAAM0G,KAAI,CAACsL,EAASjT,IAACke,EAAAA,YAAA,MAAA,CAAAhG,MAAA,sBAAAnU,IAGnB,GAAE/D,KAAKwtB,EAASvsB,SAAO,CAE5B0a,EAAM1I,QAAU0I,EAAM1I,QAAQ,CAAEA,QAAAA,IAAaA,WAOlD,MCpEEsjC,GAAiB3+B,GAAa,CACzC4+B,QAAS3xB,QACT,mBAAoBra,KACnB;AAEI,SAASisC,GACdl2C,GAEA,IADAoK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,MAAMu4B,EAAYhsB,GAAgBvoB,EAAO,WACnCm2C,EAAezsC,EAAAA,UAAS,KACpB,CACN,CAAE,GAAEU,cAAkBmqC,EAAU7zC;AAIpC,SAASoL,IACPyoC,EAAU7zC,OAAQ,EAGpB,SAAS01C,IACP7B,EAAU7zC,OAAQ,EAGpB,MAAO,CAAEy1C,aAAAA,EAAc5B,UAAAA,EAAWzoC,MAAAA,EAAOsqC,KAAAA,GCcpC,MAAMC,GAAqCx+B,OAAOC,IAAI,gBAWhDw+B,GAAgBj/B,GAAa,CACxCoB,SAAU6L,QACViyB,SAAUjyB,QACVpX,SAAUoX,QACVqe,WAAY,CACVr7B,KAAMgd,QACN7M,QAAS,MAEX++B,WAAY,CACVlvC,KAAM/F,OACNkW,QAAS,UAEV;AAuHI,SAASg/B,KACd,OAAOv+B,EAAMA,OAACm+B,GAAS,MC5JlB,MAAMK,GAAsBr/B,GAAa,CAC9CoB,SAAU,CACRnR,KAAMgd,QACN7M,QAAS,MAEX4H,MAAOiF,QACPqyB,cAAe,CACbrvC,KAAM,CAAC3G,MAAOY,QACdkW,QAASA,IAAO,IAElBm/B,UAAW,CACTtvC,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXrN,KAAM7I,OACNwyC,MAAOxyC,OACP2L,SAAU,CACR5F,KAAMgd,QACN7M,QAAS,MAEXo/B,MAAO,CACLvvC,KAAM3G,MACN8W,QAASA,IAAO,IAElBkrB,WAAY,KACZ6T,WAAYj1C,OACZu1C,gBAAiB,QAEdd,MACF;AAEI,SAASe,GACd/2C,GAGA,IAFAoK,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA,KACPkJ,EAA6BnkB,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGqb,GAAAA;AAEhC,MAAM2M,EAAQR,GAAgBvoB,EAAO,cAC/Bg3C,EAAkBttC,EAAAA,UAAS,SAAgClK,IAA1BQ,EAAM82C,gBAAgC/tB,EAAMroB,MAAQV,EAAM82C,kBAC3FG,EAAOR,KACPS,EAAwBl/B,MAAc,IACtCm/B,EAAalqC,cAAW,GACxBmqC,EAAU1tC,YAAS,OACvBpE,EAA4B,KAAhByjB,EAAMroB,MAAe,KAAOqoB,EAAMroB,OAAOnB,SACrD+F,EAAsC,KAA1B0xC,EAAgBt2C,MAAe,KAAOs2C,EAAgBt2C,OAAOnB,UAErEsyB,EAAanoB,YAAS,OAAS1J,EAAMyY,UAAYw+B,GAAMplB,WAAWnxB,SAClE22C,EAAa3tC,YAAS,OAAS1J,EAAMkN,UAAY+pC,GAAMI,WAAW32C,SAClEi2C,EAAgBjtC,EAAAA,UAAS,IACtB1J,EAAM22C,eAAep3C,OACxB+F,EAAYtF,EAAM22C,eAAettC,OAAO6tC,EAAsBx2C,OAAO0I,MAAM,EAAG1D,KAAKD,IAAI,GAAIzF,EAAM42C,YACjGM,EAAsBx2C,QAEtB81C,EAAa9sC,EAAAA,UAAS,KAC1B,IAAIhJ,GAASV,EAAMw2C,YAAcS,GAAMT,WAAW91C,QAAU;AAC9C,SAAVA,IAAkBA,EAAQ;AAC9B,MAAMqH,EAAM,IAAIlE,IAAInD,GAAOJ,MAAM,MAAQ;AAEzC,MAAO,CACL81C,KAAMruC,EAAIxE,IAAI,SAAWwE,EAAIxE,IAAI,SACjC8nB,MAAOtjB,EAAIxE,IAAI,SACf+zC,OAAQvvC,EAAIxE,IAAI,UAChBg0C,KAAMxvC,EAAIxE,IAAI,YAGZi0C,EAAU9tC,EAAAA,UAAS,KACnB1J,EAAMqf,QAASrf,EAAM22C,eAAep3C,UACnCS,EAAM62C,MAAMt3C,SACb43C,EAAWz2C,OACNw2C,EAAsBx2C,MAAMnB,SAAUi3C,EAAW91C,MAAM62C,MAAO,MAE7DL,EAAsBx2C,MAAMnB,WAGlCk4C,EAAexqC,cAAW,GAC1ByqC,EAAoBhuC,EAAAA,UAAS,KAC1B,CACL,CAAE,GAAEU,aAAkC,IAAlBotC,EAAQ92C,MAC5B,CAAE,GAAE0J,YAAgBgtC,EAAQ12C,MAC5B,CAAE,GAAE0J,eAAmBynB,EAAWnxB,MAClC,CAAE,GAAE0J,eAAmBitC,EAAW32C,UAIhC0Y,EAAKC,GAAmB,cACxBgD,EAAM3S,EAAAA,UAAS,IAAM1J,EAAMoK,MAAQoO,EAAKA,MAAC0M;AA+C/CyyB,eAAeh/B,IACboQ,EAAMroB,MAAQ,WACRmkB,EAAQA,iBACR+yB,IAGRD,eAAeC,IACbT,EAAWz2C,OAAQ,EACd81C,EAAW91C,MAAM62C,KAGpBL,EAAsBx2C,MAAQ,SAFxBm3C,GAAS,GAMnBF,eAAeE,IAA0B,IAAhBC,EAAM/2C,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,IAAAA,UAAA;AAC7B,MAAMg3C,EAAU;AAEhBN,EAAa/2C,OAAQ;AAErB,IAAK,MAAMs3C,KAAQh4C,EAAM62C,MAAO,CAC9B,GAAIkB,EAAQx4C,UAAYS,EAAM42C,WAAa,GACzC;AAGF,MAAMrsC,EAA0B,mBAATytC,EAAsBA,EAAO,IAAMA,EACpDhrC,QAAezC,EAAQysC,EAAgBt2C;CAE9B,IAAXsM,KAEW,IAAXA,GAAsC,iBAAXA,EAO/B+qC,EAAQ/uC,KAAKgE,GAAU,IALrBirC,QAAQtlC,KAAM,GAAE3F,iFAYpB,OAJAkqC,EAAsBx2C,MAAQq3C,EAC9BN,EAAa/2C,OAAQ,EACrBy2C,EAAWz2C,MAAQo3C,EAEZZ,EAAsBx2C,MAG/B,OA5FA6+B,EAAAA,eAAc,KACZ0X,GAAMzxB,SAAS,CACbN,GAAI7I,EAAI3b,MACR0Y,GAAAA,EACAy+B,SAAAA,EACAl/B,MAAAA,EACAi/B,gBAAAA,OAIJl0B,EAAAA,iBAAgB,KACduzB,GAAMvxB,WAAWrJ,EAAI3b,UAGvB6hC,EAAAA,WAAUoV,UACHnB,EAAW91C,MAAM62C,YACdM,GAAS,GAEjBZ,GAAMiB,OAAO77B,EAAI3b,MAAO82C,EAAQ92C,MAAOi2C,EAAcj2C,UAGvDsnB,IAAe,IAAMwuB,EAAW91C,MAAM2qB,QAAO,KAC3CzH,EAAKA,MAACozB,GAAiB,KACrB,GAA6B,MAAzBA,EAAgBt2C,MAClBm3C;KACK,GAAI73C,EAAMi2C,QAAS,CACxB,MAAMkC,EAAUv0B,EAAKA,OAAC,IAAM5jB,EAAMi2C,UAAShtC,IACpCA,GAAK4uC,IAEVM,cAMRnwB,IAAe,IAAMwuB,EAAW91C,MAAM01C,OAAM,KAC1CxyB,EAAAA,OAAM,IAAM5jB,EAAMi2C,UAAShtC,IACpBA,GAAK4uC,UAIdj0B,EAAAA,MAAM,CAAC4zB,EAASb,IAAgB,KAC9BM,GAAMiB,OAAO77B,EAAI3b,MAAO82C,EAAQ92C,MAAOi2C,EAAcj2C,UAkDhD,CACLi2C,cAAAA,EACAS,QAAAA,EACAvlB,WAAAA,EACAwlB,WAAAA,EACAF,WAAAA,EACAK,QAAAA,EACAC,aAAAA,EACA9+B,MAAAA,EACAi/B,gBAAAA,EACAC,SAAAA,EACAH,kBAAAA,GC7LG,MAAMU,GAAkB/gC,GAAa,CAC1C6N,GAAI3jB,OACJuvC,WAAY1zB,GACZi7B,YAAa,CACX/wC,KAAMgd,QACN7M,SAAS,GAEXo5B,YAAazzB,GACbk7B,YAAa,CAACh0B,QAAS/iB,QACvBg3C,gBAAiBj0B,QACjBk0B,KAAMj3C,OACNk3C,eAAgBn0B,QAChB2I,SAAU,CACR3lB,KAAM,CAAC3G,MAAOY,QACdkW,QAASA,IAAO,IAElBihC,UAAW,CACTpxC,KAAM/F,OACNkW,QAAS,aACTwkB,UAAYh7B,GAAW,CAAC,aAAc,YAAY8E,SAAS9E,IAG7D,kBAAmBgJ,IACnB,iBAAkBA,OAEfyN,QACA6sB,QACA9/B,EAAKu1B,KAAsB,CAC5B,WACA,WACA,aAEC3I,QACAqlB,MACF,UAUUiC,GAAS99B,IAAAA,CAM2B,CAC/CzQ,KAAM,SAENpK,MAAO,IACFo4C,MAGLja,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKoW,MAAEA,EAAK+N,KAAEA,GAAM7a;AAClC,MAAMm2B,eAAEA,GAAmBD,GAAWxkC,IAChCs6B,gBAAEA,GAAoBD,GAAar6B,IACnC8yB,aAAEA,GAAiBgB,GAAa9zB,IAChC6wB,WAAEA,GAAeM,MACjBskB,UAAEA,GAAcD,GAAax1C,GAE7Bqc,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,SAAQ7I,MACzCu8B,EAAalvC,EAAAA,UAAS,IAAO,GAAEwb,EAAGxkB,oBAElCi2C,cACJA,EAAaS,QACbA,EAAOvlB,WACPA,EAAUwlB,WACVA,EAAUF,WACVA,EAAUK,QACVA,EAAOC,aACPA,EAAY9+B,MACZA,EAAKi/B,gBACLA,EAAeC,SACfA,EAAQH,kBACRA,GACEX,GAAc/2C,EAAO,UAAWklB,GAE9B2zB,EAAYnvC,EAAAA,UAAqB,KAAO,CAC5Cwb,GAAAA,EACA0zB,WAAAA,EACAxB,QAAAA,EACAvlB,WAAAA,EACAwlB,WAAAA,EACAF,WAAAA,EACAK,QAAAA,EACAC,aAAAA,EACA9+B,MAAAA,EACAi/B,gBAAAA,EACAC,SAAAA,MAGI5qB,EAAWvjB,EAAAA,UAAS,IACpB1J,EAAM22C,eAAep3C,SAAY43C,EAAWz2C,OAASi2C,EAAcj2C,MAAMnB,OACpEo3C,EAAcj2C,MACZV,EAAMw4C,OAASx4C,EAAMy4C,gBAAkBz4C,EAAMi2C,SAC/Cj2C,EAAMw4C,KAENx4C,EAAMitB;AAiFjB,OA7EA/P,IAAU,KACR,MAAM20B,KAAgBz2B,EAAM6mB,UAAWjiC,EAAM6wC,aACvCiB,KAAe12B,EAAM8mB,SAAUliC,EAAM8wC,YACrCgI,EAAc7rB,EAASvsB,MAAMnB,OAAS,EACtCw5C,GAAc/4C,EAAMs4C,aACF,SAAtBt4C,EAAMs4C,cACLQ,KAAiB19B,EAAM49B;AAG1B,OAAAr7B,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,UACC,YAAW3X,EAAM04C,YAClB,CACE,wBAAyB14C,EAAMq4C,YAC/B,6BAA8Br4C,EAAMu4C,iBAEtC9T,EAAe/jC,MACfoyB,EAAapyB,MACbmwB,EAAWnwB,MACXg3C,EAAkBh3C,MAClBV,EAAM2X,OACPzI,MACM,CACLorB,EAAgB55B,MAChBV,EAAMkP,QAGN2iC,CAAAA,GAAUl0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,UAAAmU,MAAA,oBAAA,CAENyD,EAAM6mB,UAAU4W,EAAUn4C,OAE1BV,EAAM6wC,aAAWlzB,EAAAC,YAAA63B,EAAA,CAAAjyC,IAAA,eAAA4G,KAAA,WAAA,QASrBgR,EAAM3D,SAAOkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,oBAAA,CAETyD,EAAM3D,UAAUohC,EAAUn4C,SAI9BoxC,GAASn0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,SAAAmU,MAAA,mBAAA,CAEL3X,EAAM8wC,YAAUnzB,EAAAA,YAAA83B,EAAA,CAAAjyC,IAAA,cAAA4G,KAAA,UAAA,MAOhBgR,EAAM8mB,SAAS2W,EAAUn4C,SAI7Bq4C,GAAUp7B,EAAAC,YAAA,MAAA,CAAAjG,MAAA,oBAAAgG,CAAAA,EAAAC,YAAAm4B,GAAA,CAAA7wB,GAGD0zB,EAAWl4C,MAAK+kB,OACZqzB,EAAW7rB,SACTA,EAASvsB,OACX,CAAEgS,QAAS0I,EAAM1I,UAG1B0I,EAAM49B,UAAUH,EAAUn4C,cAO/B,CACLiY,MAAAA,EACAi/B,gBAAAA,EACAC,SAAAA,EACAL,QAAAA,EACAb,cAAAA,MCjNOsC,GAAqB5hC,GAAa,IAC1C+gC,QACA/zC,EAAK6wC,KAAyB,CAAC,YACjC,aAEU3zB,GAAY1G,IAAAA,CAMwB,CAC/CzQ,KAAM,YAEN0T,cAAc,EAEd9d,MAAOi5C,KAEP9a,MAAO,CACL,oBAAsBz9B,IAAe,EACrC,iBAAmBu1C,IAAqB,GAG1Cz7B,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAMya,EAAQR,GAAgBvoB,EAAO,eAC/Bu0C,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,GAEtCqc,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,YAAW7I;AAgDlD,OA9CAa,IAAU,KACR,MAAO/X,EAAW+zC,GAAgBn0C,EAAiBC,GAC7Cm0C,EAAaR,GAAOj+B,YAAY1a,GAChCo5C,EAAgBhE,GAAa16B,YAAY1a;AAE/C,OAAA2d,EAAAC,YAAA+6B,GAAA56B,aAAA,CAAApG,MAEW,CACL,aACA3X,EAAM2X,QAEHxS,EACAg0C,EAAU,CAAAxW,WACL5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAArwB,GAChBA,EAAGxkB,MAAKu1C,QACH1B,EAAU7zC,MAAKwO,MACjBlP,EAAMkP,QAAK,IAGdkM,EACH3D,QAASzB,IAAA,IAACkP,GACRA,EAAE0zB,WACFA,EAAU/mB,WACVA,EAAUwlB,WACVA,EAAUG,QACVA,GACDxhC;AAAA,OAAA2H,cAAAy3B,GAAAr3B,EAAAqe,WAEQgd,EAAa,CAAAl0B,GACbA,EAAGxkB,MAAK,mBACMk4C,EAAWl4C,MAAK+X,SACxBoZ,EAAWnxB,MAAKwM,SAChBmqC,EAAW32C,OACjBw4C,EAAY,CAAA75B,OACS,IAAlBm4B,EAAQ92C,MAAeiiC,WACrB5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAAb,QACX5oC,EAAK6oC,OACNyB,IACCh7B,SAQf,MC1FEi+B,GAAc,CAAC,KAAM,KAAM,KAAM,KAAM,OA2EvCC,GAA+CzhC,OAAOC,IAAI,mBAEjEyhC,GAAwC,CAC5CC,iBAAkB,KAClBC,WAAY,CACVC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,IAAK;AAQT,SAASC,GAAgBC,GACvB,OAAOt7C,IAAes7C,EAClBr7C,OAAOi6B,WACS,iBAARohB,GAAoBA,EAAIzL,aAAgB,EAGtD,SAAS0L,GAAiBD,GACxB,OAAOt7C,IAAes7C,EAClBr7C,OAAOk6B,YACS,iBAARmhB,GAAoBA,EAAIh9B,cAAiB,EAGvD,SAASk9B,GAAaF,GACpB,MAAMG,EAAYz7C,IAAes7C,EAC7Br7C,OAAOG,UAAUq7C,UACjB;AAEJ,SAAStlC,EAAOulC,GACd,OAAO/1B,QAAQ81B,EAAUtlC,MAAMulC,IAejC,MAAO,CACLC,QAbcxlC,EAAM,YAcpBylC,IAbUzlC,EAAM,qBAchB0lC,QAbc1lC,EAAM,YAcpB2lC,SAbe3lC,EAAM,aAcrB4lC,OAba5lC,EAAM,WAcnB6lC,KAbW7lC,EAAM,SAcjB8lC,QAbc9lC,EAAM,YAcpB+lC,MAbY/lC,EAAM,UAclBgmC,IAbUhmC,EAAM,QAchBimC,IAbUjmC,EAAM,QAchBkmC,MAbYlmC,EAAM,UAclBmmC,MAAOn8C,EACPm7C,IAAmB,QAAdG,GAIF,SAASc,GAAenuC,EAA0BktC,GACvD,MAAMR,WAAEA,EAAUD,iBAAEA,GAvDM,WAC1B,OAAO7yC,EAAU4yC,GADiCx4C,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAGw4C,IAuDZ4B,CAAoBpuC,GAEvD2B,EAASzB,EAAUA,WAACitC,GAAgBD,IACpCmB,EAAWnuC,EAAUA,WAACktC,GAAYF,IAClCnsB,EAAQrkB,WAAS,IACjBgF,EAAQxB,EAAUA,WAAC+sC,GAAeC;AAExC,SAASoB,IACP3sC,EAAOhO,MAAQw5C,KACfzrC,EAAM/N,MAAQs5C,KAoDhB,OA5CArwC,EAAAA,aAAY,KACV,MAAM+vC,EAAKjrC,EAAM/N,MAAQ+4C,EAAWE,GAC9BA,EAAKlrC,EAAM/N,MAAQ+4C,EAAWG,KAAOF,EACrCE,EAAKnrC,EAAM/N,MAAQ+4C,EAAWI,MAAQF,GAAMD,GAC5CG,EAAKprC,EAAM/N,MAAQ+4C,EAAWK,MAAQF,GAAMD,GAAMD,GAClDI,EAAKrrC,EAAM/N,MAAQ+4C,EAAWM,OAASF,GAAMD,GAAMD,GAAMD,GACzDK,EAAMtrC,EAAM/N,OAAS+4C,EAAWM,IAChC3vC,EACJsvC,EAAK,KACHC,EAAK,KACLC,EAAK,KACLC,EAAK,KACLC,EAAK,KACL,MACEwB,EAA8C,iBAArB9B,EAAgCA,EAAmBC,EAAWD,GACvF+B,EAAS9sC,EAAM/N,MAAQ46C;AAE7BxtB,EAAM4rB,GAAKA,EACX5rB,EAAM6rB,GAAKA,EACX7rB,EAAM8rB,GAAKA,EACX9rB,EAAM+rB,GAAKA,EACX/rB,EAAMgsB,GAAKA,EACXhsB,EAAMisB,IAAMA,EACZjsB,EAAM0tB,SAAW9B,EACjB5rB,EAAM2tB,UAAY/B,GAAMC,GACxB7rB,EAAM4tB,UAAYhC,GAAMC,GAAMC,GAC9B9rB,EAAM6tB,UAAYjC,GAAMC,GAAMC,GAAMC,GACpC/rB,EAAM8tB,YAAchC,GAAMC,GAAMC,GAAMC,GACtCjsB,EAAM+tB,YAAchC,GAAMC,GAAMC,GAChCjsB,EAAMguB,YAAchC,GAAMC,GAC1BjsB,EAAMiuB,WAAahC,EACnBjsB,EAAM1jB,KAAOA,EACb0jB,EAAMpf,OAASA,EAAOhO,MACtBotB,EAAMrf,MAAQA,EAAM/N,MACpBotB,EAAMytB,OAASA,EACfztB,EAAM0rB,iBAAmBA,EACzB1rB,EAAMstB,SAAWA,EAAS16C,MAC1BotB,EAAM2rB,WAAaA,KAGjB96C,GACFC,OAAOiS,iBAAiB,SAAUwqC,EAAY,CAAEpX,SAAS,IAGpD,IAAKp6B,EAAAA,OAAOikB,GAAQoqB,OAlD3B,WACEmD,IACAD,EAAS16C,MAAQy5C,MAgDgBF,MAAOA,GAGrC,MAAM+B,GAAmB3kC,GAAa,CAC3CkkC,OAAQ,CACNj0C,KAAMgd,QACN7M,SAAS,GAEX+hC,iBAAkB,CAAC/3C,OAAQF,SAC1B;AAEI,SAAS06C,KAGd,IAFAj8C,EAAmBe,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GACtBqJ,EAAIrJ,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGib,GAAAA;AAEP,MAAMkgC,EAAUhkC,SAAOohC;AAEvB,IAAK4C,EAAS,MAAM,IAAI/jC,MAAM;AAE9B,MAAMojC,EAAS7xC,EAAAA,UAAS,KACtB,GAAoB,MAAhB1J,EAAMu7C,OAAgB,OAAOv7C,EAAMu7C;AACvC,IAAKv7C,EAAMw5C,iBAAkB,OAAO0C,EAAQX,OAAO76C;AAEnD,MAAM46C,EAAoD,iBAA3Bt7C,EAAMw5C,iBACjCx5C,EAAMw5C,iBACN0C,EAAQzC,WAAW/4C,MAAMV,EAAMw5C;AAEnC,OAAO0C,EAAQztC,MAAM/N,MAAQ46C,KAGzBa,EAAiBzyC,EAAAA,UAAS,IACzBU,EAEE,CAAE,CAAE,GAAEA,aAAiBmxC,EAAO76C,OAFnB;AAKpB,MAAO,IAAKw7C,EAASC,eAAAA,EAAgBZ,OAAAA,GClOhC,MAAMa,GAAyCvkC,OAAOC,IAAI;AA+BjE,SAASukC,GAAWz6C,GAClB,MAAsB,iBAAPA,EAAmB4J,SAASusB,cAA2Bn2B,GAAMD,EAAWC,GAGzF,SAASooC,GAAWnjC,EAAay1C,EAAsBjuB,GACrD,GAAsB,iBAAXxnB,EAAqB,OAAOy1C,GAAcjuB,GAAOxnB,EAASA;AAErE,IAAIjF,EAAKy6C,GAAUx1C,GACf01C,EAAc;AAClB,KAAO36C,GACL26C,GAAeD,EAAa16C,EAAG4zB,WAAa5zB,EAAG2zB,UAC/C3zB,EAAKA,EAAG+J;AAGV,OAAO4wC,EAGF,SAASC,GAAYzvC,EAA2CohB,GACrE,MAAO,CACLE,IAAKF,EAAOzgB,MACZX,QAASpG,EAhDJ,CACLknC,eAAWruC,EACXg4B,SAAU,IACV7S,QAAQ,EACR6R,OAAQ,EACRiB,OAAQ,iBACRglB,SAAU,CACRC,OAAS3pC,GAAcA,EACvB4pC,WAAa5pC,GAAcA,GAAK,EAChC6pC,YAAc7pC,GAAcA,GAAK,EAAIA,GACrC8pC,cAAgB9pC,GAAeA,EAAI,GAAM,EAAIA,GAAK,GAAU,EAAI,EAAIA,GAAKA,EAAlB,EACvD+pC,YAAc/pC,GAAcA,GAAK,EACjCgqC,aAAehqC,KAAgBA,GAAK,EAAI,EACxCiqC,eAAiBjqC,GAAcA,EAAI,GAAM,EAAIA,GAAK,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,EAC5FkqC,YAAclqC,GAAcA,GAAK,EACjCmqC,aAAenqC,GAAc,KAAMA,GAAK,EACxCoqC,eAAiBpqC,GAAeA,EAAI,GAAM,EAAIA,GAAK,EAAI,EAAI,IAAMA,GAAK,EACtEqqC,YAAcrqC,GAAcA,GAAK,EACjCsqC,aAAetqC,GAAc,IAAMA,GAAK,EACxCuqC,eAAiBvqC,GAAcA,EAAI,GAAM,GAAKA,GAAK,EAAI,EAAI,KAAOA,GAAK,IA6BvChG,IAI/B4qC,eAAe4F,GACpBC,EACAC,EACAnB,EACAoB,GAEA,MAAMj9C,EAAW67C,EAAa,aAAe,YACvCvvC,EAAUpG,EAAU+2C,GAAM3wC,SA3DzB,CACL8gC,eAAWruC,EACXg4B,SAAU,IACV7S,QAAQ,EACR6R,OAAQ,EACRiB,OAAQ,iBACRglB,SAAU,CACRC,OAAS3pC,GAAcA,EACvB4pC,WAAa5pC,GAAcA,GAAK,EAChC6pC,YAAc7pC,GAAcA,GAAK,EAAIA,GACrC8pC,cAAgB9pC,GAAeA,EAAI,GAAM,EAAIA,GAAK,GAAU,EAAI,EAAIA,GAAKA,EAAlB,EACvD+pC,YAAc/pC,GAAcA,GAAK,EACjCgqC,aAAehqC,KAAgBA,GAAK,EAAI,EACxCiqC,eAAiBjqC,GAAcA,EAAI,GAAM,EAAIA,GAAK,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,EAC5FkqC,YAAclqC,GAAcA,GAAK,EACjCmqC,aAAenqC,GAAc,KAAMA,GAAK,EACxCoqC,eAAiBpqC,GAAeA,EAAI,GAAM,EAAIA,GAAK,EAAI,EAAI,IAAMA,GAAK,EACtEqqC,YAAcrqC,GAAcA,GAAK,EACjCsqC,aAAetqC,GAAc,IAAMA,GAAK,EACxCuqC,eAAiBvqC,GAAcA,EAAI,GAAM,GAAKA,GAAK,EAAI,EAAI,KAAOA,GAAK,IAwCjB0qC,GACpDpvB,EAAMqvB,GAAMrvB,IAAI3tB,MAChBmG,GAA6B,iBAAZ22C,EAAuBA,EAAUnB,GAAUmB,KAAa,EACzE3P,EAAkC,WAAtB9gC,EAAQ8gC,WAA0BhnC,aAAkB82C,YAClE92C,EAAO6V,cAtCJ2/B,GAuCUtvC,EAAQ8gC,aAvCAriC,SAASmR,kBAAoBnR,SAASoyC;AAwC/D,MAAMC,EAAiC,mBAAnB9wC,EAAQ0qB,OAAwB1qB,EAAQ0qB,OAAS1qB,EAAQ0vC,SAAS1vC,EAAQ0qB;AAE9F,IAAKomB,EAAM,MAAM,IAAIvoC,UAAW,oBAAmBvI,EAAQ0qB;AAE3D,IAAIqmB;AACJ,GAAsB,iBAAXj3C,EACTi3C,EAAiB9T,GAAUnjC,EAAQy1C,EAAYjuB;KAI/C,GAFAyvB,EAAiB9T,GAAUnjC,EAAQy1C,EAAYjuB,GAAO2b,GAAU6D,EAAWyO,EAAYjuB,GAEnFthB,EAAQ4X,OAAQ,CAClB,MACMo5B,EADSn/C,OAAOuQ,iBAAiBtI,GACXyxB,iBAAiB;AAEzCylB,IAAcD,GAAkB3oC,SAAS4oC,EAAc,KAI/DD,GAAkB/wC,EAAQypB,OAC1BsnB,EAiEF,SACEjQ,EACAntC,EACA2tB,EACAiuB,GAEA,MAAM0B,YAAEA,EAAWhhC,aAAEA,GAAiB6wB,GAC/BoQ,EAAgBC,GAAmBrQ,IAAcriC,SAASmR,iBAC7D,CAAC/d,OAAOi6B,WAAYj6B,OAAOk6B,aAC3B,CAAC+U,EAAU79B,YAAa69B,EAAU59B;AAEtC,IAAIzK,EACAC;AAEA62C,EACEjuB,GACF7oB,IAAQw4C,EAAcC,GACtBx4C,EAAM,IAEND,EAAM,EACNC,EAAMu4C,EAAcC,IAGtBz4C,EAAM,EACNC,EAAMuX,GAAgBkhC;AAGxB,OAAOx4C,KAAKD,IAAIC,KAAKF,IAAI9E,EAAO+E,GAAMD,GA5FrB24C,CAAYtQ,EAAWiQ,IAAkBzvB,IAAOiuB;AAEjE,MAAM8B,EAAgBvQ,EAAUptC,IAAa;AAE7C,GAAIq9C,IAAmBM,EAAe,OAAO/tC,QAAQC,QAAQwtC;AAE7D,MAAMO,EAAYvP,YAAYC;AAE9B,OAAO,IAAI1+B,SAAQC,GAAWomB,uBAAsB,SAAS4P,EAAMgY,GACjE,MACM1T,GADc0T,EAAcD,GACHtxC,EAAQyqB,SACjCpsB,EAAW1F,KAAK64C,MACpBH,GACCN,EAAiBM,GAClBP,EAAKt4C,EAAMqlC,EAAU,EAAG;AAM1B,OAHAiD,EAAUptC,GAAY2K,EAGlBw/B,GAAY,GAAKllC,KAAKe,IAAI2E,EAAWyiC,EAAUptC,IAAa,GACvD6P,EAAQwtC,GACNlT,EAAW,GAEpBn4B,GAAY,kCACLnC,EAAQu9B,EAAUptC,UAG3Bi2B,sBAAsB4P,QAInB,SAASkY,KAA8C,IAArCf,EAA8B18C,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACxD,MAAM09C,EAAevmC,SAAOkkC,KACtB1uC,MAAEA,GAAUyjB;AAElB,IAAKstB,EAAc,MAAM,IAAItmC,MAAM;AAEnC,MAAMulC,EAAO,IACRe,EAEHpwB,IAAK3kB,EAAQA,UAAC,IAAM+0C,EAAapwB,IAAI3tB,OAASgN,EAAMhN;AAGtDi3C,eAAe+G,EACb73C,EACAkG,GAEA,OAAOwwC,GAAS12C,EAAQF,EAAU82C,EAAU1wC,IAAU,EAAO2wC,GAU/D,OAPAgB,EAAGpC,WAAa3E,MACd9wC,EACAkG,IAEOwwC,GAAS12C,EAAQF,EAAU82C,EAAU1wC,IAAU,EAAM2wC,GAGvDgB,EC5HF,SAASC,GAAen3B,EAAuB+nB,GAEpD,OAAOA,IADK/nB,EAAe,cAAgB,iBAClB,EAQpB,SAASo3B,GAAmBp3B,EAAuB6G,EAAckhB,GACtE,IAAKA,EACH,OAAO;AAGT,MAAMsP,WACJA,EAAU7uC,YACVA,EAAWguC,YACXA,GACEzO;AAEJ,OAAI/nB,EACK6G,EACH2vB,EAAchuC,EAAc6uC,EAC5BA,EAGCtP,EAAQxL,UAGV,SAAS+a,GAAet3B,EAAuB+nB,GAEpD,OAAOA,IADK/nB,EAAe,cAAgB,iBAClB,EAGpB,SAASu3B,GAAmBv3B,EAAuB+nB,GAExD,OAAOA,IADK/nB,EAAe,aAAe,cACjB,EC9CpB,MAAMw3B,GAAgDnnC,OAAOC,IAAI,yBAe3DmnC,GAAuB5nC,GAAa,CAC/C6nC,aAAc56B,QACdo0B,UAAW,CACTpxC,KAAM/F,OACNkW,QAAS,cAEXm5B,OAAQ,CACNtpC,KAAM,KACNmQ,QAASunC,IAEXG,SAAU,CACR73C,KAAM8V,GACN3F,QAAS,SAEX2nC,SAAU,CACR93C,KAAM8V,GACN3F,QAAS,SAEX4nC,WAAY,CACV/3C,KAAM,CAACgd,QAAS/iB,QAChB06B,UAAYh7B,GACG,kBAANA,GAAmB,CACxB,SACA,UACA,UACA8E,SAAS9E,OAIZyW,QACAskC,QACAvnB,QACA0Q,GAAe,CAChBG,cAAe,gCAEhB,eAEUga,GAAczkC,IAAAA,CAMsB,CAC/CzQ,KAAM,cAENpK,MAAOi/C,KAEP9gB,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMZ,MAAEA,GAAUyjB,MACZgrB,eAAEA,EAAcZ,OAAEA,GAAWU,GAAWj8C,GACxC80B,EAAQgR,GAAS9lC,EAAOA,EAAM4wC,QAC9B2O,EAAgBtyC,cAAW,GAC3BuyC,EAAevyC,aAAW,GAC1BwyC,EAAgBxyC,aAAW,GAC3ByyC,EAAczyC,aAAW,GACzBua,EAAe9d,EAAAA,UAAS,IAA0B,eAApB1J,EAAM04C,aAElCp1B,UAAWq8B,EAAcp8B,YAAaq8B,GAAkBz8B,MACxDG,UAAWu8B,EAAUt8B,YAAEA,GAAgBJ,KAEzCu6B,EAAOc,KACPsB,EAAcp2C,EAAAA,UAA+B,KAC1C,CACLmkC,UAAW8R,EAAa/9C,GACxB41B,SAAU,IACVC,OAAQ,mBAINsoB,EAAqBr2C,EAAAA,UAAS,IAC7BorB,EAAMiR,SAASrlC,MAAMnB,OAEnBu1B,EAAMtO,MAAM9lB,MAAM4mB,WAAU9mB,GAAQA,EAAK0kB,KAAO4P,EAAMiR,SAASrlC,MAAM,MAFlC,IAKtCs/C,EAAoBt2C,EAAAA,UAAS,IAC5BorB,EAAMiR,SAASrlC,MAAMnB,OAEnBu1B,EAAMtO,MAAM9lB,MAAM4mB,WAAU9mB,GAAQA,EAAK0kB,KAAO4P,EAAMiR,SAASrlC,MAAMo0B,EAAMiR,SAASrlC,MAAMnB,OAAS,MAFhE;AAK5C,GAAIZ,EAAY,CACd,IAAIshD,GAAS;AACbr8B,EAAAA,OAAM,IAAM,CAACkR,EAAMiR,SAASrlC,MAAOk/C,EAAcl/C,MAAO6iB,EAAY7iB,MAAO8mB,EAAa9mB,SAAQ,KAC9Fw/C,qBAAqBD,GACrBA,EAAQvpB,uBAAsB,KAC5B,GAAIkpB,EAAcl/C,OAAS6iB,EAAY7iB,MAAO,CAC5C,MAAMw1B,EAAe1O,EAAa9mB,MAAQ,QAAU;AAEpD++C,EAAc/+C,MAAQk/C,EAAcl/C,MAAMw1B,GAC1CwpB,EAAYh/C,MAAQ6iB,EAAY7iB,MAAMw1B,GAEtCqpB,EAAc7+C,MAAQ++C,EAAc/+C,MAAQ,EAAIg/C,EAAYh/C,MAG9D,GAAIq/C,EAAmBr/C,OAAS,GAAKm/C,EAAWj+C,GAAI,CAIlDu+C,EAFwBN,EAAWj+C,GAAG4F,SAASw4C,EAAkBt/C,OAE/BV,EAAMk/C,qBAMhD,MAAM3K,EAAYtnC,cAAW;AAE7B,SAASkzC,EAAkB34C,EAAuBuG,GAChD,IAAIlH,EAAS;AAGXA,EADEkH,EDzIH,SAAgCiI,GAQ5B,IAR8BoqC,gBACvCA,EAAeC,iBACfA,EAAgB74B,aAChBA,GAKDxR;AACC,MAAMsqC,EAAsBxB,GAAct3B,EAAc64B;AAIxD,OAH+BtB,GAAkBv3B,EAAc44B,GAG9BE,EAAsB,EAF5BxB,GAAct3B,EAAc44B,GAE2B,EC6HnEG,CAAwB,CAC/BF,iBAAkBV,EAAa/9C,GAC/B4lB,aAAcA,EAAa9mB,MAC3B0/C,gBAAiB54C,IDzKpB,SAA+B8G,GAU3B,IAV6B8xC,gBACtCA,EAAeC,iBACfA,EAAgB3yC,MAChBA,EAAK8Z,aACLA,GAMDlZ;AACC,MAAMmxC,EAAgBX,GAAct3B,EAAc64B,GAC5CG,EAAiB5B,GAAkBp3B,EAAc9Z,EAAO2yC,GAExDI,EAAe3B,GAAct3B,EAAc44B,GAC3CM,EAAwB3B,GAAkBv3B,EAAc44B,GAExDO,EAAkC,GAAfF;AAEzB,OAAID,EAAiBE,EACZA,EAAwBC,EACtBH,EAAiBf,EAAgBiB,EAAwBD,EAC3DC,EAAwBjB,EAAgBgB,EAAeE,EAGzDH,ECmJQI,CAAuB,CAC9BP,iBAAkBV,EAAa/9C,GAC/B4lB,aAAcA,EAAa9mB,MAC3BgN,MAAOA,EAAMhN,MACb0/C,gBAAiB54C,IAIrBq5C,EAAiBh6C,GAGnB,SAASg6C,EAAkBC,GACzB,IAAKniD,IAAeghD,EAAa/9C,GAAI;AAErC,MAAMm/C,EAAajC,GAAct3B,EAAa9mB,MAAOi/C,EAAa/9C,IAC5D4+C,EAAiB5B,GAAkBp3B,EAAa9mB,MAAOgN,EAAMhN,MAAOi/C,EAAa/9C;AAGvF,KAFmB+8C,GAAcn3B,EAAa9mB,MAAOi/C,EAAa/9C,KAGlDm/C,GAEdr7C,KAAKe,IAAIq6C,EAAcN,GAAkB,IAH3C,CAMA,GAAIh5B,EAAa9mB,OAASgN,EAAMhN,OAASi/C,EAAa/9C,GAAI,CACxD,MAAMo8C,YAAEA,EAAahuC,YAAaiuC,GAAmB0B,EAAa/9C;AAElEk/C,EAAe9C,EAAcC,EAAkB6C,EAG7Ct5B,EAAa9mB,MACfg9C,EAAKpB,WAAWwE,EAAahB,EAAYp/C,OAEzCg9C,EAAKoD,EAAahB,EAAYp/C,QAIlC,SAASkjC,EAAUwH,GACjB,MAAMrH,UAAEA,EAAS8a,WAAEA,GAAezT,EAAEvkC;AAEpC24C,EAAa9+C,MAAQ8mB,EAAa9mB,MAAQm+C,EAAa9a,EAGzD,SAASid,EAAW5V,GAGlB,GAFAmJ,EAAU7zC,OAAQ,EAEb6+C,EAAc7+C,OAAUm/C,EAAWj+C,GAIxC,IAAK,MAAMA,KAAMwpC,EAAE6V,eACjB,IAAK,MAAMzgD,KAAQq/C,EAAWj+C,GAAG4F,SAC/B,GAAIhH,IAASoB,EAEX,YADAu+C,EAAiB3/C,GAOzB,SAAS0gD,EAAY9V,GACnBmJ,EAAU7zC,OAAQ,EAIpB,IAAIygD,GAAmB;AACvB,SAASzM,EAAStJ,GAEb+V,GACA5M,EAAU7zC,OACT0qC,EAAEgW,eAAiBvB,EAAWj+C,IAAIoK,SAASo/B,EAAEgW,gBAC/Ct1C,IAEFq1C,GAAmB,EAGrB,SAASE,IACPF,GAAmB,EAGrB,SAASG,EAAWlW,GAGlB,SAASmW,EAASn2C,GAChBggC,EAAEoW,iBACF11C,EAAMV,GAJHy0C,EAAWj+C,KAOZ4lB,EAAa9mB,MACD,eAAV0qC,EAAE5nC,IACJ+9C,EAAQ7zC,EAAMhN,MAAQ,OAAS,QACZ,cAAV0qC,EAAE5nC,KACX+9C,EAAQ7zC,EAAMhN,MAAQ,OAAS,QAGnB,cAAV0qC,EAAE5nC,IACJ+9C,EAAQ,QACW,YAAVnW,EAAE5nC,KACX+9C,EAAQ,QAIE,SAAVnW,EAAE5nC,IACJ+9C,EAAQ,SACW,QAAVnW,EAAE5nC,KACX+9C,EAAQ,SAIZ,SAASz1C,EAAOV,GACd,IAAKy0C,EAAWj+C,GAAI;AAEpB,IAAIA;AAEJ,GAAKwJ,EAGE,GAAiB,SAAbA,GAGT,GAFAxJ,EAAKi+C,EAAWj+C,GAAGm2B,cAAc,WAAW91B,oBAEvCL,EAAI,OAAOkK,EAAM,cACjB,GAAiB,SAAbV,GAGT,GAFAxJ,EAAKi+C,EAAWj+C,GAAGm2B,cAAc,WAAW0pB,wBAEvC7/C,EAAI,OAAOkK,EAAM,YACA,UAAbV,EACTxJ,EAAMi+C,EAAWj+C,GAAG8/C,kBACE,SAAbt2C,IACTxJ,EAAMi+C,EAAWj+C,GAAG+/C;IAdP,CAEb//C,EADkBgJ,EAAkBi1C,EAAWj+C,IAChC,GAebA,GACFA,EAAGkK,MAAM,CAAE81C,eAAe,IAI9B,SAASrE,EAAUnyC,GACjB,MAAMstC,EAAYlxB,EAAa9mB,OAASgN,EAAMhN,OAAS,EAAI,EAErDmhD,GAA2B,SAAbz2C,GAAuBstC,EAAYA,GAAa+G,EAAc/+C;AAElF,IAAIogD,EAActB,EAAa9+C,MAAQmhD;AAGvC,GAAIr6B,EAAa9mB,OAASgN,EAAMhN,OAASi/C,EAAa/9C,GAAI,CACxD,MAAMo8C,YAAEA,EAAahuC,YAAaiuC,GAAmB0B,EAAa/9C;AAElEk/C,GAAe9C,EAAcC,EAG/B4C,EAAiBC,GAGnB,MAAMjI,EAAYnvC,EAAAA,UAAS,KAAO,CAChC4V,KAAMwV,EAAMxV,KACZxG,KAAMgc,EAAMhc,KACZ+sB,OAAQ/Q,EAAM+Q,OACdF,WAAY7Q,EAAM6Q,eAGdmc,EAAap4C,EAAAA,UAAS,KAC1B,OAAQ1J,EAAMq/C,YAEZ,IAAK,SAAU,OAAO;AAGtB,IAAK,UAAW,OAAQ9D,EAAO76C;AAI/B,KAAK,EAAM,OAAO6+C,EAAc7+C,OAASgF,KAAKe,IAAI+4C,EAAa9+C,OAAS;AAGxE,IAAK,SAAU,OACb66C,EAAO76C,OACN6+C,EAAc7+C,OAASgF,KAAKe,IAAI+4C,EAAa9+C,OAAS;AAMzD,QAAS,OACN66C,EAAO76C,QACP6+C,EAAc7+C,OAASgF,KAAKe,IAAI+4C,EAAa9+C,OAAS,OAKvDqhD,EAAUr4C,EAAAA,UAAS,IAEhBhE,KAAKe,IAAI+4C,EAAa9+C,OAAS,IAGlCshD,EAAUt4C,EAAAA,UAAS,KACvB,IAAKi2C,EAAaj/C,MAAO,OAAO;AAQhC,OANmBi+C,GAAcn3B,EAAa9mB,MAAOi/C,EAAa/9C,ID/TjE,SAAwB4lB,EAAuB+nB,GAEpD,OAAOA,IADK/nB,EAAe,cAAgB,iBAClB,EC8TFy6B,CAAcz6B,EAAa9mB,MAAOi/C,EAAa/9C,IAK3C8D,KAAKe,IAAI+4C,EAAa9+C,OAAS;AA0ExD,OAvEAwc,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,gBACA,CACE,2BAA4B6P,EAAa9mB,MACzC,6BAA8BohD,EAAWphD,MACzC,gCAAiC6+C,EAAc7+C,OAEjDy7C,EAAez7C,MACfV,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKs5B,SACP+L,EAAU7zC,OAASo0B,EAAMiR,SAASrlC,MAAMnB,QAAW,EAAI,EAACm1C,QAC1DA,GAAO,CAAAj9B,QAAAA,IAAA,CAEfqqC,EAAWphD,OAAKid,EAAAA,YAAA,MAAA,CAAAna,IAAA,OAAAmU,MAGP,CACL,sBACA,CAAE,iCAAkCoqC,EAAQrhD,QAC7CwhD,YACab,EAAchZ,QAClBA,IAAM0Z,EAAQrhD,OAAS68C,EAAS,SAExCniC,CAAAA,EAAMtC,OAAO+/B,EAAUn4C,QAAMid,EAAAC,YAAAsb,GAAA,KAAA,CAAAzhB,QAAAA,IAAAkG,CAAAA,EAAAC,YAAA8pB,GAAA,CAAAnqB,KAEb7P,EAAMhN,MAAQV,EAAMm/C,SAAWn/C,EAAMo/C,UAAQ,WAIlEzhC,EAAAC,YAAA,MAAA,CAAApa,IAAA,YAAAwU,IAIO2nC,EAAYhoC,MAAA,2BAAAisB,SAEPA,GAAQ,CAAAjmB,EAAAC,YAAA,MAAA,CAAA5F,IAGX6nC,EAAUloC,MAAA,yBAAAqpC,UAEJA,EAASE,WACRA,EAAUI,UACXA,GAAS,CAEnBlmC,EAAM3D,UAAUohC,EAAUn4C,WAI9BohD,EAAWphD,OAAKid,EAAAA,YAAA,MAAA,CAAAna,IAAA,OAAAmU,MAGP,CACL,sBACA,CAAE,iCAAkCqqC,EAAQthD,QAC7CwhD,YACab,EAAchZ,QAClBA,IAAM2Z,EAAQthD,OAAS68C,EAAS,SAExCniC,CAAAA,EAAMkE,OAAOu5B,EAAUn4C,QAAMid,EAAAC,YAAAsb,GAAA,KAAA,CAAAzhB,QAAAA,IAAAkG,CAAAA,EAAAC,YAAA8pB,GAAA,CAAAnqB,KAEb7P,EAAMhN,MAAQV,EAAMo/C,SAAWp/C,EAAMm/C,UAAQ,gBAQhE,CACLpZ,SAAUjR,EAAMiR,SAChBwX,SAAAA,EACAiC,aAAAA,EACA1zC,MAAAA,MC9aOq2C,GAAmBtqC,OAAOC,IAAI,wBAE9BsqC,GAAsB/qC,GAAa,CAC9CgrC,OAAQ/9B,QACRzK,OAAQyK,QACRivB,gBAAiB,CACfjsC,KAAM4C,SACNuN,QAAS/X,MAGRu/C,QACAvnC,QACAytB,GAAe,CAAEG,cAAe,wBAChC7Q,QACApD,QACAwT,GAAiB,CAAEzjB,QAAS,WAC9B,cAYUkhC,GAAaznC,IAAAA,CAMuB,CAC/CzQ,KAAM,aAENpK,MAAOoiD,KAEPjkB,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChC2lC,WAAEA,EAAUE,OAAEA,EAAMvmB,KAAEA,EAAIxG,KAAEA,EAAIitB,SAAEA,GAAaD,GAAS9lC,EAAOmiD;AAsCrE,OApCA/pC,GAAgB,CACd2K,MAAO,CACL9O,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpByY,SAAU6lB,EAAAA,MAAMt+B,EAAO,YACvB6Z,OAAQykB,EAAAA,MAAMt+B,EAAO,UACrBohB,QAASkd,EAAAA,MAAMt+B,EAAO,cAI1Bkd,IAAU,KACR,MAAMqlC,EAAkBjD,GAAY5kC,YAAY1a;AAEhD,OAAA2d,cAAA2hC,GAAAvhC,EAAAqe,WAESmmB,EAAe,CAAA5qC,MACb,CACL,eACA,CACE,uBAAwB3X,EAAMqiD,QAEhCvvB,EAAapyB,MACbV,EAAM2X,OACPzI,MACOlP,EAAMkP,QAAK,CAAAuI,QAAAA,IAAA,CAEjB2D,EAAM3D,UAAU,CAChBkuB,WAAAA,EACAE,OAAAA,EACAvmB,KAAAA,EACAxG,KAAAA,EACAitB,SAAUA,EAASrlC,cAMpB,MCnDE8hD,GAAiBnrC,GAAa,CACzCorC,YAAalhD,OACbmhD,aAAcnhD,OACduvC,WAAY1zB,GACZo1B,SAAUluB,QACVmuB,UAAW,CACTnrC,KAAM8V,GACN3F,QAAS,WAEXi7B,WAAY,CACVprC,KAAM/F,OACNkW,QAAS,kBAEX4lB,UAAW/Y,QACXzK,OAAQyK,QACRq+B,WAAY,CACVr7C,KAAM/F,OACNkW,QAAS,aAEXs8B,MAAOzvB,QACPqoB,KAAM,CACJrlC,KAAMgd,QACN7M,aAASjY,GAEXojD,KAAMt+B,QACNu+B,cAAethD,OACfsvC,YAAazzB,GACb6zB,OAAQ,CACN3pC,KAAM,CAACgd,QAASvkB,QAChB0X,SAAS,GAEX9F,KAAMpQ,OACNohC,WAAY,CACVr7B,KAAMgd,QACN7M,SAAS,GAGX4wB,QAASp+B,IACTq+B,YAAar+B,OAEV62B,QACAppB,QACA6sB,QACArD,QACAqE,QACA1J,QACAsR,QACA9F,QACA5S,GAAa,CAAEvZ,IAAK,YACpBmW,QACAwT,GAAiB,CAAEzjB,QAAS,WAC9B,SAEU2B,GAAQlI,IAAAA,CAA+B,CAClDzQ,KAAM,QAEN6zB,WAAY,CAAEwS,OAAAA,IAEdzwC,MAAOwiD,KAEPrkB,MAAO,CACL,cAAgBiN,IAAkB,EAClC,oBAAsB1qC,IAAmB,EACzC,iBAAmBuI,IAA4B,EAC/C65C,MAAQ1X,IAAkC,GAG5C5wB,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKmkB,KAAEA,EAAI/N,MAAEA,GAAO9M;AAClC,MAAMyE,EAAEA,GAAMge,MACRkQ,cAAEA,GAAkBD,GAAUhhC,IAC9Bo7B,aAAEA,EAAYC,YAAEA,EAAW0J,eAAEA,GAAmBD,GAAW9kC,IAC3DykC,eAAEA,GAAmBD,GAAWxkC,IAChCqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAW/7B,IAChCunC,YAAEA,GAAgBD,GAAQtnC,IAC1B8yB,aAAEA,GAAiBgB,GAAa9zB,GAEhC6iC,EAAWta,GAAgBvoB,EAAO,cAClC80B,EAAQ0Q,GAAaxlC,EAAOmiD,IAAkB,GAC9CxV,EAAOP,GAAQpsC,EAAOgF,GACtBunC,EAAS7iC,YAAS,KAAqB,IAAf1J,EAAM2sC,MAAkBA,EAAKJ,OAAO7rC,QAC5DkkC,EAAcl7B,EAAAA,UAAS,KAC1B1J,EAAMyY,WACQ,IAAfzY,EAAM2sC,SACH7X,GAAS90B,EAAM2sC,MAAQA,EAAK/H,YAAYlkC,SAEvCmyC,EAAanpC,EAAAA,UAAS,KAAO,CACjC,aAAcqJ,EAAE/S,EAAM0yC,YACtBrK,QAAS+C,GACPA,EAAEoW,iBACFpW,EAAEyJ,kBAEFhS,EAASniC,OAAQ,EAEjByoB,EAAK,cAAeiiB;AAIxB,SAAS/C,EAAS+C,GAChBjiB,EAAK,QAASiiB,GAETxG,EAAYlkC,QAEjBisC,EAAKI,WAAW3B,GAChBtW,GAAO8Q,UAGT,SAASmd,EAAW3X,GACJ,UAAVA,EAAE5nC,KAA6B,MAAV4nC,EAAE5nC,MACzB4nC,EAAEoW,iBACFnZ,EAAQ+C,IAIZ,MAAO,KACL,MAAMwG,EAAOjF,EAAKJ,OAAO7rC,MAAS,IAAMV,EAAMkb,IACxC8nC,KAAoBhjD,EAAM8wC,aAAc9wC,EAAM0iD,cAC9C5Q,KAAekR,IAAkB5nC,EAAM8mB,QACvC4Q,KAAc13B,EAAM4D,QAAShf,EAAMwyC,UACnCyQ,KAAe7nC,EAAMvB,SAAU7Z,EAAM6Z,SAAWib,EAChDouB,KAAqBljD,EAAM6wC,cAAe7wC,EAAM6iD,eAChDhR,KAAgBqR,IAAmB9nC,EAAM6mB,SACzCkhB,GAAYruB,GAASA,EAAM6Q,WAAWjlC;AAE5C,OAAOmiC,EAASniC,OAAKkgC,iBAAAjjB,EAAAA,YAAAi0B,EAAA,CAAAj6B,MAEV,CACL,SACA,CACE,mBAAoB3X,EAAMyY,SAC1B,gBAAiBzY,EAAM+zC,MACvB,eAAgBnP,EAAYlkC,MAC5B,iBAAkBuiD,EAClB,eAAgBjjD,EAAM4iD,MAExB9vB,EAAapyB,MACbugC,EAAcvgC,MACdyiD,EAAW/nB,EAAa16B,WAAQlB,EAChCilC,EAAe/jC,MACf2gC,EAAiB3gC,MACjBs7B,EAAet7B,MACf6mC,EAAY7mC,MACZqkC,EAAerkC,MACfo0B,GAAOwQ,cAAc5kC,MACrBV,EAAM2X,OACPzI,MACM,CACLi0C,EAAW9nB,EAAY36B,WAAQlB,EAC/BQ,EAAMkP,OACPuJ,SACUzY,EAAMyY,eAAYjZ,EAAS69B,UAC1Br9B,EAAMq9B,UAASmP,KACpBG,EAAKH,KAAK9rC,MAAK8nC,SACX5D,EAAYlkC,MAAQ,OAAIlB,EAAS6oC,QAClCA,EAAOiZ,UACL1c,EAAYlkC,QAAU6rC,EAAO7rC,OAASqiD,GAAS,CAAAtrC,QAAAA,IAAA,CAGzDktB,GAAYC,EAAYlkC,MAAO,UAE/BuiD,GAAStlC,EAAAC,YAAAic,GAAA,CAAAr2B,IAAA,UAAA,CAAAiU,QAAAA,IAAAmpB,CAAAA,iBAAAjjB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,kBAAA,CAMFyD,EAAMvB,OAGkB8D,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,kBAAAiV,UAKXzY,EAAM2iD,WAAUrrC,SAClB,CACRowB,MAAO,CAAEnqB,KAAMvd,EAAM2iD,cAELvnC,EAAMvB,QAZb8D,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,cAAA+Z,KAGJvd,EAAM2iD,YAAUhlC,QAW1B,CAAA,CAAAylC,QAhBQtuB,EAAM6Q,WAAWjlC,YAqB9BmxC,GAAUl0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,UAAAmU,MAAA,mBAAA,CAELyD,EAAM6mB,QAgBJtkB,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,mBAAAiV,UAKWyqC,EAAe5rC,SACjB,CACR4J,QAAS,CACPsd,MAAOx+B,EAAM6iD,cACb/hD,OAAO,GAET4mC,MAAO,CACLnqB,KAAMvd,EAAM6wC,YACZ/vC,OAAO,KAGOsa,EAAM6mB,SAhCZtkB,cAAA6W,EAAAA,SAAA,KAAA,CAEVx0B,EAAM6wC,aAAWlzB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,eAAA+Z,KAGRvd,EAAM6wC,YAAW/vC,OAAA,GAAA,MAK1Bd,EAAM6iD,eAAallC,EAAAA,YAAAuD,GAAA,CAAA1d,IAAA,iBAAAg7B,MAGTx+B,EAAM6iD,cAAa/hD,OAAA,GAG9B,UAoBR6c,EAAAA,YAAA,MAAA,CAAAhG,MAAA,kBAAA,oBAAA,IAGGyD,CAAAA,EAAM3D,UAAU,CAChBkuB,WAAY7Q,GAAO6Q,WAAWjlC,MAC9B4kC,cAAexQ,GAAOwQ,cAAc5kC,MACpCmlC,OAAQ/Q,GAAO+Q,OACfD,OAAQ9Q,GAAO8Q,OACfllC,MAAOo0B,GAAOp0B,MAAMA,MACpB+X,SAAUzY,EAAMyY,YACZzY,EAAM2R,OAGZmgC,GAASn0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,SAAAmU,MAAA,kBAAA,CAEJyD,EAAM8mB,OAgBJvkB,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,kBAAAiV,UAKWuqC,EAAc1rC,SAChB,CACR4J,QAAS,CACPre,KAAK,EACL27B,MAAOx+B,EAAM0iD,cAEfhb,MAAO,CACL7kC,KAAK,EACL0a,KAAMvd,EAAM8wC,cAGE11B,EAAM8mB,QAhCbvkB,cAAA6W,EAAAA,SAAA,KAAA,CAETx0B,EAAM8wC,YAAUnzB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,cAAAX,KAAA,EAAA0a,KAIPvd,EAAM8wC,YAAU,MAIzB9wC,EAAM0iD,cAAY/kC,EAAAA,YAAAuD,GAAA,CAAA1d,IAAA,gBAAAX,KAAA,EAAA27B,MAIRx+B,EAAM0iD,cAEjB,UAsBP5P,GAAQn1B,EAAAC,YAAA,SAAAG,aAAA,CAAAva,IAAA,QAAAmU,MAAA,gBAAArQ,KAAA,UAKDurC,EAAWnyC,OAEd,CAAC0a,EAAM4D,MAGiBrB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,iBAAA8T,SAMZ,CACRowB,MAAO,CACLnqB,KAAMvd,EAAMyyC,UACZ5pC,KAAM,aAGQuS,EAAM4D,OAfdrB,EAAAC,YAAA8pB,GAAA,CAAAlkC,IAAA,aAAA+Z,KAGHvd,EAAMyyC,UAAS5pC,KAAA,WAAA8U,WAgB7BkjB,CAAAA,CAAAA,mBAlJU+D,UAAAA,EAAYlkC,OAASV,EAAMixC,OAAQ,YC9L3CoS,GAGRxrC,OAAOC,IAAI;AAET,SAASwrC,KACd,MAAMC,EAASrrC,EAAMA,OAACmrC,GAAS,CAAExR,WAAY5kC,EAAUA,YAAC,GAAQu2C,iBAAkBA,IAAM,OAElFtyB,EAAO,CACX2gB,WAAY5kC,EAAUA,YAAC,GACvBu2C,iBAAmB9iD,IACbA,IAAOwwB,EAAK2gB,WAAWnxC,MAAQA;AAMvC,OAFAuY,UAAQoqC,GAASnyB,GAEVqyB,EAGF,SAASE,KACd,OAAOvrC,EAAMA,OAACmrC,GAAS,MCTlB,MAAMK,GAA6Bre,IACxC,MAAMse,EAA2B,CAC/BC,SAAUt1C,IAA8B,IAA7B4W,GAAEA,EAAExkB,MAAEA,EAAKmuC,UAAEA,GAAWvgC;AAKjC,OAJA4W,EAAKgE,EAAAA,MAAMhE,GAIPmgB,IAAc3kC,GAA4B,IAAnBmuC,EAAUhmC,MAAcgmC,EAAUtrC,IAAI2hB,KAE7DxkB,EACFmuC,EAAU99B,IAAImU,GAEd2pB,EAAUvsC,OAAO4iB,IAL0D2pB,GAU/EgV,GAAIA,CAAC5iD,EAAGuG,EAAUs8C,KAChB,IAAI/7C,EAAM,IAAIlE;AAEd,GAAS,MAAL5C,EACF,IAAK,MAAMikB,KAAM5f,EAAYrE,GAC3B8G,EAAM47C,EAASC,SAAS,CACtB1+B,GAAAA,EACAxkB,OAAO,EACPmuC,UAAW,IAAIhrC,IAAIkE,GACnBP,SAAAA,EACAs8C,QAAAA;AAKN,OAAO/7C,GAEThB,IAAK9F,GACIN,MAAMK,KAAKC;AAItB,OAAO0iD,GAGII,GAAmC1e,IAC9C,MAAM2e,EAAiBN,GAA0Bre;AAyBjD,MAvBiC,CAC/Bue,SAAU5tC,IAAgC,IAA/B64B,UAAEA,EAAS3pB,GAAEA,KAAOjhB,GAAM+R;AACnCkP,EAAKgE,EAAAA,MAAMhE;AACX,MAAM++B,EAAiBpV,EAAUtrC,IAAI2hB,GAAM,IAAIrhB,IAAI,CAACqhB,IAAO,IAAIrhB;AAC/D,OAAOmgD,EAAeJ,SAAS,IAAK3/C,EAAMihB,GAAAA,EAAI2pB,UAAWoV,KAE3DJ,GAAIA,CAAC5iD,EAAGuG,EAAUs8C,KAChB,IAAI/7C,EAAM,IAAIlE;AAEd,GAAS,MAAL5C,EAAW,CACb,MAAM6I,EAAMxE,EAAYrE;AACpB6I,EAAIvK,SACNwI,EAAMi8C,EAAeH,GAAG/5C,EAAIV,MAAM,EAAG,GAAI5B,EAAUs8C,IAIvD,OAAO/7C,GAEThB,IAAKA,CAAC9F,EAAGuG,EAAUs8C,IACVE,EAAej9C,IAAI9F,EAAGuG,EAAUs8C,KCxEhCI,GAAmC,CAC9C56B,KAAMhb,IAAoC,IAAnC4W,GAAEA,EAAExkB,MAAEA,EAAKyjD,OAAEA,EAAML,QAAEA,GAASx1C;AACnC,GAAI5N,EAAO,CACT,MAAM0jD,EAAY,IAAIvgD;AACtBugD,EAAUrzC,IAAImU;AAEd,IAAIq+B,EAASO,EAAQl8C,IAAIsd;AAEzB,KAAiB,MAAVq+B,GACLa,EAAUrzC,IAAIwyC,GACdA,EAASO,EAAQl8C,IAAI27C;AAGvB,OAAOa,EAGP,OADAD,EAAO7hD,OAAO4iB,GACPi/B,GAGXte,OAAQA,IAAM,MAGHwe,GAAqC,CAChD/6B,KAAMtT,IAAoC,IAAnCkP,GAAEA,EAAExkB,MAAEA,EAAKyjD,OAAEA,EAAML,QAAEA,GAAS9tC;AACnC,GAAItV,EAAO,CACT,IAAI6iD,EAASO,EAAQl8C,IAAIsd;AAGzB,IAFAi/B,EAAOpzC,IAAImU,GAEM,MAAVq+B,GAAkBA,IAAWr+B,GAClCi/B,EAAOpzC,IAAIwyC,GACXA,EAASO,EAAQl8C,IAAI27C;AAGvB,OAAOY,EAIT,OAFEA,EAAO7hD,OAAO4iB,GAETi/B,GAETte,OAAQA,IAAM,MAGHye,GAAiC,CAC5Ch7B,KAAM+6B,GAAqB/6B,KAC3Buc,OAAQ0e,IAAoC,IAAnCr/B,GAAEA,EAAExkB,MAAEA,EAAKyjD,OAAEA,EAAML,QAAEA,GAASS;AACrC,IAAK7jD,EAAO,OAAOyjD;AAEnB,MAAM/kD,EAAkB;AAExB,IAAImkD,EAASO,EAAQl8C,IAAIsd;AAEzB,KAAiB,MAAVq+B,GACLnkD,EAAK4J,KAAKu6C,GACVA,EAASO,EAAQl8C,IAAI27C;AAGvB,OAAO,IAAI1/C,IAAIzE,KCjDNolD,GAA6Bnf,IACxC,MAAMse,EAA2B,CAC/B9d,OAAQv3B,IAA6B,IAA5B4W,GAAEA,EAAExkB,MAAEA,EAAKqlC,SAAEA,GAAUz3B;AAK9B,GAJA4W,EAAKgE,EAAAA,MAAMhE,GAIPmgB,IAAc3kC,EAAO,CACvB,MAAM+jD,EAAK9jD,MAAMK,KAAK+kC,EAAS3rB,WAC5B7C,QAAO,CAACzN,EAAGkM,KAAmB,IAAhBxS,EAAK9C,GAAMsV;AAExB,MADc,OAAVtV,GAAgBoJ,EAAId,KAAKxF,GACtBsG,IACN;AACL,GAAkB,IAAd26C,EAAGllD,QAAgBklD,EAAG,KAAOv/B,EAAI,OAAO6gB,EAK9C,OAFAA,EAASh+B,IAAImd,EAAIxkB,EAAQ,KAAO,OAEzBqlC,GAET8d,GAAIA,CAAC5iD,EAAGuG,EAAUs8C,KAChB,IAAI18C,EAAM,IAAImB;AAEd,IAAK,MAAM2c,KAAOjkB,GAAK,GACrBmG,EAAMu8C,EAAS9d,OAAO,CACpB3gB,GAAAA,EACAxkB,OAAO,EACPqlC,SAAU,IAAIx9B,IAAInB,GAClBI,SAAAA,EACAs8C,QAAAA;AAIJ,OAAO18C,GAETL,IAAK9F,IACH,MAAM6I,EAAM;AAEZ,IAAK,MAAOtG,EAAK9C,KAAUO,EAAEmZ,UACb,OAAV1Z,GAAgBoJ,EAAId,KAAKxF;AAG/B,OAAOsG;AAIX,OAAO65C,GAGIe,GAAmCrf,IAC9C,MAAM2e,EAAiBQ,GAA0Bnf;AAsBjD,MApBiC,CAC/BQ,OAAQ0e,IAA+B,IAA9Bxe,SAAEA,EAAQ7gB,GAAEA,KAAOjhB,GAAMsgD;AAChCr/B,EAAKgE,EAAAA,MAAMhE;AACX,MAAM++B,EAAiBle,EAASxiC,IAAI2hB,GAAM,IAAI3c,IAAI,CAAC,CAAC2c,EAAI6gB,EAASn+B,IAAIsd,MAAU,IAAI3c;AACnF,OAAOy7C,EAAene,OAAO,IAAK5hC,EAAMihB,GAAAA,EAAI6gB,SAAUke,KAExDJ,GAAIA,CAAC5iD,EAAGuG,EAAUs8C,KAChB,IAAI18C,EAAM,IAAImB;AAMd,OAJItH,GAAG1B,SACL6H,EAAM48C,EAAeH,GAAG5iD,EAAEmI,MAAM,EAAG,GAAI5B,EAAUs8C,IAG5C18C,GAETL,IAAKA,CAAC9F,EAAGuG,EAAUs8C,IACVE,EAAej9C,IAAI9F,EAAGuG,EAAUs8C,KClBhCa,GAA6C9sC,OAAOC,IAAI,kBAExD8sC,GAA6B,CACxC1/B,GAAIjY,EAAAA,aACJ2L,KAAM,CACJ4M,SAAUA,IAAM,KAChBE,WAAYA,IAAM,KAClBo+B,QAAS9rC,EAAAA,IAAI,IAAIzP,KACjBf,SAAUwQ,EAAAA,IAAI,IAAIzP,KAClB+gB,KAAMA,IAAM,KACZu7B,aAAcA,IAAM,KACpBjB,SAAUA,IAAM,KAChB/d,OAAQA,IAAM,KACdif,YAAa9sC,EAAGA,KAAC,GACjB+sC,WAAY/sC,EAAGA,KAAC,GAChBmsC,OAAQnsC,EAAAA,IAAI,IAAInU,KAChBgrC,UAAW72B,EAAAA,IAAI,IAAInU,KACnBkiC,SAAU/tB,EAAAA,IAAI,IAAIzP,KAClBy8C,eAAgBhtC,EAAGA,IAAC,MAIXitC,GAAkB5tC,GAAa,CAC1CytC,YAAaxgC,QACbygC,WAAYzgC,QACZ4gC,eAAgB,CAAC3jD,OAAQ2I,SAAUnK,QACnColD,eAAgB,CAAC5jD,OAAQ2I,SAAUnK,QACnCqlD,aAAc,CAAC7jD,OAAQxB,QACvBokD,OAAQ,KACRtV,UAAW,KACX9I,SAAU,KACVV,UAAW/gB,SACV,UAEU+gC,GAAarlD,IACxB,IAAIi/B,GAAc;AAClB,MAAMz3B,EAAWwQ,EAAAA,IAAI,IAAIzP,KACnBu7C,EAAU9rC,EAAAA,IAAI,IAAIzP,KAElB47C,EAAS57B,GAAgBvoB,EAAO,SAAUA,EAAMmkD,QAAQljD,GAAK,IAAI4C,IAAI5C,KAAIA,GAAK,IAAIA,EAAEkI,YAEpF+7C,EAAiBx7C,EAAAA,UAAS,KAC9B,GAAoC,iBAAzB1J,EAAMklD,eAA6B,OAAOllD,EAAMklD;AAC3D,GAAoC,mBAAzBllD,EAAMklD,eAA+B,OAAOllD,EAAMklD,eAAellD,EAAMqlC;AAElF,OAAQrlC,EAAMklD,gBACZ,IAAK,OAAQ,MHxBgB7f,CAAAA,IACjC,MAAM2e,EAAiBN,GAA0Bre;AAajD,MAXiC,CAC/Bue,SAAUW,IAA0C,IAAzCr/B,GAAEA,EAAE2pB,UAAEA,EAASrnC,SAAEA,KAAavD,GAAMsgD;AAE7C,OADAr/B,EAAKgE,EAAAA,MAAMhE,GACP1d,EAASjE,IAAI2hB,GAAY2pB,EAEtBmV,EAAeJ,SAAS,CAAE1+B,GAAAA,EAAI2pB,UAAAA,EAAWrnC,SAAAA,KAAavD,KAE/D4/C,GAAIG,EAAeH,GACnB98C,IAAKi9C,EAAej9C,MGaEu+C,CAAmBtlD,EAAMqlC;AAC7C,IAAK,cAAe,MHReA,CAAAA,IACvC,MAAM2e,EAAiBD,GAAgC1e;AAavD,MAXiC,CAC/Bue,SAAU2B,IAA0C,IAAzCrgC,GAAEA,EAAE2pB,UAAEA,EAASrnC,SAAEA,KAAavD,GAAMshD;AAE7C,OADArgC,EAAKgE,EAAAA,MAAMhE,GACP1d,EAASjE,IAAI2hB,GAAY2pB,EAEtBmV,EAAeJ,SAAS,CAAE1+B,GAAAA,EAAI2pB,UAAAA,EAAWrnC,SAAAA,KAAavD,KAE/D4/C,GAAIG,EAAeH,GACnB98C,IAAKi9C,EAAej9C,MGHSy+C,CAAyBxlD,EAAMqlC;AAC1D,IAAK,cAAe,OAAOqe,GAA0B1jD,EAAMqlC;AAC3D,IAAK,qBACL,QAAS,OAAO0e,GAAgC/jD,EAAMqlC,eAIpD8f,EAAiBz7C,EAAAA,UAAS,KAC9B,GAAoC,iBAAzB1J,EAAMmlD,eAA6B,OAAOnlD,EAAMmlD;AAC3D,GAAoC,mBAAzBnlD,EAAMmlD,eAA+B,OAAOnlD,EAAMmlD,eAAenlD,EAAMqlC;AAElF,OAAQrlC,EAAMmlD,gBACZ,IAAK,cAAe,MDjBe9f,CAAAA,IACvC,MAAM2e,EAAiBU,GAAgCrf;AAavD,MAXiC,CAC/BQ,OAAQ4f,IAAyC,IAAxCvgC,GAAEA,EAAE6gB,SAAEA,EAAQv+B,SAAEA,KAAavD,GAAMwhD;AAE1C,OADAvgC,EAAKgE,EAAAA,MAAMhE,GACP1d,EAASjE,IAAI2hB,GAAY6gB,EAEtBie,EAAene,OAAO,CAAE3gB,GAAAA,EAAI6gB,SAAAA,EAAUv+B,SAAAA,KAAavD,KAE5D4/C,GAAIG,EAAeH,GACnB98C,IAAKi9C,EAAej9C,MCMS2+C,CAAyB1lD,EAAMqlC;AAC1D,IAAK,OAAQ,MDnCgBA,CAAAA,IACjC,MAAM2e,EAAiBQ,GAA0Bnf;AAajD,MAXiC,CAC/BQ,OAAQ0f,IAAyC,IAAxCrgC,GAAEA,EAAE6gB,SAAEA,EAAQv+B,SAAEA,KAAavD,GAAMshD;AAE1C,OADArgC,EAAKgE,EAAAA,MAAMhE,GACP1d,EAASjE,IAAI2hB,GAAY6gB,EAEtBie,EAAene,OAAO,CAAE3gB,GAAAA,EAAI6gB,SAAAA,EAAUv+B,SAAAA,KAAavD,KAE5D4/C,GAAIG,EAAeH,GACnB98C,IAAKi9C,EAAej9C,MCwBE4+C,CAAmB3lD,EAAMqlC;AAC7C,IAAK,cAAe,OAAOmf,GAA0BxkD,EAAMqlC;AAC3D,IAAK,qBAAsB,OAAOqf,GAAgC1kD,EAAMqlC;AACxE,IAAK,UACL,QAAS,MDLuBA,CAAAA,IACpC,MAAMse,EAA2B,CAC/B9d,OAAQ+f,IAAgD,IAA/C1gC,GAAEA,EAAExkB,MAAEA,EAAKqlC,SAAEA,EAAQv+B,SAAEA,EAAQs8C,QAAEA,GAAS8B;AACjD1gC,EAAKgE,EAAAA,MAAMhE;AACX,MAAM8M,EAAW,IAAIzpB,IAAIw9B,GAEnBvf,EAAQ,CAACtB;AAEf,KAAOsB,EAAMjnB,QAAQ,CACnB,MAAMiB,EAAOgmB,EAAMpjB;AAEnB2iC,EAASh+B,IAAIvH,EAAME,EAAQ,KAAO,OAE9B8G,EAASjE,IAAI/C,IACfgmB,EAAMxd,QAAQxB,EAASI,IAAIpH,IAI/B,IAAI+iD,EAASO,EAAQl8C,IAAIsd;AAEzB,KAAOq+B,GAAQ,CACb,MAAMsC,EAAcr+C,EAASI,IAAI27C,GAC3BuC,EAAgBD,EAAY3lD,OAAM6lD,GAA6B,OAAtBhgB,EAASn+B,IAAIm+C,KACtDC,EAAeH,EAAY3lD,OAAM6lD,IAAQhgB,EAASxiC,IAAIwiD,IAA8B,QAAtBhgB,EAASn+B,IAAIm+C;AAEjFhgB,EAASh+B,IAAIw7C,EAAQuC,EAAgB,KAAOE,EAAe,MAAQ,iBAEnEzC,EAASO,EAAQl8C,IAAI27C,GAKvB,OAAIle,IAAc3kC,GAME,IALPC,MAAMK,KAAK+kC,EAAS3rB,WAC5B7C,QAAO,CAACzN,EAAGm8C,KAAmB,IAAhBziD,EAAK9C,GAAMulD;AAExB,MADc,OAAVvlD,GAAgBoJ,EAAId,KAAKxF,GACtBsG,IACN,IACEvK,OAAqByyB,EAGvB+T,GAET8d,GAAIA,CAAC5iD,EAAGuG,EAAUs8C,KAChB,IAAI18C,EAAM,IAAImB;AAEd,IAAK,MAAM2c,KAAOjkB,GAAK,GACrBmG,EAAMu8C,EAAS9d,OAAO,CACpB3gB,GAAAA,EACAxkB,OAAO,EACPqlC,SAAU,IAAIx9B,IAAInB,GAClBI,SAAAA,EACAs8C,QAAAA;AAIJ,OAAO18C,GAETL,IAAKA,CAAC9F,EAAGuG,KACP,MAAMsC,EAAM;AAEZ,IAAK,MAAOtG,EAAK9C,KAAUO,EAAEmZ,UACb,OAAV1Z,GAAmB8G,EAASjE,IAAIC,IAAMsG,EAAId,KAAKxF;AAGrD,OAAOsG;AAIX,OAAO65C,GChEauC,CAAsBlmD,EAAMqlC,eAI1C+f,EAAe17C,EAAAA,UAAS,KAC5B,GAAkC,iBAAvB1J,EAAMolD,aAA2B,OAAOplD,EAAMolD;AAEzD,OAAQplD,EAAMolD,cACZ,IAAK,OAAQ,OAAOd;AACpB,IAAK,SAAU,OAAOJ;AACtB,IAAK,WACL,QAAS,OAAOG,OAIdxV,EAAYtmB,GAChBvoB,EACA,YACAA,EAAM6uC,WACN5tC,GAAKikD,EAAexkD,MAAMmjD,GAAG5iD,EAAGuG,EAAS9G,MAAOojD,EAAQpjD,SACxDO,GAAKikD,EAAexkD,MAAMqG,IAAI9F,EAAGuG,EAAS9G,MAAOojD,EAAQpjD,SAErDqlC,EAAWxd,GACfvoB,EACA,WACAA,EAAM+lC,UACN9kC,GAAKkkD,EAAezkD,MAAMmjD,GAAG5iD,EAAGuG,EAAS9G,MAAOojD,EAAQpjD,SACxDO,GAAKkkD,EAAezkD,MAAMqG,IAAI9F,EAAGuG,EAAS9G,MAAOojD,EAAQpjD;AAO3D,SAASylD,EAASjhC,GAChB,MAAM9lB,EAAkB;AACxB,IAAImkD,EAAkBr+B;AAEtB,KAAiB,MAAVq+B,GACLnkD,EAAKgnD,QAAQ7C,GACbA,EAASO,EAAQpjD,MAAMkH,IAAI27C;AAG7B,OAAOnkD,EAbTskB,EAAAA,iBAAgB,KACdub,GAAc;AAehB,MAAM7lB,EAAKC,GAAmB,UAExBgtC,EAAwB,CAC5BnhC,GAAIjY,EAAAA,aACJ2L,KAAM,CACJurC,OAAAA,EACAW,YAAaxmB,EAAAA,MAAMt+B,EAAO,eAC1B+kD,WAAYzmB,EAAAA,MAAMt+B,EAAO,cACzB6uC,UAAAA,EACA9I,SAAAA,EACAif,eAAgBt7C,EAAQA,UAAC,KACvB,MAAMI,EAAM;AAEZ,IAAK,MAAOtG,EAAK9C,KAAUqlC,EAASrlC,MAAM0Z,UAC1B,OAAV1Z,GAAgBoJ,EAAId,KAAKxF;AAG/B,OAAOsG,KAET0b,SAAUA,CAACN,EAAIohC,EAAUC,KACvBD,GAAYphC,IAAOohC,GAAYxC,EAAQpjD,MAAMqH,IAAImd,EAAIohC,GAErDC,GAAW/+C,EAAS9G,MAAMqH,IAAImd,EAAI,IAElB,MAAZohC,GACF9+C,EAAS9G,MAAMqH,IAAIu+C,EAAU,IAAI9+C,EAAS9G,MAAMkH,IAAI0+C,IAAa,GAAIphC,KAGzEQ,WAAYR,IACV,GAAI+Z,EAAa;AAEjBz3B,EAAS9G,MAAM4B,OAAO4iB;AACtB,MAAMq+B,EAASO,EAAQpjD,MAAMkH,IAAIsd;AACjC,GAAIq+B,EAAQ,CACV,MAAMiD,EAAOh/C,EAAS9G,MAAMkH,IAAI27C,IAAW;AAC3C/7C,EAAS9G,MAAMqH,IAAIw7C,EAAQiD,EAAK3sC,QAAO3R,GAASA,IAAUgd,KAE5D4+B,EAAQpjD,MAAM4B,OAAO4iB,GACrBi/B,EAAOzjD,MAAM4B,OAAO4iB,IAEtBoE,KAAMA,CAACpE,EAAIxkB,EAAOob,KAChB1C,EAAG+P,KAAK,aAAc,CAAEjE,GAAAA,EAAIxkB,MAAAA,EAAOtB,KAAM+mD,EAAQjhC,GAAKpJ,MAAAA;AAEtD,MAAMsoC,EAAYgB,EAAa1kD,MAAM4oB,KAAK,CACxCpE,GAAAA,EACAxkB,MAAAA,EACAyjD,OAAQ,IAAItgD,IAAIsgD,EAAOzjD,OACvB8G,SAAUA,EAAS9G,MACnBojD,QAASA,EAAQpjD,MACjBob,MAAAA;AAGFsoC,IAAcD,EAAOzjD,MAAQ0jD,IAE/BS,aAAcA,CAAC3/B,EAAIxkB,EAAOob,KACxB,MAAMsoC,EAAYgB,EAAa1kD,MAAMmlC,OAAO,CAC1C3gB,GAAAA,EACAxkB,MAAAA,EACAqlC,SAAU,IAAIx9B,IAAIw9B,EAASrlC,OAC3ByjD,OAAQ,IAAItgD,IAAIsgD,EAAOzjD,OACvB8G,SAAUA,EAAS9G,MACnBojD,QAASA,EAAQpjD,MACjBob,MAAAA;AAEFsoC,IAAcD,EAAOzjD,MAAQ0jD,IAE/Bve,OAAQA,CAAC3gB,EAAIxkB,EAAOob,KAClB1C,EAAG+P,KAAK,eAAgB,CAAEjE,GAAAA,EAAIxkB,MAAAA,EAAOtB,KAAM+mD,EAAQjhC,GAAKpJ,MAAAA;AAExD,MAAM2qC,EAActB,EAAezkD,MAAMmlC,OAAO,CAC9C3gB,GAAAA,EACAxkB,MAAAA,EACAqlC,SAAU,IAAIx9B,IAAIw9B,EAASrlC,OAC3B8G,SAAUA,EAAS9G,MACnBojD,QAASA,EAAQpjD,MACjBob,MAAAA;AAEF2qC,IAAgB1gB,EAASrlC,MAAQ+lD,GAEjCJ,EAAOztC,KAAKisC,aAAa3/B,EAAIxkB,EAAOob,IAEtC8nC,SAAUA,CAAC1+B,EAAIxkB,EAAOob,KACpB,IAAK9b,EAAM8kD,YACT,OAAOuB,EAAOztC,KAAKitB,OAAO3gB,GAAI,EAAMpJ;AAGtC1C,EAAG+P,KAAK,iBAAkB,CAAEjE,GAAAA,EAAIxkB,MAAAA,EAAOtB,KAAM+mD,EAAQjhC,GAAKpJ,MAAAA;AAE1D,MAAM4qC,EAAexB,EAAexkD,MAAMkjD,SAAS,CACjD1+B,GAAAA,EACAxkB,MAAAA,EACAmuC,UAAW,IAAIhrC,IAAIgrC,EAAUnuC,OAC7B8G,SAAUA,EAAS9G,MACnBojD,QAASA,EAAQpjD,MACjBob,MAAAA;AAGF4qC,IAAiB7X,EAAUnuC,MAAQgmD,IAErCl/C,SAAAA,EACAs8C,QAAAA;AAMJ,OAFA7qC,UAAQ0rC,GAAe0B,GAEhBA,EAAOztC,MAGH+tC,GAAgBA,CAACzhC,EAAkBqhC,KAC9C,MAAMhD,EAASrrC,EAAAA,OAAOysC,GAAeC,IAE/BgC,EAAY/uC,OAAOuE,MACnByqC,EAAan9C,YAAS,SAAmBlK,IAAb0lB,EAAGxkB,MAAsBwkB,EAAGxkB,MAAQkmD,IAEhEpmD,EAAO,IACR+iD,EACHr+B,GAAI2hC,EACJv9B,KAAMA,CAACA,EAAe8hB,IAAamY,EAAO3qC,KAAK0Q,KAAKu9B,EAAWnmD,MAAO4oB,EAAM8hB,GAC5EyZ,aAAcA,CAACv7B,EAAe8hB,IAAcmY,EAAO3qC,KAAKisC,aAAagC,EAAWnmD,MAAO4oB,EAAM8hB,GAC7F0b,OAAQp9C,EAAAA,UAAS,IAAM65C,EAAO3qC,KAAKurC,OAAOzjD,MAAM6C,IAAIsjD,EAAWnmD,SAC/D6iD,OAAQ75C,EAAAA,UAAS,IAAM65C,EAAO3qC,KAAKkrC,QAAQpjD,MAAMkH,IAAIi/C,EAAWnmD,SAChEkjD,SAAUA,CAAC/U,EAAoBzD,IAAcmY,EAAO3qC,KAAKgrC,SAASiD,EAAWnmD,MAAOmuC,EAAWzD,GAC/F2b,YAAar9C,EAAQA,UAAC,IAAM65C,EAAO3qC,KAAKi2B,UAAUnuC,MAAM6C,IAAI2lB,EAAKA,MAAC29B,EAAWnmD,UAC7EmlC,OAAQA,CAACE,EAAmBqF,IAAcmY,EAAO3qC,KAAKitB,OAAOghB,EAAWnmD,MAAOqlC,EAAUqF,GACzFzF,WAAYj8B,EAAAA,UAAS,IAAkE,OAA5D65C,EAAO3qC,KAAKmtB,SAASrlC,MAAMkH,IAAIshB,EAAKA,MAAC29B,EAAWnmD,UAC3EsmD,gBAAiBt9C,EAAQA,UAAC,IAA2D,kBAArD65C,EAAO3qC,KAAKmtB,SAASrlC,MAAMkH,IAAIi/C,EAAWnmD,SAC1EumD,OAAQv9C,EAAQA,UAAC,KAAO65C,EAAO3qC,KAAKpR,SAAS9G,MAAMkH,IAAIi/C,EAAWnmD,SAClEwmD,iBAAkB3D,EAAO2D;AAW3B,OARC3D,EAAO2D,kBAAoB3D,EAAO3qC,KAAK4M,SAASqhC,EAAWnmD,MAAO6iD,EAAOr+B,GAAGxkB,MAAO6lD,GAEpF7iC,EAAAA,iBAAgB,MACb6/B,EAAO2D,kBAAoB3D,EAAO3qC,KAAK8M,WAAWmhC,EAAWnmD,UAGhE6lD,GAAWttC,EAAOA,QAAC0rC,GAAenkD,GAE3BA,GCpTH2mD,GAAsB7sC,GAAgB,CAC1ClQ,KAAM,sBAENoQ,MAAO6hB,EAAC/tB,GAAa,IAAX8M,MAAEA,GAAO9M;AAGjB,MDiTmC84C,MACrC,MAAM7D,EAASrrC,EAAAA,OAAOysC,GAAeC;AAErC3rC,EAAAA,QAAQ0rC,GAAe,IAAKpB,EAAQ2D,kBAAkB,KCtTpDE,GAEO,IAAMhsC,EAAM3D,eAIV4vC,GAAsBhwC,GAAa,CAE9CiwC,YAAa/lD,OACb0jC,UAAW1jC,OACX0S,MAAO1S,OACPgmD,aAAc,CACZjgD,KAAM8V,GACN3F,QAAS,aAEX+vC,WAAY,CACVlgD,KAAM8V,GACN3F,QAAS,WAEXo5B,YAAazzB,GACb0zB,WAAY1zB,GACZqqC,MAAOnjC,QACPvE,SAAUuE,QACV6G,MAAO5pB,OACPb,MAAO,QAEJgX,QACA+c,MACF,cAEUizB,GAAa7sC,IAAAA,CAAoC,CAC5DzQ,KAAM,aAENpK,MAAOqnD,KAEP7sC,MAAOxa,EAAKgW,GAAa,IAAXoF,MAAEA,GAAOpF;AACrB,MAAM8wC,OAAEA,EAAMx9B,KAAEA,EAAMpE,GAAIyiC,GAAQhB,GAAcroB,EAAAA,MAAMt+B,EAAO,UAAU,GACjEklB,EAAKxb,YAAS,IAAO,oBAAmBnI,OAAOomD,EAAIjnD,WACnD8lD,EAAO/C,MACP/iB,SAAEA,GAAa4B;AAErB,SAAS+F,EAAS+C,GAChB9hB,GAAMw9B,EAAOpmD,MAAO0qC,GAGtB,MAAMwc,EAAiBl+C,EAAAA,UAAS,KAAO,CACrC2+B,QAAAA,EACA1wB,MAAO,uBACPuN,GAAIA,EAAGxkB,UAGHmnD,EAAan+C,YAAS,IAAMo9C,EAAOpmD,MAAQV,EAAMunD,aAAevnD,EAAMwnD,aACtEM,EAAoBp+C,EAAAA,UAAS,KAAO,CACxCq+C,UAAW,CACTtiC,OAAQqhC,EAAOpmD,MACf4mD,YAAatnD,EAAMsnD,YACnBriB,UAAWjlC,EAAMilC,UACjBhxB,MAAOjU,EAAMiU,MACb48B,YAAa7wC,EAAM6wC,aAAgB7wC,EAAM+f,UAAY8nC,EAAWnnD,MAChEowC,WAAY9wC,EAAM8wC,aAAgB9wC,EAAM+f,UAAY8nC,EAAWnnD,MAC/DyqB,MAAOnrB,EAAMmrB,MACbzqB,MAAOV,EAAMU;AAkCjB,OA9BAwc,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,eACA,CACE,wBAAyB6uC,GAAM3U,WAAWnxC,MAC1C,sBAAuBV,EAAMynD,MAC7B,yBAA0BznD,EAAM+f,SAChC,qBAAsB+mC,EAAOpmD,OAE/BV,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAuI,QAAAA,IAEjB2D,CAAAA,EAAM4sC,WAASrqC,EAAAA,YAAAoc,GAAA,CAAAziB,SACewwC,EAAkBpnD,OAAK,CAAA+W,QAAAA,IAAAkG,CAAAA,cAAAwpC,GAAA,KAAA,CAAA1vC,QAAAA,IAAA,CAE/C2D,EAAM4sC,UAAU,CAAEhoD,MAAO4nD,EAAelnD,MAAOomD,OAAQA,EAAOpmD,cAGrEid,EAAAC,YAAAse,GAAA,CAAApV,WAE4B,CAAE3e,UAAWyxB,IAAmBnhB,UAAcioB,EAAShgC,OAAK,CAAA+W,QAAAA,IAAAmpB,CAAAA,iBAAAjjB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,sBAAAuG,KAAA,QAAA,kBACvBgH,EAAGxkB,OAC/D0a,CAAAA,EAAM3D,gBAAW2rC,EAAAA,MAD+D0D,EAAOpmD,iBAO1F,CACLomD,OAAAA,MCnHOmB,GAA6B5wC,GAAa,CACrDkgB,QAAS,CAAC91B,OAAQF,WAEfmW,QACA+c,MACF,qBAEUyzB,GAAoBrtC,IAAAA,CAAmB,CAClDzQ,KAAM,oBAENpK,MAAOioD,KAEPztC,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAerB,OAdA4O,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,uBACA3X,EAAM2X,OACPzI,MACM,CACL,CAAE,iCAAkClP,EAAMu3B,SAC1Cv3B,EAAMkP,QAEEkM,KAIP,MC/BE+sC,GAAiBntC,GAAuB,qBCwDxCotC,GAAqB/wC,GAAa,CAC7CoO,OAAQ,CACNne,KAAMgd,QACN7M,aAASjY,GAEXijD,YAAalhD,OAEb+lD,YAAa/lD,OACbmhD,aAAcnhD,OACduvC,WAAY1zB,GACZ6nB,UAAW1jC,OACXkX,SAAU6L,QACV8N,MAAO,CAAC9N,QAAS/iB,QACjBorC,KAAM,CACJrlC,KAAMgd,QACN7M,aAASjY,GAEX6oD,IAAK/jC,QACLu+B,cAAethD,OACfsvC,YAAazzB,GACb6zB,OAAQ,CACN3pC,KAAM,CAACgd,QAASvkB,QAChB0X,SAAS,GAEXs5B,KAAMzsB,QACNgkC,SAAU,CAAC/mD,OAAQE,QACnB0pB,MAAO,CAAC5pB,OAAQE,QAChBf,MAAO,KAEP2nC,QAASp+B,IACTq+B,YAAar+B,OAEV62B,QACAppB,QACA6sB,QACAvK,QACAkH,QACArF,QACAsR,QACA1Y,QACApD,QACAwT,GAAiB,CAAEzjB,QAAS,UAC9B,aAEU2mC,GAAYltC,IAAAA,CAAmC,CAC1DzQ,KAAM,YAEN6zB,WAAY,CAAEwS,OAAAA,IAEdzwC,MAAOooD,KAEPjqB,MAAO,CACL2kB,MAAQ1X,IAAkC,GAG5C5wB,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKoW,MAAEA,EAAK+N,KAAEA,GAAM7a;AAClC,MAAMq+B,EAAOP,GAAQpsC,EAAOgF,GACtBkgB,EAAKxb,EAAAA,UAAS,SAAsBlK,IAAhBQ,EAAMU,MAAsBisC,EAAKH,KAAK9rC,MAAQV,EAAMU,SACxEkjD,SACJA,EAAQmD,YACRA,EAAWlhB,OACXA,EAAMF,WACNA,EAAUqhB,gBACVA,EAAeE,iBACfA,EAAgBtuC,KAChBA,EAAI2qC,OACJA,EAAMsB,aACNA,GACE8B,GAAczhC,GAAI,GAChBshC,EAAO/C,KACP5gB,EAAWn5B,EAAQA,UAAC,KACP,IAAjB1J,EAAMylB,SACLzlB,EAAMylB,QAAUknB,EAAK9J,UAAUniC,QAAUkY,EAAKksC,YAAYpkD,MAAQqmD,EAAYrmD,MAAQilC,EAAWjlC,UAE9F6rC,EAAS7iC,YAAS,KAAqB,IAAf1J,EAAM2sC,MAAkBA,EAAKJ,OAAO7rC,QAC5DkkC,EAAcl7B,EAAAA,UAAS,KAC1B1J,EAAMyY,WACQ,IAAfzY,EAAM2sC,OACL3sC,EAAM2sC,MAAQA,EAAK/H,YAAYlkC,SAAY8lD,IAAS5tC,EAAKmsC,WAAWrkD,OAASkY,EAAKksC,YAAYpkD,OAAwB,MAAfV,EAAMU,UAG1G6nD,EAAe7+C,EAAAA,UAAS,IAAM1J,EAAMihB,SAAWjhB,EAAMqoD,MACrDp0C,EAAQvK,EAAAA,UAAS,IAAM1J,EAAMiU,OAASjU,EAAMsnD,cAC5CpW,EAAexnC,EAAAA,UAAS,KAAO,CACnCuK,MAAO4uB,EAASniC,MAAQuT,EAAMvT,OAASV,EAAMilC,UAAYjlC,EAAMilC,UAC/D7jB,QAASphB,EAAMohB;AAGjBwC,EAAAA,OAAM,IAAM+oB,EAAK9J,UAAUniC,QAAOuI,IAC5BA,GAAuB,MAAhBs6C,EAAO7iD,OAChBkY,EAAK0Q,KAAKi6B,EAAO7iD,OAAO,GAGtBuI,GACF47C,EAAa57C,KAEd,CAAEof,WAAW;AAEhB,MAAMyK,aAAEA,GAAiBgB,GAAa9zB,IAChCihC,cAAEA,GAAkBD,GAAUhhC,IAC9Bo7B,aAAEA,EAAYC,YAAEA,EAAW0J,eAAEA,GAAmBD,GAAWoM,IAC3DzM,eAAEA,GAAmBD,GAAWxkC,IAChCs6B,gBAAEA,GAAoBD,GAAar6B,IACnCqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAWwsB,GAChCC,EAAc9+C,EAAAA,UAAS,IAAM1J,EAAMoyB,MAAS,gBAAepyB,EAAMoyB,kBAAe5yB,IAEhFq5C,EAAYnvC,EAAAA,UAAS,KAAO,CAChCm5B,SAAUA,EAASniC,MACnBmlC,OAAAA,EACAF,WAAYA,EAAWjlC,MACvBsmD,gBAAiBA,EAAgBtmD;AAGnC,SAAS2nC,EAAS+C,GAChBjiB,EAAK,QAASiiB,GAETxG,EAAYlkC,QAEjBisC,EAAKI,WAAW3B,GAEZ8b,IAEAtuC,EAAKksC,YAAYpkD,MACnBkjD,GAAUmD,EAAYrmD,MAAO0qC,IACpBxyB,EAAKmsC,WAAWrkD,OAED,MAAfV,EAAMU,QADfmlC,GAAQF,EAAWjlC,MAAO0qC,KAM9B,SAAS2X,EAAW3X,GACJ,UAAVA,EAAE5nC,KAA6B,MAAV4nC,EAAE5nC,MACzB4nC,EAAEoW,iBACFnZ,EAAQ+C,IAsKZ,OAlKAluB,IAAU,KACR,MAAM00B,EAAMrF,EAAO7rC,MAAQ,IAAMV,EAAMkb,IACjC6mB,EAAY3mB,EAAM+P,OAAwB,MAAfnrB,EAAMmrB,MACjCs9B,EAAertC,EAAMktC,UAA8B,MAAlBtoD,EAAMsoD,SACvCtF,KAAoBhjD,EAAM0iD,eAAgB1iD,EAAM8wC,YAChDgB,KAAekR,IAAkB5nC,EAAM8mB,QACvCghB,KAAqBljD,EAAM6iD,gBAAiB7iD,EAAM6wC,aAClDgB,KAAgBqR,IAAmB9nC,EAAM6mB;AjGhM9C,IAAoBjQ,EAAkB02B;AiGwMvC,OANAlC,GAAMhD,iBAAiB3R,GAEnB7xC,EAAMsnD,cjGpMWt1B,EiGqMT,ejGrM2B02B,EiGqMX,CAAC,QAAS,cjGpM1CA,EAAc/nD,MAAMC,QAAQ8nD,GACxBA,EAAYt/C,MAAM,GAAI,GAAGhC,KAAI2D,GAAM,IAAGA,OAAMC,KAAK,MAAS,QAAO09C,EAAY38C,IAAI,MAChF,IAAG28C,KACR/1C,EAAIA,KAAE,sBAAqBqf,yBAAgC02B,eiGoMvD9nB,EAAAT,eAAAxiB,EAAAC,YAAAg0B,EAAA,CAAAj6B,MAEW,CACL,cACA,CACE,sBAAuBkrB,EAASniC,MAChC,wBAAyBV,EAAMyY,SAC/B,oBAAqBmsB,EAAYlkC,MACjC,mBAAoBV,EAAMqoD,IAC1B,wBAAyBxW,GAAc2U,GAAM3U,WAAWnxC,MACxD,oBAAqBV,EAAM+wC,KAC3B,CAAE,GAAE/wC,EAAMyiD,eAAgBziD,EAAMyiD,aAAe5f,EAASniC,OAE1DoyB,EAAapyB,MACbugC,EAAcvgC,MACd06B,EAAa16B,MACb+jC,EAAe/jC,MACf2gC,EAAiB3gC,MACjB8nD,EAAY9nD,MACZs7B,EAAet7B,MACfqkC,EAAerkC,MACfV,EAAM2X,OACPzI,MACM,CACLmsB,EAAY36B,MACZ45B,EAAgB55B,MAChBV,EAAMkP,OACPs9B,KACMG,EAAKH,KAAK9rC,MAAK8nC,SACX5D,EAAYlkC,MAAS8lD,GAAQ,EAAI,OAAKhnD,EAAS6oC,QAChDA,EAAOiZ,UACL1c,EAAYlkC,QAAU6rC,EAAO7rC,OAASqiD,GAAS,CAAAtrC,QAAAA,IAAA,CAGzDktB,GAAYC,EAAYlkC,OAASmiC,EAASniC,MAAO,eAEjDmxC,GAAUl0B,EAAAA,YAAA,MAAA,CAAAna,IAAA,UAAAmU,MAAA,wBAAA,CAELyD,EAAM6mB,QAgBJtkB,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,mBAAAiV,UAKWyqC,EAAe5rC,SACjB,CACR4J,QAAS,CACPsgB,QAASxhC,EAAMwhC,QACfhD,MAAOx+B,EAAM6iD,eAEfnb,MAAO,CACLlG,QAASxhC,EAAMwhC,QACfjkB,KAAMvd,EAAM6wC,aAEd8X,gBAAiB,CACf7nD,OAAO,KAEV,CAAA2W,QAAAA,IAAA,CAEC2D,EAAM6mB,UAAU4W,EAAUn4C,UApChBid,cAAA6W,EAAAA,SAAA,KAAA,CAEVx0B,EAAM6iD,eAAallC,EAAAA,YAAAuD,GAAA,CAAA1d,IAAA,iBAAAg+B,QAGPxhC,EAAMwhC,QAAOhD,MACfx+B,EAAM6iD,eAAa,MAI7B7iD,EAAM6wC,aAAWlzB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,eAAAg+B,QAGLxhC,EAAMwhC,QAAOjkB,KAChBvd,EAAM6wC,aAEhB,QAsBJlzB,EAAAC,YAAA,MAAA,CAAAjG,MAAA,uBAAA,QAIJgG,EAAAA,YAAA,MAAA,CAAAhG,MAAA,uBAAA,oBAAA,IAAA,CAGGoqB,GAAQpkB,EAAAC,YAAAuqC,GAAA,CAAA3kD,IAAA,SAAA,CAAAiU,QAAAA,IAAA,CAEJ2D,EAAM+P,QAAQ,CAAEA,MAAOnrB,EAAMmrB,SAAYnrB,EAAMmrB,SAInDs9B,GAAW9qC,EAAAC,YAAAsqC,GAAA,CAAA1kD,IAAA,YAAA,CAAAiU,QAAAA,IAAA,CAEP2D,EAAMktC,WAAW,CAAEA,SAAUtoD,EAAMsoD,YAAetoD,EAAMsoD,YAI5DltC,EAAM3D,UAAUohC,EAAUn4C,SAG5BoxC,GAASn0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,SAAAmU,MAAA,uBAAA,CAEJyD,EAAM8mB,OAgBJvkB,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,kBAAAiV,UAKWuqC,EAAc1rC,SAChB,CACR4J,QAAS,CACPsgB,QAASxhC,EAAMwhC,QACfhD,MAAOx+B,EAAM0iD,cAEfhb,MAAO,CACLlG,QAASxhC,EAAMwhC,QACfjkB,KAAMvd,EAAM8wC,YAEd6X,gBAAiB,CACf9lD,KAAK,KAER,CAAA4U,QAAAA,IAAA,CAEC2D,EAAM8mB,SAAS2W,EAAUn4C,UApChBid,cAAA6W,EAAAA,SAAA,KAAA,CAETx0B,EAAM8wC,YAAUnzB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,cAAAg+B,QAGJxhC,EAAMwhC,QAAOjkB,KAChBvd,EAAM8wC,YAAU,MAIzB9wC,EAAM0iD,cAAY/kC,EAAAA,YAAAuD,GAAA,CAAA1d,IAAA,gBAAAg+B,QAGNxhC,EAAMwhC,QAAOhD,MACfx+B,EAAM0iD,cAEjB,QAsBJ/kC,EAAAC,YAAA,MAAA,CAAAjG,MAAA,uBAIJ,WAAAkpB,CAAAA,CAAAA,EAAAoU,2BA9GUrQ,EAAYlkC,OAASV,EAAMixC,aAmHrC,CACLiW,iBAAAA,EACAvhB,WAAAA,EACA6gB,KAAAA,EACA3gB,OAAAA,MCnWO+iB,GAA0BvxC,GAAa,CAClDpD,MAAO1S,OACPuhB,MAAOwB,QACPukC,OAAQvkC,QACR6G,MAAO5pB,UAEJmW,QACA+c,MACF,kBAEUq0B,GAAiBjuC,IAAAA,CAAmB,CAC/CzQ,KAAM,iBAENpK,MAAO4oD,KAEPpuC,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMktB,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAagD,EAAKA,MAACt+B,EAAO;AA8BxE,OA5BAkd,IAAU,KACR,MAAM0X,KAAaxZ,EAAM3D,UAAWzX,EAAMmrB;AAE1C,OAAAxN,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,mBACA,CACE,0BAA2B3X,EAAM8iB,MACjC,2BAA4B9iB,EAAM6oD,QAEpCrtB,EAAiB96B,MACjBV,EAAM2X,OACPzI,MACM,CACL,CAAEusB,gBAAAA,GACFz7B,EAAMkP,QACP,CAAAuI,QAAAA,IAECmd,CAAAA,GAAOjX,EAAAA,YAAA,MAAA,CAAAhG,MAAA,0BAEHyD,CAAAA,EAAM3D,aAAezX,EAAMmrB,cAOhC,MCxCE49B,GAAoB1xC,GAAa,CAC5CpD,MAAO1S,OACPuhB,MAAOwB,QACP/kB,OAAQ,CAACkC,OAAQF,QACjBg2B,QAAS,CAAC91B,OAAQF,QAClBynD,UAAW,CAACvnD,OAAQF,QACpB0nD,SAAU3kC,WAEP5M,QACA2Z,MACF,YAEU63B,GAAWruC,IAAAA,CAAmB,CACzCzQ,KAAM,WAENpK,MAAO+oD,KAEPvuC,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChCw7B,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAagD,EAAKA,MAACt+B,EAAO,UAClEmpD,EAAgBz/C,EAAAA,UAAS,KAC7B,MAAMie,EAAwB;AAU9B,OARI3nB,EAAMT,SACRooB,EAAO3nB,EAAMipD,SAAW,YAAc,YAAc9nD,EAAcnB,EAAMT,SAGtES,EAAMgpD,YACRrhC,EAAO3nB,EAAMipD,SAAW,mBAAqB,kBAAoB9nD,EAAcnB,EAAMgpD,YAGhFrhC;AAsDT,OAnDAzK,IAAU,KACR,MAAM6N,EAAOpN,EAAAC,YAAA,KAAA,CAAAjG,MAEF,CACL,CACE,aAAa,EACb,mBAAoB3X,EAAM8iB,MAC1B,sBAAuB9iB,EAAMipD,UAE/Bn2B,EAAapyB,MACb86B,EAAiB96B,MACjBV,EAAM2X,OACPzI,MACM,CACLi6C,EAAczoD,MACd+6B,EAAgB/6B,MAChB,CAAE,qBAAsBV,EAAMu3B,SAC9Bv3B,EAAMkP,OACP,mBAEElK,EAAMkZ,MAAuB,cAAflZ,EAAMkZ,UAEjB1e,EADAQ,EAAMipD,SAAW,WAAa,aACrB/qC,KAEP,GAAElZ,EAAMkZ,MAAQ,eAE3B;AAED,OAAK9C,EAAM3D,QAEXkG,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,qBACA,CACE,+BAAgC3X,EAAMipD,SACtC,4BAA6BjpD,EAAM8iB,SAIrCiI,CAAAA,EAAOpN,EAAAC,YAAA,MAAA,CAAAjG,MAAA,sBAAA,CAGLyD,EAAM3D,YAGRsT,IAlBqBA,KAuBtB,MC1EEq+B,GAAyB/xC,GAAa,CACjDmP,MAAO7lB,MACP0oD,aAAc/kC,SACb,iBAEUglC,GAAgBzuC,IAAAA,CAMoB,CAC/CzQ,KAAM,gBAENpK,MAAOopD,KAEP5uC,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAGrB,OAFAg1C,KAEO,IAAMloC,EAAM3D,aAAezX,EAAMwmB,OAAOpf,KAAI4O,IAAqD,IAApDxO,SAAEA,EAAUxH,MAAOupD,EAASjiD,KAAEA,EAAMkiD,IAAKhpD,GAAMwV;AACjG,GAAa,YAAT1O,EACF,OAAO8T,EAAM2P,UAAU,CAAE/qB,MAAOupD,KAAY5rC,EAAAA,YAAAurC,GAC3BK,EAChB;AAGH,GAAa,cAATjiD,EACF,OAAO8T,EAAMquC,YAAY,CAAEzpD,MAAOupD,KAAY5rC,EAAAA,YAAAmrC,GACvBS,EACtB;AAGH,MAAMG,EAAgB,CACpBpB,SAAUltC,EAAMktC,SAAYzP,GAAmBz9B,EAAMktC,WAAW,IAAKzP,EAAWr4C,KAAAA,SAAUhB,EAC1FyiC,QAAS7mB,EAAM6mB,QAAW4W,GAAmBz9B,EAAM6mB,UAAU,IAAK4W,EAAWr4C,KAAAA,SAAUhB,EACvF0iC,OAAQ9mB,EAAM8mB,OAAU2W,GAAmBz9B,EAAM8mB,SAAS,IAAK2W,EAAWr4C,KAAAA,SAAUhB,EACpF2rB,MAAO/P,EAAM+P,MAAS0tB,GAAmBz9B,EAAM+P,QAAQ,IAAK0tB,EAAWr4C,KAAAA,SAAUhB,GAG7EmqD,EAAiBjC,GAAWhtC,YAAY6uC;AAE9C,OAAO/hD,EAAQmW,EAAAA,YAAA+pC,GAAA3pC,aAAA,CAAArd,MAEH6oD,GAAW7oD,OACdipD,GAAc,CAGjB3B,UAAWzD,IAA+B,IAA5BvkD,MAAO4nD,GAAgBrD;AACnC,MAAMqF,EAAgB,IACjBL,KACA3B,EACHlnD,MAAOV,EAAMqpD,aAAe7oD,EAAO+oD,EAAU7oD;AAG/C,OAAO0a,EAAMgQ,OACThQ,EAAMgQ,OAAO,CAAEprB,MAAO4pD,IAAgBjsC,EAAAA,YAAAoqC,GAEtB6B,EAA0BF,IAGhDjyC,QAASA,IAAAkG,EAAAC,YAAA0rC,GAAA,CAAA9iC,MACgBhf,GAAqB4T,KAKlDA,EAAM5a,KAAO4a,EAAM5a,KAAK,CAAER,MAAOupD,IAAY5rC,EAAAC,YAAAmqC,GAAAhqC,EAAAA,WAEpCwrC,EAAS,CAAA7oD,MACNV,EAAMqpD,aAAe7oD,EAAO+oD,EAAU7oD,QACpCgpD,SClETG,GAAiBxyC,GAAa,CACzCmP,MAAO,CACLlf,KAAM3G,MACN8W,QAASA,IAAO,IAElBqyC,UAAW,CACTxiD,KAAM,CAAC/F,OAAQZ,MAAOuJ,UACtBuN,QAAS,SAEXsyC,UAAW,CACTziD,KAAM,CAAC/F,OAAQZ,MAAOuJ,UACtBuN,QAAS,SAEXuyC,aAAc,CACZ1iD,KAAM,CAACgd,QAAS/iB,OAAQZ,MAAOuJ,UAC/BuN,QAAS,YAEX8xC,UAAW,CACTjiD,KAAM,CAACgd,QAAS/iB,OAAQZ,MAAOuJ,UAC/BuN,QAAS,SAEX4xC,aAAc/kC,QACdivB,gBAAiB,CACfjsC,KAAM4C,SACNuN,QAAS/X,IAEV;AAEI,SAASuqD,GAAejqD,EAAiCQ,GAC9D,MAAM2qB,EAAQ5qB,EAAoBC,EAAMR,EAAM8pD,UAAWtpD,GACnDE,EAAQH,EAAoBC,EAAMR,EAAM+pD,UAAW5+B,GACnD3jB,EAAWjH,EAAoBC,EAAMR,EAAMgqD,cAS3CvwC,EAAS,CACb0R,MAAAA,EACAzqB,MAAAA,MAVoC,IAApBV,EAAMupD,UACJ,iBAAT/oD,GAA6B,MAARA,GAAiBG,MAAMC,QAAQJ,QAIzDhB,EAHA,aAAcgB,EACZ6D,EAAK7D,EAAM,CAAC,aACZA,EAEJD,EAAoBC,EAAMR,EAAMupD;AAQpC,MAAO,CACLp+B,MAAO5pB,OAAOkY,EAAO0R,OAAS,IAC9BzqB,MAAO+Y,EAAO/Y,MACdV,MAAOyZ,EACPjS,SAAU7G,MAAMC,QAAQ4G,GAAY0iD,GAAelqD,EAAOwH,QAAYhI,EACtEgqD,IAAKhpD,GAIF,SAAS0pD,GAAgBlqD,EAAiCwmB,GAC/D,MAAM2jC,EAAoB;AAE1B,IAAK,MAAM3pD,KAAQgmB,EACjB2jC,EAAMnhD,KAAKihD,GAAcjqD,EAAOQ;AAGlC,OAAO2pD,EAGF,SAASC,GAAUpqD,GACxB,MAAMwmB,EAAQ9c,EAAAA,UAAS,IAAMwgD,GAAelqD,EAAOA,EAAMwmB,SACnD6jC,EAAc3gD,EAAAA,UAAS,IAAM8c,EAAM9lB,MAAMwD,MAAK1D,GAAuB,OAAfA,EAAKE;AAyBjE,MAAO,CAAE8lB,MAAAA,EAAOiC,YAvBhB,SAAsB/nB,GAOpB,OANK2pD,EAAY3pD,QAGfA,EAAQA,EAAMmZ,QAAO5Y,GAAW,OAANA,KAGrBP,EAAM0G,KAAInG,GACXjB,EAAMqpD,cAA6B,iBAANpoD,EAGxBgpD,GAAcjqD,EAAOiB,GAEvBulB,EAAM9lB,MAAMqmB,MAAKvmB,GAAQR,EAAMuzC,gBAAgBtyC,EAAGT,EAAKE,UAAWupD,GAAcjqD,EAAOiB,MAUrEynB,aAN7B,SAAuBhoB,GACrB,OAAOV,EAAMqpD,aACT3oD,EAAM0G,KAAIkH,IAAA,IAACk7C,IAAEA,GAAKl7C;AAAA,OAAKk7C,KACvB9oD,EAAM0G,KAAI4O,IAAA,IAACtV,MAAEA,GAAOsV;AAAA,OAAKtV,OC/EjC,SAASupD,GAAejqD,EAAyCQ,GAC/D,MAAM8G,EAAO/G,EAAoBC,EAAMR,EAAMsqD,SAAU,QACjDn/B,EANR,SAAsBzqB,GACpB,MAAwB,iBAAVA,GAAuC,iBAAVA,GAAuC,kBAAVA,EAK1D6pD,CAAY/pD,GAAQA,EAAOD,EAAoBC,EAAMR,EAAM8pD,WACnEppD,EAAQH,EAAoBC,EAAMR,EAAM+pD,eAAWvqD,GACnDgI,EAAWjH,EAAoBC,EAAMR,EAAMgqD,cAK3CvwC,EAAS,CACb0R,MAAAA,EACAzqB,MAAAA,MANoC,IAApBV,EAAMupD,UACpBllD,EAAK7D,EAAM,CAAC,aACZD,EAAoBC,EAAMR,EAAMupD;AAQpC,MAAO,CACLjiD,KAAAA,EACA6jB,MAAO1R,EAAO0R,MACdzqB,MAAO+Y,EAAO/Y,MACdV,MAAOyZ,EACPjS,SAAmB,SAATF,GAAmBE,EAAW0iD,GAAelqD,EAAOwH,QAAYhI,EAC1EgqD,IAAKhpD,GAIT,SAAS0pD,GAAgBlqD,EAAyCwmB,GAChE,MAAM2jC,EAA4B;AAElC,IAAK,MAAM3pD,KAAQgmB,EACjB2jC,EAAMnhD,KAAKihD,GAAcjqD,EAAOQ;AAGlC,OAAO2pD,EASF,MAAMK,GAAiBnzC,GAAa,CACzC4tB,UAAW1jC,OAEX+lD,YAAa/lD,OACbkhD,YAAalhD,OACbqnC,QAASrnC,OACTkX,SAAU6L,QACVkjC,WAAYjmD,OACZgmD,aAAchmD,OACd6wB,MAAO,CACL9qB,KAAM,CAACgd,QAAS/iB,QAChBkW,QAAS,OAEXs5B,KAAMzsB,QACN+jC,IAAK/jC,WAEF2gC,GAAgB,CACjBE,eAAgB,cAChBC,aAAc,YAEbtkB,QACAppB,QACA6sB,QACAvK,QACAkH,KACHopB,SAAU,CACRhjD,KAAM/F,OACNkW,QAAS,WAERoyC,QACAhuB,QACApH,QACApD,QACAwT,GAAiB,CAAEzjB,QAAS,UAC9B,SAIUqpC,GAAQ5vC,IAAAA,CAiB4B,CAC/CzQ,KAAM,QAENpK,MAAOwqD,KAEPrsB,MAAO,CACL,kBAAoBz9B,IAAmB,EACvC,mBAAqBA,IAAmB,EACxC,gBAAkBA,IAAmB,EACrC,aAAeA,IAA4D,EAC3E,iBAAmBA,IAA4D,EAC/E,eAAiBA,IAA4D,GAG/E8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMkY,MAAEA,GA5EL,SAAuBxmB,GAG5B,MAAO,CAAEwmB,MAFK9c,EAAAA,UAAS,IAAMwgD,GAAelqD,EAAOA,EAAMwmB,UA2ErCkkC,CAAa1qD,IACzB8yB,aAAEA,GAAiBgB,GAAa9zB,IAChC27B,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,aACpFihC,cAAEA,GAAkBD,GAAUhhC,IAC9BykC,eAAEA,GAAmBD,GAAWxkC,IAChCs6B,gBAAEA,GAAoBD,GAAar6B,IACnCqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAW/7B,IAChCwH,SAAEA,EAAQ8hB,KAAEA,EAAIw6B,QAAEA,EAAOje,OAAEA,GAAWwf,GAAUrlD,GAChDwoD,EAAc9+C,EAAAA,UAAS,IAAM1J,EAAMoyB,MAAS,WAAUpyB,EAAMoyB,kBAAe5yB,IAC3E8nD,EAAchpB,EAAAA,MAAMt+B,EAAO,eAC3BilC,EAAY3G,EAAAA,MAAMt+B,EAAO,aACzBiU,EAAQqqB,EAAAA,MAAMt+B,EAAO;AAE3BsjD,KAEAlrC,GAAgB,CACdsvC,WAAY,CACVJ,YAAAA,EACAriB,UAAAA,EACAhxB,MAAAA,EACAuzC,WAAYlpB,EAAAA,MAAMt+B,EAAO,cACzBunD,aAAcjpB,EAAAA,MAAMt+B,EAAO,iBAE7B+nD,UAAW,CACTtF,YAAankB,EAAAA,MAAMt+B,EAAO,eAC1BsnD,YAAAA,EACAriB,UAAAA,EACAhxB,MAAAA,EACAutB,QAASlD,EAAAA,MAAMt+B,EAAO,WACtByY,SAAU6lB,EAAAA,MAAMt+B,EAAO,YACvBoyB,MAAOkM,EAAAA,MAAMt+B,EAAO,SACpBqoD,IAAK/pB,EAAAA,MAAMt+B,EAAO,OAClB+wC,KAAMzS,EAAAA,MAAMt+B,EAAO,QACnBohB,QAASkd,EAAAA,MAAMt+B,EAAO;AAI1B,MAAMu0C,EAAYtnC,cAAW,GACvB4yC,EAAa7nC,EAAAA;AACnB,SAASgpC,EAAW5V,GAClBmJ,EAAU7zC,OAAQ,EAGpB,SAASwgD,EAAY9V,GACnBmJ,EAAU7zC,OAAQ,EAGpB,SAASg0C,EAAStJ,GAEbmJ,EAAU7zC,OACT0qC,EAAEgW,eAAiBvB,EAAWn/C,OAAOsL,SAASo/B,EAAEgW,gBAClDt1C,IAGJ,SAASw1C,EAAWlW,GAClB,MAAMvkC,EAASukC,EAAEvkC;AAEjB,GAAKg5C,EAAWn/C,QAAS,CAAC,QAAS,YAAYqF,SAASc,EAAO8jD,SAA/D,CAEA,GAAc,cAAVvf,EAAE5nC,IACJsI,EAAM;KACD,GAAc,YAAVs/B,EAAE5nC,IACXsI,EAAM;KACD,GAAc,SAAVs/B,EAAE5nC,IACXsI,EAAM;IACD,CAAA,GAAc,QAAVs/B,EAAE5nC,IAGX;AAFAsI,EAAM,QAKRs/B,EAAEoW,kBAGJ,SAASU,EAAa9W,GACpBmJ,EAAU7zC,OAAQ,EAGpB,SAASoL,EAAOV,GACd,GAAIy0C,EAAWn/C,MACb,OAAOkL,EAAWi0C,EAAWn/C,MAAO0K,GA+CxC,OA3CA8R,IAAU,IACRS,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAlD,IAEU6nC,EAAUloC,MACT,CACL,SACA,CACE,mBAAoB3X,EAAMyY,SAC1B,cAAezY,EAAMqoD,IACrB,eAAgBroD,EAAM+wC,MAExBje,EAAapyB,MACbi7B,EAAuBj7B,MACvBugC,EAAcvgC,MACd+jC,EAAe/jC,MACf2gC,EAAiB3gC,MACjB8nD,EAAY9nD,MACZs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtB45B,EAAgB55B,MAChBV,EAAMkP,OACPs5B,SACWxoC,EAAMyY,UAAY87B,EAAU7zC,OAAU,EAAI,EAACwd,KAAA,UAAA,6BAE/B1e,EAASwhD,UACrBA,EAASE,WACRA,EAAUxM,QACbA,EAAO4M,UACLA,EAASY,YACPA,GAAW,CAAAzqC,QAAAA,IAAAkG,CAAAA,EAAAC,YAAA0rC,GAAA,CAAA9iC,MAGfA,EAAM9lB,MAAK2oD,aACJrpD,EAAMqpD,cACXjuC,QAMX,CACLkO,KAAAA,EACAuc,OAAAA,EACA/5B,MAAAA,EACAtE,SAAAA,EACAs8C,QAAAA,MCzRO8G,GAAW5vC,GAAuB,cCIlC6vC,GAA2BxzC,GAAa,CACnDvW,MAAOwjB,QACPzhB,IAAKyhB,WAEF5M,QACA+c,MACF,mBAEUk0B,GAAkB9tC,IAAAA,CAAmB,CAChDzQ,KAAM,kBAENpK,MAAO6qD,KAEPrwC,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAgBrB,OAfA4O,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,qBACA,CACE,4BAA6B3X,EAAMc,MACnC,0BAA2Bd,EAAM6C,KAEnC7C,EAAM2X,OACPzI,MACOlP,EAAMkP,OACJkM,KAIP,MC7BE0vC,GAA0BzzC,GAAa,CAClDvW,MAAOwjB,QACPzhB,IAAKyhB,WAEF5M,QACA+c,MACF,kBAEUs2B,GAAiBlwC,IAAAA,CAAmB,CAC/CzQ,KAAM,iBAENpK,MAAO8qD,KAEPtwC,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAkBrB,OAjBA4O,IAAU,IACRS,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,oBACA,CACE,2BAA4B3X,EAAMc,MAClC,yBAA0Bd,EAAM6C,KAElC7C,EAAM2X,OACPzI,MACOlP,EAAMkP,OACJkM,KAKT;ACzBJ,SAAS4vC,GAAmBC,EAAqBz0B,GACtD,MAAO,CACLjoB,EAAG08C,EAAM18C,EAAIioB,EAAOjoB,EACpBC,EAAGy8C,EAAMz8C,EAAIgoB,EAAOhoB,GAqBjB,SAAS08C,GAAez9C,EAAsB4V,GACnD,GAAoB,QAAhB5V,EAAOE,MAAkC,WAAhBF,EAAOE,KAAmB,CACrD,MAAMA,KAAEA,EAAIC,MAAEA,GAAUH;AAYxB,OAAOu9C,GAAkB,CAAEz8C,EATf,SAAVX,EAAmB,EACP,WAAVA,EAAqByV,EAAI5U,MAAQ,EACvB,UAAVb,EAAoByV,EAAI5U,MACxBb,EAM0BY,EAJnB,QAATb,EAAiB,EACN,WAATA,EAAoB0V,EAAI3U,OACxBf,GAE+C0V,GAC9C,GAAoB,SAAhB5V,EAAOE,MAAmC,UAAhBF,EAAOE,KAAkB,CAC5D,MAAMA,KAAEA,EAAIC,MAAEA,GAAUH;AAYxB,OAAOu9C,GAAkB,CAAEz8C,EAThB,SAATZ,EAAkB,EACP,UAATA,EAAmB0V,EAAI5U,MACvBd,EAO0Ba,EALlB,QAAVZ,EAAkB,EACN,WAAVA,EAAqByV,EAAI3U,OAAS,EACxB,WAAVd,EAAqByV,EAAI3U,OACzBd,GAE+CyV,GAGrD,OAAO2nC,GAAkB,CACvBz8C,EAAG8U,EAAI5U,MAAQ,EACfD,EAAG6U,EAAI3U,OAAS,GACC2U,GC9BrB,MAAM8nC,GAAqB,CACzBC,OAmEF,aAlEEC,UA+GF,SAAoCn6B,EAA4BlxB,EAAsBsrD,IAC7D3qD,MAAMC,QAAQswB,EAAKrqB,OAAOnG,QC3J5C,SAA0BkB,GAC/B,KAAOA,GAAI,CACT,GAA6C,UAAzChD,OAAOuQ,iBAAiBvN,GAAIglB,SAC9B,OAAO;AAEThlB,EAAKA,EAAG+J,aAEV,OAAO,EDoJoD4/C,CAAgBr6B,EAAKrqB,OAAOnG,SAErFX,OAAOsF,OAAOimD,EAAc5qD,MAAO,CACjCkmB,SAAU,QACV5Y,IAAK,EACL,CAACkjB,EAAKxjB,MAAMhN,MAAQ,QAAU,QAAS;AAI3C,MAAM8qD,gBAAEA,EAAeC,gBAAEA,GAAoBniD,GAAiB,KAC5D,MAAMoiD,EAAel+C,GAAYxN,EAAMoL,SAAU8lB,EAAKxjB,MAAMhN,OACtDirD,EACa,YAAjB3rD,EAAMk1B,OAAuBw2B,EACV,SAAjB1rD,EAAMk1B,OAAoBpnB,GAAS49C,GACnCl+C,GAAYxN,EAAMk1B,OAAQhE,EAAKxjB,MAAMhN;AAGzC,OAAIgrD,EAAa/9C,OAASg+C,EAAah+C,MAAQ+9C,EAAa99C,QAAUM,GAAUy9C,GAAc/9C,MACrF,CACL49C,gBAAiBr9C,GAAWu9C,GAC5BD,gBAAiBt9C,GAAWw9C,IAGvB,CACLH,gBAAiBE,EACjBD,gBAAiBE,OAKhBvxB,EAAUD,EAAWD,EAAUD,GACnC,CAAC,WAAY,YAAa,WAAY,aAAuB7yB,KAAI5D,GACzDkG,EAAQA,UAAC,KACd,MAAMT,EAAM6G,WAAW9P,EAAMwD;AAC7B,OAAOlC,MAAM2H,GAAO+P,EAAAA,EAAW/P,OAI/ButB,EAAS9sB,EAAAA,UAAS,KACtB,GAAI/I,MAAMC,QAAQZ,EAAMw2B,QACtB,OAAOx2B,EAAMw2B;AAEf,GAA4B,iBAAjBx2B,EAAMw2B,OAAqB,CACpC,MAAMA,EAASx2B,EAAMw2B,OAAOl2B,MAAM,KAAK8G,IAAI0I;AAE3C,OADI0mB,EAAOj3B,OAAS,GAAGi3B,EAAOxtB,KAAK,GAC5BwtB,EAET,MAA+B,iBAAjBx2B,EAAMw2B,OAAsB,CAACx2B,EAAMw2B,OAAQ,GAAK,CAAC,EAAG;AAGpE,IAAIxS,GAAU;AACd,MAAMR,EAAW,IAAIC,gBAAe,KAC9BO,GAAS4nC;AAkBf,SAASA,IAIP,GAHA5nC,GAAU,EACV0S,uBAAsB,IAAM1S,GAAU,KAEjCkN,EAAKrqB,OAAOnG,QAAUwwB,EAAK26B,UAAUnrD,MAAO;AAEjD,MAAMs3B,EAAYlpB,GAAaoiB,EAAKrqB,OAAOnG,OACrCorD,EAtHV,SAA2BlqD,EAAiB8L,GAetCA,EACF9L,EAAGsN,MAAM0oB,eAAe,QAExBh2B,EAAGsN,MAAM0oB,eAAe;AAI1B,MAAMk0B,EAAa98C,GAAkBpN;AAEjC8L,EACFo+C,EAAWv9C,GAAKuB,WAAWlO,EAAGsN,MAAMtM,OAAS,GAE7CkpD,EAAWv9C,GAAKuB,WAAWlO,EAAGsN,MAAMvM,MAAQ;AAU9C,OARAmpD,EAAWt9C,GAAKsB,WAAWlO,EAAGsN,MAAMlB,KAAO,GAQpC89C,EAiFcC,CAAiB76B,EAAK26B,UAAUnrD,MAAOwwB,EAAKxjB,MAAMhN,OAC/DsrD,EAAgBpvC,GAAiBsU,EAAK26B,UAAUnrD;AAGjDsrD,EAAczsD,SACjBysD,EAAchjD,KAAKwC,SAASygD,iBACtB/6B,EAAK26B,UAAUnrD,MAAMwO,MAAMlB,KAAOkjB,EAAK26B,UAAUnrD,MAAMwO,MAAMvM,OACjEmpD,EAAWv9C,GAAKuB,WAAWtE,SAASygD,gBAAgB/8C,MAAMopB,iBAAiB,sBAAwB,GACnGwzB,EAAWt9C,GAAKsB,WAAWtE,SAASygD,gBAAgB/8C,MAAMopB,iBAAiB,sBAAwB;AAIvG,MAAM4zB,EAAWF,EAAcz0C,QAAY,CAAC8L,EAAsBzhB,KAChE,MAAMqN,EAAOrN,EAAGmN,wBACVo9C,EAAY,IAAI99C,GAAI,CACxBE,EAAG3M,IAAO4J,SAASygD,gBAAkB,EAAIh9C,EAAKV,EAC9CC,EAAG5M,IAAO4J,SAASygD,gBAAkB,EAAIh9C,EAAKT,EAC9CC,MAAO7M,EAAG4sC,YACV9/B,OAAQ9M,EAAGqb;AAGb,OAAIoG,EACK,IAAIhV,GAAI,CACbE,EAAG7I,KAAKD,IAAI4d,EAAI1gB,KAAMwpD,EAAUxpD,MAChC6L,EAAG9I,KAAKD,IAAI4d,EAAIrV,IAAKm+C,EAAUn+C,KAC/BS,MAAO/I,KAAKF,IAAI6d,EAAIzgB,MAAOupD,EAAUvpD,OAAS8C,KAAKD,IAAI4d,EAAI1gB,KAAMwpD,EAAUxpD,MAC3E+L,OAAQhJ,KAAKF,IAAI6d,EAAIpV,OAAQk+C,EAAUl+C,QAAUvI,KAAKD,IAAI4d,EAAIrV,IAAKm+C,EAAUn+C,OAG1Em+C,SACN3sD;AACH0sD,EAAS39C,GA7Bc,GA8BvB29C,EAAS19C,GA9Bc,GA+BvB09C,EAASz9C,OAAS29C,GAClBF,EAASx9C,QAAU09C;AAEnB,IAAIC,EAAY,CACd5+C,OAAQ+9C,EAAgB9qD,MACxBw0B,OAAQu2B,EAAgB/qD;AAG1B,SAAS4rD,EAAeC,GACtB,MAAMlpC,EAAM,IAAIhV,GAAIy9C,GACdU,EAActB,GAAcqB,EAAW9+C,OAAQuqB,GAC/Cy0B,EAAevB,GAAcqB,EAAWr3B,OAAQ7R;AAEtD,IAAI9U,EAAEA,EAACC,EAAEA,IDzPmC5O,ECyPN6sD,EDxPnC,CACLl+C,GAFwC5O,ECyPb6sD,GDvPtBj+C,EAAI3O,EAAE2O,EACXC,EAAG7O,EAAE6O,EAAI5O,EAAE4O;AAHR,IAAqC7O,EAAMC;AC2P5C,OAAQ2sD,EAAW9+C,OAAOE,MACxB,IAAK,MAAOa,GAAKgoB,EAAO91B,MAAM;AAAI;AAClC,IAAK,SAAU8N,GAAKgoB,EAAO91B,MAAM;AAAI;AACrC,IAAK,OAAQ6N,GAAKioB,EAAO91B,MAAM;AAAI;AACnC,IAAK,QAAS6N,GAAKioB,EAAO91B,MAAM,GAGlC,OAAQ6rD,EAAW9+C,OAAOG,OACxB,IAAK,MAAOY,GAAKgoB,EAAO91B,MAAM;AAAI;AAClC,IAAK,SAAU8N,GAAKgoB,EAAO91B,MAAM;AAAI;AACrC,IAAK,OAAQ6N,GAAKioB,EAAO91B,MAAM;AAAI;AACnC,IAAK,QAAS6N,GAAKioB,EAAO91B,MAAM,GAGlC2iB,EAAI9U,GAAKA,EACT8U,EAAI7U,GAAKA,EAET6U,EAAI5U,MAAQ/I,KAAKF,IAAI6d,EAAI5U,MAAOyrB,EAASx5B,OACzC2iB,EAAI3U,OAAShJ,KAAKF,IAAI6d,EAAI3U,OAAQurB,EAAUv5B;AAI5C,MAAO,CAAEgsD,UAFS/9C,GAAY0U,EAAK6oC,GAEf39C,EAAAA,EAAGC,EAAAA,GAGzB,IAAID,EAAI,EAAOC,EAAI;AACnB,MAAMm+C,EAAY,CAAEp+C,EAAG,EAAGC,EAAG,GACvBo+C,EAAU,CAAEr+C,GAAG,EAAOC,GAAG;AAC/B,IAAIq+C,GAAU;AACd,OAAa,CACX,GAAIA,IAAW,GAAI,CACjBj6C,GAAa;AACb,MAGF,MAAQrE,EAAGu+C,EAAIt+C,EAAGu+C,EAAEL,UAAEA,GAAcJ,EAAcD;AAElD99C,GAAKu+C,EACLt+C,GAAKu+C,EAELjB,EAAWv9C,GAAKu+C,EAChBhB,EAAWt9C,GAAKu+C;AAGhB,CACE,MAAMC,EAAO5+C,GAAQi+C,EAAU5+C,QACzBw/C,EAAeP,EAAUn+C,EAAEK,QAAU89C,EAAUn+C,EAAEM,MACjDq+C,EAAeR,EAAUl+C,EAAEI,QAAU89C,EAAUl+C,EAAEK;AAEvD,IAAI8J,GAAQ;AAwBZ,GAvBC,CAAC,IAAK,KAAKpU,SAAQf,IAClB,GACW,MAARA,GAAeypD,IAAiBL,EAAQr+C,GAChC,MAAR/K,GAAe0pD,IAAiBN,EAAQp+C,EACzC,CACA,MAAM2+C,EAAe,CAAE1/C,OAAQ,IAAK4+C,EAAU5+C,QAAUynB,OAAQ,IAAKm3B,EAAUn3B,SACzEk4B,EAAe,MAAR5pD,EACA,MAATwpD,EAAe9+C,GAAYJ,GAClB,MAATk/C,EAAel/C,GAAWI;AAC9Bi/C,EAAa1/C,OAAS2/C,EAAKD,EAAa1/C,QACxC0/C,EAAaj4B,OAASk4B,EAAKD,EAAaj4B;AACxC,MAAQw3B,UAAWW,GAAiBf,EAAca,IAE/CE,EAAa7pD,GAAKoL,QAAU89C,EAAUlpD,GAAKoL,QAC1Cy+C,EAAa7pD,GAAKqL,OAAS69C,EAAUlpD,GAAKqL,OAC3Cw+C,EAAa7pD,GAAKoL,OAASy+C,EAAa7pD,GAAKqL,OAC3C69C,EAAUlpD,GAAKoL,OAAS89C,EAAUlpD,GAAKqL,OAAS,KAEnDw9C,EAAYc,EACZx0C,EAAQi0C,EAAQppD,IAAO,OAIzBmV,EAAO,SAIT+zC,EAAUn+C,EAAEK,SACdL,GAAKm+C,EAAUn+C,EAAEK,OACjBk9C,EAAWv9C,GAAKm+C,EAAUn+C,EAAEK,QAE1B89C,EAAUn+C,EAAEM,QACdN,GAAKm+C,EAAUn+C,EAAEM,MACjBi9C,EAAWv9C,GAAKm+C,EAAUn+C,EAAEM,OAE1B69C,EAAUl+C,EAAEI,SACdJ,GAAKk+C,EAAUl+C,EAAEI,OACjBk9C,EAAWt9C,GAAKk+C,EAAUl+C,EAAEI,QAE1B89C,EAAUl+C,EAAEK,QACdL,GAAKk+C,EAAUl+C,EAAEK,MACjBi9C,EAAWt9C,GAAKk+C,EAAUl+C,EAAEK;AAI9B,CACE,MAAM69C,EAAY/9C,GAAYm9C,EAAYI;AAC1CS,EAAUp+C,EAAI29C,EAASz9C,MAAQi+C,EAAUn+C,EAAEK,OAAS89C,EAAUn+C,EAAEM,MAChE89C,EAAUn+C,EAAI09C,EAASx9C,OAASg+C,EAAUl+C,EAAEI,OAAS89C,EAAUl+C,EAAEK,MAEjEN,GAAKm+C,EAAUn+C,EAAEK,OACjBk9C,EAAWv9C,GAAKm+C,EAAUn+C,EAAEK,OAC5BJ,GAAKk+C,EAAUl+C,EAAEI,OACjBk9C,EAAWt9C,GAAKk+C,EAAUl+C,EAAEI,OAG9B,MAGF,MAAMo+C,EAAO5+C,GAAQi+C,EAAU5+C;AAc/B,OAZA1N,OAAOsF,OAAOimD,EAAc5qD,MAAO,CACjC,4BAA8B,GAAE2rD,EAAU5+C,OAAOE,QAAQ0+C,EAAU5+C,OAAOG,QAC1EiC,gBAAkB,GAAEw8C,EAAUn3B,OAAOvnB,QAAQ0+C,EAAUn3B,OAAOtnB,QAE9DI,IAAK7M,EAAcmsD,GAAW9+C,IAC9B7L,KAAMuuB,EAAKxjB,MAAMhN,WAAQlB,EAAY2B,EAAcmsD,GAAW/+C,IAC9D3L,MAAOsuB,EAAKxjB,MAAMhN,MAAQS,EAAcmsD,IAAY/+C,SAAM/O,EAC1D46B,SAAUj5B,EAAuB,MAAT6rD,EAAetnD,KAAKF,IAAI40B,EAAS15B,MAAOs3B,EAAUvpB,OAAS2rB,EAAS15B,OAC5Fw5B,SAAU/4B,EAAcosD,GAAUhoD,EAAMonD,EAAUp+C,EAAG6rB,EAAS15B,QAAUsY,EAAAA,EAAW,EAAIohB,EAAS15B,MAAOw5B,EAASx5B,SAChHu5B,UAAW94B,EAAcosD,GAAUhoD,EAAMonD,EAAUn+C,EAAG2rB,EAAUz5B,QAAUsY,EAAAA,EAAW,EAAImhB,EAAUz5B,MAAOu5B,EAAUv5B,WAG/G,CACLisD,UAAAA,EACAb,WAAAA,GAkCJ,OArOAloC,QAAM,CAACsN,EAAKrqB,OAAQqqB,EAAK26B,YAAY,CAAAv9C,EAAA0H,KAA0D,IAAxDguB,EAAWwpB,GAAal/C,GAAGm/C,EAAWC,GAAa13C;AACpFy3C,IAAc9sD,MAAMC,QAAQ6sD,IAAYjqC,EAASO,UAAU0pC,GAC3DzpB,IAAcrjC,MAAMC,QAAQojC,IAAYxgB,EAASQ,QAAQggB,GAEzD0pB,GAAclqC,EAASO,UAAU2pC,GACjCF,GAAchqC,EAASQ,QAAQwpC,KAClC,CACDnlC,WAAW,IAGbC,EAAAA,gBAAe,KACb9E,EAASG,gBA4LXC,SACE,IAAM,CACJ4nC,EAAgB9qD,MAChB+qD,EAAgB/qD,MAChBV,EAAMw2B,OACNx2B,EAAMo6B,SACNp6B,EAAMm6B,UACNn6B,EAAMk6B,SACNl6B,EAAMi6B,aAER,IAAM2xB,MAGR/mC,EAAAA,UAAS,KACP,MAAM7X,EAAS4+C;AAIf,IAAK5+C,EAAQ;AACb,MAAM2/C,UAAEA,EAASb,WAAEA,GAAe9+C;AAC9B8+C,EAAWp9C,OAASi+C,EAAUn+C,GAChCkoB,uBAAsB,KACpBk1B,IACAl1B,uBAAsB,KACpBk1B,aAMD,CAAEA,eAAAA,KA9XE+B,GAA4Bt2C,GAAa,CACpDu2C,iBAAkB,CAChBtmD,KAAM,CAAC/F,OAAQ2I,UACfuN,QAAS,SACTwkB,UAAYhzB,GAA4B,mBAARA,GAAsBA,KAAOkiD,IAE/D//C,SAAU,CACR9D,KAAM/F,OACNkW,QAAS,UAEXyd,OAAQ,CACN5tB,KAAM/F,OACNkW,QAAS,QAEX+e,OAAQ,CAAC/0B,OAAQF,OAAQZ,QACxB;AAkXH,SAAS2sD,GAAYrkD,GACnB,OAAOvD,KAAKqO,MAAM9K,EAAM4kD,kBAAoBA,iBAG9C,SAASN,GAAWtkD,GAClB,OAAOvD,KAAKooD,KAAK7kD,EAAM4kD,kBAAoBA,iBE/b7C,IAAIE,IAAQ;AACZ,MAAMC,GAAS;AAiBf,IAAIC,IAAO;AACX,SAAS9lC,KACP+3B,qBAAqB+N,IACrBA,GAAMv3B,uBAAsB,KAC1B,MAAMupB,EAAQ+N,GAAO5qD;AACjB68C,GAAOA,IAEP+N,GAAOzuD,OAAQ4oB,KACd4lC,IAAQ,KCRjB,MAAMG,GAAmB,CACvBC,KAAM,KACNnvC,MA8CF,SAA8BkS,GAK5Bk9B,GAAWl9B,EAAK2S,SAASnjC,OAASwwB,EAAK26B,UAAUnrD,OAJjD,SAAmB0qC,GACjBla,EAAK2R,SAASniC,OAAQ,MA/CxB4M,MAqDF,SAA8B4jB,EAA0BlxB,GACtD,MAAM2L,EAAeulB,EAAKtY,KAAKlY,OAAOiL,aAChC0iD,EAAiB,IAAI,IAAIxqD,IAAI,IAC9B+Y,GAAiBsU,EAAK2S,SAASnjC,MAAOV,EAAMsuD,UAAY3iD,OAAenM,MACvEod,GAAiBsU,EAAK26B,UAAUnrD,MAAOV,EAAMsuD,UAAY3iD,OAAenM,MACzEqa,QAAOjY,IAAOA,EAAG60B,UAAUzqB,SAAS,8BAClCuiD,EAAiB3vD,OAAOi6B,WAAartB,SAASygD,gBAAgBj8C,YAE9Dw+C,GAAoB5sD,EAA8B+J,GAAgBH,SAASygD,gBAAjDxvC,GAAa7a,IAAOA;AAA3B,IAACA;AACtB4sD,GACFt9B,EAAKtY,KAAKlY,MAAO+1B,UAAU1lB,IAAI;AAGjCs9C,EAAe9pD,SAAQ,CAAC3C,EAAInC,KAC1BmC,EAAGsN,MAAMwmB,YAAY,oBAAqBv0B,GAAeS,EAAGi9C,aAC5Dj9C,EAAGsN,MAAMwmB,YAAY,oBAAqBv0B,GAAeS,EAAGmiC,YAExDniC,IAAO4J,SAASygD,iBAClBrqD,EAAGsN,MAAMwmB,YAAY,uBAAwBv0B,EAAcotD,IAG7D3sD,EAAG60B,UAAU1lB,IAAI,+BAGnBuX,EAAAA,gBAAe,KACb+lC,EAAe9pD,SAAQ,CAAC3C,EAAInC,KAC1B,MAAM8O,EAAIuB,WAAWlO,EAAGsN,MAAMopB,iBAAiB,sBACzC9pB,EAAIsB,WAAWlO,EAAGsN,MAAMopB,iBAAiB,sBAEzCoK,EAAiB9gC,EAAGsN,MAAMwzB;AAEhC9gC,EAAGsN,MAAMwzB,eAAiB,OAC1B9gC,EAAGsN,MAAM0oB,eAAe,qBACxBh2B,EAAGsN,MAAM0oB,eAAe,qBACxBh2B,EAAGsN,MAAM0oB,eAAe,wBACxBh2B,EAAG60B,UAAUM,OAAO,4BAEpBn1B,EAAGi9C,YAActwC,EACjB3M,EAAGmiC,WAAav1B,EAEhB5M,EAAGsN,MAAMwzB,eAAiBA,KAExB8rB,GACFt9B,EAAKtY,KAAKlY,MAAO+1B,UAAUM,OAAO,iCA/FtC03B,WAoGF,SAAmCv9B,EAA0BlxB,EAAsBioB,GACjF,IAAIymC,GAAO,EACPT,GAAO,EACPU,GAAO;AAEX,SAASzW,EAAQ9M,GDxHZ,IAA0ByI;AAAAA,ECyHb,KACd,MAAM/yC,EAAQguC,YAAYC;AAC1B7d,EAAK06B,eAAelrD,QAAQ0qC;AAC5B,MAAMwjB,EAAO9f,YAAYC,MAAQjuC;AACjC4tD,EAAOE,GAAQ,IAAO,IAAM,ID5H3Bb,IAASC,GAAOzuD,QACnByuD,GAAOhlD,KAAK6qC,GACZ1rB,OAEA4lC,IAAQ,EACRla,IACA1rB,MC0HFwmC,GAAsC,oBAAxBE,oBAAuChb,GAAiBA,IAAOgb,sBAAqB,KAChG5mC,EAAME,KAAI,KACRimC,GAAWl9B,EAAK2S,SAASnjC,OAASwwB,EAAK26B,UAAUnrD,OAAO0qC,IAClDsjB,GAKFxO,qBAAqB+N,GACrBA,EAAMv3B,uBAAsB,KAC1Bu3B,EAAMv3B,uBAAsB,KAC1BwhB,EAAO9M,UAIX8M,EAAO9M,YAMf9iB,EAAAA,gBAAe,KACiB,oBAAvBwmC,oBAAsCA,mBAAmBH,GAChEzO,qBAAqB+N,QAjIZc,GAA0B13C,GAAa,CAClD23C,eAAgB,CACd1nD,KAAM,CAAC/F,OAAQ2I,UACfuN,QAAS,QACTwkB,UAAYhzB,GAA4B,mBAARA,GAAsBA,KAAOilD,KAE9D;AAgIH,SAASE,GAAYxsD,EAA6BgiC,GAChD,MAAMyqB,EAAiB,CAAC7iD,YAAaoR,GAAiBhb;AACtDysD,EAAe9pD,SAAQ3C,IACrBA,EAAGiP,iBAAiB,SAAU+yB,EAAU,CAAEK,SAAS,OAGrD3b,EAAAA,gBAAe,KACb+lC,EAAe9pD,SAAQ3C,IACrBA,EAAGgP,oBAAoB,SAAUgzB,SCnKhC,MAAMqrB,GAAyCp3C,OAAOC,IAAI,kBCCpDo3C,GAAiB73C,GAAa,CACzC83C,WAAY,CAAC1tD,OAAQF,QACrB6tD,UAAW,CAAC3tD,OAAQF,SACnB;AAEI,SAAS8tD,GAAUrvD,EAAmB6zC,GAC3C,IAAIyb,EAA2BA;AAE/B,SAASC,EAAUC,GACjBF;AAEA,MAAMngB,EAAQ1tC,OAAO+tD,EAAYxvD,EAAMovD,UAAYpvD,EAAMmvD;AAEzD,OAAO,IAAI9+C,SAAQC,IACjBg/C,EtHoqBC,SAAgB7vB,EAAiBoU,GACtC,IAAKl1C,GAA0B,IAAZ8gC,EAGjB,OAFAoU,IAEO;AAGT,MAAM4b,EAAY7wD,OAAOogC,WAAW6U,EAAIpU;AAExC,MAAO,IAAM7gC,OAAO+gC,aAAa8vB,GsH7qBhBC,CAAMvgB,GAAO,KACxB0E,IAAK2b,GACLl/C,EAAQk/C,SAad,MAAO,CACLF,WAAAA,EACAK,aAVF,WACE,OAAOJ,GAAS,IAUhBK,cAPF,WACE,OAAOL,GAAS,KCcb,MAAMM,GAAqBx4C,GAAa,CAC7CxQ,OAAQ,CAACtF,OAAQxB,QACjBioD,UAAW,CAACzmD,OAAQxB,QACpB6nD,eAAgB,CACdtgD,KAAMvH,OACN0X,QAASA,KAAO,KAGlBq4C,YAAa,CACXxoD,KAAMgd,QACN7M,aAASjY,GAEXuwD,YAAazrC,QACb0rC,YAAa,CACX1oD,KAAMgd,QACN7M,aAASjY,GAGXywD,oBAAqB3rC,WAElB4qC,MACF;AAEI,SAASgB,GACdlwD,EAAqBsO,GAErB,IADAu0B,SAAEA,EAAQstB,MAAEA,GAAwD7hD;AAEpE,MAAM8K,EAAKC,GAAmB,gBACxB+2C,EAAcp4C,EAAAA;AAEpB,IAAIq4C,GAAY,EACZ9b,GAAY,EACZ+b,GAAa;AAEjB,MAAMN,EAActmD,EAAAA,UAAS,IAAM1J,EAAMgwD,aAAqC,MAArBhwD,EAAMgwD,aAAuBhwD,EAAM+vD,cACtFD,EAAcpmD,EAAQA,UAAC,IAAM1J,EAAM8vD,aAAqC,MAArB9vD,EAAM8vD,cAAwB9vD,EAAM+vD,cAAgBC,EAAYtvD,SAEnHivD,aAAEA,EAAYC,cAAEA,GAAkBP,GAASrvD,GAAOU,IAEpDA,KACGV,EAAM+vD,aAAeM,GACrBL,EAAYtvD,OAAS6zC,IACjBv0C,EAAM+vD,aAAeltB,EAASniC,QAAUyvD,EAAMzvD,QAEjDmiC,EAASniC,QAAUA,IACrB4vD,GAAa,GAEfztB,EAASniC,MAAQA,MAIf6vD,EAAev4C,EAAAA,MACfw4C,EACMplB,IACRA,EAAEyJ,kBACFub,EAAY1vD,MAAS0qC,EAAEoE,eAAiBpE,EAAEvkC,OACrCg8B,EAASniC,QACZ6vD,EAAa7vD,MAAQ,CAAC0qC,EAAEC,QAASD,EAAEkD,UAErCzL,EAASniC,OAASmiC,EAASniC,OAPzB8vD,EASWplB,IACTA,EAAEqlB,oBAAoBC,mBAE1BL,GAAY,EACZD,EAAY1vD,MAAS0qC,EAAEoE,eAAiBpE,EAAEvkC,OAC1C8oD,MAdEa,EAgBWplB,IACbilB,GAAY,EACZT,KAlBEY,EAoBMplB,KAC2D,IAA/Dj/B,GAAgBi/B,EAAEvkC,OAAuB,oBAE7C0tC,GAAY,EACZnJ,EAAEyJ,kBACFub,EAAY1vD,MAAS0qC,EAAEoE,eAAiBpE,EAAEvkC,OAE1C8oD,MA3BEa,EA6BKplB,IACPmJ,GAAY,EACZnJ,EAAEyJ,kBAEF+a,KAIEe,EAAkBjnD,EAAAA,UAAS,KAC/B,MAAMzE,EAA0C;AAchD,OAZI6qD,EAAYpvD,QACduE,EAAOojC,QAAUmoB,GAEfxwD,EAAM+vD,cACR9qD,EAAO2rD,aAAeJ,EACtBvrD,EAAO4rD,aAAeL,GAEpBR,EAAYtvD,QACduE,EAAOyvC,QAAU8b,EACjBvrD,EAAO0vC,OAAS6b,GAGXvrD,KAGH6rD,EAAgBpnD,EAAAA,UAAS,KAC7B,MAAMzE,EAAwC;AAwB9C,GAtBIjF,EAAM+vD,cACR9qD,EAAO2rD,aAAe,KACpBP,GAAY,EACZV,KAEF1qD,EAAO4rD,aAAe,KACpBR,GAAY,EACZT,MAIAI,EAAYtvD,QACduE,EAAO+7C,UAAY,KACjBzM,GAAY,EACZob,KAEF1qD,EAAOi8C,WAAa,KAClB3M,GAAY,EACZqb,MAIA5vD,EAAMiwD,oBAAqB,CAC7B,MAAMnwC,EAAO5H,EAAAA,OAAO+2C,GAAa;AACjChqD,EAAOojC,QAAU,KACfxF,EAASniC,OAAQ,EACjBof,GAAMixC,gBAIV,OAAO9rD,KAGH+rD,EAActnD,EAAAA,UAAS,KAC3B,MAAMzE,EAAwC;AAgB9C,OAdIjF,EAAM+vD,cACR9qD,EAAO2rD,aAAe,KAChBN,IACFD,GAAY,EACZC,GAAa,EACbX,MAGJ1qD,EAAO4rD,aAAe,KACpBR,GAAY,EACZT,MAIG3qD;AAGT2e,EAAKA,MAACusC,GAAOlnD,KACPA,KACDjJ,EAAM+vD,aAAgBM,GAAeL,EAAYtvD,OAAU6zC,MAC3Dyb,EAAYtvD,OAAU6zC,GAAev0C,EAAM+vD,aAAgBM,KAE5DxtB,EAASniC,OAAQ,MAIrBkjB,EAAKA,MAACif,GAAU55B,IACTA,GACH+1B,YAAW,KACTuxB,EAAa7vD,WAAQlB,OAGxB,CAAEoK,MAAO;AAEZ,MAAMqnD,EAAe9jD;AACrBxD,EAAAA,aAAY,KACLsnD,EAAavwD,OAElBmkB,EAAAA,UAAS,KACPurC,EAAY1vD,MAAQuwD,EAAarvD;AAIrC,MAAMsvD,EAAY/jD,KACZtG,EAAS6C,EAAAA,UAAS,IACD,WAAjB1J,EAAM6G,QAAuB0pD,EAAa7vD,MAAc6vD,EAAa7vD,MACrEwwD,EAAUxwD,MAAcwwD,EAAUtvD,GAC/By6C,GAAUr8C,EAAM6G,OAAQuS,IAAOg3C,EAAY1vD,QAE9CmjC,EAAWn6B,EAAAA,UAAS,IACjB/I,MAAMC,QAAQiG,EAAOnG,YACxBlB,EACAqH,EAAOnG;AAGb,IAAIunB;AAgBJ,OAfArE,EAAAA,OAAM,MAAQ5jB,EAAMgoD,YAAW/+C,IACzBA,GAAOtK,GACTspB,EAAQC,EAAWA,cACnBD,EAAME,KAAI,MAehB,SACEnoB,EACAoZ,EAA6BpD,GAE7B,IADAo6C,YAAEA,EAAWO,gBAAEA,GAA2F36C;AAoB1G,SAASm7C,IAAwE,IAApDvvD,EAAEb,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGqwD,GAAAA,IAAgB33C,EAAM1Y,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGf,GAAAA,EAAM4nD;AAC1DhmD,GAEL8O,GAAU9O,EAAIw6B,EAAUA,WAACu0B,EAAgBjwD,MAAO+Y,IAGlD,SAAS43C,IAA0E,IAApDzvD,EAAEb,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGqwD,GAAAA,IAAgB33C,EAAM1Y,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGf,GAAAA,EAAM4nD;AAC5DhmD,GAELsP,GAAYtP,EAAIw6B,EAAUA,WAACu0B,EAAgBjwD,MAAO+Y,IAGpD,SAAS23C,IACP,MAAMpJ,EAAY3L,GADWt7C,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAGf,GAAAA,EAAMgoD,UACA5uC;AAKtC,OAFAg3C,EAAY1vD,MAAQsnD,GAAWlmD,WAAaC,KAAK+a,aAAekrC,OAAYxoD,EAErE4wD,EAAY1vD,MApCrBkjB,EAAAA,OAAM,IAAM5jB,EAAMgoD,YAAW,CAAC/+C,EAAKq2B,KACjC,GAAIA,GAAUr2B,IAAQq2B,EAAQ,CAC5B,MAAM0oB,EAAYoJ,EAAa9xB;AAC/B0oB,GAAaqJ,EAAqBrJ,GAEhC/+C,GACF4b,YAAS,IAAMssC,QAEhB,CAAE9oC,WAAW,IAEhBzE,SAAM,IAAM5jB,EAAM4nD,iBAAgB,KAChCuJ,OAGF7oC,EAAAA,gBAAe,KACb+oC,OAlCIC,CAActxD,EAAOoZ,EAAI,CAAEg3C,YAAAA,EAAaO,gBAAAA,QAEjC1oC,GACTA,EAAMG,SAEP,CAAExe,MAAO,OAAQye,WAAW,IAE/BC,EAAAA,gBAAe,KACbL,GAAOG,UAGF,CAAEgoC,YAAAA,EAAaa,aAAAA,EAAcpqD,OAAAA,EAAQg9B,SAAAA,EAAUqtB,UAAAA,EAAWP,gBAAAA,EAAiBG,cAAAA,EAAeE,YAAAA,GAgDnG,SAAS3U,GACPjwC,EACAgN,GAEA,IAAKhN,EAAU;AAEf,IAAIvF;AACJ,GAAiB,WAAbuF,EAAuB,CACzB,IAAIxK,EAAKwX,GAAI8yB,OAAOrqC,KAAK0Z;AACzB,KAAO3Z,GAAI2vD,aAAa,sBACtB3vD,EAAKA,EAAG2Z;AAEV1U,EAASjF,OAGTiF,EAF6B,iBAAbuF,EAEPZ,SAASusB,cAAc3rB,GACvB,QAASA,EAETA,EAASvK,IAGTuK;AAGX,OAAOvF,EC5UF,SAAS2qD,KACd,IAAK7yD,EAAY,OAAOsO,EAAUA,YAAC;AAEnC,MAAMgtC,IAAEA,GAAQgC;AAEhB,GAAIhC,EAAK,CACP,MAAMwX,EAAYxkD,cAAW;AAI7B,OAHAs1B,EAAAA,WAAU,KACRkvB,EAAU/wD,OAAQ,KAEb+wD,EAEP,OAAOxkD,EAAAA,YAAW,GCZf,MAAMykD,GAAgBr6C,GAAa,CACxCimB,MAAOhZ,SACN;AAEI,SAASqtC,GAAS3xD,EAA2BylB,GAClD,MAAMib,EAAWzzB,cAAW,GACtB2kD,EAAaloD,YAAS,IAAMg3B,EAAShgC,OAASV,EAAMs9B,OAAS7X,EAAO/kB;AAQ1E,OANAkjB,EAAAA,MAAM6B,GAAQ,IAAMib,EAAShgC,OAAQ,IAM9B,CAAEggC,SAAAA,EAAUkxB,WAAAA,EAAYj8B,aAJ/B,WACO31B,EAAMs9B,QAAOoD,EAAShgC,OAAQ,KCfhC,SAASmxD,KACd,MAEMC,EAFKz4C,GAAmB,cAEVpR,MAAM6pD;AAE1B,MAAO,CAAEA,QAASA,EAAU,CAAEA,CAACA,GAAU,SAAOtyD,GCElD,MAAMuyD,GAA0Cl6C,OAAOC,IAAI,iBAMrDk6C,GAAcvoD,EAAAA,SAA0C;ACA9D,SAASwoD,KACP,OAAO,EAGT,SAASC,GAAY9mB,EAAexpC,EAAiB26B,GAKnD,IAAK6O,IAAmC,IAA9B+mB,GAAc/mB,EAAG7O,GAAoB,OAAO;AAKtD,MAAM3jB,EAAOyC,GAAazZ;AAC1B,GACwB,oBAAfwwD,YACPx5C,aAAgBw5C,YAChBx5C,EAAKy5C,OAASjnB,EAAEvkC,OAChB,OAAO;AAIT,MAAMsE,GAAsC,iBAAlBoxB,EAAQ77B,OAAsB67B,EAAQ77B,MAAMgE,cAAmB;AASzF,OAPAyG,EAASnC,KAAKpH,IAONuJ,EAASjH,MAAKtC,GAAMA,GAAIoK,SAASo/B,EAAEvkC,UAG7C,SAASsrD,GAAe/mB,EAAe7O,GAGrC,OAF2C,iBAAlBA,EAAQ77B,OAAsB67B,EAAQ77B,MAAM4xD,kBAAqBL,IAE1E7mB,GAWlB,SAASmnB,GAAc3wD,EAAiBwhB,GACtC,MAAMxK,EAAOyC,GAAazZ;AAE1BwhB,EAAS5X,UAEiB,oBAAf4mD,YAA8Bx5C,aAAgBw5C,YACvDhvC,EAASxK,GAIN,MAAM45C,GAAe,CAM1BC,QAAS7wD,EAAiB26B,GACxB,MAAM8L,EAAW+C,GAzBrB,SAAoBA,EAAexpC,EAAiB26B,GAClD,MAAMhyB,EAAmC,mBAAlBgyB,EAAQ77B,MAAuB67B,EAAQ77B,MAAQ67B,EAAQ77B,MAAM6J;AAEpF3I,EAAG8wD,cAAeC,yBAA2BT,GAAW9mB,EAAGxpC,EAAI26B,IAAYyC,YAAW,KACpFmzB,GAAc/mB,EAAG7O,IAAYhyB,GAAWA,EAAQ6gC,KAC/C,GAoB6BwnB,CAAUxnB,EAAiBxpC,EAAI26B,GACvD2lB,EAAe9W,IACnBxpC,EAAG8wD,cAAeC,wBAA0BT,GAAW9mB,EAAiBxpC,EAAI26B;AAG9Eg2B,GAAa3wD,GAAKoxB,IAChBA,EAAIniB,iBAAiB,QAASw3B,GAAS,GACvCrV,EAAIniB,iBAAiB,YAAaqxC,GAAa,MAG5CtgD,EAAG8wD,gBACN9wD,EAAG8wD,cAAgB,CACjBC,yBAAyB,IAI7B/wD,EAAG8wD,cAAcn2B,EAAQE,SAAUC,EAAErgB,KAAO,CAC1CgsB,QAAAA,EACA6Z,YAAAA,IAIJ5lB,UAAW16B,EAAiB26B,GACrB36B,EAAG8wD,gBAERH,GAAa3wD,GAAKoxB,IAChB,IAAKA,IAAQpxB,EAAG8wD,gBAAgBn2B,EAAQE,SAAUC,EAAErgB,KAAM;AAE1D,MAAMgsB,QAAEA,EAAO6Z,YAAEA,GAAgBtgD,EAAG8wD,cAAcn2B,EAAQE,SAAUC,EAAErgB;AAEtE2W,EAAIpiB,oBAAoB,QAASy3B,GAAS,GAC1CrV,EAAIpiB,oBAAoB,YAAasxC,GAAa,aAG7CtgD,EAAG8wD,cAAcn2B,EAAQE,SAAUC,EAAErgB;AC3DhD,SAASw2C,GAAO7yD,GACd,MAAM2iC,WAAEA,EAAU1uB,MAAEA,KAAUhQ,GAASjE;AACvC,OAAA2d,EAAAA,YAAAkY,EAAAA,WAAA,CAAAzrB,KAAA,kBAAA81B,QAAA,GAAA,CAAAzoB,QAAAA,IAEMzX,CAAAA,EAAM2iC,YAAUhlB,EAAAC,YAAA,MAAAG,aAAA,CAAApG,MAEP,CACL,mBACA3X,EAAMiU,MAAM0nB,uBAAuBj7B,OACpCwO,MACOlP,EAAMiU,MAAM2nB,sBAAsBl7B,OACrCuD,GAER,SAUA,MAAM6uD,GAAoBz7C,GAAa,CAC5CoN,SAAUH,QACVyuC,OAAQ,CAACzuC,QAAS/iB,OAAQxB,QAC1BizD,YAAa,CACX1rD,KAAMgd,QACN7M,SAAS,GAEX62C,UAAWhqC,QACX3B,aAAc,KACdswC,aAAc,KACdx6C,SAAU6L,QACViT,QAAS,CAAC91B,OAAQF,QAClB2xD,iBAAkB5uC,QAClBqe,WAAYre,QACZ6uC,WAAY7uC,QACZ8uC,MAAO,CACL9rD,KAAM,CAACgd,QAAS/iB,QAChBkW,SAAS,GAEX8P,OAAQ,CACNjgB,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,QAGRo4C,QACAn4C,QACAsiB,QACA03B,QACA/D,QACAoB,QACA19B,QACAwD,MACF,YAEUw+B,GAAWx4C,IAAAA,CAAiC,CACvDzQ,KAAM,WAEN6zB,WAAY,CAAEu0B,aAAAA,IAEd10C,cAAc,EAEd9d,MAAO,CACLszD,oBAAqBhvC,WAElBwuC,MAGL30B,MAAO,CACL,gBAAkBiN,IAAkB,EACpC,oBAAsB1qC,IAAmB,EACzC6yD,WAAYA,KAAM,EAClBC,WAAYA,KAAM,GAGpBh5C,MAAOxa,EAAKsO,GAA0B,IAAxB8M,MAAEA,EAAKpW,MAAEA,EAAKmkB,KAAEA,GAAM7a;AAClC,MAAMya,EAAQR,GAAgBvoB,EAAO,cAC/B6iC,EAAWn5B,EAAAA,SAAS,CACxB9B,IAAKA,IAAMmhB,EAAMroB,MACjBqH,IAAK9G,IACGA,GAAKjB,EAAMyY,WAAWsQ,EAAMroB,MAAQO,OAGxCwyD,eAAEA,GCvIL,SAAsB5sD,GA2B3B,MAAO,CAAE4sD,eA1Bc/pD,EAAAA,UAAS,KAC9B,MAAM8zC,EAAU32C,EAAOnG;AAEvB,IAAgB,IAAZ88C,IAAqB7+C,EAAY;AAErC,MAAM+0D,GACQ,IAAZlW,EAAoBhyC,SAASoyC,KACR,iBAAZJ,EAAuBhyC,SAASusB,cAAcylB,GACrDA;AAEJ,GAAqB,MAAjBkW,EAEF,YADA/gD,EAAAA,KAAM,2BAA0B6qC;AAIlC,IAAI3P,EAAY6lB,EAAc37B,cAAc;AAQ5C,OANK8V,IACHA,EAAYriC,SAASmoB,cAAc,OACnCka,EAAUC,UAAY,sBACtB4lB,EAAc9/B,YAAYia,IAGrBA,MD+GoB8lB,CAAYjqD,EAAAA,UAAS,IAAM1J,EAAM+yD,QAAU/yD,EAAMsuD,cACtEx7B,aAAEA,GAAiBgB,GAAa9zB,IAChC6wB,WAAEA,EAAUnjB,MAAEA,GAAUyjB,MACxBygC,WAAEA,EAAYj8B,aAAci+B,GAAkBjC,GAAQ3xD,EAAO6iC,GAC7DgxB,EAAan4B,GAAmBhyB,EAAAA,UAAS,IACf,iBAAhB1J,EAAMozD,MAAqBpzD,EAAMozD,MAAQ,SAEnDU,UAAEA,EAASC,SAAEA,EAAQC,YAAEA,GFnI1B,SACLnxB,EACAtb,EACA0sC,GAEA,MAAM76C,EAAKC,GAAmB,YACxB66C,GAAoBD,EAEpB1Q,EAASrrC,EAAAA,OAAO65C,QAAavyD,GAC7B20D,EAAsB1qD,EAAAA,SAAS,CACnC2qD,eAAgB,IAAIvwD;AAEtBoV,UAAQ84C,GAAaoC;AAErB,MAAME,EAAUpnD,EAAUA,YAAEsa,EAAO7mB;AACnCsnB,GAAe6a,GAAU,KACvB,MAAMyxB,EAAatC,GAAYjmD,IAAI,KAAK;AACxCsoD,EAAQ3zD,MAAQ4zD,EAAaA,EAAa,IAAM/sC,EAAO7mB,MAEnDwzD,GACFlC,GAAYhpD,KAAK,CAACoQ,EAAGiD,IAAKg4C,EAAQ3zD,QAGpC6iD,GAAQ6Q,eAAerjD,IAAIqI,EAAGiD,KAE9BiM,EAAAA,gBAAe,KACb,GAAI4rC,EAAkB,CACpB,MAAM3oD,EAAM2d,EAAAA,MAAM8oC,IAAa1qC,WAAUrmB,GAAKA,EAAE,KAAOmY,EAAGiD;AAC1D21C,GAAY3qC,OAAO9b,EAAK,GAG1Bg4C,GAAQ6Q,eAAe9xD,OAAO8W,EAAGiD;AAIrC,MAAMy3C,EAAY7mD,cAAW;AACzBinD,GACFvqD,EAAAA,aAAY,KACV,MAAM4qD,EAASvC,GAAYjmD,IAAI,KAAK,KAAOqN,EAAGiD;AAC9C2iB,YAAW,IAAM80B,EAAUpzD,MAAQ6zD;AAIvC,MAAMR,EAAWrqD,EAAAA,UAAS,KAAOyqD,EAAMC,eAAevrD;AAEtD,MAAO,CACLirD,UAAW5mD,EAAQA,SAAC4mD,GACpBC,SAAAA,EACAC,YAAatqD,EAAQA,UAAC,KAAO,CAAE6d,OAAQ8sC,EAAQ3zD,WEmFF8zD,CAAS3xB,EAAUvE,QAAMt+B,EAAO,UAAWA,EAAMszD,sBACxFlD,YACJA,EAAWa,aAAEA,EAAYpqD,OACzBA,EAAMg9B,SAAEA,EAAQqtB,UAAEA,EAASP,gBAC3BA,EAAeG,cACfA,EAAaE,YACbA,GACEd,GAAalwD,EAAO,CAAE6iC,SAAAA,EAAUstB,MAAO4D,KACrCz5B,gBAAEA,GAAoBD,GAAar6B,GACnCyxD,EAAYD,MACZM,QAAEA,GAAYD;AAEpBjuC,EAAAA,OAAM,IAAM5jB,EAAMyY,WAAUxX,IACtBA,IAAG4hC,EAASniC,OAAQ;AAG1B,MAAMkY,EAAOZ,EAAAA,MACPy8C,EAAUz8C,EAAAA,MACV6zC,EAAY7zC,EAAAA,OACZszC,cAAEA,EAAaM,eAAEA,GZ9FpB,SACL5rD,EACAkxB,GAEA,MAAMo6B,EAAgBtzC,MAAI,IACpB4zC,EAAiB5zC,EAAAA;AAoBvB,SAAS08C,EAAUtpB,GACjBwgB,EAAelrD,QAAQ0qC,GAGzB,OAtBIzsC,GACFqpB,IAAe,OAASkJ,EAAK2R,SAASniC,QAASV,EAAM4tD,oBAAmBj1C,IACtEiL,EAAAA,OAAM,IAAM5jB,EAAM4tD,kBAAkBj1C,GACpC2P,EAAAA,gBAAe,KACb1pB,OAAOgS,oBAAoB,SAAU8jD,GACrC9I,EAAelrD,WAAQlB,KAGzBZ,OAAOiS,iBAAiB,SAAU6jD,EAAU,CAAEzwB,SAAS,IAEjB,mBAA3BjkC,EAAM4tD,iBACfhC,EAAelrD,MAAQV,EAAM4tD,iBAAiB18B,EAAMlxB,EAAOsrD,IAAgBM,eAE3EA,EAAelrD,MAAQyqD,GAAmBnrD,EAAM4tD,kBAAkB18B,EAAMlxB,EAAOsrD,IAAgBM,kBAS9F,CACLN,cAAAA,EACAM,eAAAA,GY+D0C+I,CAAsB30D,EAAO,CACrE0N,MAAAA,EACAm+C,UAAAA,EACAhlD,OAAAA,EACAg8B,SAAAA;AAUF,SAAS+xB,EAAgBxpB,GACvBjiB,EAAK,gBAAiBiiB,GAEjBprC,EAAMmzD,WACN0B,IADkBhyB,EAASniC,OAAQ,EAI1C,SAAS4xD,EAAkBlnB,GACzB,OAAOvI,EAASniC,OAASozD,EAAUpzD,SAEhCV,EAAMozD,OAAShoB,EAAEvkC,SAAW4tD,EAAQ/zD,OAkBzC,SAAS4gD,EAAWlW,GACJ,WAAVA,EAAE5nC,KAAoBswD,EAAUpzD,QAC7BV,EAAMmzD,WAKJ0B,KAJLhyB,EAASniC,OAAQ,EACbmrD,EAAUnrD,OAAOsL,SAASR,SAASC,gBACrC2kD,EAAY1vD,OAAOoL,WTjLxB,SACL9L,EACAkxB,GAEA,IAAKvyB,EAAY;AAEjB,IAAIspB;AACJte,EAAAA,aAAYguC,UACV1vB,GAAOG,OAED8I,EAAK2R,SAASniC,OAASV,EAAMgvD,iBAEnC/mC,EAAQC,EAAWA,oBACb,IAAI7X,SAAQC,GAAW0uB,WAAW1uB,KACxC2X,EAAMxC,QAAUwC,EAAME,KAAI,KACY,mBAAzBnoB,EAAMgvD,eACfhvD,EAAMgvD,eAAe99B,EAAMlxB,EAAOioB,GAElCimC,GAAiBluD,EAAMgvD,kBAAkB99B,EAAMlxB,EAAOioB,UAK5DK,EAAAA,gBAAe,KACbL,GAAOG,USgHP0sC,CAAoB90D,EAAO,CACzB4Y,KAAAA,EACAizC,UAAAA,EACAhoB,SAAAA,EACAhB,SAAAA,EACA+oB,eAAAA,IAiBFjtD,GAAcilB,EAAAA,MAAMif,GAAU55B,IACxBA,EACFrK,OAAOiS,iBAAiB,UAAWywC,GAEnC1iD,OAAOgS,oBAAoB,UAAW0wC,KAEvC,CAAEj5B,WAAW,IAEhB3E,EAAAA,iBAAgB,KACT/kB,GAELC,OAAOgS,oBAAoB,UAAW0wC;AAcxC,MAAMyT,EAAS9oB;AACfjkB,IAAe,IAAMhoB,EAAMgzD,cAAa,MxDzHrC,SAAwB+B,EAA4BlhB,GACzD,IACImhB,EACAC,EAFAC,GAAS;AA0Bb,SAASC,EAAY/pB,GACfA,EAAEtd,OAAOsnC,WAEbF,GAAS,EACTl2B,YAAW,IAAOk2B,GAAS,KA1BzBv2D,IACFkmB,EAAAA,UAAS,KACPjmB,OAAOiS,iBAAiB,WAAYskD,GACpCH,EAAeD,GAAQM,YAAW,CAACzlD,EAAI5O,EAAMse,KACtC8tB,GAGH8nB,EAASrhB,EAAGv0B,GAAQA,IAFpB0f,YAAW,IAAMk2B,EAASrhB,EAAGv0B,GAAQA,MAIvC8tB,IAAe,KAEjB6nB,EAAcF,GAAQO,WAAU,KAC9BloB,IAAe,QAGnB9kB,EAAAA,gBAAe,KACb1pB,OAAOgS,oBAAoB,WAAYukD,GACvCH,MACAC,UwDmGAM,CAAcR,GAAQz1C,IAChBw0C,EAAUpzD,OAASmiC,EAASniC,OAC9B4e,GAAK,GACAtf,EAAMmzD,WACN0B,IADkBhyB,EAASniC,OAAQ,GAGxC4e;AAKN,MAAMtR,EAAMgK,EAAAA;AAWZ,SAAS68C,IACH70D,EAAMkzD,kBAEVrH,EAAUnrD,OAASwP,GAAQ27C,EAAUnrD,MAAO,CAC1C,CAAEmP,gBAAiB,UACnB,CAAER,UAAW,eACb,CAAEQ,gBAAiB,WAClB,CACD2nB,SAAU,IACVC,OAAQhc,KAIZ,SAASkb,IACPxN,EAAK,cAGP,SAASwM,IACPi+B,IACAzqC,EAAK,cAgFP,OA7GAvF,EAAAA,OAAM,IAAMif,EAASniC,QAAUV,EAAMykB,UAAYzkB,EAAMsuD,YAAsC,MAAxBmF,EAAe/yD,QAAeuI,IACjG,GAAIA,EAAK,CACP,MAAMusD,EAAel5C,GAAgB1D,EAAKlY;AACtC80D,GAAgBA,IAAiBhqD,SAASmR,mBAC5C3O,EAAItN,MAAQ80D,EAAazxB,eA4B/B7mB,IAAU,IAAAS,EAAAA,YAAA6W,EAAAA,SAEJpZ,KAAAA,CAAAA,EAAM4sC,YAAY,CAClBnlB,SAAUA,EAASniC,MACnBwwD,UAAAA,EACAlxD,MAAOo8B,EAAAA,WAAW,CAChBpkB,IAAKi5C,GACJN,EAAgBjwD,MAAOV,EAAM4nD,kBAGhC6J,EAAU/wD,OAASkxD,EAAWlxD,OAAKid,EAAAC,YAAA63C,WAAA,CAAAh9C,UAErBg7C,EAAe/yD,MAAKkP,GAC3B6jD,EAAe/yD,OAAK,CAAA+W,QAAAA,IAAAkG,CAAAA,oBAAAI,EAAAA,WAAA,CAAApG,MAGhB,CACL,YACA,CACE,sBAAuB3X,EAAMykB,UAAYzkB,EAAMsuD,UAC/C,oBAAqBzrB,EAASniC,MAC9B,uBAAwBV,EAAMsuD,WAEhCx7B,EAAapyB,MACbmwB,EAAWnwB,MACXV,EAAM2X,OACPzI,MACM,CACL8kD,EAAYtzD,MACZ,CACE,sBAAuBV,EAAMu3B,QAC7BvpB,IAAK7M,EAAc6M,EAAItN,QAEzBV,EAAMkP,OACP8I,IACKY,GACDk5C,EACA9sD,GAAK,CAAA2Y,EAAAA,YAAAk1C,GAAA90C,EAAAA,WAAA,CAAA9J,MAGA4/C,EAAUlxB,WACLE,EAASniC,SAAWV,EAAMozD,MAAKp7C,IACtCy8C,GACDzD,EAAYtwD,OAAKid,MAAAA,EAAAA,YAAAue,GAAA,CAAAgE,QAAA,EAAAw1B,WAAA,EAAA5uC,WAKT9mB,EAAM8mB,WAAUjgB,OACpBA,EAAOnG,MAAKi2B,aACNA,EAAYhB,aACZA,GAAY,CAAAle,QAAAA,IAAA,CAAAmpB,EAAAA,eAAAjjB,EAAAA,kBAAAI,EAAAA,WAAA,CAAA/F,IAGnB6zC,EAASl0C,MAGR,CACL,qBACA3X,EAAM2iB,cACPzT,MACM,CACLorB,EAAgB55B,MAChB4qD,EAAc5qD,QAEXowD,EAAcpwD,MACdV,EAAMizD,cAET73C,CAAAA,EAAM3D,UAAU,CAAEorB,SAAAA,QAAWugB,QAbtBvgB,EAASniC,OAAKmgC,CAAAA,mBACN,iBAAA,CAAEt2B,QAASqqD,EAAgBtC,iBAAAA,EAAkB5tD,QAASA,IAAM,CAAC0rD,EAAY1vD,uBAqBjG,CACL0vD,YAAAA,EACAqE,QAAAA,EACA5tD,OAAAA,EACAguD,aAAAA,EACAhJ,UAAAA,EACAiI,UAAAA,EACAC,SAAAA,EACAnI,eAAAA,ME5VA+J,GAAO99C,OAAO;AAOpB,SAAS+9C,GAAez2D,EAAUqE,GAChC,IAAIqyD,EAAa12D;AACjB,KAAO02D,GAAY,CACjB,MAAMC,EAAal8C,QAAQm8C,yBAAyBF,EAAYryD;AAChE,GAAIsyD,EAAY,OAAOA;AACvBD,EAAa91D,OAAOi2D,eAAeH,IAKhC,SAASI,GACdpvD,GAE+G,IAAAqmB,IAAAA,EAAAnsB,UAAAxB,OAD5GiK,MAAI7I,MAAAusB,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3jB,EAAI2jB,EAAApsB,GAAAA,UAAAosB;AAIP,OAFCtmB,EAAe8uD,IAAQnsD,EAEjB,IAAIkQ,MAAM7S,EAAQ,CACvBe,IAAKf,EAAQrD,GACX,GAAIoW,QAAQrW,IAAIsD,EAAQrD,GACtB,OAAOoW,QAAQhS,IAAIf,EAAQrD;AAI7B,GAAmB,iBAARA,IAAoBA,EAAImM,WAAW,OAAQnM,EAAImM,WAAW,MAErE,IAAK,MAAMqI,KAAOxO,EAChB,GAAIwO,EAAItX,OAASkZ,QAAQrW,IAAIyU,EAAItX,MAAO8C,GAAM,CAC5C,MAAMyF,EAAM2Q,QAAQhS,IAAIoQ,EAAItX,MAAO8C;AACnC,MAAsB,mBAARyF,EACVA,EAAIitD,KAAKl+C,EAAItX,OACbuI,IAIV1F,IAAKsD,EAAQrD,GACX,GAAIoW,QAAQrW,IAAIsD,EAAQrD,GACtB,OAAO;AAIT,GAAmB,iBAARA,GAAoBA,EAAImM,WAAW,MAAQnM,EAAImM,WAAW,MAAO,OAAO;AAEnF,IAAK,MAAMqI,KAAOxO,EAChB,GAAIwO,EAAItX,OAASkZ,QAAQrW,IAAIyU,EAAItX,MAAO8C,GACtC,OAAO;AAGX,OAAO,GAETuE,IAAKlB,EAAQrD,EAAK9C,GAChB,GAAIkZ,QAAQrW,IAAIsD,EAAQrD,GACtB,OAAOoW,QAAQ7R,IAAIlB,EAAQrD,EAAK9C;AAIlC,GAAmB,iBAAR8C,GAAoBA,EAAImM,WAAW,MAAQnM,EAAImM,WAAW,MAAO,OAAO;AAEnF,IAAK,MAAMqI,KAAOxO,EAChB,GAAIwO,EAAItX,OAASkZ,QAAQrW,IAAIyU,EAAItX,MAAO8C,GACtC,OAAOoW,QAAQ7R,IAAIiQ,EAAItX,MAAO8C,EAAK9C;AAIvC,OAAO,GAETq1D,yBAA0BlvD,EAAQrD,GAChC,MAAMsyD,EAAal8C,QAAQm8C,yBAAyBlvD,EAAQrD;AAC5D,GAAIsyD,EAAY,OAAOA;AAGvB,GAAmB,iBAARtyD,IAAoBA,EAAImM,WAAW,OAAQnM,EAAImM,WAAW,MAArE,CAGA,IAAK,MAAMqI,KAAOxO,EAAM,CACtB,IAAKwO,EAAItX,MAAO;AAChB,MAAMo1D,EAAaF,GAAc59C,EAAItX,MAAO8C,KAAS,MAAOwU,EAAItX,MAAQk1D,GAAc59C,EAAItX,MAAM27B,GAAG85B,WAAY3yD,QAAOhE;AACtH,GAAIs2D,EAAY,OAAOA,EAIzB,IAAK,MAAM99C,KAAOxO,EAAM,CACtB,MAAM4sD,EAAYp+C,EAAItX,OAAUsX,EAAItX,MAAci1D;AAClD,IAAKS,EAAW;AAChB,MAAMC,EAAQD,EAAUhtD;AACxB,KAAOitD,EAAM92D,QAAQ,CACnB,MAAMyY,EAAMq+C,EAAMjzD,QACZ0yD,EAAaF,GAAc59C,EAAItX,MAAO8C;AAC5C,GAAIsyD,EAAY,OAAOA;AACvB,MAAMM,EAAYp+C,EAAItX,OAAUsX,EAAItX,MAAci1D;AAC9CS,GAAWC,EAAMrtD,QAAQotD,SCnEhC,MAAME,GAAiBj/C,GAAa,CAGzC6N,GAAI3jB,UAED8C,EAAKyuD,GAAkB,CACxB3D,WAAY,IACZc,qBAAqB,EACrBrC,iBAAkB,YAClBwB,UAAW,IACXgE,OAAO,EACPpE,eAAgB,aAChBloC,WAAY,CAAE3e,UAAW8uB,MACvB,CAAC,cACJ,SAEUs/B,GAAQ17C,IAAAA,CAAiC,CACpDzQ,KAAM,QAENpK,MAAOs2D,KAEPn4B,MAAO,CACL,oBAAsBz9B,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMu0B,EAAWta,GAAgBvoB,EAAO,eAClC8xD,QAAEA,GAAYD,KAEdx1C,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,UAAS7I,MAE1Cm6C,EAAUx+C,EAAAA,MAEVurC,EAASrrC,EAAAA,OAAO+2C,GAAa,MAC7BwH,EAAexpD,aAAW;AAoBhC0qC,eAAe+e,EAAWtrB,GACxB,MAAMx8B,EAASw8B,EAAEgW,cACXvyC,EAAQu8B,EAAEvkC;AAIhB,SAFMge,EAAQA,WAGZge,EAASniC,OACTkO,IAAWC,GACX2nD,EAAQ91D,OAAOmrD,WAEf2K,EAAQ91D,OAAOozD,YAEd,CAACtoD,SAAUgrD,EAAQ91D,MAAMmrD,WAAW9lD,SAAS8I,KAE7C2nD,EAAQ91D,MAAMmrD,UAAU7/C,SAAS6C,GAClC,CACkBjE,EAAkB4rD,EAAQ91D,MAAMmrD,WACxC,IAAI//C,SAclB,SAAS8oD,EAAgBxpB,GACvBmY,GAAQwN,aAAa3lB,GAGvB,SAASkW,EAAWlW,GAClB,IAAIprC,EAAMyY,SAEV,GAAc,QAAV2yB,EAAE5nC,KAA4B,UAAV4nC,EAAE5nC,MAAoBxD,EAAMiwD,oBAAsB,CAC1D,UAAV7kB,EAAE5nC,KAAiB4nC,EAAEoW;AAELt2C,EAClBN,EAAkB4rD,EAAQ91D,OAAOmrD,WAAsB,GACvDzgB,EAAEqG,SAAW,OAAS,QACrB7vC,GAAoBA,EAAG+0D,UAAY,MAGpC9zB,EAASniC,OAAQ,EACjB81D,EAAQ91D,OAAO0vD,aAAatkD,aAErB,CAAC,QAAS,KAAK/F,SAASqlC,EAAE5nC,MAAQxD,EAAMiwD,sBACjDptB,EAASniC,OAAQ,EACjB6iD,GAAQwN,gBAIZ,SAAS6F,EAAoBxrB,GAC3B,GAAIprC,EAAMyY,SAAU;AAEpB,MAAM7W,EAAK40D,EAAQ91D,OAAOmrD;AACtBjqD,GAAMihC,EAASniC,MACH,cAAV0qC,EAAE5nC,KACJ4nC,EAAEoW,iBACF51C,EAAWhK,EAAI,SACI,YAAVwpC,EAAE5nC,MACX4nC,EAAEoW,iBACF51C,EAAWhK,EAAI,SAER,CAAC,YAAa,WAAWmE,SAASqlC,EAAE5nC,OAC7Cq/B,EAASniC,OAAQ,EACjB0qC,EAAEoW,iBACFxiB,YAAW,IAAMA,YAAW,IAAM43B,EAAmBxrB,QA3FzDnyB,EAAAA,QAAQg2C,GAAa,CACnBzpC,aACIixC,EAAa/1D,OAEjBglB,eACI+wC,EAAa/1D,OAEjBqwD,aAAc3lB,GACZpM,YAAW,KACJy3B,EAAa/1D,OACV,MAAL0qC,KAAcA,GhIsoBpB,SAA+BtvB,EAAmB+6C,GACvD,MAAMC,EAASh7C,EAAMuvB,QACf0rB,EAASj7C,EAAMwyB,QAEf0oB,EAAUH,EAAU9nD,wBACpBkoD,EAAUD,EAAQr0D,KAClBu0D,EAASF,EAAQhpD,IACjBmpD,EAAWH,EAAQp0D,MACnBw0D,EAAYJ,EAAQ/oD;AAE1B,OAAO6oD,GAAUG,GAAWH,GAAUK,GAAYJ,GAAUG,GAAUH,GAAUK,EgIhpBjDC,CAAqBjsB,EAAGorB,EAAQ91D,MAAOmrD,cAE5DhpB,EAASniC,OAAQ,EACjB6iD,GAAQwN,kBAET,OA0BPntC,EAAKA,MAACif,GAAU55B,IACVA,GACFs6C,GAAQ/9B,WACRha,SAASqF,iBAAiB,UAAW6lD,EAAW,CAAEz5B,MAAM,MAExDsmB,GAAQ79B,aACRla,SAASoF,oBAAoB,UAAW8lD;AAgD5C,MAAM9O,EAAiBl+C,YAAS,IAC9B0yB,aAAW,CACT,gBAAiB,OACjB,gBAAiB76B,OAAOshC,EAASniC,OACjC,YAAawkB,EAAGxkB,MAChB4gD,UAAWsV,GACV52D,EAAM4nD;AAmCX,OAhCA1qC,IAAU,KACR,MAAMo6C,EAAejE,GAAS34C,YAAY1a;AAE1C,OAAA2d,EAAAC,YAAAy1C,GAAAt1C,aAAA,CAAA/F,IAEUw+C,EAAOtxC,GACRA,EAAGxkB,MAAKiX,MACN,CACL,SACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OACTooD,EAAY,CAAA30B,WACPE,EAASniC,MAAK,sBAAA60C,GAAd1S,EAASniC,MAAK60C,EAAA9wB,UAAA,EAAAmjC,eAEPA,EAAelnD,MAAK,kBACnBk0D,EAActT,UACpBA,GACPwQ,GAAO,CAGV9J,UAAW5sC,EAAM4sC,UACjBvwC,QAAS,WAAA,IAAA,IAAAyV,EAAAnsB,UAAAxB,OAAIkL,EAAI9J,IAAAA,MAAAusB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1iB,EAAI0iB,GAAApsB,UAAAosB;AAAA,OAAAxP,EAAAA,YAAAoc,GAAA,CAAAnhB,KAAA,SAAA,CAAAnB,QAAAA,IAEX2D,CAAAA,EAAM3D,aAAahN,YAQ1BwrD,GAAY,CAAE/wC,GAAAA,EAAIqyC,cAAed,GAAgBD,MC5L/CgB,GAAoBngD,GAAa,CAC5CoO,OAAQnB,QACR7L,SAAU6L,QACV7e,IAAK,CAAChE,OAAQF,QACdb,MAAO,CACL4G,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,MAGRC,QACAmd,GAAoB,CACrB/N,WAAY,CAAE3e,UAAWuxB,OAE1B,YAYU+9B,GAAW58C,IAAAA,CAAkC,CACxDzQ,KAAM,WAENstD,YAAY,EAEZ13D,MAAOw3D,KAEPh9C,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMyd,EAAUriB,EAAAA,UAAS,IAChB1J,EAAMyF,IAAO,GAAEzF,EAAMU,WAAWV,EAAMyF,MAAQlE,OAAOvB,EAAMU;AA6BpE,OA1BAwc,IAAU,IAAAS,EAAAC,YAAAse,GAAA,CAAApV,WACsB9mB,EAAM8mB,YAAU,CAAArP,QAAAA,IAAAmpB,CAAAA,iBAAAjjB,EAAAA,YAAA,MAAA,CAAAhG,MAGnC,CACL,YACA,CACE,aAAc3X,EAAMyF,MAAQzF,EAAMyY,UAChC3I,WAAW9P,EAAMU,OAASoP,WAAW9P,EAAMyF,MAE/CzF,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAEjBkM,EAAM3D,QACJ2D,EAAM3D,QAAQ,CACdsU,QAASA,EAAQrrB,MACjB+E,IAAKzF,EAAMyF,IACX/E,MAAOV,EAAMU,QAEbqrB,EAAQrrB,UAAK0iD,EAAAA,MAjBRpjD,EAAMylB,eAuBd,MCvEEkyC,GAAuBtgD,GAAa,CAC/CsqB,SAAUrd,WAEP5M,MACF,eAEUkgD,GAAc/8C,IAAAA,CAAmB,CAC5CzQ,KAAM,cAENpK,MAAO23D,KAEPn9C,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAcrB,OAbA4O,IAAU,IAAAS,EAAAC,YAAAq1B,GAAA,CAAAt7B,MAEC,CACL,gBACA,CAAE,0BAA2B3X,EAAM2hC,UACnC3hC,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAK,cACLlP,EAAM2hC,eAAYniC,GACtB4b,KAIP,MCMLspB,GAAkB,CAAC,aAAc,WAAY,SAAU,OAAQ,gBAAiB,cAAe,SAexFmzB,GAAkBxgD,GAAa,CAC1CygD,gBAAiB16C,GACjBwrB,QAASrnC,OACTw2D,UAAWzzC,QACX0zC,UAAW,CACT1wD,KAAM8V,GACN3F,QAAS,UAEXgO,OAAQnB,QACR+zB,YAAa,CACX/wC,KAAMgd,QACN7M,aAASjY,GAEXyU,MAAO1S,OACP0jC,UAAW1jC,OACX02D,MAAO3zC,QACP7L,SAAU,CACRnR,KAAMgd,QACN7M,QAAS,MAEX4H,MAAOiF,QACP7c,KAAM6c,QACNyvB,MAAOxyC,OACP22D,gBAAiB5zC,QACjB6zC,iBAAkB/6C,GAClBmtB,QAASjmB,QACT8zC,WAAY9zC,QACZlD,QAAS,CACP9Z,KAAM/F,OACNkW,QAAS,SACTwkB,UAAYh7B,GAAWyjC,GAAgB3+B,SAAS9E,IAGlD,gBAAiBgJ,IACjB,sBAAuBA,IACvB,uBAAwBA,OAErByN,QACA+zB,QACA5P,QACAxK,MACF,UAWUgnC,GAASx9C,IAAAA,CAM2B,CAC/CzQ,KAAM,SAEN0T,cAAc,EAEd9d,MAAO,CACLklB,GAAI3jB,UAEDy0C,QACA6hB,MAGL15B,MAAO,CACL,iBAAmB8X,IAAqB,EACxC,oBAAsBv1C,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKmkB,KAAEA,EAAI/N,MAAEA,GAAO9M;AAClC,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChC2rC,cAAEA,GAAkBD,GAAU1rC,IAC9Bm2C,aAAEA,EAAY5B,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,IACpDy1C,UAAEA,GAAcD,GAAax1C,IAC7Bg8B,eAAEA,GAAmBD,GAAW/7B,IAChC6wB,WAAEA,GAAeM,KAEjB0R,EAAWn5B,EAAAA,UAAS,IAAM1J,EAAMi4D,OAASj4D,EAAMylB,SAC/C6yC,EAAW5uD,EAAAA,UAAS,MAAO1J,EAAMo4D,aAAiBp4D,EAAM+zC,QAAS34B,EAAM24B,SAEvE13B,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,SAAQ7I,MACzCu8B,EAAalvC,EAAAA,UAAS,IAAO,GAAEwb,EAAGxkB,mBAElC63D,EAAWvgD,EAAAA,MACXwgD,EAAmBxgD,EAAAA,MACnBygD,EAAazgD,EAAAA,MACb0gD,EAAsBhvD,YAAS,IAAM,CAAC,QAAS,cAAc3D,SAAS/F,EAAMohB,YAE5Eua,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,aACpFw7B,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAa5xB,EAAAA,UAAS,IAC3D1J,EAAMqf,OAASrf,EAAMyY,cAAWjZ,EACnCqjC,EAASniC,OAAS6zC,EAAU7zC,MAAQV,EAAMiU,MAC1CjU,EAAMilC;AAGZrhB,EAAKA,MAACif,GAAU55B,IACd,GAAIqvD,EAAS53D,MAAO,CAClB,MAAMkB,EAAkB22D,EAAS73D,MAAOmB,IAClCgiC,EAAwB20B,EAAiB93D,MAAOmB;AAEtD60B,uBAAsB,KACpB,MAAMznB,EAAOD,GAAkBpN,GACzB+2D,EAAa90B,EAAS90B,wBAEtBR,EAAIoqD,EAAWpqD,EAAIU,EAAKV,EACxBC,EAAImqD,EAAWnqD,EAAIS,EAAKT,GAAKS,EAAKP,OAAS,EAAIiqD,EAAWjqD,OAAS,GAEnEkqD,EAAcD,EAAWlqD,MAAQ,IACjCA,EAAQ/I,KAAKe,IAAImyD,EAAc3pD,EAAKR,OAAS,EAC/C,CAAEyrB,SAAU/4B,EAAcy3D,SAC1Bp5D,EAEE0P,EAAQC,iBAAiBvN,GACzBi3D,EAAc1pD,iBAAiB00B,GAC/BrM,EAAkD,IAAvC1nB,WAAWZ,EAAM4pD,qBAA8B,IAC1D9qB,EAAQl+B,WAAW+oD,EAAYvgC,iBAAiB,0BAChDrkB,EAAQ4kD,EAAYvgC,iBAAiB;AAE3C12B,EAAGsN,MAAMioB,WAAa,UACtB0M,EAAS30B,MAAMioB,WAAa,SAE5BjnB,GAAQtO,EAAI,CACVyN,UAAY,aAAYd,QAAQC,cAAcw/B,KAC9C/5B,MAAAA,KACGxF,GACF,CACD+oB,SAAAA,EACAC,OAAQhc,GACRi9B,UAAWzvC,EAAM,SAAW,YAC3BmH,SAASunB,MAAK,KACf/1B,EAAGsN,MAAM0oB,eAAe,cACxBiM,EAAS30B,MAAM0oB,eAAe,uBAInC,CAAEhuB,MAAO;AAEZ,MAAMivC,EAAYnvC,EAAAA,UAA2B,KAAO,CAClDm5B,SAAAA,EACA0R,UAAAA,EACAkkB,WAAAA,EACAriB,KAAAA,EACAtqC,MAAAA;AAGF,SAASu8B,EAAS+C,GACZA,EAAEvkC,SAAW2E,SAASC,eACxB2/B,EAAEoW,iBAIN,SAASuX,EAAgB3tB,GACT,UAAVA,EAAE5nC,KAA6B,MAAV4nC,EAAE5nC,MAE3B4nC,EAAEoW,iBACFpW,EAAEyJ,kBAEF70C,EAAM,mBAAmB,IAAIg5D,WAAW,WAyL1C,OAtLA97C,IAAU,KACR,MAAM+7C,EAA+B,aAAlBj5D,EAAMohB,QACnBywB,KAAgBz2B,EAAM,mBAAoBpb,EAAMm4D,kBAChDe,KAAcl5D,EAAM+3D,YAAa38C,EAAM6D,OACvC6yB,KAAe12B,EAAM,iBAAmBpb,EAAM83D,iBAAmBoB,GACjEnlB,EAAQA,IACZ34B,EAAM24B,MACF34B,EAAM24B,MAAM,IACT8E,EAAUn4C,MACbqzC,MAAO/zC,EAAM+zC,MACb/zC,MAAO,CAAE8X,IAAKoN,EAAGxkB,SAEjBV,EAAM+zC;AAGZ,OAAAp2B,EAAAC,kBAAAG,aAAA,CAAApG,MAEW,CACL,UACA,CACE,kBAAmBkrB,EAASniC,MAC5B,oBAAqBoxC,EACrB,wBAAyB9xC,EAAMq4C,cAAgBqgB,EAAoBh4D,MACnE,oBAAqBV,EAAMyY,SAC3B,iBAAkBzY,EAAMi4D,MACxB,iBAAkBj4D,EAAMqf,MACxB,gBAAiBrf,EAAMyH,KACvB,4BAA6BzH,EAAM4oC,QACnC,4BAA6B5oC,EAAMk4D,gBACnC,qBAAsBrmB,EACtB,mBAAoB7xC,EAAMuqC,QAC1B,uBAAwBvqC,EAAMo4D,WAC9B,qBAAsBrkB,IACtB,CAAE,oBAAmB/zC,EAAMohB,YAAY,GAEzC0R,EAAapyB,MACbi7B,EAAuBj7B,MACvBy1C,EAAaz1C,MACbirC,EAAcjrC,MACds7B,EAAet7B,MACfmwB,EAAWnwB,MACXV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtBV,EAAMkP,OACPm5B,QACSA,GACLrjC,IAAK2Y,EAAAC,YAAA,MAAA,CAAAjG,MAAA,oBAAAgG,MAAAA,EAAAC,YAAAguB,GAAA,CAAAxhC,KAAA,UAAAqb,SAMGzlB,EAAMugB,QAAOtM,MAChBjU,EAAMqf,MAAQ,QAAoC,iBAAlBrf,EAAMugB,QAAuBvgB,EAAMugB,QAAUvgB,EAAMiU,OAClF,CAAEwD,QAAS2D,EAAM42B,SAG1BH,GAAUl0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,UAAAmU,MAAA,0BAAA,CAEN3X,EAAMm4D,kBAAgBx6C,EAAAA,YAAA83B,EAAA,CAAAjyC,IAAA,eAAA4G,KAAA,gBAAA,MAItBgR,EAAM,mBAAmBy9B,EAAUn4C,SAExCid,EAAAC,YAAA,MAAA,CAAAjG,MAAA,iBAAA,oBAAA,IAGE,CAAA,CAAC,SAAU,OAAQ,gBAAiB,eAAe5R,SAAS/F,EAAMohB,UAAYk3C,EAAS53D,OAAKid,EAAAA,YAAAi6C,GAAA,CAAAp0D,IAAA,iBAAAwU,IAGnFwgD,EAAgB7gD,MACf,CAAC6jB,EAAiB96B,OAAMihC,UAAA,EAAA7pB,IAEzBoN,EAAGxkB,MAAKwO,MACNusB,EAAgB/6B,OAAK,CAAA+W,QAAAA,IAE3Bs8B,CAAAA,OAELp2B,EAAAC,YAAAg6C,GAAA,CAAA5/C,IAEkBugD,EAAQzgD,IAASoN,EAAGxkB,OAAK,CAAA+W,QAAAA,IACxCs8B,CAAAA,OAGF34B,EAAM3D,UAAU,IACbohC,EAAUn4C,MACbV,MAAO,CACLklB,GAAIA,EAAGxkB,MACPiX,MAAO,iBACP,mBAAoBihC,EAAWl4C,OAEjCoL,MAAAA,EACAsqC,KAAAA,MAIF8iB,GAAQv7C,EAAAA,YAAAkc,GAAA,CAAAr2B,IAAA,SAAA,CAAAiU,QAAAA,IAAAmpB,CAAAA,iBAAAjjB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,qBAAAuqC,YAKW9W,IACbA,EAAEoW,iBACFpW,EAAEyJ,oBACHl3B,CAAAA,EAAAC,YAAAmc,GAAA,CAAAziB,SAGS,CACRowB,MAAO,CACLnqB,KAAMvd,EAAMg4D,aAEf,CAAAvgD,QAAAA,IAAA,CAEC2D,EAAM6D,MACJ7D,EAAM6D,MAAM,IACT45B,EAAUn4C,MACbV,MAAO,CACLshD,UAAWyX,EACXrkB,QAAS5oC,EACT6oC,OAAQyB,EACR/N,QAASroC,EAAM,oBAEjB2d,EAAAC,YAAA63B,EAAA,CAAArrC,KAAA,QAAAk3C,UAIcyX,EAAcrkB,QAChB5oC,EAAK6oC,OACNyB,GAEZ,WAAA,CAAA,CAAAgN,EAAAA,MA9BMpjD,EAAMi4D,YAoCnBnmB,GAASn0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,SAAAmU,MAAA,yBAAA,CAELyD,EAAM,kBAAkBy9B,EAAUn4C,OAElCV,EAAM83D,iBAAen6C,EAAAC,YAAA63B,EAAA,CAAAjyC,IAAA,cAAA4G,KAAA,eAEtB,QAEJuT,EAAAA,YAAA,MAAA,CAAAhG,MAGQ,CACL,mBACA6jB,EAAiB96B,OAClBwO,MACOusB,EAAgB/6B,OAAK,CAE3Bu4D,GAAUt7C,cAAA6W,EAAAA,eAAA7W,EAAAC,YAAA,MAAA,CAAAjG,MAAA,2BAAA,MAIN2gD,EAAS53D,OAAKid,EAAAA,YAAA,MAAA,CAAAhG,MAAA,2BAAAgG,CAAAA,EAAAC,YAAAg6C,GAAA,CAAA5/C,IAEOwgD,EAAgB72B,UAAA,EAAA7pB,IAAkBoN,EAAGxkB,OAAK,CAAA+W,QAAAA,IACzDs8B,CAAAA,SAGPp2B,EAAAC,YAAA,MAAA,CAAAjG,MAAA,yBAIJ,QAEC+gD,EAAoBh4D,OAAS43D,EAAS53D,OAAKid,EAAAC,YAAAg6C,GAAA,CAAA5/C,IACxBwgD,EAAgB72B,UAAA,EAAA7pB,IAAkBoN,EAAGxkB,OAAK,CAAA+W,QAAAA,IACzDs8B,CAAAA,cAQP,CACL0kB,WAAAA;AAQC,SAASU,GAAkBn0D,GAEhC,OAAOtB,EAAKsB,EADCjF,OAAOE,KAAKo4D,GAAOr4D,OAAO6Z,QAAO3Y,IAAM0D,EAAK1D,IAAY,UAANA,GAAuB,UAANA,KCpYlF,MAAMk4D,GAAc,CAAC,QAAS,OAAQ,OAAQ,OAAQ,iBAAkB,OAAQ,SAEnEC,GAAsBhiD,GAAa,CAC9CiiD,UAAWh1C,QACXyH,QAAS,CAACzH,QAAS7iB,OAAQF,QAC3Bg4D,aAAc,CAAC93D,OAAQyI,UACvB1D,OAAQjF,OACR+pB,YAAa/pB,OACbi4D,sBAAuBl1C,QACvBm1C,kBAAmBn1C,QACnB3I,OAAQpa,OACR2c,KAAM3c,OACN+F,KAAM,CACJA,KAAM/F,OACNkW,QAAS,QAEXiiD,eAAgB35D,UAEbq4C,QACAyf,MACF,cAOUh2C,GAAahH,IAAAA,CAAoC,CAC5DzQ,KAAM,aAEN6zB,WAAY,CAAEtB,UAAAA,IAEd7e,cAAc,EAEd9d,MAAOq5D,KAEPl7B,MAAO,CACL,gBAAkBiN,IAAkB,EACpC,oBAAsBA,IAAkB,EACxC,iBAAmB6K,IAAqB,EACxC,oBAAsBhtC,IAAgB,GAGxCuR,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKmkB,KAAEA,EAAI/N,MAAEA,GAAO9M;AAClC,MAAMya,EAAQR,GAAgBvoB,EAAO,eAC/Bu0C,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,GACtCu5D,EAAe7vD,EAAAA,UAAS,IACS,mBAAvB1J,EAAMu5D,aAA8Bv5D,EAAMu5D,aAAaxwC,EAAMroB,OACzC,iBAAvBV,EAAMu5D,aAA4Bv5D,EAAMu5D,cAC9CxwC,EAAMroB,OAAS,IAAImF,WAAWtG,SAE/BkG,EAAMiE,EAAAA,UAAS,IACf1E,EAAM20D,UAAkB30D,EAAM20D,WAG/B35D,EAAM+rB,SACmB,iBAAlB/rB,EAAM+rB,SACW,iBAAlB/rB,EAAM+rB,aAHf,EAMO/rB,EAAM+rB,UAGT2sC,EAAsBhvD,YAAS,IAAM,CAAC,QAAS,cAAc3D,SAAS/F,EAAMohB;AAElF,SAASw4C,EACP98B,EACA1iB,GAEKpa,EAAMs5D,WAAcx8B,GAExB1iB,EAAQ,GAAGvT,QAA6BiF,UAG3C,MAAM+tD,EAAY7hD,EAAAA,MACZ8hD,EAAY9hD,EAAAA,MACZ+hD,EAAW/hD,EAAAA,MACX6qB,EAAWn5B,EAAQA,UAAC,IACxB0vD,GAAYrzD,SAAS/F,EAAMsH,OAC3BtH,EAAMw5D,uBACNjlB,EAAU7zC,OACVV,EAAMylB;AAER,SAASivB,IACHqlB,EAASr5D,QAAU8K,SAASC,eAC9BsuD,EAASr5D,OAAOoL,QAGbyoC,EAAU7zC,OAAOoL,IAExB,SAASkuD,EAAoB5uB,GAC3BjiB,EAAK,oBAAqBiiB,GAEtBA,EAAEvkC,SAAWkzD,EAASr5D,QAE1Bg0C,IACAtJ,EAAEoW,kBAEJ,SAASyY,EAAgB7uB,GACvBsJ,IAEAvrB,EAAK,gBAAiBiiB,GAExB,SAAS8uB,EAAS9uB,GAChBA,EAAEyJ,kBAEFH,IAEA7vB,EAAAA,UAAS,KACPkE,EAAMroB,MAAQ,KAEd4J,EAAUtK,EAAM,iBAAkBorC,MAGtC,SAAS0J,EAAS1J,GAChB,MAAMxpC,EAAKwpC,EAAEvkC;AAEb,GADAkiB,EAAMroB,MAAQkB,EAAGlB,MAEfV,EAAM05D,gBAAgB5zD,MACtB,CAAC,OAAQ,SAAU,WAAY,MAAO,OAAOC,SAAS/F,EAAMsH,MAC5D,CACA,MAAM6yD,EAAgB,CAACv4D,EAAGw4D,eAAgBx4D,EAAGy4D;AAC7Cx1C,EAAAA,UAAS,KACPjjB,EAAGw4D,eAAiBD,EAAc,GAClCv4D,EAAGy4D,aAAeF,EAAc,OA4ItC,OAvIAj9C,IAAU,KACR,MAAMo9C,KAAgBl/C,EAAM2Q,UAA8B,IAAlB/rB,EAAM+rB,SAAsC,MAAjB/rB,EAAM+rB,SACnEgtB,KAAgBuhB,IAAcl/C,EAAM49B,UACnC7zC,EAAWC,GAAcL,EAAiBC,IACzC29B,WAAYtG,KAAM8c,GAAeR,GAAOj+B,YAAY1a,GACtDu6D,EAAapB,GAAiBn5D;AAEpC,OAAA2d,EAAAC,YAAA+6B,GAAA56B,aAAA,CAAA/F,IAEU6hD,EAASl3B,WACL5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA59B,MACd,CACL,eACA,CACE,yBAA0B3X,EAAMwG,OAChC,yBAA0BxG,EAAM2b,OAChC,4BAA6B+8C,EAAoBh4D,OAEnDV,EAAM2X,OACPzI,MACOlP,EAAMkP,OACT/J,EACAg0C,EAAU,CAAAd,aACAqgB,EAAoBh4D,MAAKu1C,QAC9B1B,EAAU7zC,QAAK,IAGpB0a,EACH3D,QAASzB,IAAA,IAACkP,GACRA,EAAE2M,WACFA,EAAUulB,QACVA,EAAOC,WACPA,EAAUG,QACVA,GACDxhC;AAAA,OAAA2H,EAAAC,YAAAy6C,GAAAt6C,aAAA,CAAA/F,IAES8hD,EAAS5X,YACD8X,EAAkB3xB,QACtB4xB,EAAc,gBACRC,EAAO,uBACAl6D,EAAM,wBAAuB,sBAC9BA,EAAM,uBAAsBke,KAC3Cle,EAAMke,MACRq8C,EAAU,CAAAr1C,GACVA,EAAGxkB,MAAK+kB,OACJod,EAASniC,OAAS02C,EAAQ12C,MAAKu3D,MAChC7gB,EAAQ12C,OAASV,EAAMi4D,MAAKx/C,SACzBoZ,EAAWnxB,MAAKu1C,QACjB1B,EAAU7zC,MAAK2e,OACC,IAAlBm4B,EAAQ92C,QAAe,IAG1B0a,EACH3D,QAAS8sC,IAEH,IADJvkD,OAAS2X,MAAO6iD,KAAe3hB,IAChC0L;AACC,MAAMvP,EAASpU,EAAAT,eAAAxiB,sBAAAI,EAAAA,WAAA,CAAA/F,IAEL+hD,EAAQr5D,MACNqoB,EAAMroB,MAAKo0C,QACTA,EAAOwkB,UAILt5D,EAAMs5D,UAASpsD,SAChBmqC,EAAW32C,MAAK+X,SAChBoZ,EAAWnxB,MAAK0J,KACpBpK,EAAMoK,KAAIkhB,YACHtrB,EAAMsrB,YAAWziB,KACxB,EAACvB,KACDtH,EAAMsH,KAAIotC,QACPA,EAAOC,OACRyB,GACJyC,EACAzzC,GAAU,MAAA,CAAA,CAAAy7B,EAAAA,iBAbD,aAAA,CACZt2B,QAASqvD,GACR,KAAI,CAAA38B,MAAA;AAeX,OAAAtf,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAEMx0B,EAAMwG,QAAMmX,EAAAC,YAAA,OAAA,CAAAjG,MAAA,wBAAA,CAAAgG,EAAAC,YAAA,OAAA,CAAAjG,MAAA,8BAGN3X,CAAAA,EAAMwG,WAKZ4U,EAAM3D,QAAOkG,EAAAC,YAAA,MAAA,CAAAjG,MAEH6iD,EAAU,oBAAA,IAGhBp/C,CAAAA,EAAM3D,UACNu9B,IAEFylB,EAAUA,WAACzlB,EAAW,CAAEr9B,MAAO6iD,IAEjCx6D,EAAM2b,QAAMgC,EAAAA,YAAA,OAAA,CAAAhG,MAAA,wBAAA,CAAAgG,EAAAC,YAAA,OAAA,CAAAjG,MAAA,8BAGN3X,CAAAA,EAAM2b,iBAU1Bq9B,QAASD,EAAaF,GAASl7B,cAAA6W,EAAAA,SAAA,KAAA,CAEzBpZ,EAAM49B,UAAUH,GAEhByhB,GAAU38C,cAAA6W,EAAAA,SAAA,KAAA,CAAA7W,EAAAC,YAAA,OAAA,KAAA,MAAAD,EAAAC,YAAA65C,GAAA,CAAAhyC,OAKGzlB,EAAMy5D,mBAAqBllB,EAAU7zC,MAAKA,MAC3C64D,EAAa74D,MAAK+E,IACpBA,EAAI/E,MAAK+X,SACJzY,EAAMyY,UACC2C,EAAM2Q,kBAK9BvsB,OAMLy2D,GAAY,GAAI4D,EAAWC,EAAWC,MCvRpCW,GAA8BrjD,GAAa,CACtDsjD,WAAYr2C,WAET5M,MACF,sBAEUkjD,GAAqB//C,IAAAA,CASe,CAC/CzQ,KAAM,qBAEN0T,cAAc,EAEd9d,MAAO06D,KAEPv8B,MAAO,CACL,gBAAkBzvB,IAAmB,GAGvC8L,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKmkB,KAAEA,EAAI/N,MAAEA,GAAO9M;AAClC,MAAMgV,UAAEA,EAASC,YAAEA,GAAgBJ,QAAkB3jB,EAAW;AAEhEokB,EAAAA,OAAM,IAAML,EAAY7iB,OAAOgO,SAAQA,IACvB,MAAVA,GAAgBya,EAAK,gBAAiBza,MAG5CwO,IAAU,IAAMld,EAAM26D,WAAUh9C,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAE1BpZ,EAAM3D,UAAU,CAAEojD,QAASv3C,MAAY3F,cAAA,MAAAI,EAAAA,WAAA,CAAA/F,IAInCsL,EAAS3L,MACR,CACL,yBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OACTlK,IAEFoW,EAAM3D,mBCpCJqjD,GAAmBzjD,GAAa,CAC3C0jD,WAAY,CACVzzD,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,MAEX/I,OAAQ,CAACjN,OAAQF,SAChB;AAEI,SAASy5D,GAAgBh7D,EAAqBwmB,GACnD,MAAM01B,EAAUD,KAEV8e,EAAa9tD,aAAW;AAC9BtD,EAAAA,aAAY,KACVoxD,EAAWr6D,MAAQoP,WAAW9P,EAAM+6D,YAAc;AAGpD,MAAMhkD,EAAQ9J,aAAW,GACnB3N,EAAO2N,aAAWvH,KAAKooD,MAK1B34C,SAASnV,EAAM0O,SAAYwtC,EAAQxtC,OAAOhO,QAAUq6D,EAAWr6D,OAAS,MACtE,GACCu6D,EAAahuD,aAAW,GACxB2tB,EAAgB3tB,aAAW,GAG3B0yC,EAAe3nC,EAAAA,MAGfkjD,EAAYljD,EAAAA;AAElB,IAAImjD,EAAe;AAEnB,MAAM73C,UAAEA,EAASC,YAAEA,GAAgBJ;AACnCxZ,EAAAA,aAAY,KACV2Z,EAAU5iB,MAAQi/C,EAAaj/C;AAEjC,MAAM06D,EAAiB1xD,EAAAA,UAAS,IACvBi2C,EAAaj/C,QAAU8K,SAASygD,gBACnC/P,EAAQxtC,OAAOhO,MACf6iB,EAAY7iB,OAAOgO,QAAUyG,SAASnV,EAAM0O,SAAY,IAGxD2sD,EAAmB3xD,EAAAA,UAAS,OACtBi2C,EAAaj/C,OAASw6D,EAAUx6D,OAAS06D,EAAe16D,OAASq6D,EAAWr6D;AAGxF,IAAIi9B,EAAQh9B,MAAMK,KAAoB,CAAEzB,OAAQinB,EAAM9lB,MAAMnB,SACxD+7D,EAAU36D,MAAMK,KAAa,CAAEzB,OAAQinB,EAAM9lB,MAAMnB;AACvD,MAAMg8D,EAAatuD,aAAW;AAC9B,IAAIuuD,GAAqB;AAEzB,SAASC,EAAStlD,GAChB,OAAOwnB,EAAMxnB,IAAU4kD,EAAWr6D,MAGpC,MAAMg7D,EtIgUD,SAAmB5uD,EAAcqiC,GACtC,IAAIsgB,EAAY;AAChB,MAAMkM,EAAO,WAAoB,IAAA,IAAAzuC,EAAAnsB,UAAAxB,OAAhBkL,EAAI9J,IAAAA,MAAAusB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1iB,EAAI0iB,GAAApsB,UAAAosB;AACnBwS,aAAa8vB,GACbA,EAAYzwB,YAAW,IAAMlyB,KAAMrC,IAAO+N,EAAKA,MAAC22B;AAMlD,OAJAwsB,EAAK18C,MAAQ,KACX0gB,aAAa8vB,IAEfkM,EAAKtzC,UAAYvb,EACV6uD,EsI1UeC,EAAS,KAC7B,MAAM96D,EAAQguC,YAAYC;AAC1BusB,EAAQ,GAAK;AACb,MAAM/7D,EAASinB,EAAM9lB,MAAMnB;AAC3B,IAAK,IAAIE,EAAI,EAAGA,GAAKF,EAAS,EAAGE,IAC/B67D,EAAQ77D,IAAM67D,EAAQ77D,EAAI,IAAM,GAAKg8D,EAAQh8D,EAAI;AAEnD87D,EAAW76D,MAAQgF,KAAKD,IAAI81D,EAAW76D,MAAOouC,YAAYC,MAAQjuC,KACjEy6D,GAEGpjB,EAAUv0B,EAAAA,MAAMy3C,GAAkBp6D,IACjCA,IAILk3C,IACAgjB,EAAeD,EAAUx6D,MAAO60B,UAChCmmC,EAAcrzC,YACdwzC,KAEML,GAEN32C,EAAAA,UAAS,KACPlmB,GAAcC,OAAO83B,uBAAsB,KACzColC,EAAcN,GACdA,GAAqB;AAqB3B,SAASO,EAAiB5lD,GAExB,OADAA,EAAQ5Q,EAAM4Q,EAAO,EAAGqQ,EAAM9lB,MAAMnB,OAAS,GACtC+7D,EAAQnlD,IAAU,EAG3B,SAAS6lD,EAAgBj4B,GACvB,OA+HJ,SAAwBj6B,EAAwBb,GAC9C,IAAIgzD,EAAOnyD,EAAIvK,OAAS,EACpB28D,EAAM,EACNC,EAAM,EACN37D,EAAO,KACPqG,GAAU;AAEd,GAAIiD,EAAImyD,GAAShzD,EACf,OAAOgzD;AAGT,KAAOC,GAAOD,GAIZ,GAHAE,EAAOD,EAAMD,GAAS,EACtBz7D,EAAOsJ,EAAIqyD,GAEP37D,EAAOyI,EACTgzD,EAAOE,EAAM;IACR,CAAA,KAAI37D,EAAOyI,GAGX,OAAIzI,IAASyI,EACXkzD,EAEAD;AALPr1D,EAASs1D,EACTD,EAAMC,EAAM,EAQhB,OAAOt1D,EA1JEu1D,CAAcd,EAASv3B,GAtBhCzb,EAAAA,gBAAe,KACbozC,EAAcz8C;AAwBhB,IAAIo9C,EAAgB,EAChBC,EAAiB,EACjBC,EAAiB;AAErB34C,EAAAA,MAAMw3C,GAAgB,CAACnyD,EAAKq2B,KACtBA,IACFu8B,IACI5yD,EAAMq2B,GACR5I,uBAAsB,KACpB4lC,EAAiB,EACjBT;AAqCR,IAAI5N,GAAO;AACX,SAAS4N,IACP3b,qBAAqB+N,GACrBA,EAAMv3B,sBAAsB8lC,GAE9B,SAASA,IACP,IAAK7c,EAAaj/C,QAAU06D,EAAe16D,MAAO;AAClD,MAAMqjC,EAAYs4B,EAAgBlB,EAC5BziB,EAAYhzC,KAAK+2D,KAAKH,GAGtBx7D,EAAQyE,EAAMy2D,EADJt2D,KAAKD,IAAI,EAAGs+B,EAjLd,MAkL+B,EAAGvd,EAAM9lB,MAAMnB,QAGtDsD,EAAM0C,EAAMy2D,EADJj4B,EAAYq3B,EAAe16D,MApL3B,KAqL4B,EAAGI,EAAQ,EAAG0lB,EAAM9lB,MAAMnB;AAEpE,KA3LO,IA8LJm5C,GAAoB53C,EAAQiW,EAAMrW,SA7L5B,IA8LNg4C,GAAsB71C,EAAMvD,EAAKoB,OAClC,CACA,MAAMg8D,EAAcX,EAAgBhlD,EAAMrW,OAASq7D,EAAgBj7D,GAC7D67D,EAAiBZ,EAAgBl5D,GAAOk5D,EAAgBz8D,EAAKoB;AAC5CgF,KAAKD,IAAIi3D,EAAaC,GA/LjC,KAkMV5lD,EAAMrW,MAAQI,EACdxB,EAAKoB,MAAQmC,IAGT/B,GAAS,IAAGiW,EAAMrW,MAAQI,GAC1B+B,GAAO2jB,EAAM9lB,MAAMnB,SAAQD,EAAKoB,MAAQmC,IAIhDo4D,EAAWv6D,MAAQq7D,EAAgBhlD,EAAMrW,OACzCk6B,EAAcl6B,MAAQq7D,EAAgBv1C,EAAM9lB,MAAMnB,QAAUw8D,EAAgBz8D,EAAKoB,OAGnF,SAASo7D,EAAe3lD,GACtB,MAAMqgB,EAASulC,EAAgB5lD;CAC1BwpC,EAAaj/C,OAAUyV,IAAUqgB,EACpCglC,EAAoBrlD,EAEpBwpC,EAAaj/C,MAAMqjC,UAAYvN,EAInC,MAAMomC,EAAgBlzD,EAAAA,UAAS,IACtB8c,EAAM9lB,MAAM0I,MAAM2N,EAAMrW,MAAOpB,EAAKoB,OAAO0G,KAAI,CAAC5G,EAAM2V,KAAW,CACtEqzC,IAAKhpD,EACL2V,MAAOA,EAAQY,EAAMrW;AAWzB,OAPAkjB,EAAKA,MAAC4C,GAAO,KACXmX,EAAQh9B,MAAMK,KAAK,CAAEzB,OAAQinB,EAAM9lB,MAAMnB,SACzC+7D,EAAU36D,MAAMK,KAAK,CAAEzB,OAAQinB,EAAM9lB,MAAMnB,SAC3Cm8D,EAAcrzC,YACdwzC,MACC,CAAEgB,MAAM,IAEJ,CACLld,aAAAA,EACAub,UAAAA,EACA0B,cAAAA,EACA3B,WAAAA,EACArgC,cAAAA,EACAkhC,cAAAA,EACAgB,aArGF,WACE,IAAKnd,EAAaj/C,QAAUw6D,EAAUx6D,MAAO;AAE7C,MAAMqjC,EAAY4b,EAAaj/C,MAAMqjC,UAC/Bg5B,EAAajuB,YAAYC;AACVguB,EAAaR,EAEf,KACjBD,EAAiB52D,KAAK+2D,KAAK14B,EAAYs4B,GAIvClB,EAAeD,EAAUx6D,MAAM60B,WAE/B+mC,EAAiBv4B,EAAYs4B,EAG/BA,EAAgBt4B,EAChBw4B,EAAiBQ,EAEjBlB,KAkFAmB,gBAhFF,WACOrd,EAAaj/C,OAAUw6D,EAAUx6D,QAEtC47D,EAAiB,EACjBC,EAAiB,EAEjBV,MA2EAoB,iBA5IF,SAA2B9mD,EAAezH,GACxC,MAAMwuD,EAAav/B,EAAMxnB,GACnBgnD,EAAgBpC,EAAWr6D;AAEjCq6D,EAAWr6D,MAAQy8D,EAAgBz3D,KAAKF,IAAIu1D,EAAWr6D,MAAOgO,GAAUA,EAEpEwuD,IAAexuD,GAAUyuD,IAAkBpC,EAAWr6D,QACxDi9B,EAAMxnB,GAASzH,EACfgtD,OC1FC,MAAM0B,GAA0B/lD,GAAa,CAClDmP,MAAO,CACLlf,KAAM3G,MACN8W,QAASA,IAAO,IAElBkjD,WAAYr2C,WAETw2C,QACApjD,QACAsiB,MACF,kBAEUqjC,GAAiBxiD,IAAAA,CAUmB,CAC/CzQ,KAAM,iBAENpK,MAAOo9D,KAEP5iD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM8K,EAAKC,GAAmB,mBACxBihB,gBAAEA,GAAoBD,GAAar6B,IACnC2/C,aACJA,EAAYub,UACZA,EAAS4B,aACTA,EAAYE,gBACZA,EAAeC,iBACfA,EAAgBnB,cAChBA,EAAab,WACbA,EAAUrgC,cACVA,EAAagiC,cACbA,GACE5B,GAAWh7D,EAAOs+B,EAAAA,MAAMt+B,EAAO;AAmEnC,OAjEAgoB,IAAe,IAAMhoB,EAAM26D,aAAY,KACrC,SAAS2C,IAA8B,IAAbvsD,EAAGhQ,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,IAAAA,UAAA;AAC3B,MAAMw8D,EAASxsD,EAAM,mBAAqB;AAEtC4uC,EAAaj/C,QAAU8K,SAASygD,iBAClCzgD,SAAS+xD,GAAQ,SAAUT,EAAc,CAAE74B,SAAS,IACpDz4B,SAAS+xD,GAAQ,YAAaP,KAE9Brd,EAAaj/C,QAAQ68D,GAAQ,SAAUT,EAAc,CAAE74B,SAAS,IAChE0b,EAAaj/C,QAAQ68D,GAAQ,YAAaP,IAI9Cz6B,EAAAA,WAAU,KACRod,EAAaj/C,MAAQ4b,GAAgBlD,EAAGnR,MAAMrG,IAAmB,GACjE07D,GAAgB,MAElBh1C,EAAcA,eAACg1C,MAGjBpgD,IAAU,KACR,MAAM1V,EAAWo1D,EAAcl8D,MAAM0G,KAAI5G,GAAImd,EAAAC,YAAAg9C,GAAA,CAAAp3D,IAEnChD,EAAK2V,MAAKwkD,WACH36D,EAAM26D,WAAU,kBACXjsD,GAAUuuD,EAAiBz8D,EAAK2V,MAAOzH,IAAO,CAAA+I,QAE9DohC,GAAaz9B,EAAM3D,UAAU,CAAEjX,KAAMA,EAAKgpD,IAAKrzC,MAAO3V,EAAK2V,SAAU0iC;AAI3E,OAAO74C,EAAM26D,WAAUh9C,EAAAC,YAAA4W,EAAAjtB,eAAAoW,EAAAC,YAAA,MAAA,CAAA5F,IAERkjD,EAASvjD,MAAA,2BAAAzI,MAA2C,CAAE+rD,WAAY95D,EAAc85D,EAAWv6D,SACpG8G,MAAAA,EAAQmW,EAAAA,YAAA,MAAA,CAAAhG,MAAA,2BAAAzI,MACmC,CAAE0rB,cAAez5B,EAAcy5B,EAAcl6B,SAAQ,QAAAid,EAAAA,YAAA,MAAA,CAAA3F,IAI5F2nC,EAAYhoC,MACX,CACL,mBACA3X,EAAM2X,OACP6lD,gBACiBV,EAAYW,YAChBT,EAAe9tD,MACtB,CACLorB,EAAgB55B,MAChBV,EAAMkP,QACP,CAAAyO,EAAAC,YAAA,MAAA,CAAA5F,IAGOkjD,EAASvjD,MAAA,8BAAAzI,MAER,CACL+rD,WAAY95D,EAAc85D,EAAWv6D,OACrCk6B,cAAez5B,EAAcy5B,EAAcl6B,SAC5C,CAEC8G,SAMH,CACLs0D,cAAAA;ACpIC,SAAS4B,GAAcC,EAAiCC,GAC7D,MAAMC,EAAc5wD,cAAW;AAC/B,IAAI6wD;AA8DJ,MAAO,CAAEC,aA7DT,SAAuB3yB,GACrB8U,qBAAqB4d,GACrBD,EAAYn9D,OAAQ,EACpBo9D,EAAgBpnC,uBAAsB,KACpConC,EAAgBpnC,uBAAsB,KACpCmnC,EAAYn9D,OAAQ,SAwDHs9D,cAvCvBrmB,eAA8BvM,GAK5B,GAJc,QAAVA,EAAE5nC,KACJo6D,EAAal9D,OAAOoL,SAGjB,CAAC,WAAY,SAAU,OAAQ,OAAO/F,SAASqlC,EAAE5nC,KAAM;AAC5D,MAAM5B,EAAkB+7D,EAAQj9D,OAAOmB;AACvC,IAAKD,EAAI;AAEK,SAAVwpC,EAAE5nC,KAA4B,QAAV4nC,EAAE5nC,KACxB5B,EAAG27C,SAAS,CACVvvC,IAAe,SAAVo9B,EAAE5nC,IAAiB,EAAI5B,EAAGob,aAC/B8lB,SAAU,iBAzBhB6U,uBACQ,IAAItnC,SAAQC,GAAWomB,sBAAsBpmB,WAC7C,IAAID,SAAQC,GAAWomB,sBAAsBpmB,WAC7C,IAAID,SAAQC,GAAWomB,sBAAsBpmB,WAC7C,IAAID,SAAcC,IACtB,GAAIutD,EAAYn9D,MAAO,CACrB,MAAM0nB,EAAOxE,QAAMi6C,GAAa,KAC9Bz1C,IACA9X,YAEGA,OAmBH2tD;AAEN,MAAMz2D,EAAW5F,EAAGqJ,iBAAiB;AAErC,GAAc,aAAVmgC,EAAE5nC,KAAgC,SAAV4nC,EAAE5nC,IAAgB,CAC5C,MAAMwK,EAAMpM,EAAGmN,wBAAwBf;AACvC,IAAK,MAAM9F,KAASV,EAClB,GAAIU,EAAM6G,wBAAwBf,KAAOA,EAAK,CAC3C9F,EAAsB4D;AACvB,WAGC,CACL,MAAMmC,EAASrM,EAAGmN,wBAAwBd;AAC1C,IAAK,MAAM/F,IAAS,IAAIV,GAAU+iC,UAChC,GAAIriC,EAAM6G,wBAAwBd,QAAUA,EAAQ,CACjD/F,EAAsB4D;AACvB,UCVH,MAAMoyD,GAAkB7mD,GAAa,CAC1C8mD,MAAO75C,QACP85C,cAAe95C,QACf+5C,UAAW,CACT/2D,KAAM/F,OACNkW,QAAS,kBAEX6mD,SAAU,CACRh3D,KAAM/F,OACNkW,QAAS,iBAEX6lB,MAAOhZ,QACPi6C,WAAYj6C,QACZk6C,aAAcl6C,QACdm6C,UAAW,CACTn3D,KAAMvH,QAER+f,KAAMwE,QACNo6C,SAAU,CACRp3D,KAAM8V,GACN3F,QAAS,aAEXknD,UAAW,CACTr3D,KAAMvH,QAERqlC,SAAU9gB,QACViH,WAAY,CACVjkB,KAAM/F,OACNkW,QAAS,uBAEXmnD,YAAat6C,QACbu6C,UAAWt9D,UAERsoD,GAAe,CAAEG,cAAc,KACjC,UAEU8U,GAAmBznD,GAAa,IACxC6mD,QACA75D,EAAKg1D,GAAoB,CAC1B12B,WAAY,KACZzkB,KAAM,aACJ,CAAC,kBAAmB,QAAS,uBAC9B2W,GAAoB,CAAE/N,WAAY,CAAE3e,UAAW8uB,OACjD,WAIUxV,GAAU5G,IAAAA,CAyB0B,CAC/CzQ,KAAM,UAENpK,MAAO8+D,KAEP3gC,MAAO,CACL,iBAAmB8X,IAAqB,EACxC,oBAAsBv1C,IAAe,EACrC,cAAgBq+D,IAAgB,GAGlCvkD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMyE,EAAEA,GAAMge,KACRiuC,EAAgBhnD,EAAAA,MAChBinD,EAAWjnD,EAAAA,MACXknD,EAAoBlnD,EAAAA,MACpBmnD,EAAQ52C,GAAgBvoB,EAAO,QAC/B8f,EAAOpW,EAAAA,SAAS,CACpB9B,IAAKA,IAAMu3D,EAAMz+D,MACjBqH,IAAK9G,IACCk+D,EAAMz+D,QAAUO,GAAKg+D,EAASv+D,OAAO62D,gBACzC4H,EAAMz+D,MAAQO,OAGZulB,MAAEA,EAAKiC,YAAEA,EAAWC,aAAEA,GAAiB0hC,GAASpqD,GAChD+oB,EAAQR,GACZvoB,EACA,aACA,IACAiB,GAAKwnB,EAAkB,OAANxnB,EAAa,CAAC,MAAQqE,EAAYrE,MACnDA,IACE,MAAMm+D,EAAc12C,EAAaznB;AACjC,OAAOjB,EAAMolC,SAAWg6B,EAAeA,EAAY,IAAM,QAGvD7F,EAAe7vD,EAAAA,UAAS,IACS,mBAAvB1J,EAAMu5D,aAA8Bv5D,EAAMu5D,aAAaxwC,EAAMroB,OACzC,iBAAvBV,EAAMu5D,aAA4Bv5D,EAAMu5D,aAC/CxwC,EAAMroB,MAAMnB,SAEZ03C,EAAOR,KACPuO,EAAiBt7C,YAAS,IAAMqf,EAAMroB,MAAM0G,KAAIi4D,GAAaA,EAAU3+D,UACvE6zC,EAAYtnC,cAAW,GACvB8mC,EAAQrqC,YAAS,IAAMoW,EAAKpf,MAAQV,EAAMq+D,UAAYr+D,EAAMs+D;AAElE,IACIgB,EADAC,EAAuB;AAG3B,MAAMC,EAAe91D,EAAAA,UAAS,IACxB1J,EAAMw+D,aACDh4C,EAAM9lB,MAAMmZ,QAAOrZ,IAASuoB,EAAMroB,MAAMwD,MAAK6G,GAAKA,IAAMvK,MAE1DgmB,EAAM9lB,QAGT++D,EAAe/1D,EAAQA,UAAC,IAC3B1J,EAAMu+D,aAAeiB,EAAa9+D,MAAMnB,QACzCS,EAAMkN,UAAY+pC,GAAMI,WAAW32C,QAG/Bg/D,EAAoBh2D,EAAAA,UAAS,KAC1B,IACF1J,EAAM2+D,UACT/W,eAAgB,IACV5nD,EAAM2+D,WAAW/W,gBAAkB,GACvC,gBAAiB,eAKjB+V,EAAU3lD,EAAAA,OACV+lD,aAAEA,EAAYC,cAAEA,GAAkBN,GAAaC,EAASqB;AAC9D,SAAS9E,EAAS9uB,GACZprC,EAAM4+D,cACR9+C,EAAKpf,OAAQ,GAGjB,SAASi/D,IACHF,EAAa/+D,QAEjBof,EAAKpf,OAASof,EAAKpf,OAErB,SAAS4gD,EAAWlW,GAClB,IAAKA,EAAE5nC,KAAOxD,EAAMkN,UAAY+pC,GAAMI,WAAW32C,MAAO,OAEpD,CAAC,QAAS,IAAK,YAAa,UAAW,OAAQ,OAAOqF,SAASqlC,EAAE5nC,MACnE4nC,EAAEoW,iBAGA,CAAC,QAAS,YAAa,KAAKz7C,SAASqlC,EAAE5nC,OACzCsc,EAAKpf,OAAQ,GAGX,CAAC,SAAU,OAAOqF,SAASqlC,EAAE5nC,OAC/Bsc,EAAKpf,OAAQ,GAGD,SAAV0qC,EAAE5nC,IACJm6D,EAAQj9D,OAAOoL,MAAM,SACF,QAAVs/B,EAAE5nC,KACXm6D,EAAQj9D,OAAOoL,MAAM;AAYvB,GAAI9L,EAAMolC,WANV,SAAyBgG,GACvB,MAAMw0B,EAAmC,IAAjBx0B,EAAE5nC,IAAIjE,OACxBsgE,GAAcz0B,EAAEoG,UAAYpG,EAAEmG,UAAYnG,EAAE00B;AAClD,OAAOF,GAAmBC,EAGLE,CAAe30B,GAAI;AAE1C,MAAM2D,EAAMD,YAAYC;AACpBA,EAAMuwB,EAXwB,MAYhCC,EAAuB,IAEzBA,GAAwBn0B,EAAE5nC,IAAIsE,cAC9Bw3D,EAAyBvwB;AAEzB,MAAMvuC,EAAOgmB,EAAM9lB,MAAMqmB,MAAKvmB,GAAQA,EAAK2qB,MAAMrjB,cAAc6H,WAAW4vD;AAC1E,QAAa//D,IAATgB,EAAoB,CACtBuoB,EAAMroB,MAAQ,CAACF;AACf,MAAM2V,EAAQqpD,EAAa9+D,MAAMsF,QAAQxF;AACzC7B,GAAcC,OAAO83B,uBAAsB,KACzCvgB,GAAS,GAAK+oD,EAAkBx+D,OAAOo7D,cAAc3lD,OAM3D,SAAS0vB,EAAQrlC,GAA4C,IAA5BuH,IAAmBhH,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,KAAAA,UAAA;AAClD,IAAIP,EAAKR,MAAMyY,SAEf,GAAIzY,EAAMolC,SAAU,CAClB,MAAMjvB,EAAQ4S,EAAMroB,MAAM4mB,WAAU+3C,GAAar/D,EAAMuzC,gBAAgB8rB,EAAU3+D,MAAOF,EAAKE,SACvFqQ,EAAa,MAAPhJ,IAAgBoO,EAAQpO;AAEpC,IAAKoO,EAAO,CACV,MAAMzV,EAAQqQ,EAAM,IAAIgY,EAAMroB,MAAOF,GAAQ,IAAIuoB,EAAMroB;AACvDA,EAAM2mB,OAAOlR,EAAO,GACpB4S,EAAMroB,MAAQA,OACLqQ,IACTgY,EAAMroB,MAAQ,IAAIqoB,EAAMroB,MAAOF,QAE5B,CACL,MAAMuQ,GAAc,IAARhJ;AACZghB,EAAMroB,MAAQqQ,EAAM,CAACvQ,GAAQ,GAE7BqkB,EAAAA,UAAS,KACP/E,EAAKpf,OAAQ,MAInB,SAASi0C,EAAQvJ,GACVuyB,EAAQj9D,OAAOmB,IAAImK,SAASo/B,EAAEgW,iBACjCthC,EAAKpf,OAAQ,GAGjB,SAASi1B,IACH4e,EAAU7zC,OACZs+D,EAAct+D,OAAOoL,QAGzB,SAASk1C,EAAW5V,GAClBmJ,EAAU7zC,OAAQ,EAEpB,SAASs/D,EAAe/+D,GACtB,GAAS,MAALA,EAAW8nB,EAAMroB,MAAQ;KACxB,GAAIyL,GAAgB6yD,EAAct+D,MAAO,cAAgByL,GAAgB6yD,EAAct+D,MAAO,qBAAsB,CACvH,MAAMF,EAAOgmB,EAAM9lB,MAAMqmB,MAAKvmB,GAAQA,EAAK2qB,QAAUlqB;AACjDT,GACFqlC,EAAOrlC,QAEAw+D,EAAct+D,QACvBs+D,EAAct+D,MAAMA,MAAQ,IAyPhC,OArPAkjB,EAAKA,MAAC9D,GAAM,KACV,IAAK9f,EAAMw+D,cAAgB1+C,EAAKpf,OAASqoB,EAAMroB,MAAMnB,OAAQ,CAC3D,MAAM4W,EAAQqpD,EAAa9+D,MAAM4mB,WAC/B9mB,GAAQuoB,EAAMroB,MAAMwD,MAAK6G,GAAK/K,EAAMuzC,gBAAgBxoC,EAAErK,MAAOF,EAAKE;AAEpE/B,GAAcC,OAAO83B,uBAAsB,KACzCvgB,GAAS,GAAK+oD,EAAkBx+D,OAAOo7D,cAAc3lD,UAK3DyN,EAAAA,OAAM,IAAM5jB,EAAMwmB,QAAO,CAAC6tB,EAAQ/U,KAC5Bxf,EAAKpf,OAEL6zC,EAAU7zC,QAAU4+B,EAAO//B,QAAU80C,EAAO90C,SAC9CugB,EAAKpf,OAAQ,MAIjBwc,IAAU,KACR,MAAM+iD,KAAcjgE,EAAMm+D,QAAS/iD,EAAM8kD,MACnCC,MACFngE,EAAMu+D,YAAciB,EAAa9+D,MAAMnB,QACzC6b,EAAM,iBACNA,EAAM,gBACNA,EAAM,YAEFg8B,EAAUruB,EAAMroB,MAAMnB,OAAS,EAC/B6gE,EAAiBv+C,GAAWnH,YAAY1a,GAExCsrB,EAAc8rB,IACjB7C,EAAU7zC,OACXV,EAAM+zC,QACL/zC,EAAMw5D,2BACLh6D,EAAYQ,EAAMsrB;AAEtB,OAAA3N,EAAAC,YAAAiE,GAAA9D,aAAA,CAAA/F,IAEUgnD,GACDoB,EAAc,CAAAz9B,WACN5Z,EAAMroB,MAAM0G,KAAInG,GAAKA,EAAEjB,MAAMU,QAAOsK,KAAK,MAAK,sBACrCg1D,EAAa/pB,QACjB1B,EAAU7zC,MAAK,mBAAA60C,GAAfhB,EAAU7zC,MAAK60C,EAAAuB,gBACf/tB,EAAMC,cAAauwC,aACtBA,EAAa74D,MAAKu3D,MACzB7gB,EAAOz/B,MACR,CACL,WACA,CACE,wBAAyBmI,EAAKpf,MAC9B,oBAAqBV,EAAMm+D,MAC3B,CAAE,cAAYn+D,EAAMolC,SAAW,WAAa,YAAa,EACzD,qBAAsBrc,EAAMroB,MAAMnB,OAClC,6BAA8B6b,EAAMikD,WAEtCr/D,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKmxD,UAAA,OAAA/0C,YAELA,EAAW,gBACT4uC,EAAO,sBACDyF,EAAkBhrB,OAC/BA,EAAM2M,UACHA,EAAS,aACRvuC,EAAEghC,EAAMrzC,OAAMyqB,MACnBpY,EAAEghC,EAAMrzC,SAAM,IAGjB0a,EACH3D,QAASA,IAAAkG,EAAAA,YAAA6W,EAAAjtB,SAAA,KAAA,CAAAoW,EAAAC,YAAA24C,GAAAx4C,aAAA,CAAA/F,IAGGinD,EAAQt8B,WACJ7iB,EAAKpf,MAAK,sBAAA60C,GAAVz1B,EAAKpf,MAAK60C,EAAAyS,UAAA,SAAArlC,aAAA,oBAAAlK,SAGTgnD,EAAa/+D,MAAK48B,MACrBt9B,EAAMs9B,MAAKrD,UACP,IAAG61B,aACD,EAAKG,qBACG,EAAKnpC,WACd9mB,EAAM8mB,WAAU6O,aACdA,GACV+pC,EAAkBh/D,OAAK,CAAA+W,QAAAA,IAE1B0oD,CAAAA,GAAOxiD,EAAAA,YAAA8sC,GAAA1sC,EAAAA,WAAA,CAAA/F,IAEC2lD,EAAO53B,SACFif,EAAetkD,MAAKykD,eACdnlD,EAAMolC,SAAW,cAAgB,qBAAoB8c,YACvD9W,GAAkBA,EAAEoW,iBAAgBF,UACvC0c,EAAahd,UACbA,EAASwc,gBACHO,EAAYv1B,SAAA,KAAA,YAAA,SAAAv0B,MAGtBjU,EAAM6+D,WAAa7+D,EAAMiU,OAC5BjU,EAAMy+D,WAAS,CAAAhnD,QAAAA,IAElB2D,CAAAA,EAAM,qBAELokD,EAAa9+D,MAAMnB,SAAWS,EAAMu+D,aAAenjD,EAAM,gBAAcuC,EAAAC,YAAAmqC,GAAA,CAAA58B,MACrDpY,EAAE/S,EAAMurB,aAAW,OACtC5N,EAAAC,YAAAy/C,GAAA,CAAArlD,IAEoBknD,EAAiBvE,YAAA,EAAAn0C,MAAsBg5C,EAAa9+D,OAAK,CAAA+W,QAC3EzB,IAA8B,IAA7BxV,KAAEA,EAAI2V,MAAEA,EAAK0kD,QAAEA,GAAS7kD;AACzB,MAAMuzC,EAAYntB,EAAAA,WAAW57B,EAAKR,MAAO,CACvCgY,IAAK6iD,EACLr3D,IAAK2S,EACLkyB,QAASA,IAAMxC,EAAOrlC,EAAM;AAG9B,OAAO4a,EAAM5a,OAAO,CAClBA,KAAAA,EACA2V,MAAAA,EACAnW,MAAOupD,KACP5rC,EAAAC,YAAAmqC,GAAAhqC,EAAAA,WACgBwrC,EAAS,CAAArrC,KAAA,WAAA,CAErB+jB,QAASsiB,IAAA,IAAC5e,WAAEA,GAAY4e;AAAA,OAAA5mC,cAAA6W,EAAAA,SAAA,KAAA,CAElBx0B,EAAMolC,WAAaplC,EAAMw+D,aAAY7gD,EAAAC,YAAAw3B,GAAA,CAAA5xC,IAE7BhD,EAAKE,MAAKiiC,WACHgD,EAAUsL,QACd,EAAKzI,SAAA,MAGdhpC,WAAAA,EAEFgB,EAAKR,MAAM6iD,eAAallC,EAAAC,YAAAsD,GAAA,CAAAsd,MACPh+B,EAAKR,MAAM6iD,eAC7B,MAECriD,EAAKR,MAAM6wC,aAAWlzB,EAAAC,YAAA8pB,GAAA,CAAAnqB,KACR/c,EAAKR,MAAM6wC,aAC1B,cASbz1B,EAAM,yBAKZ2N,EAAMroB,MAAM0G,KAAI,CAAC5G,EAAM2V,KACvB,SAASmqD,EAAal1B,GACpBA,EAAEyJ,kBACFzJ,EAAEoW,iBAEF3b,EAAOrlC,GAAM,GAGf,MAAMq4C,EAAY,CAChB,gBAAiBynB,EACjBhf,UAAWlW,GACK,UAAVA,EAAE5nC,KAA6B,MAAV4nC,EAAE5nC,MAE3B4nC,EAAEoW,iBACFpW,EAAEyJ,kBAEFyrB,EAAYl1B,KAEd8W,YAAa9W,GACXA,EAAEoW,iBACFpW,EAAEyJ,mBAEJlS,YAAY,EACZ,2BAAuBnjC,GAGnB+gE,EAAUN,IAAa7kD,EAAM8kD,OAAS9kD,EAAMikD,UAC5CmB,EAAcD,EAChB9zD,GACAwzD,EACI7kD,EAAM8kD,KAAM,CAAE1/D,KAAAA,EAAM2V,MAAAA,EAAOnW,MAAO64C,IAClCz9B,EAAMikD,UAAW,CAAE7+D,KAAAA,EAAM2V,MAAAA,UAE7B3W;AAEJ,IAAI+gE,GAAYC,EAEhB,OAAA7iD,EAAAA,YAAA,MAAA,CAAAna,IACahD,EAAKE,MAAKiX,MAAA,uBACjBsoD,CAAAA,EACC7kD,EAAM8kD,KAOWviD,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,gBAAA8T,SAKJ,CACRyL,MAAO,CACLyvB,SAAUxyC,EAAMo+D,cAChBv1D,KAAM,QACN8I,KAAMnR,EAAK2qB,SAEd,CAAA1T,QAAAA,IAAA,CAEC+oD,KApBK7iD,EAAAC,YAAAmF,GAAAhF,aAAA,CAAAva,IAAA,OAAAgvC,SAGIxyC,EAAMo+D,cAAav1D,KAAA,QAAA8I,KAEvBnR,EAAK2qB,MAAK1S,SACNjY,EAAKR,MAAMyY,UACjBogC,GAAS,MAiBlB2nB,GAAW7iD,EAAAC,YAAA,OAAA,CAAAjG,MAAA,4BAAA,CAELnX,EAAK2qB,MACLnrB,EAAMolC,UAAajvB,EAAQ4S,EAAMroB,MAAMnB,OAAS,GAAEoe,EAAAA,YAAA,OAAA,CAAAhG,MAAA,6BAAA8oD,CAAAA,EAAAC,gCAWpE,eAAgB,WAAA,IAAA,IAAAxzC,EAAAnsB,UAAAxB,OAAIkL,EAAI9J,IAAAA,MAAAusB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1iB,EAAI0iB,GAAApsB,UAAAosB;AAAA,OAAAxP,EAAAC,YAAA4W,EAAAjtB,eAElB6T,EAAM,qBAAqB3Q,GAC3BzK,EAAM0+D,SAAQ/gD,EAAAA,YAAA+pB,GAAA,CAAA/vB,MAAA,sBAAA4F,KAGLvd,EAAM0+D,UAAQ,WAErBl/D,UAQTy2D,GAAY,CACjB1hB,UAAAA,EACAz0B,KAAAA,EACA+lB,OAAAA,GACCm5B,MCxgBM2B,GAAgCA,CAACjgE,EAAOwsC,EAAO1sC,IAC7C,MAATE,GAA0B,MAATwsC,GAAuB,EAErCxsC,EAAMmF,WAAW+6D,oBAAoB56D,QAAQknC,EAAMrnC,WAAW+6D,qBAG1DC,GAAkBxpD,GAAa,CAC1CypD,aAAc52D,SACd62D,gBAAiBhhE,OACjBihE,WAAY,CAACrgE,MAAOY,QACpB0/D,WAAY,CACV35D,KAAM/F,OACNkW,QAAS,gBAEXypD,SAAU58C,SACT;AAgFI,SAAS68C,GACdnhE,EACAwmB,EACA0mB,EACAngC,GAKA,MAAMq0D,EAA0BppD,MAAI,IAC9BqpD,EAAkErpD,EAAAA,IAAI,IAAIzP,KAC1E+4D,EAAmB53D,EAAQA,UAAC,IAChCqD,GAASsC,UACLmJ,QAAMgO,GAAOpf,KAAI5G,GAAS,CAACA,EAAMuM,EAAQsC,UAAW7O,MACpDgY,EAAKA,MAACgO;AA0CZ,OAvCA7c,EAAAA,aAAY,KACV,MAAM43D,EAA0B,mBAAVr0B,EAAuBA,IAAU10B,EAAAA,MAAM00B,GACvDs0B,EACc,iBAAXD,GACW,iBAAXA,EACL,GAAKhgE,OAAOggE,GAEVxpB,EAtGH,SACLvxB,EACA0mB,EACAngC,GAQA,MAAMo9C,EAAmE,GAEnEtwC,EAAS9M,GAAS0K,SAAWkpD,GAC7B1gE,IAAO8M,GAASi0D,YAAa17D,EAAYyH,EAAQi0D,YACjDS,EAAsB1hE,OAAOE,KAAK8M,GAASg0D,iBAAmB,IAAIxhE;AAExE,IAAKinB,GAAOjnB,OAAQ,OAAO4qD;AAE3BuX,EACA,IAAK,IAAIjiE,EAAI,EAAGA,EAAI+mB,EAAMjnB,OAAQE,IAAK,CACrC,MAAOe,EAAM4+D,EAAc5+D,GAAQ8E,EAAYkhB,EAAM/mB,IAC/CkiE,EAA6C,GAC7CC,EAA8C;AACpD,IAAI9sD,GAAsB;AAE1B,GAAIo4B,IAAUngC,GAASm0D,SAAU,CAC/B,GAAoB,iBAAT1gE,EAAmB,CAC5B,MAAMwgE,EAAa/gE,GAAQF,OAAOE,KAAKm/D;AAEvC,IAAK,MAAM57D,KAAOw9D,EAAY,CAC5B,MAAMtgE,EAAQH,EAAoB6+D,EAAa57D,GACzCq+D,EAAY90D,GAASg0D,kBAAkBv9D;AAM7C,GAJAsR,EAAQ+sD,EACJA,EAAUnhE,EAAOwsC,EAAO1sC,GACxBqZ,EAAOnZ,EAAOwsC,EAAO1sC,IAEV,IAAXsU,IAA0B,IAAVA,EACd+sD,EAAWF,EAAcn+D,GAAOsR,EAC/B8sD,EAAep+D,GAAOsR;KACtB,GAA4B,UAAxB/H,GAASk0D,WAClB,SAASS,QAIb5sD,EAAQ+E,EAAOrZ,EAAM0sC,EAAO1sC,IACb,IAAXsU,IAA0B,IAAVA,IAClB8sD,EAAez2C,MAAQrW;AAI3B,MAAMgtD,EAAuB/hE,OAAOE,KAAK2hE,GAAgBriE,OACnDwiE,EAAsBhiE,OAAOE,KAAK0hE,GAAepiE;AAEvD,IAAKuiE,IAAyBC,EAAqB;AAEnD,GAC0B,UAAxBh1D,GAASk0D,YACTc,IAAwBN,IACvBK,EACD;AAEF,GAC0B,iBAAxB/0D,GAASk0D,aAEPc,IAAwBN,IACvBK,GAEH,SAGJ3X,EAAMnhD,KAAK,CAAEmN,MAAO1W,EAAG8M,QAAS,IAAKq1D,KAAmBD,KAG1D,OAAOxX,EA2BW6X,CACdV,EAAiB5gE,MACjB8gE,EACA,CACET,gBAAiB,IACZ/gE,EAAM+gE,mBACNvoD,EAAKA,MAACzL,GAASg0D,kBAEpBtpD,QAASzX,EAAM8gE,aACfE,WAAYhhE,EAAMghE,WAClBC,WAAYjhE,EAAMihE,WAClBC,SAAUlhE,EAAMkhE,WAIde,EAAgBzpD,QAAMgO,GAEtB07C,EAAgD,GAChDC,EAAoD,IAAI55D;AAC9DwvC,EAAQxzC,SAAQ+J,IAAwB,IAAvB6H,MAAEA,EAAK5J,QAAEA,GAAS+B;AACjC,MAAM9N,EAAOyhE,EAAc9rD;AAC3B+rD,EAAel5D,KAAKxI,GACpB2hE,EAAiBp6D,IAAIvH,EAAKE,MAAO6L,MAEnC60D,EAAc1gE,MAAQwhE,EACtBb,EAAgB3gE,MAAQyhE,KAOnB,CAAEf,cAAAA,EAAeC,gBAAAA,EAAiBe,WAJzC,SAAqB5hE,GACnB,OAAO6gE,EAAgB3gE,MAAMkH,IAAIpH,EAAKE,SC9GnC,MAAM2hE,GAAyBhrD,GAAa,CACjDirD,gBAAiB,CACfh7D,KAAM,CAACgd,QAAS/iB,SAElBghE,cAAej+C,QACfk+C,OAAQjhE,UAELs/D,GAAgB,CAAEG,WAAY,CAAC,cAC/B9C,QACA75D,EAAKg1D,GAAoB,CAC1B12B,WAAY,KACZzkB,KAAM,aACJ,CAAC,kBAAmB,QAAS,uBAC9B2W,GAAoB,CAAE/N,YAAY,KACpC,iBAIU3F,GAAgBtG,IAAAA,CAyBoB,CAC/CzQ,KAAM,gBAENpK,MAAOqiE,KAEPlkC,MAAO,CACL,iBAAmB8X,IAAqB,EACxC,gBAAkBv1C,IAAe,EACjC,oBAAsBA,IAAe,EACrC,cAAgBA,IAAmB,GAGrC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMyE,EAAEA,GAAMge,KACRiuC,EAAgBhnD,EAAAA,MAChBu8B,EAAYtnC,cAAW,GACvBkqC,EAAalqC,cAAW,GACxBw1D,EAAex1D,cAAW,GAC1BgyD,EAAWjnD,EAAAA,MACXknD,EAAoBlnD,EAAAA,MACpBmnD,EAAQ52C,GAAgBvoB,EAAO,QAC/B8f,EAAOpW,EAAAA,SAAS,CACpB9B,IAAKA,IAAMu3D,EAAMz+D,MACjBqH,IAAK9G,IACCk+D,EAAMz+D,QAAUO,GAAKg+D,EAASv+D,OAAO62D,gBACzC4H,EAAMz+D,MAAQO,MAGZyhE,EAAiBz1D,EAAAA,YAAY,GAC7BgH,EAAQvK,EAAAA,UAAS,IAAMs1D,EAAct+D,OAAOuT,QAC5C8/B,EAAQrqC,YAAS,IAAMoW,EAAKpf,MAAQV,EAAMq+D,UAAYr+D,EAAMs+D,YAC5D93C,MAAEA,EAAKiC,YAAEA,EAAWC,aAAEA,GAAiB0hC,GAASpqD,IAChDw7B,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAarnB,GACrDuuD,EAASj6C,GAAgBvoB,EAAO,SAAU,IAC1C+oB,EAAQR,GACZvoB,EACA,aACA,IACAiB,GAAKwnB,EAAkB,OAANxnB,EAAa,CAAC,MAAQqE,EAAYrE,MACnDA,IACE,MAAMm+D,EAAc12C,EAAaznB;AACjC,OAAOjB,EAAMolC,SAAWg6B,EAAeA,EAAY,IAAM,QAGvD7F,EAAe7vD,EAAAA,UAAS,IACS,mBAAvB1J,EAAMu5D,aAA8Bv5D,EAAMu5D,aAAaxwC,EAAMroB,OACzC,iBAAvBV,EAAMu5D,aAA4Bv5D,EAAMu5D,aAC/CxwC,EAAMroB,MAAMnB,SAEZ03C,EAAOR,MACP2qB,cAAEA,EAAagB,WAAEA,GAAejB,GAAUnhE,EAAOwmB,GAAO,IAAM2wB,EAAWz2C,MAAQ,GAAK8hE,EAAO9hE,QAE7F8+D,EAAe91D,EAAAA,UAAS,IACxB1J,EAAMw+D,aACD4C,EAAc1gE,MAAMmZ,QAAO8oD,IAAiB55C,EAAMroB,MAAMwD,MAAK6G,GAAKA,EAAErK,QAAUiiE,EAAajiE,UAE7F0gE,EAAc1gE,QAGjBu/D,EAAWv2D,EAAQA,UAAC,OAAS1J,EAAMm+D,QAAS/iD,EAAM8kD,QAClD0C,EAAmBl5D,EAAQA,UAAC,IAAMu2D,EAASv/D,SAAW0a,EAAMikD,YAE5Dra,EAAiBt7C,EAAAA,UAAS,IAAMqf,EAAMroB,MAAM0G,KAAIi4D,GAAaA,EAAUr/D,MAAMU,UAE7EmiE,EAAiBn5D,EAAAA,UAAS,MACgB,IAA1B1J,EAAMsiE,iBACG,UAA1BtiE,EAAMsiE,iBAA+BE,EAAO9hE,QAAU8+D,EAAa9+D,MAAM,IAAIyqB,QAE9Eq0C,EAAa9+D,MAAMnB,OAAS,IAC3B43C,EAAWz2C,QACX+hE,EAAa/hE,QAGZ++D,EAAe/1D,EAAQA,UAAC,IAC3B1J,EAAMu+D,aAAeiB,EAAa9+D,MAAMnB,QACzCS,EAAMkN,UAAY+pC,GAAMI,WAAW32C,QAG/Bi9D,EAAU3lD,EAAAA,OACV+lD,aAAEA,EAAYC,cAAEA,GAAkBN,GAAaC,EAASqB;AAC9D,SAAS9E,EAAS9uB,GACZprC,EAAM4+D,cACR9+C,EAAKpf,OAAQ,GAGf8hE,EAAO9hE,MAAQ,GAEjB,SAASi/D,IACHF,EAAa/+D,QAEjBof,EAAKpf,OAAQ,GAEf,SAASoiE,EAAqB13B,GACxBq0B,EAAa/+D,QAEb6zC,EAAU7zC,QACZ0qC,EAAEoW,iBACFpW,EAAEyJ,mBAEJ/0B,EAAKpf,OAASof,EAAKpf,OAErB,SAAS4gD,EAAWlW,GAClB,GAAIprC,EAAMkN,UAAY+pC,GAAMI,WAAW32C,MAAO;AAE9C,MAAM05D,EAAiB4E,EAAct+D,MAAM05D,eACrC76D,EAASwpB,EAAMroB,MAAMnB;AAyB3B,IAtBEmjE,EAAehiE,OAAS,GACxB,CAAC,QAAS,YAAa,WAAWqF,SAASqlC,EAAE5nC,OAE7C4nC,EAAEoW,iBAGA,CAAC,QAAS,aAAaz7C,SAASqlC,EAAE5nC,OACpCsc,EAAKpf,OAAQ,GAGX,CAAC,UAAUqF,SAASqlC,EAAE5nC,OACxBsc,EAAKpf,OAAQ,GAGXmiE,EAAeniE,OAAS,CAAC,QAAS,OAAOqF,SAASqlC,EAAE5nC,MACtDqiC,EAAO25B,EAAa9+D,MAAM,IAGd,cAAV0qC,EAAE5nC,KAAuBq/D,EAAeniE,OAC1Ci9D,EAAQj9D,OAAOoL,MAAM,QAGnB,CAAC,YAAa,UAAU/F,SAASqlC,EAAE5nC,KAAM,CAC3C,IACGxD,EAAMolC,UACPw9B,EAAiBliE,OACjBqoB,EAAMroB,MAAMnB,OAAS,IACpBijE,EAAO9hE,MACR,OAAOmlC,EAAO9c,EAAMroB,MAAM,IAAI;AAEhC,IAAKgiE,EAAehiE,MAAO,CACzB,MAAMqiE,EAAyBL,EAAehiE;AAC9CmlC,EAAO9c,EAAMroB,MAAMgiE,EAAehiE,QAAQ,GAE1CgiE,EAAehiE,MAAQqiE,GAA0BxjE,EAAS,EAAKA,EAAS,EAAKwjE,MAC1D,cAAV33B,EAAE5nC,KAAwBg/D,EAAO9hE,QAC1CgiE,EAAehiE,MAAQnB,EAAS,GAIpC,GAAKS,EAAMolC,SAAX,CAEA,GAAc,cAAVgG,EAAE5nC,IAAqB,CACzB,GAAIk/D,EAAehiE,MAAQ,GAAK05D,EAAiB,EAAG;AAEpD,MAAMthD,EAAO4pD,EAAehiE,OAAS,EACjCgiE,EAAehiE,MAAQ,EACvBnB,EAAS;AAETwpB,EAAMroB,MAAMoY,GACd4pD,EAAehiE,MAAQoY,GAEvB4pD,EAAehiE,OAAS,EACxBs+D,EAAct+D,MAAMsiE,kBAAkBR,EAAO9hE,OAAOnB,OAAQijE,EAAO9hE,OAAOnB,SAI9E,GAAc,eAAV6rC,EAAE5nC,IAAsB,CAC1B,GAAIk/D,EAAehiE,MAAQ,EAAG;AAE9B,MAAM4e,EAAOojD,EAAehiE,MAAQ;AAEhCqoB,EAAMroB,MAAM4e,GACdojD,EAAehiE,MAAQ4e,GAEvBojD,EAAehiE,OAAS,EACxBs+D,EAAct+D,MAAMsiE,kBAAkB,EAAG,MAK/C,SAAS3tB,EAAUjK,GACjB,GAAIj/B,GAAgB6yD,EAAct+D,MAAO,cAAgByL,GAAgB6yD,EAAct+D,MAAO,qBAAsB,CAClH,MAAMF,EAAOgmB,EAAM9lB,MAAMqmB,MAAKvmB,GAAQA,EAAK2qB,QAAWigB,EAAEvkC,OAA4BnG;AAChFF,GACFqlC,EAAOrlC,IAKb,SAASm1B,IACH4e,EAAU7zC,QACZy2C,EAAWz2C,OAAQ,EACnBs+D,EAAct+D,OAAOoL,SAIzB,SAASk1C,EAAW5V,GAClBmJ,EAAU7zC,OAAQ,EAClBs+B,YAAW,KACTyjC,EAAa/hE,OAAQ,KAGzB,SAASwgD,EAAY9V,GACnBq3B,EAAa/hE,OAAQ,EAEvB,SAASuiE,EAAoBhiE,GAClB,MAALA,IAAoB,KAANA,GAAajB,EAAMolC,UAAaw9B,EAAiBliE,SAAQqoB,EAAMroB,MAAQ,IAG3F,MAAMwiE,EAAcj2D,cAAW;AAG/B,SAAS44B,EAAQrlC,GAAwD,IAA5BuH,IAAmBhH,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,KAAAA,UAAA;AAC9D,GAAKP,IAAQA,EAAKR,MAAMyY,SAExB,GAAIzY,EAAMolC,SAAU,CAClB,MAAMjvB,EAAQ4S,EAAMroB,MAAM4mB,WAAU+3C,GAAar/D,EAAMuzC,gBAAgB8rB,EAAU3+D,MAAOF,EAAKE,SACvFqQ,EAAa,MAAPhJ,IAAgBoO,EAAQpO;AAEpC,IAAKoO,EAAO,CACV,MAAMzV,EAAQqQ,EAAM,IAAIgY,EAAMroB,MAAOF,GAAQ,IAAIuoB,EAAMroB;AACvDA,EAAM2mB,OAAOlR,EAAO,GACpB4S,EAAMroB,MAAQA,OACLqQ,IACTgY,EAAMroB,MAAQ,IAAIqoB,EAAMroB,MAAOF;AAG7BR,EAAMuiE,gBACRC,EAAO9hE,MAAQ,QAEZ,CACL,MAAMqQ,GAAc,IAARhJ;AACZghB,EAAMroB,MAAQqQ,EAAM,CAACvQ,GAAQ,GAC7BgiE,EAAO9hE,MAAQqQ,IAAQ6xD,EAAiBliE,MAAQF,EAAK2qB,MAAQ,GAG7DtG,EAAAA,UAAS,KACP/E,EAAKpf,OAAQ,EACby2C,EAAWz2C,OAAQ,MAsSzB,OAjSAkjB,EAAAA,MAAM2wB,GAAW,CAACtrC,EAAKq2B,KACjBr2B,IAAQq2B,IAERr2B,GACFi6D,EAAYxiE,OAAQ,EACpB8hE,EAAO9hE,MAASV,EAAMolC,UAAYw9B,EAAiBliE,MAAS,GAAKa,OAAOwnB,EAAMroB,MAAMqL,IAAI,IAAI/L,MAAMmrB,OAAS,IAC3GgsB,EAAWz2C,OAAQ,EAEnBmkB,EAAAA,UAAS,IAAMq+C,EAAYxiE,OAAQ,MAE9BV,EAAMolC,UAA4B,MAAhBo9B,EAAO9hE,OAE5BmiE,EAAeniE,OACd+hE,EAAa/hE,OACbqoB,EAAMroB,MAAMwD,MAAK8R,IAAA,IAACtV,MAAEA,GAAOsV;AAAA,OAAKtV,IAAU8+D,EAAa9+D,MAAM,GAAGA,UAEjEmlC,EAAO25B,EAAa9+D,MAAM,IANiBqoB,EAAMroB,MAAQ,GAQ3Dof,EAAKpf,OAAQ,GACTV,EAAMolC,UAAYw9B,EAAiBliE,SAAO8hE,EAAO9hE,MAAQ,IAC7DgiE,EAAehiE,OAAS,OAI5BkjB,EAAKA,MAAC4+C,GAAQv5D,IACPsrC,EAAU7zC,QAASwiE,EAAYxiE,QAEhCuI,IAAK6W,EAAKpf,OAAQ,GAEtBy2C,EAAWz2C,OAASuI,MAGtB2a,EAAKA,MAAC9D,GAAM,KACV,IAAK9f,EAAMw+D,cAAgB1+C,EAAKpf,OAASqoB,EAAMroB,MAAMnB,OAAQ,CAC3D,MAAM4W,EAAQqpD,EAAa9+D,MAAM4mB,WAC/B9mB,GAAQuoB,EAAMroB,MAAMwD,MAAK6G,GAAKvK,EAAKE,QAAUqK,EAAErK;AAEjD/B,GAAcC,OAAO83B,uBAAsB,KACzCvgB,GAAS,GAAK+oD,EAAkBx+D,OAAOo7D,cAAc3lD,UAK3DyN,EAAAA,OAAM,IAAM5jB,EAAMwmB,QAAO,CAAC6tB,EAAQ/U,KAC5Bxf,EAAKpf,OAEL6zC,EAAU7zC,QAAU4+B,EAAO//B,QAAU80C,EAAO90C,SAC9CugB,EAAKpf,OAAQ,MAIjBwc,IAAU,KACR,MAAMijD,MACFngE,EAAMu+D,YAAciB,EAAa9+D,MAAMnB,QACzC6b,EAAM,iBACNA,EAAM,gBACNA,EAAM,YAEFg8B,EAAUruB,EAAMroB,MAAMnB,OAAS,EAC/B6gE,EAAiBv+C,GAAWnH,YAAY1a;AAE9C,OAAA2d,EAAAC,YAAAiE,GAAA9D,aAAA,CAAA/F,IAEUgnD,GACDoB,EAAc,CAAAz9B,WACT6/B,EAAO9hE,MAAK,sBAAA60C,CAAAA,GAAZitB,EAAO9hE,MAAK60C,EACA0tB,GAAkBhtB,QACtB1B,EAAU7zC,MAAK,mBAAA60C,GAAfhB,EAAU7zC,MAAK60C,EAAAuB,gBACf/tB,EAAMC,cAAauwC,aACtBA,EAAa74D,MAAKu3D,MACzB7gB,EAAO/B,SACJA,EAAQ19B,MACZ,CACL,iBACC,oBAAkB3X,EAAMolC,SAAW,WAAa,UACjD,CACE,8BAA+BtlB,EAAKpf,MACpC,0BAA2BV,EAAMm+D,MACjC,mCAAoCyE,EAAiBliE,MACrD,kCAAmCgiE,EAAehiE,OAAS,GAE7DV,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKhC,SACRlN,EAAMkN,SAAQoe,YACX8rB,OAAU53C,EAAYQ,EAAMsrB,YAAW,gBACrC4uC,EAAO,sBACDyF,EAAkBre,UAC5BA,IAAS,IAGhBlmC,EACH3D,QAASA,IAAAkG,EAAAA,YAAA6W,EAAAjtB,SAAA,KAAA,CAAAoW,EAAAC,YAAA24C,GAAAx4C,aAAA,CAAA/F,IAGGinD,EAAQt8B,WACJ7iB,EAAKpf,MAAK,sBAAA60C,GAAVz1B,EAAKpf,MAAK60C,EAAAyS,UAAA,SAAArlC,aAAA,0BAAAlK,SAGTgnD,EAAa/+D,MAAK48B,MACrBt9B,EAAMs9B,MAAKrD,UACP,IAAG61B,aACD,EAAKG,qBACG,EAAKnpC,WACd9mB,EAAM8mB,WAAU6O,aACdA,GACV31B,EAAM2+D,WAAS,CAAAlnD,QAAAA,IAElB0oD,CAAAA,GAAOxiD,EAAAA,YAAA8sC,GAAA1sC,EAAAA,WAAA,CAAA/F,IAEC2lD,EAAO53B,SACFif,EAAetkD,MAAKykD,eACdnlD,EAAMolC,SAAW,cAAgB,qBAAoB8c,YACvD9W,GAAkBA,EAAEoW,iBAAgBF,UACvC0c,EAAahd,UACbA,EAASE,WACRA,EAAUsc,gBACLO,EAAYv1B,SAAA,KAAA,YAAA,SAAAv0B,MAGtBjU,EAAM6+D,WAAa7+D,EAAMiU,OAC5BjU,EAAMy+D,WAAS,CAAAhnD,QAAAA,IAElB2D,CAAAA,EAAM,qBAELokD,EAAa9+D,MAAMnB,SAAWS,EAAMu+D,aAAenjD,EAAM,gBAAcuC,EAAAC,YAAAmqC,GAAA,CAAA58B,MACrDpY,EAAE/S,EAAMurB,aAAW,OACtC5N,EAAAC,YAAAy/C,GAAA,CAAArlD,IAEoBknD,EAAiBvE,YAAA,EAAAn0C,MAAsBg5C,EAAa9+D,OAAK,CAAA+W,QAC3E8sC,IAA8B,IAA7B/jD,KAAEA,EAAI2V,MAAEA,EAAK0kD,QAAEA,GAAStW;AACzB,MAAMgF,EAAYntB,EAAAA,WAAW57B,EAAKR,MAAO,CACvCgY,IAAK6iD,EACLr3D,IAAK2S,EACLsP,UAASo9C,EAAeniE,OAAmB,IAAVyV,SAAsB3W,EACvD6oC,QAASA,IAAMxC,EAAOrlC,EAAM;AAG9B,OAAO4a,EAAM5a,OAAO,CAClBA,KAAAA,EACA2V,MAAAA,EACAnW,MAAOupD,KACP5rC,EAAAC,YAAAmqC,GAAAhqC,EAAAA,WACgBwrC,EAAS,CAAArrC,KAAA,WAAA,CAEvB+jB,QAASsjB,IAAA,IAAC5f,WAAEA,GAAY4f;AAAA,OAAA5nC,cAAA6W,EAAAA,SAAA,KAAA,CAElBx0B,EAAMolC,WAAaplC,EAAMw+D,aAAY7gD,EAAAC,YAAAw3B,GAAA,CAAA5xC,IAE7BhD,EAAKE,MAAKiiC,WACHgD,EAAUsL,QACd,EAAKzI,SAAA,MAGdhpC,WAAAA,EAEFgB,EAAKR,MAAM6iD,eAAallC,EAAAC,YAAAsD,GAAA,CAAAsd,MACPh+B,EAAKR,MAAM6iD,eAC7B,MAECriD,EAAKR,MAAM6wC,aAAWlzB,EAAAC,YAAA8pB,GAAA,CAAAnqB,KACR/c,EAAKR,MAAM6wC,aAC1B,SAGL1lB,MAAOA,IACEgsB,EAAWz2C,MACdF,EAAK2qB,MA/dzC,SAA0BxZ,EAAcpF,EAAkChN,GACxE,GAAe,MAAXgN,EAAiB,OAAOoF;AAE5B,GAAIhR,MAAMC,QAAQ2L,GAAU,MAAM,IAAI4L,MAAM;AAE5C,MAA0B,iBAAZ5L,IAAyBA,EAAOoR,cAAA6W,EAAAA,SAAA,KAAA,CAAA7W,EAAAC,YAAA,OAAA,CAAAjG,MAAA,0BAGDhG,CAAAA,EAAKkE,OAAO,EAAGtJ,KAAQoR,EAAAC,YAAA,OAAA,CAAAjG,MAAA,wBACzBhG,CAAAA,EAAKkE,OAAOtJ,EAAShN,KAAOoe,EAAAC,YAAA,OAAA,CAAAjG,MAAA,0BAC1BhG,CAAAA,EAAKkE,OAAOtJ,EAAUhN,OAG/DoS,EAmd8BwxD,CAAgB3iE,EAAK2qB,MAAOi3C,EAAW5hE,IAAO2qB,MAAOq3C,EAAO9hE,OAAOnB,QAAU,QAQzF6b,EAAM,yBAKZ2N,EAAMroB,MAAM0G,KAAI,CAAC5G,EAAM2V,KACvB,SAASmqD,EAAal1B,GACpBA,EAAEyJ,kBACFzJ,EAAEoW,iBAEF3b,EAAOrlC,GAAM,GAGf,MAAMq4C,EAAY,CAChB,gBAAiBynB,EACjBhf,UAAWlW,GACK,UAAVA,EAAE5nC,KAA6B,MAAV4nC,EAAE5nC,MAE3B4nC,EAAEoW,iBACFpW,EAAEyJ,kBAEFyrB,EAAYl1B,KAEd8W,YAAa9W,GACXA,EAAEoW,iBACFpW,EAAEyJ,mBAEJlS,YAAY,EACZ,2BAAuBnjC,GAGnB+gE,EAAUN,EAASv/D,QAAU0a,EAAM8kD,OAAS9kD,EAAMikD,UAClDmB,EAAcD,EAChB9zD,GACAwzD,EAASv/D,MACL0a,EAAM8kD,KAAM,CAAE1/D,KAAAA,EAAM2V,MAAAA,EAAOnW,MAAO64C,IAClCz9B,EAAMikD,UAAW,CAAE7+D,KAAAA,EAAM2V,MAAAA,UAE7B3W;AAEJ,IAAI+gE,GAAYC,EAEhB,OAAA7iD,EAAAA,YAAA,MAAA,CAAAna,IAEUhD,EAAKE,MAAKiX,MACT,CACL,4BACAxB,IAAUusD,EAAehiE,OAAS,CAChC,sCACA86B,EAAiB96B,QAEpBwO,MACOiH,IAAUusD,EAAehiE,MAAQ+6B,EAAgB/6B,MAAQ,IAAE,CAEjEu/D,EAASv/D,MACR0a,EAAM8kD,KAOWviD,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,gBAAA8T,SAKJ,CACRyL,MAAO,CACLyvB,SAAUxyC,EAAMo+D,cAChBv1D,KAAM,QACN8I,KAAMnR,EAAK2qB,SAEd,CAAA1T,QAAAA,IAAA,CAEC+oD,KApBK7iD,EAAAC,YAAAmF,GAAAhF,aAAA,CAAAva,IAAA,OAAAgvC,SAGIxyC,EAAMo+D,cAAav1D,KAAA,QAAA8I,KAEvBnR,EAAK2qB,MAAK1S,SACNjY,EAAKR,MAAMyY,UACjBogC,GAAS,MAiBlB2nB,GAAW7iD,EAAAC,YAAA,OAAA,CAAAjG,MAAA,kCAAA,CAELnX,EAAK2qB,MACLnrB,EAAMolC,UAAajvB,EAAQ4S,EAAMroB,MAAMnB,OAAS,GAAEoe,EAAAA,YAAA,OAAA,CAAAhG,MAAA,mCAAA8oD,CAAAA,EAAAC,gCAWpE,eAAgB,WAAA,IAAA,IAAAxzC,EAAAnsB,UAAAxB,OAAIkL,EAAI9J,IAAAA,MAAAusB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1iB,EAAI0iB,GAAApsB,UAAAosB;AAAA,OAAAxP,EAAAC,YAAA4W,EAAAjtB,eAElB6T,EAAM,qBAAqB3Q,GAC3BzK,EAAM0+D,SAAQ/gD,EAAAA,YAAA+pB,GAAA,CAAA/vB,MAAA,4BAAA4F,KAGLvd,EAAM0+D,SAAQxc,YACP4gB,EAAmBz6B,QACvBn8B,EAAI,aACD6G,EAAEghC,EAAMrzC,OAAMyqB,MACnBpY,EAAEghC,EAAMrzC,QAAM,WAEtBlB,UAQTy2D,GAAY,CACjB1hB,UAAAA,EACA4C,WAAAA,EACAr3B,KAAAA,EACA0iD,OAAAA,EACApB,cAAAA,EACAv7B,OAAAA,GACCm5B,MCtnBMoE,GAAkB/rD,GAAa,CAC1CgsD,SAAU/+C,QACVrQ,MAAO1S,OACP0yB,QAAS,CAACxyB,OAAQF,QAClB+hE,IAAKh/C,QACLqd,SAAUrd,QACV/G,KAAMH,GACN7P,OAAQ+W,QACRyvB,MAAO,CACLzsC,KAAM/F,OACNkW,QAAS,kBAEXhS,IAAK,CAAChE,OAAQF,QACdohC,WAAY,CACVr7B,KAAMgd,QACN7M,SAAS,GAEX8gB,QAAS,CAAC92B,OAAQF,QAClBi3B,QAAS,CAAC/2B,OAAQF,QAClB25B,UAAW35B,UAERmW,QACAkyB,GAAkB,CAAEx+B,SAAU,eAC9BywB,QACApH,QACApD,QACAwD,GAAoB,CAAE/N,WAAY,6BACpC,UAEUy8C,GAAS1oD,IAAAA,CAAgC,CACpDzQ,KAAM,SAEN0T,cAAc,EAEd9d,MAAOojE,KAEP5oD,MAAOxa,EAAO2a,GACZ,MAAMghB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,WACpFg8B,eAAEA,GAAmBD,GAAW/7B,IAChC+S,EAAEA,GAAMge,MACRyK,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAagD,EAAKA,MAACt+B,EAAO,eAClE8yB,aAAEA,GAAiBkB,MAEnB+V,eAAEA,GAAmBF,GAAY7pC,GAAO,GAAM2N,IACrC3N,EAAM2hC,SACd3hC,EAAMsjE,IAAM,EAAI,EAChBtjE,EAAMsjE,IAAM,EAAI,KAGnB,CAAC,MAAO,UAAUv9D,SAAS4H,KAAU3N,EAAMw4B,SAAW,GACpD,CAAC,OAAQ,SAASzyB,SAAS4H,KAAU3N,EAAMu4B,SAAW,GACtD;AAsEN,OAlEArb,IAAU,KACR,MAAMxc,EAAQe,OAAOzB,EAAMi0B,SACrBA,GAAYj0B,EAAMyF,KAAOnE,MAAMZ,GAAUV,EAAMi0B,QACjDvzB,IAAUV,EAAMyF,IAAM/E,EACrB,GAAEV,EAAMyF,QAEN+9D,EAAYx+D,GAASlB,EAAa6W,EAAI3V,MAA8B,CACzE,cACA,aACA,YACA,OACA;AAGF,OAAA2Y,cAAA3d,EAAAkb,IAAA6C,aAAA,CAAApG,MAEW,CACL,UACA,CACE,oBAAqB3X,EAAMqjE,SAC3B,eAAgBrjE,EAAMsjE,IACtB,oBAAqBtjE,EAAM2hC,SAC3B,kBAAmB3hC,EAAMuN,QAE3BvN,EAAM2X,QAEH3S,EAAK,CAAAkK,MACFlP,EAAMkP,QAAK,CAAAuI,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,oBAGfgD,CAAAA,EAAIS,MAAM3D,YAAWkG,EAAAA,YAAAue,GAAA,CAAApV,WAEO9mB,EAAM8mB,YAAU,CAAArP,QAAAA,IAAA,CAAAmpB,EAAAA,eAAAjjB,EAAAA,mBAAAI,EAAAA,WAAA,CAAApG,MAGnC,CACL,iBACAmb,EAAapyB,MACbi7B,EAAuBj7B,MACvBs7B,EAAet7B,MACf86B,EAAiB96B,OAClBwO,MACM,CACL0sB,EAAsBl7B,MACtB+6B,EAAgB/6B,MAChBV,EAAMuN,OAAS,GAAKw8B,EAAerpC,OACpC,cAAA,OAAA,aAEYqS,EAAE/S,EAAM+zC,MAAOrzC,GAAM,YAAA,SAAAwd,KAAA,UAG7BslD,GAAU,CAGbxjE,EAAMsjE,SAAM9jE,EACVmb,EAAIS,MAAMiO,MAAQ1O,EAAIS,MAAMiO,UAC5BrpB,EAAMud,KAAII,EAAAC,YAAA8pB,GAAA,CAAAnqB,KAAiBvd,EAAMud,MAAI,MACrC0W,IAAOmvB,CAAAA,CAAAA,EAAAA,MAvBFpjD,EAAM2iC,yBAgCpB,MC5IE8gC,GAA0BpsD,GAAa,CAClDpD,MAAO1S,OACPigC,QAASjgC,UAENmW,MACF,kBAEUgsD,GAAiB7oD,IAAAA,CAAmB,CAC/CzQ,KAAM,iBAENpK,MAAOyjE,KAEPjpD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAsBrB,OArBA8J,GAAgB,CACdkJ,KAAM,CACJrN,MAAOjU,EAAMiU,MACbutB,QAASxhC,EAAMwhC,QACfuP,MAAM,EACN3vB,QAAS,UAIblE,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,mBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAEjBkM,EAAM3D,gBAIL,MCtCEksD,GAAc3oD,GAAuB,iBCoCrC4oD,GAAmBvsD,GAAa,CAC3CwsD,OAAQtiE,OACRqnC,QAASrnC,OACT0S,MAAO1S,OACPgc,KAAMH,GACNgV,MAAO7wB,OACPyvC,QAAS1sB,QACTukC,OAAQvkC,QACR3S,KAAMpQ,UAEHu/B,QACAppB,QACA6sB,QACAvK,QACAgiB,QACA9a,QACA0I,QACAkC,QACAjQ,QACApH,QACApD,MACF,WAEUhQ,GAAUxG,IAAAA,CAAiC,CACtDzQ,KAAM,UAENpK,MAAO4jE,KAEPppD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMqtB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB17B,EAAO,YAC9EihC,cAAEA,GAAkBD,GAAUhhC,IAC9BykC,eAAEA,GAAmBD,GAAWxkC,IAChCm8C,eAAEA,EAAcZ,OAAEA,GAAWU,GAAWj8C,IACxCs6B,gBAAEA,GAAoBD,GAAar6B,IACnCqhC,iBAAEA,GAAqBD,GAAaphC,IACpC+pC,eAAEA,GAAmBF,GAAY7pC,IACjCgsC,gBAAEA,GAAoBD,GAAY/rC,IAClCg8B,eAAEA,GAAmBD,GAAW/7B,IAEhC8yB,aAAEA,GAAiBgB,GAAa9zB,GAEhCiU,EAAQqqB,EAAAA,MAAMt+B,EAAO,SACrBwhC,EAAUlD,EAAAA,MAAMt+B,EAAO;AAE7BoY,GAAgB,CAAEsrD,eAAgB,CAAEzvD,MAAAA,EAAOutB,QAAAA,KAE3CtkB,IAAU,KACR,MAAM0X,KAAa50B,EAAM2R,OAAQyJ,EAAMzJ,MACjCuxC,KAAqBljD,EAAM6jE,SAAU7jE,EAAMud,MAC3Cs0B,KAAgBqR,IAAmB9nC,EAAM6mB;AAE/C,OAAAtkB,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,WACA,CACE,oBAAqB3X,EAAMgxC,SAAWuK,EAAO76C,MAC7C,mBAAoBV,EAAM6oD,OAC1B,CAAE,aAAY7oD,EAAMoyB,gBAAiBpyB,EAAMoyB,OAE7CU,EAAapyB,MACbi7B,EAAuBj7B,MACvBugC,EAAcvgC,MACd+jC,EAAe/jC,MACfy7C,EAAez7C,MACf2gC,EAAiB3gC,MACjBsrC,EAAgBtrC,MAChBs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtB45B,EAAgB55B,MAChBqpC,EAAerpC,MACfV,EAAMkP,OACPgP,KAAA,UAAA,CAAAzG,QAAAA,IAGCo6B,CAAAA,GAAUl0B,EAAAA,YAAA,MAAA,CAAAna,IAAA,UAAAmU,MAAA,qBAAA,CAELyD,EAAM6mB,QAMetkB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,mBAAAiV,UAKRyqC,EAAe5rC,SACjB,CACR4J,QAAS,CACPjN,MAAOA,EAAMvT,MACb8gC,QAASA,EAAQ9gC,MACjB6c,KAAMvd,EAAMud,KACZihB,MAAOx+B,EAAM6jE,UAGCzoD,EAAM6mB,SApBZtkB,EAAAA,YAAAuD,GAAA,CAAA1d,IAAA,iBAAAyQ,MAGJA,EAAMvT,MAAK8gC,QACTA,EAAQ9gC,MAAK6c,KAChBvd,EAAMud,KAAIihB,MACTx+B,EAAM6jE,QAAMlmD,QAkB3BA,EAAAA,YAAA,MAAA,CAAAhG,MAAA,qBAAA,CAGGid,GAAOjX,EAAAC,YAAA+lD,GAAA,CAAAngE,IAAA,QAAA,CAAAiU,QAAAA,IAAA,CAEH2D,EAAMzJ,UAAY3R,EAAM2R,QAI5ByJ,EAAM3D,cAGR2D,EAAM0oD,SAAOnmD,EAAAC,YAAA8lD,GAAA,CAAAlgE,IAAA,WACmC4X,EAAM0oD,kBChIrDC,GAA6B1sD,GAAa,CACrD4tB,UAAW1jC,OACXqnC,QAASrnC,OACT0S,MAAO1S,OACPyiE,KAAM1/C,QACN2Q,KAAM,CACJ3tB,KAAM/F,OACN06B,UAAYh7B,IAAYA,GAAK,CAAC,aAAc,SAAS8E,SAAS9E,IAEhEyN,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IAEXgO,OAAQ,CACNne,KAAMgd,QACN7M,SAAS,MAGRqpB,QACAppB,QACA6sB,QACArD,QACArF,QACAtX,GAAoB,CAAEna,KAAM,yBAC5BqqB,GAAa,CAAEvZ,IAAK,cACpBiqB,GAAe,CAAEG,cAAe,uBAChCjU,MACF,qBAEU4yC,GAAoBppD,IAAAA,CAMgB,CAC/CzQ,KAAM,oBAENpK,MAAO+jE,KAEP5lC,MAAO,CACL,gBAAkBz9B,IAAe,EACjC,oBAAsBA,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBkB,MACnBiN,cAAEA,GAAkBD,GAAUhhC,IAC9B27B,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,aACpFykC,eAAEA,GAAmBD,GAAWxkC,IAChCqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAW/7B,IAChCwiC,cAAEA,GAAkBF,KACpB5zB,EAAShF,EAAAA,UAAS,IACtBjI,OAAOzB,EAAM0O,SACM,gBAAlB1O,EAAMwhC,QAA4B,EAAI,IACpB,YAAlBxhC,EAAMwhC,QAAwB,GAAK,KAEhCqB,EAAWta,GAAgBvoB,EAAO,SAAUA,EAAMylB,SAClDH,iBAAEA,EAAgBV,cAAEA,GAAkBK,GAAc,CACxDC,GAAIllB,EAAMoK,KACVoa,MAAO9a,EAAQA,UAAC,IAAMyL,SAASnV,EAAMwkB,MAAO,MAC5CoC,SAAUld,EAAAA,UAAS,IAAM,WACzBud,WAAYvd,EAAQA,UAAC,IAAMm5B,EAASniC,MAAQgO,EAAOhO,MAAQ,IAC3DwmB,YAAaxY,EACb+W,OAAQod,EACRpe,SAAU6Z,EAAAA,MAAMt+B,EAAO;AAoDzB,OAjDA8lC,GAAS9lC,EAAOgnC,IAEhB5uB,GAAgB,CACdkJ,KAAM,CACJ2jB,UAAW3G,EAAAA,MAAMt+B,EAAO,aACxBiU,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpBwhC,QAASlD,EAAAA,MAAMt+B,EAAO,WACtBgxC,QAAStnC,EAAAA,UAAS,IAAqB,eAAf1J,EAAMi1B,OAC9B7T,QAAS,SAEV,CAAE1I,QAAQ,IAEbwE,IAAU,IACRS,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,sBACA,CACE,8BAA+BkrB,EAASniC,MACxC,4BAA6BV,EAAMgkE,KACnC,6BAA6C,UAAfhkE,EAAMi1B,MAEtCnC,EAAapyB,MACbi7B,EAAuBj7B,MACvBugC,EAAcvgC,MACd+jC,EAAe/jC,MACf2gC,EAAiB3gC,MACjBs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtB4kB,EAAiB5kB,MACjB,CACEgO,OAAQvN,EAAcuN,EAAOhO,QAE/B8hC,EAAc9hC,MACdV,EAAMkP,QACP,CAAAuI,QAAAA,IAAA,CAEC2D,EAAM3D,SAAOkG,EAAAA,YAAA,MAAA,CAAAhG,MAAA,gCAAA,CAETyD,EAAM3D,iBAOXmN,KC5HEs/C,GAAmB7sD,GAAa,CAC3C8sD,WAAY7/C,QACZ8/C,YAAa,CACX98D,KAAMgd,QACN7M,SAAS,GAEX4sD,WAAY//C,WAETwuC,GAAkB,CACnB59B,OAAQ,gBACR85B,eAAgB,QAChBloC,WAAY,CAAE3e,UAAW8uB,IACzB1P,OAAQ,QAET,WAEU+8C,GAAUzpD,IAAAA,CAAiC,CACtDzQ,KAAM,UAENpK,MAAOkkE,KAEP/lC,MAAO,CACL,oBAAsBz9B,IAAmB,EACzC8yD,WAAYA,KAAM,GAGpBh5C,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAMu0B,EAAWta,GAAgBvoB,EAAO,eAClC8xD,QAAEA,GAAYD,KAEd2E,EAAUx+C,EAAAA;AAChB,SAASgpC,EAAW5V,GAClB,MAAMx8B,EAASw8B,EAAEgW,cACXvyC,EAAQu8B,EAAEvkC;AAEhB,GACE+H,IAAWC,GACX2nD,EAAQ91D,OAAOmrD,WAEf2K,EAAQ91D,OAAOozD,YAEd,CAACtoD,SAAUgrD,EAAQ91D,MAAMmrD,WAAW9lD,SAAS8I,KAE7C2nD,EAAQ91D,MAAMmrD,UAAU7/C,SAAS6C,GAClC,CACA,MAAMhD,EAAYjB,EAAkB4rD,EAAQ91D,MAAMmrD;AAElD,IAAKhgD,EAAUtM,OAAQ;AAEvB,MAAMglE,EAAe14D,EAAU,GACzB24D,EAAc34D,EAAUA,EAAUtM,OAAS;AAE7CqP,IAAW21D,EACbC,EAAY14D,QAEZy4D,EAAaz4D,SAanB,SAAS6qB,IACH6/B,EAAQ91D,OAAOmrD,YAAc2K,EAAQ91D,MAAMmrD,UAAU7/C,SAASR,SAASC,gBACzE+qD,EAAQ91D,MAAMmrD,UAAU//C,MAAM,CAAE81C,eAAe,IAInD,SAASjsB,IACPxM,EAAK,cAsDP,OArEIxqB,GACFilB,EAAKA,OAAC,IAAMif,EAASniC,OAASV,EAAMokE,cAAan7D,IAC/CA,EACIuC,SAASqF,iBAAiB,UAAWmwC,GACrCx1C,SAASoF,oBAAoB,UAAWowC,KAC3C,CAAE34B,WAAW,IAalBzE,QAAMif,GAAU8U,MAAAA,IACT1uC,UACG4b,EAAQA,WACd2xC,EAAQ91D,MAAO0vD,aAAatkD,MAAM,CAAE81C,eAAe,QAIvD1kC,IAAU,KACR,MAAMo6C,EAAejE,GAAS34C,YAAY1a,GACpC4nD,EAAiBxrB,EAAAA,WAAW,CAChC,gBAAiB,SACjB,gBAAiB76B,OAAOshC,EAASniC,QAChCV,EAAM4nD,gBACHqL,EAAe72B,EAAAA,WAAW,CAC9BoM,UAAW,GACVxoC,EAAMizD;AAET,OAAAt1C,EAAAC,YAAAy1C,GAAAt1C,aAAA,CAAA/F,IAEUw+C,EAAO7+C,MACN,CACL,WACA,CACE,uBAAwB3X,EAAMmkE,WAC9B,uBAAwBnkE,EAAMqkE,YAEhCrkE,EAAM2X,OACPzI,MACOlP,EAAMkP,OACTooD,EAAY,CAAA30B,WACPE,EAASniC,MAAK,sBAAA60C,GAAd1S,EAASniC,MAAK60C,EAAA,aAAA,OAAAqS,eAEPA,EAAcqL,aAChBA,EAAY/0C,KAAA,SAAAyY,aAEZA,EAAYhB,aACZA,GACVm8B,GAAO,CAGV9J,UAAW5sC,EAAM4sC,UACjBvwC,QAAS,WAAA,IAAA,IAAAyV,EAAAnsB,UAAAxB,OAAIkL,EAAI9J,IAAAA,MAAAusB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1iB,EAAI0iB,GAAApsB,UAAAosB;AAAA,OAAAxP,EAAAA,YAAAoc,GAAA,CAAAnhB,KAAA,WAAA,CAAAnB,QAAAA,IAEX2D,CAAAA,EAAM3D,aAAahN,YAQ1BwrD,GAAY,GAAIO,MCxIdiO,GAAwBptD,GAAa,CAChDyL,MAAOwB,WAEJ4/C,GAAiB,CAClBp9C,WAAY,6BAEb,gBAEUpE,GAAe7H,IAAAA,CAAiC,CAC3DzQ,KAAM,eAENpK,MAAOykE,KAEPtmC,MAAO,CACL,oBAAsBz9B,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMu0B,EAAWta,GAAgBvoB,EAAO;AA0BxC,OAxBAkd,IAAU,KACR,MAAMwnD,EAAcJ,GAAQ5pD,YAAY1a;AAExC,OAAA2d,cAAA2mD,GAAAvmD,EAAAqe,WAESsoC,EAAW,CAAA/hD,aACF,CACZ,0BACA3iB,EAAM2iB,cACPggB,WACSE,EAASniC,MAAK,sBAAA60C,GAAd1S,EAASniC,MAAK60C,EAAA59B,MACjB,CACL,iBACA,CACE,wBAAyB3X,EAAM8iB,OAEjC9iB,EAAM2X,OACPzI,MACOlP,EAAMkP,QACJkM,MAKT,MCrDEupD,GAA+BttD,GAAa,CACvD0T,QAAS,CAACtpB,OAAQF,WAEfmW,MACF,uBAEUktD,GAAsB/pD,IAAAA,CAAmB,CACpDzQ,KAAM,sBAENpK,MAAO2kE,KAEPnqD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAarB,OAZA4O,IAAU,IAAAS,EAAAC,YAAA,KAAA,CAAAjG,MAEC,CACL,wBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OAEZkM,CAAAA,GAAO3D,aAAezX,EAAM+qB,YAI3B,MCpBE85C,GAA4BxtD,GAAa,CACpDoO,OAAQnB,QACRm+B,YAAalhD,OACb+lD,YAAa/lD,OACb0S,MAAO1S,OACPkX,SAAU6L,QACV6G,MAAO5pB,UAEJmW,QACAy1B,QACA1Y,GAAa,CAAEvZ,IAAK,QACtB,oBAEU4pD,GAAmBjqD,IAAAA,CAAmB,CACjDzQ,KAAM,mBAENpK,MAAO6kE,KAEPrqD,MAAOxa,EAAKsO,GAAoB,IAAlB8M,MAAEA,EAAKpW,MAAEA,GAAOsJ;AAC5B,MAAMq+B,EAAOP,GAAQpsC,EAAOgF,GACtB69B,EAAWn5B,EAAQA,UAAC,IAAM1J,EAAMylB,QAAUknB,EAAK9J,UAAUniC,QACzDuT,EAAQvK,YAAS,IAAMm5B,EAASniC,MAAQV,EAAMsnD,YAActnD,EAAMiU,SAElEunB,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAarnB;AAkC3D,OAhCAiJ,IAAU,IACRS,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,qBACA,CACE,6BAA8BkrB,EAASniC,MACvC,+BAAgCV,EAAMyY,SACtC,CAAE,GAAEzY,EAAMyiD,eAAgB5f,EAASniC,OAASV,EAAMyiD,aAEpDjnB,EAAiB96B,MACjBV,EAAM2X,OACPzI,MACM,CACLusB,EAAgB/6B,MAChBV,EAAMkP,OACP,eACc2zB,EAASniC,MAAQ,YAASlB,GAAS,CAAAiY,QAAAA,IAEhD,CAACk1B,EAAKJ,OAAO7rC,MAAwCid,EAAAA,YAAA,IAAA,CAAAhG,MAAA,2BAAA60B,KAG5CG,EAAKH,KAAK9rC,MAAK,eACPmiC,EAASniC,MAAQ,YAASlB,EAAS6oC,QACxCsE,EAAKI,UAEb3xB,CAAAA,EAAM3D,aAAezX,EAAMmrB,QAPV/P,EAAM3D,aAAezX,EAAMmrB,WAajD,MCjCE45C,GAAwB1tD,GAAa,CAChDorC,YAAalhD,OACb+lD,YAAa/lD,OACbqnC,QAASrnC,OACT0S,MAAO1S,OACPkX,SAAU6L,QACVyG,QAAS,CACPzjB,KAAM/F,OACNkW,QAAS,KAEX8F,KAAMH,GACNoJ,MAAO,CACLlf,KAAM3G,MACN8W,QAASA,IAAO,OAGfC,QACA6sB,QACA1I,QACApH,GAAa,CAAEvZ,IAAK,QACtB,gBAEU8pD,GAAenqD,IAAAA,CAWqB,CAC/CzQ,KAAM,eAENpK,MAAO+kE,KAEPvqD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMqtB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,aACpFykC,eAAEA,GAAmBD,GAAWxkC,IAChCg8B,eAAEA,GAAmBD,GAAW/7B;AAEtCoY,GAAgB,CACdwsD,oBAAqB,CACnB75C,QAASuT,EAAAA,MAAMt+B,EAAO,YAExB8kE,iBAAkB,CAChBriB,YAAankB,EAAAA,MAAMt+B,EAAO,eAC1BsnD,YAAahpB,EAAAA,MAAMt+B,EAAO,eAC1BiU,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpByY,SAAU6lB,EAAAA,MAAMt+B,EAAO;AAI3B,MAAMwmB,EAAQ9c,EAAAA,UAAS,IAAM1J,EAAMwmB,MAAMpf,KAAI5G,GACpB,iBAATA,EAAoB,CAAEA,KAAM,CAAE2qB,MAAO3qB,GAAQgpD,IAAKhpD,GAAS,CAAEA,KAAAA,EAAMgpD,IAAKhpD;AAwExF,OArEA0c,IAAU,KACR,MAAM20B,KAAgBz2B,EAAM6mB,UAAWjiC,EAAMud;AAE7C,OAAAI,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,gBACAgkB,EAAuBj7B,MACvB+jC,EAAe/jC,MACfs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtBV,EAAMkP,QACP,CAAAuI,QAAAA,IAECo6B,CAAAA,GAAUl0B,EAAAA,YAAA,KAAA,CAAAna,IAAA,UAAAmU,MAAA,0BAAA,CAELyD,EAAM6mB,QAIYtkB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,mBAAAiV,UAKLzY,EAAMud,KAAIjG,SACZ,CACRowB,MAAO,CACLnqB,KAAMvd,EAAMud,KACZzc,OAAO,KAGOsa,EAAM6mB,SAhBZtkB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,eAAA1C,OAAA,EAAAyc,KAILvd,EAAMud,MAAII,QAkBvB6I,EAAM9lB,MAAM0G,KAAI,CAAA4O,EAAgBG,EAAOg0C,KAAK,IAA3B3pD,KAAEA,EAAIgpD,IAAEA,GAAKxzC;AAAA,OAAA2H,EAAAC,YAAA4W,EAAAjtB,eAE1B6T,EAAM5a,OAAO,CAAEA,KAAAA,EAAM2V,MAAAA,KAAQwH,EAAAA,YAAAmnD,GAAA/mD,aAAA,CAAAva,IAErB2S,EAAKsC,SACAtC,GAASg0C,EAAM5qD,OAAS,GACb,iBAATiB,EAAoB,CAAE2qB,MAAO3qB,GAASA,GAC1C,CACPiX,QAAS2D,EAAM+P,MAAQ,IAAM/P,EAAM+P,QAAQ,CAAE3qB,KAAAA,EAAM2V,MAAAA,SAAW3W,IAKlE2W,EAAQg0C,EAAM5qD,OAAS,GAACoe,EAAAC,YAAAgnD,GAEb,KAAA,CACPntD,QAAS2D,EAAM2P,QAAU,IAAM3P,EAAM2P,UAAU,CAAEvqB,KAAMgpD,EAAKrzC,MAAAA,SAAW3W,SAO/E4b,EAAM3D,kBAKP,MC3JEwtD,GAAepqD,IAAAA,CAAmB,CAC7CzQ,KAAM,eAENpK,MAAO0X,KAEP8C,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAoBrB,OAnBA8J,GAAgB,CACdkJ,KAAM,CACJyvB,MAAM,EACN3vB,QAAS,UAIblE,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,iBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAEjBkM,EAAM3D,gBAIL,MCzBEytD,GAAyB7tD,GAAa,CACjDkgB,QAAS,CAAC91B,OAAQF,WAEfmW,QACA+c,MACF,iBAEU0wC,GAAgBtqD,IAAAA,CAAmB,CAC9CzQ,KAAM,gBAENpK,MAAOklE,KAEP1qD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAerB,OAdA4O,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,kBACA3X,EAAM2X,OACPzI,MACM,CACL,CAAE,4BAA6BlP,EAAMu3B,SACrCv3B,EAAMkP,QAEEkM,KAIP,MC/BEgqD,GAAapqD,GAAuB,gBCoBpCqqD,GAAoBhuD,GAAa,CAC5CqrC,aAAcnhD,OACduvC,WAAY1zB,GACZylC,cAAethD,OACfsvC,YAAazzB,GACbkrC,SAAU,CAAC/mD,OAAQE,QACnB0pB,MAAO,CAAC5pB,OAAQE,WAEbiW,QACA6sB,MACF,aAEU+gC,GAAYzqD,IAAAA,CAAmC,CAC1DzQ,KAAM,YAENpK,MAAOqlE,KAEP7qD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAoHrB,OAnHA4O,IAAU,KACR,MAAMgmC,KAAqBljD,EAAM6iD,gBAAiB7iD,EAAM6wC,aAClDgB,KAAgBqR,IAAmB9nC,EAAM6mB,SACzC+gB,KAAoBhjD,EAAM0iD,eAAgB1iD,EAAM8wC,YAChDgB,KAAekR,IAAkB5nC,EAAM8mB,QACvCH,IAA6B,MAAf/hC,EAAMmrB,QAAiB/P,EAAM+P,OAC3Cs9B,IAAmC,MAAlBzoD,EAAMsoD,WAAoBltC,EAAMktC;AAEvD,OAAA3qC,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,cACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OAEZ2iC,CAAAA,GAAUl0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,UAAAmU,MAAA,wBAAA,CAELyD,EAAM6mB,QAgBJtkB,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,mBAAAiV,UAKWyqC,EAAe5rC,SACjB,CACR4J,QAAS,CACPsgB,QAASxhC,EAAMwhC,QACfhD,MAAOx+B,EAAM6iD,eAEfnb,MAAO,CACLlG,QAASxhC,EAAMwhC,QACfjkB,KAAMvd,EAAM6wC,eAGEz1B,EAAM6mB,SAhCZtkB,cAAA6W,EAAAA,SAAA,KAAA,CAEVx0B,EAAM6iD,eAAallC,EAAAA,YAAAuD,GAAA,CAAA1d,IAAA,iBAAAg+B,QAGPxhC,EAAMwhC,QAAOhD,MACfx+B,EAAM6iD,eAAa,MAI7B7iD,EAAM6wC,aAAWlzB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,eAAAg+B,QAGLxhC,EAAMwhC,QAAOjkB,KAChBvd,EAAM6wC,aAEhB,UAoBRlzB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,wBAAA,CAGGoqB,GAAQpkB,EAAAC,YAAAwnD,GAAA,CAAA5hE,IAAA,SAAA,CAAAiU,QAAAA,IAAA,CAEJ2D,EAAM+P,WAAanrB,EAAMmrB,SAI7Bs9B,GAAW9qC,EAAAC,YAAAunD,GAAA,CAAA3hE,IAAA,YAAA,CAAAiU,QAAAA,IAAA,CAEP2D,EAAMktC,cAAgBtoD,EAAMsoD,YAIhCltC,EAAM3D,cAGRq6B,GAASn0B,EAAAC,YAAA,MAAA,CAAApa,IAAA,SAAAmU,MAAA,uBAAA,CAEJyD,EAAM8mB,OAgBJvkB,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,kBAAAiV,UAKWuqC,EAAc1rC,SAChB,CACR4J,QAAS,CACPsgB,QAASxhC,EAAMwhC,QACfhD,MAAOx+B,EAAM0iD,cAEfhb,MAAO,CACLlG,QAASxhC,EAAMwhC,QACfjkB,KAAMvd,EAAM8wC,cAGE11B,EAAM8mB,QAhCbvkB,cAAA6W,EAAAA,SAAA,KAAA,CAETx0B,EAAM8wC,YAAUnzB,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,cAAAg+B,QAGJxhC,EAAMwhC,QAAOjkB,KAChBvd,EAAM8wC,YAAU,MAIzB9wC,EAAM0iD,cAAY/kC,EAAAA,YAAAuD,GAAA,CAAA1d,IAAA,gBAAAg+B,QAGNxhC,EAAMwhC,QAAOhD,MACfx+B,EAAM0iD,cAEjB,eAyBR,MCrJE6iB,GAAqBluD,GAAa,CAC7CkgB,QAAS,CAAC91B,OAAQF,WAEfmW,QACA+c,MACF,aAEU+wC,GAAY3qD,IAAAA,CAAmB,CAC1CzQ,KAAM,YAENpK,MAAOulE,KAEP/qD,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAerB,OAdA4O,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,cACA3X,EAAM2X,OACPzI,MACM,CACL,CAAE,wBAAyBlP,EAAMu3B,SACjCv3B,EAAMkP,QAEEkM,KAIP,MCOEqqD,GAAiBpuD,GAAa,CACzCqrC,aAAcnhD,OACduvC,WAAY1zB,GACZ3E,SAAU6L,QACV7c,KAAM6c,QACNohD,MAAOphD,QACPka,MAAOj9B,OACPorC,KAAM,CACJrlC,KAAMgd,QACN7M,aAASjY,GAEXqjD,cAAethD,OACfsvC,YAAazzB,GACb6zB,OAAQ,CACN3pC,KAAM,CAACgd,QAASvkB,QAChB0X,SAAS,GAEX6wC,SAAU,CAAC/mD,OAAQE,QACnBkQ,KAAM,CAACpQ,OAAQE,QACf0pB,MAAO,CAAC5pB,OAAQE,WAEbq/B,QACAppB,QACA6sB,QACAvK,QACAkH,QACAuK,QACA7B,QACAkC,QACAjQ,QACAsR,QACA1Y,QACApD,QACAwT,GAAiB,CAAEzjB,QAAS,cAC9B,SAWUyB,GAAQhI,IAAAA,CAA+B,CAClDzQ,KAAM,QAEN6zB,WAAY,CAAEwS,OAAAA,IAEdzwC,MAAOylE,KAEPjrD,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChCihC,cAAEA,GAAkBD,GAAUhhC,IAC9Bo7B,aAAEA,EAAYC,YAAEA,EAAW0J,eAAEA,GAAmBD,GAAW9kC,IAC3DykC,eAAEA,GAAmBD,GAAWxkC,IAChCs6B,gBAAEA,GAAoBD,GAAar6B,IACnCqhC,iBAAEA,GAAqBD,GAAaphC,IACpC2rC,cAAEA,GAAkBD,GAAU1rC,IAC9B+pC,eAAEA,GAAmBF,GAAY7pC,IACjCgsC,gBAAEA,GAAoBD,GAAY/rC,IAClCg8B,eAAEA,GAAmBD,GAAW/7B,GAChC2sC,EAAOP,GAAQpsC,EAAOgF,GAEtBunC,EAAS7iC,YAAS,KAAqB,IAAf1J,EAAM2sC,MAAkBA,EAAKJ,OAAO7rC,QAC5DkkC,EAAcl7B,EAAAA,UAAS,KAC1B1J,EAAMyY,WACQ,IAAfzY,EAAM2sC,OACL3sC,EAAM2sC,MAAQA,EAAK/H,YAAYlkC;AAkHlC,OA/GAwc,IAAU,KACR,MAAM00B,EAAMrF,EAAO7rC,MAAQ,IAAMV,EAAMkb,IACjC6mB,KAAc3mB,EAAM+P,OAAwB,MAAfnrB,EAAMmrB,OACnCs9B,KAAiBrtC,EAAMktC,UAA8B,MAAlBtoD,EAAMsoD,UACzCqd,EAAY5jC,GAAY0mB,EACxB3W,KAAe12B,EAAM8mB,QAAUliC,EAAM0iD,cAAgB1iD,EAAM8wC,YAC3De,KAAgBz2B,EAAM6mB,SAAWjiC,EAAM6iD,eAAiB7iD,EAAM6wC,aAC9D7O,KAAc5mB,EAAMojB,QAASx+B,EAAMw+B,OACnConC,EAAcD,GAAa9zB,GAAcC,EACzCld,KAAaxZ,EAAMzJ,MAAsB,MAAd3R,EAAM2R;AAEvC,OAAAivB,EAAAT,eAAAxiB,EAAAC,YAAAg0B,EAAA,CAAAj6B,MAEW,CACL,SACA,CACE,mBAAoB3X,EAAMyY,SAC1B,eAAgBzY,EAAMyH,KACtB,gBAAiBzH,EAAM0lE,SAAW1lE,EAAMyY,UAAYzY,EAAMyH,MAC1D,eAAgBm9B,EAAYlkC,OAE9BoyB,EAAapyB,MACbugC,EAAcvgC,MACd06B,EAAa16B,MACb+jC,EAAe/jC,MACf2gC,EAAiB3gC,MACjBirC,EAAcjrC,MACdsrC,EAAgBtrC,MAChBs7B,EAAet7B,MACfqkC,EAAerkC,MACfV,EAAM2X,OACPzI,MACM,CACLmsB,EAAY36B,MACZ45B,EAAgB55B,MAChBqpC,EAAerpC,MACfV,EAAMkP,OACPs9B,KACMG,EAAKH,KAAK9rC,MAAK2nC,QACZzD,EAAYlkC,OAASisC,EAAKI,SAAQvE,SAEjCxoC,EAAMyY,UAAY,OAAIjZ,GAAS,CAAAiY,QAAAA,IAExCuqB,CAAAA,GAAQrkB,EAAAA,YAAA,MAAA,CAAAna,IAAA,QAAAmU,MAAA,iBAAA,CAEHyD,EAAMojB,MAIY7gB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,iBAAAiV,UAKLzY,EAAMw+B,MAAKlnB,SACb,CACR0mB,KAAM,CACJZ,OAAO,EACPQ,IAAK59B,EAAMw+B,SAGGpjB,EAAMojB,OAhBd7gB,EAAAA,YAAAqgB,GAAA,CAAAx6B,IAAA,YAAA45B,OAAA,EAAAQ,IAIJ59B,EAAMw+B,OAAK7gB,QAgBxBA,EAAAA,YAAAiuB,GAAA,CAAAxhC,KAAA,SAAAqb,SAIYzlB,EAAMugB,QAAOtM,MACS,kBAAlBjU,EAAMugB,aAAwB/gB,EAAYQ,EAAMugB,SACtD,CAAE9I,QAAS2D,EAAM42B,SAG1B4zB,GAAWjoD,EAAAC,YAAA0nD,GAAA,CAAA9hE,IAAA,OAAAq/C,cAGO7iD,EAAM6iD,cAAahS,YACrB7wC,EAAM6wC,YAAW1lB,MACvBnrB,EAAMmrB,MAAKm9B,SACRtoD,EAAMsoD,SAAQ5F,aACV1iD,EAAM0iD,aAAY5R,WACpB9wC,EAAM8wC,YAAU,CAG3Br5B,QAAS2D,EAAM5a,KACfyhC,QAAS7mB,EAAM6mB,QACf9W,MAAO/P,EAAM+P,MACbm9B,SAAUltC,EAAMktC,SAChBpmB,OAAQ9mB,EAAM8mB,SAKlBtN,GAAOjX,EAAAC,YAAA4nD,GAAA,CAAAhiE,IAAA,QAAA,CAAAiU,QAAAA,IAAA,CAEH2D,EAAMzJ,UAAY3R,EAAM2R,QAI5ByJ,EAAM3D,YAEN2D,EAAM0oD,SAAOnmD,EAAAC,YAAAqnD,GACU,KAAA,CAAExtD,QAAS2D,EAAM0oD,UAGxCn/B,GAAYC,EAAYlkC,MAAO,aAASmgC,CAAAA,CAAAA,EAAAoU,2BAlE/BrQ,EAAYlkC,OAASV,EAAMixC,aAuErC;AChKX,SAAS40B,GAAY/pD,EAAmBgqD,GACtC,MAAM7qB,EAAQn/B,EAAMiqD,eAAe;AACnCD,EAAQE,YAAc/qB,EAAM5P,QAC5By6B,EAAQG,YAAchrB,EAAM3M,QAE5Bw3B,EAAQhlE,QAAQ,CAAEolE,cAAepqD,KAAUgqD,IAG7C,SAASK,GAAUrqD,EAAmBgqD,GACpC,MAAM7qB,EAAQn/B,EAAMiqD,eAAe;AACnCD,EAAQM,UAAYnrB,EAAM5P,QAC1By6B,EAAQO,UAAYprB,EAAM3M,QAE1Bw3B,EAAQjjE,MAAM,CAAEqjE,cAAepqD,KAAUgqD,IA/BpBA,CAAAA,IACrB,MAAME,YAAEA,EAAWI,UAAEA,EAASH,YAAEA,EAAWI,UAAEA,GAAcP;AAG3DA,EAAQvtC,QAAU6tC,EAAYJ,EAC9BF,EAAQttC,QAAU6tC,EAAYJ,EAE1BvgE,KAAKe,IAAIq/D,EAAQttC,SALJ,GAK0B9yB,KAAKe,IAAIq/D,EAAQvtC,WAC1DutC,EAAQnjE,MAASyjE,EAAYJ,EALX,IAKyCF,EAAQnjE,KAAKmjE,GACxEA,EAAQljE,OAAUwjE,EAAYJ,EANZ,IAM0CF,EAAQljE,MAAMkjE,IAGxEpgE,KAAKe,IAAIq/D,EAAQvtC,SAVJ,GAU0B7yB,KAAKe,IAAIq/D,EAAQttC,WAC1DstC,EAAQrjE,IAAO4jE,EAAYJ,EAVT,IAUuCH,EAAQrjE,GAAGqjE,GACpEA,EAAQpjE,MAAS2jE,EAAYJ,EAXX,IAWyCH,EAAQpjE,KAAKojE,KAmB1EQ,CAAcR,GAGhB,SAASS,GAAWzqD,EAAmBgqD,GACrC,MAAM7qB,EAAQn/B,EAAMiqD,eAAe;AACnCD,EAAQU,WAAavrB,EAAM5P,QAC3By6B,EAAQW,WAAaxrB,EAAM3M,QAE3Bw3B,EAAQY,OAAO,CAAER,cAAepqD,KAAUgqD,IA8DrC,MAAMa,GAAQ,SAjCrB,SAAkB/kE,EAAiB26B,GACjC,MAAM77B,EAAQ67B,EAAQ77B,MAChBmG,EAASnG,GAAO6iD,OAAS3hD,EAAG8a,cAAgB9a,EAC5CmL,EAAUrM,GAAOqM,SAAW,CAAEk3B,SAAS,GACvC5nB,EAAMkgB,EAAQE,UAAUC,EAAErgB;AAEhC,IAAKxV,IAAWwV,EAAK;AAErB,MAAM5L,EAlCR,WAAyE,IAAhD/P,EAAoBK,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAC9C,MAAM+kE,EAAU,CACdE,YAAa,EACbC,YAAa,EACbG,UAAW,EACXC,UAAW,EACXG,WAAY,EACZC,WAAY,EACZluC,QAAS,EACTC,QAAS,EACT71B,KAAMjC,EAAMiC,KACZC,MAAOlC,EAAMkC,MACbH,GAAI/B,EAAM+B,GACVC,KAAMhC,EAAMgC,KACZ5B,MAAOJ,EAAMI,MACb4lE,KAAMhmE,EAAMgmE,KACZ7jE,IAAKnC,EAAMmC;AAGb,MAAO,CACLgjE,WAAaz6B,GAAkBy6B,GAAWz6B,EAAG06B,GAC7CK,SAAW/6B,GAAkB+6B,GAAS/6B,EAAG06B,GACzCS,UAAYn7B,GAAkBm7B,GAAUn7B,EAAG06B,IAY5Bc,CAAerqC,EAAQ77B;AAExCmG,EAAOggE,eAAiBhgE,EAAOggE,gBAAkB9mE,OAAOiE,OAAO,MAC/D6C,EAAOggE,eAAgBxqD,GAAO5L,EAE9BxQ,EAAKwQ,GAAUlM,SAAQwF,IACrBlD,EAAOgK,iBAAiB9G,EAAW0G,EAAS1G,GAAYgD,OAqB1DuvB,UAjBF,SAAoB16B,EAAiB26B,GACnC,MAAM11B,EAAS01B,EAAQ77B,OAAO6iD,OAAS3hD,EAAG8a,cAAgB9a,EACpDya,EAAMkgB,EAAQE,UAAUC,EAAErgB;AAEhC,IAAKxV,GAAQggE,iBAAmBxqD,EAAK;AAErC,MAAM5L,EAAW5J,EAAOggE,eAAexqD;AAEvCpc,EAAKwQ,GAAUlM,SAAQwF,IACrBlD,EAAO+J,oBAAoB7G,EAAW0G,EAAS1G,cAG1ClD,EAAOggE,eAAexqD,KCjGlByqD,GAA6CjvD,OAAOC,IAAI,oBACxDivD,GAAqDlvD,OAAOC,IAAI,0BAEhEkvD,GAAmB3vD,GAAa,CAC3C4vD,WAAY3iD,QACZ66B,SAAU,CACR73C,KAAM,CAACgd,QAAS/iB,OAAQ2I,SAAUnK,QAClC0X,QAAS,SAEX2nC,SAAU,CACR93C,KAAM,CAACgd,QAAS/iB,OAAQ2I,SAAUnK,QAClC0X,QAAS,SAEX8yB,QAASjmB,QACT+6B,WAAY,CACV/3C,KAAM,CAACgd,QAAS/iB,QAChB06B,UAAYh7B,GAAwB,kBAANA,GAAyB,UAANA,GAEnDg6C,MAAO,CACL3zC,KAAM,CAACvH,OAAQukB,SACf7M,aAASjY,GAEXk5C,UAAW,CACTpxC,KAAM/F,OACNkW,QAAS,cAGXkrB,WAAY,KACZlqB,SAAU6L,QACVghB,cAAe,CACbh+B,KAAM/F,OACNkW,QAAS,yBAGX4tB,UAAW,CACT/9B,KAAM,CAACgd,QAAS/iB,QAChBkW,QAAS,YAGRC,QACA+c,QACApD,MACF,WAEU61C,GAAUrsD,IAAAA,CAM0B,CAC/CzQ,KAAM,UAEN6zB,WAAY,CACV0oC,MAAAA,IAGF3mE,MAAOgnE,KAEP7oC,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChC0N,MAAEA,GAAUyjB,MACZpe,EAAEA,GAAMge,KAER+D,EAAQgR,GAAS9lC,EAAO+mE,IAExBI,EAAUnvD,EAAAA,MACVovD,EAAe19D,YAAS,IAAMgE,EAAMhN,OAASV,EAAMuqC,QAAUvqC,EAAMuqC,UACnEW,EAAaj+B,cAAW,GACxB6Z,EAAapd,EAAAA,UAAS,IAKlB,YAJyB,aAApB1J,EAAM04C,UAA2B,IAAM,OACpC0uB,EAAa1mE,OAASwqC,EAAWxqC,MAAQwqC,EAAWxqC,OACxC,WAAa,kBAIrC2mE,EAAkBp6D,aAAW,GAC7Bq6D,EAAmBtvD,WAAwBxY,GAE3C+nE,EAAc79D,EAAAA,UAAS,IACpBorB,EAAMtO,MAAM9lB,MAAM4mB,WAAU9mB,GAAQs0B,EAAMiR,SAASrlC,MAAMqF,SAASvF,EAAK0kB;AAGhFtB,EAAAA,MAAM2jD,GAAa,CAAClzB,EAAQ/U,KAC1B,MAAMkoC,EAAc1yC,EAAMtO,MAAM9lB,MAAMnB,OAChCkoE,EAAYD,EAAc;AAG9Bt8B,EAAWxqC,MADT8mE,GAAe,EACEnzB,EAAS/U,EACnB+U,IAAWozB,GAAwB,IAAXnoC,IAEb,IAAX+U,GAAgB/U,IAAWmoC,IAGjBpzB,EAAS/U,KAIhCrmB,EAAAA,QAAQ6tD,GAAe,CACrBhgD,WAAAA,EACAokB,WAAAA,EACAm8B,gBAAAA,EACAC,iBAAAA,EACAH,QAAAA;AAGF,MAAMO,EAAch+D,EAAQA,UAAC,IAAM1J,EAAMinE,YAAoC,IAAtBM,EAAY7mE,QAC7DinE,EAAiBj+D,EAAQA,UAAC,IAAM1J,EAAMinE,YAAcM,EAAY7mE,QAAUo0B,EAAMtO,MAAM9lB,MAAMnB,OAAS;AAE3G,SAASuZ,IACP4uD,EAAYhnE,OAASo0B,EAAMhc,OAG7B,SAASwG,IACPqoD,EAAejnE,OAASo0B,EAAMxV,OAGhC,MAAMsoD,EAASl+D,EAAAA,UAAS,KACtB,MAAMk+D,EAAS,GAETC,EAAY,CAChBtqD,KAAM7P,EAAMhN,MAAQV,EAAMm/C,SAAWn/C,EAAMo/C,SAC3CznC,MAAQ,cAAYyvD,EAAa1mE,MAAQ,QAAU,QACnD2nC,QAASvT,EAAMhc,KACf,aAAc/F,EAAE;AAGlB60D,EAAO5+D,KAAK0+D,EAAYhnE,MACpB0a,EAAMtC,KACJsC,EAAMtC,KAAK,CAAE9Y,MAAO6nE,IAAYlqD,EAAAC,YAAA0D,GACrBumD,EAAc,MAAAlqD,EAAAC,YAAA,MAAA,KAAA;AAI/B,MAAMkqD,EAAY,CAChBvqD,KAAM7P,EAAMhN,MAAQV,EAAMo/C,SAAWp/C,EAAMm/C,SAC3CxnC,MAAQ,cAAYyvD,EAAa1mE,MAAQ,OAAS,SAClD2nC,QAASvT,EAAMxV,KACf,aAAcvM,EAAE;AAUlB,OAPA60D,EAAO5+D,KAAK2+D,EAAejnE,MACvB0a,EAAMkE,KACJlE,EAAMkE,KAAK,CAAEtf,MAAO8nE,IAAYnqD,EAAAC,YAAA0D,GACrBwmD,EAAc,MAAAnqD,EAAAC,YAAA,MAAA,KAAA,OAIxBgqD,KAGHG,EAAer+D,EAAAA,UAAS,KAC5B,IAAoB,IAAhB1J,EAAMi7C,MAAiB,OAAOj7C,EAAMi7C;AAcxC,MAAO,IAZwB,CAC7Bt4C,KAAMA,KACJykE,EAAa1mE,MAAQoY,IAASwG,KAEhC1c,MAAOA,KACLwkE,EAAa1mE,MAAQ4e,IAASxG,KAEhChY,MAAOkV,IAAuB,IAAtBkwD,cAAEA,GAAelwD;AACvBkwD,EAAcrxB,wBAMI,IAAhB70C,EAAMi7C,MAAiB,GAAKj7C,EAAMi7C;AAqC1C,OAjCA/9B,IAAU,IAAA0jB,EAAAT,eAAAxiB,cAAA3d,EAAAkb,IAAA,CAAAlD,IAEAmvD,EAAOxvD,MACN,CACL,WACA,CACE,iCAAuD,UAArB3X,EAAMq/C,YAE1CvsB,EAAapyB,MACbV,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAuI,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,sBAAAzI,MAKV,CACLR,OAAQ44D,EAAiB5mE,QAGzB0a,CAAAA,EAAM3D,UAAU,CAAEqd,MAAAA,KAEG,IAArB90B,EAAMq/C,YAAoB1hC,EAAAA,YAAA,MAAA,CAAAhG,MAAA,sBAEtBiwD,CAAAA,EAAOlnE,UAKb0a,EAAM0f,aAAa,CAAEhG,MAAAA,OAAQ,CAAA,CAAA+L,EAAAA,iBAjBrBknC,SAAAA,EAAarnE,WAqBpB,CACLo0B,MAAAA,MC3OOkzC,GAAqB3wD,GAAa,CAC7CpD,MAAO1S,OACP0mE,MAAO3jD,QACP4jD,cAAe,CACb5gE,KAAM8V,GACN3F,QAAS,cAEX/I,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEX0wD,eAAgB7jD,QAChB8jD,wBAAyB9jD,QACzB+jD,SAAU,CACR/gE,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IACTwkB,UAAYv7B,GAA2Be,OAAOf,GAAS,GAEzDkqC,SAAU,CAACtmB,QAAS/iB,QACpB+mE,mBAAoB,CAAChkD,QAAS/iB,WAE3BylE,GAAiB,CAClBC,YAAY,EACZ5hC,UAAW,QACXga,YAAY,KAEb,aAaUkpB,GAAY1tD,IAAAA,CAMwB,CAC/CzQ,KAAM,YAENpK,MAAOgoE,KAEP7pC,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMya,EAAQR,GAAgBvoB,EAAO,eAC/B+S,EAAEA,GAAMge,KACRy3C,EAAYxwD,EAAAA;AAElB,IAAIywD,GAAgB;AAUpB,SAASC,IACF1oE,EAAMioE,OAAUO,EAAU9nE,QAE/B+nE,EAAe7pE,OAAOogC,WAAWwpC,EAAU9nE,MAAMo0B,MAAMxV,MAAOtf,EAAMqoE,SAAW,GAAKroE,EAAMqoE,SAAW,MAGvG,SAASM,IACP/pE,OAAO+gC,aAAa8oC,GACpB7pE,OAAO83B,sBAAsBgyC,GAoF/B,OArGA9kD,QAAMmF,EAAO4/C,GACb/kD,EAAAA,OAAM,IAAM5jB,EAAMqoE,UAAUM,GAC5B/kD,EAAAA,OAAM,IAAM5jB,EAAMioE,QAAOh/D,IACnBA,EAAK0/D,IACJ/pE,OAAO+gC,aAAa8oC,MAG3BlmC,EAASA,UAACmmC,GAaVxrD,IAAU,KACR,MAAM0rD,EAAc1B,GAAQxsD,YAAY1a;AAExC,OAAA2d,EAAAC,YAAAspD,GAAAnpD,aAAA,CAAA/F,IAEUwwD,GACDI,EAAW,CAAAjmC,WACN5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA59B,MACd,CACL,aACA,CACE,wCAAyC3X,EAAMooE,wBAC/C,kCAAmCpoE,EAAMsoE,oBAE3CtoE,EAAM2X,OACPzI,MACM,CACL,CAAER,OAAQvN,EAAcnB,EAAM0O,SAC9B1O,EAAMkP,SACP,CAGCuI,QAAS2D,EAAM3D,QACfqjB,WAAY9kB,IAAA,IAAC8e,MAAEA,GAAgC9e;AAAA,OAAA2H,EAAAC,YAAA4W,EAAAjtB,SAAA,KAAA,EAExCvH,EAAMmoE,gBAAcxqD,EAAAC,YAAA,MAAA,CAAAjG,MAAA,uBAAAzI,MAGZ,CACLvM,KAAmC,SAA7B3C,EAAMsoE,oBAAiCtoE,EAAMsoE,mBAAqB,EAAI,OAC5E1lE,MAAoC,UAA7B5C,EAAMsoE,mBAAiC,EAAI,SACnD,CAECxzC,EAAMtO,MAAM9lB,MAAMnB,OAAS,GAACoe,EAAAC,YAAAmc,GAAA,CAAAziB,SAEhB,CACRgK,KAAM,CACJrN,MAAOjU,EAAMiU,MACbsJ,KAAMvd,EAAMkoE,cACZr/D,KAAM,UACNuY,QAAS,SAEZ1I,QAAA,GAAA,CAAAjB,QAAAA,IAGCqd,CAAAA,EAAMtO,MAAM9lB,MAAM0G,KAAI,CAAC5G,EAAM2V,KAC7B,MAAMnW,EAAQ,CACZklB,GAAK,iBAAgB1kB,EAAK0kB,KAC1B,aAAcnS,EAAE,wCAAyCoD,EAAQ,EAAG2e,EAAMtO,MAAM9lB,MAAMnB,QACtFoY,MAAO,CACL,6BACAmd,EAAM6Q,WAAWnlC,EAAK0kB,KAAO,iBAE/BmjB,QAASA,IAAMvT,EAAM+Q,OAAOrlC,EAAK0kB,IAAI;AAGvC,OAAO9J,EAAM5a,KACT4a,EAAM5a,KAAK,CAAER,MAAAA,EAAOQ,KAAAA,IAAOmd,EAAAC,YAAA0D,GAAAvD,EAAAA,WACfvd,EAAYR,GAAW,cAO/CA,EAAM4qC,UAAQjtB,EAAAA,YAAAgtB,GAAA,CAAAhzB,MAAA,uBAAA1D,MAGsB,iBAAnBjU,EAAM4qC,SAAwB5qC,EAAM4qC,cAAWprC,EAASmjC,YACzD7N,EAAMgS,aAAa/d,EAAMroB,OAAS,GAAKo0B,EAAMtO,MAAM9lB,MAAMnB,OAAS,KAEnF,SAGLuZ,KAAMsC,EAAMtC,KACZwG,KAAMlE,EAAMkE,UAMb,MCxKEupD,GAAuBxxD,GAAa,CAC/CyxD,kBAAmB,CACjBxhE,KAAM,CAACgd,QAAS/iB,QAChBkW,aAASjY,GAEXsnB,WAAY,CACVxf,KAAM,CAACgd,QAAS/iB,QAChBkW,aAASjY,MAGRkY,QACA6tB,QACAmsB,MACF,eAEUqX,GAAcluD,IAAAA,CAAmB,CAC5CzQ,KAAM,cAEN6zB,WAAY,CACV0oC,MAAAA,IAGF3mE,MAAO6oE,KAEP1qC,MAAO,CACL,iBAAmBl1B,IAA4B,GAGjDuR,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM1P,EAASsZ,SAAO4uD,IAChBkC,EAAYxjC,GAAaxlC,EAAO+mE,KAChCrmC,SAAEA,GAAa4B;AAErB,IAAK1jC,IAAWoqE,EAAW,MAAM,IAAI7wD,MAAM;AAE3C,MAAM8wD,EAAkBh8D,cAAW,GAC7Bi8D,EAAgBx/D,EAAAA,UAAS,IAAMg3B,EAAShgC,QAC5C9B,EAAOssC,WAAWxqC,OACc,IAA5BV,EAAM8oE,mBACe,IAArB9oE,EAAM8mB;AAGZ,SAASqiD,IACFF,EAAgBvoE,OAAU9B,IAK/BqqE,EAAgBvoE,OAAQ,EACpB9B,EAAOyoE,gBAAgB3mE,MAAQ,IACjC9B,EAAOyoE,gBAAgB3mE,OAAS,EAGK,IAAjC9B,EAAOyoE,gBAAgB3mE,QACzB9B,EAAO0oE,iBAAiB5mE,WAAQlB,KAKtC,SAAS4pE,KACHH,EAAgBvoE,OAAU9B,IAK9BqqE,EAAgBvoE,OAAQ,EAEa,IAAjC9B,EAAOyoE,gBAAgB3mE,QAEzB9B,EAAO0oE,iBAAiB5mE,MAAQS,EAAcvC,EAAOuoE,QAAQzmE,OAAOuc,eAGtEre,EAAOyoE,gBAAgB3mE,OAAS,GAGlC,SAAS2oE,IACPF,IAGF,SAASG,EAAmB1nE,GACrBqnE,EAAgBvoE,OAIrBmkB,EAAAA,UAAS,KAEFqkD,EAAcxoE,OAAUuoE,EAAgBvoE,OAAU9B,IAKvDA,EAAO0oE,iBAAiB5mE,MAAQS,EAAcS,EAAGqb,kBAIrD,MAAM6J,EAAapd,EAAAA,UAAS,KAC1B,MAAMU,EAAOxL,EAAOssC,WAAWxqC,MAC3BV,EAAM8oE,kBACN9oE,EAAM8mB;AAEV,QAAQoiD,EAAcxoE,OAAgB,CACpC0J,KAAsB,iBAATA,EAAoBxL,EAAOkoB,WAAWpmB,MAAQ0J,EAC3DirB,cAAe+zC,EACfzyC,aAAcwyC,EACdtyC,iBAAkBwyC,EAClBxxC,cAAeuxC,EACfzzC,aAAcwzC,EACdryC,iBAAkBuyC,EAClB/yC,QAASgzC,OAIP1X,WAAEA,GAAeD,GAAQ3xD,EAAOgpE,EAAUrjC;AAkBhD,OAhBAzoB,IAAU,IAAAS,EAAAC,YAAAse,GAAA,CAAApV,WACsBA,EAAWpmB,MAAK+X,UAAeioB,EAAShgC,OAAK,CAAA+W,QAAAA,IAAAmpB,CAAAA,iBAAAjjB,EAAAA,YAAA,MAAA,CAAAhG,MAEhE,CACL,gBACAqxD,EAAU1jC,cAAc5kC,MACxBV,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAGjB0iD,EAAWlxD,OAAS0a,EAAM3D,cAAW,CAAA,CAAA2rC,EAAAhjB,MAF9B4oC,EAAUrjC,WAAWjlC,cAO7B,CAAEsoE,UAAAA,MCzIAO,GAAyBlyD,GAAa,IAC9C6lB,QACA2rC,MACF,iBAEUW,GAAgB3uD,IAAAA,CAA8B,CACzDzQ,KAAM,gBAEN0T,cAAc,EAEd9d,MAAOupE,KAEP/uD,MAAOxa,EAAKsO,GAAoB,IAAlB8M,MAAEA,EAAKpW,MAAEA,GAAOsJ;AAC5B4O,IAAU,KACR,MAAMusD,EAAWzrC,GAAKtjB,YAAY1a,GAC5B0pE,EAAkBX,GAAYruD,YAAY1a;AAEhD,OAAA2d,EAAAC,YAAAmrD,GAAAhrD,aAAA,CAAApG,MAEW,CACL,kBACA3X,EAAM2X,QAEH+xD,GAAe,CAAAjyD,QAAAA,IAAAkG,CAAAA,EAAAA,YAAAqgB,GAAAjgB,EAAAqe,WAGbp3B,EACAykE,GACKruD,YChCTuuD,GAAQ3uD,GAAuB,UC8B/B4uD,GAAqBtvD,GAAgB,CAChDlQ,KAAM,qBAENpK,MAxByCqX,GAAa,CACtDpD,MAAO,CACL3M,KAAMvH,QAER0Y,SAAU6L,QACVulD,QAAS,CACPviE,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IAEX/I,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEXhJ,MAAO,CACLnH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,QAGRC,MACF,qBAKMoyD,GAEP3rC,MAAO,CACL,eAAiBlqB,IAAe,EAChC,kBAAoB81D,IAAa,GAGnCvvD,MAAOxa,EAAKsO,GAAY,IAAV6a,KAAEA,GAAM7a;AACpB,MAAM07D,EAAgB/8D,cAAW,GAC3Bg9D,EAAYjyD,EAAAA,MACZkyD,EAAcj9D,EAAAA,WAAW6C,WAAW9P,EAAMyO,QAC1C07D,EAAel9D,EAAAA,WAAW6C,WAAW9P,EAAM0O,SAE3C07D,EAAepyD,EAAAA,IAAI,CAAEzJ,EAAG,EAAGC,EAAG,IAC9B67D,EAAc3gE,EAAAA,SAAS,CAC3B9B,IAAKA,IAAMwiE,EAAa1pE,MACxBqH,IAAKkB,GACH,IAAKghE,EAAUvpE,MAAO;AAEtB,MAAM6N,EAAEA,EAACC,EAAEA,GAAMvF;AACjBmhE,EAAa1pE,MAAQuI,EAErBkgB,EAAK,eAAgB,CACnBxe,EAAG3K,EAAMiU,OAAOtJ,GAAK,EACrBI,EAAGxF,EAAMgJ,EAAG,EAAG27D,EAAYxpE,OAASwpE,EAAYxpE,MAChDO,EAAG,EAAIsE,EAAMiJ,EAAG,EAAG27D,EAAazpE,OAASypE,EAAazpE,MACtDf,EAAGK,EAAMiU,OAAOtU,GAAK,OAKrB2qE,EAAY5gE,EAAAA,UAAS,KACzB,MAAM6E,EAAEA,EAACC,EAAEA,GAAM67D,EAAY3pE,MACvBqtC,EAAS54B,SAASnV,EAAM6pE,QAAS,IAAM;AAE7C,MAAO,CACLp7D,MAAOtN,EAAcnB,EAAM6pE,SAC3Bn7D,OAAQvN,EAAcnB,EAAM6pE,SAC5Bx6D,UAAY,aAAYlO,EAAcoN,EAAIw/B,OAAY5sC,EAAcqN,EAAIu/B,WAItEzqB,UAAEA,GAAcH,IAAkB/I,IACtC,IAAKkJ,EAAU1hB,IAAI+J,aAAc;AAEjC,MAAM8C,MAAEA,EAAKC,OAAEA,GAAW0L,EAAQ,GAAGmJ;AAErC2mD,EAAYxpE,MAAQ+N,EACpB07D,EAAazpE,MAAQgO;AAWvB,SAAS67D,EAAiBn/B,GACT,cAAXA,EAAE9jC,MAEJ8jC,EAAEoW,iBAGAxhD,EAAMyY,WAEV+xD,EAAgBp/B,GAEhBxsC,OAAOiS,iBAAiB,YAAa25D,GACrC5rE,OAAOiS,iBAAiB,UAAW45D,GACnC7rE,OAAOiS,iBAAiB,YAAa25D,GACrC5rE,OAAOiS,iBAAiB,WAAY45D,IAGtC,SAASD,EAAiBp/B,GACxB,GAAIprC,EAAMyY,WAAawxD,EAAUvpE,MAAO;AAExCspE,EAActpE,OAAQ;AAEtB,MAAMgqE,ElKucL,SAA8Bt/B,GACnC,MAAI,YAAaA,EACR,CAAEC,QAASD,EAAEiD,QAAQ,GAAGhD,QAASiD,QAASlD,EAAEiD,QAAQ,GAAGC,SAGzD,CAAEjD,QAASD,EAAEC,QAASiD,QAASlD,EAAEkD,SkK5crBq8B,CAAoBv/B;CA7BrC,SAA4B78B,EAAWC,EAAWS,GAChD,MAAMtM,KAAEA,EAAIqL,IAAEA,EAAGS,MAAEA,EAAKC,OAAEA,GAAWO;AACrCo7D,EAAY3pE,MAAQ,CAClB6N,EAAGhJ,EAAMgJ,EAAI5L,EAAM,EAAG8L,GACtBD,EAAGjJ,EAAMiJ,EAAIR,EAAK,EAAGU,IA2BvBk8D,CAAkBF,EAAOr/B,QAASq/B,EAAOp8B,QAAS27B,EAAUvpE,MAAMqO,yBAGpE,SAAS07D,IACP7rE,OAAOgS,oBAAoB,YAAa45D,GACxC5rE,OAAOgS,oBAAoB,UAAW65D,GACtC7rE,OAAOgS,oBAAoB,YAAa45D,GACxC5rE,OAAOgS,oBAAoB,WAAY65D,GAGzC,SAASI,IACP,IAAKZ,EAAUvpE,MAAO;AAEtB,MAAMoqE,EAASb,EAAUvpE,MACnBia,EAAMmwD,EAAOC,WAAW;AAE9B,IAAKpwD,EAAK;AAEV,MAAMqwD,EAAqBrwD,EAAIswD,qBAAqB,EAAG,EAAGH,EAAOr8D,MAAO;AACxEu8D,EAAmBE,aAAa,EAAG,wBACnCF,EAAmBE,aAAa,EAAI,QAAOlrE,EAAMiU,OAAOtJ,GAAK,oBAC7DgQ,EAAIwwD,UAAYH,EAChBrwD,EAAIywD,SAAS,EAAG,EAAGN,EAAOr8D,MAAOq8D,EAAOp8D;AAExC,MAAM28D,EAAgB1wD,EAAIswD,qBAAqB,EAAG,EAAG,EAAGH,EAAOp8D;AAC/D28D,EAAcH,aAAa,EAAG,sBAC9BG,EAAcH,aAAa,EAAG,sBAC9BvwD,EAAIwwD,UAAYE,EAChB1wD,EAAIywD,SAAS,EAAG,EAAGN,EAAOr8D,MAAOq8D,EAAOp8D,QAwD1C,OArDAkV,EAAAA,OAAM,IAAM5jB,EAAMiU,OAAOtJ,GAAGkgE,EAAc,CAAExiD,WAAW,IACvDzE,SAAM,IAAM,CAACsmD,EAAYxpE,MAAOypE,EAAazpE,SAAQ,CAAC2zC,EAAQ/U,KAC5DurC,IACAT,EAAa1pE,MAAQ,CACnB6N,EAAG87D,EAAY3pE,MAAM6N,EAAI8lC,EAAO,GAAK/U,EAAO,GAC5C9wB,EAAG67D,EAAY3pE,MAAM8N,EAAI6lC,EAAO,GAAK/U,EAAO,MAE7C,CAAE11B,MAAO,SAEZga,SAAM,IAAM5jB,EAAMiU,QAAO,KACnB+1D,EAActpE,MAChBspE,EAActpE,OAAQ,EAIxB0pE,EAAa1pE,MAAQV,EAAMiU,MAAQ,CACjC1F,EAAGvO,EAAMiU,MAAMlJ,EAAIm/D,EAAYxpE,MAC/B8N,GAAI,EAAIxO,EAAMiU,MAAMhT,GAAKkpE,EAAazpE,OACpC,CAAE6N,EAAG,EAAGC,EAAG,KACd,CAAEquD,MAAM,EAAMx0C,WAAW,IAE5Bka,aAAU,IAAMsoC,MAEhB3tD,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAA5F,IAEAsL,EAAS3L,MACR,CACL,wBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKgzC,YACLqoB,EAAee,oBACPf,GAAe,CAAA5sD,EAAAC,YAAA,SAAA,CAAA5F,IAG7BiyD,EAASx7D,MACPy7D,EAAYxpE,MAAKgO,OAChBy7D,EAAazpE,OAAK,MAE3BV,EAAMiU,OAAK0J,EAAAA,YAAA,MAAA,CAAAhG,MAEF,CACL,6BACA,CACE,uCAAwC3X,EAAMyY,WAEjDvJ,MACOo7D,EAAU5pE,OAAK,UAMxB;AClJJ,MAAM6qE,GAAY,CAAE5gE,EAAG,EAAGI,EAAG,EAAG9J,EAAG,EAAGtB,EAAG,GAa1CyU,GAAwB,CAC5B+kC,WAAY,CACV7xC,KAAM,SACN9B,IAAK,GAEPgmE,OAAQ,CACN,CACEz3B,MAAO,IACPtuC,IAAK,IACL6gC,KAAM,EACNmlC,SAAWp1D,GAAW3Q,KAAKqO,MAAMsC,EAAEvE,GACnC45D,SAAUA,CAACr1D,EAAQpV,KAAoB,IAAKoV,EAAGvE,EAAGrQ,OAAOR,MAE3D,CACE8yC,MAAO,IACPtuC,IAAK,IACL6gC,KAAM,EACNmlC,SAAWp1D,GAAW3Q,KAAKqO,MAAMsC,EAAErE,GACnC05D,SAAUA,CAACr1D,EAAQpV,KAAoB,IAAKoV,EAAGrE,EAAGvQ,OAAOR,MAE3D,CACE8yC,MAAO,IACPtuC,IAAK,IACL6gC,KAAM,EACNmlC,SAAWp1D,GAAW3Q,KAAKqO,MAAMsC,EAAEzW,GACnC8rE,SAAUA,CAACr1D,EAAQpV,KAAoB,IAAKoV,EAAGzW,EAAG6B,OAAOR,MAE3D,CACE8yC,MAAO,IACPtuC,IAAK,EACL6gC,KAAM,IACNmlC,SAAUn9D,IAAA,IAAC3O,EAAEA,GAAQ2O;AAAA,OAAU,MAAL3O,EAAY+F,KAAKqO,MAAU,IAAJpU,GAAW,IAAM,GAClE+rE,SAAUA,CAACr1D,EAAQpV,KAAoB,IAAKoV,EAAG1W,EAAG8B,OAAOR,OAG7D2O,GAAI8E,GACJ1T,KAAMwU,IAQFhB,GAAwB,CAC5B2kC,WAAY,CACV7xC,KAAM,SACN9B,IAAK,GAEPgmE,OAAQ,CACN,CACEz3B,MAAO,IACPtuC,IAAK,IACL6gC,KAAM,EACNmlC,SAAWp1D,GAAW3Q,KAAKqO,MAAMsC,EAAE1L,GACnC+gE,SAAUA,CAACr1D,EAAQpV,KAAoB,IAAKoV,EAAG1L,EAAGlJ,OAAOR,MAE3D,CACE8yC,MAAO,IACPtuC,IAAK,EACL6gC,KAAM,IACNmlC,SAAWp1D,GAAW3Q,KAAKqO,MAAY,IAANsC,EAAEtL,GAAW,IAC9C2gE,SAAUA,CAACr1D,EAAQpV,KAAoB,IAAKoV,EAAGtL,EAAGtJ,OAAOR,MAE3D,CACE8yC,MAAO,IACPtuC,IAAK,EACL6gC,KAAM,IACNmlC,SAAWp1D,GAAW3Q,KAAKqO,MAAY,IAANsC,EAAE/B,GAAW,IAC9Co3D,SAAUA,CAACr1D,EAAQpV,KAAoB,IAAKoV,EAAG/B,EAAG7S,OAAOR,MAE3D,CACE8yC,MAAO,IACPtuC,IAAK,EACL6gC,KAAM,IACNmlC,SAAUz1D,IAAA,IAACrW,EAAEA,GAAQqW;AAAA,OAAU,MAALrW,EAAY+F,KAAKqO,MAAU,IAAJpU,GAAW,IAAM,GAClE+rE,SAAUA,CAACr1D,EAAQpV,KAAoB,IAAKoV,EAAG1W,EAAG8B,OAAOR,OAG7D2O,GAAI6F,GACJzU,KAAMqU,IAQFs2D,GAAwB,CAC5BxyB,WAAY,CACV7xC,KAAM,QAERkkE,OAAQ,CACN,CACEz3B,MAAO,OACP03B,SAAWp1D,GAAcA,EACzBq1D,SAAUA,CAACr1D,EAAWpV,IAAcA,IAGxC2O,GAAI2G,GACJvV,KAAMsV,IAcKs1D,GAAQ,CACnB/3D,IA5EU,IACPO,GACHo3D,OAAQp3D,GAAKo3D,QAAQpiE,MAAM,EAAG,IA2E9BgL,KAAAA,GACAC,IAlCU,IACPG,GACHg3D,OAAQh3D,GAAKg3D,OAAOpiE,MAAM,EAAG,IAiC7BoL,KAAAA,GACAS,IAhBU,IACP02D,GACHH,OAAQ,CACN,CACEz3B,MAAO,MACP03B,SAAWp1D,GAAcA,EAAEjN,MAAM,EAAG,GACpCsiE,SAAUA,CAACr1D,EAAWpV,IAAcA,KAWxC0qE,KAAAA,IC9KIE,GAAoBv9D,IAA6B,IAA5BylC,MAAEA,KAAU9vC,GAAWqK;AAChD,OAAAqP,EAAAA,YAAA,MAAA,CAAAhG,MAAA,8BAAA,CAAAgG,EAAAC,YAIgB3Z,QAAAA,EAAI0Z,MAAAA,2BACRo2B,OAsBD+3B,GAAmBxxD,GAAgB,CAC9ClQ,KAAM,mBAENpK,MApBuCqX,GAAa,CACpDpD,MAAOlU,OACP0Y,SAAU6L,QACV2Q,KAAM,CACJ3tB,KAAM/F,OACNkW,QAAS,OACTwkB,UAAYh7B,GAAclB,OAAOE,KAAK2rE,IAAO7lE,SAAS9E,IAExD2qE,MAAO,CACLtkE,KAAM3G,MACN8W,QAASA,IAAM1X,OAAOE,KAAK2rE,IAC3B3vC,UAAYh7B,GAAWN,MAAMC,QAAQK,IAAMA,EAAEf,OAAM6rE,GAAKhsE,OAAOE,KAAK2rE,IAAO7lE,SAASgmE,SAGnFr0D,MACF,mBAKMs0D,GAEP7tC,MAAO,CACL,eAAiBlqB,IAAe,EAChC,cAAgBghB,IAA6B,GAG/Cza,MAAOxa,EAAKgW,GAAY,IAAVmT,KAAEA,GAAMnT;AACpB,MAAMi2D,EAAeviE,EAAAA,UAAS,IACrB1J,EAAM4rE,MAAMxkE,KAAI5D,IAAQ,IAAKooE,GAAMpoE,GAAM4G,KAAM5G,QAGlDgoE,EAAS9hE,EAAAA,UAAS,KACtB,MAAMurB,EAAOg3C,EAAavrE,MAAMqmB,MAAKglD,GAAKA,EAAE3hE,OAASpK,EAAMi1B;AAE3D,IAAKA,EAAM,MAAO;AAElB,MAAMhhB,EAAQjU,EAAMiU,MAAQghB,EAAKrlB,GAAG5P,EAAMiU,OAAS;AAEnD,OAAOghB,EAAKu2C,QAAQpkE,KAAIm9C,IAA2C,IAA1CknB,SAAEA,EAAQC,SAAEA,KAAavyB,GAAYoL;AAC5D,MAAO,IACFtvB,EAAKkkB,cACLA,EACH1gC,SAAUzY,EAAMyY,SAChB/X,MAAOuT,GAASw3D,EAASx3D,GACzBohC,SAAWjK,IACT,MAAMvkC,EAASukC,EAAEvkC;AAEZA,GAELsiB,EAAK,eAAgB8L,EAAKj0B,KAAK0qE,EAASz3D,GAASghB,EAAKrlB,GAAG27D,IAAY1kE,EAAOnG;AAgCpF,OA1BAwc,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,sBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OAEZs8D,CAAAA,EAAO9qE,OAAO0G,KAAIpH,GAAK2d,EAAAC,YAAAiuD,GACC7rE,UAExBisE,EAAavrE,MAAMnB,OAAS,GAACoe,EAAAC,YAAA0D,GAAA,CAAA/D,KAAA,UAAA1U,KAAA,UAAAuY,QAAA,QAAAinB,QAKjBA,KACR,MAAM6jC,EAAKD,EAAavrE,MAAM4mB,WAAUykD,GAAKA,EAAE3hE,OAASpK,EAAMi1B;AAE9D9L,EAAK,cAAe8iD,EAAavrE,OAAOwrE,EAAK,GAAKD,EAAavrE,MAAMnB,QAAQ6K,QAC9E,UAMF,MCtDE+hE,GAA6Ct0D,OAAOC,IAAI;AAE9D,SAASkyB,GAAWoB,EAA4BxpC,EAAiB82C,GACtE,MAAMuQ,EAAyB,aAAdvQ,EACXzpC,EAAOrN,EAAGmN,wBACVksC,EAAQ,YAAa7P,EAAIA,EAAEiD,QAAQ,GAAKjD;AAC9C,OAAO6d,EACHhO,EAAM3M,SAAWr/B,EAAKjB,IAAMiB,EAAKP,OAAS,GAC1CusC,EAAM5P,SAAWp8B,EAAKtM,KAAOsM,EAAKR,MAAQ,GASzC,MAAM29D,GAAkB/0D,GAAa,CAC1CoB,SAAU,CACRnR,KAAMgd,QACN7M,QAAS,MAEX4H,MAAOiF,QACPpX,SAAU,CACR5F,KAAMgd,QACN7M,QAAS,MAEXhS,IAAK,CACH6B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEXjS,IAAK,CACH8B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEX6uB,KAAM,CACJh/B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEX40D,WAAY9qE,OACZ+qE,WAAY,CACVhlE,KAAM,CAACgd,QAAS/iB,QAChBkW,aAASjY,EACTy8B,UAAYh7B,GAAwB,kBAANA,GAAyB,WAANA,GAEnDsrE,UAAW,CACTjlE,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IAEX+0D,UAAW,CACTllE,KAAM,CAACgd,QAAS/iB,QAChBkW,SAAS,EACTwkB,UAAYh7B,GAAwB,kBAANA,GAAyB,WAANA,GAEnDwrE,MAAO,CACLnlE,KAAM,CAAC3G,MAAOZ,SAEhB2sE,SAAU,CACRplE,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXxD,MAAO1S,OACPorE,WAAYprE,OACZqrE,eAAgBrrE,OAChBsrE,UAAW,CACTvlE,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXihC,UAAW,CACTpxC,KAAM/F,OACNkW,QAAS,aACTwkB,UAAYh7B,GAAW,CAAC,WAAY,cAAc8E,SAAS9E,IAE7DspC,QAASjmB,WAENuX,QACAqF,GAAmB,CACpBC,UAAW,IAEb8P,OAAQ,CACN3pC,KAAMgd,QACN7M,SAAS,IAEV,UAQUq1D,GAAY9sE,IACvB,MAAMwF,EAAMkE,EAAAA,UAAS,IAAMoG,WAAW9P,EAAMwF,OACtCC,EAAMiE,EAAAA,UAAS,IAAMoG,WAAW9P,EAAMyF,OACtC6gC,EAAO58B,EAAAA,UAAS,KAAO1J,EAAMsmC,KAAO,EAAIx2B,WAAW9P,EAAMsmC,MAAQ,IACjEymC,EAAWrjE,EAAQA,UAAC,IAAMhE,KAAKD,IAAIE,EAAY2gC,EAAK5lC,OAAQiF,EAAYH,EAAI9E;AAclF,MAAO,CAAE8E,IAAAA,EAAKC,IAAAA,EAAK6gC,KAAAA,EAAMymC,SAAAA,EAAUC,WAZnC,SAAqBtsE,GAGnB,GAFAA,EAAQoP,WAAWpP,GAEf4lC,EAAK5lC,OAAS,EAAG,OAAOA;AAE5B,MAAMusE,EAAU1nE,EAAM7E,EAAO8E,EAAI9E,MAAO+E,EAAI/E,OACtC81B,EAAShxB,EAAI9E,MAAQ4lC,EAAK5lC,MAC1BmjB,EAAWne,KAAKqO,OAAOk5D,EAAUz2C,GAAU8P,EAAK5lC,OAAS4lC,EAAK5lC,MAAQ81B;AAE5E,OAAO1mB,WAAWpK,KAAKF,IAAIqe,EAAUpe,EAAI/E,OAAOgG,QAAQqmE,EAASrsE,WAMxDwsE,GAAY5+D,IAcnB,IAdoBtO,MACxBA,EAAKmtE,MACLA,EAAKC,cACLA,EAAaC,aACbA,EAAYC,YACZA,EAAWC,eACXA,GAQDj/D;AACC,MAAMZ,MAAEA,GAAUyjB,KACZ+Z,EAAa5M,EAAAA,MAAMt+B,EAAO,WAC1BipD,EAAWv/C,EAAAA,UAAS,IAA0B,aAApB1J,EAAM04C,YAChC80B,EAAe9jE,EAAAA,UAAS,IAAMu/C,EAASvoD,QAAUwqC,EAAWxqC,SAE5D8E,IAAEA,EAAGC,IAAEA,EAAG6gC,KAAEA,EAAIymC,SAAEA,EAAQC,WAAEA,GAAeG,EAE3CZ,EAAY7iE,EAAAA,UAAS,IAAMyL,SAASnV,EAAMusE,UAAW,MACrDG,EAAWhjE,EAAAA,UAAS,IAAMyL,SAASnV,EAAM0sE,SAAU,MACnDG,EAAYnjE,EAAAA,UAAS,IAAMyL,SAASnV,EAAM6sE,UAAW,MACrDY,EAAW/jE,YAAS,KAAOjE,EAAI/E,MAAQ8E,EAAI9E,OAAS4lC,EAAK5lC,QACzD+X,EAAW6lB,EAAAA,MAAMt+B,EAAO,YAExBqsE,EAAa3iE,EAAQA,UAAC,IAAM1J,EAAMqf,OAASrf,EAAMyY,cAAWjZ,EAAYQ,EAAMqsE,YAAcrsE,EAAMiU,QAClG04D,EAAajjE,EAAQA,UAAC,IAAM1J,EAAMqf,OAASrf,EAAMyY,cAAWjZ,EAAYQ,EAAM2sE,YAAc3sE,EAAMiU,QAClG24D,EAAiBljE,EAAQA,UAAC,IAAM1J,EAAMqf,OAASrf,EAAMyY,cAAWjZ,EAAYQ,EAAM4sE,gBAAkB5sE,EAAMiU,QAE1Gy5D,EAAezgE,cAAW,GAE1B0gE,EAAc1gE,aAAW,GACzB2gE,EAAoB51D,EAAAA,MACpB61D,EAAiB71D,EAAAA;AAEvB,SAAS81D,EAAgB1iC,GACvB,MAAM6d,EAA+B,aAApBjpD,EAAM04C,UACjB53C,EAAQmoD,EAAW,MAAQ,OAC3B1pD,EAAS0pD,EAAW,SAAW,QAC/BriC,EAAWqiC,EAAW,UAAY,WAGtCnoD,CAACA,GAAQitE,EACTxuE,CAACA,GAASyuE,GACRJ,EAAkBltE,OAAOmB,IAAIkN,wBAC3Bk/D,EArJV,SAAsB7iC,EAA4BxkB,GAChD,MAAI,YAAawkB,GAAKA,EAAEiD,QAAQ9uC,OAAe6rC,EAAEiD,QAAQ,GAAGznB,GACnD,mBAAoBwkB,GAAKA,EAAE26B,eAAexmE,OAAe6rC,EAAE26B,eAAe,GAAGn/C,GACzEwkB,EAAiBxkB,GAkJRsnD,CAAY9iC,EAAGxkB;AAGnC,IAAIunD,EAAWzoE,KAAKF,IAAIE,KAAKD,KAAKwoE,EAAcF,EAAaJ,EAAYjtE,OAASstE,EAAa,GAAI,IAAM;AAIzG,OAFI/kB,EAAWukB,EAAa9sE,MAAQ8sE,EAAa9sE,QAAUgN,EAAMhN,SAAOytE,EAAW,EAAIA,GAEhFnB,EAAWxnE,EAAI9E,MAAQytE,GAAY1oE,EAAI/E,MAAQ8E,EAAI9E,QAG5D,MAAM0tE,EAAchjC,IAClBkiC,EAAY,CAAE5sE,MAAOotE,EAAe1iC,KAEpCsiC,EAAahtE,OAAQ,EACrBitE,EAAYjtE,MAAQ,GAGhB2tE,EAAejjC,IACnByiC,EAAentE,MAAQ6sE,EAAeniC,GAEjCyiC,EAAentE,QAEpBmtE,EAAentE,MAAMoL,QACrB4hE,EAAahtE,OAAQ,EAEjBmtE,EAAentE,MAAMsL,SAASo/B,EAAEvkC,QAClC8mE,EAAYjtE,MAAQspC,GAAUoB,EAAGyiC,EAAentE,MAAOV,EAAM04C,YAE7Di1B,EAAYjtE,MAAQ,EACpB2sE,EAAa,CAAE3sE,MAAOotE,EAAe1iC,MAGvCgiC,EAAc,CAAE1sE,MAAOotE,EAAe1iC,OAGlCkjC,EAAsB,CAAErqC,SAAS,EAAMsqC,SAAS;AAEtD,SAASC,EAAapjC,GACpBiiC,EAAa,CAAE3sE,MAAOotE,EAAe1iC,KAGvC,SAASqjC,EAAiBrjC,GACxBA,EAAEyJ,kBACFzJ,EAAEoW,iBAEF4sB,EAAWhjC,GAEXxsC,OAAOgS,oBAAoB,YAAa49D,EAAaF,GACrD1vE,OAAOgS,oBAAoB,UAAW69D,GAGxC,SAASC,EAAkBtjC,GACzBgjC,EAAWhjC,GAEXxsC,OAAOgS,oBAAoB,YAAa49D,EAAaF,GACrDljC,EAAEvkC,QAAQ+J,oBAAoB,WAAY89D,GAmB5C,MAAM9nD,EAAY3d,IAChB,MAAM0lE,GAAc1lE,EAAMzD,EAAI9E,QAAU+E,EAAI/E,MAAQ8E,EAAI9E,OAAS;AACjE,OAAO6E,EAAMjE,MAAMqtE,GAAc,EAAIA,EAAY,EAAG,MAGhDnC,EAAYluC,EAAAA,MAAMt+B,EAAO,aACzB4uE,EAAcllE,EAAAA,UAAiB,IAC9B8iE,EAAU9rE,MAEVV,EAAMysE,MASP9rE,MAAMC,QAAQZ,EAAMysE,OAAezsE,EAAMysE,MAAMrlE,KAAI2L,IAAM,CAAErS,MAAOqS,EAAG6T,SAAUA,EAAS7T,GAAIghC,MAAOhhC,EAAElN,eAClG9F,OAAOE,KAAKD,EAAMysE,OAAOrlE,KAAI5D,IAAQ,CAC1C9C,MAAOoP,WAAWtM,GAClBojB,SAAUA,EAAS9W,WAAWtM,IAC9BuwC,MAAQ/zC,EAAMysE,MAAiCjpE,OAZxCiqE,EAAS/sE,QAAUsY,EAAAA,EAAWnY,EAAY4sE,EAAS/sE,MAAQ,GAAG0G,KAAI2L,IACvE,MAAMrS,EAAQ8E,EAAI9E,MAASqS,EAAIuzB,EAAK5lC;AACpC,MAAO,CACLA,MAAAA,EACAkmB,SAAUA,EAASlmB,OAElB,GATsB,KAmBzBmuE,EAAYnlE,EAAAA,UAAS,IAAMklE,EAAYluE,MAAMwD,MAAK8R,IAAA,IAAC+9B,MAAEA,GAAO/9B;AAAA,QAAO+9B,OAEnE7iB,EAAsB,CAC1B28C,eAAAA,EACA55D,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpB+sE,SAAAA,EACAt0D,SAAAA,EACAigC,UAAWpa,EAAAA,MAAMt+B,EAAO,aACxBmhC,UAAW7C,EAAAA,MAAMt+B,EAAO,aACxB6uE,UAAAA,EACA3jC,WAAAA,EACAsiC,aAAAA,EACAhoE,IAAAA,EACAC,IAAAA,EACAioE,aAAAA,EACAD,SAAAA,EACAqB,kBAnDF,SAA4B1jC,GAC1BA,EAAEoW,iBAEF6sB,EAAYjjC,GAEZxsC,OAAOiS,iBAAiB,YAAa29D,EAAaF,GAClD1vE,OAAOiS,iBAAiB,UAAW49D,EAAiB,CAAExqC,SAAS,KA8C/D8qC,mBA3DF,SAA6B3jC,GAC3BijC,EAAYjjC,GAEZxsC,OAAOiS,iBAAiB,YAAa29D,EAAaF,GAClDljC,EAAEvkC,QAAQgK,iBAAiB,WAAY69D,EAAmC,CAAEzqC,SAAS,KAwDrF2qC,YAAAA,EACAd,eAAAA,EACAlnD,SAAAA,EACA1Z,SAAUoxB,EAAAA,MAAMt+B,EAAO,YACvBihB,QAASqd,EAAAA,MAAMt+B,EAAO,WACtBgtE,WAAAA,EACAR,UAAAA,EACAmB,YAAAA,EACArnC,KAAAA,EACAimC,UAAAA,EACAF,WAAAA,EACAC,WAAYhuC,EAAAA,MAAMt+B,EAAO,cACzBysE,MAAOnuC,EAAAA,MAAMt+B,EAAO,SACpB0sE,SAAAA,EACAC,WAAAA,EACAiB,kBAAAA,EACAhB,eAAAA,EACAC,UAAAA,EACA5jB,SAAAA;AAKF,OAFAhwC,UAAQkzD,GAAej7C,GAEhBA,GC1UI89C,GAAwB33D,GAAa,CAChD4+B,QAAS3xB,QACT7e,IAAK,CACH6B,KAAM7F,OACN+b,UAAU,GAEZhY,IAAK,CACH8B,KAAM7F,OACN+b,UAAU,GAEZmlB,WAAY,CACVr7B,KAAM7F,OACN+b,UAAU,GAEZoJ,SAAU,CACRtf,KAAM7F,OACN+b,UAAU,GAEZyzB,OAAQ,CACN3pC,KAAM,CAACgd,QAASvkB,QAChB0X,SAAS,MAGRC,MACF,gBAEUu3D,GAAep0D,IAAAA,CAAsC,CAChEzQ,KAAM,eAEN6zB,WAAY,CAAEwS,OAAAA,IAEdzwC,MAAOgvE,KAEP7wC,MAAO,CACL,oBAAsBl9B,IAAc,GAGtCuZ,MAAOxa,EAAKsO,GAAmB,IAAjB8M,MAAEA,EAAK+N,KAAEA,GAAM7a;AAC3B,MAAM4gE,EAASh3D,SAAOi0D,KAChBz+D,MAAEA,EAAKmjB,WAAEA,GAAeM;AAC9B,IAAK+9C,EAAQ,MAAM,IAAI/2D,MAAM;AAE7B,MAAMk0D,WACJA,EAAU/lC,KACVA,EAAI7tB,SACJA,EAAQ8zD,UACRA,EAASD,WACTA,EAAU5zB,UACVA,EAASxN,WACTA,EAAU+d,SACVA,EAAQ/7C,SACRA,EAAQi0B,UACRA,EAASusC,aACTA,EAAYX,SACZA,EAAQS,aACRA,GACE0B,EAEEC,EAAiBzlE,EAAQA,UAAC,IAAO+O,EAAS/X,WAA0BlB,EAAlB2hC,EAAUzgC,SAC5D2gC,iBAAEA,GAAqBD,GAAa+tC,IACpC3zC,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAa+wC,IAErDnpE,OAAEA,EAAMC,SAAEA,EAAQN,IAAEA,EAAGC,KAAEA,EAAIH,KAAEA,EAAIC,MAAEA,EAAKF,KAAEA,EAAID,GAAEA,GAAOY,EACzD+rE,EAAe,CAAClsE,EAAQC,EAAUN,EAAKC,EAAMH,EAAMC,EAAOF,EAAMD,GAEhE4sE,EAAc3lE,EAAAA,UAAS,IACvB48B,EAAK5lC,MAAc,CAAC,EAAG,EAAG,GAClB,CAAC,EAAG,EAAG;AA8BrB,SAAS4gD,EAAWlW,GAClB,MAAMvnB,EA5BR,SAAuBunB,EAAkB1qC,GACvC,IAAK0uE,EAAarpE,SAASqlC,EAAE5nC,KAAM;AAEnC4nC,EAAEoW;AAEF,MAAM8tB,EAAQhpC,EAAK5lC,OAAS,GACtBysE,GAASntE,EAAMyF,IAAMzF,EAAMwF,KAAO8pE;AACxC,GAAI,CAAC3sE,EAAMC,EAAOF,EAAMD,GAAIsD,SAASqlC,EAAE5nC,KAAM,CAC3C,MAGMk1C,GAHWuQ,EAASvoD,MACtB,CAACgN,EAAMhN,MAAQiC,EAAOC,EAAOsoC,EAAWxqC,MAAQgC,EAAOD,GACvD+qE,EAAa9sE,QAAUgN,EAAMhN,MAAQ,CAACiC,EAAMF,GAAM,CAACG,EAAOH,IACnCsD,SAASqlC,EAAE5nC,KAAO,GAAK,EAC5C+rE,EAAankC,EAAEqG,SAAW,EAAKrG,EAAEoG,QAAU,EAAI;AAErD9wC,GAAiBg4C,EAAY42B,EAAQD,EAAY3uE,MAAM6uE,QAC9CnkC,EAAE5nC,MAAQV,EACnBpC,EAAQV,EAAMwF,IACL4lC,EAAE5nC,MAAQX,EACnBnC,EAAQV,EAAMyF,IAGd/E,IADkB0qC,EAAE5nC,MAAQL,EAAW,GAAK,GACfmsE,GAASnC,EAAQ,IAAMA,EAAQ,GAAK;AAGnE,OAAOznE,KAAKD,IAAIzF,EAAMwF,IAAKE,KAAKF,IAAIxF,EAAMyF,IAAK/E,IAI9B8uE,CAAapkC,EAAGprC,EAAM2iC;AAE3B,MAAZ9e,GAAoBsF,EAAK,oBAAqBtF,GAuEhD,OApEA3G,IAAU,KACR,MAAMuyD,EAAqBtuE,EAAcqsE,EAAa9sE,MAAQ,IAAMV,EAAM4mB,SAAW5mB,EAAM4mB,SAAU;AAErG,OAAAjJ,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,iBACA,CACE,0BAA2B3X,EAAMi2C,QACjC,0BAA2Bj2C,EAAMi2C,SAAWy3B,EAAahtE,OAE3DV,EAAM2X,MACNkZ,EAAWnwB,OACZwO,MACM,CACL,CACE,4BAA6BugE,EAC7B,wBAAyBtuE,EAAcorE,EAAU7rE,QAEnDV,EAAMkP,OACPgP,KAAA,SAAAsqB,SAEU/vB,EAAS/X,OAAS,EAAI,EAAC,gBAClBV,EAAMwF,IAAG,gBACTxF,EAAMyF,IAAG,gBACTzF,EAAM2iC,WAAU,kBACdz1B,EAASxM,MAAK,mBACbg4C,EAAUh4C,MAAK4gD,UACrBp0C,EAASxM,WAAoBlB,EAAZ8hD,GAAqB,CAAA3jC,EAAAC,YAAA,MAAA,CAAAjG,MAG1C,CACL,0BACA6jB,EAAiB96B,MACjB2gC,EAAiB3gC,OAClBwO,MACM,IACFusB,EAAgB/6B,QACpBkgC,MAAAA,iBAAAjjB,EAAAA,YAAA,MAAA,CAAAhG,MAGM,CACL,yBACA6jB,EAAiB96B,OAClBwO,MACOusB,EAAgB/6B,OAAK,MAAA,CAAA,CAAAmgC,EAAAoU,iBAClBj1C,UAAAA,EAAMixC,OAAQ,KAAI,CAAA1C,QAAA,EAAAxgC,QAAA,MAAA4P,EAAAC,YAAAub,GAAA,CAAAjE,OAAA,iBAAA,CAAAzd,QAAAA,IAAAmpB,CAAAA,iBAAAjjB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,mCAAA,CAAAgG,EAAAC,YAAA,MAAA,CAAAjG,MAQlB,CACL,0BACD,CAAAgG,EAAAC,YAGGxC,MAAAA,KAAAA,CAAAA,EAAM,iBAAiB,CAAEunB,WAAY3iC,EAAM2iC,cAAiB3iC,EAAM2iC,WAAWj8B,QAAQ4/B,EAAK5lC,MAAQqsE,EAASrsE,MAAQ,SAAE0iD,CAAAA,CAAAA,EAAAA,MARjHkpB,EAAW5rE,OAASV,EAAMi2C,SAAiC,WAArBq2B,EAAW5rE,iBAiB9D,MCjLEgvE,GAAwBr4D,GAAa,CAChDvW,MAAO,CACLwG,KAAM7F,OACN+b,UAAU,GAEZ4K,KAAM,CACJ9gB,KAAM7F,OACN+b,UAAU,MAGT9F,MACF,gBAEUi4D,GAAe90D,IAAAA,CAAsC,CAChEzQ,KAAM,eAENpK,MAAO0vE,KAEPvxC,MAAO,GAEP3jB,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM4gE,EAASh3D,SAAOi0D;AAEtB,IAAK+C,EAAQ,MAAM,IAAI/2D,MAAM;AAE7B,MAAMlE,MACJA,EAAK26D,YACLA,EAAW3tD,QACXA,EAAOurD,UACPA,EAASE,SACTA,EAAQC,WACRA,EAAUC,eACVA,EAAcC,UACdA,EAAS5jB,SACTA,EAAQzjD,IACRA,EAAGC,IACHA,EAAG+nE,aACHA,GACE0B,GAEElzC,eAAEA,GAAmBD,GAAW9a,IAGpC0a,uBAAwBi0C,EACxBh0C,sBAAuBi0C,GACrBn0C,GAAmBkxC,IAGrBjxC,uBAAwBm0C,EACxBl0C,sBAAuBm0C,GACrBr0C,GAAmBixC,GAEjBqD,EAAWtmE,EAAAA,UAAS,IAAO,SAAQu/C,EAASvoD,MAAQ,QAAU,YAAY8sE,EAAa9sE,MAAQ,MAAQ,YACvGuvE,EAASvmE,EAAAA,UAAS,IAAMu/C,EAASvoD,MAAQ,SAAW,UAEpDwvE,EAAmBxmE,EAAAA,UAAS,KACzB,CACL,CAACsmE,EAAStvE,OAAQ,KAClB,CAACuvE,EAAOvvE,OAAQ,WAIdyvE,EAAiBzmE,EAAAA,UAAS,IAAM1J,EAAMooB,KAAOpoB,EAAMc,QAEnDsvE,EAAkB1mE,EAAAA,UAAS,KACxB,CACL,CAACsmE,EAAStvE,OAAQS,EAAcnB,EAAMc,MAAO,KAC7C,CAACmvE,EAAOvvE,OAAQS,EAAcgvE,EAAezvE,MAAO,SAIlD2vE,EAAgB3mE,EAAAA,UAAS,KAC7B,IAAK8iE,EAAU9rE,MAAO,MAAO;AAI7B,OAFcuoD,EAASvoD,MAAQkuE,EAAYluE,MAAM0I,QAAQmhC,UAAYqkC,EAAYluE,OAEpE0G,KAAI,CAACkpE,EAAMn6D,KACtB,MAAMo6D,EAAiBD,EAAK5vE,QAAU8E,EAAI9E,OAAS4vE,EAAK5vE,QAAU+E,EAAI/E,MAAQS,EAAcmvE,EAAK1pD,SAAU,UAAOpnB;AAElH,OAAAme,EAAAA,YAAA,MAAA,CAAAna,IAEU8sE,EAAK5vE,MAAKiX,MACT,CACL,uBACA,CACE,+BAAgC24D,EAAK1pD,UAAY5mB,EAAMc,OAASwvE,EAAK1pD,UAAY5mB,EAAMooB,KACvF,8BAA+BkoD,EAAK5vE,QAAU8E,EAAI9E,MAClD,6BAA8B4vE,EAAK5vE,QAAU+E,EAAI/E,QAEpDwO,MACM,CAAE,CAAC8gE,EAAStvE,OAAQ6vE,IAGzB,EAACD,EAAKv8B,OAAS34B,EAAM,gBAAauC,EAAAC,YAAA,MAAA,CAAAjG,MAAA,8BAAA,CAE5ByD,EAAM,gBAAgB,CAAEk1D,KAAAA,EAAMn6D,MAAAA,KAAYm6D,EAAKv8B;AAiE/D,OAxDA72B,IAAU,IACRS,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,iBACAqkB,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL,CACE,wBAAyB/N,EAAc0rE,EAAUnsE,OACjD,uBAAwBS,EAAcurE,EAAShsE,QAEjDV,EAAMkP,QACP,CAAAyO,EAAAC,YAAA,MAAA,CAAAjG,MAGQ,CACL,6BACAm4D,EAAkBpvE,MAClB,CACE,wCAAyCuT,EAAMvT,QAAUksE,EAAelsE,QAE3EwO,MACM,IACFghE,EAAiBxvE,SACjBqvE,EAAiBrvE,QACrB,MAAAid,EAAAC,YAAA,MAAA,CAAAjG,MAGM,CACL,uBACAi4D,EAAsBlvE,OACvBwO,MACM,IACFkhE,EAAgB1vE,SAChBmvE,EAAqBnvE,QACzB,MAGD8rE,EAAU9rE,OAAKid,EAAAA,YAAA,MAAA,CAAAhG,MAEN,CACL,wBACA,CACE,qCAA0D,WAApB60D,EAAU9rE,SAIlD2vE,CAAAA,EAAc3vE,YAOnB,MC1JE8vE,GAAmBn5D,GAAa,IACxC2+B,QACAo2B,QACAh0B,KAEHzV,WAAY,CACVr7B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IAEV,WAEUiK,GAAU7G,IAAAA,CAAiC,CACtDzQ,KAAM,UAENpK,MAAOwwE,KAEPryC,MAAO,CACL,iBAAmBz9B,IAAmB,EACtC,oBAAsBO,IAAc,EACpCH,MAAQJ,IAAkB,EAC1BmC,IAAMnC,IAAkB,GAG1B8Z,MAAOxa,EAAKsO,GAAmB,IAAjB8M,MAAEA,EAAK+N,KAAEA,GAAM7a;AAC3B,MAAMmiE,EAAoBz4D,EAAAA,OACpB6Y,WAAEA,GAAeM,KAEjBg8C,EAAQL,GAAS9sE,GAEjB+oB,EAAQR,GACZvoB,EACA,kBACAR,GACAkB,GACSysE,EAAMH,WAAoB,MAATtsE,EAAgBysE,EAAM3nE,IAAI9E,MAAQA,MAIxD8E,IACJA,EAAGC,IACHA,EAAGioE,aACHA,EAAYV,WACZA,EAAU8B,kBACVA,EAAiBC,mBACjBA,EAAkBnB,kBAClBA,EAAiBhnD,SACjBA,EAAQioD,UACRA,EAAS3hE,SACTA,GACEggE,GAAU,CACZltE,MAAAA,EACAmtE,MAAAA,EACAC,cAAeA,KACbjkD,EAAK,QAASJ,EAAMroB,QAEtB4sE,YAAat3D,IAAe,IAAdtV,MAAEA,GAAOsV;AACrB,MAAM06D,EAAe1D,EAAWtsE;AAChCqoB,EAAMroB,MAAQgwE,EACdvnD,EAAK,MAAOunD,IAEdrD,aAAc9oB,IAAA,IAAC7jD,MAAEA,GAAO6jD;AAAA,OAAKx7B,EAAMroB,MAAQssE,EAAWtsE,IACtD6sE,eAAgBA,IAAMkD,EAAkB/vE,OAAOmB,OAG3C0yC,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,GACtC2wE,EAAYjnE,EAAAA,UAAS,IAAMkd,EAASmC,EAAMroB;AAuFhD,OArFAwc,IAAU,KACR,MAAMi8B,EAAaR,GAAOj+B,YAAY1a,GAChC6xC,KAAgB7xC,EAAM+zC,OAAS34B,EAAM24B,OAAS34B,EAAM6mB;AAE1D,OAAAtkB,EAAAC,YAAA+6B,GAAA56B,aAAA,CAAApG,MAEW,CACL,WACA,CACE,yBAA0ByD,EAAM,eAAiByzD,EAAUnuE,MAC3D,oBAAqB6zC,EAAU7zC,MAC/B,oBAAqBgtE,EAAahtE,MAClC,qBAAsBV,EAAMyY,UAE9BoY,EAAWnwB,MACXV,EAAM2X,OACPzI,MACOlP,EAAMkP,OACTiqC,EAAU,CAAAlD,QACL1B,EAAU7zC,QAAK,IAGpB0a,EACH6mB,QAAS4P,EAAagH,GAASl7B,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAEzBpZ,EAAM24B,QAAQ8E,KACd74C,EAAM+zC,MAAKp2B,EAAAA,YAAAs1B,GAAA,CAAA/tB,GAGA2zB,EAAU3zB,GAAGxkB,MAAKiX,MAAA,kBAAAhG,KAEhB3R,EAAM+zC,OAEbv0C,WAAAA,GAGN4b,EAAM6mB,UAAU4W,UAElBr5C,EACJiY,QAAS8tC,IAAA,IAACrgC,GAAEA,EAAE0zB,WAAEA,GAAY2M;AAAA,OAAA5nC,EAAAA,YAAA,MAAA,CAAAhG,MAAA,sBAAAuqC,YAGTh1C,EAASxM,WAA4BlB,EAApBsvE,EAA6BxD,oBACtCp+D,EAASxM,WAA6BlB,EAArBuvE,GAA8B,CAAApxD,EAAAC,YAAA,QAAA,CAAAsH,GAG/DA,EAAGxkB,MAAK0J,KACNpK,EAAMoK,MAAQ8a,EAAGxkB,MAAK+X,WAChBzY,EAAMyY,SAAQvL,WACdlN,EAAMkN,SAAQs7B,SAAA,KAAA9nC,MAEnBqoB,EAAMroB,OAAKid,MAAAA,EAAAC,YAAA+xD,GAAA,CAAA33D,IAIb41D,EAAiB9sE,MACf,EAACsnB,KACFuoD,EAAUjwE,OAAK,CAEnB,aAAc0a,EAAM,gBAAauC,EAAAC,YAAAqxD,GAAA,CAAAj3D,IAI9By4D,EAAiB,mBACJ73B,EAAWl4C,MAAKu1C,QACzB1B,EAAU7zC,MAAK8E,IACnBA,EAAI9E,MAAK+E,IACTA,EAAI/E,MAAKiiC,WACF5Z,EAAMroB,MAAK,sBACFO,GAAM8nB,EAAMroB,MAAQO,EAAE2lB,SACjC+pD,EAAUjwE,MAAKygC,UACdnhC,EAAMmhC,UAASuT,QACjB5oC,EAAK6oC,OACNyB,EAAInF,OACJjxC,EAAMixC,QAAM,CAElB,cAAe71B,EAAM,yBAS/B,MChJEw1D,GAAsBt2D,GAAgB,CACjDlQ,KAAM,sBAENpK,MAb0CqX,GAAa,CACvDpD,MAAO,CACL3M,KAAMvH,QAER0Y,SAAU6L,QACVusD,UAAWvsD,WAER5M,MACF,sBAKMo5D,GAEP3yC,MAAO,CACL,eAAiBlqB,IAAe,GAGlCuG,MAAOxa,EAAKsO,GAAY,IAAV6a,KAAEA,GAAM7a;AACpB,MAAMyiE,EAAkB,IAAIC;AAI5Br5B,eAAes5B,IACb,IAAKhyE,EAAsB;AAE3B,MAAM8hB,EAAa,IAAIniB,OAAOsyE;AAC9B,IACE,MACMC,EAAgB76D,UADDyK,EAAWuI,KAAK,CAAE8nD,OAAQL,EAAgBK,UACzBC;AACtCloD,EAAK,eAAgB,IAAMnpB,EAAMiU,OAASs3D,MAAe4F,IACzD,MAAO/lC,KA0DX,OApEAkmC,EAAAA,aAAY,IAAMP,EAAgBQ,UAalCr0D,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,yBACA,CACE,qCAAsC3X,EAAM6wE,WAE9C7wE,EAAM2X,OACPzI,MACOlP,EAAMkP,OAEZjQ,CAAAA,GAAoB0e,EAAAC,YAAA,MAAA,CAAAjG,MAAA,sCAAAnU,IAAA,cAAAma,CAAAA,EAAAC,YAAA0D,GAAA,CAAA+mB,QAEF4oC,EAAc1zD,KAAA,cAAA6D,QAAA,QAAAogB,QAAA,eAAA,QAEjC7jB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,+BAAA,CAAAgG,EAAAC,YAAA,MAAA,CAAA1O,MAGa,CAAE0C,WAAY+D,GAAS3V,EAAMiU,OAASs3D,MAAY,QAAA5tD,EAAAA,YAAA,MAAA,CAAAhG,MAAA,mCAAAgG,CAAAA,EAAAC,YAAA8D,GAAA,CAAA/J,MAAA,4DAAAgrB,WAM/C3iC,EAAMiU,OAAOtJ,EAAC,sBACLA,GAAKwe,EAAK,eAAgB,IAAMnpB,EAAMiU,OAASs3D,GAAY5gE,EAAAA,IAAI27B,KAC9E,EAAC9gC,IACF,EAACC,IACD,IAAGgT,SACEzY,EAAMyY,SAAQ8zD,UACb,GAAEM,UACF,EAACD,eAAA,QAAAt0B,aAAA,GAAA,OAKZt4C,EAAM6wE,WAASlzD,EAAAA,YAAA+D,GAAA,CAAA/J,MAAA,8DAAAgrB,WAGD3iC,EAAMiU,OAAOtU,GAAK,EAAC,sBACVA,GAAKwpB,EAAK,eAAgB,IAAMnpB,EAAMiU,OAASs3D,GAAY5rE,EAAAA,IAAI2mC,KAC9E,EAAI,IAAG9gC,IACR,EAACC,IACD,EAACgT,SACIzY,EAAMyY,SAAQ8zD,UACb,GAAEM,UACF,EAACD,eAAA,QAAAt0B,aAAA,GAAA,YAShB;ACyMI,IAAAn2B,GAAA,CACbqvD,IA9TiB,CACjBjrE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiTTC,KA9SkB,CAClB/rE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiSTE,OA9RoB,CACpBhsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiRTG,WA9QwB,CACxBjsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiQTI,OA9PoB,CACpBlsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiPTK,KA9OkB,CAClBnsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiOTM,UA9NuB,CACvBpsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiNTO,KA9MkB,CAClBrsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiMTQ,KA9LkB,CAClBtsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiLTS,MA9KmB,CACnBvsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiKTU,WA9JwB,CACxBxsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiJTW,KA9IkB,CAClBzsE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiITY,OA9HoB,CACpB1sE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiHTa,MA9GmB,CACnB3sE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiGTc,OA9FoB,CACpB5sE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiFTe,WA9EwB,CACxB7sE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAiETgB,MA9DmB,CACnB9sE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAqDTqB,SAlDsB,CACtB/sE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAyCTsB,KAtCkB,CAClBhtE,KAAM,UACNkrE,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WA6BTuB,OA1BoB,CACpBC,MAAO,UACPC,MAAO,UACPC,YAAa;AC7PR,MAAMC,GAAuBt5D,GAAgB,CAClDlQ,KAAM,uBAENpK,MArC2CqX,GAAa,CACxDw8D,SAAU,CACRvsE,KAAM3G,MACN8W,QAASA,IASb,SAA6B0K,GAC3B,OAAOpiB,OAAOE,KAAKkiB,GAAQ/a,KAAI5D,IAC7B,MAAMyQ,EAAQkO,EAAO3e;AACrB,OAAOyQ,EAAM1N,KAAO,CAClB0N,EAAM1N,KACN0N,EAAMg+D,QACNh+D,EAAM+9D,QACN/9D,EAAM89D,QACN99D,EAAM69D,QACN79D,EAAM49D,SACN59D,EAAM29D,SACN39D,EAAM09D,SACN19D,EAAMy9D,SACNz9D,EAAMw9D,UACJ,CACFx9D,EAAMw/D,MACNx/D,EAAMy/D,MACNz/D,EAAM0/D,gBA1BOG,CAAmB3xD,KAEpC1J,SAAU6L,QACVrQ,MAAOlU,OACPk6B,UAAW,CAACx4B,OAAQF,WAEjBmW,MACF,uBA2BMq8D,GAEP51C,MAAO,CACL,eAAiBlqB,IAAe,GAGlCuG,MAAOxa,EAAKsO,GAAY,IAAV6a,KAAEA,GAAM7a;AAwCpB,OAvCA4O,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,0BACA3X,EAAM2X,OACPzI,MACM,CACL,CAAE+qB,UAAW94B,EAAcnB,EAAMi6B,YACjCj6B,EAAMkP,QACPyO,CAAAA,EAAAC,YAGG5d,MAAAA,KAAAA,CAAAA,EAAM6zE,SAASzsE,KAAI4sE,GAAMr2D,EAAAC,YAAA,MAAA,CAAAjG,MAAA,mCAAA,CAErBq8D,EAAO5sE,KAAI6M,IACX,MAAMG,EAAOQ,GAAWX,GAClBU,EAAOa,GAASpB,GAChBxC,EAAa8D,GAAStB;AAE5B,OAAAuJ,EAAAA,YAAA,MAAA,CAAAhG,MAAA,iCAAA0wB,QAGcA,IAAM1zB,GAAQwU,EAAK,eAAgBxU,IAAK,CAAAgJ,EAAAC,YAAA,MAAA,CAAA1O,MAEtC,CAAE0C,WAAAA,IAAY,CACtB5R,EAAMiU,OAASvU,EAAUM,EAAMiU,MAAOU,GAAKgJ,EAAAC,YAAA8pB,GAAA,CAAA7+B,KAAA,UAAA0U,KAAA,WAAAtJ,MACK6C,GAAY7C,EAAO,WAAa,EAAI,QAAU,SAAO,WACnGzU,mBAYf,MC3FEy0E,GAAkB58D,GAAa,CAC1CpD,MAAO1S,UAEJu/B,QACAppB,QACAsiB,QACAkH,QACA0I,QACAkC,QACAjQ,QACApH,QACApD,MACF,UAEU6iD,GAASr5D,IAAAA,CAAmB,CACvCzQ,KAAM,SAENpK,MAAOi0E,KAEPz5D,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChC27B,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,WACpFihC,cAAEA,GAAkBD,GAAUhhC,IAC9Bs6B,gBAAEA,GAAoBD,GAAar6B,IACnCqhC,iBAAEA,GAAqBD,GAAaphC,IACpC+pC,eAAEA,GAAmBF,GAAY7pC,IACjCgsC,gBAAEA,GAAoBD,GAAY/rC,IAClCg8B,eAAEA,GAAmBD,GAAW/7B;AAwBtC,OAtBAkd,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,UACAmb,EAAapyB,MACbi7B,EAAuBj7B,MACvBugC,EAAcvgC,MACd2gC,EAAiB3gC,MACjBsrC,EAAgBtrC,MAChBs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtB45B,EAAgB55B,MAChBqpC,EAAerpC,MACfV,EAAMkP,QAEEkM,KAIP,MCHE+4D,GAAe75D,GAAgB,CAC1ClQ,KAAM,eAENpK,MA9CmCqX,GAAa,CAChD8yD,aAAc,CACZ7iE,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,KAEXgB,SAAU6L,QACVulD,QAAS,CACPviE,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IAEX28D,WAAY9vD,QACZ+vD,YAAa/vD,QACbgwD,WAAYhwD,QACZ2Q,KAAM,CACJ3tB,KAAM/F,OACNkW,QAAS,OACTwkB,UAAYh7B,GAAclB,OAAOE,KAAK2rE,IAAO7lE,SAAS9E,IAExD2qE,MAAO,CACLtkE,KAAM3G,MACN8W,QAASA,IAAM1X,OAAOE,KAAK2rE,IAC3B3vC,UAAYh7B,GAAWN,MAAMC,QAAQK,IAAMA,EAAEf,OAAM6rE,GAAKhsE,OAAOE,KAAK2rE,IAAO7lE,SAASgmE,MAEtFwI,aAAcjwD,QACduvD,SAAUlzE,MACV6zE,kBAAmB,CACjBltE,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEXkrB,WAAY,CACVr7B,KAAM,CAACvH,OAAQwB,YAGd8C,EAAK4vE,GAAgB,CAAExlE,MAAO,MAAQ,CACvC,SACA,WACA,YACA,YACA,WACA,cAED,eAKMgmE,GAEPt2C,MAAO,CACL,oBAAsBlqB,IAAe,EACrC,cAAgBghB,IAA6B,GAG/Cza,MAAOxa,GACL,MAAMi1B,EAAO1M,GAAgBvoB,EAAO,QAC9B+pE,EAAM/xD,MAAmB,MACzB+Q,EAAQR,GACZvoB,EACA,kBACAR,GACAyB,IACE,GAAS,MAALA,GAAmB,KAANA,EAAU,OAAO;AAElC,IAAIoV;AACJ,IACEA,EAAIb,GAASZ,GAAW3T,IACxB,MAAOuL,GAEP,OADAiG,GAAYjG,GACL,KAGT,OAAO6J,KAETpV,GACOA,EV1EN,SAAuBgT,EAAYoX,GACxC,GAAa,MAATA,GAAkC,iBAAVA,EAAoB,CAC9C,MAAMpW,EAAMsB,GAAStC;AAErB,OAAgB,IAAZA,EAAMtU,EAAgBsV,EAAI7L,MAAM,EAAG,GAC3B6L,EAGd,GAAqB,iBAAVoW,EAAoB,CAC7B,IAAIqpD;AAMJ,OAJInxE,EAAI8nB,EAAO,CAAC,IAAK,IAAK,MAAOqpD,EAAYhgE,GAAST,GAC7C1Q,EAAI8nB,EAAO,CAAC,IAAK,IAAK,MAAOqpD,EAAYj/D,GAASxB,GAClD1Q,EAAI8nB,EAAO,CAAC,IAAK,IAAK,QAAOqpD,EAAYzgE,GAvBtD,SAAqBA,EAAY0gE,GAC/B,GAAIA,EAAY,CACd,MAAMh1E,EAAEA,KAAMsE,GAASgQ;AAEvB,OAAOhQ,EAGT,OAAOgQ,EAkBE0gE,CAAWD,GAAYnxE,EAAI8nB,EAAO,CAAC,OAAqB,IAAZpX,EAAMtU,GAG3D,OAAOsU,EU0DM2gE,CAAa3zE,EAAGjB,EAAM2iC,YAFd,OAKbkyC,EAAenrE,EAAAA,UAAS,IACrBqf,EAAMroB,MACT,IAAKqoB,EAAMroB,MAAOiK,EAAGo/D,EAAIrpE,OAASqoB,EAAMroB,MAAMiK,GAC9C,QAEAkmB,WAAEA,GAAeM;AAEvB,IAAI2jD,GAAiB;AACrBlxD,EAAKA,MAACmF,GAAO9nB,IACN6zE,EAKA7zE,IACL8oE,EAAIrpE,MAAQO,EAAE0J,GAJZmqE,GAAiB,IAKlB,CAAEzsD,WAAW;AAEhB,MAAM0sD,EAAepgE,IACnBmgE,GAAiB,EACjB/K,EAAIrpE,MAAQiU,EAAKhK,EACjBoe,EAAMroB,MAAQiU;AAyFhB,OAtFA4tB,EAAAA,WAAU,KACHviC,EAAM4rE,MAAM7lE,SAASkvB,EAAKv0B,SAAQu0B,EAAKv0B,MAAQV,EAAM4rE,MAAM,OAGlExzD,GAAgB,CACdsJ,QAAS,CACPzN,WAAOzU,EACPmtE,gBAAYntE,EACZotE,oBAAgBptE,KAIpB0d,IAAU,KACR,MAAM83D,EAAad,GAAOx5D,YAAY1a;AAEtC,OAAA2d,EAAAC,YAAAs2D,GAAAn2D,aAAA,CAAAkD,QAEcjhB,EAAMihB,QAAOkgB,UACXnhC,EAAMmhC,UAASnf,MACnBhiB,EAAMgiB,MAAKrK,MACZ,CACL,iBACAkZ,EAAWnwB,MACXV,EAAM2X,OACPzI,MACM,CACL,CACE,6BAA8ByG,GAAS,IAAMk/D,EAAan0E,OAAS6qE,GAAY5rE,EAAG,KAEpFK,EAAMkP,QAEH8lE,EAAU,CAAA96C,SACJl6B,EAAMyO,QAAK,CAAAgJ,QAAAA,IAAA,EAEnBzX,EAAMo0E,YAAUz2D,EAAAA,YAAAisD,GAAA,CAAApmE,IAAA,SAAAyQ,MAGP4gE,EAAan0E,MAAK,iBACTq0E,EAAWt8D,SACjBzY,EAAMyY,SAAQoxD,QACf7pE,EAAM6pE,QAAOp7D,MACfzO,EAAMyO,MAAKC,OACV1O,EAAMmqE,cAAY,QAI3BnqE,EAAMq0E,cAAgBr0E,EAAMs0E,aAAU32D,EAAAC,YAAA,MAAA,CAAApa,IAAA,WAAAmU,MAAA,4BAAA,EAEnC3X,EAAMq0E,aAAW12D,EAAAA,YAAAizD,GAAA,CAAAptE,IAAA,UAAAyQ,MAGR4gE,EAAan0E,MAAK,iBACTq0E,EAAWlE,WACf57C,EAAKv0B,MAAMsU,SAAS,KAAIyD,SAC1BzY,EAAMyY,UAEpB,OAEEzY,EAAMs0E,YAAU32D,EAAAA,YAAAmuD,GAAA,CAAAtoE,IAAA,OAAAooE,MAGP5rE,EAAM4rE,MAAK32C,KACZA,EAAKv0B,MAAK,gBACDqrE,GAAK92C,EAAKv0B,MAAQqrE,EAAC93D,MAC3B4gE,EAAan0E,MAAK,iBACTq0E,EAAWt8D,SACjBzY,EAAMyY,UAEpB,QAIHzY,EAAMu0E,cAAY52D,EAAAC,YAAAg2D,GAAA,CAAApwE,IAAA,WAAAyQ,MAGR4gE,EAAan0E,MAAK,iBACTq0E,EAAW96C,UAChBj6B,EAAMw0E,kBAAiBX,SACxB7zE,EAAM6zE,SAAQp7D,SACdzY,EAAMyY,UAEpB,YAKA;ACzIJ,MAAMw8D,GAAqB59D,GAAa,CAC7CirD,gBAAiB,CACfh7D,KAAM,CAACgd,QAAS/iB,SAElBghE,cAAe,CACbj7D,KAAMgd,QACN7M,SAAS,GAEXy9D,WAAYv0E,SAETkgE,GAAgB,CAAEG,WAAY,CAAC,cAC/B9C,GAAgB,CAAEK,YAAY,EAAMlV,cAAc,OAClDhlD,EAAKg1D,GAAoB,CAC1B12B,WAAY,KACZzkB,KAAM,aACJ,CAAC,kBAAmB,QAAS,uBAC9B2W,GAAoB,CAAE/N,YAAY,KACpC,aAIUtF,GAAY3G,IAAAA,CAyBwB,CAC/CzQ,KAAM,YAENpK,MAAOi1E,KAEP92C,MAAO,CACL,iBAAmB8X,IAAqB,EACxC,oBAAsBv1C,IAAe,EACrC,gBAAkBA,IAAkB,EACpC,cAAgBA,IAAmB,GAGrC8Z,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAMyE,EAAEA,GAAMge,KACRiuC,EAAgBhnD,EAAAA,MAChBu8B,EAAYtnC,cAAW,GACvBkqC,EAAalqC,cAAW,GACxBw1D,EAAex1D,cAAW,GAC1BgyD,EAAWjnD,EAAAA,MACXknD,EAAoBlnD,EAAAA,MACpBmnD,EAAQ52C,GAAgBvoB,EAAO,QAC/B8f,EAAOpW,EAAAA,SAAS,CACpB9B,IAAKA,IAAMu3D,EAAMz+D,MACjBqH,IAAK9G,IACCk+D,EAAMz+D,QAAUO,GAAKg+D,EAASv+D,OAAO62D,gBACzC4H,EAAMz+D,MAAQO,MAGZyhE,EAAiBz1D,EAAAA,YAAY;AACnC,IAAIkoE,GAAU;AACd,MAAMlhE,EAAQvK,EAAAA,UAAS,IAAMs1D,EAAct+D,OAAOuT,QAC5C8/B,EAAQrqC,YAAS,IAAMoW,EAAKpf,MAAQV,EAAMq+D,UAAYr+D,EAAMs+D,YAC5D93C,MAAEA,EAAKiC,YAAEA,EAAWC,aAAEA,GAAiB0hC,GAASpqD,IAChDw7B,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAarnB,GACrD8U,EAAQR,GACZvoB,EACA,aACA,IACAiB,GAAKwnB,EAAYnjB,EAAYrE,MAC7BA,IACE,MAAMm+D,EAAc12C,EAAaznB;AACjC,OAAOjB,EAAMolC,SAAWg6B,EAAeA,EAAY,IAAM,QAGvDnoB,EAAOR,KAEPwpB,EAAWv2D,EAAQA,UAAC,OAAS1J,EAAMm+D,QAAS/iD,EAAM8kD,QAClD0C,EAAmBl5D,EAAQA,UAAC,IAAMu2D,EAASv/D,SAAW0a,EAAMikD,YAE5D+V,EAAUnoE,EAAAA,WAAYjN,EAAMolC,UAAaw9B,EAAiBliE,MAAsC,GAA9BqoB,EAAMroB,MAAM,IAAIyqB,OAAS,IAE3Fq3C,EAAS94D,EAAAA,SAAiB,CAC9B9B,IAAKA,IACIwtE,EAAQ10E,MAEjBqH,IAAMkB,IAMJ,GALAmsE,EAAQ10E,MAAQuI,GAAO,GAClBjJ,EAAMolC,UAAaw9B,EAAiBliE,QACvCqoB,EAAMroB,MAAQ,CAACupD,GAAcjqD,EAAOiJ,KAGlCA,GAAOjJ,EAAMolC,UAAYplC,EAAMk1E,YAAY31E,OAAQ,CACrD,MAAM4J,EAASF,EAAI3I,MAAM,IAAI6D,OAAQ,MAAKnE,EAAMk1E,WAAWlqE,KAAK;AAC5D7B,EAAO5J,OAAS,IAClB4J,EAAO5E,SAAQtD,KACbA,EAAIA,EAAE6E,SACC+/B,EAAOokB,GAAcjqD,EAAOiB,OAErCm0E,EAAQ10E,MAAQ,IAIfuI,IAAKy5D,EAAehiE,OAAS,GAElCy2C,EAAWz2C,OAASuI,KAGlBswD,EAAe7vD,EAAAA,UAAS,IACS,mBAAvB1J,EAAMu5D,aAA8Bv5D,EAAMu5D,aAAaxwC,EAAMroB,OACzC,iBAAvBV,EAAMu5D,aAA4Bv5D,EAAMu5D,aAC9Cv5D,EAAMolC,SAAWrc,EAAMroB,MAAMnB,OAASijE,EAAO9hE,MAAMnB;AAE1DqkB,EAAKA,MAACwxD,GAAS10E,IACTy0E,EAGFtwD,YAAS,IAAOswD,GAAU,IACjB5gC,EAAU7zC,QAAUof,EAAKpf,QAClCof,EAAKpf,OAAQ,GAGfyoB,EAAK,gBAAiBzoB,MAGxBkjB,EAAKA,MAACmF,GAAOroB,IACNV,EAAMolC,UAAaw9B,EAAiBliE,QACvC00E,EAAQ10E,MAAQA,EAAM,IAAIyqB,OAAS;AAIvC,MAAMi2C,cAAEA,EAAagB,WAAEA,GAAejB,GAAUnhE,EAAOwmB,GAAO,IAAM2wB,EAAWz2C,MAAQ,GAAK8hE,EAAO9hE,QAE7F8+D,EAAe91D,EAAAA,UAAS,IACxB1J,EAAMw+D,aACD4C,EAAc1gE,MAAMmZ,QAAO8oD,IAAiB55C,EAAMroB,MAAMwD,MAAK6G,GAAKA,EAAErK,QAAUiiE,EAAajiE,UAE7F0gE,EAAc1gE,QAGjBskD,EAAiBt7C,YAAS,IAAMqf,EAAMroB,MAAM0G,KAAIi4D,GAAaA,EAAU3+D,UAEvEmiE,EAAiBn5D,EAAAA,UAAS,MACgB,IAA1B1J,EAAMsiE,iBACG,UAA1BtiE,EAAMsiE,iBAA+BE,EAAO9hE,QAAU8+D,EAAa9+D,MAAM,IAAIyqB,QAE9Eq0C,EAAa9+D,MAAMnB,OAAS,IAC3B43C,EAAWz2C,QACX+hE,EAAa/hE,QAGZ++D,EAAe/1D,EAAQA,UAAC,IAC3B1J,EAAMu+D,aAAeiB,EAAa9+D,MAAMnB,QACzCS,EAAMkN,UAAY+pC,GAAMI,WAAW32C,QAG/Bi9D,EAAU3lD,EAAAA,OACV+lD,aAAEA,EAAYC,cAAEA,GAAkBN,GAAaC,EAASqB;AAC9D,SAAS9E,EAAS9uB,GAChB+pC,GAAU,EAENn1E,EAAM4+D,cACR9+C,EAAKpf,OAAQ,GAGjB,SAASi/D,IACHF,EAAa/+D,QAEjBof,EAAKpf,OAAQ,GAEf,SAASoiE,EAAqB13B,GACxBq0B,EAAa/+D,QAEb6zC,EAAU7zC,QACZ0qC,EAAEoW,iBACFpW,EAAEyJ,mBAEJ/0B,EAAKpf,OAASof,EAAKpf,OAGrB,SAAS4gD,EAAWlW,GAClB,G9KgFC,SAA+BA,GACpC,OAAOA,EAAEiqC,aAAevwE,EAAsBiB,SAASqlC,EAAE5nC,K8KjFjD8xE,CAAqBlqC,IAAMprC,EAAMkN,UAAY+pC,GAAMI,WAAW32C,MAAO;AAEzE,MAAM05D,EAAiB4E,EAAct+D,MAAM05D,eACrC76D,EAASwpB,EAAMroB,MAAMnB;AAkC3B,IA/BEmjE,EAAehiE,OAAS,GACxB,CAAC,QAAS,YAAa,WAAWqF,SAASqlC,EAAE5nC,OAE7C4nC,EAAEoW,iBAGA,CAAC,QAAS,aAAaz7C,SAASqlC,EAAE5nC,OACpCsc,EAAKpf,OAAQ,GAGX,CAAC,UAAUqF,SAASqlC,EAAE5nC,OACxBsc,EAAKpf,OAAQ,GAGX,CAAC,QAAS,SAAU,OAAOqF,SAASqlC,EAAE5nC,OACpCq/D,EAAeniE,OAAS,CAAC,QAAS,OAAOqF,SAASqlC,EAAE5nC,MACtDqiC,EAAOu7B,EAAc1gE,MAAM,IAG7By2C,EAAWz2C,OAAQ,GAGP,cAAV0qC,EAAE5nC,KAAuBq/D,EAAeniE,OAC1Ci9D,EAAQj9D,OAAOoL,MAAM,QAGT,UAAVs/B,EAAE5nC,KAAmBg/D,EAAO9hE,QAC9BmlC,EAAOokB,GAAcjqD,EAAOwiE,EAAO9hE,QAC/BkiE,EAAiBliE,QAAO00E,EAAQ10E,MAAQ,KAG1C,CAAC,YAAa,UAAUqF,SAASqlC,EAAE5nC,KAAM,CAC3C,IACGxD,EAAMolC,UACPw9B,EAAiBliE,OACjBqoB,EAAMroB,MAAMnB,OAAS,IACpBijE,EAAO9hE,MACR,OAAOmlC,EAAO9c,EAAMroB,MAAM,IAAI;AAEhC,IAAKgiE,EAAehiE,MAAO,CACzB,MAAMqiE,EAAyBL,EAAehiE;AAC9CmlC,EAAO9c,EAAMroB,MAAMgiE,EAAehiE,QAAQ,GAE1CgiE,EAAehiE,MAAQqiE,GAA0BxjE,EAAS,EAAKA,EAAS,EAAKwjE,MAC1D,cAAV33B,EAAE5nC,KAAwBg/D,EAAO9hE,QAC1CgiE,EAAehiE,MAAQnB,EAAS,GAIpC,GAAKS,EAAMolC,SAAX,CAEA,GAAc,cAAVgG,EAAE5nC,IAAqB,CACzB,GAAIk/D,EAAehiE,MAAQ,GAAK05D,EAAiB,EAAG;AAEpD,MAAMthD,EAAO4pD,EAAehiE,OAAS,EACjCgiE,EAAehiE,MAAQ,EACvBnB,EAAS;AAETwpB,EAAMroB,MAAMoY,GACd4pD,EAAehiE,MAAQoY,GAEvB4pD,EAAehiE,OAAS,EACxBs+D,EAAct+D,MAAMsiE,kBAAkBR,EAAO9hE,MAAMnB,OAAQijE,EAAO9hE,MAAMnB,SAI5E,GAAc,eAAV6rC,EAAE5nC,IAAsB,CAC1B,GAAIk/D,EAAehiE,MAAQ,EAAG;AAE9B,MAAM4e,EAAOojD,EAAehiE,MAAQ;AAEhCqoB,EAAMroB,MAAM4e,GACdojD,EAAehiE,MAAQ4e,GAEvBojD,EAAehiE,OAAS,EACxBs+D,EAAct+D,MAAMsiE,kBAAkB,EAAG,MAI/C,SAASrtC,IACH4e,EAAU7zC,QACZy2C,EAAWz2C,OAAQ,EACnBs+D,EAAct+D,OAAOoL,SAIzB,SAAS+5B,EAAQrlC,GAAwD,IAA5BuH,IAAmBhH,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,KAAAA,UAAA;AAC9D,GAAKP,IAAQA,EAAKR,MAAMyY,SAExB,GAAIzY,EAAMolC,SAAU,CAClB,MAAMjvB,EAAQ4S,EAAMroB,MAAM4mB,WAAU+3C,GAAar/D,EAAMuzC,gBAAgB8rB,EAAU3+D,MAAOF,EAAKE,SACvFqQ,EAAa,MAAPhJ,IAAgBoO,EAAQpO;AAEpC,IAAKoO,EAAO,CACV,MAAMzV,EAAQqQ,EAAM,IAAIgY,EAAMroB,MAAOF,GAAQ,IAAIuoB,EAAMroB;AACvDA,EAAM2mB,OAAOlR,EAAO,GACpB4S,EAAMroB,MAAQA,OACLqQ,IACTgY,EAAMroB,MAAQ,IAAIqoB,EAAMroB,MAAOF;AAG7BR,EAAMuiE,gBACRC,EAAO9hE,MAAQ,QAEZ,CACL,MAAMqQ,GAAc,IAARhJ;AACZghB,EAAMroB,MAAQqQ,EAAM,CAACvQ,GAAQ,GAC7B40E,EAAQ10E,MAAQqQ,IAAQ6xD,EAAiBliE,MAAQF,EAAK2qB,MAAQ,GAG9DtG,EAAAA,UAAS,KACP/E,EAAKpf,OAAQ,EACby2C,EAAWz2C,OAAQ,MAKzB,SAASsgD,EAAW5V,GAClBmJ,EAAU7zC,OAAQ,EAClBs+B,YAAW,KACTyjC,EAAa/hE,OAAQ,KAGzB,SAASwgD,EAAY9V,GACnBq3B,EAAa/hE,OAAQ,EAEvB,SAASuiE,EAAoBhiE,GAClB,MAALA,IAAoB,KAANA,GAAajB,EAAMolC,UAAaw9B,EAAiBliE,SAAQqoB,EAAMroB,MAAQ,IAkS3F,OA/RAkjB,EAAAA,MAAM2wB,GAAW,CAACtrC,EAAKq2B,KACrB,IAAIr2B,GAAOA,IAAQq2B,EAKnB,GAHAojC,EAAehiE,OAAS,EACxBof,EAAKpf,OAAQ,GAGXmiE,EAAeniE,OACd+hE,EAAa/hE,OACbqoB,EAAMroB,MAAMwD,MAAK8R,IAAA,IAACtV,MAAEA,GAAOsV;AAAA,OAAKtV,IAAU8+D,EAAa9+D,MAAM,GAAGA,UAMnE,GAAI8hE,EAAO9hE,MAAO,CAChB,GAAIV,EAAMolC,SAER,YADAS,EAAOokB,GAAcjqD,EAAOwiE,EAAO9hE;AAIrC,IAAKkiE,EAAiBliE,MAAO;AAEzBqoB,EAAMroB,MAAMwD,MAAKqgD,IAAA,IAACp5B,MAAEA,GAAOo5B;AAAA,OAAKp5B,IAAUq3C,EAAO9hE,SACnD00E,EAAQ10E,MAAQ,GAEhBmlC,EAAOokB,GAAcjqD,EAAOwiE,EAAO9hE,cAfrCmlC,EAAO25B,EAAa9+D,MAAM,OAoB9BkjB,EAAKA,MAAC9D,GAAM,KACV,IAAK9f,EAAMw+D,cAAgB1+C,EAAKpf,OAASqoB,EAAMroB,MAAMnB,OAAQ,CAC3D,MAAM4W,EAAQqpD,EAAa9+D,MAAM4mB,WAC/B9mB,GAAQuoB,EAAMroB,MAAMwD,MAAK6G,GAAK/K,EAAMuzC,gBAAgBxoC,EAAErK,MAAOF,EAAKE;AAEpE/B,GAAcC,OAAO83B,uBAAsB,KACzCvgB,GAAS,GAAK+oD,EAAkBx+D,OAAOo7D,cAAc3lD,UAK3DyN,EAAAA,OAAM,IAAM5jB,EAAMwmB,QAAO,CAAC6tB,EAAQ/U,KAC5Bxf,EAAKpf,OAEL6zC,EAAU7zC,QAAU4+B,EAAO//B,QAAU80C,EAAO90C,SAC9CugB,EAAKpf,OAAQ,MAIjBwc,IAAU,KACR,MAAMijD,MACFngE,EAAMu+D,YAAciB,EAAa9+D,MAAMnB,QACzC6b,EAAM,iBACNA,EAAM,gBACNA,EAAM,YAEFg8B,EAAUruB,EAAMroB,MAAMnB,OAAS,EAC/B6gE,EAAiBv+C,GAAWnH,YAAY1a;AAE9C,OAAA2d,EAAAC,YAAAiE,GAAA9D,aAAA,CAAA/F,IAEUgnD,GACDoB,EAAc,CAAAz9B,WACT6/B,EAAO9hE,MAAK,sBAAA60C,CAAAA,GAAZitB,EAAO9hE,MAAK60C,EACA0tB,GAAkBhtB,QACtB1B,EAAU7zC,MAAK,mBAAA60C,GAAfhB,EAAU7zC,MAAK60C,EAAAuB,gBACf/tB,EAAMC,cAAauwC,aACtBA,EAAa74D,MAAKu3D,MACzB7gB,EAAOz/B,MACR,CACL,aACA,CACE,0BAA2BmI,EAAKpf,MAChC,sBAAuBV,EAAMm+D,MAC7B,+BAAgCyE,EAAiBliE,MACjD,8BAA+BgiE,EAAehiE,OAAS,EACvD,CAAE,gBAAcV,EAAMolC,SAAW,WAAa,YAAa,GAE7DplC,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKhC,SACRlN,EAAMkN,SAAQoe,YACX8rB,OAAU53C,EAAYQ,EAAMsrB,YAAW,gBACrC4uC,EAAO,sBACDyF,EAAkBre,UAC5BA,IAAS,IAGhBlmC,EACH3D,QAASA,IAAAkG,EAAAA,YAAA6W,EAAAjtB,SAAA,KAAA,CAAAoW,EAAAC,YAAA24C,GAAAx4C,aAAA,CAAA/F,IAGGinD,EAAQt8B,WACJ7iB,EAAKpf,MAAK,sBAAA60C,GAAVz1B,EAAKpf,MAAK60C,EAAAyS,UAAA,SAAArlC,aAAA,sBAAAlK,SAGTgnD,EAAa/+D,MAAK48B,MACrBt9B,EAAMs9B,MAAKrD,UACP,IAAG61B,aACD,EAAKG,qBACG,EAAKnpC,WACd9mB,EAAM8mB,WAAU6O,aACdA,GACV31B,EAAM2+D,WAAS,CAAAlnD,QAAAA,IAElB0oD,CAAAA,GAAOxiD,EAAAA,YAAA8sC,GAAA1sC,EAAAA,WAAA,CAAA/F,IAEC2lD,EAAO53B,SACFif,EAAetkD,MAAKykD,eACdnlD,EAAMolC,SAAW,cAAgB,qBAAoB8c,YACvD9W,GAAkBA,EAAEoW,iBAAgBF,UACvC0c,EAAahd,UACbA,EAASE,WACRA,EAAUsc,gBACLO,EAAYv1B,SAAA,KAAA,YAAA,SAAAv0B,MAGtBjU,EAAM6+D,WAAa7+D,EAAMiU,OAC5BjU,EAAMy+D,WAAS,CAAAhnD,QAAAA,IAElB2D,CAAAA,EAAM,qBAELokD,EAAa9+D,MAAMnB,SAAWS,EAAMu+D,aAAenjD,EAAM,gBAAcuC,EAAAC,YAAAmqC,GAAA,CAAA58B,MACrDpY,EAAE/S,EAAMurB,aAAW,OACtC5N,EAAAC,YAAAy/C,GAAA,CAAArlD,IAEoBknD,EAAiBvE,YAAA,EAAAn0C,MAAsBg5C,EAAa9+D,OAAK,CAAA+W,QAC3E8tC,IAA8B,IAA7B/kD,KAAEA,EAAI2V,MAAEA,EAAK0kD,QAAEA,GAAStV;AACzB,MAAMgE,EAAYntB,EAAAA,WAAW57B,EAAKR,MAAO,CACvCgY,IAAK6iD,EACLr3D,IAAK2S,EACLsP,UAASo9C,EAAeniE,OAAmB,IAAVyV,SAAsB3W,EACvD6oC,QAASA,IAAMxC,EAAOrlC,EAAM;AAG9B,OAAO4a,EAAM5a,OAAO,CAClBA,KAAAA,EACA2V,MAAAA,EACAnW,MAAOupD,KACP5rC,EAAAC,YAAAmqC,GAAAhqC,EAAAA,WACgBwrC,EAAS,CAAArrC,KAAA,WAAA,CAEvB+jB,QAASwjB,IAAA,IAAC9f,WAAEA,GAAY8f;AAAA,OAAA9nC,cAAA6W,EAAAA,SAAA,KAAA,CAElBx0B,EAAMolC,WAAaplC,EAAMw+D,aAAY7gD,EAAAC,YAAAw3B,GAAA,CAAA5xC,IAE7BhD,EAAKE,MAAKiiC,WACHgD,EAAUsL,QACd,EAAKzI,SAAA,MAGdhpC,WAAAA,EAEFgB,EAAKR,MAAM6iD,eAAallC,EAAAC,YAAAsD,GAAA,CAAAsd,MACPh+B,EAAKR,MAAM6iD,eAC7B,MAECriD,EAAKR,MAAM6wC,aAAWlzB,EAAAC,YAAA8pB,GAAA,CAAAnqB,KACR/c,EAAKR,MAAM6wC,aAC1B,SAGL1lB,MAAOA,IACEgsB,EAAWz2C,MACdF,EAAK2qB,MA5gBzC,SAA0BxZ,EAAcpF,EAAkChN,GACxE,GAAe,MAAXgN,EAAiB,OAAOoF;AAE5B,GAAIhR,MAAMC,QAAQ2L,GAAU,MAAM,IAAI4L,MAAM;AAE5C,MAA0B,iBAAZ5L,IAAyBA,EAAOoR,cAAA6W,EAAAA,SAAA,KAAA,CAAA7W,EAAAC,YAAA,OAAA,CAAAjG,MAAA,sBAGLhG,CAAAA,EAAKkE,OAAO,EAAGtJ,KAAQoR,EAAAC,YAAA,OAAA,CAAAjG,MAAA,oBACzBhG,CAAAA,EAAKkE,OAAOtJ,EAAShN,KAAOoe,EAAAC,YAAA,OAAA,CAAAjG,MAAA,sBAC1BhG,CAAAA,EAAKkE,OAAOtJ,EAAUhN,OAG3DoS,EAggB8BwxD,CAAgB3iE,EAAK2qB,MAAOi3C,EAAW5hE,IAAO2qB,MAAOq3C,EAAO9hE,OAAOnB,QAAU,QAQzF6b,EAAM,yBAKZ2N,EAAMroB,MAAM0G,KAAI,CAAC5G,EAAM2V,KACvB,SAASmqD,EAAal1B,GACpBA,EAAEyJ,kBACFzJ,EAAEoW,iBAEF3b,EAAOrlC,GAAM,GAGf,MAAMq4C,EAAY,CAChB,gBAAiBynB,EACjBhf,UAAWlW,GACK,UAAVA,EAAE5nC,KAA6B,MAAV4nC,EAAE5nC,MAE3B4nC,EAAEoW,iBACFpW,EAAEyJ,kBAEFyrB,EAAYl1B,KAEd8W,YAAa9W,GACXA,EAAEoW,iBACFpW,EAAEyJ,mBAEJlS,YAAY,EACZ,2BAAuBnjC,GAGnB+gE,EAAUN,EAASv/D,QAAU0a,EAAM8kD,OAAS9kD,EAAMikD,UAClDmB,EAAcD,EAChB9zD,GACAwzD,EAASv/D,MACL0a,EAAM8kD,KAAM,CAAE1/D,KAAAA,EAAM2V,MAAAA,EAAOnW,MAAO64C,IAClCz9B,EAAMikD,UAAW,CAAE7+D,KAAAA,EAAM2V,MAAAA,UAE7B3W;AAEJ,IAAI+gE,GAAYC,EAEhB,OAAA7iD,EAAAA,YAAA,MAAA,CAAAna,IAEUhD,EAAKE,MAAKiX,MACT,CACL,wBACAxB,IAAUusD,EAAehiE,OAAS,CAChC,kCACA86B,EAAiB96B,QAEpBwO,MACOiH,IAAUusD,EAAehiE,MAAQ+6B,EAAgB/6B,MAAQ,IAAE,CAEjEu/D,EAASv/D,MACR0a,EAAM8kD,KAOWviD,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,gBAAA8T,SAKJ,CACRyL,MAAO,CACLyvB,SAAUxyC,EAAMo+D,cAChBv1D,KAAM,QACN8I,KAAMnR,EAAK2qB,SAEd,CAAA1T,QAAAA,IAAA,CAEC+oD,KApBK7iD,EAAAC,YAAAmF,GAAAhF,aAAA,CAAAva,IAAA,OAAAgvC,SAGIxyC,EAAMo+D,cAAav1D,KAAA,QAAA8I,KAEvBnR,EAAK2qB,MAAK1S,SACNjY,EAAKR,MAAMyY,UACjBogC,GAAS,MAiBlB2nB,GAAW7iD,EAAAC,YAAA,OAAA,CAAAjG,MAAA,8BAAA,CAELnX,EAAK2qB,MACLnrB,EAAMolC,UAAajvB,EAAQ4S,EAAMroB,MAAMnB,OAAS,GAAEoe,EAAAA,YAAA,OAAA,CAAAhG,MAAA,+BAAA8oD,CAAAA,EAAAC,gCAWpE,eAAgB,WAAA,IAAA,IAAAxzC,EAAAnsB,UAAAxB,OAAIkL,EAAI9J,IAAAA,MAAAusB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1iB,EAAI0iB,GAAApsB,UAAAosB;AAAA,OAAAxP,EAAAC,YAAA4W,EAAAjtB,SAAA,KAAA,CAElB6T,EAAM,qBAAqB3Q,GACzBzK,EAAMu+D,aAAcv+D,EAAMwmB,MAAMjnB,SAAWS,EAAM0+D,cASjDl/D,EATyDme,EAAAC,YAAA8pB,GAAA,CAAA/vB,MAAA,wBAAA4F,KAGlDvd,EAAM0+D,SAAQxc,YACP4gB,EAAmBz6B,QACvBn8B,EAAI,aACD6G,EAAEghC,EAAMrzC,OAAMyqB,MACnBpY,EAAEghC,EAAMrzC,QAAM,cAU/Bu1D,GAAY,CACjB1hB,UAAAA,EACA4C,WAAAA,EACAr3B,KAAAA,EACA0iD,OAAAA,EACAE,eAAAA,EACAtB,cAAAA,EACAv7B,OAAAA,GACCm5B,MCvrBDuW,GAAmC,CACvC,MAAO,EACPC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJ,iBAAkB,EAClBC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI;AA4DN,SAASC,GAAcC,GACrB,OAAO,IAAIj/E,KAAKi/E,EAAKC,cAAeD,EAAKE,WAAY,GAGvD,SAASC,GAAYH,GACnB,OAAO,IAAIj/E,KAAKi/E,EAAKC,cAAeD,EAAKE,WAAa,EAAG,GAU3D,MAAME,GAAW;AAEjB,SAASJ,GAAMp+E,GACb,GAAa,MAATA,EAAe,OAAO,IAAIb;AAE9B,GAAIa,aAAiBb,KAAM,OAAOa;AAElC,GAAqB,iBAAVA,EAAoB,CAC7B,IAAIy+E;AAEJ,GAAID,GAAS96E,KAAK1D,GAChB,OAlBN,SAAyBA,GACvB,MAAM0+E,EAAQ1+E,EAAMJ,MAAM,KAAK8G,IAAI3F;AAGnC,OAAO,IAAI5B,KAAKu/E,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,IAcnCC,CAAe3+E;AAKxB,GAHEy+E,EAASt/E,KAAKy/E,MAAM5+E,IAGjBY,MAAM69E,GAAS,OAAO,IAAIt/E,KAAKs/E,GAGtC,OAAO,KAGT,MAAMI,GAA0B,IAAI1/E,KAAK,IAAM,EAAG;AAYlD,SAAS6tB,GACPhtB,EACA8+E,EACArxD,EACAsxD,GAEA,MAAMC,EAAUZ,GAAKp+E,IAAU,IAAIb,KAC7B8/E,EAAeF,IAAUD;AAE/B,GAA4B,mBAAjBG,EACT,OAAOA,EAAaD,EAASF,EAAcrxD;AAG7C,IAAIphB,EAAsC;AAC1C,OAAQyyE,GACN,IAAK,WACHzyE,EAAU,CAAE6yE,KAAM,UAAWC,MAAO,OAAQC,IAAK;AACjD;AACF,IAAK,sBACH/yE,EAAU,CAAEgzE,QAAS,OAAQH,KAAM,UAAWC,MAAO,OAAQC,IAAK;AAClE;AACF,IAAK,aAGH,MAAQ,GAFIJ,EAAQM,aACN,IAAIxyD,KAAKyyD,eAAe9xD,EAAQ,CAAE0xD,MAAO,SAAUnyD,OAAOgyD;AAE1E,IAAK,wBACH3yE,EAAU,CAAEgzE,QAAS,QAASD,IAAK,UAAWD,MAAO;AACrD;AACF,IAAK,YACH9yE,EAAU,CAAE8yE,MAAO,QAASC,IAAK;AACjC;AACF,IAAK,OACH/yE,EAAU,CAAE6yE,KAAM;AAClB;AACF,IAAK,QACH7yE,EAAU,CAAE8yE,MAAO;AACnB;AACF,IAAK,aACH9yE,EAAU,CAAE8yE,MAAO;AACnB;AACF,IAAK,eACH9yE,EAAU,CAAE8yE,MAAO,OAAQD,KAAM;AACjC;AACF,IAAK,eACH7yE,EAAU,CAAE8yE,MAAO,OAAQC,IAAK;AAChC;AACF,IAAK,UACH/yE,EAAU,CAAEgzE,QAAS;AACrB;AACF,IAAK,eACHhzE,EAAU,CAAEgzE,QAAS;AACrB;AACF,IAAK,aACH,OAAO,IAAIvyD,KAAKC,aAAaU,GAAQT,OAAOgyD,EAAQM;AACtD,IAAK,WACHjzE,EAAU,CAAEmzE,KAAM,UAAWC,QAAQ;AACrC;AACF,IAAK,WACHpzE,EAAU,CAAEmzE,KAAM,UAAWC,QAAQ;AACrC;AACF,IAAK,UACHpzE,EAAU,CAAEqzE,OAAQ;AACpB;AACF,IAAK,UACHrzE,EAAU,CAAEiK,OAAQ;AACpB;AACF,IAAK,WAGL,IAAK,cACHjK,EAAU,CAAEmzE,KAAM,UAAWE,OAAQ,UAAWppE,OAAQ,UAAWmpE,QAAQ;AAC3E;AACF,IAAK,cACHpzE,EAAU,CAAEmzE,KAAM,UAAWE,OAAQ,UAAWppE,OAAQ,UAAWmpE,QAAQ;AAC3E;AACF,IAAK,eAGL,IAAK,kBACHpzE,EAAU,CAAE6yE,KAAM,UAAWC,MAAO,OAAQC,IAAK,UAAWI,KAAM,UAAWE,OAAQ,UAAWppE,OAAQ,UAAWmpE,QAAQ;AAC3H;AACF,IAAK,kBACHpzE,EAAU,CAAE6yE,KAAM,UAAWC,MAAO,OAAQC,IAAK,UAAWI,KAAM,UAAWE,OAAQ,UAAWppE,OAAQ,UAAWmpE,QAAQ;AAC3H;AACF,IAAK,eACHpzE,EAAU,CAAE6yE,KAAM,UAAWC,MAAO,UAAWC,IAAK;AACpD;AACF,IAAK,mBACH/yE,EAAU,CAAE6yE,KAAM,UAAWC,MAAO,UAAWC,IAAK,UAAWI,KAAM,UAAWE,OAAQ,UAAWppE,OAAQ,UAAWmpE,QAAQ;AAC9H;AACF,IAAK,sBACHpzE,EAAU,CAAE6yE,KAAM,UAAWC,MAAO,UAAWC,IAAK,UAAWI,KAAM,UAAWE,OAAQ,UAAWppE,OAAQ,UAAWmpE,QAAQ;AAC9H;AACF,IAAK,sBACHpzE,EAAU,CAAE6yE,KAAM,UAAWC,MAAO,UAAWC,IAAK,UAAWI,KAAM,UAAWE,OAAQ,UAAWppE,OAAQ,UAAWmpE,QAAQ;AAC9H;AACF,QACEpzE,EAAU4yE,GAAgB,CAAEU,SAAU,MAAOC,aAAc,SAG/D,OAAO,IAAI9yD,KAAKyyD,eAAe9xD,EAAQphB,GAAS2gB,OAAOgyD,GA8FzD,SAASa,GAASzB,EAAY0B,GAC5B,OAAO1B,EAAKh/E,UAAY0gF,EAAU1gF,UAWpC,SAAS2gF,GAAS3B,EAAY0B,GAC5B,OAAO1B,EAAKh/E,YAAc0gF,EAAU1gF,UA2EtC,SAAS4gF,GAAY5B,GACnB,OAAO,IAAIj/E,KAAKi/E,EAAKC,cAAeD,EAAKE,WAAYF,EAAKkB,UAAW,EAAG,EAAG,EAAG,GAOzE,MAAMW,GAIX/3E,YAAamE,GACXhE,KAAKolB,OAASphB,EAAQohB,OACtBplB,KAAK02E,QAAU1yE,EAAQ0yE,QAGzBX,KAAMp+E,GACJ,OAAOo+E,GAAKp+E,GAGdkgF,SAAU9B,GACR,OAAOA,EAGT+B,MAAO/B,GACL,OA7MJ,SAAgB5wD,EAA2BxtB,GACzC,MAAMo+E,EAAO5wD,EAAQ0yD,SAASlgF;AAK9B,MAAQ,GAJKo+E,EAAKC,iBACJ34E,EAAS7E,OAAOu9E,EAAKE,WAAa,GAAI,EAAG,QAC3C54E,EAAS7E,OAAOu9E,EAAKkB,WAAY,EAAG,OAyMvCa,CAAM93E,KAAM+1E,GAGrBgC,SAAUhC,GACR,OAxMJ,SAAmBp+E,GACjB,MAAOk/E,EAAMC,EAAOC,GAAOp/E,EAAMJ,MAAM,KAAK8G,IAAI3F;AAEhD,OAAO,IAAI5B,KAAK+/E,EAAMC,EAAQ,EAAGC,GAqMxBgB,CAAShC,GAGlBiC,WAAYjC,EAAYroE,GACtB,OAtMJ,SAAqBqoE,EAAYroE,GAC/B,MAAM0H,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAE6iE,WAAW7iE,EAAE8iE,aAAexqE,GACvB0H,EAmME4iE,CAAWjC,EAAMroE,GAG1ByqE,SAAUpC,EAAYroE,GACpB,OApMJ,SAAmBqoE,EAAYroE,GAC7B,MAAM0H,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAEgjE,SAAShjE,EAAEijE,WAAa3qE,GACnB0H,EAiME+iE,CAASpC,EAAMroE,GAGxB4qE,QAASvC,EAAYroE,GACnB,OAlMJ,SAAkBqoE,EAAYroE,GAC5B,MAAM0H,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAEmjE,QAAQnjE,EAAE6hE,UAAYvpE,GACjB0H,EA+LEkjE,CAAQvC,EAAMroE,GAGvB8qE,SAAUzC,EAAYroE,GACpB,OAhMJ,SAAmBqoE,EAAYroE,GAC7B,MAAM0H,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAEmjE,QAAQnjE,EAAE6hE,UAAsB,EAATvpE,GAClB0H,EA6LEojE,CAASzC,EAAMroE,GAGxB+qE,UAAW1C,EAAYroE,GACrB,OA9LJ,SAAoBqoE,EAAYroE,GAC9B,MAAM0H,EAAI,IAAIte,KAAKi/E;AAGnB,OAFA3gE,EAAEmjE,QAAQ,GACVnjE,EAAEsjE,SAAStjE,EAAE6gE,WAAavoE,GACnB0H,EA0LEqjE,CAAU1C,EAAMroE,GAGzBirE,aAAc5C,GACZ,OA1bJ,SAAuBA,EAAY3wD,GACjC,MAAMwzD,EAAQ;AACd,IAAIC,EAAc;AAClB,MAAMC,EAAkBhD,GAAaC,GAC/BgD,EAAiB7C,GAAWH,GAC5BiD,GAAqBF,EAAgBG,SAAWzM,GAASpnD,EAAO/kB,OAAO,GAAG0M,eAAiB,GAAK,EAChGmsE,GAAoBH,EAAeE,SAAWzM,GAASpnD,EAAO/kB,OAAO,GAAG0M,eAAiB,GAAK;AAEpG,IAAK,IAAIrW,EAAI,EAAGA,EAAIsiF,EAAmBtiF,IAAK,CAC1C,MAAMyiF,EAAc,IAAIriF,KAAKgiF;AAC7BK,EAAYZ,QAAQY,EAAYlC,WAAa+B,EAAoBtiF,IACjEmiF,EAAY54E,KAAKk5E,GAGnB,IAAK,IAAIziF,EAAI,EAAGA,GAAKqiF,EAAe9B,UAAWvgF,IAAK,CAClD,MAAMqgF,EAAM,IAAIjgF,KAAKi/E,EAAKC,cAAeD,EAAKE,WAAYv/E;AAG1DmiF,EAAY54E,KAAK82E,GAGU,IAAvB8B,EAAYriF,SACdoiF,EAAM34E,KAAK44E,GACXA,EAAc,IAIlB,IAAK,IAAIniF,EAAI,EAAGA,EAAI,EAAIwiF,EAAkBxiF,IAAK,CAC7C,MAAMyiF,EAAc,IAAIriF,KAAKiiF;AAC7BI,EAAYZ,QAAQY,EAAYlC,UAAYvgF,GAC5CmiF,EAAY54E,KAAKk5E,GAOnB,OAJIN,EAAYriF,OAAS,GACvBoiF,EAAM34E,KAAK44E,GAGND,EAqZED,CAAa5C,EAAM/1E,KAAKolB,QAGjCg0D,YAAarD,GACX,OAtZJ,SAAsBA,EAAY3wD,GAChC,MAAMhQ,EAAI,IAAIte,KAAKi/E;AACnB,KAAO3gE,EAAE6jE,YAAczM,GAASpnD,EAAO/kB,OAAO,GAAG0M,gBAAkB,IACjEqI,EAAEmjE,QAAQnjE,EAAE6hE,UAAY;AAE1B,OAAO7hE,EAiZEgkE,CAAYrD,EAAM/1E,KAAKolB,QAGhCi0D,UAAWtD,GACT,OAlZJ,SAAoBA,EAAY3wD,GAC9B,MAAMhQ,EAAI,IAAIte,KAAKi/E,GACbuD,IAAY9M,GAASpnD,EAAO/kB,OAAO,GAAG0M,gBAAkB,GAAK,GAAK;AACxE,KAAOqI,EAAE6jE,WAAaK,GACpBlkE,EAAEmjE,QAAQnjE,EAAE6hE,UAAY;AAE1B,OAAO7hE,EA4YEikE,CAAUtD,EAAM/1E,KAAKolB,QAG9B0wD,aAAcC,GACZ,OAAOD,GAAaC,GAGtBG,WAAYH,GACV,OAAOG,GAAWH,GAGpBpxD,OAAQoxD,EAAYU,GAClB,OAAO9xD,GAAOoxD,EAAMU,EAAcz2E,KAAKolB,OAAQplB,KAAK02E,SAGtDgB,QAAS3B,EAAY0B,GACnB,OAAOC,GAAQ3B,EAAM0B,GAGvBhpC,QAASsnC,GACP,OAhLJ,SAAkBA,GAChB,MAAM3gE,EAAI,IAAIte,KAAKi/E;AAEnB,OAAO3gE,aAAate,OAASyB,MAAM6c,EAAEre,WA6K5B03C,CAAQsnC,GAGjBwD,cAAexD,EAAY5zD,GACzB,OAxLJ,SAAwB4zD,EAAY5zD,GAClC,OAAOq1D,GAAQzB,EAAM5zD,EAAM,KAiB7B,SAAmB4zD,EAAY0B,GAC7B,OAAO1B,EAAKh/E,UAAY0gF,EAAU1gF,UAlBAyiF,CAASzD,EAAM5zD,EAAM,IAuL9Co3D,CAAcxD,EAAM5zD,GAG7Bq1D,QAASzB,EAAY0B,GACnB,OAAOD,GAAQzB,EAAM0B,GAGvBgC,WAAY1D,EAAY0B,GACtB,OAlLJ,SAAqB1B,EAAY0B,GAC/B,OAAOD,GAAQG,GAAW5B,GAAO4B,GAAWF,IAiLnCgC,CAAW1D,EAAM0B,GAG1B+B,SAAUzD,EAAY0B,GACpB,OAAQD,GAAQzB,EAAM0B,KAAeC,GAAQ3B,EAAM0B,GAGrDiC,UAAW3D,EAAY0B,GACrB,OA9KJ,SAAoB1B,EAAY0B,GAC9B,OAAO1B,EAAKkB,YAAcQ,EAAUR,WAClClB,EAAKE,aAAewB,EAAUxB,YAC9BF,EAAKC,gBAAkByB,EAAUzB,cA2K1B0D,CAAU3D,EAAM0B,GAGzBkC,YAAa5D,EAAY0B,GACvB,OA5KJ,SAAsB1B,EAAY0B,GAChC,OAAO1B,EAAKE,aAAewB,EAAUxB,YACnCF,EAAKC,gBAAkByB,EAAUzB,cA0K1B2D,CAAY5D,EAAM0B,GAG3BmC,WAAY7D,EAAY0B,GACtB,OA3KJ,SAAqB1B,EAAY0B,GAC/B,OAAO1B,EAAKC,gBAAkByB,EAAUzB,cA0K/B4D,CAAW7D,EAAM0B,GAG1BQ,WAAYlC,EAAY8D,GACtB,OA1IJ,SAAqB9D,EAAY8D,GAC/B,MAAMzkE,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAE6iE,WAAW4B,GACNzkE,EAuIE6iE,CAAWlC,EAAM8D,GAG1BzB,SAAUrC,EAAY8D,GACpB,OApJJ,SAAmB9D,EAAY8D,GAC7B,MAAMzkE,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAEgjE,SAASyB,GACJzkE,EAiJEgjE,CAASrC,EAAM8D,GAGxBnB,SAAU3C,EAAY8D,GACpB,OA5IJ,SAAmB9D,EAAY8D,GAC7B,MAAMzkE,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAEsjE,SAASmB,GACJzkE,EAyIEsjE,CAAS3C,EAAM8D,GAGxBtB,QAASxC,EAAYgB,GACnB,OA1IJ,SAAkBhB,EAAYgB,GAC5B,MAAM3hE,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAEmjE,QAAQxB,GACH3hE,EAuIEmjE,CAAQxC,EAAMgB,GAGvB+C,QAAS/D,EAAYc,GACnB,OAxIJ,SAAkBd,EAAYc,GAC5B,MAAMzhE,EAAI,IAAIte,KAAKi/E;AAEnB,OADA3gE,EAAE2kE,YAAYlD,GACPzhE,EAqIE0kE,CAAQ/D,EAAMc,GAGvBmD,QAASjE,EAAY0B,EAA0Bn/E,GAC7C,OA/LJ,SAAkBy9E,EAAY0B,EAA0Bn/E,GACtD,MAAM8c,EAAI,IAAIte,KAAKi/E,GACbzoE,EAAI,IAAIxW,KAAK2gF;AAEnB,OAAQn/E,GACN,IAAK,QACH,OAAO8c,EAAE4gE,cAAgB1oE,EAAE0oE;AAC7B,IAAK,WACH,OAAOr5E,KAAK64C,OAAOpgC,EAAE6gE,WAAa3oE,EAAE2oE,WAAmD,IAArC7gE,EAAE4gE,cAAgB1oE,EAAE0oE,gBAAuB;AAC/F,IAAK,SACH,OAAO5gE,EAAE6gE,WAAa3oE,EAAE2oE,WAAmD,IAArC7gE,EAAE4gE,cAAgB1oE,EAAE0oE;AAC5D,IAAK,QACH,OAAOr5E,KAAK64C,OAAOpgC,EAAEre,UAAYuW,EAAEvW,WAAc;AACnD,IAAK,OACH,OAAO4F,KAAK64C,OAAOpgC,EAAEre,UAAYuW,EAAEvW,WAAc;AACnD,IAAK,QACH,OAAO4F,KAAK64C,OAAOpgC,EAAEre,UAAYuW,EAAEvW,WAAS;AAC9C,IAAK,UACH,OAAO4F,KAAK64C,OAAOpgC,EAAEre,UAAYuW,EAAEvW,WAAS;AAC9C,IAAK,UACH,OAAO4F,KAAK64C,OAAOpgC,EAAEre,UAAYuW,EAAEvW,WAAa;AAClD,QACE,OAAOqe,EAAEre,UAAYuW,EAAEvW,WAyKlBijF,CAAQjE,EAAM0B,EAAWn/E,GAGlC2hF,cACE,OA9aJ,SAAsB70D,GACpB,MAAM80D,EAAiB1N,GAASpnD,EAAO/kB,OAAO,GAAG0M;AAEjD,OAAOjV,EAAY,GAAGuG,KAAI3H,IACxB,MAAMsgF,EAAU,IAAIlgF,KAAK0/E;AAEzB,OADAQ,EAAQuB,QAAQ/B,GAAwBS,UAAYiD,EAAiBxjF,GAC9D,IAAI+tB,KAAKyyD,eAAe9xD,EAAQ,CAAE4xD,QAAS,WAAYryD,OAAOqyD,MAwa9DiD,CAAYj6E,KAAKolB,QAG1B+0D,QAASpE,GACP,OAnRJ,SAAkBA,GAChB,OAAOA,EAAKC,cAkRHmE,CAAQpE,GAGjBE,SAAUF,GACR,OAnRJ,SAAmBA,GACjB,OAAOA,EAAKE,WAkRHA,CAASF,GAGlBkB,QAASlB,GACP,OAnRJ,SAAkBA,GAChB,OAAOA,EAAKkB,UAkRHA,CAAQlB,GAGjBqE,aAAcrE,GACZ,OAnRJ,SAAuBA,GACrB,OAAO,IAAIj/E,KAAKi/E,EAAKC,cAAeD,EAAKE,WAAa,EAAG,GAkRhDmE,CAAarE,GAGtBsE,iBAAkBtE,GAChB,OAnRJ,SAA2BA,GACzB,OAAO,IAAIj/E,KAAKi/E,EAAKC,cAAeD,EAAKE,WAAa,EAAG,GAkRhDoE,CAAiBtE,GAG1BsC,SAAUtC,GACR,OAnRJ,SAAmBA,GACjB,OAAOA,EAAKsC,WAkRHA,CAAStC,GAGlBmC,WAAYnC,GACV,OAnRJ,SAAqBA,GACnB,OAAOA,EAAKmC,aAkRHA,CAAWnC,GAGpB4B,WAAY5B,GACV,OAAO4B,GAAW5B,GAGpBuE,SAAUvE,GACR,OA1KJ,SAAmBA,GACjB,OAAO,IAAIj/E,KAAKi/E,EAAKC,cAAeD,EAAKE,WAAYF,EAAKkB,UAAW,GAAI,GAAI,GAAI,KAyKxEqD,CAASvE,GAGlBwE,YAAaxE,GACX,OA3RJ,SAAsBA,GACpB,OAAO,IAAIj/E,KAAKi/E,EAAKC,cAAe,EAAG,GA0R9BuE,CAAYxE,GAGrByE,UAAWzE,GACT,OA5RJ,SAAoBA,GAClB,OAAO,IAAIj/E,KAAKi/E,EAAKC,cAAe,GAAI,IA2R/BwE,CAAUzE,IC1rBd,MAAM0E,GAAuD3rE,OAAOC,IAAI,wBAClE2rE,GAAgD5rE,OAAOC,IAAI;AAEjE,SAAS4rE,GAAY32E,EAAkCohB,GAC5D,MAAMsvB,EAAW92C,EAAU,CACzBunB,QAASyyD,GACTxyD,OAAQ,CACNG,GAAI,QAEJE,GAAI,QACJC,GAAI,QACJC,IAAK,GACLC,GAAI,QACJC,GAAI,QACJhtB,GAAI,QACJwnB,GAAI,QAEJ0F,GAAI,QACJC,GAAI,QACJC,GAAI,QAEJE,GAAI,QACJC,GAAI,QACJC,GAAI,QACJlK,GAAI,QACJmK,GAAI,QACJC,GAAI,QACJE,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,OAAQ,QACRC,OAAQ,QACRC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,OAAQ,QACRC,OAAQ,UAET7jB;AAEH,MAAO,CACLA,QAAS0wC,EACThhB,SAAUknD,GAAelmC,EAAUtvB,IAIvC,SAASw1D,GAAgB52E,EAA8BohB,GACrD,MAAMsO,EAAWhzB,EAAQA,SACI,mBAApBsD,EAAQmhB,QAEX,IAAInhB,EAAQmhB,QAAQ,CACpBC,OAAQphB,EAAQohB,OAAOA,EAAOnB,QAAQtsB,QAAUytB,EAAOnB,QAAQtsB,MAC/D++E,QAAS1yE,EAAQ0yE,UAEjB1yE,EAAQmhB;AAOd,OAJAtK,QAAMuK,EAAOnB,SAAStsB,IACpB+7B,EAAStO,OAASphB,EAAQohB,OAAOztB,IAAUA,GAAS+7B,EAAStO,UAGxDsO,EAGF,SAASmnD,KACd,MAAM72E,EAAUmL,SAAOsrE;AAEvB,IAAKz2E,EAAS,MAAM,IAAIoL,MAAM;AAI9B,OAAOwrE,GAAe52E,EAFPgkB,MC5FV,MAAM8yD,GAAwBxsE,GAAa,CAChDsrB,WAAY,KACZ1uB,MAAO1S,OACPuiF,WAAY,CACVx8E,KAAM/F,OACNkW,QAAS,+BAEXssE,OAAQ,CACNz8E,KAAM/F,OACNkW,QAAS,4BAEV,gBAEUusE,GAAenpE,IAAAA,CAOqB,CAC/CzQ,KAAM,eAENpK,MAAO6jF,KAEP1lD,MAAO,CACLpf,OAAQA,KAAM,EACdklE,KAAOvjF,IAAe,EACtB,oBAAsBA,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAMya,EAAQR,GAAgBvoB,EAAO,cAC/BkkF,EAAgBlsE,EAAAA;AACtBrO,EAAAA,aAAY,KACVu6E,EAAcxjF,MAAQyjF,gBAAgBj7D,EAAKA,MAACH,EAAMroB;AAGpD,MAAMqS,EAAEA,GAAMge,KAERomB,EAAaztC,EAAAA,UAAS,IACnBhK,EAAUqpB,EAAMroB,MAAOwjF,EAAcxjF;AAG9C,SAASujF,IACPl7D,EAAMroB,MAAQwjF,EAAcxjF,MAC5ByoB,EAAK,OAAQ+6D,EAAcxjF,OAG7B,SAASqe,IACPmlE,EAAcxjF,MAAQyjF,gBAAgBj7D,EAAKA,MAACH,EAAMroB,QAClDyoB,EAAK,UAGP,IAAIi7D,GAAc;AAClBlnE,IAAU,KACR,MAAM4mD,EAAOnmD,EAAAA,YAAA6W,EAAAA,SAAA7W,KAAAA,CAAAA,EAAAC,YAAA0D,GAAA,CAAA7I,SAGI0+B,EAAWz2C,MAAK0gB,QAAA,OAAAnN,MAEnBjU,EAAMiU,MAAKo0B,QACTtpB,EAAMpN,KACToB,EAAE/S,EAAM8jF,aAAWnmE,MAAAA,EAAAC,YAAA0D,GAAA,CAAA7I,SAIf0+B,EAAWz2C,MAAK0gB,QAAA,OAAAnN,MAEnBjU,EAAMiU,MAAKo0B,QACT47C,EAAItyE,KACPoB,EAAE/S,EAAM+jF,SAGpB;AACD,OAAApmE,EAAAC,YAAA4W,EAAAjtB,eAGM6T,EAAM3D,UAAU,CACdsR,MAAOm7D,EACPpgB,cAEE,OADAsgB,GAAc,EACPtgB,MAKVsgB,GAAetgB,UClGfugB,GAA2BhtE,GAAa,CACnDitE,cAAehgE,QACfigE,WAAYjgE,QACZkgE,SAAU,CACRl9E,KAAM3G,MACN8W,QAASA,IAAO,KAEjB,oBAEUgtE,GAMR5sE,OAAOC,IAAI;AAQT,SAAS4sE,GAAiB1kF,GAC/B,MAAMskF,EAAgBhmD,EAAAA,MAAMt+B,EAAO,iBAC7BwkF,EAAWj8D,GAAgBvoB,EAAO,WAAYA,EAAMwkF,UAAUvjF,GAC3D,IAAI4C,IAAI5C,KACdA,GACM,IAAIA,EAAEkI;AAGf,SAAS0W,EAAQrf,EAAqBE,GACpC,MAAMikF,EAAc,IAAI9gF,IAAI2gF,EAAS9jF;AAEhCA,EAGHikF,EAAY5zE,IAAIvQ,EAAKE,OAFrBikF,EAAYriF,OAAO9B,EAAKE,OAK1B8jF,EAAS9jF,MAAQikF,EAGnB,SAASC,EAAYpkF,GACnB,OAAOgkF,EAAS9jF,MAAM6C,IAAI/C,EAAKE,OAOjC,MAAMwwB,EAAO,CAAErR,OAAAA,EAAQ2kE,SAAAA,EAAUF,cAAAA,EAAeM,WAAAA,EAAYC,aAJ5D,SAAuBrkF,GACrBqf,EAAOrf,GAAOokF,EAAWpkF;AAO3B,OAFAyY,UAAQwrE,GAAuBvzD,GAExBA,EAGF,SAAS4zD,KACd,MAAM5zD,EAAOhZ,SAAOusE;AAEpB,IAAKvzD,EAAM,MAAM,IAAI/Y,MAAM;AAE3B,OAAO+Y,EChDF,MAAM6zD,GAA0B1tE,GAAa,CAClD2tE,QAAS,CACP19E,KAAM3G,MACN8W,QAASA,IAAO,KAEjB,mBAEGwtE,GAODptE,OAAOC,IAAI;AAOT,SAASotE,GAAellF,GAG7B,MAAO,CAAEglF,QAFOz8D,GAAgBvoB,EAAO,YAKlC,SAASmlF,GAAgBp4E,GAC9B,MAAMi4E,QAAEA,EAAO16D,OAAEA,GAAWvd,EACtBo3C,EAASnsC,EAAAA,IAAI,IAAInU;AASvB,SAASuhF,EAAatwD,GACpB,OAAOqvB,EAAOzjD,MAAM6C,IAAIuxB,EAAM5P,IAkChC,MAAMgM,EAAO,CAAEm0D,iBA1CU37E,EAAAA,UAAS,IACzBs7E,EAAQtkF,MAAM0G,KAAc6B,IAAQ,IACtCA,EACHub,MAAOvb,EAAIub,QAAS,MAClBnb,OAAOihB,EAAO5pB,SAsCa4kF,YA/BjC,SAAsBxwD,GACpB,MAAMsvB,EAAY,IAAIvgD,IAAIsgD,EAAOzjD;AAC5B0kF,EAAYtwD,GACZsvB,EAAU9hD,OAAOwyB,EAAM5P,IADHk/B,EAAUrzC,IAAI+jB,EAAM5P,IAG7Ci/B,EAAOzjD,MAAQ0jD,GA0B6BD,OAAAA,EAAQ6gC,QAAAA,EAASO,YAvB/D,SAAgD/+D,GAc9C,OAbA,SAASg/D,EAAM1wD,GACb,MAAMhrB,EAAM;AAEZ,IAAK,MAAMtJ,KAAQs0B,EAAMtO,MACnB,SAAUhmB,GAAsB,UAAdA,EAAK8G,KACzBwC,EAAId,QAAQw8E,EAAKhlF,IAEjBsJ,EAAId,KAAKxI;AAIb,OAAOsJ,EAEF07E,CAAK,CAAEl+E,KAAM,QAASkf,MAAAA,EAAOtB,GAAI,QAAS1hB,IAAK,QAAS9C,MAAO,QAAS+kF,MAAO,KASZL,YAAAA;AAI5E,OAFAnsE,UAAQgsE,GAAuB/zD,GAExBA,EAGF,SAASw0D,KACd,MAAMx0D,EAAOhZ,SAAO+sE;AAEpB,IAAK/zD,EAAM,MAAM,IAAI/Y,MAAM;AAE3B,OAAO+Y,EAGT,SAASy0D,GAAgDn/D,EAAqBw+D,GAC5E,IAAKx+D,EAAMjnB,OAAQ,MAAO;AAE1B,MAAMsV,EAAS,IAAItM;AACnB,IAAK,MAAM/H,KAAQgmB,EAAO,CACxB,MAAM9lB,EAAQN,EAAqBI,EAAKgpD,IAAKw7B;AAExCnwE,EAAOtR,IAAI7C,IACdmU,EAAO9M,IAAIrH,EAAO,IAEpBmU,EAAOjN,IAAIlH,GAAQsI,KAAKxI,GAG1B,OAAOqU,EAGT,SAAS+wE,GAAsCp/D,EAAqBw+D,GAAwD,IAA5BS,EAAK1kF,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,EAAGyF,EAAMzF,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAClH,IAAKikF,EAAQzlF,OAAQ,MAAO;AAE5B,MAAMsmF,EAAeF,GAAqBn/D,EAAOw+D,EAAQ,IACnDnwE,EAAqB,GAErB5Q,EAAO+gF,EAAQ57E,MAAM;AAc3B,OAbAy8E,EAAathF,SAAQ,CAACiiB,EAAO9lB,KAC3B,MAAM8C,EAAMwhF,EAAQ,GACd9/D,EAAM,GAAE1e,KAAUhD,KAAO9C;AAC/BmU,EAAO7L,KAAK,CACVy8E,MAAAA,EACAvgE,GAAAA,EACA1hB,IAAAA,EACA9C,MAAAA,EACA8lB,MAAOviB,EAAK1E,OAASqmF,GAAWp/D,EAAOviB,EAAMwhF,EAAQ,EAAGvgE,GAAMsB,EAC9Dlf,KAAM,aAIHuN,EAGT,SAASixE,GAAwCt/D,EAAkC29B,GACjF,MAAM4hC,EAA8B;AAEpC,IAAK,MAAMvlF,KAAQgmB,EAEb,SAAUhmB,GAAsB,UAAdA,EAAK8G,MACP,MAAd9G,EAAKE,OACPqlF,EAAU/8E,KAAKxI,IAGb2jD,EAAO5gD,IAAI/C,EAAK0kB,KAAqB,MAAd1kB,EAAKE,QAC9BqlF,EAAU/8E,QAAQ88E,GAAatlF,EAAKgmB,MAAO29B,KAG7C4hC,EAAU/8E,KAAKxI;AAInB,OAAOulF,EAGF,SAASC,GACdx/D,EACAw+D,EACA7gC,GAUA,MAAO,CAAE4hC,UARSr8E,EAAAA,UAAS,KACzB,IAAKs7E,EAAQtkF,MAAMnB,OAAQ,OAAOinB,EAAM9lB;AAIxC,OAAOolF,GAFcF,GAAWp/D,EAAM9lB,MAAOskF,EAAQtkF,MAAM0G,KAAI5G,GAAQA,EAAKgD,OAE1C2gD,EAAOzjD,WChLtC,SAASulF,GAAU33E,GAYvB,IAZyBge,KAC1BA,EAAI45D,aACJA,EAAY57D,OACZA,EAAM06D,QACNA,EAAOxiB,OACPA,GAODl0D;AACC,MAAM8K,EAAKC,GAAmB,cAExBtM,EAAUrD,EAAAA,UAAS,KAAO,CAC9B4iB,KAAMA,EAAK5rB,MACXwlF,aAAcA,EAAaxlF,MAC3B4pB,OAAQA,EAAO5pB,MACfskF,QAASA,EAAQtkF,MACjB8hE,OAAQA,EAAO9hE;AAGjB,IAAIylF,EAA0C;AAC9CviE,EAAKA,MAAC7W,GAAS,KACTrN,EAAUymF,EAAYp5E,EAAQrM,SAG9BylF,GAAcA,EAAW3jB,SAAWz1D,EAAQrM,MAAM8hE,SACpDl2C,EAAK5rB,MAAQ,GAGf0Y,EAAG+P,KAAK,iBAAkBpc,EAAQrM,OAClCylF,EAAap5E,EAAQrM,SACpB,CAAEm8D,MAAM,EAAMx0C,WAAW,IC9BvB,MAAM+9D,GAA6B/uE,GAAa,CACrDiV,KAAM,CACJhlB,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXyuE,aAAc,CACZ5+E,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEV,sBAEG4uE,GAWDxuE,OAAOC,IAAI;AAUT,SAASwuE,GAAkBtmF,GAIhC,MAAO,CAAEssB,KAHI/D,GAAgBvoB,EAAO,YAAQR,GAAWkB,KAAWA,GAAS,KAG5DwlF,aAFM39D,GAAgBvoB,EAAO,oBAAgBR,GAAWkB,KAAWA,GAAS,OAKtF,SAAS6lF,GAAmBx5E,GAKjC,MAAMuf,KAAEA,EAAI45D,aAAEA,EAAY1e,YAAEA,GAAgBz6D,EAEtCy5E,EAAa98E,EAAAA,UAAS,KACE,IAAxBw8E,EAAaxlF,MAAqB,EAE/BwlF,EAAaxlF,OAAS4rB,EAAK5rB,MAAQ,KAEtC+lF,EAAY/8E,EAAAA,UAAS,KACG,IAAxBw8E,EAAaxlF,MAAqB8mE,EAAY9mE,MAE3CgF,KAAKF,IAAIgiE,EAAY9mE,MAAO8lF,EAAW9lF,MAAQwlF,EAAaxlF,SAG/DgmF,EAAYh9E,EAAAA,UAAS,KACG,IAAxBw8E,EAAaxlF,OAAsC,IAAtB8mE,EAAY9mE,MAAoB,EAE1DgF,KAAKooD,KAAK0Z,EAAY9mE,MAAQwlF,EAAaxlF;AAGpDiJ,EAAAA,aAAY,KACN2iB,EAAK5rB,MAAQgmF,EAAUhmF,QACzB4rB,EAAK5rB,MAAQgmF,EAAUhmF;AAqB3B,MAAMwwB,EAAO,CAAE5E,KAAAA,EAAM45D,aAAAA,EAAcM,WAAAA,EAAYC,UAAAA,EAAWC,UAAAA,EAAWlf,YAAAA,EAAa/8C,SAZlF,WACE6B,EAAK5rB,MAAQ6E,EAAM+mB,EAAK5rB,MAAQ,EAAG,EAAGgmF,EAAUhmF,QAW0CgqB,SAR5F,WACE4B,EAAK5rB,MAAQ6E,EAAM+mB,EAAK5rB,MAAQ,EAAG,EAAGgmF,EAAUhmF,QAOoDimF,QAJtG,SAAkBjmF,GAChB4rB,EAAK5rB,MAAQ6E,EAAM7E,EAAO,EAAGgmF,EAAUhmF,QAGsEkmF,gBAjB/G,SAA0BlmF,GACxBwlF,EAAaxlF,MAAQA,EACrB4rB,EAAK5rB,MAAQ;AAmBf,OAFAuY,UAAQotE,GAA4Bn1D,GAE7BA,EAWF,SAAS21D,GAAuB95E,GAMrC,MAAMqM,EAAKC,GAAmB,sBAExBmN,MAAEA,EAAKggE,WAAEA,EAAUC,UAAEA,EAASP,aAAEA,GAAiBn5E,EACjD+5E,EAAiBp9E,EAAAA,UAAS,IAC1Bw8E,EAAaxlF,OAAS,EAAU8lB,EAAM9lB,MAEnC8lB,EAAM9lB,MAAM0I,MAAMo9E,EAAW9lF,MAAO+lF,EAAU/lF;AAOvD,OAJAkjB,EAAKA,MAACkjE,GAAgB79E,IACpBmQ,EAAG+P,KAAK,sBAAuBlgB,MAG1B,CAAE69E,eAAAA,GCzFX,MAAMC,GAAgD,CACpDC,eAAe,EACfC,YAAaA,IAAM,GACnBphD,OAAQv3B,IAAsB,IAArBkY,MAAEA,EAAK9lB,MAAEA,GAAO4N;AACvB,OAAO,IAAIzK,IAAInD,EAAQ,CAAC8lB,EAAM,IAAI9lB,OAAS,KAE7CwmF,UAAWlxE,IAAA,IAAC+vB,SAAEA,GAAU/vB;AAAA,OAAK+vB,IAGzBohD,GAA8C,CAClDH,eAAe,EACfC,YAAa1iC,IAAA,IAACh4B,YAAEA,GAAag4B;AAAA,OAAKh4B,GAClCsZ,OAAQ0f,IAAgC,IAA/B/+B,MAAEA,EAAK9lB,MAAEA,EAAKqlC,SAAEA,GAAUwf;AACjC,IAAK,MAAM/kD,KAAQgmB,EACb9lB,EAAOqlC,EAASh1B,IAAIvQ,EAAKE,OACxBqlC,EAASzjC,OAAO9B,EAAKE;AAG5B,OAAOqlC,GAETmhD,UAAWzhC,IAAA,IAAC/kD,MAAEA,EAAK6rB,YAAEA,EAAWwZ,SAAEA,GAAU0f;AAAA,OAAK0hC,GAAmBthD,OAAO,CAAErf,MAAO+F,EAAa7rB,MAAAA,EAAOqlC,SAAAA,MAGpGqhD,GAA6C,CACjDJ,eAAe,EACfC,YAAarhC,IAAA,IAACyhC,SAAEA,GAAUzhC;AAAA,OAAKyhC,GAC/BxhD,OAAQogB,IAAgC,IAA/Bz/B,MAAEA,EAAK9lB,MAAEA,EAAKqlC,SAAEA,GAAUkgB;AACjC,IAAK,MAAMzlD,KAAQgmB,EACb9lB,EAAOqlC,EAASh1B,IAAIvQ,EAAKE,OACxBqlC,EAASzjC,OAAO9B,EAAKE;AAG5B,OAAOqlC,GAETmhD,UAAWI,IAAA,IAAC5mF,MAAEA,EAAK2mF,SAAEA,EAAQthD,SAAEA,GAAUuhD;AAAA,OAAKF,GAAkBvhD,OAAO,CAAErf,MAAO6gE,EAAU3mF,MAAAA,EAAOqlC,SAAAA,MAGtFwhD,GAA2BlwE,GAAa,CACnDmwE,WAAYljE,QACZ6gC,eAAgB,CACd79C,KAAM,CAAC/F,OAAQxB,QACf0X,QAAS,QAEXkrB,WAAY,CACVr7B,KAAM3G,MACN8W,QAASA,IAAO,IAElB87B,gBAAiB,CACfjsC,KAAM4C,SACNuN,QAAS/X,IAEV,oBAEU+nF,GAA+E5vE,OAAOC,IAAI;AAEhG,SAAS4vE,GACd1nF,EAAqB2nF,GAErB,IADAN,SAAEA,EAAQ96D,YAAEA,GAAsFo7D;AAElG,MAAM5hD,EAAWxd,GAAgBvoB,EAAO,aAAcA,EAAM2iC,YAAY1hC,GAC/D,IAAI4C,IAAIyB,EAAYrE,GAAGmG,KAAInG,GACzBomF,EAAS3mF,MAAMqmB,MAAKvmB,GAAQR,EAAMuzC,gBAAgBtyC,EAAGT,EAAKE,UAASA,OAASO,OAEpFA,GACM,IAAIA,EAAEkI,YAGTy+E,EAAgBl+E,YAAS,IAAM29E,EAAS3mF,MAAMmZ,QAAOrZ,GAAQA,EAAKukD,eAClE8iC,EAAwBn+E,YAAS,IAAM6iB,EAAY7rB,MAAMmZ,QAAOrZ,GAAQA,EAAKukD,eAE7EI,EAAiBz7C,EAAAA,UAAS,KAC9B,GAAoC,iBAAzB1J,EAAMmlD,eAA6B,OAAOnlD,EAAMmlD;AAE3D,OAAQnlD,EAAMmlD,gBACZ,IAAK,SAAU,OAAO4hC;AACtB,IAAK,MAAO,OAAOK;AACnB,IAAK,OACL,QAAS,OAAOD;AAIpB,SAASxhD,EAAYnf,GACnB,OAAOlhB,EAAYkhB,GAAOtmB,OAAMM,GAAQulC,EAASrlC,MAAM6C,IAAI/C,EAAKE,SAOlE,SAASmlC,EAAQrf,EAAyB9lB,GACxC,MAAM+lD,EAActB,EAAezkD,MAAMmlC,OAAO,CAC9Crf,MAAAA,EACA9lB,MAAAA,EACAqlC,SAAU,IAAIliC,IAAIkiC,EAASrlC;AAG7BqlC,EAASrlC,MAAQ+lD,EAkBnB,MAAMqhC,EAAep+E,EAAAA,UAAS,IAAMq8B,EAASrlC,MAAMmI,KAAO,IACpDo+E,EAAcv9E,EAAAA,UAAS,KAC3B,MAAM8c,EAAQ2+B,EAAezkD,MAAMumF,YAAY,CAC7CI,SAAUO,EAAclnF,MACxB6rB,YAAas7D,EAAsBnnF;AAErC,QAAS8lB,EAAMjnB,QAAUomC,EAAWnf,MAIhC0K,EAAO,CACX62D,aA1BF,SAAuBvnF,GACrBqlC,EAAO,CAACrlC,IAAQmlC,EAAW,CAACnlC,MA0B5BqlC,OAAAA,EACAqhD,UAxBF,SAAoBxmF,GAClB,MAAM+lD,EAActB,EAAezkD,MAAMwmF,UAAU,CACjDxmF,MAAAA,EACA2mF,SAAUO,EAAclnF,MACxB6rB,YAAas7D,EAAsBnnF,MACnCqlC,SAAU,IAAIliC,IAAIkiC,EAASrlC;AAG7BqlC,EAASrlC,MAAQ+lD,GAiBjB9gB,WAAAA,EACAqiD,eA5CF,SAAyBxhE,GACvB,OAAOlhB,EAAYkhB,GAAOtiB,MAAK1D,GAAQulC,EAASrlC,MAAM6C,IAAI/C,EAAKE,UA4C/DonF,aAAAA,EACAb,YAAAA,EACAD,cAVoBt9E,EAAAA,UAAS,IAAMy7C,EAAezkD,MAAMsmF;AAe1D,OAFA/tE,UAAQwuE,GAA2Bv2D,GAE5BA,EAGF,SAAS+2D,KACd,MAAM/2D,EAAOhZ,SAAOuvE;AAEpB,IAAKv2D,EAAM,MAAM,IAAI/Y,MAAM;AAE3B,OAAO+Y,EC/KF,MAAMg3D,GAAyB7wE,GAAa,CACjDiT,OAAQ,CACNhjB,KAAM3G,MACN8W,QAASA,IAAO,IAElB0wE,cAAepoF,OACfqoF,UAAW9jE,QACX+jE,SAAU/jE,SACT,kBAEGgkE,GAIDzwE,OAAOC,IAAI;AAWT,SAASywE,GAAYvoF,GAK1B,MAAO,CAAEsqB,OAJM/B,GAAgBvoB,EAAO,UAIrBqoF,SAHA/pD,EAAAA,MAAMt+B,EAAO,YAGHooF,UAFT9pD,EAAAA,MAAMt+B,EAAO,cAK1B,SAASwoF,GAAaz7E,GAM3B,MAAMud,OAAEA,EAAM+9D,SAAEA,EAAQD,UAAEA,EAAS97D,KAAEA,GAASvf;AA6B9C,MAAMmkB,EAAO,CAAE5G,OAAAA,EAAQm+D,WA3BHpmC,IAClB,GAAkB,MAAdA,EAAO7+C,IAAa;AAExB,IAAIklF,EAAYp+D,EAAO5pB,MAAM0G,KAAImH,IAAM,IAAKA,OAAS;AACrD,MAAM/N,EAAOkoF,EAAU3hE,MAAKxY,GAAKA,EAAE/K,MAAQ6+C,EAAO7+C;AAE7ChD,EAGqB,SAAfA,EAAKgkB,MACV6jE,EAAS3nF,MACXF,EAAKgkB,MAAQ,MAEbkkE,EAAYA,EAAU7uE,QAAOtL,GAAKA,EAAE/K,MAAQ6+C,EAAO7+C,MAGrDhD,EAAKgkB,MAAQ,OATQkkE,EAAjBN,EAAU1nF,MAAmB,IAAIgoF,EAAW,CAAEllF,IAAK6+C,EAAO7+C,IAAKghB,MAAO,QACzD,CAAC,CAAEhhB,IAAK6+C,EAAO7+C,IAAKghB,MAAO,QAW9C8F,EAAO5pB,MAAQgoF,EACXp8D,IAAMA,EAAK5rB,MAAQ,IAOUioF,SAJnC,SAAmBtmC,GACjB,QAAS/3B,EAAO5pB,MAAMqmB,MAAKvmB,GAAQA,EAAKgD,MAAQ6+C,EAAO7+C;AAOzD,OAFAyV,UAAQqvE,GAAsBp3D,GAEvBA,EAGF,SAAS03D,KACd,MAAM13D,EAAOhZ,SAAOowE;AAEpB,IAAKp3D,EAAM,MAAM,IAAI/Y,MAAM;AAE3B,OAAO+Y,EAIF,SAAS23D,GACd7oF,EACAwmB,EACA8D,EACAvd,GAMA,MAAMohB,EAAS4C;AAcf,MAAO,CAAE+3D,YAbWp/E,EAAAA,UAAS,IACtB4gB,EAAO5pB,MAAMnB,OAef,SACLinB,EACAuiE,EACA56D,EACAphB,GAMA,MAAMi8E,EAAiB,IAAIx7D,KAAKy7D,SAAS96D,EAAQ,CAAE+6D,YAAa,SAAUC,MAAO;AAMjF,OAJyB3iE,EAAMpf,KAAI5G,GACjC,CAACA,EAAMuM,GAASsC,UAAYtC,EAAQsC,UAAU7O,GAAQA,KAGhC+lB,MAAK,CAAC5mB,EAAGC,KAC/B,IAAK,IAAIH,EAAI,EAAGA,EAAIspF,EAAYxpF,OAAQE,IAAK,CAC3C,IAAI2pF,GAAkB;AACtB,MAAMC,EAAUN,EAAYtpF,GAAG+D,IACzB8lF,EAAYP,EAAYtpF,GAAG+kB,OAAS;AAE1C,IAAkB,IAAd8kE,EAAqB;AAEzB,IAAIC,EAAQ5pF,EAAE,GAAG0pF,GACbG,EAAQ5pF,EAAE,GAAGypF,GACbI,EAAW9pF,EAAE,GAAG6pD,IAChBkgC,EAAW9pF,EAAE,GAAG4pD;AAOpB,GALkB,SAAd8/B,KACDC,EAAOC,GAAS,CAACA,EAAOD,IACvBE,EAAUC,GAAY,CAACA,EAAUD,IAGjC18E,GAAS48E,mBAAmBN,GAAU,CACxC,MAAMO,EAAe78E,EAAQ48E,iBAAiBN,GAASI,EAAUC;AAEjE,GAAoB,MAAhBE,EAAsB;AAE1B,GADAR,GAAkB,EACdQ,EAAc,OAAOA,EAG3B,GAAI78E,GAAS88E,gBAAgBR,GAAU,CACrC,MAAMO,EAAe78E,EAAQ88E,cAAcR,GAASE,EAAOC;AAE3D,GAAoB,MAAhBI,EAAsB;AAE1B,GADAR,GAAkB,EACdQ,EAAc,OAAOA,EAG3B,IAAIR,EAAJ,CAGA,GAAIG,aAAiB1pF,MAAQ2pF,aAAiB3pF,KAC5C,OAAO0pF,EAAMzpF,UAAY0pF,EAAM1pF;AAKjC,IAFCypF,EAAOC,GAAS,CAACD,EAAOC,GAAOpiF,KAAI2D,GAAU,MAALA,EAAYA,EAAElF,WAAW+6D,oBAAsB71D,IAEpFw+E,IAAUC,EACZ,OAAIv9E,EAAQs9E,IAAUt9E,EAAQu9E,GAAe,EACzCv9E,EAAQs9E,IAAgB,EACxBt9E,EAAQu9E,GAAe,EACtBloF,MAAMioF,IAAWjoF,MAAMkoF,GACrBR,EAAec,QAAQP,EAAOC,GADM/nF,OAAO8nF,GAAS9nF,OAAO+nF,IAKtE,OAAO,KACNpiF,KAAIkH,IAAA,IAAE9N,GAAK8N;AAAA,OAAK9N,KAlFVupF,CAAUvjE,EAAM9lB,MAAO4pB,EAAO5pB,MAAOytB,EAAOnB,QAAQtsB,MAAO,CAChE2O,UAAWtC,GAASsC,UACpBw6E,cAAe,IACV7pF,EAAMmoF,iBACNp7E,GAAS88E,eAAenpF,OAE7BipF,iBAAkB58E,GAAS48E,kBAAkBjpF,QARd8lB,EAAM9lB,SCvFpC,MAAMspF,GAA6B3yE,GAAa,CACrDmP,MAAO,CACLlf,KAAM3G,MACN8W,QAASA,IAAO,IAElBsyC,UAAW,CACTziD,KAAM,CAAC/F,OAAQZ,MAAOuJ,UACtBuN,QAAS,MAEXwyE,eAAgB,CACd3iF,KAAM,CAAC/F,OAAQZ,MAAOuJ,UACtBuN,QAAS,MAEX4xC,aAAc/kC,SACb;AAEI,SAAS2lC,GACdjqD,EACAQ,GAKA,MAAO,CACL8G,KAAM,OACN5G,MALYV,EAAMqpD,aAAe7oD,EAAOD,EAAoBC,EAAMR,EAAM+pD,WAMxEhF,WALiBxkD,EAAoBC,EAAMR,EAAMiqF,gBAAgB,GAMjEzgC,IAAKhpD,GAiBF,SAAS0pF,GAAsBlqF,GAGpC,MAAO,CAAEwmB,MAFK9c,EAAAA,UAAS,IAdlB,SACL1J,EACAwmB,GAEA,MAAM2jC,EAA4B;AAElC,IAAK,MAAM3pD,KAAQgmB,EACjB2jC,EAAMnhD,KAAKihD,GAAcjqD,EAAOQ;AAGlC,OAAO2pD,EAIsBD,CAAelqD,EAAOA,EAAMwmB,UCFpD,MAAM2jE,GAAyB9yE,GAAa,CACjDmrD,OAAQjhE,OACRgf,QAAS+D,WAEN5M,QACAsyE,QACAzC,QACAW,QACA9B,GAA2B,CAAEF,aAAc,OAC3C7B,QACAU,QACAlkB,QACApsC,QACAI,GAAoB,CACrB/N,WAAY,CACV3e,UAAW+wB,GACXnE,aAAa,MAGhB,iBAEUq1D,GAAgBvvE,IAAAA,CAKoB,CAC/CzQ,KAAM,gBAENpK,MAAOmqF,KAEPhsD,MAAO,CACL,oBAAsBz9B,IAAiB,EACvC,iBAAmBA,IAAe,EAClC,cAAgBA,IAAkB,EAClC,sBAAwBA,IAAkB,EAC1C,gBAAkBA,IAAe,EACjC,iBAAmBA,IAAe,EAClC,kBAAoBA,IAAe,EACnC,sBAAwBA,IAAe,GAGzC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM02E,EAAUz8D,GAAgBvoB,EAAO,WACjCwiE,EAASlkC,EAAAA,MAAMt+B,EAAO,WAEtBwmB,MAAEA,GAAU0jE,GAAqBlqF,IACjCohE,cAAEA,GAAkBD,GAAUnhE,EAAOwmB,EAAOg8C,EAAQ,CAAEnzD,UAAW7O,GAAQA,EAAKgpD,OAE9El/B,OAAEA,EAAM89D,UAAEA,EAASC,SAAEA,GAAaE,GAAWvoF,IAC7CssB,KAAEA,EAAI45D,aAAEA,GAAiBI,GAAiBtmF,IAE1CyoF,WAAEA,GAAeD,GAAY,CAAEl+D,OAAAA,EAAQ89D,UAAAA,EAAWC,SAAAA,EAAU/7D,KAAAA,KAC5D+4D,iBAAEA,EAAgBlhC,OAAEA,EAAMohC,YAAEA,EAAWH,YAAEA,EAAWE,YAAEA,GAAgBH,GAAe,CAAEH,QAAAA,EAAS16D,OAAAA,KAEhGw+D,YAAEA,GAAgBD,GAAe7oF,EAAOohE,EAAeikB,EAAkB,CAAEh2E,UAAW7O,GAAQA,EAAKgpD,OACnGu8B,UAAEA,GAAcC,GAAgB8C,EAAa9D,EAAS7gC,GAEtDqjB,EAAc99D,EAAAA,UAAS,IAAMq8E,EAAUrlF,MAAMnB,UAE7CinF,WACJA,EAAUC,UACVA,EAASC,UACTA,EAASh8D,SACTA,EAAQD,SACRA,EAAQm8D,gBACRA,EAAeD,QACfA,GACEJ,GAAkB,CAAEj6D,KAAAA,EAAM45D,aAAAA,EAAc1e,YAAAA,KACtCsf,eAAEA,GAAmBD,GAAkB,CAAErgE,MAAOu/D,EAAWS,WAAAA,EAAYC,UAAAA,EAAWP,aAAAA,IAElFmE,EAA8B3gF,EAAAA,UAAS,IAAM67E,EAAYuB,EAAepmF,UAExEilC,WACJA,EAAUE,OACVA,EAAMqhD,UACNA,EAASa,aACTA,GACEL,GAAiB1nF,EAAO,CAAEqnF,SAAU7gE,EAAO+F,YAAa89D,KACtDzF,WAAEA,EAAUC,aAAEA,GAAiBH,GAAgB1kF;AAErDimF,GAAW,CACT35D,KAAAA,EACA45D,aAAAA,EACA57D,OAAAA,EACA06D,QAAAA,EACAxiB,OAAAA;AAGF,MAAM3pB,EAAYnvC,EAAAA,UAAS,KAAO,CAChC4iB,KAAMA,EAAK5rB,MACXwlF,aAAcA,EAAaxlF,MAC3B4pB,OAAQA,EAAO5pB,MACfgmF,UAAWA,EAAUhmF,MACrB+nF,WAAAA,EACA/9D,SAAAA,EACAD,SAAAA,EACAk8D,QAAAA,EACAC,gBAAAA,EACAjhD,WAAAA,EACAE,OAAAA,EACAqhD,UAAAA,EACAa,aAAAA,EACAnD,WAAAA,EACAC,aAAAA,EACAO,YAAAA,EACAE,YAAAA,EACA9+D,MAAO6jE,EAA4B3pF,MACnCmlF,aAAciB,EAAepmF;AAmC/B,OAhCAwc,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,kBACA,CACE,2BAA4B3X,EAAMugB,SAEpCvgB,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAuI,QAAAA,IAEjB2D,CAAAA,EAAMgQ,SAASytB,EAAUn4C,OAAMid,EAAAC,YAAAse,GAAA,CAAApV,WAEH9mB,EAAM8mB,YAAU,CAAArP,QAAAA,IAC1CzX,CAAAA,EAAMugB,QAAO5C,EAAAA,YAAAiuB,GAAA,CAAApoC,IAAA,SAAA4G,KAAA,kBAAAqb,QAAA,GAAA,CAAAhO,QAETohC,GAAaz9B,EAAM42B,SAAS6G,KAAUl7B,EAAAC,YAAA,MAAA,CAAApa,IAAA,SAItC,CAACsjF,EAAepmF,MAAMnB,OAEpB6b,EAAM3D,UAAUohC,EAAUn4C,OAD1B0a,EAAM,oBAOdA,EAAMkvE,SAASzxC,EAAUn4C,YAIxB;AC1JJ,MAAM6pF,GAAuBlzE,GAAa,CAC/CiwC,YAAa/lD,OACbT,MAAO,CACLwG,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXkrB,WAAY,CACVr7B,KAAM7F,OACNgW,QAAUzX,GAAeA,EAAMc,OAEjC2X,SAAU6L,QACV/kB,OAAQ,CACN+H,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,EACTwkB,UAAYhzB,GAAgBA,EAAM,GAAM,GAE1CuhF,aAAc,CAAC/oF,OAAQF,QACvBkpF,UAAW,CACTnjF,KAAM8V,GACN3F,QAAS,UAEX2nC,SAAU,CACR93C,KAAM8V,GACN3F,QAAS,SAEX0nC,SAAU,CACR73C,KAAM8V,GACN3F,QAAS,SAEXizE,SAAU,CACRpjF,KAAM8V,GACN3F,QAAS,SAEXsS,UAAW,CACTziB,KAAM/F,OACNkW,QAAS,sCAEXkzE,cAAe,CACbrjF,KAAM/F,OACNkW,QAAS,sCAEXmzE,qBAAsB,CACpBtjF,KAAM/F,OACNkW,QAAS,6CAEXozE,eAAgB,CACdvjF,KAAM/F,OACNkW,QAAS,uCAEXqzE,kBAAmB,CACjBxjF,KAAM/F,OACNkW,QAAS,0CAEXszE,cAAe,CACbzjF,KAAM/F,OACNkW,QAAS,sCAEXuzE,cAAe,CACb1jF,KAAM/F,OACNkW,QAAS,sCAEXwzE,SAAU,CACR3jF,KAAM/F,OACNkW,QAAS,OAEXyzE,kBAAmB5mE,WAEhBwc,QACAppB,QACA6sB,QACArD,QACArF,QACAwL,QACA5S,GAAa,CAAEvZ,IAAK,WACpBmW,QACAwT,GAAiB,CAAEzjB,QAAS,UAC9B,eAEU+pE,GAActwE,IAAAA,CAAqC,CAC9DzQ,KAAM,cAENpK,MAAOuqF,KAEPpsD,MAAO,CACL,oBAAsBz9B,IAAkB,EACxCqW,MAAQrW,IAAkB,EAC1BoY,KAAOpY,IAAkB,EACzB4e,KAAO5e,IAAkB,EACzBpB,KAAOoB,IAAkB,GAG3B8Z,MAAOxa,EAAKsO,GAAmB,IAAjB8M,MAAEA,EAAK+N,KAAEA,GAAM7a;AAC3B,MAAMge,EAAO/D,GAAgBvoB,EAAO,eAC9B+S,EAAEA,EAACpC,EAAEA,GAAMogB,MACXrjB,MAAEA,GAAUyjB,MACZ2B,aAAEA,GAAiBgB,GAAa9zB,IAChCyO,MAAEA,GAAUwtC,KACZmvC,EAAan+E,EAAAA,YAAY;AAE/BmL,QAAgB5Y,EAAW,CAAEkZ,QAAQ;AAErC,MAAM4K,UAAEA,GAAcH,IAAmB/I,IACvC,IAAKA,EAAQ7a,OAAQ;AAErB,MAAMsH,OAAEA,EAAM0c,YAAEA,GAAgBnJ,EAAQ,GAElCixE,EAAYxkF,EAAOkxB,cAAc;AAEvC,IAAKszD,EAAW;AAEhB,MAAMC,EAAa/nE,EAAY9U,MACzB88E,EACJF,EAAUr7E,YAC4C,EAAtDF,WAAWX,iBAAiBk8E,GAAWG;AAEzCJ,EAAW1qF,MAAQ+qF,EAAOH,EAAYC,MAGlChsF,EAASmK,EAAAA,UAAS,IAAMyL,SAASnV,EAAMT,OAAQ,MAC/CuB,EAAQ4I,EAAAA,UAAS,IAAMyL,SAASnV,EAAMc,MAAO,MAE7C0pF,EAAe9gF,EAAAA,UAAS,IACF,MAAtB1J,EAAMwqF,aAA6Br1E,SAASnV,EAAMwqF,aAAc,IAC3DY,EAAW1qF,OAAS,EAAU0qF,EAAW1qF,MAC3C+qF,EAAOh9E,EAAM/N,MAAO;AAG7B,SAAS+qF,EAAQH,EAAoBC,GACnC,MAAMG,EAAa1rF,EAAMkrF,kBAAoB,EAAI;AACjD,OAAOxlF,KAAKD,IAAI,EAAGC,KAAK64C,SAEnB+sC,EAAaC,EAAYG,GAAcH,GAAW7kF,QAAQ,KAIjE,MAAMwkB,EAAQxhB,EAAAA,UAAS,KACrB,GAAInK,EAAOmB,OAAS,GAAKY,MAAM/B,EAAOmB,QAAUnB,EAAOmB,MAAQe,OAAOkqF,iBAAkB,MAAO;AAE/F,GAAInB,EAAa9pF,OAAS,EAAG,MAAO;AAC/B,GAA2B,IAAvB8pF,EAAa9pF,MAAa,MAAO,CAAC4rB,EAAK5rB;AAEhD,GAAInB,EAAOmB,OAAS8pF,EAAa9pF,MAC/B,OAAOG,EAAYtB,EAAOmB,MAAOI,EAAMJ;AAGzC,MAAMkrF,EAAOpB,EAAa9pF,MAAQ,GAAM,EAClCmrF,EAASD,EAAOpB,EAAa9pF,MAAQ,EAAIgF,KAAK64C,MAAMisC,EAAa9pF,MAAQ,GACzEiC,EAAOipF,EAAOC,EAASA,EAAS,EAChCjpF,EAAQrD,EAAOmB,MAAQmrF;AAE7B,GAAIlpF,EAAO2pB,EAAK5rB,OAAS,EACvB,MAAO,IAAIG,EAAY6E,KAAKD,IAAI,EAAG+kF,EAAa9pF,MAAQ,GAAII,EAAMJ,OAAQV,EAAMirF,SAAU1rF,EAAOmB;AAC5F,GAAI4rB,EAAK5rB,MAAQkC,IAAUgpF,EAAO,EAAI,GAAI,CAC/C,MAAME,EAActB,EAAa9pF,MAAQ,EACnCqrF,EAAaxsF,EAAOmB,MAAQorF,EAAchrF,EAAMJ;AACtD,MAAO,CAACI,EAAMJ,MAAOV,EAAMirF,YAAapqF,EAAYirF,EAAaC,IAC5D,CACL,MAAMD,EAAcpmF,KAAKD,IAAI,EAAG+kF,EAAa9pF,MAAQ,GAC/CqrF,EAA6B,IAAhBD,EAAoBx/D,EAAK5rB,MAAQ4rB,EAAK5rB,MAAQgF,KAAKooD,KAAKg+B,EAAc,GAAKhrF,EAAMJ;AACpG,MAAO,CAACI,EAAMJ,MAAOV,EAAMirF,YAAapqF,EAAYirF,EAAaC,GAAa/rF,EAAMirF,SAAU1rF,EAAOmB;AAKzG,SAASsrF,EAAU5gD,EAAU1qC,EAAeob,GAC1CsvB,EAAEoW,iBACFl1B,EAAK5rB,MAAQA,EACbob,GAASqN,EAAKrN,EAAOpb,GAGvB,MAAM8I,KAAEA,EAAIyiF,UAAEA,GC1NX,WACL,MAAMziF,EAAOwO,MAAuB;AAQpC,OANAk0E,EAAAA,gBAAe,IAAO1iF,EAAK9I,MAAQ,KAM5B,CAAE8I,KAAAA,EAAMyiF,UAJf,SAAoB7gD,EAAQ3rC,GAC1B+J,EAAK9I,MAAMjB,GAAK2rC,IDoNY+gD;AAE5B/zE,GAAgB,CACdg0E,eAAgB,CACdn4E,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpB+gC,OAAQzC,EAAAA,MAAMt+B,EAAO,UACrBwhC,QAASlD,EAAAA,MAAMt+B,EAAO,WACtB6I,KAAMy1B,EAAAA,MAAMt+B,EAAO,QACnBohB,QAASkd,EAAAA,MAAMt+B,EAAO,WACtBihB,QAASqd,EAAAA,MAAMt+B,EAAO,WACtBmhC,UAAW7C,EAAAA,MAAMt+B,EAAO;AAI5B,MAAMwmB,EAAQ9c,EAAAA,UAAS,IACdwhB,EAAMxqB,MAAM0G,KAAI,CAAC5G,EAAM2V,KAC5B,MAAM6B,EAAOozB,GAAW6gD,EAAU7gD,EAAGj1B;AAErC,GAAoB,iBAAT3V,EACT,MAAO,CACLqiC,UAAU,EACVr/B,IAAM,YAAW2S,IACjBmW,KAAM9rB,EACNR,MAAO,CACLgY,IAAAA,EACAizE,UAAU,EACV1tE,MAAM,EACN9E,UAAU;AAGT,CACL,MAAMoqB,EAAWriC,IAAS8rB,EAAK5rB;AAC/B,MAAO,CACLmiC,SAAAA,EACAr/B,IAAKhD,EACL8rB,KAAM3b,EAAEnQ,GACRR,MAAO,CACLgY,IAAAA,EACAizE,UAAU,EACV1tE,MAAM,EACN9E,WAAYzY,EAAMyY,WAAazY,EAAMT,OAAS,EAC9C0U,MAAO4uB,EAAW7iC,EAAMsnD,YAActnD,EAAMiU,MAC5C,eAAgB4uB,EAChB,aAAc9vB,EAAE8vB,EAAW7iC,EAAM4qF,qBAAuB5qF,EAAM2qF,cAAenqF,GAC7E6nC,QAAU+C,GAAa4gD,EAAS5gD,EAAG5qC,WAOvC6rF,EAAW3iF,EAAAA,UAAS,KACxB,MAAM4iF,IAAiBtsF,EAAMyY,UAAY6T,EAAK5rB,OAASI,EAAMJ,MACvD6rF,IAAiBvsF,EAAMyY,UAAY6T,EAAK5rB,OAASI,EAAMJ,MAAQnB,EAAOmB,MAAQ;AAEpF,MAAO,CACLqW,MAAO/W,EAAMkrF,kBAAoB,CAC/B3tE,KAAM7P,EAAMhN,MAAQV,EAAM0qF,SAAW1qF,EAAMyqF,UAC3CpiD,QAAU+C,GAAa4gD,EAAS5gD,EAAGtqC,EAAMJ,MAAO,SAChD+X,SAAU6zE,EACV,aAAcv5E,EAAE/S,EAAM6qF,gBACtB,gBAAiByB,QACf9sF,EACJsZ,KAAM,CACJyE,KAAM7P,EAAMhN,MAAQV,EAAMm/C,SAAWn/C,EAAMo/C,SAC3C/W,QAAU+C,GAAa4gD,EAAS5gD,EAAG9e,EAAK5rB,MAAQ,EAAG,QACnD+X,SAAU6zE,EACV,aAAcv5E,EAAE/S,EAAM8qF,mBACtB,gBAAiBwB,GAEnBhtE,KAAM,CACJ/B,KAAM7P,EAAMhN,MAAQV,EAAMo/C,SAAWp/C,EAAMm/C,SAC3C9W,QAAU+C,GAAa4gD,EAAS5gD,EAAG9e,EAAK5rB,MAAQ,EAAG,QACnD+X,SAAU8zE,EACV,aAAcx5E,EAAE/S,EAAM+qF,eACtB,gBAAiBwB,GAEnBjtF,KAAMU,EAAMkrF,kBAAoB,CAC9B3tE,KAAM7P,EAAMhN,MAAQV,EAAMyqF,UAAYzqF,EAAM0qF,SAC5CriD,QAAU+C,GAAa4gD,EAAS5gD,EAAGtqC,EAAMJ,MAAQnB,EAAOmB,MAAQ,EAAG,QACnE+X,SAAU8zE,EACV,aAAcx5E,EAAE/S,EAAMgrF,eACtB,gBAAiBuB,QACf/sF;AAIR,SAASgtF,IACP,MAAMhmD,EAAela,EAAK5rB,MAAQI,EAAMJ;AACxC8I,EAAK9I,MAAM8lC,IAAe3kC,IAAIiK,QAGhC,SAASw1C,EAAWlW,GACdA,EAAE5nC,MAAQH,EAAUV,OAAS3C,EAAMyY,UAAY6T,EAAK5rB,OAASV,EAAMc,OACrEwrB,EAAK5rB,MAAQ4rB,EAAK5rB,MAAQ,EAC1BmkB,EAAQA,SAAC2nE,IACAphD,EAAE5nC,MAAQH,EAAUT,QAAU5C,EAAMyY,UAAY6T,EAAK5rB,MAAQI,EAAMJ,MAAQnB,EAAOmB,MAAQ,IACnG4rB,EAAK5rB,MAAQ4rB,EAAK5rB,MAAQ,EAC1BmkB,EAAQA,SAAC2nE,IA2Eb,OAvEAtvE,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAlD,IAEAsL,EAAS3L,MACR,CACL,eACAmb,EAAapyB,MACbV,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKgP,KAAA,aAAA,aAENnL,EAAE/S,EAAM+pB,WAAUu3B,UACnBA,EAAS,YAAA,qBAAA,CAAA7pC,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,KAAA,CAAAjG,MAAA,sBAAA,CAIjB3X,EAAMkrF,mBAAiBvtE,EAAAA,YAAA,KAAA,CAAAna,IAAA,QAAAmU,MAAA,sBAAA,YAAA,sBAAA,CAEnByD,EAAMrE,MAAQqE,EAAMrE,MAAMs1E,EAAS3rF,MAAMqW,OAAO4G,cAAA2D,GAAAvD,EAAAA,WAAA,CAAAvE,IAAA,kBAChB6yE,EAAS3rF,MAAMqW,OAChD,QAEJ4G,EAAAC,YAAA,KAAA,CAAApa,IAAA,OAAAmU,MAAA,qBAAA,YAAA,qBAAA,CAGGyD,EAAMtC,KAAOsC,EAAMtC,KAAKuzE,EAAS3rF,MAAMoY,MAAK6E,cAAA2D,GAAAvD,EAAAA,WAAA,CAAAvE,IAAA,kBACZ6yE,EAAS3rF,MAAMoY,MAAI,QAIrD0N,EAAM9lB,MAAM0G,KAAI,CAAC5G,EAAM2V,IAAKwH,EAAAA,YAAA,KAAA,CAAAna,IAEpBhD,EAAKgD,IAAGmU,MACP,CACL,qBACA,CACE,gCAAiCnX,EAAKqiC,WAEzC,YAAA,qBAAA,CAGCznB,EAAM5a,KAAO4a,EAAM5a,KAAKA,GAAKmd,EAAAA,YAAA2D,GAAAvD,aAAA,CAAAvE,IAAA,kBACGhZ,EAAKR,OAAK,CAAAyX,QAAAA,IAAKjX,CAAAA,EAAK8rB,YAGxD3O,EAAAC,YAAA,KAAA,CAAApa,IAAA,OAAAmU,MAAA,qBAAA,YAAA,qBAAA,CAOEyD,EAAMkE,KAAOlE,EAAMkE,KAAK+sE,EAAS3rF,MAAM4e,MAAK3B,cAAA2D,GAAAvD,EAAAA,WAAA,CAAAvE,IAAA,kBACZ6yE,EAAS3rF,MAAM4e,MAChD,QAGDtf,EAAMkrF,mBAAiBvtE,EAAAC,YAAA,KAAA,CAAApa,IAAA,OAAAmU,MAAA,qBAAA,YAAA,qBAAA,CAMnByD,EAAM9b,KAAO8b,EAAM9b,KAAK+sF,EAAS3rF,MAAMpB,MAAMqe,cAAA2D,GAAAvD,EAAAA,WAAA,CAAAvE,IAAA,kBACb6yE,EAAS3rF,MAAMpB,qBAQpD,ME3XEmtF,GAA4Bp1E,GAAa,CACpD+nC,SAAU,CACR93C,KAAM/F,OACNkW,QAAS,SAEX0nC,SAAU,CACR73C,KAAM/F,OACNkW,QAAS,SAEXgzE,UAAW,CACTnjF,KAAM/F,OACNkW,QAAS,UAEXizE,SAAU,CACRpjF,KAAM/F,OACNkW,QAAS,SAEXqS,iBAAkB,CAChBxiB,KAAM/F,OACNkW,QAAS,wCAEXoT,SAAU,CACRvjB,KAAM/F,OACNkW,QAAS,gCAEXi1E,eAAgB,CACdplF,KAAM/F,OACNkW,QAAS,iCAEXk1E,cAAe,CACbrlF,KAAM/F,OACNkW,QAAS,gCAEXm1E,cAAe,CACbtlF,KAAM/F,OACNkW,QAAS,gCAEXo1E,cAAe,CACbvlF,KAAM/F,OACNkW,QAAS,gCAEXq1E,oBAAqB,CACnBxlF,KAAM3G,MACN8W,QAASA,IAAO,CACd,CAAE/W,MAAO,GAAIyqB,MAAO,MACpB,CAAEzqB,MAAO,GAAIyqB,MAAO,MACpB,CAAEzqB,MAAO,GAAIyqB,MAAO,MACpB,CAAEzqB,MAAO,IAAKyqB,MAAO,OACrB,CAAEzqB,OAAQ,EAAGyqB,MAAO,yCAGxB4hE,gBAAiBzoE,SAChB,oBAEU0oE,GAAmBnyE,IAAAA,CAAuC,CACrEzQ,KAAM,mBAENpK,MAAOysF,KAEPjyE,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMyE,EAAEA,GAAMge,MACRzE,KAAEA,EAAIo6D,UAAEA,EAASF,WAAEA,EAAUC,UAAEA,EAASjf,YAAEA,EAAW0e,aAAEA,EAAYU,gBAAEA,GP0BxE,WACL,MAAM11D,EAAOhZ,SAAOmuE;AAEpB,IAAKn1D,EAAM,MAAM,IAAI/Y,MAAM;AAE3B,OAAO+Y,EO/B0F+7D,GAEzFH,EAAsBpjF,EAAAA,UAAS,IACnC1J,EAAM8sF,oBAAoB1lF,KAAI8lF,GACN,iBAAXA,EACF,CACLxsF,MAAOwsF,EACP/hE,OAAmB,IAAZ+hE,EACHn6E,EAAE,uCACFxR,OAAO2rF,IAIR,IACFA,EACH/hE,MAAQ7pB,MAAMG,OAAOyrF,EAAO/hE,QAAyBpY,EAAEm6E,EAAO/hE,OAAxB+hE,EAAO/hE;AAmDnD,OA9CAjO,IAAU,KACR,MAAMiwE,EAAkBhC,GAAYzwE,YAAY1a;AAEhD,OAAA2d,EAAAA,YAAA,MAAA,CAAAhG,MAAA,uBAAA,CAEMyD,EAAM6mB,YAAWtkB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,uCAAAgG,CAAAA,EAAAC,YAGT7K,OAAAA,KAAAA,CAAAA,EAAE/S,EAAM8pB,oBAAiBnM,EAAAA,YAAA8D,GAAA,CAAA+E,MAGvBsmE,EAAoBpsF,MAAKiiC,WACpBujD,EAAaxlF,MAAK,sBACTO,GAAK2lF,EAAgBnlF,OAAOR,IAAGugC,QAAA,UAAApgB,QAAA,WAAA,gBAAA,GAAA,QAAAzD,EAAAA,YAAA,MAAA,CAAAhG,MAAA,6BAAA,CAAAgG,EAAAC,YAAA,MAAA,KAAA,CASnD7K,EAAE/S,EAAM6qB,SAAW28C,EAAY9mE,MAAY8lF,EAAW9lF,MAAQ,EAAvB,EAA0B+lF,EAAU/lF,MAAO8mE,EAAY9mE,WAAMid,EAAAC,YAAA,MAAA,CAAAjG,MAAA,mCAAA,CAAAgG,EAAAA,YAAAwtE,GAAAptE,aAAA,CAAA4kB,WAM5FrW,EAAK5rB,MAAK,sBAAA60C,GAAVjpB,EAAK5rB,MAAK60C,EAAA/T,QAAA,cAAA,mBAEDxhC,EAAM0sF,eAAc,kBACrB1sF,EAAM6sF,cAAattF,OAC5BmnF,EAAUhmF,MAAK,kBACNV,EAAM4sF,cAAa,sBACf5sF,EAAM2sF,cAAa1rE,SAAA,EAAA,wBAAA,EAAA,gBAGzBjhB,EAAM+sF,gBAAkB,EAAI,EAAC3rE,QAAA,SAExC+rE,GAAe,aAOvB,MC3IEC,IhLqQVptF,GgLrQuD,CACxD4N,MAAO,CACLtG,KAAM/F,OACNkW,QAAS,SAEX41E,MAAO/oE,QACPgpE,YAAa,CAAC7rF,OAAQF,QACtBmN,OAAQ,CAACjN,OAAQF,QACjBgsF,UAAWjpE,QACXkpE,UAAWlpE,QACXpJ,IAAK3Z,OACLkN,MAAO,CAAChN,OAAQF,QAChB24B,SAAU,CAACz4B,OAAQF,QACnBksF,OAAQnpE,UhLwPcnH,GgLvPrB,CAACnd,EAAKsO,KAAgB,IAAd8M,MAAEA,GAAO9M;AAClB,MAAMsjC,EAAM5xC,EAAMkb,KAAO;AACzB,OAAAyC,EAAAA,YAAAi0B,EAAA,CAAAj6B,MAEW,CACL,mBACA,CACE,6BAA8B3X,EAAMqtF,MACpC,kCAAmCrtF,EAAMutF,UACzC,kCAAmCvtF,EAAMwtF,UACzC,8BAA+BxtF,EAAMytF,QAEtC,8BAA6BztF,EAAM4N,SACrCsB,MACM,CACLR,OAAQvN,EAAcnB,EAAM0O,QAC5BD,MAAOtN,EAAcnB,EAAMyO,OAC3ByrB,SAAU/4B,EAAcnB,EAAMk6B,UAC9Bv3B,KAAMxB,EAAcnB,EAAMstF,aAAe,QAC1C,CAAA71E,QAAAA,IAAA,CAEC2D,EAAM3D,iBhLmOLzX,MAAQA,GACRmd;AAPF,IAKJnd,GAAqBmd;AiLjQjB,MAAMuwE,GAA2Br2E,GAAa,CACnDs2E,QAAShtF,OACR,oBAEUitF,GAGR/1E,OAAOC,IAAI,8BAOV+1E,GAAgB,CAAE1iE,MAAO,GAAI2iE,UAAU,GACvCC,GAAsB,IAAKF,GAAep/E,MAAO;AAsCvD,SAASu/E,GAAextF,GAAwE,IAAzCytF,EAAkCltF,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAC1F,GAAKP,EAAKgH,SAGR,IAAK,MAAMU,KAAS1H,EAAKgH,SACvBwmF,GAAc9lF,EAAO+lF;KAHvBA,EAAQjlF,KAAKxI;AAOf,OAAOytF,EAGT,SAASC,GAAaP,GAAoE,IAA1B1tF,EAAIc,UAAAxB,OAAAwB,QAAAvB,IAAAuB,UAAAvB,GAAAuB,UAAA,GAAG,IAAI8C;AACzE,IAAK,MAAMrD,KAAQmtF,EACbntF,EAAKgD,KAAKvD,EAAK8Q,IAAIvQ,EAAKgD,KAExBhD,EAAKgH,UACP0mF,GAAY1tF,EAAKgH,SAAUvH;AAI/B,OAAOA,EAGT,SAASkuF,GAAgB3tF,GACvB,GAAKA,EAAKgD,IACV,MAAiB,qBAAbhD,EAAKgD,IAAmCqqF,GACxC,CAAC,oBAAqB,qBAAqB9nF,SAASvF,EAAKgD,KAAauqF,QAA1E,EAIF,SAASK,GAAU5tF,GAAkD,IAAnBilF,EAAK1kF,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACxD,OAAKP,EAAKgH,SAEH9B,KAAKD,IAAIggF,KAAUjlF,EAAKgH,SAASJ,KAAIc,GAASkmF,GAASlmF,EAAOu9E,EAAQ,MAFlDA,EAgE7B,SAASnG,GAAO94D,EAAkC6nE,GAChD,MAAMV,EAAuC;AAC7C,IAAIW,EAAe;AACnB,MAAMj4B,EAvIR,WACE,MAAMA,GAD4Bt1D,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,IACiBqG,KAAImoC,IAAY,CAAEA,QAAAA,EAASg/C,SAAU;AAE3F,MAAO,CACLC,QAASA,CAACj/C,EAAYg/C,KACpB,IAAIE,GAAQ;AACZ,IAAK,IAAIhvF,EAAI,EAAGA,EAAI42D,EAAM92D,OAAQE,IAEhC,GADa42D,EAAM52D,GACV8uF,SAAWA,EAAU,CAC5Bl4B,EAAMhvC,OAAO5nB,EAAG,EAAG,CAAE8vC,QAAAA,EAASg/C,SAAAA,IAC9BE,GAAQ;AACR,MAICA,GAAOp4B,EAAMrtD,KAAK,CAAEumC,QAAAA,EAASg/C,SAAAA,KAEpC1lF,KAAMA,IAAMwtD,EAAM92D,OAClBqjF,MAAOA,KACL,IAAIA,EAAQ;AAEZ,IAAKvsB,EAAM92D,OAAQ,OAAO;AAE1B,MAAMmvF,EAAQhpF,KAAK64C,MAAM8X,EAAM,GAAGk4B;AAClC,IAAK,IAAI9uF,EAAI,EAAGA,EAAI42D,EAAM92D,OAAQE,IAC5BiG,KAAK64C,MAAM8X,EAAM52D,GAAG8uF,YAAcG,IAAO9L,GAAS;AAGxD,OAAOA,GAET+L,QAASA,IACAt4B,EAAMjzD,SAwGHwrF,CAAcpoE;AAE5B,KAAO6vC,EAAMxtD,OAAS,GAAG,CACvB,IAAIgmF,EAAUx4B,EAAMusB;AACpB,MAAMkM,EAAiC;AACvC,IAAIC,EAAW;AACf,KAAOF,EAAU,GAAG,CAClB,MAAQt/C,QAAS/uC,EAAI+tF,SAAEA,GAAal4B,EAAMs4B,UACpCz/C,EAAOm/C,EAAWC,EAAeF,GAAS5tF;AAQhD,GANAsuF,EAAI9lF,KAAK,IACJxI,EACHwuF,QAAS9/C,GAAQ,EACjB+/C,QAASzuF,EAAKgH,SAAWwmF,GAAcxtF,GAAMjB,OAAS,IAGpDiB,EAAKgH,SACP,IAAK,MAAMU,KAAS1H,EAAKgH,SAAU,CAEjC,MAAM+e,EAAOgoE,EAAW,EAAKQ,EAAWrpF,KAAKwpF,IAAI,GAAIZ,EAAe;AACpEj4B,EAAMm4B,QAAQtmF,EAAOomF,EAAep/C,EAAO3oB,GAI/CwoE,GAAY,EACZF,GAAW,EAEbP,GAAgB,EAChBX,EAAQ3kF,KAAK8lF,GAKf,MAAO,CAAEb,QAFOznE,EAAMpf,KAAI5G,GAAQwtF,GAAcxtF,KAAOiH,OAErCkmF,QAAAA,GAGpB,SAASwB,GAA0B3oE,GACjC,MAAM4oE,EAA6C;AACnD,IAAK,MAAM5uF,KAAQgmB,EAAO,CACxB,MAAM6oE,EAAc,IAAKlB,GAAe3tF,MAAUA,GAC5CgD,EAAM6rF,EAAY7rF,MAAqC,iBAAtB6rF,EAAY3uF,MAAqB2uF,EAAY3uF,MAAQ,MACtFA,EAAQ2uF,EAAY3uF,OAAS8C,GAAO,KACpC8rF,EAAwC,IACzCD,EACH7rF,IAAAA,EACA9C,MAAAA,EACAotF,SAAUuB,EAAYvB,WAAgC,MAAnBuB,EAAY7rF,OAAiB6rF,EAAY9oE,MAC5E/e,SAAU6nF,EAAY7nF,SAAW2nF,GAAyBE,EAAY7nF,eAAYhI;AAGpF4vF,EAAgBpmF,KAAKsmF,GAGvB,OAAOF,EAGF,SAASG,GACdvvF,EACA+M,GAMA,MAAM4gF,EAAU31E,MAAiC,IAC3Ci2E,EAAUj2E,MAA+B,IACzC6xE,EAAgB7xE,MAA8C,IAC9D2xE,EAAmB3xE,MAA8C,IACjEw3E,EAAkBx3E,MAAwB;AAEhDrO,EAAAA,aAAY,KACV,MAGM6c,GAHWxmB,EAAM2tF,SACrB5tF,OAAOE,KAAKD,EAAMwmB,MAAM,IAAM,IAAIpf,KAAI5D,IAAQ,CAAEA,IAAAA,EAAK2nB,MAAO9gB,EAAUA,WAAC7G,QAElD4F,QACjBnJ,EAAOiuF,GAAY1nE;AAErBzZ,GAASi4E,SAAStkF,MAAMnB,SAAWU,EAAKsD,IAAI,qBAC9CijB,EAAM4/B,QAAQ,CAAE5iD,IAAK,mBAAoB2nB,MAAO,UAG9Cpe,GAASy6E,YAAY9mF,QAAUT,EAAKsD,IAAI,sBAC1CijB,EAAM4/B,QAAQ,CAAE5iD,IAAK,sBAGnBuJ,GAASw3E,YAAY7jF,QAAUT,EAAKsD,IAAI,sBAC1CijB,EAAMxd,KAAK,CAAExF,IAAK;AAGpB,MAAM4rF,EAAkBD,GAAyB3oE;CAvJrD,SAA4BA,GAC1B,IAAIipE,GAAY;AAChB,SAASC,EAAUlvF,GACjB,GAAKA,EAML,GAP2DO,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,IAAAA,UAAA,KAIzDP,EAAK6sF,OAAQ,GAGX7sF,EAAK6sF,MACP,GAAI7sF,EAAKgH,SACP,IAAK,IAAI/H,EAAIe,EAAKgH,SAASjI,OAAS,EAAGE,GAAK,EAAGA,IAC7CiwF,EAASlvF,EAAKgH,SAAS/H,IAAI;KAGxBgwF,EAEMnuF,OAAOd,EAAKiO,QACrBmE,GAAc,2DAA0DpS,EAAKgD,QAF7EhD,EAAK+sF,WAAY,EAInBkC,GAAY;KAGd,GAAIjvF,EAAKgH,SACP,IAAK,IAAI/H,EAAIe,EAAKgH,SAASjI,OAAS,EAAGE,GAAK,EAAGA,IAC7CiwF,EAASlvF,EAAKgH,SAAS/H;KAGzBgwF,GAAY,EAKlB,IAAK,IAAIhwF,EAAI+mB,EAAMjnB,OAAS,EAAGE,GAAK,EAAGA,IACrCiwF,EAASlpE,EAAM/mB;AAGjB,SAASkwF,EAAgBnvF,GAAgD,IAAjB8sF,EAAWvsF,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACpE,IAAKP,EAAM,OAAO8sF;AAElB,GAAI9sF,EAAKgH,SAAU,CACjBhH,EAAK8sF,YAAcA;AACnB,IAAK,MAAMplF,KAAS1H,EAAKgH,SACvB8lF,EAAcqC,EAAeznF,EAAOolF,QAE7B9sF,EAAK6sF,QACd7sF,EAAK8sF,YAAcA,EACnBA,GAAex9E,WAAWtP,EAAKiO,OAAS,MAAQ;AAGlD,OAAO6+E,EAGT,IAAIA,EAAc;AAClB,IAAK,MAAM9sF,KAAQgmB,EACjB8mE,EAAcqC,EAAenvF,EAAM8sF,GAkGnCsC,CAAkBR;AAElB,MAAMf,EAAW3oF,KAAKD,OAAO2pF,EAAgBhoF,KAAI5G,GAAQ4tF,GAAS5tF,MAAU,EACtE2+E,EAASG,GAAM8P,EAAiBf;AAEtCV,EAAQjtF,MAAQy+E,EAAOwO,QACvBM,EAAQvtF,MAAQy+E,EAAO8O;AAEvB,MAAM4B,EAAc1Q,EAAOwO,QAAQlmF,KAAK;AAExC,IAAK,MAAM2jB,KAAUykE,EACdzkE,EAAO5nB,MAER4nB,EAAO0iE,WACL1iE,EAAO7E,OACTsjE,EAAcnpF,MAAM0qB,EAAO5nB,KAAO4nB,EAAO7E,MAGvC6E,EAAO0kE,UACTnG,EAAiBjpF,MAAM0qB,EAAO5nB,KAAO4nB,EAAO0kE,UAI5C1kE,EAAOvR,SACT21E,EAAgB9uF,MAAM0qB,EAAO5nB,KAAO4nB,EAAOvR;AAKjD,MAAMqX,EAAO,CAAEy8D,QAAAA,EAASM,QAAAA,EAASpE,cAAAA,EAAeF,iBAAAA,EAAkB6F,gBAAAA;AAIlE,OAFAv2E,UAAQ20E,GAAyB18D,GAE1BA,EAGF,SAAS6+D,KACd,MAAM7+D,EAAOhZ,SAAO01E;AAEpB,IAAK18D,EAAM,MAAM,IAAI/Y,MAAM;AAE3B,OAAO+Y,EC3OF,MAAM8+D,GAA6B34E,GAAa,CACrDpD,MAAO1S,OACPsnD,OAAQvkC,QACR8jE,UAAW9jE,QACX2rE,YAAa,CACX3oF,KAAM8V,GACN3F,QAAS,YAEXy4E,aAAc,CACZ5oF,KAAM8V,GACN3F,QAAS,aAEX04E,YAAa,CACX7oF,KAAMvH,WAGLi8C,QACAvQ,MACF,qBAEU2kD,GAAoBv1E,IAAAA,CAA2C,CAC1EzQ,KAAM,oBAENpK,MAAOgwF,KAEPx1E,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMyE,EAAEA,GAAMge,MACR03D,WAAEA,EAAUn+D,OAAEA,EAAMq+D,SAAEA,GAAaC,MACnCd,aAAEA,EAAYb,YAAEA,EAAWC,UAAEA,EAASF,cAAEA,GAAkBiB,MAC1DgG,QAAEA,EAAON,QAAEA,GAAYoC,MACvBpkD,cAAEA,GAAkBD,GAAU1rC;AAEpC,SAASqwF,EAAgBhuC,EAAiC7zC,GACxD,GAAKxO,EAAM6oD,QAAWxG,EAAOgrC,MAE7B,MAAO,CACLzmE,SAAU,SACVjkB,KAAM0/C,EAAOgrC,MAAQlsF,EAAckhD,EAAOirC,kBAAe9tF,EACzDwO,IAAKhO,EAAM6oD,OAAU,uCAAsCr6C,UAAOhP,GAItE,SAAS8wF,EAAajuC,GACpB,MAAM7hD,EAAO8pB,EAAO5pB,MAAMqmB,MAAKvmB,GAAQA,EAAKgD,MAAQ6+C,EAAO7+C;AAE3D,OAAKhD,EAEiB,QAAfA,EAAKgkB,MAAkBxkB,EAAMiwF,YAAcjwF,EAAMkwF,aAFtClwF,EAAMiwF,YAK1B,MAAMt0D,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB17B,EAAO,UAE9Em8C,eAAEA,EAAcZ,OAAEA,GAAWU,GAAWj8C,GAExC64C,EAAYnvC,EAAAA,UAAS,KAAO,CAChCikF,QAASA,EAAQjtF,MACjButF,QAASA,EAAQvtF,MACjB+nF,WAAAA,EACAE,SAAAA,EACAr+D,OAAQA,EAAO5pB,MACfonF,aAAcA,EAAapnF,MAC3BumF,YAAaA,EAAYvmF,MACzBwmF,UAAAA,EACAoJ,YAAAA,MAGIC,EAAoB7mF,EAAAA,UAAS,IAAO,CACxC,mBACA,CACE,2BAA4B1J,EAAM6oD,QAEpC1M,EAAez7C,MACfirC,EAAcjrC,SAGV8vF,EAAuBx6E,IAAiF,IAAhFqsC,OAAEA,EAAM9zC,EAAEA,EAACC,EAAEA,GAA8DwH;AACvG,MAAMw3E,EAA2B,sBAAfnrC,EAAO7+C,KAA8C,sBAAf6+C,EAAO7+C,IACzD2sF,EAAc/zD,EAAUA,WAACp8B,EAAMmwF,aAAe,GAAI9tC,EAAO8tC,aAAe;AAE9E,OAAAxyE,EAAAC,YAAAwvE,GAAArvE,aAAA,CAAA7C,IAAA,KAAAtN,MAGYy0C,EAAOz0C,MAAK+J,MACb,CACL,CACE,6BAA8B0qC,EAAOyrC,SACrC,2BAA4BnF,EAAStmC,GACrC,0BAA2BA,EAAOgrC,UAEjCkD,EAAkB7vF,OACtBwO,MACM,CACLT,MAAOtN,EAAckhD,EAAO5zC,OAC5B2rB,SAAUj5B,EAAckhD,EAAOjoB,UAC/BF,SAAU/4B,EAAckhD,EAAOnoB,aAC5Bm2D,EAAehuC,EAAQ7zC,IAC3BygF,QACS5sC,EAAO4sC,QAAOD,QACd3sC,EAAO2sC,QAAO3mD,QACdga,EAAOyrC,SAAW,IAAMrF,EAAWpmC,QAAU7iD,EAAS6tF,MACxDhrC,EAAOgrC,MAAKI,OACXprC,EAAOorC,OAAMF,UACVlrC,EAAOkrC,UAASC,UAChBA,GACP2C,GAAW,CAGd14E,QAASA,KACP,MAAMg5E,EAAkB,UAASpuC,EAAO7+C,MAClCktF,EAAuD,CAC3DruC,OAAAA,EACA6kC,UAAAA,EACAyB,SAAAA,EACAF,WAAAA,EACAn+D,OAAQA,EAAO5pB,MACfonF,aAAcA,EAAapnF,MAC3BumF,YAAaA,EAAYvmF,MACzB4vF,YAAAA;AAGF,OAAIl1E,EAAMq1E,GAAwBr1E,EAAMq1E,GAAiBC,GAEtC,sBAAfruC,EAAO7+C,IACF4X,EAAM,8BAA8Bs1E,KAAqB1J,EAActmF,OAAKid,EAAAC,YAAAw3B,GAAA,CAAAzS,WAElEskD,EAAYvmF,MAAKmoC,cACdi/C,EAAapnF,QAAUumF,EAAYvmF,MAAK,sBAClCwmF,GAAS,OAKrCvpE,EAAAA,YAAA,MAAA,CAAAhG,MAAA,gCAAA,CAAAgG,EAAAC,YAAA,OAAA,KAAA,CAEYykC,EAAOl3B,QACbk3B,EAAOyrC,UAAQnwE,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,OAAAmU,MAAA,iCAAA4F,KAIN+yE,EAAYjuC,IAEtB,MACCriD,EAAMooF,WAAaO,EAAStmC,IAAO1kC,EAAAC,YAAA,MAAA,CAAApa,IAAA,QAAAmU,MAG1B,CACL,qCACGgkB,EAAuBj7B,OAC3BwO,MACO0sB,EAAsBl7B,OAAK,CAEjC4pB,EAAO5pB,MAAM4mB,WAAU/Y,GAAKA,EAAE/K,MAAQ6+C,EAAO7+C,MAAO,UAWlEmtF,EAA6BA,KACjC,MAAMR,EAAc/zD,EAAAA,WAAWp8B,EAAMmwF,aAAe,IAAM,IAEpD3wB,EAAe91D,EAAAA,UAA6B,IACzCukF,EAAQvtF,MAAMmZ,QAAOwoC,GAAUA,GAAQyrC,aAG1Ch9C,EAAapnC,EAAAA,UAAS,KAG1B,GAAwB,MAFCukF,EAAQvtF,MAAMqmB,MAAKs7B,GAAyB,sBAAfA,EAAO7+C,MAI7D,OAAOyjF,EAAYvmF,MAAQ,cAAgBonF,EAAapnF,MAAQ,yBAA2B;AAG7F,OAAAid,EAAAC,YAAAwvE,GAAArvE,aAAA,CAAA7C,IAAA,KAAAvD,MAGW,IACF44E,EAAkB7vF,OACtBuuF,QACStB,EAAQjtF,MAAMnB,OAAS,GAC5B4wF,GAAW,CAAA14E,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,gCAAAgG,CAAAA,EAAAC,YAAA6D,GAAA,CAAA08C,OAAA,EAAAxmD,MAAA,+BAAAogD,WAAA,EAAAv2B,QAAA,UAAAhb,MAQJg5C,EAAa9+D,MAAKqzC,MAClBhhC,EAAE,6BAA4BqyB,SAC3BplC,EAAMooF,UAAShnE,QAAA,aAAA,gBAEVwvE,IAAMtmE,EAAO5pB,MAAQ,GAAEowC,WAC1BA,EAAWpwC,MAAK,iBACZmwF,IAAM3J,GAAWD,EAAYvmF,QAAM,IAG/C0a,EACH8kD,KAAMlgE,GAAK2d,EAAAC,YAAAmF,GAAA,CAAAslB,QAEGroC,EAAMQ,KAAKgpD,KAAKskC,SAAW,IAAMrF,EAAWzoF,EAAMQ,KAAKgpD,UAAOhqD,EAAS0iD,YAClE9W,IACbA,EAAEoW,iBACFpW,EAAEyJ,oBACH,CAAAp9B,QAAAA,IAAA,CAECzX,EAAMQ,KAAK2qB,MAAKxN,EAAAC,YAAA8pB,GAAA,CAAA/vB,MAET,CACL,6BACAgxE,EAAS3oF,EAAMQ,KAAKgpD,MAAQ,qCAC7BjsC,KACM+yE,EAAYtwF,EAAMQ,KAAKgpD,KAAI3gD,KAAA,SAAA;AAYpDqU,IAAU,IACDq+B,EAAO76C,MAAKid,EAAAC,YAAAD,KAAAA,KAAAA,CAAAA,EAAAC,YAAA+yE,EAAAhzE,KAAAA,QAAAA,cAAA6W,EAAAA,SAAA,KAAA,CAMbpZ,EAAMuyE,QACJvyE,EAAMuyE,QAAQ90C,EAAUn4C,OACxBitF,EAAQjtF,MAAM0G,KAAI,CAAC0nF,EAAKtgF,IAACmP,EAAAA,uBAErBmxE,EAAI1nF,KAAI,CAACi7C,EAAQ9zC,IAACoP,EAAAC,YAAA4yE,EAAA,CAAAnuC,OACaA,EAAM9zC,EAAOA,EAACC,EAAOA,GACrD,YAILxO,EAAMugB,SAAO5C,EAAAC,YAAA,KAAA,CAAAjG,MAAA,yBAAA,CAAAgG,EAAAC,YAAA,KAAA,CAAAqxE,QAEGhB,EAAQvtF,MAAMnB,QAAMoe,CAAAA,EAAAC,YAAAguB,GAAA,CAAAxhC,KAAA,wBAAAqa,UAAA,EAAAgB,QAAA,EAAAxR,MAKG,kBAAlBjU,EAAMugB,aAAwB/gB,EAAYQ,EAAMugB,QAAOsoB,eAAA,GAE7D,CAAEpxB,QAAS2D,EAAM42B,oBClS/B8+C,GAAoCz5E,GAAa,CAC5D7W,KAAM,CACJ8G,KAAMvH,OACNyd,UAAU,IAEX,4BAEUuzE,GAA2Bl2E,IAAAA,CAAkD,CACxFzQ,KAAM,2BAENpK,MAAO8wF,KAEPt2E,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM82E,YAAEA,EAAWE,YAAEA,EAAWC,YAAEA,GAAgBG,MAC5C//C,WAAEA,EAAUqiD,eAAEA,EAAcniD,OAAEA,GAAWoiD,MACzCgG,QAAEA,GAAY8B,KAEdiB,EAAOtnF,EAAAA,UAAS,IACb67E,EAAY,CAACvlF,EAAMQ;AAG5B,MAAO,IAAAmd,EAAAC,YAAA,KAAA,CAAAjG,MAAA,gCAAAzI,MAGI,CACL,wCAAyClP,EAAMQ,KAAKilF,QACrD,CAECwI,EAAQvtF,MAAM0G,KAAIi7C,IAClB,GAAmB,qBAAfA,EAAO7+C,IAA4B,CACrC,MAAM+Z,EAAO6nE,EAAYplF,EAAMQ,MAAQ,UAAY,QAC7C6nC,EAAUA,IAAMi9C,EAAYtlF,EAAMQ;AAExC,OAAO4a,EAAM,sBAAsB,CAAE5a,KAAMR,EAAMQ,KAAMoiF,MAAOoO,EAAKtwF,MAAMnB,OAAQS,MAAO,CAAEud,KAAAA,EAAM8qB,QAAAA,MAAY1qB,EAAAC,YAAAwvE,GAAA,CAAAz1E,MAAA,yCAAA,CAAAF,QAAAA,IAAAkG,CAAAA,EAAAC,YAAA0D,GAAA,CAAAzY,KAAA,QAAAuY,QAAA,OAAA7D,KAK/FA,EAAI8qB,QACDA,GAAO,MAAA1qB,EAAAC,YAEX5d,OAAAA,KAAAA,CAAAA,EAAMQ,KAAKE,QAAKid,EAAAC,YAAA6iD,OAAAA,KAAAA,CAAAA,EAAAA,qBACfuwB,EAAKtwF,MAAMnB,OAAMkhE,EAAAC,gBAAA,UAKhC,GAAmB,sBAAfre,EAAO7+C,IAA6B,CACtC,MAAMm/B,EAAagD,EAAWqrD,EAAKtwF,OAC7BmoC,EAAgBm/C,EAAegJ,EAAKtwF,SAAWiiC,EAC/CsuD,EAAehwF,GAAe4kC,EAAOmrD,EAAKtwF,MAAOO;AACvD,OAAOma,EAAM,uBAAuB,CAAEpb,MAAO,CAAE2iC,WAAAA,EAAYkG,cAAAA,EAAe,sBAAuBooD,MAAgBtzE,EAAAC,YAAAD,KAAAA,KAAAA,CAAAA,EAAAA,YAAAy3B,GAAA,CAAAzS,WAG9FA,EAAUkG,cACPA,EAAa,sBACPooD,GAG3B,QAGH,OAAAtzE,cAAA,KAAA,KAAA,cCrDGuzE,GAAyB75E,GAAa,CACjDlB,MAAO1U,OACPjB,KAAMT,OACNoxF,UAAW,CAACpxF,OAAQmK,UACpBm+B,QAASp+B,IACTmnF,cAAennF,IACfonF,WAAYpnF,OAET+xC,MACF,iBAEUs1C,GAAgBz2E,IAAAA,CAMoB,CAC/CzQ,KAAM,gBAENpK,MAAOkxF,KAEP12E,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM6tC,eAAEA,EAAcZ,OAAEA,GAAWU,GAAWj8C,EAAO,qBAC/C2lC,WAAEA,EAAUoiD,aAAEA,EAAYD,aAAEA,EAAYb,YAAEA,EAAWC,UAAEA,GAAce,MACrErD,WAAEA,EAAUC,aAAEA,GAAiBC,MAC/B2D,WAAEA,EAAUn+D,OAAEA,EAAMq+D,SAAEA,GAAaC,MACnCqF,QAAEA,GAAY8B;AAEpB7yE,IAAU,IAAAS,EAAAC,YAAA,KAAA,CAAAjG,MAEC,CACL,mBACA,CACE,iCAAkC3X,EAAMqoC,SAAWroC,EAAMoxF,eAAiBpxF,EAAMqxF,aAElFl1C,EAAez7C,OAChB2nC,QACSroC,EAAMqoC,QAAO+oD,cACPpxF,EAAMoxF,cAAaC,WACtBrxF,EAAMqxF,YAAU,CAE3BrxF,EAAMQ,MAAQytF,EAAQvtF,MAAM0G,KAAI,CAACi7C,EAAQ5iD,KACzC,MAAMe,EAAOR,EAAMQ,KACb+wF,EAAY,QAAOlvC,EAAO7+C,MAC1BguF,EAAkB,UAASnvC,EAAO7+C,MAClCq1C,EAAY,CAChB1iC,MAAOnW,EAAMmW,MACb3V,KAAMA,EAAKgpD,IACX8lC,aAAc9uF,EACdE,MAAON,EAAqBI,EAAKytF,QAAS5rC,EAAO7+C,KACjD6+C,OAAAA,EACA1c,WAAAA,EACAoiD,aAAAA,EACAnD,WAAAA,EACAC,aAAAA,GAGI6L,EAAuD,CAC3DruC,OAAAA,EACA6kC,UAAAA,EACAyB,SAAAA,EACAF,WAAAA,EACAn+D,OAAQA,EAAO5pB,MACfonF,aAAcA,EAAapnF,MAC3BumF,YAAaA,EAAYvmF,MACzB4vF,YAAaA,IAAM,IAGfa,EAAuC,mBAApBnxF,EAAMmxF,UAC3BnxF,EAAMmxF,UAAU,CAChBh7E,MAAO0iC,EAAU1iC,MACjB3V,KAAMq4C,EAAUr4C,KAChB8uF,aAAcz2C,EAAUy2C,aACxB5uF,MAAOm4C,EAAUn4C,MACjB2hD,OAAAA,IAEAriD,EAAMmxF,UACJM,EAA8C,mBAArBpvC,EAAO8uC,UAClC9uC,EAAO8uC,UAAU,CACjBh7E,MAAO0iC,EAAU1iC,MACjB3V,KAAMq4C,EAAUr4C,KAChB8uF,aAAcz2C,EAAUy2C,aACxB5uF,MAAOm4C,EAAUn4C,QAEjB2hD,EAAO8uC;AAEX,OAAAxzE,EAAAC,YAAAwvE,GAAArvE,aAAA,CAAAnQ,MAEYy0C,EAAOz0C,MAAK+J,MACb,CACL,iCAAiD,sBAAf0qC,EAAO7+C,IACzC,+BAA+C,sBAAf6+C,EAAO7+C,KACxC6pF,MACOhrC,EAAOgrC,MAAKC,YACNjrC,EAAOirC,YAAWC,UACpBlrC,EAAOkrC,UAASrzD,SAChBqhB,EAAO76C,WAA0BlB,EAAlB6iD,EAAOnoB,SAAoBszD,UAC3B,sBAAfnrC,EAAO7+C,KAA8C,sBAAf6+C,EAAO7+C,IAA2BiqF,OAC3EprC,EAAOorC,OAAMh/E,MACb8sC,EAAO76C,WAAuBlB,EAAf6iD,EAAO5zC,OAC1B0iF,EACAM,GAAe,CAGlBh6E,QAASA,KACP,GAAI2D,EAAMm2E,KAAch2C,EAAO76C,MAAO,OAAO0a,EAAMm2E,KAAY14C;AAE/D,GAAmB,sBAAfwJ,EAAO7+C,IACT,OAAO4X,EAAM,4BAA4By9B,IAAUl7B,EAAAA,YAAAy3B,GAAA,CAAA38B,UAEnCjY,EAAKukD,WAAUpiB,WACdgD,EAAW,CAACnlC,IAAM6nC,QACrBqpD,EAAaA,eAAC,IAAM3J,EAAavnF,IAAO,CAAC,UAEtD;AAGH,GAAmB,sBAAf6hD,EAAO7+C,IACT,OAAO4X,EAAM,4BAA4By9B,IAAUl7B,EAAAA,YAAA2D,GAAA,CAAA/D,KAExCqnE,EAAWpkF,GAAQ,YAAc,UAASqI,KAAA,QAAAuY,QAAA,OAAAinB,QAGvCqpD,EAAaA,eAAC,IAAM7M,EAAarkF,IAAO,CAAC,UAEtD;AAGH,MAAMmxF,EAAeC,EAAAA,gBAAgB/4C,EAAUn4C;AAE/C,OAAQ66C,EAAO76C,MAAoBid,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAAA7W,EAAAC,YAAA,MAAA,CAAAjG,MAAA,0BAAA,CAG3ByD,EAAMo2E,KAAkBd,IAAoBruC,EAAOl3B,QAAKxN,EAAAC,YAAA,MAAA,CAAAjG,MAAA,0BAIxDyD,CAAAA,EAAMm2E,KAAY14C,IAAc84C,MAPjBA,eCnI5BE,GAA0Bx6E,GAAa,CAClDkJ,QAAS,CAAC+D,QAAS/iB,QACnBqoB,YAAa,CACXtiB,KAAM/F,OACNkW,QAAS,qCAEX8mD,WAAYj6C,QACZkC,MAAO,CACLlf,KAAM3G,MACN8W,QAASA,IAAO,IAElB8T,WAAY,CACVjkB,KAAM/F,OACNkW,QAAS,uBAEXq6E,SAAU,CAAC/xF,OAAQmK,UACnBinF,UAAW,CAACpxF,OAAQmK,aAEjB8xC,MACF,kBAEU+1C,GAAiBl3E,IAAAA,CAKmB,CAC/CzQ,KAAM,iBAEN0T,cAAc,EAEd9d,MAAO6xF,KAEPr3E,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAM2/E,QAAEA,GAAY8B,MACdzL,cAAEA,EAAaO,aAAEA,EAAYD,WAAEA,GAAeE,MAC9Cn/C,WAAEA,EAAUoiD,aAAEA,GAAiBE,MAC/B3C,YAAEA,EAAWF,YAAEA,GAAgBM,MAC/B3yE,EAAEA,GAAMge,MACRwqB,OAAEA,GAAWU,GAAWj8C;AA2G9B,OAzGAkd,IAAU,KACJld,EAAMugB,SAAavgB,EAAMwmB,MAAMjnB,SAAU6b,EAAMmF,QAa9CvgB,EAAMugB,SAAYvgB,EAAMwmB,MAAMjnB,QAAWS,EAAMu+D,WAapD5gD,EAAAC,YAAA4W,WAAA,KAAA,CAEMx0B,EAAMwmB,MAAMpf,KAAI,CAAC5G,EAAM2V,KACvB,GAAkB,UAAd3V,EAAK8G,KAAkB,CACzB,MAAMuxC,EAAY,CAChB1iC,MAAAA,EACA3V,KAAAA,EACAytF,QAASA,EAAQvtF,MACjBkkF,WAAAA,EACAC,aAAAA,EACAl/C,WAAAA,EACAoiD,aAAAA,EACAzC,YAAAA,EACAF,YAAAA;AAGF,OAAOhqE,EAAM,gBAAkBA,EAAM,gBAAgBy9B,GAAUl7B,EAAAA,YAAAozE,GAAAhzE,aAAA,CAAAva,IAEpD,gBAAehD,EAAK0kB,KAAI1kB,KACxBA,GACFkb,GAAyB1W,EAAO,iBAAiB,IAAM6zC,KAClDz9B,GAKhB,MAAMy9B,EAAY,CAChB1iC,MAAAA,EACA3V,KAAMA,EAAKgpD,IACX8lC,aAAc9uF,EACdytF,QAASA,EAAQvtF,MACjBkkF,WAAAA,EACAC,aAAAA,EACAl/C,WAAAA,EACAoiD,aAAAA,GAGIiK,EAAgB,IACjBn5C,EACH74C,MAAOo8B,EAAAA,WACL,CACE54B,IAAM,QAAOhD,EAAKgD,KAAOhD,EAAK2V,QAC9BkyB,QAASi8C,EAAc5jF,MAAQ,KAC7BmkF,EAAarkF,SACXhB,EACJ2W,MAAAA,EACA3V,KAAAA,EACA2wF,UAAWnxF,EAAMmxF,UACjB51C,OAAQA,EAAO76C,OAEjBgb,GAAyB1W,EAAO,QAAQ,IAAM6zC,IACpB,mBAAnB74C,EAAM8xF,SACT9xF,EAAM8xF,SAAS,CACftxF,KAAMq4C,EAAUr4C,KAChB2V,MAAO0iC,EAAU1iC,MACjBm5E,aAAcz2C,EAAUy2C,eAExBtvF,EAAM8xF;AAId,OAAAn0E,EAAAA,YAAA6W,EAAAA,SAAA,CAAAhxB,IACkBwuF,EAAchyF,MAAMwD,KAAG,CACnC4X,EAAM5a,KAAO4a,EAAM5a,KAAKwxF,GAAcr0E,cAAA2zE,GAE/BU,EAAchyF,MACTob,GAIZwpE,EAAWpkF,IAAS4a,EAAM,kBAAkBy9B,UAlFtDl7B,EAAAA,YAAA,KAAA,CAAAhG,MAAA,4BAAAnU,IAAA,WAAA,CAAAma,EAAAC,YAAA,KAAA,CAAAqxE,QAKkBhB,EAAQvtF,MAAMnB,QAAM,CAC9B6b,EAAM,gBAAkBrI,EAAE/S,EAAMurB,gBAnBxC5N,EAAAA,YAAA,KAAA,CAAAhG,MAAA,4BAAAnU,IAAA,WAAA,CAAAma,EAAAC,YAAA,KAAA,CAAAqxE,QAKkBhB,EAAQvtF,MAAMnB,QACxB6b,CAAAA,EAAMmF,aAAexN,EAAE/S,EAAM4pB,mBAiGlC,MC/JEqoE,GAAkB56E,GAAa,CAC1C66E,YAAa5tE,QACb6tE,YAAa7tE,QACb5V,OAAQ,CAACjN,OAAQF,QACjBmkE,MAAOphD,WAEJ5M,QACA6sB,QACA9P,QACApD,MACF,UAEU+gE,GAASv3E,IAAAA,CAAgC,CACpDzQ,KAAM,SAENpK,MAAOiyF,KAEPz3E,MAAOxa,EAAKsO,GAAmB,IAAjB8M,MAAEA,EAAK+N,KAAEA,GAAM7a;AAC3B,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChCykC,eAAEA,GAAmBD,GAAWxkC;AAqCtC,OAnCAkd,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,UACA,CACE,0BAA2B3X,EAAM0O,OACjC,wBAAyB1O,EAAMkyF,YAC/B,wBAAyBlyF,EAAMmyF,YAC/B,qBAAsB/2E,EAAMpN,IAC5B,wBAAyBoN,EAAMnN,OAC/B,iBAAkBjO,EAAM0lE,OAE1B5yC,EAAapyB,MACb+jC,EAAe/jC,MACfV,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAuI,QAAAA,IAEjB2D,CAAAA,EAAMpN,QAENoN,EAAM3D,QAAOkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,mBAAAzI,MAGJ,CAAER,OAAQvN,EAAcnB,EAAM0O,UAAS,CAAAiP,EAAAA,YAG1CvC,QAAAA,KAAAA,CAAAA,EAAM3D,cAGV2D,EAAM0qD,YAER1qD,EAAMnN,gBAIL,MC1DEokF,GAA0Bh7E,GAAa,CAClDmP,MAAO,CACLlf,KAAM3G,MACN8W,QAASA,IAAO,IAElBsyC,UAAW,CACTziD,KAAM,CAAC/F,OAAQZ,MAAOuJ,UACtBuN,QAAS,MAEXwyE,eAAgB,CACd3iF,KAAM,CAAC/F,OAAQZ,MAAOuJ,UACtBuN,QAAS,MAEXq6E,SAAU,CAAC/xF,OAAQmK,UACnBinF,UAAW,CAACpxF,OAAQmK,UACpBm/C,aAAc/kC,SACb;AA0BI,SAAS4lC,GACdlqD,EACAwmB,EACAynE,GAEA,OAAOznE,EAAMpf,KAAI,CAAC5G,EAAM2V,IA7BnB,SACLnW,EACAQ,EACA2V,EACA83E,GAEA,MAAMvtF,EAAQV,EAAMqpD,aAAe7oD,EAAOD,EAAoBC,EAAMR,EAAM+pD,WACpEhF,EAAaxkD,EAAoBC,EAAMR,EAAMiqF,gBAAgB,GAC7DqI,EAAcrE,EAAQ12E,QAAO,CAACpY,EAAKkjD,KACrB,MAAdA,EAAO7+C,MAAarE,EAAIkjD,EAAO7+C,KAAOjD,EAAoBC,EAAM6hD,EAAO3hD,QACpEvB,IACN;AAEH,MAAO,CACLmI,KAAM,OACN9D,IAAKxD,EAAMqpD,aAAe9oD,EAAoBC,EAAMR,EAAM+pD,WAAarpD,EACvEyV,MAAAA,EACAzV,MAAAA,EACAqkD,WAAAA,EACAkpC,QAASqE,EACT9oC,IAAKhpD,GAS2BypD,CAAcjqD,EAAOQ,EAAM2V,EAAO83E,KAG/D,SAASsE,GAAmBvyF,EAA2BiuF,GAG5D,MAAO,CAAEznE,MAFK9c,YAAS,IAAMwgD,GAAelqD,EAAOA,EAAMwmB,MAAOynE,EAAQvtF,UCInE,MAAM8xF,GAAqBn7E,GAAa,IAC1Cw6E,KAEHpjF,MAAO,CAAClN,OAAQE,QAChB+gE,OAAQjhE,UAEL8iF,QACAU,QACA2I,QACA2E,QACA9K,QACAW,QACA8H,QACAiC,MACF,aAEUQ,GAAsBp7E,GAAa,IAC3C+uE,QACAoM,QACA3xB,QACA4rB,MACF,cAIUiG,GAAa73E,IAAAA,CAYuB,CAC/CzQ,KAAM,aAENpK,MAAOyyF,KAEPt0D,MAAO,CACL,oBAAsBz9B,IAAiB,EACvC,cAAgBA,IAAkB,EAClC,sBAAwBA,IAAkB,EAC1C,gBAAkBA,IAAe,EACjC,iBAAmBA,IAAe,EAClC,iBAAmBA,IAAe,EAClC,kBAAoBA,IAAe,EACnC,sBAAwBA,IAAe,GAGzC8Z,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAM02E,QAAEA,GAAYE,GAAcllF,IAC5BsqB,OAAEA,EAAM89D,UAAEA,EAASC,SAAEA,GAAaE,GAAWvoF,IAC7CssB,KAAEA,EAAI45D,aAAEA,GAAiBI,GAAiBtmF,IAE1CiuF,QACJA,EAAON,QACPA,EAAO9D,cACPA,EAAaF,iBACbA,EAAgB6F,gBAChBA,GACED,GAAcvvF,EAAO,CACvBglF,QAAAA,EACAwC,WAAYlpD,EAAAA,MAAMt+B,EAAO,cACzBukF,WAAYjmD,EAAAA,MAAMt+B,EAAO,iBAGrBwmB,MAAEA,GAAU+rE,GAAkBvyF,EAAOiuF,GAErCzrB,EAASlkC,EAAAA,MAAMt+B,EAAO,WACtBohE,cAAEA,GAAkBD,GAAUnhE,EAAOwmB,EAAOg8C,EAAQ,CACxDnzD,UAAW7O,GAAQA,EAAKytF,QACxBltB,gBAAiByuB,KAGb/G,WAAEA,GAAeD,GAAY,CAAEl+D,OAAAA,EAAQ89D,UAAAA,EAAWC,SAAAA,EAAU/7D,KAAAA,KAC5D+4D,iBAAEA,EAAgBlhC,OAAEA,EAAMohC,YAAEA,EAAWH,YAAEA,EAAWE,YAAEA,GAAgBH,GAAe,CAAEH,QAAAA,EAAS16D,OAAAA,KAEhGw+D,YAAEA,GAAgBD,GAAe7oF,EAAOohE,EAAeikB,EAAkB,CAC7Eh2E,UAAW7O,GAAQA,EAAKytF,QACxBpE,cAAAA,EACAF,iBAAAA,KAEI5D,UAAEA,GAAcC,GAAgB8C,EAAa9D,EAAS7gC,GACtDqjB,EAAc99D,EAAAA,UAAS,IAAMq8E,EAAUrlF,MAAMnB,UAE7CinF,WAAEA,EAAUC,UAAEA,EAASC,UAAEA,EAASE,gBAAEA,GAAoBL,GAAkB,CAAEj6D,KAAAA,EAAM45D,aAAAA,EAAc1e,YAAAA,KAChGsf,eAAEA,GAAmBD,GAAkB,CAAErgE,MAAOu/D,EAAWS,WAAAA,EAAYC,UAAAA,EAAWP,aAAAA,IAElFmE,EAA8B3gF,EAAAA,UAAS,IAAM67E,EAAYuB,EAAepmF,UAExEilC,WACJA,EAAUE,OACVA,EAAMqhD,UACNA,EAASa,aACTA,EAAYD,aACZA,EAAYb,YACZA,GACES,GAAiB1nF,EAAO,CAAEqnF,SAAU7gE,EAAO+F,YAAa89D,KAEtDzF,WAAEA,EAAUC,aAAEA,GAAiBH,GAAgB1kF;AAErDimF,GAAW,CACT35D,KAAAA,EACA45D,aAAAA,EACA57D,OAAAA,EACA06D,QAAAA,EACAxiB,OAAAA,IAGFpqD,GAAgB,CACd25E,eAAgB,CACdxzB,WAAYjgC,EAAAA,MAAMt+B,EAAO,cACzBurB,WAAY+S,EAAAA,MAAMt+B,EAAO,cACzBugB,QAAS+d,EAAAA,MAAMt+B,EAAO,WACtB4pB,YAAa0U,EAAAA,MAAMt+B,EAAO;AAI9B,MAAM64C,EAAYnvC,EAAAA,UAAmC,KAAO,CAC1D4iB,KAAMA,EAAK5rB,MACXwlF,aAAcA,EAAaxlF,MAC3B4pB,OAAQA,EAAO5pB,MACfgmF,UAAWA,EAAUhmF,MACrB+nF,WAAAA,EACA7B,gBAAAA,EACAkB,aAAcA,EAAapnF,MAC3BumF,YAAaA,EAAYvmF,MACzBilC,WAAAA,EACAE,OAAAA,EACAqhD,UAAAA,EACAa,aAAAA,EACAnD,WAAAA,EACAC,aAAAA,EACAO,YAAAA,EACAE,YAAAA,EACA9+D,MAAO6jE,EAA4B3pF,MAAM0G,KAAI5G,GAAQA,EAAKgpD,MAC1DmpC,cAAetI,EAA4B3pF,MAC3CmlF,aAAciB,EAAepmF,MAC7ButF,QAASA,EAAQvtF,MACjBitF,QAASA,EAAQjtF;AAmEnB,OAhEAwc,IAAU,KACR,MAAM01E,EAAuB5F,GAAiBtyE,YAAY1a,GACpD6yF,EAAwBzC,GAAkB11E,YAAY1a,GACtD8yF,EAAqBf,GAAer3E,YAAY1a,GAChD+yF,EAAaX,GAAO13E,YAAY1a;AAEtC,OAAA2d,EAAAC,YAAAw0E,GAAAr0E,aAAA,CAAApG,MAEW,CACL,eACA,CACE,4BAA6B3X,EAAMwnF,WACnC,wBAAyBxnF,EAAMugB,SAEjCvgB,EAAM2X,OACPzI,MACOlP,EAAMkP,OACT6jF,GAAU,CAGb/kF,IAAKA,IAAMoN,EAAMpN,MAAM6qC,EAAUn4C,OACjC+W,QAASA,IAAM2D,EAAM3D,QAAU2D,EAAM3D,QAAQohC,EAAUn4C,OAAMid,cAAA6W,EAAAA,SAEvDpZ,KAAAA,CAAAA,EAAM43E,WAAWn6C,EAAUn4C,OAAMid,EAAAC,YAAA,QAAA,KAAA,CAAAD,cAAAyyE,GAG1ByC,EACKz3E,KAGZA,EAAM63E,QAAQp6C,EAAUn4C,OAAMid,EAAAC,YAAA,QAAA,KAAA,CAE5BxC,EAAM,kBAAkBy9B,EAAUn4C,OAClC0a,EAAMwiC,KAAOxiC,EAAMwiC,KAAK/E,EAAUn4C,OAAMid,EAAAA,YAAAo0E,GAAAh0E,aAEjC/Y,EACA8tF,EAAkB,CAAAtsE,MACfsgE,EAAepmF,QACb0a,GAGZA,EAAM,iBAAiBy9B,EAAUn4C,SAEnC0a,EAAM83E,QAAQr6C,EAAUn4C,OACxB0a,EAAM+3E,QAAQt6C,EAAUn4C,SAG9BuN,OAAQA,IAAMmN,EAAMnN,OAASmN,EAAMnN,OAAO4qC,EAAUn4C,OAAMid,EAAAC,YAAA4W,EAAAjtB,SAAA,KAAA,CAAAoW,EAAAC,YAAAsrC,GAAA,KAAA,MAAAvrC,EAAAA,YAAAqvE,GAK/C4F,EACI,CACP3wD,QAAS7mB,EAAM,2BAUxB,MCvOEg4E,GAA6B/7E,GAAa,IAClDm7E,QACAzN,QACAjqB,QACA+F,MACF,qBAIUwyB,GAAoBx4E,IAAAA,CAWgB,CAC/CzQ,KAAM,oBAENpK,MAAOozF,KAEPj1D,MAAO,CACL,oBAAsBz9B,IAAiB,EACvC,gBAAkBA,IAAe,EACjC,iBAAmBA,IAAe,EAClC,iBAAmBA,IAAe,EAClC,kBAAoBA,IAAe,GAGrC8Z,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAM02E,QAAEA,GAAYE,GAAcllF,IAC5BsqB,OAAEA,EAAM89D,UAAEA,EAASC,SAAEA,GAAaE,GAAWvoF,IAE7CiuF,QACJA,EAAON,QACPA,EAAO6B,gBACPA,EAAe3F,cACfA,EAAaF,iBACbA,GACE4F,GAAcvvF,EAAO,CACvBglF,QAAAA,EACAwC,WAAYlpD,EAAAA,MAAMt+B,EAAO,cACzBukF,WAAYjmD,EAAAA,MAAMt+B,EAAO,iBAErBwmB,MAAEA,GAAU+rE,GAAkBvyF,EAAOiuF,GAErCzrB,EAASlkC,EAAAA,MAAMt+B,EAAO,WACtBohE,cAAEA,GAAkBD,GAAUnhE,EAAOwmB,EAAOg8C,EAAQ,CACxDnzD,UAAW7O,GAAQA,EAAKytF,QACxBltB,gBAAiByuB,KAGb/G,WAAEA,GAAeD,GAAY,CAAEl+D,OAAAA,EAAQ89D,UAAAA,EAAWC,SAAAA,KAClDhD,iBAAEA,EAAgBlhC,OAAEA,EAAMohC,YAAEA,EAAWH,YAAEA,EAAWE,YAAEA,GAAgBH,GAAe,CAAEH,QAAAA,EAAS16D,OAAAA,KAEhGw+D,YAAEA,GAAgBD,GAAe7oF,EAAOohE,EAAeikB,EAAkB,CAC7Eh2E,UAAW7O,GAAQA,EAAKytF,QACxBpE,cAAAA,EACAF,iBAAAA,KAEI5D,UAAEA,GAAcC,GAAgB8C,EAAa9D,EAAS7gC,GAEtDkjC,EAAW39E,EAAAA,UAAS,IAAM67E,EAAYQ,EAAUrlF,UAEhDilC,WAAEA,EAAUE,OAAEA,EAAMqhD,UAAEA,EAASa,aAAEA,EAAYD,aAAEA,EAAYb,YAAEA,GAAgBS,GAAiB1nF,EAAO,CACzGqnF,SAAAA,EACA96D,YAAa86D,KAETzC,WAAEA,EAAUC,aAAEA,GAAiBH,GAAgB1kF,IAE/C2/C,aACJA,EAAYub,UACZA,EAASD,WACTA,EAAUrgC,cACVA,EAAagiC,cACbA,EAAaK,iBACbA,EAAgBH,aAChBA,EAAYE,gBACZA,GACEhC,GAAWh7D,EAAO+lF,GAChBvmB,EAAe91D,YAAS,IAAMkzD,EAAcl8D,MAAM0G,KAAI5G,GAAQA,EAAKgpD;AAEzEy8B,GAAW,CACT37D,OAAAA,EACAgC,KAAMrf,EAAUA,WAAC,GACjBi5E,aAAcj5E,EAAAA,YAAY,GAC1B+3E,QAAAA,EACAxiB,OAAAA,IAGFpqD,GAAgB,CACd25E,eAAgB,CACdxzB,WAAYjgC,EAAAA,MAAMt+B,EAAO,cACzBurB,WAAY+S,EAAAA,MAAMt+B,EAAO,cACzBugB,QAAS+d,EAAAA,MAAMt+B,EAAO,WACtB4pB,YAAa0U,EAAAA,MAAMt+B,EAAO;AAI9B,MAAM64C,EAAYnvC,EAAAA,UAA0C,KAAO,CACjE4gB,OAAQA,EAAO5pB,MACf+nF,WAAAA,EACAX,aAAcA,EAAapnF,MAC3BumF,YAAaA,EAAYvmF,MACzBilC,WAAAA,EACAE,OAAAA,EACAqhD,UAAAA,EACAa,aAAAA,EACAnD,WAAAA,EACAC,aAAAA,EACAO,YAAAA,EACAE,YAAAA,EACA9+D,MAAO6gE,EAAS3mF,MAAM0G,KAAI5G,GAAQA,EAAKgpD,MACvCmpC,cAAetL,EAAS3mF,MACxBmlF,aAAcE,EAAUrlF,MACxButF,QAASA,EAAQvtF,MACjBitF,QAASA,EAAQjtF;AAGnBwc,IAAU,KACR,MAAM21E,EAAwBzC,GAAkB11E,YAAY1a,GACtD8yF,EAAqBf,GAAer3E,YAAY1a,GAChD+yF,EAAaX,GAAO13E,YAAY1a;AAEtC,OAAA2d,EAAAC,YAAAw0E,GAAAr0E,aAAA,CAAApG,MAEW,CACL,eACA,CACE,wBAAyB3X,EAAMugB,SAEjCvgB,EAAM2X,OACPzI,MACOlP,EAAMkP,OACT6jF,GAAU,CAGb/kF,IAAKA,IAAMoN,EAAMpN,MAAM6qC,EAAUn4C,OACjColE,QAASA,IAAAnoD,EAAAC,YAAA,MAAA,CAAA5F,IAEC2nC,EAAY6d,gBACAV,EAAYW,YAChBT,EAAerlD,MAAA,mBAAAzI,MAEtB,CACLR,OAAQvN,EAAcnB,EAAM0O,UAC7B,CAAAiP,EAAAC,YAGGxC,QAAAA,KAAAA,CAAAA,EAAM43E,WAAWn6C,EAAUn4C,OAAMid,EAAAC,0BAAAD,EAAAC,YAAAwyE,GAAAryE,EAAAqe,WAG1By2D,EAAqB,CAAAhqC,OACjB7oD,EAAMkyF,cACL92E,KAAKuC,EAAAA,YAAA,QAAA,KAAA,CAAAA,EAAAC,YAAA,KAAA,CAAA5F,IAIPkjD,EAAShsD,MAAU,CAAER,OAAQvN,EAAc85D,EAAWv6D,OAAQqgC,OAAQ,IAAG,CAAApjB,EAAAC,YAAA,KAAA,CAAAqxE,QACnEhB,EAAQvtF,MAAMnB,OAAM2P,MAAU,CAAER,OAAQ,EAAGqyB,OAAQ,IAAG,QAGpE3lB,EAAM,kBAAkBy9B,EAAUn4C,OAAMid,EAAAA,YAAAo0E,GAAAh0E,EAAAA,WAGnC/Y,EACA8tF,EAAkB,CAAAtsE,MACfg5C,EAAa9+D,QAAK,IAGrB0a,EACH5a,KAAMwxF,GAAar0E,EAAAC,YAAAg9C,GAAA,CAAAp3D,IAETwuF,EAAc1C,aAAan5E,MAAKwkD,YAAA,EAAA,kBAEpBjsD,GAAUuuD,EAAiB+0B,EAAc1C,aAAan5E,MAAOzH,IAAO,CAAA+I,QAEpFzB,IAAA,IAAC6kD,QAAEA,GAAS7kD;AAAA,OACZoF,EAAM5a,OAAO,IAAKwxF,EAAen3B,QAAAA,KAAUl9C,EAAAA,YAAA2zE,GAAAvzE,EAAAA,WAElCi0E,EAAchyF,MAAK,CAAAgY,IAClB6iD,EAAOr3D,IACPwuF,EAAc1C,aAAan5E,MAAKA,MAC9B67E,EAAc1C,aAAan5E,QACzBiF,QAStBA,EAAM,iBAAiBy9B,EAAUn4C,OAAMid,EAAAC,YAAA,KAAA,CAAA1O,MAE9B,CAAER,OAAQvN,EAAcy5B,EAAcl6B,OAAQqgC,OAAQ,IAAG,CAAApjB,EAAAC,YAAA,KAAA,CAAAqxE,QACpDhB,EAAQvtF,MAAMnB,OAAM2P,MAAU,CAAER,OAAQ,EAAGqyB,OAAQ,IAK1E,cACD9yB,OAAQA,IAAMmN,EAAMnN,SAAS4qC,EAAUn4C,eCrOtC4yF,GAA4Bj8E,GAAa,CACpDmwD,YAAa,CACXlgE,KAAM,CAAC7F,OAAQF,QACfic,UAAU,MAGT4oE,QACAoM,QACA/F,MACF,oBAIU8G,GAAmB14E,IAAAA,CAWiB,CAC/CzQ,KAAM,mBAENpK,MAAOszF,KAEPn1D,MAAO,CACL,oBAAsBz9B,IAAiB,EACvC,cAAgB4rB,IAAiB,EACjC,sBAAwBA,IAAiB,EACzC,gBAAkBhC,IAAgB,EAClC,iBAAmBvd,IAAiB,EACpC,kBAAoBA,IAAiB,EACrC,iBAAmBrM,IAAe,GAGpC8Z,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAM02E,QAAEA,GAAYE,GAAcllF,IAC5BsqB,OAAEA,EAAM89D,UAAEA,EAASC,SAAEA,GAAaE,GAAWvoF,IAC7CssB,KAAEA,EAAI45D,aAAEA,GAAiBI,GAAiBtmF,GAC1CwnE,EAAc99D,EAAAA,UAAS,IAAMyL,SAASnV,EAAMwnE,YAAa,OAEzDymB,QAAEA,EAAON,QAAEA,GAAY4B,GAAcvvF,EAAO,CAChDglF,QAAAA,EACAwC,WAAYlpD,EAAAA,MAAMt+B,EAAO,cACzBukF,WAAYjmD,EAAAA,MAAMt+B,EAAO,iBAGrBwmB,MAAEA,GAAU+rE,GAAkBvyF,EAAOiuF,IAErCxF,WAAEA,GAAeD,GAAY,CAAEl+D,OAAAA,EAAQ89D,UAAAA,EAAWC,SAAAA,EAAU/7D,KAAAA,KAE5D63B,OAAEA,EAAMihC,YAAEA,EAAWE,YAAEA,EAAWC,YAAEA,GAAgBJ,GAAe,CAAEH,QAAAA,EAAS16D,OAAAA,KAE9Eo8D,UAAEA,EAASE,gBAAEA,GAAoBL,GAAkB,CAAEj6D,KAAAA,EAAM45D,aAAAA,EAAc1e,YAAAA,KAEzEue,UAAEA,GAAcC,GAAgBx/D,EAAOw+D,EAAS7gC,IAEhDxe,WAAEA,EAAUE,OAAEA,EAAMqhD,UAAEA,EAASa,aAAEA,EAAYD,aAAEA,EAAYb,YAAEA,GAAgBS,GAAiB1nF,EAAO,CACzGqnF,SAAU7gE,EACV+F,YAAa/F,KAGTo+D,WAAEA,EAAUC,aAAEA,GAAiBH,GAAgB1kF,GAE/CwzF,EAAqB9pF,EAAAA,UAAS,IAAM67E,EAAY/+D,EAAM9lB;AAE5DulF,GAAW,CACT35D,KAAAA,EACA45D,aAAAA,EACA57D,OAAAA,EACA06D,QAAAA,EACAxiB,OAAQlkC,EAAAA,MAAMt+B,EAAO,YAGvBiZ,EAAAA,QAAQ,eAAgB,CACtBwvE,WAAAA,EACAn+D,OAAAA,IAGFlS,GAAgB,CACd25E,eAAgB,CACdxzB,WAAYjgC,EAAAA,MAAMt+B,EAAO,cACzBurB,WAAY+S,EAAAA,MAAMt+B,EAAO,cACzBugB,QAAS+d,EAAAA,MAAMt+B,EAAO,WACtB4pB,YAAa0U,EAAAA,MAAMt+B,EAAO;AAI9B,MAAM64C,EAAYnvC,EAAAA,UAAmC,KAAO,CAC1D4iB,KAAMA,EAAK5rB,MACXwlF,aAAcA,EAAaxlF,MAC3B4pB,OAAQA,EAAO5pB,MACfgmF,UAAWA,EAAUhmF,MACrB+nF,WAAAA,EACA7B,gBAAAA,EACAkB,aAAcA,EAAapnF,MAC3BumF,YAAaA,EAAYvmF,MACzBilC,WAAAA,EACAE,OAAAA,EACAqhD,UAAAA,EACAa,aAAAA,EACAnD,WAAAA,EACAC,aAAAA,EACAO,YAAAA,EACAE,YAAAA,EACA9+D,MAAOgtE,EAAmB9yF,MAAM0G,KAAI5G,GAAQA,EAAKgpD,MACjDmpC,cAAea,EAAmB9yF,MAClCmlF,aAAcE,EAAUrlF,MACxButF,QAASA,EAAQvtF,MACjBitF,QAASA,EAAQjtF;AAGnBwc,IAAU,KACR,MAAM01E,EAAuB5F,GAAiBtyE,YAAY1a,GACpD6yF,EAAwBzC,GAAkB11E,YAAY1a,GACtD8yF,EAAqBf,GAAer3E,YAAY1a,GAChD+yF,EAAaX,GAAO13E,YAAY1a;AAEtC,OAAA2d,EAAAC,YAAAw0E,GAAAr0E,aAAA,CAAApG,MAEW,CACL,eACA,CACE,wBAAyB3X,EAAMugB,SAEjCvgB,EAAM2X,OACPzI,MACOlP,EAAMkP,OACT6jF,GAAU,CAGb/kF,IAAKA,IAAMoN,EAAMpN,MAAM6qC,EAAUn4C,OACjC+W,QAASA,IAAM2D,EAAM3D,QAAU2D,EAAM3D,QAAQohC,EAAUn4C,OAAMid,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAEvDpZ,EAAM43E,WAAWn6C,EAAUn4C,OAAMid,EAAAC,YAAA,QAAA,CAAAjG,MAAA,sBAAAuG,KAAA,YAAA,CAAAP,EAAAC,YAAAwyE,GAAAryE,EAAAA,WAG1B80E,EAAqB,CAAAhqC,OACjB7oD,EAAMkyF,cACL92E,KAGZA,EAAM63E,QAAQp6C,EAAUn4C,OAAMid,EAAAC,YAAA,QAAA,CAAAjG,MAAA,sBAAAuG,KAAA,YAAA,CAE5B9C,EAAM,kBAAkBy9B,EAAUn4C,OAClC0a,EAAMwiC,KAAOxiC,EAAMwiC,KAAK/E,EAAUn4C,OAAMid,EAAAA,YAAAo0E,GAAAh0E,EAAAqe,WAEjCp3B,EACA8tF,EAAkB,CAAAtsE,MACfu/D,EAAUrlF,QACR0a,GAGZA,EAAM,iBAAiBy9B,EAAUn4C,SAEnC0a,EAAM83E,QAAQr6C,EAAUn4C,OACxB0a,EAAM+3E,QAAQt6C,EAAUn4C,SAG9BuN,OAAQA,IAAMmN,EAAMnN,OAASmN,EAAMnN,OAAO4qC,EAAUn4C,OAAMid,EAAAC,YAAA4W,EAAAjtB,SAAA,KAAA,CAAAoW,EAAAC,YAAAsrC,GAAA,KAAA,MAAAvrC,EAAAA,YAAAqvE,GAK/C4F,EACI,CACP3wD,QAAS7mB,EAAM,8BC3LtBq4E,GAAsBp8E,GAAa,CAC9CowC,MAAO,CACLngD,KAAMgd,QACN7M,SAAS,MAGRC,QACA+c,MACF,cAEUi/D,GAAa74E,IAAAA,CAAmB,CAC3CzQ,KAAM,aAENpK,MAAOyzF,KAEPj5E,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMuiB,WAAEA,GAAeM;AAevB,OAbAjU,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,cACA,CAAE,qBAAsB3X,EAAMynD,OAC9B52B,EAAWnwB,MACXV,EAAM2X,OACPzI,MACOlP,EAAMkP,OACJkM,KAIP,MCvBLu4E,GACGt6C,GAAY9hC,QAAO,CAACvX,EAAOiJ,KAChCjJ,EAAMiJ,GAAO,CACX3B,KAAM,CAACgd,QAAS/iB,OAAQE,QACxBgW,SAAS,GAEJzX,IACN,IAGC4zF,GACGv6C,GAAY9hC,QAAO,CAACvX,EAAOiJ,KAEhCjJ,EADmB,SAAWqK,EAAUA,WAACpB,IACtB,CACjB3B,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,MAEJzX,IACN,IAGC6zF,GACGx6C,GAAY9hC,QAAO,CAACvX,EAAOiJ,KAEhCjJ,EADkB,QAAUqK,EAAUA,WAACpB,IACrB,CAChB3B,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,MAEJzX,IACN,IAGC8zF,GAAU,CACdC,IAAKh0F,OAAOE,KAAK0zF,IACjBn9D,OAAQz2B,OAAOE,KAAK2zF,IACpBpvE,MAAOzkB,OAAOE,KAAK4zF;AAGrB,SAASG,GAAiB1sF,EAA4B9C,EAAcyE,GAClE,IAAI6kC,EAAoBxmC;AACxB,GAAW,MAAP2B,IAAuB,IAARA,EAAnB,CAGA,GAAIzE,EAAM,CAERspC,GAAc,IADKtpC,EAAKnE,QAAQiH,EAAM,MASxC,MANa,QAATA,IACFwmC,EAAY,KAAOA,GAKR,QAATxmC,GAA2B,KAAR2B,IAAsB,IAARA,GAKrC6kC,GAAc,IAAG7kC,IACV6kC,EAAUhmC,eAJRgmC,EAAUhmC,eAOrB,MAAMmsF,GAAoB,CAAC,OAAQ,QAAS,MAAO,SAAU,WAAY,WAE5DC,GAAgB78E,GAAa,CACxC88E,KAAM,CACJ7sF,KAAM,CAACgd,QAAS/iB,OAAQE,QACxBgW,SAAS,MAERk8E,GACHn9D,OAAQ,CACNlvB,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,SAERm8E,GACHpvE,MAAO,CACLld,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,SAERo8E,GACHO,UAAW,CACT9sF,KAAM/F,OACNkW,QAAS,KACTwkB,UAAY76B,GAAa6yF,GAAkBluF,SAAS3E,OAGnDsW,QACA+c,MACF,QAEU4/D,GAAOx5E,IAAAA,CAAmB,CACrCzQ,KAAM,OAENpK,MAAOk0F,KAEP15E,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM0sB,EAAUtxB,EAAAA,UAAS,KACvB,MAAM+sB,EAAmB;AAGzB,IAAInvB;AACJ,IAAKA,KAAQwsF,GACXA,GAAQxsF,GAAM/C,SAAQC,IACpB,MAAM9D,EAAoCV,EAAcwE,GAClDspC,EAAYkmD,GAAgB1sF,EAAM9C,EAAM9D;AAC1CotC,GAAWrX,EAAWztB,KAAK8kC;AAInC,MAAMwmD,EAAgB79D,EAAUvyB,MAAK4pC,GAAaA,EAAUn+B,WAAW;AAWvE,OATA8mB,EAAUztB,KAAK,CAEb,SAAUsrF,IAAkBt0F,EAAMm0F,KAClC,CAAE,SAAQn0F,EAAMm0F,QAASn0F,EAAMm0F,KAC/B,CAAE,UAASn0F,EAAMw2B,UAAWx2B,EAAMw2B,OAClC,CAAE,SAAQx2B,EAAMwkB,SAAUxkB,EAAMwkB,MAChC,CAAE,cAAaxkB,EAAMo0F,aAAcp0F,EAAMo0F,YAGpC39D;AAGT,MAAO,IAAM9rB,EAAAA,EAAE3K,EAAMkb,IAAK,CACxBvD,MAAO,CACLqjB,EAAQt6B,MACRV,EAAM2X,OAERzI,MAAOlP,EAAMkP,OACZkM,EAAM3D,gBCpIP88E,GAAY,CAAC,QAAS,MAAO,UAM7BC,GAAQ,CAAC,gBAAiB,eAAgB;AAEhD,SAASC,GAGNjuF,EAAgBkuF,GACjB,OAAOr7C,GAAY9hC,QAAO,CAACvX,EAAOiJ,KAEhCjJ,EADkBwG,EAAS6D,EAAUA,WAACpB,IACnByrF,IACZ10F,IACN,IAGL,MAAM20F,GAAe,IAAIJ,GAAW,WAAY,WAE1CK,GAAkBxzF,GAAauzF,GAAa5uF,SAAS3E,GACrDyzF,GAAaJ,GAA0C,SAAS,KAAO,CAC3EntF,KAAM/F,OACNkW,QAAS,KACTwkB,UAAW24D,OAGPE,GAAiB,IAAIP,MAAcC,IAEnCO,GAAoB3zF,GAAa0zF,GAAe/uF,SAAS3E,GACzD4zF,GAAeP,GAA8C,WAAW,KAAO,CACnFntF,KAAM/F,OACNkW,QAAS,KACTwkB,UAAW84D,OAGPE,GAAuB,IAAIV,MAAcC,GAAO,WAEhDU,GAAyB9zF,GAAa6zF,GAAqBlvF,SAAS3E,GACpE+zF,GAAoBV,GAAwD,gBAAgB,KAAO,CACvGntF,KAAM/F,OACNkW,QAAS,KACTwkB,UAAWi5D,OAGPpB,GAAU,CACdlmF,MAAO7N,OAAOE,KAAK40F,IACnBO,QAASr1F,OAAOE,KAAK+0F,IACrBK,aAAct1F,OAAOE,KAAKk1F,KAGtBG,GAAW,CACf1nF,MAAO,QACPwnF,QAAS,UACTC,aAAc;AAGhB,SAASrB,GAAiB1sF,EAA4B9C,EAAcyE,GAClE,IAAI6kC,EAAYwnD,GAAShuF;AACzB,GAAW,MAAP2B,EAAJ,CAGA,GAAIzE,EAAM,CAGRspC,GAAc,IADKtpC,EAAKnE,QAAQiH,EAAM,MAKxC,OADAwmC,GAAc,IAAG7kC,IACV6kC,EAAUhmC,eAGZ,MAAMytF,GAAgBl+E,GAAa,CACxCm+E,MAAOlxE,QACPmxE,UAAWnxE,QACX1W,MAAO,CACLtG,KAAM/F,OACNkW,QAAS,KACTwkB,UAAW24D,OAEVC,GACHO,QAAS,CACP9tF,KAAM/F,OACNkW,QAAS,KACTwkB,UAAW84D,OAEVC,GACHK,aAAc,CACZ/tF,KAAM/F,OACNkW,QAAS,KACTwkB,UAAWi5D,OAGVC,MACAz9E,QACA+c,MACF,QAEUihE,GAAO76E,IAAAA,CAAmB,CACrCzQ,KAAM,OAENpK,MAAOu1F,KAEP/6E,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM0sB,EAAUtxB,EAAAA,UAAS,KACvB,MAAM+sB,EAAmB;AAGzB,IAAInvB;AACJ,IAAKA,KAAQwsF,GACXA,GAAQxsF,GAAM/C,SAAQC,IACpB,MAAM9D,EAAiBV,EAAcwE,GAC/BspC,EAAYkmD,GAAgB1sF,EAAM9C,EAAM9D;AAC1CotC,GAAWrX,EAAWztB,KAAK8kC;AAYnC,OARArX,EAAUztB,KAAK,CACb,oBAAqBhJ,EAAMy1F,UAC3B,eAAgBz1F,EAAMw1F,MACtB,CAAE,SAAQx1F,EAAM4N,SAAU5N,EAAM4N,MAChC,CAAE,WAAU5N,EAAMo1F,WAAYp1F,EAAMo1F,QACpC,CAAE,iBAAgBp1F,EAAMq1F,gBAAiBr1F,EAAMq1F,eAG1C5+D;AAGT,MAAO,IAAM9rB,EAAAA,EAAE3K,EAAMkb,IAAK,CACxBvD,MAAO,CACL,QACAqjB,EAAQt6B,MACRV,EAAM2X,OAERzI,MAAOlP,EAAMkP,OACZkM,EAAM3D,gBClJAk+E,GAAU36E,GAAuB,WAAY,MAAO,WCQpD46E,GAA+Bv+E,GAAa,CACvDoO,OAAQ,CACNne,KAAM,CAAC/F,OAAQZ,OACf8W,aAASjY,GAEXiZ,SAAU,CACRnR,KAAM,CAACgd,QAAS/iB,OAAQZ,OACxB8W,SAAS,GAEX0nC,SAAU,CACR73C,KAAM,CAAC/F,QACPkW,QAAS,SAEX2nC,SAAU,CACR93C,KAAM,CAAC/F,QACPkW,QAAS,SAEXo+E,SAAU,CACRvuF,KAAM,CAAC/F,QACPkW,QAAS,aAEX9F,KAAMpQ,OACNu0F,SAAU,CACRxuF,KAAM/F,OACNkW,QAAS,UAEV,uBAEUs+E,GAAsBl7E,IAAAA,CAAmB,CACpDzQ,KAAM,sBAENpK,MAAO41F,KAEPz3D,MAAO,CACL,aAAc63D,KAAM,EACpB,cAAeC,KAAM,EACrB,aAAcC,KAAM,EACpB,aAAcC,KAAM,EACpB,aAAcC,KAAM,GAGtB57E,MAAOxa,EAAKsO,GAAY,IAAV6a,KAAEA,GAAM7a;AACpB,MAAM+nF,EAAe3sF,EAAAA,UAAS,IACrB/I,MAAMC,QAAQZ,EAAMyY,UACvBzY,EAAMyY,SAAS1S,SAAS,UACtB/F,EAAMyY,WAER69E,EAAc5sF,EAAAA,UAAS,IACpB/I,MAAMC,QAAQZ,EAAMyY,UACvBzY,EAAMyY,SAAS1S,SAAS,UACtB/F,EAAMyY,WAER89E,EAAc7sF,EAAAA,UAAS,IACpB/I,MAAMC,QAAQZ,EAAMyY,UACvBzY,EAAMyY,SAAS1S,SAAS,UACtB/F,EAAMyY,WAER+9E,EAAc9sF,EAAAA,UAAS,IACpB/I,MAAMC,QAAQZ,EAAMyY,UACvBzY,EAAMyY,SAAS1S,SAAS,UACtB/F,EAAMyY;AAGd,SAASg+E,IACPttE,EAAK,cAGP,SAASutE,IACPvtE,EAAK,cAGP,SAASwtE,IACPxtE,EAAK,cAGP,SAASytE,IACPztE,EAAK,eAsDP,OAnDAjM,IAAU,IAERS,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,2BACDgG,CAAAA,EAAAC,YAAA0D,GAAA,CAAA3J,MAAA,oCAAAc,SAIY49E,EAAa31F,MAAKiR,KACtB3R,EAAM2R,KAAIyP,QAAA,OAAAH,SAAA,EAAAonB,QAGPuuD,GAAYj5E,MAAAA,EAAAC,YAAA0D,GAAA,CAAA9d,IAAA,WAAAmU,MAAA,mCAAAc,SAMX69E,EAAY51F,MAAK8gC,QAAA,cAAAjkB,KAErBvd,EAAM61F,SAAQz0E,QAAA,OAAAinB,QAEXsuD,GAAWh5E,MAAAA,EAAAC,YAAA+3E,GAAA,CAAAnyF,IAAA,eAAA,MAAAma,EAAAC,YAAA,MAAA,CAAApa,IAAA,gBAAAmU,MAAA,iCAAAgG,CAAAA,EAAAC,YAAA0D,GAAA,CAAA7I,SAUR89E,EAAY71F,MAAK6c,KACrBvd,EAAMo/C,SAAQh+B,QAAA,OAAAinB,QAEXouD,GAAW94E,MAAAA,EAAAC,YAAA0D,GAAA,CAAA7I,SAIV+9E,EAAY91F,MAAK6c,KACrBvd,EAAMm/C,SAAQ/9B,QAAA,OAAAinB,QAEXquD,GAAW,YAOxB,MC3HEG,GAA6Bx/E,GAAa,CACrDy5B,WAAYvvC,OACZ0S,MAAO1S,OACP6pB,OAAQ7pB,OACRulB,WAAYvlB,OACZ8mC,QAASp+B,KACR,qBAEU6sF,GAAoBj8E,IAAAA,CAA2C,CAC1EzQ,KAAM,oBAENpK,MAAO62F,KAEP14D,MAAO,CACL2kB,MAAOA,KAAM,EACb,eAAgBi0C,KAAM,GAGxBv8E,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAMqtB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB17B,EAAO;AAEpF,SAASqoC,IACPlf,EAAK,SAGP,SAAS6tE,IACP7tE,EAAK,gBA8DP,OA3DAjM,IAAU,KACR,MAAM00C,KAAgBx2C,EAAM3D,UAAWzX,EAAMorB,QACvC0mB,KAAe12B,EAAM8mB,SAAUliC,EAAM8wC;AAE3C,OAAAnzB,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,uBACA,CACE,oCAAqC3X,EAAMqoC,SAE7C1M,EAAuBj7B,OACxBwO,MACO0sB,EAAsBl7B,MAAK2nC,QACzBA,GAAO,CAEfjtB,EAAM6mB,SAAOtkB,EAAAA,YAAA,MAAA,CAAAna,IAAA,UAAAmU,MAAA,iCAETyD,CAAAA,EAAM6mB,YAIV2vB,GAAUj0C,EAAAC,YAAAse,GAAA,CAAA14B,IAAA,UAAA4G,KAC4BpK,EAAM8mB,YAAU,CAAArP,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAApa,IACzCxD,EAAMorB,OAAMzT,MAAA,iCACnByD,CAAAA,EAAM3D,aAAezX,EAAMorB,YAKjC0mB,GAASn0B,EAAAC,YAAA,MAAA,CAAAjG,MAAA,gCAAA,CAEJyD,EAAM8mB,OAKkBvkB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,kBAAAiV,UAKXzY,EAAM8wC,WAAUx5B,SAClB,CACRgK,KAAM,CACJ/D,KAAMvd,EAAM8wC,WACZ1vB,QAAS,UAEZ,CAAA3J,QAAAA,IAAA,CAEC2D,EAAM8mB,cAlBGvkB,EAAAA,YAAA2D,GAAA,CAAA9d,IAAA,aAAA+Z,KAGJvd,EAAM8wC,WAAU1vB,QAAA,OAAAinB,QAEb2uD,GAAar5E,aAsB9B,MC9EEs5E,GAAoB5/E,GAAa,CAC5C6/E,aAAc,CAACv2F,MAAOuJ,UACtBuO,SAAU6L,QACVqtE,aAAc,KACdhvD,WAAYhiC,MACZk/E,MAAO,CAACp+E,OAAQF,QAChBkE,IAAK,KACLD,IAAK,KACL2xF,mBAAoB7yE,QACpBs7D,KAAM,CAACn+E,OAAQF,QACf61F,SAAU,CACR9vF,KAAM3G,MACN8W,QAASA,IAAM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEpC4/E,aAAc,CACZ/vF,KAAM/F,OACNkW,QAAS,YAEV;AAEI,SAAS6/E,GAAat3F,GAC3B,MAAMkuB,EAAU01D,KACV76D,EAAQR,GACZvoB,EACA,aACA,IACAiB,GAAKqE,EAAYrE,KAEb0wF,EAAejoF,EAAAA,UAAS,IACxB1J,EAAM2xF,aAAqBzjE,EAAQ4wD,KAAK9+E,EAAM2xF,cAC9C5oE,EAAMroB,MAAMnB,OAAS,EAAU2uB,EAAQ4wD,KAAK/1D,EAAMroB,MAAM,IACxDV,EAAMwF,IAAY0oB,EAAQ4wD,KAAK9+E,EAAMwF,KACrC7E,MAAMC,QAAQZ,EAAMk3F,cAAsBhpE,EAAQ4wD,KAAK9+E,EAAMk3F,aAAa,IAEvEhpE,EAAQ4wD,SAGXc,EAAOr3D,GACXvoB,EACA,YACAR,GACAyB,IACE,MAAMP,EAAa,MAALO,EAAYQ,OAAOR,GAAKitB,EAAQg1D,QAAQyO,EAAajxF;AAEnE,OAAOwtB,EAAQo1D,YAAYp1D,EAAQ20D,QAAQ30D,EAAQ4wD,OAAQp+E,OAE7DO,GAAKitB,EAAQg1D,QAAQjiF,KAGjB4+E,EAAQt3D,GACZvoB,EACA,aACAR,GACAyB,IACE,MAAMP,EAAa,MAALO,EAAYQ,OAAOR,GAAKitB,EAAQ8wD,SAAS2S,EAAajxF,OAC9Do+E,EAAO5wD,EAAQ20D,QAAQ30D,EAAQ2wD,aAAa3wD,EAAQ4wD,QAAS5wD,EAAQg1D,QAAQtD,EAAKl/E;AAExF,OAAOwtB,EAAQuzD,SAAS3C,EAAMp+E,MAEhCO,GAAKitB,EAAQ8wD,SAAS/9E,KAGlBo2F,EAAe3tF,EAAAA,UAAS,KAC5B,MAAMi4E,EAAQzzD,EAAQwzD,aAAa7B,EAAMn/E,OAEnC62F,EAAO5V,EAAMl6E;AAKnB,GAA2B,WAAvBzH,EAAMq3F,cAA6BE,EAAKh4F,OADxB,GAC8C,CAChE,MAAM8iF,EAAUkV,EAAKA,EAAKh4F,OAAS;AAEnC,IAAIi4F,EAAO;AACX,IAAK,IAAI1X,EAAM,EAAGA,GALA,GAKqByX,EAAKh4F,OAAQugF,IAClD0X,EAAKxuF,KAAKklB,EAAQmzD,QAAQgB,EAASvC,IAE/BA,EAAM,GAAM,IACd6B,EAAM34E,KAAKwuF,GACXA,EAAO,IAKb,OAAO7V;AAGT,SAAS8V,EAASF,EAAiB7rE,GACjC,OAAO6rE,EAAK19E,QAAOilE,GACV9+E,EAAMo3F,SAASrxF,SAASmoB,EAAQ0yD,SAAS9B,GAAMkD,YACrD56E,KAAI,CAAC03E,EAAM3oE,KACZ,MAAMuhF,EAAUxpE,EAAQ2yD,MAAM/B,GACxB6Y,GAAczpE,EAAQw0D,YAAY5D,EAAMe,EAAMn/E,OAC9Ck3F,EAAU1pE,EAAQu0D,UAAU3D,EAAM5wD,EAAQ2wD,aAAagB,EAAMn/E,QAC7Dm3F,EAAQ3pE,EAAQu0D,UAAU3D,EAAM5wD,EAAQ+wD,WAAWY,EAAMn/E,QACzDo3F,EAAS5pE,EAAQu0D,UAAU3D,EAAMe,EAAMn/E;AAE7C,MAAO,CACLo+E,KAAAA,EACA4Y,QAAAA,EACAK,UAAW7pE,EAAQR,OAAOoxD,EAAM,gBAChCc,KAAM1xD,EAAQg1D,QAAQpE,GACtBe,MAAO3xD,EAAQ8wD,SAASF,GACxBjtD,WAAYA,EAAWitD,GACvBkZ,YAAa7hF,EAAQ,GAAM,EAC3B8hF,UAAW9hF,EAAQ,GAAM,EACzB+hF,QAAShqE,EAAQu0D,UAAU3D,EAAMpzD,GACjCisE,WAAAA,EACAQ,SAAUR,IAAe33F,EAAMm3F,mBAC/BS,QAAAA,EACAjyD,WAAY5c,EAAMroB,MAAMwD,MAAKxD,GAASwtB,EAAQu0D,UAAU3D,EAAMp+E,KAC9Dm3F,MAAAA,EACAC,OAAAA,EACAM,UAAWlqE,EAAQR,OAAOoxD,EAAM,kBAKtC,MAAMuZ,EAAa3uF,EAAAA,UAAS,KAC1B,MAAM24E,EAAUn0D,EAAQi0D,YAAYwP,EAAajxF,OAC3C82F,EAAO;AACb,IAAK,IAAI1X,EAAM,EAAGA,GAAO,EAAGA,IAC1B0X,EAAKxuF,KAAKklB,EAAQmzD,QAAQgB,EAASvC;AAKrC,OAAO2X,EAAQD,EAFDtpE,EAAQ4wD,WAKlBwZ,EAAc5uF,EAAAA,UAAS,IAIpB+tF,EAHMJ,EAAa32F,MAAM+G,OAClBymB,EAAQ4wD,UAKlByZ,EAAc7uF,EAAAA,UAAS,IACpB2tF,EAAa32F,MAAM0G,KAAIowF,GACrBA,EAAKj4F,O9BlDX,SAAkB2uB,EAA2BxtB,GAClD,MAAMo+E,EAAO5wD,EAAQ0yD,SAASlgF;AAC9B,IAAIk/E,EAAOd,EAAKC,cACZyZ,EAAO,IAAI34F,KAAK+/E,EAAM,EAAG;AAE7B,GAAId,EAAO0Z,EACT5Y,GAAc,EACd4Y,EAAO,IAAI34F,KAAK+/E,EAAM,EAAG;IACpB,CACL,MAAM6Y,EAAK,IAAI54F,KAAK+/E,EAAO,EAAG,EAAG;AAC7Bd,GAAQ2Z,IACV7Y,GAAc,EACd4Y,EAAOC,GAIX,MAAMC,EAAWhzF,KAAKe,IAAIq4E,EAAKh/E,UAAY04F,EAAK14F,WAC1C64F,EAAWjzF,KAAKooD,KAAK4qC,EAAQ;AAEnC,OAAOhzF,KAAK64C,MAAMo6C,EAAW,GAAK,E8B+BTC,CAAQ1qE,EAASspE,EAAK,IAAM;AAIrD,SAAS3lE,EAAYnxB,GACnB,GAAIV,EAAMyY,SAAU,OAAO;AAE3B,MAAMqmE,EAAO5wD,EAAQ4wD,KAAKp+E;AAE1B,SAAIV,EAAMwF,MAAO0oB,EAAQqyD,QAAQryD,EAAQ4wD,KAAK9+E,EAAMwF,KAAMs5E,SACtD9+E,EAAMyF,MAAOyoB,EAAQqyD,QAAQzB,EAAM5wD,EAAQ4wD,KAAK9+E,EAAMyF,SAEtD9E,MAAMC,QAAQZ,EAAMk3F,eAAiBl3F,EAAMk3F,aAAa33F,OAAS,GAC3DS,EAAMk3F,aAAahzF,MAAKia,GAAK+P,EAAQu0D,UAAUv0D,EAAQ4wD,KAAK3gE,GAAI2gE,KAGxC,mBAAvB9+E,EAAMk3F,eACPl3F,EAAMk3F,aAAapY,KAM/B,MAAO,CACL6S,aAAAA,EACA2G,YAAAA,EACAD,WAAAA,EACAZ,QAAAA,EACA1uE,MAAAA,EACAsuE,aAAAA,EACAkB,YAAAA,GC3KG,MAAMM,GAA4BxhF,GAAa,CACpDpD,MAAO1S,OACPu3F,aAAcx0E,QACd8gB,SAAU,CAAC9gB,QAAS7iB,OAAQF,QAC5Bw3F,SAAUz0E,QACVwC,WAAY,CACVxf,KAAM/F,OACNkW,QAAS,qBAEXqxD,kBAAmB,CACjBxhE,KAAM/F,OACNkW,QAAS,gCAGRw/E,MACF,oBAEU+B,GAAmBn+E,IAAAA,CAA0C,CACxEzQ,KAAM,mBAENpK,MAAO64F,KAEP16D,MAAO,CACL,oBAAsB2gD,IAAkB,EACxC,eAAiBA,IAAiB,EAClC,cAAgBA,IAAiB,GAGnCtkE,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAM2qF,EAAUjhF,EAAAA,OAEVsgF,YAAEA,EAAWvvE,MAAEA,EAAKwvE,YAAEA,GAAgBjB,GAAYt3F,GAClDkuB,EAAU01D,KAEVmI,EAAa9+E,EAAAA,aACbisF,EAAYjsF,EAAAA,aACZksF,EAAYlsF,cAAW,GAEvB6Z,EAAapd,EAAAA,UAAS,IAClByvF,EAAUz4F,MAA2BV,EAAM8oE,kBAAzB9oE,EAAM8mB;AAGX,UAAnB9mB,EAAMolC,UAAwBrc,EAAMroB,MAAMnB,OAAS,IACrDwsF,EAAWrrF,MAAQqoB,EAAMroB,MAAM,GAC3BqoB,EAAMroB,MAAMnB,OAAS,IACvB25F,EAAUx4F,MAAQqoB,EAAMroB,MAAMqoB,EAAMroB,MAAMnB,OAAS;AAIvD,MAAM65F,EAAQ1vF,EAAAA,UAAS,KACrB,MAAMjE,EAAM,CAAC,SAAU,UAAUM,gBAAgB/F,EAAMolC,UAAY3jC,OAAOzB,EAAMolC,UAAYpsB,EAAAA;AAE5F,OAAO+P,EAAMroB,MAAMnB,QAAUkG;AAyD/B,SAAS4iC,EAAS3nC,GACO,UAAnBV,EAAMolC,SAjDZ,SAAuB1kC,GACrB,MAAM24F,EAASnrE,EAAQwyD,WAAWhgF;AAElC,GAAKqrF,EAAWrrF,MAGT,GAAKw4F,EAAUx4F,MAwBpBqrF,EAAWrrF,MAAQA,EACnBw4F,EAAUx4F,WAAQlB,EAClBupB,EAAMroB,MAAQ,CAACqrF,EAAWrrF;IA1BC,CAC3B,GAAIwtB,EAAQu0D,UAAU4W,EAAQtN,EAAWrrF,OAGvC,OAFAqrF,EAAWrrF,WAAQlB,OACnBupB,EAAMroB,MAAQ;AAELwtB,EAAQq0D,SAAS8W,EAAQtN,EAAWrrF,QAC7Cw4F,EAAUx4F,MAAQwtB,EAAQm1D,SAAS0I,EAAWrrF,OAC9CqrF,EAAWrrF,MAAQ24F,GAEnBH,EAAUx4F,MAAQwtB,EAAQm1D,SAASgW;AAGrC,MAAMnqD,EAAOhhB,EAAQ60D,QAAQmW,EAAUx4F,MAAOqrF,EAAWrrF,MAAO,QAC1D44F,EAAe,CAACvN,EAAWrrF;AAEjC,IAAK,IAAIjB,EAAI,EAAGA,EAAIyvC,EAAMzvC,IAAK,CAC7B,MAAM85F,EAAWrrE,EAAQmzD,QAAQ0K,EAAWrrF,MAAOjB;AACnD65F,EAAatwF,KAAKuwF,GAGpBD,EAAatwF,KAAKkwF,EAAUx4F,OAE5BqoB,EAAMroB,MAAQ44F,OAxBdvN,EAAWrrF,MAAQ24F,EACnBtwE,EAAMroB,MAAQ,CAACqrF,EAAWrrF,OA6C1B84F,CAAa94F,GACJV,EAAMolC,SAfnB,SAA0B1kC,GACxB,MAAMyV,EAAQ4S,EAAMroB,MAAM4mB,WAAU+3C,GAAanxC,EAAQu0D,UAAUpjB,EAAW3+D;AAE9E,IAAe,IAAXyV,EACF4S,EAAMroB,MAAQ,IAAIqoB,EAAMroB,MAAOA;IAC1B,CACL,MAAMA,EAAQ,IAAIqoB,EAAMroB;AACxBA,EAAM2mB,OAAOlR,EAAO,GACpB4S,EAAMroB,MAAQA,GAQd+4F,CAAgB/4F,GAEhBqoB,EAAMroB,MAAQ,CAACA,GAInB,OAhEAkjB,EAAAA,MAAM00E,GAAa,CAACrvF,EAAKq2B,KAClBA,IAEL65D,EAAUz4F,MAAQwtB,EAAQq0D,SAASt5E,EAAI,GAAG61E,KAAMx/C,EAAO,GAAGw/C,UA6DrD,IAAAnhE,EAAAC,YAAA,MAAA,CAAAjG,MAAA,uBAAA,CAED3X,EAAM+4F,UAAQp7E,EAAAA,YAAA,MAAA,CAAAna,IAAA,QAAAmU,MAAA,8BAAA,EAET3X,EAAM84F,cAAYn7E,EAAAA,YAAA,MAAA,CAAAna,IAAA,iBAAAmU,MAAA,4BAAA8oD,CAAAA,EAAAC,gBAEpB,OACC63B,EAAY73F,MAAM0G,KAAIowF,GAAI75E,EAAAC,YAAA,MAAA,CAAAjG,MAEjB,CACL,2BACA,uCACD,CACA6/E,QAGR75E,EAAAA,YAAAue,GAAA,CAAA9xB,KAEuB0c,EAAWpmB,OAAK,CAAA+W,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAA5F,IAE9BihF,EAAOz1F,IACP80F,EAAY53F,MAAM,GAAGo+E,MAAMj5E,WAAU8R,MAAA,6BAAA,EAGxC3X,EAAM84F,cAAgB5qE,EAAQ80D,cAAc57E,KAAIsyF,GAAO/7E,EAAAC,YAAA,MAAA,CAAAjG,MAE/C,CACL,2BACA,iCACD,CACA+hF,MAGHpB,EAAY53F,MAAM0G,KAAI,CAAC5G,EAAMf,KAC7B,MAAMo5C,EAAY,CAChB74C,MAAO,CACLqoC,QAASA,IAAMA,EAAQ7nC,EAAKs+E,OAE9Bt+E,KAAAA,EACAf,EAAAA;AAOF,OAJI25F,EAAM14F,QAAUF,EAAKmlC,aACvBnlC,EAAKqxB,YAAa,GAGpBlU,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,2BACA,CACE,qCAAsCnX,EAAKm3F,WAC3C,0CAA2Cn3F,EAAK23F,SAChD,qCAAsC33F,EAAKmlC,WAC3C,qCAAsCnlC,EAAKy3F,UAC3C,uCAAwCz3F,EAAKw3F,cAEhD,cACcx3F,EAAKqxB,gBAA4BryB,EAAfgB,EAAKk3F,SAAmB,EAGtD13F,EAAMm3F,qBAAuB32F,EAAKm3F,aAAUh6E,EAAAC,YAAAmc,GAAA,CAAAziB,SAEjC,CACRgK,KAAM,CACJ3J,MAAO,+BACP1D,OAAQzT,EAAKmlC,aAAcnlC,EAAK03F,SAAa13F,EAAKqxB,gBAE9CryB,EADAQ,EAAMiU,MAEVwE,SAAUjY,EAAKqxB,WACftU,MAAM,EACN0zB,QAAQ,EACRt/B,KAAMnR,EAAK43F,UACXh3E,QAAS5gB,EAAKqxB,WACVrxB,EAAK03F,QAAU,WAAa,OAC5B13F,EAAK03F,UAAY13F,EAAKmlC,WAAa,WAAa,OACpD0C,QAASA,IAAMA,EAAQ7nC,EAAKs+E,SAE/B,CAAArnE,QAAAA,IAAA,CAEC2D,EAAM0kE,MAAMjnC,IAAUl7B,EAAAC,YAAA0D,GACXu3B,EAAU74C,MACtB,wBC1MV25F,GAA6BtiF,GAAa,CACrDpD,MAAO1S,OACPmN,OAAQ,CAACnN,OAAQE,QACjBkhC,WAAYlhC,QACX,qBAEUm4F,GAAoB/+E,IAAAA,CAA2C,CAC1EzQ,KAAM,oBAENpK,MAAO25F,KAEPx7D,MAAO,CACL,oBAAsB2gD,IAAc,GAGtCtkE,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAM4f,EAAU01D,KACV76D,EAAQR,GAAgBvoB,EAAO,cAE/B65F,EAASnwF,EAAAA,UAAS,KACtB,IAAIo1E,EAAO5wD,EAAQo1D,YAAYp1D,EAAQ4wD;AAEvC,OAAOj+E,EAAY,IAAIuG,KAAI3H,IACzB,MAAMkS,EAAOuc,EAAQR,OAAOoxD,EAAM;AAGlC,OAFAA,EAAO5wD,EAAQi1D,aAAarE,GAErB,CACLntE,KAAAA,EACAjR,MAAOjB;AAkDb,OA7CAkK,EAAAA,aAAY,KACVof,EAAMroB,MAAQqoB,EAAMroB,OAASwtB,EAAQ8wD,SAAS9wD,EAAQ4wD,WAGxD5hE,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAAA,uBAAAzI,MAGC,CACLR,OAAQvN,EAAcnB,EAAM0O,UAC7B,CAAAiP,EAAAC,YAAA,MAAA,CAAAjG,MAAA,iCAGGkiF,CAAAA,EAAOn5F,MAAM0G,KAAI,CAACy4E,EAAOpgF,KACzB,MAAMq6F,EAAW,CACfr0E,OAAQsD,EAAMroB,QAAUjB,EACxBwU,MAAO8U,EAAMroB,QAAUjB,EAAIO,EAAMiU,WAAQzU,EACzCyhB,SAAS,EACTtP,KAAMkuE,EAAMluE,KACZyP,QAAS2H,EAAMroB,QAAUm/E,EAAMn/E,MAAQ,OAAS,OAChD2nC,QAASA,IAGX,SAAkB5oC,GAChB,GAAIspB,EAAMroB,QAAUjB,EAElB,YADA0pB,EAAK,oBAAqBJ,EAAMroB;AAGlCqoB,EAAMroB,MAAQjB,EARC4oC,CAAQ5oC;AAWzB,OAAO2b,EAAMykE,QAAQ,CACnBA,MAAAA,EACApgF,EAAAA,EACAO,MAAO85F,KACPn8E,EAAAA,YAAA2D,GAAAvD,aAAA,CAAAva,IAAA,SAGOs2F,GAER,eAMF,MCtEEC,GAA4B1iF,GAAa,CACpDpD,MAAO1S,OACPmN,OAAQ,CAACnN,OAAQE,QACjB+D,IAAK,KACLC,IAAK,KACLk9B,WAAYlhC,QACX,oBAEUu4F,GAAmBn/E,IAAAA,CAA0C,CACxEzQ,KAAM,mBAENpK,MAAO+5F,KAEP57D,MAAO,CACL,oBAAsByhD,IAAiB,GAGzCplE,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAM4f,EAAU01D,KACV76D,EAAQR,GAAgBvoB,EAAO,cAC/Bi6F,EAAQvwF,EAAAA,UAAS,KACrB,MAAMk2E,EAAO1xD,EAAQg1D,QAAQh1D,EAAQ4wD;AAErC,IAAIt5E,EAAMo6E,EAAO,IACbn6E,EAAMm6E,EAAO;AAEb5/E,EAAMwF,MACRA,EAAM0oB,EAAQg1D,QAAQh1D,EAAQ4wD,KAAK9+E,EAAMwF,OAGvCxF,EAAMyF,MACRA,EAAMyoB,EAAQg1D,QAAQh1D,EAAQ4wD,KAAK9+E,EAAMyF;AAG3C,IAAIq5E,EAAO5wD,EAAQo1D,YAAYp1D,EAAQ4wD;AAIvC,OAFAA,EAAO5wD,EAAQ20D,QAAQ/D,EAAMt5E,GAEtB3E,EAAY4E,EAAMD,EAAM,EAAGA,GAAK4B,KAAI3H,IACzC,MAAMkS,EAAOuc,EAAQR,OAAOoxD,EAAM;AAGlC,OAFAA,EAAO5wD,EAAQ20D,QAAQ/D,EAAM5wD,EAAQg1D,QAAQpE,GAAQ,GAE9C,CACLntE,KAAAA,EACAjR,MAAOjB;AAKbkK,EAAAA,aAAY,KACVof,EAAMroB,MAAQqoB,EAAMroB,OAASwtB,EAAQg1D,QAAQh1D,EAAQ4wD;AAGvD,MAAMob,EAAU/sF;AA+ChB,OA7CAo1B,EAAAA,WAAUoV,gBACF9yB,EAAQA,WACdq1E,EAAQt4F,IAAIu4F,eAAe,CAAE7sF,MAAO,cAGtC4P,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAAA,sBAAAzI,MAGC,CACLR,OAAQvN,EAAcnB,EAAM0O,UAC7B,CAAAiP,EAAAC,YAAA,MAAA,CAAAjG,MAAA,gCAGGsiF,CAAAA,EAAMv5F,MAAM0G,KAAI,CAACw4E,EAAMngF,KACvB,MAAMq6F,EAAW,CACf9hF,IAAK+Q,EAAMroB,QAAUk/E,EAAKl/E,MAAQw5F,OAAU16F,EAC5CimB,OAAQsD,EAAMroB,QAAUk/E,EAAKl/E,MAC7BuT,MAAO8U,EAAMroB,QAAUk/E,EAAKl/E,MAAQV,EAAMiU,WAAQzU,EAClDyhB,SAAS,EACTtP,KAAMiuE,EAAKjuE,KACXyP,QAAS2H,EAAMroB,QAAUk/E,EAAKl/E,MAAQ,OAAS,OAC/C2nC,QAASA,KACHtf,EAAMroB,QAAUk/E,EAAKl/E,MAIzBqoB,EAAMroB,MAAQk/E,EAAKl/E,MAHjByoB,EAAK,oBAAqBJ,EAAMroB;AAOtC,OAAO0a,EAAMwkE,OAAO,CAClBA,KAAAA,EACAngF,EAAAA,EACAO,MAAO85F,KACPn8E,EAAAA,YAAA2D,GAAAvD,aAAA,CAAAva,IAAA,SAGOs2F,GAER,eAMF,MCrIEM,GAAep/E,GAAuB,kBCoBtCq/E,GAAmBhjF,GAAa,CAC3CuxB,QAASrnC,OACT+4F,UAAWh2E,QACX6G,MAAO5pB,OACPg5F,WAAYj2E,WAET2vD,MACF,WAEUumB,GAAU3/E,IAAAA,CAAiC,CACtDzQ,KAAM,UAENpK,MAAOq6F,KAEP7/E,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMqtB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO;AAiE1F,OAhEAkd,IAAU,KACR,MAAM83D,EAAad,GAAOx5D,YAAY1a,GAChC+hC,KAAc/hC,EAAMmrB,QAAS/P,EAAM+P;AAEzC,OAAAxN,cAAAu2D,GAAAn2D,EAAAqe,WAES44C,EAAU,CAAA/gE,MACPjU,EAAM4oC,QAAOjxB,MACd,CACL,WACA,CACE,sBAAuB3X,EAAMs6F,UAC7B,2BAA4Bl/E,EAAM0oD,SAEpC9jE,EAAM2X,OACPzI,MACOlP,EAAMkP,QAAK,CAAAuI,QAAAA,IAEjB,EAACzX,EAAMu6F,YAAU58E,EAAAA,YAAA,MAAA,CAAAna,IAAA,SAAAmU,MAGR,CACLgkB,EAAuBj7B,OACxBwO,MACM,CACL0sB,EAAsBl7B,QACvB,CAECqhC,GAAQpkB,EAAAC,YAAAw8E,GAAA,CAAA52F,IAAA,gBAAA,CAAAiU,QAAAA,IAAA,CAEJ2D,EAAM+P,WAAanrB,EAAMmrB,SAI7B/P,EAAMgQ,QAAMzN,EAAAA,YAAA,MAAA,CAAAhG,MAAA,oBAERyD,CAAAA,EAAMgQ,aAIfzN,EAAAC,YAAA,MAAA,CAAAjG,MAAA,kBAAA,CAGGyD,EAAM3D,cAGR2D,EAAM0oD,SAAOnmD,EAAAC,YAAAmc,GAAA,CAAAziB,SAED,CACRgK,KAAM,CACJyvB,MAAM,EACN3vB,QAAS,UAEZ,CAAA3J,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,qBAAA,CAGGyD,EAAM0oD,qBAQb,MCrEE22B,GAAuBpjF,GAAa,CAsB/C+T,OAAQ,CACN9jB,KAAM/F,OACNkW,QAAS,iCAGRm+E,QACAiD,GAA0B,CAC3BxB,aAAc,cAEbhzF,EAAKs1F,KAA8B,CAAC,kBACpCt1F,EAAK01F,KAA6B,CAAC,kBACnCM,GAAiB,CAAElvE,MAAO,8BAE7BwX,WAAY,MACX,eAEU+3D,GAAc7/E,IAAAA,CAasB,CAC/CzQ,KAAM,cAENpK,MAAOy6F,KAEPt8D,MAAO,CACL,oBAAsB2gD,IAAc,EACpC,eAAiBA,IAAc,EAC/B,cAAgBA,IAAc,EAE9B,kBAAoBA,IAAc,GAGpCtkE,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAM4f,EAAU01D,MACV7wE,EAAEA,GAAMge,KAERhI,EAAQR,GACZvoB,EACA,kBACAR,GACAyB,GAAKqE,EAAYrE,KACjBA,GAAKjB,EAAMolC,SAAWnkC,EAAIA,EAAE,KAGxB60F,EAAWvtE,GAAgBvoB,EAAO,YAElC2oB,EAAWjf,EAAAA,UAAS,KACxB,MAAMhJ,EAAQwtB,EAAQ4wD,KAAK/1D,EAAMroB,QAAQ;AAEzC,OAAOA,GAASwtB,EAAQspB,QAAQ92C,GAASA,EAAQwtB,EAAQ4wD,UAGrDe,EAAQ7nE,EAAGA,IAACvW,OAAOzB,EAAM6/E,OAAS3xD,EAAQ8wD,SAAS9wD,EAAQ2wD,aAAal2D,EAASjoB,UACjFk/E,EAAO5nE,EAAAA,IAAIvW,OAAOzB,EAAM4/E,MAAQ1xD,EAAQg1D,QAAQh1D,EAAQo1D,YAAYp1D,EAAQuzD,SAAS94D,EAASjoB,MAAOm/E,EAAMn/E,WAE3Gi6F,EAAc1tF,cAAW,GACzBme,EAAS1hB,EAAAA,UAAS,IAClB1J,EAAMolC,UAAYrc,EAAMroB,MAAMnB,OAAS,EAClCwT,EAAE,oCAAqCgW,EAAMroB,MAAMnB,QAGpDwpB,EAAMroB,MAAM,IAAMwtB,EAAQspB,QAAQzuB,EAAMroB,MAAM,IAClDwtB,EAAQR,OAAOQ,EAAQ4wD,KAAK/1D,EAAMroB,MAAM,IAAK,yBAC7CqS,EAAE/S,EAAMorB,UAERzZ,EAAOjI,EAAAA,UAAS,KACpB,IAAIo1E,EAAO5wD,EAAQ4wD;AAMnB,OAJAA,EAAO5wD,EAAQozD,QAAQxC,EAAM,GAC7BA,EAAO5wD,EAAQuzD,SAAS3C,EAAMe,EAAMn/E,OACpCo+E,EAAO5wD,EAAQ20D,QAAQ/D,EAAMc,EAAKl/E,OAE3BwtB,EAAQR,OAAOoxD,EAAM,mBAGxB8b,EAAmBlxF,EAAAA,UAAS,IAAO,qBAAoBixF,EAAYj6F,MAAQ,WAAa,kBACxFm6F,EAAUnxF,EAAAA,UAAS,KACvB,MAAMo1E,EAAO5wD,EAAQ4wD,KAAK9+E,EAAMwF;AAEhC,OAAOxF,EAAMwF,KAAO0oB,EAAQspB,QAAQsnC,GAAQA,EAAO,QAE/Cgc,EAAUpxF,EAAAA,UAAS,KACvB,MAAMo1E,EAAO5wD,EAAQ4wD,KAAK9+E,EAAMyF;AAEhC,OAAOzF,EAAMyF,KAAOyoB,EAAQspB,QAAQsnC,GAAQA,EAAO,QAE/CrmE,EAAW/O,EAAAA,UAAS,KACxB,GAAI1J,EAAMyY,SAAU,OAAO;AAE3B,MAAM3N,EAAU;AAEhB,GAAuB,UAAnBgrF,EAASp1F,MACXoK,EAAQ9B,KAAS,OAAQ;IACpB,CACL,IAAI+xF,EAAQ7sE,EAAQ4wD;AAKpB,GAHAic,EAAQ7sE,EAAQ20D,QAAQkY,EAAOnb,EAAKl/E,OACpCq6F,EAAQ7sE,EAAQuzD,SAASsZ,EAAOlb,EAAMn/E,OAElCm6F,EAAQn6F,MAAO,CACjB,MAAMo+E,EAAO5wD,EAAQmzD,QAAQnzD,EAAQ2wD,aAAakc,IAAS;AAE3D7sE,EAAQqyD,QAAQsa,EAAQn6F,MAAOo+E,IAASh0E,EAAQ9B,KAAK,QAGvD,GAAI8xF,EAAQp6F,MAAO,CACjB,MAAMo+E,EAAO5wD,EAAQmzD,QAAQnzD,EAAQ+wD,WAAW8b,GAAQ;AAExD7sE,EAAQqyD,QAAQzB,EAAMgc,EAAQp6F,QAAUoK,EAAQ9B,KAAK,SAIzD,OAAO8B;AAOT,SAAS4rF,IACH7W,EAAMn/E,MAAQ,GAChBm/E,EAAMn/E,SAENk/E,EAAKl/E,QACLm/E,EAAMn/E,MAAQ,EACds6F,EAAapb,EAAKl/E,QAEpBu6F,EAAcpb,EAAMn/E,OAGtB,SAAS+1F,IACH5W,EAAMn/E,MAAQ,EAChBm/E,EAAMn/E,SAENk/E,EAAKl/E,QACLm/E,EAAMn/E,MAAQ,GACds6F,EAAapb,EAAKl/E,QAEpBu6F,EAAcpb,EAAMn/E,OAGtB,SAASw6F,IACPpF,EAASp1F,MAAQ,QAGnB,SAASk2F,IACPd,EAASp1F,MAA2B,WAAnBo1F,EAASp1F,MAAqB,QAAU,SAG3D,SAASi2F,IACPb,EAASp1F,MAA2B,SAAnBo1F,EAASp1F,MAAmB,QAAU,OAGzD,SAASu6F,EAAev6F,GACC,WAAnBo1F,EAASp1F,OAAoBk2F,IAEjCztE,EAAK,eAAgBzoB,GAGvB,SAASs6F,EAAct6F,GACE,SAAnBo1F,EAASp1F,OAAkBi2F,IAE/BxtE,EAAK,cAAezoB,GA8HtB,OA3HAkjB,EAAAA,MAAMmF,GAAO,CAAC9f,EAAKq2B,KACjB,MAAM1wB,EAASsf,EAAQ4wD,KAAKx5E,EAAYg6B,GAAQA,EAAO//B,OAAS,IAC1DsP,EAAQqf,EAAQ4wD,KAAKx5E,EAAY2D,GAAKA,EAAI1J,OAAS,IACnD47F,EAAWjtE,EAAQ8wD,SAASnwE,GAC5BusF,EAAUltE,EAAQg1D,QAAQr0E;AAE5BssF,IAAatb,EAAMn/E,QACrBm/E,EAAMn/E,MAAQy6F,EACdF,EAAcpb,EAAMn/E,QAGlB06F,IAAYxb,EAAKl/E,QACnBk/E,EAAKl/E,MAAQ06F,EACbJ,EAAapb,EAAKl/E,QAGpBi6F,EAAYj6F,MAAQwtB,EAAQq0D,SAAS3zE,EAAQC,MAG/CqO,IAAU,KACR,MAAMm+E,EAAcb,GAAQ9/E,YAAY1a,GAClCs7F,EAA0BvF,GAAoBr7E,YAAY1a,GAC1Du7F,EAAwBzE,GAAkBp8E,YAAY1a,GACtDw7F,EAAuBxC,GAAiBt+E,YAAY1a,GACpDy7F,EAAwBp3F,EAAKu1F,GAAkBl/E,YAAY1a,GAAQ,CAAC,eACpE07F,EAAuBr3F,EAAK21F,GAAiBt/E,YAAY1a,GAAQ,CAAC,eAElEmwF,EAAc,CAClB/kE,OAAQA,EAAO1qB,MACfomB,WAAY8zE,EAAiBl6F;AAG/B,OAAAid,cAAA68E,GAAAz8E,EAAAqe,WAESi/D,EAAW,CAAA1jF,MACT,CACL,gBACC,kBAAiBm+E,EAASp1F,QAC3B,CACE,2BAA4BV,EAAM+4F,UAEpC/4F,EAAM2X,OACPzI,MACOlP,EAAMkP,QACL,CACPic,MAAOA,IAAM/P,EAAM+P,WAASxN,EAAAA,YAAA,MAAA,CAAAhG,MAAA,wBAAA,CAEtB5E,EAAE/S,EAAMmrB,SAGdC,OAAQA,IAAMhQ,EAAMgQ,OAAMzN,EAAAA,YAAAoc,GAAA,CAAAziB,SAEZ,CACRw/E,kBAAmB,IAAK3G,KACzB,CAAA14E,QAAAA,IAEC2D,CAAAA,EAAMgQ,SAAS+kE,MAAYxyE,EAAAA,YAAAm5E,GAAA/4E,aAAA,CAAAva,IAAA,UAKxB+3F,EACApL,EAAW,CAAA9nD,QACa,UAAnBytD,EAASp1F,MAAoBw6F,OAAc17F,IAC5C,IACJ4b,EACH3D,aAASjY,IAIfiY,QAASA,IAAAkG,EAAAC,YAAA4W,WAAA7W,KAAAA,CAAAA,cAAAo4E,GAAAh4E,EAAAqe,WAGEk/D,EAAuB,CAAA7iF,SACjBA,EAAS/X,MAAKiR,KAClBA,EAAKjR,MAAK,eACFg2F,EAAW,eACXD,EAAW,gBACVG,EAAY,eACbD,IAAWh5E,MAAAA,EAAAC,YAAAsb,GAAA,CAAAnE,aAAA,GAAA,CAAAtd,QAAAA,IAIxBq+E,CAAmB,WAAnBA,EAASp1F,MAAkBid,EAAAC,YAAAg8E,GAAA77E,aAAA,CAAAva,IAAA,sBAGpBi4F,EAAqB,CAAA94D,WAChBk9C,EAAMn/E,MAAK,sBAAA60C,CAAAA,GAAXsqC,EAAMn/E,MAAK60C,EACC0lD,GAAaz1F,IAC7Bq1F,EAAQn6F,MAAK+E,IACbq1F,EAAQp6F,QAEdo1F,MAAmB,SAAnBA,EAASp1F,MAAgBid,EAAAC,YAAAo8E,GAAAj8E,aAAA,CAAAva,IAAA,qBAGpBk4F,EAAoB,CAAA/4D,WACfi9C,EAAKl/E,MAAK,sBAAA60C,CAAAA,GAAVqqC,EAAKl/E,MAAK60C,EACEylD,GAAYx1F,IAC5Bq1F,EAAQn6F,MAAK+E,IACbq1F,EAAQp6F,QAAK,MAAAid,cAAAq7E,GAAAj7E,EAAAA,WAAA,CAAAva,IAAA,qBAKdg4F,EAAoB,CAAA74D,WACf5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAAsqC,MACLA,EAAMn/E,MAAK,iBAAA60C,CAAAA,GAAXsqC,EAAMn/E,MAAK60C,EAEV0lD,GAAarb,KADfA,EAAKl/E,MAAK,gBAAA60C,CAAAA,GAAVqqC,EAAKl/E,MAAK60C,EAETylD,GAAYx1F,IACtBq1F,EAAQn6F,MAAK+E,IACbq1F,EAAQp6F,QAEjB,WAIPojE,QAAS1oD,EAAM0oD,aAMhB,MC1TE63B,GAAuBtkF,GAAa,CAC/CukF,WAAYr6F,OACZqnC,QAASrnC,OACT0S,MAAO1S,OACPgc,KAAMH,GACNohB,MAAOj9B,OACP6zF,QAAS,CACP9tF,KAAM/F,OACNkW,QAAS,UAEXokF,SAAUt6F,OACV4pB,MAAO5pB,OACPoQ,KAAMpQ,OACNu6F,UAAW,CACTx0F,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEX+0B,KAAMjrC,OACNqO,GAAIrO,UAEDmW,QACAsiB,QACAqN,GAAc,CAAEx+B,UAAMrJ,OACtB6xB,MACF,eAEU0qE,GAAclhF,IAAAA,CAAqC,CAC9DzQ,KAAM,cAENpK,MAAO27F,KAEPx9D,MAAO,CACL,eAAiBiN,IAAa,GAGhC5wB,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChC27B,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,aACpFs6B,gBAAEA,GAAoBD,GAAar6B,IACnCm8C,eAAEA,GAAmBF;AAE3B,SAAS+/C,EAAe5wD,GACtBjiB,EAAK,eAAgBiiB,GAyHvB,OAtHAluB,IAAU,KACR,MAAM++E,KAAgB7gF,EAAM0oD,UAAW9jE,EAAM47F,YACvCM,KAAiB9gF,EAAMygF,WAAY77F,EAAM67F,UACzC95D,KAAc3mB,EAAM+P,QAASnrB,EAAMmrB,OACnCyJ,KAAaxZ,EAAMzJ,OAAQ3R,EAAM2R,MACjCwqF,KAAc/gF,EAAMghF,OAASp8F,EAAMw+B,OAASx+B,EAAMud,MAClD1U,EAAO7I,EAAM6I,OAAS7I,EAAMw+B,MAAQ,IAAM;AAEhD,OAAA7gB,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,gBACA,CACE,CAAE,kBAAiB3X,EAAMo1F,YAAY,GAEvCtiE,EAAapyB,MACbi7B,EAAuBj7B,MACvBy7C,EAAez7C,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtB45B,EAAgB55B,MAChBV,EAAMkP,QAGNitF,CAAAA,GAAQx+E,EAAAC,YAAA,MAAA,CAAApa,IAAA,QAAAmU,MAAA,wBAAA,CAEHyD,EAAMghF,MAeQz+E,EAAAA,YAAAoc,GAAA,CAAAv2B,IAAA,iBAAA8T,SAKH,CACR0mB,KAAM,CACJJ,IAAK59B,EAAMw+B,MACX9vB,OAAQ7F,GAEV6+B,MAAO,CACL7+B,KAAAA,EACA0U,KAAMvd,EAAMud,QAEf,CAAA9F,QAAAA,IAAA,CAEC2D,EAAMghF,WA/BEz+E,cAAA6W,EAAAA,SAAA,KAAA,CAERx0B,EAAMw+B,MAAK7gB,EAAAA,YAAAqgB,GAAA,CAAAx6B,IAAA,QAAAo6B,IAGH59B,EAAMw+B,MAAK9vB,OACR7F,GAAI,MAEb7I,EAAMud,KAAII,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,OAAAyQ,MAGFjU,EAAMiU,MAAKpL,KACZA,EAAI0U,KACJvd,EAAMud,MAAI,WAEjB/d,MAsBV08F,GAAWv+E,EAAAA,YAAA,MAAA,CAAAna,IAAA,WAAAmU,MAAA,2BAAA,CAEPyD,EAAMygF,cAAgB77F,EAAM67F,WAIhC95D,GAAQpkB,EAAAC,YAAA,MAAA,CAAApa,IAAA,QAAAmU,MAAA,wBAAA,CAEJyD,EAAM+P,WAAanrB,EAAMmrB,QAI7ByJ,GAAOjX,EAAAC,YAAA,MAAA,CAAApa,IAAA,OAAAmU,MAAA,sBAAAzI,MAIE,CACLgrB,SAAU/4B,EAAcnB,EAAM87F,aAC/B,CAEC1gF,EAAMzJ,UAAY3R,EAAM2R,OAI5ByJ,EAAM3D,SAAOkG,EAAAC,YAAA,MAAA,CAAApa,IAAA,UAAAmU,MAAA,0BAETyD,CAAAA,EAAM3D,YAIVwkF,GAAUt+E,EAAAC,YAAA,MAAA,CAAApa,IAAA,UAAAmU,MAAA,0BAAAgG,CAAAA,EAAAC,YAAAmc,GAAA,CAAAziB,SAGI,CACRgK,KAAM,CACJ3J,MAAO,4BACP1D,MAAOjU,EAAMiU,MACbtC,KAAM3R,EAAM47F,cAEf,CAAAnkF,QAAAA,IAAA,CAGC2D,EAAM0oD,UAAU,CAAE9jE,MAAO,CAAEqoC,QAAS2zD,MAAkBr+E,EAAAC,YAAA0D,GAAA,CAAA+mB,QACpC2zD,GACjB,gBASR,MC/LEK,GAA+BhlF,GAAa,IACpDK,QACAg6C,MACF,uBAEU4qC,GAAsBzhF,IAAAA,CAAmB,CACpDzQ,KAAM,sBAENpK,MAAOq8F,KAEP7hF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMiuF,EAAiBrkF,SAAOskF;AAE9B,IAAKD,EAAgB,MAAM,IAAIpkF,MAAM;AAErC,MAAMy5C,WAAEA,EAAUj8B,aAAEA,GAAiBg8B,GAAQ3xD,EAAOu8F,EAAe52D;AAqBnE,OAnBAzoB,IAAU,IAAAS,EAAAC,YAAAgc,GAAA,CAAAjE,aAC0BA,GAAY,CAAAle,QAAAA,IAAAmpB,CAAAA,iBAAAjjB,EAAAA,YAAA,MAAA,CAAAhG,MAEnC,CACL,yBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OAGZkM,CAAAA,EAAM3D,SAAWm6C,EAAWlxD,OAAKid,EAAAC,YAAA,MAAA,CAAAjG,MAAA,mCAAA,CAE7ByD,EAAM3D,gBAEX2rC,CAAAA,CAAAA,EAAAA,MANQm5C,EAAe52D,WAAWjlC,cAWlC,MCfE+7F,GAAgCplF,GAAa,CACxDpD,MAAO1S,OACPimD,WAAY,CACVlgD,KAAM8V,GACN3F,QAAS,WAEX8vC,aAAc,CACZjgD,KAAM8V,GACN3F,QAAS,aAEXilF,YAAap4E,QACbzY,UAAWyY,QACX8mC,OAAQ9mC,QACR2sB,OAAQ,CACN3pC,KAAM,CAACgd,QAASvkB,QAChB0X,SAAS,GAEXvK,SAAUoX,WAEP5M,MACF,wBAEUilF,GAAuB9hF,IAAAA,CAA8C,CAChFzQ,KAAM,uBAEN6zB,WAAY,CAAEwS,OAAAA,IAEdzwC,MAAOy8F,KAEPjiF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMiuF,EAAiBrkF,SAAOskF;AAE9B,IAAKD,EAAgB,MAAM,IAAIpkF,MAAM;AAErC,MAAMwjB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB17B,EAAO,SAE9E64C,EAAYnvC,EAAAA,UAAS,KAAO,CAChC69C,aAAcvnD,EAAMunD,aACpB9uC,SAAU8jF,EAAe9jF,SAAS/X,MAClC8jF,SAAU+X,EAAe52D,WAAWjlC,MACpC8mD,WAAYxnD,EAAMwnD,WAClBt6C,SAAUlN,EAAMkN;AAyClB,OAtCAgQ,IAAU,IAAA0jB,EAAAA,eAAAjjB,EAAAC,YAAA,SAAA,CAAAjG,MAEC,CACL,0BACA,CACE,kCAAmC4kF,EAAe52D,WAAWjlC,MAC7D,qCAAsCV,EAAM6L,UAC5C,kCAAmC7L,EAAMorD,QAE3CzvB,EAAuBj7B,MACvBV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtBV,EAAMkP,OACP5H,KAAA,SAAAkhC,SAEU+zD,EAAe9jF,SAAS/X,OAAS,OAAIlB,EAASiZ,SAC9C8jF,EAAe9jF,SAAS/X,MAAK,gBACxB67F,EAAe52D,WAAWjlC,MAAK2nC,QACpCroC,EAAMkN,cAAmC1N,EAAxB+8F,EAAe32D,QAAkB,CAAAjoB,EAAAC,YAAA,OAAA,CAAAjG,MAAA,oCAAA,MAK3DyD,EAAM3D,UAAUohC,EAAUn4C,QAEzBV,EAAM08F,aAAW/+E,EAAAA,YAAA,OAAA,CAAAhG,MAAA,iCAAA,CAGdyD,EAAM0oD,QAAU1oD,EAAM0oD,QAAQjrB,EAAUn4C,OAAMid,EAAAC,YAAA8pB,GAAA,CAAAnqB,KAC9Bg/E,EAAe52D,WAAWjlC,MAAQV,EAAMunD,aAAevnD,EAAMwnD,YAAe,YAGjG3mB,EAAAA,iBAAA,UAbU7gC,EAAMixC,YAiBd,MCnGE2rD,GAA2BvlF,GAAa,CACnD8T,MAAO5pB,OACPoQ,KAAMpQ,OACNqnC,QAASrnC,UAEN2/B,QACAqE,QACA1J,QACApH,QACAgoE,QACAJ,MACF,mBAQUQ,GAAkBhiF,IAAAA,CAAyC,CACtEzQ,KAAM,kBAENpK,MAAO48F,KAEPz+D,MAAO,CACL,iBAAmBl1B,IAA4B,GAGjDuR,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM06D,EAAYxjC,GAAaxlC,EAAOw8F,KAChC7gE,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB17B,EAAO,YAC9EqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAW/7B,GAChC6xB,EAAanoB,EAAQA,UAAC,IAAMs/D,GAAWvwD,SAAS/X,OAASV,EAAMyY,WAE/DqkF,EAAkBpzF,EAAAA,UAAS,IAAMs/D,EAAUl0C,MAAMtO,MAAM9lB,MAAM6W,QAAiB,CAACzN,EAAKtJ,EAAM2V,KAC1F6yD,EAAUl0C,MAAMiR,SAASrlC,MAAMqF,SAASvF,EAAK0kB,KAAKpb,EAAId,KAAKmN,GACxDrM,IACN,MAEGizF,EAAmBrzF,EAAAA,UAAS,KAChC,MAAMyM,EAAQ6yD,EAAUl0C,MAAMtO,MAAM9lB,MAAM4mB,WAAU9mB,GAAQA,EAAK0kB,KAAO8jD,EAAU9jD;AAClF,OAAQ8jD,EAAUrjC,WAAWjlC,OAC3Bo8F,EAAgBp8F,MAAMwD,MAAK84F,GAAiBA,EAAgB7mF,GAAU,OAGpE8mF,EAAkBvzF,EAAAA,UAAS,KAC/B,MAAMyM,EAAQ6yD,EAAUl0C,MAAMtO,MAAM9lB,MAAM4mB,WAAU9mB,GAAQA,EAAK0kB,KAAO8jD,EAAU9jD;AAClF,OAAQ8jD,EAAUrjC,WAAWjlC,OAC3Bo8F,EAAgBp8F,MAAMwD,MAAK84F,GAAiBA,EAAgB7mF,IAAW;AA6D3E,OA1DA8C,UAAQujF,GAAuBxzB,GAE/B9rD,IAAU,KACR,MAAM0X,KAAaxZ,EAAMzJ,OAAQ3R,EAAM2R,MACjCowB,KAAc3mB,EAAM+P,QAASnrB,EAAMmrB,OAEnC+xE,EAA2BP,GAAqBjiF,YAAY1a,GAC5Dm9F,EAA0Bb,GAAoB5hF,YAAY1a;AAEhE,OAAA2d,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,oBACA,CACE,4BAA6BqxD,EAAUrjC,WAAWjlC,MAClD,mCAAoCq8F,EAAiBr8F,MACrD,kCAAmCu8F,EAAgBv8F,MACnD,8BAA+BmxB,EAAWnxB,OAE5Cs7B,EAAet7B,MACfi7B,EAAuBj7B,MACvBV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtBV,EAAMkP,QACP,CAAAuI,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAGQ,CACL,+BACG0pB,EAAiB3gC,QACrB,MAGDqhC,GAAQpkB,EAAAA,YAAAg/E,GAAA5+E,EAAAA,WAAA,CAAAva,IAAA,SAGD05F,GAAwB,CAAAzlF,QAAAA,IAE3B2D,CAAAA,EAAM+P,MAAQ/P,EAAM+P,QAAUnrB,EAAMmrB,SAIxCyJ,GAAOjX,cAAA2+E,GAAAv+E,EAAAA,WAAA,CAAAva,IAAA,QAGA25F,GAAuB,CAAA1lF,QAAAA,IAE1B2D,CAAAA,EAAMzJ,KAAOyJ,EAAMzJ,OAAS3R,EAAM2R,QAItCyJ,EAAM3D,kBAKP,MC3GE+kF,GAAwD3kF,OAAOC,IAAI,6BAE1E4sB,GAAkB,CAAC,UAAW,YAAa,QAAS,UAI7C04D,GAA4B/lF,GAAa,CACpD5P,KAAM6c,WAEH6gB,QACAy3D,QACAvrE,KAEHjQ,QAAS,CACP9Z,KAAM/F,OACNkW,QAAS,UACTwkB,UAAYh7B,GAAWyjC,GAAgB3+B,SAAS9E,KAEjD,oBAEUo8F,GAAmBxiF,IAAAA,CAAmB,CACjDzQ,KAAM,mBAENpK,MAAOo9F,KAEPj/D,MAAO,CACL,oBAAsBl1B,IAAiB,GAGzCuR,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrBw3B,GAAS9lC,EAAOw8F;AAEhB,MAAM1pE,aAAEA,GAAiBgB,GAAa9zB,GAEhCs9F,EAAe5zF,YAAS,IAAM1J,EAAMohB,SAAY,+BAA8BphB,EAAMohB;AAoC1F,OAlCAhJ,GAAgB,CACdykF,gBAAiB,CACfj0D,QAAStK,EAAAA,MAAMt+B,EAAO,WACtBunD,aAAcjpB,EAAAA,MAAMt+B,EAAO,gBAC3BiU,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpBs9B,MAAOgB,EAAAA,MAAMt+B,EAAO,SACpBmhC,UAAW7C,EAAAA,MAAMt+B,EAAO,aACxBwnD,WAAYlpB,EAAAA,MAAMt+B,EAAO,cACzB6L,UAAWyyB,EAAAA,MAAMt+B,EAAO,aACxB08F,YAAap+D,EAAAA,MAAMt+B,EAAO,eAC1BkN,SAAUoxB,EAAAA,MAAMt+B,EAAO,YACvBixC,OAAQ3S,EAAAA,MAAMt+B,EAAO,UACrBihB,QAASqd,EAAAA,MAAMt+B,EAAO,WACtBorD,OAAQ9sB,EAAAA,MAAMt+B,EAAO,aAIzBkd,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,qBACA,CACE,2BAA4B3X,EAAMyH,KAClC,2BAA4BzH,EAAM87B,MAEpChJ,EAAapyB,MACb48F,EAAa58F,MACbV,EAAM2X,OACPzI,MACOlP,EAAMkP,OACJkM,KAIP,MClEEmiF,GAAgBlmF,GAAa,CACxC2b,IAAK1O,QACL4b,OAAQ5b,QACRmd,SAAUnd,QACVK,OAAQL,QACRlZ,SAAU,CACR9D,KAAM/F,OACNkW,QAAS,cAEX+e,OAAQlS,QACRqe,WAAY,CACVr7B,KAAMgd,QACN7M,SAAS,MAGRpT,EAAKssC,GAAc,CAAElrB,QAAQ,IAAS,CAAC,gBACvClB,QACAsQ,GAAoB,CAAE/N,WAAY,oBACpC,QAEU02E,GAAO3iF,IAAAA,CAAmB,CACrCzQ,KAAM,OAENpK,MAAOu9F,KAEPp/D,MAAO,CACL,oBAAsBz9B,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMya,EAAQR,GAAgBvoB,EAAO,cAC/B0O,EAASzB,aAAW,IACpBqY,EAAmBtN,EAAAA,OAEnBsL,UAAEA,GAAcH,IAAkB/I,IACjCA,EAAQ7a,SACbmP,EAAOhO,MAAQ0Z,EAAQ,GAAGvT,OAAOoW,iBAG7BwgF,EAAc/zF,EAAAA,UAAS,IAAM1J,EAAMgzB,KAAOhzB,EAAMykB,WAEhDmC,EAAWld,EAAAA,UAAS,MACnB+zF,EAAY/8F,OAEVV,EAAMoL,SAAS9K,MAAM,KAAK8C,UAG7Bs6F,EAAch0F,EAAAA,UAAS,MACtB+zF,EAAY/8F,QAEVV,EAAMoL,SAAS9K,MAAM,KAAK,IAAM;AAGzC0nB,IAAe,IAAMhoB,EAAMgzB,MAAK,KAC9B,MAAMrO,EAASM,GAAc,CAC3BC,GAAIllB,EAAMoK,KACVoa,MAAO9a,EAAQA,UAAC,IAAMyL,SAASnV,EAAMwkB,MAAO,MAC5CoC,SAAAA,EACAK,WAAYvd,EAAAA,UAAS,IAAM1J,EAAM2kB,OAASjW,EAAOhO,MAAQ,GAAK,IAC9DwmB,YAAaxd,EAAAA,UAAS,IAAMgF,EAAOhO,MAAQ,KAC3C+kB,OAAQ/b,EAAQA,UAAC,IAAM1J,EAAMgzB,KAAOjK,EAAMroB,QAC1C+jB,SAAU6Z,EAAAA,MAAMt+B,EAAO;AAGzB2J,EAAAA,aAAY,KACV2b,EAAiB5kB,MAAQikB,EAAOW,iBAAiB5kB;AAIrD,MAAMi9F,EAAU3lF,EAAAA;AAiDhB,OA/CAkF,IAAU,KACR,MAAM48E,EAAWx4E,GAAK5G,YAAY1a;AAElC,OAAA2d,EAAAA,YAAA,MAAA,CAAA3F,IAEU2lF,EAAOhmF,MACN,CACL,QACA,CACE,kBAAmB3X,EAAMykB,SACzB,eAAgBzkB,EAAMgzB,IACtB,kBAAmBhzB,EAAMyhC,SACzB,gBAAiBzhC,EAAMw2B,OACvB,CAAE,UAAS5P,EAASlmB,SAAU+8F,EAAY/8F,MAC1C,CAAE,UAASg9F,EAAYh9F,SAAU+8F,EAAY/8F,OAE/CV,EAAM2X,OACPzI,MACM,CACLlP,EAAMgzB,IAAM,IACP1N,EAAiB5kB,OAClB,CACFgO,OAAQ,UACRD,WAAOjP,GAETQ,EAAMkP,QACP,CAAAyO,EAAAC,YAAA,MAAA,CAAAjG,MAAA,oBAAAgG,CAAAA,EAAAC,YAAAse,GAAA,CAAAgE,OAIYlgC,EAAMkgC,OAAMpZ,WACR9mB,EAAM8mB,YAAU,CAAArP,QAAAA,IAAAmpB,CAAAA,EAAAA,eAAAjjB,EAAAA,YAAA2D,GAAAvD,EAAAA,WAAA,CAAA/F,IAIrBsL,GACDw2E,EAAQ,CAAAr0E,YACJjmB,EAAS4L,cACP5L,IACD4b,GAAKgoC,CAAAA,CAAAA,EAAAhjB,MALNpgC,EAAMylB,oBAapB,MCnGEm4E,GAAsBvmF,GAAa,CAC9C8mD,MAAO75C,QACPyH,QAASzH,QACTu5E,kBAAmB,CACjBv2F,KAAM/F,OACNkW,QAAS,kCAEXqmF,cAAe,CACbx2F,KAAM/F,OACNkW,QAAS,8BAEXsmF,UAAWz5E,QACX8gB,SAAU9gB,QACV05E,SAAU,CACR12F,KAAM,CAACgd,QAAS7iB,OAAQF,QACxBkW,SAAS,EACTwkB,UAAYh7B,GAEK,kBAANA,GACP,CAAC,IAAM,MAAM8E,SAAStE,OAAOR,QAKhCm3C,GAAgB,CAAEvH,YAAa,UAElClO,WAAY,CACVr7B,KAAM,CAAC3G,MAAOZ,QACd0X,QAAUzX,GAAeA,EAAMolC,SAAW,GAAK,KAC/CnJ,UAAYhzB,GACH3D,EAAY2D,GAAK/I,OAAMe,GAAU,MAALA,GAA0B,iBAANA,QAIxD42D,GAAgB,CAAEE,WAAW,KAC/B,cAEUkmC,GAAapjF,IAAAA,CAAoC,CAC5DzQ,KAAM,aAEN0T,cAAc,EAEd9d,MAAO49F,KAEPz/D,MAAO,CACL,gBAAkBiN,IAAkB,EACpC,oBAAsBA,IAAkB,EACxC,iBAAmB6K,IAAqB,EACxC,oBAAsBioD,IAAyB,GAGjD1jF,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKmkB,KAAEA,EAAI/N,MAAEA,GAAO9M;AAClC,MAAMyE,EAAEA,GAAMge,KACRhI,EAAQR,GACZvoB,EACA,aACAA,EAAM2iC,YACN15B,GAAO3D,EAAY2D,KACnBA,GAAQjJ,EAAMolC,UAAYzkC,MAAMC,QAAQZ,EAAM2iC,YAAe15B,EAAOA,EAAI,IAAM,QAE1EsrC,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,GACtCuG,EAAOmD,YAAS,IAAgC,kBAAnB1J,EAAMg+F,SAAyBh+F,EAAMg+F,cAAWx+F,IAC7E2+F,EAAaz0F,YAAS,KAAOqf,EAAMroB,OAAS,IAAI6W,QAAO,CAACjR,EAAK0P,KAAA,IAAEnN,KAAEA,EAAO,GAAGmN;AAAA,OAAK1P,EAAQuC,IAAM,KAC9Fu1F,EAAqB10F,EAAQA,UAAC,IAAMrD,EAAsB83F,EAAWz9F,MAAO6F,EAAK7F,SAEjF29F,EAAY30F,EAAQA,UAAC,KAAOqf,EAAMroB,OAAS,IAAI0G,KAAIqZ,IACvD,MAAMrW,KAAEA,EAAO,GAAEvB,KAAEA,EAAO,GAAM4X;AAEhC,OAAQzgB,EAAMg+F,SAET,GAAE5zF,MAAS/D,EAAsBwC,EAAMtC,EAAK7F,UAD7C0J,OAIAmvD,EAAe7vD,EAAAA,UAAS,KAC5B,MAAM40F,EAAYv1E,EAAMroB,OAAOnB,QAAU;AACzC,OAAIS,EAAMg+F,SAAiBjrF,EAAE/S,EAAM69F,kBAAmBS,EAAWF,EAAmB19F,OACxEqS,EAAE/S,EAAM89F,cAAeQ,MAE/BzkC,EAAY7hD,EAAAA,MACZ8hD,EAAY9hD,EAAAA,MACZ+hD,EAAW/hD,EAAAA,MACX6qB,EAAWn5B,EAAAA,UAAS,IACxB6qC,EAAU7zC,OACVV,EAAMylB,SAEFizC,EAAsBhvD,YAAS,IAAM,CAAC,QAAS,cAAc3D,SAAS/F,EAAMohB;AAClF,SAASszB,IACHqlB,EAASr5D,QAAU8K,SAASC,eAC9BsuD,EAASr5D,OAAOoL,QAGbyoC,EAAU7zC,OAAOoL,IAExB,SAASyyF,EAAgBnzD,GACvB2uB,EAASr5D,OAAOoiD,QAElB,SAASkX,EAAoB5uB,GAC3BjiB,EAAK,oBAAqBiiB,GAE5B,SAAS6uB,EAAgB7uB,GACvB2uB,EAASr5D,OAAOoiD,QAEhB35B,EAAK,gBAAiBiiB,GAExB,SAAS8uB,EAAS9uB,GAChBA,EAAEyJ,kBAEFH,IAEA7vB,EAAAA,UAAS,KACPkE,EAAMroB,MAAQ,GAEd4J,EAAUtK,EAAM,iBAAkBorC,MA6ItC,OAzIAxnB,EAAKA,MAACmF,GAAOlF,MACYljB,MAAMC,QAAQijB,KAAcA,EAAStkB,SAEvCw6D,EAASr5D,QAC5Bq5D,EAASr5D,MAAMA,MAAQ,OAI3Bwc,IAAU,KACR,MAAMo9C,KAAgBl/C,EAAM2Q,UAAW/rB,EAAM+rB,SACvCgtB,KAAgBuhB,IAAcl/C,EAAM49B,UACnC7zC,EAAWC,GAAcL,EAAiBC,IACzC29B,WAAYtG,KAAM8c,GAAeR,GAAOj+B,YAAY1a,GACtDu6D,EAAapB,GAAiBn5D;AAEpC,OAAA2d,EAAAC,YAAA+6B,GAAA56B,aAAA,CAAA/F,IAEU6hD,EAASl3B,WACL5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA59B,MACd,CACL,eACA,CACE,wBAAyB3X,EAAMm+D,MAC/B,qBAAsBn+D,EAAM+9F,UAC5B,4BAA6BrlC,EAAoBh4D,OAEnDV,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAK,kBACDqvF,GACbp5F,EACAg0C,EAAU,CAAAd,aACAqgB,EAAoBh4D,MAAKu1C,QAC9B1B,EAAU7zC,QAAK,IAGpB0a,EACH3D,QAAS8sC,IAAA,IAACr/B,GACRA,EAAE2M,WACFA,EAAUulB,QACVA,EAAOC,WACPA,EAAUG,QACVA,GACD+M;AAAA,OAAA5mC,EAAAC,YAAAy6C,GAAAt6C,aAAA,CAAA/F,IAES8hD,EAAS,eACA95D,EAAM6wC,YAAWqR,YAClB8X,EAAkB3xB,QACtB4xB,EAAc,gBACRC,EAAO,uBACAl6D,EAAM,wBAAuB,sBAC9BA,EAAM,wBACvBu6D,EAAU,CAAAr1C,GACVA,EAAGxkB,MAAK+kB,OACJod,EAASniC,OAAS02C,EAAQ12C,MAAKu3D,MAChC7gB,EAAQ12C,MAAK+X,SACVoZ,EAAWnxB,MAAKu1C,QACjB1B,EAAU7zC,MAAK2e,OACC,IAAlBm4B,EAAQ92C,QAAe,IAG1B0a,EACH3D,QAAS8tC,IAAA,IACPvlD,OAAS2X,MAAO6iD,KAAe3hB,IAChC0M;AAAA,OAAA5nC,EAAAA,YAAA6W,EAAAA,SAAA7W,KAAAA,CAAAA,EAAAC,oBAAAG,aAAA,CAAA/F,IAGW+hD,EAAQzyD,KAAA,OAAA4F,SAEHmqC,EAAW32C,MAAK+X,SAChBoZ,EAAWnxB,MAAK0kC,SAChBplC,EAAMolC,SAAQh7B,KAClBpK,EAAMoK,KAAIi+B,QACP+C,IACRA,EAAEyJ,kBAEEwC,EAAW32C,OAAO0qC,EAAEoW,iBAExB9M,KACDW,SACUjK,IACT,IAAKA,EAAEvkC,OAAQ;AAEf,MAAMA,EAASukC,EAAEvkC;AACjBkiB,EAAMroB,MAAQ,IAAImG,EAAOq3F,OAAS,KACnCxpD,QACSA,EAAOC,OACRyB,GACJyC,EACAzzC,GAAU,MAAAuY,EAAAA,YAAA,MAAA,CAAAhG,MAGJ6iD,GACT,GAAEzxC,EAAMroB,OAAOnB,SAAWS,EAAM+9F,YAChC3iF,EAAMikD,UAAYjkD,EAAMikD,UAAU,CAChCg/B,UAAWA,EAAU39F,MACrBy9F,WAAYA,EAAWz9F,MACvB09F,mBAAoBA,EAAmB19F,QAEvCV,EAAMm+D,MAAQkgC,EAAU39F,MAAM0G,KAAIuK,GAAIgM,EAAAC,YAAAmF,GAAA,CAAAvf,IAE9BmO,EAAI9I,KAAA,QAAA8I,KAEHA,GAEV,QACC0sF,EAAU39F,MAAMsK,KAAK,eAQrCguC,QAASD,EAAaF,GAASl7B,cAAA6W,EAAAA,SAAA,KAAA,CAEzBpZ,EAAM49B,UAAUH,GAEhByhB,GAAU38C,cAAA6W,EAAAA,SAAA,KAAA,CAAA7W,EAAAC,YAAA,OAAA,KAAA,MAAAD,EAAAC,YAAA65C,GAAA,CAAAhyC,SAKKsD,EAAMroB,OAAOnB,OAAMmB,MACtB64D,EAAa74D,MAAK+X,SACfzY,EAAMyY,UACC2C,EAAM2Q,kBAK9BvsB,OAMLy2D,GAAY,GAAI4D,EAAWC,EAAWC,MCrRpCykC,GAAmBnnF,GAAa,CAC3C2b,IAAK1O,QACLrQ,MAAO1S,OACPmN,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,WAGRqpB,QACAppB,QACAwpB,QACA3c,QACAsX,QACApH,GAAa,CAAEvZ,IAAK,cACpBmW,MACF,WAEUotE,GAAU5jF,IAAAA,CAAmB,CACxCzQ,KAAM,UAENpK,MAAOw+F,KAEPhkF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChC27B,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,WACpFihC,cAAEA,GAAkBD,GAAUhhC,IAC9BqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAW/7B,GAEhC0+F,EAAazxF,aAAW,KACxBqW,UAAEA,GAAcH,IAAkB/I,IACjCA,EAAQ7a,SACbm/F,EAAWh+F,MAAQ0Z,EAAQ,GAAGvT,OAAOoW,iBAEjCvO,EAAShF,EAAQA,UAAC,IAAuB,SAAjB1J,EAAM0O,OAAoBgwF,EAAWh+F,MAAQyU,SAASnV,EAAM0O,OAAQ,OAC5F4W,iBAAEA,EAAgBV,cAAEA,GAAkBK,GAAc,CACxDC,GAAIllB,EAAMoK,KACVoa,MAAO9a,EAAQA,UAAC,IAAMyL,SAASnV,EAAMwkB,MAAO,MAC5CoC,SAAUld,EAAAA,UAAS,IAAM,WACzBud,WAAYvY,EACZwY,YAAaxd,EAAAA,UAAS,IAAuB,SAAjB1J,EAAM0O,YAAoBlP,EAAYkP,EAAOhO,QACzE+kB,OAAQ/b,EAAQA,UAAC,IAAM1J,EAAMgzB,MAC7BvO,SAAU6Z,EAAAA,MAAMt+B,EAAO;AA0BzB,OAvBAkd,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAlD,IAEAsL,EAAS3L,MACR,CACL,WACAmb,EAAapyB,MACbi7B,EAAuBj7B,MACvBugC,EAAcvgC,MACd2gC,EAAiB3gC,MACjBs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtBV,EAAMgzB,IAAM1N,EAAiB5kB,MAAQ,CACnCgO,OAAQvN,EAAcnB,EAAM0O,SAE9B1O,EAAMkP,QAEEkM,KAIPpb,EAAMgzB,IAAMpO,EAAgB,MC1E1B+5E,GAAiBtnF,GAAa,IACtCK,QACA4+B,MACF,SAMUsoD,GAAQ/jF,IAAAA,CAA+B,CAClDzQ,KAAM,QAENpK,MAAO2+F,KAEPxgE,MAAO,CACL,oBAAsBl1B,IAAwB,EAC9CquC,OAASlM,IAA0B,GAGrC5wB,MAAOxa,EAAKsO,GAAmB,IAAjB8M,MAAEA,EAAK+N,KAAEA,GAAM7a;AAC3B,MAAM2oC,ExI6CH,SAAqBj3C,GAC1B,MAAM+oB,EAAQR,GAAgBvoB,EAAO,cAE/B6xB,EAAanoB,EAAQA,UAAC,IAAM1J,EAAMyY,WAClC4+B,EAAa3tC,EAAQA,UAAC,IAAM1J,EAAMkN,WAClCuqC,EAAexqC,cAAW,GAC1BuZ,EAAQxO,MAAiB,IACzB6mF,EAAS7mF,MAA6B;AAiG5C,OA3DA4L,EAAKA,MAAC4C,GAAO,KACX,IAAIs4E,EAAQ,EACRC,EAAU;AACd,MAAMhnD,EAAU;AAEhB,IAAK,MAAMv3C,KAAQgmB,EAAM9lB,OACF,IAAjBF,EAAKg3C,SACPunD,IACAhnD,EAAQ/uC,KAAK,CACXkc,GAAI1kB,EAAK0kB,GACTyxB,cAAen2C,EAAKm2C,kBAEI,IAAjBn2C,EAAKg3C,SAAkBsnD;AAGpCD,EAAOn+F,MAAQq3C,EACfhvB,EAAMroB,QACJq+F,EAAU,KACRD,IAAUt4E,EAAM9lB,MAAMnB,QACtB,QACH,CAAEs9D,MAAM,EAAMjzD,MAAO,SAExBqP,EAAAA,QAAQo9B,GAAS,CACf7wB,SAAUlX,IAAkD,IAAjD4W,GAAEA,EAAE9L,GAAEA,EAAEy+B,SAAEA,EAAQl/B,MAAEA,EAAKi/B,gBAAEA,GAAiBtpC;AACjDkY,EAAM9lB,MAAMwD,MAAK1D,GAAQA,EAAK0kB,KAAOA,KACvCzS,GAAa,yBAAwByS,MAGvCsB,EAAM9lB,MAAMsI,KAAK,CACfkc,GAAAA,EACA2yB,SAAAA,EACAl/B,MAAAA,EACAi/B,gBAAAA,EACAx+B,GAAI4lF,EAAOA,QAAC5lF,GACZo+B,QAAS,KACTb,cAAe,MAGnBjxB,WAAYR,IACVsB,EAAM9lB,MAAQ8lB,EAAM9lB,MAAMmZ,QAAOrZ,GACxBA,EAAK0kB,KAAOA,KAGvBgzB,OAAQA,CAAChzB,EAAIsyB,EAASb,KACpB,MAAM/yC,EAAQ4iB,EAAM9lB,MAAMqmB,MAAKvmB,GAAQA,EAAK0kB,KAAOA;AAE9CthB,IAELA,EAAM4zC,QAAUA,EAChB5zC,EAAM+yC,cAAgBA,IAExB9kB,WAAAA,EACAwlB,WAAAA,EACAI,aAAAA,EACAD,QAASzuB,EACTvC,MAAAA,EACAgwB,WAAYlY,EAAAA,MAAMt+B,EAAO,gBAGpB,CACL6+F,OAAAA,EACAhtE,WAAAA,EACAwlB,WAAAA,EACAI,aAAAA,EACAD,QAASzuB,EACTvC,MAAAA,EACAqxB,SAtGFF,iBACE,MAAMI,EAAU;AAChB,IAAI+mD,GAAQ;AAEZD,EAAOn+F,MAAQ,GACf+2C,EAAa/2C,OAAQ;AAErB,IAAK,MAAMF,KAAQgmB,EAAM9lB,MAAO,CAC9B,MAAMu+F,QAA0Bz+F,EAAKq3C;AAWrC,GATIonD,EAAkB1/F,OAAS,IAC7Bu/F,GAAQ,EAER/mD,EAAQ/uC,KAAK,CACXkc,GAAI1kB,EAAK0kB,GACTyxB,cAAesoD,MAIdH,GAAS9+F,EAAMu2C,SAAU,MAMhC,OAHAsoD,EAAOn+F,MAAQq3C,EACfN,EAAa/2C,OAAQ,EAEd,CAAEo+F,MAAAA,EAAOD,OAAQA,EAAOn+F,QA8E/BiY,MA3EF,WACE6N,EAAM9lB,MAAM6D,SAAQ/D,GAAQA,EAAKmY,WA2EjCi/B,gBAxEF,WACEpxB,EAAM9lB,MAAM6D,SAAQ/D,GAAQA,EAAKo3C,sBwIvFpBsnD,CAAWl/F,GAClBm/F,EAAUnnF,EAAAA;AAEhB,SAASonF,EAASh0D,GAChBA,EAAEoW,iBACFvK,EAAKt+B,QAGP,SAAS0mF,EAAUC,GACjB,MAAMl0D,EAAIk0D,EAEJC,EAAQtoD,EAAKY;AACnBzM,EAAEzT,KAAO4nE,EAAM5nE,KAAKu+B,KAAKqpC,GACzBn0D,EAAEo0D,MAAQD,EAAMC,MAAMtpC,KAAKqpC,GAC3Bn0D,EAAEq0D,QAAUF,EAAME,QAAQvpC,KAAKqpC,GAE/Bp2E,EAAK,SAAUiiB,GAEVA,EAAEs0D,kBACLH,EAAM5nE,MAAK3hB,IAAe,IAAd8oF,MAAEA,GAAO9oF;AACf8oF,GACFK,EAAQz+F,OAAO42C,YAKrBlM,EAAEoW,iBAmBJ,OAhBAtkC,IAAU,IAAAS,EAAAC,YAAA,OAAA,CAAA5F,IAEAmnF,EAAOxnF,MACN,CACL,SACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKywF,YAAA,EAAAP,QAETA,EAAOC,SACNA,GAAQ,CAEjBjkF,EAAM3D,UAAUw/B,OAIfgf,GAAYhf,EAAMkoD,MC/DhBS,GAAkBvoF,GAAa,CAC1CoB,SAAU6L,QACVqe,WAAY,CACVr7B,KAAMgd,QACN7M,QAAS,SAGRy3C,MACF,UAEU2wC,GAAShlF,IAAAA,CAAgC,CACpDzQ,KAAM,SAENpK,MAAO4/F,KAEPzhE,MAAO,CACL,oBAAsBz9B,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwxF,EAAav3E,GAAgBvoB,EAAO,eACpC2vD,aAAEA,EAAYC,cAAEA,GAAkBP,GAASrvD,GAAOU,IAAUV,EAAMyY,WAAaqnF,EAAWp/F,MAAQA;AAExG,MAAO,IAAM0a,EAAM3D,UAAU,CAC3BqoF,WAAYA,EAAWp/F,MACvBV,MAAO,CACL4wD,aAAcjB,EACdkB,aAAcjB,QCLTmwC,GAA2B1oF,GAAa,CACnDpD,MAAO1S,OACPm3C,UAAW,CACTpxC,KAAM/F,OACNkW,QAAS,WACTwkB,UAAYh7B,GAAW,CAAC,WAAY,cAAc8E,SAAS9E,IAE7D0M,KAAM,CACJrG,KAAM/F,OACNkW,QAAS,MACTwkB,UAAYh7B,GAAW,CAAC,QAAS,MAAO,QAAQ8E,SAAS9E,IAE3Dg0B,KAAM,CACJ3tB,KAAM/F,OACNkW,QAAS,YACTwkB,UAAYh7B,GAAW,CAAC,YAAa,UAAU8E,SAAS9E,IAE1D++F,OAAQ,CAACv+F,OAAQF,QACjB0+F,aAAc,CACZ34F,KAAM/F,OACNkW,QAAS,oCAEXyoF,UAAW,CACT54F,KAAM/F,OACNkW,QAAS,oCAGRuiB,QACAvF,MACF,mBAEU0rE,GAA2B7lF,GAAgB,CACtDlQ,KAAM,2BAENpK,MAAO,CACL2N,KAAM,CACJrG,KAAM/F,OACNic,UAAU,GAEZ2pD,QAAS,KACT1pC,WAAYl8B,QAGd48B,MAAO,CACLD,UAAWA,CAACvwB,EAA0BmvB,KAA4B,GAGpEtiB,MAAOxa,EAAKsO,GAAY,IAAV6a,KAAEA,GAAM7a;AACpB,MAAMo6B,gBAAEA,EAAe5L,eAAEA,GAAmB2L,IAAwBruB,OACjEpa,EAAMy9B,WAAa,CACpBA,WAAYz9B,EAAMy9B,iBAChBj+B;AAUJ,OARAokB,QAAMkZ,GAAgB6a,MAAAA,IACpBxuB,EAAK,YAAanpB,EAAM2N,KAAM1E,MAGhCiU,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAAA,8BAAAK,IACuC0wB,GAAe+3B,CAAAA,EAAAC,yBAGzD,MAIE0/B,GAAkBvlF,IAAAA,CAAyC,CACtEzQ,KAAM,kBAENpK,MAAO+/F,KAEP5hE,MAAO,CACLE,KAAOtxB,IAAwF,GAGjGyN,MAAOxa,EAAKgW,GAAmB,IAAjBoF,MAAEA,EAAK+N,KAAEA,GAAMnT;AAC3B,MAAMqqF,EAASroF,EAAAA,MACTsoF,EAAcrzF,aAAiC,MAC/CszF,EAAYtzF,aAAiC,MAC7C+yF,EAASt2F,EAAAA,UAAS,IAAMvI,EAAcnB,EAAMggG,UAC5CljE,EAAiB7vB,cAAW;AAElC,SAASuzF,EAAiB/pF,GACxB,IAAK4pF,EAAO3/F,MAAO;AAEnB,MAAMD,EAA+B,aAApBT,EAAM04C,UAA2B,YAAc;AAChE2nD,EAAO3/F,MAAMD,GAAYgW,EAU3B,SAASkoC,IACP,IAAK0hD,EAAO3/F,MAAO,OAAO;AAE1B,MAAMD,EAA+B,aAApBT,EAAM04C,UAA2B,eAAiB;AACnE,OAAO2nD,EAAO3/F,MAAMD,GAoBtB,SAASggG,EAAW9yF,EAA0B+yF,GAC/B,UAAT/yF,EACF2yF,EAAY5/F,MAAQggG,EACF,QAAT/yF,IACT4yF,EAAU7/F,MAAQggG,GAdtBn+D,EAAAA,WAAU,KACH89D,EAAO3/F,QAEO,UAAfV,EAAM2N,KACR6yF,EAAgB7hD,KACQ,SAAf3+C,EAAM2N,MACf6yF,EAAgB7hD,IAAkB,EAbtC,WACE,IAAK0hD,EAAO3/F,MAAO,OAAO;AAE1B,MAAMD,EAA+B,aAApBT,EAAM04C,UAA2B,eAAiB;AACnE,OAAO2nD,EAAO3/F,MAAMD,GASoBkgG,GAAqB;AAgB/D,IAAIC,EAAqB;AACzB,SAASC,EAAiBlzF,EAA0BmzF,GAClDhkE,EAAep8B,MAAQogG,EACnBhkE,EAAep8B,OACjBqgG,EAAapzF,GAIjB,SAASozF,EAAcpzF,GACrB,GAAmB,WAAf3N,EAAMi1B,OAAsB6H,EAAep8B,MAAO;AAEtD,MAAMggG,EAfR,SAAoB/yF,GAClB,MAAgB,UAATA,EAAmB2yF,EAAY5/F,MAAQ6/F,EAAU7/F,MAczCsgG,CAAUrzF;AACpB0yF,EAAO3/F,QAAS,CAAC,QAAS,WAAWqF,SAAS26F,KAEnDE,EAAqBjiD,IACrB8hD,EAAU9yF,EAAM,WAyBhBwb,EAAK,OAAQ,CAAExb,KAAAA,EAAMypB,KAvBrB,SAAespE,GACbD,EAAU9yF,EAAM+yF,GAEhB77E,EAAAA,UAAS,KACQ,UAAX67E,GAAiC,UAAXA,IAEX,OAAXA,GAA4B,UAAT/yF,GACrB6yF,EAAgB7hD,IAAkBiiD,EAnE1C,WACE,IAAKP,EAAO3/F,MAAO,OAAO;AAE1B,MAAMD,EAA+B,aAApBT,EAAM04C,UAA2B,YAAc;AAChE,OAAO2nD,EAAO3/F,MAAMD,GA+DyCwgG,IAEtC,WAAfjhG,EAAMi1B,MACRpQ,EAAAA,UAAS,KACPjmB,OAAO83B,uBAAsB,KAC3B93B,OAAO83B,uBAAsB,KAC3B93B,OAAO83B,uBAAsB,KAC3BqqE,EAAapzF,uBAY7B,MAAMoF,EAAEA,GAAMge;AAEd,SAASmwE,EAAYvzF,EAA0B+yF,GAC7C,GAAI1gG,EAAM2N,OAASA,GAAuB,SAAf3N,EAAM2N,KAAiB;AAElD,MAAM06B,EAAUA,IAAM04D,EAAapzF,GAC7BkrC,EAAY,CAAElrC,KAAAA,EAAM3N,MAAO,CAAEqoC,QAAAA,EAASp0B,MAAOjU,EAAMiU;AAEzD,MAAe,UAAXysF,EAA2BtlF,EAAMiE,QAAQw5B,GAE9B,UAAX6nD,EAA2BtlF,EAAMwR,QAAQisB,IAAUl7B,EAAAA,wBAAW5K,EAAE/S,EAAMkgG,aAEvD,WAAflgG,EAAMi1B,KACO,YAAXyrE,EACKtlF,EAAMmF,UAAUs4B,IAAUl7B,EAAAA,YAAAorB,GAAA,CAAAF,eAAA,EAAA50B,MACUjU,EAAMiU,OAChD,MAGImH,EAAM,eAAey9B,IAAUl7B,EAAAA,YAAA2D,GAAA,CAAAF,QAAA,WAAAnN,MACHjU,EAAMiU,MAAKo0B,QAAaA,GAAO,CAAA5wB,QAAAA,IAC5D1E,CAAAA,EAAE/S,EAAMigG,iBAKT7kF,EAAMmF,UAAUs4B,IAAUl7B,EAAAA,YAAAorB,GAAA,CAAAF,eAAA,EAAA50B,MACUjU,EAAMiU,OAChD,MAGH,MAAMqmB,gBAAEA,GAAoBD,GAAar6B;AAEzCkd,IAAU,KACR,MAAM00B,EAAM5xC,EAAMkb,IACZimF,EAAmC,UAAfnhG,EAAM2N,MAAmC,SAAf3N,EAAM2N,KACpDyzF,EAAiC,QAAfphG,EAAM2N,MAAiC,SAAf3N,EAAM2N,KAChD0zF,EAA+B,cAAfrhG,EAAMi1B;AAE5B,OAAAtX,EAAAA,YAAAi0B,EAAA,CAAA55B,IAEUqoF,EAAM1oF,MACL,CACL,oBACC,sBAAqB3X,EAAM04C,YAC5B,CACE,2BAA4ByoD,EAC5B,yBAA0BC,IAE7BlyF,MACOorB,EAAgB55B,OAAK,CAAA+W,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,2BAAA,CAGzBupF,EAAW,QAASZ,EAAY5/F,SAGlC2/F,EAAO3/F,OAASygG,GAAqBE,GAAa1jF,EAAAA,YAAAwiF,GAAA,CAAA38F,IAAA,QAAAmK,KAAA,QAAAisD,YAIlCinC,EAAe15B,QACnBk5B,EAAO3/F,MAAK+8B,WACTuiE,EAAOt/F,OAAK,MAI3B0a,EAAM3D,YAEN4oF,EAAO3/F,OAAS0gG,GAAmBC,GAAa1jF,EAAAC,YAAAuiF,GAAA,CAAA38F,IAAA,MAAAmK,KAAA,MAAAisD,YAIhCinC,EAAe15B,QACnBk5B,EAAO3/F,MAAK+8B,WACTuiE,EAAOt/F,OAAK,MAE5Bid,EAAAC,YAAA,MAAA,CAAAjG,MAAA,2BAAA,CAGGupF,EAAW,MAAOX,EAAU7/F,kBClR7B4gG,GAAmBzpF,OAAOC,IAAI,wBAE9BypF,GAAsBlqF,GAAa,IAC3CK,QACAytB,GAAe,CAChBG,cAAe,wBAEd7Q,QACApD,MACF,cAYUmwE,GAAa3mF,IAAAA,CAMuB,CAC/CzQ,KAAM,aAENpK,MAAOuhG,KAEPpjE,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChC2lC,WAAEA,EAAUE,OAAEA,EAAMvmB,KAAEA,EAAIxG,KAAEA,EAAIitB,SAAEA,GAAaD,GAAS9lC,EAAOshG;AAErE,MAAO,IAAA3jF,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEI,CACL,eACAmb,EAAapyB,MACbV,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAuI,QAAAA,IAAA,CAEjB2D,EAAM3D,UAAU,CAChBkuB,WAAAA,EACAE,OAAAA,EACAvmB,KAAAA,EACAxG,KAAAA,EACAitB,SAAUA,EAASrlC,cCnDhB+gG,GAAQ5mF,IAAAA,CAA+B,CAClDzQ,KAAM,QAENpK,MAAOulC,KAEPpH,MAAO,CACL,iBAAmBl1B,IAA4B,GAGjDuR,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMq3B,WAAEA,EAAUE,OAAEA,EAAMD,OAAEA,EAAMN,cAAEA,EAAa5kC,MAAEA,EAAK+X,SAAEA,GAAa+sB,GAAaxlC,EAAOshG;AAC3F,MAAO,IAAMlmF,EAAM3D,UAAU,CAC3BkuB,WAAYA,EAAWjlC,MACvB4kC,cAAeA,EAAc5kC,MAC7BmlC,OAAAA,EACAD,OAAAA,EACAllC,MAAOA,EAAMA,MACb+X,SAAUA,EAAS/X,WC7BZghG,GAAO1mF,GAAuB,SCM9B2mF,GAAmBtqF,GAAa,IACxCK,QACAsiB,QACA7V,MACF,WAEUy9E,GAAU/mF,IAAAA,CAAmB,CACxCzQ,KAAM,UAENpK,MAAO2hG,KAEPnnF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMsZ,cAAEA,EAAaC,aAAEA,EAAY/C,cAAEA,EAAa0B,MAAEA,EAAKuB,UAAEA,GAAcnC,GAAa5lB,IAChFs6B,gBAAEA,GAAoBD,GAAar6B;AAuBzC,OArBAkd,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAA5F,IAEA+P,EAASpQ,MACR,CACLiQ,EAAclnB,MACdV,EAAM2X,OACPzI,MACM,CACLorB,EAAgB55B,MAChBmnB,EAAannB,MACbV,EAAMkP,QACPyO,CAAAA,EAAAA,YAAA4W,EAAAA,SAAA,KAAA,CAAA9c,QAAAA,IAAA,CAAAkG,EAAAA,YAAA6W,EAAAjtB,SAAA,KAAA,CAIK6T,EAAM3D,qBAMT,CACLqN,cAAAA,EACA0B,MAAAA,MCpCOq7E,GAAuBxqF,GAAa,CAC/CuP,SAAU,CACRtf,KAAM/F,OACNic,UAAU,GAEZ3U,KAAM,CACJvB,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEXkrB,WAAYre,WAET5M,QACA6M,MACF,eAEUu9E,GAAcjnF,IAAAA,CAAmB,CAC5CzQ,KAAM,cAENpK,MAAO6hG,KAEPrnF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMgX,iBAAEA,EAAgBV,cAAEA,GAAkBK,GAAc,CACxDC,GAAIllB,EAAMoK,KACVoa,MAAO9a,EAAQA,UAAC,IAAMyL,SAASnV,EAAMwkB,MAAO,MAC5CoC,SAAU0X,EAAAA,MAAMt+B,EAAO,YACvBknB,YAAaoX,EAAAA,MAAMt+B,EAAO,QAC1BinB,WAAYqX,EAAAA,MAAMt+B,EAAO,QACzBylB,OAAQ6Y,EAAAA,MAAMt+B,EAAO,cACrBykB,SAAU6Z,EAAAA,MAAMt+B,EAAO;AAkBzB,OAfAkd,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,gBACA3X,EAAM2X,OACPzI,MACM,CACLoW,EAAiB5kB,MACjBV,EAAMkP,QACP,CAECkM,EAAM3D,gBAILmN,KC5CEm9E,GAAiB1qF,GAAa,CACzCsrB,WAAYre,QACZvX,QAAS,CACPzF,KAAMvH,OAGN0X,QAASA,KAAO,CACdmB,UAAMpZ,EACNi+B,gBAAYj+B,EACZk+B,eAAWl+B,QAIZkY,QACAsiB,QACAvF,QACAI,GAAoB,CAAE/N,WAAY,qBACpC,SAEUk7E,GAAQnnF,IAAAA,CAAmB,CACtCzQ,KAAM,QAEN6zB,WAAY,CAAEC,UAAAA,IAEdl+B,MAAO+hG,KAEP5jE,MAAO,CACL,oBAAsBz9B,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMgsB,gBAAEA,GAAoBD,GAAar6B,GAEnC6iC,EAAWta,GAAgBvoB,EAAO;AAExC,SAAS45D,EAAa98B,GAChB+F,EAASniC,QAEbmiC,EAASniC,MAAQo8B,GA8BnB,OA3BA5f,IAAU,IAAA0jB,EAAAT,eAAAxiB,cAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,SACA3X,EAAM2X,OACPzI,MASM,CACLorB,EAAgB55B,MAChBV,EAAMkP,QACP,CAAAuI,QAAAA,IAECorB,CAAAA,EAASniC,OAAKid,EAAAA,YAAAue,GAAA,CAAApV,WACgB9mB,EAAM8mB,WAAUoZ,QAAA,GAAA,CAAAzoB,QAAAA,IAAA,CAC1C2D,EAAM3D,kBAEX,CAAA,CAAAopB,mBAhBC,aAAA,CACEt2B,QAASqvD,EACT7sD,QAAS/M,EAAM+M,SAEjB,UAgBC,MC1EEk1F,GAA2B5qF,GAAa,CACnD8W,OAAQ5sB,OACR+rB,eAAgB/rB,OAChB0rB,SAAUltB,OACVsuB,IAAK,CACH/mB,KAAMgd,QACN7M,aAASjY,MAGRkY,MACF,mBAEUwqF,GAAkBrnF,IAAAA,CAAmB,CAChDzQ,KAAM,kBAENpK,MAAOiiG,KAEPznF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMuiB,WAAEA,GAAeG,GAAchxB;AAerC,OAbAkd,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,oBACAkZ,EAAWnwB,MACXV,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAEjBkM,EAAM3D,gBAIL,MC9BE0qF,GAAiB9qF,GAAa,CACzCgtD,WAAY//C,WAET5M,QACAsiB,QACAvF,GAAa,CAAEvZ,IAAK,UACtB,SAEUknF,GAAQvnF,IAAAA,CAAmB,CACtCzQ,KAAM,QAENpK,MAAOmiG,KAEP3nF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMgsB,gBAAEA,GAAoBD,GAAar6B,IACnCglB,WAAEA,EAAUJ,cAAEA,GAAkBF,MAChC8d,cAAEA,GAAkBF;AA2B1B,OAzBAplB,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,SACA,CAAE,qBAAsB3X,EAAMqkE,YAC9BrkE,EAAM2X,OACPzI,MACM,CACL8V,EAAWtkB,MACX8hC,EAAc9hC,MACd45B,EAAgB55B,MAChBV,EAAMkP,QACP,CAAAuI,QAAAA,IAAA,CAECzX,EAAMqkE,WAAU1mD,EAAAA,YAAA,MAAA,CAAAhG,MAAA,oBAGVyD,CAAAA,EAAM3D,cAGV2D,EAAM3D,iBAKPmN;AC5CX,SAASy9E,GAAyBC,GAEhC,OAAQA,EAAO,GAAK,EAAM,GAAO58F,KAAK+oC,KAAK/oC,KAAKe,IAAI67F,IADtC,cAOT,SAASC,GAA0BC,GAExC,GAAIA,EAAQjjG,OAAS,EAEnB,OAAO;AAMT,GAAuB,IAAnBijG,EAAQjjG,OAEV,OAAIijG,EAAQ,GAAGzvF,IAAMyvF,EAAQ,GAAGzvF,EAEvB,GAEDyvF,EAAQ,GAAGrkF,EAAIqkF,EAAQ,GAAGrkF,IAAMqkF,EAAQ,GAAGzvF,EAAIyvF,EAAQ,GAAGzvF;AAIpE,IAAIuvF,EAAO;AACX,IAAK,IAAI7iG,EAAI+iG,EAAQjjG,OAAS,EAAGE,EAAI,EAAGA,IAAK,CAC3C,GAAI+iG,EAAQ/iG,GAAGsT,IAAMyvF,EAAQ/iG,EAAI,GAAGsT,EAElC;AAEF,MAAM0vF,EAAQJ,GAAwBC,GAChCI,GAASF,EAAQ/iG,GAAG0e,EAAIqkF,EAAQ/iG,EAAI,GAAG0e,IAAMqkF,EAAQ/iG,GAAGsT,EAAIyvF,EAAQ/iG,EAAI,GAAGsT;AACjFuvF,IAASI,EAAQD,GAAS/8F,KAAKe,IAAIi8F,GAC/BjjG,IAAM+iG,EAAQjjG,OAAS,IACzB+iG,GAAQ,IAGZ,OAAuC,IAAhCD,GAAwBC,GAG1B,SAASK,KACd,MAAMt0D,EAAuE;AAgD7E,MAAO,CAAEu0D,YA9CT,SAAsBx3D,GACpBzqC,MAAMK,KAAKoqC,EAAE26B,gBAAgBxhE,SAAQ02C,KACnB5M,EAAQ4M,EAAM4nD,cAAgBx0D,EAAQ4M,EAAM4nD,YAAc,IAAIl6F,EAzDpE,MA0DFK,KAAK,CAACoiC,EAAE03D,UAAW7nD,QA2CT8nD,SAvCtB,SAAmB33D,GACjBzqC,MAAMK,KAAKoqC,EAAE26B,gBAAgBxhE,SAAQ02C,WAC5B5M,EAAQ4M,EAAM4nD,gBAqCOG,YAjChC,SAAsB99E,GACpB,MAAMs9E,EAAUn0D,EAAQnpB,IAAK/b,SAASohC;AAEtC,IAAKi4D,EACH,MAAM,IAAIrqF,MAAO,2BAA0B+M;AAG7C,MAAM+9E,EAAST,EAAQ,GACjBj0F,EAAc,GACdC,EAAc;AACpB,IAAK,MAAMvF,KAAOu5F,EAAS,CACzB,GAAIS,EAAO,GAAKh6F,EAAI,GAhFV,IAgFwB;AAElCsF,EAAEvF,KAAK,CAAE+J,EAAG9J,EAAI,GAAIkV,EAAGlV,EAAI,GAAGoiC,UAC9B78B,EAAExF,KAAK,CAAE+J,EAAG9J,EAAI,GAAIkV,EAAGlV,EAAI,GAAGqlC,UAGhC,MAAO,CACL//B,EAAGg0F,GAAyBh0F,GAC5BC,EAAG+zF,GAAyB/zF,GAC5BkqC,gBACE,MAAMnqC,EAAEA,EAACC,EAAEA,GAAMzF,MACVm6F,EAAMC,GAAQ,CAACz9F,KAAKe,IAAI8H,GAAI7I,KAAKe,IAAI+H;AAE5C,OAAO00F,EAAOC,GAAQ50F,GAAK,EAAI,QAC3B20F,EAAOC,GAAQ50F,GAAK,EAAI,OACxB40F,EAAOD,GAAQ10F,GAAK,EAAI,OACxB20F,EAAOD,GAAQ10F,GAAK,EAAI,KASpC,WACE,MAAM,IAAI2J,MATAirF,OC2GZ,SAASA,KACP,MAAM,IAAIjrF,MClKZ,MAAMkrF,GAAY,CAAC,QAAS,MAAO,OAAQ,QAAS,MAAO,UAE9CC,GAA6BjsF,GAAa,CACrDpD,MAAO1S,OACPgiG,qBAAsBj/E,QACtBk/E,oBAAqBl/E,QACrBm/E,cAAen/E,QACfqd,SAAUrd,QACVqe,WAAY,CACVr7B,KAAMgd,QACN7M,QAAS,MAEXisF,UAAWp/E,QACXq/E,KAAM,CACJr8F,KAAMgd,QACN7M,QAAS,MAEXmsF,UAAW,CACTt8F,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,IAEX27C,MAAO,CACL9rD,KAAM,CAACgd,QAAS/iB,QAChBkW,SAAS,GAEX+mB,MAAOj9B,OACPsiG,UAAWv/E,QACX6uC,WAAY7uC,QACZw/E,UAAWx/E,QACX7V,MAAO,CACLnH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEXrM,SAAU,CACR9D,KAAM/F,OACNkW,QAAS,QACTwkB,UAAYv7B,GAAe2iG,GAAUt9F,SAASrF,IAEhDmoD,OAAQvkC,WAELwc,QACAppB,QACAw3C,QACAlT,GAAiB,CAAET,OAAQ,UAC3Bra,QACA3c,QACAsX,QACApH,GAAa,CAAEvZ,IAAK,WACpBmW,MACF,qBAEUrO,GAAoBnI,IAAAA,CAA2C,CAC1EzQ,KAAM,oBAENpK,MAAOsjG,KAEPnlE,MAAO,CACL,oBAAsBl1B,IAAiB,EACvC,cAAgBA,IAAiB,GAGnCuR,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKmkB,KAAEA,EAAI/N,MAAEA,GAAO9M;AAClC,MAAMZ,MAAEA,GAAUyjB,MACZ2B,aAAEA,GAAiBgB,GAAa9zB,IAChCihC,cAAEA,GAAkBD,GAAUhhC,IAC9B27B,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,WACpFqhC,iBAAEA,GAAqBD,GAAaphC,IACpCm8C,eAAEA,EAAcZ,OAAEA,GAAWU,GAAWj8C,IACxCg8B,eAAEA,GAAmBD,GAAW/7B,GAChC+0D,EAAS9oB,KACTpJ,EAAWta,GAAgBvoB,EAAO,aAAc,MAAMiB,KAAOA,KAC7DuhC,cAAEA,GAAkBF,MACpBwvB,QAAEA,GAAYD,KAEdwuC,EAASroF,EAAAA,MACT8nF,EAAa7yF,cAAW,IAExB0iD,aAAEA,EAAYC,cAAEA,GAAkBP,GAASrvD,GAAOU,IACtDo/F,EAAWp/F,MAAQA,KAGf+N,EAAQ/E,EAAAA,UAAS,IACb1J,EAAM2jG,MAAQ3jG,EAAMyjG,eAAiB3D,EAAWp/F,MACpDe,OAAOzB,EAAMyO,OACbhN,OAAOzB,EAAM2jG,KAAO3jG,EAAM4jG,UAAY5jG,EAAMyO,SAE5CrD,EAAW1B,EAAAA,UAAS,IACjBmE,GAAW7N,EAAMoL,SAAUsC,EAAMhN,SAEpCqjG,EAAer6F,EAAQA,UAAC,IAAM1J,EAAMmzD,aACpC6wC,EAAct6F,EAAAA,UAAS,KAAO1J,EAAM0jG,YAAcnoD,EAAO76C,OAASV,EAAM6jG,aACxEI,EAAWv6F,EAAAA,UAAS,IACxB1J,EAAM6oD,SACLm7C,EAAYtjG,OACM,WAAnB0K,EAAS1K;AAGXsnB,IAAe,IAAMhoB,EAAMyjG,eAA+B,MAAdzjG,EAAM2jG,OAAc,KAC9D//E,EAAKA,MAACk8E,GAAY72F,GAAOkgB,EAAK,eAAgBlgB,QAGhD+e,IAAe,KAAOhoB,EAAMujG,uBAAsB,KAChD3/E,EAAAA,MAAMogF,GAAa/6F,IAAQjJ,EAAM0jG,WAAc7+E,YAAS,IAAMge,EAASniC,OAASuI,SAGlF+e,IAAe,KAAOhoB,EAAMwjG,uBAAyBzuC,IAAQ,KAC3DnxC,QAAMmxC,EAAQmvC,cAAc,IAAMF,EAAYtjG,QAAUmiC,EAASniC,OAAQ,QAG3EkjB,EAAAA,OAAM,IAAM5jB,EAAM0jG,YAAWz6F,IACvBA,IAAK45B,EAASniC,OAAQ,MAGJ,MAApBV,EAAM2iC,YAAuBqhE,EAAYtjG,QAC3CmiC,EAASniC,MAAQV,EAAM0jG,YAAcnoD,EAAO76C;AAG9C,MAAMyjG,WAAEA,EAAUC,aAAEA,GDzJjB,SAAiB91F,GAcrB,IAduB1M,GACxBA,EAAEihC,SACFA,EAAQmhE,YACRA,EAAWv1F,MACXA,EAAKq1F,UACLA,EAASl9E,SACTA,GAQDtY;AACCi0B,EAAAA,WAAU,KACR3jC,OAAOiS,iBAAiB,aAAcwzF,EAAc,CAAEpgE,SAAS,IAC/DrlC,OAAOiS,iBAAiB,YAAayzF,EAAa,CAAErgE,SAAS,IAC7DrlC,OAAOiS,iBAAiB,WAAY0zF,EAAY,CAAEtgE,SAAS,OAG7DvgB,EAAAA,iBAAgB,KACd9kB,OAAOgS,oBAAoB,aAAcyzF,GACzCzlG,OAAOgS,oBAAoB,YAAa0zF,GACxC1lG,OAAOgS,oBAAoB,WAAY2zF;AAGzC,MAAM/8E,EAAe9d,YAAS,IAAM,CAAC,OAAQ,SAAS3D,SAAS6gB,EAASlmB,UAElEkiG,YAAEA,EAAWG,SAAEA,EAAQC,YAAEA,GAAgBL;AAC/C,IAAI6B,GAAgB;AACpB,MAAML,EAAal3F,cAAW,GACxBm3F,EAAen3F,aAAW,GAC1BupB,EAASvpB,aAAW;AAC1B,IAAInM;AAEJ,SAASkpC,EAAWy6D,EAAah/E,GAC/B,OACqB,SAAnBmB,EAASlmB,MAAmB+jG,EACP,UAAnB79E,EAASlmB,MAAoB8K,SAASygD,gBAAgBzd,YAAci2D,EACjD,QAAnB79E,EAASlmB,MAAkB+jG,EACR,WAAnB79E,EAASlmB,MAAqB8K,SAASygD,gBAAgBhvC,aAAewnF,EACtErB,OACC39E,EAAShX,EAAM/N,MAAQ,GAG9B,SAASgkG,EAAaD,GAAmC,IAAtBE,IAAK5jG,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,KAAAA,UAAA;AACtC,MAAM6pC,EACe,SAAnBhkB,EAASlmB,OAAoB+jG,EAAMjuE,EAAO91B,OAAS+N,EAAM/N,MACpC,UAAnBkmB,EAASlmB,OAAqB8K,SAASygD,gBAAgBzd,YAAci2D,EAAMjuE,EAAO91B,OAAS+N,EAAM/N,MAC9E,QAAnBkmB,EAASlmB,OAAmB+jG,EAAMjuE,EAAO91B,OAAS+N,EAAM/N,MACrC,WAAnBkmB,EAASlmB,OAAsB8K,SAASygD,gBAAgBhvC,aAAewnF,EAAMjuE,EAAO91B,OAAS+N,EAAM/N,MACnG0iG;AAEJ,OAAOuB,EAAQj/F,KAAKD,IAAI,EAAGC,KAAKF,IAAI,EAAGolC,IAAaA,EAGtD,SAASy5D,EAAcj5D,GACrB,GAAI04D,EAAUpjG,MAAO;AAErB,MAAMkkG,EAASx5D,EAAE26B,eAAe,GAAG16B,QAC7Bw5D,EAASz5D,EAAE26B,eAAe,GAAGz3B,QAG7Bw2D,EACe,SAAnBl+E,EAASlmB,MAAmBkkG,EAFZ,GAGK,UAAnBh+E,EAASlmB,MAAoBkkG,EAASp5F,SAASygD,gBAAgBzd,YAHjD,GAIK,QAAnB5nB,EAASlmB,MAAkBmkG,EAJb,GAKK,WAAnBj+E,EAASlmB,MAAqBmkG,EAASr5F,SAASygD,gBAAgBhvC,aALlD,GAMdmmF,KAEE2B,EAAqBliE,EAASniC,QACf,SAAnBkmB,EAASlmB,MAAmBkkG,EAASn2F,EAAM/N,MACtB,UAAnBkmB,EAASlmB,MAAoBkkG,EAASp5F,SAASygD,gBAAgBzd,YAAc//B,EAAM/N,MAChE,QAAnBkmB,EAASlmB,MAAkBmkG,EAASp2F,EAAM/N,MACvB,WAAnBkmB,EAASlmB,MAAqBmkG,EAASr5F,SAASygD,gBAAgBhvC,aAAexO,EAAM/N,MACrF0iG,OAIF0B,GACAC,GACCliE,EAASniC,OAASsjG,EAAYtjG,SAE/BI,EAAQ,CAAC8jG,EAAQC,GAEjBruE,EAAO91B,MAAQspC,EAAUxiB,EAAa9mB,MAAQkkG,EAASC,EAAQhiE,EAASniC,OACxE0jG,EAAa1jG,MAAQgkG,EAAYl9E,EAAa9mB,MAAQkkG,EAASC,GAE/DL,EAAgBhuE,EAAO91B,OAAS,IAAM81B,EAAO91B,MAAQ,GACrDqiG,EAAS33D,GACTw3D,EAAYx3D,IAIhB,SAASk5D,EAAal5D,GACpB,MAAMw5D,EAASx5D,EAAE26B,eAAe,GAAG16B,QAC7Bw5D,EAASz5D,EAAE26B,eAAe,GAAGz3B;AAEnC,GAAIk2D,EAAe,CACjB,IAAKp5D,EAAE45D,WAEL,YADAR,GAAgB;AAIlB,MAAM/0F,EAAK/J,KAAKe,IAAIm+F,EAAS9jG,EAAO,IAC9B4O,EAAKhK,KAAKe,IAAIo+F,EAAS/jG,EAAO,KAEf0mB,EAAa9mB,MAC9B+O,EAAKC,GAAMD,EAAK,EAChBC,EAAKD,GAAMC,EAAK,IAGlBy0F,EAAWzjG,OAAQ,EACnB8jG,GAAgB,IACNh9E,EAAa9mB,MAAQgP,EAAKD,GAAM,IAC1C+0F,GAAgB,GAIpB,IAAKL,EAAWzjG,MAAO;AAEvB0qC,EAAEoW,iBACFohD,EAAYx3D;AAEZ,MAAMR,EAAW85D,EAAYl9E,EAAa9mB,MAAQkkG,EAASC,GAAQ;AACnET,EAAa1jG,MAAQgF,KAAKD,IAAI,EAAGC,KAAKF,IAAI,EAAGolC,IAEzCA,EAAW,EACbpU,EAAO91B,MAAQspC,EAAUxiB,EAAa9mB,MAAQkkG,EAASC,GAAQ,GACtDj6D,EAAW,IACpBpU,EAAO91B,MAAQspC,EAAUxiB,EAAa9mB,MAAQkkG,EAASC,GAAQ,IAInE,SAASN,EAAYn5D,GAGnB,GAFAo5D,GAAgB,GAEXL,EAAWzjG,MAAO;AAEvBkiG,EAAYx3D,GAEZ+4D,EAAWzjG,OAAQ;AAEnB,MAAMukG,EAAWjC,EAAY53D,EAAE26B,eAAe,GAAG88B,YAC3CqC,EAAKx/F,KAAKe,IAAIw+F,EAAS12F,GACvB42F,EAAKz/F,KAAKe,IAAIw+F,EAASz2F,GACvB42F,EAAe59E,EAAa9mB,MAC9BwkG,EAAKC,GAAMD,EAAK,IAChBC,EAAKD,GAAMC,EAAK;AAGlBtiE,EAASniC,MADP0kG,EACeH,EAASvsD,aAAe,CACvC/1C,KAAM,QACNC,MAAO,OACPoL,IAAK,OACLC,OAAQ,MACR2Y,EAASlmB,QAAU0iG,MAEJgB,EAAa1jG,MAAQ,GAI1C,MAAM2kG,EAAa37F,EAAAA,UAAS,IACnBy6F,EAAWzjG,MAAQ,CACxB2O,UACqB,SAAnBuX,EAASlmB,MAAoB,2BAA0B0jG,EAAa1jG,MAAQ+N,EAAM/N,YAC7D,UAAnBkmB,EAASlmB,MAAqB,0BAAyB0jG,EAAa1jG,MAAQ+N,EAAM/N,YAC/D,QAAnBkmB,EAASlmB,MAAmB,2BAA0B0jG,EAAa1jG,MAAQ+N,EAAM/N,YAC9D,WAAnBkmB,EAASlmB,MAAsB,0BAAyB0jG,EAAa1jG,MAAQ+N,EAAM/N,YACnF0iG,KACJt8E,WAAY,aACVtnB;AAkBN,OAfAwoB,GAAem8E,GAAY,KACzB,MAAM90F,EAAYzN,EAAGlB,OAAOwO,MAAMG,WAAa,KACzCyX,EAAallB,EAAGlB,OAAOwO,MAAM4X,YAAc;AAEjDnd,EAAAA,aAAY,KACV/H,EAAGlB,OAAOwO,MAAMwmB,YAAY,YAAa2vE,EAAW3kG,OAAO2O,WAAa,QACxEzN,EAAGlB,OAAOwO,MAAMwmB,YAAY,aAAc2vE,EAAW3kG,OAAOomB,YAAc,SAG5EwB,EAAAA,gBAAe,KACb1mB,EAAGlB,OAAOwO,MAAMwmB,YAAY,YAAarmB,GACzCzN,EAAGlB,OAAOwO,MAAMwmB,YAAY,aAAc5O,SAIvC,CACLq9E,WAAAA,EACAC,aAAAA,EACAiB,WAAAA,GCxCqCC,CAAS,CAC5C1jG,GAAIy+F,EACJx9D,SAAAA,EACAmhE,YAAAA,EACAv1F,MAAAA,EACAq1F,UAAWxlE,EAAAA,MAAMt+B,EAAO,aACxB4mB,SAAUxb,IAGN6b,EAAavd,EAAAA,UAAS,KAC1B,MAAMb,EAAOm7F,EAAYtjG,MAAQ,EAC7BV,EAAM2jG,MAAQ3jG,EAAMyjG,cAAgBhiG,OAAOzB,EAAM4jG,WACjDn1F,EAAM/N;AAEV,OAAOyjG,EAAWzjG,MAAQmI,EAAOu7F,EAAa1jG,MAAQmI,KAElDqe,EAAcxd,EAAQA,UAAC,IAAM,CAAC,MAAO,UAAU3D,SAAS/F,EAAMoL,UAAY,EAAIqD,EAAM/N,SACpF4kB,iBAAEA,EAAgBC,sBAAEA,EAAqBX,cAAEA,GAAkBK,GAAc,CAC/EC,GAAIllB,EAAMoK,KACVoa,MAAO9a,EAAQA,UAAC,IAAMyL,SAASnV,EAAMwkB,MAAO,MAC5CoC,SAAUxb,EACV6b,WAAAA,EACAC,YAAAA,EACAzB,OAAQ/b,EAAQA,UAAC,IAAMm5B,EAASniC,OAASyjG,EAAWzjG,QACpDymB,mBAAoBzd,EAAQA,UAAC,IAAMy6F,EAAWzjG,QAC9C+jB,SAAU/a,EAAAA,UAAS,IAEjB1J,EAAMykB,UAAaw/E,EAASvjG,OAAkC,iBAAlB6kG,EAAQ7kG,WAIlD6kG,QAAEA,EAAOC,aAAEA,GCrLd,SAAkBl3F,GAAuD,IAArD+xF,OAAEA,EAAM4D,SAAEA,EAAQ3+E,iBAAEA,GAA+BhX;AAC5E,MAAMi3F,EAAUt4F,cAAuC,GACjDw4F,EAAgBx4F,aAAW,GAE3Bu4F,EAAe97F,EAAAA,UAAS,KAC5B,MAAMiE,EAAgC,kBAAlB43F,EAAQ7kG,MAAsB,MAAQ6kG,EAAQ7kG;AAClE,MAAO,CACLujG,EAASvjG,MAAQ,CAAEsN,IAAK,OAAQC,OAAQ,OAAQS,YAAQlP,QAAcA,EACtE+lG,EAAQ7kG,MACJ,CAAEiN,CAACA,GAAOxM,EAAcskG,EAAc/kG,QACtC,CAAEsN,IAAKsX,EAAiB5kB,MAAMsN;AAItCu0B,EAAAA,WAAU,KACR3e,EAAKA,MAACqgF,GAAUh7F,IACVA,EACFrK,OAAOiS,iBAAiB,SAAU+yB,EAAU,CAAEK,SAAS,IAEvDrlC,OAAOgS,oBAAoB,SAAUgzB,KAEtC,CAAEvb,WAAW,OAGlB3E,EAAAA,iBAAgB,KACd9kB,OAAOgS,oBAAoB,SAAUgzB;AAGvC,IAAIy4B,EAAgB;AACpB,SAASz4B,IACP,MAAM8U,EAAY2jB,EAAgBz9D,OAAO8mG,QAAU,KAAO,OACpDz2F,EAAOoxF,EAAO3/F,MAAOqO,wBACrB42F,EAAY71F,WAAWwV,EAAiB5kB,MAAMsN,KAAO,GACrDA,EAAMpP,OAAO8mG,QAAUhgG,KAAKD,IAAI,EAAGggG,EAAc/kG,MAAQilG,GACzD13F,EACJgB,EAAKP,OACLhJ,KAAKD,IAAIggG,EAAc/kG,MAAOilG,GAC9B/mG,OAAO8mG,QACP9mG,OAAOk6B,YACH8sE,EAAa91F,WAAWX,iBAAiBkxF,EAAO3/F,OAAQ43B,iBAAiB,uBAAyB;AAEpGrpB,EAAKP,OAAS9P,OAAOk6B,YAAc6sE,GACrCJ,EAAQ7kG,MAAQ,MAChB+kG,EAAc/kG,MAAQilG,GAEP,OAAdjtD,GAAwC,WAAlB6sD,EAAQ7kG,OAChB,SAAdg4C,GAA0C,QAAlB6sD,EAAQ7kG,OAEjC+kG,EAAc/kG,MAAQ9B,OAAO8mG,QAAUz2F,EAAKjB,IAAM43F,EAClDL,EAAQ7kG,OAAQ,GACO,SAAdg4C,GAAwBzqC,GAAU,GAC3Cw3F,EAAc/kG,MAAQ,EACtB6kG,EAAQ7kG,MAAQ,UACO,OAAdg4C,GAAsB1qC,GAAO,IACjC43F,EAGwB,QAAlBL,EAAQ7kG,QACjB+kG,EAAc/kG,OAASsN,EAAM43F,EAAaD,EAC1CJ,EAAQ7kG,MAAQ,QAJhB+kG,EAAc/kG,MAAQuO,EAAKjB,IAAMA,EACjCu3F,EAAQ7kG,MAAQ,QAOpB27D,EAAgBz9D,OAAO8mG,QAGzB,MAAO,CAAEH,QAAAA,EAASC,aAAAA,GDmHkBK,CAAU,CAAExF,OAAAA,EAAQ4D,SAAAA,EAAU3+E,iBAAAA,IAE1DuuC,EAAan4B,GAAmBhyB,EAAAA,UAAS,IACf,iBAAhB1J,EAAMozD,MAAqBpzD,EAAMozD,MAAQ,QAEnD0yC,EAAcp8F,EAAAA,UAAS,KAAO,IAC/By6F,EAAWzjG,MAAQ,CACpB62B,QAA8B,GAArB6sE,EAAa1jG,MACtBomB,WAAY,aACVtnB,KACD+lB,EAAsB7kB;AAgH3B,OA7GA0X,GAAgB,CACdqyC,MAAO,CACL7hB,QAAS,iBAIb1rB,IAAU,KACR,MAAM8kB,EAAY5mB,EAAMojB,OAASx+B,EAAMw+B;AAEvC,OAAA7gB,EAAAA,YAAA6W,EAAAA,SAAA7W,KAAAA,CAAAA,EAAAA,YAAA3d,EAAAkb,IAAA6C,aAAA,CAAA/F,IAGYqoF,EAAMzvC,aACGjB,EAAYkB,aACZjB,EAAaj4C,MACrB,CACL,sBACC,wBAAuBvM,EAAS1K,QACjC,CACE,uCAAwCV,EAAMyjG,cAC9C,gCAAiCzjG,EAAM2hC,SACvC,mCAAoCm+D,EAAWp/F,MAC/C,4BAA6BV,EAAM2jG,KACnC,iCAAkCK,EAAYtjG,MAC9C,kCAAmCqjG,EAAarjG,MAChD,8BAA+BmiC,EAASniC,MACxC,8BAA+BujG,EAASvjG,OAE1CoyB,EAAapyB,MACbi7B,EAAuBj7B,MACvBugC,EAAcvgC,MACdy7C,EAAez7C,MACf2gC,EAAiB3gC,MACjBs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtB4kB,EAAiB5kB,MACjB8hC,EAAc9hC,MACd8kG,EAAa9kG,MACbV,EAAMkP,MACN,CAAC,MAAO,UAAUnJ,SAASqF,EAAS1K,OAAS,CAAEgO,OAAQ,QAAW,KAE/DojD,EACA9sD,GAAK,CAAAyS,QAAAA,IAERuqB,CAAAA,GAAQrkB,EAAAA,YAAA,MAAA,CAAAna,IAAA,QAAAmU,MAAA,4BAAA,CAEHyD,EAAMojB,MAMY7gB,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,iBAAAiV,UAKLzY,EAAMw+B,MAAKlnB,SACb,CACR0mB,KAAM,CACJb,IAAK,GACLC,OAAO,EACP1uB,OAAQ,UACRkvB,IAAK59B,EAAMw+B,SAGGpjB,EAAMojB,OApBd7gB,EAAAA,YAAAqgB,GAAA,CAAAx6B,IAAA,YAAA25B,IAAA,GAAAC,OAAA,EAAA1uB,OAAA,UAAAkvB,IAMJ59B,EAAMw+B,OAAK7gB,QAoBvBvC,EAAM6mB,SAAOtkB,EAAAC,YAAA,MAAA,CAAAjG,MAAA,gCAAA,CAETyD,EAAM6mB,cAEXtkB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,gCAGGyD,CAAAA,EAAM3D,cAGR2D,EAAM8mB,QAAMvkB,EAAAC,YAAA,MAAA,CAAAjG,MAAA,+BAAA,CAERyD,EAAM8mB,gBAEXvkB,EAAAC,YAAAiY,aAAA,CAAAzrB,KAAA,mBAAA,CAAAqN,QAAAA,IAAA,CAICusF,EAAYtjG,QAAUyjG,EAAWzjG,OAASmiC,EAASniC,UAAYV,EAAMozD,OAAKz1C,EAAAA,YAAA,MAAAI,EAAAA,WAAA,CAAApG,MAEjE,CAAC,6BAA8Bk8C,EAAWl4B,uBAAuBj7B,OAAMwO,MACvE,CAAC42F,EAAYplG,MAAOmzD,EAAWj4B,sBAAsBl7B,OAAM2nC,QACxDA,KACJ07D,EAAarjG,QACjBmiC,EAASniC,OAAQ,KAEdoxD,GAER,cAMFltC,EAAc+S,MAAK,KAAO,CAAE4tE,QAAAA,SEtT1BQ,GAASzrF,GAAgB,CACpClQ,KAAM,SAENoQ,MAAO6hB,EAAC/tB,GAAa,IAAX8M,MAAEA,GAAO9M;AACjB,MAAMo/B,EAAO8jB;AAEb,MAAO,IAAM9jB,EAAKhtC,OAAS0a,EAAM3D,eCgBxBuuF,GAAqB3uF,GAAa,CAC7CiiD,UAAWh1C,QACXyG,QAASxpB,OACT0kG,SAAU3hF,QACVyvB,MAAO,CACLzsC,KAAM/F,OACNkW,QAAS,sBAEXlY,OAAQ,CACN+H,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXkrB,WAAY,CACVr7B,KAAM,CAAC7F,OAAQF,QACfkW,aAASjY,GAEX8rB,YAAa/pB,OACb+F,KAAM,CACJA,KAAM/F,OACNkW,QAAS,aAGRuiB,QACAgc,QACAvxC,EAAKozD,GAAgB,CACtBz2C,QAAS,aACP,CACF,YACA,UACA,QACA,QACA,WACA,QACA,UACA,UACA,QACA,QACA,aAED,aAEU8kF,GAAYrrF,IAAAA,CAAmC,CAC1DzQ,KAAM,YAENpK,MAAOgmG,KAEP7nE,MAAO,CACLgoE,OAASl9F,IAAgB,EACzB,iBAAmBA,IAAiB,EACpC,oBAAsBA,IAAgB,GAGxCuR,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKmkB,KAAEA,EAAI/N,MAAEA,GAAO9M;AAClC,MAAMgsB,gBAAEA,GAAoBD,GAAar6B,IACnCu0C,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,GACtC+oB,EAAQR,GACZvoB,EACA,aACA,IACAiJ,GAAc,MAAPA,EAAc,GAAK1H,OAAO0H,GAAK3I,MAAM,MAC5C2I,GAAOA,EAAI+B,KAAK,OAEZ+H,EAAEA,GAAMge,KAERxxB,EAASmK,EAAAA,UAAS,IAAMjI,OAAOzB,EAAMT,UACrC6mG,EAAS18F,YAAS,IAAM/I,MAAMpB,EAAOmB,OAAO8oC,KAAK,KACjD68D,EAAaruF,EAAAA,KAAK,GAClB6nC,EAAa7nC,EAAAA,MACb+hD,EAAW/hD,MAAwB,IACnCgV,EAAUtjB,EAAAA,UAAS,IAAMqwD,EAASr5D,MAAM2lG,EAAW3lG;AAEzD,SAASo0C,IAGP,GAAIwxD,EAAct5E,EAAQtsB,MAAMA,OAE9B,YADAssB,EAAQtsB,MAAMA,MAAQ;AAIxB,MAAMypD,EAAQphC,EAAMroB,MAAM0I,QACpB1I,EAAQssB,EAAQtsB,MAAMA;AAE5BypD,EAAMk8C,EAAW3lG,OAASA;AAE1B,IAAImG,EAAc;AAEdw/F,EAAW3lG,MAAQqoB,EAAMroB,MAAMnB,OACjCsH,EAASkiB,EAAMroB,MAAMnB,OAAS,EACrB8mG,EAAW3lG,MAAQ,IAAMnB,EAAOmB,QACzCmG,EAAS,QAGXkiB,EAAMroB,MAAQypD,EAEVtjD,GAAQ+E,EAAWi0C,EAAWn/C,MAAQmG,GAG5C,SAASy6C,EAAWlW,GAClB,MAAM+e,EAAQphC,EAAMroB,MAAM0I,QACpB+M,EAAQkwF,EAAW3lG;AACzB,IAAImG,EAA6D,KAE5D,CACH,YACA,aACA,YACA,UACAd,SAASqlC,EAAE5nC,OAEb4nC,EAAEoW,iBAEY,cAAVpW,EAAE5nC,IACJqD,EAAS,OACU,eAAVukC,EAAE5nC,IACXqD,EAAS,OACA,CAAC,YAAa,UAAUd,SAASqlC,EAAE5nC,OAC5C2mD,EAAMk8C,EAAW3lG,OAAS,GAE1BqoB,EAAMroB,MAAQypD,EAEVk8C,EAAW3lG,MAAQ,GAAe,cAAV0qC,EAAE5nC,IAC5BqD,EAAS,OAET6vB,uBAAsB,KACpBqjC,EAASr5D,MAAMyV,IAAQ0vB,aAK7BnP,uBAAsB,KACN,MAAV7vB,GACF+E,EAAWi0C,EAAWn/C,MAAQmG,OA4BpC,SAAS8tC,IACPyB,IAEAiwD,EAAW3lG,OAAS,EAGtB,SAAS4lG,EAAe5lG,GACtB,MAAsB,WAAfV,EAAMsH,MAAqB,UAAUlD,KAAK1D,GA0HnD,OAvHA0X,GAAgB,CACdigD,OAAQ,CACNpkD,MAAOvK,EAAQA,UAAC,IAAM1J,EAAMiU,QAC5B20B,QAASl/B,EAAQA,UAAC,IAAM1J,EAAMiU,QAC9BgxB,UAAWv7B,EAAQA,UAAC,IAAM1J,EAAMilC,YAChCxsB,SAAU/O,EAAQA,UAAC,IAAM1J,EAAMyY,WAC/B4G,MAAO3V,EAAQA,UAAC,IAAM1J,EAAMqf,QAC5B+B,QAAS1X,EAAQA,UAAC,IAAM1J,EAAMohB,YAE/B,CAAE1I,QAAQ,IAEbkL,EAAKA,MAACmF,GAAO9f,IACPA,EAAI1J,SAAWA,EAAOmB,OAAOyoB,EAAK,SAAUlgB,EAAI+B,KAAK,OACxD,CAAE6xD,MAAM,IAEXj5C,EAAKA,MAACyiF,GAAYp9F,IACZA,EAAM,GAEV4b,EAAAA,UAAS,KACPk1C,EAASr5D,MAAMuI,IAAM48B,eAIzB3oB,IAAU,KACR,MAAO/X,EAAWC,GAAcL,EAAiBC;AAEjD,OAAA2Y,EAAAC,kBAAAG,aAAA,CAAApG,MAEW,CACL,cACA,CACE,yBAA0B3X,EAAM+qB,SAElC/qB,EAAM2X,OACPzI,MACM,CACLlP,EAAMkP,QAEH/J,IAASwY,EAAAC,YAAA,MAAA,CAAA5F,IAGN6nC,EAAUloC,MAAA,uBAAAzI,MAET,CACLorB,EAAgB55B,QAGhB0lG,CAAAA,EAAO1lG,MAAM0G,KAAI,CAACi1B,EAAG58B,IAACke,EAAAC,YAAA4W,EAAAjtB,SAElBvH,KAAAA,CAAAA,EAAM+qB,SAAiB,IAANtrB,GAAOke,EAAAC,YAAA,OAAA,CAAAjG,MAAA,wBAAA,CACa3X,EAAM+qB,UAC5CpN,EAAAA,YAAA06C,GAAA,CAAApiB,QAGY1B,EAAU7zC,OAASV,EAAMimG,UAAaI,EAAW3lG,QAAUjB,EAAC+D,IACjE/D,GAAC,IAGF2b,EACH42B,YAAQxyC,EACRiY,QAASA,IACPkG,EAAAA,YAAA,QAAA,CAAA3F,IAEU/O,GAAO8wD,EAASr5D,MAAMjB,GAAKwJ,EAAuB,aAC3C8J,EAAE/S,EAAM+zC,MAAOt0C,EAAI,GAAE65D,UAChB,IAAN75D,GAAWO,EAAMs5D,UAASitC,aAAA,gBAAA5uF,MAE/B,CACL,sBACDc,SACUzY,EAAMyY,SAAQ4nD,UACE,WAAfrgE,EAAMsH,KAAoB,UAAY,OAAM9B,IACnC,WAAfxF,EAAMsH,KAAoB,OAAI9H,EAASm6D,UAAA,IAAAruC,YAE/BtrB,EAAMsrB,YAAWhkB,KACT,WAAftH,EAAMsH,KAAoB,OAAStH,EAAMsH,KAAI5G,MAC5CqoB,EAAMroB,MAAMjB,GAAEq1C,QACZA,EAAOJ,QACPtJ,GA9FhC,SAAkBA,EAAej1B,GAC/BrK,IAEAu6F,EAAW3lG,MAAQyV,EA2FgBu+B,CAAQtJ,EAAG3rC,GAAEk1C,OACnBA,EAAM2M,UACHA,EAASklD,QACX1qF,GAlHhC,SAAkB3F,EAAei1B,GAC/BA,EAAEoW,iBACFpW,EAAEyJ;AAEF,MAAM4xD,EAAgBr7D,GAAGs7D,eAAe9qF,QAAQ,SAAW;AAEvD0qF,EAAcG,KAElB19E,EAAMroB,MAAQ+lG,EAAcnmG,MAAM,IAElCy5D,EAASr5D,QAAQyV,GAAOigC,QAwGeowD,CAAQ/mG,EAAGqc,IAAM,YAOhD6B,cAAA,QAAAI,EAAAA,WAAA,CAAApG,MAAA,oBAAArQ,KAAA,UAKKlC,EAAU,CAAA1E,MACPqoB,EAAMroB,MAAMsK,KAAK,MAAG2S,MAAAA,EAAAC,YAAAy1C,GAAA,CAAA/E,WAAA,EAAA,gBAAA,sBAAA,gBAMZtuD,EAAMugB,QAAO4yC,YAAA,GAAA,CAAA17C,QAAAA,IAAA,CAG3B2D,EAAM42B,YAAUr0B,EAAAA,YAAAorB,GAAA,CAAA90B,MAEmB,kBAAlBjU,EAAMugB,aAAwB/gB,EAAYQ,EAAMugB,QAAOsoB,eAAA,EAAAhgC,KAAA,KAAA4F,MAAA,KAKzE,SAGD2M,EAAM3D,mBAMT,CACL2+B,KAAMA,KACJ2jB,EAASr5D,OAAOwD,MAAKmnB,GAASA,EAAM+qB,UAEtCtqC,MAAOA,KACLiuD,EAASr5D,QAAQ,GAAGoL,SAEtB6M,MAlJF,WACEoQ,EAAMroB,MAAQ,IAkJd6zC,UAAAA;AC7SC,MAAMoyD,GAAqBtvF,GAAa,CAC7C22B,MAAO,CACL1mC,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,OAGRC,MACF,aAEUkvF,GAAY/rF,IAAAA,CAA8B,CACrDzQ,KAAM,YAENpK,MAAO2mG,KAEPnsF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMo6B,gBAAEA,EAAe5L,eAAEA,GAAmB2L,MACtCnlB,UAAEA,EAASC,YAAEA,GAAgBJ,MAC3BzU,OAAQm4F,GAAkB5qD,KAE5BrjC,EAAOZ,EAAAA;AAMb,IAAIw9C;AAJJ7rD,EAAAA,aAAY,KACV++B,EAAgBhoC,MAAQ4iB,EAAU5iB,MAAQkY,EAAKlY,OAAOmB,OAIxD+hB,EAAKA,MAACkZ,GAAgB7zB,IAChBA,GACFusD,EAAel5C,GAAgBosB,EAAgBhoC,OAC/C80D,EAAeA,IAAiBhqD,SAASmR,iBAAmBnR,SAAWgqD,EACvEA,EAAa3kD,iBAAiB,SAAU+yB,EAAU,CAAEK,SAAS,IAC7DL,KAEA4xB,EAAa5kD,oBAAoB,SAAUgzB,MAI/ClgB,EAAAA,iBAAgB,KACd8xC,GAAc5kD,oBAAoB,SAAUgzB,MAG9ChgB,QAAMijF,EAAejjE,GACrBhgB,EAAAA,OAAM,IAAML,EAAY7iB,OAAOgO,QAAQk1B;AAEvC,MAAMoK,EAAQtkC,EAAAA,UAAS,IACd,EAAInE,GAAOvF,EAAMguC;AAG1B,IAAIiS,GAAS;AACb,SAASrc,IACF9G,EAAep8B,QAEpBw/C,qBAAqBD,GACrBA,EAAQvpB,uBAAsB,KAC5B,MAAM90B,EAA0BgX,EAAKlY,OAAOmB,IAAgBk2B,cAAc;AAC1E,IAAKn2B,EAAI;AAET,MAAMob,EAAew4C,aAAwBsxC,SAAWt7F,SAASygD,gBAAgBhvC,aAAeu4C,EAAav4C,aACvG8pF,EAAYvxC,aAAwBsxC,SAAWloG,OAAO8mG,QAAUlwC,EAAazxB,UAC7E/1B,EAAM06B,EAAgBhoC,MAAOqO,wBAAwBf,IAAM+4F,EAC3Dr4F,EAAS6U,EAAY7iB,MAAOgO,OAG5Bs4F,GAnEE/9F,GAmEiB89F,GADV/4F,GAAOU,EAASsO,GAAgB,IACAgxB,EAAMttC,MAlEpDgF,KAAK64C,MAAM74C,KAAKe,IAAIwC,IAAQvD,KAAK+2D,KAAKxzD;AAD/C,IAAgBA;AAoER,MAAMg+F,EAAYvhG,KAAKD,IAAI,GAAIuoC,EAAMttC,OAASsc,EAAetO,GAAUA,GAAUA;AAEjF9M,EAAGsN,MAAMwmB,YAAY,YAAc,cAAasxE,cAAsBC,UAoB1E,OAhBA/pF,IAAU,IAAAS,EAAAC,YAAAogB,GAAA,CAAArmB,MAEC,CACL,aACA,CAAE,qBAAsBmlB,EAAep8B,OACvCV,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAK8I,IACbY,EAAIwkB,OAAA,EAAA8pE,YAEItjE,EAAQzE,OACbyE,GACCxoB,KAIP,MCpGE+rF,GAAkB9vF,GAAa,IACvCy8B,GAA2B,CAC5BT,UAAW,YACXC,SAAU,cAEX,UAEU8zD,GAASvsF,IAAAA,CAA2C,CAC/DzQ,KAAM,SAENpK,MAAOmnG,KAEP3sF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAcrB,OAbA4O,IAAU,IAAAS,EAAAC,YAAAs2B,GAAAn2B,EAAAA,WAED/d,EAAK,CAAA2X,MACH,CACL,UACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAK5H,KAAA,UAET8T,KAIP,MCNEisF,GAAuBhwF,GAAa,CAC/C3I,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,WAGR2gC,QACA/zC,EAAK8uC,KAAkC,CAAC,aAE3CG,SAAU,CACRhsC,KAAM8V,GACN3F,QAAS,YAEX47B,UAAW,CACT/rC,KAAM8V,GACN3F,QAAS,aAEXnQ,KAAM,CACJA,KAAM/F,OACNkW,QAAS,UAEV,eAEU6vF,GAAczsF,IAAAA,CAMsB,CAC/CzQ,KAAM,cAEN0T,cAAc,EAEd9d,MAAOqnG,KAEPlpE,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAM+N,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,eAAc7I,MAC/C0M,EAAQR,GAAgBvoB,EAAO;AA+DrC,OA7DAkd,IAAU,KACR,MAAO/X,EAAW+zC,GAAgBn0C,EAAiBC,GAC7Cm0C,EAAaR,GAAOj+B,YAAY1a,GAChCs1C,EAAepB,GAAkBx5B,YAAY1a,GAC7C+zC,EAAQ34B,EAAM24B,MAChB34B,EAAM24B,MAAM,CACZA,MAAO/zC,EAAM+zC,MACb/zC,MAAO,CAAE8X,IAAKoN,EAAGxkB,SAEjBV,EAAM+zC;AAEV,OAAAp2B,EAAAC,YAAA+6B,GAAA56B,aAAA,CAAApG,MAEW,CACL,gBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OACT/J,EACAg0C,EAAU,CAAAxW,WACL5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAArwB,GAChBA,EAAGxkB,QAAK,IAGR0a,EACH3D,QAASzB,IAAA,IAACkP,GACRA,EAAE0zB,WACFA,EAAU/mB,WACVA,EAAUwlB,WACVA,GACDrhC;AAAA,OAAA2H,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAEKuf,GAAKp2B,EAAAC,YAAAq1B,GAAA,CAAA/tB,GACQA,EAAGxkB,OAAK,CAAA+W,QAAAA,IAAA,CACjBs8B,KAELp2B,EAAAC,YAAA61B,GAAA11B,EAAAA,WAGMu3B,EAAY,CAAApwB,GACZA,EAAGxkB,MAAK,mBACMk4C,EAAWl4C,MAAK0yC,eAAA,SAAAE,SAExBtzC,EAAMszC,SAAQD,UACbrzC,EAAMqzC,UAAS/rC,KACpBtH,EAAMsH,KAAImR,SACNoZ,EAAWnxB,MAAKwM,SAChBmqC,EAAW32C,MAAK,kBACTqzC,EAAQ7uB,EAAGxkB,WAAQlB,EAAS4lC,UACnC,GACN8T,EAAY,CAAAvW,WACP5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,IACXn6B,WASjB,MChHEmsF,GAAwBlwF,GAAa,IAC7C2+B,QACAoC,QACAg0B,KAEHo7B,OAAQljF,QACRqe,WAAY,CACVr7B,KAAM3G,MACN8W,QAASA,IAAO,CAAC,EAAG,KAErB,gBAEUgwF,GAAe5sF,IAAAA,CAAiC,CAC3DzQ,KAAM,eAENpK,MAAOunG,KAEPppE,MAAO,CACL,iBAAmBz9B,IAAmB,EACtC,oBAAsBA,IAA4B,EAClDmC,IAAMnC,IAA4B,EAClCI,MAAQJ,IAA4B,GAGtC8Z,MAAOxa,EAAKsO,GAAmB,IAAjB8M,MAAEA,EAAK+N,KAAEA,GAAM7a;AAC3B,MAAMo5F,EAAgB1vF,EAAAA,MAChB2vF,EAAe3vF,EAAAA,MACf+hD,EAAW/hD,EAAAA,OACX6Y,WAAEA,GAAeM;AAcvB,MAAMg8C,EAAQL,GAAS9sE,GAEjB+oB,EAAQR,GACZvoB,EACA,kBACAR,GACAsK,GACOA,GAAKvK,OAEHuK,EAAI1C,KAAI1G,GAASysE,EAAMH,WAAWtsE,KAFhB,CAAC,EAAG,MAM3BmtE,eACJA,EAAcgB,UACdA,EAASppE,IACTA,EAAGD,IACHA,EAAGkoE,aACHA,EAAYoB,kBACZA,EAAiBC,mBACjBA,EAAkBnoD,SAClBA,EAAQgnD,kBACRA,EAAiB1gE,SACjBA,GACEggE,GAAU,CACZltE,MAAAA,EACAmtE,MAAAA,EACAC,cAAeA,KACbjkD,EAAK,QAASJ,EAAMroB,QAEtB4sE,YAAat3D,IAAe,IAAdtV,MAAEA,GAAOsV;AACrB,MAAM6N,EAA6BgqD,EAAentE,QAAUgnG,EAAchnG,OAAOmB,IAC7E,CAACnB,EAAOqoB,EAAMroB,MAAM,IACpB,CAACqoB,EAAMroB,MAAM,GAAIA;CAEhBV,EAAMwnG,QAAU3jF,EAAS,GAAKA,EAAS,KAC1CkF,EAAMroB,MAAQmjB,GAGhBsF,EAAK,MAAOJ,EAAMroB,QAEpB2sE,aAAc9oB,IAAe,IAAd7jD,MAAEA,GAAO6jD;AACtB,MAAOzjD,EAAOsnB,GAAQW,EAAMroB;AAEvBV,EAAMwnG,QAAU1mG,IAAUsnB,GAAQtnB,IAAU0E,EAAI9E,QACnDmtE,EAAentE,MAAQA,EAAQI,EAAQ6mG,EAAajnG,OAAOmB,IAAM6lG,EAAchnG,OAAOmB,IACtFgsE,EAAentE,OAAOoL,SAGpB+hE,EAAentE,QAAUgnG,EAAchnG,OAAOmB,IAChDknB,EAAMroB,MAAQ,CAACgF,KAAKF,IAAI9E,EAAO0nB,GAAOA,GAEtCW,EAAMroB,MAAQ,CAACI,EAAO4E,KAAKD,IAAI3E,EAAOJ,KAG1C6sE,eAnEF,SAAyBniC,GACvB,IAAKs8D,EAAchnG,QAAUinG,EAAajnG,MAAO;AAEjD,MAAMitE,EAAc3jC,GAAUoB,EAAGs8D,EAAchnG,MAAMmB,IAAK7B,EAAM04C,WAC1DkvD,EAAa59D,GAAUoB,EAAGu8D,EAAajnG,MAAMmB,IAAK7B,EAAM04C,WAExD/4C,EAAI+F,KAAKe,IAAIknE,GACb/tE,EAAI8F,KAAKe,IAAImhG;AAEnB,OAAQjoG,EAAIC,GAAMD,IAAMC,GAAK+tE,EAAc,EAAM+5B,EAAchnG,MAAMmB,IAAM8lG,EAAajnG,MAAMmB,QA6D1F0yC,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,GACtC+tE,EAAarkE,EAAQA,UAAC,IAAMkd,EAASmC,EAAMroB,MAAM,MACjDiwE,EAAYjnE,EAAQA,UAAC,IAAMkd,EAASmC,EAAMroB,MAAM;AAsJtD,OApJAwc,IAAU,KACR,MAAMi8B,EAAaR,GAAOj+B,YAAY1a,GAChC6xC,KAAgB7xC,EAAM+zC,OAAS34B,EAAM24B,OAAS34B,EAAM6mB;AAE1D,OAAAtkB,EAAAC,YAAA+6B,GAAA56B,aAAA,CAAApG,MAEW,CACL,WACA,iBACA,CACE,yBAA0ByD,EAAM,eAAiByzD,EAAUnuE,MAC3D,oBAAqB6zC,EAAU7zC,MAC/B,oBAAqBgtE,EAAahtE,MAClC,qBAAsBV,EAAMyY,UAE9BoY,EAAWnwB,MACXV,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAK8I,IACb+hD,GACD5gB,EAAU,CAAAlD,QACL1B,EAAU7zC,QAAK,IAGpB0a,EACH6mB,QAAS4P,EAAagH,GAASl7B,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAEzBpZ,EAAM24B,QAAQ8E,KACd74C,EAAM+zC,MAAKp2B,EAAAA,YAAAs1B,GAAA,CAAAt7B,MAAA,kBAAAhG,KAIE3R,EAAM+zC,OAEbv0C,WAAAA,GAGN4b,EAAM6mB,UAAU4W,UAElBr5C,EACJiY,QAAS8tC,IAAA,IAACrgC,GAAEA,EAAE0zB,WAAEA,GAAY2M;AAAA,OAAA5nC,EAAAA,YAAA,MAAA,CAAAhG,MAAA,sBAAAuqC,YAGTh1C,EAASxM,WAA4BlB,EAApBsvE,EAA6BxD,oBACtCp+D,EAASxM,WAA6BlB,EAArBuvE,GAA8B,CAAApxD,EAAAC,YAAA,QAAA,CAAAsH,GAG9D,GAAEA,EAAGxkB,cAAa0J,KACjBpK,EAAMoK,MAAQ8a,EAAGxkB,MAAK+X,WAChBzY,EAAMyY,SAAQvL,WACdlN,EAAMkN,SAAQs7B,SAAA,KAAA9nC,MAEnBqoB,EAAMroB,MAAM,IAAE,MAAAid,EAAAC,YAAA,QAAA,CAAAsH,GAIhB,GAAEA,EAAGxkB,aAAY0J,KAChBpK,EAAMoK,MAAQ8a,EAAGxkB,MAAK+X,WAChBzY,EAAMyY,SAAQvL,WACdlN,EAAMkN,SAAQs7B,SAAA,KAAA9nC,MAEnBqoB,EAAMroB,MAAM,IAAEid,MAAAA,EAAAC,YAAA+xD,GAAA,CAAA33D,IAIhB41D,EAAiB9sE,MACfitE,EAAWrtE,MAAK0nB,KACjBuoD,EAAUjwE,OAAK,CAEnB,aAAc0a,EAAM,gBAAauC,EAAAC,YAAAqxD,GAAA,CAAAj3D,IAI9B0vF,EAAa,mBACA9uD,EAAWl4C,MAAKu1C,QACzB1B,GAAas5B,EAAentE,QAAUgnG,EAAchnG,OAAOmB,IAAG8gC,WAC3D5Z,EAAMroB,MAAM,GAAE,sBACLO,GAAM8nB,EAAMroB,MAAQ,CAACO,EAAG8nB,EAAMroB,MAAM,IAAIg0C,QACnDtJ,IACTt/B,IACA+hE,EAAentE,MAAQgnG,EAAchnG,OAAOmB,IAO1CknB,EAAMroB,MAAM,KAAOqoB,EAAMroB,MAAM,IAC/BqoB,EAAMroB,MAAM,KAAO8E,EAAI9E,OACvB0qC,EAAEgW,gBAAkBumD,EAAajnG,OAAOmB,MAExC6lG,EAAchnG,OAAOmB,IAAIu0C,OACzBuxD,EAAajnG,OAAOmB,IAAIiK,UAE3B6oC,OACQA,KACPyB,IACAy3B,EAAentE,WAAQlB,GACxBgG,IACKA,EAAI9E,MAAK+E,IACTsjB,EAAMroB,MAAM,GAAEkmB,SACTmnD,EAAWrtE,MAAKuwC,OAClBjxC,EAAMixC,QAAM,CAElB,cAAe71B,EAAM,iBAAcuC,EAAAC,YAAAqxD,GAAA,CAAAj3D,IAIhC2vF,EAAY,mBACC/uD,EAAWl4C,MAAKu1C,QACzB1B,GAAas5B,EAAentE,QAAUinG,EAAajnG,OAAOmB,IAAG8gC,WAC1D5Z,EAAMroB,MAAM,GAAE,sBACLO,GAAM8nB,EAAMroB,MAAQ,CAACqoB,EAAMroB,MAAM,GAAIO,GAAGyzC,QACnDtJ,IACTt/B,IACA+hE,EAAentE,MAAQinG,EAAajnG,OAAOmB,IAOzCknB,EAAMroB,MAAM,KAAOqoB,EAAMroB,MAAM,IAC/BqoB,EAAMroB,MAAM,KAAO+E,EAAI/E,OACvB0qC,EAAEgW,gBAAkBsmD,EAAchnG,OAAOmB,MAEzC8lG,EAAajnG,OAAOmB,IAAIu0C,OACxBsxD,EAAchnG,OAAOmB,IAAIiK,UAE5B6oC,OACQA,KACPyB,IACAy3B,EAAentE,WAAQlB,GACxBgG,IACKujB,EAAMroB,MAAM,GAAE+E,IACdA,EAAI/E,MAAKkmB,SACJ+pD,EAAUjwE,MAAKuwC,OACjBjxC,EAAMixC,QAAM,CAElB,cAAe71B,EAAM,yBAS/B,MCrOEysF,GAAmBxwF,GAAa,CAC3CjN,KAAM7I,OACNumG,cAAe,CACbxgG,KAAM/F,OACNkW,QAAS,kCAEX6vC,YAAa/lD,OACb0S,MAAO1S,OACPw2D,UAAWzzC,QACX7L,SAAU6L,QACVyjF,UAAW,CACTzgG,KAAM8V,GACN3F,QAAS,gBAEXuwF,SAAU,CACR1gG,KAAM8V,GACN3F,QAAS,eAEXwwF,eAAgB3jF,QAChBohD,MAAOphD,QACP/kB,OAAQ,CACN+H,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXvK,SAAUoX,QACVqe,WAAY,CACVr7B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXywF,WAAYvnG,MACZwnG,kBAAmB,CACjB7gG,KAAM/F,OACNkW,QAAS,MACTwkB,UAAYh7B,GAAW,CAAC,MAAO,UAAU8E,SAAS9E,IAEpDgwC,OAAQ3sB,WAEL5M,QACA6sB,QACA8C,QACA5S,QACApD,MACF,WAEU+2E,GAAUvtF,IAAAA,CAAiC,CACtDzQ,KAAM,UAENpK,MAAO6nG,KAEP1pE,MAAO,CACL,oBAAsBz9B,IAA2B,GAGnD8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMyE,EAAEA,GAAMge,MACR+B,aAAEA,GAAiBgB,GAAa9zB,GAChCysB,EAASlE,GAAgBvoB,EAAO,cAChCopC,EAAkB1/B,EAAAA,UAAS,IAAMnE,EAAMuK,WAAW2c,EAAO/rB,OAAQ,GAAIV,EAAMT,UAE3E2rB,EAAQxhB,YAAS,IAAM7I,EAAYY,OAAOzB,EAAMT,QAAS,KACzD8oG,EAAa3+F,EAAAA,UAAS,IAAMwhB,EAAMxqB,MAAMgyB,SAAQzxB,GAAKjB,EAAMioG,eAAiB,CAAChnG,EAAI,GAAKA,GAAK,CAACA,OAC5FqnG,EAAar7F,EAAAA,YAAY,GAEzBs7F,EAAY7+F,EAAAA,UAAS,IAAM2+F,EAAW3nG,MAAM0G,KAAI1G,IACpD,MAAMo/F,EAAa9/F,EAAM0lE,OAAS4iC,EAAW5nG,OAAS,EAChD8nG,EAAWp/D,EAAgB1oC,OAASA,EACpC2vD,EAAYi4C,EAAW5nG,OAASA,EAEhC6c,GADauiF,EAAazvC,EAAYm4C,GAClBxoG,EAAMgoG,SAAWhoG,EAAM+nG,UAC3CzgD,EAActnD,EAAMsnD,aAAetnD,EAAMiU;AAG/C,MAAO,CAAEu0F,SAAAA,EAAUn4C,UAAAA,EAAW9yC,KAAAA,EAAMtJ,MAFrBu0F,GAAYn4C,EAAa/I,EAActnD,EAAMiU,YAKxDw0F,EAAa/+F,YAAS,IAAM,CAAC,KAAM2+F,EAAW3nG,OAAO0G,KAAI1G,IActD,CACLkwD,aAAc5wD,EAAM0lE,MAdtB,WACE4iC,EAAW5nG,MAAQA,QAawBlB,EAC3CqxD,aAAc7wD,EAAM0lE,MAXtB,WACE4iC,EAAW5nG,OAAS,QAUuBlB,EAC3C6oC,QARF,WACMroC,EAAMyY,UAAYzY,EAAMkN,WAC5Buf,EAAO/rB,MAAQ0oC,EAAgB1oC,QAAUA,GAASV,EAAM+3D,UAAY,EAAIr3D,UAUtE0J,EAAOV,YAAS,IAAM1J,EAAMoK,MAAS,YAAWgS;AAEtD,SAASssF,EAAW1yF,GAA2F,IAAzFtV,MAAEA,EAAKyV,MAAEA,EAAKwyF,SAAEA,GAAW,GAA4D3yF;AAC3G,MAAM46C,aAAEA,EAAYC,aAAEA,EAAYxoB,QAAEA,GAAYogE,EAAW/nG,MAAMyV,EAAQ,GACnE+O,EAAM,GAAE9a,EAAK1J,SAASa,OAAOb,GAAOL,QAAQ,IAAK,OACjDy5F,EAAW,CACf7lF,MAAOs0F,EAAU7nG,MAAMyV,IAAQlC,MAC/ButB,QAASxhC,EAAMwhC,QACf/oB,SAAUzY,EAAMyY,SAChB8E,KAAMgrF,EAAU7nG,MAAMyV,IAAQoH,KAC9B0zB,OAAQjxC,EAAMixC,OACdpoC,KAAM7I,EAAM6I,KACZuY,QAAS;AAGX,OAAAzD,EAAAC,YAAA4W,EAAAjtB,SAAA,KAAA,CAAAoW,EAAAA,YAAA,QAAA,CAAA7F,IAGYoN,EAAEvN,MACD,CACL,uBAAwB3X,EAAMioG,gBAAkBvnG,EAAQ,EAAI,EAC5D,uBAAwBV,EAAMioG,gBAAkBvnG,EAAQ,GAAM,GAC/DkwD,aACcA,EAAYC,aACZA,EAAYxoB,QACjBA,GAAO,CAAA1qB,EAAAC,YAAA,OAAA,CAAAjG,MAAA,oBAEgB5E,CAAAA,EAAE/S,EAAM8nG,cAAepnG,EAAOV,EAAMT,UAElEopG,EACCvtF,EAAM5a,KAAO4a,EAAM5a,KAAK,IACrB+nG,EAAU7nG,MAAMyV,GACnBnW,MAAO85F,EACPp5F,MAAAA,EACAyV,MAAAA,EACAsW,OAAQ2c,EAAgB1oC,QACxBid,EAAAA,YAAA2D,GAAAvD,aAAA,CAAA,aAGehL,EAAE/S,EAAM8nG,cAAepnG,EAAOV,EAAMT,SAC5Cu6F,GAER,WAbWt6F,IAaXme,EAAAA,YAAA,QAAA,CAAAhG,MAAA,mBAAAvN,KAMIA,EAAK1J,MAAKwkB,GACZA,EAAE5d,KAAA,QAAA5G,MAECA,EAAKq0C,QACH3L,EAAgB1oC,QAAUA,EAAK8nC,UAC7B,EAACt7B,SACFlN,EAAMkN,SAAQuL,SACdzY,EAAMyY,UAAQ,QAMjC,SAASmwF,EAAaC,GACpB,OAAIztF,EAAM,cAAsBA,EAAM,cAAcytF,GAEhDA,EAAW90D,MAAOp2B,cAAA,OAAA,KAAA,CAAekrF,EAAW90D,QAEhDp2B,EAAAA,yBAAA8iD,EAAAA,gBAAA,OAiDF,OA9CAvjD,IAAU,KACR,MAAM2xD,IAAc7uE,EAAMkoG,YAAY3oG,QAAU6b,EAAM;AAEtD,OAAAuC,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,WACA,CACE,kBAAmB3X,EAAM0lE,MACzB,qBAAsB1lE,EAAMkN,UAE9B4lB,EAAapyB,MACbV,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAuI,QAAAA,IAAAkG,CAAAA,EAAAC,YAAA8qF,EAAA,CAAAhoG,MAEE,EAACyV,OAAY,EAACwyF,UAAc,GAE/Cz9E,MAAAA,EAAMxqB,MAAM0G,KAAI,CAAC1G,EAAOjB,IAACke,EAAAC,YAAA,MAAA,CAAAjG,MAAA,qBAGrBk3D,CAAAA,GAAyC,QAA5B7uE,EAAMmoG,kBACfS,EAAY,CAAEloG,MAAAA,EAAOyV,MAAO1W,EAAGs0C,MAAO/zC,EAAMkoG,aAAazoG,UACzDD,EAASme,EAAAC,YAAA,MAAA,CAAAjG,MAAA,kBAGX3X,CAAAA,EAAMioG,eAActqF,EAAAC,YAAA4W,EAAAjtB,SAAA,KAAA,CAAAoW,EAAAC,YAAA8qF,EAAA,CAAAhoG,MAEGA,EAAQ,GAAGyV,MAAe,EAAJ1W,GAAKke,MAAAA,EAAAC,YAAA8qF,EAAA,CAAAhoG,MAC3BA,EAAKyV,MAAgB,EAAJ1W,EAAS,GAACke,QAAAA,EAAAA,YAAA+qF,EAAA,CAAAhoG,MAG7BA,EAAKyV,MAAW1W,GACtC,QAGDovE,GAAyC,WAA5B7uE,EAAMmoG,kBACfS,EAAY,CAAEloG,MAAAA,EAAOyV,MAAO1W,EAAGs0C,MAAO/zC,EAAMkoG,aAAazoG,UACzDD,YAQT,MC3OEspG,GAAY,CACvBhlC,QAAS,WACTilC,QAAS,qBACTllC,OAAQ,SACRnyB,OAAQ,SACRs3D,KAAM,iBACN,cAAe,0BACf9oC,KAAM,OACN,cAAe,8EACf,sBAAuB,iBACvB,mBAAoB,YACpBn1C,QAAS,UACTk+E,QAAS,UACTzqE,MAAO,QACP,YAAa,OACb,mBAAoB,eACpB,qBAAsB,YACtB,4BAA6B,oBAC7B,uBAAwB,YACxB,8BAA+B,oBAC/B0qE,OAAQ,SACRC,UAAW,SACXC,UAAW,SACX9gD,SAAU,OACV+gD,MAAO,uDACP,gBAAiB,aACjB,cAAe,YACf,cAAe,sBACf,oBAAqB,qBACrB,YAAa,SACb,cAAe,mBACf13F,KAAM;AAGR,SAAS23F,GAAShiG,GAA6C,IAA/BE,EAAwBzG,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACzD,OAAA4c,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,0BACC,sBAAqBrQ,MACvB,CAECE,IAKR,SAAS+hG,GAAUC,GAEjB,MAAOliG,EAAM/H,GAAUiqG,EAAKlpG,MAAM;AAIlC,OAAOK,MAAMK,KAAK,CAAEzB,OAAAA,IAAU6H,KAAI,IAAMqiG,GAAaniG,KAGvD,SAASmiG,GAAcniG,GACrB,IAAIE,EAA2B;AAE/B,IAAKF,EAAM,OAAOE;AAGlB,MAAMgiG,EAAQV,GAAqCxhG;AAInD,GAAIA,IAASkiG,OAER,CAAA,GAAIliG,EAAKvB,SAAS,KAAM,OAAO2jG,GAASpiG;AAExC,GAAIA,EAAKvB,SAAS,KAAM,OAAOwjG,GAASjiG;AAEpCkiG,EAAKzjG,SAAS,KAAMyB,EAAWkiG,GAASF,GAExCA,EAAKzjG,SAAS,KAAMyB,EAAW+hG,GAASC,GAExCA,GAAMhiG,EAASwB,KAAKygG,GAAaD,IAE1C,MAAO,CAACF,GAAQhiG,EAAME,IAGxB,SAASkiG,GAAUC,GAEjB,OAAOA,EAAMtpG,QAAQ,MAAO,IAAIC,MAAM,KAAK8G,IAAIqiG,IAG1C,MAAMG,GAA2BvyF,GAAa,CACnDwyF,YAAavlF,QACbrQ,MAAO1S,OACPgf,QAAS+D,QACTsF,YAAa,CACXtiB,KAAM/F,OACNkW,QAAS,oBAEXnQ,KAAM,CACJA,KAAM,CAAC/F,OAAQZ,OAIf8W,QAAS,aAGRuiB,QACAkH,QACA7P,MACF,mBAEUy4E,GAAkBjvF,IAAAA,CAAmB,CAChDzQ,KAAM,kBAENpK,MAAO4pG,KAEPpvF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMqtB,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,WACpFs6B,gBAAEA,GAAoBD,GAAar6B,IACnCqhC,iBAAEA,GAAqBD,GAAaphC,IACpC8yB,aAAEA,GAAiBgB,GAAa9zB,IAChC+S,EAAEA,GAAMge,KAERvK,EAAQ9c,EAAAA,UAAS,IAAM+/F,GAAankG,EAAYtF,EAAMsH,MAAM0D,KAAK;AA8BvE,OA5BAkS,IAAU,KACR,MAAM6sF,GAAa3uF,EAAM3D,SAAWzX,EAAMugB;AAE1C,OAAA5C,EAAAA,YAAA,MAAA,CAAAhG,MAEW,CACL,oBACA,CACE,iCAAkC3X,EAAM6pG,aAE1C/2E,EAAapyB,MACbi7B,EAAuBj7B,MACvB2gC,EAAiB3gC,OAClBwO,MACM,CACL0sB,EAAsBl7B,MACtBqpG,EAAYzvE,EAAgB55B,MAAQ,IACrC,YACYV,EAAM6pG,iBAA0BrqG,EAAZuqG,EAAqB,YACzC/pG,EAAM6pG,iBAAyBrqG,EAAX,SAAoB,aACvCQ,EAAM6pG,iBAAqCrqG,EAAvBuT,EAAE/S,EAAM4pB,aAAwB1L,KAC1Dle,EAAM6pG,iBAAwBrqG,EAAV,SAE1BuqG,CAAAA,EAAYvjF,EAAM9lB,MAAQ0a,EAAM3D,iBAKjC,MCvJEuyF,GAAkBnvF,IAAAA,CAAyC,CACtEzQ,KAAM,kBAENpK,MAAOulC,KAEPpH,MAAO,CACL,iBAAmBl1B,IAA4B,GAGjDuR,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM27F,EAAiBzkE,GAAaxlC,EAAOg/C;AAE3C,MAAO,IAAM5jC,EAAM3D,UAAU,CAC3BkuB,WAAYskE,EAAetkE,WAAWjlC,MACtCmlC,OAAQokE,EAAepkE,OACvBD,OAAQqkE,EAAerkE,OACvBN,cAAe2kE,EAAe3kE,cAAc5kC;ACoC3C,MAAMwpG,GAAqB7yF,GAAa,CAC7C8yF,UAAW7lF,QACX3S,KAAMpQ,OACNi+B,MAAO,CAAClb,QAAS/iB,QACjBk+B,QAAS,CACPn4B,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,KAEXwxC,SAAU3kC,WAEPslB,GAAkB,CAAEx+B,SAAU,cAC9B0gC,QACAjQ,QACAgJ,QACAxT,QACAhtB,EAAKyuD,GAAkB,CACxBhsC,WAAY,0BACV,CAAC,aAAc,mBAAoB,QAAS,oBAC/C,aAEUsjF,GAAYvvF,IAAAA,CAAmC,CAC1DzQ,KAAM,YAENpK,MAAOkqG,KAEP/rE,MAAO,CACL,oBAAsBl9B,IAAe,GAGvCuZ,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMu0B,EAAWta,GAAgBvoB,EAAO,eAClCgsC,gBAAEA,GAAoBD,GAAY/rC,IAClC8xD,QAAEA,GAAYD,MACd/+B,aAAEA,GAAiBgB,GAAa9zB,IAChCo7B,aAAEA,EAAYC,YAAEA,EAAW0J,eAAEA,GAAmBD,GAAW9kC,IAC3Dg8B,eAAEA,GAAmBD,GAAW/7B,GAChCqqG,EAxEV,SAAuBC,GACrB,MAAM17C,EAAO3hD,aAAWq9F;AACxB,IAAI9qE,GAAS;AAEb,SAASvgB,IACPsrF,cAAc/qE,GA4BhB,OAFAlX,EAAcA,eAACrJ,GAER,CAAEA,MAAAA,EAAO2vC,KAAAA,EAAM9tD,MAnBtB,SAAgBc,GACd,MAAMsN,EAAQtN,EAAKuN,iBAAiBvN,GAAM,CAAEk3D,mBAAoB,IAC1DuP,EAAkD,IAAvCv4D,WAAWZ,EAAM4pD,qBAA8B;AAIhE,GAFA75C,IAEI2vC,EAAKluD,OAAS,EAAG;AAErB,MAAM29C,EAAYvP,YAAYC;AAC9BvP,EAAQ5gC,OAAO4rG,aAAY,KACzB,MAAMC,EAAU37D,YAAYC,MAAQsP,EAAYgqB;AAChDzZ,EAAKluD,MAAQgF,KAAKD,IAAI6kG,EAAeG,EAAS,GAE1C77C,EAAKluD,OAAS,GAAGue,MACpBopD,IAKwB1vD,MAzB7B,WACEsG,IAEA4F,EAAAA,UAAS,IAAM+pC,EAAKluD,MAAQ4pG,MA6DVI,CAAajpG,OAAOzB,EAAMy/B,UAEtC+2B,EAAUx+C,EAAAA,MACV2yF,EAAW3yF,EAAAA,MACX8nF,EAAa7yF,cAAW,GACxB29F,EAAS39F,aAAW,GACpB+X,EAAahN,EAAAA,MACb6yF,EAAY3yF,EAAAA,OAAO+L,QAAkBzkB;AAE3CwoB,IAAe,MAAQ6iF,IAAW,KAChC,MAAMlmF,EAASD;AAEf/a,EAAAA,aAAY,KACVqb,EAAWtkB,MAAQikB,EAAOK,WAAWtkB,YAIzCkjB,QAAMif,EAAU6lC,GAChB9kD,EAAAA,OAAM,IAAM5jB,EAAMy/B,SAASipC,GAE3BnmC,EAAAA,WAAU,KACJM,EAASniC,OAAOgoE;AAGtB,IAAIoiC,GAAiB;AACrB,SAASpiC,IACP2hC,EAAU1xF,QACV/Z,OAAO+gC,aAAamrE;AACpB,MAAMrrE,EAAUh+B,OAAOzB,EAAMy/B;AAE7B,IAAKoD,EAASniC,QAAsB,IAAb++B,EAAgB;AAEvC,MAAM8P,EAAU5tC,EAAWgpG,EAASjqG;AAEpC2pG,EAAUvpG,MAAMyuC,GAEhBu7D,EAAgBlsG,OAAOogC,YAAW,KAChC6D,EAASniC,OAAQ,IAChB++B,GAQL,SAASsrE,IACPjL,EAAWp/F,OAAQ,EALnB2pG,EAAU1xF,QACV/Z,OAAO+gC,aAAamrE,GAQtB,SAASE,IACPlL,EAAWp/F,OAAQ,EACnBgoE,IAGF,SAAS27B,EAAcvoF,GACrB8uF,EAAOlqG,MAAQob,EAAMuyB,QAAQ,GAAGC,QAGlC,SAASi2D,EAAYzoF,GACfpW,KAAKe,IAAImkG,EAAOlqG,MAAQob,EAAMiqD,eAAe,GAAGz3B,SAAW,KAC7DzL,EAASniC,OAAQ,GAIrB,MAAMuqG,EAAkBvhG,EAAAA,UAAS,IACxB1J,EAAMoL,SAAS9K,MAAM,KAAKiX,QAAO,CAACsE,EAAKqvF,KAC5CrvF,EAAK,eAAcqvF,MAAS,EAErBrvF,IACN;AAiGL,OA9FAqB,IAAU,KACR,MAAMo6C,EAAejE,GAAS34C,YAAY1a,GACpC4xD,KAAgBx2C,EAAM3D,SAAW2D,EAAMzJ,MAAQ3R,EAAM2R;AAE3D,OAAAgM,EAAAC,YAAAy1C,GAAAt1C,aAAA,CAAA/F,IAEUw+C,EAAO7+C,MACN,CACL,aACA,CACE,qBAAsBkrB,EAASniC,MAC/B,yBAA0BV,EAAMmqG,YAAcnqG,EAAMipD,SACpD,sBAAuBjpD,EAAMw/B,MAC7B,uBAAwBx/B,EAAMipD,UAEhCgiD,EAAgBvqG,MAChBsrC,EAAgBtrC,MAChBV,EAAM2X,OACPzI,MACM,CACL8V,EAAWtkB,MACXV,EAAMkP,QAEHooD,EAAY,CAAA30B,WACPE,EAASniC,MAAK,sBAAA60C,GAAd1S,EAASniC,MAAK60C,EAAA0d,aACT72B,EAAAA,WAAW,CACxBzkB,MAAO,CACL,sBACAmb,EAAapyB,MACb06B,EAAa16B,MACbs7B,EAAet7B,MACfqkC,EAAerkC,OAEjBwO,MAAO,CACLmsB,EAAY36B,OAEdqqG,eAAAA,EACAC,eAAAA,GACC1zC,EAAarE,cAAaE,YAAA,EAAAD,kBAAA,EAAAE,OAGrB,EAAKpE,eAAA,OAAAsE,qBAAA,EAAAgY,oBAGS+4B,EAAYE,WACrBA,GACRzyC,GAAO,CAAAr6C,QAAAA,IAAA,CAGVktB,IAAY,EAAO,cAEnB3kC,EAAMw/B,QAAUsgE,EAAWp/F,OAAKid,EAAAA,YAAA,MAAA,CAAAna,IAAA,QAAAmU,MAAA,qBAAAgG,CAAAA,EAAAC,YAAA+sB,GAAA,CAAA3yB,IAGtB2yF,EAAQ12F,MACiB,iBAAhBjU,EAAMw/B,MAAqBx/B,EAAMw/B,MAAQ,OAAM/5B,IACxDzF,EAAMy/B,QAAO,cACL4qE,EAAUz7C,KAAKluD,OAGlC,QAECkxD,GAAUj0C,EAAAA,YAAA,MAAA,CAAAna,IAAA,UAAAmU,MAAA,sBAAAuG,KAAA,SAAA,YAAA,UAON9C,CAAAA,EAAMzJ,UAAY3R,EAAM2R,KAExByJ,EAAM3D,cAIV2D,EAAM0oD,SAAOnmD,EAAAA,YAAAoc,GAAA,CAAAziB,SAED,CACRgK,KAAM,CACJF,QAAS,OACT6vB,QAAQ,EACRF,MAAM,KAET,CAAAt5B,QAAAA,IAAA,CAAAkG,EAAAC,YAAA,MAAA,CAAAjG,MAAA,uBAGGyD,CAAAA,EAAM0oD,QAAQ,CAAEjhC,SAAAA,UAvCbmlB,UAAW5sC,EAAM4sC,eA+C3BiO,GAAY,GAAIO,MC5Qd20C,GAAgB9zF,GAAa,CACxC+zF,SAAU9mF,QACV+mF,iBAAkB,CAAC5pG,OAAQF,QAC3B+pG,eAAgB,CACdhkG,KAAM/F,OACNkW,QAAS,QAEXxD,MAAO1S,OACPg8B,SAAU,CACRj2B,KAAM3G,MACN8W,QAASA,IAAO,IAElB8zF,kBAAmB,CACjBjkG,KAAM/F,OACN06B,UAAYhzB,GAAgB,CAAC,MAAO,SAAU,OAAQ,SAASlD,SAASkD,GACxEwO,QAAS,OAEX/I,OAAQ,CACNpH,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,IAEX+zF,OAAQ,CACNlkG,KAAM3G,MACN8W,QAASA,IAAO,IAElBg0F,UAAW,CACTnkG,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,GAEXi0F,UAAW,CACTpkG,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,GAEXyN,GAAI3jB,OACJwoD,UAAW,CACTziD,KAAM/F,OACNkW,QAAS,SAEXkrB,WAAY,CACVr7B,KAAM3G,MACN8W,QAASA,IAAO,IAElBjS,IAAK,CAACjE,OAAQE,QACdgE,IAAK,CAAClE,OAAQE,QACdkqG,QAAS,CACPrkG,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,GAEXm0F,WAAYtnF,QACZunF,OAAQvnF,QACR7V,MAAO,CACLnH,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,MAEV,QC9BUq0F,GAAoBz0F,GAAa,CAC5C00F,cAAeznF,WAEZ6mF,MACF,YAEUa,GAAWnxF,IAAAA,CAAkC,CACxDzQ,KAAM,WAENpK,MAAO8rG,KAEPtxF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM+N,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,WAAU7I,MAC3CgvF,EAAmB3hG,EAAAA,UAAS,IAAMjI,OAAOzB,EAAMqrG,mBAAqB,MAEpEx8B,EAAYnlE,EAAAA,UAAS,IAClB4a,QACLtkB,EAAM4rG,YACN5rG,EAAMwrG,OAAOjsG,OAAS,KACpB6b,GAAO24B,SAIP23D,EAAYhiG,EAAAA,UAAS,IAAMoG,WAAW9P,EAAM0rG,YAAc,IAE1DpgB,EAAa5hF,EAAAA,UAAS,IAAMhE,KAAKD,IAAIzF,EAAM2iC,WAAWpjC,OAASmsG,EAAUhrG,MAAOe,OAAOzB,EAAMyO,UAE7Fw9F,EAAWviG,EAAAA,UAAmB,KAC3B,CACLwiG,KAAM,EACNC,KAAM7gB,EAAW5qF,MACjB0rG,KAAM,EACNC,KAAMl3F,SAASnV,EAAM0O,OAAQ,QAG3B8X,EAAQ9c,EAAQA,UAAC,IAAM1J,EAAM2iC,WAAWv7B,KAAI5G,GAAQD,EAAoBC,EAAMR,EAAM+pD,UAAWvpD;AAErG,SAAS8rG,EACPnjG,EACA8iG,GAEA,MAAMC,KAAEA,EAAIC,KAAEA,EAAIC,KAAEA,EAAIC,KAAEA,GAASJ,EAC7BM,EAAcpjG,EAAO5J;AAC3B,IAAIitG,EAAwB,MAAbxsG,EAAMyF,IAAchE,OAAOzB,EAAMyF,KAAOC,KAAKD,OAAO0D,GAC/DsjG,EAAwB,MAAbzsG,EAAMwF,IAAc/D,OAAOzB,EAAMwF,KAAOE,KAAKF,OAAO2D;AAE/DsjG,EAAW,GAAkB,MAAbzsG,EAAMwF,MAAainG,EAAW,GAC9CD,EAAW,GAAkB,MAAbxsG,EAAMyF,MAAa+mG,EAAW;AAElD,MAAME,EAAQP,EAAOI,EACfI,GAASN,EAAOD,IAAUI,EAAWC,GAAa,GAClDG,EAAWP,EAAO3mG,KAAKe,IAAIgmG,EAAWE;AAE5C,OAAOxjG,EAAO/B,KAAI,CAAC1G,EAAOyV,KACxB,MAAMzH,EAAShJ,KAAKe,IAAIkmG,EAAQjsG;AAEhC,MAAO,CACL6N,EAAG29F,EAAO/1F,EAAQu2F,EAClBl+F,EAAGo+F,EAAWl+F,KACVhO,EAAQ,GAAKgO,EACjBA,OAAAA,EACAhO,MAAAA,MAKN,MAAMmsG,EAAenjG,EAAAA,UAAS,KAC5B,MAAM8hG,EAAS,GACTsB,EAASR,EAAQ9lF,EAAM9lB,MAAOurG,EAASvrG,OACvCqY,EAAM+zF,EAAOvtG;AAEnB,IAAK,IAAIE,EAAI,EAAG+rG,EAAOjsG,OAASwZ,EAAKtZ,IAAK,CACxC,MAAMe,EAAOssG,EAAOrtG;AACpB,IAAIiB,EAAQV,EAAMwrG,OAAO/rG;AAEpBiB,IACHA,EAAwB,iBAATF,EACXA,EAAKE,MACLF,GAGNgrG,EAAOxiG,KAAK,CACVuF,EAAG/N,EAAK+N,EACR7N,MAAOa,OAAOb,KAIlB,OAAO8qG,KAGHuB,EAAOrjG,EAAQA,UAAC,IAAM4iG,EAAQ9lF,EAAM9lB,MAAOurG,EAASvrG,SACpD63B,EAAU7uB,EAAQA,UAAC,KAAOhE,KAAKe,IAAIsmG,EAAKrsG,MAAM,GAAG6N,EAAIw+F,EAAKrsG,MAAM,GAAG6N,GAAKm9F,EAAUhrG,OAAS;AAEjGwc,IAAU,KACR,MAAM8vF,EAAgBhtG,EAAMu9B,SAASn0B,QAAQ7J,OAAgBS,EAAMu9B,SAASn0B,QAAQmhC,UAA9B,CAAC;AACvD,OAAA5sB,EAAAA,YAAA,MAAA,CAAAu+B,QAAA,SAAAv+B,CAAAA,EAAAC,yBAAAD,EAAAA,YAAA,iBAAA,CAAAuH,GAMaA,EAAGxkB,MAAKusG,cAAA,iBAAAC,GAEoB,SAA5BltG,EAAMurG,kBAA+B,OAAS,IAAG4B,GACrB,QAA5BntG,EAAMurG,kBAA8B,OAAS,IAAG6B,GACpB,UAA5BptG,EAAMurG,kBAAgC,OAAS,IAAG8B,GACtB,WAA5BrtG,EAAMurG,kBAAiC,OAAS,KAGnDyB,CAAAA,EAAa5lG,KAAI,CAAC6M,EAAOkC,IAAKwH,EAAAC,YAAA,OAAA,CAAA4Y,OACbrgB,EAASzQ,KAAKD,IAAIunG,EAAaztG,OAAS,EAAG,GAAG,aAAgB0U,GAAS,gBACvF,YAAC0J,EAAAA,YAAA,WAAA,CAAAuH,GAKQ,GAAEA,EAAGxkB,cAEjBqsG,CAAAA,EAAKrsG,MAAM0G,KAAI5G,GAAImd,EAAAC,YAAA,OAAA,CAAArP,EAET/N,EAAK+N,EAAIgqB,EAAQ73B,MAAK8N,EACtBhO,EAAKgO,EAACC,MACFi9F,EAAUhrG,MAAKgO,OACdlO,EAAKkO,OAAM4+F,GACS,iBAAjBttG,EAAM6rG,OAAsB7rG,EAAM6rG,OAAS7rG,EAAM6rG,OAAS,EAAI,EAAC0B,GAC9C,iBAAjBvtG,EAAM6rG,OAAsB7rG,EAAM6rG,OAAS7rG,EAAM6rG,OAAS,EAAI,GAE1E7rG,CAAAA,EAAMorG,UAAQztF,EAAAC,YAAA4W,EAAAjtB,eAAAoW,EAAAC,YAAA,UAAA,CAAA4vF,cAAA,IAAAxsG,KAIHR,EAAKgO,EAAIhO,EAAKkO,OAAMkB,GACtBpP,EAAKgO,EAACi/F,IACJ,GAAEpC,EAAiB3qG,UAAS8oC,KAAA,UAAA,MAAA7rB,EAAAC,YAAA,UAAA,CAAA4vF,cAAA,SAAAxsG,KAAA,IAAA4O,GAM9BpP,EAAKkO,OAAM++F,IACT,GAAEpC,EAAiB3qG,UAAS8oC,KAAA,UAAA,cAU/CqlC,EAAUnuE,OAAKid,EAAAC,YAAA,IAAA,CAAApa,IAAA,SAAA0L,MAGN,CACLw+F,WAAY,SACZC,iBAAkB,eAClBnkE,KAAM,iBAINqjE,CAAAA,EAAansG,MAAM0G,KAAI,CAAC5G,EAAMf,IAACke,EAAAC,YAAA,OAAA,CAAArP,EAEvB/N,EAAK+N,EAAIgqB,EAAQ73B,MAAQgrG,EAAUhrG,MAAQ,EAAC8N,EAC3C2G,SAASnV,EAAM0O,OAAQ,IAAM,GAAMyG,SAASnV,EAAMyrG,UAAW,KAAO,MAAS,YACtEhqG,OAAOzB,EAAMyrG,YAAc,GAErCrwF,CAAAA,EAAM24B,QAAQ,CAAE59B,MAAO1W,EAAGiB,MAAOF,EAAKE,SAAYF,EAAKE,YAKlEid,EAAAC,YAAA,IAAA,CAAA,YAGc,QAAOsH,EAAGxkB,cAAa8oC,KAC5B,QAAOtkB,EAAGxkB,UAAQ,CAAAid,EAAAC,YAAA,OAAA,CAAArP,EAGpB,EAACC,EACD,EAACC,MACG/I,KAAKD,IAAIzF,EAAM2iC,WAAWpjC,OAASmsG,EAAUhrG,MAAOe,OAAOzB,EAAMyO,QAAOC,OACvE1O,EAAM0O,QAAM;AC3KnC,SAASwG,GAAKxU,GACZ,OAAOyU,SAASzU,EAAO,IAQlB,SAASktG,GAAgBC,EAAWC,EAAWC,GACpD,OAAO74F,GAAI24F,EAAGt/F,EAAIw/F,EAAGx/F,KAAO2G,GAAI,EAAI44F,EAAGv/F,IAAM2G,GAAI24F,EAAGr/F,EAAIu/F,EAAGv/F,KAAO0G,GAAI,EAAI44F,EAAGt/F,GAGxE,SAASw/F,GAAaF,EAAWC,GACtC,OAAOroG,KAAK+oC,KACV/oC,KAAKwpF,IAAI6e,EAAGx/F,EAAIu/F,EAAGv/F,EAAG,GAAK7I,KAAKwpF,IAAI6e,EAAGv/F,EAAIs/F,EAAGt/F,EAAG,IAI9C,SAASy/F,GAAQr+F,EAAW5O,EAAa+sC,GAC9C,MAAMmgE,EAAct+F,EAAGrB,EAAIvN,EAAKuN,EAA1B2/F,EAAgCt+F,EAAGpB,EAAIxN,EAAKwN,EAC5CjP,EAASmG,KAAK+oC,KAAMy/D,EAAWA,EAAaA,EAAWA,GACvDC,EAAkBD,EAAW3uG,EAA7B4uG,EAAwCD,EAAW3uG;AAEzD,MAAO,CACLgP,EAAGvN,EAAKuN,EAAI4/F,EAAepgE,EAC3Bv/B,EAAGxN,EAAKwN,EAAI2/F,EAAepgE,GCrCxB,MAAMqgE,GAAsB/2F,GAAa,CAC9CmyB,KAAMllB,WAEH6mF,MACF,cAEUkD,GAAaxzF,IAAAA,CAAoC,CAC5DzQ,KAAM,aAENpK,MAAOouG,KAEP5zF,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAM+N,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,aAAY7I,MAC7CgvF,EAAmB3hG,EAAAA,UAAS,IAAMjI,OAAOzB,EAAMqrG,oBAAsBrrG,EAAMwpC,KAAO,IAAM,OAExF8kE,EAAat2F,MAAI,GACjB5Y,EAAO4Y,MAA2B;AAExC,SAASu2F,EACPplG,EACA8iG,GAEA,MAAMC,KAAEA,EAAIC,KAAEA,EAAIC,KAAEA,EAAIC,KAAEA,GAASJ,EAC7BM,EAAcpjG,EAAO5J,OACrBitG,EAAwB,MAAbxsG,EAAMyF,IAAchE,OAAOzB,EAAMyF,KAAOC,KAAKD,OAAO0D,GAC/DsjG,EAAwB,MAAbzsG,EAAMwF,IAAc/D,OAAOzB,EAAMwF,KAAOE,KAAKF,OAAO2D,GAE/DujG,GAASP,EAAOD,IAASK,EAAc,GACvCI,GAASN,EAAOD,IAAUI,EAAWC,GAAa;AAExD,OAAOtjG,EAAO/B,KAAI,CAAC1G,EAAOyV,KACjB,CACL5H,EAAG29F,EAAO/1F,EAAQu2F,EAClBl+F,EAAG69F,GAAQ3rG,EAAQ+rG,GAAYE,EAC/BjsG,MAAAA,MAIN,MAAMmuE,EAAYnlE,EAAAA,UAAS,IAClB4a,QACLtkB,EAAM4rG,YACN5rG,EAAMwrG,OAAOjsG,OAAS,KACpB6b,GAAO24B,SAGP23D,EAAYhiG,EAAAA,UAAS,IAClBoG,WAAW9P,EAAM0rG,YAAc,IAElCpgB,EAAa5hF,EAAAA,UAAS,IAAMjI,OAAOzB,EAAMyO,SAEzCw9F,EAAWviG,EAAAA,UAAmB,KAClC,MAAMiiG,EAAUlqG,OAAOzB,EAAM2rG;AAE7B,MAAO,CACLO,KAAMP,EACNQ,KAAM7gB,EAAW5qF,MAAQirG,EACzBS,KAAMT,EACNU,KAAMl3F,SAASnV,EAAM0O,OAAQ,IAAMi9F,MAGjCnlF,EAAQ9c,EAAQA,UAAC,IAAM1J,EAAM2iC,WAAWv7B,KAAI5G,GAAQD,EAAoBC,EAAMR,EAAM+pD,UAAWvpD,OAC/FqsG,EAAenjG,EAAAA,UAAS,KAC5B,MAAM8hG,EAAS,GACTsB,EAASyB,EAAU/nF,EAAM9lB,MAAOurG,EAASvrG,OACzCqY,EAAM+zF,EAAOvtG;AAEnB,IAAK,IAAIE,EAAI,EAAG+rG,EAAOjsG,OAASwZ,EAAKtZ,IAAK,CACxC,MAAMe,EAAOssG,EAAOrtG;AACpB,IAAIiB,EAAQV,EAAMwrG,OAAO/rG;AAEpBiB,IACHA,EAAwB,iBAATF,EACXA,EAAKE,MACLF,GAGNgrG,EAAOxiG,KAAK,CACVuF,EAAG/N,EAAK+N,EACR7N,MAAOa,OAAOb,KAIlB,OAAO8qG;AAmCT,SAASgD,EAAShlE,GAChB,OD9IC,SAAkBsjE,EAAiB/+D,GAA2C,IAA3BvE,EAAIzoC,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,IAAAA,UAAA,GAAU2N,EAAM3N,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AAC/E,GAAsB,IAAlB+rG,EAAOvtG,OAAc,MAAO;AAChC,MAAMuB,EAAQgsG,EAAO1pG,QACfP,EAAMiqG,EAAOA,EAAOvtG,OAAS;AAEnC,OACGiqC,EAAQ,IAAG1oC,EAAMyN,KAAKG,EAAS5N,EAAMyN,EAAI,MAAMzN,EAAMyN,KAAKzN,EAAM0N,IAAO,IAAG1N,EAAMyN,KAAKzN,EAAM0N,KAC5Fs+F,EACG1lG,KAAI,CAAC6jD,EAAO90C,KACX,MAAMmJ,EAAOwtF,EAAO32F,EAAQ,GACtB2C,EAAOg0F,EAAO32F,EAAQ,IAAMrV,EAC5B2tG,EAAcnvF,GAAQsuF,GAAetuF,EAAM2rC,EAAOnyC;AAExD,IAAKwG,GAAQmvF,EACX,MAAQ,IAAGxjD,EAAM18C,KAAK08C,EAAMz8C;AAG9B,MAAMkvB,EAAYh4B,KAAKF,IACrBwoG,GAAYl1F,EAAMmyC,GAClB+iD,GAAY1uF,EAAM2rC,IAGdyjD,EADsBhxE,EAAY,EAAIqQ,EACCrQ,EAAY,EAAIqQ,EAEvDn/B,EAASq/F,GAAOn1F,EAAMmyC,EAAOyjD,GAC7B7/F,EAAQo/F,GAAO3uF,EAAM2rC,EAAOyjD;AAElC,MAAQ,IAAG9/F,EAAOL,KAAKK,EAAOJ,KAAKy8C,EAAM18C,KAAK08C,EAAMz8C,KAAKK,EAAMN,KAAKM,EAAML,OAE3ExD,KAAK,KACPw+B,EAAQ,IAAG3mC,EAAI0L,KAAKG,EAAS5N,EAAMyN,EAAI,MAAQ,ICgHvCogG,CACLJ,EAAU/nF,EAAM9lB,MAAOurG,EAASvrG,OAChCV,EAAM6rG,OAAS,EAAIpqG,OAAOzB,EAAM6rG,QAChCriE,EACAr0B,SAASnV,EAAM0O,OAAQ,KArC3BkV,SAAM,IAAM5jB,EAAM2iC,aAAYgV,UAG5B,SAFM9yB,EAAQA,YAET7kB,EAAMorG,WAAahsG,EAAKsB,MAAO;AAEpC,MAAMkuG,EAAUxvG,EAAKsB,MACfnB,EAASqvG,EAAQC;AAElB7uG,EAAMwpC,MAaTolE,EAAQ1/F,MAAMW,gBAAkB,gBAChC++F,EAAQ1/F,MAAM4X,WAAa,OAC3B8nF,EAAQ1/F,MAAMG,UAAa,YAC3Bu/F,EAAQ7/F,wBACR6/F,EAAQ1/F,MAAM4X,WAAc,aAAYukF,EAAiB3qG,WAAWV,EAAMsrG,iBAC1EsD,EAAQ1/F,MAAMG,UAAa,cAhB3Bu/F,EAAQ1/F,MAAM4/F,gBAAmB,GAAEvvG,IACnCqvG,EAAQ1/F,MAAM6/F,iBAAoB,GAAExvG,IAGpCqvG,EAAQ7/F,wBAGR6/F,EAAQ1/F,MAAM4X,WAAc,qBAAoBukF,EAAiB3qG,WAAWV,EAAMsrG,iBAClFsD,EAAQ1/F,MAAM6/F,iBAAmB,KAWnCT,EAAW5tG,MAAQnB,IAClB,CAAE8oB,WAAW,IAWhBnL,IAAU,KACR,MAAM8vF,EAAgBhtG,EAAMu9B,SAASn0B,QAAQ7J,OAAgBS,EAAMu9B,SAASn0B,QAAQmhC,UAA9B,CAAC;AAEvD,OAAA5sB,EAAAA,YAAA,MAAA,CAAAu+B,QAAA,QAAA,eAGmBpsC,WAAW9P,EAAM0rG,YAAc,GAAC/tF,CAAAA,EAAAC,yBAAAD,EAAAA,YAAA,iBAAA,CAAAuH,GAItCA,EAAGxkB,MAAKusG,cAAA,iBAAAC,GAEoB,SAA5BltG,EAAMurG,kBAA+B,OAAS,IAAG4B,GACrB,QAA5BntG,EAAMurG,kBAA8B,OAAS,IAAG6B,GACpB,UAA5BptG,EAAMurG,kBAAgC,OAAS,IAAG8B,GACtB,WAA5BrtG,EAAMurG,kBAAiC,OAAS,KAGnDyB,CAAAA,EAAa5lG,KAAI,CAAC6M,EAAOkC,IAAKwH,EAAAC,YAAA,OAAA,CAAA4Y,OACbrgB,EAASzQ,KAAKD,IAAIunG,EAAaztG,OAAS,EAAG,GAAG,aAAgB0U,GAAS,gBAAc,YAM1G46D,EAAUnuE,OAAKid,EAAAC,YAAA,IAAA,CAAApa,IAAA,SAAA0L,MAGN,CACLw+F,WAAY,SACZC,iBAAkB,eAClBnkE,KAAM,iBAINqjE,CAAAA,EAAansG,MAAM0G,KAAI,CAAC5G,EAAMf,IAACke,EAAAC,YAAA,OAAA,CAAArP,EAEvB/N,EAAK+N,EAAKm9F,EAAUhrG,MAAQ,EAAKgrG,EAAUhrG,MAAQ,EAAC8N,EACnD2G,SAASnV,EAAM0O,OAAQ,IAAM,GAAMyG,SAASnV,EAAMyrG,UAAW,KAAO,MAAS,YACtEhqG,OAAOzB,EAAMyrG,YAAc,GAErCrwF,CAAAA,EAAM24B,QAAQ,CAAE59B,MAAO1W,EAAGiB,MAAOF,EAAKE,SAAYF,EAAKE,YAKlEid,EAAAC,YAAA,OAAA,CAAA5F,IAGO5Y,EAAI+e,EACNqwF,EAAQxuG,EAAMwpC,MAAKA,KAChBxpC,EAAMwpC,KAAQ,QAAOtkB,EAAGxkB,SAAW,OAAMsuG,OACvChvG,EAAMwpC,KAAO,OAAU,QAAOtkB,EAAGxkB,UAAQ,MAGlDV,EAAMwpC,MAAI7rB,EAAAA,YAAA,OAAA,CAAAQ,EAEJqwF,GAAQ,GAAMhlE,KAAA,OAAAwlE,OAEThvG,EAAMiU,OAASjU,EAAMu9B,WAAW,IAE5C,cC5ME0xE,GAAsB53F,GAAa,CAC9C/P,KAAM,CACJA,KAAM/F,OACNkW,QAAS,YAGRq0F,QACAsC,MACF,cAOUc,GAAar0F,IAAAA,CAAoC,CAC5DzQ,KAAM,aAENpK,MAAOivG,KAEPz0F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMktB,iBAAEA,EAAgBC,gBAAEA,GAAoBH,GAAagD,EAAKA,MAACt+B,EAAO,UAClE6uE,EAAYnlE,EAAAA,UAAS,IAClB4a,QACLtkB,EAAM4rG,YACN5rG,EAAMwrG,OAAOjsG,OAAS,KACpB6b,GAAO24B,SAGPo7D,EAAczlG,EAAAA,UAAS,KAC3B,IAAIgF,EAASyG,SAASnV,EAAM0O,OAAQ;AAIpC,OAFImgE,EAAUnuE,QAAOgO,GAA0C,IAAhCyG,SAASnV,EAAMyrG,UAAW,KAElD/8F;AAGTwO,IAAU,KACR,MAAM00B,EAAqB,UAAf5xC,EAAMsH,KAAmB+mG,GAAarC,GAC5CoD,EAA2B,UAAfpvG,EAAMsH,KAAmB+mG,GAAW3zF,YAAY1a,GAASgsG,GAAStxF,YAAY1a;AAEhG,OAAA2d,EAAAC,YAAAg0B,EAAA7zB,aAAA,CAAAva,IAEUxD,EAAMsH,KAAIqQ,MACR6jB,EAAiB96B,MAAKwO,MACtBusB,EAAgB/6B,MAAKud,QAClB,OAAMje,EAAMyO,SAAS0G,SAASg6F,EAAYzuG,MAAO,OACvD0uG,GACKh0F,SC3CPi0F,GAAsBh4F,GAAa,IAC3CK,QACA4+C,GAAe,CAChB9/B,OAAQ,EACR4D,SAAU,EACVg1B,UAAW,EACXD,WAAY,IACZ/jD,SAAU,aACV0b,WAAY,sBAEb,cAEUwoF,GAAaz0F,IAAAA,CAAiC,CACzDzQ,KAAM,aAENpK,MAAOqvG,KAEPlxE,MAAO,CACL,oBAAsBz9B,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMya,EAAQR,GAAgBvoB,EAAO,cAE/BuvG,EAAUv3F,EAAAA,MAEV5M,EAAW1B,EAAAA,UAAS,KACxB,MAAO8E,EAAGD,EAAI,UAAYvO,EAAMoL,SAAS9K,MAAM;AAE/C,MAAQ,GAAEkO,KAAKD,OAGX08F,EAAkBvhG,EAAAA,UAAS,KAAO,CACtC,CAAE,0BAAyB0B,EAAS1K,MAAML,QAAQ,IAAK,SAAS;AA4ClE,OAzCA6c,IAAU,KACR,MAAMyhD,EAAYpI,GAAM77C,YAAY1a;AAEpC,OAAA2d,cAAA44C,GAAAx4C,EAAAqe,WAESuiC,EAAS,CAAAh8B,WACJ5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA59B,MACb3X,EAAM2X,MAAKzI,MACXlP,EAAMkP,MAAKyT,aACL,CACZ,wBACAsoF,EAAgBvqG,OACjB0K,SACUA,EAAS1K,MAAKsX,IACnBu3F,EAAOzoF,WAAA,oBAAA,IAIR1L,EACH3D,QAASohC,GAASl7B,EAAAC,YAAAmc,GAAA,CAAAziB,SAEJ,CACRgK,KAAM,CACJzY,KAAM,WAET,CAAA4O,QAAAA,IAAAkG,CAAAA,EAAAC,YAAAse,GAAA,CAAAgE,QAAA,EAAApL,OAAA,EAAAhO,WAKc9mB,EAAM8mB,YAAU,CAAArP,QAAAA,IAE3B2D,CAAAA,EAAM3D,UAAUohC,cASzB,MC5EE22D,GAA2Bn4F,GAAa,CACnDpD,MAAO1S,OACPkX,SAAU,CACRnR,KAAM,CAACgd,QAAS/iB,QAChBkW,SAAS,GAEXg4F,SAAU,CACRnoG,KAAM/F,OACNkW,QAAS,yBAEXi4F,SAAU,CACRpoG,KAAM/F,OACNkW,QAAS,0BAEV,mBAEUk4F,GAAkB90F,IAAAA,CAAyC,CACtEzQ,KAAM,kBAENpK,MAAOwvG,KAEPrxE,MAAO,CACL,aAAc+3D,KAAM,EACpB,aAAcC,KAAM,GAGtB37E,MAAOxa,EAAKsO,GAAmB,IAAjB6a,KAAEA,EAAI/N,MAAEA,GAAO9M;AAC3B,MAAMyE,EAAEA,GAAMge;AACd,SAAS0lE,IACPttE,EAAK,cAGP,SAASutE,IACPvtE,EAAK,cA6CP,OA1CAjM,IAAU,KACR,MAAM0yF,EAAgB,CACpBvnE,QAASouD,GAELoZ,EAAgB,CACpBxnE,QAASquD;AAGX,OAAA/4E,EAAAA,YAAA,MAAA,CAAAhG,MAAA,qBAAAgG,CAAAA,EAAAC,YAAAmc,GAAA,CAAAziB,SAGgB,CACRgK,KAAM,CACJ7I,SAAU,CAAC,QAAQ,GAAM1S,SAAS/F,EAAMyY,UACxC9G,KAAMoB,EAAE/S,EAAMyvG,UACdruF,QAAS,UAEZ,CAAA3J,QAAAA,IAAA,CAEC2D,EAAMtC,OAAO,CAAE9Y,MAAO4vG,KAAgBjyF,EAAAA,YAAA2D,GAC3BsuF,EACZ,SAAAjyF,EAAAC,YAAAmc,GAAA,CAAAziB,SAIS,CACRgK,KAAM,CACJrN,MAAOjU,EAAMiU,MACbwE,SAAU,CAAC,QAAQ,GAAM1S,SAAS/F,EAAMyY,UACxC9G,KAAMoB,EAAE/S,EAAM0vG,UACdtuF,QAAS,WAEZ,CAAA3J,QAAAA,IAAA,CAEC2D,EAAMkE,OAAO,CAAEtf,MAAO6vG,KAAgBlyF,EAAAA,YAAA2D,GAC3BuuF,EACZ,cAMF,MCjGEC,GAAiB90F,GAAuB,oBCqCxC+0F,GAAwB14F,GAAa,CAChDpD,MAAO1S,OACP4pB,MAAO5pB,OACP+mD,SAAU/mD,OACVud,SAAUwF,QACV0rF,aAAc,CACZ1oG,KAAM/F,OACNkW,QAAS,aAEXw4F,SAAU3rF,QACV4rF,SAAU,CACR5oG,KAAM/F,OACNkW,QAAS,SAEX4H,MAAOiF,QACP6rF,UAAW,CACT7oG,KAAM/F,OACNkW,QAAS,UAEX8F,KAAMhc,OACN0vC,OAAQ,CACN3pC,KAAM,CAACgd,QAASvkB,QAChB0X,SAAS,GAEXo/B,MAAO,CACLvvC,KAAM3G,MACN8W,QAASA,IAAO,OAGf8tB,MACF,gBAEU6qE,GAAev1F,IAAAA,CAAsC,CAChEzQ,KAAM,eAEN6zB,WAAY,CAAEwS,OAAAA,IAEdzwC,MAAO+vG,KAEP5xE,MAAO,CACL,iBAAmBl1B,IAA4B,GAGjDuR,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwmB,EAAQ0Q,GAAaxlC,EAAOqwG,IAAgB,GAC5C/pE,EAAO58B,EAAQA,UAAC,IAAMorB,GAAOp0B,MAAMA,OAASV,EAAMU,QAClD82C,EAAU9tC,EAAAA,UAAS,IAAM1J,EAAM62C,MAAM32C,OAAMqK,IAAyB,IAAdA,QACtD+lG,EAAU5mG,EAAAA,UAAS,KAAO1J,EAAMyY,UAAYzY,EAAMiwG,WAClDM,EAAW7mG,EAAAA,UAAS,IAAM1J,EAAMqf,QAAUm4B,EAAQ92C,QAClD8vG,EAAe9mG,EAAAA,UAAS,IAAM1J,EAAM8e,UAAa9e,EAAM62C,MAAMt3C,OAAS,GAAKi4C,EAAQ92C,QACnF6c,EAAO7T,EAAAA,UAAS,IAChB6mG,EAAS7vG,MAAcV,EAAMmwG,UAC7BK,EAAa9vG,MAAcV,EAAMgwG,aACjChwG,EAAMiwG,SAAiBjwG,EAAMkwG,SAE1BlwG,EAAMud,OAETs7B,EAAYnvC,EAAAA,UAAS,KAAO,CAChC4mG,QAASA,EAAQ5vG,MACjB6vG,SAAUA,EAAS7vG,MACnB8vG,aAAcA,EAAa9vG,MAC3ByqB,MAAOnrB,EAAMmrB,MACbm9B,SAAUtoD,EAAMsoD,SAChBhiB,KAAMA,EAAK5lC,MACXA,MAAOV,EAAMU;AA4Ef,OAzEAwc,IAAU,KACR,MAAMimC,IACHruB,GACDA,EAAM6Q,WAAWjlC,OACjB8vG,EAAa9vG,OACb4vG,EAAQ5vG,SAEP6vG,EAAS7vG,QACTV,EAAMyY,SAEHspB,IAA6B,MAAf/hC,EAAMmrB,QAAiB/P,EAAM+P,OAC3Cs9B,IAAmC,MAAlBzoD,EAAMsoD,WAAoBltC,EAAMktC;AAMvD,OAAA1nB,EAAAT,eAAAxiB,EAAAC,YAAA,SAAA,CAAAjG,MAEW,CACL,iBACA,CACE,2BAA4B64F,EAAa9vG,MACzC,2BAA4BV,EAAMyY,SAClC,wBAAyB83F,EAAS7vG,OAEpCo0B,GAAOwQ,cAAc5kC,OACtB+X,UACWzY,EAAMiwG,SAAQ5nE,QAf9B,WACEvT,GAAO8Q,WAoBYjoB,CAAAA,EAAAC,YAAAsD,GAAA,CAAA1d,IAAA,iBAAAmU,MAAA,yBAAA1D,MAKPkvC,EAAWnjD,EAAMiU,WAAQzU,EAASqJ,KACnC,IAAE,CAAA4O,QAAAA,IAAA,CAEP2D,EAAMmC,OAAOs7B,EAAUn4C,SACvB6c,EAAK7c,MAAKid,EAAAC,YAAA8pB,GAAA,CAAAnqB,KACMA,EAAK7c,OACjB4lC,MAAAA,EAAK5lC,UACVid,EAAAC,YAAA,MAAA,CAAAjG,MAAA,2BAICoqB,CAAAA,GAAQpkB,EAAAC,YAAA,MAAA,CAAApa,IAAA,QAAAmU,MAAA,yBAAA,CAKJyD,EAAM+P,QAAQ0tB,EAAUn4C,QAAUV,EAAMmrB,QAI5Cs9B,GAAW9qC,EAAAA,YAAA,MAAA,CAAAna,IAAA,WAAAmU,MAAA,4BAAA,CAKPyD,EAAMktC,WAAWzP,EAAUn4C,QAAUV,EAAMsoD,WAI/CltC,EAAM3D,UAAUohC,EAAUn4C,aAAMmgC,EAAAA,iBAAA,UAtClC7gC,EAAMixC,QAAUjxC,EAAMiwG,SACtB,WA0CD,MCtKEI,GAA6Cx4F,OAAOC,IAAI,qBAExD24F,GAA0Bp5F,GAAa,IAC/ChT,EAAK2iE,KAAoB,CAAC,aAAc,WAAY,WAAY,aAAc,QAAS,eACzF,kBAEU0pC,GAAiB71F,IAAAA,CAAmB,CAC/CzQ,KAAM,iBAENpK,MAAOywG,KAEPtyE,MAAO,CACL,oBAAsBl9B,IAAe,GAGvCuZ,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwmB,EAAQ5c,EAAAA,OAAOm4F,GAAgB,MAC/BM,EAASpoF,GAAgBvoB,EAAO,cAEhC+oB,EAAQrf,EAAAA,SAAS,CACrB9B,IAAGA,IAGmB,MAAhB+oG,EAAOjwG,OAAkBo0B,EAItBA,EAAMtO,MAAM9lB,MAAMqmB,MAAKvmB,GAAQs0B,EAAMiR,SAASrlC,MAAMqF,SAASvF,EAAK0kB,OAAMxkB,MAJpCiwG,EAAOjwG,MAMpDqH,IAAKkB,GACH0nG,EAAOjwG,MAAQuI;AAwBnB,OApBAiU,IAAU,KACR,MAAM0rD,EAAc1B,GAAQxsD,YAAY1a;AAExC,OAAA2d,EAAAC,YAAAspD,GAAAnpD,aAAA,CAAAvE,IAAA,kBAGSovD,EAAW,CAAAjmC,WACN5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA59B,MACd,CACL,mBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKm2B,WACP,EAAK4V,OACT,IACE7/B,MAKT,MC9DEw1F,GAA8Bv5F,GAAa,IACnDwxD,MACF,sBAEUgoC,GAAqBh2F,IAAAA,CAAmB,CACnDzQ,KAAM,qBAENpK,MAAO4wG,KAEPp2F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAkBrB,OAjBA4O,IAAU,KACR,MAAMwsD,EAAkBX,GAAYruD,YAAY1a;AAEhD,OAAA2d,EAAAC,YAAAmrD,GAAAhrD,aAAA,CAAAvE,IAAA,sBAGSkwD,EAAe,CAAA/xD,MACb,CACL,wBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,QACJkM,MAKT,MCREi1F,GAAiDx4F,OAAOC,IAAI,qBAyB5Dg5F,GAAoBz5F,GAAa,CAC5C05F,UAAWzsF,QACXskB,QAASrnC,OACT0uG,SAAU3rF,QACVo4E,YAAap4E,QACbkC,MAAO,CACLlf,KAAM3G,MACN8W,QAASA,IAAO,IAElBqyC,UAAW,CACTxiD,KAAM/F,OACNkW,QAAS,SAEXsyC,UAAW,CACTziD,KAAM/F,OACNkW,QAAS,SAEX8jC,OAAQj3B,QACR0sF,UAAW1sF,QACX7c,KAAM6c,WAEH6gB,GAAe,CAChBE,UAAW,QACXC,cAAe,gCAEd2uC,QACAxvE,EAAK+qG,KAA4B,CAAC,WAAY,cAChD,YAEUyB,GAAWp2F,IAAAA,CAAkC,CACxDzQ,KAAM,WAENpK,MAAO8wG,KAEP3yE,MAAO,CACL,oBAAsBl9B,IAAe,GAGvCuZ,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAQkY,MAAO0qF,EAAM5xF,KAAEA,EAAIxG,KAAEA,EAAIitB,SAAEA,GAAaD,GAAS9lC,EAAOqwG,KAC1Dp8F,MAAEA,EAAKg8F,SAAEA,EAAQR,SAAEA,EAAQC,SAAEA,GAAa7lG,EAAAA,OAAO7J,GAEjDwmB,EAAQ9c,EAAQA,UAAC,IAAM1J,EAAMwmB,MAAMpf,KAAI,CAAC5G,EAAM2V,KAI3C,CACLgV,MAJY5qB,EAAoBC,EAAMR,EAAM8pD,UAAWtpD,GAKvDE,MAJYH,EAAoBC,EAAMR,EAAM+pD,UAAW5zC,EAAQ,GAK/DqzC,IAAKhpD,QAGH+mE,EAAc79D,EAAAA,UAAS,IACpBwnG,EAAOxwG,MAAM4mB,WAAU9mB,GAAQulC,EAASrlC,MAAMqF,SAASvF,EAAK0kB;AAgGrE,OAtFA9M,GAAgB,CACdg4F,aAAc,CACZH,SAAAA,EACAR,SAAAA,EACAC,SAAAA,GAEFC,gBAAiB,CACf17F,MAAAA,EACAwE,SAhBa/O,EAAAA,UAAS,IACpB1J,EAAMyY,SAAiBzY,EAAMyY,SACP,IAAtB8uD,EAAY7mE,MAAoB,OAChC6mE,EAAY7mE,QAAUwwG,EAAOxwG,MAAMnB,OAAS,GAAU,SAcxDkwG,SAAAA,EACAC,SAAAA,KAIJxyF,IAAU,KACR,MAAM83D,EAAad,GAAOx5D,YAAY1a,GAEhC2lE,KAAevqD,EAAMgQ,SAAUprB,EAAMwmB,MAAMjnB,QAC3C4xG,EAAYnxG,EAAMwmB,MAAMjnB,OAAS,EACjC08F,IAAcj8F,EAAM08F,cAAkByU,IAAa/1F,EAAM0oD;AAE/D,OAAAnmD,cAAAu2D,GAAAn2D,EAAAqe,WAES44C,EAAU,CAAA/gE,MACPjU,EAAM4oC,QAAOjxB,MACd,CACL,YACA,CACE,wBAAyB3X,EAAM+wG,UAC/B,kBAAmB/wG,EAAMyH,KACzB,wBAAyBzH,EAAMgxG,UAC/B,oBAAqBhxG,EAAMu7C,QAE7Bv7C,EAAM2X,OACPzI,MACOlP,EAAMkP,QAAK,CAAAuI,QAAAA,IAAA,CAEjBkuD,GAAShoD,EAAAA,YAAAmyF,GAAA,CAAAtsG,IAAA,kBAAA,CAAAiU,QAAAA,IAEL+O,CAAAA,EAAM9lB,MAAM0G,KAAI,CAAC5G,EAAM2V,IAAKwH,EAAAC,YAAA4W,WAAA,KAAA,GAEtBre,GAAKwH,EAAAC,YAAAsrC,GAAkB,KAAA,MAAAvrC,EAAAA,YAAAyyF,GAGpB5vG,EACI,CACPiX,QAAS2D,EAAO,eAAc5a,EAAKE,UAAY0a,EAAMgQ,OACrD7N,KAAMnC,EAAMmC,KACZ4N,MAAO/P,EAAM+P,MACbm9B,SAAUltC,EAAMktC,kBAQ1B6oD,GAASxzF,EAAAC,YAAA8yF,GAAA,CAAAltG,IAAA,kBAAA,CAAAiU,QAAAA,IAEL+O,CAAAA,EAAM9lB,MAAM0G,KAAI5G,GAAImd,EAAAC,YAAAizF,GAAA,CAAAnwG,MAEVF,EAAKE,OACJ,CACP+W,QAASA,IAAM2D,EAAO,QAAO5a,EAAKE,WAAWF,IAAS4a,EAAM5a,OAAOA,UAO3E4a,EAAM3D,UAAU,CAAEqB,KAAAA,EAAMwG,KAAAA,IAExB28E,IACA7gF,EAAM0oD,UAAU,CAAExkD,KAAAA,EAAMxG,KAAAA,KAAO6E,EAAAC,YAAA+xF,GAAA,CAAAnsG,IAAA,kBAAA,eAGZsV,EAAI,eACJwG,GACLlE,UAQf,CACLtC,KAAAA,EACAwG,KAAAA,MC9JO8xF,GAAmB/5F,GAAa,CAC3CwxB,cAAevkB,QACfxB,MAAOwB,QACP7c,KAAM6c,QACN/D,QAAS,CACPjZ,KAAM,CAACgd,QAAS/iB,QAChBkW,SAAS,MAGR2gC,QACAtE,MACF,WAEUu9D,GAAUx2F,IAAAA,CAM0B,CAC/CzQ,KAAM,UAEN0T,cAAc,EAEd9d,MAAOoxG,KAEPjzE,MAAO,CACL,iBAAmB8X,IAAqB,EACxC,oBAAsBv1C,IAAe,EACrC,uBAAyBA,IAAmB,GAG9C8Z,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAMu6B,EAAgBtgB,GAAgBvoB,EAAO,iBACvC+oB,EAAQR,GAAgBvoB,EAAO,eAC/B2rC,cAAEA,GAAkBD,GAAU1rC,IAC9Bu0C,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,GACtCsxG,EAAUt5F,EAAAA,MAEVu5F,EAAc7nG,EAAAA,UAAS,IACK,iBAAlB1J,EAAMugB,SAA0C,KAAlBvgB,EAAMugB,QAC9CvgB,EAAMugB,QACNvgB,EAAMiU,QAGNoI,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,UAAS7I;AAEhD,SAASg5B,IACHxM,EAAcnoC,QAChBmoC,EAAcnoC,OAAQ,GAG1B,SAAS8wG,EAAcpmE,GACrBA,EAAEyJ,kBACFzJ,EAAEoW,iBACF8vD,EAAQ5wG,OAAO2qB,OAAOy3B,QAiJxB,OA9IA5lC,IAAU,KACR,MAAO/X,EAAW+zC,GAAgBn0C,EAAiBC,GAC7Cm0C,EAAaR,GAAOj+B,YAAY1a,GAChCs1C,EAAepB,GAAkBx5B,YAAY1a;AAEnD,OAAA2d,EAAAC,YAAA+6B,GAAA56B,aAAA,CAAApG,MAEW,CACL,WACA,CAAE,iBAAkB3X,EAAMyH,MAC1B,CAAE,kBAAmBzH,EAAM8iB,OAC3B,CAAE,0BAA2B+lB,EAAcnoC,OAC3CirC,EAAcjrC,MACdV,EAAM2X,QAEHxS,EACAg0C,EAAU,CAAAxW,WACL5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAArwB,GAChBA,EAAGxkB,MAAKu1C,QACH1B,EAAU7zC,MAAKwO,MACjBlP,EAAMkP,QAAK,IAGdkM,EACH3D,QAASzB,IAMH,IANIkP,GACRA,EAAE0zB,WACFA,EAAU/mB,WACVA,EAAUwlB,WACVA,EAAUG,QACVA,GACDxhC;AACC,MAAM6iC,EAAY,CAChB9vB,MAAAA,EACAyuB,QAAAA;AAGF,OAAA75B,EAAAC,YAAAs2B,GAAAn2B,aAAA,CAAA/F,IAEUs5F,GACDh8D,EAAY,CAAA3S,WACP5Z,EAAMroB,MAAK,sBAAA60C,CAAAA,GAAXxsB,EAAMroB,MAAK60C,EAICF,GAAQnwB,GAHzBA,EAAGxkB,MAAK,mBACMk4C,EAAWl4C,MAAK4G,KAAA,WAAA,eAGpBuhC,EAAcnoC,MAAQ,aAAUlB,EAASiZ,SAC7CoZ,EAAWnxB,MAAKwM,SAChBmqC,EAAW32C,MAAKg0C,QACjB5oC,EAAK6oC,OACNyB,GACJ8C,GAAY,IAGZ99B,EACH3D,QAAS8sC,IAAA,IAAC5oB,uBAAEA,EAAsBC,sBAAEA,GAAuB2oB;AAAA,OAAA5mC,EAAAA,YAAA,MAAA,CAAAhG,MAEhD,CACL,qBACGgkB,EAAuBj7B,OAC3BwO,MACO0sB,EAAsBl7B,MAAK2nC,QACzBmpE,GAAY,CAEpBp2F,EAAM,eAAauC,EAAAA,YAAA,MAAA,CAAAna,IAAA,UAAAmU,MAAA,wBAAA,CAEfyD,EAAM,cAAcy9B,KAIxBz9B,EAAM,gBAAcuC,EAAAC,YAAA,MAAA,CAAApa,IAAA,SAAAmU,MAAA,yBAAA,CAEhByD,EAAM,eAAey9B,QAK/BxtB,MAAOk6B,IAAA,IAACvQ,UAAEA,EAASz3B,KAAEA,EAAIoe,uBAAEA,EAAsBC,sBAAEA,GAAuB2pB;AAAA,OAAA5nC,EAAAA,YAAA6W,EAAAA,SAEpEwgB,KAAAA,CAAAA,EAASr3B,EAAAC,YAAA,MAAA,CAAAjG,MAEF,CACL,kBACA,CAAE,0BAA2B4F,GAAQvd,EAAMugB,SAC3CvgB,EAAM8iB,WAAQtjB,EAAYm8B,EAAuBj7B,OAClDwO,MACOlP,EAAM8iB,WAAQtjB,EAAYo8B,EAAsBl7B,OAAK,CAE3D0a,EAAMq2F,MAAK9zF,EAAAA,YAAAoc,GAAA,CAAAziB,SAEC,CACRowB,MAAO,CACLnqB,KAAAA,EACA1U,KAAM,aAET,CAAA4O,QAAAA,IAAA,CAEC2D,EAAMq2F,MAAM,IAAK54D,EAAWt7B,KAAAA,OAAOI,EAAAA,YAAAwb,GAAA,KAAA,CAAA1hB,QAAAA,IAInC,CAACzX,EAAMugB,QAON5C,EAAAC,YAAAguB,GAAA,CAAAxhC,KAAA,WAAAqb,QAAA,EAAAxR,OAI2B,IAAlBujC,EAAQ92C,WAAkBlB,EAAY+xG,EAAY7wG,OAAK,CAAA+W,QAE7DohC,GACAz9B,EAAM42B,OACF52B,EAAM42B,OAAO6G,GAAUl7B,EAAAC,YAAAmrB,GAAA,CAAAtjB,OAGZozB,EAAUhW,SAAQ5uB,MACnB4kC,EAAU5kC,MAAK40B,eAAA,EAAAhgC,KAAA,KAAA4F,MAAA,KAAA,QAlBhC8O,GAAII,EAAAC,YAAA8pB,GAAA,CAAAlkC,IAEKjC,OAAOgc,GAAKA,KACXA,EAAI1U,KAAA,WAGd,sBAmCtB,MCnOE6oG,GAAsBr6F,GAAa,CAC9CpD,MAAO1S,OACPmN,OAAQ,CAACjN,OAAQF,QACjB3C,OAAQ0lB,WAEL5M,QACAwpB,QACA3c,QACAsX,QACApH,QACApD,MACF,cAEUsgF,GAAa92F,IAAAA,CAAmB,CAC3CzQ,KAAM,aAENpK,MAAO0xG,KAEPl3F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChC27B,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,WACpFqhC,iBAAEA,GAAqBD,GAAaphC,IACpCg8B,eAAEA,GAAmBD,GAAW/7B,IAChCwiC,cAAEA,GAAkBF,KACpB5zB,EAAShF,YAAS,IAAM1J,EAAM0O,SAAW1O,EAAMpB,OAAS,GAAK,OAC7D0mB,iBAAEA,GAAqBL,GAAc,CACzCC,GAAIllB,EAAMoK,KACVoa,MAAO9a,EAAQA,UAAC,IAAMyL,SAASnV,EAAMwkB,MAAO,MAC5CoC,SAAU3Z,EAAUA,WAAC,OACrBga,WAAYvY,EACZwY,YAAaxY,EACb+W,OAAQ/b,EAAAA,UAAS,KAAM,IACvB+a,SAAU6Z,EAAAA,MAAMt+B,EAAO;AAwBzB,OArBAkd,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,eACA,CAAE,uBAAwB3X,EAAMpB,QAChCk0B,EAAapyB,MACbi7B,EAAuBj7B,MACvB2gC,EAAiB3gC,MACjBs7B,EAAet7B,MACfV,EAAM2X,OACPzI,MACM,CACL0sB,EAAsBl7B,MACtB4kB,EAAiB5kB,MACjB8hC,EAAc9hC,MACdV,EAAMkP,QAEEkM,KAIP,MCrEEw2F,GAA0C/5F,OAAOC,IAAI,kBCerD+5F,GAAgBx6F,GAAa,CACxCg2E,MAAO/oE,QAEPwtF,YAAavwG,OACbwwG,WAAYztF,QAEZo0B,UAAW,CACTpxC,KAAM/F,OACNkW,QAAS,iBAGRpT,EAAKssC,GAAc,CACpBrL,cAAe,kBACflkB,QAAS,SACP,CACF,SACA,QACA,OACA,WACA,WACA,YAED,QAEU4wF,GAAOn3F,IAAAA,CAA8B,CAChDzQ,KAAM,OAENpK,MAAO6xG,KAEPr3F,MAAOxa,EAAKsO,GAAoB,IAAlB8M,MAAEA,EAAKpW,MAAEA,GAAOsJ;AAC5B,MAAQktB,iBAAkBy2E,EAAoBx2E,gBAAiBy2E,GAAsB52E,GAAat7B,EAAO,eAEnGqgG,EAASroF,EAAAA,MACTm6F,EAAWn6F,EAAAA,MAEXwP,EAAe9d,EAAAA,UAAS,IAA0B,eAApB1J,EAAM04C,YACpC/S,EAAaj8B,YAAS,IAAM22F,EAAO3/F,OAAOo0B,OAAO6Q,WAAWjlC,QAAS;AAE3E,SAAS0xG,EAAYp8F,GAAiC,IAA/BtV,MAAEA,GAA2BsV;AAClD,GAAItV,EAAO,CACT,MAAM2xG,EAAkChS,EAAO3/F,OAAOmB,IAAI6a,eAAeqb,cAAc,mCACjFu6E,EAASH,EAASzxG;AAExB,IAAK2xG,IAAWC,EAAQ;AAExB,MAAMr+F,EAAQ9E,iBAAiBkjG,GAAQp+F,MAEjCs+F,EAAUF,EAAOtjG,wBACjByjG,EAAUF,EAAOvjG,wBAEjB0jG,EAAKjrF,EAAa9mB,MAAQ,IAAM,IAChCgyG,EAAKlrF,EAAa9mB,MAAQ,IAAM,IAChCiyG,EAAcnrF,EAAa9mB,MAAQ,QAAU,SAC7CkyG,EAAcprF,EAAa9mB,MAAQ,QAAU,SAI7CmS,EAFU0/F,EAAQE,GACRD,EAAQC,GAEpBF,EAAQI,GAAeH,EAAQG,GAC/BJ,EAAQE,GAAMD,EAAQC,GACpBv9E,EACJxvB,KAAK+2D,KAAK5pD,GAAS,EAAK2U,EAAa9mB,MAAQ,QAAU,SACrDgF,KAAK+2D,KAAK5pD,GAAS,EAAK2U,EAAa9mB,MAAQ,OAAS,MACtD,SAEEstC,GADOtoC,KAAKe,IAAIoM,IAAUnN,KAAK+2D,KAAK5pD,GAAS,EAAI0/F,EAAQK,GAAeJ,EAAQI,KACjEltG,KAAKD,IAAI8sG,EAAQK,GAAcJ,EAAQI,KAAiB,EAGvEC,EAAQ;AACd3iG,GAAQoiG,EAAQ,CACdr3E,gBAAiB,CAAChnB,EAAO,gBACzB5E,UAAW,CACR,YAAWqjG,KAAM7/F,aAAiB6/F,KANlBH,EAAQK,GAAeJ,EAAQI,IAAgB,KAO/D,YAAWF,KAAM7/F,EAAQggG,aAAiBH,MAAO1kE,EAAQ,GAAK6kE,EAAQ,KACvE,QAEFhjG,gBAAiBlP,MAAM,GAAG6oC,KAAKtU,IAC9B,CACDsC,SAAU,IACVC,OAAQhc,MAkDd,OA7CAyB,IAAU,KACR,MAAM48E,EAAWx4E,GAAK5G,YAAY1a;AAElC,OAAA2d,EAAAC,YAAA0D,GAAAvD,aAAA,CAAA6yB,OAEaghE,GAAW55F,IACdqoF,EAAM1oF,MACL,CACL,QACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKs5B,SACR7C,EAAWjlC,MAAQ,GAAK,EAACwd,KAAA,MAAA,gBAEpB3c,OAAOokC,EAAWjlC,OAAM+kB,QAC/B,GACJq0E,EACA90F,EAAK,CAAAsI,MACFtN,EAAMqtF,MAAKnzD,SACRl6B,EAAMqtF,MAAQ,SAAM7tF,EAAS,mBACrB4yG,IAAY,IAG1Bh3F,EACH3D,QAASA,IAAAkG,EAAAC,YAAA4W,EAAAjtB,SAAA,KAAA,CAEH6T,EAAM3D,aAAezX,EAAM2R,MAE1B3R,EAAM+xG,YAAUp0F,EAAAA,YAAA,MAAA,CAAA3F,IAETm6F,EAAQx6F,MACP,CACL,gBACAs6F,EAAmBvxG,OACpBwO,MACOgjG,EAAkBxxG,OAE7B,aAQNu1D,GAAY,GAAIoqC,MCvIdyS,GAAuBz7F,GAAa,IAC5ChT,EAAK2iE,KAAoB,CAAC,aAAc,WAAY,WAAY,aAAc,QAAS,eACzF,eAEU+rC,GAAcl4F,IAAAA,CAAmB,CAC5CzQ,KAAM,cAENpK,MAAO8yG,KAEP30E,MAAO,CACL,oBAAsBl9B,IAAe,GAGvCuZ,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwmB,EAAQ5c,EAAAA,OAAO05F,GAAa,MAC5BjB,EAASpoF,GAAgBvoB,EAAO,cAEhC+oB,EAAQrf,EAAAA,SAAS,CACrB9B,IAAGA,IAGmB,MAAhB+oG,EAAOjwG,OAAkBo0B,EAItBA,EAAMtO,MAAM9lB,MAAMqmB,MAAKvmB,GAAQs0B,EAAMiR,SAASrlC,MAAMqF,SAASvF,EAAK0kB,OAAMxkB,MAJpCiwG,EAAOjwG,MAMpDqH,IAAKkB,GACH0nG,EAAOjwG,MAAQuI;AAwBnB,OApBAiU,IAAU,KACR,MAAM0rD,EAAc1B,GAAQxsD,YAAY1a;AAExC,OAAA2d,EAAAC,YAAAspD,GAAAnpD,aAAA,CAAAvE,IAAA,eAGSovD,EAAW,CAAAjmC,WACN5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA59B,MACd,CACL,gBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKm2B,WACP,EAAK4V,OACT,IACE7/B,MAKT,MC3DE43F,GAA2B37F,GAAa,IAChDwxD,MACF,mBAEUoqC,GAAkBp4F,IAAAA,CAAmB,CAChDzQ,KAAM,kBAENpK,MAAOgzG,KAEPx4F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAkBrB,OAjBA4O,IAAU,KACR,MAAMwsD,EAAkBX,GAAYruD,YAAY1a;AAEhD,OAAA2d,EAAAC,YAAAmrD,GAAAhrD,aAAA,CAAAvE,IAAA,mBAGSkwD,EAAe,CAAA/xD,MACb,CACL,qBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,QACJkM,MAKT;ACkBJ,MAAM83F,GAAiB77F,GAAa,CACzC87F,UAAW,CACT7rG,KAAM/F,OACNkW,QAAS,SAEXxD,MAAO1S,OACP6xG,UAAW9uF,QACXkC,MAAO,CACLlf,KAAM3G,MACN8W,QAASA,IAAO,IAElBu5B,QAAS1sB,QACTskB,QAASrnC,OACTyiE,KAAM1/C,QACN5V,OAAQ,CACNpH,KAAM,CAAC7F,OAAQF,QACfkW,aAASjY,GAEXuyG,WAAYztF,QACZwtF,YAAavwG,UAEV09C,GAAqB,CACtB5Z,UAAW,QACXC,cAAe,4BAEdf,QACA9P,MACF,SAEU9S,GAAQ9G,IAAAA,CAA+B,CAClDzQ,KAAM,QAENpK,MAAOkzG,KAEP/0E,MAAO,CACL,oBAAsBl9B,IAAe,GAGvCuZ,MAAOxa,EAAKsO,GAAoB,IAAlBtJ,MAAEA,EAAKoW,MAAEA,GAAO9M;AAC5B,MAAMya,EAAQR,GAAgBvoB,EAAO,cAC/BwmB,EAAQ9c,EAAAA,UAAS,IAlD3B,SAAqB8c,GACnB,OAAKA,EAEEA,EAAMpf,KAAI5G,GACVkB,EAASlB,GAEPA,EAFqB,CAAEmR,KAAMnR,EAAME,MAAOF,KAHhC,GAiDY6yG,CAAWrzG,EAAMwmB,UACxCie,eAAEA,GAAmBD,GAAWxkC,IAChC27B,uBAAEA,EAAsBC,sBAAEA,GAA0BF,GAAmB4C,EAAKA,MAACt+B,EAAO,aACpF8xD,QAAEA,GAAYD;AAiFpB,OA/EAz5C,GAAgB,CACd45F,KAAM,CACJ/9F,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpB04C,UAAWpa,EAAAA,MAAMt+B,EAAO,aACxBgxC,QAAS1S,EAAAA,MAAMt+B,EAAO,WACtBqtF,MAAO/uD,EAAAA,MAAMt+B,EAAO,aACpB8xG,YAAaxzE,EAAAA,MAAMt+B,EAAO,eAC1B+xG,WAAYzzE,EAAAA,MAAMt+B,EAAO,iBAI7Bkd,IAAU,KACR,MAAMqlC,EAAkBjD,GAAY5kC,YAAY1a,GAC1CmxG,KAAe/1F,EAAMxc,QAAUoB,EAAMwmB,MAAMjnB,OAAS;AAE1D,OAAAoe,EAAAA,YAAA6W,EAAAA,SAAA7W,KAAAA,CAAAA,EAAAA,YAAA2hC,GAAAvhC,EAAAqe,WAGWmmB,EAAe,CAAA5f,WACV5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA59B,MACd,CACL,SACC,WAAU3X,EAAM04C,YAChB,sBAAqB14C,EAAMmzG,YAC5B,CACE,qBAAsBnzG,EAAMozG,UAC5B,eAAgBpzG,EAAMgkE,KACtB,kBAAmBhkE,EAAMgxC,SAE3BvM,EAAe/jC,MACfi7B,EAAuBj7B,MACvBV,EAAM2X,OACPzI,MACM,CACL,CAAE,kBAAmB/N,EAAcnB,EAAM0O,SACzCktB,EAAsBl7B,MACtBV,EAAMkP,OACPgP,KAAA,UAAA0yB,OAEQghE,IACJ9/C,EACA9sD,GAAK,CAAAyS,QAAAA,IAER2D,CAAAA,EAAM3D,aAAe+O,EAAM9lB,MAAM0G,KAAI5G,GACrC4a,EAAM/Y,MAAM,CAAE7B,KAAAA,KAAOmd,EAAAC,YAAAo0F,GAAAj0F,EAAAA,WAEZvd,EAAI,CAAAgD,IACHhD,EAAKmR,KAAIjR,MACPF,EAAKE,QACJ,CACP+W,QAASA,IAAM2D,EAAO,OAAM5a,EAAKE,WAAW,CAAEF,KAAAA,WAOtD2wG,GAASxzF,cAAAo1F,GAAAh1F,EAAAA,WAAA,CAAA4kB,WAEG5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA/xC,IAAA,eAEhBsuD,GAAO,CAAAr6C,QAAAA,IAEV+O,CAAAA,EAAM9lB,MAAM0G,KAAI5G,GAAQ4a,EAAM5a,OAAO,CAAEA,KAAAA,KAAOmd,EAAAC,YAAAq1F,GAAA,CAAAvyG,MAEpCF,EAAKE,OACJ,CACP+W,QAASA,IAAM2D,EAAO,QAAO5a,EAAKE,WAAW,CAAEF,KAAAA,QAKnD4a,EAAMxc,mBAOX,MCnJE00G,GAAqBj8F,GAAa,CAC7Ck8F,SAAUjvF,QACVg1C,UAAWh1C,QACXyH,QAAS,CAACzH,QAAS7iB,OAAQF,QAC3Bg4D,aAAcrvD,SACd1D,OAAQjF,OACR+pB,YAAa/pB,OACbi4D,sBAAuBl1C,QACvBm1C,kBAAmBn1C,QACnBkvF,SAAUlvF,QACV0sE,KAAM,CACJ1pF,KAAM,CAAC7F,OAAQF,QACfkW,QAAS,EACTwkB,UAAYh7B,IAAYK,MAAMwO,WAAW7O,KAE3CwyG,QAAS,CACPnsG,KAAM,CAAC7F,OAAQF,QACf06B,UAAYh7B,IAAYK,MAAMwO,WAAW7O,KAE3C0a,OAAQpa,OACRm4D,eAAgB35D,UAEbq4C,QACAyf,MACF,aAMUj2C,GAAY/G,IAAAA,CAAmC,CAC1DzQ,KAAM,YAEN6zB,WAAY,CAAEtB,UAAAA,IAEd7e,cAAc,EAEd9d,MAAOszG,KAEPn1E,MAAO,CACL,gBAAkBiN,IAAkB,EACpC,oBAAsBA,IAAkB,EACxC,iBAAmB6K,IAAqB,EACxC,oBAAsBhtC,IAAgB,GAGxCuR,MAAOxa,EAAKsO,GAA0B,IAAxBtJ,MAAEA,EAAKmkB,KAAEA,EAAI/N,MAAEA,GAAO9M;AAClC,MAAMya,EAAQR,GAAgBvoB,EAAO,eAC/Bu0C,UAAEA,EAASzoC,MAAEA,EAAKsqC,KAAEA,GAASF,GAASl2C,GACtCu5D,EAAe7vD,EAAAA,UAAS,IACS,mBAAvB1J,EAAMu5D,aAChBv5D,EAAMu5D,aAAaxwC,EAAMroB,QACxBqoB,EAAMroB,OAAS,IAAImF,WAAWtG,SAE/BkG,EAAMiE,EAAAA,UAAS,IACf1E,EAAM20D,UAAkB30D,EAAM20D,WAG/B35D,EAAM+rB,SACmB,iBAAlB/rB,EAAM+rB,SACW,iBAAlB/rB,EAAM+rB,aAHf,EAMO/rB,EAAM+rB;AAGf,SAAS6tC,EACP98B,EACA1iB,GAEKpa,EAAMs5D,WAAcx8B,GAExB1iB,EAAQ,GAAGvT,QAA6BiF,UAG3C,MAAM+tD,EAAY7hD,EAAAA,MACZ8hD,EAAY9hD,EAAAA,MACZ07F,EAAgBzmG,aAAW,IAC3B0mG,EAAc37F,EAAAA,MACd6qB,EAAWn5B,YAAS,IACxB1J,EAAMw5D,uBACNjlB,EAAU7zC,OACVV,EAAMylB;AAGR,SAASivB,IACHi/D,EAAYjzG,QAAU8K,SAASC,eACjCkoG,EAAYjzG,OAAOoL,QAGhByoC,EAAU7zC,OAAOoL,IAExB,SAASmuD,EAAgB7uB,GACvBsJ,IAEAvrB,EAAK,gBAAiBiiB,GAExB,SAAS4uB,EAAoB5uB,GAC3BjiB,EAAK,oBAAqBiiB,GAE5B,SAAS8uB,EAAS9uB,GAChBA,EAAEyJ,kBAEFH,IAEA7vB,EAAAA,UAAS,KACPkE,EAAMroB,MAAQ,GAEd4J,EAAUtK,EAAM,iBAAkBorC,MAGtC,SAAS0J,EAAS1J,GAChB,MAAMxpC,EAAKwpC,EAAEvkC;AAEb,GADAkiB,EAAMroB,MAAQkB,EAAGlB,MACbV,EAAM05D,gBAAgB5zD,KAAM,CAC9B,MAAMq0D,EAAgB,CAACv4D,EAAGw4D,eAAgBx4D,EAAGy4D;AAC7Cx1C,EAAAA,UAAS,KACPjjB,EAAGw4D,eAAiBD,EAAc,GAClCv4D,EAAGy4D,aAAeF,EAAc,OAKtC,MAAMy5C,EAAW57F,EAAAA,MACXg5E,EAAOh5E,EAAGA,KAAEhY,EAAMgxF,MAClBt4B,EAAsBhvD,YAAS,IAAM,CAAC,QAAS,cAAc3D,SAAS/F,EAAMohB;AAIlF,SAASyyF,IACF7zG,EAAMuzG,UAEX1uF,EAAAA,UAAS,KACP,IAAK+uF,EAASlzG,QAAUo5D,EAAUp5D,MAAO;AAEzC,MAAMwO,EAAQC,iBAAiBykG,EAASlzG,OAClCozG,EAAa3kG,iBAAiB2qD,EAAUp5D,MAAMmB,KAE9C8pG,EAAU77F,WAAWZ,EAAMopB,iBAAiB,0BAChDxoB,WAAWZ,EAAMopB,iBAAiB,0BAClCxoB,WAAWZ,EAAMopB,iBAAiB,6BAE9B5pB,EAASklG,EAASlzG,MAAMsc,aACxB+2F,EAAajkG,WAAWZ,EAAM6kG,YAM9BC,EAAYzuG,EAAMmJ,GAAU,EALhBhJ,KAAKD,IACrBqK,WAAW9P,EAAMgxF,MAAQ+iB,EAAapI,EACtC77F,WAAWgkG,EAAWx7E,iBAAiB,8BAEvBxoB,WAAW9P,EAAMyzG,SAAYM,EAAapI,GAAW3yF,EAAAA;AAEvEg4E,EAAKtwF,MAAQgF,KAAK64C,OAAOy1D,EAAYrI,GAAWoI,GAEhDL,EAAchzG,MAAQS,EAAc6yG,MAUxC,IAAIxwF;AAuJJ,OA3LA7Z,EAAAA,aAAY,KACL3J,EAAMuzG,WAAUviB,EAAKtwF,OAASV,EAAMgxF,SA6B3CzuD,EAASA,UAACsxE,GACVjwF,QAAMmF,EAAO8qF,GACbjwF,EAAAA,OAAM,IAAM5jB,EAAMgxF,MAAM6iB,GACxBjwF,EAAAA,OAAM,IAAM5jB,EAAMyzG,SAASI,GAC3BjwF,EAAAA,OAAM,IAAM5jB,EAAMwhC,SAASqyE,GAG3BjwF,EAAKA,MAACgwF,GAAU3qG,IACVA,GACFua,EAAW,IAAIC,eAAeowF,GAC9BrwF,EAASQ,QAAQ4vF,EAASlzG,QAE1B8iB,GAAUG,gBAGdD,EAAAA,iBAAgB,KACdF,GAAUG,gBAGZzG,IAAU,KACR,MAAMo9C,KAAgBl/C,EAAM2Q,SAAW/rB,EAAM+rB,SAAW/rB,EAAMu5D,cACxDxgB,KAAgBuhB,IAAcl/C,EAAM49B,UACnC7zC,EAAWC,GAAcL,EAAiBC,IACzC29B,WAAYtG,KAAM8c,GAAeR,GAAOj+B,YAAY1a,GACtDu6D,EAAapB,GAAiBn5D;AAEpC,OAAA2d,EAAAC,YAAA+6B,GAAA56B,aAAA,CAAA/F,IAEU6hD,EAASl3B,WACL5Z,EAAMroB,MAAK,sBAAA60C,GAAXxsB,EAAMroB,MAAK60C,EAAA59B,MACd,CACL,0BACA,CACE,uBAAwB3X,EAAMwG,OAC9B,uBAAwBxG,EAAM2b,OAC9B,yBAA0B3b,EAAMwG,OAChC,yBAA0BxG,EAAM2b,OAChC,wBAAyB3b,EAAMuzG,SAC/B,wBAAyBvzG,EAAMwzG,UAAYxzG,EAAMuzG,SACjD,4BAA6B76C,EAAoBh4D,OAEnDV,EAAM2X,OACPzI,MACOlP,EAAMkP,OACT/J,EACAg0C,EAAU,CAAAd,YACc,IAAf24C,EAAKtwF,QAAgBg4D,EAAoBh4D,MAAKu1C,QAClD1B,EAAU7zC,QAAK,IAGpB0a,EACH3D,QAASzB,IAAA,IAACkP,GACRA,EAAE2M,WACFA,EAAUulB,QACVA,EAAOC,WACPA,EAAUG,QACVA,GACDxhC;AAAA,OAAA2H,EAAAC,YAAAy6C,GAAAt6C,aAAA,CAAA/F,IAES8hD,EAAS5qD,MACR,CACL,8BAA+BwkG,EAAchzG,OAC9C2nC,QACS4xB,EAAc/X,YACV8X,EAAkB,gBAChBE,EAAO,uBACAl6D,EAAM,wBAAuB,sBAC9BA,EAAM,wBACvBu6D,EAAU,CAAAr1C,GACVA,EAAGxkB,MAAK+kB,OACJod,EAASniC,OAAS02C,EAAQ12C,MAAK23C,YACX,IAAf24C,EAAKtwF,QAAgBg4D,EAAoBh4D,MAAKu3D,MACpD7gB,EAAQ12C,OAASV,EAAMi4D,MAAKx/C,SACzBoZ,EAAWnxB,MAAKu1C,QACjB1B,EAAU7zC,MAAK2e,OACC,IAAlBm4B,EAAQ92C,QAAe,IAG1B0a,EACH3D,QAAS8sC,IAAA,IACPvkD,OAAS2X,MAAO6iD,KAAe3hB,IAChC0L;AAAA,OAAA5mC,EAAAA,YAAA6W,EAAAA,SAAA,KAAA,CAEKx0B,EAAMwG,QAAMmX,EAAAC,YAAA,OAAA,CAAAjG,MAAA,wBAER3X,CAAAA,EAAMwG,SAEXo6B,EAAAA,eAAAjjB,EAAAC,YAAA,WAAAG,aAAA,CAAA/F,IAGO27F,EAAWh8F,MACT6iD,EAAU95D,MACVqoB,EAAMroB,MAAKo0C,QACTA,EAAOwkB,UAILt5D,EAAMs5D,UAASpsD,SAChBmqC,EAAW32C,MAAK+X,SAChBoZ,EAAWnxB,MAAK4qB,YACbtrB,EAAMsrB,YAAW0lE,KACxBhxF,EAAMgxF,KAAI5mF,KACVpK,EAAMoK,KAAIsqC,QACPA,EAAOC,OACRyB,GACJyC,EACAzzC,GAAU,MAAA,CAAA,CAAAy7B,EAAAA,iBAZD,aAAA,CACZt2B,QAASqvD,GACR,KAAI,CAAA38B,MAAA,MAaPj9B,EAAMuzG,UAAQ3yE,EAAAT,eAAAxiB,EAAAC,YAAA,WAAA,CAAAjG,MAEL,CACL6iD,EACA,qBACDt1C,GACK,GAAE2zB,EAAU3zB,WAAU,sBAAAqwB,GAClBxsB,EAAMroB,MAAK60C,EAAAv9B,IACf47F,EAAQ1mG,UAAA,EAAA,cAAA,QAAA+mG,MAAAA,CAAAA,CAAAA,EAAAA,WADJlrF,EAAMroB,SAOlBV,EAAM2b,QAAMgC,EAAAA,YAAA,OAAA,CAAAhG,MAAA,wBAER3X,CAAAA,EAAM2b,eAQtBq9B,QAASD,EAAaF,GAASl7B,cAAA6W,EAAAA,SAAA,KAAA,CAEzBpZ,EAAM49B,UAAUH,GAEhByhB,GAAU38C,cAAA6W,EAAAA,SAAA,KAAA,CAAA7W,EAAAC,YAAA,OAAA,KAAA,MAAAD,EAAAC,YAAA65C,GAAA,CAAAhyC,OAKGzlB,EAAMy5D,mBAAqBllB,EAAU7zC,MAAKA,MAC3C64D,EAAa74D,MAAK+E,IACpBA,EAAI/E,MAAK+X,SACJzY,EAAMyY,UACC2C,EAAM2Q,kBAK9BvsB,OAMLy2D,GAAY,GAAI4D,EAAWC,EAAW65C,MC1UpCO,GAA0B78F,GAAa,CAClD88F,eAAgB7vF,WAEb5M,QACA2Z,QACAoD,MACF,kBAEU2/E,GAAiBv5F,IAAAA,CAAmB,CAC/CzQ,KAAM,iBAENpK,MAAOk0G,KAEP15F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB;AAEtC,MAAO,IACAA,EAAMm0G,eAEXx2F,EAAAC,YAAA5d,EAAAkb,IAAA,CAAAvD,MAEW,CACL,mBACAmb,EAAapyB,MACbV,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAuI,QAAAA,IAAA,CAEjB2D,EAAM3D,eAXsB2D,EAAM3D,eCZjC48F,GAA4Bh9F,GAAa,CACpDi9F,SAAU/yG,OACVgzG,QAASjwF,QACTkwF,QAASlwF,QACT/G,KAAMH,GACNq3F,UAAWlzG,OACXmzG,UAAWnzG,UAERmW,QACAmkB,QACAwL,QACAnG,MACF,oBAEUyzE,GAAmB95F,IAAAA,CAAmB,CACjDzQ,KAAM,mBAENpK,MAAOq0G,KAEP75F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMi5B,YAAEA,EAAWC,WAAEA,GAAeF,GAAQtnC,EAAO,4BAC7C47B,sBAAEA,EAAqBD,uBAAEA,GAA2BD,GAAmB4C,EAAKA,MAACt+B,EAAO,cACpFg8B,eAAEA,GAAmBD,GAAW/7B,EAAO,4BACvCqhC,iBAAEA,GAAqBD,GAAaphC,IAExC27B,uBAAwBi5E,EACxBh5E,sBAAuBi5E,GACrBn5E,GAAmB4C,EAAKA,MAACt+B,EAAO;AA2EpC,OAzEAkd,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,qBACA,CACE,+BAAgC3X,EAAMu0G,SAExCv0G,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAAAyO,EAAAC,YAAA,MAAA,CAAAjG,MAGV,CACL,6BACAi9F,EAAiBl0G,OAClBwO,MACO2lG,EAAgBn0G,OAAK,OAG5BV,EAAMw0G,SAAO72F,EAAAA,YAAA,MAAA,CAAAna,IAAA,MAAAmU,MAGL,CACL,0BACA0pB,EAAiB3gC,MACjBs7B,EAAet7B,MACf6mC,EAAY7mC,OACbwO,MACOs4B,EAAW9mC,OAAK,CAAAid,EAAAC,YAAA,MAAA,CAAAjG,MAGf,CACL,gCACAgkB,EAAuBj7B,MACvBs7B,EAAet7B,OAChBwO,MACO0sB,EAAsBl7B,OAAK,CAEhC0a,EAAM3D,QAKYkG,EAAAC,YAAAmc,GAAA,CAAAv2B,IAAA,gBAAAiV,UAKLzY,EAAMud,KAAIjG,SACZ,CACRowB,MAAO,CACLzzB,MAAOjU,EAAMy0G,UACbl3F,KAAMvd,EAAMud,KACZ1U,KAAM7I,EAAM6I,QAGEuS,EAAM3D,SAlBZkG,EAAAA,YAAA+pB,GAAA,CAAAlkC,IAAA,OAAAyQ,MAGJjU,EAAMy0G,UAASl3F,KAChBvd,EAAMud,KAAI1U,KACV7I,EAAM6I,MAAI8U,UAkB1BA,EAAAC,YAAA,MAAA,CAAAjG,MAGQ,CACL,4BACAi9F,EAAiBl0G,OAClBwO,MACO2lG,EAAgBn0G,OAAK,UAK5B,MC5FEo0G,GAAyBz9F,GAAa,CACjDmqB,QAASjgC,OACT+yG,SAAU/yG,OACVgzG,QAASjwF,QACTkwF,QAASlwF,QACTywF,aAAc,CACZztG,KAAMgd,QACN7M,aAASjY,GAEX+d,KAAMH,GACNq3F,UAAWlzG,OACXyzG,UAAW,CAACvzG,OAAQF,WAEjBmW,QACAsiB,QACAkH,QACArF,QACAwL,QACA5S,MACF,iBAEUwgF,GAAgBp6F,IAAAA,CAAuC,CAClEzQ,KAAM,gBAENpK,MAAO80G,KAEPt6F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMgsB,gBAAEA,GAAoBD,GAAar6B,GAEnC6pE,EAAU58D,aAAW,GACrBioG,EAASl9F,EAAAA;AAqDf,OApDA4L,EAAKA,MAACsxF,GAAQrxF,IACPA,IACLgmD,EAAQnpE,MAAQmjB,EAAShiB,IAAIk2B,cAAc,6BAA6BhpB,wBAAwBN,OAAS,KACxG,CACD7E,MAAO,SAGTsT,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,kBACA,CACE,4BAA6B3X,EAAMu0G,SAErCv0G,EAAM2X,OACPzI,MACM,CACL,CACE,wBAAyB/N,EAAc0oE,EAAQnpE,OAC/C,0BAA2BV,EAAMg1G,UAAa,yCAAwC7zG,EAAcnB,EAAMg1G,cAAgB7zG,EAAc,IAE1InB,EAAMkP,QACP,CAAAyO,EAAAC,YAAA,MAAA,CAAAjG,MAAA,wBAAAzI,MAISorB,EAAgB55B,OAEtB0a,CAAAA,EAAM3D,cAAWkG,EAAAA,YAAAg3F,GAAA,CAAA38F,IAIbk9F,EAAMV,QACFx0G,EAAMw0G,QAAOj3F,KAChBvd,EAAMud,KAAIk3F,UACLz0G,EAAMy0G,UAAS5rG,KACpB7I,EAAM6I,KAAIs4B,UACLnhC,EAAMmhC,UAASmzE,SAChBt0G,EAAMs0G,SAAQC,QACfv0G,EAAMu0G,QAAOtzF,QACbjhB,EAAMihB,SACP,CAAExJ,QAAS2D,EAAMmC,OAGR,YAAlBvd,EAAMwhC,SAAqB7jB,EAAAA,YAAA,MAAA,CAAAhG,MAAA,6BAAA,EAEtB3X,EAAM+0G,cAAgB35F,EAAM0uB,mBAMhC,MCrFEqrE,GAAqB99F,GAAa,CAC7CzJ,MAAO,CACLtG,KAAM/F,OACNkW,QAAS,SACTwkB,UAAYh7B,GAAW,CAAC,SAAU,SAAS8E,SAAS9E,IAEtDy3C,UAAW,CACTpxC,KAAM/F,OACNkW,QAAS,WACTwkB,UAAYh7B,GAAW,CAAC,WAAY,cAAc8E,SAAS9E,IAE7Dm0F,QAAS,CACP9tF,KAAM/F,OACNkW,QAAS,OACTwkB,UAAYh7B,GAAW,CAAC,OAAQ,UAAU8E,SAAS9E,IAErD0M,KAAM,CACJrG,KAAM/F,OACN06B,UAAYh7B,GAAgB,MAALA,GAAa,CAAC,QAAS,OAAO8E,SAAS9E,IAEhEm0G,cAAe,CACb9tG,KAAM,CAAC/F,OAAQE,QACfgW,QAAS,GAEXi9F,UAAWnzG,OACX8zG,aAAc,CACZ/tG,KAAM/F,OACN06B,UAAYh7B,GAAW,CAAC,QAAS,MAAO,QAAQ8E,SAAS9E,OAGxDwD,EAAKqwG,GAAuB,CAC7BE,UAAW,IACT,CAAC,WAAY,UAAW,eAAgB,YAAa,YAAa,YACnEt9F,QACA6sB,QACA9P,QACApD,MACF,aAEUikF,GAAYz6F,IAAAA,CAAmB,CAC1CzQ,KAAM,YAENpK,MAAOm1G,KAEP36F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwkB,aAAEA,GAAiBgB,GAAa9zB,IAChCykC,eAAEA,GAAmBD,GAAWxkC,IAChC6wB,WAAEA,GAAeM;AAEvB/Y,GAAgB,CACdu8F,iBAAkB,CAChBD,UAAWp2E,EAAAA,MAAMt+B,EAAO,cAE1Bi1G,cAAe,CACbzzE,QAASlD,EAAAA,MAAMt+B,EAAO,WACtBs0G,SAAUh2E,EAAAA,MAAMt+B,EAAO,YACvBu0G,QAASj2E,EAAAA,MAAMt+B,EAAO,WACtB+0G,aAAcz2E,EAAAA,MAAMt+B,EAAO,gBAC3By0G,UAAWn2E,EAAAA,MAAMt+B,EAAO,aACxB00G,UAAWp2E,EAAAA,MAAMt+B,EAAO,aACxBg1G,UAAW12E,EAAAA,MAAMt+B,EAAO,aACxB6I,KAAMy1B,EAAAA,MAAMt+B,EAAO;AAIvB,MAAMu1G,EAAc7rG,EAAAA,UAAS,KAC3B,MAAMiE,EAAO3N,EAAM2N,KAAO3N,EAAM2N,KAAyB,YAAlB3N,EAAMwhC,QAAwB,MAAQ;AAE7E,OAAO7zB,GAAS,oBAAmBA,OAG/B6nG,EAAkB9rG,EAAAA,UAAS,KAC/B,MAAMsxB,EAAU,CACd,kCACA;AAGF,OAAQh7B,EAAMq1G,cACZ,IAAK,OAAQ,OAAOr6E;AACpB,IAAK,QAAS,OAAOA,EAAQ;AAC7B,IAAK,MAAO,OAAOA,EAAQ;AAC3B,QAAS,OAAO;AA+BpB,OA3BA9d,IAAU,IAAAS,EAAAA,YAAA3d,EAAAkb,IAAA,CAAAvD,MAEC,CACL,aACC,eAAc3X,EAAM04C,YACpB,qBAAoB14C,EAAM4N,QAC1B,uBAAsB5N,EAAMo1F,UAC7BogB,EAAgB90G,MAChB,CACE,2BAA4BV,EAAMg1G,WAEpCliF,EAAapyB,MACb+jC,EAAe/jC,MACf60G,EAAY70G,MACZmwB,EAAWnwB,MACXV,EAAM2X,OACPzI,MACM,CACL,CACE,8BAA+B/N,EAAcnB,EAAMo1G,gBAErDp1G,EAAMkP,QAEEkM,KAIP,MC/HEq6F,GAAyBp+F,GAAa,IAC9CK,QACAmtB,GAAiB,CAAEzjB,QAAS,UAC9B,iBAEUs0F,GAAgB76F,IAAAA,CAAmB,CAC9CzQ,KAAM,gBAENpK,MAAOy1G,KAEPj7F,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AAqBrB,OApBA8J,GAAgB,CACdkJ,KAAM,CACJrN,MAAOqqB,EAAAA,MAAMt+B,EAAO,SACpB0O,OAAQ,UACR0S,QAASkd,EAAAA,MAAMt+B,EAAO,cAI1Bkd,IAAU,IAAAS,EAAAC,YAAA,MAAA,CAAAjG,MAEC,CACL,kBACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,OAAK,CAEjBkM,EAAM3D,gBAIL,MCpBEk+F,GAAoBt+F,GAAa,CAC5C6N,GAAI3jB,OACJoQ,KAAMpQ,UAEH8C,EAAKyuD,GAAkB,CACxBE,aAAa,EACb5nD,SAAU,MACVwiD,iBAAkB,YAClBtwB,OAAO,EACPlD,SAAU,EACV5D,OAAQ,GACRs5B,aAAa,EACbC,aAAa,EACb76B,OAAQ,OACRk+B,OAAO,EACPpE,eAAgB,aAChBloC,YAAY,IACV,CACF,WACA,gBAED,YAEU8uF,GAAW/6F,IAAAA,CAAiC,CACvDzQ,KAAM,WAENpK,MAAO21G,KAEPx3E,MAAO,CACL,oBAAsBz9B,IAAmB,GAG3C8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMu0B,EAAWta,GAAgBvoB,EAAO,eAClC8xD,QAAEA,GAAYD,KAEdx1C,EAAMD,KACN8I,EAAKxb,EAAQA,UAAC,IAAM1J,EAAMklB,IAAO,aAAY7I,MAE7Cm6C,EAAUx+C,EAAAA,MAEV5M,EAAW1B,EAAAA,UAAS,IACjB1J,EAAMoL,SAAS9K,MAAM,KAAKf,OAAS,EACtCS,EAAMoL,SACNpL,EAAMoL,SAAW,YAGjB8pB,EAASxrB,EAAAA,UAAS,IAEH,SAAjB1J,EAAMk1B,QACW,YAAjBl1B,EAAMk1B,QACNl1B,EAAMk1B,OAAO50B,MAAM,KAAKf,OAAS,GACjCS,EAAMoL,SAAS9K,MAAM,KAAKf,OAAS,EACjCS,EAAMk1B,OACNl1B,EAAMk1B,OAAS,YAGfpO,EAAapd,EAAAA,UAAS,IACtB1J,EAAM8mB,WAAmB9mB,EAAM8mB,WAC5B+b,EAASniC,MAAQ,mBAAqB,oBAGzCknD,EAAiBl+C,YAAS,IAC9B0yB,aAAW,CACT,mBAAoBlX,EAAGxkB,OACtBV,EAAM4nD;AAmCX,OAhCA1qC,IAAU,KACR,MAAMo6C,EAAejE,GAAS34C,YAAY1a;AAE1C,OAAA2d,EAAAC,YAAAy1C,GAAAt1C,aAAA,CAAA/F,IAEUw+C,EAAO7+C,MACN,CACL,YACA3X,EAAM2X,OACPzI,MACOlP,EAAMkP,MAAKgW,GACdA,EAAGxkB,OACH42D,EAAY,CAAA30B,WACPE,EAASniC,MAAK,sBAAA60C,GAAd1S,EAASniC,MAAK60C,EAAAzuB,WACXA,EAAWpmB,MAAK+jB,UAAA,EAAArZ,SAElBA,EAAS1K,MAAKw0B,OAChBA,EAAOx0B,MAAKyyD,YAAA,EAAAj1C,KAAA,UAAA0pC,eAGJA,EAAelnD,MAAK4yD,qBAAA,GAEhCxB,GAAO,CAGV9J,UAAW5sC,EAAM4sC,UACjBvwC,QAAS,WAAA,IAAA,IAAAyV,EAAAnsB,UAAAxB,OAAIkL,EAAI9J,IAAAA,MAAAusB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1iB,EAAI0iB,GAAApsB,UAAAosB;AAAA,OAAK/R,EAAM3D,aAAahN,IAASzK,EAAM2R,WAMzDskD,GAAY,GAAIO,MC3Gdq/C,GAAch7F,IAAAA,CAMsB,CAC/CzQ,KAAM,cAENpK,MAAO02C,KAEPvY,MAAO,CACL,oBAAsBz9B,IAAe,GAGvC8Z,MAAOxa,EAAKsO,GAAa,IAAX8M,MAAEA,GAAO9M;AACrB,MAAMwnG,EAAa/+D,GAAc/2C,EAAO;AAExC,MAAO,IAAMob,EAAM3D,UAAUq+F;;ACajC,SAASx5E,GAAW16B,EAAiB26B,GAC9B36B,EAAGm0G,UAAUx5E,EAAQE,SAAUC,EAAErgB,OAEtCza,EAAGm0G,QAAQx5E,EAAQE,SAAUC,EAAErgB,KAAMmH,SAASG,oBACvC/hB,EAAGm0G,QAAQx5E,EAAQE,SAAUC,EAAErgB,MAGjC,MAAM25F,GAAS,SA1CtB,SAAkBp0G,EAAiB26B,GACjC,MAAMK,EAAYL,EAAQK,WAAa,GACjCl8B,EAAQ67B,EAAQ77B,OAChBu8B,KAAEA,EAAI5U,UAAEA,KAAc4tF,GAAiBr5E,EACvCpU,GAAgBzoB,OAAOE,KAAKg2G,GAAc12G,QAE1CgL,QAAEA,EAAOwC,QAAEA,GAA6B,iBAAVrM,EAChCA,EACA,CACA6J,QAAS7J,EACTqM,QAAS,CACPmpG,WAAYD,GAAcE,MAAQ3tF,EAClC4tF,cAAeH,GAAc/vG,MAAQsiB,EACrC6tF,UAAWJ,GAAc/tG,OAASsgB,EAClC8tF,QAASL,GAAcM,KAAO/tF,IAI9BhF,EAAW,IAAIgzF,kBAAiB,WAGjC,IAFHC,EAA2B11G,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GAC9ByiB,EAA0BziB,UAAAxB,OAAAwB,EAAAA,kBAAAvB;AAE1B+K,IAAUksG,EAAWjzF,GAEjByZ,GAAMX,GAAU16B,EAAI26B;AAGtBlU,GAAW9d,IAAU,GAAIiZ,GAE7B5hB,EAAGm0G,QAAUh2G,OAAO6B,EAAGm0G,SACvBn0G,EAAGm0G,QAASx5E,EAAQE,SAAUC,EAAErgB,KAAO,CAAEmH,SAAAA,GAEzCA,EAASQ,QAAQpiB,EAAImL,IAYrBuvB,UAAAA;ACbK,MAAMo6E,GAAS,SA7BtB,SAAkB90G,EAAiB26B,GACjC,MAAMhyB,EAAUgyB,EAAQ77B,MAClBqM,EAAmC,CACvCk3B,SAAU1H,EAAQK,WAAWnX;AAG/B7mB,OAAOiS,iBAAiB,SAAUtG,EAASwC,GAE3CnL,EAAG+0G,UAAY52G,OAAO6B,EAAG+0G,WACzB/0G,EAAG+0G,UAAWp6E,EAAQE,SAAUC,EAAErgB,KAAO,CACvC9R,QAAAA,EACAwC,QAAAA,GAGGwvB,EAAQK,WAAWG,OACtBxyB,KAgBF+xB,UAZF,SAAoB16B,EAAiB26B,GACnC,IAAK36B,EAAG+0G,YAAYp6E,EAAQE,SAAUC,EAAErgB,KAAM;AAE9C,MAAM9R,QAAEA,EAAOwC,QAAEA,GAAYnL,EAAG+0G,UAAUp6E,EAAQE,SAAUC,EAAErgB;AAE9Dzd,OAAOgS,oBAAoB,SAAUrG,EAASwC,UAEvCnL,EAAG+0G,UAAUp6E,EAAQE,SAAUC,EAAErgB;ACxB1C,SAASo2C,GAAS7wD,EAAiB26B,GACjC,MAAMq6E,KAAEA,GAAO,GAAUr6E,EAAQK,WAAa,GACxCl8B,EAAQ67B,EAAQ77B,MAChBqM,EAA4B,iBAAVrM,GAAsBA,EAAMqM,SAAY,CAAEk3B,SAAS,GACrE15B,EAA2B,mBAAV7J,GAAwB,gBAAiBA,EAAQA,EAAQA,EAAM6J,QAEhF1D,EAAS+vG,EACXh1G,EACA26B,EAAQs6E,IACNrrG,SAASusB,cAAcwE,EAAQs6E,KAC/Bj4G;AAEDiI,IAELA,EAAOgK,iBAAiB,SAAUtG,EAASwC,GAE3CnL,EAAGk1G,UAAY/2G,OAAO6B,EAAGk1G,WACzBl1G,EAAGk1G,UAAWv6E,EAAQE,SAAUC,EAAErgB,KAAO,CACvC9R,QAAAA,EACAwC,QAAAA,EAEAlG,OAAQ+vG,OAAOp3G,EAAYqH,IAI/B,SAASy1B,GAAW16B,EAAiB26B,GACnC,IAAK36B,EAAGk1G,YAAYv6E,EAAQE,SAAUC,EAAErgB,KAAM;AAE9C,MAAM9R,QAAEA,EAAOwC,QAAEA,EAAOlG,OAAEA,EAASjF,GAAOA,EAAGk1G,UAAUv6E,EAAQE,SAAUC,EAAErgB;AAE3ExV,EAAO+J,oBAAoB,SAAUrG,EAASwC,UACvCnL,EAAGk1G,UAAUv6E,EAAQE,SAAUC,EAAErgB,KAUnC,MAAM06F,GAAS,CACpBtkD,QAAAA,GACAn2B,UAAAA,GACAoU,QAVF,SAAkB9uC,EAAiB26B,GAC7BA,EAAQ77B,QAAU67B,EAAQzY,WAE9BwY,GAAU16B,EAAI26B,GACdk2B,GAAQ7wD,EAAI26B;ACpCP,MAAMy6E,GC+BN,SACL7uG,EACAnI,GAEA,MAIMi3G,EAWR,SAAyB9uG,EAA8BnI,GACrD,OAAO,SAAU4B,EAAiB26B,EAA2Bt0B,GAC3D,MAAMwR,EAA0B,mBAAVzZ,EAAuBA,EAAMu8B,GAAWv8B,EACxD2R,EAAO4qB,EAAQ77B,OAAOiR,MAAQ4qB,EAAQ77B,OAAS+Y,GAAQ9H,KACvDjR,EAAQgB,EAAS66B,EAAQ77B,OAAS67B,EAAQ77B,MAAQ,GAGlD8G,EAAWA,IAAMmK,GAAQ/P,EAAGiyB,UAI5BxrB,GAAYJ,EAAM0S,MAAQ4hB,EAAQE,SAAUC,EAetD,SAA8Bz0B,EAAc2Q,GAE1C,MAAMu7C,EAAQ,IAAItwD,IACZqzG,EAAQ1vG,IACZ,IAAK,MAAMU,KAASV,EAAU,CAC5B,IAAKU,EAAO;AAEZ,GAAIA,IAAUD,EACZ,OAAO;AAIT,IAAI+E;AAQJ,GATAmnD,EAAMpjD,IAAI7I,GAENA,EAAMivG,SACRnqG,EAASkqG,EAAK,CAAChvG,EAAMkvG,YACZz2G,MAAMC,QAAQsH,EAAMV,UAC7BwF,EAASkqG,EAAKhvG,EAAMV,UACXU,EAAMC,WAAWF,QAC1B+E,EAASkqG,EAAK,CAAChvG,EAAMC,WAAWG,WAE9B0E,EACF,OAAOA;AAETmnD,EAAM7xD,OAAO4F,GAGf,OAAO;AAET,IAAKgvG,EAAK,CAACt+F,EAAKtQ,UACd,MAAM,IAAI6P,MAAM;AAIlB,MAAMnL,EAASrM,MAAMK,KAAKmzD,GAAO5pB;AACjC,IAAK,MAAMriC,KAAS8E,EAClB,GAAI9E,EAAMC,UACR,OAAOD,EAAMC;AAGjB,OAAOyQ,EArDDy+F,CAAoBpvG,EAAOs0B,EAAQE,SAAUC,IAAIr0B,SACjDJ,EAAM0S,KAAKtS,WAAak0B,EAAQE,SAAUC,EAAEr0B,SAE1ChB,EAAOsD,EAACA,EAACxC,EAAWi0B,EAAAA,WAAW3iB,EAAQ/Y,GAAQ8G;AACrDH,EAAKiwG,WAAav3G,OAAOsF,OACvBtF,OAAOiE,OAAO,MACbu4B,EAAQE,SAAqCC,EAAE46E,WAChD,CAAEjvG,SAAAA,IAGJ8U,SAAO9V,EAAMzF,IAjCF21G,CAJmC,iBAAdpvG,EAC9BqvG,EAAAA,iBAAiBrvG,GACjBA,EAE2CnI;AAE/C,MAAO,CACLyyD,QAASwkD,EACTvmE,QAASumE,EACT36E,UAAW16B,GACTub,SAAO,KAAMvb,KD7CI61G,CAA+C7B,IAAUr5E,IACvE,CACLyrB,UAAW,SACX58C,SAAUmxB,EAAQs6E,KAAKx2G,QAAQ,IAAK,MAAQ,MAC5CsR,KAA+B,kBAAlB4qB,EAAQ77B,WAAsBlB,EAAY+8B,EAAQ77B;;AEuB5D,SAASg3G,KAA6C,IAA9B94F,EAAuB7d,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACvD,MAAM42G,UAAEA,KAAc1zG,GAAS2a,EACzB7R,EAA0BpG,EAAUgxG,EAAW1zG,IAC/C0a,QACJA,EAAU,GAAEi5F,WACZA,EAAa,GAAE35E,WACfA,EAAa,IACXlxB,EAEEuK,EAAWS,GAAehL,EAAQuK,UAClC4kC,EAAUhB,GAAcnuC,EAAQmvC,QAASnvC,EAAQktC,KACjDj4B,EAAQsP,GAAYvkB,EAAQiV,OAC5BD,EAAQzD,GAAYvR,EAAQgV,OAC5BoM,EAASH,GAAajhB,EAAQohB,QAC9B2wD,EAAO4E,GAAW32E,EAAQ+xE,KAAM3wD,GAChCuvB,EAAOlB,GAAWzvC,EAAQ2wC,KAAMvvB,GAEhC4E,EAAWC,IACf,IAAK,MAAMxvB,KAAOy6B,EAChBjL,EAAI4/B,UAAUpvD,EAAKy6B,EAAWz6B;AAGhC,IAAK,MAAMA,KAAOo0G,EAChB5kF,EAAI7qB,UAAU3E,EAAKo0G,EAAWp0G;AAGhC,IAAK,MAAMA,KAAOmb,EAChBqU,EAAI7qB,UAAU3E,EAAK8W,GAAgB,IAC9BqE,EAAQnb,GACX4G,KAAM5G,EACNyY,UAAW0C,EAAQnb,GAAK4G;AAe5B,GAXA4X,EAAM+Q,QAAQC,GAEdA,EAAI/Z,QAAQrB,GAAgBN,GAC5B0b,EAAI/Z,QAAQqgC,GAAe4C,GAC3BlpB,EAAI/Z,QAAQmY,GAAapP,GACzBgR,EAAI/Z,QAAQoE,GAAY0E,GACxBiR,EAAI/Z,QAAQ8U,GAAcI,GAC1B6E,EAAI/Z,QAAQuqE,GAAmB1E,EAAK/xE,SACpCimB,EAAI/Z,QAAQwqE,GAAmB3E,EAAKriD,UACpCzJ,EAAI/Z,QAAQmjC,GAAYsB,GAEpB/+C,GAAcoO,EAAQktC,IACxB,GAAIjnB,EAAI6kF,MACN7kF,EAAI6kF,MAAMZ,KAAK,wBAAwB,KACrC/6D,EAAQhE;IAEL,CACL,MAAM4/D,MAAEA,GAAU9kF;AAClBA,EAAI8kF,MAAQ,WACV,MAAM1+F,EAAK0+F,KAAM/2G;AAGjB,OAFA8jB,EAAAA,UAAS,IAAMq3B,EAAQhE,WACvBllB,EAAI8kF,MAAQA,EACL1+F,GAKbgD,GAAOzD,SAE4B,kBAAxBo/F,qBAAqCA,sBAC9C/kF,EAAIglF,MAAM,CACRtuG,SAAU,CACRuuG,WACE,OAAOxuG,WAAS,CACd6N,SAAUY,GAAOggG,KAAKnvG,KAAM6O,IAC5BskC,QAAShkC,GAAOggG,KAAKnvG,KAAMuwC,IAC3Bt3B,MAAO9J,GAAOggG,KAAKnvG,KAAMqoB,IACzBrP,MAAO7J,GAAOggG,KAAKnvG,KAAMsU,IACzB8Q,OAAQjW,GAAOggG,KAAKnvG,KAAMglB,IAC1B+wD,KAAM5mE,GAAOggG,KAAKnvG,KAAM06E;AAQpC,MAAO,CACL1wD,QAAAA,EACAzb,SAAAA,EACA4kC,QAAAA,EACAl6B,MAAAA,EACAD,MAAAA,EACAoM,OAAAA,EACA2wD,KAAAA,EACAphC,KAAAA,GAQJ,SAASxlC,GAAuC1U,GAC9C,MAAM4V,EAAKrQ,KAAK2zB,EAEVr0B,EAAW+Q,EAAGmqC,QAAQl7C,UAAY+Q,EAAGnR,MAAMqvG,YAAYjvG;AAE7D,GAAIA,GAAa7E,KAAe6E,EAC9B,OAAOA,EAAU7E,GATrBk0G,GAAcS,QAD4B;ACzH7BT,MAAAA,GAAgB,WAAkC,IAAjC3qG,EAAuBhM,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG;AACtD,OAAOq3G,GAAe,CAAER,WAAAA,GAAY35E,WAAAA,MAAelxB,KAGxCorG,GAA6B;AAC1CT,GAAcS,QAAUA,iG3QwHjB,WAGL,IAFAn4G,EAA0Be,UAAAxB,OAAA,QAAAC,IAAAuB,UAAA,GAAAA,UAAA,GAAG,GAC7BqJ,EAAarJ,UAAAxB,OAAAwB,EAAAA,kBAAAvB;AAEb,MAAQQ,MAAOyZ,EAAMO,mBAAEA,GAAuBb,GAAoBnZ,EAAOoK;AAEzE,OADA4P,IACOP"}