{"version":3,"file":"nivo-legends.mjs","sources":["../src/svg/symbols/SymbolCircle.tsx","../src/svg/symbols/SymbolDiamond.tsx","../src/svg/symbols/SymbolSquare.tsx","../src/svg/symbols/SymbolTriangle.tsx","../src/defaults.ts","../src/compute.ts","../src/svg/ContinuousColorsLegendSvg.tsx","../src/svg/AnchoredContinuousColorsLegendSvg.tsx","../src/svg/LegendSvgItem.tsx","../src/svg/LegendSvg.tsx","../src/svg/BoxLegendSvg.tsx","../src/canvas.ts","../src/hooks.ts"],"sourcesContent":["import { SymbolProps } from './types'\n\nexport const SymbolCircle = ({\n    x,\n    y,\n    size,\n    fill,\n    opacity = 1,\n    borderWidth = 0,\n    borderColor = 'transparent',\n}: SymbolProps) => {\n    return (\n        <circle\n            r={size / 2}\n            cx={x + size / 2}\n            cy={y + size / 2}\n            fill={fill}\n            opacity={opacity}\n            strokeWidth={borderWidth}\n            stroke={borderColor}\n            style={{\n                pointerEvents: 'none',\n            }}\n        />\n    )\n}\n","import { SymbolProps } from './types'\n\nexport const SymbolDiamond = ({\n    x,\n    y,\n    size,\n    fill,\n    opacity = 1,\n    borderWidth = 0,\n    borderColor = 'transparent',\n}: SymbolProps) => {\n    return (\n        <g transform={`translate(${x},${y})`}>\n            <path\n                d={`\n                    M${size / 2} 0\n                    L${size * 0.8} ${size / 2}\n                    L${size / 2} ${size}\n                    L${size * 0.2} ${size / 2}\n                    L${size / 2} 0\n                `}\n                fill={fill}\n                opacity={opacity}\n                strokeWidth={borderWidth}\n                stroke={borderColor}\n                style={{\n                    pointerEvents: 'none',\n                }}\n            />\n        </g>\n    )\n}\n","import { SymbolProps } from './types'\n\nexport const SymbolSquare = ({\n    x,\n    y,\n    size,\n    fill,\n    opacity = 1,\n    borderWidth = 0,\n    borderColor = 'transparent',\n}: SymbolProps) => {\n    return (\n        <rect\n            x={x}\n            y={y}\n            fill={fill}\n            opacity={opacity}\n            strokeWidth={borderWidth}\n            stroke={borderColor}\n            width={size}\n            height={size}\n            style={{\n                pointerEvents: 'none',\n            }}\n        />\n    )\n}\n","import { SymbolProps } from './types'\n\nexport const SymbolTriangle = ({\n    x,\n    y,\n    size,\n    fill,\n    opacity = 1,\n    borderWidth = 0,\n    borderColor = 'transparent',\n}: SymbolProps) => {\n    return (\n        <g transform={`translate(${x},${y})`}>\n            <path\n                d={`\n                M${size / 2} 0\n                L${size} ${size}\n                L0 ${size}\n                L${size / 2} 0\n            `}\n                fill={fill}\n                opacity={opacity}\n                strokeWidth={borderWidth}\n                stroke={borderColor}\n                style={{\n                    pointerEvents: 'none',\n                }}\n            />\n        </g>\n    )\n}\n","import { BoxLegendSvgProps, ContinuousColorsLegendProps } from './types'\n\nexport const legendDefaults: {\n    translateX: NonNullable<BoxLegendSvgProps['translateX']>\n    translateY: NonNullable<BoxLegendSvgProps['translateY']>\n    padding: NonNullable<BoxLegendSvgProps['padding']>\n    itemsSpacing: NonNullable<BoxLegendSvgProps['itemsSpacing']>\n    itemDirection: NonNullable<BoxLegendSvgProps['itemDirection']>\n    justify: NonNullable<BoxLegendSvgProps['justify']>\n    symbolShape: NonNullable<BoxLegendSvgProps['symbolShape']>\n    symbolSize: NonNullable<BoxLegendSvgProps['symbolSize']>\n    symbolSpacing: NonNullable<BoxLegendSvgProps['symbolSpacing']>\n} = {\n    translateX: 0,\n    translateY: 0,\n    padding: 0,\n    itemsSpacing: 0,\n    itemDirection: 'left-to-right',\n    justify: false,\n    symbolShape: 'square',\n    symbolSize: 16,\n    symbolSpacing: 8,\n}\n\nexport const continuousColorsLegendDefaults: {\n    length: NonNullable<ContinuousColorsLegendProps['length']>\n    thickness: NonNullable<ContinuousColorsLegendProps['thickness']>\n    direction: NonNullable<ContinuousColorsLegendProps['direction']>\n    tickPosition: NonNullable<ContinuousColorsLegendProps['tickPosition']>\n    tickSize: NonNullable<ContinuousColorsLegendProps['tickSize']>\n    tickSpacing: NonNullable<ContinuousColorsLegendProps['tickSpacing']>\n    tickOverlap: NonNullable<ContinuousColorsLegendProps['tickOverlap']>\n    tickFormat: NonNullable<ContinuousColorsLegendProps['tickFormat']>\n    titleAlign: NonNullable<ContinuousColorsLegendProps['titleAlign']>\n    titleOffset: NonNullable<ContinuousColorsLegendProps['titleOffset']>\n} = {\n    length: 200,\n    thickness: 16,\n    direction: 'row',\n    tickPosition: 'after',\n    tickSize: 4,\n    tickSpacing: 3,\n    tickOverlap: false,\n    tickFormat: (value: number) => `${value}`,\n    titleAlign: 'start',\n    titleOffset: 4,\n}\n","import { scaleLinear } from 'd3-scale'\nimport { getValueFormatter } from '@nivo/core'\nimport { computeContinuousColorScaleColorStops } from '@nivo/colors'\nimport {\n    BoxLegendSvgProps,\n    ContinuousColorsLegendProps,\n    LegendAnchor,\n    LegendItemDirection,\n} from './types'\nimport { continuousColorsLegendDefaults } from './defaults'\n\nconst isObject = <T>(item: unknown): item is T =>\n    typeof item === 'object' && !Array.isArray(item) && item !== null\n\nconst zeroPadding = {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n}\n\nexport const computeDimensions = ({\n    direction,\n    itemsSpacing,\n    padding: _padding,\n    itemCount,\n    itemWidth,\n    itemHeight,\n}: Pick<BoxLegendSvgProps, 'direction' | 'padding'> &\n    Record<'itemsSpacing' | 'itemCount' | 'itemWidth' | 'itemHeight', number>) => {\n    if (typeof _padding !== 'number' && !isObject(_padding)) {\n        throw new Error('Invalid property padding, must be one of: number, object')\n    }\n\n    const padding =\n        typeof _padding === 'number'\n            ? {\n                  top: _padding,\n                  right: _padding,\n                  bottom: _padding,\n                  left: _padding,\n              }\n            : {\n                  ...zeroPadding,\n                  ..._padding,\n              }\n\n    const horizontalPadding = padding.left + padding.right\n    const verticalPadding = padding.top + padding.bottom\n    let width = itemWidth + horizontalPadding\n    let height = itemHeight + verticalPadding\n    const spacing = (itemCount - 1) * itemsSpacing\n    if (direction === 'row') {\n        width = itemWidth * itemCount + spacing + horizontalPadding\n    } else if (direction === 'column') {\n        height = itemHeight * itemCount + spacing + verticalPadding\n    }\n\n    return { width, height, padding }\n}\n\nexport const computePositionFromAnchor = ({\n    anchor,\n    translateX,\n    translateY,\n    containerWidth,\n    containerHeight,\n    width,\n    height,\n}: { anchor: LegendAnchor } & Record<\n    'translateX' | 'translateY' | 'containerWidth' | 'containerHeight' | 'width' | 'height',\n    number\n>) => {\n    let x = translateX\n    let y = translateY\n\n    switch (anchor) {\n        case 'top':\n            x += (containerWidth - width) / 2\n            break\n\n        case 'top-right':\n            x += containerWidth - width\n            break\n\n        case 'right':\n            x += containerWidth - width\n            y += (containerHeight - height) / 2\n            break\n\n        case 'bottom-right':\n            x += containerWidth - width\n            y += containerHeight - height\n            break\n\n        case 'bottom':\n            x += (containerWidth - width) / 2\n            y += containerHeight - height\n            break\n\n        case 'bottom-left':\n            y += containerHeight - height\n            break\n\n        case 'left':\n            y += (containerHeight - height) / 2\n            break\n\n        case 'center':\n            x += (containerWidth - width) / 2\n            y += (containerHeight - height) / 2\n            break\n    }\n\n    return { x, y }\n}\n\nexport const computeItemLayout = ({\n    direction,\n    justify,\n    symbolSize,\n    symbolSpacing,\n    width,\n    height,\n}: {\n    direction: LegendItemDirection\n    justify: boolean\n} & Record<'symbolSize' | 'symbolSpacing' | 'width' | 'height', number>) => {\n    let symbolX\n    let symbolY\n\n    let labelX\n    let labelY\n    let labelAnchor: 'start' | 'middle' | 'end'\n    let labelAlignment: 'alphabetic' | 'central' | 'text-before-edge'\n\n    switch (direction) {\n        case 'left-to-right':\n            symbolX = 0\n            symbolY = (height - symbolSize) / 2\n\n            labelY = height / 2\n            labelAlignment = 'central'\n            if (justify) {\n                labelX = width\n                labelAnchor = 'end'\n            } else {\n                labelX = symbolSize + symbolSpacing\n                labelAnchor = 'start'\n            }\n            break\n\n        case 'right-to-left':\n            symbolX = width - symbolSize\n            symbolY = (height - symbolSize) / 2\n\n            labelY = height / 2\n            labelAlignment = 'central'\n            if (justify) {\n                labelX = 0\n                labelAnchor = 'start'\n            } else {\n                labelX = width - symbolSize - symbolSpacing\n                labelAnchor = 'end'\n            }\n            break\n\n        case 'top-to-bottom':\n            symbolX = (width - symbolSize) / 2\n            symbolY = 0\n\n            labelX = width / 2\n\n            labelAnchor = 'middle'\n            if (justify) {\n                labelY = height\n                labelAlignment = 'alphabetic'\n            } else {\n                labelY = symbolSize + symbolSpacing\n                labelAlignment = 'text-before-edge'\n            }\n            break\n\n        case 'bottom-to-top':\n            symbolX = (width - symbolSize) / 2\n            symbolY = height - symbolSize\n\n            labelX = width / 2\n            labelAnchor = 'middle'\n            if (justify) {\n                labelY = 0\n                labelAlignment = 'text-before-edge'\n            } else {\n                labelY = height - symbolSize - symbolSpacing\n                labelAlignment = 'alphabetic'\n            }\n            break\n    }\n\n    return {\n        symbolX,\n        symbolY,\n        labelX,\n        labelY,\n        labelAnchor,\n        labelAlignment,\n    }\n}\n\nexport const computeContinuousColorsLegend = ({\n    scale,\n    ticks,\n    length = continuousColorsLegendDefaults.length,\n    thickness = continuousColorsLegendDefaults.thickness,\n    direction = continuousColorsLegendDefaults.direction,\n    tickPosition = continuousColorsLegendDefaults.tickPosition,\n    tickSize = continuousColorsLegendDefaults.tickSize,\n    tickSpacing = continuousColorsLegendDefaults.tickSpacing,\n    tickOverlap = continuousColorsLegendDefaults.tickOverlap,\n    tickFormat = continuousColorsLegendDefaults.tickFormat,\n    title,\n    titleAlign = continuousColorsLegendDefaults.titleAlign,\n    titleOffset = continuousColorsLegendDefaults.titleOffset,\n}: ContinuousColorsLegendProps) => {\n    // left to right for `row`, bottom to top for `column`\n    const domain = direction === 'column' ? [...scale.domain()].reverse() : scale.domain()\n\n    const positionScale = scaleLinear().domain(domain)\n    if (domain.length === 2) {\n        // sequential, quantize\n        positionScale.range([0, length])\n    } else if (domain.length === 3) {\n        // diverging\n        positionScale.range([0, length / 2, length])\n    }\n\n    let values: number[]\n    if ('thresholds' in scale) {\n        // quantize\n        values = [domain[0], ...scale.thresholds(), domain[1]]\n    } else {\n        // sequential, diverging\n        values = Array.isArray(ticks) ? ticks : (scale as any).ticks(ticks)\n    }\n\n    const colorStops = computeContinuousColorScaleColorStops(scale, 32)\n\n    const formatValue = getValueFormatter(tickFormat)\n\n    const computedTicks: {\n        x1: number\n        y1: number\n        x2: number\n        y2: number\n        text: string\n        textX: number\n        textY: number\n        textHorizontalAlign: 'start' | 'middle' | 'end'\n        textVerticalAlign: 'alphabetic' | 'central' | 'hanging'\n    }[] = []\n\n    let width: number\n    let height: number\n\n    const gradientX1 = 0\n    let gradientY1 = 0\n    let gradientX2 = 0\n    const gradientY2 = 0\n\n    let titleX: number\n    let titleY: number\n    let titleRotation: number\n    let titleVerticalAlign: 'alphabetic' | 'hanging'\n\n    if (direction === 'row') {\n        width = length\n        height = thickness\n\n        gradientX2 = 1\n\n        let y1: number\n        let y2: number\n\n        let textY: number\n        const textHorizontalAlign = 'middle'\n        let textVerticalAlign: 'alphabetic' | 'hanging'\n\n        titleRotation = 0\n        if (titleAlign === 'start') {\n            titleX = 0\n        } else if (titleAlign === 'middle') {\n            titleX = length / 2\n        } else {\n            titleX = length\n        }\n\n        if (tickPosition === 'before') {\n            y1 = -tickSize\n            y2 = tickOverlap ? thickness : 0\n\n            textY = -tickSize - tickSpacing\n            textVerticalAlign = 'alphabetic'\n\n            titleY = thickness + titleOffset\n            titleVerticalAlign = 'hanging'\n        } else {\n            y1 = tickOverlap ? 0 : thickness\n            y2 = thickness + tickSize\n\n            textY = y2 + tickSpacing\n            textVerticalAlign = 'hanging'\n\n            titleY = -titleOffset\n            titleVerticalAlign = 'alphabetic'\n        }\n\n        values.forEach(value => {\n            const x = positionScale(value)\n\n            computedTicks.push({\n                x1: x,\n                y1,\n                x2: x,\n                y2,\n                text: formatValue(value),\n                textX: x,\n                textY,\n                textHorizontalAlign,\n                textVerticalAlign,\n            })\n        })\n    } else {\n        width = thickness\n        height = length\n\n        gradientY1 = 1\n\n        let x1: number\n        let x2: number\n\n        let textX: number\n        let textHorizontalAlign: 'start' | 'end'\n        const textVerticalAlign = 'central'\n\n        titleRotation = -90\n        if (titleAlign === 'start') {\n            titleY = length\n        } else if (titleAlign === 'middle') {\n            titleY = length / 2\n        } else {\n            titleY = 0\n        }\n\n        if (tickPosition === 'before') {\n            x1 = -tickSize\n            x2 = tickOverlap ? thickness : 0\n\n            textX = x1 - tickSpacing\n            textHorizontalAlign = 'end'\n\n            titleX = thickness + titleOffset\n            titleVerticalAlign = 'hanging'\n        } else {\n            x1 = tickOverlap ? 0 : thickness\n            x2 = thickness + tickSize\n\n            textX = x2 + tickSpacing\n            textHorizontalAlign = 'start'\n\n            titleX = -titleOffset\n            titleVerticalAlign = 'alphabetic'\n        }\n\n        values.forEach(value => {\n            const y = positionScale(value)\n\n            computedTicks.push({\n                x1,\n                y1: y,\n                x2,\n                y2: y,\n                text: formatValue(value),\n                textX,\n                textY: y,\n                textHorizontalAlign,\n                textVerticalAlign,\n            })\n        })\n    }\n\n    return {\n        width,\n        height,\n        gradientX1,\n        gradientY1,\n        gradientX2,\n        gradientY2,\n        colorStops,\n        ticks: computedTicks,\n        titleText: title,\n        titleX,\n        titleY,\n        titleRotation,\n        titleHorizontalAlign: titleAlign,\n        titleVerticalAlign,\n    }\n}\n","import { Fragment } from 'react'\nimport { useTheme } from '@nivo/theming'\nimport { Text } from '@nivo/text'\nimport { computeContinuousColorsLegend } from '../compute'\nimport { ContinuousColorsLegendProps } from '../types'\nimport { continuousColorsLegendDefaults } from '../defaults'\n\nexport const ContinuousColorsLegendSvg = ({\n    scale,\n    ticks,\n    length = continuousColorsLegendDefaults.length,\n    thickness = continuousColorsLegendDefaults.thickness,\n    direction = continuousColorsLegendDefaults.direction,\n    tickPosition = continuousColorsLegendDefaults.tickPosition,\n    tickSize = continuousColorsLegendDefaults.tickSize,\n    tickSpacing = continuousColorsLegendDefaults.tickSpacing,\n    tickOverlap = continuousColorsLegendDefaults.tickOverlap,\n    tickFormat = continuousColorsLegendDefaults.tickFormat,\n    title,\n    titleAlign = continuousColorsLegendDefaults.titleAlign,\n    titleOffset = continuousColorsLegendDefaults.titleOffset,\n}: ContinuousColorsLegendProps) => {\n    const {\n        width,\n        height,\n        gradientX1,\n        gradientY1,\n        gradientX2,\n        gradientY2,\n        ticks: computedTicks,\n        colorStops,\n        titleText,\n        titleX,\n        titleY,\n        titleRotation,\n        titleVerticalAlign,\n        titleHorizontalAlign,\n    } = computeContinuousColorsLegend({\n        scale,\n        ticks,\n        length,\n        thickness,\n        direction,\n        tickPosition,\n        tickSize,\n        tickSpacing,\n        tickOverlap,\n        tickFormat,\n        title,\n        titleAlign,\n        titleOffset,\n    })\n\n    const theme = useTheme()\n\n    // remove commas, parentheses and spaces from stop color, this will then create a unique id depending on which color scheme you use.\n    // so if you have two or more heatmaps on a single page with differing color schemes the legend will be correct for each.\n    const id = `ContinuousColorsLegendSvgGradient.${direction}.${colorStops\n        .map(stop => `${stop.stopColor.replace(/[(),\\s]/g, '')}.${stop.offset}`)\n        .join('_')}`\n\n    return (\n        <g>\n            <defs>\n                <linearGradient\n                    id={id}\n                    x1={gradientX1}\n                    y1={gradientY1}\n                    x2={gradientX2}\n                    y2={gradientY2}\n                >\n                    {colorStops.map(colorStop => (\n                        <stop\n                            key={colorStop.key}\n                            offset={colorStop.offset}\n                            stopColor={colorStop.stopColor}\n                        />\n                    ))}\n                </linearGradient>\n            </defs>\n            {titleText && (\n                <text\n                    transform={`translate(${titleX}, ${titleY}) rotate(${titleRotation})`}\n                    textAnchor={titleHorizontalAlign}\n                    dominantBaseline={titleVerticalAlign}\n                    style={theme.legends.title.text}\n                >\n                    {titleText}\n                </text>\n            )}\n            <rect width={width} height={height} fill={`url(#${id}`} />\n            {computedTicks.map((tick, index) => (\n                <Fragment key={index}>\n                    <line\n                        x1={tick.x1}\n                        y1={tick.y1}\n                        x2={tick.x2}\n                        y2={tick.y2}\n                        style={theme.legends.ticks.line}\n                    />\n                    <Text\n                        x={tick.textX}\n                        y={tick.textY}\n                        textAnchor={tick.textHorizontalAlign}\n                        dominantBaseline={tick.textVerticalAlign}\n                        style={theme.legends.ticks.text}\n                    >\n                        {tick.text}\n                    </Text>\n                </Fragment>\n            ))}\n        </g>\n    )\n}\n","import { AnchoredContinuousColorsLegendProps } from '../types'\nimport { computePositionFromAnchor } from '../compute'\nimport { continuousColorsLegendDefaults } from '../defaults'\nimport { ContinuousColorsLegendSvg } from './ContinuousColorsLegendSvg'\n\nexport const AnchoredContinuousColorsLegendSvg = ({\n    containerWidth,\n    containerHeight,\n    anchor,\n    translateX = 0,\n    translateY = 0,\n    length = continuousColorsLegendDefaults.length,\n    thickness = continuousColorsLegendDefaults.thickness,\n    direction = continuousColorsLegendDefaults.direction,\n    ...legendProps\n}: AnchoredContinuousColorsLegendProps) => {\n    let width: number\n    let height: number\n    if (direction === 'row') {\n        width = length\n        height = thickness\n    } else {\n        width = thickness\n        height = length\n    }\n\n    const { x, y } = computePositionFromAnchor({\n        anchor,\n        translateX,\n        translateY,\n        containerWidth,\n        containerHeight,\n        width,\n        height,\n    })\n\n    return (\n        <g transform={`translate(${x}, ${y})`}>\n            <ContinuousColorsLegendSvg\n                length={length}\n                thickness={thickness}\n                direction={direction}\n                {...legendProps}\n            />\n        </g>\n    )\n}\n","import { useState, useCallback } from 'react'\nimport * as React from 'react'\nimport { useTheme } from '@nivo/theming'\nimport { Text } from '@nivo/text'\nimport { LegendSvgItemProps } from '../types'\nimport { legendDefaults } from '../defaults'\nimport { computeItemLayout } from '../compute'\nimport { SymbolCircle, SymbolDiamond, SymbolSquare, SymbolTriangle } from './symbols'\n\ntype Style = Partial<{\n    itemBackground: string\n    itemOpacity: number\n    itemTextColor: string\n    symbolBorderColor: string\n    symbolBorderWidth: number\n    symbolSize: number\n}>\n\nconst symbolByShape = {\n    circle: SymbolCircle,\n    diamond: SymbolDiamond,\n    square: SymbolSquare,\n    triangle: SymbolTriangle,\n}\n\nexport const LegendSvgItem = ({\n    x,\n    y,\n    width,\n    height,\n    data,\n    direction = legendDefaults.itemDirection,\n    justify = legendDefaults.justify,\n    textColor,\n    background = 'transparent',\n    opacity = 1,\n    symbolShape = legendDefaults.symbolShape,\n    symbolSize = legendDefaults.symbolSize,\n    symbolSpacing = legendDefaults.symbolSpacing,\n    symbolBorderWidth = 0,\n    symbolBorderColor = 'transparent',\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n    toggleSerie,\n    effects,\n}: LegendSvgItemProps) => {\n    const [style, setStyle] = useState<Style>({})\n    const theme = useTheme()\n\n    const handleMouseEnter = useCallback(\n        (event: React.MouseEvent<SVGRectElement>) => {\n            if (effects) {\n                const applyEffects = effects.filter(({ on }) => on === 'hover')\n                const style = applyEffects.reduce(\n                    (acc, effect) => ({\n                        ...acc,\n                        ...effect.style,\n                    }),\n                    {}\n                )\n                setStyle(style)\n            }\n\n            onMouseEnter?.(data, event)\n        },\n        [onMouseEnter, data, effects]\n    )\n    const handleMouseLeave = useCallback(\n        (event: React.MouseEvent<SVGRectElement>) => {\n            if (effects) {\n                const applyEffects = effects.filter(({ on }) => on !== 'hover')\n                const style = applyEffects.reduce(\n                    (acc, effect) => ({\n                        ...acc,\n                        ...effect.style,\n                    }),\n                    {}\n                )\n                setStyle(style)\n            }\n\n            onMouseLeave?.(data, event)\n        },\n        [onMouseLeave, data, effects]\n    )\n\n    const { symbolX, symbolY, labelX, labelY, labelAnchor, labelAlignment } = computeItemLayout({\n        direction,\n        justify,\n        symbolSize: style.symbolSize ?? symbolSize,\n        symbolSpacing,\n        width,\n        height,\n    })\n\n    const isInteractive = [onClick, onMouseEnter, onMouseLeave, toggleSerie].some(\n        handler => handler !== undefined\n    )\n\n    const SymbolShape = typeof symbolShape === 'function' ? symbolShape : symbolByShape[symbolShape]\n\n    return (\n        <g\n            transform={`translate(${x},${y})`}\n            style={{\n                opacity: style.itemOpacity ?? opacity,\n            }}\n        >\n            <rect\n                width={width}\n                height={height}\n                fill={style.itemBackground ?? background}\n                style={{\n                    cursor: isInteractive ? 'pointer' : 'auto',\n                }}\n                onClick={event => {\n                    onClick?.(data, event)\n                    toggleSerie?.(data.id)\n                }}\n                onMouseEnter={handleMouseEnter}\n                onMouseLeave={handleMouseLeave}\n            />\n            {React.createElement(SymbolShape, {\n                id: data.id,\n                x: symbolX,\n                y: symbolY,\n                size: style.symbolSize ?? symbolSize,\n                fill: data.fill ?? data.color ?? 'black',\n                borderWidth: style.symbolBorderWidth ?? symbolBorderWidth,\n                borderColor: style.symbolBorderColor ?? symbolBorderColor,\n                ...(data.hidden ? theme.legends.hidden.symbol : undefined),\n            })}\n            <Text\n                textAnchor={labelAnchor}\n                style={{\n                    ...theme.legends.text,\n                    fill: style.itemTextColor ?? textColor ?? theme.legends.text.fill ?? 'black',\n                    dominantBaseline: labelAlignment,\n                    pointerEvents: 'none',\n                    userSelect: 'none',\n                    ...(data.hidden ? theme.legends.hidden.text : undefined),\n                }}\n                x={labelX}\n                y={labelY}\n            >\n                {data.label}\n            </Text>\n        </g>\n    )\n}\n","import { LegendSvgItem } from './LegendSvgItem'\nimport { LegendSvgProps } from '../types'\nimport { legendDefaults } from '../defaults'\nimport { computeDimensions } from '../compute'\n\nexport const LegendSvg = ({\n    data,\n    x,\n    y,\n    direction,\n    padding: _padding = legendDefaults.padding,\n    justify,\n    effects,\n    itemWidth,\n    itemHeight,\n    itemDirection = legendDefaults.itemDirection,\n    itemsSpacing = legendDefaults.itemsSpacing,\n    itemTextColor,\n    itemBackground = 'transparent',\n    itemOpacity = 1,\n    symbolShape,\n    symbolSize,\n    symbolSpacing,\n    symbolBorderWidth,\n    symbolBorderColor,\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n    toggleSerie,\n}: LegendSvgProps) => {\n    const { padding } = computeDimensions({\n        itemCount: data.length,\n        itemWidth,\n        itemHeight,\n        itemsSpacing,\n        direction,\n        padding: _padding,\n    })\n\n    const xStep = direction === 'row' ? itemWidth + itemsSpacing : 0\n    const yStep = direction === 'column' ? itemHeight + itemsSpacing : 0\n\n    return (\n        <g transform={`translate(${x},${y})`}>\n            {data.map((data, i) => (\n                <LegendSvgItem\n                    key={i}\n                    data={data}\n                    x={i * xStep + padding.left}\n                    y={i * yStep + padding.top}\n                    width={itemWidth}\n                    height={itemHeight}\n                    direction={itemDirection}\n                    justify={justify}\n                    effects={effects}\n                    textColor={itemTextColor}\n                    background={itemBackground}\n                    opacity={itemOpacity}\n                    symbolShape={symbolShape}\n                    symbolSize={symbolSize}\n                    symbolSpacing={symbolSpacing}\n                    symbolBorderWidth={symbolBorderWidth}\n                    symbolBorderColor={symbolBorderColor}\n                    onClick={onClick}\n                    onMouseEnter={onMouseEnter}\n                    onMouseLeave={onMouseLeave}\n                    toggleSerie={toggleSerie}\n                />\n            ))}\n        </g>\n    )\n}\n","import { LegendSvg } from './LegendSvg'\nimport { BoxLegendSvgProps } from '../types'\nimport { legendDefaults } from '../defaults'\nimport { computeDimensions, computePositionFromAnchor } from '../compute'\n\nexport const BoxLegendSvg = ({\n    data,\n    containerWidth,\n    containerHeight,\n    translateX = legendDefaults.translateX,\n    translateY = legendDefaults.translateY,\n    anchor,\n    direction,\n    padding = legendDefaults.padding,\n    justify,\n    itemsSpacing = legendDefaults.itemsSpacing,\n    itemWidth,\n    itemHeight,\n    itemDirection,\n    itemTextColor,\n    itemBackground,\n    itemOpacity,\n    symbolShape,\n    symbolSize,\n    symbolSpacing,\n    symbolBorderWidth,\n    symbolBorderColor,\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n    toggleSerie,\n    effects,\n}: BoxLegendSvgProps) => {\n    const { width, height } = computeDimensions({\n        itemCount: data.length,\n        itemsSpacing,\n        itemWidth,\n        itemHeight,\n        direction,\n        padding,\n    })\n\n    const { x, y } = computePositionFromAnchor({\n        anchor,\n        translateX,\n        translateY,\n        containerWidth,\n        containerHeight,\n        width,\n        height,\n    })\n\n    return (\n        <LegendSvg\n            data={data}\n            x={x}\n            y={y}\n            direction={direction}\n            padding={padding}\n            justify={justify}\n            effects={effects}\n            itemsSpacing={itemsSpacing}\n            itemWidth={itemWidth}\n            itemHeight={itemHeight}\n            itemDirection={itemDirection}\n            itemTextColor={itemTextColor}\n            itemBackground={itemBackground}\n            itemOpacity={itemOpacity}\n            symbolShape={symbolShape}\n            symbolSize={symbolSize}\n            symbolSpacing={symbolSpacing}\n            symbolBorderWidth={symbolBorderWidth}\n            symbolBorderColor={symbolBorderColor}\n            onClick={onClick}\n            onMouseEnter={onMouseEnter}\n            onMouseLeave={onMouseLeave}\n            toggleSerie={typeof toggleSerie === 'boolean' ? undefined : toggleSerie}\n        />\n    )\n}\n","import { degreesToRadians } from '@nivo/core'\nimport { Theme } from '@nivo/theming'\nimport { setCanvasFont, drawCanvasText } from '@nivo/text'\nimport {\n    computeDimensions,\n    computePositionFromAnchor,\n    computeItemLayout,\n    computeContinuousColorsLegend,\n} from './compute'\nimport { AnchoredContinuousColorsLegendProps, LegendCanvasProps } from './types'\nimport { continuousColorsLegendDefaults } from './defaults'\n\nconst textAlignMapping = {\n    start: 'left',\n    middle: 'center',\n    end: 'right',\n} as const\n\nexport const renderLegendToCanvas = (\n    ctx: CanvasRenderingContext2D,\n    {\n        data,\n\n        containerWidth,\n        containerHeight,\n        translateX = 0,\n        translateY = 0,\n        anchor,\n        direction,\n        padding: _padding = 0,\n        justify = false,\n\n        // items\n        itemsSpacing = 0,\n        itemWidth,\n        itemHeight,\n        itemDirection = 'left-to-right',\n        itemTextColor,\n\n        // symbol\n        symbolSize = 16,\n        symbolSpacing = 8,\n        // @todo add support for shapes\n        // symbolShape = LegendSvgItem.defaultProps.symbolShape,\n\n        theme,\n    }: LegendCanvasProps\n) => {\n    const { width, height, padding } = computeDimensions({\n        itemCount: data.length,\n        itemWidth,\n        itemHeight,\n        itemsSpacing,\n        direction,\n        padding: _padding,\n    })\n\n    const { x, y } = computePositionFromAnchor({\n        anchor,\n        translateX,\n        translateY,\n        containerWidth,\n        containerHeight,\n        width,\n        height,\n    })\n\n    const xStep = direction === 'row' ? itemWidth + itemsSpacing : 0\n    const yStep = direction === 'column' ? itemHeight + itemsSpacing : 0\n\n    ctx.save()\n    ctx.translate(x, y)\n\n    setCanvasFont(ctx, theme.legends.text)\n\n    data.forEach((d, i) => {\n        const itemX = i * xStep + padding.left\n        const itemY = i * yStep + padding.top\n\n        const { symbolX, symbolY, labelX, labelY, labelAnchor, labelAlignment } = computeItemLayout(\n            {\n                direction: itemDirection,\n                justify,\n                symbolSize,\n                symbolSpacing,\n                width: itemWidth,\n                height: itemHeight,\n            }\n        )\n\n        ctx.fillStyle = d.color ?? 'black'\n        ctx.fillRect(itemX + symbolX, itemY + symbolY, symbolSize, symbolSize)\n\n        ctx.textAlign = textAlignMapping[labelAnchor]\n        if (labelAlignment === 'central') {\n            ctx.textBaseline = 'middle'\n        }\n\n        drawCanvasText(\n            ctx,\n            {\n                ...theme.legends.text,\n                fill: itemTextColor ?? theme.legends.text.fill,\n            },\n            String(d.label),\n            itemX + labelX,\n            itemY + labelY\n        )\n    })\n\n    ctx.restore()\n}\n\nexport const renderContinuousColorLegendToCanvas = (\n    ctx: CanvasRenderingContext2D,\n    {\n        containerWidth,\n        containerHeight,\n        anchor,\n        translateX = 0,\n        translateY = 0,\n        scale,\n        length = continuousColorsLegendDefaults.length,\n        thickness = continuousColorsLegendDefaults.thickness,\n        direction = continuousColorsLegendDefaults.direction,\n        ticks: _ticks,\n        tickPosition = continuousColorsLegendDefaults.tickPosition,\n        tickSize = continuousColorsLegendDefaults.tickSize,\n        tickSpacing = continuousColorsLegendDefaults.tickSpacing,\n        tickOverlap = continuousColorsLegendDefaults.tickOverlap,\n        tickFormat = continuousColorsLegendDefaults.tickFormat,\n        title,\n        titleAlign = continuousColorsLegendDefaults.titleAlign,\n        titleOffset = continuousColorsLegendDefaults.titleOffset,\n        theme,\n    }: AnchoredContinuousColorsLegendProps & {\n        theme: Theme\n    }\n) => {\n    const {\n        width,\n        height,\n        gradientX1,\n        gradientY1,\n        gradientX2,\n        gradientY2,\n        colorStops,\n        ticks,\n        titleText,\n        titleX,\n        titleY,\n        titleRotation,\n        titleVerticalAlign,\n        titleHorizontalAlign,\n    } = computeContinuousColorsLegend({\n        scale,\n        ticks: _ticks,\n        length,\n        thickness,\n        direction,\n        tickPosition,\n        tickSize,\n        tickSpacing,\n        tickOverlap,\n        tickFormat,\n        title,\n        titleAlign,\n        titleOffset,\n    })\n\n    const { x, y } = computePositionFromAnchor({\n        anchor,\n        translateX,\n        translateY,\n        containerWidth,\n        containerHeight,\n        width,\n        height,\n    })\n\n    const initialStyles = {\n        font: ctx.font,\n        textAlign: ctx.textAlign,\n        textBaseline: ctx.textBaseline,\n    }\n    ctx.save()\n\n    ctx.translate(x, y)\n\n    const gradient = ctx.createLinearGradient(\n        gradientX1 * width,\n        gradientY1 * height,\n        gradientX2 * width,\n        gradientY2 * height\n    )\n    colorStops.forEach(colorStop => {\n        gradient.addColorStop(colorStop.offset, colorStop.stopColor)\n    })\n\n    ctx.fillStyle = gradient\n    ctx.fillRect(0, 0, width, height)\n\n    setCanvasFont(ctx, theme.legends.ticks.text)\n\n    const tickLineWidth = theme.legends.ticks.line.strokeWidth ?? 0\n    const shouldRenderTickLine = typeof tickLineWidth !== 'string' && tickLineWidth > 0\n    ticks.forEach(tick => {\n        if (shouldRenderTickLine) {\n            ctx.lineWidth = tickLineWidth\n            if (theme.axis.ticks.line.stroke) {\n                ctx.strokeStyle = theme.axis.ticks.line.stroke\n            }\n            ctx.lineCap = 'square'\n\n            ctx.beginPath()\n            ctx.moveTo(tick.x1, tick.y1)\n            ctx.lineTo(tick.x2, tick.y2)\n            ctx.stroke()\n        }\n\n        ctx.textAlign = tick.textHorizontalAlign === 'middle' ? 'center' : tick.textHorizontalAlign\n        ctx.textBaseline = tick.textVerticalAlign === 'central' ? 'middle' : tick.textVerticalAlign\n\n        drawCanvasText(ctx, theme.legends.ticks.text, tick.text, tick.textX, tick.textY)\n    })\n\n    if (titleText) {\n        ctx.save()\n        ctx.translate(titleX, titleY)\n        ctx.rotate(degreesToRadians(titleRotation))\n\n        setCanvasFont(ctx, theme.legends.title.text)\n        ctx.textAlign = titleHorizontalAlign === 'middle' ? 'center' : titleHorizontalAlign\n        ctx.textBaseline = titleVerticalAlign\n\n        drawCanvasText(ctx, theme.legends.title.text, titleText)\n\n        ctx.restore()\n    }\n\n    ctx.restore()\n\n    ctx.font = initialStyles.font\n    ctx.textAlign = initialStyles.textAlign\n    ctx.textBaseline = initialStyles.textBaseline\n}\n","import { useMemo } from 'react'\n\ntype Scale = {\n    (value: number): number\n    invertExtent: (value: number) => [number, number]\n    range: () => number[]\n}\n\nexport const useQuantizeColorScaleLegendData = ({\n    scale,\n    domain: overriddenDomain,\n    reverse = false,\n    valueFormat = v => v,\n    separator = ' - ',\n}: {\n    scale: Scale\n    domain?: number[]\n    reverse?: boolean\n    valueFormat?: <T, U>(value: T) => T | U\n    separator?: string\n}) => {\n    return useMemo(() => {\n        const domain = overriddenDomain ?? scale.range()\n\n        const items = domain.map((domainValue, index) => {\n            const [start, end] = scale.invertExtent(domainValue)\n\n            return {\n                id: domainValue,\n                index,\n                extent: [start, end],\n                label: `${valueFormat(start)}${separator}${valueFormat(end)}`,\n                value: scale(start),\n                color: domainValue,\n            }\n        })\n\n        if (reverse) items.reverse()\n\n        return items\n    }, [overriddenDomain, scale, reverse, separator, valueFormat])\n}\n"],"names":["SymbolCircle","_ref","x","y","size","fill","_ref$opacity","opacity","_ref$borderWidth","borderWidth","_ref$borderColor","borderColor","_jsx","r","cx","cy","strokeWidth","stroke","style","pointerEvents","SymbolDiamond","transform","children","d","SymbolSquare","width","height","SymbolTriangle","legendDefaults","translateX","translateY","padding","itemsSpacing","itemDirection","justify","symbolShape","symbolSize","symbolSpacing","continuousColorsLegendDefaults","length","thickness","direction","tickPosition","tickSize","tickSpacing","tickOverlap","tickFormat","value","titleAlign","titleOffset","zeroPadding","top","right","bottom","left","computeDimensions","item","_padding","itemCount","itemWidth","itemHeight","Array","isArray","Error","_extends","horizontalPadding","verticalPadding","spacing","computePositionFromAnchor","_ref2","anchor","containerWidth","containerHeight","computeItemLayout","_ref3","symbolX","symbolY","labelX","labelY","labelAnchor","labelAlignment","computeContinuousColorsLegend","_ref4","values","scale","ticks","_ref4$length","_ref4$thickness","_ref4$direction","_ref4$tickPosition","_ref4$tickSize","_ref4$tickSpacing","_ref4$tickOverlap","_ref4$tickFormat","title","_ref4$titleAlign","_ref4$titleOffset","domain","concat","reverse","positionScale","scaleLinear","range","thresholds","titleX","titleY","titleRotation","titleVerticalAlign","colorStops","computeContinuousColorScaleColorStops","formatValue","getValueFormatter","computedTicks","gradientY1","gradientX2","y1","y2","textY","textVerticalAlign","forEach","push","x1","x2","text","textX","textHorizontalAlign","gradientX1","gradientY2","titleText","titleHorizontalAlign","ContinuousColorsLegendSvg","_ref$length","_ref$thickness","_ref$direction","_ref$tickPosition","_ref$tickSize","_ref$tickSpacing","_ref$tickOverlap","_ref$tickFormat","_ref$titleAlign","_ref$titleOffset","_computeContinuousCol","theme","useTheme","id","map","stop","stopColor","replace","offset","join","_jsxs","colorStop","key","textAnchor","dominantBaseline","legends","tick","index","Fragment","line","Text","AnchoredContinuousColorsLegendSvg","_ref$translateX","_ref$translateY","legendProps","_objectWithoutPropertiesLoose","_excluded","_computePositionFromA","symbolByShape","circle","diamond","square","triangle","LegendSvgItem","_style$symbolSize","_style$itemOpacity","_style$itemBackground","_style$symbolSize2","_data$fill","_style$symbolBorderWi","_style$symbolBorderCo","_ref5","_ref6","_style$itemTextColor","data","_ref$justify","textColor","_ref$background","background","_ref$symbolShape","_ref$symbolSize","_ref$symbolSpacing","_ref$symbolBorderWidt","symbolBorderWidth","_ref$symbolBorderColo","symbolBorderColor","onClick","onMouseEnter","onMouseLeave","toggleSerie","effects","_useState","useState","setStyle","handleMouseEnter","useCallback","event","filter","on","reduce","acc","effect","handleMouseLeave","_computeItemLayout","isInteractive","some","handler","undefined","SymbolShape","itemOpacity","itemBackground","cursor","React","createElement","color","hidden","symbol","itemTextColor","userSelect","label","LegendSvg","_ref$padding","_ref$itemDirection","_ref$itemsSpacing","_ref$itemBackground","_ref$itemOpacity","xStep","yStep","i","BoxLegendSvg","_computeDimensions","textAlignMapping","start","middle","end","renderLegendToCanvas","ctx","save","translate","setCanvasFont","_d$color","itemX","itemY","fillStyle","fillRect","textAlign","textBaseline","drawCanvasText","String","restore","renderContinuousColorLegendToCanvas","_theme$legends$ticks$","_ref2$translateX","_ref2$translateY","_ref2$length","_ref2$thickness","_ref2$direction","_ticks","_ref2$tickPosition","_ref2$tickSize","_ref2$tickSpacing","_ref2$tickOverlap","_ref2$tickFormat","_ref2$titleAlign","_ref2$titleOffset","_computePositionFromA2","initialStyles","font","gradient","createLinearGradient","addColorStop","tickLineWidth","shouldRenderTickLine","lineWidth","axis","strokeStyle","lineCap","beginPath","moveTo","lineTo","rotate","degreesToRadians","useQuantizeColorScaleLegendData","overriddenDomain","_ref$reverse","_ref$valueFormat","valueFormat","v","_ref$separator","separator","useMemo","items","domainValue","_scale$invertExtent","invertExtent","extent"],"mappings":"8bAEaA,EAAe,SAAHC,GAQN,IAPfC,EAACD,EAADC,EACAC,EAACF,EAADE,EACAC,EAAIH,EAAJG,KACAC,EAAIJ,EAAJI,KAAIC,EAAAL,EACJM,QAAAA,OAAU,IAAHD,EAAG,EAACA,EAAAE,EAAAP,EACXQ,YAAAA,OAAc,IAAHD,EAAG,EAACA,EAAAE,EAAAT,EACfU,YAEA,OACIC,EAAA,SAAA,CACIC,EAAGT,EAAO,EACVU,GAAIZ,EAAIE,EAAO,EACfW,GAAIZ,EAAIC,EAAO,EACfC,KAAMA,EACNE,QAASA,EACTS,YAAaP,EACbQ,YAVM,IAAHP,EAAG,cAAaA,EAWnBQ,MAAO,CACHC,cAAe,SAI/B,ECvBaC,EAAgB,SAAHnB,GAQP,IAPfC,EAACD,EAADC,EACAC,EAACF,EAADE,EACAC,EAAIH,EAAJG,KACAC,EAAIJ,EAAJI,KAAIC,EAAAL,EACJM,QAAAA,OAAU,IAAHD,EAAG,EAACA,EAAAE,EAAAP,EACXQ,YAAAA,OAAc,IAAHD,EAAG,EAACA,EAAAE,EAAAT,EACfU,YAEA,OACIC,EAAA,IAAA,CAAGS,UAAwBnB,aAAAA,EAAKC,IAAAA,EAAK,IAAAmB,SACjCV,EAAA,OAAA,CACIW,EACOnB,0BAAAA,EAAO,EACPA,4BAAO,GAAPA,EAAcA,IAAAA,EAAO,4BACrBA,EAAO,EAAC,IAAIA,EAAI,0BACT,GAAPA,EAAU,IAAIA,EAAO,EAAC,0BACtBA,EAAO,EACZ,uBACFC,KAAMA,EACNE,QAASA,EACTS,YAAaP,EACbQ,YAfE,IAAHP,EAAG,cAAaA,EAgBfQ,MAAO,CACHC,cAAe,WAKnC,EC7BaK,EAAe,SAAHvB,GAQN,IAPfC,EAACD,EAADC,EACAC,EAACF,EAADE,EACAC,EAAIH,EAAJG,KACAC,EAAIJ,EAAJI,KAAIC,EAAAL,EACJM,QAAAA,OAAU,IAAHD,EAAG,EAACA,EAAAE,EAAAP,EACXQ,YAAAA,OAAc,IAAHD,EAAG,EAACA,EAAAE,EAAAT,EACfU,YAEA,OACIC,EAAA,OAAA,CACIV,EAAGA,EACHC,EAAGA,EACHE,KAAMA,EACNE,QAASA,EACTS,YAAaP,EACbQ,YATM,IAAHP,EAAG,cAAaA,EAUnBe,MAAOrB,EACPsB,OAAQtB,EACRc,MAAO,CACHC,cAAe,SAI/B,ECxBaQ,EAAiB,SAAH1B,GAQR,IAPfC,EAACD,EAADC,EACAC,EAACF,EAADE,EACAC,EAAIH,EAAJG,KACAC,EAAIJ,EAAJI,KAAIC,EAAAL,EACJM,QAAAA,OAAU,IAAHD,EAAG,EAACA,EAAAE,EAAAP,EACXQ,YAAAA,OAAc,IAAHD,EAAG,EAACA,EAAAE,EAAAT,EACfU,YAEA,OACIC,EAAA,IAAA,CAAGS,UAAwBnB,aAAAA,EAAKC,IAAAA,EAAK,IAAAmB,SACjCV,EAAA,OAAA,CACIW,EACGnB,sBAAAA,EAAO,0BACPA,EAAI,IAAIA,EAAI,wBACVA,EAAI,sBACNA,EAAO,EACZ,mBACEC,KAAMA,EACNE,QAASA,EACTS,YAAaP,EACbQ,YAdE,IAAHP,EAAG,cAAaA,EAefQ,MAAO,CACHC,cAAe,WAKnC,0NC5BO,IAAMS,EAUT,CACAC,WAAY,EACZC,WAAY,EACZC,QAAS,EACTC,aAAc,EACdC,cAAe,gBACfC,SAAS,EACTC,YAAa,SACbC,WAAY,GACZC,cAAe,GAGNC,EAWT,CACAC,OAAQ,IACRC,UAAW,GACXC,UAAW,MACXC,aAAc,QACdC,SAAU,EACVC,YAAa,EACbC,aAAa,EACbC,WAAY,SAACC,GAAa,MAAA,GAAQA,CAAO,EACzCC,WAAY,QACZC,YAAa,GC/BXC,EAAc,CAChBC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GAGGC,EAAoB,SAAHtD,GAQoD,IAlB7DuD,EAWjBf,EAASxC,EAATwC,UACAT,EAAY/B,EAAZ+B,aACSyB,EAAQxD,EAAjB8B,QACA2B,EAASzD,EAATyD,UACAC,EAAS1D,EAAT0D,UACAC,EAAU3D,EAAV2D,WAGA,GAAwB,iBAAbH,IAlBK,iBADCD,EAmB6BC,IAlBjBI,MAAMC,QAAQN,IAAkB,OAATA,GAmBhD,MAAM,IAAIO,MAAM,4DAGpB,IAAMhC,EACkB,iBAAb0B,EACD,CACIN,IAAKM,EACLL,MAAOK,EACPJ,OAAQI,EACRH,KAAMG,GACTO,EAAA,CAAA,EAEMd,EACAO,GAGXQ,EAAoBlC,EAAQuB,KAAOvB,EAAQqB,MAC3Cc,EAAkBnC,EAAQoB,IAAMpB,EAAQsB,OAC1C5B,EAAQkC,EAAYM,EACpBvC,EAASkC,EAAaM,EACpBC,GAAWT,EAAY,GAAK1B,EAOlC,MANkB,QAAdS,EACAhB,EAAQkC,EAAYD,EAAYS,EAAUF,EACrB,WAAdxB,IACPf,EAASkC,EAAaF,EAAYS,EAAUD,GAGzC,CAAEzC,MAAAA,EAAOC,OAAAA,EAAQK,QAAAA,EAC5B,EAEaqC,EAA4B,SAAHC,GAWhC,IAVFC,EAAMD,EAANC,OACAzC,EAAUwC,EAAVxC,WACAC,EAAUuC,EAAVvC,WACAyC,EAAcF,EAAdE,eACAC,EAAeH,EAAfG,gBACA/C,EAAK4C,EAAL5C,MACAC,EAAM2C,EAAN3C,OAKIxB,EAAI2B,EACJ1B,EAAI2B,EAER,OAAQwC,GACJ,IAAK,MACDpE,IAAMqE,EAAiB9C,GAAS,EAChC,MAEJ,IAAK,YACDvB,GAAKqE,EAAiB9C,EACtB,MAEJ,IAAK,QACDvB,GAAKqE,EAAiB9C,EACtBtB,IAAMqE,EAAkB9C,GAAU,EAClC,MAEJ,IAAK,eACDxB,GAAKqE,EAAiB9C,EACtBtB,GAAKqE,EAAkB9C,EACvB,MAEJ,IAAK,SACDxB,IAAMqE,EAAiB9C,GAAS,EAChCtB,GAAKqE,EAAkB9C,EACvB,MAEJ,IAAK,cACDvB,GAAKqE,EAAkB9C,EACvB,MAEJ,IAAK,OACDvB,IAAMqE,EAAkB9C,GAAU,EAClC,MAEJ,IAAK,SACDxB,IAAMqE,EAAiB9C,GAAS,EAChCtB,IAAMqE,EAAkB9C,GAAU,EAI1C,MAAO,CAAExB,EAAAA,EAAGC,EAAAA,EAChB,EAEasE,EAAoB,SAAHC,GAU8C,IACpEC,EACAC,EAEAC,EACAC,EACAC,EACAC,EAhBJvC,EAASiC,EAATjC,UACAP,EAAOwC,EAAPxC,QACAE,EAAUsC,EAAVtC,WACAC,EAAaqC,EAAbrC,cACAZ,EAAKiD,EAALjD,MACAC,EAAMgD,EAANhD,OAaA,OAAQe,GACJ,IAAK,gBACDkC,EAAU,EACVC,GAAWlD,EAASU,GAAc,EAElC0C,EAASpD,EAAS,EAClBsD,EAAiB,UACb9C,GACA2C,EAASpD,EACTsD,EAAc,QAEdF,EAASzC,EAAaC,EACtB0C,EAAc,SAElB,MAEJ,IAAK,gBACDJ,EAAUlD,EAAQW,EAClBwC,GAAWlD,EAASU,GAAc,EAElC0C,EAASpD,EAAS,EAClBsD,EAAiB,UACb9C,GACA2C,EAAS,EACTE,EAAc,UAEdF,EAASpD,EAAQW,EAAaC,EAC9B0C,EAAc,OAElB,MAEJ,IAAK,gBACDJ,GAAWlD,EAAQW,GAAc,EACjCwC,EAAU,EAEVC,EAASpD,EAAQ,EAEjBsD,EAAc,SACV7C,GACA4C,EAASpD,EACTsD,EAAiB,eAEjBF,EAAS1C,EAAaC,EACtB2C,EAAiB,oBAErB,MAEJ,IAAK,gBACDL,GAAWlD,EAAQW,GAAc,EACjCwC,EAAUlD,EAASU,EAEnByC,EAASpD,EAAQ,EACjBsD,EAAc,SACV7C,GACA4C,EAAS,EACTE,EAAiB,qBAEjBF,EAASpD,EAASU,EAAaC,EAC/B2C,EAAiB,cAK7B,MAAO,CACHL,QAAAA,EACAC,QAAAA,EACAC,OAAAA,EACAC,OAAAA,EACAC,YAAAA,EACAC,eAAAA,EAER,EAEaC,EAAgC,SAAHC,GAcP,IAa3BC,EA1BJC,EAAKF,EAALE,MACAC,EAAKH,EAALG,MAAKC,EAAAJ,EACL3C,OAAAA,OAAM,IAAA+C,EAAGhD,EAA+BC,OAAM+C,EAAAC,EAAAL,EAC9C1C,UAAAA,OAAS,IAAA+C,EAAGjD,EAA+BE,UAAS+C,EAAAC,EAAAN,EACpDzC,UAAAA,OAAS,IAAA+C,EAAGlD,EAA+BG,UAAS+C,EAAAC,EAAAP,EACpDxC,aAAAA,OAAY,IAAA+C,EAAGnD,EAA+BI,aAAY+C,EAAAC,EAAAR,EAC1DvC,SAAAA,OAAQ,IAAA+C,EAAGpD,EAA+BK,SAAQ+C,EAAAC,EAAAT,EAClDtC,YAAAA,OAAW,IAAA+C,EAAGrD,EAA+BM,YAAW+C,EAAAC,EAAAV,EACxDrC,YAAAA,OAAW,IAAA+C,EAAGtD,EAA+BO,YAAW+C,EAAAC,EAAAX,EACxDpC,WAAAA,OAAU,IAAA+C,EAAGvD,EAA+BQ,WAAU+C,EACtDC,EAAKZ,EAALY,MAAKC,EAAAb,EACLlC,WAAAA,OAAU,IAAA+C,EAAGzD,EAA+BU,WAAU+C,EAAAC,EAAAd,EACtDjC,YAAAA,OAAW,IAAA+C,EAAG1D,EAA+BW,YAAW+C,EAGlDC,EAAuB,WAAdxD,EAAyB,GAAAyD,OAAId,EAAMa,UAAUE,UAAYf,EAAMa,SAExEG,EAAgBC,IAAcJ,OAAOA,GACrB,IAAlBA,EAAO1D,OAEP6D,EAAcE,MAAM,CAAC,EAAG/D,IACC,IAAlB0D,EAAO1D,QAEd6D,EAAcE,MAAM,CAAC,EAAG/D,EAAS,EAAGA,IAMpC4C,EAFA,eAAgBC,GAENa,EAAO,IAAEC,OAAKd,EAAMmB,aAAY,CAAEN,EAAO,KAG1CpC,MAAMC,QAAQuB,GAASA,EAASD,EAAcC,MAAMA,GAGjE,IAgBI5D,EACAC,EAOA8E,EACAC,EACAC,EACAC,EA3BEC,EAAaC,EAAsCzB,EAAO,IAE1D0B,EAAcC,EAAkBjE,GAEhCkE,EAUA,GAMFC,EAAa,EACbC,EAAa,EAQjB,GAAkB,QAAdzE,EAAqB,CAMrB,IAAI0E,EACAC,EAEAC,EARJ5F,EAAQc,EACRb,EAASc,EAET0E,EAAa,EAMb,IACII,EAEJZ,EAAgB,EAEZF,EADe,UAAfxD,EACS,EACa,WAAfA,EACET,EAAS,EAETA,EAGQ,WAAjBG,GACAyE,GAAMxE,EACNyE,EAAKvE,EAAcL,EAAY,EAE/B6E,GAAS1E,EAAWC,EACpB0E,EAAoB,aAEpBb,EAASjE,EAAYS,EACrB0D,EAAqB,YAErBQ,EAAKtE,EAAc,EAAIL,EAGvB6E,GAFAD,EAAK5E,EAAYG,GAEJC,EACb0E,EAAoB,UAEpBb,GAAUxD,EACV0D,EAAqB,cAGzBxB,EAAOoC,SAAQ,SAAAxE,GACX,IAAM7C,EAAIkG,EAAcrD,GAExBiE,EAAcQ,KAAK,CACfC,GAAIvH,EACJiH,GAAAA,EACAO,GAAIxH,EACJkH,GAAAA,EACAO,KAAMb,EAAY/D,GAClB6E,MAAO1H,EACPmH,MAAAA,EACAQ,oBA3CoB,SA4CpBP,kBAAAA,GAER,GACJ,KAAO,CAMH,IAAIG,EACAC,EAEAE,EACAC,EATJpG,EAAQe,EACRd,EAASa,EAET0E,EAAa,EASbP,GAAiB,GAEbD,EADe,UAAfzD,EACST,EACa,WAAfS,EACET,EAAS,EAET,EAGQ,WAAjBG,GAEAgF,EAAK7E,EAAcL,EAAY,EAE/BoF,GAHAH,GAAM9E,GAGOC,EACbiF,EAAsB,MAEtBrB,EAAShE,EAAYS,EACrB0D,EAAqB,YAErBc,EAAK5E,EAAc,EAAIL,EAGvBoF,GAFAF,EAAKlF,EAAYG,GAEJC,EACbiF,EAAsB,QAEtBrB,GAAUvD,EACV0D,EAAqB,cAGzBxB,EAAOoC,SAAQ,SAAAxE,GACX,IAAM5C,EAAIiG,EAAcrD,GAExBiE,EAAcQ,KAAK,CACfC,GAAAA,EACAN,GAAIhH,EACJuH,GAAAA,EACAN,GAAIjH,EACJwH,KAAMb,EAAY/D,GAClB6E,MAAAA,EACAP,MAAOlH,EACP0H,oBAAAA,EACAP,kBA3CkB,WA6C1B,GACJ,CAEA,MAAO,CACH7F,MAAAA,EACAC,OAAAA,EACAoG,WAjIe,EAkIfb,WAAAA,EACAC,WAAAA,EACAa,WAjIe,EAkIfnB,WAAAA,EACAvB,MAAO2B,EACPgB,UAAWlC,EACXU,OAAAA,EACAC,OAAAA,EACAC,cAAAA,EACAuB,qBAAsBjF,EACtB2D,mBAAAA,EAER,EC/YauB,EAA4B,SAAHjI,GAcH,IAb/BmF,EAAKnF,EAALmF,MACAC,EAAKpF,EAALoF,MAAK8C,EAAAlI,EACLsC,OAAAA,OAAM,IAAA4F,EAAG7F,EAA+BC,OAAM4F,EAAAC,EAAAnI,EAC9CuC,UAAAA,OAAS,IAAA4F,EAAG9F,EAA+BE,UAAS4F,EAAAC,EAAApI,EACpDwC,UAAAA,OAAS,IAAA4F,EAAG/F,EAA+BG,UAAS4F,EAAAC,EAAArI,EACpDyC,aAAAA,OAAY,IAAA4F,EAAGhG,EAA+BI,aAAY4F,EAAAC,EAAAtI,EAC1D0C,SAAAA,OAAQ,IAAA4F,EAAGjG,EAA+BK,SAAQ4F,EAAAC,EAAAvI,EAClD2C,YAAAA,OAAW,IAAA4F,EAAGlG,EAA+BM,YAAW4F,EAAAC,EAAAxI,EACxD4C,YAAAA,OAAW,IAAA4F,EAAGnG,EAA+BO,YAAW4F,EAAAC,EAAAzI,EACxD6C,WAAAA,OAAU,IAAA4F,EAAGpG,EAA+BQ,WAAU4F,EACtD5C,EAAK7F,EAAL6F,MAAK6C,EAAA1I,EACL+C,WAAAA,OAAU,IAAA2F,EAAGrG,EAA+BU,WAAU2F,EAAAC,EAAA3I,EACtDgD,YAEA4F,EAeI5D,EAA8B,CAC9BG,MAAAA,EACAC,MAAAA,EACA9C,OAAAA,EACAC,UAAAA,EACAC,UAAAA,EACAC,aAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,WAAAA,EACAgD,MAAAA,EACA9C,WAAAA,EACAC,iBA9BO,IAAA2F,EAAGtG,EAA+BW,YAAW2F,IAGpDnH,EAAKoH,EAALpH,MACAC,EAAMmH,EAANnH,OACAoG,EAAUe,EAAVf,WACAb,EAAU4B,EAAV5B,WACAC,EAAU2B,EAAV3B,WACAa,EAAUc,EAAVd,WACOf,EAAa6B,EAApBxD,MACAuB,EAAUiC,EAAVjC,WACAoB,EAASa,EAATb,UACAxB,EAAMqC,EAANrC,OACAC,EAAMoC,EAANpC,OACAC,EAAamC,EAAbnC,cACAC,EAAkBkC,EAAlBlC,mBACAsB,EAAoBY,EAApBZ,qBAiBEa,EAAQC,IAIRC,uCAA0CvG,EAAS,IAAImE,EACxDqC,KAAI,SAAAC,GAAI,OAAOA,EAAKC,UAAUC,QAAQ,WAAY,IAAOF,IAAAA,EAAKG,MAAM,IACpEC,KAAK,KAEV,OACIC,EAAA,IAAA,CAAAjI,UACIV,EAAA,OAAA,CAAAU,SACIV,EAAA,iBAAA,CACIoI,GAAIA,EACJvB,GAAIK,EACJX,GAAIF,EACJS,GAAIR,EACJE,GAAIW,EAAWzG,SAEdsF,EAAWqC,KAAI,SAAAO,GAAS,OACrB5I,EAAA,OAAA,CAEIyI,OAAQG,EAAUH,OAClBF,UAAWK,EAAUL,WAFhBK,EAAUC,YAO9BzB,GACGpH,EAAA,OAAA,CACIS,uBAAwBmF,EAAM,KAAKC,EAAM,YAAYC,EAAiB,IACtEgD,WAAYzB,EACZ0B,iBAAkBhD,EAClBzF,MAAO4H,EAAMc,QAAQ9D,MAAM6B,KAAKrG,SAE/B0G,IAGTpH,EAAA,OAAA,CAAMa,MAAOA,EAAOC,OAAQA,EAAQrB,KAAc2I,QAAAA,IACjDhC,EAAciC,KAAI,SAACY,EAAMC,GAAK,OAC3BP,EAACQ,EAAQ,CAAAzI,UACLV,EAAA,OAAA,CACI6G,GAAIoC,EAAKpC,GACTN,GAAI0C,EAAK1C,GACTO,GAAImC,EAAKnC,GACTN,GAAIyC,EAAKzC,GACTlG,MAAO4H,EAAMc,QAAQvE,MAAM2E,OAE/BpJ,EAACqJ,EAAI,CACD/J,EAAG2J,EAAKjC,MACRzH,EAAG0J,EAAKxC,MACRqC,WAAYG,EAAKhC,oBACjB8B,iBAAkBE,EAAKvC,kBACvBpG,MAAO4H,EAAMc,QAAQvE,MAAMsC,KAAKrG,SAE/BuI,EAAKlC,SAfCmC,EAiBJ,MAI3B,6GC5GaI,EAAoC,SAAHjK,GAUH,IACnCwB,EACAC,EAXJ6C,EAActE,EAAdsE,eACAC,EAAevE,EAAfuE,gBACAF,EAAMrE,EAANqE,OAAM6F,EAAAlK,EACN4B,WAAAA,OAAa,IAAHsI,EAAG,EAACA,EAAAC,EAAAnK,EACd6B,WAAAA,OAAa,IAAHsI,EAAG,EAACA,EAAAjC,EAAAlI,EACdsC,OAAAA,OAAM,IAAA4F,EAAG7F,EAA+BC,OAAM4F,EAAAC,EAAAnI,EAC9CuC,UAAAA,OAAS,IAAA4F,EAAG9F,EAA+BE,UAAS4F,EAAAC,EAAApI,EACpDwC,UAAAA,OAAS,IAAA4F,EAAG/F,EAA+BG,UAAS4F,EACjDgC,6IAAWC,CAAArK,EAAAsK,GAII,QAAd9H,GACAhB,EAAQc,EACRb,EAASc,IAETf,EAAQe,EACRd,EAASa,GAGb,IAAAiI,EAAiBpG,EAA0B,CACvCE,OAAAA,EACAzC,WAAAA,EACAC,WAAAA,EACAyC,eAAAA,EACAC,gBAAAA,EACA/C,MAAAA,EACAC,OAAAA,IAPIxB,EAACsK,EAADtK,EAAGC,EAACqK,EAADrK,EAUX,OACIS,EAAA,IAAA,CAAGS,UAAwBnB,aAAAA,EAAMC,KAAAA,EAAK,IAAAmB,SAClCV,EAACsH,EAAyBlE,EAAA,CACtBzB,OAAQA,EACRC,UAAWA,EACXC,UAAWA,GACP4H,KAIpB,EC5BMI,EAAgB,CAClBC,OAAQ1K,EACR2K,QAASvJ,EACTwJ,OAAQpJ,EACRqJ,SAAUlJ,GAGDmJ,EAAgB,SAAH7K,GAqBA,IAAA8K,EAAAC,EAAAC,EAAAC,EAAAhG,EAAAiG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EApBtBtL,EAACD,EAADC,EACAC,EAACF,EAADE,EACAsB,EAAKxB,EAALwB,MACAC,EAAMzB,EAANyB,OACA+J,EAAIxL,EAAJwL,KAAIpD,EAAApI,EACJwC,UAAAA,OAAS,IAAA4F,EAAGzG,EAAeK,cAAaoG,EAAAqD,EAAAzL,EACxCiC,QAAAA,OAAO,IAAAwJ,EAAG9J,EAAeM,QAAOwJ,EAChCC,EAAS1L,EAAT0L,UAASC,EAAA3L,EACT4L,WAAAA,OAAa,IAAHD,EAAG,cAAaA,EAAAtL,EAAAL,EAC1BM,QAAAA,OAAU,IAAHD,EAAG,EAACA,EAAAwL,EAAA7L,EACXkC,YAAAA,OAAW,IAAA2J,EAAGlK,EAAeO,YAAW2J,EAAAC,EAAA9L,EACxCmC,WAAAA,OAAU,IAAA2J,EAAGnK,EAAeQ,WAAU2J,EAAAC,EAAA/L,EACtCoC,cAAAA,OAAa,IAAA2J,EAAGpK,EAAeS,cAAa2J,EAAAC,EAAAhM,EAC5CiM,kBAAAA,OAAoB,IAAHD,EAAG,EAACA,EAAAE,EAAAlM,EACrBmM,kBAAAA,OAAoB,IAAHD,EAAG,cAAaA,EACjCE,EAAOpM,EAAPoM,QACAC,EAAYrM,EAAZqM,aACAC,EAAYtM,EAAZsM,aACAC,EAAWvM,EAAXuM,YACAC,EAAOxM,EAAPwM,QAEAC,EAA0BC,EAAgB,IAAnCzL,EAAKwL,EAAA,GAAEE,GAAQF,EAAA,GAChB5D,GAAQC,IAER8D,GAAmBC,GACrB,SAACC,GACG,GAAIN,EAAS,CACT,IACMvL,EADeuL,EAAQO,QAAO,SAAA3I,GAAK,MAAc,UAAdA,EAAF4I,MACZC,QACvB,SAACC,EAAKC,GAAM,OAAApJ,EACLmJ,CAAAA,EAAAA,EACAC,EAAOlM,MACZ,GACF,CACJ,GACA0L,GAAS1L,EACb,OAEAoL,GAAAA,EAAeb,EAAMsB,EACxB,GACD,CAACT,EAAcb,EAAMgB,IAEnBY,GAAmBP,GACrB,SAACC,GACG,GAAIN,EAAS,CACT,IACMvL,EADeuL,EAAQO,QAAO,SAAAtI,GAAK,MAAc,UAAdA,EAAFuI,MACZC,QACvB,SAACC,EAAKC,GAAM,OAAApJ,EACLmJ,CAAAA,EAAAA,EACAC,EAAOlM,MACZ,GACF,CACJ,GACA0L,GAAS1L,EACb,OAEAqL,GAAAA,EAAed,EAAMsB,EACxB,GACD,CAACR,EAAcd,EAAMgB,IAGzBa,GAA0E7I,EAAkB,CACxFhC,UAAAA,EACAP,QAAAA,EACAE,WAA4B,OAAlB2I,EAAE7J,EAAMkB,YAAU2I,EAAI3I,EAChCC,cAAAA,EACAZ,MAAAA,EACAC,OAAAA,IANIiD,GAAO2I,GAAP3I,QAASC,GAAO0I,GAAP1I,QAASC,GAAMyI,GAANzI,OAAQC,GAAMwI,GAANxI,OAAQC,GAAWuI,GAAXvI,YAAaC,GAAcsI,GAAdtI,eASjDuI,GAAgB,CAAClB,EAASC,EAAcC,EAAcC,GAAagB,MACrE,SAAAC,GAAO,YAAgBC,IAAZD,CAAqB,IAG9BE,GAAqC,mBAAhBxL,EAA6BA,EAAcsI,EAActI,GAEpF,OACIoH,EAAA,IAAA,CACIlI,UAAwBnB,aAAAA,EAAKC,IAAAA,EAAK,IAClCe,MAAO,CACHX,QAA0B,OAAnByK,EAAE9J,EAAM0M,aAAW5C,EAAIzK,GAChCe,UAEFV,EAAA,OAAA,CACIa,MAAOA,EACPC,OAAQA,EACRrB,KAA0B,OAAtB4K,EAAE/J,EAAM2M,gBAAc5C,EAAIY,EAC9B3K,MAAO,CACH4M,OAAQP,GAAgB,UAAY,QAExClB,QAAS,SAAAU,SACLV,GAAAA,EAAUZ,EAAMsB,SAChBP,GAAAA,EAAcf,EAAKzC,GACrB,EACFsD,aAAcO,GACdN,aAAcc,KAEjBU,EAAMC,cAAcL,GAAW3J,EAAA,CAC5BgF,GAAIyC,EAAKzC,GACT9I,EAAGyE,GACHxE,EAAGyE,GACHxE,KAAsB,OAAlB8K,EAAEhK,EAAMkB,YAAU8I,EAAI9I,EAC1B/B,KAA6B6E,OAAzBA,EAAWiG,OAAXA,EAAEM,EAAKpL,MAAI8K,EAAIM,EAAKwC,OAAK/I,EAAI,QACjCzE,YAAoC,OAAzB2K,EAAElK,EAAMgL,mBAAiBd,EAAIc,EACxCvL,YAAoC,OAAzB0K,EAAEnK,EAAMkL,mBAAiBf,EAAIe,GACpCX,EAAKyC,OAASpF,GAAMc,QAAQsE,OAAOC,YAAST,IAEpD9M,EAACqJ,EAAI,CACDP,WAAY3E,GACZ7D,MAAK8C,EAAA,CAAA,EACE8E,GAAMc,QAAQjC,KAAI,CACrBtH,KAAiE,OAA7DiL,EAAkC,OAAlCC,EAAqB,OAArBC,EAAEtK,EAAMkN,eAAa5C,EAAIG,GAASJ,EAAIzC,GAAMc,QAAQjC,KAAKtH,MAAIiL,EAAI,QACrE3B,iBAAkB3E,GAClB7D,cAAe,OACfkN,WAAY,QACR5C,EAAKyC,OAASpF,GAAMc,QAAQsE,OAAOvG,UAAO+F,GAElDxN,EAAG2E,GACH1E,EAAG2E,GAAOxD,SAETmK,EAAK6C,UAItB,ECjJaC,EAAY,SAAHtO,GAwBA,IAvBlBwL,EAAIxL,EAAJwL,KACAvL,EAACD,EAADC,EACAC,EAACF,EAADE,EACAsC,EAASxC,EAATwC,UAAS+L,EAAAvO,EACT8B,QAAS0B,OAAQ,IAAA+K,EAAG5M,EAAeG,QAAOyM,EAC1CtM,EAAOjC,EAAPiC,QACAuK,EAAOxM,EAAPwM,QACA9I,EAAS1D,EAAT0D,UACAC,EAAU3D,EAAV2D,WAAU6K,EAAAxO,EACVgC,cAAAA,OAAa,IAAAwM,EAAG7M,EAAeK,cAAawM,EAAAC,EAAAzO,EAC5C+B,aAAAA,OAAY,IAAA0M,EAAG9M,EAAeI,aAAY0M,EAC1CN,EAAanO,EAAbmO,cAAaO,EAAA1O,EACb4N,eAAAA,OAAiB,IAAHc,EAAG,cAAaA,EAAAC,EAAA3O,EAC9B2N,YAAAA,OAAc,IAAHgB,EAAG,EAACA,EACfzM,EAAWlC,EAAXkC,YACAC,EAAUnC,EAAVmC,WACAC,EAAapC,EAAboC,cACA6J,EAAiBjM,EAAjBiM,kBACAE,EAAiBnM,EAAjBmM,kBACAC,EAAOpM,EAAPoM,QACAC,EAAYrM,EAAZqM,aACAC,EAAYtM,EAAZsM,aACAC,EAAWvM,EAAXuM,YAEQzK,EAAYwB,EAAkB,CAClCG,UAAW+H,EAAKlJ,OAChBoB,UAAAA,EACAC,WAAAA,EACA5B,aAAAA,EACAS,UAAAA,EACAV,QAAS0B,IANL1B,QASF8M,EAAsB,QAAdpM,EAAsBkB,EAAY3B,EAAe,EACzD8M,EAAsB,WAAdrM,EAAyBmB,EAAa5B,EAAe,EAEnE,OACIpB,EAAA,IAAA,CAAGS,UAAwBnB,aAAAA,EAAKC,IAAAA,EAAK,IAAAmB,SAChCmK,EAAKxC,KAAI,SAACwC,EAAMsD,GAAC,OACdnO,EAACkK,EAAa,CAEVW,KAAMA,EACNvL,EAAG6O,EAAIF,EAAQ9M,EAAQuB,KACvBnD,EAAG4O,EAAID,EAAQ/M,EAAQoB,IACvB1B,MAAOkC,EACPjC,OAAQkC,EACRnB,UAAWR,EACXC,QAASA,EACTuK,QAASA,EACTd,UAAWyC,EACXvC,WAAYgC,EACZtN,QAASqN,EACTzL,YAAaA,EACbC,WAAYA,EACZC,cAAeA,EACf6J,kBAAmBA,EACnBE,kBAAmBA,EACnBC,QAASA,EACTC,aAAcA,EACdC,aAAcA,EACdC,YAAaA,GApBRuC,OAyBzB,EClEaC,EAAe,SAAH/O,GA2BA,IA1BrBwL,EAAIxL,EAAJwL,KACAlH,EAActE,EAAdsE,eACAC,EAAevE,EAAfuE,gBAAe2F,EAAAlK,EACf4B,WAAAA,OAAU,IAAAsI,EAAGvI,EAAeC,WAAUsI,EAAAC,EAAAnK,EACtC6B,WAAAA,OAAU,IAAAsI,EAAGxI,EAAeE,WAAUsI,EACtC9F,EAAMrE,EAANqE,OACA7B,EAASxC,EAATwC,UAAS+L,EAAAvO,EACT8B,QAAAA,OAAO,IAAAyM,EAAG5M,EAAeG,QAAOyM,EAChCtM,EAAOjC,EAAPiC,QAAOwM,EAAAzO,EACP+B,aAAAA,OAAY,IAAA0M,EAAG9M,EAAeI,aAAY0M,EAC1C/K,EAAS1D,EAAT0D,UACAC,EAAU3D,EAAV2D,WACA3B,EAAahC,EAAbgC,cACAmM,EAAanO,EAAbmO,cACAP,EAAc5N,EAAd4N,eACAD,EAAW3N,EAAX2N,YACAzL,EAAWlC,EAAXkC,YACAC,EAAUnC,EAAVmC,WACAC,EAAapC,EAAboC,cACA6J,EAAiBjM,EAAjBiM,kBACAE,EAAiBnM,EAAjBmM,kBACAC,EAAOpM,EAAPoM,QACAC,EAAYrM,EAAZqM,aACAC,EAAYtM,EAAZsM,aACAC,EAAWvM,EAAXuM,YACAC,EAAOxM,EAAPwM,QAEAwC,EAA0B1L,EAAkB,CACxCG,UAAW+H,EAAKlJ,OAChBP,aAAAA,EACA2B,UAAAA,EACAC,WAAAA,EACAnB,UAAAA,EACAV,QAAAA,IANIN,EAAKwN,EAALxN,MAAOC,EAAMuN,EAANvN,OASf8I,EAAiBpG,EAA0B,CACvCE,OAAAA,EACAzC,WAAAA,EACAC,WAAAA,EACAyC,eAAAA,EACAC,gBAAAA,EACA/C,MAAAA,EACAC,OAAAA,IAPIxB,EAACsK,EAADtK,EAAGC,EAACqK,EAADrK,EAUX,OACIS,EAAC2N,EAAS,CACN9C,KAAMA,EACNvL,EAAGA,EACHC,EAAGA,EACHsC,UAAWA,EACXV,QAASA,EACTG,QAASA,EACTuK,QAASA,EACTzK,aAAcA,EACd2B,UAAWA,EACXC,WAAYA,EACZ3B,cAAeA,EACfmM,cAAeA,EACfP,eAAgBA,EAChBD,YAAaA,EACbzL,YAAaA,EACbC,WAAYA,EACZC,cAAeA,EACf6J,kBAAmBA,EACnBE,kBAAmBA,EACnBC,QAASA,EACTC,aAAcA,EACdC,aAAcA,EACdC,YAAoC,kBAAhBA,OAA4BkB,EAAYlB,GAGxE,ECnEM0C,EAAmB,CACrBC,MAAO,OACPC,OAAQ,SACRC,IAAK,SAGIC,EAAuB,SAChCC,EAA6BtP,GA4B5B,IA1BGwL,EAAIxL,EAAJwL,KAEAlH,EAActE,EAAdsE,eACAC,EAAevE,EAAfuE,gBAAe2F,EAAAlK,EACf4B,WAAAA,OAAa,IAAHsI,EAAG,EAACA,EAAAC,EAAAnK,EACd6B,WAAAA,OAAa,IAAHsI,EAAG,EAACA,EACd9F,EAAMrE,EAANqE,OACA7B,EAASxC,EAATwC,UAAS+L,EAAAvO,EACT8B,QAAS0B,OAAW,IAAH+K,EAAG,EAACA,EAAA9C,EAAAzL,EACrBiC,QAAAA,OAAU,IAAHwJ,GAAQA,EAAAgD,EAAAzO,EAGf+B,aAAAA,OAAe,IAAH0M,EAAG,EAACA,EAChB/K,EAAS1D,EAAT0D,UACAC,EAAU3D,EAAV2D,WAAU6K,EAAAxO,EACVgC,cAAAA,OAAgB,IAAHwM,EAAG,gBAAeA,EAC/BL,EAAanO,EAAbmO,cAAarC,EAAA9L,EAGbmC,WAAAA,OAAa,IAAH2J,EAAG,GAAEA,EAAAC,EAAA/L,EACfoC,cAAAA,OAAgB,IAAH2J,EAAG,EAACA,EAIjBlD,EAAK7I,EAAL6I,MAGJmG,EAAmC1L,EAAkB,CACjDG,UAAW+H,EAAKlJ,OAChBoB,UAAAA,EACAC,WAAAA,EACA5B,aAAAA,EACAS,UAAAA,EACAV,QAAS0B,IANLhC,EAAKwN,EAALxN,MAAOC,EAAMuN,EAANvN,OAAQK,EAAOkN,EAAPlN,QASvByI,EAAiBpG,EAA0B,CACvCE,OAAAA,EACAzC,WAAAA,EACAC,WAAAA,EACAyC,eAAAA,EACAC,gBAAAA,EACA/C,MAAAA,EACAC,OAAAA,IAPIxB,EAACsK,EAADtK,EAAGC,EAACqK,EAADrK,EAUL0O,EAAsB,QAAdpM,EAAsBkB,EAAY3B,EAAe,EACzD8M,EAAsB,WAAdrM,EAAyBmB,EAAa5B,EAAe,EAEnEuN,EAAIC,OACJD,EAAIE,UAAUvP,EAAGC,GAEjBuP,EAAcH,EAAKzG,EAAMc,QAAQjC,MAEjC8D,EAAKlE,SAAQ,SAAChG,EAAGwN,GAAM,IAAAY,EACbC,EAAQb,EAAIF,EAAQ9M,EAAQuB,KAC5BuM,EAAQd,EAAID,EAAQ/M,EAAQoB,IAElCmK,EAA0E7I,EACtE,CACIhC,UAAWR,EACXC,QAAAA,EACAE,WAAAA,EACAC,cAAAA,EACAZ,MAAOkC,EACPjC,OAAQkC,IAPRe,EAAO2I,EAAP3I,QAASC,EAAO0I,EAAP1I,QAASC,EAAMyI,EAANzI,OAAQC,EAAMwI,EAANxI,OAAQC,EAAWuI,EAAXvI,YAAaC,EAAcsI,EAAdtI,eAWvDuK,EAAIO,UAAmB,OAAVH,EAAGpO,EAAE0M,OAAK0B,EAAI,QAC3BJ,EAAIQ,SAASH,EAAQjL,EAASkL,EAAQjL,EAASxC,EAAYA,GAE3DmN,EAAIS,UAAYd,EAAiBnK,GACV,YAAnBC,IACAuK,EAAIU,aAAe,UAGvBC,EACIX,EAAGvL,KAEI8E,EAAMc,QAAQjC,KAAI,CACrBtH,KAAmB,MAAb+N,EAAAA,EAAiBtF,EAAMc,QAAQjC,KAAKtH,OAE9C8P,OAAO5O,EAAE+M,OACTsB,EAAQ/K,EACRgL,EAAQ/K,EAEhB,IAEAyK,EAAIa,SACR,EAEaC,EAAsC,SAC/Cd,EAA6BlL,GAwB5B,IAAAiM,EAtBG/L,EAAcF,EAAdE,eACAC,EAAeH,EAAfG,gBACAF,EAAMD,EAANC,OAAMiM,EAAAlM,EACNxC,WAAAA,OAAa,IAAH0O,EAAG,EAACA,EAAAC,EAAAnM,EACdvC,WAAAA,OAAa,IAAH0O,EAAG,EAACA,EACdpL,EAAKf,EAALe,MAAKqL,EAAApM,EACL9B,OAAAA,OAAM,IAAAkO,EAAGnO,EAA+BC,OAAMkO,EAAAC,EAAArM,EAC9C7B,UAAAA,OAAS,IAAAkO,EAAGpO,EAA+BE,UAASkO,EAAAC,EAAAtM,EACpD5B,UAAAA,OAAS,IAAAkO,EAAGrO,EAA+BG,UAASkO,EAC7CC,EAAMvM,EAAbgB,MAAKwL,EAAAxM,EACL3B,aAAAA,OAAY,IAAAmO,EAAGvO,EAA+BI,aAAYmO,EAAAC,EAAAzM,EAC1D1B,SAAAA,OAAQ,IAAAmO,EAAGxO,EAA+BK,SAAQmO,EAAAC,EAAA1M,EAClDzB,YAAAA,OAAW,IAAAmO,EAAGzO,EAA+BM,YAAWmO,EAAAC,EAAA3M,EACxDxB,YAAAA,OAAW,IAAAmO,EAAG1O,EAA+BO,YAAWmO,EAAAC,EAAA5M,EACxDvB,WAAAA,OAAU,IAAAmO,EAAG3O,EAA+BQ,WAAUmO,EACtDnL,EAAKzB,EAALyB,MAAKoL,EAAA7M,EACLrB,WAAAA,OAAU,IAAAkO,EAAG5O,EAA+BU,WAAUkO,EAAAC,EAAA9M,EACtDpB,YAAAA,OAAW,IAAAkO,EAAG7O,EAA+BW,YAAWkO,EACxDrI,EAAKzE,EAALyE,MAKJD,EAeI5D,EAA8B,CAC9BG,MAAAA,EACAC,MAAOuL,EACPrO,OAAAA,EACAC,UAAAA,EACAC,UAAAA,EACAC,aAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,WAAAA,EACAgD,MAAAA,EACA9C,WAAAA,EACAC,YAAAA,IA3BAxB,EAAKoH,EAALpH,MACAC,EAAMmH,EAANnH,OACAoG,EAAUe,EAAVf,WACAb,EAAU4B,EAAV5B,WACAC,EAAU2B,EAAV3B,WACAa,EAAUc,EAAVd,WACAnB,EAAUiC,EAAVjC,WACAvB,EAAKwD,EAALxD,MACA2C,EAASa,EAATb,UACAxB,EAAMqC,EAANrC,OACAC,EAAMoC,EAANpC,OACAC,EAAamC,EAAbnC,cACAC,EAAkBkC,EAAlBlC,mBACAsB,GAAoBY,EAApBZ,qBAiBJmJ,GAAiBhN,EAA0B,CACvCE,OAAAA,EACAzC,WAAAA,EACAC,WAAAA,EACAyC,eAAAA,EACAC,gBAAAA,EACA/C,MAAAA,EACAC,OAAAA,IAPIxB,GAACkR,GAADlR,EAAGC,GAACiR,GAADjR,EAULkR,GAAgB,CAClBC,KAAM/B,EAAI+B,KACVtB,UAAWT,EAAIS,UACfC,aAAcV,EAAIU,cAEtBV,EAAIC,OAEJD,EAAIE,UAAUvP,GAAGC,IAEjB,IAAMoR,GAAWhC,EAAIiC,qBACjB1J,EAAarG,EACbwF,EAAavF,EACbwF,EAAazF,EACbsG,EAAarG,GAEjBkF,EAAWW,SAAQ,SAAAiC,GACf+H,GAASE,aAAajI,EAAUH,OAAQG,EAAUL,UACtD,IAEAoG,EAAIO,UAAYyB,GAChBhC,EAAIQ,SAAS,EAAG,EAAGtO,EAAOC,GAE1BgO,EAAcH,EAAKzG,EAAMc,QAAQvE,MAAMsC,MAEvC,IAAM+J,GAAoDpB,OAAvCA,EAAGxH,EAAMc,QAAQvE,MAAM2E,KAAKhJ,aAAWsP,EAAI,EACxDqB,GAAgD,iBAAlBD,IAA8BA,GAAgB,EAClFrM,EAAMkC,SAAQ,SAAAsC,GACN8H,KACApC,EAAIqC,UAAYF,GACZ5I,EAAM+I,KAAKxM,MAAM2E,KAAK/I,SACtBsO,EAAIuC,YAAchJ,EAAM+I,KAAKxM,MAAM2E,KAAK/I,QAE5CsO,EAAIwC,QAAU,SAEdxC,EAAIyC,YACJzC,EAAI0C,OAAOpI,EAAKpC,GAAIoC,EAAK1C,IACzBoI,EAAI2C,OAAOrI,EAAKnC,GAAImC,EAAKzC,IACzBmI,EAAItO,UAGRsO,EAAIS,UAAyC,WAA7BnG,EAAKhC,oBAAmC,SAAWgC,EAAKhC,oBACxE0H,EAAIU,aAA0C,YAA3BpG,EAAKvC,kBAAkC,SAAWuC,EAAKvC,kBAE1E4I,EAAeX,EAAKzG,EAAMc,QAAQvE,MAAMsC,KAAMkC,EAAKlC,KAAMkC,EAAKjC,MAAOiC,EAAKxC,MAC9E,IAEIW,IACAuH,EAAIC,OACJD,EAAIE,UAAUjJ,EAAQC,GACtB8I,EAAI4C,OAAOC,EAAiB1L,IAE5BgJ,EAAcH,EAAKzG,EAAMc,QAAQ9D,MAAM6B,MACvC4H,EAAIS,UAAqC,WAAzB/H,GAAoC,SAAWA,GAC/DsH,EAAIU,aAAetJ,EAEnBuJ,EAAeX,EAAKzG,EAAMc,QAAQ9D,MAAM6B,KAAMK,GAE9CuH,EAAIa,WAGRb,EAAIa,UAEJb,EAAI+B,KAAOD,GAAcC,KACzB/B,EAAIS,UAAYqB,GAAcrB,UAC9BT,EAAIU,aAAeoB,GAAcpB,YACrC,EC7OaoC,EAAkC,SAAHpS,GAYtC,IAXFmF,EAAKnF,EAALmF,MACQkN,EAAgBrS,EAAxBgG,OAAMsM,EAAAtS,EACNkG,QAAAA,OAAU,IAAHoM,GAAQA,EAAAC,EAAAvS,EACfwS,YAAAA,OAAc,IAAHD,EAAG,SAAAE,GAAC,OAAIA,CAAC,EAAAF,EAAAG,EAAA1S,EACpB2S,UAAAA,OAAY,IAAHD,EAAG,MAAKA,EAQjB,OAAOE,GAAQ,WACX,IAEMC,GAFSR,MAAAA,EAAAA,EAAoBlN,EAAMkB,SAEpB2C,KAAI,SAAC8J,EAAajJ,GACnC,IAAAkJ,EAAqB5N,EAAM6N,aAAaF,GAAjC5D,EAAK6D,EAAA,GAAE3D,EAAG2D,EAAA,GAEjB,MAAO,CACHhK,GAAI+J,EACJjJ,MAAAA,EACAoJ,OAAQ,CAAC/D,EAAOE,GAChBf,MAAK,GAAKmE,EAAYtD,GAASyD,EAAYH,EAAYpD,GACvDtM,MAAOqC,EAAM+J,GACblB,MAAO8E,EAEf,IAIA,OAFI5M,GAAS2M,EAAM3M,UAEZ2M,CACX,GAAG,CAACR,EAAkBlN,EAAOe,EAASyM,EAAWH,GACrD"}