@apia/charts 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/charts/util/parseMargin.ts","../src/charts/util/ColoredLegendItem.tsx","../src/charts/util/NumberedLegendItem.tsx","../src/charts/util/LegendContainer.tsx","../src/charts/ChartContext.tsx","../src/charts/horizontalBars/Bar.tsx","../src/charts/util/getBarColor.tsx","../src/charts/util/useChartStyles.ts","../src/charts/horizontalBars/HorizontalBars.tsx","../src/charts/pie/Slice.tsx","../src/charts/pie/usePieAnimation.ts","../src/charts/util/ChartSelector.tsx","../src/charts/pie/Pie.tsx","../src/charts/verticalBars/Bar.tsx","../src/charts/verticalBars/VerticalBars.tsx","../src/charts/linear/Node.tsx","../src/charts/linear/LineChart.tsx","../src/charts/waterfallBars/WaterfallBar.tsx","../src/charts/waterfallBars/WaterfallBars.tsx","../src/charts/ChartRenderer.tsx","../src/charts/util/EmptyGrid.tsx","../src/widgets/scale/Scale.tsx","../src/widgets/speedMeter/SpeedMeter.tsx","../src/widgets/tLight/TLight.tsx","../src/widgets/oxford/Oxford.tsx","../src/widgets/counter/Counter.tsx","../src/widgets/ring/Ring.tsx","../src/widgets/thermometer/util.ts","../src/widgets/custom/util.ts","../src/widgets/custom/useCustomWidget.ts","../src/widgets/thermometer/Thermometer.tsx","../src/widgets/WidgetContainer.tsx"],"sourcesContent":["import { TChartRendererProps } from '../types';\n\nexport function parseMargin(\n margin: TChartRendererProps['margin'] = {\n left: 100,\n right: 50,\n top: 50,\n bottom: 70,\n },\n) {\n return typeof margin === 'number'\n ? { left: margin, right: margin, top: margin, bottom: margin }\n : margin;\n}\n","import { SimpleButton } from '@apia/components';\nimport { icons } from '@apia/icons';\nimport { useCallback } from 'react';\nimport { chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\nimport { useImperativeComponentContext } from '@apia/util';\n\nconst ColoredLegendItem = ({\n groupId,\n title,\n color,\n className,\n isHighlighted,\n isAnyHighlighted,\n avoidEvent,\n}: {\n groupId: string;\n title: string;\n color: string;\n className?: string;\n isHighlighted: boolean;\n isAnyHighlighted: boolean;\n avoidEvent: boolean;\n}) => {\n const { id: chartId } = useImperativeComponentContext();\n const handleMouseEnter = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', groupId);\n }, [avoidEvent, chartId, groupId]);\n const handleMouseLeave = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n new ApiaUtil().tooltips.closeAll();\n chartMethods(chartId, 'highlight', '');\n }, [avoidEvent, chartId]);\n return (\n <SimpleButton\n variant=\"link\"\n className={`${className ?? ''} ${isHighlighted ? 'highlight' : ''} ${\n isAnyHighlighted && !isHighlighted ? 'isBlurred' : ''\n } legendItem`}\n iconColor={color || 'black'}\n icon={color === 'transparent' ? undefined : icons.SquareFilled}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {title}\n </SimpleButton>\n );\n};\n\nexport { ColoredLegendItem };\n","import { SimpleButton } from '@apia/components';\nimport { useCallback } from 'react';\nimport { chartMethods } from '../ChartRenderer';\nimport { useImperativeComponentContext } from '@apia/util';\nimport { ApiaUtil } from '@apia/components';\n\nconst NumberedLegendItem = ({\n groupId,\n title,\n className,\n isHighlighted,\n isAnyHighlighted,\n avoidEvent,\n}: {\n groupId: string;\n title: string;\n position: string;\n className?: string;\n isHighlighted: boolean;\n isAnyHighlighted: boolean;\n avoidEvent: boolean;\n}) => {\n const { id: chartId } = useImperativeComponentContext();\n const handleMouseEnter = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', groupId);\n }, [avoidEvent, chartId, groupId]);\n const handleMouseLeave = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n new ApiaUtil().tooltips.closeAll();\n chartMethods(chartId, 'highlight', '');\n }, [avoidEvent, chartId]);\n return (\n <SimpleButton\n variant=\"link\"\n className={`${className ?? ''} ${isHighlighted ? 'highlight' : ''} ${\n isAnyHighlighted && !isHighlighted ? 'isBlurred' : ''\n } legendItem`}\n sx={{\n opacity: isAnyHighlighted && !isHighlighted ? '0.15' : '1',\n }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {title}\n </SimpleButton>\n );\n};\n\nexport { NumberedLegendItem };\n","import { Box } from '@apia/theme';\nimport { ColoredLegendItem } from './ColoredLegendItem';\nimport { makeImperativeComponent } from '@apia/util';\nimport { NumberedLegendItem } from './NumberedLegendItem';\n\nexport type TChartReference = {\n color: string;\n title: string;\n}[];\n\nexport const [legendContainerMethods, , LegendContainer] =\n makeImperativeComponent<\n {\n references: TChartReference;\n itemClassName?: string;\n avoidEvent?: boolean;\n useNumbered?: boolean;\n },\n never\n >()({\n initialState: {\n highlightedBarGroup: '',\n },\n methods: {\n highlight(setState, highlightedBarGroup: string) {\n console.log(highlightedBarGroup);\n\n setState({ highlightedBarGroup });\n },\n },\n Component: ({\n references,\n highlightedBarGroup,\n avoidEvent,\n useNumbered,\n }) => {\n return (\n <Box className={`legendContainer`}>\n {!useNumbered\n ? references.map((data) => {\n return (\n <ColoredLegendItem\n isHighlighted={data.title === highlightedBarGroup}\n isAnyHighlighted={highlightedBarGroup !== ''}\n groupId={data.title}\n key={data.title}\n color={data.color}\n title={data.title}\n avoidEvent={avoidEvent ?? false}\n />\n );\n })\n : references.map((data, i) => {\n return (\n <NumberedLegendItem\n isHighlighted={data.title === highlightedBarGroup}\n isAnyHighlighted={highlightedBarGroup !== ''}\n groupId={data.title}\n key={data.title}\n position={`${i + 1}`}\n title={data.title}\n avoidEvent={avoidEvent ?? false}\n />\n );\n })}\n </Box>\n );\n },\n });\n","import { createContext } from 'react';\n\nexport type TChartContext = {\n chartId: string;\n};\n\nexport const ChartContext = createContext<TChartContext>({} as TChartContext);\n","import tinycolor from 'tinycolor2';\nimport { BarGroupBar, BarGroupHorizontal } from '@visx/shape/lib/types';\nimport {\n TApiaChartColorDisposition,\n TChartMargin,\n TChartRendererProps,\n} from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './HorizontalBars';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n effectiveMargin,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroupHorizontal<string>;\n parsedData: IParsedColumn[];\n effectiveMargin: TChartMargin;\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameColumn) {\n let barName = barNameColumn;\n let columnName = '';\n if (barNameColumn.includes('_$_')) {\n barName = barNameColumn.split('_$_')[0];\n columnName = barNameColumn.split('_$_')[1];\n if (isSingle && barNameColumn !== '' && barNameColumn !== undefined) {\n barName = barNameColumn.split('_$_')[1];\n columnName = barNameColumn.split('_$_')[1];\n }\n }\n if (barName.split(' - ').length === 1) {\n if (arrayOrArray(chart.dataSets.data).length === 1) {\n setIsHighlighted(barName === parsedData[barGroup.index].columnName);\n setIsAnyHighlighted(\n barName !== parsedData[barGroup.index].columnName && barName !== '',\n );\n if (\n barName === parsedData[barGroup.index].columnName &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n } else {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n const currentBar = document.querySelector(\n `.${parsedData[barGroup.index].columnName}__${bar.key}`,\n );\n if (\n barName === bar.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n } else if (barName === bar.key && currentBar && columnName === '') {\n new ApiaUtil().tooltips.open({\n children: parsedData.map((dat, i) => {\n return (\n <div key={`${dat.columnName}_${dat[barName]}`}>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{dat.columnName}</strong>\n </div>\n {chart.showValues && <div>{dat[barName]}</div>}\n <div>\n {Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )}\n </div>\n {parsedData[i + 1] && <hr />}\n </div>\n );\n }),\n attachToMousePosition: true,\n });\n }\n }\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n if (\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n },\n });\n\n const { chartId } = useContext(ChartContext);\n return (\n <g>\n {/* {chart.showValues && (\n <text\n x={bar.x + 5}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"start\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n )} */}\n\n <Box\n as=\"rect\"\n className={`chart__barRect ${parsedData[barGroup.index].columnName}__${\n bar.key\n }`}\n ref={ref}\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width - effectiveMargin.left,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n effectiveMargin.left,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n } else {\n legendContainerMethods.highlight(\n chartId,\n parsedData[barGroup.index].columnName,\n );\n }\n chartMethods(\n chartId,\n 'highlight',\n `${bar.key}_$_${parsedData[barGroup.index].columnName}`,\n );\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point || !chart.showValues) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n chartMethods(chartId, 'highlight', '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"width\"\n from={0}\n to={bar.width}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n","import tinycolor from 'tinycolor2';\n\nexport function getBarColor(\n colors: string[],\n index: number,\n alwaysDiffer = false,\n) {\n const module = colors.length;\n let count = 0;\n let barColor = '';\n if (!alwaysDiffer) {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n let innerIndex = index;\n while (innerIndex >= module) {\n innerIndex = index / module;\n count++;\n }\n barColor = tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex();\n }\n } else {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n barColor = tinycolor(colors[index % module]).toHex();\n }\n }\n return barColor;\n}\n","import { ColorModesScale, ThemeUIStyleObject, useThemeUI } from '@apia/theme';\nimport { IChartStylesSchemes, TChartStylesDefinition } from '../types';\nimport { getValueByPath } from '@apia/util';\n\nexport function useChartStyles(\n schemeName?: string,\n): TChartStylesDefinition | undefined {\n const { theme } = useThemeUI();\n\n if (!theme.layout)\n console.error('The layout property is missing in the current theme');\n\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\n ?.charts ?? {}) as IChartStylesSchemes;\n const defaultStyles = charts.common;\n const currentStylescheme = {\n schema: getValueByPath(\n theme.colors as ColorModesScale,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n charts[schemeName && schemeName !== '0' ? schemeName : 'blue']\n ?.schema as string,\n ),\n };\n if (\n typeof currentStylescheme.schema === 'object' &&\n currentStylescheme.schema\n ) {\n const returnStyles: string[] = Object.entries(\n currentStylescheme.schema,\n ).map((e) => {\n const element = document.querySelector('*');\n if (element) {\n if ((e[1] as string).startsWith('var(')) {\n return window\n .getComputedStyle(element)\n .getPropertyValue((e[1] as string).slice(4, -1));\n }\n return window\n .getComputedStyle(element)\n .getPropertyValue(e[1] as unknown as string);\n }\n\n return window\n .getComputedStyle(document.querySelector('*') as Element)\n .getPropertyValue(e[1] as unknown as string);\n });\n return { ...defaultStyles, schema: returnStyles };\n }\n // return {\n // ...defaultStyles,\n // ...currentStylescheme,\n // };\n}\n","import { uniqueId } from 'lodash';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray, getLabel } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport React, { useLayoutEffect, useMemo } from 'react';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroupHorizontal } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { Bar } from './Bar';\nimport { usePanAndZoom } from '@apia/util';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { useChartStyles } from '../util/useChartStyles';\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getYValue = (d: IParsedColumn) => d.columnName;\n\nexport type THorizontalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst HorizontalBars = ({\n margin = { top: 20, left: 50, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n outerClassName,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const yScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n innerHeight,\n ],\n domain: parsedData.map(getYValue),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, yScale.bandwidth()],\n });\n\n const xScaleLog = scaleLog<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const xScaleLine = scaleLinear<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n const isLogScale = false;\n\n const xScale = useMemo(() => {\n if (!isLogScale) {\n return xScaleLine;\n }\n return xScaleLog;\n }, [isLogScale, xScaleLine, xScaleLog]);\n\n const id = useMemo(() => `HorizontalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(\n `#${id} .__${(chartId as string) ?? outerClassName}`,\n )\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(15deg) translateX(${width / 2}px)`;\n });\n });\n const styles = useChartStyles(chart.colorSchema);\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n let numberReference: TChartReference = [];\n if (colorReference.length === 1) {\n numberReference = arrayOrArray(\n arrayOrArray(chart.dataSets.data)[0].sets,\n ).map((data, index) => {\n return {\n color: `${index + 1}`,\n title: data.key,\n };\n });\n }\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${outerClassName ?? ''} ${chartId} ${\n chart.title\n } chartBox chartContainer`}\n sx={React.useMemo(() => {\n return {\n [`.__${(chartId as string) ?? outerClassName}`]: {\n transform: 'rotate(45deg)',\n transformOrigin: 'attr(x) 18px',\n },\n overflow: 'hidden',\n position: 'relative',\n\n height: `${chart.ratio.height}px`,\n // width: `${chart.ratio.width}px`,\n };\n }, [chart.ratio.height, chartId, outerClassName])}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} ${className ? className : ''} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n style={{\n position: 'absolute',\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={innerWidth}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={effectiveMargin.left}\n >\n <BarGroupHorizontal\n data={parsedData}\n keys={columnNames}\n width={innerWidth}\n y0={getYValue}\n y0Scale={yScale}\n y1Scale={columnGroupScale}\n xScale={xScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.y0}`}\n top={barGroup.y0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n effectiveMargin={effectiveMargin}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroupHorizontal>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n labelOffset={10}\n tickLabelProps={() => ({\n display: 'none',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={30}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer\n id={chartId}\n references={\n // hideLegendsColors\n // ? colorReference.map((ref) => {\n // return { ...ref, color: 'transparent' };\n // })\n colorReference.length === 1 && numberReference.length > 0\n ? numberReference\n : colorReference\n }\n useNumbered={colorReference.length === 1}\n />\n </Box>\n )}\n </Box>\n </>\n );\n};\n\nexport { HorizontalBars };\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\nimport { useMemo, useState, useRef } from 'react';\nimport tinycolor from 'tinycolor2';\nimport { localPoint } from '@visx/event';\nimport { PieArcDatum } from '@visx/shape/lib/shapes/Pie';\nimport {\n useImperativeComponentContext,\n useImperativeComponentEvents,\n} from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n// import { uniqueId } from 'lodash';\n\nexport const Slice = ({\n arc,\n arcPath,\n chart,\n actualColor,\n chartId: outerChartId,\n}: Pick<TChartRendererProps, 'chart'> &\n Pick<TChartRendererProps, 'chartId'> & {\n arc: PieArcDatum<TApiaChartCoordinate>;\n arcPath: string | null;\n actualColor: string;\n }) => {\n // const uId = uniqueId();\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n const name = arc.data;\n const { id: chartId } = useImperativeComponentContext();\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameId) {\n const barName = barNameId.split('_$_')[0];\n setIsHighlighted(barName === arc.data.key);\n setIsAnyHighlighted(barName !== arc.data.key && barName !== '');\n if (barName === arc.data.key) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: `#${tinycolor(actualColor).toHex()}`,\n }}\n >\n <strong>{arc.data.key}</strong>\n </div>\n {chart.showValues && (\n <div>{`${arc.value} ${\n arc.data.percentage !== '' &&\n arc.data.percentage !== undefined\n ? '- ' + arc.data.percentage\n : ''\n }${\n arc.data.percentage !== '' &&\n arc.data.percentage !== undefined\n ? '%'\n : ''\n }`}</div>\n )}\n </>\n ),\n attachToElement: () => {\n return ref.current as unknown as HTMLElement;\n },\n attachToElementAnchorPoint: 'center',\n closeOnClickOut: () => {\n return window.innerWidth > 700;\n },\n closeOnMouseLeaveAttachedElement: (ev) => {\n return !(ev.relatedTarget as HTMLElement).closest('.legendItem');\n },\n className: arc.data.key,\n });\n }\n },\n });\n\n return (\n <path\n key={`arc-${name.key}-${name.value}-${outerChartId}`}\n id={`arc-${name.key}-${name.value}-${outerChartId}`}\n ref={ref}\n style={useMemo(\n () => ({\n '&:hover': {\n fill: `#${tinycolor(actualColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n }),\n [actualColor],\n )}\n color={\n isAnyHighlighted\n ? `#${tinycolor(actualColor).desaturate(70).toHex()}`\n : actualColor\n }\n fill={\n isAnyHighlighted\n ? `#${tinycolor(actualColor).desaturate(70).toHex()}`\n : actualColor\n }\n opacity={isAnyHighlighted && !isHighlighted ? 0.15 : 1}\n d={arcPath ?? ''}\n onMouseEnter={(ev) => {\n legendContainerMethods.highlight(chartId, arc.data.key);\n chartMethods(chartId, 'highlight', `${name.key}_$_${outerChartId}`);\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n\n chartMethods(chartId, 'highlight', '');\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n ></path>\n );\n};\n","import React, { useRef } from 'react';\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\nimport {\n addBoundary,\n animate,\n arrayOrArray,\n // useUpdateEffect,\n} from '@apia/util';\n\nexport const usePieAnimation = ({\n incomingColumn,\n piezas,\n setDataset,\n}: {\n incomingColumn: TApiaChartColumn;\n setDataset: React.Dispatch<React.SetStateAction<TApiaChartColumn[]>>;\n piezas: {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n sets: TApiaChartCoordinate | TApiaChartCoordinate[];\n name: string;\n };\n}) => {\n const previousObjectRef = useRef<\n | {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n name: string;\n }\n | undefined\n >(undefined);\n\n const actualObjectRef = useRef<\n | {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n name: string;\n }\n | undefined\n >(undefined);\n\n const isAnimating = useRef(false);\n\n if (previousObjectRef.current && piezas) {\n const previousCoordinates =\n isAnimating.current && actualObjectRef.current\n ? arrayOrArray(actualObjectRef.current.coordinate)\n : arrayOrArray(previousObjectRef.current.coordinate);\n\n const currentCoordinates = arrayOrArray(incomingColumn.sets);\n\n const hasValueChanged = previousCoordinates.some((prevCoord, index) => {\n const currentCoord = currentCoordinates[index];\n return prevCoord.value !== currentCoord.value;\n });\n if (hasValueChanged) {\n isAnimating.current = true;\n const difference: TApiaChartCoordinate[] = [];\n for (\n let i = 0;\n i < Math.max(previousCoordinates.length, currentCoordinates.length);\n i++\n ) {\n const coord1 = previousCoordinates[i];\n const coord2 = currentCoordinates[i];\n\n if (coord1 && coord2) {\n const newValue = Math.abs(\n parseInt(coord1.value) - parseInt(coord2.value),\n ).toString();\n const newCoordinate: TApiaChartCoordinate = {\n key: coord2.key,\n color: coord2.color, // Assuming color is the same for both coordinates\n value: newValue,\n percentage:\n coord2.percentage !== '' && coord2.percentage !== undefined\n ? coord2.percentage\n : undefined,\n };\n\n difference.push(newCoordinate);\n } else if (!coord1 && coord2 && previousCoordinates.length > 0) {\n const newValue = Math.abs(0 - parseInt(coord2.value)).toString();\n const newCoordinate: TApiaChartCoordinate = {\n key: coord2.key,\n color: coord2.color, // Assuming color is the same for both coordinates\n value: newValue,\n percentage:\n coord2.percentage !== '' && coord2.percentage !== undefined\n ? coord2.percentage\n : undefined,\n };\n\n difference.push(newCoordinate);\n }\n }\n\n return animate(\n 500,\n (progress) => {\n const step: TApiaChartColumn = {\n color: piezas.color,\n name: incomingColumn.name,\n sets: difference.map((coord, i) => {\n return {\n key: coord.key,\n color: coord.color,\n percentage: coord.percentage,\n value: addBoundary(\n Number(currentCoordinates[i].value) >\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n )\n ? Number(coord.value) * progress +\n Number(\n previousCoordinates[i]\n ? previousCoordinates[i].value\n : 0,\n )\n : Number(\n previousCoordinates[i]\n ? previousCoordinates[i].value\n : 0,\n ) -\n Number(coord.value) * progress,\n Math.min(\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n ),\n Number(currentCoordinates[i].value),\n ),\n Math.max(\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n ),\n Number(currentCoordinates[i].value),\n ),\n ).toString(),\n };\n }),\n };\n actualObjectRef.current = {\n color: step.color,\n coordinate: step.sets,\n name: step.name,\n };\n setDataset((prev) => {\n const newIndex = prev.findIndex((col) => {\n return col.name === step.name;\n });\n const returnObj = [...prev];\n if (newIndex >= 0) {\n returnObj[newIndex] = step;\n return returnObj;\n } else {\n return [step];\n }\n });\n },\n () => {\n const newPrev = {\n ...incomingColumn,\n coordinate: incomingColumn.sets,\n };\n previousObjectRef.current = newPrev;\n isAnimating.current = false;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }\n } else if (!previousObjectRef.current) {\n const newPrev = {\n ...incomingColumn,\n coordinate: incomingColumn.sets,\n };\n previousObjectRef.current = newPrev;\n isAnimating.current = false;\n }\n};\n","import { Select } from '@apia/theme';\n\nfunction ChartSelector({\n chartId,\n pieces,\n className,\n current,\n setCurrent,\n}: {\n chartId: string;\n pieces: string[];\n className?: string;\n current: string;\n setCurrent: React.Dispatch<React.SetStateAction<string>>;\n}) {\n return (\n <Select\n sx={{ width: 'auto' }}\n name={`chartSelector_${chartId}`}\n className={`chartSelector_${chartId} ${className ?? ''}`}\n value={current ?? '0'}\n onChange={(ev) => {\n ev.preventDefault();\n setCurrent(ev.target.value);\n }}\n >\n {pieces\n .map((piece, i) => {\n return {\n label: piece,\n value: `${i}`,\n };\n })\n .map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}{' '}\n </Select>\n );\n}\n\nexport default ChartSelector;\n","import {\n TApiaChartColumn,\n TApiaChartCoordinate,\n TChartRendererProps,\n} from '../types';\nimport { arrayOrArray, getLabel, usePanAndZoom } from '@apia/util';\nimport { Box, Heading } from '@apia/theme';\nimport { Group } from '@visx/group';\nimport Pie from '@visx/shape/lib/shapes/Pie';\nimport { Slice } from './Slice';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { useRef, useMemo, useState } from 'react';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { spacing } from '@apia/theme';\nimport { usePieAnimation } from './usePieAnimation';\nimport { uniqueId } from 'lodash';\nimport ChartSelector from '../util/ChartSelector';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nexport type TPieChartEvents = { highlight: { barName: string } };\n\nconst PieChart = ({\n chart,\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const [dataset, setDataset] = useState<TApiaChartColumn[]>(\n arrayOrArray(chart.dataSets?.data),\n );\n const [currentPie, setCurrentPie] = useState('0');\n const piezas = useMemo(() => {\n return dataset\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n })[dataset[parseInt(currentPie)] ? parseInt(currentPie) : 0];\n }, [currentPie, dataset]);\n\n usePieAnimation({\n incomingColumn: arrayOrArray(chart.dataSets?.data)[\n dataset[parseInt(currentPie)] ? parseInt(currentPie) : 0\n ],\n piezas,\n setDataset,\n });\n\n let innerWidth =\n chart.ratio.width > chart.ratio.height\n ? chart.ratio.width\n : chart.ratio.height;\n let innerHeight =\n chart.ratio.width > chart.ratio.height\n ? chart.ratio.width\n : chart.ratio.height;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const centerY = useMemo(() => {\n return innerHeight / 2.5;\n }, [innerHeight]);\n const centerX = useMemo(() => {\n return innerWidth / 2.5;\n }, [innerWidth]);\n const top = centerY;\n const left = centerX;\n\n const getValue = (d: TApiaChartCoordinate) =>\n Number(d.value) === 0 && arrayOrArray(piezas.coordinate).length === 1\n ? 100\n : Number(d.value);\n const radius = Math.min(innerHeight, innerWidth) / 2.5;\n\n const styles = useChartStyles(chart.colorSchema);\n\n const colorsArray = styles\n ? styles.schema\n : ['#7ad6f4', '#45bdee', '#28a7ea', '#006cbb', '#034698', '#032f64'];\n const names = arrayOrArray(\n (dataset[parseInt(currentPie)] ?? dataset[0]).sets,\n ).map((coord) => {\n return coord.key;\n });\n const colorReference: TChartReference = names.map((name, index) => {\n return {\n title: name,\n color: getBarColor(arrayOrArray(colorsArray), index),\n };\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const previousPaths = useRef<(string | null)[]>([]);\n const id = useMemo(() => `Pie${uniqueId()}`, []);\n const charts = arrayOrArray(chart.dataSets?.data)\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n });\n const chartNames = charts.map((piece) => {\n return piece.name;\n });\n if (!piezas) {\n return null;\n }\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n key={piezas.name}\n className={`${\n className ? className : ''\n } ${chartId} chartBox chartContainer`}\n sx={{ textAlign: 'center', pb: spacing(5) }}\n >\n <svg\n ref={elementRef}\n height={radius * 2}\n width={radius * 2}\n className={`_${chartId} chart__svg`}\n >\n <Group top={top ?? 0} left={left ?? 0}>\n <Pie\n data={arrayOrArray(piezas.coordinate)}\n pieValue={getValue}\n pieSort={null}\n outerRadius={radius}\n >\n {(pie) => {\n const paths = arrayOrArray(pie.arcs).map((arc) => {\n return pie.path(arc);\n });\n\n const result = pie.arcs.map((arc) => {\n const name = arc.data;\n\n const arcPath = pie.path(arc);\n return (\n <Slice\n arc={arc}\n chartId={id}\n arcPath={arcPath}\n chart={chart}\n key={`${name.key}_${name.value}`}\n actualColor={\n colorReference.find((color) => {\n return color.title === name.key;\n })?.color ?? ''\n }\n />\n );\n });\n previousPaths.current = paths;\n\n return result;\n }}\n </Pie>\n </Group>\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {!chart.hideSelector && charts.length > 1 && (\n <Box className=\"chart__combo__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('lblChartSel').text}</Heading>\n <ChartSelector\n chartId={chartId}\n pieces={chartNames}\n className=\"chartSelectorCombo\"\n current={currentPie}\n setCurrent={setCurrentPie}\n />\n </Box>\n )}\n\n {chart.showLegend && colorReference.length > 1 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer id={chartId} references={colorReference} />\n </Box>\n )}\n </Box>\n </>\n );\n};\n\nexport { PieChart };\n","import tinycolor from 'tinycolor2';\nimport { BarGroup, BarGroupBar } from '@visx/shape/lib/types';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './VerticalBars';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroup<string>;\n parsedData: IParsedColumn[];\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameColumn) {\n let barName = barNameColumn;\n let columnName = '';\n if (barNameColumn.includes('_$_')) {\n barName = barNameColumn.split('_$_')[0];\n columnName = barNameColumn.split('_$_')[1];\n if (isSingle && barNameColumn !== '' && barNameColumn !== undefined) {\n barName = barNameColumn.split('_$_')[1];\n columnName = barNameColumn.split('_$_')[1];\n }\n }\n if (barName.split(' - ').length === 1) {\n if (arrayOrArray(chart.dataSets.data).length === 1) {\n setIsHighlighted(barName === parsedData[barGroup.index].columnName);\n setIsAnyHighlighted(\n barName !== parsedData[barGroup.index].columnName && barName !== '',\n );\n if (\n barName === parsedData[barGroup.index].columnName ||\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n } else {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n const currentBar = document.querySelector(\n `.${parsedData[barGroup.index].columnName}__${bar.key}`,\n );\n if (\n barName === bar.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n } else if (barName === bar.key && currentBar && columnName === '') {\n new ApiaUtil().tooltips.open({\n children: parsedData.map((dat, i) => {\n return (\n <div key={`${dat.columnName}_${dat[barName]}`}>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{dat.columnName}</strong>\n </div>\n {chart.showValues && <div>{dat[barName]}</div>}\n <div>\n {Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )}\n </div>\n {parsedData[i + 1] && <hr />}\n </div>\n );\n }),\n attachToMousePosition: true,\n });\n }\n }\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n if (\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n },\n });\n const { chartId } = useContext(ChartContext);\n\n return (\n <g>\n {/* {chart.showValues && (\n <text\n x={bar.x + bar.width / 2}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"middle\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n )} */}\n\n <Box\n as=\"rect\"\n className={`chart__barRect ${parsedData[barGroup.index].columnName}__${\n bar.key\n }`}\n ref={ref}\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n console.log(bar.key, parsedData[barGroup.index].columnName);\n\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n } else {\n legendContainerMethods.highlight(\n chartId,\n parsedData[barGroup.index].columnName,\n );\n }\n chartMethods(\n chartId,\n 'highlight',\n `${bar.key}_$_${parsedData[barGroup.index].columnName}`,\n );\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point || !chart.showValues) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n chartMethods(chartId, 'highlight', '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"height\"\n from={0}\n to={bar.height}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n <animate\n attributeName=\"y\"\n from={bar.y + bar.height}\n to={bar.y}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n","import { uniqueId } from 'lodash';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray, getLabel, usePanAndZoom } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { useLayoutEffect, useMemo } from 'react';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroup } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Bar } from './Bar';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\n\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getXValue = (d: IParsedColumn) => d.columnName;\n\nexport type TVerticalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst VerticalBars = ({\n margin = { top: 20, left: 100, bottom: 24, right: 0 },\n chart,\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height +\n (chart.showAxisXTitle\n ? -effectiveMargin.top - effectiveMargin.bottom\n : (-effectiveMargin.top - effectiveMargin.bottom) / 2);\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const styles = useChartStyles(chart.colorSchema);\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const xScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n chart.ratio.width,\n ],\n domain: parsedData.map(getXValue),\n padding: 0.2,\n });\n\n const numericXScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n chart.ratio.width,\n ],\n domain: parsedData.map((_, i) => `${i + 1}`),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, xScale.bandwidth()],\n });\n\n const yScaleLog = scaleLog<number>({\n range: [\n innerHeight,\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const yScaleLine = scaleLinear<number>({\n range: [\n innerHeight,\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n // const hideLegendsColors = arrayOrArray(chart.dataSets.data).some((data) => {\n // return arrayOrArray(data.sets).some(\n // (set) => set.color !== undefined && set.color !== '',\n // );\n // });\n\n const isLogScale = false;\n\n const yScale = useMemo(() => {\n if (!isLogScale) {\n return yScaleLine;\n }\n return yScaleLog;\n }, [isLogScale, yScaleLine, yScaleLog]);\n\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const box = current.getBoundingClientRect();\n if (box.width > 125) {\n // eslint-disable-next-line no-param-reassign\n current.style.width = '125px';\n // eslint-disable-next-line no-param-reassign\n current.style.overflow = 'hidden';\n // eslint-disable-next-line no-param-reassign\n current.style.textOverflow = 'ellipsis';\n // eslint-disable-next-line no-param-reassign\n current.style.whiteSpace = 'nowrap';\n }\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg)`;\n });\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n let numberReference: TChartReference = [];\n if (colorReference.length === 1) {\n numberReference = arrayOrArray(\n arrayOrArray(chart.dataSets.data)[0].sets,\n ).map((data, index) => {\n return {\n color: `${index + 1}`,\n title: data.key,\n };\n });\n }\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${className ?? ''} ${chart.title} chartBox chartContainer`}\n sx={{\n overflow: 'hidden',\n }}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={chart.ratio.width}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n >\n <BarGroup\n data={parsedData}\n keys={columnNames}\n height={innerHeight}\n x0={getXValue}\n x0Scale={xScale}\n x1Scale={columnGroupScale}\n yScale={yScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.x0}`}\n left={barGroup.x0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroup>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickComponent={(props) => {\n let value = Number(props.formattedValue?.replace(',', ''));\n let counter = -1;\n const units = ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y', 'R', 'Q'];\n while (value >= 1000) {\n value = value / 1000;\n counter++;\n }\n let stringValue = `${value}`;\n if (stringValue.length > 3) {\n stringValue = stringValue.slice(0, 3);\n }\n if (stringValue.endsWith('.')) {\n stringValue = stringValue.replace('.', '');\n }\n const newValue = `${stringValue}${\n counter >= 0 ? units[counter] : ''\n }`;\n\n return (\n <>\n {chart.showAxisYTitle && (\n <text\n dx={props.dx}\n dy={props.dy}\n fill={props.fill}\n fontSize={props.fontSize}\n textAnchor={props.textAnchor}\n x={props.x}\n y={props.y}\n >\n {newValue}\n </text>\n )}\n </>\n );\n }}\n />\n <AxisBottom\n top={innerHeight}\n scale={\n colorReference.length === 1 && numberReference.length > 0\n ? numericXScale\n : xScale\n }\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={0}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer\n id={chartId}\n references={\n colorReference.length === 1 && numberReference.length > 0\n ? numberReference\n : colorReference\n }\n useNumbered={colorReference.length === 1}\n />\n </Box>\n )}\n </Box>\n </>\n );\n};\n\nexport { VerticalBars };\n","import { Fragment } from 'theme-ui/jsx-runtime';\nimport tinycolor from 'tinycolor2';\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\n\nexport const Node = ({\n currentCircle,\n innerKey,\n cx,\n cy,\n // coordinate,\n color,\n setCurrentCircle,\n}: // column,\n{\n currentCircle: string[];\n innerKey: string;\n cx: number;\n cy: number;\n coordinate: TApiaChartCoordinate;\n color: string;\n setCurrentCircle: (value: React.SetStateAction<string[]>) => void;\n column: TApiaChartColumn;\n}) => {\n return (\n <Fragment key={innerKey}>\n {currentCircle.includes(innerKey) && (\n <circle\n r={6}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).saturate(25).toHex()}`}\n fill={`#${tinycolor(color).saturate(25).toHex()}`}\n />\n )}\n <circle\n r={3}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).darken(15).toHex()}`}\n fill={`#${tinycolor(color).darken(15).toHex()}`}\n />\n <circle\n r={6}\n cx={cx}\n cy={cy}\n stroke=\"transparent\"\n fill=\"transparent\"\n onMouseEnter={() => {\n setCurrentCircle([innerKey]);\n }}\n onMouseLeave={() => {\n setCurrentCircle([]);\n }}\n style={{ cursor: 'pointer' }}\n />\n </Fragment>\n );\n};\n","import {\n arrayOrArray,\n getLabel,\n useImperativeComponentEvents,\n usePanAndZoom,\n usePrevious,\n} from '@apia/util';\nimport {\n TApiaChartColorDisposition,\n TApiaChartCoordinate,\n TApiaChartDefinition,\n TChartRendererProps,\n} from '../types';\nimport { scaleLinear, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { min, max } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { useMemo, useState, useLayoutEffect } from 'react';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { LinePath } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport * as allCurves from '@visx/curve';\nimport { uniqueId } from 'lodash';\nimport { Node } from './Node';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { TChartEvents } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nfunction getX(coordinate: TApiaChartCoordinate) {\n return coordinate.key;\n}\n\nfunction getY(coordinate: TApiaChartCoordinate) {\n return Number(coordinate.value);\n}\n\nfunction parseData(chart: TApiaChartDefinition) {\n const setsArray = arrayOrArray(chart.dataSets?.data).map((col) =>\n arrayOrArray(col.sets),\n );\n let longestLine: TApiaChartCoordinate[] = [];\n let longestLineIndex = -1;\n\n for (let i = 0; i < setsArray.length; i++) {\n const array = setsArray[i];\n if (!longestLine || array.length > longestLine.length) {\n longestLine = array;\n longestLineIndex = i;\n }\n }\n\n const lines = arrayOrArray(chart.dataSets?.data);\n const nodesDataArray = lines.map((line) => line.sets);\n const nodesData = nodesDataArray.reduce<TApiaChartCoordinate[]>(\n (rec, d) => arrayOrArray(rec).concat(d),\n [],\n );\n return {\n lines,\n longestLine,\n longestLineIndex,\n tallestLine: [...new Set(nodesData.map((value) => value.value))],\n xScale: scaleOrdinal<string, number>({\n domain: longestLine.map(getX),\n }),\n yScale: scaleLinear<number>({\n domain: [\n (min(nodesData, getY) ?? 0) < 0 ? min(nodesData, getY) ?? 0 : 0,\n max(nodesData, getY) ?? 1,\n ],\n }),\n yScaleLog: scaleLog<number>({\n domain: [\n (min(nodesData, getY) ?? 1) > 0 ? min(nodesData, getY) ?? 1 : 1,\n max(nodesData, getY) ?? 10,\n ],\n }),\n };\n}\nexport type TLineChartEvents = { highlight: { barName: string } };\n\nexport type TChartNode = {\n x: number;\n y: number;\n xValue: string;\n yValue: string;\n columnName: string;\n};\n\nconst LineChart = ({\n chart,\n margin = { top: 20, left: 100, bottom: 24, right: 0 },\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width - (effectiveMargin.left + effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const { lines, xScale, yScale, yScaleLog, longestLine } = parseData(chart);\n const styles = useChartStyles(chart.colorSchema);\n const coordinates = arrayOrArray(lines[0].sets);\n const coordinatesArray = lines.map((col) => {\n return col.sets;\n });\n const divideRangeBetweenStrings = (\n min: number,\n max: number,\n strings: TApiaChartCoordinate[] | string[],\n ): number[] => {\n const numStrings = strings.length;\n const step = (max - min) / (numStrings - 1);\n\n const resultArray: number[] = [];\n let currentValue = min;\n\n for (let i = 0; i < numStrings; i++) {\n resultArray.push(currentValue);\n currentValue += step;\n }\n return resultArray;\n };\n const xScaleRange = useMemo(() => {\n const rangeArr = [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ];\n return divideRangeBetweenStrings(rangeArr[0], rangeArr[1], longestLine);\n }, [effectiveMargin, innerWidth, longestLine]);\n\n xScale.range(xScaleRange);\n const yScaleRange = useMemo(() => {\n const rangeArr = [\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom),\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ];\n\n return rangeArr;\n }, [effectiveMargin, innerHeight]);\n\n yScale.range(yScaleRange);\n yScaleLog.range([\n innerHeight,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n\n const [currentCircle, setCurrentCircle] = useState<string[]>([]);\n\n const actualYScale = useMemo(() => {\n return yScale;\n }, [yScale]);\n const id = useMemo(() => `Linear${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n function addNameToProps(\n names: string[],\n objects: {\n xValue: string;\n yValue: string;\n x: number;\n y: number;\n }[],\n fixedValue: number,\n ) {\n return objects.map((object, index) => {\n const nameIndex = Math.floor(index / fixedValue);\n const name = names[nameIndex];\n return { ...object, columnName: name };\n });\n }\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return { returnColumnsArray, columnColor: dataColor };\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n const [highlightedBar, setHighlightedBar] = useState('');\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setHighlightedBar(barName);\n } else if (barName.split(' - ').length === 2) {\n setHighlightedBar(barName.split(' - ')[0]);\n }\n },\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const coords = coordinatesArray.flat().map((coord) => {\n return {\n xValue: coord.key,\n yValue: coord.value,\n x: xScale(getX(coord)),\n y: actualYScale(getY(coord)),\n };\n });\n const columnNames = lines.map((column) => {\n return column.name;\n });\n const nodes = addNameToProps(columnNames, coords, coordinates.length);\n\n const [nearNodesArray, setNearNodesArray] = useState<TChartNode[]>([]);\n const previousNearNodesArray = usePrevious(nearNodesArray);\n return (\n <>\n <Box id={id} ref={boxRef} className=\"chartBox chartContainer\">\n <svg\n ref={elementRef}\n width={innerWidth}\n height={innerHeight}\n id=\"LinesChart\"\n className={`_${chartId} chart__svg`}\n onMouseMove={(ev) => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n let clientX =\n ev.clientX - (effectiveMargin.left + effectiveMargin.right) / 2;\n let clientY =\n ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n\n if (rect) {\n clientX = ev.clientX - rect.left;\n clientY = ev.clientY - rect.top;\n }\n const nearNodes = nodes.filter((node) => {\n return (\n Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) <\n 20\n );\n });\n\n if (previousNearNodesArray.current && nearNodes.length > 0) {\n const currentColumns = lines\n .map((col) => {\n let colNames = '';\n nearNodes.forEach((node) => {\n if (col.name === node.columnName) {\n colNames = node.columnName;\n }\n });\n\n return colNames;\n })\n .filter((name) => name !== '');\n const currentIndex = coordinates.findIndex((coord) => {\n return coord.key === nearNodes[0].xValue;\n });\n\n if (currentColumns && currentIndex !== undefined) {\n const newCircleValues = currentColumns.map((col) => {\n return `${col}${currentIndex}`;\n });\n\n setCurrentCircle([...newCircleValues]);\n }\n setNearNodesArray(nearNodes);\n const elementUnderCursor = document.elementFromPoint(\n ev.clientX,\n ev.clientY,\n );\n if (\n elementUnderCursor &&\n elementUnderCursor.tagName === 'circle'\n ) {\n new ApiaUtil().tooltips.open({\n children: nearNodes\n .sort((a, b) => Number(b.yValue) - Number(a.yValue))\n .map((node, i) => {\n const useSpecific = colorReference.some(\n (ref) =>\n ref.title === node.columnName + ' - ' + node.xValue,\n );\n\n return (\n <Box\n key={`${node.columnName}_${node.xValue}_${node.yValue}`}\n >\n <div\n style={{\n color:\n colorReference[\n colorReference.findIndex((ref) => {\n return (\n ref.title ===\n (useSpecific\n ? node.columnName + ' - ' + node.xValue\n : node.columnName)\n );\n })\n ].color,\n }}\n >\n <strong>{node.columnName}</strong>\n </div>\n {chart.showValues && <div>{node.yValue}</div>}\n <div>{node.xValue}</div>\n {nearNodesArray[i + 1] && <hr />}\n </Box>\n );\n }),\n attachToElement: () => elementUnderCursor as HTMLElement,\n attachToElementAnchorPoint: 'bottomRight',\n });\n } else {\n new ApiaUtil().tooltips.closeAll();\n }\n } else if (nearNodes.length === 0) {\n setCurrentCircle([]);\n }\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={0}\n xScale={xScale}\n yScale={actualYScale}\n width={innerWidth}\n height={innerHeight}\n stroke={styles?.grid.stroke}\n strokeOpacity={styles?.grid.opacity}\n />\n )}\n {lines.map((column, i) => {\n const currentCoordinates = arrayOrArray(column.sets);\n const newColor = setsWithColor.find(\n (data) => data.returnColumnsArray[0].columnName === column.name,\n )?.columnColor;\n\n return (\n <Group\n key={`lines-${column.name + i.toString()}`}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n style={{\n opacity:\n highlightedBar !== '' && highlightedBar !== column.name\n ? 0.15\n : 1,\n transition: 'opacity 500ms',\n }}\n >\n <LinePath\n curve={allCurves.curveMonotoneX}\n data={currentCoordinates}\n x={(coordinate) => {\n return xScale(getX(coordinate)) ?? 0;\n }}\n y={(coordinate) => actualYScale(getY(coordinate)) ?? 0}\n stroke={newColor ?? 'black'}\n strokeWidth={2}\n strokeOpacity={1}\n shapeRendering=\"geometricPrecision\"\n color=\"transparent\"\n />\n {currentCoordinates.map((coordinate, j) => {\n const key = column.name + j.toString();\n const realColor = setsWithColor\n .map((sets) => sets.returnColumnsArray)\n .flat()\n .find(\n (set) =>\n set.columnName === column.name &&\n set.key === coordinate.key,\n )?.color;\n\n return (\n <g key={key}>\n {chart.showValues && (\n <text\n x={xScale(getX(coordinate)) + 10}\n y={actualYScale(getY(coordinate)) - 5}\n textAnchor=\"middle\"\n style={{\n display:\n highlightedBar === column.name ? 'block' : 'none',\n opacity: highlightedBar === column.name ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {coordinate.value}\n </text>\n )}\n <Node\n color={realColor ?? 'black'}\n coordinate={coordinate}\n currentCircle={currentCircle}\n cx={xScale(getX(coordinate))}\n cy={actualYScale(getY(coordinate))}\n setCurrentCircle={setCurrentCircle}\n innerKey={key}\n column={column}\n />\n </g>\n );\n })}\n </Group>\n );\n })}\n\n <AxisLeft\n scale={actualYScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickLabelProps={{\n display: chart.showAxisYTitle ? 'auto' : 'none',\n }}\n />\n <AxisBottom\n top={innerHeight - (effectiveMargin.top + effectiveMargin.bottom)}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={10}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer id={chartId} references={colorReference} />\n </Box>\n )}\n </Box>\n </>\n );\n};\nexport { LineChart };\n","import { Line } from '@visx/shape';\nimport { useMemo } from 'react';\nimport { TApiaChartDefinition } from '../types';\nimport tinycolor from 'tinycolor2';\nimport { Box } from '@apia/theme';\nimport { ApiaUtil } from '@apia/components';\n\nconst WaterfallBar = ({\n width,\n height,\n x,\n y,\n fill,\n x1,\n lineY,\n x2,\n stroke,\n strokeDashArray,\n textX,\n textY,\n textContent,\n isLast,\n step,\n columnName,\n chart,\n}: {\n width: number;\n height: number;\n x: string | number;\n y: string | number;\n fill: string;\n x1: string | number;\n x2: string | number;\n lineY: string | number;\n stroke: string;\n strokeDashArray: string | number;\n textX: string | number;\n textY: string | number;\n textContent: string;\n isLast: boolean;\n step: {\n x: string;\n y: string;\n start: number;\n end: number;\n color: string;\n };\n columnName: string;\n chart: TApiaChartDefinition;\n}) => {\n return (\n <>\n <Box\n as={'rect'}\n sx={useMemo(() => {\n return {\n width: `${width}px`,\n height: `${height}px`,\n x: `${x}px`,\n y: `${y}px`,\n fill: `${fill}`,\n '&:hover': {\n fill: `#${tinycolor(fill).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms',\n };\n }, [fill, height, width, x, y])}\n onMouseEnter={(ev) => {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: step.color,\n }}\n >\n <strong>{columnName}</strong>\n </div>\n {chart.showValues && <div>{step.y}</div>}\n <div>{step.x}</div>\n </>\n ),\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n />\n\n {!isLast && (\n <Line\n x1={x1}\n x2={x2}\n y1={lineY}\n y2={lineY}\n stroke={stroke}\n strokeDasharray={strokeDashArray}\n />\n )}\n {chart.showValues && (\n <text textAnchor=\"middle\" x={textX} y={textY}>\n {textContent}\n </text>\n )}\n </>\n );\n};\n\nexport { WaterfallBar };\n","import { Box, Heading } from '@apia/theme';\nimport { TChartRendererProps } from '../types';\nimport { arrayOrArray, getLabel, usePanAndZoom } from '@apia/util';\nimport React, { useMemo, useLayoutEffect, useState } from 'react';\nimport { scaleBand, scaleLinear } from '@visx/scale';\nimport { extent } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { Group } from '@visx/group';\nimport { GridRows } from '@visx/grid';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { uniqueId } from 'lodash';\nimport ChartSelector from '../util/ChartSelector';\nimport { WaterfallBar } from './WaterfallBar';\n// import { LegendContainer } from '../util/LegendContainer';\n\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\ntype TDatum = { key: string; value: string };\n\nconst calculateWaterfallSteps = ({\n data,\n xAccessor,\n yAccessor,\n showFinal,\n colors,\n}: {\n data: TDatum[];\n xAccessor: (d: TDatum) => string;\n yAccessor: (d: TDatum) => string;\n showFinal: boolean;\n colors: {\n positive: string;\n negative: string;\n total: string;\n stepConnector: string;\n };\n}) => {\n // Holds cumulative value\n let cumulativeTotal = 0;\n\n // Calculate bars for each data point\n const steps = data.map((datum) => {\n const xValue = xAccessor(datum);\n const yValue = yAccessor(datum);\n\n const prevTotal = cumulativeTotal;\n cumulativeTotal += Number(yValue);\n\n return {\n x: xValue,\n y: yValue,\n start: prevTotal,\n end: cumulativeTotal,\n color: Number(yValue) > 0 ? colors.positive : colors.negative,\n };\n });\n\n // Add final Total bar\n if (showFinal) {\n steps.push({\n x: 'Total',\n y: cumulativeTotal as unknown as string,\n start: 0,\n end: cumulativeTotal,\n color: colors.total,\n });\n }\n\n return steps;\n};\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\nexport const WaterfallBars = ({\n margin = { top: 20, left: 100, bottom: 150, right: 70 },\n chart: {\n waterfallColors = {\n positive: '#49b86f',\n negative: '#c92e5b',\n total: '#434857',\n stepConnector: '#888d94',\n },\n ...chart\n },\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n console.log({ margin });\n\n const effectiveMargin = parseMargin(margin);\n\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const getXValue = (d: TDatum) => d.key;\n const getYValue = (d: TDatum) => d.value;\n\n const charts = arrayOrArray(chart.dataSets?.data)\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n });\n const [currentPie, setCurrentPie] = useState('0');\n const chartNames = charts.map((piece) => {\n return piece.name;\n });\n const steps = useMemo(\n () =>\n calculateWaterfallSteps({\n data: arrayOrArray(chart.dataSets.data)[currentPie as unknown as number]\n .sets as TDatum[],\n xAccessor: getXValue,\n yAccessor: getYValue,\n showFinal: chart.showTotal ?? true,\n colors: waterfallColors,\n }),\n [chart.dataSets.data, chart.showTotal, currentPie, waterfallColors],\n );\n\n // Build scales\n const padding = 0.2;\n\n const xScale = scaleBand({\n domain: steps.map((step) => step.x),\n padding,\n range: [0, innerWidth],\n });\n\n const yDomain = useMemo(() => {\n const values = steps.flatMap((step) => [step.start, step.end]);\n const [min, max] = extent<number>(values);\n return min != null && max != null ? [min - 5, max + 5] : undefined;\n }, [steps]);\n\n const yScale = scaleLinear({\n domain: yDomain,\n nice: true,\n range: [innerHeight, 0],\n });\n\n const id = useMemo(() => `WaterfallBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n return (\n <>\n <Box\n id={id}\n className={`${className ? className : ''} chartBox chartContainer`}\n ref={boxRef}\n >\n <svg\n height={chart.ratio.height}\n width={chart.ratio.width}\n ref={elementRef}\n >\n <Group left={effectiveMargin.left} top={effectiveMargin.top}>\n <GridRows scale={yScale} width={innerWidth} strokeDasharray=\"5\" />\n {steps.map((step, index) => {\n const x = xScale(step.x);\n const y = yScale(Math.max(step.start, step.end));\n\n if (x == null || y == null) {\n return null;\n }\n\n const barHeight = Math.abs(yScale(step.start) - yScale(step.end));\n\n const isLast = index === steps.length - 1;\n const linePadding = 2;\n const x1 = x + xScale.bandwidth() + linePadding;\n const x2 = x + xScale.bandwidth() / (1 - padding) - linePadding;\n const lineY = step.end < step.start ? y + barHeight : y;\n\n const labelOffset = 10;\n const labelY =\n yScale(step.end) +\n ((step.y as unknown as number) < 0\n ? labelOffset\n : -labelOffset);\n\n let currentYValue = 0;\n steps\n .filter((_, i) => {\n if ((chart.showTotal ?? true) && !steps[i + 1]) {\n return false;\n }\n return i <= index;\n })\n .forEach((step) => {\n currentYValue += Number(step.y);\n });\n\n return (\n <WaterfallBar\n chart={chart}\n columnName={chartNames[currentPie as unknown as number]}\n fill={step.color}\n height={barHeight}\n isLast={isLast}\n key={index}\n lineY={lineY}\n step={step}\n stroke={waterfallColors.stepConnector}\n strokeDashArray={2}\n textContent={\n chart.showTotal ?? true\n ? step.y\n : (currentYValue as unknown as string)\n }\n textX={x + xScale.bandwidth() / 2}\n textY={labelY + 5}\n width={xScale.bandwidth()}\n x={x}\n y={y}\n x1={x1}\n x2={x2}\n />\n );\n })}\n <AxisLeft\n label={''}\n scale={yScale}\n hideTicks\n tickLabelProps={() => ({\n textAnchor: 'end',\n verticalAnchor: 'middle',\n display: chart.showAxisYTitle ? 'auto' : 'none',\n })}\n />\n <AxisBottom\n scale={xScale}\n top={innerHeight}\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n />\n </Group>\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {!chart.hideSelector && charts.length > 1 && (\n <Box className=\"chart__combo__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('lblChartSel').text}</Heading>\n <ChartSelector\n chartId={chartId}\n pieces={chartNames}\n className=\"chartSelectorCombo\"\n current={currentPie}\n setCurrent={setCurrentPie}\n />\n </Box>\n )}\n {/* {chart.showLegend && (\n <Box className=\"chart__legend__wrapper\"> */}\n {/* TODO LABEL */}\n {/* <Heading as={'h6'}>Legend</Heading>\n <LegendContainer\n id={chartId}\n avoidEvent\n references={[\n {\n title: arrayOrArray(chart.dataSets.data)[\n currentPie as unknown as number\n ].name,\n color: 'transparent',\n },\n ]}\n />\n </Box>\n )} */}\n </Box>\n </>\n );\n};\n","import { TApiaChartDefinition, TChartRendererProps } from './types';\nimport React, { useMemo, RefAttributes } from 'react';\nimport { Box, responsive } from '@apia/theme';\nimport { getVariant, makeStyledComponent, spacing } from '@apia/theme';\nimport { HorizontalBars } from './horizontalBars/HorizontalBars';\nimport { PieChart } from './pie/Pie';\nimport {\n getIndex,\n makeImperativeComponent,\n useImperativeComponentContext,\n} from '@apia/util';\nimport { VerticalBars } from './verticalBars/VerticalBars';\nimport { ChartContext } from './ChartContext';\nimport { LineChart } from './linear/LineChart';\nimport { WaterfallBars } from './waterfallBars/WaterfallBars';\n\nconst frontColor = 'hsl(196, 37%, 13%)';\n\nfunction useMultipleRefs<T extends HTMLElement | null>(\n ...refs: React.MutableRefObject<T>[]\n) {\n return React.useCallback(\n function setRef(element: T) {\n refs.forEach((current) => {\n // eslint-disable-next-line no-param-reassign\n if (current) current.current = element;\n });\n },\n [refs],\n );\n}\n\nexport type TChartEvents = {\n highlight: string;\n};\n\nexport const [, chartMethods, ChartRenderer] = makeImperativeComponent<\n {\n currentChart: TApiaChartDefinition;\n chartConfig?: Partial<Omit<TApiaChartDefinition, 'columns'>>;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n allowZoom?: boolean;\n } & RefAttributes<HTMLElement>,\n TChartEvents\n>()({\n Component: makeStyledComponent(\n 'ChartRenderer',\n 'layout.charts',\n {\n red: {\n schema: 'schemas.red',\n },\n orange: {\n schema: 'schemas.orange',\n },\n green: {\n schema: 'schemas.green',\n },\n blue: {\n schema: 'schemas.blue',\n },\n violet: {\n schema: 'schemas.violet',\n },\n turquoise: {\n schema: 'schemas.turquoise',\n },\n yellow: {\n schema: 'schemas.yellow',\n },\n grey: {\n schema: 'schemas.grey',\n },\n ocean: {\n schema: 'schemas.ocean',\n },\n sunset: {\n schema: 'schemas.sunset',\n },\n common: {\n axis: {\n stroke: frontColor,\n title: frontColor,\n },\n schema: frontColor,\n background: 'hsl(200deg 20% 98%)',\n grid: {\n stroke: frontColor,\n opacity: '0.1',\n },\n toolTip: {\n backgroundColor: 'rgb(232, 241, 255)',\n border: '1px solid #07c',\n color: frontColor,\n padding: '.3rem .5rem',\n borderRadius: '3px',\n fontSize: '18px',\n boxShadow: '0 1px 2px rgba(33,33,33,0.2)',\n lineHeight: '1em',\n },\n },\n '.chartBox': () => {\n return {\n position: responsive({ 0: 'static', 3: 'sticky' }),\n top: '0',\n background: 'white',\n zIndex: '1',\n };\n },\n '.legendContainer': {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing(2),\n overflow: 'hidden',\n alignItems: 'start',\n button: () => ({\n justifyContent: 'start',\n textAlign: 'start',\n width: '100%',\n textDecoration: 'none',\n svg: {\n paddingLeft: spacing(1),\n },\n }),\n },\n\n '.legendItem': {\n transition: 'opacity 200ms',\n\n '&.isBlurred': {\n opacity: '0.15',\n },\n\n '.button__content': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n wordWrap: 'normal',\n display: 'block',\n whiteSpace: 'nowrap',\n p: spacing(1),\n },\n },\n },\n // eslint-disable-next-line react/display-name\n React.forwardRef(\n (\n {\n currentChart,\n chartId,\n allowZoom,\n id,\n }: {\n currentChart: TApiaChartDefinition;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n id: string;\n allowModal?: boolean;\n allowZoom?: boolean;\n },\n ref,\n ) => {\n const innerRef = React.useRef<HTMLElement | null>(null);\n const setRefs = useMultipleRefs(\n ref as React.MutableRefObject<HTMLElement>,\n innerRef,\n );\n\n const { id: imperativeId } = useImperativeComponentContext();\n\n const contextValue = useMemo(\n () => ({ chartId: String(imperativeId) }),\n [imperativeId],\n );\n const CurrentChart = getIndex(\n [PieChart, HorizontalBars, VerticalBars, LineChart, WaterfallBars],\n [\n currentChart.chartType === 'pie2D',\n currentChart.chartType === 'barH2D',\n currentChart.chartType === 'barV2D',\n currentChart.chartType === 'linear',\n currentChart.chartType === 'waterfall',\n ],\n 0,\n );\n return (\n <ChartContext.Provider value={contextValue}>\n <Box\n ref={setRefs}\n className=\"chart__chartRenderer\"\n {...getVariant('layout.charts')}\n id={id}\n >\n <CurrentChart\n chart={currentChart}\n chartId={chartId}\n parentRef={innerRef as React.MutableRefObject<HTMLElement>}\n allowZoom={allowZoom}\n margin={currentChart.margin}\n />\n </Box>\n </ChartContext.Provider>\n );\n },\n ),\n true,\n ),\n});\n","import { AxisBottom, AxisLeft } from '@visx/axis';\nimport { scaleBand } from '@visx/scale';\nimport { Grid } from '@visx/visx';\n\nexport const EmptyGrid = ({ width }: { width?: number }) => {\n const xScale = scaleBand<string>({\n range: [0, width ?? 400],\n domain: ['0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100'],\n padding: 0.2,\n });\n const yScale = scaleBand<string>({\n range: [0, 400],\n domain: ['0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100'],\n padding: 0.2,\n });\n return (\n <svg height={400} width={width ?? 400}>\n <Grid.Grid\n height={400}\n width={width ?? 400}\n numTicksRows={10}\n numTicksColumns={10}\n xScale={xScale}\n yScale={yScale}\n />\n <AxisLeft\n scale={yScale}\n left={20}\n hideTicks={true}\n tickLabelProps={{ display: 'none' }}\n />\n <AxisBottom\n scale={xScale}\n top={380}\n hideTicks={true}\n tickLabelProps={{ display: 'none' }}\n />\n </svg>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 90;\nconst END_ANGLE = 270;\n\nexport const Scale = ({\n currentValue,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = false;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 10 + 1,\n diameter: diameter,\n });\n const gauge2 = useGauge({\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter / 2 + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 90,\n endAngle: 270,\n })}\n stroke=\"gray\"\n opacity=\"0.2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n />\n {showText && (\n <text\n fill=\"black\"\n {...gauge.getLabelProps({ angle, offset: 20 })}\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n {allTicks &&\n gauge2.ticks.map((angle, i) => {\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\n <line\n stroke=\"gray\"\n strokeWidth={2}\n {...gauge.getTickProps({\n angle,\n length: 3,\n })}\n />\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n y={-diameter / 4 + 20}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 30;\nconst END_ANGLE = 330;\n\nexport const SpeedMeter = ({\n backgroundColor,\n colorRanges,\n currentValue,\n currentValueColor,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = false;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: allTicks\n ? valueRanges[valueRanges.length - 1] - valueRanges[0] + 1\n : valueRanges[valueRanges.length - 1] / 10 + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n }\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 0,\n endAngle: 360,\n })}\n stroke=\"gray\"\n fill={backgroundColor ?? 'none'}\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n {valueRanges.map((innerValue, i) => {\n const valueToAngle = (value: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n const angle =\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\n return Math.round(angle);\n };\n\n return (\n <g key={`${innerValue}_${i}`}>\n <path\n {...gauge.getArcProps({\n offset: -50,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={getColor(innerValue)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n <path\n {...gauge.getArcProps({\n offset: -55,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n key={`${innerValue}_${i}`}\n stroke={getColor(innerValue)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n </g>\n );\n })}\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n />\n {showText && (\n <text\n fill=\"black\"\n {...gauge.getLabelProps({ angle, offset: 20 })}\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n y={diameter / 2}\n fill={currentValueColor}\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { useCallback, useRef, useState, useEffect } from 'react';\nimport { addBoundary, noNaN, animate } from '@apia/util';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const TLight = ({\n addBorder = false,\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n width,\n currentValueColor,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue);\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n\n const hasRendered = useRef(false);\n\n const onRenderSvg = useCallback(\n (el: SVGSVGElement) => {\n if (!el || hasRendered.current) return;\n\n hasRendered.current = true;\n\n const svgElement = el;\n const pathElement = el.querySelector('#TLight_arcs');\n\n if (!(svgElement && pathElement)) {\n return;\n }\n\n const pathBox = pathElement.getBoundingClientRect();\n const svgBox = svgElement.getBoundingClientRect();\n const pathX = pathBox.x - svgBox.x;\n const pathY = pathBox.y - svgBox.y;\n\n const viewBox = `${pathX - diameter / 2} ${\n pathY - diameter / 2\n } ${diameter} ${diameter}`;\n\n svgElement.setAttribute('viewBox', viewBox);\n\n svgElement.style.visibility = 'visible';\n },\n [diameter],\n );\n\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n style={{ visibility: 'hidden' }}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n id=\"TLight_svg\"\n ref={onRenderSvg}\n viewBox={`-${diameter / 2} -${diameter / 2} ${diameter} ${diameter}`}\n >\n <g id=\"TLight_arcs\">\n <path\n {...gauge.getArcProps({\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n fill={getColor(value)}\n id=\"TLight_path\"\n style={{ transition: 'fill 0.3s' }}\n />\n {addBorder && (\n <path\n {...gauge.getArcProps({\n offset: -2.5,\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n stroke={'black'}\n fill={'transparent'}\n strokeLinecap=\"round\"\n strokeWidth={5}\n id=\"TLight_path\"\n />\n )}\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 100}pt` }}\n alignmentBaseline=\"central\"\n fill={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport tinycolor from 'tinycolor2';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 45;\nconst END_ANGLE = 315;\n\nexport const Oxford = ({\n backgroundColor,\n colorRanges,\n currentValue,\n currentValueColor,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = true;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 10 + 1,\n diameter: diameter,\n });\n const gauge2 = useGauge({\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n }\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 0,\n endAngle: 360,\n })}\n stroke=\"black\"\n opacity=\"1\"\n fill={\n backgroundColor !== '' && backgroundColor !== undefined\n ? tinycolor(backgroundColor)\n .setAlpha(0.5)\n .toPercentageRgbString()\n : 'none'\n }\n strokeLinecap=\"round\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n {valueRanges.map((innerValue, i) => {\n if (!valueRanges[i + 1]) {\n return null;\n }\n\n const valueToAngle = (value: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n const angle =\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\n return Math.round(angle);\n };\n\n return (\n <g key={`${innerValue}_${i}`}>\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={'black'}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"square\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n {...gauge.getArcProps({\n offset: -20,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={getColor(innerValue)}\n opacity=\"0.1\"\n fill=\"none\"\n strokeLinecap=\"butt\"\n strokeWidth={75}\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n {...gauge.getArcProps({\n offset: -55,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n key={`${innerValue}_${i}`}\n stroke={getColor(innerValue) || '#999'}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"butt\"\n strokeWidth={10}\n vectorEffect={'non-scaling-stroke'}\n />\n </g>\n );\n })}\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle, i) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n vectorEffect={'non-scaling-stroke'}\n />\n {showText && (\n <text\n fill={'black'}\n {...gauge.getLabelProps({\n angle,\n offset: 20,\n })}\n style={{\n fontSize: `${scaleValuesSize ?? 30}px`,\n }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n {allTicks &&\n gauge2.ticks.map((angle, i) => {\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\n <line\n stroke=\"gray\"\n strokeWidth={2}\n {...gauge.getTickProps({\n angle,\n length: 3,\n })}\n vectorEffect={'non-scaling-stroke'}\n />\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n alignmentBaseline=\"text-before-edge\"\n y={diameter / 5}\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n fill={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { addBoundary, noNaN, animate } from '@apia/util';\nimport { useEffect, useRef, useState } from 'react';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const Counter = ({\n addBorder = false,\n colorRanges,\n currentValue,\n valueRanges,\n maxValue,\n minValue,\n currentValueFontSize,\n panelId,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue ?? 0);\n const actualWidth = ((currentValueFontSize as number) ?? 80) * 3 * 0.8;\n const diameter = actualWidth;\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n\n return (\n <Box sx={{ position: 'relative' }} className=\"widgetContainer__Counter\">\n <svg\n {...gauge.getSVGProps()}\n height={actualWidth}\n width={actualWidth}\n viewBox={undefined}\n >\n <g id=\"arcs\">\n {addBorder && `${value}`.length < 4 && (\n <ellipse\n cx={actualWidth / 2}\n cy={actualWidth / 2}\n rx={actualWidth / 2 - 5}\n ry={actualWidth / 2 - 5}\n stroke=\"gray\"\n opacity=\"0.2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n )}\n </g>\n </svg>\n <svg\n height={actualWidth}\n width={actualWidth}\n style={{ position: 'absolute', left: 0, top: 0 }}\n >\n <text\n x={actualWidth / 2}\n y={actualWidth / 2 - 5}\n textAnchor=\"middle\"\n style={{\n fontSize: `${currentValueFontSize ?? 80}px`,\n transition: 'fill 0.5s',\n }}\n alignmentBaseline=\"central\"\n fill={getColor(value)}\n id={`text_${panelId}`}\n >\n {value}\n </text>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { addBoundary, noNaN, animate } from '@apia/util';\nimport { useEffect, useRef, useState } from 'react';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const Ring = ({\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n ringEmptyColor,\n ringWidth,\n width,\n currentValueColor,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue);\n const diameter = Math.min(height, width);\n const offset = 20;\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n\n const valueToAngle = (value: number) => {\n const angleRange = 360;\n const valueRange = domainMax - domainMin;\n const angle = ((value - domainMin) / valueRange) * angleRange;\n\n return Math.round(angle);\n };\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - (noNaN(ringWidth) ?? 0) * 100,\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n stroke={ringEmptyColor ?? 'transparent'}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={(noNaN(ringWidth) ?? 0) * 100}\n />\n <path\n {...gauge.getArcProps({\n offset: offset - (noNaN(ringWidth) ?? 0) * 100,\n startAngle: 180,\n endAngle:\n valueToAngle(value) === 360\n ? 179 + valueToAngle(value)\n : 180 + valueToAngle(value),\n })}\n stroke={getColor(value)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"square\"\n strokeWidth={(noNaN(ringWidth) ?? 0) * 100}\n style={{\n transition: 'stroke 0.5s',\n }}\n />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n alignmentBaseline=\"central\"\n color={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","const colorGetter = (\n valueRanges: number[],\n colorRanges: string[],\n innerValue: number,\n) => {\n let color = '';\n valueRanges.forEach((value, index) => {\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\n color = colorRanges[index - 1];\n }\n });\n return color;\n};\n\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n}\n\nfunction getInnerColor(\n valueRanges: number[],\n colorRanges: string[],\n value: number,\n) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n}\n\nconst valueToTickPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n\n return Math.round(percentage);\n};\n\nconst valueToPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n const test = (percentage * 69) / 100;\n\n return Math.round(test);\n};\n\nexport {\n colorGetter,\n getColor,\n getInnerColor,\n valueToPercent,\n valueToTickPercent,\n};\n","const colorGetter = (\n valueRanges: number[],\n colorRanges: string[],\n innerValue: number,\n) => {\n let color = '';\n valueRanges.forEach((value, index) => {\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\n color = colorRanges[index - 1];\n }\n });\n return color;\n};\n\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n}\n\nfunction getInnerColor(\n valueRanges: number[],\n colorRanges: string[],\n value: number,\n) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n}\n\nconst valueToTickPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n\n return Math.round(percentage);\n};\n\nconst valueToPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n const test = (percentage * 69) / 100;\n\n return Math.round(test);\n};\n\nexport {\n colorGetter,\n getColor,\n getInnerColor,\n valueToPercent,\n valueToTickPercent,\n};\n","import { noNaN } from '@apia/util';\nimport { useState, useRef, useCallback } from 'react';\nimport { valueToPercent } from './util';\n\nexport const useCustomWidget = ({\n maxValue,\n minValue,\n currentValue,\n panelId,\n}: {\n maxValue: number;\n minValue: number;\n currentValue: number;\n panelId: string;\n}) => {\n const baseValue = minValue;\n const domainMax = maxValue;\n\n const [yDifference, setYDifference] = useState(0);\n const svgRect = useRef<DOMRect>({} as DOMRect);\n const pathRect = useRef<DOMRect>({} as DOMRect);\n\n const onRenderRect = useCallback(\n (el: SVGRectElement) => {\n if (!el) return;\n\n const svgElement = el.closest('svg');\n const pathElement = svgElement?.querySelector(`#path_${panelId}`);\n\n if (!svgElement) throw new Error('No svg');\n if (!pathElement) throw new Error('No path');\n\n const svgBox = svgElement.getBoundingClientRect();\n const pathBox = pathElement.getBoundingClientRect();\n\n const pathY = pathBox.y - svgBox.y;\n\n svgRect.current = svgBox;\n pathRect.current = pathBox;\n setYDifference(pathY);\n },\n [panelId],\n );\n\n const pathX = noNaN(pathRect.current.x - svgRect.current.x);\n const pathY = noNaN(pathRect.current.y - svgRect.current.y);\n const pathWidth = noNaN(pathRect.current.width);\n const pathHeight = noNaN(pathRect.current.height);\n\n const viewBox = `${pathX} ${pathY} ${pathWidth} ${pathHeight}`;\n\n const rectProps: React.SVGProps<SVGRectElement> = {\n y: noNaN(\n (valueToPercent(domainMax, baseValue, currentValue) * pathHeight) / 100 +\n yDifference,\n ),\n x: pathX,\n width: pathWidth,\n height: pathHeight,\n style: {\n visibility: 'visible',\n transition: 'y 0.5s, fill 0.5s',\n },\n };\n\n return {\n rectRef: onRenderRect,\n svgViewBox: viewBox,\n rectProps,\n pathX,\n pathY,\n pathRect,\n svgRect,\n };\n};\n","import { Box } from '@apia/theme';\nimport { TApiaWidgetProps } from '../types';\nimport {\n valueToTickPercent,\n colorGetter,\n getInnerColor,\n getColor,\n} from './util';\nimport { noNaN } from '@apia/util';\nimport { useCustomWidget } from '../custom/useCustomWidget';\n// Usar un segundo svg para los textos\nexport const Thermometer = ({\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n width,\n panelId,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const value = currentValue;\n const baseValue = noNaN(minValue) ?? valueRanges[0];\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const pathDValue = `m 179.6875,717.73633 c -0.45013,0 -0.8125,0.36237 -0.8125,0.8125 l 0,8.46289 a 2.3125,2.3125 0 0 0 -1.5,2.16211 2.3125,2.3125 0 0 0 2.3125,2.3125 2.3125,2.3125 0 0 0 2.3125,-2.3125 2.3125,2.3125 0 0 0 -1.5,-2.16211 l 0,-8.46289 c 0,-0.45013 -0.36237,-0.8125 -0.8125,-0.8125 z`;\n\n const { rectProps, rectRef, svgViewBox, pathX, pathY } = useCustomWidget({\n currentValue: value,\n maxValue: domainMax,\n minValue: baseValue,\n panelId,\n });\n\n const boxValues = {\n height: noNaN(Math.max(width, height) - Math.max(width, height) * 0.31),\n width: noNaN(Math.max(width, height)),\n x: pathX,\n y: pathY,\n };\n\n const tickArray = valueRanges.map((val, i) => {\n return {\n height:\n boxValues.height *\n (valueToTickPercent(domainMax, baseValue, val) / 100),\n color: !valueRanges[i + 1]\n ? 'black'\n : colorGetter(valueRanges, colorRanges, val),\n value: val,\n };\n });\n\n return (\n <Box sx={{ position: 'relative' }}>\n <svg\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n id={`svg_${panelId}`}\n viewBox={svgViewBox}\n style={{ position: 'relative', top: '10px' }}\n >\n <clipPath id=\"clipPath\">\n <path d={pathDValue} />\n </clipPath>\n <mask id=\"myMask\">\n <path d={pathDValue} id=\"maskPath\" fill=\"white\" />\n </mask>\n\n <path d={pathDValue} id={`path_${panelId}`} fill=\"white\" />\n\n <rect\n fill={getInnerColor(valueRanges, colorRanges, value)}\n id={`rect_${panelId}`}\n mask=\"url(#myMask)\"\n ref={rectRef}\n {...rectProps}\n />\n\n <path\n d={pathDValue}\n id=\"path\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={10}\n clipPath=\"url(#clipPath)\"\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n clipPath=\"url(#clipPath)\"\n d={pathDValue}\n id=\"path\"\n fill=\"none\"\n stroke=\"black\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n </svg>\n <svg\n height={Math.max(width, height) + 10}\n width={Math.max(width, height)}\n style={{ position: 'absolute', left: 0, top: 0 }}\n >\n {boxValues.x && (\n <g>\n <text\n x={Math.max(width, height) / 2}\n y={Math.max(width, height) - Math.max(width, height) / 6 + 10}\n style={{\n fontSize: `${noNaN(currentValueFontSize) ?? 50}px`,\n }}\n textAnchor=\"middle\"\n alignmentBaseline={'central'}\n vectorEffect={'non-scaling-stroke'}\n >\n {value}\n </text>\n </g>\n )}\n {tickArray.map((tick, i) => {\n return (\n <g key={i}>\n <rect\n x={\n i === 0\n ? Math.max(width, height) / 2 + 30\n : Math.max(width, height) / 2 + 20\n }\n y={tick.height + 10}\n width={'15px'}\n height={'3px'}\n vectorEffect={'non-scaling-stroke'}\n fill={getColor(valueRanges, colorRanges, tick.value)}\n />\n <text\n x={\n i === 0\n ? Math.max(width, height) - Math.max(width, height) / 3 + 10\n : Math.max(width, height) - Math.max(width, height) / 3\n }\n y={tickArray[i + 1] ? tick.height + 16 : tick.height + 1.5}\n textAnchor=\"middle\"\n alignmentBaseline={\n tickArray[i + 1] ? 'auto' : 'text-before-edge'\n }\n >\n {tick.value}\n </text>\n </g>\n );\n })}\n </svg>\n </Box>\n );\n};\n","import { Scale } from './scale/Scale';\nimport { SpeedMeter } from './speedMeter/SpeedMeter';\nimport { TLight } from './tLight/TLight';\nimport { Oxford } from './oxford/Oxford';\nimport { Counter } from './counter/Counter';\nimport { Ring } from './ring/Ring';\nimport { Thermometer } from './thermometer/Thermometer';\n// import { Custom } from './custom/Custom';\nimport { TWidgetData } from './types';\nimport { arrayOrArray, getIndex } from '@apia/util';\nimport tinycolor from 'tinycolor2';\n\nexport const WidgetContainer = ({\n data,\n id,\n}: {\n data: TWidgetData;\n id: string;\n}) => {\n // const mockData: TWidgetData = {\n // border: true,\n // backgroundColor: 'white',\n // currentValue: 1010,\n // height: 400,\n // width: 400,\n // maxValue: 1050,\n // minValue: 1000,\n // noValueColor: '',\n // pointerColor: 'blue',\n // ringAnchor: 5,\n // scaleFontSize: 20,\n // valueColor: 'darkblue',\n // valueDecimals: 1,\n // valueFontSize: 50,\n // valueType: '',\n // widKpiType: 0,\n // zones: {\n // Zone: [\n // {\n // color: 'blue',\n // maximum: 1020,\n // minimum: 1000,\n // transparency: 230,\n // },\n // {\n // color: 'purple',\n // maximum: 1040,\n // minimum: 1020,\n // transparency: 150,\n // },\n // {\n // color: 'red',\n // maximum: 1050,\n // minimum: 1040,\n // transparency: 255,\n // },\n // ],\n // },\n // };\n\n const realData: TWidgetData = {\n ...data,\n };\n\n const valueRanges = Array.from(\n new Set(\n arrayOrArray(realData.zones.Zone)\n .map((zone) => {\n return [Number(zone.minimum), Number(zone.maximum)];\n })\n .flat()\n .sort((a, b) => a - b),\n ),\n );\n\n const colorRanges = arrayOrArray(realData.zones.Zone)\n .map((zone) => {\n return tinycolor(zone.color)\n .setAlpha(1 - (255 - zone.transparency) / 255)\n .toPercentageRgbString();\n })\n .flat();\n\n const CurrentWidget = getIndex(\n [SpeedMeter, Oxford, Counter, TLight, Thermometer, Scale, Ring],\n [\n realData.widKpiType === '1',\n realData.widKpiType === '2',\n realData.widKpiType === '3',\n realData.widKpiType === '4',\n realData.widKpiType === '5',\n realData.widKpiType === '6',\n realData.widKpiType === '7',\n ],\n 0,\n );\n\n return (\n <CurrentWidget\n addBorder={realData.border}\n backgroundColor={realData.backgroundColor}\n colorRanges={colorRanges}\n currentValue={Number(realData.currentValue)}\n decimals={realData.valueDecimals}\n currentValueColor={realData.valueColor}\n currentValueFontSize={realData.valueFontSize}\n forceProp={realData.forceProp}\n height={realData.height}\n panelId={id}\n maxValue={realData.maxValue}\n minValue={realData.minValue}\n pointerColor={realData.pointerColor}\n ringEmptyColor={realData.noValueColor}\n ringWidth={realData.ringAnchor}\n scaleValuesSize={realData.scaleFontSize}\n valueRanges={valueRanges}\n width={realData.width}\n />\n );\n};\n"],"names":["Bar","_a","__spreadProps","__spreadValues","adjustDimensions","_b","Fragment","min","max","step","START_ANGLE","END_ANGLE","angle","value","pathY"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEO,SAAS,YACd,MAAwC,GAAA;AAAA,EACtC,IAAM,EAAA,GAAA;AAAA,EACN,KAAO,EAAA,EAAA;AAAA,EACP,GAAK,EAAA,EAAA;AAAA,EACL,MAAQ,EAAA,EAAA;AACV,CACA,EAAA;AACA,EAAA,OAAO,OAAO,MAAA,KAAW,QACrB,GAAA,EAAE,IAAM,EAAA,MAAA,EAAQ,KAAO,EAAA,MAAA,EAAQ,GAAK,EAAA,MAAA,EAAQ,MAAQ,EAAA,MAAA,EACpD,GAAA,MAAA,CAAA;AACN;;ACNA,MAAM,oBAAoB,CAAC;AAAA,EACzB,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AACF,CAQM,KAAA;AACJ,EAAA,MAAM,EAAE,EAAA,EAAI,OAAQ,EAAA,GAAI,6BAA8B,EAAA,CAAA;AACtD,EAAM,MAAA,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AACA,IAAa,YAAA,CAAA,OAAA,EAAS,aAAa,OAAO,CAAA,CAAA;AAAA,GACzC,EAAA,CAAC,UAAY,EAAA,OAAA,EAAS,OAAO,CAAC,CAAA,CAAA;AACjC,EAAM,MAAA,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AACA,IAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AACjC,IAAa,YAAA,CAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AAAA,GACpC,EAAA,CAAC,UAAY,EAAA,OAAO,CAAC,CAAA,CAAA;AACxB,EACE,uBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,MAAA;AAAA,MACR,SAAA,EAAW,CAAG,EAAA,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,EAAM,CAAA,CAAA,EAAA,aAAA,GAAgB,cAAc,EAC7D,CAAA,CAAA,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,WAAc,GAAA,EAAA,CAAA,WAAA,CAAA;AAAA,MAErD,WAAW,KAAS,IAAA,OAAA;AAAA,MACpB,IAAM,EAAA,KAAA,KAAU,aAAgB,GAAA,KAAA,CAAA,GAAY,KAAM,CAAA,YAAA;AAAA,MAClD,YAAc,EAAA,gBAAA;AAAA,MACd,YAAc,EAAA,gBAAA;AAAA,MAEb,QAAA,EAAA,KAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,CAAA;;AC9CA,MAAM,qBAAqB,CAAC;AAAA,EAC1B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AACF,CAQM,KAAA;AACJ,EAAA,MAAM,EAAE,EAAA,EAAI,OAAQ,EAAA,GAAI,6BAA8B,EAAA,CAAA;AACtD,EAAM,MAAA,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AACA,IAAa,YAAA,CAAA,OAAA,EAAS,aAAa,OAAO,CAAA,CAAA;AAAA,GACzC,EAAA,CAAC,UAAY,EAAA,OAAA,EAAS,OAAO,CAAC,CAAA,CAAA;AACjC,EAAM,MAAA,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AACA,IAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AACjC,IAAa,YAAA,CAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AAAA,GACpC,EAAA,CAAC,UAAY,EAAA,OAAO,CAAC,CAAA,CAAA;AACxB,EACE,uBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,MAAA;AAAA,MACR,SAAA,EAAW,CAAG,EAAA,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,EAAM,CAAA,CAAA,EAAA,aAAA,GAAgB,cAAc,EAC7D,CAAA,CAAA,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,WAAc,GAAA,EAAA,CAAA,WAAA,CAAA;AAAA,MAErD,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,MAAS,GAAA,GAAA;AAAA,OACzD;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACd,YAAc,EAAA,gBAAA;AAAA,MAEb,QAAA,EAAA,KAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,CAAA;;ACzCO,MAAM,CAAC,sBAAwB,IAAE,eAAe,CAAA,GACrD,yBAQI,CAAA;AAAA,EACF,YAAc,EAAA;AAAA,IACZ,mBAAqB,EAAA,EAAA;AAAA,GACvB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,SAAA,CAAU,UAAU,mBAA6B,EAAA;AAC/C,MAAA,OAAA,CAAQ,IAAI,mBAAmB,CAAA,CAAA;AAE/B,MAAS,QAAA,CAAA,EAAE,qBAAqB,CAAA,CAAA;AAAA,KAClC;AAAA,GACF;AAAA,EACA,WAAW,CAAC;AAAA,IACV,UAAA;AAAA,IACA,mBAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,GACI,KAAA;AACJ,IACE,uBAAA,GAAA,CAAC,OAAI,SAAW,EAAA,CAAA,eAAA,CAAA,EACb,WAAC,WACE,GAAA,UAAA,CAAW,GAAI,CAAA,CAAC,IAAS,KAAA;AACvB,MACE,uBAAA,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,KAAK,KAAU,KAAA,mBAAA;AAAA,UAC9B,kBAAkB,mBAAwB,KAAA,EAAA;AAAA,UAC1C,SAAS,IAAK,CAAA,KAAA;AAAA,UAEd,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,YAAY,UAAc,IAAA,IAAA,GAAA,UAAA,GAAA,KAAA;AAAA,SAAA;AAAA,QAHrB,IAAK,CAAA,KAAA;AAAA,OAIZ,CAAA;AAAA,KAEH,CACD,GAAA,UAAA,CAAW,GAAI,CAAA,CAAC,MAAM,CAAM,KAAA;AAC1B,MACE,uBAAA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,KAAK,KAAU,KAAA,mBAAA;AAAA,UAC9B,kBAAkB,mBAAwB,KAAA,EAAA;AAAA,UAC1C,SAAS,IAAK,CAAA,KAAA;AAAA,UAEd,QAAA,EAAU,GAAG,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,UACjB,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,YAAY,UAAc,IAAA,IAAA,GAAA,UAAA,GAAA,KAAA;AAAA,SAAA;AAAA,QAHrB,IAAK,CAAA,KAAA;AAAA,OAIZ,CAAA;AAAA,KAEH,CACP,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF,CAAC,CAAA;;AC9DU,MAAA,YAAA,GAAe,aAA6B,CAAA,EAAmB,CAAA;;ACWrE,MAAMA,QAAM,CAAC;AAAA,EAClB,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AACF,CAOM,KAAA;AAhCN,EAAA,IAAA,EAAA,CAAA;AAiCE,EAAA,MAAM,SAAS,YAAa,CAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CAAE,IAAI,KAAK,CAAA,CAAA;AAC1D,EAAA,MAAM,MAAM,YAAa,CAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,IAAI,CAAA,CAAE,SAAS,KAAK,CAAA,CAAA;AACrD,EAAA,MAAM,mBAAkB,EAAc,GAAA,aAAA,CAAA,IAAA;AAAA,IACpC,CAAC,aACC,QAAS,CAAA,UAAA,KAAe,OAAO,IAAQ,IAAA,QAAA,CAAS,QAAQ,GAAI,CAAA,GAAA;AAAA,QAFxC,IAGrB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACH,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AACxD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAC9D,EAAM,MAAA,GAAA,GAAM,OAA8B,IAAI,CAAA,CAAA;AAE9C,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,aAAe,EAAA;AACvB,MAAA,IAAI,OAAU,GAAA,aAAA,CAAA;AACd,MAAA,IAAI,UAAa,GAAA,EAAA,CAAA;AACjB,MAAI,IAAA,aAAA,CAAc,QAAS,CAAA,KAAK,CAAG,EAAA;AACjC,QAAA,OAAA,GAAU,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACtC,QAAA,UAAA,GAAa,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACzC,QAAA,IAAI,QAAY,IAAA,aAAA,KAAkB,EAAM,IAAA,aAAA,KAAkB,KAAW,CAAA,EAAA;AACnE,UAAA,OAAA,GAAU,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACtC,UAAA,UAAA,GAAa,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,SAC3C;AAAA,OACF;AACA,MAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AACrC,QAAA,IAAI,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAE,WAAW,CAAG,EAAA;AAClD,UAAA,gBAAA,CAAiB,OAAY,KAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAU,CAAA,CAAA;AAClE,UAAA,mBAAA;AAAA,YACE,YAAY,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,cAAc,OAAY,KAAA,EAAA;AAAA,WACnE,CAAA;AACA,UACE,IAAA,OAAA,KAAY,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UACvC,IAAA,UAAA,KAAe,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC1C,EAAA;AACA,YAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,cAC3B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAO,EAAA;AAAA,sBACL,KAAO,EAAA,eAAA;AAAA,qBACT;AAAA,oBAEA,8BAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAW,EAAA,CAAA;AAAA,mBAAA;AAAA,iBACjD;AAAA,gBACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,gCACrC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,GAAI,EAAA,CAAA;AAAA,eAChB,EAAA,CAAA;AAAA,cAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,cAC3B,0BAA4B,EAAA,QAAA;AAAA,aAC7B,CAAA,CAAA;AAAA,WACH;AAAA,SACK,MAAA;AACL,UAAiB,gBAAA,CAAA,OAAA,KAAY,IAAI,GAAG,CAAA,CAAA;AACpC,UAAA,mBAAA,CAAoB,OAAY,KAAA,GAAA,CAAI,GAAO,IAAA,OAAA,KAAY,EAAE,CAAA,CAAA;AACzD,UAAA,MAAM,aAAa,QAAS,CAAA,aAAA;AAAA,YAC1B,IAAI,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,eAAe,GAAI,CAAA,GAAA,CAAA,CAAA;AAAA,WACpD,CAAA;AACA,UACE,IAAA,OAAA,KAAY,IAAI,GAChB,IAAA,UAAA,KAAe,WAAW,QAAS,CAAA,KAAK,EAAE,UAC1C,EAAA;AACA,YAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,cAC3B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAO,EAAA;AAAA,sBACL,KAAO,EAAA,eAAA;AAAA,qBACT;AAAA,oBAEA,8BAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAW,EAAA,CAAA;AAAA,mBAAA;AAAA,iBACjD;AAAA,gBACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,gCACrC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,GAAI,EAAA,CAAA;AAAA,eAChB,EAAA,CAAA;AAAA,cAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,cAC3B,0BAA4B,EAAA,QAAA;AAAA,aAC7B,CAAA,CAAA;AAAA,qBACQ,OAAY,KAAA,GAAA,CAAI,GAAO,IAAA,UAAA,IAAc,eAAe,EAAI,EAAA;AACjE,YAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,cAC3B,QAAU,EAAA,UAAA,CAAW,GAAI,CAAA,CAAC,KAAK,CAAM,KAAA;AACnC,gBAAA,4BACG,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAO,EAAA;AAAA,wBACL,KAAO,EAAA,eAAA;AAAA,uBACT;AAAA,sBAEA,QAAA,kBAAA,GAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,UAAW,EAAA,CAAA;AAAA,qBAAA;AAAA,mBAC1B;AAAA,kBACC,MAAM,UAAc,oBAAA,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,OAAO,CAAE,EAAA,CAAA;AAAA,kCACvC,GAAA,CAAA,KAAA,EAAA,EACE,QAAO,EAAA,MAAA,CAAA,IAAA,CAAK,GAAG,CAAE,CAAA,IAAA;AAAA,oBAChB,CAAC,GAAQ,KAAA,GAAA,CAAI,GAAG,CAAA,KAAM,IAAI,OAAO,CAAA;AAAA,mBAErC,EAAA,CAAA;AAAA,kBACC,UAAW,CAAA,CAAA,GAAI,CAAC,CAAA,wBAAM,IAAG,EAAA,EAAA,CAAA;AAAA,iBAAA,EAAA,EAdlB,CAAG,EAAA,GAAA,CAAI,UAAc,CAAA,CAAA,EAAA,GAAA,CAAI,OAAO,CAe1C,CAAA,CAAA,CAAA,CAAA;AAAA,eAEH,CAAA;AAAA,cACD,qBAAuB,EAAA,IAAA;AAAA,aACxB,CAAA,CAAA;AAAA,WACH;AAAA,SACF;AAAA,iBACS,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AAC5C,QAAA,gBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,GAAA,CAAI,GAC9B,IAAA,OAAA,CAAQ,KAAM,CAAA,KAAK,CAAE,CAAA,CAAC,MAAM,GAAI,CAAA,GAAA;AAAA,SACpC,CAAA;AACA,QAAA,mBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,KAAM,GAAI,CAAA,GAAA,IAAO,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,EAAA;AAAA,SACrE,CAAA;AACA,QACE,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,GAAA,CAAI,OAChC,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAE,CAAA,CAAC,MAAM,GAAI,CAAA,GAAA,IAChC,eAAe,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC1C,EAAA;AACA,UAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,YAC3B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA;AAAA,oBACL,KAAO,EAAA,eAAA;AAAA,mBACT;AAAA,kBAEA,8BAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAW,EAAA,CAAA;AAAA,iBAAA;AAAA,eACjD;AAAA,cACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,8BACrC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,GAAI,EAAA,CAAA;AAAA,aAChB,EAAA,CAAA;AAAA,YAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,YAC3B,0BAA4B,EAAA,QAAA;AAAA,WAC7B,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,OAAA,EAAY,GAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAC3C,EAAA,2BACG,GAkBC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAG,EAAA,MAAA;AAAA,MACH,WAAW,CAAkB,eAAA,EAAA,UAAA,CAAW,SAAS,KAAK,CAAA,CAAE,eACtD,GAAI,CAAA,GAAA,CAAA,CAAA;AAAA,MAEN,GAAA;AAAA,MACA,EAAI,EAAA,OAAA;AAAA,QACF,OAAO;AAAA,UACL,IAAA,EAAM,gBACF,GAAA,CAAA,CAAA,EAAI,SAAU,CAAA,eAAe,EAAE,UAAW,CAAA,EAAE,CAAE,CAAA,KAAA,EAC9C,CAAA,CAAA,GAAA,eAAA;AAAA,UACJ,SAAW,EAAA;AAAA,YACT,IAAA,EAAM,IAAI,SAAU,CAAA,eAAe,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,WAC1D;AAAA,UACA,UAAY,EAAA,2BAAA;AAAA,UACZ,GAAG,GAAI,CAAA,CAAA;AAAA,UACP,GAAG,GAAI,CAAA,CAAA;AAAA,UACP,KAAA,EAAO,GAAI,CAAA,KAAA,GAAQ,eAAgB,CAAA,IAAA;AAAA,UACnC,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,IAAO,GAAA,CAAA;AAAA,UACrD,MAAQ,EAAA,GAAA,CAAI,MAAS,GAAA,CAAA,GAAI,IAAI,MAAS,GAAA,CAAA;AAAA,SACxC,CAAA;AAAA,QACA;AAAA,UACE,GAAI,CAAA,MAAA;AAAA,UACJ,GAAI,CAAA,KAAA;AAAA,UACJ,GAAI,CAAA,CAAA;AAAA,UACJ,GAAI,CAAA,CAAA;AAAA,UACJ,eAAA;AAAA,UACA,eAAgB,CAAA,IAAA;AAAA,UAChB,gBAAA;AAAA,UACA,aAAA;AAAA,SACF;AAAA,OACF;AAAA,MACA,YAAA,EAAc,CAAC,EAAO,KAAA;AA/N9B,QAAA,IAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAgOU,QAAA,IAAI,CAAC,QAAU,EAAA;AACb,UAAuB,sBAAA,CAAA,SAAA,CAAU,OAAS,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAAA,SAC5C,MAAA;AACL,UAAuB,sBAAA,CAAA,SAAA;AAAA,YACrB,OAAA;AAAA,YACA,UAAA,CAAW,QAAS,CAAA,KAAK,CAAE,CAAA,UAAA;AAAA,WAC7B,CAAA;AAAA,SACF;AACA,QAAA,YAAA;AAAA,UACE,OAAA;AAAA,UACA,WAAA;AAAA,UACA,GAAG,GAAI,CAAA,GAAA,CAAA,GAAA,EAAS,UAAW,CAAA,QAAA,CAAS,KAAK,CAAE,CAAA,UAAA,CAAA,CAAA;AAAA,SAC7C,CAAA;AACA,QAAA,CAACA,MAAA,EAAG,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAqC,GAAI,CAAA,MAAA,CAAA,CAAA;AAC1C,QAAA,MAAM,KAAQ,GAAA;AAAA,UACZ,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,UACnB,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,SACrB,CAAA;AACA,QAAI,IAAA,CAAC,KAAS,IAAA,CAAC,KAAM,CAAA,UAAA;AAAY,UAAA,OAAA;AAAA,OACnC;AAAA,MACA,YAAA,EAAc,CAAC,EAAO,KAAA;AApP9B,QAAAA,IAAAA,GAAAA,CAAAA;AAqPU,QAAuB,sBAAA,CAAA,SAAA,CAAU,SAAS,EAAE,CAAA,CAAA;AAC5C,QAAa,YAAA,CAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AAErC,QAAA,CAACA,MAAA,EAAG,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAqC,MAAO,CAAA,MAAA,CAAA,CAAA;AAAA,OAC/C;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,aAAc,EAAA,OAAA;AAAA,UACd,IAAM,EAAA,CAAA;AAAA,UACN,IAAI,GAAI,CAAA,KAAA;AAAA,UACR,GAAI,EAAA,MAAA;AAAA,UACJ,QAAU,EAAA,OAAA;AAAA,UACV,UAAY,EAAA,cAAA;AAAA,UACZ,QAAU,EAAA,MAAA;AAAA,SAAA;AAAA,OACZ;AAAA,KAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACrQO,SAAS,WACd,CAAA,MAAA,EACA,KACA,EAAA,YAAA,GAAe,KACf,EAAA;AACA,EAAA,MAAM,SAAS,MAAO,CAAA,MAAA,CAAA;AACtB,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAA,IAAI,QAAW,GAAA,EAAA,CAAA;AACf,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACjB,MAAA,QAAA,GAAW,OAAO,KAAK,CAAA,CAAA;AAAA,KAClB,MAAA;AACL,MAAA,IAAI,UAAa,GAAA,KAAA,CAAA;AACjB,MAAA,OAAO,cAAc,MAAQ,EAAA;AAC3B,QAAA,UAAA,GAAa,KAAQ,GAAA,MAAA,CAAA;AACrB,QAAA,KAAA,EAAA,CAAA;AAAA,OACF;AACA,MAAW,QAAA,GAAA,SAAA,CAAU,MAAO,CAAA,KAAA,GAAQ,MAAM,CAAC,EACxC,UAAW,CAAA,KAAA,GAAQ,CAAC,CAAA,CACpB,KAAM,EAAA,CAAA;AAAA,KACX;AAAA,GACK,MAAA;AACL,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACjB,MAAA,QAAA,GAAW,OAAO,KAAK,CAAA,CAAA;AAAA,KAClB,MAAA;AACL,MAAA,QAAA,GAAW,UAAU,MAAO,CAAA,KAAA,GAAQ,MAAM,CAAC,EAAE,KAAM,EAAA,CAAA;AAAA,KACrD;AAAA,GACF;AACA,EAAO,OAAA,QAAA,CAAA;AACT;;;;;;;;;;;;;;;;;;;;;AC3BO,SAAS,eACd,UACoC,EAAA;AANtC,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAOE,EAAM,MAAA,EAAE,KAAM,EAAA,GAAI,UAAW,EAAA,CAAA;AAE7B,EAAA,IAAI,CAAC,KAAM,CAAA,MAAA;AACT,IAAA,OAAA,CAAQ,MAAM,qDAAqD,CAAA,CAAA;AAErE,EAAA,MAAM,UAAW,EAAM,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,MAAA,KAAN,IACb,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KADa,YACH,EAAC,CAAA;AACf,EAAA,MAAM,gBAAgB,MAAO,CAAA,MAAA,CAAA;AAC7B,EAAA,MAAM,kBAAqB,GAAA;AAAA,IACzB,MAAQ,EAAA,cAAA;AAAA,MACN,KAAM,CAAA,MAAA;AAAA;AAAA,MAAA,CAEN,YAAO,UAAc,IAAA,UAAA,KAAe,MAAM,UAAa,GAAA,MAAM,MAA7D,IACI,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA;AAAA,KACN;AAAA,GACF,CAAA;AACA,EAAA,IACE,OAAO,kBAAA,CAAmB,MAAW,KAAA,QAAA,IACrC,mBAAmB,MACnB,EAAA;AACA,IAAA,MAAM,eAAyB,MAAO,CAAA,OAAA;AAAA,MACpC,kBAAmB,CAAA,MAAA;AAAA,KACrB,CAAE,GAAI,CAAA,CAAC,CAAM,KAAA;AACX,MAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AAC1C,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,IAAK,CAAE,CAAA,CAAC,CAAa,CAAA,UAAA,CAAW,MAAM,CAAG,EAAA;AACvC,UAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,OAAO,CACxB,CAAA,gBAAA,CAAkB,CAAE,CAAA,CAAC,CAAa,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,SACnD;AACA,QAAA,OAAO,OACJ,gBAAiB,CAAA,OAAO,EACxB,gBAAiB,CAAA,CAAA,CAAE,CAAC,CAAsB,CAAA,CAAA;AAAA,OAC/C;AAEA,MAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,QAAA,CAAS,aAAc,CAAA,GAAG,CAAY,CACvD,CAAA,gBAAA,CAAiB,CAAE,CAAA,CAAC,CAAsB,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AACD,IAAA,OAAOC,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,aAAA,CAAA,EAAL,EAAoB,MAAA,EAAQ,YAAa,EAAA,CAAA,CAAA;AAAA,GAClD;AAKF;;;;;;;;;;;;;;;;;;;;;AC/BA,SAASC,kBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AAEA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqB,CAAE,CAAA,UAAA,CAAA;AAe1C,MAAM,iBAAiB,CAAC;AAAA,EACtB,MAAA,GAAS,EAAE,GAAK,EAAA,EAAA,EAAI,MAAM,EAAI,EAAA,MAAA,EAAQ,GAAK,EAAA,KAAA,EAAO,EAAG,EAAA;AAAA,EACrD,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AACF,CAA2B,KAAA;AA/D3B,EAAA,IAAA,EAAA,CAAA;AAgEE,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM,CAAA,CAAA;AAC1C,EAAI,IAAA,UAAA,GACF,MAAM,KAAM,CAAA,KAAA,GAAA,CAAS,CAAC,eAAgB,CAAA,IAAA,GAAO,gBAAgB,KAAS,IAAA,CAAA,CAAA;AACxE,EAAI,IAAA,WAAA,GACF,MAAM,KAAM,CAAA,MAAA,GAAA,CAAU,CAAC,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AACzE,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAYA,kBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,MAAM,WAAW,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,IAAI,CAC/C,CAAA,MAAA,CAAO,CAAC,MAAA,KAAW,CAAC,CAAC,MAAA,CAAO,IAAI,CAChC,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACf,IAAA,OAAOF,qCACF,MADE,CAAA,EAAA;AAAA,MAEL,MAAM,MAAO,CAAA,IAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACD,CAAA,CAAA;AAEH,EAAA,MAAM,UAAU,YAAa,CAAA,QAAA,CAAS,CAAC,CAAA,CAAE,IAAI,CAAE,CAAA,GAAA;AAAA,IAC7C,CAAC,eAAe,UAAW,CAAA,GAAA;AAAA,GAC7B,CAAA;AACA,EAAA,MAAM,WAAc,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,GAAQ,KAAA;AACxC,IAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,MAAM,UAA8B,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,CAAM,KAAA;AACrD,IAAA,MAAM,MAAqB,QAAS,CAAA,MAAA;AAAA,MAClC,CAAC,KAAK,MAAW,KAAA;AACf,QAAA,OAAOA,qCACF,GADE,CAAA,EAAA;AAAA,UAEL,CAAC,MAAO,CAAA,IAAI,GAAG,YAAA,CAAa,OAAO,IAAI,CAAA,CAAE,MAAO,CAAA,CAAC,KAAU,KAAA;AACzD,YAAA,OAAO,MAAM,GAAQ,KAAA,CAAA,CAAA;AAAA,WACtB,CAAE,CAAA,CAAC,CAAE,CAAA,KAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACF;AAAA,MACA,EAAE,YAAY,CAAE,EAAA;AAAA,KAClB,CAAA;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,SAAS,SAAkB,CAAA;AAAA,IAC/B,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,GAAA;AAAA,MACpB,WAAA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,UAAW,CAAA,GAAA,CAAI,SAAS,CAAA;AAAA,IAChC,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AAED,EAAA,MAAM,mBAAmB,SAAkB,CAAA;AAAA,IACzC,MAAQ,EAAA,WAAA;AAAA,IACR,KAAO,EAAA,CAAC,CAAG,EAAA,MAAA,CAAO,WAAW,CAAA;AAAA,GAC9B,CAAA,CAAA;AAED,EAAA,MAAM,YAAY,QAAiB,CAAA;AAAA,IACjC,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,IAAA;AAAA,MACpB,UAAA;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,GAAG,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KACjB,IAAK,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAO,CAAA,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACF;AAAA,IACA,IAAM,EAAA,EAAA;AAAA,GACP,CAAA,CAAA;AAED,EAAA,MAAM,aAAa,WAAoB,CAAA;AAAA,IACrC,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,IAAA;AAAA,MACpB,UAAA;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,GAAG,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KACjB,IAAK,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAO,CAAA,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,QAAQ,YAA6B,CAAA;AAAA,IACzC,MAAQ,EAAA,WAAA;AAAA,IACR,OAAO,QAAS,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,IAAI,KAAK,CAAA;AAAA,GACvC,CAAA,CAAA;AAED,EAAA,MAAM,UAAa,GAAA,KAAA,CAAA;AAEnB,EAAM,MAAA,MAAA,GAAS,QAAQ,MAAM;AAC3B,IAAiB;AACf,MAAO,OAAA,UAAA,CAAA;AAAA,KACT;AACO,GACN,EAAA,CAAC,UAAY,EAAA,UAAA,EAAY,SAAS,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,iBAAiB,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AAC1D,EAAA,eAAA,CAAgB,MAAM;AACpB,IACG,QAAA,CAAA,gBAAA;AAAA,MACC,CAAA,CAAA,EAAI,SAAU,OAAsB,IAAA,IAAA,GAAA,OAAA,GAAA,cAAA,CAAA,CAAA;AAAA,KACtC,CACC,OAAQ,CAAA,CAAC,OAAY,KAAA;AACpB,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,qBAAA,EAAwB,CAAA,KAAA,CAAA;AAE9C,MAAA,OAAA,CAAQ,KAAM,CAAA,eAAA,GACX,OAAQ,CAAA,YAAA,CAAa,GAAG,CAAe,GAAA,SAAA,CAAA;AAE1C,MAAQ,OAAA,CAAA,KAAA,CAAM,SAAY,GAAA,CAAA,yBAAA,EAA4B,KAAQ,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AACD,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAC/C,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AACA,EAAM,MAAA,aAAA,GAAgB,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AAC3E,IAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,IAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,MACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,QACE,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACF;AAAA,KACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,MACE,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,KAEF,GAAA,EAAA,CAAA;AACN,IAAA,MAAM,qBAAmD,EAAC,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,kBAAA,CAAmB,KAAKA,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAL,EAAU,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAmB,kBAAA,CAAA,IAAA,CAAKD,qCACnB,GADmB,CAAA,EAAA;AAAA,UAEtB,KAAO,EAAA,SAAA;AAAA,UACP,YAAY,IAAK,CAAA,IAAA;AAAA,SAClB,CAAA,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,kBAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,cAAkC,GAAA,YAAA,CAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA;AAAA,IACxE,CAAC,MAAM,KAAU,KAAA;AACf,MAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,MAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,QACE,YAAA;AAAA,UACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,YACE,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,WACF;AAAA,SACN;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,OAEF,GAAA,EAAA,CAAA;AACN,MAAO,OAAA;AAAA,QACL,KAAO,EAAA,SAAA;AAAA,QACP,OAAO,IAAK,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,GACF,CAAA;AACA,EAAA,IAAI,kBAAmC,EAAC,CAAA;AACxC,EAAI,IAAA,cAAA,CAAe,WAAW,CAAG,EAAA;AAC/B,IAAkB,eAAA,GAAA,YAAA;AAAA,MAChB,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAE,CAAC,CAAE,CAAA,IAAA;AAAA,KACrC,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AACrB,MAAO,OAAA;AAAA,QACL,KAAA,EAAO,GAAG,KAAQ,GAAA,CAAA,CAAA,CAAA;AAAA,QAClB,OAAO,IAAK,CAAA,GAAA;AAAA,OACd,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACA,EAAA,YAAA,CAAa,MAAM,QAAS,CAAA,IAAI,CAC7B,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,IAAA,MAAM,cAAkD,EAAC,CAAA;AACzD,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,WAAA,CAAY,IAAK,CAAA;AAAA,UACf,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,KAAO,EAAA,IAAA,CAAK,IAAO,GAAA,KAAA,GAAQ,GAAI,CAAA,GAAA;AAAA,SAChC,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,WAAA,CAAA;AAAA,GACR,CACA,CAAA,IAAA,EACA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA,cAAA,CAAe,IAAK,CAAA,MAAM,CAAC,CAAA,CAAA;AAElD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,MAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAW,EAAA,CAAA,EAAG,cAAkB,IAAA,IAAA,GAAA,cAAA,GAAA,EAAA,CAAA,CAAA,EAAM,WACpC,KAAM,CAAA,KAAA,CAAA,wBAAA,CAAA;AAAA,QAER,EAAA,EAAI,KAAM,CAAA,OAAA,CAAQ,MAAM;AACtB,UAAO,OAAA;AAAA,YACL,CAAC,CAAA,GAAA,EAAO,OAAsB,IAAA,IAAA,GAAA,OAAA,GAAA,cAAA,CAAA,CAAgB,GAAG;AAAA,cAC/C,SAAW,EAAA,eAAA;AAAA,cACX,eAAiB,EAAA,cAAA;AAAA,aACnB;AAAA,YACA,QAAU,EAAA,QAAA;AAAA,YACV,QAAU,EAAA,UAAA;AAAA,YAEV,MAAA,EAAQ,CAAG,EAAA,KAAA,CAAM,KAAM,CAAA,MAAA,CAAA,EAAA,CAAA;AAAA;AAAA,WAEzB,CAAA;AAAA,WACC,CAAC,KAAA,CAAM,MAAM,MAAQ,EAAA,OAAA,EAAS,cAAc,CAAC,CAAA;AAAA,QAEhD,QAAA,kBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,UAAA;AAAA,YACL,SAAW,EAAA,CAAA,CAAA,EAAI,OAAW,CAAA,CAAA,EAAA,SAAA,GAAY,SAAY,GAAA,EAAA,CAAA,WAAA,CAAA;AAAA,YAClD,MAAA,EAAQ,MAAM,KAAM,CAAA,MAAA;AAAA,YACpB,KAAA,EAAO,MAAM,KAAM,CAAA,KAAA;AAAA,YACnB,KAAO,EAAA;AAAA,cACL,QAAU,EAAA,UAAA;AAAA,aACZ;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,QACL,oBAAA,GAAA;AAAA,gBAAC,IAAK,CAAA,IAAA;AAAA,gBAAL;AAAA,kBACC,MAAA;AAAA,kBACA,MAAA;AAAA,kBACA,IAAM,EAAA,CAAA;AAAA,kBACN,KAAO,EAAA,UAAA;AAAA,kBACP,MAAQ,EAAA,WAAA;AAAA,kBACR,YAAc,EAAA,EAAA;AAAA,kBACd,eAAiB,EAAA,EAAA;AAAA,kBACjB,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,iBAAA;AAAA,eAE/B;AAAA,8BAEF,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,kBAE7B,MAAM,eAAgB,CAAA,IAAA;AAAA,kBAEtB,QAAA,kBAAA,GAAA;AAAA,oBAAC,kBAAA;AAAA,oBAAA;AAAA,sBACC,IAAM,EAAA,UAAA;AAAA,sBACN,IAAM,EAAA,WAAA;AAAA,sBACN,KAAO,EAAA,UAAA;AAAA,sBACP,EAAI,EAAA,SAAA;AAAA,sBACJ,OAAS,EAAA,MAAA;AAAA,sBACT,OAAS,EAAA,gBAAA;AAAA,sBACT,MAAA;AAAA,sBACA,KAAA;AAAA,sBAEC,QAAC,EAAA,CAAA,SAAA,KACA,SAAU,CAAA,GAAA,CAAI,CAAC,QAAa,KAAA;AAC1B,wBACE,uBAAA,GAAA;AAAA,0BAAC,KAAA;AAAA,0BAAA;AAAA,4BAEC,KAAK,QAAS,CAAA,EAAA;AAAA,4BAEb,QAAS,EAAA,QAAA,CAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AAC1B,8BAAA,MAAM,MAAM,CAAG,EAAA,QAAA,CAAS,KAAS,CAAA,CAAA,EAAA,GAAA,CAAI,SAAS,GAAI,CAAA,GAAA,CAAA,CAAA,CAAA;AAClD,8BACE,uBAAA,GAAA;AAAA,gCAACF,KAAA;AAAA,gCAAA;AAAA,kCACC,QAAA,EAAU,QAAS,CAAA,IAAA,CAAK,MAAW,KAAA,CAAA;AAAA,kCAEnC,GAAA;AAAA,kCACA,QAAA;AAAA,kCACA,KAAA;AAAA,kCACA,UAAA;AAAA,kCACA,eAAA;AAAA,kCACA,aAAA,EAAe,cAAc,IAAK,EAAA;AAAA,iCAAA;AAAA,gCAN7B,GAAA;AAAA,+BAOP,CAAA;AAAA,6BAEH,CAAA;AAAA,2BAAA;AAAA,0BAjBI,CAAA,UAAA,EAAa,QAAS,CAAA,KAAA,CAAA,CAAA,EAAS,QAAS,CAAA,EAAA,CAAA,CAAA;AAAA,yBAkB/C,CAAA;AAAA,uBAEH,CAAA;AAAA,qBAAA;AAAA,mBAEL;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA,MAAA;AAAA,kBACP,MAAM,eAAgB,CAAA,IAAA;AAAA,kBACtB,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,kBAEN,WAAa,EAAA,EAAA;AAAA,kBACb,gBAAgB,OAAO;AAAA,oBACrB,OAAS,EAAA,MAAA;AAAA,mBACX,CAAA;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,GAAK,EAAA,WAAA;AAAA,kBACL,KAAO,EAAA,MAAA;AAAA,kBACP,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,kBAEN,cAAA,EAAgB,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,kBAClC,aAAA,EAAe,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,kBACjC,WAAa,EAAA,EAAA;AAAA,iBAAA;AAAA,eACf;AAAA,aAAA;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,KACF;AAAA,oBACC,GAAA,CAAA,GAAA,EAAA,EAAI,SAAU,EAAA,sBAAA,EACZ,QAAM,EAAA,KAAA,CAAA,UAAA,IAAc,cAAe,CAAA,MAAA,KAAW,CAC7C,oBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,wBAEb,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,WAAQ,EAAI,EAAA,IAAA,EAAO,QAAS,EAAA,QAAA,CAAA,YAAY,EAAE,IAAK,EAAA,CAAA;AAAA,sBAChD,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA,OAAA;AAAA,UACJ,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAKE,eAAe,MAAW,KAAA,CAAA,IAAK,eAAgB,CAAA,MAAA,GAAS,IACpD,eACA,GAAA,cAAA;AAAA,WAAA;AAAA,UAEN,WAAA,EAAa,eAAe,MAAW,KAAA,CAAA;AAAA,SAAA;AAAA,OACzC;AAAA,KAAA,EACF,CAEJ,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACzbO,MAAM,QAAQ,CAAC;AAAA,EACpB,GAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAS,EAAA,YAAA;AACX,CAKQ,KAAA;AAEN,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AACxD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAC9D,EAAM,MAAA,GAAA,GAAM,OAA8B,IAAI,CAAA,CAAA;AAC9C,EAAA,MAAM,OAAO,GAAI,CAAA,IAAA,CAAA;AACjB,EAAA,MAAM,EAAE,EAAA,EAAI,OAAQ,EAAA,GAAI,6BAA8B,EAAA,CAAA;AACtD,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,SAAW,EAAA;AACnB,MAAA,MAAM,OAAU,GAAA,SAAA,CAAU,KAAM,CAAA,KAAK,EAAE,CAAC,CAAA,CAAA;AACxC,MAAiB,gBAAA,CAAA,OAAA,KAAY,GAAI,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACzC,MAAA,mBAAA,CAAoB,OAAY,KAAA,GAAA,CAAI,IAAK,CAAA,GAAA,IAAO,YAAY,EAAE,CAAA,CAAA;AAC9D,MAAI,IAAA,OAAA,KAAY,GAAI,CAAA,IAAA,CAAK,GAAK,EAAA;AAC5B,QAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,UAC3B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAO,EAAA;AAAA,kBACL,KAAO,EAAA,CAAA,CAAA,EAAI,SAAU,CAAA,WAAW,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,iBAC1C;AAAA,gBAEA,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EAAQ,QAAI,EAAA,GAAA,CAAA,IAAA,CAAK,GAAI,EAAA,CAAA;AAAA,eAAA;AAAA,aACxB;AAAA,YACC,KAAM,CAAA,UAAA,oBACJ,GAAA,CAAA,KAAA,EAAA,EAAK,QAAG,EAAA,CAAA,EAAA,GAAA,CAAI,KACX,CAAA,CAAA,EAAA,GAAA,CAAI,IAAK,CAAA,UAAA,KAAe,EACxB,IAAA,GAAA,CAAI,IAAK,CAAA,UAAA,KAAe,KACpB,CAAA,GAAA,IAAA,GAAO,GAAI,CAAA,IAAA,CAAK,UAChB,GAAA,EAAA,CAAA,EAEJ,GAAI,CAAA,IAAA,CAAK,UAAe,KAAA,EAAA,IACxB,GAAI,CAAA,IAAA,CAAK,UAAe,KAAA,KAAA,CAAA,GACpB,MACA,EACH,CAAA,CAAA,EAAA,CAAA;AAAA,WAEP,EAAA,CAAA;AAAA,UAEF,iBAAiB,MAAM;AACrB,YAAA,OAAO,GAAI,CAAA,OAAA,CAAA;AAAA,WACb;AAAA,UACA,0BAA4B,EAAA,QAAA;AAAA,UAC5B,iBAAiB,MAAM;AACrB,YAAA,OAAO,OAAO,UAAa,GAAA,GAAA,CAAA;AAAA,WAC7B;AAAA,UACA,gCAAA,EAAkC,CAAC,EAAO,KAAA;AACxC,YAAA,OAAO,CAAE,EAAA,CAAG,aAA8B,CAAA,OAAA,CAAQ,aAAa,CAAA,CAAA;AAAA,WACjE;AAAA,UACA,SAAA,EAAW,IAAI,IAAK,CAAA,GAAA;AAAA,SACrB,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAEC,EAAI,EAAA,CAAA,IAAA,EAAO,IAAK,CAAA,GAAA,CAAA,CAAA,EAAO,KAAK,KAAS,CAAA,CAAA,EAAA,YAAA,CAAA,CAAA;AAAA,MACrC,GAAA;AAAA,MACA,KAAO,EAAA,OAAA;AAAA,QACL,OAAO;AAAA,UACL,SAAW,EAAA;AAAA,YACT,IAAA,EAAM,IAAI,SAAU,CAAA,WAAW,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,WACtD;AAAA,UACA,UAAY,EAAA,2BAAA;AAAA,SACd,CAAA;AAAA,QACA,CAAC,WAAW,CAAA;AAAA,OACd;AAAA,MACA,KAAA,EACE,gBACI,GAAA,CAAA,CAAA,EAAI,SAAU,CAAA,WAAW,EAAE,UAAW,CAAA,EAAE,CAAE,CAAA,KAAA,EAC1C,CAAA,CAAA,GAAA,WAAA;AAAA,MAEN,IAAA,EACE,gBACI,GAAA,CAAA,CAAA,EAAI,SAAU,CAAA,WAAW,EAAE,UAAW,CAAA,EAAE,CAAE,CAAA,KAAA,EAC1C,CAAA,CAAA,GAAA,WAAA;AAAA,MAEN,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,IAAO,GAAA,CAAA;AAAA,MACrD,GAAG,OAAW,IAAA,IAAA,GAAA,OAAA,GAAA,EAAA;AAAA,MACd,YAAA,EAAc,CAAC,EAAO,KAAA;AAzG5B,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA0GQ,QAAA,sBAAA,CAAuB,SAAU,CAAA,OAAA,EAAS,GAAI,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACtD,QAAA,YAAA,CAAa,OAAS,EAAA,WAAA,EAAa,CAAG,EAAA,IAAA,CAAK,SAAS,YAAc,CAAA,CAAA,CAAA,CAAA;AAClE,QAAA,CAAC,EAAG,GAAA,EAAA,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqC,GAAI,CAAA,MAAA,CAAA,CAAA;AAC1C,QAAA,MAAM,KAAQ,GAAA;AAAA,UACZ,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,UACnB,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,SACrB,CAAA;AACA,QAAA,IAAI,CAAC,KAAA;AAAO,UAAA,OAAA;AAAA,OACd;AAAA,MACA,YAAA,EAAc,CAAC,EAAO,KAAA;AAnH5B,QAAA,IAAA,EAAA,CAAA;AAoHQ,QAAuB,sBAAA,CAAA,SAAA,CAAU,SAAS,EAAE,CAAA,CAAA;AAE5C,QAAa,YAAA,CAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AACrC,QAAA,CAAC,EAAG,GAAA,EAAA,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqC,MAAO,CAAA,MAAA,CAAA,CAAA;AAAA,OAC/C;AAAA,KAAA;AAAA,IAvCK,CAAO,IAAA,EAAA,IAAA,CAAK,GAAO,CAAA,CAAA,EAAA,IAAA,CAAK,KAAS,CAAA,CAAA,EAAA,YAAA,CAAA,CAAA;AAAA,GAwCvC,CAAA;AAEL,CAAA;;;;;;;;;;;;;;;;;;;;;AClHO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,cAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AACF,CASM,KAAA;AACJ,EAAM,MAAA,iBAAA,GAAoB,OAOxB,KAAS,CAAA,CAAA,CAAA;AAEX,EAAM,MAAA,eAAA,GAAkB,OAOtB,KAAS,CAAA,CAAA,CAAA;AAEX,EAAM,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA,CAAA;AAEhC,EAAI,IAAA,iBAAA,CAAkB,WAAW,MAAQ,EAAA;AACvC,IAAA,MAAM,mBACJ,GAAA,WAAA,CAAY,OAAW,IAAA,eAAA,CAAgB,OACnC,GAAA,YAAA,CAAa,eAAgB,CAAA,OAAA,CAAQ,UAAU,CAAA,GAC/C,YAAa,CAAA,iBAAA,CAAkB,QAAQ,UAAU,CAAA,CAAA;AAEvD,IAAM,MAAA,kBAAA,GAAqB,YAAa,CAAA,cAAA,CAAe,IAAI,CAAA,CAAA;AAE3D,IAAA,MAAM,eAAkB,GAAA,mBAAA,CAAoB,IAAK,CAAA,CAAC,WAAW,KAAU,KAAA;AACrE,MAAM,MAAA,YAAA,GAAe,mBAAmB,KAAK,CAAA,CAAA;AAC7C,MAAO,OAAA,SAAA,CAAU,UAAU,YAAa,CAAA,KAAA,CAAA;AAAA,KACzC,CAAA,CAAA;AACD,IAAA,IAAI,eAAiB,EAAA;AACnB,MAAA,WAAA,CAAY,OAAU,GAAA,IAAA,CAAA;AACtB,MAAA,MAAM,aAAqC,EAAC,CAAA;AAC5C,MACM,KAAA,IAAA,CAAA,GAAI,CACR,EAAA,CAAA,GAAI,IAAK,CAAA,GAAA,CAAI,oBAAoB,MAAQ,EAAA,kBAAA,CAAmB,MAAM,CAAA,EAClE,CACA,EAAA,EAAA;AACA,QAAM,MAAA,MAAA,GAAS,oBAAoB,CAAC,CAAA,CAAA;AACpC,QAAM,MAAA,MAAA,GAAS,mBAAmB,CAAC,CAAA,CAAA;AAEnC,QAAA,IAAI,UAAU,MAAQ,EAAA;AACpB,UAAA,MAAM,WAAW,IAAK,CAAA,GAAA;AAAA,YACpB,SAAS,MAAO,CAAA,KAAK,CAAI,GAAA,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,YAC9C,QAAS,EAAA,CAAA;AACX,UAAA,MAAM,aAAsC,GAAA;AAAA,YAC1C,KAAK,MAAO,CAAA,GAAA;AAAA,YACZ,OAAO,MAAO,CAAA,KAAA;AAAA;AAAA,YACd,KAAO,EAAA,QAAA;AAAA,YACP,UAAA,EACE,OAAO,UAAe,KAAA,EAAA,IAAM,OAAO,UAAe,KAAA,KAAA,CAAA,GAC9C,OAAO,UACP,GAAA,KAAA,CAAA;AAAA,WACR,CAAA;AAEA,UAAA,UAAA,CAAW,KAAK,aAAa,CAAA,CAAA;AAAA,mBACpB,CAAC,MAAA,IAAU,MAAU,IAAA,mBAAA,CAAoB,SAAS,CAAG,EAAA;AAC9D,UAAM,MAAA,QAAA,GAAW,KAAK,GAAI,CAAA,CAAA,GAAI,SAAS,MAAO,CAAA,KAAK,CAAC,CAAA,CAAE,QAAS,EAAA,CAAA;AAC/D,UAAA,MAAM,aAAsC,GAAA;AAAA,YAC1C,KAAK,MAAO,CAAA,GAAA;AAAA,YACZ,OAAO,MAAO,CAAA,KAAA;AAAA;AAAA,YACd,KAAO,EAAA,QAAA;AAAA,YACP,UAAA,EACE,OAAO,UAAe,KAAA,EAAA,IAAM,OAAO,UAAe,KAAA,KAAA,CAAA,GAC9C,OAAO,UACP,GAAA,KAAA,CAAA;AAAA,WACR,CAAA;AAEA,UAAA,UAAA,CAAW,KAAK,aAAa,CAAA,CAAA;AAAA,SAC/B;AAAA,OACF;AAEA,MAAO,OAAA,OAAA;AAAA,QACL,GAAA;AAAA,QACA,CAAC,QAAa,KAAA;AACZ,UAAA,MAAM,IAAyB,GAAA;AAAA,YAC7B,OAAO,MAAO,CAAA,KAAA;AAAA,YACd,MAAM,cAAe,CAAA,IAAA;AAAA,YACrB,IAAM,EAAA,UAAA,CAAW,GAAI,CAAA,CAAC,OAAO,CAAM,KAAA;AACjC,cAAO,OAAA;AAAA,gBACL,KAAK,KAAM,CAAA,GAAA;AAAA,gBACX,OAAO,KAAM,CAAA,KAAA;AAAA,gBACb,YAAY,KAAM,CAAA,UAAA;AAAA,gBAClB,KAAO,EAAA,WAAA;AAAA,kBACL,MAAO,CAAA,kBAAA,CAAmB,CAAC,CAAA,CAAE,KAAK,CAChC,GAAA,MAAA;AAAA,oBACE,oBAAoB,CAAC,CAAA,GAAI,mBAAoB,CAAA,CAAC,EAAE,KAAQ,GAAA,CAAA;AAAA,mBAExD,GAAA,MAAA,CAAO,KAAM,CAAA,KAAK,IAAI,QACpB,GAAA,MAAA;AAAA,oBACE,oBAAoB,CAAC,CAAA,GACjB,mBAAoB,CAAA,CAAC,EAAE,KACvB,GAAA,CAAA;AAAA,mBAER,GAAA,MAAA;AAAA,oBACE,oBAAoB,CAAC,CAAA,GACjB,mBAAoB,CAAA,CAAC,EAAE,KACvB,GAAA,CAAA;AAAA,mBAEJ,GAAA,MAAA,CAAO,KAAM,CAAA,KAAK,CAAI,GAAA,QAAA;AAAA,kBAC5B,IAAK,CAAA,GAAA;AAAA,oBACH,MAAA;AAAA,sBACE,oBAAoB,CAAC,CAAA,GAAI,mBAAoB,CAAA,CAAC,EAAE,KAAQ,GAAA,CAAA;AAAA,qBAC1D;AAAA,oBACA,MAAO,CAAA,kBAAA,CAAmB,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,mBACpC;AAAA,kBACA,IAAK,CAAA,GAAA;AAAA,oBACH,MAAA;AAAA,sBACE,oBAAoB,CAAC,CAAA,GAAI,mBAAoB,CAAA,CAAC,EAAE,KAAQ,GAAA,CAAA;AAAA,qBAC1D;AAAA,oBACA,MAAO,CAAA,kBAAA,CAAmB,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,mBACpC;AAAA,kBACA,QAAS,EAAA;AAAA,eACb,CAAA;AAAA,aACD,CAAA;AAAA,WACH,CAAA;AACA,UAAA,eAAA,CAAgB,OAAU,GAAA;AAAA,YACxB,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,YAAY,IAAK,CAAA,IAAA;AAAA,YACjB,MAAM,IAAK,CAAA,IAAA;AAAA,WACb,CAAA;AACA,UAAA,UAAA,CAAW,CAAC,IAAS,KAAA;AACnB,YAAA,MAAM,QAAW,GAAA,IAAA,CAAK,SAAU,CAAA,CAAC,GAAQ,KAAA;AACvC,cAAO,OAAA,GAAA,CAAI,SAAS,IAAK,CAAA,IAAA,CAAA;AAAA,aAC1B,CAAA,CAAA;AACD,YAAM,MAAA,SAAA,GAAY,CAAC,GAAG,IAAI,CAAA,CAAA;AAC1B,YAAA,IAAI,YAAY,CAAG,EAAA;AACjB,cAAA,SAAA,CAAU,QAAQ,CAAI,GAAA,IAAA,CAAA;AACtB,cAAO,OAAA,SAAA,CAAA;AAAA,aACF,MAAA;AACL,cAAA,OAAO,CAAC,IAAI,CAAA,CAAA;AAAA,aACd;AAAA,WACD,CAAA,CAAA;AAAA,SACH;AAAA,QACA,MAAM;AACJ,UAAM,MAAA,OAAA,GAAUE,qCACX,cADW,CAAA,EAAA;AAAA,YAEd,YAAY,cAAe,CAAA,IAAA;AAAA,WAC7B,CAAA,CAAA;AACA,UAAA,iBAAA,CAAkB,OAAU,GAAA,OAAA,CAAA;AAC5B,UAAA,WAAA,CAAY,OAAU,GAAA,KAAA,CAAA;AAAA,SACxB;AAAA,OACF,CAAA;AAAA,KAEF;AAAA,GACF,MAAA,IAAW,CAAC,iBAAA,CAAkB,OAAS,EAAA;AACrC,IAAM,MAAA,OAAA,GAAUA,qCACX,cADW,CAAA,EAAA;AAAA,MAEd,YAAY,cAAe,CAAA,IAAA;AAAA,KAC7B,CAAA,CAAA;AACA,IAAA,iBAAA,CAAkB,OAAU,GAAA,OAAA,CAAA;AAC5B,IAAA,WAAA,CAAY,OAAU,GAAA,KAAA,CAAA;AAAA,GACxB;AACF,CAAA;;AChLA,SAAS,aAAc,CAAA;AAAA,EACrB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AACF,CAMG,EAAA;AACD,EACE,uBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,EAAE,KAAA,EAAO,MAAO,EAAA;AAAA,MACpB,MAAM,CAAiB,cAAA,EAAA,OAAA,CAAA,CAAA;AAAA,MACvB,SAAA,EAAW,CAAiB,cAAA,EAAA,OAAA,CAAA,CAAA,EAAW,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,CAAA;AAAA,MACpD,OAAO,OAAW,IAAA,IAAA,GAAA,OAAA,GAAA,GAAA;AAAA,MAClB,QAAA,EAAU,CAAC,EAAO,KAAA;AAChB,QAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,QAAW,UAAA,CAAA,EAAA,CAAG,OAAO,KAAK,CAAA,CAAA;AAAA,OAC5B;AAAA,MAEC,QAAA,EAAA;AAAA,QACE,MAAA,CAAA,GAAA,CAAI,CAAC,KAAA,EAAO,CAAM,KAAA;AACjB,UAAO,OAAA;AAAA,YACL,KAAO,EAAA,KAAA;AAAA,YACP,OAAO,CAAG,EAAA,CAAA,CAAA,CAAA;AAAA,WACZ,CAAA;AAAA,SACD,CAAA,CACA,GAAI,CAAA,CAAC,2BACH,GAAA,CAAA,QAAA,EAAA,EAA0B,KAAO,EAAA,MAAA,CAAO,KACtC,EAAA,QAAA,EAAA,MAAA,CAAO,KADG,EAAA,EAAA,MAAA,CAAO,KAEpB,CACD,CAAA;AAAA,QAAG,GAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACR,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;ACrBA,SAASE,kBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AAIA,MAAM,WAAW,CAAC;AAAA,EAChB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AACF,CAA2B,KAAA;AA9C3B,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA+CE,EAAM,MAAA,CAAC,OAAS,EAAA,UAAU,CAAI,GAAA,QAAA;AAAA,IAC5B,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,IAAI,CAAA;AAAA,GACnC,CAAA;AACA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,GAAG,CAAA,CAAA;AAChD,EAAM,MAAA,MAAA,GAAS,QAAQ,MAAM;AAC3B,IAAO,OAAA,OAAA,CACJ,MAAO,CAAA,CAAC,KAAU,KAAA,CAAC,CAAC,KAAA,CAAM,IAAI,CAAA,CAC9B,GAAI,CAAA,CAAC,KAAU,KAAA;AACd,MAAA,OAAOF,qCACF,KADE,CAAA,EAAA;AAAA,QAEL,YAAY,KAAM,CAAA,IAAA;AAAA,OACpB,CAAA,CAAA;AAAA,KACD,CAAE,CAAA,OAAA,CAAQ,QAAS,CAAA,UAAU,CAAC,CAAI,GAAA,QAAA,CAAS,UAAU,CAAA,GAAI,CAAC,CAAA,CAAA;AAAA,GAC5D,EAAA,CAAC,UAAY,EAAA,OAAO,CAAC,CAAA,CAAA;AAExB,EAAgB,eAAA,CAAA;AAAA,IACd,cAAgB,EAAA,YAAA,CAAA,CAAa,EAAM,GAAA,KAAA,CAAA,QAAA,KAAN,mBAAgB,IAAI,CAAA,CAC/C,OAAQ,CAAA,QAAA,CAAS,UAAU,CAAC,CAAA,GAAI,QAAS,CAAA,UAAU,IAAI,CACzD,CAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAI,IAAA,UAAA,GACF,KAAM,CAAA,KAAA,CAAM,KAAQ,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,GAC5B,KAAM,CAAA,KAAA,CAAM,KACZ,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,CAAA;AAClB,EAAI,IAAA,WAAA,GACF,KAAM,CAAA,KAAA,CAAM,KAAQ,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,GAC5B,KAAM,CAAA,KAAA,CAAM,KACZ,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,CAAA;AAClB,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAYE,kBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,OAAO,WAAc,GAAA,GAAA,CAAA;AAAA,GACvB,EAAG,CAAC,WAAW,CAAC,CAAA,CAAA;AAChB,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,OAAO,UAAa,GAAA,GAAA,CAAA;AAAA,GACtB,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AACf,EAAA,MAAM,GAAM,GAAA,OAAA,CAAA;AACZ,EAAA,MAAM,IAAO,GAAA,OAAA,CAAA;AAEb,EAAA,MAAM,WAAW,CAAC,CAAA,KAChB,MAAO,CAAA,CAAA,CAAE,KAAK,CAAM,KAAA,CAAA,IAAK,YAAa,CAAA,MAAA,CAAO,UAAU,CAAE,CAAA,MAAA,KAAW,IAChE,GACA,GAAA,MAAA,CAAO,EAAE,KAAK,CAAA,CAAA;AACpB,EAAA,MAAM,MAAS,GAAA,IAAA,CAAK,GAAI,CAAA,WAAA,EAAa,UAAU,CAAI,GAAA,GAAA,CAAA;AAEnD,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAE/C,EAAM,MAAA,WAAA,GAAc,MAChB,GAAA,MAAA,CAAO,MACP,GAAA,CAAC,WAAW,SAAW,EAAA,SAAA,EAAW,SAAW,EAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AACrE,EAAA,MAAM,KAAQ,GAAA,YAAA;AAAA,IACX,CAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,SAAS,UAAU,CAAC,MAA5B,IAAiC,GAAA,EAAA,GAAA,OAAA,CAAQ,CAAC,CAAG,EAAA,IAAA;AAAA,GAChD,CAAE,GAAI,CAAA,CAAC,KAAU,KAAA;AACf,IAAA,OAAO,KAAM,CAAA,GAAA,CAAA;AAAA,GACd,CAAA,CAAA;AACD,EAAA,MAAM,cAAkC,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,MAAM,KAAU,KAAA;AACjE,IAAO,OAAA;AAAA,MACL,KAAO,EAAA,IAAA;AAAA,MACP,KAAO,EAAA,WAAA,CAAY,YAAa,CAAA,WAAW,GAAG,KAAK,CAAA;AAAA,KACrD,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AACA,EAAM,MAAA,aAAA,GAAgB,MAA0B,CAAA,EAAE,CAAA,CAAA;AAClD,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,MAAM,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AAC/C,EAAA,MAAM,SAAS,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,IAAI,CAC7C,CAAA,MAAA,CAAO,CAAC,KAAA,KAAU,CAAC,CAAC,KAAA,CAAM,IAAI,CAC9B,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AACd,IAAA,OAAOF,qCACF,KADE,CAAA,EAAA;AAAA,MAEL,YAAY,KAAM,CAAA,IAAA;AAAA,KACpB,CAAA,CAAA;AAAA,GACD,CAAA,CAAA;AACH,EAAA,MAAM,UAAa,GAAA,MAAA,CAAO,GAAI,CAAA,CAAC,KAAU,KAAA;AACvC,IAAA,OAAO,KAAM,CAAA,IAAA,CAAA;AAAA,GACd,CAAA,CAAA;AACD,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,MAAA;AAAA,QACL,EAAA;AAAA,QAEA,SAAW,EAAA,CAAA,EACT,SAAY,GAAA,SAAA,GAAY,EACtB,CAAA,CAAA,EAAA,OAAA,CAAA,wBAAA,CAAA;AAAA,QACJ,IAAI,EAAE,SAAA,EAAW,UAAU,EAAI,EAAA,OAAA,CAAQ,CAAC,CAAE,EAAA;AAAA,QAE1C,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,UAAA;AAAA,YACL,QAAQ,MAAS,GAAA,CAAA;AAAA,YACjB,OAAO,MAAS,GAAA,CAAA;AAAA,YAChB,WAAW,CAAI,CAAA,EAAA,OAAA,CAAA,WAAA,CAAA;AAAA,YAEf,8BAAC,KAAM,EAAA,EAAA,GAAA,EAAK,oBAAO,CAAG,EAAA,IAAA,EAAM,sBAAQ,CAClC,EAAA,QAAA,kBAAA,GAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,YAAa,CAAA,MAAA,CAAO,UAAU,CAAA;AAAA,gBACpC,QAAU,EAAA,QAAA;AAAA,gBACV,OAAS,EAAA,IAAA;AAAA,gBACT,WAAa,EAAA,MAAA;AAAA,gBAEZ,WAAC,GAAQ,KAAA;AACR,kBAAA,MAAM,QAAQ,YAAa,CAAA,GAAA,CAAI,IAAI,CAAE,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA;AAChD,oBAAO,OAAA,GAAA,CAAI,KAAK,GAAG,CAAA,CAAA;AAAA,mBACpB,CAAA,CAAA;AAED,kBAAA,MAAM,MAAS,GAAA,GAAA,CAAI,IAAK,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA;AA1KrD,oBAAA,IAAAD,GAAAI,EAAAA,GAAAA,CAAAA;AA2KkB,oBAAA,MAAM,OAAO,GAAI,CAAA,IAAA,CAAA;AAEjB,oBAAM,MAAA,OAAA,GAAU,GAAI,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAC5B,oBACE,uBAAA,GAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,GAAA;AAAA,wBACA,OAAS,EAAA,EAAA;AAAA,wBACT,OAAA;AAAA,wBACA,KAAA;AAAA,wBAEA,cACEA,GAAAJ,GAAAA,CAAAA,GAAAA,GAAA,cAAe,CAAA,IAAA,CAAK,CAAC,KAAU,KAAA;AAC7B,0BAAO,OAAA,KAAA,CAAM,UAAU,IAAK,CAAA,GAAA,CAAA;AAAA,yBAC7B,CAFD,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAEI,CAAA,KAAA,KAFJ,OAAAI,GAEa,GAAA,EAAA;AAAA,uBAAA;AAAA,sBAJV,CAAA,EAAG,IAAK,CAAA,GAAA,CAAA,CAAA,EAAO,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,qBAM3B,CAAA;AAAA,mBAEH,CAAA,CAAA;AACD,kBAAA,aAAA,CAAc,OAAU,GAAA,KAAA,CAAA;AAExB,kBAAO,OAAA,MAAA,CAAA;AAAA,iBACT;AAAA,eAAA;AAAA,aAEJ,EAAA,CAAA;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,MAjDK,MAAO,CAAA,IAAA;AAAA,KAkDd;AAAA,oBACA,IAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,sBACZ,EAAA,QAAA,EAAA;AAAA,MAAC,CAAA,KAAA,CAAM,gBAAgB,MAAO,CAAA,MAAA,GAAS,qBACrC,IAAA,CAAA,GAAA,EAAA,EAAI,WAAU,uBAEb,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAQ,EAAI,EAAA,IAAA,EAAO,QAAS,EAAA,QAAA,CAAA,aAAa,EAAE,IAAK,EAAA,CAAA;AAAA,wBACjD,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,MAAQ,EAAA,UAAA;AAAA,YACR,SAAU,EAAA,oBAAA;AAAA,YACV,OAAS,EAAA,UAAA;AAAA,YACT,UAAY,EAAA,aAAA;AAAA,WAAA;AAAA,SACd;AAAA,OACF,EAAA,CAAA;AAAA,MAGD,KAAA,CAAM,cAAc,cAAe,CAAA,MAAA,GAAS,qBAC1C,IAAA,CAAA,GAAA,EAAA,EAAI,WAAU,wBAEb,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAQ,EAAI,EAAA,IAAA,EAAO,QAAS,EAAA,QAAA,CAAA,YAAY,EAAE,IAAK,EAAA,CAAA;AAAA,wBAC/C,GAAA,CAAA,eAAA,EAAA,EAAgB,EAAI,EAAA,OAAA,EAAS,YAAY,cAAgB,EAAA,CAAA;AAAA,OAC5D,EAAA,CAAA;AAAA,KAEJ,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACjNO,MAAM,MAAM,CAAC;AAAA,EAClB,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AACF,CAMM,KAAA;AA1BN,EAAA,IAAA,EAAA,CAAA;AA2BE,EAAA,MAAM,SAAS,YAAa,CAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CAAE,IAAI,KAAK,CAAA,CAAA;AAC1D,EAAA,MAAM,MAAM,YAAa,CAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,IAAI,CAAA,CAAE,SAAS,KAAK,CAAA,CAAA;AACrD,EAAA,MAAM,mBAAkB,EAAc,GAAA,aAAA,CAAA,IAAA;AAAA,IACpC,CAAC,aACC,QAAS,CAAA,UAAA,KAAe,OAAO,IAAQ,IAAA,QAAA,CAAS,QAAQ,GAAI,CAAA,GAAA;AAAA,QAFxC,IAGrB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACH,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AACxD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAC9D,EAAM,MAAA,GAAA,GAAM,OAA8B,IAAI,CAAA,CAAA;AAC9C,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,aAAe,EAAA;AACvB,MAAA,IAAI,OAAU,GAAA,aAAA,CAAA;AACd,MAAA,IAAI,UAAa,GAAA,EAAA,CAAA;AACjB,MAAI,IAAA,aAAA,CAAc,QAAS,CAAA,KAAK,CAAG,EAAA;AACjC,QAAA,OAAA,GAAU,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACtC,QAAA,UAAA,GAAa,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACzC,QAAA,IAAI,QAAY,IAAA,aAAA,KAAkB,EAAM,IAAA,aAAA,KAAkB,KAAW,CAAA,EAAA;AACnE,UAAA,OAAA,GAAU,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACtC,UAAA,UAAA,GAAa,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,SAC3C;AAAA,OACF;AACA,MAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AACrC,QAAA,IAAI,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAE,WAAW,CAAG,EAAA;AAClD,UAAA,gBAAA,CAAiB,OAAY,KAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAU,CAAA,CAAA;AAClE,UAAA,mBAAA;AAAA,YACE,YAAY,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,cAAc,OAAY,KAAA,EAAA;AAAA,WACnE,CAAA;AACA,UACE,IAAA,OAAA,KAAY,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UACvC,IAAA,UAAA,KAAe,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC1C,EAAA;AACA,YAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,cAC3B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAO,EAAA;AAAA,sBACL,KAAO,EAAA,eAAA;AAAA,qBACT;AAAA,oBAEA,8BAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAW,EAAA,CAAA;AAAA,mBAAA;AAAA,iBACjD;AAAA,gBACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,gCACrC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,GAAI,EAAA,CAAA;AAAA,eAChB,EAAA,CAAA;AAAA,cAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,cAC3B,0BAA4B,EAAA,QAAA;AAAA,aAC7B,CAAA,CAAA;AAAA,WACH;AAAA,SACK,MAAA;AACL,UAAiB,gBAAA,CAAA,OAAA,KAAY,IAAI,GAAG,CAAA,CAAA;AACpC,UAAA,mBAAA,CAAoB,OAAY,KAAA,GAAA,CAAI,GAAO,IAAA,OAAA,KAAY,EAAE,CAAA,CAAA;AACzD,UAAA,MAAM,aAAa,QAAS,CAAA,aAAA;AAAA,YAC1B,IAAI,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,eAAe,GAAI,CAAA,GAAA,CAAA,CAAA;AAAA,WACpD,CAAA;AACA,UACE,IAAA,OAAA,KAAY,IAAI,GAChB,IAAA,UAAA,KAAe,WAAW,QAAS,CAAA,KAAK,EAAE,UAC1C,EAAA;AACA,YAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,cAC3B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAO,EAAA;AAAA,sBACL,KAAO,EAAA,eAAA;AAAA,qBACT;AAAA,oBAEA,8BAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAW,EAAA,CAAA;AAAA,mBAAA;AAAA,iBACjD;AAAA,gBACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,gCACrC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,GAAI,EAAA,CAAA;AAAA,eAChB,EAAA,CAAA;AAAA,cAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,cAC3B,0BAA4B,EAAA,QAAA;AAAA,aAC7B,CAAA,CAAA;AAAA,qBACQ,OAAY,KAAA,GAAA,CAAI,GAAO,IAAA,UAAA,IAAc,eAAe,EAAI,EAAA;AACjE,YAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,cAC3B,QAAU,EAAA,UAAA,CAAW,GAAI,CAAA,CAAC,KAAK,CAAM,KAAA;AACnC,gBAAA,4BACG,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAO,EAAA;AAAA,wBACL,KAAO,EAAA,eAAA;AAAA,uBACT;AAAA,sBAEA,QAAA,kBAAA,GAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,UAAW,EAAA,CAAA;AAAA,qBAAA;AAAA,mBAC1B;AAAA,kBACC,MAAM,UAAc,oBAAA,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,OAAO,CAAE,EAAA,CAAA;AAAA,kCACvC,GAAA,CAAA,KAAA,EAAA,EACE,QAAO,EAAA,MAAA,CAAA,IAAA,CAAK,GAAG,CAAE,CAAA,IAAA;AAAA,oBAChB,CAAC,GAAQ,KAAA,GAAA,CAAI,GAAG,CAAA,KAAM,IAAI,OAAO,CAAA;AAAA,mBAErC,EAAA,CAAA;AAAA,kBACC,UAAW,CAAA,CAAA,GAAI,CAAC,CAAA,wBAAM,IAAG,EAAA,EAAA,CAAA;AAAA,iBAAA,EAAA,EAdlB,CAAG,EAAA,GAAA,CAAI,UAAc,CAAA,CAAA,EAAA,GAAA,CAAI,OAAO,CAe1C,CAAA,CAAA,CAAA,CAAA;AAAA,eAEH,CAAA;AAAA,cACD,qBAAuB,EAAA,IAAA;AAAA,aACxB,CAAA,CAAA;AAAA,WACH;AAAA,SACF;AAAA,iBACS,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AAC5C,QAAA,gBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,GAAA,CAAI,GAC9B,IAAA,OAAA,CAAQ,KAAM,CAAA,KAAK,CAAE,CAAA,CAAC,MAAM,GAAI,CAAA,GAAA;AAAA,SACpC,CAAA;AACA,QAAA,mBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,KAAM,GAAI,CAAA,GAAA,IAAO,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,EAAA;AAAA,SACrE,CAAA;AACA,QACE,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,GAAA,CAAI,OAChC,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAE,CAAA,CAAC,MAAM,GAAI,CAAA,GAAA,IAChC,eAAe,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC1C,EAAA;AACA,UAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,YAC3B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA;AAAA,oBACL,KAAO,EAAA,eAAA;AAAA,mBACT;AAAA,kBAEA,8BAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAW,EAAA,CAAA;AAAA,iBAAA;AAAA,eACjD;AAAA,cACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,8BACrC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,GAAI,EAAA,CAAA;AAAA,aAChB,EAAA,CAAA;AAAA,YAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,YAC3B,0BAA4B,EAAA,QAAA;AAAA,WAC7B,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AACD,EAAA,MAAM,EAAE,OAAA,EAAY,GAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAE3C,EAAA,2BACG,GAkBC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAG,EAAA,MAAA;AAAA,MACH,WAAW,CAAkB,eAAA,EAAA,UAAA,CAAW,SAAS,KAAK,CAAA,CAAE,eACtD,GAAI,CAAA,GAAA,CAAA,CAAA;AAAA,MAEN,GAAA;AAAA,MACA,EAAI,EAAA,OAAA;AAAA,QACF,OAAO;AAAA,UACL,IAAA,EAAM,gBACF,GAAA,CAAA,CAAA,EAAI,SAAU,CAAA,eAAe,EAAE,UAAW,CAAA,EAAE,CAAE,CAAA,KAAA,EAC9C,CAAA,CAAA,GAAA,eAAA;AAAA,UACJ,SAAW,EAAA;AAAA,YACT,IAAA,EAAM,IAAI,SAAU,CAAA,eAAe,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,WAC1D;AAAA,UACA,UAAY,EAAA,2BAAA;AAAA,UACZ,GAAG,GAAI,CAAA,CAAA;AAAA,UACP,GAAG,GAAI,CAAA,CAAA;AAAA,UACP,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,IAAO,GAAA,CAAA;AAAA,UACrD,MAAQ,EAAA,GAAA,CAAI,MAAS,GAAA,CAAA,GAAI,IAAI,MAAS,GAAA,CAAA;AAAA,SACxC,CAAA;AAAA,QACA;AAAA,UACE,GAAI,CAAA,MAAA;AAAA,UACJ,GAAI,CAAA,KAAA;AAAA,UACJ,GAAI,CAAA,CAAA;AAAA,UACJ,GAAI,CAAA,CAAA;AAAA,UACJ,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,aAAA;AAAA,SACF;AAAA,OACF;AAAA,MACA,YAAA,EAAc,CAAC,EAAO,KAAA;AAvN9B,QAAA,IAAAJ,GAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAwNU,QAAA,OAAA,CAAQ,IAAI,GAAI,CAAA,GAAA,EAAK,WAAW,QAAS,CAAA,KAAK,EAAE,UAAU,CAAA,CAAA;AAE1D,QAAA,IAAI,CAAC,QAAU,EAAA;AACb,UAAuB,sBAAA,CAAA,SAAA,CAAU,OAAS,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAAA,SAC5C,MAAA;AACL,UAAuB,sBAAA,CAAA,SAAA;AAAA,YACrB,OAAA;AAAA,YACA,UAAA,CAAW,QAAS,CAAA,KAAK,CAAE,CAAA,UAAA;AAAA,WAC7B,CAAA;AAAA,SACF;AACA,QAAA,YAAA;AAAA,UACE,OAAA;AAAA,UACA,WAAA;AAAA,UACA,GAAG,GAAI,CAAA,GAAA,CAAA,GAAA,EAAS,UAAW,CAAA,QAAA,CAAS,KAAK,CAAE,CAAA,UAAA,CAAA,CAAA;AAAA,SAC7C,CAAA;AACA,QAAA,CAACA,MAAA,EAAG,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAqC,GAAI,CAAA,MAAA,CAAA,CAAA;AAC1C,QAAA,MAAM,KAAQ,GAAA;AAAA,UACZ,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,UACnB,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,SACrB,CAAA;AACA,QAAI,IAAA,CAAC,KAAS,IAAA,CAAC,KAAM,CAAA,UAAA;AAAY,UAAA,OAAA;AAAA,OACnC;AAAA,MACA,YAAA,EAAc,CAAC,EAAO,KAAA;AA9O9B,QAAAA,IAAAA,GAAAA,CAAAA;AA+OU,QAAuB,sBAAA,CAAA,SAAA,CAAU,SAAS,EAAE,CAAA,CAAA;AAC5C,QAAa,YAAA,CAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AAErC,QAAA,CAACA,MAAA,EAAG,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAqC,MAAO,CAAA,MAAA,CAAA,CAAA;AAAA,OAC/C;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,aAAc,EAAA,QAAA;AAAA,YACd,IAAM,EAAA,CAAA;AAAA,YACN,IAAI,GAAI,CAAA,MAAA;AAAA,YACR,GAAI,EAAA,MAAA;AAAA,YACJ,QAAU,EAAA,OAAA;AAAA,YACV,UAAY,EAAA,cAAA;AAAA,YACZ,QAAU,EAAA,MAAA;AAAA,WAAA;AAAA,SACZ;AAAA,wBACA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,aAAc,EAAA,GAAA;AAAA,YACd,IAAA,EAAM,GAAI,CAAA,CAAA,GAAI,GAAI,CAAA,MAAA;AAAA,YAClB,IAAI,GAAI,CAAA,CAAA;AAAA,YACR,GAAI,EAAA,MAAA;AAAA,YACJ,QAAU,EAAA,OAAA;AAAA,YACV,UAAY,EAAA,cAAA;AAAA,YACZ,QAAU,EAAA,MAAA;AAAA,WAAA;AAAA,SACZ;AAAA,OAAA;AAAA,KAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACrPA,SAASG,kBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AAEA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqB,CAAE,CAAA,UAAA,CAAA;AAe1C,MAAM,eAAe,CAAC;AAAA,EACpB,MAAA,GAAS,EAAE,GAAK,EAAA,EAAA,EAAI,MAAM,GAAK,EAAA,MAAA,EAAQ,EAAI,EAAA,KAAA,EAAO,CAAE,EAAA;AAAA,EACpD,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AACF,CAA2B,KAAA;AA9D3B,EAAA,IAAA,EAAA,CAAA;AA+DE,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM,CAAA,CAAA;AAC1C,EAAA,IAAI,CAAC,KAAA,CAAM,cAAkB,IAAA,eAAA,CAAgB,OAAO,EAAI,EAAA;AACtD,IAAA,eAAA,CAAgB,IAAO,GAAA,EAAA,CAAA;AAAA,GACzB;AACA,EAAI,IAAA,UAAA,GACF,MAAM,KAAM,CAAA,KAAA,GAAA,CAAS,CAAC,eAAgB,CAAA,IAAA,GAAO,gBAAgB,KAAS,IAAA,CAAA,CAAA;AACxE,EAAA,IAAI,WACF,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,IACX,MAAM,cACH,GAAA,CAAC,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MACtC,GAAA,CAAA,CAAC,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA,CAAA;AACxD,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAYA,kBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAE/C,EAAA,MAAM,WAAW,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,IAAI,CAC/C,CAAA,MAAA,CAAO,CAAC,MAAA,KAAW,CAAC,CAAC,MAAA,CAAO,IAAI,CAChC,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACf,IAAA,OAAOF,qCACF,MADE,CAAA,EAAA;AAAA,MAEL,MAAM,MAAO,CAAA,IAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACD,CAAA,CAAA;AAEH,EAAA,MAAM,UAAU,YAAa,CAAA,QAAA,CAAS,CAAC,CAAA,CAAE,IAAI,CAAE,CAAA,GAAA;AAAA,IAC7C,CAAC,eAAe,UAAW,CAAA,GAAA;AAAA,GAC7B,CAAA;AACA,EAAA,MAAM,WAAc,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,GAAQ,KAAA;AACxC,IAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,MAAM,UAA8B,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,CAAM,KAAA;AACrD,IAAA,MAAM,MAAqB,QAAS,CAAA,MAAA;AAAA,MAClC,CAAC,KAAK,MAAW,KAAA;AACf,QAAA,OAAOA,qCACF,GADE,CAAA,EAAA;AAAA,UAEL,CAAC,MAAO,CAAA,IAAI,GAAG,YAAA,CAAa,OAAO,IAAI,CAAA,CAAE,MAAO,CAAA,CAAC,KAAU,KAAA;AACzD,YAAA,OAAO,MAAM,GAAQ,KAAA,CAAA,CAAA;AAAA,WACtB,CAAE,CAAA,CAAC,CAAE,CAAA,KAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACF;AAAA,MACA,EAAE,YAAY,CAAE,EAAA;AAAA,KAClB,CAAA;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,SAAS,SAAkB,CAAA;AAAA,IAC/B,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,IAAA;AAAA,MACpB,MAAM,KAAM,CAAA,KAAA;AAAA,KACd;AAAA,IACA,MAAA,EAAQ,UAAW,CAAA,GAAA,CAAI,SAAS,CAAA;AAAA,IAChC,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AAED,EAAA,MAAM,gBAAgB,SAAkB,CAAA;AAAA,IACtC,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,IAAA;AAAA,MACpB,MAAM,KAAM,CAAA,KAAA;AAAA,KACd;AAAA,IACA,MAAA,EAAQ,WAAW,GAAI,CAAA,CAAC,GAAG,CAAM,KAAA,CAAA,EAAG,IAAI,CAAG,CAAA,CAAA,CAAA;AAAA,IAC3C,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AAED,EAAA,MAAM,mBAAmB,SAAkB,CAAA;AAAA,IACzC,MAAQ,EAAA,WAAA;AAAA,IACR,KAAO,EAAA,CAAC,CAAG,EAAA,MAAA,CAAO,WAAW,CAAA;AAAA,GAC9B,CAAA,CAAA;AAED,EAAA,MAAM,YAAY,QAAiB,CAAA;AAAA,IACjC,KAAO,EAAA;AAAA,MACL,WAAA;AAAA,MACA,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,GAAA;AAAA,KACtB;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,GAAG,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KACjB,IAAK,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAO,CAAA,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACF;AAAA,IACA,IAAM,EAAA,EAAA;AAAA,GACP,CAAA,CAAA;AAED,EAAA,MAAM,aAAa,WAAoB,CAAA;AAAA,IACrC,KAAO,EAAA;AAAA,MACL,WAAA;AAAA,MACA,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,GAAA;AAAA,KACtB;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,GAAG,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KACjB,IAAK,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAO,CAAA,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,QAAQ,YAA6B,CAAA;AAAA,IACzC,MAAQ,EAAA,WAAA;AAAA,IACR,OAAO,QAAS,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,IAAI,KAAK,CAAA;AAAA,GACvC,CAAA,CAAA;AAQD,EAAA,MAAM,UAAa,GAAA,KAAA,CAAA;AAEnB,EAAM,MAAA,MAAA,GAAS,QAAQ,MAAM;AAC3B,IAAiB;AACf,MAAO,OAAA,UAAA,CAAA;AAAA,KACT;AACO,GACN,EAAA,CAAC,UAAY,EAAA,UAAA,EAAY,SAAS,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,eAAe,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AACxD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CACG,iBAA8B,CAAI,CAAA,EAAA,EAAA,CAAA,WAAA,CAAe,CACjD,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACpB,MAAM,MAAA,GAAA,GAAM,QAAQ,qBAAsB,EAAA,CAAA;AAC1C,MAAI,IAAA,GAAA,CAAI,QAAQ,GAAK,EAAA;AAEnB,QAAA,OAAA,CAAQ,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEtB,QAAA,OAAA,CAAQ,MAAM,QAAW,GAAA,QAAA,CAAA;AAEzB,QAAA,OAAA,CAAQ,MAAM,YAAe,GAAA,UAAA,CAAA;AAE7B,QAAA,OAAA,CAAQ,MAAM,UAAa,GAAA,QAAA,CAAA;AAAA,OAC7B;AAEA,MAAA,OAAA,CAAQ,KAAM,CAAA,eAAA,GACX,OAAQ,CAAA,YAAA,CAAa,GAAG,CAAe,GAAA,SAAA,CAAA;AAE1C,MAAA,OAAA,CAAQ,MAAM,SAAY,GAAA,CAAA,aAAA,CAAA,CAAA;AAAA,KAC3B,CAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AAC3E,IAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,IAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,MACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,QACE,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACF;AAAA,KACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,MACE,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,KAEF,GAAA,EAAA,CAAA;AACN,IAAA,MAAM,qBAAmD,EAAC,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,kBAAA,CAAmB,KAAKA,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAL,EAAU,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAmB,kBAAA,CAAA,IAAA,CAAKD,qCACnB,GADmB,CAAA,EAAA;AAAA,UAEtB,KAAO,EAAA,SAAA;AAAA,UACP,YAAY,IAAK,CAAA,IAAA;AAAA,SAClB,CAAA,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,kBAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,cAAkC,GAAA,YAAA,CAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA;AAAA,IACxE,CAAC,MAAM,KAAU,KAAA;AACf,MAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,MAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,QACE,YAAA;AAAA,UACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,YACE,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,WACF;AAAA,SACN;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,OAEF,GAAA,EAAA,CAAA;AACN,MAAO,OAAA;AAAA,QACL,KAAO,EAAA,SAAA;AAAA,QACP,OAAO,IAAK,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,GACF,CAAA;AACA,EAAA,IAAI,kBAAmC,EAAC,CAAA;AACxC,EAAI,IAAA,cAAA,CAAe,WAAW,CAAG,EAAA;AAC/B,IAAkB,eAAA,GAAA,YAAA;AAAA,MAChB,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAE,CAAC,CAAE,CAAA,IAAA;AAAA,KACrC,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AACrB,MAAO,OAAA;AAAA,QACL,KAAA,EAAO,GAAG,KAAQ,GAAA,CAAA,CAAA,CAAA;AAAA,QAClB,OAAO,IAAK,CAAA,GAAA;AAAA,OACd,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,YAAA,CAAa,MAAM,QAAS,CAAA,IAAI,CAC7B,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,IAAA,MAAM,cAAkD,EAAC,CAAA;AACzD,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,WAAA,CAAY,IAAK,CAAA;AAAA,UACf,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,KAAO,EAAA,IAAA,CAAK,IAAO,GAAA,KAAA,GAAQ,GAAI,CAAA,GAAA;AAAA,SAChC,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,WAAA,CAAA;AAAA,GACR,CACA,CAAA,IAAA,EACA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA,cAAA,CAAe,IAAK,CAAA,MAAM,CAAC,CAAA,CAAA;AAElD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,MAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAW,EAAA,CAAA,EAAG,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,CAAA,EAAM,KAAM,CAAA,KAAA,CAAA,wBAAA,CAAA;AAAA,QACvC,EAAI,EAAA;AAAA,UACF,QAAU,EAAA,QAAA;AAAA,SACZ;AAAA,QAEA,QAAA,kBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,UAAA;AAAA,YACL,WAAW,CAAI,CAAA,EAAA,OAAA,CAAA,WAAA,CAAA;AAAA,YACf,MAAA,EAAQ,MAAM,KAAM,CAAA,MAAA;AAAA,YACpB,KAAA,EAAO,MAAM,KAAM,CAAA,KAAA;AAAA,YAElB,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,QACL,oBAAA,GAAA;AAAA,gBAAC,IAAK,CAAA,IAAA;AAAA,gBAAL;AAAA,kBACC,MAAA;AAAA,kBACA,MAAA;AAAA,kBACA,IAAM,EAAA,CAAA;AAAA,kBACN,KAAA,EAAO,MAAM,KAAM,CAAA,KAAA;AAAA,kBACnB,MAAQ,EAAA,WAAA;AAAA,kBACR,YAAc,EAAA,EAAA;AAAA,kBACd,eAAiB,EAAA,EAAA;AAAA,kBACjB,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,iBAAA;AAAA,eAE/B;AAAA,8BAEF,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,kBAG7B,QAAA,kBAAA,GAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,IAAM,EAAA,UAAA;AAAA,sBACN,IAAM,EAAA,WAAA;AAAA,sBACN,MAAQ,EAAA,WAAA;AAAA,sBACR,EAAI,EAAA,SAAA;AAAA,sBACJ,OAAS,EAAA,MAAA;AAAA,sBACT,OAAS,EAAA,gBAAA;AAAA,sBACT,MAAA;AAAA,sBACA,KAAA;AAAA,sBAEC,QAAC,EAAA,CAAA,SAAA,KACA,SAAU,CAAA,GAAA,CAAI,CAAC,QAAa,KAAA;AAC1B,wBACE,uBAAA,GAAA;AAAA,0BAAC,KAAA;AAAA,0BAAA;AAAA,4BAEC,MAAM,QAAS,CAAA,EAAA;AAAA,4BAEd,QAAS,EAAA,QAAA,CAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AAC1B,8BAAA,MAAM,MAAM,CAAG,EAAA,QAAA,CAAS,KAAS,CAAA,CAAA,EAAA,GAAA,CAAI,SAAS,GAAI,CAAA,GAAA,CAAA,CAAA,CAAA;AAElD,8BACE,uBAAA,GAAA;AAAA,gCAAC,GAAA;AAAA,gCAAA;AAAA,kCACC,QAAA,EAAU,QAAS,CAAA,IAAA,CAAK,MAAW,KAAA,CAAA;AAAA,kCAEnC,GAAA;AAAA,kCACA,QAAA;AAAA,kCACA,KAAA;AAAA,kCACA,UAAA;AAAA,kCACA,aAAA,EAAe,cAAc,IAAK,EAAA;AAAA,iCAAA;AAAA,gCAL7B,GAAA;AAAA,+BAMP,CAAA;AAAA,6BAEH,CAAA;AAAA,2BAAA;AAAA,0BAjBI,CAAA,UAAA,EAAa,QAAS,CAAA,KAAA,CAAA,CAAA,EAAS,QAAS,CAAA,EAAA,CAAA,CAAA;AAAA,yBAkB/C,CAAA;AAAA,uBAEH,CAAA;AAAA,qBAAA;AAAA,mBAEL;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA,MAAA;AAAA,kBACP,MAAM,eAAgB,CAAA,IAAA;AAAA,kBACtB,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,kBAEN,aAAA,EAAe,CAAC,KAAU,KAAA;AA/atC,oBAAAD,IAAAA,GAAAA,CAAAA;AAgbc,oBAAI,IAAA,KAAA,GAAQ,QAAOA,GAAA,GAAA,KAAA,CAAM,mBAAN,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAsB,OAAQ,CAAA,GAAA,EAAK,EAAG,CAAA,CAAA,CAAA;AACzD,oBAAA,IAAI,OAAU,GAAA,CAAA,CAAA,CAAA;AACd,oBAAM,MAAA,KAAA,GAAQ,CAAC,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,GAAG,CAAA,CAAA;AAC/D,oBAAA,OAAO,SAAS,GAAM,EAAA;AACpB,sBAAA,KAAA,GAAQ,KAAQ,GAAA,GAAA,CAAA;AAChB,sBAAA,OAAA,EAAA,CAAA;AAAA,qBACF;AACA,oBAAA,IAAI,cAAc,CAAG,EAAA,KAAA,CAAA,CAAA,CAAA;AACrB,oBAAI,IAAA,WAAA,CAAY,SAAS,CAAG,EAAA;AAC1B,sBAAc,WAAA,GAAA,WAAA,CAAY,KAAM,CAAA,CAAA,EAAG,CAAC,CAAA,CAAA;AAAA,qBACtC;AACA,oBAAI,IAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,sBAAc,WAAA,GAAA,WAAA,CAAY,OAAQ,CAAA,GAAA,EAAK,EAAE,CAAA,CAAA;AAAA,qBAC3C;AACA,oBAAA,MAAM,WAAW,CAAG,EAAA,WAAA,CAAA,EAClB,WAAW,CAAI,GAAA,KAAA,CAAM,OAAO,CAAI,GAAA,EAAA,CAAA,CAAA,CAAA;AAGlC,oBACE,uBAAA,GAAA,CAAA,QAAA,EAAA,EACG,gBAAM,cACL,oBAAA,GAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACC,IAAI,KAAM,CAAA,EAAA;AAAA,wBACV,IAAI,KAAM,CAAA,EAAA;AAAA,wBACV,MAAM,KAAM,CAAA,IAAA;AAAA,wBACZ,UAAU,KAAM,CAAA,QAAA;AAAA,wBAChB,YAAY,KAAM,CAAA,UAAA;AAAA,wBAClB,GAAG,KAAM,CAAA,CAAA;AAAA,wBACT,GAAG,KAAM,CAAA,CAAA;AAAA,wBAER,QAAA,EAAA,QAAA;AAAA,uBAAA;AAAA,qBAGP,EAAA,CAAA,CAAA;AAAA,mBAEJ;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,GAAK,EAAA,WAAA;AAAA,kBACL,OACE,cAAe,CAAA,MAAA,KAAW,KAAK,eAAgB,CAAA,MAAA,GAAS,IACpD,aACA,GAAA,MAAA;AAAA,kBAEN,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,kBAEN,cAAA,EAAgB,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,kBAClC,aAAA,EAAe,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,kBACjC,WAAa,EAAA,CAAA;AAAA,iBAAA;AAAA,eACf;AAAA,aAAA;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,KACF;AAAA,oBACC,GAAA,CAAA,GAAA,EAAA,EAAI,SAAU,EAAA,sBAAA,EACZ,QAAM,EAAA,KAAA,CAAA,UAAA,IAAc,cAAe,CAAA,MAAA,KAAW,CAC7C,oBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,wBAEb,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,WAAQ,EAAI,EAAA,IAAA,EAAO,QAAS,EAAA,QAAA,CAAA,YAAY,EAAE,IAAK,EAAA,CAAA;AAAA,sBAChD,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA,OAAA;AAAA,UACJ,YACE,cAAe,CAAA,MAAA,KAAW,KAAK,eAAgB,CAAA,MAAA,GAAS,IACpD,eACA,GAAA,cAAA;AAAA,UAEN,WAAA,EAAa,eAAe,MAAW,KAAA,CAAA;AAAA,SAAA;AAAA,OACzC;AAAA,KAAA,EACF,CAEJ,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACtfO,MAAM,OAAO,CAAC;AAAA,EACnB,aAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA;AAAA,EAEA,KAAA;AAAA,EACA,gBAAA;AACF,CAUM,KAAA;AACJ,EAAA,4BACGK,UACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAc,aAAA,CAAA,QAAA,CAAS,QAAQ,CAC9B,oBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,CAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAA,EAAQ,IAAI,SAAU,CAAA,KAAK,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,QAChD,IAAA,EAAM,IAAI,SAAU,CAAA,KAAK,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAChD;AAAA,oBAEF,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,CAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAA,EAAQ,IAAI,SAAU,CAAA,KAAK,EAAE,MAAO,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,QAC9C,IAAA,EAAM,IAAI,SAAU,CAAA,KAAK,EAAE,MAAO,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAC9C;AAAA,oBACA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,CAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAO,EAAA,aAAA;AAAA,QACP,IAAK,EAAA,aAAA;AAAA,QACL,cAAc,MAAM;AAClB,UAAiB,gBAAA,CAAA,CAAC,QAAQ,CAAC,CAAA,CAAA;AAAA,SAC7B;AAAA,QACA,cAAc,MAAM;AAClB,UAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AAAA,SACrB;AAAA,QACA,KAAA,EAAO,EAAE,MAAA,EAAQ,SAAU,EAAA;AAAA,OAAA;AAAA,KAC7B;AAAA,GAAA,EAAA,EA9Ba,QA+Bf,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;;AC1BA,SAASF,kBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AAEA,SAAS,KAAK,UAAkC,EAAA;AAC9C,EAAA,OAAO,UAAW,CAAA,GAAA,CAAA;AACpB,CAAA;AAEA,SAAS,KAAK,UAAkC,EAAA;AAC9C,EAAO,OAAA,MAAA,CAAO,WAAW,KAAK,CAAA,CAAA;AAChC,CAAA;AAEA,SAAS,UAAU,KAA6B,EAAA;AA3DhD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA4DE,EAAA,MAAM,YAAY,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,IAAI,CAAE,CAAA,GAAA;AAAA,IAAI,CAAC,GAAA,KACxD,YAAa,CAAA,GAAA,CAAI,IAAI,CAAA;AAAA,GACvB,CAAA;AACA,EAAA,IAAI,cAAsC,EAAC,CAAA;AAC3C,EAAA,IAAI,gBAAmB,GAAA,CAAA,CAAA,CAAA;AAEvB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AACzC,IAAM,MAAA,KAAA,GAAQ,UAAU,CAAC,CAAA,CAAA;AACzB,IAAA,IAAI,CAAC,WAAA,IAAe,KAAM,CAAA,MAAA,GAAS,YAAY,MAAQ,EAAA;AACrD,MAAc,WAAA,GAAA,KAAA,CAAA;AACd,MAAmB,gBAAA,GAAA,CAAA,CAAA;AAAA,KACrB;AAAA,GACF;AAEA,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA,CAAa,EAAM,GAAA,KAAA,CAAA,QAAA,KAAN,mBAAgB,IAAI,CAAA,CAAA;AAC/C,EAAA,MAAM,iBAAiB,KAAM,CAAA,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,IAAI,CAAA,CAAA;AACpD,EAAA,MAAM,YAAY,cAAe,CAAA,MAAA;AAAA,IAC/B,CAAC,GAAK,EAAA,CAAA,KAAM,aAAa,GAAG,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,IACtC,EAAC;AAAA,GACH,CAAA;AACA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,WAAA;AAAA,IACA,gBAAA;AAAA,IACA,WAAa,EAAA,CAAC,GAAG,IAAI,GAAI,CAAA,SAAA,CAAU,GAAI,CAAA,CAAC,KAAU,KAAA,KAAA,CAAM,KAAK,CAAC,CAAC,CAAA;AAAA,IAC/D,QAAQ,YAA6B,CAAA;AAAA,MACnC,MAAA,EAAQ,WAAY,CAAA,GAAA,CAAI,IAAI,CAAA;AAAA,KAC7B,CAAA;AAAA,IACD,QAAQ,WAAoB,CAAA;AAAA,MAC1B,MAAQ,EAAA;AAAA,QAAA,CAAA,CACL,EAAI,GAAA,GAAA,CAAA,SAAA,EAAW,IAAI,CAAA,KAAnB,IAAwB,GAAA,EAAA,GAAA,CAAA,IAAK,CAAI,GAAA,CAAA,EAAA,GAAA,GAAA,CAAI,SAAW,EAAA,IAAI,CAAnB,KAAA,IAAA,GAAA,EAAA,GAAwB,CAAI,GAAA,CAAA;AAAA,QAAA,CAC9D,EAAI,GAAA,GAAA,CAAA,SAAA,EAAW,IAAI,CAAA,KAAnB,IAAwB,GAAA,EAAA,GAAA,CAAA;AAAA,OAC1B;AAAA,KACD,CAAA;AAAA,IACD,WAAW,QAAiB,CAAA;AAAA,MAC1B,MAAQ,EAAA;AAAA,QAAA,CAAA,CACL,EAAI,GAAA,GAAA,CAAA,SAAA,EAAW,IAAI,CAAA,KAAnB,IAAwB,GAAA,EAAA,GAAA,CAAA,IAAK,CAAI,GAAA,CAAA,EAAA,GAAA,GAAA,CAAI,SAAW,EAAA,IAAI,CAAnB,KAAA,IAAA,GAAA,EAAA,GAAwB,CAAI,GAAA,CAAA;AAAA,QAAA,CAC9D,EAAI,GAAA,GAAA,CAAA,SAAA,EAAW,IAAI,CAAA,KAAnB,IAAwB,GAAA,EAAA,GAAA,EAAA;AAAA,OAC1B;AAAA,KACD,CAAA;AAAA,GACH,CAAA;AACF,CAAA;AAWA,MAAM,YAAY,CAAC;AAAA,EACjB,KAAA;AAAA,EACA,MAAA,GAAS,EAAE,GAAK,EAAA,EAAA,EAAI,MAAM,GAAK,EAAA,MAAA,EAAQ,EAAI,EAAA,KAAA,EAAO,CAAE,EAAA;AAAA,EACpD,OAAA;AAAA,EACA,SAAA;AACF,CAA2B,KAAA;AACzB,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM,CAAA,CAAA;AAC1C,EAAA,IAAI,CAAC,KAAA,CAAM,cAAkB,IAAA,eAAA,CAAgB,OAAO,EAAI,EAAA;AACtD,IAAA,eAAA,CAAgB,IAAO,GAAA,EAAA,CAAA;AAAA,GACzB;AACA,EAAA,IAAI,aACF,KAAM,CAAA,KAAA,CAAM,SAAS,eAAgB,CAAA,IAAA,GAAO,gBAAgB,KAAS,IAAA,CAAA,CAAA;AACvE,EAAA,IAAI,cACF,KAAM,CAAA,KAAA,CAAM,UAAU,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AACxE,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAYA,kBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,EAAE,OAAO,MAAQ,EAAA,MAAA,EAAQ,WAAW,WAAY,EAAA,GAAI,UAAU,KAAK,CAAA,CAAA;AACzE,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAC/C,EAAA,MAAM,WAAc,GAAA,YAAA,CAAa,KAAM,CAAA,CAAC,EAAE,IAAI,CAAA,CAAA;AAC9C,EAAA,MAAM,gBAAmB,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,GAAQ,KAAA;AAC1C,IAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AACD,EAAA,MAAM,yBAA4B,GAAA,CAChCG,IACAC,EAAAA,IAAAA,EACA,OACa,KAAA;AACb,IAAA,MAAM,aAAa,OAAQ,CAAA,MAAA,CAAA;AAC3B,IAAM,MAAA,IAAA,GAAA,CAAQA,IAAMD,GAAAA,IAAAA,KAAQ,UAAa,GAAA,CAAA,CAAA,CAAA;AAEzC,IAAA,MAAM,cAAwB,EAAC,CAAA;AAC/B,IAAA,IAAI,YAAeA,GAAAA,IAAAA,CAAAA;AAEnB,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,UAAA,EAAY,CAAK,EAAA,EAAA;AACnC,MAAA,WAAA,CAAY,KAAK,YAAY,CAAA,CAAA;AAC7B,MAAgB,YAAA,IAAA,IAAA,CAAA;AAAA,KAClB;AACA,IAAO,OAAA,WAAA,CAAA;AAAA,GACT,CAAA;AACA,EAAM,MAAA,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,MAAM,QAAW,GAAA;AAAA,MACf,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,IAAA;AAAA,MACpB,UAAA;AAAA,KACF,CAAA;AACA,IAAA,OAAO,0BAA0B,QAAS,CAAA,CAAC,GAAG,QAAS,CAAA,CAAC,GAAG,WAAW,CAAA,CAAA;AAAA,GACrE,EAAA,CAAC,eAAiB,EAAA,UAAA,EAAY,WAAW,CAAC,CAAA,CAAA;AAE7C,EAAA,MAAA,CAAO,MAAM,WAAW,CAAA,CAAA;AACxB,EAAM,MAAA,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,MAAM,QAAW,GAAA;AAAA,MACf,WAAA,IAAe,eAAgB,CAAA,GAAA,GAAM,eAAgB,CAAA,MAAA,CAAA;AAAA,MACrD,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,GAAA;AAAA,KACtB,CAAA;AAEA,IAAO,OAAA,QAAA,CAAA;AAAA,GACN,EAAA,CAAC,eAAiB,EAAA,WAAW,CAAC,CAAA,CAAA;AAEjC,EAAA,MAAA,CAAO,MAAM,WAAW,CAAA,CAAA;AACxB,EAAA,SAAA,CAAU,KAAM,CAAA;AAAA,IACd,WAAA;AAAA,IACA,OAAO,eAAA,KAAoB,QAAW,GAAA,eAAA,GAAkB,eAAgB,CAAA,GAAA;AAAA,GACzE,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,aAAe,EAAA,gBAAgB,CAAI,GAAA,QAAA,CAAmB,EAAE,CAAA,CAAA;AAE/D,EAAM,MAAA,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,EAAG,CAAC,MAAM,CAAC,CAAA,CAAA;AACX,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,SAAS,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AAClD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CACG,iBAA8B,CAAI,CAAA,EAAA,EAAA,CAAA,WAAA,CAAe,CACjD,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACpB,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,qBAAA,EAAwB,CAAA,KAAA,CAAA;AAE9C,MAAA,OAAA,CAAQ,KAAM,CAAA,eAAA,GACX,OAAQ,CAAA,YAAA,CAAa,GAAG,CAAe,GAAA,SAAA,CAAA;AAE1C,MAAQ,OAAA,CAAA,KAAA,CAAM,SAAY,GAAA,CAAA,yBAAA,EAA4B,KAAQ,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AACD,EAAS,SAAA,cAAA,CACP,KACA,EAAA,OAAA,EAMA,UACA,EAAA;AACA,IAAA,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAU,KAAA;AACpC,MAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,KAAA,GAAQ,UAAU,CAAA,CAAA;AAC/C,MAAM,MAAA,IAAA,GAAO,MAAM,SAAS,CAAA,CAAA;AAC5B,MAAA,OAAOL,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAL,EAAa,UAAA,EAAY,IAAK,EAAA,CAAA,CAAA;AAAA,KACtC,CAAA,CAAA;AAAA,GACH;AAEA,EAAM,MAAA,aAAA,GAAgB,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AAC3E,IAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,IAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,MACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,QACE,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACF;AAAA,KACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,MACE,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,KAEF,GAAA,EAAA,CAAA;AACN,IAAA,MAAM,qBAAmD,EAAC,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,kBAAA,CAAmB,KAAKD,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAL,EAAU,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAmB,kBAAA,CAAA,IAAA,CAAKD,qCACnB,GADmB,CAAA,EAAA;AAAA,UAEtB,KAAO,EAAA,SAAA;AAAA,UACP,YAAY,IAAK,CAAA,IAAA;AAAA,SAClB,CAAA,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,EAAE,kBAAoB,EAAA,WAAA,EAAa,SAAU,EAAA,CAAA;AAAA,GACrD,CAAA,CAAA;AAED,EAAA,MAAM,cAAkC,GAAA,YAAA,CAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA;AAAA,IACxE,CAAC,MAAM,KAAU,KAAA;AACf,MAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,MAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,QACE,YAAA;AAAA,UACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,YACE,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,WACF;AAAA,SACN;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,OAEF,GAAA,EAAA,CAAA;AACN,MAAO,OAAA;AAAA,QACL,KAAO,EAAA,SAAA;AAAA,QACP,OAAO,IAAK,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAA,YAAA,CAAa,MAAM,QAAS,CAAA,IAAI,CAC7B,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,IAAA,MAAM,cAAkD,EAAC,CAAA;AACzD,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,WAAA,CAAY,IAAK,CAAA;AAAA,UACf,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,KAAO,EAAA,IAAA,CAAK,IAAO,GAAA,KAAA,GAAQ,GAAI,CAAA,GAAA;AAAA,SAChC,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,WAAA,CAAA;AAAA,GACR,CACA,CAAA,IAAA,EACA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA,cAAA,CAAe,IAAK,CAAA,MAAM,CAAC,CAAA,CAAA;AAElD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AACvD,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,OAAS,EAAA;AACjB,MAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AACrC,QAAA,iBAAA,CAAkB,OAAO,CAAA,CAAA;AAAA,iBAChB,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AAC5C,QAAA,iBAAA,CAAkB,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AAAA,OAC3C;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AACA,EAAA,MAAM,SAAS,gBAAiB,CAAA,IAAA,EAAO,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AACpD,IAAO,OAAA;AAAA,MACL,QAAQ,KAAM,CAAA,GAAA;AAAA,MACd,QAAQ,KAAM,CAAA,KAAA;AAAA,MACd,CAAG,EAAA,MAAA,CAAO,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,MACrB,CAAG,EAAA,YAAA,CAAa,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,KAC7B,CAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAA,MAAM,WAAc,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,MAAW,KAAA;AACxC,IAAA,OAAO,MAAO,CAAA,IAAA,CAAA;AAAA,GACf,CAAA,CAAA;AACD,EAAA,MAAM,KAAQ,GAAA,cAAA,CAAe,WAAa,EAAA,MAAA,EAAQ,YAAY,MAAM,CAAA,CAAA;AAEpE,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,CAAI,GAAA,QAAA,CAAuB,EAAE,CAAA,CAAA;AACrE,EAAM,MAAA,sBAAA,GAAyB,YAAY,cAAc,CAAA,CAAA;AACzD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAQ,GAAK,EAAA,MAAA,EAAQ,WAAU,yBAClC,EAAA,QAAA,kBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,UAAA;AAAA,QACL,KAAO,EAAA,UAAA;AAAA,QACP,MAAQ,EAAA,WAAA;AAAA,QACR,EAAG,EAAA,YAAA;AAAA,QACH,WAAW,CAAI,CAAA,EAAA,OAAA,CAAA,WAAA,CAAA;AAAA,QACf,WAAA,EAAa,CAAC,EAAO,KAAA;AAhX/B,UAAA,IAAA,EAAA,CAAA;AAiXY,UAAM,MAAA,IAAA,GAAA,CAAO,EAAW,GAAA,UAAA,CAAA,OAAA,KAAX,IAAoB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,qBAAA,EAAA,CAAA;AAEjC,UAAA,IAAI,UACF,EAAG,CAAA,OAAA,GAAA,CAAW,eAAgB,CAAA,IAAA,GAAO,gBAAgB,KAAS,IAAA,CAAA,CAAA;AAChE,UAAA,IAAI,UACF,EAAG,CAAA,OAAA,GAAA,CAAW,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AAEhE,UAAA,IAAI,IAAM,EAAA;AACR,YAAU,OAAA,GAAA,EAAA,CAAG,UAAU,IAAK,CAAA,IAAA,CAAA;AAC5B,YAAU,OAAA,GAAA,EAAA,CAAG,UAAU,IAAK,CAAA,GAAA,CAAA;AAAA,WAC9B;AACA,UAAA,MAAM,SAAY,GAAA,KAAA,CAAM,MAAO,CAAA,CAAC,IAAS,KAAA;AACvC,YACE,OAAA,IAAA,CAAK,IAAM,CAAA,KAAA,CAAA,IAAA,CAAK,CAAI,GAAA,OAAA,EAAY,KAAK,KAAK,CAAA,IAAA,CAAA,CAAA,GAAI,OAAY,EAAA,CAAA,CAAC,CAC3D,GAAA,EAAA,CAAA;AAAA,WAEH,CAAA,CAAA;AAED,UAAA,IAAI,sBAAuB,CAAA,OAAA,IAAW,SAAU,CAAA,MAAA,GAAS,CAAG,EAAA;AAC1D,YAAA,MAAM,cAAiB,GAAA,KAAA,CACpB,GAAI,CAAA,CAAC,GAAQ,KAAA;AACZ,cAAA,IAAI,QAAW,GAAA,EAAA,CAAA;AACf,cAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAC1B,gBAAI,IAAA,GAAA,CAAI,IAAS,KAAA,IAAA,CAAK,UAAY,EAAA;AAChC,kBAAA,QAAA,GAAW,IAAK,CAAA,UAAA,CAAA;AAAA,iBAClB;AAAA,eACD,CAAA,CAAA;AAED,cAAO,OAAA,QAAA,CAAA;AAAA,aACR,CACA,CAAA,MAAA,CAAO,CAAC,IAAA,KAAS,SAAS,EAAE,CAAA,CAAA;AAC/B,YAAA,MAAM,YAAe,GAAA,WAAA,CAAY,SAAU,CAAA,CAAC,KAAU,KAAA;AACpD,cAAA,OAAO,KAAM,CAAA,GAAA,KAAQ,SAAU,CAAA,CAAC,CAAE,CAAA,MAAA,CAAA;AAAA,aACnC,CAAA,CAAA;AAED,YAAI,IAAA,cAAA,IAAkB,iBAAiB,KAAW,CAAA,EAAA;AAChD,cAAA,MAAM,eAAkB,GAAA,cAAA,CAAe,GAAI,CAAA,CAAC,GAAQ,KAAA;AAClD,gBAAA,OAAO,GAAG,GAAM,CAAA,EAAA,YAAA,CAAA,CAAA,CAAA;AAAA,eACjB,CAAA,CAAA;AAED,cAAiB,gBAAA,CAAA,CAAC,GAAG,eAAe,CAAC,CAAA,CAAA;AAAA,aACvC;AACA,YAAA,iBAAA,CAAkB,SAAS,CAAA,CAAA;AAC3B,YAAA,MAAM,qBAAqB,QAAS,CAAA,gBAAA;AAAA,cAClC,EAAG,CAAA,OAAA;AAAA,cACH,EAAG,CAAA,OAAA;AAAA,aACL,CAAA;AACA,YACE,IAAA,kBAAA,IACA,kBAAmB,CAAA,OAAA,KAAY,QAC/B,EAAA;AACA,cAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,gBAC3B,UAAU,SACP,CAAA,IAAA,CAAK,CAAC,CAAG,EAAA,CAAA,KAAM,OAAO,CAAE,CAAA,MAAM,CAAI,GAAA,MAAA,CAAO,EAAE,MAAM,CAAC,EAClD,GAAI,CAAA,CAAC,MAAM,CAAM,KAAA;AAChB,kBAAA,MAAM,cAAc,cAAe,CAAA,IAAA;AAAA,oBACjC,CAAC,GACC,KAAA,GAAA,CAAI,UAAU,IAAK,CAAA,UAAA,GAAa,QAAQ,IAAK,CAAA,MAAA;AAAA,mBACjD,CAAA;AAEA,kBACE,uBAAA,IAAA;AAAA,oBAAC,GAAA;AAAA,oBAAA;AAAA,sBAGC,QAAA,EAAA;AAAA,wCAAA,GAAA;AAAA,0BAAC,KAAA;AAAA,0BAAA;AAAA,4BACC,KAAO,EAAA;AAAA,8BACL,KACE,EAAA,cAAA,CACE,cAAe,CAAA,SAAA,CAAU,CAAC,GAAQ,KAAA;AAChC,gCACE,OAAA,GAAA,CAAI,WACH,WACG,GAAA,IAAA,CAAK,aAAa,KAAQ,GAAA,IAAA,CAAK,SAC/B,IAAK,CAAA,UAAA,CAAA,CAAA;AAAA,+BAEZ,CACH,CAAE,CAAA,KAAA;AAAA,6BACN;AAAA,4BAEA,QAAA,kBAAA,GAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,UAAW,EAAA,CAAA;AAAA,2BAAA;AAAA,yBAC3B;AAAA,wBACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,eAAK,MAAO,EAAA,CAAA;AAAA,wCACvC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AAAA,wBACjB,cAAe,CAAA,CAAA,GAAI,CAAC,CAAA,wBAAM,IAAG,EAAA,EAAA,CAAA;AAAA,uBAAA;AAAA,qBAAA;AAAA,oBArBzB,CAAG,EAAA,IAAA,CAAK,UAAc,CAAA,CAAA,EAAA,IAAA,CAAK,UAAU,IAAK,CAAA,MAAA,CAAA,CAAA;AAAA,mBAsBjD,CAAA;AAAA,iBAEH,CAAA;AAAA,gBACH,iBAAiB,MAAM,kBAAA;AAAA,gBACvB,0BAA4B,EAAA,aAAA;AAAA,eAC7B,CAAA,CAAA;AAAA,aACI,MAAA;AACL,cAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAAA,aACnC;AAAA,WACF,MAAA,IAAW,SAAU,CAAA,MAAA,KAAW,CAAG,EAAA;AACjC,YAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AAAA,WACrB;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,QACL,oBAAA,GAAA;AAAA,YAAC,IAAK,CAAA,IAAA;AAAA,YAAL;AAAA,cACC,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,cAE7B,IAAM,EAAA,CAAA;AAAA,cACN,MAAA;AAAA,cACA,MAAQ,EAAA,YAAA;AAAA,cACR,KAAO,EAAA,UAAA;AAAA,cACP,MAAQ,EAAA,WAAA;AAAA,cACR,MAAA,EAAQ,iCAAQ,IAAK,CAAA,MAAA;AAAA,cACrB,aAAA,EAAe,iCAAQ,IAAK,CAAA,OAAA;AAAA,aAAA;AAAA,WAC9B;AAAA,UAED,KAAM,CAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAM,KAAA;AAnepC,YAAA,IAAA,EAAA,CAAA;AAoeY,YAAM,MAAA,kBAAA,GAAqB,YAAa,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACnD,YAAA,MAAM,YAAW,EAAc,GAAA,aAAA,CAAA,IAAA;AAAA,cAC7B,CAAC,IAAS,KAAA,IAAA,CAAK,mBAAmB,CAAC,CAAA,CAAE,eAAe,MAAO,CAAA,IAAA;AAAA,kBAD5C,IAEd,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAA,CAAA;AAEH,YACE,uBAAA,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,gBAE7B,KAAO,EAAA;AAAA,kBACL,SACE,cAAmB,KAAA,EAAA,IAAM,cAAmB,KAAA,MAAA,CAAO,OAC/C,IACA,GAAA,CAAA;AAAA,kBACN,UAAY,EAAA,eAAA;AAAA,iBACd;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAO,SAAU,CAAA,cAAA;AAAA,sBACjB,IAAM,EAAA,kBAAA;AAAA,sBACN,CAAA,EAAG,CAAC,UAAe,KAAA;AA5frC,wBAAAD,IAAAA,GAAAA,CAAAA;AA6foB,wBAAA,OAAA,CAAOA,MAAA,MAAO,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA,KAAvB,OAAAA,GAA4B,GAAA,CAAA,CAAA;AAAA,uBACrC;AAAA,sBACA,CAAA,EAAG,CAAC,UAAY,KAAA;AA/flC,wBAAAA,IAAAA,GAAAA,CAAAA;AA+fqC,wBAAA,OAAA,CAAAA,MAAA,YAAa,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA,KAA7B,OAAAA,GAAkC,GAAA,CAAA,CAAA;AAAA,uBAAA;AAAA,sBACrD,QAAQ,QAAY,IAAA,IAAA,GAAA,QAAA,GAAA,OAAA;AAAA,sBACpB,WAAa,EAAA,CAAA;AAAA,sBACb,aAAe,EAAA,CAAA;AAAA,sBACf,cAAe,EAAA,oBAAA;AAAA,sBACf,KAAM,EAAA,aAAA;AAAA,qBAAA;AAAA,mBACR;AAAA,kBACC,kBAAmB,CAAA,GAAA,CAAI,CAAC,UAAA,EAAY,CAAM,KAAA;AAtgB3D,oBAAAA,IAAAA,GAAAA,CAAAA;AAugBkB,oBAAA,MAAM,GAAM,GAAA,MAAA,CAAO,IAAO,GAAA,CAAA,CAAE,QAAS,EAAA,CAAA;AACrC,oBAAM,MAAA,SAAA,GAAA,CAAYA,GAAA,GAAA,aAAA,CACf,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,kBAAkB,CACrC,CAAA,IAAA,EACA,CAAA,IAAA;AAAA,sBACC,CAAC,QACC,GAAI,CAAA,UAAA,KAAe,OAAO,IAC1B,IAAA,GAAA,CAAI,QAAQ,UAAW,CAAA,GAAA;AAAA,qBAC3B,KAPgB,gBAAAA,GAOb,CAAA,KAAA,CAAA;AAEL,oBAAA,4BACG,GACE,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,KAAA,CAAM,UACL,oBAAA,GAAA;AAAA,wBAAC,MAAA;AAAA,wBAAA;AAAA,0BACC,CAAG,EAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAC,CAAI,GAAA,EAAA;AAAA,0BAC9B,CAAG,EAAA,YAAA,CAAa,IAAK,CAAA,UAAU,CAAC,CAAI,GAAA,CAAA;AAAA,0BACpC,UAAW,EAAA,QAAA;AAAA,0BACX,KAAO,EAAA;AAAA,4BACL,OACE,EAAA,cAAA,KAAmB,MAAO,CAAA,IAAA,GAAO,OAAU,GAAA,MAAA;AAAA,4BAC7C,OAAS,EAAA,cAAA,KAAmB,MAAO,CAAA,IAAA,GAAO,CAAI,GAAA,CAAA;AAAA,4BAC9C,UAAY,EAAA,eAAA;AAAA,2BACd;AAAA,0BAEC,QAAW,EAAA,UAAA,CAAA,KAAA;AAAA,yBAAA;AAAA,uBACd;AAAA,sCAEF,GAAA;AAAA,wBAAC,IAAA;AAAA,wBAAA;AAAA,0BACC,OAAO,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,OAAA;AAAA,0BACpB,UAAA;AAAA,0BACA,aAAA;AAAA,0BACA,EAAI,EAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAC,CAAA;AAAA,0BAC3B,EAAI,EAAA,YAAA,CAAa,IAAK,CAAA,UAAU,CAAC,CAAA;AAAA,0BACjC,gBAAA;AAAA,0BACA,QAAU,EAAA,GAAA;AAAA,0BACV,MAAA;AAAA,yBAAA;AAAA,uBACF;AAAA,qBAAA,EAAA,EAzBM,GA0BR,CAAA,CAAA;AAAA,mBAEH,CAAA;AAAA,iBAAA;AAAA,eAAA;AAAA,cAnEI,CAAS,MAAA,EAAA,MAAA,CAAO,IAAO,GAAA,CAAA,CAAE,QAAS,EAAA,CAAA,CAAA;AAAA,aAoEzC,CAAA;AAAA,WAEH,CAAA;AAAA,0BAED,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA,YAAA;AAAA,cACP,MAAM,eAAgB,CAAA,IAAA;AAAA,cACtB,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,cAEN,cAAgB,EAAA;AAAA,gBACd,OAAA,EAAS,KAAM,CAAA,cAAA,GAAiB,MAAS,GAAA,MAAA;AAAA,eAC3C;AAAA,aAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,GAAK,EAAA,WAAA,IAAe,eAAgB,CAAA,GAAA,GAAM,eAAgB,CAAA,MAAA,CAAA;AAAA,cAC1D,KAAO,EAAA,MAAA;AAAA,cACP,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,cAEN,cAAA,EAAgB,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,cAClC,aAAA,EAAe,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,cACjC,WAAa,EAAA,EAAA;AAAA,aAAA;AAAA,WACf;AAAA,SAAA;AAAA,OAAA;AAAA,KAEJ,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,GAAA,EAAA,EAAI,SAAU,EAAA,sBAAA,EACZ,QAAM,EAAA,KAAA,CAAA,UAAA,IAAc,cAAe,CAAA,MAAA,KAAW,CAC7C,oBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,wBAEb,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,WAAQ,EAAI,EAAA,IAAA,EAAO,QAAS,EAAA,QAAA,CAAA,YAAY,EAAE,IAAK,EAAA,CAAA;AAAA,sBAC/C,GAAA,CAAA,eAAA,EAAA,EAAgB,EAAI,EAAA,OAAA,EAAS,YAAY,cAAgB,EAAA,CAAA;AAAA,KAAA,EAC5D,CAEJ,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACjlBA,MAAM,eAAe,CAAC;AAAA,EACpB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,CAAA;AAAA,EACA,CAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,MAAA;AAAA,EACA,eAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AACF,CAwBM,KAAA;AACJ,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,MAAA;AAAA,QACJ,EAAA,EAAI,QAAQ,MAAM;AAChB,UAAO,OAAA;AAAA,YACL,OAAO,CAAG,EAAA,KAAA,CAAA,EAAA,CAAA;AAAA,YACV,QAAQ,CAAG,EAAA,MAAA,CAAA,EAAA,CAAA;AAAA,YACX,GAAG,CAAG,EAAA,CAAA,CAAA,EAAA,CAAA;AAAA,YACN,GAAG,CAAG,EAAA,CAAA,CAAA,EAAA,CAAA;AAAA,YACN,MAAM,CAAG,EAAA,IAAA,CAAA,CAAA;AAAA,YACT,SAAW,EAAA;AAAA,cACT,IAAA,EAAM,IAAI,SAAU,CAAA,IAAI,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,aAC/C;AAAA,YACA,UAAY,EAAA,YAAA;AAAA,WACd,CAAA;AAAA,WACC,CAAC,IAAA,EAAM,QAAQ,KAAO,EAAA,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,QAC9B,YAAA,EAAc,CAAC,EAAO,KAAA;AACpB,UAAI,IAAA,QAAA,EAAW,CAAA,QAAA,CAAS,IAAK,CAAA;AAAA,YAC3B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA;AAAA,oBACL,OAAO,IAAK,CAAA,KAAA;AAAA,mBACd;AAAA,kBAEA,QAAA,kBAAA,GAAA,CAAC,YAAQ,QAAW,EAAA,UAAA,EAAA,CAAA;AAAA,iBAAA;AAAA,eACtB;AAAA,cACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,eAAK,CAAE,EAAA,CAAA;AAAA,8BAClC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,CAAE,EAAA,CAAA;AAAA,aACf,EAAA,CAAA;AAAA,YAEF,eAAA,EAAiB,MAAM,EAAG,CAAA,MAAA;AAAA,YAC1B,0BAA4B,EAAA,QAAA;AAAA,WAC7B,CAAA,CAAA;AAAA,SACH;AAAA,OAAA;AAAA,KACF;AAAA,IAEC,CAAC,MACA,oBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAI,EAAA,KAAA;AAAA,QACJ,EAAI,EAAA,KAAA;AAAA,QACJ,MAAA;AAAA,QACA,eAAiB,EAAA,eAAA;AAAA,OAAA;AAAA,KACnB;AAAA,IAED,KAAA,CAAM,UACL,oBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,UAAA,EAAW,UAAS,CAAG,EAAA,KAAA,EAAO,CAAG,EAAA,KAAA,EACpC,QACH,EAAA,WAAA,EAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnFA,MAAM,0BAA0B,CAAC;AAAA,EAC/B,IAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AACF,CAWM,KAAA;AAEJ,EAAA,IAAI,eAAkB,GAAA,CAAA,CAAA;AAGtB,EAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,GAAI,CAAA,CAAC,KAAU,KAAA;AAChC,IAAM,MAAA,MAAA,GAAS,UAAU,KAAK,CAAA,CAAA;AAC9B,IAAM,MAAA,MAAA,GAAS,UAAU,KAAK,CAAA,CAAA;AAE9B,IAAA,MAAM,SAAY,GAAA,eAAA,CAAA;AAClB,IAAA,eAAA,IAAmB,OAAO,MAAM,CAAA,CAAA;AAEhC,IAAO,OAAA;AAAA,MACL,CAAG,EAAA,MAAA;AAAA,MACH,CAAG,EAAA,MAAA;AAAA,MACH,KAAO,EAAA,SAAA;AAAA,MACP,GAAK,EAAA,eAAA;AAAA,MACL,OAAO,MAAO,CAAA,MAAM,IAAI,CAAI,GAAA,MAAA,CAAO,WAAW,MAAO,CAAA,QAAA;AAAA,KACvD,CAAA;AAAA,GACD,CAAA,CAAA;AAGD,EAAA,IAAI,SAAW,EAAA;AACb,IAAA,KAAA,CAAM,IAAK,CAAA;AAAA,MACT,CAAG,EAAA,OAAA;AAAA,MACH,CAAG,EAAA,eAAA;AAAA,MACH,KAAO,EAAA,CAAA;AAAA,MACP,GAAK,EAAA,eAAA;AAAA,MACL,OAAO,MAAO,CAAA,KAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACH;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AACA,SAAS,gBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AACa,MAAA,aAAA,GAAgB,CAAC,EAcH,KAAA;AAdG,EAErB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IADP,MAAA,GAAS,EAAE,GAAK,EAAA,EAAA,EAAI,MAAM,GAAK,EAAA,MAAA,EAAQ,GAAK,EAAA,KAAA,EAAO,EAAG,EAAA;AAAA,IACtD,KAAO,EAAA,EAAA;AAAA,GA9FT,GA4F8B,IAErB,EACL,GAAA,EAAA,EAAA;AAAA,IAAkB,eAAA,GAAA;AAAA,MAChB,QAAU,EAAA,SAAA;AAAA,MACV,QAAU,EAAA,SAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MACP,aAAe,EAAA,SAAA;AAAA,KACjB;AAAA,GApGJ,GA8FS,EAOF,EAAA,KAAA,GAAA,SAAA,CAPE,EAOF,EAAA;AAAA,IANH,iBAAA;AAAA,GADK,CAAA,EAAA;AAAA,IASP,SAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,GAb4B,GAAA,EAAA,CAAA;AA5F9B,EAAAA,IAAAA,GAAAA,CAAAA;AA2GE,EAAQ,OAAA,CAAA,GAAA,CAAI,EAAE,MAAA,EAAQ,CAAA,CAAA;AAEtB,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM,CAAA,CAAA;AAE1C,EAAA,IAAI,CAAC,KAAA,CAAM,cAAkB,IAAA,eAAA,CAAgB,OAAO,EAAI,EAAA;AACtD,IAAA,eAAA,CAAgB,IAAO,GAAA,EAAA,CAAA;AAAA,GACzB;AACA,EAAI,IAAA,UAAA,GACF,MAAM,KAAM,CAAA,KAAA,GAAA,CAAS,CAAC,eAAgB,CAAA,IAAA,GAAO,gBAAgB,KAAS,IAAA,CAAA,CAAA;AACxE,EAAI,IAAA,WAAA,GACF,MAAM,KAAM,CAAA,MAAA,GAAA,CAAU,CAAC,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AACzE,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAY,gBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,SAAA,GAAY,CAAC,CAAA,KAAc,CAAE,CAAA,GAAA,CAAA;AACnC,EAAM,MAAA,SAAA,GAAY,CAAC,CAAA,KAAc,CAAE,CAAA,KAAA,CAAA;AAEnC,EAAA,MAAM,SAAS,YAAaA,CAAAA,CAAAA,GAAAA,GAAA,MAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAgB,IAAI,CAAA,CAC7C,OAAO,CAAC,KAAA,KAAU,CAAC,CAAC,KAAA,CAAM,IAAI,CAC9B,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AACd,IAAA,OAAOC,qCACF,KADE,CAAA,EAAA;AAAA,MAEL,YAAY,KAAM,CAAA,IAAA;AAAA,KACpB,CAAA,CAAA;AAAA,GACD,CAAA,CAAA;AACH,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,GAAG,CAAA,CAAA;AAChD,EAAA,MAAM,UAAa,GAAA,MAAA,CAAO,GAAI,CAAA,CAAC,KAAU,KAAA;AACvC,IAAA,OAAO,KAAM,CAAA,IAAA,CAAA;AAAA,GACd,CAAA,CAAA;AACD,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,MAAG;AAhJP,MAAAD,IAAAA,GAAAA,CAAAA;AAiJM,MAAwB,OAAA,uBAAA,CAAA;AAAA,QACtB,MAAM,YAAa,CAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CAAE,UAA+B,CACpE,CAAA,IAAA;AAAA,QACH,SAAW,EAAA,SAAA;AAAA,QACX,SAAW,EAAA,SAAA;AAAA,QACX,SAAWA,EAAAA,CAAAA,GAAAA,GAAA,KAAM,CAAA,SAAA,KAAN,OAAAA,GAAmB,GAAA,IAAA;AAAA,QAC9B,MAAQ,EAAA,eAAA;AAAA,OACT,CAAA,CAAA;AAAA,KAAA;AAAA,IACH,CAAC,KAAM,CAAA,QAAA,CAAS,MAAM,KAAM,CAAA,SAAA,EAAW,YAAY,eAAe,CAAA;AAAA,GACpE,CAAA;AAGA,EAAA,MAAM,OAAU,GAAA,GAAA,CAAA;AAEhB,EAAA,MAAM,SAAS,SAAU,CAAA;AAAA,IACvB,QAAQ,KAAM,CAAA,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,CAAC,CAAA;AAAA,IAClC,OAAA;AAAA,IACA,KAAA,EAAO,CAAC,CAAA,EAAG,UAAU,CAAA;AAAA,GACtB,CAAA,CAAA;AAED,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAM,MAAA,MAAA,GAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,IAAA,KAAS,CAAC,IAAK,CAAA,KAAA,EAAO,IAAK,CAAA,GAAG,CAAC,CAAA,CAAA;AAC7D,IAAA,MAAM,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI,OAAe,MAAM,CAAA,CAAA;AACxC,IAAO,OAAA,GAAA,IAAO,QAAQ,GAAO,IAAA,IAAA,GAAO,CAAC,GAAM,GAAA,CAAA,EAAG,GAAM,GAAA,CAAC,CAAI,GAAA,KAAA,CAAA,CAAA;AAAA,GAC3D,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AAEV,EAAA,MAAM,SAAS,WAAY,CAAA;AAAA,IACzB,MAAQ,EAAA,OAAA;AAAA,IACR,IAAM,EAAA,IAAA;AAAA,IACN,KAAA,EAAO,CAAC,WAAA,EAAa,CAAC,CAAA;AAAA,GACvB,CAAA,CAAA;AAED,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,gBAAgB,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AACzD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CACG,iBAA8B,CAAI,CAAA,EAAA,EAAA,CAAA,WAAA,CAAe,CACjD,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACpB,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,qBAAA,EAAwB,CAAA,KAAA,CAAA;AAE9C,MAAA,OAAA,CAAQ,KAAM,CAAA,eAAA,GACX,OAAQ,CAAA,YAAA,CAAa,GAAG,CAAe,GAAA,SAAA,CAAA;AAE1C,MAAQ,OAAA,CAAA,KAAA,CAAM,SAAY,GAAA,CAAA,yBAAA,EAA4B,KAAQ,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AACA,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,SAAA,EAAW,CAAG,EAAA,SAAA,GAAY,SAAY,GAAA,EAAA,CAAA,wBAAA,CAAA;AAAA,QACtC,GAAK,EAAA,MAAA;AAAA,QAEL,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,MAAM,KAAM,CAAA,MAAA;AAAA,YACpB,KAAA,EAAO,MAAM,KAAM,CAAA,KAAA;AAAA,YACnB,GAAK,EAAA,UAAA;AAAA,YAEL,+BAAC,KAAM,EAAA,EAAA,IAAA,EAAM,gBAAgB,IAAM,EAAA,GAAA,EAAK,gBAAgB,GACtD,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,YAAS,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA,UAAA,EAAY,iBAAgB,GAAI,EAAA,CAAA;AAAA,cAC/D,KAAM,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AAjNxC,gBAAAA,IAAAA,GAAAA,CAAAA;AAkNc,gBAAM,MAAA,CAAA,GAAI,MAAO,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AACvB,gBAAM,MAAA,CAAA,GAAI,OAAO,IAAK,CAAA,GAAA,CAAI,KAAK,KAAO,EAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAE/C,gBAAI,IAAA,CAAA,IAAK,IAAQ,IAAA,CAAA,IAAK,IAAM,EAAA;AAC1B,kBAAO,OAAA,IAAA,CAAA;AAAA,iBACT;AAEA,gBAAM,MAAA,SAAA,GAAY,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,CAAK,KAAK,CAAI,GAAA,MAAA,CAAO,IAAK,CAAA,GAAG,CAAC,CAAA,CAAA;AAEhE,gBAAM,MAAA,MAAA,GAAS,KAAU,KAAA,KAAA,CAAM,MAAS,GAAA,CAAA,CAAA;AACxC,gBAAA,MAAM,WAAc,GAAA,CAAA,CAAA;AACpB,gBAAA,MAAM,EAAK,GAAA,CAAA,GAAI,MAAO,CAAA,SAAA,EAAc,GAAA,WAAA,CAAA;AACpC,gBAAA,MAAM,KAAK,CAAI,GAAA,MAAA,CAAO,SAAU,EAAA,IAAK,IAAI,OAAW,CAAA,GAAA,WAAA,CAAA;AACpD,gBAAA,MAAM,QAAQ,IAAK,CAAA,GAAA,GAAM,IAAK,CAAA,KAAA,GAAQ,IAAI,SAAY,GAAA,CAAA,CAAA;AAEtD,gBAAA,MAAM,WAAc,GAAA,EAAA,CAAA;AACpB,gBAAM,MAAA,MAAA,GACJ,OAAO,IAAK,CAAA,GAAG,KACb,IAAK,CAAA,CAAA,GAA0B,CAC7B,GAAA,WAAA,GACA,CAAC,WAAA,CAAA,CAAA;AAEP,gBAAA,IAAI,aAAgB,GAAA,CAAA,CAAA;AACpB,gBACG,KAAA,CAAA,MAAA,CAAO,CAAC,CAAA,EAAG,CAAM,KAAA;AA1OlC,kBAAAA,IAAAA,GAAAA,CAAAA;AA2OkB,kBAAKA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,KAAM,CAAA,SAAA,KAAN,IAAAA,GAAAA,GAAAA,GAAmB,SAAS,CAAC,KAAA,CAAM,CAAI,GAAA,CAAC,CAAG,EAAA;AAC9C,oBAAO,OAAA,KAAA,CAAA;AAAA,mBACT;AACA,kBAAA,OAAO,CAAK,IAAA,KAAA,CAAA;AAAA,iBACb,CAAA,CACA,OAAQ,CAAA,CAACQ,KAAS,KAAA;AACjB,kBAAiB,aAAA,IAAA,MAAA,CAAOA,MAAK,CAAC,CAAA,CAAA;AAAA,iBAC/B,CAAA,CAAA;AAEH,gBACE,uBAAA,GAAA;AAAA,kBAAC,YAAA;AAAA,kBAAA;AAAA,oBACC,KAAA;AAAA,oBACA,UAAA,EAAY,WAAW,UAA+B,CAAA;AAAA,oBACtD,MAAM,IAAK,CAAA,KAAA;AAAA,oBACX,MAAQ,EAAA,SAAA;AAAA,oBACR,MAAA;AAAA,oBAEA,KAAA;AAAA,oBACA,IAAA;AAAA,oBACA,QAAQ,eAAgB,CAAA,aAAA;AAAA,oBACxB,eAAiB,EAAA,CAAA;AAAA,oBACjB,WAAA,EAAA,CAAA,CACER,MAAA,KAAM,CAAA,SAAA,KAAN,OAAAA,GAAmB,GAAA,IAAA,IACf,KAAK,CACJ,GAAA,aAAA;AAAA,oBAEP,KAAO,EAAA,CAAA,GAAI,MAAO,CAAA,SAAA,EAAc,GAAA,CAAA;AAAA,oBAChC,OAAO,MAAS,GAAA,CAAA;AAAA,oBAChB,KAAA,EAAO,OAAO,SAAU,EAAA;AAAA,oBACxB,CAAA;AAAA,oBACA,CAAA;AAAA,oBACA,EAAA;AAAA,oBACA,EAAA;AAAA,mBAAA;AAAA,kBAhBK,KAAA;AAAA,iBAiBP,CAAA;AAAA,eAEH,CAAA;AAAA,8BACD,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA,EAAA;AAAA,kBACP,KAAO,EAAA,MAAA;AAAA,kBACP,SAAS,EAAA,IAAA;AAAA,kBACT,gBAAgB,OAAO;AAAA,oBACrB,UAAY,EAAA,KAAA;AAAA,oBACZ,cAAgB,EAAA,QAAA;AAAA,oBAChB,OAAA,EAAS,KAAM,CAAA,cAAA,GAAiB,MAAS,GAAA,MAAA;AAAA,mBAC3C,CAAA;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA,MAAA;AAAA,kBACP,GAAK,EAAA,WAAA;AAAA,kBACL,cAAA,EAAgB,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,kBAClC,aAAA,EAAe,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,iBAAA;AAAA,eACnC;AAAA,aACF,EAAA,CAAA;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,KACF;AAAA,oBACC,GAAA,CAAA,GAAA,EAAA,EAAI,SAAU,EAAA,sBAAA,EACZ,QAAC,EAAA,CAAA,KAAA,CAAM,YAAgB,IAAA,MAAA,CAAO,MAAS,GAAA,CAAA,oBACrC,IAAA,CAAA,GAAA,EAAA,EAAI,WAAU,uBAEb,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,WAAQ,EAAI,EAAA,IAAA,EAAO,QAAS,EAAA,QAAA,CAAA,aAAa,EAAE,IAAK,EAAA,CAAA;AAAA,sBACjD,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,MAAQ,EAAA,UAAA;AAAA,UACR,SAAU,EAAA,oBAAA;AAAA,UACV,OAAS,EAAA,UAAA;AAAA,UACT,UAAY,EAAA,aAAA;AAAA,SAAA;AAAA,OACd;AAAA,KAAA,EACF,CAoBJ,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACrTA,MAAM,UAAa,GAAA,oBAAA,CAAA;AAEnB,SAAS,mBACJ,IACH,EAAA;AACA,EAAA,OAAO,KAAM,CAAA,WAAA;AAAA,IACX,SAAS,OAAO,OAAY,EAAA;AAC1B,MAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AAExB,QAAI,IAAA,OAAA;AAAS,UAAA,OAAA,CAAQ,OAAU,GAAA,OAAA,CAAA;AAAA,OAChC,CAAA,CAAA;AAAA,KACH;AAAA,IACA,CAAC,IAAI,CAAA;AAAA,GACP,CAAA;AACF,CAAA;AAMO,MAAM,GAAG,YAAA,EAAc,aAAa,CAAA,GAAI,yBAU3C,CAAA;AAAA,EACF,SAAW,EAAA,mBAAA;AAAA,IACT,eAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,MACE,GAAK,EAAA;AAAA,QACH,MAAQ,EAAA,aAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,gBAAA;AAAA,OACV;AAAA,MACA,KAAO,EAAA;AAAA,QACL,MAAQ,EAAA,eAAA;AAAA,OACV;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,MAAQ,EAAA,cAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,gBAAA;AAAA,OACV;AAAA,MACA,SAAW,EAAA;AAAA,QACT,MAAQ,EAAA,mBAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,gBAAA;AAAA,OACV;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,MAAQ,EAAA,cAAA;AAAA,OACV;AAAA,MACA,KAAO,EAAA;AAAA,QACL,MAAQ,EAAA,eAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,gBAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACJ,MAAQ,EAAA,UAAA;AAAA,UACR,KAAO,EAAA,UAAA;AAAA,SACT;AAAA,QACA,MAAQ,EAAA,UAAA;AAAA,QACR,UAAY,EAAA,qBAAA;AAAA,QACZ,IAAM,EAAA;AAAA,UACJ,MAAQ,EAAA,UAAA;AAAA,UACR,OAAS,EAAA,KAAA;AAAA,SACX;AAAA,QACA,OAAS,EAAA;AAAA,UACP,eAAiB,EAAA,oBAAA;AAAA,UACjB,MAAQ,EAAA,gBAAA;AAAA,UACR,KAAO,EAAA,UAAA;AAAA,UACP,OAAS,EAAA,aAAA;AAAA,UACT,YAAc,EAAA,KAAA;AAAA,UACd,QAAU,EAAA,MAAA;AAAA,UACV,SAAW,EAAA,8BAAA;AAAA,UACX,UAAY,EAAA,KAAA;AAAA,SACd;AAAA,OACF;AAAA,MACA,aAAa,MAAM;AACjB,QAAO,OAAA;AAAA,UACL,UAAU,UAAW,CAAA,EAAE,GAAG,QAAU,EAAA,CAAA,EAAG,UAAU,CAAA;AAAA,UACjD,GAAK,EAAA,GAAA;AAAA,UACL,UAAY,EAAA,OAAA;AAAA,UACZ,MAAQ,EAAA,GAAA;AAAA,SACV,CAAA;AAAA,OACF;AAAA,MACA,kBAAoB,EAAA;AAAA,QAClB,OAAS,EAAA,MAAA;AAAA,QACT,aAAe,EAAA,QAAA;AAAA,QACf,GAAA,EAAK,QAAQ,CAAC,CAAA;AAAA,QACd,QAAU,EAAA,QAAA;AAAA,QACV,UAAY,EAAA,OAAA;AAAA,QACZ,QAAQ,OAAO;AAAA,UACb,cAAgB,EAAA,OAAA;AAAA,UAChB,SAAW,EAAA,OAAA;AAAA,UACX,KAAO,EAAA,MAAA;AAAA,UACP,cAAgB,EAAA,MAAA;AAAA,UAChB,GAAK,EAAA;AAAA,YACH,WAAA,EAAa,QAAQ,CAAC,CAAA;AAAA,WACxB;AAAA,SACF,CAAA;AAAA,OACF;AAAA,MAEA,aAAe,EAAA;AAAA,QACb,UAAY,EAAA,eAAA;AAAA,QAEZ,aAAe,EAAA;AAAA,UACb,OAAS,EAAA,MAAA;AAAA,SACX;AAAA,QAEA,kBAAoB,EAAA;AAAA,UAClB,QAAU,EAAA,QAAA;AAAA,UACV,YAAc,EAAA,UAAA;AAAA,UACd,QAAU,EAAA,QAAA;AAAA,UACV,OAAS,EAAA,OAAA;AAAA,UACT,UAAY,EAAA,QAAA;AAAA,UACZ,CAAA,EAAG,QAAQ,CAAC,CAAA;AAAA,SACd;AAAA,OACF;AAAA,KACF;AAAA;AAAA,IAEA,KAAM,CAAA,UAAA;AAAA,MACJ,CACE;AAAA,QACE,YAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA,EAAA;AAAA,SAUF,GACG,KAAA;AACH,QAAM,MAAA,QAAA,GAAW,KAAM,CAAA,MAAA,CAA2B,IAAI,CAAA,CAAA;AACtD,QAAA,MAAM,OAAU,GAAA,eAAA;AAAA,UACd,GAAA;AAAA,UACA,QAAA;AAAA,SACF,CAAA;AAEA,QAAA,MAAM,EAAE,EAAA,EAAI,YAAa,EAAA,GAAI,6BAA8B,EAAA,CAAA;AAE3D,QAAA,MAAM,YAAe,GAAA,OAAA;AAAA,UACnB,OAAO,EAAE,OAAS,EAAA,MAAA,CAAO,YAAY,CAAE,EAAA,CAAA;AAAA,UACvC,CAAC,YAAY,CAAA;AAAA,SACf,CAAA;AACA,QAAA,MAAM,YAAe,GAAA,QAAA;AAAA,UACnB,CAAC,QAAA,EAAU,cAAgB,EAAA,YAAA,EAAc,WAAW,aAAa,CAAA;AAAA,UACjE;AAAA,YACE,aAAa,SAAc,KAAA,OAAA;AAAA,YAC3B,aAAa,SAAc,KAAA,QAAA;AAAA,YAC3B,aAAa,SAAc,KAAA,QAAA;AAAA,YAC3B,aAAa,SAAc,KAAA,QAAA;AAAA,YAC3B,aAAa,SAAc,KAAA,WAAA;AAAA,WAC7B;AAAA,UACA,CAAA;AAAA,SACF,CAAA;AACA,QAAA,uBACG,GAAA,CAAA,YAAA,CAAa,QAAb,EAAA,EAAsB,OAAO,YAC5B,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,GAAA;AAAA,UAAAC,eAAA,CAAAC,gBAAA,CAAA;AAAA,YACC,GAAK,EAAA,OAAA;AAAA,YACL,SAAU,EAAA,sBAAA;AAAA,WACN,EAAA,UAAA,CAAW,eAAe,CAH/B,CAAA,EAAA;AAAA,YAIC,EAAA;AAAA,YAEA,QAAA,kBAAA,GAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,KAAO,EAAA,YAAA;AAAA,gBACP,OAAA;AAAA,gBACA,SAAW,EAAA,QAAA;AAAA,gBACX,SAAA;AAAA,gBACA,QAAQ,YAAa,CAAA,MAAA;AAAA,eAAA;AAAA,aACvB;AAAA,WAAA,CAAA;AAAA,SAEJ,EAAA,CAAA,CAAA;AAAA,OAEJ;AAAA,KACF;AAAA,IACA,IAAA;AAAA,GACF;AACF,CAAC;;AC7MM,MAAM,SAAY,GAAA,CAAC,EAAE,KAAA,EAAgC,KAAA;AAC1D,EAAA,MAAM,SAAS,SAAkB,CAAA;AAAA,IAC/B,KAAO,EAAA,CAAC,CAAG,EAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,GAAG,CAAA;AAAA,IACvB,MAAQ,EAAA,CAAC,GAAK,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,KAAK,CAAA;AAAA,IACzE,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AACD,EAAA,MAAM,SAAS,SAAkB,CAAA;AAAA,IAC/B,KAAA,EAAO,CAAC,CAAA,EAAG,GAAG,CAAA;AAAA,IACd,MAAQ,EAAA,CAAC,GAAK,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,KAAK,CAAA;AAAA,IACzE,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AACD,EAAA,4BACG,KAAI,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,KAAA,EAAO,wBAAS,GAChC,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,IAAK,CAAA,IAAA;AAAA,MAAL;AAAA,QACC,MAAQ,EAAA,GAAA;AAAA,QACR,OAAO,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,GAAA;AAAA,QAChB,YAAc,EAAA,EAAA;AAAA,QACd,eAAiB,EAAA,EAAA;AAAA,QACjB,MAAA;AAAA,QACA,MAAA;AAAA,OAAA;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,MAAA;AAAA,QACP,IAAM,EAAA,EAAA;AAAA,QACN,SAAW,EAAA,IAAA;AAAA,QACX,cAAA,EAAgB,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,OAAA;AAAA,KACpC;AAAA,oBACA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,MAAA;AAAA,QACP,GAAK,EAAA,GAAA;AAAA,QACL,SAAW,EAAA,IAAA;AAAA,QACX,cAAA,EAAgB,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,OAAA;AAAA,KACpC;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;ACjCA,MAAMO,aAAc,GAAA,EAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,QAAQ,CAAC;AAAA,EACpB,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AACF,CAAwB,KAAA;AAnBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAoBE,EAAA,MAAM,QAAW,GAAA,KAAA,CAAA;AACjB,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAAU,EAAK,GAAA,CAAA;AAAA,IACf,QAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAe,QAAS,CAAA;AAAA,IACtB,MAAA,EAAQ,CAAC,WAAY,CAAA,CAAC,GAAG,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAA,EAAU,YAAY,WAAY,CAAA,MAAA,GAAS,CAAC,CAAI,GAAA,WAAA,CAAY,CAAC,CAAI,GAAA,CAAA;AAAA,IACjE,QAAA;AAAA,GACD,EAAA;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,MAAM,KAAU,GAAA,CAAAA,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA,CAAA;AAEjE,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACKR,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,IAAI,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,MAE5B,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,YACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,YACjB,UAAY,EAAA,EAAA;AAAA,YACZ,QAAU,EAAA,GAAA;AAAA,WACX,CALF,CAAA,EAAA;AAAA,YAMC,MAAO,EAAA,MAAA;AAAA,YACP,OAAQ,EAAA,KAAA;AAAA,YACR,IAAK,EAAA,MAAA;AAAA,YACL,aAAc,EAAA,OAAA;AAAA,YACd,WAAa,EAAA,CAAA;AAAA,WAAA,CAAA;AAAA,SAEjB,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,OACH,EAAA,QAAA,EAAA;AAAA,UAAM,KAAA,CAAA,KAAA,CAAM,GAAI,CAAA,CAACS,MAAU,KAAA;AAC1B,YAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaD,WAAY,GAAAD,aAAA,CAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAE/B,cAAA,MAAMG,MACJ,GAAA,SAAA,GAAA,CAAcD,MAAQ,GAAAF,aAAA,IAAe,UAAc,GAAA,UAAA,CAAA;AAErD,cAAO,OAAA,IAAA,CAAK,MAAMG,MAAK,CAAA,CAAA;AAAA,aACzB,CAAA;AACA,YAAM,MAAA,OAAA,GAAU,aAAaD,MAAK,CAAA,CAAA;AAClC,YAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA,CAAA;AAElC,YACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAT,gBAAA,CAAA;AAAA,kBACC,MAAO,EAAA,MAAA;AAAA,kBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,iBACxB,EAAA,KAAA,CAAM,aAAa,EAAE,KAAA,EAAAS,QAAO,MAAQ,EAAA,QAAA,GAAW,EAAK,GAAA,CAAA,EAAG,CAAA,CAAA;AAAA,eAC7D;AAAA,cACC,QACC,oBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAV,eAAA,CAAAC,gBAAA,CAAA;AAAA,kBACC,IAAK,EAAA,OAAA;AAAA,iBACD,EAAA,KAAA,CAAM,cAAc,EAAE,KAAA,EAAAS,QAAO,MAAQ,EAAA,EAAA,EAAI,CAF9C,CAAA,EAAA;AAAA,kBAGC,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,4CAAmB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,kBAE/C,QAAA,EAAA,OAAA;AAAA,iBAAA,CAAA;AAAA,eACH;AAAA,aAAA,EAAA,EAbiB,cAAcA,MAenC,CAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,UACA,SAcE;AAAA,SACL,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,6CAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAtC,CAAA,EAAA,EAA4C,GAAG,EAAI,EAAA,CAAA,CAAA;AAAA,0BACnD,GAAA,CAAA,QAAA,EAAAT,gBAAA,CAAA,EAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAM,CAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,aAAA,EACJ,OAAO,GAHZ,CAAA,EAAA;AAAA,cAIC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,aAAA,CAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA,MAAA;AAAA,aAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,6CAAO,IAAK,EAAA,OAAA,EAAA,EAAY,OAAO,IAA/B,CAAA,EAAA,EAAqC,GAAG,CAAG,EAAA,CAAA,CAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,YACrD,CAAA,EAAG,CAAC,QAAA,GAAW,CAAI,GAAA,EAAA;AAAA,YAElB,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACvJA,MAAMO,aAAc,GAAA,EAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,aAAa,CAAC;AAAA,EACzB,eAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AACF,CAAwB,KAAA;AAtBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAwBE,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAEI,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,IAAI,EAAK,GAAA,CAAA;AAAA,IAC/C,QAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,SAAS,SAASE,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUA,UAAS,KAAK,CAAA,CAAA;AAE7D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAA,OAAO,YAAY,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,MAAM,KAAU,GAAA,CAAAF,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA,CAAA;AAEjE,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACKR,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,MAExB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,cACjB,UAAY,EAAA,CAAA;AAAA,cACZ,QAAU,EAAA,GAAA;AAAA,aACX,CALF,CAAA,EAAA;AAAA,cAMC,MAAO,EAAA,MAAA;AAAA,cACP,MAAM,eAAmB,IAAA,IAAA,GAAA,eAAA,GAAA,MAAA;AAAA,cACzB,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA,CAAA;AAAA,aAAA,CAAA;AAAA,WACf;AAAA,UACC,WAAY,CAAA,GAAA,CAAI,CAAC,UAAA,EAAY,CAAM,KAAA;AAClC,YAAM,MAAA,YAAA,GAAe,CAACU,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaF,WAAY,GAAAD,aAAA,CAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAC/B,cAAA,MAAME,MACJ,GAAAF,aAAA,GAAA,CAAgBG,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA,CAAA;AACrD,cAAO,OAAA,IAAA,CAAK,MAAMD,MAAK,CAAA,CAAA;AAAA,aACzB,CAAA;AAEA,YAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAV,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,MAAQ,EAAA,CAAA,EAAA;AAAA,kBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAO,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,OAAA;AAAA,kBACd,WAAa,EAAA,CAAA;AAAA,iBAAA,CAAA;AAAA,eACf;AAAA,8BACA,aAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAT,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,MAAQ,EAAA,CAAA,EAAA;AAAA,kBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAO,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,GAAA,EAAK,GAAG,UAAc,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,kBACtB,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,OAAA;AAAA,kBACd,WAAa,EAAA,CAAA;AAAA,iBAAA,CAAA;AAAA,eACf;AAAA,aArCM,EAAA,EAAA,CAAA,EAAG,cAAc,CAsCzB,CAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SACH,EAAA,CAAA;AAAA,wBACA,GAAA,CAAC,OAAE,EAAG,EAAA,OAAA,EACH,gBAAM,KAAM,CAAA,GAAA,CAAI,CAACC,MAAU,KAAA;AAC1B,UAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,YAAA,MAAM,aAAaD,WAAY,GAAAD,aAAA,CAAA;AAC/B,YAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAE/B,YAAA,MAAMG,MACJ,GAAA,SAAA,GAAA,CAAcD,MAAQ,GAAAF,aAAA,IAAe,UAAc,GAAA,UAAA,CAAA;AAErD,YAAO,OAAA,IAAA,CAAK,MAAMG,MAAK,CAAA,CAAA;AAAA,WACzB,CAAA;AACA,UAAM,MAAA,OAAA,GAAU,aAAaD,MAAK,CAAA,CAAA;AAClC,UAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA,CAAA;AAElC,UACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAAT,gBAAA,CAAA;AAAA,gBACC,MAAO,EAAA,MAAA;AAAA,gBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,eACxB,EAAA,KAAA,CAAM,aAAa,EAAE,KAAA,EAAAS,QAAO,MAAQ,EAAA,QAAA,GAAW,EAAK,GAAA,CAAA,EAAG,CAAA,CAAA;AAAA,aAC7D;AAAA,YACC,QACC,oBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAAV,eAAA,CAAAC,gBAAA,CAAA;AAAA,gBACC,IAAK,EAAA,OAAA;AAAA,eACD,EAAA,KAAA,CAAM,cAAc,EAAE,KAAA,EAAAS,QAAO,MAAQ,EAAA,EAAA,EAAI,CAF9C,CAAA,EAAA;AAAA,gBAGC,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,4CAAmB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,gBAE/C,QAAA,EAAA,OAAA;AAAA,eAAA,CAAA;AAAA,aACH;AAAA,WAAA,EAAA,EAbiB,cAAcA,MAenC,CAAA,CAAA,CAAA,CAAA;AAAA,SAEH,CACH,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,6CAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAtC,CAAA,EAAA,EAA4C,GAAG,EAAI,EAAA,CAAA,CAAA;AAAA,0BACnD,GAAA,CAAA,QAAA,EAAAT,gBAAA,CAAA,EAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAM,CAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,aAAA,EACJ,OAAO,GAHZ,CAAA,EAAA;AAAA,cAIC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,aAAA,CAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA,MAAA;AAAA,aAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,6CAAO,IAAK,EAAA,OAAA,EAAA,EAAY,OAAO,IAA/B,CAAA,EAAA,EAAqC,GAAG,CAAG,EAAA,CAAA,CAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,GAAG,QAAW,GAAA,CAAA;AAAA,YACd,IAAM,EAAA,iBAAA;AAAA,YACN,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,YAEpD,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACnMA,MAAMO,aAAc,GAAA,CAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,SAAS,CAAC;AAAA,EACrB,SAAY,GAAA,KAAA;AAAA,EACZ,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AACF,CAAwB,KAAA;AApBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAqBE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,YAAY,CAAA,CAAA;AAC/C,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV,QAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAA,SAAS,SAASE,MAAe,EAAA;AAhCnC,IAAAZ,IAAAA,GAAAA,CAAAA;AAiCI,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUY,SAAQ,KAAK,CAAA,CAAA;AAE5D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAOZ,OAAAA,CAAAA,GAAAA,GAAA,YAAY,KAAQ,GAAA,CAAC,MAArB,IAAAA,GAAAA,GAAAA,GAA0B,YAAY,KAAK,CAAA,CAAA;AAAA,GACpD;AAEA,EAAM,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA,CAAA;AAEhC,EAAA,MAAM,WAAc,GAAA,WAAA;AAAA,IAClB,CAAC,EAAsB,KAAA;AACrB,MAAI,IAAA,CAAC,MAAM,WAAY,CAAA,OAAA;AAAS,QAAA,OAAA;AAEhC,MAAA,WAAA,CAAY,OAAU,GAAA,IAAA,CAAA;AAEtB,MAAA,MAAM,UAAa,GAAA,EAAA,CAAA;AACnB,MAAM,MAAA,WAAA,GAAc,EAAG,CAAA,aAAA,CAAc,cAAc,CAAA,CAAA;AAEnD,MAAI,IAAA,EAAE,cAAc,WAAc,CAAA,EAAA;AAChC,QAAA,OAAA;AAAA,OACF;AAEA,MAAM,MAAA,OAAA,GAAU,YAAY,qBAAsB,EAAA,CAAA;AAClD,MAAM,MAAA,MAAA,GAAS,WAAW,qBAAsB,EAAA,CAAA;AAChD,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA,CAAA;AACjC,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA,CAAA;AAEjC,MAAM,MAAA,OAAA,GAAU,GAAG,KAAQ,GAAA,QAAA,GAAW,KACpC,KAAQ,GAAA,QAAA,GAAW,KACjB,QAAY,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA,CAAA;AAEhB,MAAW,UAAA,CAAA,YAAA,CAAa,WAAW,OAAO,CAAA,CAAA;AAE1C,MAAA,UAAA,CAAW,MAAM,UAAa,GAAA,SAAA,CAAA;AAAA,KAChC;AAAA,IACA,CAAC,QAAQ,CAAA;AAAA,GACX,CAAA;AAEA,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,UAAA,GAAa,eAAe,gBAAiB,CAAA,OAAA,CAAA;AACnD,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA,SAAA;AAAA,SACF,CAAA;AACA,QAAS,QAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAU,GAAA,YAAA,CAAA;AAAA,OAC7B;AAAA,KACF,CAAA;AAAA,GAEF,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AACjB,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACKC,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,KAAA,EAAO,EAAE,UAAA,EAAY,QAAS,EAAA;AAAA,MAC9B,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,EAAG,EAAA,YAAA;AAAA,MACH,GAAK,EAAA,WAAA;AAAA,MACL,SAAS,CAAI,CAAA,EAAA,QAAA,GAAW,CAAM,CAAA,EAAA,EAAA,QAAA,GAAW,KAAK,QAAY,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;AAAA,MAE1D,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,aACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,UAAY,EAAAO,aAAA;AAAA,cACZ,QAAU,EAAAC,WAAA;AAAA,aACX,CAJF,CAAA,EAAA;AAAA,cAKC,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,cACpB,EAAG,EAAA,aAAA;AAAA,cACH,KAAA,EAAO,EAAE,UAAA,EAAY,WAAY,EAAA;AAAA,aAAA,CAAA;AAAA,WACnC;AAAA,UACC,SACC,oBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAT,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,MAAQ,EAAA,CAAA,GAAA;AAAA,cACR,UAAY,EAAAO,aAAA;AAAA,cACZ,QAAU,EAAAC,WAAA;AAAA,aACX,CALF,CAAA,EAAA;AAAA,cAMC,MAAQ,EAAA,OAAA;AAAA,cACR,IAAM,EAAA,aAAA;AAAA,cACN,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA,CAAA;AAAA,cACb,EAAG,EAAA,aAAA;AAAA,aAAA,CAAA;AAAA,WACL;AAAA,SAEJ,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,GAAQ,CAAA,EAAA,CAAA,EAAA;AAAA,YACtD,iBAAkB,EAAA,SAAA;AAAA,YAClB,IAAM,EAAA,iBAAA;AAAA,YAEL,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACtIA,MAAMD,aAAc,GAAA,EAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,SAAS,CAAC;AAAA,EACrB,eAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AACF,CAAwB,KAAA;AAvBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAyBE,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAElD,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAAU,EAAK,GAAA,CAAA;AAAA,IACf,QAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAA,MAAM,SAAS,QAAS,CAAA;AAAA,IACtB,MAAA,EAAQ,CAAC,WAAY,CAAA,CAAC,GAAG,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAA,EAAU,YAAY,WAAY,CAAA,MAAA,GAAS,CAAC,CAAI,GAAA,WAAA,CAAY,CAAC,CAAI,GAAA,CAAA;AAAA,IACjE,QAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,MAAM,KAAU,GAAA,CAAAA,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA,CAAA;AAEjE,EAAA,SAAS,SAASG,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUA,UAAS,KAAK,CAAA,CAAA;AAE7D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAA,OAAO,YAAY,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACKX,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,MAExB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,cACjB,UAAY,EAAA,CAAA;AAAA,cACZ,QAAU,EAAA,GAAA;AAAA,aACX,CALF,CAAA,EAAA;AAAA,cAMC,MAAO,EAAA,OAAA;AAAA,cACP,OAAQ,EAAA,GAAA;AAAA,cACR,IACE,EAAA,eAAA,KAAoB,EAAM,IAAA,eAAA,KAAoB,KAC1C,CAAA,GAAA,SAAA,CAAU,eAAe,CAAA,CACtB,QAAS,CAAA,GAAG,CACZ,CAAA,qBAAA,EACH,GAAA,MAAA;AAAA,cAEN,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA,CAAA;AAAA,cACb,YAAc,EAAA,oBAAA;AAAA,aAAA,CAAA;AAAA,WAChB;AAAA,UACC,WAAY,CAAA,GAAA,CAAI,CAAC,UAAA,EAAY,CAAM,KAAA;AAClC,YAAA,IAAI,CAAC,WAAA,CAAY,CAAI,GAAA,CAAC,CAAG,EAAA;AACvB,cAAO,OAAA,IAAA,CAAA;AAAA,aACT;AAEA,YAAM,MAAA,YAAA,GAAe,CAACU,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaF,WAAY,GAAAD,aAAA,CAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAC/B,cAAA,MAAME,MACJ,GAAAF,aAAA,GAAA,CAAgBG,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA,CAAA;AACrD,cAAO,OAAA,IAAA,CAAK,MAAMD,MAAK,CAAA,CAAA;AAAA,aACzB,CAAA;AAEA,YAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAV,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,kBACjB,UACE,EAAA,CAAA,KAAM,CAAI,GAAAO,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,MAAQ,EAAA,OAAA;AAAA,kBACR,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,QAAA;AAAA,kBACd,WAAa,EAAA,CAAA;AAAA,kBACb,YAAc,EAAA,oBAAA;AAAA,iBAAA,CAAA;AAAA,eAChB;AAAA,8BACA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAT,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,MAAQ,EAAA,CAAA,EAAA;AAAA,kBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAO,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,MAAA;AAAA,kBACd,WAAa,EAAA,EAAA;AAAA,kBACb,YAAc,EAAA,oBAAA;AAAA,iBAAA,CAAA;AAAA,eAChB;AAAA,8BACA,aAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAT,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,MAAQ,EAAA,CAAA,EAAA;AAAA,kBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAO,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,GAAA,EAAK,GAAG,UAAc,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,kBACtB,MAAA,EAAQ,QAAS,CAAA,UAAU,CAAK,IAAA,MAAA;AAAA,kBAChC,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,MAAA;AAAA,kBACd,WAAa,EAAA,EAAA;AAAA,kBACb,YAAc,EAAA,oBAAA;AAAA,iBAAA,CAAA;AAAA,eAChB;AAAA,aA1DM,EAAA,EAAA,CAAA,EAAG,cAAc,CA2DzB,CAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SACH,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,OACH,EAAA,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,KAAM,CAAA,GAAA,CAAI,CAACC,MAAAA,EAAO,CAAM,KAAA;AAC7B,YAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaD,WAAY,GAAAD,aAAA,CAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAE/B,cAAA,MAAMG,MACJ,GAAA,SAAA,GAAA,CAAcD,MAAQ,GAAAF,aAAA,IAAe,UAAc,GAAA,UAAA,CAAA;AAErD,cAAO,OAAA,IAAA,CAAK,MAAMG,MAAK,CAAA,CAAA;AAAA,aACzB,CAAA;AACA,YAAM,MAAA,OAAA,GAAU,aAAaD,MAAK,CAAA,CAAA;AAElC,YAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA,CAAA;AAElC,YACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAV,eAAA,CAAAC,gBAAA,CAAA;AAAA,kBACC,MAAO,EAAA,MAAA;AAAA,kBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,iBACxB,EAAA,KAAA,CAAM,YAAa,CAAA,EAAE,KAAAS,EAAAA,MAAAA,EAAO,QAAQ,QAAW,GAAA,EAAA,GAAK,CAAE,EAAC,CAH5D,CAAA,EAAA;AAAA,kBAIC,YAAc,EAAA,oBAAA;AAAA,iBAAA,CAAA;AAAA,eAChB;AAAA,cACC,QACC,oBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAV,eAAA,CAAAC,gBAAA,CAAA;AAAA,kBACC,IAAM,EAAA,OAAA;AAAA,iBAAA,EACF,MAAM,aAAc,CAAA;AAAA,kBACtB,KAAAS,EAAAA,MAAAA;AAAA,kBACA,MAAQ,EAAA,EAAA;AAAA,iBACT,CALF,CAAA,EAAA;AAAA,kBAMC,KAAO,EAAA;AAAA,oBACL,QAAA,EAAU,GAAG,eAAmB,IAAA,IAAA,GAAA,eAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAAA,mBAClC;AAAA,kBAEC,QAAA,EAAA,OAAA;AAAA,iBAAA,CAAA;AAAA,eACH;AAAA,aAnBiB,EAAA,EAAA,CAAA,WAAA,EAAcA,WAAU,CAqB7C,CAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,UAEC,MAAO,CAAA,KAAA,CAAM,GAAI,CAAA,CAACA,QAAO,CAAM,KAAA;AAC7B,YACE,uBAAA,GAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAAV,eAAA,CAAAC,gBAAA,CAAA;AAAA,gBACC,MAAO,EAAA,MAAA;AAAA,gBACP,WAAa,EAAA,CAAA;AAAA,eAAA,EACT,MAAM,YAAa,CAAA;AAAA,gBACrB,KAAAS,EAAAA,MAAAA;AAAA,gBACA,MAAQ,EAAA,CAAA;AAAA,eACT,CANF,CAAA,EAAA;AAAA,gBAOC,YAAc,EAAA,oBAAA;AAAA,eAAA,CAAA;AAAA,aAChB,EAAA,EATmB,CAAcA,WAAAA,EAAAA,MAAAA,CAAAA,EAAAA,EAAU,CAU7C,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SACL,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,6CAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAtC,CAAA,EAAA,EAA4C,GAAG,EAAI,EAAA,CAAA,CAAA;AAAA,0BACnD,GAAA,CAAA,QAAA,EAAAT,gBAAA,CAAA,EAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAM,CAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,aAAA,EACJ,OAAO,GAHZ,CAAA,EAAA;AAAA,cAIC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,aAAA,CAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA,MAAA;AAAA,aAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,6CAAO,IAAK,EAAA,OAAA,EAAA,EAAY,OAAO,IAA/B,CAAA,EAAA,EAAqC,GAAG,CAAG,EAAA,CAAA,CAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,iBAAkB,EAAA,kBAAA;AAAA,YAClB,GAAG,QAAW,GAAA,CAAA;AAAA,YACd,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,YACrD,IAAM,EAAA,iBAAA;AAAA,YAEL,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACnQA,MAAMO,aAAc,GAAA,CAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,UAAU,CAAC;AAAA,EACtB,SAAY,GAAA,KAAA;AAAA,EACZ,WAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,oBAAA;AAAA,EACA,OAAA;AACF,CAAwB,KAAA;AAlBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAmBE,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,QAAA,CAAS,sCAAgB,CAAC,CAAA,CAAA;AACpD,EAAM,MAAA,WAAA,GAAA,CAAgB,oBAAmC,IAAA,IAAA,GAAA,oBAAA,GAAA,EAAA,IAAM,CAAI,GAAA,GAAA,CAAA;AACnE,EAAA,MAAM,QAAW,GAAA,WAAA,CAAA;AACjB,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV,QAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,SAAS,SAASE,MAAe,EAAA;AAhCnC,IAAAZ,IAAAA,GAAAA,CAAAA;AAiCI,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUY,UAAS,KAAK,CAAA,CAAA;AAE7D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAOZ,OAAAA,CAAAA,GAAAA,GAAA,YAAY,KAAQ,GAAA,CAAC,MAArB,IAAAA,GAAAA,GAAAA,GAA0B,YAAY,KAAK,CAAA,CAAA;AAAA,GACpD;AACA,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,UAAA,GAAa,eAAe,gBAAiB,CAAA,OAAA,CAAA;AACnD,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA,SAAA;AAAA,SACF,CAAA;AACA,QAAS,QAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAU,GAAA,YAAA,CAAA;AAAA,OAC7B;AAAA,KACF,CAAA;AAAA,GAEF,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AAEjB,EACE,uBAAA,IAAA,CAAC,OAAI,EAAI,EAAA,EAAE,UAAU,UAAW,EAAA,EAAG,WAAU,0BAC3C,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MACKC,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,QAEC,MAAQ,EAAA,WAAA;AAAA,QACR,KAAO,EAAA,WAAA;AAAA,QACP,OAAS,EAAA,KAAA,CAAA;AAAA,QAET,QAAA,kBAAA,GAAA,CAAC,OAAE,EAAG,EAAA,MAAA,EACH,uBAAa,CAAG,EAAA,KAAA,CAAA,CAAA,CAAQ,SAAS,CAChC,oBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,IAAI,WAAc,GAAA,CAAA;AAAA,YAClB,IAAI,WAAc,GAAA,CAAA;AAAA,YAClB,EAAA,EAAI,cAAc,CAAI,GAAA,CAAA;AAAA,YACtB,EAAA,EAAI,cAAc,CAAI,GAAA,CAAA;AAAA,YACtB,MAAO,EAAA,MAAA;AAAA,YACP,OAAQ,EAAA,KAAA;AAAA,YACR,IAAK,EAAA,MAAA;AAAA,YACL,aAAc,EAAA,OAAA;AAAA,YACd,WAAa,EAAA,CAAA;AAAA,WAAA;AAAA,SAGnB,EAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,WAAA;AAAA,QACR,KAAO,EAAA,WAAA;AAAA,QACP,OAAO,EAAE,QAAA,EAAU,YAAY,IAAM,EAAA,CAAA,EAAG,KAAK,CAAE,EAAA;AAAA,QAE/C,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,GAAG,WAAc,GAAA,CAAA;AAAA,YACjB,CAAA,EAAG,cAAc,CAAI,GAAA,CAAA;AAAA,YACrB,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA;AAAA,cACL,QAAA,EAAU,GAAG,oBAAwB,IAAA,IAAA,GAAA,oBAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAAA,cACrC,UAAY,EAAA,WAAA;AAAA,aACd;AAAA,YACA,iBAAkB,EAAA,SAAA;AAAA,YAClB,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,YACpB,IAAI,CAAQ,KAAA,EAAA,OAAA,CAAA,CAAA;AAAA,YAEX,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SACH;AAAA,OAAA;AAAA,KACF;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACrGA,MAAM,WAAc,GAAA,CAAA,CAAA;AACpB,MAAM,SAAY,GAAA,GAAA,CAAA;AAEX,MAAM,OAAO,CAAC;AAAA,EACnB,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AACF,CAAwB,KAAA;AArBxB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAsBE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,YAAY,CAAA,CAAA;AAC/C,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAA,WAAA;AAAA,IACZ,QAAU,EAAA,SAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV,QAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,UAAA,GAAa,eAAe,gBAAiB,CAAA,OAAA,CAAA;AACnD,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA,SAAA;AAAA,SACF,CAAA;AACA,QAAS,QAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAU,GAAA,YAAA,CAAA;AAAA,OAC7B;AAAA,KACF,CAAA;AAAA,GAEF,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AAEjB,EAAA,SAAS,SAASU,MAAe,EAAA;AAvDnC,IAAAZ,IAAAA,GAAAA,CAAAA;AAwDI,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUY,UAAS,KAAK,CAAA,CAAA;AAE7D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAOZ,OAAAA,CAAAA,GAAAA,GAAA,YAAY,KAAQ,GAAA,CAAC,MAArB,IAAAA,GAAAA,GAAAA,GAA0B,YAAY,KAAK,CAAA,CAAA;AAAA,GACpD;AAEA,EAAM,MAAA,YAAA,GAAe,CAACY,MAAkB,KAAA;AACtC,IAAA,MAAM,UAAa,GAAA,GAAA,CAAA;AACnB,IAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAC/B,IAAM,MAAA,KAAA,GAAA,CAAUA,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA,CAAA;AAEnD,IAAO,OAAA,IAAA,CAAK,MAAM,KAAK,CAAA,CAAA;AAAA,GACzB,CAAA;AAEA,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACK,aAAA,CAAAV,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,MAExB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA,aAAA,CAAAA,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAU,GAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAS,CAAA,KAAf,YAAoB,CAAK,IAAA,GAAA;AAAA,cAC3C,UAAY,EAAA,WAAA;AAAA,cACZ,QAAU,EAAA,SAAA;AAAA,aACX,CALF,CAAA,EAAA;AAAA,cAMC,QAAQ,cAAkB,IAAA,IAAA,GAAA,cAAA,GAAA,aAAA;AAAA,cAC1B,IAAK,EAAA,MAAA;AAAA,cACL,aAAc,EAAA,OAAA;AAAA,cACd,WAAc,EAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAS,CAAA,KAAf,YAAoB,CAAK,IAAA,GAAA;AAAA,aAAA,CAAA;AAAA,WACzC;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA,aAAA,CAAAA,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAU,GAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAS,CAAA,KAAf,YAAoB,CAAK,IAAA,GAAA;AAAA,cAC3C,UAAY,EAAA,GAAA;AAAA,cACZ,QAAA,EACE,YAAa,CAAA,KAAK,CAAM,KAAA,GAAA,GACpB,GAAM,GAAA,YAAA,CAAa,KAAK,CAAA,GACxB,GAAM,GAAA,YAAA,CAAa,KAAK,CAAA;AAAA,aAC/B,CARF,CAAA,EAAA;AAAA,cASC,MAAA,EAAQ,SAAS,KAAK,CAAA;AAAA,cACtB,OAAQ,EAAA,KAAA;AAAA,cACR,IAAK,EAAA,MAAA;AAAA,cACL,aAAc,EAAA,QAAA;AAAA,cACd,WAAc,EAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAS,CAAA,KAAf,YAAoB,CAAK,IAAA,GAAA;AAAA,cACvC,KAAO,EAAA;AAAA,gBACL,UAAY,EAAA,aAAA;AAAA,eACd;AAAA,aAAA,CAAA;AAAA,WACF;AAAA,SACF,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,YACrD,iBAAkB,EAAA,SAAA;AAAA,YAClB,KAAO,EAAA,iBAAA;AAAA,YAEN,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;AC/HA,MAAM,WAAc,GAAA,CAClB,WACA,EAAA,WAAA,EACA,UACG,KAAA;AACH,EAAA,IAAI,KAAQ,GAAA,EAAA,CAAA;AACZ,EAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AACpC,IAAA,IAAI,SAAS,UAAc,IAAA,WAAA,CAAY,KAAQ,GAAA,CAAC,KAAK,UAAY,EAAA;AAC/D,MAAQ,KAAA,GAAA,WAAA,CAAY,QAAQ,CAAC,CAAA,CAAA;AAAA,KAC/B;AAAA,GACD,CAAA,CAAA;AACD,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAEA,SAAS,QAAA,CAAS,WAAuB,EAAA,WAAA,EAAuB,KAAe,EAAA;AAC7E,EAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAU,SAAS,KAAK,CAAA,CAAA;AAE7D,EAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,IAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,GACtB;AAEA,EAAA,OAAO,YAAY,KAAK,CAAA,CAAA;AAC1B,CAAA;AAEA,SAAS,aAAA,CACP,WACA,EAAA,WAAA,EACA,KACA,EAAA;AA5BF,EAAA,IAAA,EAAA,CAAA;AA6BE,EAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAU,QAAQ,KAAK,CAAA,CAAA;AAE5D,EAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,IAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,GACtB;AAEA,EAAA,OAAA,CAAO,iBAAY,KAAQ,GAAA,CAAC,CAArB,KAAA,IAAA,GAAA,EAAA,GAA0B,YAAY,KAAK,CAAA,CAAA;AACpD,CAAA;AAEA,MAAM,kBAAqB,GAAA,CACzB,SACA,EAAA,SAAA,EACA,KACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,aAAa,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,CAAA,CAAA,CAAA;AACxC,EAAA,MAAM,UAAa,GAAA,GAAA,GAAA,CAAQ,KAAS,IAAA,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,MAAM,KAAS,GAAA,GAAA,CAAA;AAEhE,EAAO,OAAA,IAAA,CAAK,MAAM,UAAU,CAAA,CAAA;AAC9B,CAAA;;ACEA,MAAM,cAAiB,GAAA,CACrB,SACA,EAAA,SAAA,EACA,KACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,aAAa,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,CAAA,CAAA,CAAA;AACxC,EAAA,MAAM,UAAa,GAAA,GAAA,GAAA,CAAQ,KAAS,IAAA,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,MAAM,KAAS,GAAA,GAAA,CAAA;AAChE,EAAM,MAAA,IAAA,GAAQ,aAAa,EAAM,GAAA,GAAA,CAAA;AAEjC,EAAO,OAAA,IAAA,CAAK,MAAM,IAAI,CAAA,CAAA;AACxB,CAAA;;ACvDO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AACF,CAKM,KAAA;AACJ,EAAA,MAAM,SAAY,GAAA,QAAA,CAAA;AAClB,EAAA,MAAM,SAAY,GAAA,QAAA,CAAA;AAElB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,CAAC,CAAA,CAAA;AAChD,EAAM,MAAA,OAAA,GAAU,MAAgB,CAAA,EAAa,CAAA,CAAA;AAC7C,EAAM,MAAA,QAAA,GAAW,MAAgB,CAAA,EAAa,CAAA,CAAA;AAE9C,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,EAAuB,KAAA;AACtB,MAAA,IAAI,CAAC,EAAA;AAAI,QAAA,OAAA;AAET,MAAM,MAAA,UAAA,GAAa,EAAG,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACnC,MAAM,MAAA,WAAA,GAAc,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,aAAA,CAAc,CAAS,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAEvD,MAAA,IAAI,CAAC,UAAA;AAAY,QAAM,MAAA,IAAI,MAAM,QAAQ,CAAA,CAAA;AACzC,MAAA,IAAI,CAAC,WAAA;AAAa,QAAM,MAAA,IAAI,MAAM,SAAS,CAAA,CAAA;AAE3C,MAAM,MAAA,MAAA,GAAS,WAAW,qBAAsB,EAAA,CAAA;AAChD,MAAM,MAAA,OAAA,GAAU,YAAY,qBAAsB,EAAA,CAAA;AAElD,MAAMW,MAAAA,MAAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA,CAAA;AAEjC,MAAA,OAAA,CAAQ,OAAU,GAAA,MAAA,CAAA;AAClB,MAAA,QAAA,CAAS,OAAU,GAAA,OAAA,CAAA;AACnB,MAAA,cAAA,CAAeA,MAAK,CAAA,CAAA;AAAA,KACtB;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,GACV,CAAA;AAEA,EAAA,MAAM,QAAQ,KAAM,CAAA,QAAA,CAAS,QAAQ,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,CAAA;AAC1D,EAAA,MAAM,QAAQ,KAAM,CAAA,QAAA,CAAS,QAAQ,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,CAAA;AAC1D,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAS,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAC9C,EAAA,MAAM,UAAa,GAAA,KAAA,CAAM,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAEhD,EAAA,MAAM,OAAU,GAAA,CAAA,EAAG,KAAS,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA,EAAS,SAAa,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA;AAElD,EAAA,MAAM,SAA4C,GAAA;AAAA,IAChD,CAAG,EAAA,KAAA;AAAA,MACA,eAAe,SAAW,EAAA,SAAA,EAAW,YAAY,CAAA,GAAI,aAAc,GAClE,GAAA,WAAA;AAAA,KACJ;AAAA,IACA,CAAG,EAAA,KAAA;AAAA,IACH,KAAO,EAAA,SAAA;AAAA,IACP,MAAQ,EAAA,UAAA;AAAA,IACR,KAAO,EAAA;AAAA,MACL,UAAY,EAAA,SAAA;AAAA,MACZ,UAAY,EAAA,mBAAA;AAAA,KACd;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,OAAS,EAAA,YAAA;AAAA,IACT,UAAY,EAAA,OAAA;AAAA,IACZ,SAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AACF,CAAA;;;;;;;;;;;;;;;;;;AC/DO,MAAM,cAAc,CAAC;AAAA,EAC1B,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,oBAAA;AACF,CAAwB,KAAA;AArBxB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAsBE,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA;AACd,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,UAAa,GAAA,CAAA,mRAAA,CAAA,CAAA;AAEnB,EAAA,MAAM,EAAE,SAAW,EAAA,OAAA,EAAS,YAAY,KAAO,EAAA,KAAA,KAAU,eAAgB,CAAA;AAAA,IACvE,YAAc,EAAA,KAAA;AAAA,IACd,QAAU,EAAA,SAAA;AAAA,IACV,QAAU,EAAA,SAAA;AAAA,IACV,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,MAAQ,EAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA,GAAI,IAAI,CAAA;AAAA,IACtE,OAAO,KAAM,CAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,IACpC,CAAG,EAAA,KAAA;AAAA,IACH,CAAG,EAAA,KAAA;AAAA,GACL,CAAA;AAEA,EAAA,MAAM,SAAY,GAAA,WAAA,CAAY,GAAI,CAAA,CAAC,KAAK,CAAM,KAAA;AAC5C,IAAO,OAAA;AAAA,MACL,QACE,SAAU,CAAA,MAAA,IACT,mBAAmB,SAAW,EAAA,SAAA,EAAW,GAAG,CAAI,GAAA,GAAA,CAAA;AAAA,MACnD,KAAA,EAAO,CAAC,WAAA,CAAY,CAAI,GAAA,CAAC,IACrB,OACA,GAAA,WAAA,CAAY,WAAa,EAAA,WAAA,EAAa,GAAG,CAAA;AAAA,MAC7C,KAAO,EAAA,GAAA;AAAA,KACT,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,4BACG,GAAI,EAAA,EAAA,EAAA,EAAI,EAAE,QAAA,EAAU,YACnB,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,IAAI,CAAO,IAAA,EAAA,OAAA,CAAA,CAAA;AAAA,QACX,OAAS,EAAA,UAAA;AAAA,QACT,KAAO,EAAA,EAAE,QAAU,EAAA,UAAA,EAAY,KAAK,MAAO,EAAA;AAAA,QAE3C,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,cAAS,EAAG,EAAA,UAAA,EACX,8BAAC,MAAK,EAAA,EAAA,CAAA,EAAG,YAAY,CACvB,EAAA,CAAA;AAAA,0BACC,GAAA,CAAA,MAAA,EAAA,EAAK,EAAG,EAAA,QAAA,EACP,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAK,CAAG,EAAA,UAAA,EAAY,EAAG,EAAA,UAAA,EAAW,IAAK,EAAA,OAAA,EAAQ,CAClD,EAAA,CAAA;AAAA,0BAEA,GAAA,CAAC,UAAK,CAAG,EAAA,UAAA,EAAY,IAAI,CAAQ,KAAA,EAAA,OAAA,CAAA,CAAA,EAAW,MAAK,OAAQ,EAAA,CAAA;AAAA,0BAEzD,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAX,gBAAA,CAAA;AAAA,cACC,IAAM,EAAA,aAAA,CAAc,WAAa,EAAA,WAAA,EAAa,KAAK,CAAA;AAAA,cACnD,IAAI,CAAQ,KAAA,EAAA,OAAA,CAAA,CAAA;AAAA,cACZ,IAAK,EAAA,cAAA;AAAA,cACL,GAAK,EAAA,OAAA;AAAA,aACD,EAAA,SAAA,CAAA;AAAA,WACN;AAAA,0BAEA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAG,EAAA,UAAA;AAAA,cACH,EAAG,EAAA,MAAA;AAAA,cACH,IAAK,EAAA,MAAA;AAAA,cACL,MAAO,EAAA,OAAA;AAAA,cACP,WAAa,EAAA,EAAA;AAAA,cACb,QAAS,EAAA,gBAAA;AAAA,cACT,YAAc,EAAA,oBAAA;AAAA,aAAA;AAAA,WAChB;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAS,EAAA,gBAAA;AAAA,cACT,CAAG,EAAA,UAAA;AAAA,cACH,EAAG,EAAA,MAAA;AAAA,cACH,IAAK,EAAA,MAAA;AAAA,cACL,MAAO,EAAA,OAAA;AAAA,cACP,WAAa,EAAA,CAAA;AAAA,cACb,YAAc,EAAA,oBAAA;AAAA,aAAA;AAAA,WAChB;AAAA,SAAA;AAAA,OAAA;AAAA,KACF;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,EAAA;AAAA,QAClC,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,OAAO,EAAE,QAAA,EAAU,YAAY,IAAM,EAAA,CAAA,EAAG,KAAK,CAAE,EAAA;AAAA,QAE9C,QAAA,EAAA;AAAA,UAAU,SAAA,CAAA,CAAA,wBACR,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAG,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,cAC7B,CAAA,EAAG,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA,GAAI,CAAI,GAAA,EAAA;AAAA,cAC3D,KAAO,EAAA;AAAA,gBACL,QAAU,EAAA,CAAA,EAAA,CAAG,EAAM,GAAA,KAAA,CAAA,oBAAoB,MAA1B,IAA+B,GAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAAA,eAC9C;AAAA,cACA,UAAW,EAAA,QAAA;AAAA,cACX,iBAAmB,EAAA,SAAA;AAAA,cACnB,YAAc,EAAA,oBAAA;AAAA,cAEb,QAAA,EAAA,KAAA;AAAA,aAAA;AAAA,WAEL,EAAA,CAAA;AAAA,UAED,SAAU,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,CAAM,KAAA;AAC1B,YAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,CACE,EAAA,CAAA,KAAM,CACF,GAAA,IAAA,CAAK,IAAI,KAAO,EAAA,MAAM,CAAI,GAAA,CAAA,GAAI,KAC9B,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,CAAI,GAAA,EAAA;AAAA,kBAEpC,CAAA,EAAG,KAAK,MAAS,GAAA,EAAA;AAAA,kBACjB,KAAO,EAAA,MAAA;AAAA,kBACP,MAAQ,EAAA,KAAA;AAAA,kBACR,YAAc,EAAA,oBAAA;AAAA,kBACd,IAAM,EAAA,QAAA,CAAS,WAAa,EAAA,WAAA,EAAa,KAAK,KAAK,CAAA;AAAA,iBAAA;AAAA,eACrD;AAAA,8BACA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EACE,CAAM,KAAA,CAAA,GACF,IAAK,CAAA,GAAA,CAAI,OAAO,MAAM,CAAA,GAAI,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,CAAI,GAAA,EAAA,GACxD,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,CAAI,GAAA,CAAA;AAAA,kBAE1D,CAAA,EAAG,UAAU,CAAI,GAAA,CAAC,IAAI,IAAK,CAAA,MAAA,GAAS,EAAK,GAAA,IAAA,CAAK,MAAS,GAAA,GAAA;AAAA,kBACvD,UAAW,EAAA,QAAA;AAAA,kBACX,iBACE,EAAA,SAAA,CAAU,CAAI,GAAA,CAAC,IAAI,MAAS,GAAA,kBAAA;AAAA,kBAG7B,QAAK,EAAA,IAAA,CAAA,KAAA;AAAA,iBAAA;AAAA,eACR;AAAA,aAAA,EAAA,EA1BM,CA2BR,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;AC9IO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,IAAA;AAAA,EACA,EAAA;AACF,CAGM,KAAA;AA0CJ,EAAA,MAAM,WAAwB,cACzB,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;AAGL,EAAA,MAAM,cAAc,KAAM,CAAA,IAAA;AAAA,IACxB,IAAI,GAAA;AAAA,MACF,aAAa,QAAS,CAAA,KAAA,CAAM,IAAI,CAC7B,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,QAAO,OAAA,CAAC,OAAO,IAAK,CAAA,OAAO,GAAG,MAAO,CAAA,IAAA,CAAK,OAAO,CAAC,CAAA,CAAA;AAAA,OACnD,EACA,IAAK,EAAA,CACL,KAAK,CAAC,CAAA,EAAG,CAAM,KAAA,CAAA,GAAI,CAAC,CAAA;AAAA,KACzB;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,aAAa,QAAS,CAAA,KAAA,CAAM,IAAI,CACjD,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,IAAO,OAAA,SAAA,CAAU,IAAK,CAAA,KAAK,CACxB,CAAA,QAAA,CAAS,CAAK,GAAA,CAAA,GAAA,GAAM,IAAK,CAAA,YAAA,IAAgB,GAAG,CAAA,CAC5C,qBAAsB,EAAA,CAAA;AAAA,GAC1B,EACA,IAAK,EAAA,CAAA;AAER,EAAA,MAAM,aAAgB,GAAA,QAAA;AAAA,IACpB,CAAC,UAAY,EAAA,MAAA,EAAQ,SAAS,MAAQ,EAAA,WAAA,EAAa,OAAO,IAAI,CAAA;AAAA,IAC9D;AAAA,MACE,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,KAC1B;AAAA,IACA,CAAA;AAAA,GACF,CAAA;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,WAAW,QAAS,CAAA,MAAA;AAAA,MACpB,iBAAiB,QAAS,CAAA,eAAA;AAAA,MAC1B,WAAA;AAAA,MACA,YAAA,EAAc,MAAO,CAAA,QAAA,CAAS,YAAY,CAAA;AAAA,MAC1C,UAAU,QAAS,CAAA,aAAA;AAAA,MACnB,mBAAmB,QAAS,CAAA,UAAA;AAAA,MAC5B,sBAAsB,QAAS,CAAA,aAAA;AAAA,MAC/B,WAAW,QAAS,CAAA,SAAA;AAAA,MACpB,QAAQ,QAAS,CAAA,MAAA;AAAA,MACjB,OAAS,EAAA,EAAA;AAAA,MACT,UAAU,QAAS,CAAA,QAAA;AAAA,MACnB,UAAU,QAAS,CAAA,QAAA;AAAA,MACnB,cAAc,QAAS,CAAA,YAAA;AAAA,MACvB,gBAAgB,QAAS,CAAA,YAAA;AAAA,MACzB,WAAW,QAAS,CAAA,UAAA;AAAA,MACpB,iBAAiB,QAAS,CAAA,aAAA;AAAA,MAC1B,WAAA;AAAA,MACA,OAAO,QAAS,CAAA,KAAA;AAAA,KAAA;AAAA,GAClB,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/charts/util/parseMargin.ts","../src/charts/util/ColoredLegendItem.tsx","../src/charts/util/NumberedLegendItem.tsx","../src/charts/util/LegendContainer.tsx","../src/charts/ChartContext.tsx","../src/charts/horizontalBars/Bar.tsx","../src/charts/util/getBarColor.tsx","../src/charts/util/useChartStyles.ts","../src/charts/horizontalBars/HorizontalBars.tsx","../src/charts/pie/Slice.tsx","../src/charts/pie/usePieAnimation.ts","../src/charts/util/ChartSelector.tsx","../src/charts/pie/Pie.tsx","../src/charts/verticalBars/Bar.tsx","../src/charts/verticalBars/VerticalBars.tsx","../src/charts/linear/Node.tsx","../src/charts/linear/LineChart.tsx","../src/charts/waterfallBars/WaterfallBar.tsx","../src/charts/waterfallBars/WaterfallBars.tsx","../src/charts/ChartRenderer.tsx","../src/charts/util/EmptyGrid.tsx","../src/widgets/scale/Scale.tsx","../src/widgets/speedMeter/SpeedMeter.tsx","../src/widgets/tLight/TLight.tsx","../src/widgets/oxford/Oxford.tsx","../src/widgets/counter/Counter.tsx","../src/widgets/ring/Ring.tsx","../src/widgets/thermometer/util.ts","../src/widgets/custom/util.ts","../src/widgets/custom/useCustomWidget.ts","../src/widgets/thermometer/Thermometer.tsx","../src/widgets/WidgetContainer.tsx"],"sourcesContent":["import { TChartRendererProps } from '../types';\n\nexport function parseMargin(\n margin: TChartRendererProps['margin'] = {\n left: 100,\n right: 50,\n top: 50,\n bottom: 70,\n },\n) {\n return typeof margin === 'number'\n ? { left: margin, right: margin, top: margin, bottom: margin }\n : margin;\n}\n","import { SimpleButton } from '@apia/components';\nimport { icons } from '@apia/icons';\nimport { useCallback } from 'react';\nimport { chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\nimport { useImperativeComponentContext } from '@apia/util';\n\nconst ColoredLegendItem = ({\n groupId,\n title,\n color,\n className,\n isHighlighted,\n isAnyHighlighted,\n avoidEvent,\n}: {\n groupId: string;\n title: string;\n color: string;\n className?: string;\n isHighlighted: boolean;\n isAnyHighlighted: boolean;\n avoidEvent: boolean;\n}) => {\n const { id: chartId } = useImperativeComponentContext();\n const handleMouseEnter = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', groupId);\n }, [avoidEvent, chartId, groupId]);\n const handleMouseLeave = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n new ApiaUtil().tooltips.closeAll();\n chartMethods(chartId, 'highlight', '');\n }, [avoidEvent, chartId]);\n return (\n <SimpleButton\n variant=\"link\"\n className={`${className ?? ''} ${isHighlighted ? 'highlight' : ''} ${\n isAnyHighlighted && !isHighlighted ? 'isBlurred' : ''\n } legendItem`}\n iconColor={color || 'black'}\n icon={color === 'transparent' ? undefined : icons.SquareFilled}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {title}\n </SimpleButton>\n );\n};\n\nexport { ColoredLegendItem };\n","import { SimpleButton } from '@apia/components';\nimport { useCallback } from 'react';\nimport { chartMethods } from '../ChartRenderer';\nimport { useImperativeComponentContext } from '@apia/util';\nimport { ApiaUtil } from '@apia/components';\n\nconst NumberedLegendItem = ({\n groupId,\n title,\n className,\n isHighlighted,\n isAnyHighlighted,\n avoidEvent,\n}: {\n groupId: string;\n title: string;\n position: string;\n className?: string;\n isHighlighted: boolean;\n isAnyHighlighted: boolean;\n avoidEvent: boolean;\n}) => {\n const { id: chartId } = useImperativeComponentContext();\n const handleMouseEnter = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', groupId);\n }, [avoidEvent, chartId, groupId]);\n const handleMouseLeave = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n new ApiaUtil().tooltips.closeAll();\n chartMethods(chartId, 'highlight', '');\n }, [avoidEvent, chartId]);\n return (\n <SimpleButton\n variant=\"link\"\n className={`${className ?? ''} ${isHighlighted ? 'highlight' : ''} ${\n isAnyHighlighted && !isHighlighted ? 'isBlurred' : ''\n } legendItem`}\n sx={{\n opacity: isAnyHighlighted && !isHighlighted ? '0.15' : '1',\n }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {title}\n </SimpleButton>\n );\n};\n\nexport { NumberedLegendItem };\n","import { Box } from '@apia/theme';\nimport { ColoredLegendItem } from './ColoredLegendItem';\nimport { makeImperativeComponent } from '@apia/util';\nimport { NumberedLegendItem } from './NumberedLegendItem';\n\nexport type TChartReference = {\n color: string;\n title: string;\n}[];\n\nexport const [legendContainerMethods, , LegendContainer] =\n makeImperativeComponent<\n {\n references: TChartReference;\n itemClassName?: string;\n avoidEvent?: boolean;\n useNumbered?: boolean;\n },\n never\n >()({\n initialState: {\n highlightedBarGroup: '',\n },\n methods: {\n highlight(setState, highlightedBarGroup: string) {\n console.log(highlightedBarGroup);\n\n setState({ highlightedBarGroup });\n },\n },\n Component: ({\n references,\n highlightedBarGroup,\n avoidEvent,\n useNumbered,\n }) => {\n return (\n <Box className={`legendContainer`}>\n {!useNumbered\n ? references.map((data) => {\n return (\n <ColoredLegendItem\n isHighlighted={data.title === highlightedBarGroup}\n isAnyHighlighted={highlightedBarGroup !== ''}\n groupId={data.title}\n key={data.title}\n color={data.color}\n title={data.title}\n avoidEvent={avoidEvent ?? false}\n />\n );\n })\n : references.map((data, i) => {\n return (\n <NumberedLegendItem\n isHighlighted={data.title === highlightedBarGroup}\n isAnyHighlighted={highlightedBarGroup !== ''}\n groupId={data.title}\n key={data.title}\n position={`${i + 1}`}\n title={data.title}\n avoidEvent={avoidEvent ?? false}\n />\n );\n })}\n </Box>\n );\n },\n });\n","import { createContext } from 'react';\n\nexport type TChartContext = {\n chartId: string;\n};\n\nexport const ChartContext = createContext<TChartContext>({} as TChartContext);\n","import tinycolor from 'tinycolor2';\nimport { BarGroupBar, BarGroupHorizontal } from '@visx/shape/lib/types';\nimport {\n TApiaChartColorDisposition,\n TChartMargin,\n TChartRendererProps,\n} from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './HorizontalBars';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n effectiveMargin,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroupHorizontal<string>;\n parsedData: IParsedColumn[];\n effectiveMargin: TChartMargin;\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameColumn) {\n let barName = barNameColumn;\n let columnName = '';\n if (barNameColumn.includes('_$_')) {\n barName = barNameColumn.split('_$_')[0];\n columnName = barNameColumn.split('_$_')[1];\n if (isSingle && barNameColumn !== '' && barNameColumn !== undefined) {\n barName = barNameColumn.split('_$_')[1];\n columnName = barNameColumn.split('_$_')[1];\n }\n }\n if (barName.split(' - ').length === 1) {\n if (arrayOrArray(chart.dataSets.data).length === 1) {\n setIsHighlighted(barName === parsedData[barGroup.index].columnName);\n setIsAnyHighlighted(\n barName !== parsedData[barGroup.index].columnName && barName !== '',\n );\n if (\n barName === parsedData[barGroup.index].columnName &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n } else {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n const currentBar = document.querySelector(\n `.${parsedData[barGroup.index].columnName}__${bar.key}`,\n );\n if (\n barName === bar.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n } else if (barName === bar.key && currentBar && columnName === '') {\n new ApiaUtil().tooltips.open({\n children: parsedData.map((dat, i) => {\n return (\n <div key={`${dat.columnName}_${dat[barName]}`}>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{dat.columnName}</strong>\n </div>\n {chart.showValues && <div>{dat[barName]}</div>}\n <div>\n {Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )}\n </div>\n {parsedData[i + 1] && <hr />}\n </div>\n );\n }),\n attachToMousePosition: true,\n });\n }\n }\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n if (\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n },\n });\n\n const { chartId } = useContext(ChartContext);\n return (\n <g>\n {/* {chart.showValues && (\n <text\n x={bar.x + 5}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"start\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n )} */}\n\n <Box\n as=\"rect\"\n className={`chart__barRect ${parsedData[barGroup.index].columnName}__${\n bar.key\n }`}\n ref={ref}\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width - effectiveMargin.left,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n effectiveMargin.left,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n } else {\n legendContainerMethods.highlight(\n chartId,\n parsedData[barGroup.index].columnName,\n );\n }\n chartMethods(\n chartId,\n 'highlight',\n `${bar.key}_$_${parsedData[barGroup.index].columnName}`,\n );\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point || !chart.showValues) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n chartMethods(chartId, 'highlight', '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"width\"\n from={0}\n to={bar.width}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n","import tinycolor from 'tinycolor2';\n\nexport function getBarColor(\n colors: string[],\n index: number,\n alwaysDiffer = false,\n) {\n const module = colors.length;\n let count = 0;\n let barColor = '';\n if (!alwaysDiffer) {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n let innerIndex = index;\n while (innerIndex >= module) {\n innerIndex = index / module;\n count++;\n }\n barColor = tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex()\n .startsWith('#')\n ? tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex()\n : `#${tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex()}`;\n }\n } else {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n barColor = tinycolor(colors[index % module]).toHex();\n }\n }\n return barColor;\n}\n","import { ColorModesScale, ThemeUIStyleObject, useThemeUI } from '@apia/theme';\nimport { IChartStylesSchemes, TChartStylesDefinition } from '../types';\nimport { getValueByPath } from '@apia/util';\n\nexport function useChartStyles(\n schemeName?: string,\n): TChartStylesDefinition | undefined {\n const { theme } = useThemeUI();\n\n if (!theme.layout)\n console.error('The layout property is missing in the current theme');\n\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\n ?.charts ?? {}) as IChartStylesSchemes;\n const defaultStyles = charts.common;\n const currentStylescheme = {\n schema: getValueByPath(\n theme.colors as ColorModesScale,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n charts[schemeName && schemeName !== '0' ? schemeName : 'blue']\n ?.schema as string,\n ),\n };\n if (\n typeof currentStylescheme.schema === 'object' &&\n currentStylescheme.schema\n ) {\n const returnStyles: string[] = Object.entries(\n currentStylescheme.schema,\n ).map((e) => {\n const element = document.querySelector('*');\n if (element) {\n if ((e[1] as string).startsWith('var(')) {\n return window\n .getComputedStyle(element)\n .getPropertyValue((e[1] as string).slice(4, -1));\n }\n return window\n .getComputedStyle(element)\n .getPropertyValue(e[1] as unknown as string);\n }\n\n return window\n .getComputedStyle(document.querySelector('*') as Element)\n .getPropertyValue(e[1] as unknown as string);\n });\n return { ...defaultStyles, schema: returnStyles };\n }\n // return {\n // ...defaultStyles,\n // ...currentStylescheme,\n // };\n}\n","import { uniqueId } from 'lodash';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray, getLabel } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport React, { useLayoutEffect, useMemo } from 'react';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroupHorizontal } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { Bar } from './Bar';\nimport { usePanAndZoom } from '@apia/util';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { useChartStyles } from '../util/useChartStyles';\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getYValue = (d: IParsedColumn) => d.columnName;\n\nexport type THorizontalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst HorizontalBars = ({\n margin = { top: 20, left: 50, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n outerClassName,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const yScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n innerHeight,\n ],\n domain: parsedData.map(getYValue),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, yScale.bandwidth()],\n });\n\n const xScaleLog = scaleLog<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const xScaleLine = scaleLinear<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n const isLogScale = false;\n\n const xScale = useMemo(() => {\n if (!isLogScale) {\n return xScaleLine;\n }\n return xScaleLog;\n }, [isLogScale, xScaleLine, xScaleLog]);\n\n const id = useMemo(() => `HorizontalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(\n `#${id} .__${(chartId as string) ?? outerClassName}`,\n )\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(15deg) translateX(${width / 2}px)`;\n });\n });\n const styles = useChartStyles(chart.colorSchema);\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n let numberReference: TChartReference = [];\n if (colorReference.length === 1) {\n numberReference = arrayOrArray(\n arrayOrArray(chart.dataSets.data)[0].sets,\n ).map((data, index) => {\n return {\n color: `${index + 1}`,\n title: data.key,\n };\n });\n }\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${outerClassName ?? ''} ${chartId} ${\n chart.title\n } chartBox chartContainer`}\n sx={React.useMemo(() => {\n return {\n [`.__${(chartId as string) ?? outerClassName}`]: {\n transform: 'rotate(45deg)',\n transformOrigin: 'attr(x) 18px',\n },\n overflow: 'hidden',\n position: 'relative',\n\n height: `${chart.ratio.height}px`,\n // width: `${chart.ratio.width}px`,\n };\n }, [chart.ratio.height, chartId, outerClassName])}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} ${className ? className : ''} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n style={{\n position: 'absolute',\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={innerWidth}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={effectiveMargin.left}\n >\n <BarGroupHorizontal\n data={parsedData}\n keys={columnNames}\n width={innerWidth}\n y0={getYValue}\n y0Scale={yScale}\n y1Scale={columnGroupScale}\n xScale={xScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.y0}`}\n top={barGroup.y0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n effectiveMargin={effectiveMargin}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroupHorizontal>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n labelOffset={10}\n tickLabelProps={() => ({\n display: 'none',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={30}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer\n id={chartId}\n references={\n // hideLegendsColors\n // ? colorReference.map((ref) => {\n // return { ...ref, color: 'transparent' };\n // })\n colorReference.length === 1 && numberReference.length > 0\n ? numberReference\n : colorReference\n }\n useNumbered={colorReference.length === 1}\n />\n </Box>\n )}\n </Box>\n </>\n );\n};\n\nexport { HorizontalBars };\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\nimport { useMemo, useState, useRef } from 'react';\nimport tinycolor from 'tinycolor2';\nimport { localPoint } from '@visx/event';\nimport { PieArcDatum } from '@visx/shape/lib/shapes/Pie';\nimport {\n useImperativeComponentContext,\n useImperativeComponentEvents,\n} from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n// import { uniqueId } from 'lodash';\n\nexport const Slice = ({\n arc,\n arcPath,\n chart,\n actualColor,\n chartId: outerChartId,\n}: Pick<TChartRendererProps, 'chart'> &\n Pick<TChartRendererProps, 'chartId'> & {\n arc: PieArcDatum<TApiaChartCoordinate>;\n arcPath: string | null;\n actualColor: string;\n }) => {\n // const uId = uniqueId();\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n const name = arc.data;\n const { id: chartId } = useImperativeComponentContext();\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameId) {\n const barName = barNameId.split('_$_')[0];\n setIsHighlighted(barName === arc.data.key);\n setIsAnyHighlighted(barName !== arc.data.key && barName !== '');\n if (barName === arc.data.key) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: `#${tinycolor(actualColor).toHex()}`,\n }}\n >\n <strong>{arc.data.key}</strong>\n </div>\n {chart.showValues && (\n <div>{`${arc.value} ${\n arc.data.percentage !== '' &&\n arc.data.percentage !== undefined\n ? '- ' + arc.data.percentage\n : ''\n }${\n arc.data.percentage !== '' &&\n arc.data.percentage !== undefined\n ? '%'\n : ''\n }`}</div>\n )}\n </>\n ),\n attachToElement: () => {\n return ref.current as unknown as HTMLElement;\n },\n attachToElementAnchorPoint: 'center',\n closeOnClickOut: () => {\n return window.innerWidth > 700;\n },\n closeOnMouseLeaveAttachedElement: (ev) => {\n return !(ev.relatedTarget as HTMLElement).closest('.legendItem');\n },\n className: arc.data.key,\n });\n }\n },\n });\n\n return (\n <path\n key={`arc-${name.key}-${name.value}-${outerChartId}`}\n id={`arc-${name.key}-${name.value}-${outerChartId}`}\n ref={ref}\n style={useMemo(\n () => ({\n '&:hover': {\n fill: `#${tinycolor(actualColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n }),\n [actualColor],\n )}\n color={\n isAnyHighlighted\n ? `#${tinycolor(actualColor).desaturate(70).toHex()}`\n : actualColor\n }\n fill={\n isAnyHighlighted\n ? `#${tinycolor(actualColor).desaturate(70).toHex()}`\n : actualColor\n }\n opacity={isAnyHighlighted && !isHighlighted ? 0.15 : 1}\n d={arcPath ?? ''}\n onMouseEnter={(ev) => {\n legendContainerMethods.highlight(chartId, arc.data.key);\n chartMethods(chartId, 'highlight', `${name.key}_$_${outerChartId}`);\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n\n chartMethods(chartId, 'highlight', '');\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n ></path>\n );\n};\n","import React, { useRef } from 'react';\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\nimport {\n addBoundary,\n animate,\n arrayOrArray,\n // useUpdateEffect,\n} from '@apia/util';\n\nexport const usePieAnimation = ({\n incomingColumn,\n piezas,\n setDataset,\n}: {\n incomingColumn: TApiaChartColumn;\n setDataset: React.Dispatch<React.SetStateAction<TApiaChartColumn[]>>;\n piezas: {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n sets: TApiaChartCoordinate | TApiaChartCoordinate[];\n name: string;\n };\n}) => {\n const previousObjectRef = useRef<\n | {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n name: string;\n }\n | undefined\n >(undefined);\n\n const actualObjectRef = useRef<\n | {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n name: string;\n }\n | undefined\n >(undefined);\n\n const isAnimating = useRef(false);\n\n if (previousObjectRef.current && piezas) {\n const previousCoordinates =\n isAnimating.current && actualObjectRef.current\n ? arrayOrArray(actualObjectRef.current.coordinate)\n : arrayOrArray(previousObjectRef.current.coordinate);\n\n const currentCoordinates = arrayOrArray(incomingColumn.sets);\n\n const hasValueChanged = previousCoordinates.some((prevCoord, index) => {\n const currentCoord = currentCoordinates[index];\n return prevCoord.value !== currentCoord.value;\n });\n if (hasValueChanged) {\n isAnimating.current = true;\n const difference: TApiaChartCoordinate[] = [];\n for (\n let i = 0;\n i < Math.max(previousCoordinates.length, currentCoordinates.length);\n i++\n ) {\n const coord1 = previousCoordinates[i];\n const coord2 = currentCoordinates[i];\n\n if (coord1 && coord2) {\n const newValue = Math.abs(\n parseInt(coord1.value) - parseInt(coord2.value),\n ).toString();\n const newCoordinate: TApiaChartCoordinate = {\n key: coord2.key,\n color: coord2.color, // Assuming color is the same for both coordinates\n value: newValue,\n percentage:\n coord2.percentage !== '' && coord2.percentage !== undefined\n ? coord2.percentage\n : undefined,\n };\n\n difference.push(newCoordinate);\n } else if (!coord1 && coord2 && previousCoordinates.length > 0) {\n const newValue = Math.abs(0 - parseInt(coord2.value)).toString();\n const newCoordinate: TApiaChartCoordinate = {\n key: coord2.key,\n color: coord2.color, // Assuming color is the same for both coordinates\n value: newValue,\n percentage:\n coord2.percentage !== '' && coord2.percentage !== undefined\n ? coord2.percentage\n : undefined,\n };\n\n difference.push(newCoordinate);\n }\n }\n\n return animate(\n 500,\n (progress) => {\n const step: TApiaChartColumn = {\n color: piezas.color,\n name: incomingColumn.name,\n sets: difference.map((coord, i) => {\n return {\n key: coord.key,\n color: coord.color,\n percentage: coord.percentage,\n value: addBoundary(\n Number(currentCoordinates[i].value) >\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n )\n ? Number(coord.value) * progress +\n Number(\n previousCoordinates[i]\n ? previousCoordinates[i].value\n : 0,\n )\n : Number(\n previousCoordinates[i]\n ? previousCoordinates[i].value\n : 0,\n ) -\n Number(coord.value) * progress,\n Math.min(\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n ),\n Number(currentCoordinates[i].value),\n ),\n Math.max(\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n ),\n Number(currentCoordinates[i].value),\n ),\n ).toString(),\n };\n }),\n };\n actualObjectRef.current = {\n color: step.color,\n coordinate: step.sets,\n name: step.name,\n };\n setDataset((prev) => {\n const newIndex = prev.findIndex((col) => {\n return col.name === step.name;\n });\n const returnObj = [...prev];\n if (newIndex >= 0) {\n returnObj[newIndex] = step;\n return returnObj;\n } else {\n return [step];\n }\n });\n },\n () => {\n const newPrev = {\n ...incomingColumn,\n coordinate: incomingColumn.sets,\n };\n previousObjectRef.current = newPrev;\n isAnimating.current = false;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }\n } else if (!previousObjectRef.current) {\n const newPrev = {\n ...incomingColumn,\n coordinate: incomingColumn.sets,\n };\n previousObjectRef.current = newPrev;\n isAnimating.current = false;\n }\n};\n","import { Select } from '@apia/theme';\n\nfunction ChartSelector({\n chartId,\n pieces,\n className,\n current,\n setCurrent,\n}: {\n chartId: string;\n pieces: string[];\n className?: string;\n current: string;\n setCurrent: React.Dispatch<React.SetStateAction<string>>;\n}) {\n return (\n <Select\n sx={{ width: 'auto' }}\n name={`chartSelector_${chartId}`}\n className={`chartSelector_${chartId} ${className ?? ''}`}\n value={current ?? '0'}\n onChange={(ev) => {\n ev.preventDefault();\n setCurrent(ev.target.value);\n }}\n >\n {pieces\n .map((piece, i) => {\n return {\n label: piece,\n value: `${i}`,\n };\n })\n .map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}{' '}\n </Select>\n );\n}\n\nexport default ChartSelector;\n","import {\n TApiaChartColumn,\n TApiaChartCoordinate,\n TChartRendererProps,\n} from '../types';\nimport { arrayOrArray, getLabel, usePanAndZoom } from '@apia/util';\nimport { Box, Heading } from '@apia/theme';\nimport { Group } from '@visx/group';\nimport Pie from '@visx/shape/lib/shapes/Pie';\nimport { Slice } from './Slice';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { useRef, useMemo, useState } from 'react';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { spacing } from '@apia/theme';\nimport { usePieAnimation } from './usePieAnimation';\nimport { uniqueId } from 'lodash';\nimport ChartSelector from '../util/ChartSelector';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nexport type TPieChartEvents = { highlight: { barName: string } };\n\nconst PieChart = ({\n chart,\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const [dataset, setDataset] = useState<TApiaChartColumn[]>(\n arrayOrArray(chart.dataSets?.data),\n );\n const [currentPie, setCurrentPie] = useState('0');\n const piezas = useMemo(() => {\n return dataset\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n })[dataset[parseInt(currentPie)] ? parseInt(currentPie) : 0];\n }, [currentPie, dataset]);\n\n usePieAnimation({\n incomingColumn: arrayOrArray(chart.dataSets?.data)[\n dataset[parseInt(currentPie)] ? parseInt(currentPie) : 0\n ],\n piezas,\n setDataset,\n });\n\n let innerWidth =\n chart.ratio.width > chart.ratio.height\n ? chart.ratio.width\n : chart.ratio.height;\n let innerHeight =\n chart.ratio.width > chart.ratio.height\n ? chart.ratio.width\n : chart.ratio.height;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const centerY = useMemo(() => {\n return innerHeight / 2.5;\n }, [innerHeight]);\n const centerX = useMemo(() => {\n return innerWidth / 2.5;\n }, [innerWidth]);\n const top = centerY;\n const left = centerX;\n\n const getValue = (d: TApiaChartCoordinate) =>\n Number(d.value) === 0 && arrayOrArray(piezas.coordinate).length === 1\n ? 100\n : Number(d.value);\n const radius = Math.min(innerHeight, innerWidth) / 2.5;\n\n const styles = useChartStyles(chart.colorSchema);\n\n const colorsArray = styles\n ? styles.schema\n : ['#7ad6f4', '#45bdee', '#28a7ea', '#006cbb', '#034698', '#032f64'];\n const names = arrayOrArray(\n (dataset[parseInt(currentPie)] ?? dataset[0]).sets,\n ).map((coord) => {\n return coord.key;\n });\n const colorReference: TChartReference = names.map((name, index) => {\n return {\n title: name,\n color: getBarColor(arrayOrArray(colorsArray), index),\n };\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const previousPaths = useRef<(string | null)[]>([]);\n const id = useMemo(() => `Pie${uniqueId()}`, []);\n const charts = arrayOrArray(chart.dataSets?.data)\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n });\n const chartNames = charts.map((piece) => {\n return piece.name;\n });\n if (!piezas) {\n return null;\n }\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n key={piezas.name}\n className={`${\n className ? className : ''\n } ${chartId} chartBox chartContainer`}\n sx={{ textAlign: 'center', pb: spacing(5) }}\n >\n <svg\n ref={elementRef}\n height={radius * 2}\n width={radius * 2}\n className={`_${chartId} chart__svg`}\n >\n <Group top={top ?? 0} left={left ?? 0}>\n <Pie\n data={arrayOrArray(piezas.coordinate)}\n pieValue={getValue}\n pieSort={null}\n outerRadius={radius}\n >\n {(pie) => {\n const paths = arrayOrArray(pie.arcs).map((arc) => {\n return pie.path(arc);\n });\n\n const result = pie.arcs.map((arc) => {\n const name = arc.data;\n\n const arcPath = pie.path(arc);\n return (\n <Slice\n arc={arc}\n chartId={id}\n arcPath={arcPath}\n chart={chart}\n key={`${name.key}_${name.value}`}\n actualColor={\n colorReference\n .find((color) => {\n return color.title === name.key;\n })\n ?.color.startsWith('#')\n ? colorReference.find((color) => {\n return color.title === name.key;\n })?.color ?? ''\n : `#${\n colorReference.find((color) => {\n return color.title === name.key;\n })?.color ?? ''\n }`\n }\n />\n );\n });\n previousPaths.current = paths;\n\n return result;\n }}\n </Pie>\n </Group>\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {!chart.hideSelector && charts.length > 1 && (\n <Box className=\"chart__combo__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('lblChartSel').text}</Heading>\n <ChartSelector\n chartId={chartId}\n pieces={chartNames}\n className=\"chartSelectorCombo\"\n current={currentPie}\n setCurrent={setCurrentPie}\n />\n </Box>\n )}\n\n {chart.showLegend && colorReference.length > 1 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer id={chartId} references={colorReference} />\n </Box>\n )}\n </Box>\n </>\n );\n};\n\nexport { PieChart };\n","import tinycolor from 'tinycolor2';\nimport { BarGroup, BarGroupBar } from '@visx/shape/lib/types';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './VerticalBars';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroup<string>;\n parsedData: IParsedColumn[];\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameColumn) {\n let barName = barNameColumn;\n let columnName = '';\n if (barNameColumn.includes('_$_')) {\n barName = barNameColumn.split('_$_')[0];\n columnName = barNameColumn.split('_$_')[1];\n if (isSingle && barNameColumn !== '' && barNameColumn !== undefined) {\n barName = barNameColumn.split('_$_')[1];\n columnName = barNameColumn.split('_$_')[1];\n }\n }\n if (barName.split(' - ').length === 1) {\n if (arrayOrArray(chart.dataSets.data).length === 1) {\n setIsHighlighted(barName === parsedData[barGroup.index].columnName);\n setIsAnyHighlighted(\n barName !== parsedData[barGroup.index].columnName && barName !== '',\n );\n if (\n barName === parsedData[barGroup.index].columnName ||\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n } else {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n const currentBar = document.querySelector(\n `.${parsedData[barGroup.index].columnName}__${bar.key}`,\n );\n if (\n barName === bar.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n } else if (barName === bar.key && currentBar && columnName === '') {\n new ApiaUtil().tooltips.open({\n children: parsedData.map((dat, i) => {\n return (\n <div key={`${dat.columnName}_${dat[barName]}`}>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{dat.columnName}</strong>\n </div>\n {chart.showValues && <div>{dat[barName]}</div>}\n <div>\n {Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )}\n </div>\n {parsedData[i + 1] && <hr />}\n </div>\n );\n }),\n attachToMousePosition: true,\n });\n }\n }\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n if (\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n },\n });\n const { chartId } = useContext(ChartContext);\n\n return (\n <g>\n {/* {chart.showValues && (\n <text\n x={bar.x + bar.width / 2}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"middle\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n )} */}\n\n <Box\n as=\"rect\"\n className={`chart__barRect ${parsedData[barGroup.index].columnName}__${\n bar.key\n }`}\n ref={ref}\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n console.log(bar.key, parsedData[barGroup.index].columnName);\n\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n } else {\n legendContainerMethods.highlight(\n chartId,\n parsedData[barGroup.index].columnName,\n );\n }\n chartMethods(\n chartId,\n 'highlight',\n `${bar.key}_$_${parsedData[barGroup.index].columnName}`,\n );\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point || !chart.showValues) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n chartMethods(chartId, 'highlight', '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"height\"\n from={0}\n to={bar.height}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n <animate\n attributeName=\"y\"\n from={bar.y + bar.height}\n to={bar.y}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n","import { uniqueId } from 'lodash';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray, getLabel, usePanAndZoom } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { useLayoutEffect, useMemo } from 'react';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroup } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Bar } from './Bar';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\n\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getXValue = (d: IParsedColumn) => d.columnName;\n\nexport type TVerticalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst VerticalBars = ({\n margin = { top: 20, left: 100, bottom: 24, right: 0 },\n chart,\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height +\n (chart.showAxisXTitle\n ? -effectiveMargin.top - effectiveMargin.bottom\n : (-effectiveMargin.top - effectiveMargin.bottom) / 2);\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const styles = useChartStyles(chart.colorSchema);\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const xScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n chart.ratio.width,\n ],\n domain: parsedData.map(getXValue),\n padding: 0.2,\n });\n\n const numericXScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n chart.ratio.width,\n ],\n domain: parsedData.map((_, i) => `${i + 1}`),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, xScale.bandwidth()],\n });\n\n const yScaleLog = scaleLog<number>({\n range: [\n innerHeight,\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const yScaleLine = scaleLinear<number>({\n range: [\n innerHeight,\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n // const hideLegendsColors = arrayOrArray(chart.dataSets.data).some((data) => {\n // return arrayOrArray(data.sets).some(\n // (set) => set.color !== undefined && set.color !== '',\n // );\n // });\n\n const isLogScale = false;\n\n const yScale = useMemo(() => {\n if (!isLogScale) {\n return yScaleLine;\n }\n return yScaleLog;\n }, [isLogScale, yScaleLine, yScaleLog]);\n\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const box = current.getBoundingClientRect();\n if (box.width > 125) {\n // eslint-disable-next-line no-param-reassign\n current.style.width = '125px';\n // eslint-disable-next-line no-param-reassign\n current.style.overflow = 'hidden';\n // eslint-disable-next-line no-param-reassign\n current.style.textOverflow = 'ellipsis';\n // eslint-disable-next-line no-param-reassign\n current.style.whiteSpace = 'nowrap';\n }\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg)`;\n });\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n let numberReference: TChartReference = [];\n if (colorReference.length === 1) {\n numberReference = arrayOrArray(\n arrayOrArray(chart.dataSets.data)[0].sets,\n ).map((data, index) => {\n return {\n color: `${index + 1}`,\n title: data.key,\n };\n });\n }\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${className ?? ''} ${chart.title} chartBox chartContainer`}\n sx={{\n overflow: 'hidden',\n }}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={chart.ratio.width}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n >\n <BarGroup\n data={parsedData}\n keys={columnNames}\n height={innerHeight}\n x0={getXValue}\n x0Scale={xScale}\n x1Scale={columnGroupScale}\n yScale={yScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.x0}`}\n left={barGroup.x0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroup>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickComponent={(props) => {\n let value = Number(props.formattedValue?.replace(',', ''));\n let counter = -1;\n const units = ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y', 'R', 'Q'];\n while (value >= 1000) {\n value = value / 1000;\n counter++;\n }\n let stringValue = `${value}`;\n if (stringValue.length > 3) {\n stringValue = stringValue.slice(0, 3);\n }\n if (stringValue.endsWith('.')) {\n stringValue = stringValue.replace('.', '');\n }\n const newValue = `${stringValue}${\n counter >= 0 ? units[counter] : ''\n }`;\n\n return (\n <>\n {chart.showAxisYTitle && (\n <text\n dx={props.dx}\n dy={props.dy}\n fill={props.fill}\n fontSize={props.fontSize}\n textAnchor={props.textAnchor}\n x={props.x}\n y={props.y}\n >\n {newValue}\n </text>\n )}\n </>\n );\n }}\n />\n <AxisBottom\n top={innerHeight}\n scale={\n colorReference.length === 1 && numberReference.length > 0\n ? numericXScale\n : xScale\n }\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={0}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer\n id={chartId}\n references={\n colorReference.length === 1 && numberReference.length > 0\n ? numberReference\n : colorReference\n }\n useNumbered={colorReference.length === 1}\n />\n </Box>\n )}\n </Box>\n </>\n );\n};\n\nexport { VerticalBars };\n","import { Fragment } from 'theme-ui/jsx-runtime';\nimport tinycolor from 'tinycolor2';\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\n\nexport const Node = ({\n currentCircle,\n innerKey,\n cx,\n cy,\n // coordinate,\n color,\n setCurrentCircle,\n}: // column,\n{\n currentCircle: string[];\n innerKey: string;\n cx: number;\n cy: number;\n coordinate: TApiaChartCoordinate;\n color: string;\n setCurrentCircle: (value: React.SetStateAction<string[]>) => void;\n column: TApiaChartColumn;\n}) => {\n return (\n <Fragment key={innerKey}>\n {currentCircle.includes(innerKey) && (\n <circle\n r={6}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).saturate(25).toHex()}`}\n fill={`#${tinycolor(color).saturate(25).toHex()}`}\n />\n )}\n <circle\n r={3}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).darken(15).toHex()}`}\n fill={`#${tinycolor(color).darken(15).toHex()}`}\n />\n <circle\n r={6}\n cx={cx}\n cy={cy}\n stroke=\"transparent\"\n fill=\"transparent\"\n onMouseEnter={() => {\n setCurrentCircle([innerKey]);\n }}\n onMouseLeave={() => {\n setCurrentCircle([]);\n }}\n style={{ cursor: 'pointer' }}\n />\n </Fragment>\n );\n};\n","import {\n arrayOrArray,\n getLabel,\n useImperativeComponentEvents,\n usePanAndZoom,\n usePrevious,\n} from '@apia/util';\nimport {\n TApiaChartColorDisposition,\n TApiaChartCoordinate,\n TApiaChartDefinition,\n TChartRendererProps,\n} from '../types';\nimport { scaleLinear, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { min, max } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { useMemo, useState, useLayoutEffect } from 'react';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { LinePath } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport * as allCurves from '@visx/curve';\nimport { uniqueId } from 'lodash';\nimport { Node } from './Node';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { TChartEvents } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nfunction getX(coordinate: TApiaChartCoordinate) {\n return coordinate.key;\n}\n\nfunction getY(coordinate: TApiaChartCoordinate) {\n return Number(coordinate.value);\n}\n\nfunction parseData(chart: TApiaChartDefinition) {\n const setsArray = arrayOrArray(chart.dataSets?.data).map((col) =>\n arrayOrArray(col.sets),\n );\n let longestLine: TApiaChartCoordinate[] = [];\n let longestLineIndex = -1;\n\n for (let i = 0; i < setsArray.length; i++) {\n const array = setsArray[i];\n if (!longestLine || array.length > longestLine.length) {\n longestLine = array;\n longestLineIndex = i;\n }\n }\n\n const lines = arrayOrArray(chart.dataSets?.data);\n const nodesDataArray = lines.map((line) => line.sets);\n const nodesData = nodesDataArray.reduce<TApiaChartCoordinate[]>(\n (rec, d) => arrayOrArray(rec).concat(d),\n [],\n );\n return {\n lines,\n longestLine,\n longestLineIndex,\n tallestLine: [...new Set(nodesData.map((value) => value.value))],\n xScale: scaleOrdinal<string, number>({\n domain: longestLine.map(getX),\n }),\n yScale: scaleLinear<number>({\n domain: [\n (min(nodesData, getY) ?? 0) < 0 ? min(nodesData, getY) ?? 0 : 0,\n max(nodesData, getY) ?? 1,\n ],\n }),\n yScaleLog: scaleLog<number>({\n domain: [\n (min(nodesData, getY) ?? 1) > 0 ? min(nodesData, getY) ?? 1 : 1,\n max(nodesData, getY) ?? 10,\n ],\n }),\n };\n}\nexport type TLineChartEvents = { highlight: { barName: string } };\n\nexport type TChartNode = {\n x: number;\n y: number;\n xValue: string;\n yValue: string;\n columnName: string;\n};\n\nconst LineChart = ({\n chart,\n margin = { top: 20, left: 100, bottom: 24, right: 0 },\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width - (effectiveMargin.left + effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const { lines, xScale, yScale, yScaleLog, longestLine } = parseData(chart);\n const styles = useChartStyles(chart.colorSchema);\n const coordinates = arrayOrArray(lines[0].sets);\n const coordinatesArray = lines.map((col) => {\n return col.sets;\n });\n const divideRangeBetweenStrings = (\n min: number,\n max: number,\n strings: TApiaChartCoordinate[] | string[],\n ): number[] => {\n const numStrings = strings.length;\n const step = (max - min) / (numStrings - 1);\n\n const resultArray: number[] = [];\n let currentValue = min;\n\n for (let i = 0; i < numStrings; i++) {\n resultArray.push(currentValue);\n currentValue += step;\n }\n return resultArray;\n };\n const xScaleRange = useMemo(() => {\n const rangeArr = [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ];\n return divideRangeBetweenStrings(rangeArr[0], rangeArr[1], longestLine);\n }, [effectiveMargin, innerWidth, longestLine]);\n\n xScale.range(xScaleRange);\n const yScaleRange = useMemo(() => {\n const rangeArr = [\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom),\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ];\n\n return rangeArr;\n }, [effectiveMargin, innerHeight]);\n\n yScale.range(yScaleRange);\n yScaleLog.range([\n innerHeight,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n\n const [currentCircle, setCurrentCircle] = useState<string[]>([]);\n\n const actualYScale = useMemo(() => {\n return yScale;\n }, [yScale]);\n const id = useMemo(() => `Linear${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n function addNameToProps(\n names: string[],\n objects: {\n xValue: string;\n yValue: string;\n x: number;\n y: number;\n }[],\n fixedValue: number,\n ) {\n return objects.map((object, index) => {\n const nameIndex = Math.floor(index / fixedValue);\n const name = names[nameIndex];\n return { ...object, columnName: name };\n });\n }\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return { returnColumnsArray, columnColor: dataColor };\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n const [highlightedBar, setHighlightedBar] = useState('');\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setHighlightedBar(barName);\n } else if (barName.split(' - ').length === 2) {\n setHighlightedBar(barName.split(' - ')[0]);\n }\n },\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const coords = coordinatesArray.flat().map((coord) => {\n return {\n xValue: coord.key,\n yValue: coord.value,\n x: xScale(getX(coord)),\n y: actualYScale(getY(coord)),\n };\n });\n const columnNames = lines.map((column) => {\n return column.name;\n });\n const nodes = addNameToProps(columnNames, coords, coordinates.length);\n\n const [nearNodesArray, setNearNodesArray] = useState<TChartNode[]>([]);\n const previousNearNodesArray = usePrevious(nearNodesArray);\n return (\n <>\n <Box id={id} ref={boxRef} className=\"chartBox chartContainer\">\n <svg\n ref={elementRef}\n width={innerWidth}\n height={innerHeight}\n id=\"LinesChart\"\n className={`_${chartId} chart__svg`}\n onMouseMove={(ev) => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n let clientX =\n ev.clientX - (effectiveMargin.left + effectiveMargin.right) / 2;\n let clientY =\n ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n\n if (rect) {\n clientX = ev.clientX - rect.left;\n clientY = ev.clientY - rect.top;\n }\n const nearNodes = nodes.filter((node) => {\n return (\n Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) <\n 20\n );\n });\n\n if (previousNearNodesArray.current && nearNodes.length > 0) {\n const currentColumns = lines\n .map((col) => {\n let colNames = '';\n nearNodes.forEach((node) => {\n if (col.name === node.columnName) {\n colNames = node.columnName;\n }\n });\n\n return colNames;\n })\n .filter((name) => name !== '');\n const currentIndex = coordinates.findIndex((coord) => {\n return coord.key === nearNodes[0].xValue;\n });\n\n if (currentColumns && currentIndex !== undefined) {\n const newCircleValues = currentColumns.map((col) => {\n return `${col}${currentIndex}`;\n });\n\n setCurrentCircle([...newCircleValues]);\n }\n setNearNodesArray(nearNodes);\n const elementUnderCursor = document.elementFromPoint(\n ev.clientX,\n ev.clientY,\n );\n if (\n elementUnderCursor &&\n elementUnderCursor.tagName === 'circle'\n ) {\n new ApiaUtil().tooltips.open({\n children: nearNodes\n .sort((a, b) => Number(b.yValue) - Number(a.yValue))\n .map((node, i) => {\n const useSpecific = colorReference.some(\n (ref) =>\n ref.title === node.columnName + ' - ' + node.xValue,\n );\n\n return (\n <Box\n key={`${node.columnName}_${node.xValue}_${node.yValue}`}\n >\n <div\n style={{\n color:\n colorReference[\n colorReference.findIndex((ref) => {\n return (\n ref.title ===\n (useSpecific\n ? node.columnName + ' - ' + node.xValue\n : node.columnName)\n );\n })\n ].color,\n }}\n >\n <strong>{node.columnName}</strong>\n </div>\n {chart.showValues && <div>{node.yValue}</div>}\n <div>{node.xValue}</div>\n {nearNodesArray[i + 1] && <hr />}\n </Box>\n );\n }),\n attachToElement: () => elementUnderCursor as HTMLElement,\n attachToElementAnchorPoint: 'bottomRight',\n });\n } else {\n new ApiaUtil().tooltips.closeAll();\n }\n } else if (nearNodes.length === 0) {\n setCurrentCircle([]);\n }\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={0}\n xScale={xScale}\n yScale={actualYScale}\n width={innerWidth}\n height={innerHeight}\n stroke={styles?.grid.stroke}\n strokeOpacity={styles?.grid.opacity}\n />\n )}\n {lines.map((column, i) => {\n const currentCoordinates = arrayOrArray(column.sets);\n const newColor = setsWithColor.find(\n (data) => data.returnColumnsArray[0].columnName === column.name,\n )?.columnColor;\n\n return (\n <Group\n key={`lines-${column.name + i.toString()}`}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n style={{\n opacity:\n highlightedBar !== '' && highlightedBar !== column.name\n ? 0.15\n : 1,\n transition: 'opacity 500ms',\n }}\n >\n <LinePath\n curve={allCurves.curveMonotoneX}\n data={currentCoordinates}\n x={(coordinate) => {\n return xScale(getX(coordinate)) ?? 0;\n }}\n y={(coordinate) => actualYScale(getY(coordinate)) ?? 0}\n stroke={newColor ?? 'black'}\n strokeWidth={2}\n strokeOpacity={1}\n shapeRendering=\"geometricPrecision\"\n color=\"transparent\"\n />\n {currentCoordinates.map((coordinate, j) => {\n const key = column.name + j.toString();\n const realColor = setsWithColor\n .map((sets) => sets.returnColumnsArray)\n .flat()\n .find(\n (set) =>\n set.columnName === column.name &&\n set.key === coordinate.key,\n )?.color;\n\n return (\n <g key={key}>\n {chart.showValues && (\n <text\n x={xScale(getX(coordinate)) + 10}\n y={actualYScale(getY(coordinate)) - 5}\n textAnchor=\"middle\"\n style={{\n display:\n highlightedBar === column.name ? 'block' : 'none',\n opacity: highlightedBar === column.name ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {coordinate.value}\n </text>\n )}\n <Node\n color={realColor ?? 'black'}\n coordinate={coordinate}\n currentCircle={currentCircle}\n cx={xScale(getX(coordinate))}\n cy={actualYScale(getY(coordinate))}\n setCurrentCircle={setCurrentCircle}\n innerKey={key}\n column={column}\n />\n </g>\n );\n })}\n </Group>\n );\n })}\n\n <AxisLeft\n scale={actualYScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickLabelProps={{\n display: chart.showAxisYTitle ? 'auto' : 'none',\n }}\n />\n <AxisBottom\n top={innerHeight - (effectiveMargin.top + effectiveMargin.bottom)}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={10}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer id={chartId} references={colorReference} />\n </Box>\n )}\n </Box>\n </>\n );\n};\nexport { LineChart };\n","import { Line } from '@visx/shape';\nimport { useMemo } from 'react';\nimport { TApiaChartDefinition } from '../types';\nimport tinycolor from 'tinycolor2';\nimport { Box } from '@apia/theme';\nimport { ApiaUtil } from '@apia/components';\n\nconst WaterfallBar = ({\n width,\n height,\n x,\n y,\n fill,\n x1,\n lineY,\n x2,\n stroke,\n strokeDashArray,\n textX,\n textY,\n textContent,\n isLast,\n step,\n columnName,\n chart,\n}: {\n width: number;\n height: number;\n x: string | number;\n y: string | number;\n fill: string;\n x1: string | number;\n x2: string | number;\n lineY: string | number;\n stroke: string;\n strokeDashArray: string | number;\n textX: string | number;\n textY: string | number;\n textContent: string;\n isLast: boolean;\n step: {\n x: string;\n y: string;\n start: number;\n end: number;\n color: string;\n };\n columnName: string;\n chart: TApiaChartDefinition;\n}) => {\n return (\n <>\n <Box\n as={'rect'}\n sx={useMemo(() => {\n return {\n width: `${width}px`,\n height: `${height}px`,\n x: `${x}px`,\n y: `${y}px`,\n fill: `${fill}`,\n '&:hover': {\n fill: `#${tinycolor(fill).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms',\n };\n }, [fill, height, width, x, y])}\n onMouseEnter={(ev) => {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: step.color,\n }}\n >\n <strong>{columnName}</strong>\n </div>\n {chart.showValues && <div>{step.y}</div>}\n <div>{step.x}</div>\n </>\n ),\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n />\n\n {!isLast && (\n <Line\n x1={x1}\n x2={x2}\n y1={lineY}\n y2={lineY}\n stroke={stroke}\n strokeDasharray={strokeDashArray}\n />\n )}\n {chart.showValues && (\n <text textAnchor=\"middle\" x={textX} y={textY}>\n {textContent}\n </text>\n )}\n </>\n );\n};\n\nexport { WaterfallBar };\n","import { Box, Heading } from '@apia/theme';\nimport { TChartRendererProps } from '../types';\nimport { arrayOrArray, getLabel, usePanAndZoom } from '@apia/util';\nimport React, { useMemo, useLayoutEffect, useState } from 'react';\nimport { scaleBand, scaleLinear } from '@visx/scale';\nimport { extent } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { Group } from '@visx/group';\nimport { GridRows } from '@visx/grid';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { uniqueId } from 'lodash';\nimport ChartSelector from '../util/ChartSelector';\nimport { WaterfallBar } from './WaterfallBar';\n// import { LegendContainer } from '../util/LegendContainer';\n\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\ntype TDatum = { key: string; value: string };\n\nconst calculateWaterfallSteps = ({\n data,\n xAccessor,\n yAccessor,\n showFinal,\n colors,\n}: {\n data: TDatum[];\n xAccessor: (d: TDatum) => string;\n yAccessor: (d: TDatum) => string;\n showFinal: boolean;\n colors: {\n positive: string;\n negative: string;\n total: string;\n stepConnector: string;\n };\n}) => {\n // Holds cumulative value\n let cumulativeTotal = 0;\n\n // Calculate bars for each data point\n const steps = data.map((datum) => {\n const xValue = xAccessor(datum);\n const yValue = yAccessor(datum);\n\n const prevTotal = cumulativeTotal;\n cumulativeTotal += Number(yValue);\n\n return {\n x: xValue,\n y: yValue,\n start: prevTotal,\n end: cumulativeTotal,\n color: Number(yValue) > 0 ? colors.positive : colors.negative,\n };\n });\n\n // Add final Total bar\n if (showFinal) {\n steps.push({\n x: 'Total',\n y: cumulativeTotal as unknown as string,\n start: 0,\n end: cumulativeTotal,\n color: colors.total,\n });\n }\n\n return steps;\n};\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\nexport const WaterfallBars = ({\n margin = { top: 20, left: 100, bottom: 150, right: 70 },\n chart: {\n waterfallColors = {\n positive: '#49b86f',\n negative: '#c92e5b',\n total: '#434857',\n stepConnector: '#888d94',\n },\n ...chart\n },\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n console.log({ margin });\n\n const effectiveMargin = parseMargin(margin);\n\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const getXValue = (d: TDatum) => d.key;\n const getYValue = (d: TDatum) => d.value;\n\n const charts = arrayOrArray(chart.dataSets?.data)\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n });\n const [currentPie, setCurrentPie] = useState('0');\n const chartNames = charts.map((piece) => {\n return piece.name;\n });\n const steps = useMemo(\n () =>\n calculateWaterfallSteps({\n data: arrayOrArray(chart.dataSets.data)[currentPie as unknown as number]\n .sets as TDatum[],\n xAccessor: getXValue,\n yAccessor: getYValue,\n showFinal: chart.showTotal ?? true,\n colors: waterfallColors,\n }),\n [chart.dataSets.data, chart.showTotal, currentPie, waterfallColors],\n );\n\n // Build scales\n const padding = 0.2;\n\n const xScale = scaleBand({\n domain: steps.map((step) => step.x),\n padding,\n range: [0, innerWidth],\n });\n\n const yDomain = useMemo(() => {\n const values = steps.flatMap((step) => [step.start, step.end]);\n const [min, max] = extent<number>(values);\n return min != null && max != null ? [min - 5, max + 5] : undefined;\n }, [steps]);\n\n const yScale = scaleLinear({\n domain: yDomain,\n nice: true,\n range: [innerHeight, 0],\n });\n\n const id = useMemo(() => `WaterfallBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n return (\n <>\n <Box\n id={id}\n className={`${className ? className : ''} chartBox chartContainer`}\n ref={boxRef}\n >\n <svg\n height={chart.ratio.height}\n width={chart.ratio.width}\n ref={elementRef}\n >\n <Group left={effectiveMargin.left} top={effectiveMargin.top}>\n <GridRows scale={yScale} width={innerWidth} strokeDasharray=\"5\" />\n {steps.map((step, index) => {\n const x = xScale(step.x);\n const y = yScale(Math.max(step.start, step.end));\n\n if (x == null || y == null) {\n return null;\n }\n\n const barHeight = Math.abs(yScale(step.start) - yScale(step.end));\n\n const isLast = index === steps.length - 1;\n const linePadding = 2;\n const x1 = x + xScale.bandwidth() + linePadding;\n const x2 = x + xScale.bandwidth() / (1 - padding) - linePadding;\n const lineY = step.end < step.start ? y + barHeight : y;\n\n const labelOffset = 10;\n const labelY =\n yScale(step.end) +\n ((step.y as unknown as number) < 0\n ? labelOffset\n : -labelOffset);\n\n let currentYValue = 0;\n steps\n .filter((_, i) => {\n if ((chart.showTotal ?? true) && !steps[i + 1]) {\n return false;\n }\n return i <= index;\n })\n .forEach((step) => {\n currentYValue += Number(step.y);\n });\n\n return (\n <WaterfallBar\n chart={chart}\n columnName={chartNames[currentPie as unknown as number]}\n fill={step.color}\n height={barHeight}\n isLast={isLast}\n key={index}\n lineY={lineY}\n step={step}\n stroke={waterfallColors.stepConnector}\n strokeDashArray={2}\n textContent={\n chart.showTotal ?? true\n ? step.y\n : (currentYValue as unknown as string)\n }\n textX={x + xScale.bandwidth() / 2}\n textY={labelY + 5}\n width={xScale.bandwidth()}\n x={x}\n y={y}\n x1={x1}\n x2={x2}\n />\n );\n })}\n <AxisLeft\n label={''}\n scale={yScale}\n hideTicks\n tickLabelProps={() => ({\n textAnchor: 'end',\n verticalAnchor: 'middle',\n display: chart.showAxisYTitle ? 'auto' : 'none',\n })}\n />\n <AxisBottom\n scale={xScale}\n top={innerHeight}\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n />\n </Group>\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {!chart.hideSelector && charts.length > 1 && (\n <Box className=\"chart__combo__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('lblChartSel').text}</Heading>\n <ChartSelector\n chartId={chartId}\n pieces={chartNames}\n className=\"chartSelectorCombo\"\n current={currentPie}\n setCurrent={setCurrentPie}\n />\n </Box>\n )}\n {/* {chart.showLegend && (\n <Box className=\"chart__legend__wrapper\"> */}\n {/* TODO LABEL */}\n {/* <Heading as={'h6'}>Legend</Heading>\n <LegendContainer\n id={chartId}\n avoidEvent\n references={[\n {\n title: arrayOrArray(chart.dataSets.data)[\n currentPie as unknown as number\n ].name,\n color: 'transparent',\n },\n ]}\n />\n </Box>\n )} */}\n </Box>\n </>\n );\n};\n","import { TApiaChartDefinition, TChartRendererProps } from './types';\nimport React, { useMemo, RefAttributes } from 'react';\nimport { Box, responsive } from '@apia/theme';\nimport { getVariant, makeStyledComponent, spacing } from '@apia/theme';\nimport { HorizontalBars } from './horizontalBars/HorizontalBars';\nimport { PieChart } from './pie/Pie';\nimport {\n getIndex,\n makeImperativeComponent,\n useImperativeComponentContext,\n} from '@apia/util';\nimport { VerticalBars } from './verticalBars/VerticalBars';\nimport { ChartContext } from './ChartContext';\nimport { LineChart } from './linear/LineChart';\nimport { WaterfallBars } from './waterfallBars/WaterfallBars';\n\nconst frontColor = 'hsl(196, 37%, 13%)';\n\nfunction useMultipleRefs<T extends HTMLElement | null>(\n ...refs: React.MutableRefObject<T>[]\n) {\n return React.useCallback(\n function setRef(element: T) {\n refs.forEach((current) => {\n // eslint-disable-next-line no-param-reassign\n if (current) current.current = element;\n });\n },\n [refs],\n );\n}\n\nexport type TChartEvents = {\n highlight: string;\n};\n\nexport const [, chartMethods, ChartRenderer] = makeImperativeComponent<\n {\n currentChart: TApiaChartDefinition;\n chartConfig?: Partial<Omit<TApiaChartDefinition, 'columns'>>;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n allowZoom?: boolean;\n } & RefAttributes<HTMLElement>,\n TChartEvents\n>()({\n Component: makeStyledComponent(\n 'ChartRenderer',\n 'layout.charts',\n {\n red: {\n schema: 'schemas.red',\n },\n orange: {\n schema: 'schemas.orange',\n },\n green: {\n schema: 'schemas.green',\n },\n blue: {\n schema: 'schemas.blue',\n },\n violet: {\n schema: 'schemas.violet',\n },\n turquoise: {\n schema: 'schemas.turquoise',\n },\n yellow: {\n schema: 'schemas.yellow',\n },\n grey: {\n schema: 'schemas.grey',\n },\n ocean: {\n schema: 'schemas.ocean',\n },\n sunset: {\n schema: 'schemas.sunset',\n },\n common: {\n axis: {\n stroke: frontColor,\n title: frontColor,\n },\n schema: frontColor,\n background: 'hsl(200deg 20% 98%)',\n grid: {\n stroke: frontColor,\n opacity: '0.1',\n },\n toolTip: {\n backgroundColor: 'rgb(232, 241, 255)',\n border: '1px solid #07c',\n color: frontColor,\n padding: '.3rem .5rem',\n borderRadius: '3px',\n fontSize: '18px',\n boxShadow: '0 1px 2px rgba(33,33,33,0.2)',\n lineHeight: '1em',\n },\n },\n '.chartBox': () => {\n return {\n position: responsive({ 0: 'static', 3: 'sticky' }),\n top: '0',\n background: 'white',\n zIndex: '1',\n };\n },\n '.legendContainer': {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing(2),\n overflow: 'hidden',\n alignItems: 'start',\n button: () => ({\n justifyContent: 'start',\n textAlign: 'start',\n width: '100%',\n textDecoration: 'none',\n svg: {\n paddingLeft: spacing(1),\n },\n }),\n },\n\n '.legendItem': {\n transition: 'opacity 200ms',\n\n '&.isBlurred': {\n opacity: '0.15',\n },\n\n '.button__content': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n wordWrap: 'normal',\n display: 'block',\n whiteSpace: 'nowrap',\n p: spacing(1),\n },\n },\n },\n // eslint-disable-next-line react/display-name\n React.forwardRef(\n (\n {\n currentChart,\n chartId,\n allowZoom,\n id,\n }: {\n currentChart: TApiaChartDefinition;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n id: string;\n allowModal?: boolean;\n allowZoom?: boolean;\n },\n ref,\n ) => {\n const innerRef = React.useRef<HTMLElement | null>(null);\n const setRefs = useMultipleRefs(\n ref as React.MutableRefObject<HTMLElement>,\n innerRef,\n );\n\n const { id: imperativeId } = useImperativeComponentContext();\n\n const contextValue = useMemo(\n () => ({ chartId: String(imperativeId) }),\n [imperativeId],\n );\n const CurrentChart = getIndex(\n [PieChart, HorizontalBars, VerticalBars, LineChart, WaterfallBars],\n [\n currentChart.chartType === 'pie2D',\n currentChart.chartType === 'barH2D',\n currentChart.chartType === 'barV2D',\n currentChart.chartType === 'linear',\n currentChart.chartType === 'waterfall',\n ],\n 0,\n );\n return (\n <ChartContext.Provider value={contextValue}>\n <Box\n ref={setRefs}\n className=\"chart__chartRenderer\"\n {...getVariant('layout.charts')}\n id={id}\n >\n <CurrentChart\n chart={currentChart}\n chartId={chartId}\n parentRef={innerRef as React.MutableRefObject<HTMLElement>}\n allowZoom={allowZoom}\n margin={currentChart.margin}\n />\n </Box>\n </ChartContext.Provider>\n );\n },\n ),\n true,\n ),\n});\n","import { AxisBottom, AxisLeft } from '@visx/axis';\nimport { scaleBand } from '@visx/scale';\nimport { Grid } from '@visx/visx';\n\nexport const EmptyGrid = ({ width }: { width?: number }) => {\n const xScale = scaleBand<string>({\n range: [0, width ?? 400],\n domain: ['0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100'],\n padding: 0.2,\n });\n const yScale = scaleBand<string>({\n range: [0, 400],\n domain: ['0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100'],\n padding: 0.2,\n });\n return (\n <svg height={400} width={width ?? 400}>\n <Grid.Grid\n height={400}\n width={width ?? 400}\n numTicksRows={10}\n numTicksColumns={10}\n xScale={xScale}\n yScale={yScale}\n />\n <AxisLeft\n scale={yScale}\n left={20}\n hideTicks={true}\n tickLabelProps={{ display: 'none' }}\n />\n <AxisBottom\n scale={xScale}\n top={380}\n hideTicks={true}\n tickLabelProps={{ display: 'none' }}\n />\n </svg>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 90;\nconst END_ANGLE = 270;\n\nexport const Scale = ({\n currentValue,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = false;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 10 + 1,\n diameter: diameter,\n });\n const gauge2 = useGauge({\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter / 2 + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 90,\n endAngle: 270,\n })}\n stroke=\"gray\"\n opacity=\"0.2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n />\n {showText && (\n <text\n fill=\"black\"\n {...gauge.getLabelProps({ angle, offset: 20 })}\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n {allTicks &&\n gauge2.ticks.map((angle, i) => {\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\n <line\n stroke=\"gray\"\n strokeWidth={2}\n {...gauge.getTickProps({\n angle,\n length: 3,\n })}\n />\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n y={-diameter / 4 + 20}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 30;\nconst END_ANGLE = 330;\n\nexport const SpeedMeter = ({\n backgroundColor,\n colorRanges,\n currentValue,\n currentValueColor,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = false;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: allTicks\n ? valueRanges[valueRanges.length - 1] - valueRanges[0] + 1\n : valueRanges[valueRanges.length - 1] / 10 + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n }\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 0,\n endAngle: 360,\n })}\n stroke=\"gray\"\n fill={backgroundColor ?? 'none'}\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n {valueRanges.map((innerValue, i) => {\n const valueToAngle = (value: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n const angle =\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\n return Math.round(angle);\n };\n\n return (\n <g key={`${innerValue}_${i}`}>\n <path\n {...gauge.getArcProps({\n offset: -50,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={getColor(innerValue)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n <path\n {...gauge.getArcProps({\n offset: -55,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n key={`${innerValue}_${i}`}\n stroke={getColor(innerValue)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n </g>\n );\n })}\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n />\n {showText && (\n <text\n fill=\"black\"\n {...gauge.getLabelProps({ angle, offset: 20 })}\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n y={diameter / 2}\n fill={currentValueColor}\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { useCallback, useRef, useState, useEffect } from 'react';\nimport { addBoundary, noNaN, animate } from '@apia/util';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const TLight = ({\n addBorder = false,\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n width,\n currentValueColor,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue);\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n\n const hasRendered = useRef(false);\n\n const onRenderSvg = useCallback(\n (el: SVGSVGElement) => {\n if (!el || hasRendered.current) return;\n\n hasRendered.current = true;\n\n const svgElement = el;\n const pathElement = el.querySelector('#TLight_arcs');\n\n if (!(svgElement && pathElement)) {\n return;\n }\n\n const pathBox = pathElement.getBoundingClientRect();\n const svgBox = svgElement.getBoundingClientRect();\n const pathX = pathBox.x - svgBox.x;\n const pathY = pathBox.y - svgBox.y;\n\n const viewBox = `${pathX - diameter / 2} ${\n pathY - diameter / 2\n } ${diameter} ${diameter}`;\n\n svgElement.setAttribute('viewBox', viewBox);\n\n svgElement.style.visibility = 'visible';\n },\n [diameter],\n );\n\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n style={{ visibility: 'hidden' }}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n id=\"TLight_svg\"\n ref={onRenderSvg}\n viewBox={`-${diameter / 2} -${diameter / 2} ${diameter} ${diameter}`}\n >\n <g id=\"TLight_arcs\">\n <path\n {...gauge.getArcProps({\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n fill={getColor(value)}\n id=\"TLight_path\"\n style={{ transition: 'fill 0.3s' }}\n />\n {addBorder && (\n <path\n {...gauge.getArcProps({\n offset: -2.5,\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n stroke={'black'}\n fill={'transparent'}\n strokeLinecap=\"round\"\n strokeWidth={5}\n id=\"TLight_path\"\n />\n )}\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 100}pt` }}\n alignmentBaseline=\"central\"\n fill={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport tinycolor from 'tinycolor2';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 45;\nconst END_ANGLE = 315;\n\nexport const Oxford = ({\n backgroundColor,\n colorRanges,\n currentValue,\n currentValueColor,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = true;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 10 + 1,\n diameter: diameter,\n });\n const gauge2 = useGauge({\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n }\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 0,\n endAngle: 360,\n })}\n stroke=\"black\"\n opacity=\"1\"\n fill={\n backgroundColor !== '' && backgroundColor !== undefined\n ? tinycolor(backgroundColor)\n .setAlpha(0.5)\n .toPercentageRgbString()\n : 'none'\n }\n strokeLinecap=\"round\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n {valueRanges.map((innerValue, i) => {\n if (!valueRanges[i + 1]) {\n return null;\n }\n\n const valueToAngle = (value: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n const angle =\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\n return Math.round(angle);\n };\n\n return (\n <g key={`${innerValue}_${i}`}>\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={'black'}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"square\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n {...gauge.getArcProps({\n offset: -20,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={getColor(innerValue)}\n opacity=\"0.1\"\n fill=\"none\"\n strokeLinecap=\"butt\"\n strokeWidth={75}\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n {...gauge.getArcProps({\n offset: -55,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n key={`${innerValue}_${i}`}\n stroke={getColor(innerValue) || '#999'}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"butt\"\n strokeWidth={10}\n vectorEffect={'non-scaling-stroke'}\n />\n </g>\n );\n })}\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle, i) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n vectorEffect={'non-scaling-stroke'}\n />\n {showText && (\n <text\n fill={'black'}\n {...gauge.getLabelProps({\n angle,\n offset: 20,\n })}\n style={{\n fontSize: `${scaleValuesSize ?? 30}px`,\n }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n {allTicks &&\n gauge2.ticks.map((angle, i) => {\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\n <line\n stroke=\"gray\"\n strokeWidth={2}\n {...gauge.getTickProps({\n angle,\n length: 3,\n })}\n vectorEffect={'non-scaling-stroke'}\n />\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n alignmentBaseline=\"text-before-edge\"\n y={diameter / 5}\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n fill={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { addBoundary, noNaN, animate } from '@apia/util';\nimport { useEffect, useRef, useState } from 'react';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const Counter = ({\n addBorder = false,\n colorRanges,\n currentValue,\n valueRanges,\n maxValue,\n minValue,\n currentValueFontSize,\n panelId,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue ?? 0);\n const actualWidth = ((currentValueFontSize as number) ?? 80) * 3 * 0.8;\n const diameter = actualWidth;\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n\n return (\n <Box sx={{ position: 'relative' }} className=\"widgetContainer__Counter\">\n <svg\n {...gauge.getSVGProps()}\n height={actualWidth}\n width={actualWidth}\n viewBox={undefined}\n >\n <g id=\"arcs\">\n {addBorder && `${value}`.length < 4 && (\n <ellipse\n cx={actualWidth / 2}\n cy={actualWidth / 2}\n rx={actualWidth / 2 - 5}\n ry={actualWidth / 2 - 5}\n stroke=\"gray\"\n opacity=\"0.2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n )}\n </g>\n </svg>\n <svg\n height={actualWidth}\n width={actualWidth}\n style={{ position: 'absolute', left: 0, top: 0 }}\n >\n <text\n x={actualWidth / 2}\n y={actualWidth / 2 - 5}\n textAnchor=\"middle\"\n style={{\n fontSize: `${currentValueFontSize ?? 80}px`,\n transition: 'fill 0.5s',\n }}\n alignmentBaseline=\"central\"\n fill={getColor(value)}\n id={`text_${panelId}`}\n >\n {value}\n </text>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { addBoundary, noNaN, animate } from '@apia/util';\nimport { useEffect, useRef, useState } from 'react';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const Ring = ({\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n ringEmptyColor,\n ringWidth,\n width,\n currentValueColor,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue);\n const diameter = Math.min(height, width);\n const offset = 20;\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n\n const valueToAngle = (value: number) => {\n const angleRange = 360;\n const valueRange = domainMax - domainMin;\n const angle = ((value - domainMin) / valueRange) * angleRange;\n\n return Math.round(angle);\n };\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - (noNaN(ringWidth) ?? 0) * 100,\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n stroke={ringEmptyColor ?? 'transparent'}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={(noNaN(ringWidth) ?? 0) * 100}\n />\n <path\n {...gauge.getArcProps({\n offset: offset - (noNaN(ringWidth) ?? 0) * 100,\n startAngle: 180,\n endAngle:\n valueToAngle(value) === 360\n ? 179 + valueToAngle(value)\n : 180 + valueToAngle(value),\n })}\n stroke={getColor(value)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"square\"\n strokeWidth={(noNaN(ringWidth) ?? 0) * 100}\n style={{\n transition: 'stroke 0.5s',\n }}\n />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n alignmentBaseline=\"central\"\n color={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","const colorGetter = (\n valueRanges: number[],\n colorRanges: string[],\n innerValue: number,\n) => {\n let color = '';\n valueRanges.forEach((value, index) => {\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\n color = colorRanges[index - 1];\n }\n });\n return color;\n};\n\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n}\n\nfunction getInnerColor(\n valueRanges: number[],\n colorRanges: string[],\n value: number,\n) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n}\n\nconst valueToTickPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n\n return Math.round(percentage);\n};\n\nconst valueToPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n const test = (percentage * 69) / 100;\n\n return Math.round(test);\n};\n\nexport {\n colorGetter,\n getColor,\n getInnerColor,\n valueToPercent,\n valueToTickPercent,\n};\n","const colorGetter = (\n valueRanges: number[],\n colorRanges: string[],\n innerValue: number,\n) => {\n let color = '';\n valueRanges.forEach((value, index) => {\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\n color = colorRanges[index - 1];\n }\n });\n return color;\n};\n\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n}\n\nfunction getInnerColor(\n valueRanges: number[],\n colorRanges: string[],\n value: number,\n) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n}\n\nconst valueToTickPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n\n return Math.round(percentage);\n};\n\nconst valueToPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n const test = (percentage * 69) / 100;\n\n return Math.round(test);\n};\n\nexport {\n colorGetter,\n getColor,\n getInnerColor,\n valueToPercent,\n valueToTickPercent,\n};\n","import { noNaN } from '@apia/util';\nimport { useState, useRef, useCallback } from 'react';\nimport { valueToPercent } from './util';\n\nexport const useCustomWidget = ({\n maxValue,\n minValue,\n currentValue,\n panelId,\n}: {\n maxValue: number;\n minValue: number;\n currentValue: number;\n panelId: string;\n}) => {\n const baseValue = minValue;\n const domainMax = maxValue;\n\n const [yDifference, setYDifference] = useState(0);\n const svgRect = useRef<DOMRect>({} as DOMRect);\n const pathRect = useRef<DOMRect>({} as DOMRect);\n\n const onRenderRect = useCallback(\n (el: SVGRectElement) => {\n if (!el) return;\n\n const svgElement = el.closest('svg');\n const pathElement = svgElement?.querySelector(`#path_${panelId}`);\n\n if (!svgElement) throw new Error('No svg');\n if (!pathElement) throw new Error('No path');\n\n const svgBox = svgElement.getBoundingClientRect();\n const pathBox = pathElement.getBoundingClientRect();\n\n const pathY = pathBox.y - svgBox.y;\n\n svgRect.current = svgBox;\n pathRect.current = pathBox;\n setYDifference(pathY);\n },\n [panelId],\n );\n\n const pathX = noNaN(pathRect.current.x - svgRect.current.x);\n const pathY = noNaN(pathRect.current.y - svgRect.current.y);\n const pathWidth = noNaN(pathRect.current.width);\n const pathHeight = noNaN(pathRect.current.height);\n\n const viewBox = `${pathX} ${pathY} ${pathWidth} ${pathHeight}`;\n\n const rectProps: React.SVGProps<SVGRectElement> = {\n y: noNaN(\n (valueToPercent(domainMax, baseValue, currentValue) * pathHeight) / 100 +\n yDifference,\n ),\n x: pathX,\n width: pathWidth,\n height: pathHeight,\n style: {\n visibility: 'visible',\n transition: 'y 0.5s, fill 0.5s',\n },\n };\n\n return {\n rectRef: onRenderRect,\n svgViewBox: viewBox,\n rectProps,\n pathX,\n pathY,\n pathRect,\n svgRect,\n };\n};\n","import { Box } from '@apia/theme';\nimport { TApiaWidgetProps } from '../types';\nimport {\n valueToTickPercent,\n colorGetter,\n getInnerColor,\n getColor,\n} from './util';\nimport { noNaN } from '@apia/util';\nimport { useCustomWidget } from '../custom/useCustomWidget';\n// Usar un segundo svg para los textos\nexport const Thermometer = ({\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n width,\n panelId,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const value = currentValue;\n const baseValue = noNaN(minValue) ?? valueRanges[0];\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const pathDValue = `m 179.6875,717.73633 c -0.45013,0 -0.8125,0.36237 -0.8125,0.8125 l 0,8.46289 a 2.3125,2.3125 0 0 0 -1.5,2.16211 2.3125,2.3125 0 0 0 2.3125,2.3125 2.3125,2.3125 0 0 0 2.3125,-2.3125 2.3125,2.3125 0 0 0 -1.5,-2.16211 l 0,-8.46289 c 0,-0.45013 -0.36237,-0.8125 -0.8125,-0.8125 z`;\n\n const { rectProps, rectRef, svgViewBox, pathX, pathY } = useCustomWidget({\n currentValue: value,\n maxValue: domainMax,\n minValue: baseValue,\n panelId,\n });\n\n const boxValues = {\n height: noNaN(Math.max(width, height) - Math.max(width, height) * 0.31),\n width: noNaN(Math.max(width, height)),\n x: pathX,\n y: pathY,\n };\n\n const tickArray = valueRanges.map((val, i) => {\n return {\n height:\n boxValues.height *\n (valueToTickPercent(domainMax, baseValue, val) / 100),\n color: !valueRanges[i + 1]\n ? 'black'\n : colorGetter(valueRanges, colorRanges, val),\n value: val,\n };\n });\n\n return (\n <Box sx={{ position: 'relative' }}>\n <svg\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n id={`svg_${panelId}`}\n viewBox={svgViewBox}\n style={{ position: 'relative', top: '10px' }}\n >\n <clipPath id=\"clipPath\">\n <path d={pathDValue} />\n </clipPath>\n <mask id=\"myMask\">\n <path d={pathDValue} id=\"maskPath\" fill=\"white\" />\n </mask>\n\n <path d={pathDValue} id={`path_${panelId}`} fill=\"white\" />\n\n <rect\n fill={getInnerColor(valueRanges, colorRanges, value)}\n id={`rect_${panelId}`}\n mask=\"url(#myMask)\"\n ref={rectRef}\n {...rectProps}\n />\n\n <path\n d={pathDValue}\n id=\"path\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={10}\n clipPath=\"url(#clipPath)\"\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n clipPath=\"url(#clipPath)\"\n d={pathDValue}\n id=\"path\"\n fill=\"none\"\n stroke=\"black\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n </svg>\n <svg\n height={Math.max(width, height) + 10}\n width={Math.max(width, height)}\n style={{ position: 'absolute', left: 0, top: 0 }}\n >\n {boxValues.x && (\n <g>\n <text\n x={Math.max(width, height) / 2}\n y={Math.max(width, height) - Math.max(width, height) / 6 + 10}\n style={{\n fontSize: `${noNaN(currentValueFontSize) ?? 50}px`,\n }}\n textAnchor=\"middle\"\n alignmentBaseline={'central'}\n vectorEffect={'non-scaling-stroke'}\n >\n {value}\n </text>\n </g>\n )}\n {tickArray.map((tick, i) => {\n return (\n <g key={i}>\n <rect\n x={\n i === 0\n ? Math.max(width, height) / 2 + 30\n : Math.max(width, height) / 2 + 20\n }\n y={tick.height + 10}\n width={'15px'}\n height={'3px'}\n vectorEffect={'non-scaling-stroke'}\n fill={getColor(valueRanges, colorRanges, tick.value)}\n />\n <text\n x={\n i === 0\n ? Math.max(width, height) - Math.max(width, height) / 3 + 10\n : Math.max(width, height) - Math.max(width, height) / 3\n }\n y={tickArray[i + 1] ? tick.height + 16 : tick.height + 1.5}\n textAnchor=\"middle\"\n alignmentBaseline={\n tickArray[i + 1] ? 'auto' : 'text-before-edge'\n }\n >\n {tick.value}\n </text>\n </g>\n );\n })}\n </svg>\n </Box>\n );\n};\n","import { Scale } from './scale/Scale';\nimport { SpeedMeter } from './speedMeter/SpeedMeter';\nimport { TLight } from './tLight/TLight';\nimport { Oxford } from './oxford/Oxford';\nimport { Counter } from './counter/Counter';\nimport { Ring } from './ring/Ring';\nimport { Thermometer } from './thermometer/Thermometer';\n// import { Custom } from './custom/Custom';\nimport { TWidgetData } from './types';\nimport { arrayOrArray, getIndex } from '@apia/util';\nimport tinycolor from 'tinycolor2';\n\nexport const WidgetContainer = ({\n data,\n id,\n}: {\n data: TWidgetData;\n id: string;\n}) => {\n // const mockData: TWidgetData = {\n // border: true,\n // backgroundColor: 'white',\n // currentValue: 1010,\n // height: 400,\n // width: 400,\n // maxValue: 1050,\n // minValue: 1000,\n // noValueColor: '',\n // pointerColor: 'blue',\n // ringAnchor: 5,\n // scaleFontSize: 20,\n // valueColor: 'darkblue',\n // valueDecimals: 1,\n // valueFontSize: 50,\n // valueType: '',\n // widKpiType: 0,\n // zones: {\n // Zone: [\n // {\n // color: 'blue',\n // maximum: 1020,\n // minimum: 1000,\n // transparency: 230,\n // },\n // {\n // color: 'purple',\n // maximum: 1040,\n // minimum: 1020,\n // transparency: 150,\n // },\n // {\n // color: 'red',\n // maximum: 1050,\n // minimum: 1040,\n // transparency: 255,\n // },\n // ],\n // },\n // };\n\n const realData: TWidgetData = {\n ...data,\n };\n\n const valueRanges = Array.from(\n new Set(\n arrayOrArray(realData.zones.Zone)\n .map((zone) => {\n return [Number(zone.minimum), Number(zone.maximum)];\n })\n .flat()\n .sort((a, b) => a - b),\n ),\n );\n\n const colorRanges = arrayOrArray(realData.zones.Zone)\n .map((zone) => {\n return tinycolor(zone.color)\n .setAlpha(1 - (255 - zone.transparency) / 255)\n .toPercentageRgbString();\n })\n .flat();\n\n const CurrentWidget = getIndex(\n [SpeedMeter, Oxford, Counter, TLight, Thermometer, Scale, Ring],\n [\n realData.widKpiType === '1',\n realData.widKpiType === '2',\n realData.widKpiType === '3',\n realData.widKpiType === '4',\n realData.widKpiType === '5',\n realData.widKpiType === '6',\n realData.widKpiType === '7',\n ],\n 0,\n );\n\n return (\n <CurrentWidget\n addBorder={realData.border}\n backgroundColor={realData.backgroundColor}\n colorRanges={colorRanges}\n currentValue={Number(realData.currentValue)}\n decimals={realData.valueDecimals}\n currentValueColor={realData.valueColor}\n currentValueFontSize={realData.valueFontSize}\n forceProp={realData.forceProp}\n height={realData.height}\n panelId={id}\n maxValue={realData.maxValue}\n minValue={realData.minValue}\n pointerColor={realData.pointerColor}\n ringEmptyColor={realData.noValueColor}\n ringWidth={realData.ringAnchor}\n scaleValuesSize={realData.scaleFontSize}\n valueRanges={valueRanges}\n width={realData.width}\n />\n );\n};\n"],"names":["Bar","_a","__spreadProps","__spreadValues","adjustDimensions","_b","_c","_d","Fragment","min","max","step","START_ANGLE","END_ANGLE","angle","value","pathY"],"mappings":"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"}