claude-web/node_modules/primevue/virtualscroller/index.mjs.map

1 line
110 KiB
Plaintext

{"version":3,"file":"index.mjs","sources":["../../src/virtualscroller/BaseVirtualScroller.vue","../../src/virtualscroller/VirtualScroller.vue","../../src/virtualscroller/VirtualScroller.vue?vue&type=template&id=1c88b296&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport VirtualScrollerStyle from 'primevue/virtualscroller/style';\n\nexport default {\n name: 'BaseVirtualScroller',\n extends: BaseComponent,\n props: {\n id: {\n type: String,\n default: null\n },\n style: null,\n class: null,\n items: {\n type: Array,\n default: null\n },\n itemSize: {\n type: [Number, Array],\n default: 0\n },\n scrollHeight: null,\n scrollWidth: null,\n orientation: {\n type: String,\n default: 'vertical'\n },\n numToleratedItems: {\n type: Number,\n default: null\n },\n delay: {\n type: Number,\n default: 0\n },\n resizeDelay: {\n type: Number,\n default: 10\n },\n lazy: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n loaderDisabled: {\n type: Boolean,\n default: false\n },\n columns: {\n type: Array,\n default: null\n },\n loading: {\n type: Boolean,\n default: false\n },\n showSpacer: {\n type: Boolean,\n default: true\n },\n showLoader: {\n type: Boolean,\n default: false\n },\n tabindex: {\n type: Number,\n default: 0\n },\n inline: {\n type: Boolean,\n default: false\n },\n step: {\n type: Number,\n default: 0\n },\n appendOnly: {\n type: Boolean,\n default: false\n },\n autoSize: {\n type: Boolean,\n default: false\n }\n },\n style: VirtualScrollerStyle,\n provide() {\n return {\n $pcVirtualScroller: this,\n $parentInstance: this\n };\n },\n beforeMount() {\n VirtualScrollerStyle.loadCSS({ nonce: this.$primevueConfig?.csp?.nonce });\n }\n};\n</script>\n","<template>\n <template v-if=\"!disabled\">\n <div :ref=\"elementRef\" :class=\"containerClass\" :tabindex=\"tabindex\" :style=\"style\" @scroll=\"onScroll\" v-bind=\"ptmi('root')\">\n <slot\n name=\"content\"\n :styleClass=\"contentClass\"\n :items=\"loadedItems\"\n :getItemOptions=\"getOptions\"\n :loading=\"d_loading\"\n :getLoaderOptions=\"getLoaderOptions\"\n :itemSize=\"itemSize\"\n :rows=\"loadedRows\"\n :columns=\"loadedColumns\"\n :contentRef=\"contentRef\"\n :spacerStyle=\"spacerStyle\"\n :contentStyle=\"contentStyle\"\n :vertical=\"isVertical()\"\n :horizontal=\"isHorizontal()\"\n :both=\"isBoth()\"\n >\n <div :ref=\"contentRef\" :class=\"contentClass\" :style=\"contentStyle\" v-bind=\"ptm('content')\">\n <template v-for=\"(item, index) of loadedItems\" :key=\"index\">\n <slot name=\"item\" :item=\"item\" :options=\"getOptions(index)\"></slot>\n </template>\n </div>\n </slot>\n <div v-if=\"showSpacer\" class=\"p-virtualscroller-spacer\" :style=\"spacerStyle\" v-bind=\"ptm('spacer')\"></div>\n <div v-if=\"!loaderDisabled && showLoader && d_loading\" :class=\"loaderClass\" v-bind=\"ptm('loader')\">\n <template v-if=\"$slots && $slots.loader\">\n <template v-for=\"(_, index) of loaderArr\" :key=\"index\">\n <slot name=\"loader\" :options=\"getLoaderOptions(index, isBoth() && { numCols: d_numItemsInViewport.cols })\"></slot>\n </template>\n </template>\n <slot name=\"loadingicon\">\n <SpinnerIcon spin class=\"p-virtualscroller-loading-icon\" v-bind=\"ptm('loadingIcon')\" />\n </slot>\n </div>\n </div>\n </template>\n <template v-else>\n <slot></slot>\n <slot name=\"content\" :items=\"items\" :rows=\"items\" :columns=\"loadedColumns\"></slot>\n </template>\n</template>\n\n<script>\nimport { findSingle, getHeight, getWidth, isVisible } from '@primeuix/utils/dom';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport BaseVirtualScroller from './BaseVirtualScroller.vue';\n\nexport default {\n name: 'VirtualScroller',\n extends: BaseVirtualScroller,\n inheritAttrs: false,\n emits: ['update:numToleratedItems', 'scroll', 'scroll-index-change', 'lazy-load'],\n data() {\n const both = this.isBoth();\n\n return {\n first: both ? { rows: 0, cols: 0 } : 0,\n last: both ? { rows: 0, cols: 0 } : 0,\n page: both ? { rows: 0, cols: 0 } : 0,\n numItemsInViewport: both ? { rows: 0, cols: 0 } : 0,\n lastScrollPos: both ? { top: 0, left: 0 } : 0,\n d_numToleratedItems: this.numToleratedItems,\n d_loading: this.loading,\n loaderArr: [],\n spacerStyle: {},\n contentStyle: {}\n };\n },\n element: null,\n content: null,\n lastScrollPos: null,\n scrollTimeout: null,\n resizeTimeout: null,\n defaultWidth: 0,\n defaultHeight: 0,\n defaultContentWidth: 0,\n defaultContentHeight: 0,\n isRangeChanged: false,\n lazyLoadState: {},\n resizeListener: null,\n resizeObserver: null,\n initialized: false,\n watch: {\n numToleratedItems(newValue) {\n this.d_numToleratedItems = newValue;\n },\n loading(newValue, oldValue) {\n if (this.lazy && newValue !== oldValue && newValue !== this.d_loading) {\n this.d_loading = newValue;\n }\n },\n items: {\n handler(newValue, oldValue) {\n if (!oldValue || oldValue.length !== (newValue || []).length) {\n this.init();\n this.calculateAutoSize();\n }\n },\n deep: true\n },\n itemSize() {\n this.init();\n this.calculateAutoSize();\n },\n orientation() {\n this.lastScrollPos = this.isBoth() ? { top: 0, left: 0 } : 0;\n },\n scrollHeight() {\n this.init();\n this.calculateAutoSize();\n },\n scrollWidth() {\n this.init();\n this.calculateAutoSize();\n }\n },\n mounted() {\n this.viewInit();\n\n this.lastScrollPos = this.isBoth() ? { top: 0, left: 0 } : 0;\n this.lazyLoadState = this.lazyLoadState || {};\n },\n updated() {\n !this.initialized && this.viewInit();\n },\n unmounted() {\n this.unbindResizeListener();\n\n this.initialized = false;\n },\n methods: {\n viewInit() {\n if (isVisible(this.element)) {\n this.setContentEl(this.content);\n this.init();\n this.calculateAutoSize();\n\n this.defaultWidth = getWidth(this.element);\n this.defaultHeight = getHeight(this.element);\n this.defaultContentWidth = getWidth(this.content);\n this.defaultContentHeight = getHeight(this.content);\n this.initialized = true;\n }\n\n if (this.element) {\n this.bindResizeListener();\n }\n },\n init() {\n if (!this.disabled) {\n this.setSize();\n this.calculateOptions();\n this.setSpacerSize();\n }\n },\n isVertical() {\n return this.orientation === 'vertical';\n },\n isHorizontal() {\n return this.orientation === 'horizontal';\n },\n isBoth() {\n return this.orientation === 'both';\n },\n scrollTo(options) {\n //this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;\n this.element && this.element.scrollTo(options);\n },\n scrollToIndex(index, behavior = 'auto') {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const valid = both ? index.every((i) => i > -1) : index > -1;\n\n if (valid) {\n const first = this.first;\n const { scrollTop = 0, scrollLeft = 0 } = this.element;\n const { numToleratedItems } = this.calculateNumItems();\n const contentPos = this.getContentPosition();\n const itemSize = this.itemSize;\n const calculateFirst = (_index = 0, _numT) => (_index <= _numT ? 0 : _index);\n const calculateCoord = (_first, _size, _cpos) => _first * _size + _cpos;\n const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });\n let newFirst = both ? { rows: 0, cols: 0 } : 0;\n let isRangeChanged = false,\n isScrollChanged = false;\n\n if (both) {\n newFirst = { rows: calculateFirst(index[0], numToleratedItems[0]), cols: calculateFirst(index[1], numToleratedItems[1]) };\n scrollTo(calculateCoord(newFirst.cols, itemSize[1], contentPos.left), calculateCoord(newFirst.rows, itemSize[0], contentPos.top));\n isScrollChanged = this.lastScrollPos.top !== scrollTop || this.lastScrollPos.left !== scrollLeft;\n isRangeChanged = newFirst.rows !== first.rows || newFirst.cols !== first.cols;\n } else {\n newFirst = calculateFirst(index, numToleratedItems);\n horizontal ? scrollTo(calculateCoord(newFirst, itemSize, contentPos.left), scrollTop) : scrollTo(scrollLeft, calculateCoord(newFirst, itemSize, contentPos.top));\n isScrollChanged = this.lastScrollPos !== (horizontal ? scrollLeft : scrollTop);\n isRangeChanged = newFirst !== first;\n }\n\n this.isRangeChanged = isRangeChanged;\n isScrollChanged && (this.first = newFirst);\n }\n },\n scrollInView(index, to, behavior = 'auto') {\n if (to) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const valid = both ? index.every((i) => i > -1) : index > -1;\n\n if (valid) {\n const { first, viewport } = this.getRenderedRange();\n const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });\n const isToStart = to === 'to-start';\n const isToEnd = to === 'to-end';\n\n if (isToStart) {\n if (both) {\n if (viewport.first.rows - first.rows > index[0]) {\n scrollTo(viewport.first.cols * this.itemSize[1], (viewport.first.rows - 1) * this.itemSize[0]);\n } else if (viewport.first.cols - first.cols > index[1]) {\n scrollTo((viewport.first.cols - 1) * this.itemSize[1], viewport.first.rows * this.itemSize[0]);\n }\n } else {\n if (viewport.first - first > index) {\n const pos = (viewport.first - 1) * this.itemSize;\n\n horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);\n }\n }\n } else if (isToEnd) {\n if (both) {\n if (viewport.last.rows - first.rows <= index[0] + 1) {\n scrollTo(viewport.first.cols * this.itemSize[1], (viewport.first.rows + 1) * this.itemSize[0]);\n } else if (viewport.last.cols - first.cols <= index[1] + 1) {\n scrollTo((viewport.first.cols + 1) * this.itemSize[1], viewport.first.rows * this.itemSize[0]);\n }\n } else {\n if (viewport.last - first <= index + 1) {\n const pos = (viewport.first + 1) * this.itemSize;\n\n horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);\n }\n }\n }\n }\n } else {\n this.scrollToIndex(index, behavior);\n }\n },\n getRenderedRange() {\n const calculateFirstInViewport = (_pos, _size) => Math.floor(_pos / (_size || _pos));\n\n let firstInViewport = this.first;\n let lastInViewport = 0;\n\n if (this.element) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const { scrollTop, scrollLeft } = this.element;\n\n if (both) {\n firstInViewport = { rows: calculateFirstInViewport(scrollTop, this.itemSize[0]), cols: calculateFirstInViewport(scrollLeft, this.itemSize[1]) };\n lastInViewport = { rows: firstInViewport.rows + this.numItemsInViewport.rows, cols: firstInViewport.cols + this.numItemsInViewport.cols };\n } else {\n const scrollPos = horizontal ? scrollLeft : scrollTop;\n\n firstInViewport = calculateFirstInViewport(scrollPos, this.itemSize);\n lastInViewport = firstInViewport + this.numItemsInViewport;\n }\n }\n\n return {\n first: this.first,\n last: this.last,\n viewport: {\n first: firstInViewport,\n last: lastInViewport\n }\n };\n },\n calculateNumItems() {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const itemSize = this.itemSize;\n const contentPos = this.getContentPosition();\n const contentWidth = this.element ? this.element.offsetWidth - contentPos.left : 0;\n const contentHeight = this.element ? this.element.offsetHeight - contentPos.top : 0;\n const calculateNumItemsInViewport = (_contentSize, _itemSize) => Math.ceil(_contentSize / (_itemSize || _contentSize));\n const calculateNumToleratedItems = (_numItems) => Math.ceil(_numItems / 2);\n const numItemsInViewport = both\n ? { rows: calculateNumItemsInViewport(contentHeight, itemSize[0]), cols: calculateNumItemsInViewport(contentWidth, itemSize[1]) }\n : calculateNumItemsInViewport(horizontal ? contentWidth : contentHeight, itemSize);\n\n const numToleratedItems = this.d_numToleratedItems || (both ? [calculateNumToleratedItems(numItemsInViewport.rows), calculateNumToleratedItems(numItemsInViewport.cols)] : calculateNumToleratedItems(numItemsInViewport));\n\n return { numItemsInViewport, numToleratedItems };\n },\n calculateOptions() {\n const both = this.isBoth();\n const first = this.first;\n const { numItemsInViewport, numToleratedItems } = this.calculateNumItems();\n const calculateLast = (_first, _num, _numT, _isCols = false) => this.getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);\n const last = both\n ? { rows: calculateLast(first.rows, numItemsInViewport.rows, numToleratedItems[0]), cols: calculateLast(first.cols, numItemsInViewport.cols, numToleratedItems[1], true) }\n : calculateLast(first, numItemsInViewport, numToleratedItems);\n\n this.last = last;\n this.numItemsInViewport = numItemsInViewport;\n this.d_numToleratedItems = numToleratedItems;\n this.$emit('update:numToleratedItems', this.d_numToleratedItems);\n\n if (this.showLoader) {\n this.loaderArr = both ? Array.from({ length: numItemsInViewport.rows }).map(() => Array.from({ length: numItemsInViewport.cols })) : Array.from({ length: numItemsInViewport });\n }\n\n if (this.lazy) {\n Promise.resolve().then(() => {\n this.lazyLoadState = {\n first: this.step ? (both ? { rows: 0, cols: first.cols } : 0) : first,\n last: Math.min(this.step ? this.step : last, this.items?.length || 0)\n };\n\n this.$emit('lazy-load', this.lazyLoadState);\n });\n }\n },\n calculateAutoSize() {\n if (this.autoSize && !this.d_loading) {\n Promise.resolve().then(() => {\n if (this.content) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const vertical = this.isVertical();\n\n this.content.style.minHeight = this.content.style.minWidth = 'auto';\n this.content.style.position = 'relative';\n this.element.style.contain = 'none';\n\n /*const [contentWidth, contentHeight] = [getWidth(this.content), getHeight(this.content)];\n\n contentWidth !== this.defaultContentWidth && (this.element.style.width = '');\n contentHeight !== this.defaultContentHeight && (this.element.style.height = '');*/\n\n const [width, height] = [getWidth(this.element), getHeight(this.element)];\n\n (both || horizontal) && (this.element.style.width = width < this.defaultWidth ? width + 'px' : this.scrollWidth || this.defaultWidth + 'px');\n (both || vertical) && (this.element.style.height = height < this.defaultHeight ? height + 'px' : this.scrollHeight || this.defaultHeight + 'px');\n\n this.content.style.minHeight = this.content.style.minWidth = '';\n this.content.style.position = '';\n this.element.style.contain = '';\n }\n });\n }\n },\n getLast(last = 0, isCols) {\n return this.items ? Math.min(isCols ? (this.columns || this.items[0])?.length || 0 : this.items?.length || 0, last) : 0;\n },\n getContentPosition() {\n if (this.content) {\n const style = getComputedStyle(this.content);\n const left = parseFloat(style.paddingLeft) + Math.max(parseFloat(style.left) || 0, 0);\n const right = parseFloat(style.paddingRight) + Math.max(parseFloat(style.right) || 0, 0);\n const top = parseFloat(style.paddingTop) + Math.max(parseFloat(style.top) || 0, 0);\n const bottom = parseFloat(style.paddingBottom) + Math.max(parseFloat(style.bottom) || 0, 0);\n\n return { left, right, top, bottom, x: left + right, y: top + bottom };\n }\n\n return { left: 0, right: 0, top: 0, bottom: 0, x: 0, y: 0 };\n },\n setSize() {\n if (this.element) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const parentElement = this.element.parentElement;\n const width = this.scrollWidth || `${this.element.offsetWidth || parentElement.offsetWidth}px`;\n const height = this.scrollHeight || `${this.element.offsetHeight || parentElement.offsetHeight}px`;\n const setProp = (_name, _value) => (this.element.style[_name] = _value);\n\n if (both || horizontal) {\n setProp('height', height);\n setProp('width', width);\n } else {\n setProp('height', height);\n }\n }\n },\n setSpacerSize() {\n const items = this.items;\n\n if (items) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const contentPos = this.getContentPosition();\n const setProp = (_name, _value, _size, _cpos = 0) => (this.spacerStyle = { ...this.spacerStyle, ...{ [`${_name}`]: (_value || []).length * _size + _cpos + 'px' } });\n\n if (both) {\n setProp('height', items, this.itemSize[0], contentPos.y);\n setProp('width', this.columns || items[1], this.itemSize[1], contentPos.x);\n } else {\n horizontal ? setProp('width', this.columns || items, this.itemSize, contentPos.x) : setProp('height', items, this.itemSize, contentPos.y);\n }\n }\n },\n setContentPosition(pos) {\n if (this.content && !this.appendOnly) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const first = pos ? pos.first : this.first;\n const calculateTranslateVal = (_first, _size) => _first * _size;\n const setTransform = (_x = 0, _y = 0) => (this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } });\n\n if (both) {\n setTransform(calculateTranslateVal(first.cols, this.itemSize[1]), calculateTranslateVal(first.rows, this.itemSize[0]));\n } else {\n const translateVal = calculateTranslateVal(first, this.itemSize);\n\n horizontal ? setTransform(translateVal, 0) : setTransform(0, translateVal);\n }\n }\n },\n onScrollPositionChange(event) {\n const target = event.target;\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const contentPos = this.getContentPosition();\n const calculateScrollPos = (_pos, _cpos) => (_pos ? (_pos > _cpos ? _pos - _cpos : _pos) : 0);\n const calculateCurrentIndex = (_pos, _size) => Math.floor(_pos / (_size || _pos));\n\n const calculateTriggerIndex = (_currentIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {\n return _currentIndex <= _numT ? _numT : _isScrollDownOrRight ? _last - _num - _numT : _first + _numT - 1;\n };\n\n const calculateFirst = (_currentIndex, _triggerIndex, _first, _last, _num, _numT, _isScrollDownOrRight, _isCols) => {\n if (_currentIndex <= _numT) return 0;\n const firstValue = Math.max(0, _isScrollDownOrRight ? (_currentIndex < _triggerIndex ? _first : _currentIndex - _numT) : _currentIndex > _triggerIndex ? _first : _currentIndex - 2 * _numT);\n const maxFirst = this.getLast(firstValue, _isCols);\n if (firstValue > maxFirst) return maxFirst - _num;\n else return firstValue;\n };\n\n const calculateLast = (_currentIndex, _first, _last, _num, _numT, _isCols) => {\n let lastValue = _first + _num + 2 * _numT;\n\n if (_currentIndex >= _numT) {\n lastValue += _numT + 1;\n }\n\n return this.getLast(lastValue, _isCols);\n };\n\n const scrollTop = calculateScrollPos(target.scrollTop, contentPos.top);\n const scrollLeft = calculateScrollPos(target.scrollLeft, contentPos.left);\n\n let newFirst = both ? { rows: 0, cols: 0 } : 0;\n let newLast = this.last;\n let isRangeChanged = false;\n let newScrollPos = this.lastScrollPos;\n\n if (both) {\n const isScrollDown = this.lastScrollPos.top <= scrollTop;\n const isScrollRight = this.lastScrollPos.left <= scrollLeft;\n\n if (!this.appendOnly || (this.appendOnly && (isScrollDown || isScrollRight))) {\n const currentIndex = { rows: calculateCurrentIndex(scrollTop, this.itemSize[0]), cols: calculateCurrentIndex(scrollLeft, this.itemSize[1]) };\n const triggerIndex = {\n rows: calculateTriggerIndex(currentIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),\n cols: calculateTriggerIndex(currentIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)\n };\n\n newFirst = {\n rows: calculateFirst(currentIndex.rows, triggerIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),\n cols: calculateFirst(currentIndex.cols, triggerIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight, true)\n };\n newLast = {\n rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),\n cols: calculateLast(currentIndex.cols, newFirst.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], true)\n };\n\n isRangeChanged = newFirst.rows !== this.first.rows || newLast.rows !== this.last.rows || newFirst.cols !== this.first.cols || newLast.cols !== this.last.cols || this.isRangeChanged;\n newScrollPos = { top: scrollTop, left: scrollLeft };\n }\n } else {\n const scrollPos = horizontal ? scrollLeft : scrollTop;\n const isScrollDownOrRight = this.lastScrollPos <= scrollPos;\n\n if (!this.appendOnly || (this.appendOnly && isScrollDownOrRight)) {\n const currentIndex = calculateCurrentIndex(scrollPos, this.itemSize);\n const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);\n\n newFirst = calculateFirst(currentIndex, triggerIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);\n newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport, this.d_numToleratedItems);\n isRangeChanged = newFirst !== this.first || newLast !== this.last || this.isRangeChanged;\n newScrollPos = scrollPos;\n }\n }\n\n return {\n first: newFirst,\n last: newLast,\n isRangeChanged,\n scrollPos: newScrollPos\n };\n },\n onScrollChange(event) {\n const { first, last, isRangeChanged, scrollPos } = this.onScrollPositionChange(event);\n\n if (isRangeChanged) {\n const newState = { first, last };\n\n this.setContentPosition(newState);\n\n this.first = first;\n this.last = last;\n this.lastScrollPos = scrollPos;\n\n this.$emit('scroll-index-change', newState);\n\n if (this.lazy && this.isPageChanged(first)) {\n const lazyLoadState = {\n first: this.step ? Math.min(this.getPageByFirst(first) * this.step, (this.items?.length || 0) - this.step) : first,\n last: Math.min(this.step ? (this.getPageByFirst(first) + 1) * this.step : last, this.items?.length || 0)\n };\n const isLazyStateChanged = this.lazyLoadState.first !== lazyLoadState.first || this.lazyLoadState.last !== lazyLoadState.last;\n\n isLazyStateChanged && this.$emit('lazy-load', lazyLoadState);\n this.lazyLoadState = lazyLoadState;\n }\n }\n },\n onScroll(event) {\n this.$emit('scroll', event);\n\n if (this.delay) {\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n }\n\n if (this.isPageChanged()) {\n if (!this.d_loading && this.showLoader) {\n const { isRangeChanged } = this.onScrollPositionChange(event);\n const changed = isRangeChanged || (this.step ? this.isPageChanged() : false);\n\n changed && (this.d_loading = true);\n }\n\n this.scrollTimeout = setTimeout(() => {\n this.onScrollChange(event);\n\n if (this.d_loading && this.showLoader && (!this.lazy || this.loading === undefined)) {\n this.d_loading = false;\n this.page = this.getPageByFirst();\n }\n }, this.delay);\n }\n } else {\n this.onScrollChange(event);\n }\n },\n onResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n\n this.resizeTimeout = setTimeout(() => {\n if (isVisible(this.element)) {\n const both = this.isBoth();\n const vertical = this.isVertical();\n const horizontal = this.isHorizontal();\n const [width, height] = [getWidth(this.element), getHeight(this.element)];\n const [isDiffWidth, isDiffHeight] = [width !== this.defaultWidth, height !== this.defaultHeight];\n const reinit = both ? isDiffWidth || isDiffHeight : horizontal ? isDiffWidth : vertical ? isDiffHeight : false;\n\n if (reinit) {\n this.d_numToleratedItems = this.numToleratedItems;\n this.defaultWidth = width;\n this.defaultHeight = height;\n this.defaultContentWidth = getWidth(this.content);\n this.defaultContentHeight = getHeight(this.content);\n\n this.init();\n }\n }\n }, this.resizeDelay);\n },\n bindResizeListener() {\n if (!this.resizeListener) {\n this.resizeListener = this.onResize.bind(this);\n\n window.addEventListener('resize', this.resizeListener);\n window.addEventListener('orientationchange', this.resizeListener);\n\n this.resizeObserver = new ResizeObserver(() => {\n this.onResize();\n });\n this.resizeObserver.observe(this.element);\n }\n },\n unbindResizeListener() {\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n window.removeEventListener('orientationchange', this.resizeListener);\n this.resizeListener = null;\n }\n\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n },\n getOptions(renderedIndex) {\n const count = (this.items || []).length;\n const index = this.isBoth() ? this.first.rows + renderedIndex : this.first + renderedIndex;\n\n return {\n index,\n count,\n first: index === 0,\n last: index === count - 1,\n even: index % 2 === 0,\n odd: index % 2 !== 0\n };\n },\n getLoaderOptions(index, extOptions) {\n let count = this.loaderArr.length;\n\n return {\n index,\n count,\n first: index === 0,\n last: index === count - 1,\n even: index % 2 === 0,\n odd: index % 2 !== 0,\n ...extOptions\n };\n },\n getPageByFirst(first) {\n return Math.floor(((first ?? this.first) + this.d_numToleratedItems * 4) / (this.step || 1));\n },\n isPageChanged(first) {\n return this.step && !this.lazy ? this.page !== this.getPageByFirst(first ?? this.first) : true;\n },\n setContentEl(el) {\n this.content = el || this.content || findSingle(this.element, '[data-pc-section=\"content\"]');\n },\n elementRef(el) {\n this.element = el;\n },\n contentRef(el) {\n this.content = el;\n }\n },\n computed: {\n containerClass() {\n return [\n 'p-virtualscroller',\n this.class,\n {\n 'p-virtualscroller-inline': this.inline,\n 'p-virtualscroller-both p-both-scroll': this.isBoth(),\n 'p-virtualscroller-horizontal p-horizontal-scroll': this.isHorizontal()\n }\n ];\n },\n contentClass() {\n return [\n 'p-virtualscroller-content',\n {\n 'p-virtualscroller-loading': this.d_loading\n }\n ];\n },\n loaderClass() {\n return [\n 'p-virtualscroller-loader',\n {\n 'p-virtualscroller-loader-mask': !this.$slots.loader\n }\n ];\n },\n loadedItems() {\n if (this.items && !this.d_loading) {\n if (this.isBoth()) return this.items.slice(this.appendOnly ? 0 : this.first.rows, this.last.rows).map((item) => (this.columns ? item : item.slice(this.appendOnly ? 0 : this.first.cols, this.last.cols)));\n else if (this.isHorizontal() && this.columns) return this.items;\n else return this.items.slice(this.appendOnly ? 0 : this.first, this.last);\n }\n\n return [];\n },\n loadedRows() {\n return this.d_loading ? (this.loaderDisabled ? this.loaderArr : []) : this.loadedItems;\n },\n loadedColumns() {\n if (this.columns) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n\n if (both || horizontal) {\n return this.d_loading && this.loaderDisabled ? (both ? this.loaderArr[0] : this.loaderArr) : this.columns.slice(both ? this.first.cols : this.first, both ? this.last.cols : this.last);\n }\n }\n\n return this.columns;\n }\n },\n components: {\n SpinnerIcon: SpinnerIcon\n }\n};\n</script>\n","<template>\n <template v-if=\"!disabled\">\n <div :ref=\"elementRef\" :class=\"containerClass\" :tabindex=\"tabindex\" :style=\"style\" @scroll=\"onScroll\" v-bind=\"ptmi('root')\">\n <slot\n name=\"content\"\n :styleClass=\"contentClass\"\n :items=\"loadedItems\"\n :getItemOptions=\"getOptions\"\n :loading=\"d_loading\"\n :getLoaderOptions=\"getLoaderOptions\"\n :itemSize=\"itemSize\"\n :rows=\"loadedRows\"\n :columns=\"loadedColumns\"\n :contentRef=\"contentRef\"\n :spacerStyle=\"spacerStyle\"\n :contentStyle=\"contentStyle\"\n :vertical=\"isVertical()\"\n :horizontal=\"isHorizontal()\"\n :both=\"isBoth()\"\n >\n <div :ref=\"contentRef\" :class=\"contentClass\" :style=\"contentStyle\" v-bind=\"ptm('content')\">\n <template v-for=\"(item, index) of loadedItems\" :key=\"index\">\n <slot name=\"item\" :item=\"item\" :options=\"getOptions(index)\"></slot>\n </template>\n </div>\n </slot>\n <div v-if=\"showSpacer\" class=\"p-virtualscroller-spacer\" :style=\"spacerStyle\" v-bind=\"ptm('spacer')\"></div>\n <div v-if=\"!loaderDisabled && showLoader && d_loading\" :class=\"loaderClass\" v-bind=\"ptm('loader')\">\n <template v-if=\"$slots && $slots.loader\">\n <template v-for=\"(_, index) of loaderArr\" :key=\"index\">\n <slot name=\"loader\" :options=\"getLoaderOptions(index, isBoth() && { numCols: d_numItemsInViewport.cols })\"></slot>\n </template>\n </template>\n <slot name=\"loadingicon\">\n <SpinnerIcon spin class=\"p-virtualscroller-loading-icon\" v-bind=\"ptm('loadingIcon')\" />\n </slot>\n </div>\n </div>\n </template>\n <template v-else>\n <slot></slot>\n <slot name=\"content\" :items=\"items\" :rows=\"items\" :columns=\"loadedColumns\"></slot>\n </template>\n</template>\n\n<script>\nimport { findSingle, getHeight, getWidth, isVisible } from '@primeuix/utils/dom';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport BaseVirtualScroller from './BaseVirtualScroller.vue';\n\nexport default {\n name: 'VirtualScroller',\n extends: BaseVirtualScroller,\n inheritAttrs: false,\n emits: ['update:numToleratedItems', 'scroll', 'scroll-index-change', 'lazy-load'],\n data() {\n const both = this.isBoth();\n\n return {\n first: both ? { rows: 0, cols: 0 } : 0,\n last: both ? { rows: 0, cols: 0 } : 0,\n page: both ? { rows: 0, cols: 0 } : 0,\n numItemsInViewport: both ? { rows: 0, cols: 0 } : 0,\n lastScrollPos: both ? { top: 0, left: 0 } : 0,\n d_numToleratedItems: this.numToleratedItems,\n d_loading: this.loading,\n loaderArr: [],\n spacerStyle: {},\n contentStyle: {}\n };\n },\n element: null,\n content: null,\n lastScrollPos: null,\n scrollTimeout: null,\n resizeTimeout: null,\n defaultWidth: 0,\n defaultHeight: 0,\n defaultContentWidth: 0,\n defaultContentHeight: 0,\n isRangeChanged: false,\n lazyLoadState: {},\n resizeListener: null,\n resizeObserver: null,\n initialized: false,\n watch: {\n numToleratedItems(newValue) {\n this.d_numToleratedItems = newValue;\n },\n loading(newValue, oldValue) {\n if (this.lazy && newValue !== oldValue && newValue !== this.d_loading) {\n this.d_loading = newValue;\n }\n },\n items: {\n handler(newValue, oldValue) {\n if (!oldValue || oldValue.length !== (newValue || []).length) {\n this.init();\n this.calculateAutoSize();\n }\n },\n deep: true\n },\n itemSize() {\n this.init();\n this.calculateAutoSize();\n },\n orientation() {\n this.lastScrollPos = this.isBoth() ? { top: 0, left: 0 } : 0;\n },\n scrollHeight() {\n this.init();\n this.calculateAutoSize();\n },\n scrollWidth() {\n this.init();\n this.calculateAutoSize();\n }\n },\n mounted() {\n this.viewInit();\n\n this.lastScrollPos = this.isBoth() ? { top: 0, left: 0 } : 0;\n this.lazyLoadState = this.lazyLoadState || {};\n },\n updated() {\n !this.initialized && this.viewInit();\n },\n unmounted() {\n this.unbindResizeListener();\n\n this.initialized = false;\n },\n methods: {\n viewInit() {\n if (isVisible(this.element)) {\n this.setContentEl(this.content);\n this.init();\n this.calculateAutoSize();\n\n this.defaultWidth = getWidth(this.element);\n this.defaultHeight = getHeight(this.element);\n this.defaultContentWidth = getWidth(this.content);\n this.defaultContentHeight = getHeight(this.content);\n this.initialized = true;\n }\n\n if (this.element) {\n this.bindResizeListener();\n }\n },\n init() {\n if (!this.disabled) {\n this.setSize();\n this.calculateOptions();\n this.setSpacerSize();\n }\n },\n isVertical() {\n return this.orientation === 'vertical';\n },\n isHorizontal() {\n return this.orientation === 'horizontal';\n },\n isBoth() {\n return this.orientation === 'both';\n },\n scrollTo(options) {\n //this.lastScrollPos = this.both ? { top: 0, left: 0 } : 0;\n this.element && this.element.scrollTo(options);\n },\n scrollToIndex(index, behavior = 'auto') {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const valid = both ? index.every((i) => i > -1) : index > -1;\n\n if (valid) {\n const first = this.first;\n const { scrollTop = 0, scrollLeft = 0 } = this.element;\n const { numToleratedItems } = this.calculateNumItems();\n const contentPos = this.getContentPosition();\n const itemSize = this.itemSize;\n const calculateFirst = (_index = 0, _numT) => (_index <= _numT ? 0 : _index);\n const calculateCoord = (_first, _size, _cpos) => _first * _size + _cpos;\n const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });\n let newFirst = both ? { rows: 0, cols: 0 } : 0;\n let isRangeChanged = false,\n isScrollChanged = false;\n\n if (both) {\n newFirst = { rows: calculateFirst(index[0], numToleratedItems[0]), cols: calculateFirst(index[1], numToleratedItems[1]) };\n scrollTo(calculateCoord(newFirst.cols, itemSize[1], contentPos.left), calculateCoord(newFirst.rows, itemSize[0], contentPos.top));\n isScrollChanged = this.lastScrollPos.top !== scrollTop || this.lastScrollPos.left !== scrollLeft;\n isRangeChanged = newFirst.rows !== first.rows || newFirst.cols !== first.cols;\n } else {\n newFirst = calculateFirst(index, numToleratedItems);\n horizontal ? scrollTo(calculateCoord(newFirst, itemSize, contentPos.left), scrollTop) : scrollTo(scrollLeft, calculateCoord(newFirst, itemSize, contentPos.top));\n isScrollChanged = this.lastScrollPos !== (horizontal ? scrollLeft : scrollTop);\n isRangeChanged = newFirst !== first;\n }\n\n this.isRangeChanged = isRangeChanged;\n isScrollChanged && (this.first = newFirst);\n }\n },\n scrollInView(index, to, behavior = 'auto') {\n if (to) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const valid = both ? index.every((i) => i > -1) : index > -1;\n\n if (valid) {\n const { first, viewport } = this.getRenderedRange();\n const scrollTo = (left = 0, top = 0) => this.scrollTo({ left, top, behavior });\n const isToStart = to === 'to-start';\n const isToEnd = to === 'to-end';\n\n if (isToStart) {\n if (both) {\n if (viewport.first.rows - first.rows > index[0]) {\n scrollTo(viewport.first.cols * this.itemSize[1], (viewport.first.rows - 1) * this.itemSize[0]);\n } else if (viewport.first.cols - first.cols > index[1]) {\n scrollTo((viewport.first.cols - 1) * this.itemSize[1], viewport.first.rows * this.itemSize[0]);\n }\n } else {\n if (viewport.first - first > index) {\n const pos = (viewport.first - 1) * this.itemSize;\n\n horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);\n }\n }\n } else if (isToEnd) {\n if (both) {\n if (viewport.last.rows - first.rows <= index[0] + 1) {\n scrollTo(viewport.first.cols * this.itemSize[1], (viewport.first.rows + 1) * this.itemSize[0]);\n } else if (viewport.last.cols - first.cols <= index[1] + 1) {\n scrollTo((viewport.first.cols + 1) * this.itemSize[1], viewport.first.rows * this.itemSize[0]);\n }\n } else {\n if (viewport.last - first <= index + 1) {\n const pos = (viewport.first + 1) * this.itemSize;\n\n horizontal ? scrollTo(pos, 0) : scrollTo(0, pos);\n }\n }\n }\n }\n } else {\n this.scrollToIndex(index, behavior);\n }\n },\n getRenderedRange() {\n const calculateFirstInViewport = (_pos, _size) => Math.floor(_pos / (_size || _pos));\n\n let firstInViewport = this.first;\n let lastInViewport = 0;\n\n if (this.element) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const { scrollTop, scrollLeft } = this.element;\n\n if (both) {\n firstInViewport = { rows: calculateFirstInViewport(scrollTop, this.itemSize[0]), cols: calculateFirstInViewport(scrollLeft, this.itemSize[1]) };\n lastInViewport = { rows: firstInViewport.rows + this.numItemsInViewport.rows, cols: firstInViewport.cols + this.numItemsInViewport.cols };\n } else {\n const scrollPos = horizontal ? scrollLeft : scrollTop;\n\n firstInViewport = calculateFirstInViewport(scrollPos, this.itemSize);\n lastInViewport = firstInViewport + this.numItemsInViewport;\n }\n }\n\n return {\n first: this.first,\n last: this.last,\n viewport: {\n first: firstInViewport,\n last: lastInViewport\n }\n };\n },\n calculateNumItems() {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const itemSize = this.itemSize;\n const contentPos = this.getContentPosition();\n const contentWidth = this.element ? this.element.offsetWidth - contentPos.left : 0;\n const contentHeight = this.element ? this.element.offsetHeight - contentPos.top : 0;\n const calculateNumItemsInViewport = (_contentSize, _itemSize) => Math.ceil(_contentSize / (_itemSize || _contentSize));\n const calculateNumToleratedItems = (_numItems) => Math.ceil(_numItems / 2);\n const numItemsInViewport = both\n ? { rows: calculateNumItemsInViewport(contentHeight, itemSize[0]), cols: calculateNumItemsInViewport(contentWidth, itemSize[1]) }\n : calculateNumItemsInViewport(horizontal ? contentWidth : contentHeight, itemSize);\n\n const numToleratedItems = this.d_numToleratedItems || (both ? [calculateNumToleratedItems(numItemsInViewport.rows), calculateNumToleratedItems(numItemsInViewport.cols)] : calculateNumToleratedItems(numItemsInViewport));\n\n return { numItemsInViewport, numToleratedItems };\n },\n calculateOptions() {\n const both = this.isBoth();\n const first = this.first;\n const { numItemsInViewport, numToleratedItems } = this.calculateNumItems();\n const calculateLast = (_first, _num, _numT, _isCols = false) => this.getLast(_first + _num + (_first < _numT ? 2 : 3) * _numT, _isCols);\n const last = both\n ? { rows: calculateLast(first.rows, numItemsInViewport.rows, numToleratedItems[0]), cols: calculateLast(first.cols, numItemsInViewport.cols, numToleratedItems[1], true) }\n : calculateLast(first, numItemsInViewport, numToleratedItems);\n\n this.last = last;\n this.numItemsInViewport = numItemsInViewport;\n this.d_numToleratedItems = numToleratedItems;\n this.$emit('update:numToleratedItems', this.d_numToleratedItems);\n\n if (this.showLoader) {\n this.loaderArr = both ? Array.from({ length: numItemsInViewport.rows }).map(() => Array.from({ length: numItemsInViewport.cols })) : Array.from({ length: numItemsInViewport });\n }\n\n if (this.lazy) {\n Promise.resolve().then(() => {\n this.lazyLoadState = {\n first: this.step ? (both ? { rows: 0, cols: first.cols } : 0) : first,\n last: Math.min(this.step ? this.step : last, this.items?.length || 0)\n };\n\n this.$emit('lazy-load', this.lazyLoadState);\n });\n }\n },\n calculateAutoSize() {\n if (this.autoSize && !this.d_loading) {\n Promise.resolve().then(() => {\n if (this.content) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const vertical = this.isVertical();\n\n this.content.style.minHeight = this.content.style.minWidth = 'auto';\n this.content.style.position = 'relative';\n this.element.style.contain = 'none';\n\n /*const [contentWidth, contentHeight] = [getWidth(this.content), getHeight(this.content)];\n\n contentWidth !== this.defaultContentWidth && (this.element.style.width = '');\n contentHeight !== this.defaultContentHeight && (this.element.style.height = '');*/\n\n const [width, height] = [getWidth(this.element), getHeight(this.element)];\n\n (both || horizontal) && (this.element.style.width = width < this.defaultWidth ? width + 'px' : this.scrollWidth || this.defaultWidth + 'px');\n (both || vertical) && (this.element.style.height = height < this.defaultHeight ? height + 'px' : this.scrollHeight || this.defaultHeight + 'px');\n\n this.content.style.minHeight = this.content.style.minWidth = '';\n this.content.style.position = '';\n this.element.style.contain = '';\n }\n });\n }\n },\n getLast(last = 0, isCols) {\n return this.items ? Math.min(isCols ? (this.columns || this.items[0])?.length || 0 : this.items?.length || 0, last) : 0;\n },\n getContentPosition() {\n if (this.content) {\n const style = getComputedStyle(this.content);\n const left = parseFloat(style.paddingLeft) + Math.max(parseFloat(style.left) || 0, 0);\n const right = parseFloat(style.paddingRight) + Math.max(parseFloat(style.right) || 0, 0);\n const top = parseFloat(style.paddingTop) + Math.max(parseFloat(style.top) || 0, 0);\n const bottom = parseFloat(style.paddingBottom) + Math.max(parseFloat(style.bottom) || 0, 0);\n\n return { left, right, top, bottom, x: left + right, y: top + bottom };\n }\n\n return { left: 0, right: 0, top: 0, bottom: 0, x: 0, y: 0 };\n },\n setSize() {\n if (this.element) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const parentElement = this.element.parentElement;\n const width = this.scrollWidth || `${this.element.offsetWidth || parentElement.offsetWidth}px`;\n const height = this.scrollHeight || `${this.element.offsetHeight || parentElement.offsetHeight}px`;\n const setProp = (_name, _value) => (this.element.style[_name] = _value);\n\n if (both || horizontal) {\n setProp('height', height);\n setProp('width', width);\n } else {\n setProp('height', height);\n }\n }\n },\n setSpacerSize() {\n const items = this.items;\n\n if (items) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const contentPos = this.getContentPosition();\n const setProp = (_name, _value, _size, _cpos = 0) => (this.spacerStyle = { ...this.spacerStyle, ...{ [`${_name}`]: (_value || []).length * _size + _cpos + 'px' } });\n\n if (both) {\n setProp('height', items, this.itemSize[0], contentPos.y);\n setProp('width', this.columns || items[1], this.itemSize[1], contentPos.x);\n } else {\n horizontal ? setProp('width', this.columns || items, this.itemSize, contentPos.x) : setProp('height', items, this.itemSize, contentPos.y);\n }\n }\n },\n setContentPosition(pos) {\n if (this.content && !this.appendOnly) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const first = pos ? pos.first : this.first;\n const calculateTranslateVal = (_first, _size) => _first * _size;\n const setTransform = (_x = 0, _y = 0) => (this.contentStyle = { ...this.contentStyle, ...{ transform: `translate3d(${_x}px, ${_y}px, 0)` } });\n\n if (both) {\n setTransform(calculateTranslateVal(first.cols, this.itemSize[1]), calculateTranslateVal(first.rows, this.itemSize[0]));\n } else {\n const translateVal = calculateTranslateVal(first, this.itemSize);\n\n horizontal ? setTransform(translateVal, 0) : setTransform(0, translateVal);\n }\n }\n },\n onScrollPositionChange(event) {\n const target = event.target;\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n const contentPos = this.getContentPosition();\n const calculateScrollPos = (_pos, _cpos) => (_pos ? (_pos > _cpos ? _pos - _cpos : _pos) : 0);\n const calculateCurrentIndex = (_pos, _size) => Math.floor(_pos / (_size || _pos));\n\n const calculateTriggerIndex = (_currentIndex, _first, _last, _num, _numT, _isScrollDownOrRight) => {\n return _currentIndex <= _numT ? _numT : _isScrollDownOrRight ? _last - _num - _numT : _first + _numT - 1;\n };\n\n const calculateFirst = (_currentIndex, _triggerIndex, _first, _last, _num, _numT, _isScrollDownOrRight, _isCols) => {\n if (_currentIndex <= _numT) return 0;\n const firstValue = Math.max(0, _isScrollDownOrRight ? (_currentIndex < _triggerIndex ? _first : _currentIndex - _numT) : _currentIndex > _triggerIndex ? _first : _currentIndex - 2 * _numT);\n const maxFirst = this.getLast(firstValue, _isCols);\n if (firstValue > maxFirst) return maxFirst - _num;\n else return firstValue;\n };\n\n const calculateLast = (_currentIndex, _first, _last, _num, _numT, _isCols) => {\n let lastValue = _first + _num + 2 * _numT;\n\n if (_currentIndex >= _numT) {\n lastValue += _numT + 1;\n }\n\n return this.getLast(lastValue, _isCols);\n };\n\n const scrollTop = calculateScrollPos(target.scrollTop, contentPos.top);\n const scrollLeft = calculateScrollPos(target.scrollLeft, contentPos.left);\n\n let newFirst = both ? { rows: 0, cols: 0 } : 0;\n let newLast = this.last;\n let isRangeChanged = false;\n let newScrollPos = this.lastScrollPos;\n\n if (both) {\n const isScrollDown = this.lastScrollPos.top <= scrollTop;\n const isScrollRight = this.lastScrollPos.left <= scrollLeft;\n\n if (!this.appendOnly || (this.appendOnly && (isScrollDown || isScrollRight))) {\n const currentIndex = { rows: calculateCurrentIndex(scrollTop, this.itemSize[0]), cols: calculateCurrentIndex(scrollLeft, this.itemSize[1]) };\n const triggerIndex = {\n rows: calculateTriggerIndex(currentIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),\n cols: calculateTriggerIndex(currentIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight)\n };\n\n newFirst = {\n rows: calculateFirst(currentIndex.rows, triggerIndex.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], isScrollDown),\n cols: calculateFirst(currentIndex.cols, triggerIndex.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], isScrollRight, true)\n };\n newLast = {\n rows: calculateLast(currentIndex.rows, newFirst.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),\n cols: calculateLast(currentIndex.cols, newFirst.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], true)\n };\n\n isRangeChanged = newFirst.rows !== this.first.rows || newLast.rows !== this.last.rows || newFirst.cols !== this.first.cols || newLast.cols !== this.last.cols || this.isRangeChanged;\n newScrollPos = { top: scrollTop, left: scrollLeft };\n }\n } else {\n const scrollPos = horizontal ? scrollLeft : scrollTop;\n const isScrollDownOrRight = this.lastScrollPos <= scrollPos;\n\n if (!this.appendOnly || (this.appendOnly && isScrollDownOrRight)) {\n const currentIndex = calculateCurrentIndex(scrollPos, this.itemSize);\n const triggerIndex = calculateTriggerIndex(currentIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);\n\n newFirst = calculateFirst(currentIndex, triggerIndex, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, isScrollDownOrRight);\n newLast = calculateLast(currentIndex, newFirst, this.last, this.numItemsInViewport, this.d_numToleratedItems);\n isRangeChanged = newFirst !== this.first || newLast !== this.last || this.isRangeChanged;\n newScrollPos = scrollPos;\n }\n }\n\n return {\n first: newFirst,\n last: newLast,\n isRangeChanged,\n scrollPos: newScrollPos\n };\n },\n onScrollChange(event) {\n const { first, last, isRangeChanged, scrollPos } = this.onScrollPositionChange(event);\n\n if (isRangeChanged) {\n const newState = { first, last };\n\n this.setContentPosition(newState);\n\n this.first = first;\n this.last = last;\n this.lastScrollPos = scrollPos;\n\n this.$emit('scroll-index-change', newState);\n\n if (this.lazy && this.isPageChanged(first)) {\n const lazyLoadState = {\n first: this.step ? Math.min(this.getPageByFirst(first) * this.step, (this.items?.length || 0) - this.step) : first,\n last: Math.min(this.step ? (this.getPageByFirst(first) + 1) * this.step : last, this.items?.length || 0)\n };\n const isLazyStateChanged = this.lazyLoadState.first !== lazyLoadState.first || this.lazyLoadState.last !== lazyLoadState.last;\n\n isLazyStateChanged && this.$emit('lazy-load', lazyLoadState);\n this.lazyLoadState = lazyLoadState;\n }\n }\n },\n onScroll(event) {\n this.$emit('scroll', event);\n\n if (this.delay) {\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n }\n\n if (this.isPageChanged()) {\n if (!this.d_loading && this.showLoader) {\n const { isRangeChanged } = this.onScrollPositionChange(event);\n const changed = isRangeChanged || (this.step ? this.isPageChanged() : false);\n\n changed && (this.d_loading = true);\n }\n\n this.scrollTimeout = setTimeout(() => {\n this.onScrollChange(event);\n\n if (this.d_loading && this.showLoader && (!this.lazy || this.loading === undefined)) {\n this.d_loading = false;\n this.page = this.getPageByFirst();\n }\n }, this.delay);\n }\n } else {\n this.onScrollChange(event);\n }\n },\n onResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n\n this.resizeTimeout = setTimeout(() => {\n if (isVisible(this.element)) {\n const both = this.isBoth();\n const vertical = this.isVertical();\n const horizontal = this.isHorizontal();\n const [width, height] = [getWidth(this.element), getHeight(this.element)];\n const [isDiffWidth, isDiffHeight] = [width !== this.defaultWidth, height !== this.defaultHeight];\n const reinit = both ? isDiffWidth || isDiffHeight : horizontal ? isDiffWidth : vertical ? isDiffHeight : false;\n\n if (reinit) {\n this.d_numToleratedItems = this.numToleratedItems;\n this.defaultWidth = width;\n this.defaultHeight = height;\n this.defaultContentWidth = getWidth(this.content);\n this.defaultContentHeight = getHeight(this.content);\n\n this.init();\n }\n }\n }, this.resizeDelay);\n },\n bindResizeListener() {\n if (!this.resizeListener) {\n this.resizeListener = this.onResize.bind(this);\n\n window.addEventListener('resize', this.resizeListener);\n window.addEventListener('orientationchange', this.resizeListener);\n\n this.resizeObserver = new ResizeObserver(() => {\n this.onResize();\n });\n this.resizeObserver.observe(this.element);\n }\n },\n unbindResizeListener() {\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n window.removeEventListener('orientationchange', this.resizeListener);\n this.resizeListener = null;\n }\n\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n },\n getOptions(renderedIndex) {\n const count = (this.items || []).length;\n const index = this.isBoth() ? this.first.rows + renderedIndex : this.first + renderedIndex;\n\n return {\n index,\n count,\n first: index === 0,\n last: index === count - 1,\n even: index % 2 === 0,\n odd: index % 2 !== 0\n };\n },\n getLoaderOptions(index, extOptions) {\n let count = this.loaderArr.length;\n\n return {\n index,\n count,\n first: index === 0,\n last: index === count - 1,\n even: index % 2 === 0,\n odd: index % 2 !== 0,\n ...extOptions\n };\n },\n getPageByFirst(first) {\n return Math.floor(((first ?? this.first) + this.d_numToleratedItems * 4) / (this.step || 1));\n },\n isPageChanged(first) {\n return this.step && !this.lazy ? this.page !== this.getPageByFirst(first ?? this.first) : true;\n },\n setContentEl(el) {\n this.content = el || this.content || findSingle(this.element, '[data-pc-section=\"content\"]');\n },\n elementRef(el) {\n this.element = el;\n },\n contentRef(el) {\n this.content = el;\n }\n },\n computed: {\n containerClass() {\n return [\n 'p-virtualscroller',\n this.class,\n {\n 'p-virtualscroller-inline': this.inline,\n 'p-virtualscroller-both p-both-scroll': this.isBoth(),\n 'p-virtualscroller-horizontal p-horizontal-scroll': this.isHorizontal()\n }\n ];\n },\n contentClass() {\n return [\n 'p-virtualscroller-content',\n {\n 'p-virtualscroller-loading': this.d_loading\n }\n ];\n },\n loaderClass() {\n return [\n 'p-virtualscroller-loader',\n {\n 'p-virtualscroller-loader-mask': !this.$slots.loader\n }\n ];\n },\n loadedItems() {\n if (this.items && !this.d_loading) {\n if (this.isBoth()) return this.items.slice(this.appendOnly ? 0 : this.first.rows, this.last.rows).map((item) => (this.columns ? item : item.slice(this.appendOnly ? 0 : this.first.cols, this.last.cols)));\n else if (this.isHorizontal() && this.columns) return this.items;\n else return this.items.slice(this.appendOnly ? 0 : this.first, this.last);\n }\n\n return [];\n },\n loadedRows() {\n return this.d_loading ? (this.loaderDisabled ? this.loaderArr : []) : this.loadedItems;\n },\n loadedColumns() {\n if (this.columns) {\n const both = this.isBoth();\n const horizontal = this.isHorizontal();\n\n if (both || horizontal) {\n return this.d_loading && this.loaderDisabled ? (both ? this.loaderArr[0] : this.loaderArr) : this.columns.slice(both ? this.first.cols : this.first, both ? this.last.cols : this.last);\n }\n }\n\n return this.columns;\n }\n },\n components: {\n SpinnerIcon: SpinnerIcon\n }\n};\n</script>\n"],"names":["name","BaseComponent","props","id","type","String","style","items","Array","itemSize","Number","scrollHeight","scrollWidth","orientation","numToleratedItems","delay","resizeDelay","lazy","Boolean","disabled","loaderDisabled","columns","loading","showSpacer","showLoader","tabindex","inline","step","appendOnly","autoSize","VirtualScrollerStyle","provide","$pcVirtualScroller","$parentInstance","beforeMount","_this$$primevueConfig","loadCSS","nonce","$primevueConfig","csp","BaseVirtualScroller","inheritAttrs","emits","data","both","isBoth","first","rows","cols","last","page","numItemsInViewport","lastScrollPos","top","left","d_numToleratedItems","d_loading","loaderArr","spacerStyle","contentStyle","element","content","scrollTimeout","resizeTimeout","defaultWidth","defaultHeight","defaultContentWidth","defaultContentHeight","isRangeChanged","lazyLoadState","resizeListener","resizeObserver","initialized","watch","newValue","oldValue","handler","length","init","calculateAutoSize","deep","mounted","viewInit","updated","unmounted","unbindResizeListener","methods","isVisible","setContentEl","getWidth","getHeight","bindResizeListener","setSize","calculateOptions","setSpacerSize","isVertical","isHorizontal","scrollTo","options","scrollToIndex","index","_this","behavior","arguments","undefined","horizontal","valid","every","i","_this$element","_this$element$scrollT","scrollTop","_this$element$scrollL","scrollLeft","_this$calculateNumIte","calculateNumItems","contentPos","getContentPosition","calculateFirst","_index","_numT","calculateCoord","_first","_size","_cpos","newFirst","isScrollChanged","scrollInView","to","_this2","_this$getRenderedRang","getRenderedRange","viewport","isToStart","isToEnd","pos","calculateFirstInViewport","_pos","Math","floor","firstInViewport","lastInViewport","_this$element2","scrollPos","contentWidth","offsetWidth","contentHeight","offsetHeight","calculateNumItemsInViewport","_contentSize","_itemSize","ceil","calculateNumToleratedItems","_numItems","_this3","_this$calculateNumIte2","calculateLast","_num","_isCols","getLast","$emit","from","map","Promise","resolve","then","_this3$items","min","_this4","vertical","minHeight","minWidth","position","contain","_ref","width","height","_ref2","_this$items","isCols","getComputedStyle","parseFloat","paddingLeft","max","right","paddingRight","paddingTop","bottom","paddingBottom","x","y","_this5","parentElement","concat","setProp","_name","_value","_this6","_objectSpread","_defineProperty","setContentPosition","_this7","calculateTranslateVal","setTransform","_x","_y","transform","translateVal","onScrollPositionChange","event","_this8","target","calculateScrollPos","calculateCurrentIndex","calculateTriggerIndex","_currentIndex","_last","_isScrollDownOrRight","_triggerIndex","firstValue","maxFirst","lastValue","newLast","newScrollPos","isScrollDown","isScrollRight","currentIndex","triggerIndex","isScrollDownOrRight","onScrollChange","_this$onScrollPositio","newState","isPageChanged","_this$items2","_this$items3","getPageByFirst","isLazyStateChanged","onScroll","_this9","clearTimeout","_this$onScrollPositio2","changed","setTimeout","onResize","_this0","_ref3","isDiffWidth","isDiffHeight","reinit","_this1","bind","window","addEventListener","ResizeObserver","observe","removeEventListener","disconnect","getOptions","renderedIndex","count","even","odd","getLoaderOptions","extOptions","el","findSingle","elementRef","contentRef","computed","containerClass","contentClass","loaderClass","$slots","loader","loadedItems","_this10","slice","item","loadedRows","loadedColumns","components","SpinnerIcon","_ctx","_openBlock","_createElementBlock","_mergeProps","ref","$options","apply","ptmi","_renderSlot","styleClass","getItemOptions","$data","_createElementVNode","ptm","_Fragment","_renderList","key","_","numCols","d_numItemsInViewport","_createVNode","_component_SpinnerIcon","spin"],"mappings":";;;;;;AAIA,eAAe;AACXA,EAAAA,IAAI,EAAE,qBAAqB;AAC3B,EAAA,SAAA,EAASC,aAAa;AACtBC,EAAAA,KAAK,EAAE;AACHC,IAAAA,EAAE,EAAE;AACAC,MAAAA,IAAI,EAAEC,MAAM;MACZ,SAAA,EAAS;KACZ;AACDC,IAAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAA,EAAO,IAAI;AACXC,IAAAA,KAAK,EAAE;AACHH,MAAAA,IAAI,EAAEI,KAAK;MACX,SAAA,EAAS;KACZ;AACDC,IAAAA,QAAQ,EAAE;AACNL,MAAAA,IAAI,EAAE,CAACM,MAAM,EAAEF,KAAK,CAAC;MACrB,SAAA,EAAS;KACZ;AACDG,IAAAA,YAAY,EAAE,IAAI;AAClBC,IAAAA,WAAW,EAAE,IAAI;AACjBC,IAAAA,WAAW,EAAE;AACTT,MAAAA,IAAI,EAAEC,MAAM;MACZ,SAAA,EAAS;KACZ;AACDS,IAAAA,iBAAiB,EAAE;AACfV,MAAAA,IAAI,EAAEM,MAAM;MACZ,SAAA,EAAS;KACZ;AACDK,IAAAA,KAAK,EAAE;AACHX,MAAAA,IAAI,EAAEM,MAAM;MACZ,SAAA,EAAS;KACZ;AACDM,IAAAA,WAAW,EAAE;AACTZ,MAAAA,IAAI,EAAEM,MAAM;MACZ,SAAA,EAAS;KACZ;AACDO,IAAAA,IAAI,EAAE;AACFb,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;KACZ;AACDC,IAAAA,QAAQ,EAAE;AACNf,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;KACZ;AACDE,IAAAA,cAAc,EAAE;AACZhB,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;KACZ;AACDG,IAAAA,OAAO,EAAE;AACLjB,MAAAA,IAAI,EAAEI,KAAK;MACX,SAAA,EAAS;KACZ;AACDc,IAAAA,OAAO,EAAE;AACLlB,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;KACZ;AACDK,IAAAA,UAAU,EAAE;AACRnB,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;KACZ;AACDM,IAAAA,UAAU,EAAE;AACRpB,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;KACZ;AACDO,IAAAA,QAAQ,EAAE;AACNrB,MAAAA,IAAI,EAAEM,MAAM;MACZ,SAAA,EAAS;KACZ;AACDgB,IAAAA,MAAM,EAAE;AACJtB,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;KACZ;AACDS,IAAAA,IAAI,EAAE;AACFvB,MAAAA,IAAI,EAAEM,MAAM;MACZ,SAAA,EAAS;KACZ;AACDkB,IAAAA,UAAU,EAAE;AACRxB,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;KACZ;AACDW,IAAAA,QAAQ,EAAE;AACNzB,MAAAA,IAAI,EAAEc,OAAO;MACb,SAAA,EAAS;AACb;GACH;AACDZ,EAAAA,KAAK,EAAEwB,oBAAoB;EAC3BC,OAAO,EAAA,SAAPA,OAAOA,GAAG;IACN,OAAO;AACHC,MAAAA,kBAAkB,EAAE,IAAI;AACxBC,MAAAA,eAAe,EAAE;KACpB;EACL,CAAC;EACDC,WAAW,EAAA,SAAXA,WAAWA,GAAG;AAAA,IAAA,IAAAC,qBAAA;IACVL,oBAAoB,CAACM,OAAO,CAAC;AAAEC,MAAAA,KAAK,GAAAF,qBAAA,GAAE,IAAI,CAACG,eAAe,cAAAH,qBAAA,KAAA,MAAA,IAAA,CAAAA,qBAAA,GAApBA,qBAAA,CAAsBI,GAAG,cAAAJ,qBAAA,KAAA,MAAA,GAAA,MAAA,GAAzBA,qBAAA,CAA2BE;AAAM,KAAC,CAAC;AAC7E,EAAA;AACJ,CAAC;;;;;;;;ACjDD,aAAe;AACXrC,EAAAA,IAAI,EAAE,iBAAiB;AACvB,EAAA,SAAA,EAASwC,QAAmB;AAC5BC,EAAAA,YAAY,EAAE,KAAK;EACnBC,KAAK,EAAE,CAAC,0BAA0B,EAAE,QAAQ,EAAE,qBAAqB,EAAE,WAAW,CAAC;EACjFC,IAAI,EAAA,SAAJA,IAAIA,GAAG;AACH,IAAA,IAAMC,OAAO,IAAI,CAACC,MAAM,EAAE;IAE1B,OAAO;MACHC,KAAK,EAAEF,IAAG,GAAI;AAAEG,QAAAA,IAAI,EAAE,CAAC;AAAEC,QAAAA,IAAI,EAAE;AAAE,OAAA,GAAI,CAAC;MACtCC,IAAI,EAAEL,IAAG,GAAI;AAAEG,QAAAA,IAAI,EAAE,CAAC;AAAEC,QAAAA,IAAI,EAAE;AAAE,OAAA,GAAI,CAAC;MACrCE,IAAI,EAAEN,IAAG,GAAI;AAAEG,QAAAA,IAAI,EAAE,CAAC;AAAEC,QAAAA,IAAI,EAAE;AAAE,OAAA,GAAI,CAAC;MACrCG,kBAAkB,EAAEP,OAAO;AAAEG,QAAAA,IAAI,EAAE,CAAC;AAAEC,QAAAA,IAAI,EAAE;AAAE,OAAA,GAAI,CAAC;MACnDI,aAAa,EAAER,IAAG,GAAI;AAAES,QAAAA,GAAG,EAAE,CAAC;AAAEC,QAAAA,IAAI,EAAE;AAAE,OAAA,GAAI,CAAC;MAC7CC,mBAAmB,EAAE,IAAI,CAACzC,iBAAiB;MAC3C0C,SAAS,EAAE,IAAI,CAAClC,OAAO;AACvBmC,MAAAA,SAAS,EAAE,EAAE;MACbC,WAAW,EAAE,EAAE;AACfC,MAAAA,YAAY,EAAE;KACjB;EACL,CAAC;AACDC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,OAAO,EAAE,IAAI;AACbT,EAAAA,aAAa,EAAE,IAAI;AACnBU,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,YAAY,EAAE,CAAC;AACfC,EAAAA,aAAa,EAAE,CAAC;AAChBC,EAAAA,mBAAmB,EAAE,CAAC;AACtBC,EAAAA,oBAAoB,EAAE,CAAC;AACvBC,EAAAA,cAAc,EAAE,KAAK;EACrBC,aAAa,EAAE,EAAE;AACjBC,EAAAA,cAAc,EAAE,IAAI;AACpBC,EAAAA,cAAc,EAAE,IAAI;AACpBC,EAAAA,WAAW,EAAE,KAAK;AAClBC,EAAAA,KAAK,EAAE;AACH3D,IAAAA,iBAAiB,EAAA,SAAjBA,iBAAiBA,CAAC4D,QAAQ,EAAE;MACxB,IAAI,CAACnB,mBAAkB,GAAImB,QAAQ;IACvC,CAAC;AACDpD,IAAAA,OAAO,WAAPA,OAAOA,CAACoD,QAAQ,EAAEC,QAAQ,EAAE;AACxB,MAAA,IAAI,IAAI,CAAC1D,IAAG,IAAKyD,QAAO,KAAMC,QAAO,IAAKD,QAAO,KAAM,IAAI,CAAClB,SAAS,EAAE;QACnE,IAAI,CAACA,SAAQ,GAAIkB,QAAQ;AAC7B,MAAA;IACJ,CAAC;AACDnE,IAAAA,KAAK,EAAE;AACHqE,MAAAA,OAAO,WAAPA,OAAOA,CAACF,QAAQ,EAAEC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAACA,QAAO,IAAKA,QAAQ,CAACE,MAAK,KAAM,CAACH,QAAO,IAAK,EAAE,EAAEG,MAAM,EAAE;UAC1D,IAAI,CAACC,IAAI,EAAE;UACX,IAAI,CAACC,iBAAiB,EAAE;AAC5B,QAAA;MACJ,CAAC;AACDC,MAAAA,IAAI,EAAE;KACT;IACDvE,QAAQ,EAAA,SAARA,QAAQA,GAAG;MACP,IAAI,CAACqE,IAAI,EAAE;MACX,IAAI,CAACC,iBAAiB,EAAE;IAC5B,CAAC;IACDlE,WAAW,EAAA,SAAXA,WAAWA,GAAG;MACV,IAAI,CAACuC,gBAAgB,IAAI,CAACP,MAAM,EAAC,GAAI;AAAEQ,QAAAA,GAAG,EAAE,CAAC;AAAEC,QAAAA,IAAI,EAAE;AAAE,OAAA,GAAI,CAAC;IAChE,CAAC;IACD3C,YAAY,EAAA,SAAZA,YAAYA,GAAG;MACX,IAAI,CAACmE,IAAI,EAAE;MACX,IAAI,CAACC,iBAAiB,EAAE;IAC5B,CAAC;IACDnE,WAAW,EAAA,SAAXA,WAAWA,GAAG;MACV,IAAI,CAACkE,IAAI,EAAE;MACX,IAAI,CAACC,iBAAiB,EAAE;AAC5B,IAAA;GACH;EACDE,OAAO,EAAA,SAAPA,OAAOA,GAAG;IACN,IAAI,CAACC,QAAQ,EAAE;IAEf,IAAI,CAAC9B,gBAAgB,IAAI,CAACP,MAAM,EAAC,GAAI;AAAEQ,MAAAA,GAAG,EAAE,CAAC;AAAEC,MAAAA,IAAI,EAAE;AAAE,KAAA,GAAI,CAAC;IAC5D,IAAI,CAACe,gBAAgB,IAAI,CAACA,iBAAiB,EAAE;EACjD,CAAC;EACDc,OAAO,EAAA,SAAPA,OAAOA,GAAG;IACN,CAAC,IAAI,CAACX,WAAU,IAAK,IAAI,CAACU,QAAQ,EAAE;EACxC,CAAC;EACDE,SAAS,EAAA,SAATA,SAASA,GAAG;IACR,IAAI,CAACC,oBAAoB,EAAE;IAE3B,IAAI,CAACb,WAAU,GAAI,KAAK;EAC5B,CAAC;AACDc,EAAAA,OAAO,EAAE;IACLJ,QAAQ,EAAA,SAARA,QAAQA,GAAG;AACP,MAAA,IAAIK,SAAS,CAAC,IAAI,CAAC3B,OAAO,CAAC,EAAE;AACzB,QAAA,IAAI,CAAC4B,YAAY,CAAC,IAAI,CAAC3B,OAAO,CAAC;QAC/B,IAAI,CAACiB,IAAI,EAAE;QACX,IAAI,CAACC,iBAAiB,EAAE;QAExB,IAAI,CAACf,YAAW,GAAIyB,QAAQ,CAAC,IAAI,CAAC7B,OAAO,CAAC;QAC1C,IAAI,CAACK,aAAY,GAAIyB,SAAS,CAAC,IAAI,CAAC9B,OAAO,CAAC;QAC5C,IAAI,CAACM,sBAAsBuB,QAAQ,CAAC,IAAI,CAAC5B,OAAO,CAAC;QACjD,IAAI,CAACM,uBAAuBuB,SAAS,CAAC,IAAI,CAAC7B,OAAO,CAAC;QACnD,IAAI,CAACW,WAAU,GAAI,IAAI;AAC3B,MAAA;MAEA,IAAI,IAAI,CAACZ,OAAO,EAAE;QACd,IAAI,CAAC+B,kBAAkB,EAAE;AAC7B,MAAA;IACJ,CAAC;IACDb,IAAI,EAAA,SAAJA,IAAIA,GAAG;AACH,MAAA,IAAI,CAAC,IAAI,CAAC3D,QAAQ,EAAE;QAChB,IAAI,CAACyE,OAAO,EAAE;QACd,IAAI,CAACC,gBAAgB,EAAE;QACvB,IAAI,CAACC,aAAa,EAAE;AACxB,MAAA;IACJ,CAAC;IACDC,UAAU,EAAA,SAAVA,UAAUA,GAAG;AACT,MAAA,OAAO,IAAI,CAAClF,WAAU,KAAM,UAAU;IAC1C,CAAC;IACDmF,YAAY,EAAA,SAAZA,YAAYA,GAAG;AACX,MAAA,OAAO,IAAI,CAACnF,WAAU,KAAM,YAAY;IAC5C,CAAC;IACDgC,MAAM,EAAA,SAANA,MAAMA,GAAG;AACL,MAAA,OAAO,IAAI,CAAChC,WAAU,KAAM,MAAM;IACtC,CAAC;AACDoF,IAAAA,QAAQ,EAAA,SAARA,QAAQA,CAACC,OAAO,EAAE;AACd;MACA,IAAI,CAACtC,OAAM,IAAK,IAAI,CAACA,OAAO,CAACqC,QAAQ,CAACC,OAAO,CAAC;IAClD,CAAC;AACDC,IAAAA,aAAa,EAAA,SAAbA,aAAaA,CAACC,KAAK,EAAqB;AAAA,MAAA,IAAAC,KAAA,GAAA,IAAA;AAAA,MAAA,IAAnBC,QAAO,GAAAC,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,MAAM;AAClC,MAAA,IAAM3D,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,MAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;MACtC,IAAMU,KAAI,GAAI9D,OAAOwD,KAAK,CAACO,KAAK,CAAC,UAACC,CAAC,EAAA;QAAA,OAAKA,CAAA,GAAI,EAAE;AAAA,MAAA,CAAA,CAAA,GAAIR,KAAI,GAAI,EAAE;AAE5D,MAAA,IAAIM,KAAK,EAAE;AACP,QAAA,IAAM5D,KAAI,GAAI,IAAI,CAACA,KAAK;AACxB,QAAA,IAAA+D,aAAA,GAA0C,IAAI,CAACjD,OAAO;UAAAkD,qBAAA,GAAAD,aAAA,CAA9CE,SAAQ;AAARA,UAAAA,SAAQ,GAAAD,qBAAA,KAAA,MAAA,GAAI,CAAC,GAAAA,qBAAA;UAAAE,qBAAA,GAAAH,aAAA,CAAEI;AAAAA,UAAAA,gDAAa,CAAA,GAAAD,qBAAA;AACpC,QAAA,IAAAE,qBAAA,GAA8B,IAAI,CAACC,iBAAiB,EAAE;UAA9CrG,iBAAgB,GAAAoG,qBAAA,CAAhBpG,iBAAgB;AACxB,QAAA,IAAMsG,aAAa,IAAI,CAACC,kBAAkB,EAAE;AAC5C,QAAA,IAAM5G,QAAO,GAAI,IAAI,CAACA,QAAQ;AAC9B,QAAA,IAAM6G,cAAa,GAAI,SAAjBA,cAAaA,GAAA;AAAA,UAAA,IAAKC,MAAK,GAAAhB,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,CAAC;UAAA,IAAEiB,KAAK,GAAAjB,SAAA,CAAA1B,MAAA,GAAA,CAAA,GAAA0B,SAAA,MAAAC,SAAA;AAAA,UAAA,OAAMe,MAAK,IAAKC,KAAI,GAAI,CAAA,GAAID,MAAM;QAAA,CAAC;QAC5E,IAAME,cAAa,GAAI,SAAjBA,cAAaA,CAAKC,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAA;AAAA,UAAA,OAAKF,MAAK,GAAIC,KAAI,GAAIC,KAAK;AAAA,QAAA,CAAA;AACvE,QAAA,IAAM3B,QAAO,GAAI,SAAXA,QAAOA,GAAA;AAAA,UAAA,IAAK3C,IAAG,GAAAiD,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,CAAC;AAAA,UAAA,IAAElD,GAAE,GAAAkD,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,CAAC;UAAA,OAAKF,KAAI,CAACJ,QAAQ,CAAC;AAAE3C,YAAAA,IAAI,EAAJA,IAAI;AAAED,YAAAA,GAAG,EAAHA,GAAG;AAAEiD,YAAAA,QAAO,EAAPA;AAAS,WAAC,CAAC;AAAA,QAAA,CAAA;QAC9E,IAAIuB,QAAO,GAAIjF,IAAG,GAAI;AAAEG,UAAAA,IAAI,EAAE,CAAC;AAAEC,UAAAA,IAAI,EAAE;AAAE,SAAA,GAAI,CAAC;QAC9C,IAAIoB,cAAa,GAAI,KAAK;AACtB0D,UAAAA,eAAc,GAAI,KAAK;AAE3B,QAAA,IAAIlF,IAAI,EAAE;AACNiF,UAAAA,QAAO,GAAI;AAAE9E,YAAAA,IAAI,EAAEuE,cAAc,CAAClB,KAAK,CAAC,CAAC,CAAC,EAAEtF,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAAEkC,IAAI,EAAEsE,cAAc,CAAClB,KAAK,CAAC,CAAC,CAAC,EAAEtF,iBAAiB,CAAC,CAAC,CAAC;WAAG;AACzHmF,UAAAA,QAAQ,CAACwB,cAAc,CAACI,QAAQ,CAAC7E,IAAI,EAAEvC,QAAQ,CAAC,CAAC,CAAC,EAAE2G,UAAU,CAAC9D,IAAI,CAAC,EAAEmE,cAAc,CAACI,QAAQ,CAAC9E,IAAI,EAAEtC,QAAQ,CAAC,CAAC,CAAC,EAAE2G,UAAU,CAAC/D,GAAG,CAAC,CAAC;AACjIyE,UAAAA,eAAc,GAAI,IAAI,CAAC1E,aAAa,CAACC,GAAE,KAAM0D,aAAa,IAAI,CAAC3D,aAAa,CAACE,SAAS2D,UAAU;AAChG7C,UAAAA,iBAAiByD,QAAQ,CAAC9E,IAAG,KAAMD,KAAK,CAACC,QAAQ8E,QAAQ,CAAC7E,IAAG,KAAMF,KAAK,CAACE,IAAI;AACjF,QAAA,CAAA,MAAO;AACH6E,UAAAA,QAAO,GAAIP,cAAc,CAAClB,KAAK,EAAEtF,iBAAiB,CAAC;AACnD2F,UAAAA,UAAS,GAAIR,QAAQ,CAACwB,cAAc,CAACI,QAAQ,EAAEpH,QAAQ,EAAE2G,UAAU,CAAC9D,IAAI,CAAC,EAAEyD,SAAS,CAAA,GAAId,QAAQ,CAACgB,UAAU,EAAEQ,cAAc,CAACI,QAAQ,EAAEpH,QAAQ,EAAE2G,UAAU,CAAC/D,GAAG,CAAC,CAAC;UAChKyE,kBAAkB,IAAI,CAAC1E,aAAY,MAAOqD,UAAS,GAAIQ,UAAS,GAAIF,SAAS,CAAC;UAC9E3C,cAAa,GAAIyD,QAAO,KAAM/E,KAAK;AACvC,QAAA;QAEA,IAAI,CAACsB,cAAa,GAAIA,cAAc;AACpC0D,QAAAA,eAAc,KAAM,IAAI,CAAChF,KAAI,GAAI+E,QAAQ,CAAC;AAC9C,MAAA;IACJ,CAAC;AACDE,IAAAA,YAAY,WAAZA,YAAYA,CAAC3B,KAAK,EAAE4B,EAAE,EAAqB;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA;AAAA,MAAA,IAAnB3B,QAAO,GAAAC,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,MAAM;AACrC,MAAA,IAAIyB,EAAE,EAAE;AACJ,QAAA,IAAMpF,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,QAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;QACtC,IAAMU,KAAI,GAAI9D,OAAOwD,KAAK,CAACO,KAAK,CAAC,UAACC,CAAC,EAAA;UAAA,OAAKA,CAAA,GAAI,EAAE;AAAA,QAAA,CAAA,CAAA,GAAIR,KAAI,GAAI,EAAE;AAE5D,QAAA,IAAIM,KAAK,EAAE;AACP,UAAA,IAAAwB,qBAAA,GAA4B,IAAI,CAACC,gBAAgB,EAAE;YAA3CrF,KAAK,GAAAoF,qBAAA,CAALpF,KAAK;YAAEsF,iCAAAA;AACf,UAAA,IAAMnC,QAAO,GAAI,SAAXA,QAAOA,GAAA;AAAA,YAAA,IAAK3C,IAAG,GAAAiD,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,CAAC;AAAA,YAAA,IAAElD,GAAE,GAAAkD,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,CAAC;YAAA,OAAK0B,MAAI,CAAChC,QAAQ,CAAC;AAAE3C,cAAAA,IAAI,EAAJA,IAAI;AAAED,cAAAA,GAAG,EAAHA,GAAG;AAAEiD,cAAAA,QAAO,EAAPA;AAAS,aAAC,CAAC;AAAA,UAAA,CAAA;AAC9E,UAAA,IAAM+B,SAAQ,GAAIL,EAAC,KAAM,UAAU;AACnC,UAAA,IAAMM,OAAM,GAAIN,EAAC,KAAM,QAAQ;AAE/B,UAAA,IAAIK,SAAS,EAAE;AACX,YAAA,IAAIzF,IAAI,EAAE;AACN,cAAA,IAAIwF,QAAQ,CAACtF,KAAK,CAACC,IAAG,GAAID,KAAK,CAACC,OAAOqD,KAAK,CAAC,CAAC,CAAC,EAAE;AAC7CH,gBAAAA,QAAQ,CAACmC,QAAQ,CAACtF,KAAK,CAACE,IAAG,GAAI,IAAI,CAACvC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC2H,QAAQ,CAACtF,KAAK,CAACC,IAAG,GAAI,CAAC,IAAI,IAAI,CAACtC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClG,cAAA,CAAA,MAAO,IAAI2H,QAAQ,CAACtF,KAAK,CAACE,IAAG,GAAIF,KAAK,CAACE,IAAG,GAAIoD,KAAK,CAAC,CAAC,CAAC,EAAE;AACpDH,gBAAAA,QAAQ,CAAC,CAACmC,QAAQ,CAACtF,KAAK,CAACE,IAAG,GAAI,CAAC,IAAI,IAAI,CAACvC,QAAQ,CAAC,CAAC,CAAC,EAAE2H,QAAQ,CAACtF,KAAK,CAACC,IAAG,GAAI,IAAI,CAACtC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClG,cAAA;AACJ,YAAA,CAAA,MAAO;AACH,cAAA,IAAI2H,QAAQ,CAACtF,KAAI,GAAIA,KAAI,GAAIsD,KAAK,EAAE;gBAChC,IAAMmC,GAAE,GAAI,CAACH,QAAQ,CAACtF,KAAI,GAAI,CAAC,IAAI,IAAI,CAACrC,QAAQ;AAEhDgG,gBAAAA,UAAS,GAAIR,QAAQ,CAACsC,GAAG,EAAE,CAAC,CAAA,GAAItC,QAAQ,CAAC,CAAC,EAAEsC,GAAG,CAAC;AACpD,cAAA;AACJ,YAAA;UACJ,CAAA,MAAO,IAAID,OAAO,EAAE;AAChB,YAAA,IAAI1F,IAAI,EAAE;AACN,cAAA,IAAIwF,QAAQ,CAACnF,IAAI,CAACF,IAAG,GAAID,KAAK,CAACC,QAAQqD,KAAK,CAAC,CAAC,CAAA,GAAI,CAAC,EAAE;AACjDH,gBAAAA,QAAQ,CAACmC,QAAQ,CAACtF,KAAK,CAACE,IAAG,GAAI,IAAI,CAACvC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC2H,QAAQ,CAACtF,KAAK,CAACC,IAAG,GAAI,CAAC,IAAI,IAAI,CAACtC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClG,cAAA,CAAA,MAAO,IAAI2H,QAAQ,CAACnF,IAAI,CAACD,OAAOF,KAAK,CAACE,IAAG,IAAKoD,KAAK,CAAC,CAAC,CAAA,GAAI,CAAC,EAAE;AACxDH,gBAAAA,QAAQ,CAAC,CAACmC,QAAQ,CAACtF,KAAK,CAACE,IAAG,GAAI,CAAC,IAAI,IAAI,CAACvC,QAAQ,CAAC,CAAC,CAAC,EAAE2H,QAAQ,CAACtF,KAAK,CAACC,IAAG,GAAI,IAAI,CAACtC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClG,cAAA;AACJ,YAAA,CAAA,MAAO;cACH,IAAI2H,QAAQ,CAACnF,IAAG,GAAIH,KAAI,IAAKsD,KAAI,GAAI,CAAC,EAAE;gBACpC,IAAMmC,KAAE,GAAI,CAACH,QAAQ,CAACtF,KAAI,GAAI,CAAC,IAAI,IAAI,CAACrC,QAAQ;AAEhDgG,gBAAAA,UAAS,GAAIR,QAAQ,CAACsC,KAAG,EAAE,CAAC,CAAA,GAAItC,QAAQ,CAAC,CAAC,EAAEsC,KAAG,CAAC;AACpD,cAAA;AACJ,YAAA;AACJ,UAAA;AACJ,QAAA;AACJ,MAAA,CAAA,MAAO;AACH,QAAA,IAAI,CAACpC,aAAa,CAACC,KAAK,EAAEE,QAAQ,CAAC;AACvC,MAAA;IACJ,CAAC;IACD6B,gBAAgB,EAAA,SAAhBA,gBAAgBA,GAAG;AACf,MAAA,IAAMK,wBAAuB,GAAI,SAA3BA,wBAAuBA,CAAKC,IAAI,EAAEd,KAAK,EAAA;QAAA,OAAKe,IAAI,CAACC,KAAK,CAACF,IAAG,IAAKd,KAAI,IAAKc,IAAI,CAAC,CAAC;AAAA,MAAA,CAAA;AAEpF,MAAA,IAAIG,eAAc,GAAI,IAAI,CAAC9F,KAAK;MAChC,IAAI+F,cAAa,GAAI,CAAC;MAEtB,IAAI,IAAI,CAACjF,OAAO,EAAE;AACd,QAAA,IAAMhB,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,QAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;AACtC,QAAA,IAAA8C,cAAA,GAAkC,IAAI,CAAClF,OAAO;UAAtCmD,SAAS,GAAA+B,cAAA,CAAT/B,SAAS;UAAEE,UAAS,GAAA6B,cAAA,CAAT7B,UAAS;AAE5B,QAAA,IAAIrE,IAAI,EAAE;AACNgG,UAAAA,eAAc,GAAI;YAAE7F,IAAI,EAAEyF,wBAAwB,CAACzB,SAAS,EAAE,IAAI,CAACtG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAEuC,IAAI,EAAEwF,wBAAwB,CAACvB,UAAU,EAAE,IAAI,CAACxG,QAAQ,CAAC,CAAC,CAAC;WAAG;AAC/IoI,UAAAA,cAAa,GAAI;YAAE9F,IAAI,EAAE6F,eAAe,CAAC7F,IAAG,GAAI,IAAI,CAACI,kBAAkB,CAACJ,IAAI;YAAEC,IAAI,EAAE4F,eAAe,CAAC5F,IAAG,GAAI,IAAI,CAACG,kBAAkB,CAACH;WAAM;AAC7I,QAAA,CAAA,MAAO;AACH,UAAA,IAAM+F,SAAQ,GAAItC,UAAS,GAAIQ,aAAaF,SAAS;UAErD6B,eAAc,GAAIJ,wBAAwB,CAACO,SAAS,EAAE,IAAI,CAACtI,QAAQ,CAAC;AACpEoI,UAAAA,iBAAiBD,eAAc,GAAI,IAAI,CAACzF,kBAAkB;AAC9D,QAAA;AACJ,MAAA;MAEA,OAAO;QACHL,KAAK,EAAE,IAAI,CAACA,KAAK;QACjBG,IAAI,EAAE,IAAI,CAACA,IAAI;AACfmF,QAAAA,QAAQ,EAAE;AACNtF,UAAAA,KAAK,EAAE8F,eAAe;AACtB3F,UAAAA,IAAI,EAAE4F;AACV;OACH;IACL,CAAC;IACD1B,iBAAiB,EAAA,SAAjBA,iBAAiBA,GAAG;AAChB,MAAA,IAAMvE,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,MAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;AACtC,MAAA,IAAMvF,QAAO,GAAI,IAAI,CAACA,QAAQ;AAC9B,MAAA,IAAM2G,aAAa,IAAI,CAACC,kBAAkB,EAAE;AAC5C,MAAA,IAAM2B,YAAW,GAAI,IAAI,CAACpF,OAAM,GAAI,IAAI,CAACA,OAAO,CAACqF,WAAU,GAAI7B,UAAU,CAAC9D,IAAG,GAAI,CAAC;AAClF,MAAA,IAAM4F,aAAY,GAAI,IAAI,CAACtF,OAAM,GAAI,IAAI,CAACA,OAAO,CAACuF,YAAW,GAAI/B,UAAU,CAAC/D,GAAE,GAAI,CAAC;AACnF,MAAA,IAAM+F,2BAA0B,GAAI,SAA9BA,2BAA0BA,CAAKC,YAAY,EAAEC,SAAS,EAAA;QAAA,OAAKZ,IAAI,CAACa,IAAI,CAACF,YAAW,IAAKC,SAAQ,IAAKD,YAAY,CAAC,CAAC;AAAA,MAAA,CAAA;AACtH,MAAA,IAAMG,6BAA6B,SAA7BA,2BAA8BC,SAAS,EAAA;AAAA,QAAA,OAAKf,IAAI,CAACa,IAAI,CAACE,SAAQ,GAAI,CAAC,CAAC;AAAA,MAAA,CAAA;MAC1E,IAAMtG,kBAAiB,GAAIP,IAAG,GACxB;QAAEG,IAAI,EAAEqG,2BAA2B,CAACF,aAAa,EAAEzI,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAEuC,IAAI,EAAEoG,2BAA2B,CAACJ,YAAY,EAAEvI,QAAQ,CAAC,CAAC,CAAC;OAAE,GAC9H2I,2BAA2B,CAAC3C,UAAS,GAAIuC,YAAW,GAAIE,aAAa,EAAEzI,QAAQ,CAAC;AAEtF,MAAA,IAAMK,iBAAgB,GAAI,IAAI,CAACyC,mBAAkB,KAAMX,IAAG,GAAI,CAAC4G,0BAA0B,CAACrG,kBAAkB,CAACJ,IAAI,CAAC,EAAEyG,0BAA0B,CAACrG,kBAAkB,CAACH,IAAI,CAAC,IAAIwG,0BAA0B,CAACrG,kBAAkB,CAAC,CAAC;MAE1N,OAAO;AAAEA,QAAAA,kBAAkB,EAAlBA,kBAAkB;AAAErC,QAAAA,mBAAAA;OAAmB;IACpD,CAAC;IACD+E,gBAAgB,EAAA,SAAhBA,gBAAgBA,GAAG;AAAA,MAAA,IAAA6D,MAAA,GAAA,IAAA;AACf,MAAA,IAAM9G,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,MAAA,IAAMC,KAAI,GAAI,IAAI,CAACA,KAAK;AACxB,MAAA,IAAA6G,sBAAA,GAAkD,IAAI,CAACxC,iBAAiB,EAAE;QAAlEhE,kBAAkB,GAAAwG,sBAAA,CAAlBxG,kBAAkB;QAAErC,iBAAgB,GAAA6I,sBAAA,CAAhB7I,iBAAgB;MAC5C,IAAM8I,aAAY,GAAI,SAAhBA,aAAYA,CAAKlC,MAAM,EAAEmC,IAAI,EAAErC,KAAK,EAAA;AAAA,QAAA,IAAEsC,OAAM,GAAAvD,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,KAAK;QAAA,OAAKmD,MAAI,CAACK,OAAO,CAACrC,MAAK,GAAImC,OAAO,CAACnC,MAAK,GAAIF,QAAQ,CAAA,GAAI,CAAC,IAAIA,KAAK,EAAEsC,OAAO,CAAC;AAAA,MAAA,CAAA;MACvI,IAAM7G,IAAG,GAAIL,IAAG,GACV;AAAEG,QAAAA,IAAI,EAAE6G,aAAa,CAAC9G,KAAK,CAACC,IAAI,EAAEI,kBAAkB,CAACJ,IAAI,EAAEjC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAAEkC,QAAAA,IAAI,EAAE4G,aAAa,CAAC9G,KAAK,CAACE,IAAI,EAAEG,kBAAkB,CAACH,IAAI,EAAElC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI;OAAE,GACvK8I,aAAa,CAAC9G,KAAK,EAAEK,kBAAkB,EAAErC,iBAAiB,CAAC;MAEjE,IAAI,CAACmC,IAAG,GAAIA,IAAI;MAChB,IAAI,CAACE,kBAAiB,GAAIA,kBAAkB;MAC5C,IAAI,CAACI,sBAAsBzC,iBAAiB;MAC5C,IAAI,CAACkJ,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAACzG,mBAAmB,CAAC;MAEhE,IAAI,IAAI,CAAC/B,UAAU,EAAE;QACjB,IAAI,CAACiC,SAAQ,GAAIb,IAAG,GAAIpC,KAAK,CAACyJ,IAAI,CAAC;UAAEpF,MAAM,EAAE1B,kBAAkB,CAACJ;SAAM,CAAC,CAACmH,GAAG,CAAC,YAAA;UAAA,OAAM1J,KAAK,CAACyJ,IAAI,CAAC;YAAEpF,MAAM,EAAE1B,kBAAkB,CAACH;AAAK,WAAC,CAAC;AAAA,QAAA,CAAA,CAAA,GAAIxC,KAAK,CAACyJ,IAAI,CAAC;AAAEpF,UAAAA,MAAM,EAAE1B;AAAmB,SAAC,CAAC;AACnL,MAAA;MAEA,IAAI,IAAI,CAAClC,IAAI,EAAE;AACXkJ,QAAAA,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,YAAM;AAAA,UAAA,IAAAC,YAAA;UACzBZ,MAAI,CAACrF,gBAAgB;AACjBvB,YAAAA,KAAK,EAAE4G,MAAI,CAAC/H,IAAG,GAAKiB,OAAO;AAAEG,cAAAA,IAAI,EAAE,CAAC;cAAEC,IAAI,EAAEF,KAAK,CAACE;aAAK,GAAI,CAAC,GAAIF,KAAK;AACrEG,YAAAA,IAAI,EAAEyF,IAAI,CAAC6B,GAAG,CAACb,MAAI,CAAC/H,IAAG,GAAI+H,MAAI,CAAC/H,IAAG,GAAIsB,IAAI,EAAE,CAAA,CAAAqH,YAAA,GAAAZ,MAAI,CAACnJ,KAAK,MAAA,IAAA,IAAA+J,YAAA,KAAA,MAAA,GAAA,MAAA,GAAVA,YAAA,CAAYzF,MAAK,KAAK,CAAC;WACvE;UAED6E,MAAI,CAACM,KAAK,CAAC,WAAW,EAAEN,MAAI,CAACrF,aAAa,CAAC;AAC/C,QAAA,CAAC,CAAC;AACN,MAAA;IACJ,CAAC;IACDU,iBAAiB,EAAA,SAAjBA,iBAAiBA,GAAG;AAAA,MAAA,IAAAyF,MAAA,GAAA,IAAA;MAChB,IAAI,IAAI,CAAC3I,QAAO,IAAK,CAAC,IAAI,CAAC2B,SAAS,EAAE;AAClC2G,QAAAA,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,YAAM;UACzB,IAAIG,MAAI,CAAC3G,OAAO,EAAE;AACd,YAAA,IAAMjB,OAAO4H,MAAI,CAAC3H,MAAM,EAAE;AAC1B,YAAA,IAAM4D,aAAa+D,MAAI,CAACxE,YAAY,EAAE;AACtC,YAAA,IAAMyE,QAAO,GAAID,MAAI,CAACzE,UAAU,EAAE;AAElCyE,YAAAA,MAAI,CAAC3G,OAAO,CAACvD,KAAK,CAACoK,SAAQ,GAAIF,MAAI,CAAC3G,OAAO,CAACvD,KAAK,CAACqK,QAAO,GAAI,MAAM;AACnEH,YAAAA,MAAI,CAAC3G,OAAO,CAACvD,KAAK,CAACsK,WAAW,UAAU;AACxCJ,YAAAA,MAAI,CAAC5G,OAAO,CAACtD,KAAK,CAACuK,OAAM,GAAI,MAAM;;AAEnC;;AAEA;;AAGA,YAAA,IAAAC,IAAA,GAAwB,CAACrF,QAAQ,CAAC+E,MAAI,CAAC5G,OAAO,CAAC,EAAE8B,SAAS,CAAC8E,MAAI,CAAC5G,OAAO,CAAC,CAAC;AAAlEmH,cAAAA,KAAK,GAAAD,IAAA,CAAA,CAAA,CAAA;AAAEE,cAAAA,MAAM,GAAAF,IAAA,CAAA,CAAA,CAAA;AAEpB,YAAA,CAAClI,IAAG,IAAK6D,UAAU,MAAM+D,MAAI,CAAC5G,OAAO,CAACtD,KAAK,CAACyK,KAAI,GAAIA,KAAI,GAAIP,MAAI,CAACxG,YAAW,GAAI+G,KAAI,GAAI,IAAG,GAAIP,MAAI,CAAC5J,WAAU,IAAK4J,MAAI,CAACxG,YAAW,GAAI,IAAI,CAAC;AAC5I,YAAA,CAACpB,IAAG,IAAK6H,QAAQ,MAAMD,MAAI,CAAC5G,OAAO,CAACtD,KAAK,CAAC0K,MAAK,GAAIA,MAAK,GAAIR,MAAI,CAACvG,aAAY,GAAI+G,MAAK,GAAI,IAAG,GAAIR,MAAI,CAAC7J,YAAW,IAAK6J,MAAI,CAACvG,aAAY,GAAI,IAAI,CAAC;AAEhJuG,YAAAA,MAAI,CAAC3G,OAAO,CAACvD,KAAK,CAACoK,SAAQ,GAAIF,MAAI,CAAC3G,OAAO,CAACvD,KAAK,CAACqK,QAAO,GAAI,EAAE;AAC/DH,YAAAA,MAAI,CAAC3G,OAAO,CAACvD,KAAK,CAACsK,QAAO,GAAI,EAAE;AAChCJ,YAAAA,MAAI,CAAC5G,OAAO,CAACtD,KAAK,CAACuK,OAAM,GAAI,EAAE;AACnC,UAAA;AACJ,QAAA,CAAC,CAAC;AACN,MAAA;IACJ,CAAC;IACDd,OAAO,EAAA,SAAPA,OAAOA,GAAmB;MAAA,IAAAkB,KAAA,EAAAC,WAAA;AAAA,MAAA,IAAlBjI,2EAAO,CAAC;MAAA,IAAEkI,MAAM,GAAA5E,SAAA,CAAA1B,MAAA,GAAA,CAAA,GAAA0B,SAAA,MAAAC,SAAA;MACpB,OAAO,IAAI,CAACjG,QAAQmI,IAAI,CAAC6B,GAAG,CAACY,SAAS,CAAA,CAAAF,KAAA,GAAC,IAAI,CAAC5J,OAAM,IAAK,IAAI,CAACd,KAAK,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA0K,KAAA,KAAA,MAAA,GAAA,MAAA,GAA9BA,KAAA,CAAiCpG,MAAK,KAAK,CAAA,GAAI,CAAA,CAAAqG,WAAA,GAAA,IAAI,CAAC3K,KAAK,cAAA2K,WAAA,KAAA,MAAA,GAAA,MAAA,GAAVA,WAAA,CAAYrG,MAAK,KAAK,CAAC,EAAE5B,IAAI,CAAA,GAAI,CAAC;IAC3H,CAAC;IACDoE,kBAAkB,EAAA,SAAlBA,kBAAkBA,GAAG;MACjB,IAAI,IAAI,CAACxD,OAAO,EAAE;AACd,QAAA,IAAMvD,KAAI,GAAI8K,gBAAgB,CAAC,IAAI,CAACvH,OAAO,CAAC;QAC5C,IAAMP,IAAG,GAAI+H,UAAU,CAAC/K,KAAK,CAACgL,WAAW,CAAA,GAAI5C,IAAI,CAAC6C,GAAG,CAACF,UAAU,CAAC/K,KAAK,CAACgD,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QACrF,IAAMkI,KAAI,GAAIH,UAAU,CAAC/K,KAAK,CAACmL,YAAY,CAAA,GAAI/C,IAAI,CAAC6C,GAAG,CAACF,UAAU,CAAC/K,KAAK,CAACkL,KAAK,CAAA,IAAK,CAAC,EAAE,CAAC,CAAC;QACxF,IAAMnI,GAAE,GAAIgI,UAAU,CAAC/K,KAAK,CAACoL,UAAU,CAAA,GAAIhD,IAAI,CAAC6C,GAAG,CAACF,UAAU,CAAC/K,KAAK,CAAC+C,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,IAAMsI,MAAK,GAAIN,UAAU,CAAC/K,KAAK,CAACsL,aAAa,CAAA,GAAIlD,IAAI,CAAC6C,GAAG,CAACF,UAAU,CAAC/K,KAAK,CAACqL,MAAM,CAAA,IAAK,CAAC,EAAE,CAAC,CAAC;QAE3F,OAAO;AAAErI,UAAAA,IAAI,EAAJA,IAAI;AAAEkI,UAAAA,KAAK,EAALA,KAAK;AAAEnI,UAAAA,GAAG,EAAHA,GAAG;AAAEsI,UAAAA,MAAM,EAANA,MAAM;UAAEE,CAAC,EAAEvI,OAAOkI,KAAK;UAAEM,CAAC,EAAEzI,GAAE,GAAIsI;SAAQ;AACzE,MAAA;MAEA,OAAO;AAAErI,QAAAA,IAAI,EAAE,CAAC;AAAEkI,QAAAA,KAAK,EAAE,CAAC;AAAEnI,QAAAA,GAAG,EAAE,CAAC;AAAEsI,QAAAA,MAAM,EAAE,CAAC;AAAEE,QAAAA,CAAC,EAAE,CAAC;AAAEC,QAAAA,CAAC,EAAE;OAAG;IAC/D,CAAC;IACDlG,OAAO,EAAA,SAAPA,OAAOA,GAAG;AAAA,MAAA,IAAAmG,MAAA,GAAA,IAAA;MACN,IAAI,IAAI,CAACnI,OAAO,EAAE;AACd,QAAA,IAAMhB,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,QAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;AACtC,QAAA,IAAMgG,aAAY,GAAI,IAAI,CAACpI,OAAO,CAACoI,aAAa;AAChD,QAAA,IAAMjB,KAAI,GAAI,IAAI,CAACnK,yBAAkB,IAAI,CAACgD,OAAO,CAACqF,WAAU,IAAK+C,aAAa,CAAC/C,WAAW,EAAA,IAAA,CAAI;AAC9F,QAAA,IAAM+B,SAAS,IAAI,CAACrK,YAAW,OAAAsL,MAAA,CAAQ,IAAI,CAACrI,OAAO,CAACuF,YAAW,IAAK6C,aAAa,CAAC7C,YAAY,EAAA,IAAA,CAAI;AAClG,QAAA,IAAM+C,OAAM,GAAI,SAAVA,OAAMA,CAAKC,KAAK,EAAEC,MAAM,EAAA;UAAA,OAAML,MAAI,CAACnI,OAAO,CAACtD,KAAK,CAAC6L,KAAK,CAAA,GAAIC,MAAM;QAAA,CAAC;QAEvE,IAAIxJ,IAAG,IAAK6D,UAAU,EAAE;AACpByF,UAAAA,OAAO,CAAC,QAAQ,EAAElB,MAAM,CAAC;AACzBkB,UAAAA,OAAO,CAAC,OAAO,EAAEnB,KAAK,CAAC;AAC3B,QAAA,CAAA,MAAO;AACHmB,UAAAA,OAAO,CAAC,QAAQ,EAAElB,MAAM,CAAC;AAC7B,QAAA;AACJ,MAAA;IACJ,CAAC;IACDlF,aAAa,EAAA,SAAbA,aAAaA,GAAG;AAAA,MAAA,IAAAuG,MAAA,GAAA,IAAA;AACZ,MAAA,IAAM9L,KAAI,GAAI,IAAI,CAACA,KAAK;AAExB,MAAA,IAAIA,KAAK,EAAE;AACP,QAAA,IAAMqC,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,QAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;AACtC,QAAA,IAAMoB,aAAa,IAAI,CAACC,kBAAkB,EAAE;QAC5C,IAAM6E,OAAM,GAAI,SAAVA,OAAMA,CAAKC,KAAK,EAAEC,MAAM,EAAEzE,KAAK,EAAA;AAAA,UAAA,IAAEC,KAAI,GAAArB,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,CAAC;AAAA,UAAA,OAAM8F,MAAI,CAAC3I,WAAU,GAAA4I,aAAA,CAAAA,aAAA,CAAA,EAAA,EAASD,MAAI,CAAC3I,WAAW,CAAA,EAAA6I,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAN,MAAA,CAAWE,KAAK,CAAA,EAAK,CAACC,MAAK,IAAK,EAAE,EAAEvH,MAAK,GAAI8C,KAAI,GAAIC,KAAI,GAAI,IAAG,CAAA,CAAK;QAAA,CAAC;AAEpK,QAAA,IAAIhF,IAAI,EAAE;AACNsJ,UAAAA,OAAO,CAAC,QAAQ,EAAE3L,KAAK,EAAE,IAAI,CAACE,QAAQ,CAAC,CAAC,CAAC,EAAE2G,UAAU,CAAC0E,CAAC,CAAC;UACxDI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC7K,OAAM,IAAKd,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAACE,QAAQ,CAAC,CAAC,CAAC,EAAE2G,UAAU,CAACyE,CAAC,CAAC;AAC9E,QAAA,CAAA,MAAO;AACHpF,UAAAA,UAAS,GAAIyF,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC7K,OAAM,IAAKd,KAAK,EAAE,IAAI,CAACE,QAAQ,EAAE2G,UAAU,CAACyE,CAAC,CAAA,GAAIK,OAAO,CAAC,QAAQ,EAAE3L,KAAK,EAAE,IAAI,CAACE,QAAQ,EAAE2G,UAAU,CAAC0E,CAAC,CAAC;AAC7I,QAAA;AACJ,MAAA;IACJ,CAAC;AACDU,IAAAA,kBAAkB,EAAA,SAAlBA,kBAAkBA,CAACjE,GAAG,EAAE;AAAA,MAAA,IAAAkE,MAAA,GAAA,IAAA;MACpB,IAAI,IAAI,CAAC5I,WAAW,CAAC,IAAI,CAACjC,UAAU,EAAE;AAClC,QAAA,IAAMgB,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,QAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;QACtC,IAAMlD,KAAI,GAAIyF,GAAE,GAAIA,GAAG,CAACzF,QAAQ,IAAI,CAACA,KAAK;AAC1C,QAAA,IAAM4J,qBAAoB,GAAI,SAAxBA,qBAAoBA,CAAKhF,MAAM,EAAEC,KAAK,EAAA;UAAA,OAAKD,MAAK,GAAIC,KAAK;AAAA,QAAA,CAAA;AAC/D,QAAA,IAAMgF,YAAW,GAAI,SAAfA,YAAWA,GAAA;AAAA,UAAA,IAAKC,EAAC,GAAArG,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,CAAC;AAAA,UAAA,IAAEsG,EAAC,GAAAtG,SAAA,CAAA1B,MAAA,GAAA,CAAA,IAAA0B,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAI,CAAC;UAAA,OAAMkG,MAAI,CAAC9I,YAAW,GAAA2I,aAAA,CAAAA,aAAA,CAAA,EAAA,EAASG,MAAI,CAAC9I,YAAY,CAAA,EAAK;AAAEmJ,YAAAA,SAAS,iBAAAb,MAAA,CAAiBW,EAAE,EAAA,MAAA,CAAA,CAAAX,MAAA,CAAOY,EAAE,EAAA,QAAA;AAAS,WAAA,CAAG;QAAA,CAAC;AAE7I,QAAA,IAAIjK,IAAI,EAAE;AACN+J,UAAAA,YAAY,CAACD,qBAAqB,CAAC5J,KAAK,CAACE,IAAI,EAAE,IAAI,CAACvC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAEiM,qBAAqB,CAAC5J,KAAK,CAACC,IAAI,EAAE,IAAI,CAACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,QAAA,CAAA,MAAO;UACH,IAAMsM,YAAW,GAAIL,qBAAqB,CAAC5J,KAAK,EAAE,IAAI,CAACrC,QAAQ,CAAC;AAEhEgG,UAAAA,UAAS,GAAIkG,YAAY,CAACI,YAAY,EAAE,CAAC,CAAA,GAAIJ,YAAY,CAAC,CAAC,EAAEI,YAAY,CAAC;AAC9E,QAAA;AACJ,MAAA;IACJ,CAAC;AACDC,IAAAA,sBAAsB,EAAA,SAAtBA,sBAAsBA,CAACC,KAAK,EAAE;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA;AAC1B,MAAA,IAAMC,MAAK,GAAIF,KAAK,CAACE,MAAM;AAC3B,MAAA,IAAMvK,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,MAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;AACtC,MAAA,IAAMoB,aAAa,IAAI,CAACC,kBAAkB,EAAE;AAC5C,MAAA,IAAM+F,kBAAiB,GAAI,SAArBA,kBAAiBA,CAAK3E,IAAI,EAAEb,KAAK,EAAA;AAAA,QAAA,OAAMa,IAAG,GAAKA,OAAOb,KAAI,GAAIa,IAAG,GAAIb,KAAI,GAAIa,IAAI,GAAI,CAAC;MAAA,CAAC;AAC7F,MAAA,IAAM4E,qBAAoB,GAAI,SAAxBA,qBAAoBA,CAAK5E,IAAI,EAAEd,KAAK,EAAA;QAAA,OAAKe,IAAI,CAACC,KAAK,CAACF,IAAG,IAAKd,KAAI,IAAKc,IAAI,CAAC,CAAC;AAAA,MAAA,CAAA;AAEjF,MAAA,IAAM6E,qBAAoB,GAAI,SAAxBA,qBAAoBA,CAAKC,aAAa,EAAE7F,MAAM,EAAE8F,KAAK,EAAE3D,IAAI,EAAErC,KAAK,EAAEiG,oBAAoB,EAAK;AAC/F,QAAA,OAAOF,aAAY,IAAK/F,QAAQA,KAAI,GAAIiG,oBAAmB,GAAID,QAAQ3D,IAAG,GAAIrC,QAAQE,MAAK,GAAIF,KAAI,GAAI,CAAC;MAC5G,CAAC;MAED,IAAMF,iBAAiB,SAAjBA,eAAkBiG,aAAa,EAAEG,aAAa,EAAEhG,MAAM,EAAE8F,KAAK,EAAE3D,IAAI,EAAErC,KAAK,EAAEiG,oBAAoB,EAAE3D,OAAO,EAAK;AAChH,QAAA,IAAIyD,aAAY,IAAK/F,KAAK,EAAE,OAAO,CAAC;AACpC,QAAA,IAAMmG,UAAS,GAAIjF,IAAI,CAAC6C,GAAG,CAAC,CAAC,EAAEkC,oBAAmB,GAAKF,aAAY,GAAIG,gBAAgBhG,MAAK,GAAI6F,aAAY,GAAI/F,KAAK,GAAI+F,aAAY,GAAIG,aAAY,GAAIhG,MAAK,GAAI6F,aAAY,GAAI,IAAI/F,KAAK,CAAC;QAC5L,IAAMoG,QAAO,GAAIV,MAAI,CAACnD,OAAO,CAAC4D,UAAU,EAAE7D,OAAO,CAAC;QAClD,IAAI6D,aAAaC,QAAQ,EAAE,OAAOA,QAAO,GAAI/D,IAAI,CAAA,KAC5C,OAAO8D,UAAU;MAC1B,CAAC;AAED,MAAA,IAAM/D,aAAY,GAAI,SAAhBA,aAAYA,CAAK2D,aAAa,EAAE7F,MAAM,EAAE8F,KAAK,EAAE3D,IAAI,EAAErC,KAAK,EAAEsC,OAAO,EAAK;QAC1E,IAAI+D,SAAQ,GAAInG,MAAK,GAAImC,IAAG,GAAI,CAAA,GAAIrC,KAAK;QAEzC,IAAI+F,iBAAiB/F,KAAK,EAAE;UACxBqG,SAAQ,IAAKrG,KAAI,GAAI,CAAC;AAC1B,QAAA;AAEA,QAAA,OAAO0F,MAAI,CAACnD,OAAO,CAAC8D,SAAS,EAAE/D,OAAO,CAAC;MAC3C,CAAC;MAED,IAAM/C,YAAYqG,kBAAkB,CAACD,MAAM,CAACpG,SAAS,EAAEK,UAAU,CAAC/D,GAAG,CAAC;MACtE,IAAM4D,UAAS,GAAImG,kBAAkB,CAACD,MAAM,CAAClG,UAAU,EAAEG,UAAU,CAAC9D,IAAI,CAAC;MAEzE,IAAIuE,QAAO,GAAIjF,IAAG,GAAI;AAAEG,QAAAA,IAAI,EAAE,CAAC;AAAEC,QAAAA,IAAI,EAAE;AAAE,OAAA,GAAI,CAAC;AAC9C,MAAA,IAAI8K,OAAM,GAAI,IAAI,CAAC7K,IAAI;MACvB,IAAImB,cAAa,GAAI,KAAK;AAC1B,MAAA,IAAI2J,eAAe,IAAI,CAAC3K,aAAa;AAErC,MAAA,IAAIR,IAAI,EAAE;QACN,IAAMoL,YAAW,GAAI,IAAI,CAAC5K,aAAa,CAACC,GAAE,IAAK0D,SAAS;QACxD,IAAMkH,aAAY,GAAI,IAAI,CAAC7K,aAAa,CAACE,QAAQ2D,UAAU;AAE3D,QAAA,IAAI,CAAC,IAAI,CAACrF,UAAS,IAAM,IAAI,CAACA,UAAS,KAAMoM,YAAW,IAAKC,aAAa,CAAE,EAAE;AAC1E,UAAA,IAAMC,YAAW,GAAI;YAAEnL,IAAI,EAAEsK,qBAAqB,CAACtG,SAAS,EAAE,IAAI,CAACtG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAEuC,IAAI,EAAEqK,qBAAqB,CAACpG,UAAU,EAAE,IAAI,CAACxG,QAAQ,CAAC,CAAC,CAAC;WAAG;AAC5I,UAAA,IAAM0N,eAAe;AACjBpL,YAAAA,IAAI,EAAEuK,qBAAqB,CAACY,YAAY,CAACnL,IAAI,EAAE,IAAI,CAACD,KAAK,CAACC,IAAI,EAAE,IAAI,CAACE,IAAI,CAACF,IAAI,EAAE,IAAI,CAACI,kBAAkB,CAACJ,IAAI,EAAE,IAAI,CAACQ,mBAAmB,CAAC,CAAC,CAAC,EAAEyK,YAAY,CAAC;AACxJhL,YAAAA,IAAI,EAAEsK,qBAAqB,CAACY,YAAY,CAAClL,IAAI,EAAE,IAAI,CAACF,KAAK,CAACE,IAAI,EAAE,IAAI,CAACC,IAAI,CAACD,IAAI,EAAE,IAAI,CAACG,kBAAkB,CAACH,IAAI,EAAE,IAAI,CAACO,mBAAmB,CAAC,CAAC,CAAC,EAAE0K,aAAa;WAC3J;AAEDpG,UAAAA,WAAW;AACP9E,YAAAA,IAAI,EAAEuE,cAAc,CAAC4G,YAAY,CAACnL,IAAI,EAAEoL,YAAY,CAACpL,IAAI,EAAE,IAAI,CAACD,KAAK,CAACC,IAAI,EAAE,IAAI,CAACE,IAAI,CAACF,IAAI,EAAE,IAAI,CAACI,kBAAkB,CAACJ,IAAI,EAAE,IAAI,CAACQ,mBAAmB,CAAC,CAAC,CAAC,EAAEyK,YAAY,CAAC;AACpKhL,YAAAA,IAAI,EAAEsE,cAAc,CAAC4G,YAAY,CAAClL,IAAI,EAAEmL,YAAY,CAACnL,IAAI,EAAE,IAAI,CAACF,KAAK,CAACE,IAAI,EAAE,IAAI,CAACC,IAAI,CAACD,IAAI,EAAE,IAAI,CAACG,kBAAkB,CAACH,IAAI,EAAE,IAAI,CAACO,mBAAmB,CAAC,CAAC,CAAC,EAAE0K,aAAa,EAAE,IAAI;WAC7K;AACDH,UAAAA,UAAU;AACN/K,YAAAA,IAAI,EAAE6G,aAAa,CAACsE,YAAY,CAACnL,IAAI,EAAE8E,QAAQ,CAAC9E,IAAI,EAAE,IAAI,CAACE,IAAI,CAACF,IAAI,EAAE,IAAI,CAACI,kBAAkB,CAACJ,IAAI,EAAE,IAAI,CAACQ,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAChIP,YAAAA,IAAI,EAAE4G,aAAa,CAACsE,YAAY,CAAClL,IAAI,EAAE6E,QAAQ,CAAC7E,IAAI,EAAE,IAAI,CAACC,IAAI,CAACD,IAAI,EAAE,IAAI,CAACG,kBAAkB,CAACH,IAAI,EAAE,IAAI,CAACO,mBAAmB,CAAC,CAAC,CAAC,EAAE,IAAI;WACxI;AAEDa,UAAAA,cAAa,GAAIyD,QAAQ,CAAC9E,IAAG,KAAM,IAAI,CAACD,KAAK,CAACC,IAAG,IAAK+K,OAAO,CAAC/K,IAAG,KAAM,IAAI,CAACE,IAAI,CAACF,IAAG,IAAK8E,QAAQ,CAAC7E,IAAG,KAAM,IAAI,CAACF,KAAK,CAACE,IAAG,IAAK8K,OAAO,CAAC9K,IAAG,KAAM,IAAI,CAACC,IAAI,CAACD,IAAG,IAAK,IAAI,CAACoB,cAAc;AACpL2J,UAAAA,YAAW,GAAI;AAAE1K,YAAAA,GAAG,EAAE0D,SAAS;AAAEzD,YAAAA,IAAI,EAAE2D;WAAY;AACvD,QAAA;AACJ,MAAA,CAAA,MAAO;AACH,QAAA,IAAM8B,SAAQ,GAAItC,UAAS,GAAIQ,aAAaF,SAAS;AACrD,QAAA,IAAMqH,mBAAkB,GAAI,IAAI,CAAChL,aAAY,IAAK2F,SAAS;QAE3D,IAAI,CAAC,IAAI,CAACnH,UAAS,IAAM,IAAI,CAACA,UAAS,IAAKwM,mBAAoB,EAAE;UAC9D,IAAMF,cAAW,GAAIb,qBAAqB,CAACtE,SAAS,EAAE,IAAI,CAACtI,QAAQ,CAAC;UACpE,IAAM0N,cAAW,GAAIb,qBAAqB,CAACY,cAAY,EAAE,IAAI,CAACpL,KAAK,EAAE,IAAI,CAACG,IAAI,EAAE,IAAI,CAACE,kBAAkB,EAAE,IAAI,CAACI,mBAAmB,EAAE6K,mBAAmB,CAAC;UAEvJvG,QAAO,GAAIP,cAAc,CAAC4G,cAAY,EAAEC,cAAY,EAAE,IAAI,CAACrL,KAAK,EAAE,IAAI,CAACG,IAAI,EAAE,IAAI,CAACE,kBAAkB,EAAE,IAAI,CAACI,mBAAmB,EAAE6K,mBAAmB,CAAC;AACpJN,UAAAA,OAAM,GAAIlE,aAAa,CAACsE,cAAY,EAAErG,QAAQ,EAAE,IAAI,CAAC5E,IAAI,EAAE,IAAI,CAACE,kBAAkB,EAAE,IAAI,CAACI,mBAAmB,CAAC;AAC7Ga,UAAAA,cAAa,GAAIyD,QAAO,KAAM,IAAI,CAAC/E,KAAI,IAAKgL,OAAM,KAAM,IAAI,CAAC7K,QAAQ,IAAI,CAACmB,cAAc;AACxF2J,UAAAA,eAAehF,SAAS;AAC5B,QAAA;AACJ,MAAA;MAEA,OAAO;AACHjG,QAAAA,KAAK,EAAE+E,QAAQ;AACf5E,QAAAA,IAAI,EAAE6K,OAAO;AACb1J,QAAAA,cAAc,EAAdA,cAAc;AACd2E,QAAAA,SAAS,EAAEgF;OACd;IACL,CAAC;AACDM,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACpB,KAAK,EAAE;AAClB,MAAA,IAAAqB,qBAAA,GAAmD,IAAI,CAACtB,sBAAsB,CAACC,KAAK,CAAC;QAA7EnK,KAAK,GAAAwL,qBAAA,CAALxL,KAAK;QAAEG,IAAI,GAAAqL,qBAAA,CAAJrL,IAAI;QAAEmB,cAAc,GAAAkK,qBAAA,CAAdlK,cAAc;QAAE2E,kCAAAA;AAErC,MAAA,IAAI3E,cAAc,EAAE;AAChB,QAAA,IAAMmK,QAAO,GAAI;AAAEzL,UAAAA,KAAK,EAALA,KAAK;AAAEG,UAAAA,IAAG,EAAHA;SAAM;AAEhC,QAAA,IAAI,CAACuJ,kBAAkB,CAAC+B,QAAQ,CAAC;QAEjC,IAAI,CAACzL,KAAI,GAAIA,KAAK;QAClB,IAAI,CAACG,IAAG,GAAIA,IAAI;QAChB,IAAI,CAACG,aAAY,GAAI2F,SAAS;AAE9B,QAAA,IAAI,CAACiB,KAAK,CAAC,qBAAqB,EAAEuE,QAAQ,CAAC;QAE3C,IAAI,IAAI,CAACtN,QAAQ,IAAI,CAACuN,aAAa,CAAC1L,KAAK,CAAC,EAAE;UAAA,IAAA2L,YAAA,EAAAC,YAAA;AACxC,UAAA,IAAMrK,gBAAgB;AAClBvB,YAAAA,KAAK,EAAE,IAAI,CAACnB,IAAG,GAAI+G,IAAI,CAAC6B,GAAG,CAAC,IAAI,CAACoE,cAAc,CAAC7L,KAAK,CAAA,GAAI,IAAI,CAACnB,IAAI,EAAE,CAAC,CAAA,CAAA8M,YAAA,GAAA,IAAI,CAAClO,KAAK,MAAA,IAAA,IAAAkO,YAAA,uBAAVA,YAAA,CAAY5J,WAAU,CAAC,IAAI,IAAI,CAAClD,IAAI,CAAA,GAAImB,KAAK;AAClHG,YAAAA,IAAI,EAAEyF,IAAI,CAAC6B,GAAG,CAAC,IAAI,CAAC5I,IAAG,GAAI,CAAC,IAAI,CAACgN,cAAc,CAAC7L,KAAK,IAAI,CAAC,IAAI,IAAI,CAACnB,IAAG,GAAIsB,IAAI,EAAE,EAAAyL,YAAA,GAAA,IAAI,CAACnO,KAAK,cAAAmO,YAAA,KAAA,MAAA,GAAA,MAAA,GAAVA,YAAA,CAAY7J,MAAK,KAAK,CAAC;WAC1G;UACD,IAAM+J,kBAAiB,GAAI,IAAI,CAACvK,aAAa,CAACvB,KAAI,KAAMuB,aAAa,CAACvB,KAAI,IAAK,IAAI,CAACuB,aAAa,CAACpB,IAAG,KAAMoB,aAAa,CAACpB,IAAI;UAE7H2L,kBAAiB,IAAK,IAAI,CAAC5E,KAAK,CAAC,WAAW,EAAE3F,aAAa,CAAC;UAC5D,IAAI,CAACA,aAAY,GAAIA,aAAa;AACtC,QAAA;AACJ,MAAA;IACJ,CAAC;AACDwK,IAAAA,QAAQ,EAAA,SAARA,QAAQA,CAAC5B,KAAK,EAAE;AAAA,MAAA,IAAA6B,MAAA,GAAA,IAAA;AACZ,MAAA,IAAI,CAAC9E,KAAK,CAAC,QAAQ,EAAEiD,KAAK,CAAC;MAE3B,IAAI,IAAI,CAAClM,KAAK,EAAE;QACZ,IAAI,IAAI,CAAC+C,aAAa,EAAE;AACpBiL,UAAAA,YAAY,CAAC,IAAI,CAACjL,aAAa,CAAC;AACpC,QAAA;AAEA,QAAA,IAAI,IAAI,CAAC0K,aAAa,EAAE,EAAE;UACtB,IAAI,CAAC,IAAI,CAAChL,SAAQ,IAAK,IAAI,CAAChC,UAAU,EAAE;AACpC,YAAA,IAAAwN,sBAAA,GAA2B,IAAI,CAAChC,sBAAsB,CAACC,KAAK,CAAC;cAArD7I,cAAa,GAAA4K,sBAAA,CAAb5K,cAAa;AACrB,YAAA,IAAM6K,OAAM,GAAI7K,cAAa,KAAM,IAAI,CAACzC,IAAG,GAAI,IAAI,CAAC6M,aAAa,EAAC,GAAI,KAAK,CAAC;AAE5ES,YAAAA,OAAM,KAAM,IAAI,CAACzL,SAAQ,GAAI,IAAI,CAAC;AACtC,UAAA;AAEA,UAAA,IAAI,CAACM,aAAY,GAAIoL,UAAU,CAAC,YAAM;AAClCJ,YAAAA,MAAI,CAACT,cAAc,CAACpB,KAAK,CAAC;AAE1B,YAAA,IAAI6B,MAAI,CAACtL,SAAQ,IAAKsL,MAAI,CAACtN,UAAS,KAAM,CAACsN,MAAI,CAAC7N,IAAG,IAAK6N,MAAI,CAACxN,OAAM,KAAMkF,SAAS,CAAC,EAAE;cACjFsI,MAAI,CAACtL,SAAQ,GAAI,KAAK;AACtBsL,cAAAA,MAAI,CAAC5L,IAAG,GAAI4L,MAAI,CAACH,cAAc,EAAE;AACrC,YAAA;AACJ,UAAA,CAAC,EAAE,IAAI,CAAC5N,KAAK,CAAC;AAClB,QAAA;AACJ,MAAA,CAAA,MAAO;AACH,QAAA,IAAI,CAACsN,cAAc,CAACpB,KAAK,CAAC;AAC9B,MAAA;IACJ,CAAC;IACDkC,QAAQ,EAAA,SAARA,QAAQA,GAAG;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA;MACP,IAAI,IAAI,CAACrL,aAAa,EAAE;AACpBgL,QAAAA,YAAY,CAAC,IAAI,CAAChL,aAAa,CAAC;AACpC,MAAA;AAEA,MAAA,IAAI,CAACA,aAAY,GAAImL,UAAU,CAAC,YAAM;AAClC,QAAA,IAAI3J,SAAS,CAAC6J,MAAI,CAACxL,OAAO,CAAC,EAAE;AACzB,UAAA,IAAMhB,OAAOwM,MAAI,CAACvM,MAAM,EAAE;AAC1B,UAAA,IAAM4H,QAAO,GAAI2E,MAAI,CAACrJ,UAAU,EAAE;AAClC,UAAA,IAAMU,aAAa2I,MAAI,CAACpJ,YAAY,EAAE;AACtC,UAAA,IAAAqJ,KAAA,GAAwB,CAAC5J,QAAQ,CAAC2J,MAAI,CAACxL,OAAO,CAAC,EAAE8B,SAAS,CAAC0J,MAAI,CAACxL,OAAO,CAAC,CAAC;AAAlEmH,YAAAA,KAAK,GAAAsE,KAAA,CAAA,CAAA,CAAA;AAAErE,YAAAA,MAAM,GAAAqE,KAAA,CAAA,CAAA,CAAA;AACpB,UAAA,IAAOC,WAAW,GAAmBvE,UAAUqE,MAAI,CAACpL,YAAY;AAA5CuL,YAAAA,YAAY,GAAkCvE,MAAK,KAAMoE,MAAI,CAACnL,aAAa;AAC/F,UAAA,IAAMuL,SAAS5M,IAAG,GAAI0M,WAAU,IAAKC,YAAW,GAAI9I,aAAa6I,cAAc7E,WAAW8E,YAAW,GAAI,KAAK;AAE9G,UAAA,IAAIC,MAAM,EAAE;AACRJ,YAAAA,MAAI,CAAC7L,sBAAsB6L,MAAI,CAACtO,iBAAiB;YACjDsO,MAAI,CAACpL,YAAW,GAAI+G,KAAK;YACzBqE,MAAI,CAACnL,aAAY,GAAI+G,MAAM;YAC3BoE,MAAI,CAAClL,sBAAsBuB,QAAQ,CAAC2J,MAAI,CAACvL,OAAO,CAAC;YACjDuL,MAAI,CAACjL,uBAAuBuB,SAAS,CAAC0J,MAAI,CAACvL,OAAO,CAAC;YAEnDuL,MAAI,CAACtK,IAAI,EAAE;AACf,UAAA;AACJ,QAAA;AACJ,MAAA,CAAC,EAAE,IAAI,CAAC9D,WAAW,CAAC;IACxB,CAAC;IACD2E,kBAAkB,EAAA,SAAlBA,kBAAkBA,GAAG;AAAA,MAAA,IAAA8J,MAAA,GAAA,IAAA;AACjB,MAAA,IAAI,CAAC,IAAI,CAACnL,cAAc,EAAE;QACtB,IAAI,CAACA,cAAa,GAAI,IAAI,CAAC6K,QAAQ,CAACO,IAAI,CAAC,IAAI,CAAC;QAE9CC,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACtL,cAAc,CAAC;QACtDqL,MAAM,CAACC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAACtL,cAAc,CAAC;AAEjE,QAAA,IAAI,CAACC,iBAAiB,IAAIsL,cAAc,CAAC,YAAM;UAC3CJ,MAAI,CAACN,QAAQ,EAAE;AACnB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC5K,cAAc,CAACuL,OAAO,CAAC,IAAI,CAAClM,OAAO,CAAC;AAC7C,MAAA;IACJ,CAAC;IACDyB,oBAAoB,EAAA,SAApBA,oBAAoBA,GAAG;MACnB,IAAI,IAAI,CAACf,cAAc,EAAE;QACrBqL,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAACzL,cAAc,CAAC;QACzDqL,MAAM,CAACI,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAACzL,cAAc,CAAC;QACpE,IAAI,CAACA,iBAAiB,IAAI;AAC9B,MAAA;MAEA,IAAI,IAAI,CAACC,cAAc,EAAE;AACrB,QAAA,IAAI,CAACA,cAAc,CAACyL,UAAU,EAAE;QAChC,IAAI,CAACzL,iBAAiB,IAAI;AAC9B,MAAA;IACJ,CAAC;AACD0L,IAAAA,UAAU,EAAA,SAAVA,UAAUA,CAACC,aAAa,EAAE;MACtB,IAAMC,KAAI,GAAI,CAAC,IAAI,CAAC5P,KAAI,IAAK,EAAE,EAAEsE,MAAM;MACvC,IAAMuB,KAAI,GAAI,IAAI,CAACvD,MAAM,EAAC,GAAI,IAAI,CAACC,KAAK,CAACC,IAAG,GAAImN,aAAY,GAAI,IAAI,CAACpN,KAAI,GAAIoN,aAAa;MAE1F,OAAO;AACH9J,QAAAA,KAAK,EAALA,KAAK;AACL+J,QAAAA,KAAK,EAALA,KAAK;QACLrN,KAAK,EAAEsD,KAAI,KAAM,CAAC;AAClBnD,QAAAA,IAAI,EAAEmD,KAAI,KAAM+J,KAAI,GAAI,CAAC;AACzBC,QAAAA,IAAI,EAAEhK,KAAI,GAAI,CAAA,KAAM,CAAC;AACrBiK,QAAAA,GAAG,EAAEjK,KAAI,GAAI,CAAA,KAAM;OACtB;IACL,CAAC;AACDkK,IAAAA,gBAAgB,WAAhBA,gBAAgBA,CAAClK,KAAK,EAAEmK,UAAU,EAAE;AAChC,MAAA,IAAIJ,KAAI,GAAI,IAAI,CAAC1M,SAAS,CAACoB,MAAM;AAEjC,MAAA,OAAAyH,aAAA,CAAA;AACIlG,QAAAA,KAAK,EAALA,KAAK;AACL+J,QAAAA,KAAK,EAALA,KAAK;QACLrN,KAAK,EAAEsD,KAAI,KAAM,CAAC;AAClBnD,QAAAA,IAAI,EAAEmD,KAAI,KAAM+J,KAAI,GAAI,CAAC;AACzBC,QAAAA,IAAI,EAAEhK,KAAI,GAAI,CAAA,KAAM,CAAC;AACrBiK,QAAAA,GAAG,EAAEjK,KAAI,GAAI,CAAA,KAAM;AAAC,OAAA,EACjBmK,UAAS,CAAA;IAEpB,CAAC;AACD5B,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAAC7L,KAAK,EAAE;AAClB,MAAA,OAAO4F,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC7F,KAAI,KAAA,IAAA,IAAJA,KAAI,KAAA,MAAA,GAAJA,KAAI,GAAK,IAAI,CAACA,KAAK,IAAI,IAAI,CAACS,mBAAkB,GAAI,CAAC,KAAK,IAAI,CAAC5B,IAAG,IAAK,CAAC,CAAC,CAAC;IAChG,CAAC;AACD6M,IAAAA,aAAa,EAAA,SAAbA,aAAaA,CAAC1L,KAAK,EAAE;AACjB,MAAA,OAAO,IAAI,CAACnB,QAAQ,CAAC,IAAI,CAACV,IAAG,GAAI,IAAI,CAACiC,IAAG,KAAM,IAAI,CAACyL,cAAc,CAAC7L,kBAAAA,mBAAAA,QAAS,IAAI,CAACA,KAAK,CAAA,GAAI,IAAI;IAClG,CAAC;AACD0C,IAAAA,YAAY,EAAA,SAAZA,YAAYA,CAACgL,EAAE,EAAE;AACb,MAAA,IAAI,CAAC3M,UAAU2M,MAAM,IAAI,CAAC3M,WAAW4M,UAAU,CAAC,IAAI,CAAC7M,OAAO,EAAE,6BAA6B,CAAC;IAChG,CAAC;AACD8M,IAAAA,UAAU,EAAA,SAAVA,UAAUA,CAACF,EAAE,EAAE;MACX,IAAI,CAAC5M,OAAM,GAAI4M,EAAE;IACrB,CAAC;AACDG,IAAAA,UAAU,EAAA,SAAVA,UAAUA,CAACH,EAAE,EAAE;MACX,IAAI,CAAC3M,OAAM,GAAI2M,EAAE;AACrB,IAAA;GACH;AACDI,EAAAA,QAAQ,EAAE;IACNC,cAAc,EAAA,SAAdA,cAAcA,GAAG;AACb,MAAA,OAAO,CACH,mBAAmB,EACnB,IAAI,SAAM,EACV;QACI,0BAA0B,EAAE,IAAI,CAACnP,MAAM;AACvC,QAAA,sCAAsC,EAAE,IAAI,CAACmB,MAAM,EAAE;AACrD,QAAA,kDAAkD,EAAE,IAAI,CAACmD,YAAY;AACzE,OAAA,CACH;IACL,CAAC;IACD8K,YAAY,EAAA,SAAZA,YAAYA,GAAG;MACX,OAAO,CACH,2BAA2B,EAC3B;QACI,2BAA2B,EAAE,IAAI,CAACtN;AACtC,OAAA,CACH;IACL,CAAC;IACDuN,WAAW,EAAA,SAAXA,WAAWA,GAAG;MACV,OAAO,CACH,0BAA0B,EAC1B;AACI,QAAA,+BAA+B,EAAE,CAAC,IAAI,CAACC,MAAM,CAACC;AAClD,OAAA,CACH;IACL,CAAC;IACDC,WAAW,EAAA,SAAXA,WAAWA,GAAG;AAAA,MAAA,IAAAC,OAAA,GAAA,IAAA;MACV,IAAI,IAAI,CAAC5Q,KAAI,IAAK,CAAC,IAAI,CAACiD,SAAS,EAAE;AAC/B,QAAA,IAAI,IAAI,CAACX,MAAM,EAAE,EAAE,OAAO,IAAI,CAACtC,KAAK,CAAC6Q,KAAK,CAAC,IAAI,CAACxP,UAAS,GAAI,IAAI,IAAI,CAACkB,KAAK,CAACC,IAAI,EAAE,IAAI,CAACE,IAAI,CAACF,IAAI,CAAC,CAACmH,GAAG,CAAC,UAACmH,IAAI,EAAA;UAAA,OAAMF,OAAI,CAAC9P,OAAM,GAAIgQ,OAAOA,IAAI,CAACD,KAAK,CAACD,OAAI,CAACvP,UAAS,GAAI,IAAIuP,OAAI,CAACrO,KAAK,CAACE,IAAI,EAAEmO,OAAI,CAAClO,IAAI,CAACD,IAAI,CAAC;AAAA,QAAA,CAAC,CAAC,CAAA,KACrM,IAAI,IAAI,CAACgD,YAAY,EAAC,IAAK,IAAI,CAAC3E,OAAO,EAAE,OAAO,IAAI,CAACd,KAAK,CAAA,KAC1D,OAAO,IAAI,CAACA,KAAK,CAAC6Q,KAAK,CAAC,IAAI,CAACxP,UAAS,GAAI,CAAA,GAAI,IAAI,CAACkB,KAAK,EAAE,IAAI,CAACG,IAAI,CAAC;AAC7E,MAAA;AAEA,MAAA,OAAO,EAAE;IACb,CAAC;IACDqO,UAAU,EAAA,SAAVA,UAAUA,GAAG;AACT,MAAA,OAAO,IAAI,CAAC9N,SAAQ,GAAK,IAAI,CAACpC,iBAAiB,IAAI,CAACqC,YAAY,EAAE,GAAI,IAAI,CAACyN,WAAW;IAC1F,CAAC;IACDK,aAAa,EAAA,SAAbA,aAAaA,GAAG;MACZ,IAAI,IAAI,CAAClQ,OAAO,EAAE;AACd,QAAA,IAAMuB,OAAO,IAAI,CAACC,MAAM,EAAE;AAC1B,QAAA,IAAM4D,aAAa,IAAI,CAACT,YAAY,EAAE;QAEtC,IAAIpD,IAAG,IAAK6D,UAAU,EAAE;UACpB,OAAO,IAAI,CAACjD,SAAQ,IAAK,IAAI,CAACpC,cAAa,GAAKwB,IAAG,GAAI,IAAI,CAACa,SAAS,CAAC,CAAC,CAAA,GAAI,IAAI,CAACA,SAAS,GAAI,IAAI,CAACpC,OAAO,CAAC+P,KAAK,CAACxO,IAAG,GAAI,IAAI,CAACE,KAAK,CAACE,IAAG,GAAI,IAAI,CAACF,KAAK,EAAEF,IAAG,GAAI,IAAI,CAACK,IAAI,CAACD,IAAG,GAAI,IAAI,CAACC,IAAI,CAAC;AAC3L,QAAA;AACJ,MAAA;MAEA,OAAO,IAAI,CAAC5B,OAAO;AACvB,IAAA;GACH;AACDmQ,EAAAA,UAAU,EAAE;AACRC,IAAAA,WAAW,EAAEA;AACjB;AACJ,CAAC;;;;;UCtsBoBC,IAAA,CAAAvQ,QAAQ,IACrBwQ,SAAA,EAAA,EAAAC,kBAAA,CAmCK,OAnCLC,UAAA,CAmCK;;IAnCCC,GAAG,EAAEC,QAAA,CAAArB,UAAU;IAAG,OAAA,EAAOqB,QAAA,CAAAlB,cAAc;IAAGpP,QAAQ,EAAEiQ,IAAA,CAAAjQ,QAAQ;IAAGnB,KAAK,EAAEoR,IAAA,CAAApR,KAAK;IAAGuO,QAAM;aAAEkD,QAAA,CAAAlD,QAAA,IAAAkD,QAAA,CAAAlD,QAAA,CAAAmD,KAAA,CAAAD,QAAA,EAAAxL,SAAA,CAAQ;IAAA,CAAA;KAAUmL,IAAA,CAAAO,IAAI,CAAA,MAAA,CAAA,CAAA,EAAA,CAC9GC,UAAA,CAsBMR,IAAA,CAAAV,MAAA,EAAA,SAAA,EAAA;IApBDmB,UAAU,EAAEJ,QAAA,CAAAjB,YAAY;IACxBvQ,KAAK,EAAEwR,QAAA,CAAAb,WAAW;IAClBkB,cAAc,EAAEL,QAAA,CAAA9B,UAAU;IAC1B3O,OAAO,EAAE+Q,KAAA,CAAA7O,SAAS;IAClB8M,gBAAgB,EAAEyB,QAAA,CAAAzB,gBAAgB;IAClC7P,QAAQ,EAAEiR,IAAA,CAAAjR,QAAQ;IAClBsC,IAAI,EAAEgP,QAAA,CAAAT,UAAU;IAChBjQ,OAAO,EAAE0Q,QAAA,CAAAR,aAAa;IACtBZ,UAAU,EAAEoB,QAAA,CAAApB,UAAU;IACtBjN,WAAW,EAAE2O,KAAA,CAAA3O,WAAW;IACxBC,YAAY,EAAE0O,KAAA,CAAA1O,YAAY;AAC1B8G,IAAAA,QAAQ,EAAEsH,QAAA,CAAAhM,UAAU,EAAA;AACpBU,IAAAA,UAAU,EAAEsL,QAAA,CAAA/L,YAAY,EAAA;AACxBpD,IAAAA,IAAI,EAAEmP,QAAA,CAAAlP,MAAM;KAfjB,YAAA;AAAA,IAAA,OAsBM,CALFyP,kBAAA,CAIK,OAJLT,UAAA,CAIK;MAJCC,GAAG,EAAEC,QAAA,CAAApB,UAAU;MAAG,OAAA,EAAOoB,QAAA,CAAAjB,YAAY;MAAGxQ,KAAK,EAAE+R,KAAA,CAAA1O;OAAsB+N,IAAA,CAAAa,GAAG,CAAA,SAAA,CAAA,CAAA,EAAA,EAC1EZ,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA,CAEUY,QAAA,EAAA,IAAA,EAAAC,UAAA,CAFwBV,QAAA,CAAAb,WAAW,EAAA,UAA3BG,IAAI,EAAEjL,KAAK,EAAA;aACzB8L,UAAA,CAAkER,IAAA,CAAAV,MAAA,EAAA,MAAA,EAAA;aADjB5K,KAAK;AACnCiL,QAAAA,IAAI,EAAEA,IAAI;AAAGnL,QAAAA,OAAO,EAAE6L,QAAA,CAAA9B,UAAU,CAAC7J,KAAK;;;MAI1DsL,IAAA,CAAAnQ,UAAU,IAArBoQ,SAAA,EAAA,EAAAC,kBAAA,CAAyG,OAAzGC,UAAA,CAAyG;;AAAlF,IAAA,OAAA,EAAM,0BAAyB;IAAGvR,KAAK,EAAE+R,KAAA,CAAA3O;KAAqBgO,IAAA,CAAAa,GAAG,CAAA,QAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mCAC5Eb,IAAA,CAAAtQ,kBAAkBsQ,IAAA,CAAAlQ,cAAc6Q,KAAA,CAAA7O,SAAS,IAArDmO,SAAA,EAAA,EAAAC,kBAAA,CASK,OATLC,UAAA,CASK;;AATmD,IAAA,OAAA,EAAOE,QAAA,CAAAhB;KAAqBW,IAAA,CAAAa,GAAG,CAAA,QAAA,CAAA,CAAA,EAAA,CACnEb,IAAA,CAAAV,UAAUU,IAAA,CAAAV,MAAM,CAACC,MAAM,IACnCU,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA,CAEUY,QAAA,EAAA;AAAAE,IAAAA,GAAA,EAAA;GAAA,EAAAD,UAAA,CAFqBJ,KAAA,CAAA5O,SAAS,EAAA,UAAtBkP,CAAC,EAAEvM,KAAK,EAAA;WACtB8L,UAAA,CAAiHR,IAAA,CAAAV,MAAA,EAAA,QAAA,EAAA;WADrE5K,KAAK;AAC5BF,MAAAA,OAAO,EAAE6L,yBAAgB,CAAC3L,KAAK,EAAE2L,QAAA,CAAAlP,MAAM,EAAA,IAAA;AAAA+P,QAAAA,OAAA,EAAiBlB,IAAA,CAAAmB,oBAAoB,CAAC7P;OAAG;;4CAG7GkP,UAAA,CAEMR,gCAFN,YAAA;AAAA,IAAA,OAEM,CADFoB,WAAA,CAAsFC,wBAAtFlB,UAAA,CAAsF;AAAzEmB,MAAAA,IAAG,EAAH,EAAG;MAAE,OAAA,EAAM;OAAyCtB,IAAA,CAAAa,GAAG,CAAA,aAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA;8EAKpFX,kBAAA,CAGUY,QAAA,EAAA;AAAAE,IAAAA,GAAA,EAAA;AAAA,GAAA,EAAA,CAFNR,UAAA,CAAYR,IAAA,CAAAV,MAAA,EAAA,SAAA,CAAA,EACZkB,UAAA,CAAiFR,IAAA,CAAAV,MAAA,EAAA,SAAA,EAAA;IAA3DzQ,KAAK,EAAEmR,IAAA,CAAAnR,KAAK;IAAGwC,IAAI,EAAE2O,IAAA,CAAAnR,KAAK;IAAGc,OAAO,EAAE0Q,QAAA,CAAAR;;;;;;;;"}