{"version":3,"file":"index.cjs","sources":["../node_modules/clsx/dist/clsx.mjs","../src/react/utils/utility-classes.ts","../src/react/utils/responsive-utilities.ts","../src/react/hooks/useResponsiveUtilities.ts","../src/react/hooks/useUtilityClasses.ts","../src/react/box/Box.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/react/button/Button.tsx","../src/react/input/Input.tsx","../src/react/input-otp/InputOTP.tsx","../src/react/textarea/Textarea.tsx","../src/react/select/CustomSelect.tsx","../src/react/select/Select.tsx","../src/react/checkbox/Checkbox.tsx","../src/react/radio/Radio.tsx","../src/react/switch/Switch.tsx","../src/react/toggle/Toggle.tsx","../src/react/hover-card/HoverCard.tsx","../src/react/typography/Typography.tsx","../src/react/command/Command.tsx","../src/react/slider/Slider.tsx","../src/react/avatar/Avatar.tsx","../src/react/badge/Badge.tsx","../src/react/card/Card.tsx","../src/react/alert/Alert.tsx","../src/react/alert/AlertStack.tsx","../src/react/progress/Progress.tsx","../src/react/skeleton/Skeleton.tsx","../src/react/tooltip/Tooltip.tsx","../src/react/popover/Popover.tsx","../src/react/separator/Separator.tsx","../src/react/theme/themes.ts","../src/react/theme/types.ts","../src/react/theme/utils.ts","../src/react/theme/ThemeContext.tsx","../src/react/theme/ThemePicker.tsx","../src/react/table/Table.tsx","../src/react/spinner/Spinner.tsx","../src/react/toast/Toast.tsx","../src/react/dialog/Dialog.tsx","../src/react/drawer/Drawer.tsx","../src/react/dropdown/Dropdown.tsx","../src/react/tabs/Tabs.tsx","../src/react/container/Container.tsx","../src/react/stack/Stack.tsx","../src/react/breadcrumb/Breadcrumb.tsx","../src/react/sidebar/Sidebar.tsx","../src/react/navigation/Navigation.tsx","../src/react/table-of-contents/TableOfContents.tsx","../src/react/accordion/Accordion.tsx","../src/react/combobox/Combobox.tsx","../src/react/bar-chart/BarChart.tsx","../src/react/line-chart/LineChart.tsx","../src/react/pie-chart/PieChart.tsx","../src/react/area-chart/AreaChart.tsx","../src/react/aspect-ratio/AspectRatio.tsx","../src/react/pagination/Pagination.tsx","../src/react/context-menu/ContextMenu.tsx","../src/react/sheet/Sheet.tsx","../src/react/carousel/Carousel.tsx","../src/react/chart/Chart.tsx","../src/react/scroll-area/ScrollArea.tsx","../src/react/wireframe/Wireframe.tsx","../src/react/comic-text/ComicText.tsx","../src/react/glitch-text/GlitchText.tsx","../src/react/stamp-text/StampText.tsx","../src/react/noise-texture/NoiseTexture.tsx","../src/react/halftone-pattern/HalftonePattern.tsx","../src/react/brutal-grid/BrutalGrid.tsx","../src/react/shapes/index.ts","../src/tailwind/button/Button.tsx","../src/tailwind/aspect-ratio/AspectRatio.tsx","../src/tailwind/card/Card.tsx","../src/tailwind/input/Input.tsx","../src/tailwind/badge/Badge.tsx","../src/tailwind/alert/Alert.tsx","../src/tailwind/checkbox/Checkbox.tsx","../src/tailwind/avatar/Avatar.tsx","../src/tailwind/progress/Progress.tsx","../src/tailwind/spinner/Spinner.tsx","../src/tailwind/separator/Separator.tsx","../src/tailwind/skeleton/Skeleton.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Utility class system for Brutalist UI components\n * Provides Tailwind-like utility classes without external dependencies\n */\n\n// Spacing scale mapping to CSS variables\nconst spacingScale: Record<string, string> = {\n  '0': '0',\n  '1': 'var(--brutal-space-1)',\n  '2': 'var(--brutal-space-2)',\n  '3': 'var(--brutal-space-3)',\n  '4': 'var(--brutal-space-4)',\n  '5': 'var(--brutal-space-5)',\n  '6': 'var(--brutal-space-6)',\n  '8': 'var(--brutal-space-8)',\n  '10': 'var(--brutal-space-10)',\n  '12': 'var(--brutal-space-12)',\n  '16': 'var(--brutal-space-16)',\n  '20': 'var(--brutal-space-20)',\n  '24': 'var(--brutal-space-24)',\n}\n\n// Utility class patterns\nconst utilityPatterns = {\n  // Padding\n  'p': (value: string) => ({ padding: spacingScale[value] }),\n  'pt': (value: string) => ({ paddingTop: spacingScale[value] }),\n  'pr': (value: string) => ({ paddingRight: spacingScale[value] }),\n  'pb': (value: string) => ({ paddingBottom: spacingScale[value] }),\n  'pl': (value: string) => ({ paddingLeft: spacingScale[value] }),\n  'px': (value: string) => ({ paddingLeft: spacingScale[value], paddingRight: spacingScale[value] }),\n  'py': (value: string) => ({ paddingTop: spacingScale[value], paddingBottom: spacingScale[value] }),\n  \n  // Margin\n  'm': (value: string) => ({ margin: spacingScale[value] }),\n  'mt': (value: string) => ({ marginTop: spacingScale[value] }),\n  'mr': (value: string) => ({ marginRight: spacingScale[value] }),\n  'mb': (value: string) => ({ marginBottom: spacingScale[value] }),\n  'ml': (value: string) => ({ marginLeft: spacingScale[value] }),\n  'mx': (value: string) => ({ marginLeft: spacingScale[value], marginRight: spacingScale[value] }),\n  'my': (value: string) => ({ marginTop: spacingScale[value], marginBottom: spacingScale[value] }),\n  \n  // Gap\n  'gap': (value: string) => ({ gap: spacingScale[value] }),\n  'gap-x': (value: string) => ({ columnGap: spacingScale[value] }),\n  'gap-y': (value: string) => ({ rowGap: spacingScale[value] }),\n}\n\n// Display utilities\nconst displayUtilities: Record<string, React.CSSProperties> = {\n  'block': { display: 'block' },\n  'inline-block': { display: 'inline-block' },\n  'inline': { display: 'inline' },\n  'flex': { display: 'flex' },\n  'inline-flex': { display: 'inline-flex' },\n  'grid': { display: 'grid' },\n  'hidden': { display: 'none' },\n}\n\n// Flexbox utilities\nconst flexUtilities: Record<string, React.CSSProperties> = {\n  'flex-row': { flexDirection: 'row' },\n  'flex-row-reverse': { flexDirection: 'row-reverse' },\n  'flex-col': { flexDirection: 'column' },\n  'flex-col-reverse': { flexDirection: 'column-reverse' },\n  'flex-wrap': { flexWrap: 'wrap' },\n  'flex-nowrap': { flexWrap: 'nowrap' },\n  'items-start': { alignItems: 'flex-start' },\n  'items-end': { alignItems: 'flex-end' },\n  'items-center': { alignItems: 'center' },\n  'items-baseline': { alignItems: 'baseline' },\n  'items-stretch': { alignItems: 'stretch' },\n  'justify-start': { justifyContent: 'flex-start' },\n  'justify-end': { justifyContent: 'flex-end' },\n  'justify-center': { justifyContent: 'center' },\n  'justify-between': { justifyContent: 'space-between' },\n  'justify-around': { justifyContent: 'space-around' },\n  'justify-evenly': { justifyContent: 'space-evenly' },\n}\n\n// Size utilities\nconst sizeUtilities: Record<string, React.CSSProperties> = {\n  'w-full': { width: '100%' },\n  'w-auto': { width: 'auto' },\n  'h-full': { height: '100%' },\n  'h-auto': { height: 'auto' },\n}\n\n// Position utilities\nconst positionUtilities: Record<string, React.CSSProperties> = {\n  'relative': { position: 'relative' },\n  'absolute': { position: 'absolute' },\n  'fixed': { position: 'fixed' },\n  'sticky': { position: 'sticky' },\n  'static': { position: 'static' },\n}\n\n// Overflow utilities\nconst overflowUtilities: Record<string, React.CSSProperties> = {\n  'overflow-auto': { overflow: 'auto' },\n  'overflow-hidden': { overflow: 'hidden' },\n  'overflow-visible': { overflow: 'visible' },\n  'overflow-scroll': { overflow: 'scroll' },\n  'overflow-x-auto': { overflowX: 'auto' },\n  'overflow-y-auto': { overflowY: 'auto' },\n}\n\n// Typography utilities\nconst typographyUtilities: Record<string, React.CSSProperties> = {\n  // Font sizes\n  'text-xs': { fontSize: '0.75rem', lineHeight: '1rem' },\n  'text-sm': { fontSize: '0.875rem', lineHeight: '1.25rem' },\n  'text-base': { fontSize: '1rem', lineHeight: '1.5rem' },\n  'text-lg': { fontSize: '1.125rem', lineHeight: '1.75rem' },\n  'text-xl': { fontSize: '1.25rem', lineHeight: '1.75rem' },\n  'text-2xl': { fontSize: '1.5rem', lineHeight: '2rem' },\n  'text-3xl': { fontSize: '1.875rem', lineHeight: '2.25rem' },\n  'text-4xl': { fontSize: '2.25rem', lineHeight: '2.5rem' },\n  'text-5xl': { fontSize: '3rem', lineHeight: '1' },\n  'text-6xl': { fontSize: '3.75rem', lineHeight: '1' },\n  \n  // Text alignment\n  'text-left': { textAlign: 'left' },\n  'text-center': { textAlign: 'center' },\n  'text-right': { textAlign: 'right' },\n  'text-justify': { textAlign: 'justify' },\n  \n  // Font weight\n  'font-normal': { fontWeight: 'var(--brutal-font-regular)' },\n  'font-medium': { fontWeight: 'var(--brutal-font-medium)' },\n  'font-bold': { fontWeight: 'var(--brutal-font-bold)' },\n  'font-black': { fontWeight: 'var(--brutal-font-black)' },\n  \n  // Text transform\n  'uppercase': { textTransform: 'uppercase' },\n  'lowercase': { textTransform: 'lowercase' },\n  'capitalize': { textTransform: 'capitalize' },\n  'normal-case': { textTransform: 'none' },\n  \n  // Line height\n  'leading-none': { lineHeight: '1' },\n  'leading-tight': { lineHeight: '1.25' },\n  'leading-snug': { lineHeight: '1.375' },\n  'leading-normal': { lineHeight: '1.5' },\n  'leading-relaxed': { lineHeight: '1.625' },\n  'leading-loose': { lineHeight: '2' },\n  \n  // Letter spacing\n  'tracking-tighter': { letterSpacing: '-0.05em' },\n  'tracking-tight': { letterSpacing: '-0.025em' },\n  'tracking-normal': { letterSpacing: '0' },\n  'tracking-wide': { letterSpacing: '0.025em' },\n  'tracking-wider': { letterSpacing: '0.05em' },\n  'tracking-widest': { letterSpacing: '0.1em' },\n}\n\n// Color utilities\nconst colorUtilities: Record<string, React.CSSProperties> = {\n  // Text colors\n  'text-black': { color: 'var(--brutal-black)' },\n  'text-white': { color: 'var(--brutal-white)' },\n  'text-accent': { color: 'var(--brutal-accent)' },\n  'text-gray-50': { color: '#f9fafb' },\n  'text-gray-100': { color: '#f3f4f6' },\n  'text-gray-200': { color: '#e5e7eb' },\n  'text-gray-300': { color: '#d1d5db' },\n  'text-gray-400': { color: '#9ca3af' },\n  'text-gray-500': { color: '#6b7280' },\n  'text-gray-600': { color: '#4b5563' },\n  'text-gray-700': { color: '#374151' },\n  'text-gray-800': { color: '#1f2937' },\n  'text-gray-900': { color: '#111827' },\n  'text-red': { color: '#ef4444' },\n  'text-blue': { color: '#3b82f6' },\n  'text-green': { color: '#10b981' },\n  'text-yellow': { color: '#f59e0b' },\n  'text-purple': { color: '#8b5cf6' },\n  'text-pink': { color: '#ec4899' },\n  \n  // Background colors\n  'bg-black': { backgroundColor: 'var(--brutal-black)' },\n  'bg-white': { backgroundColor: 'var(--brutal-white)' },\n  'bg-accent': { backgroundColor: 'var(--brutal-accent)' },\n  'bg-gray-50': { backgroundColor: '#f9fafb' },\n  'bg-gray-100': { backgroundColor: '#f3f4f6' },\n  'bg-gray-200': { backgroundColor: '#e5e7eb' },\n  'bg-gray-300': { backgroundColor: '#d1d5db' },\n  'bg-gray-400': { backgroundColor: '#9ca3af' },\n  'bg-gray-500': { backgroundColor: '#6b7280' },\n  'bg-gray-600': { backgroundColor: '#4b5563' },\n  'bg-gray-700': { backgroundColor: '#374151' },\n  'bg-gray-800': { backgroundColor: '#1f2937' },\n  'bg-gray-900': { backgroundColor: '#111827' },\n  'bg-red': { backgroundColor: '#ef4444' },\n  'bg-blue': { backgroundColor: '#3b82f6' },\n  'bg-green': { backgroundColor: '#10b981' },\n  'bg-yellow': { backgroundColor: '#f59e0b' },\n  'bg-purple': { backgroundColor: '#8b5cf6' },\n  'bg-pink': { backgroundColor: '#ec4899' },\n}\n\n// Border utilities\nconst borderUtilities: Record<string, React.CSSProperties> = {\n  'border': { border: 'var(--brutal-border-width) solid var(--brutal-black)' },\n  'border-0': { borderWidth: '0' },\n  'border-2': { borderWidth: '2px', borderStyle: 'solid' },\n  'border-4': { borderWidth: '4px', borderStyle: 'solid' },\n  'border-8': { borderWidth: '8px', borderStyle: 'solid' },\n  'border-t': { borderTop: 'var(--brutal-border-width) solid var(--brutal-black)' },\n  'border-r': { borderRight: 'var(--brutal-border-width) solid var(--brutal-black)' },\n  'border-b': { borderBottom: 'var(--brutal-border-width) solid var(--brutal-black)' },\n  'border-l': { borderLeft: 'var(--brutal-border-width) solid var(--brutal-black)' },\n  'border-black': { borderColor: 'var(--brutal-black)' },\n  'border-white': { borderColor: 'var(--brutal-white)' },\n  'border-accent': { borderColor: 'var(--brutal-accent)' },\n  'border-gray-50': { borderColor: '#f9fafb' },\n  'border-gray-100': { borderColor: '#f3f4f6' },\n  'border-gray-200': { borderColor: '#e5e7eb' },\n  'border-gray-300': { borderColor: '#d1d5db' },\n  'border-gray-400': { borderColor: '#9ca3af' },\n  'border-gray-500': { borderColor: '#6b7280' },\n  'border-gray-600': { borderColor: '#4b5563' },\n  'border-gray-700': { borderColor: '#374151' },\n  'border-gray-800': { borderColor: '#1f2937' },\n  'border-gray-900': { borderColor: '#111827' },\n  \n  // Border radius\n  'rounded-none': { borderRadius: '0' },\n  'rounded-sm': { borderRadius: '0.125rem' },\n  'rounded': { borderRadius: '0.25rem' },\n  'rounded-md': { borderRadius: '0.375rem' },\n  'rounded-lg': { borderRadius: '0.5rem' },\n  'rounded-xl': { borderRadius: '0.75rem' },\n  'rounded-2xl': { borderRadius: '1rem' },\n  'rounded-full': { borderRadius: '9999px' },\n}\n\n// Shadow utilities\nconst shadowUtilities: Record<string, React.CSSProperties> = {\n  'shadow-none': { boxShadow: 'none' },\n  'shadow-brutal': { boxShadow: 'var(--brutal-shadow)' },\n  'shadow-brutal-sm': { boxShadow: '2px 2px 0 var(--brutal-black)' },\n  'shadow-brutal-md': { boxShadow: '4px 4px 0 var(--brutal-black)' },\n  'shadow-brutal-lg': { boxShadow: '6px 6px 0 var(--brutal-black)' },\n  'shadow-brutal-xl': { boxShadow: '8px 8px 0 var(--brutal-black)' },\n}\n\n// Opacity utilities\nconst opacityUtilities: Record<string, React.CSSProperties> = {\n  'opacity-0': { opacity: '0' },\n  'opacity-5': { opacity: '0.05' },\n  'opacity-10': { opacity: '0.1' },\n  'opacity-20': { opacity: '0.2' },\n  'opacity-25': { opacity: '0.25' },\n  'opacity-30': { opacity: '0.3' },\n  'opacity-40': { opacity: '0.4' },\n  'opacity-50': { opacity: '0.5' },\n  'opacity-60': { opacity: '0.6' },\n  'opacity-70': { opacity: '0.7' },\n  'opacity-75': { opacity: '0.75' },\n  'opacity-80': { opacity: '0.8' },\n  'opacity-90': { opacity: '0.9' },\n  'opacity-95': { opacity: '0.95' },\n  'opacity-100': { opacity: '1' },\n}\n\n// Ring utilities (focus rings)\nconst ringUtilities: Record<string, React.CSSProperties> = {\n  'ring-0': { boxShadow: '0 0 0 0px var(--brutal-black)' },\n  'ring-1': { boxShadow: '0 0 0 1px var(--brutal-black)' },\n  'ring-2': { boxShadow: '0 0 0 2px var(--brutal-black)' },\n  'ring-4': { boxShadow: '0 0 0 4px var(--brutal-black)' },\n  'ring-8': { boxShadow: '0 0 0 8px var(--brutal-black)' },\n  'ring-black': { boxShadow: '0 0 0 2px var(--brutal-black)' },\n  'ring-white': { boxShadow: '0 0 0 2px var(--brutal-white)' },\n  'ring-accent': { boxShadow: '0 0 0 2px var(--brutal-accent)' },\n  'ring-purple': { boxShadow: '0 0 0 4px #8b5cf6' },\n  // Ring offset utilities\n  'ring-offset-0': { boxShadow: '0 0 0 0px #fff, 0 0 0 0px var(--brutal-black)' },\n  'ring-offset-1': { boxShadow: '0 0 0 1px #fff, 0 0 0 3px var(--brutal-accent)' },\n  'ring-offset-2': { boxShadow: '0 0 0 2px #fff, 0 0 0 4px var(--brutal-accent)' },\n  'ring-offset-4': { boxShadow: '0 0 0 4px #fff, 0 0 0 6px var(--brutal-accent)' },\n  'ring-offset-8': { boxShadow: '0 0 0 8px #fff, 0 0 0 10px var(--brutal-accent)' },\n}\n\n// Transform utilities\nconst transformUtilities: Record<string, React.CSSProperties> = {\n  'translate-x-0': { transform: 'translateX(0px)' },\n  'translate-x-1': { transform: 'translateX(0.25rem)' },\n  'translate-x-2': { transform: 'translateX(0.5rem)' },\n  'translate-x-4': { transform: 'translateX(1rem)' },\n  'translate-y-0': { transform: 'translateY(0px)' },\n  'translate-y-1': { transform: 'translateY(0.25rem)' },\n  'translate-y-2': { transform: 'translateY(0.5rem)' },\n  'translate-y-4': { transform: 'translateY(1rem)' },\n  'scale-0': { transform: 'scale(0)' },\n  'scale-50': { transform: 'scale(0.5)' },\n  'scale-75': { transform: 'scale(0.75)' },\n  'scale-90': { transform: 'scale(0.9)' },\n  'scale-95': { transform: 'scale(0.95)' },\n  'scale-100': { transform: 'scale(1)' },\n  'scale-105': { transform: 'scale(1.05)' },\n  'scale-110': { transform: 'scale(1.1)' },\n  'scale-125': { transform: 'scale(1.25)' },\n  'scale-150': { transform: 'scale(1.5)' },\n  'rotate-0': { transform: 'rotate(0deg)' },\n  'rotate-1': { transform: 'rotate(1deg)' },\n  'rotate-2': { transform: 'rotate(2deg)' },\n  'rotate-3': { transform: 'rotate(3deg)' },\n  'rotate-6': { transform: 'rotate(6deg)' },\n  'rotate-12': { transform: 'rotate(12deg)' },\n  'rotate-45': { transform: 'rotate(45deg)' },\n  'rotate-90': { transform: 'rotate(90deg)' },\n  'rotate-180': { transform: 'rotate(180deg)' },\n}\n\n// Cursor utilities\nconst cursorUtilities: Record<string, React.CSSProperties> = {\n  'cursor-auto': { cursor: 'auto' },\n  'cursor-default': { cursor: 'default' },\n  'cursor-pointer': { cursor: 'pointer' },\n  'cursor-wait': { cursor: 'wait' },\n  'cursor-text': { cursor: 'text' },\n  'cursor-move': { cursor: 'move' },\n  'cursor-help': { cursor: 'help' },\n  'cursor-not-allowed': { cursor: 'not-allowed' },\n  'cursor-none': { cursor: 'none' },\n  'cursor-context-menu': { cursor: 'context-menu' },\n  'cursor-progress': { cursor: 'progress' },\n  'cursor-cell': { cursor: 'cell' },\n  'cursor-crosshair': { cursor: 'crosshair' },\n  'cursor-vertical-text': { cursor: 'vertical-text' },\n  'cursor-alias': { cursor: 'alias' },\n  'cursor-copy': { cursor: 'copy' },\n  'cursor-no-drop': { cursor: 'no-drop' },\n  'cursor-grab': { cursor: 'grab' },\n  'cursor-grabbing': { cursor: 'grabbing' },\n}\n\n// Transition utilities\nconst transitionUtilities: Record<string, React.CSSProperties> = {\n  'transition-none': { transition: 'none' },\n  'transition-all': { transition: 'all 150ms cubic-bezier(0.4, 0, 0.2, 1)' },\n  'transition': { transition: 'color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), border-color 150ms cubic-bezier(0.4, 0, 0.2, 1), text-decoration-color 150ms cubic-bezier(0.4, 0, 0.2, 1), fill 150ms cubic-bezier(0.4, 0, 0.2, 1), stroke 150ms cubic-bezier(0.4, 0, 0.2, 1)' },\n  'transition-colors': { transition: 'color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), border-color 150ms cubic-bezier(0.4, 0, 0.2, 1), text-decoration-color 150ms cubic-bezier(0.4, 0, 0.2, 1), fill 150ms cubic-bezier(0.4, 0, 0.2, 1), stroke 150ms cubic-bezier(0.4, 0, 0.2, 1)' },\n  'transition-opacity': { transition: 'opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)' },\n  'transition-shadow': { transition: 'box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1)' },\n  'transition-transform': { transition: 'transform 150ms cubic-bezier(0.4, 0, 0.2, 1)' },\n  // Duration modifiers\n  'duration-75': { transitionDuration: '75ms' },\n  'duration-100': { transitionDuration: '100ms' },\n  'duration-150': { transitionDuration: '150ms' },\n  'duration-200': { transitionDuration: '200ms' },\n  'duration-300': { transitionDuration: '300ms' },\n  'duration-500': { transitionDuration: '500ms' },\n  'duration-700': { transitionDuration: '700ms' },\n  'duration-1000': { transitionDuration: '1000ms' },\n}\n\n/**\n * Parse a utility class and return corresponding CSS properties\n */\nexport function parseUtilityClass(className: string): React.CSSProperties | null {\n  // Check display utilities\n  if (displayUtilities[className]) {\n    return displayUtilities[className]\n  }\n  \n  // Check flex utilities\n  if (flexUtilities[className]) {\n    return flexUtilities[className]\n  }\n  \n  // Check size utilities\n  if (sizeUtilities[className]) {\n    return sizeUtilities[className]\n  }\n  \n  // Check position utilities\n  if (positionUtilities[className]) {\n    return positionUtilities[className]\n  }\n  \n  // Check overflow utilities\n  if (overflowUtilities[className]) {\n    return overflowUtilities[className]\n  }\n  \n  // Check typography utilities\n  if (typographyUtilities[className]) {\n    return typographyUtilities[className]\n  }\n  \n  // Check color utilities\n  if (colorUtilities[className]) {\n    return colorUtilities[className]\n  }\n  \n  // Check border utilities\n  if (borderUtilities[className]) {\n    return borderUtilities[className]\n  }\n  \n  // Check shadow utilities\n  if (shadowUtilities[className]) {\n    return shadowUtilities[className]\n  }\n  \n  // Check opacity utilities\n  if (opacityUtilities[className]) {\n    return opacityUtilities[className]\n  }\n  \n  // Check ring utilities\n  if (ringUtilities[className]) {\n    return ringUtilities[className]\n  }\n  \n  // Check transform utilities\n  if (transformUtilities[className]) {\n    return transformUtilities[className]\n  }\n  \n  // Check transition utilities\n  if (transitionUtilities[className]) {\n    return transitionUtilities[className]\n  }\n  \n  // Check cursor utilities\n  if (cursorUtilities[className]) {\n    return cursorUtilities[className]\n  }\n  \n  // Check spacing utilities\n  for (const [prefix, generator] of Object.entries(utilityPatterns)) {\n    if (className.startsWith(`${prefix}-`)) {\n      const value = className.slice(prefix.length + 1)\n      if (spacingScale[value]) {\n        return generator(value)\n      }\n    }\n  }\n  \n  // Check for margin auto utilities\n  if (className === 'm-auto') return { margin: 'auto' }\n  if (className === 'mt-auto') return { marginTop: 'auto' }\n  if (className === 'mr-auto') return { marginRight: 'auto' }\n  if (className === 'mb-auto') return { marginBottom: 'auto' }\n  if (className === 'ml-auto') return { marginLeft: 'auto' }\n  if (className === 'mx-auto') return { marginLeft: 'auto', marginRight: 'auto' }\n  if (className === 'my-auto') return { marginTop: 'auto', marginBottom: 'auto' }\n  \n  return null\n}\n\n/**\n * Parse multiple utility classes and merge into a single style object\n */\nexport function parseUtilityClasses(classNames: string): React.CSSProperties {\n  const classes = classNames.split(' ').filter(Boolean)\n  const styles: React.CSSProperties = {}\n  \n  for (const className of classes) {\n    const parsed = parseUtilityClass(className)\n    if (parsed) {\n      Object.assign(styles, parsed)\n    }\n  }\n  \n  return styles\n}\n\n/**\n * Extract utility classes and non-utility classes from a className string\n */\nexport function extractUtilityClasses(className: string): {\n  utilities: string[]\n  others: string[]\n  styles: React.CSSProperties\n} {\n  const classes = className.split(' ').filter(Boolean)\n  const utilities: string[] = []\n  const others: string[] = []\n  const styles: React.CSSProperties = {}\n  \n  for (const cls of classes) {\n    const parsed = parseUtilityClass(cls)\n    if (parsed) {\n      utilities.push(cls)\n      Object.assign(styles, parsed)\n    } else {\n      others.push(cls)\n    }\n  }\n  \n  return { utilities, others, styles }\n}","/**\n * Responsive and state-based utility system for Brutalist UI\n */\n\n// Breakpoint definitions\nexport const breakpoints = {\n  sm: '640px',\n  md: '768px',\n  lg: '1024px',\n  xl: '1280px',\n  '2xl': '1536px'\n} as const\n\n// State modifiers\nexport const stateModifiers = [\n  'hover',\n  'focus',\n  'active',\n  'disabled',\n  'focus-within',\n  'focus-visible'\n] as const\n\nexport type Breakpoint = keyof typeof breakpoints\nexport type StateModifier = typeof stateModifiers[number]\n\n/**\n * Parse a utility class with modifiers\n * Examples: \n * - \"sm:px-4\" -> { breakpoint: 'sm', utility: 'px-4' }\n * - \"hover:bg-gray-100\" -> { state: 'hover', utility: 'bg-gray-100' }\n * - \"md:hover:text-blue\" -> { breakpoint: 'md', state: 'hover', utility: 'text-blue' }\n */\nexport function parseModifiedUtility(className: string): {\n  breakpoint?: Breakpoint\n  state?: StateModifier\n  utility: string\n} {\n  const parts = className.split(':')\n  \n  if (parts.length === 1) {\n    // No modifiers\n    return { utility: parts[0] }\n  }\n  \n  let breakpoint: Breakpoint | undefined\n  let state: StateModifier | undefined\n  let utility: string\n  \n  if (parts.length === 2) {\n    // One modifier\n    const [modifier, utilityPart] = parts\n    \n    if (modifier in breakpoints) {\n      breakpoint = modifier as Breakpoint\n    } else if (stateModifiers.includes(modifier as StateModifier)) {\n      state = modifier as StateModifier\n    }\n    \n    utility = utilityPart\n  } else if (parts.length === 3) {\n    // Two modifiers (breakpoint and state)\n    const [breakpointPart, statePart, utilityPart] = parts\n    \n    if (breakpointPart in breakpoints) {\n      breakpoint = breakpointPart as Breakpoint\n    }\n    \n    if (stateModifiers.includes(statePart as StateModifier)) {\n      state = statePart as StateModifier\n    }\n    \n    utility = utilityPart\n  } else {\n    // Invalid format, return the last part as utility\n    utility = parts[parts.length - 1]\n  }\n  \n  return { breakpoint, state, utility }\n}\n\n/**\n * Generate CSS for responsive utilities\n */\nexport function generateResponsiveCSS(\n  breakpoint: Breakpoint,\n  selector: string,\n  styles: React.CSSProperties\n): string {\n  const cssProperties = Object.entries(styles)\n    .map(([prop, value]) => {\n      const cssProp = prop.replace(/([A-Z])/g, '-$1').toLowerCase()\n      return `${cssProp}: ${value};`\n    })\n    .join('\\n    ')\n  \n  return `\n  @media (min-width: ${breakpoints[breakpoint]}) {\n    ${selector} {\n      ${cssProperties}\n    }\n  }`\n}\n\n/**\n * Generate CSS for state-based utilities\n */\nexport function generateStateCSS(\n  state: StateModifier,\n  selector: string,\n  styles: React.CSSProperties\n): string {\n  const cssProperties = Object.entries(styles)\n    .map(([prop, value]) => {\n      const cssProp = prop.replace(/([A-Z])/g, '-$1').toLowerCase()\n      // Add !important to ensure state styles override base styles\n      return `${cssProp}: ${value} !important;`\n    })\n    .join('\\n    ')\n  \n  const stateSelector = state === 'focus-within' ? 'focus-within' : \n                       state === 'focus-visible' ? 'focus-visible' :\n                       state\n  \n  return `\n  ${selector}:${stateSelector} {\n    ${cssProperties}\n  }`\n}\n\n/**\n * Group utilities by their modifiers for efficient CSS generation\n */\nexport function groupUtilitiesByModifiers(classNames: string[]): {\n  base: string[]\n  responsive: Map<Breakpoint, string[]>\n  states: Map<StateModifier, string[]>\n  responsiveStates: Map<`${Breakpoint}:${StateModifier}`, string[]>\n} {\n  const base: string[] = []\n  const responsive = new Map<Breakpoint, string[]>()\n  const states = new Map<StateModifier, string[]>()\n  const responsiveStates = new Map<`${Breakpoint}:${StateModifier}`, string[]>()\n  \n  for (const className of classNames) {\n    const { breakpoint, state, utility } = parseModifiedUtility(className)\n    \n    if (!breakpoint && !state) {\n      base.push(utility)\n    } else if (breakpoint && !state) {\n      if (!responsive.has(breakpoint)) {\n        responsive.set(breakpoint, [])\n      }\n      responsive.get(breakpoint)!.push(utility)\n    } else if (!breakpoint && state) {\n      if (!states.has(state)) {\n        states.set(state, [])\n      }\n      states.get(state)!.push(utility)\n    } else if (breakpoint && state) {\n      const key = `${breakpoint}:${state}` as const\n      if (!responsiveStates.has(key)) {\n        responsiveStates.set(key, [])\n      }\n      responsiveStates.get(key)!.push(utility)\n    }\n  }\n  \n  return { base, responsive, states, responsiveStates }\n}","/**\n * Enhanced hook for processing utility classes with responsive and state modifiers\n */\n\nimport { useMemo, useEffect, useRef } from 'react'\nimport { clsx } from 'clsx'\nimport { parseUtilityClass } from '../utils/utility-classes'\nimport { parseModifiedUtility, groupUtilitiesByModifiers, generateResponsiveCSS, generateStateCSS, breakpoints } from '../utils/responsive-utilities'\nimport type { CSSProperties } from 'react'\n\nlet styleId = 0\n\nexport interface UseResponsiveUtilitiesOptions {\n  /**\n   * The className prop from the component\n   */\n  className?: string\n  \n  /**\n   * The style prop from the component\n   */\n  style?: CSSProperties\n  \n  /**\n   * Base component classes (from CSS modules)\n   */\n  componentClasses?: string | string[]\n  \n  /**\n   * Component instance ID for unique CSS generation\n   */\n  componentId?: string\n}\n\nexport interface UseResponsiveUtilitiesResult {\n  /**\n   * Combined className string\n   */\n  className: string\n  \n  /**\n   * Combined style object for base utilities\n   */\n  style?: CSSProperties\n}\n\n/**\n * Hook that processes utility classes with responsive and state modifiers\n * \n * @example\n * ```tsx\n * const { className, style } = useResponsiveUtilities({\n *   className: \"mt-4 hover:bg-gray-100 md:px-6 lg:hover:shadow-lg\",\n *   style: { color: 'red' },\n *   componentClasses: styles.button\n * })\n * ```\n */\nexport function useResponsiveUtilities(options: UseResponsiveUtilitiesOptions): UseResponsiveUtilitiesResult {\n  const {\n    className = '',\n    style = {},\n    componentClasses = '',\n    componentId\n  } = options\n  \n  const styleElementRef = useRef<HTMLStyleElement | null>(null)\n  const uniqueIdRef = useRef<string>(`brutal-${componentId || `util-${styleId++}`}`)\n  \n  const result = useMemo(() => {\n    if (!className) {\n      return {\n        className: clsx(componentClasses),\n        style\n      }\n    }\n    \n    const classes = className.split(' ').filter(Boolean)\n    const utilityClasses: string[] = []\n    const nonUtilityClasses: string[] = []\n    const baseStyles: CSSProperties = {}\n    \n    // Separate utility classes from non-utility classes\n    for (const cls of classes) {\n      const { utility } = parseModifiedUtility(cls)\n      const parsed = parseUtilityClass(utility)\n      \n      if (parsed) {\n        utilityClasses.push(cls)\n        // Only add base styles for non-modified utilities\n        if (cls === utility) {\n          Object.assign(baseStyles, parsed)\n        }\n      } else {\n        nonUtilityClasses.push(cls)\n      }\n    }\n    \n    // Group utilities by modifiers\n    const grouped = groupUtilitiesByModifiers(utilityClasses)\n    \n    // Generate CSS for responsive and state utilities\n    let generatedCSS = ''\n    const uniqueClass = uniqueIdRef.current\n    \n    // Generate responsive CSS\n    for (const [breakpoint, utilities] of grouped.responsive) {\n      const breakpointStyles: CSSProperties = {}\n      for (const utility of utilities) {\n        const parsed = parseUtilityClass(utility)\n        if (parsed) {\n          Object.assign(breakpointStyles, parsed)\n        }\n      }\n      if (Object.keys(breakpointStyles).length > 0) {\n        generatedCSS += generateResponsiveCSS(breakpoint, `.${uniqueClass}`, breakpointStyles)\n      }\n    }\n    \n    // Generate state CSS\n    for (const [state, utilities] of grouped.states) {\n      const stateStyles: CSSProperties = {}\n      const transformValues: string[] = []\n      \n      for (const utility of utilities) {\n        const parsed = parseUtilityClass(utility)\n        if (parsed) {\n          // Handle transform utilities specially to combine them\n          if (parsed.transform && typeof parsed.transform === 'string') {\n            transformValues.push(parsed.transform)\n          } else {\n            Object.assign(stateStyles, parsed)\n          }\n        }\n      }\n      \n      // Combine transform values\n      if (transformValues.length > 0) {\n        stateStyles.transform = transformValues.join(' ')\n      }\n      \n      if (Object.keys(stateStyles).length > 0) {\n        generatedCSS += generateStateCSS(state, `.${uniqueClass}`, stateStyles)\n      }\n    }\n    \n    // Generate responsive state CSS\n    for (const [key, utilities] of grouped.responsiveStates) {\n      const [breakpoint, state] = key.split(':') as [string, string]\n      const responsiveStateStyles: CSSProperties = {}\n      const transformValues: string[] = []\n      \n      for (const utility of utilities) {\n        const parsed = parseUtilityClass(utility)\n        if (parsed) {\n          // Handle transform utilities specially to combine them\n          if (parsed.transform && typeof parsed.transform === 'string') {\n            transformValues.push(parsed.transform)\n          } else {\n            Object.assign(responsiveStateStyles, parsed)\n          }\n        }\n      }\n      \n      // Combine transform values\n      if (transformValues.length > 0) {\n        responsiveStateStyles.transform = transformValues.join(' ')\n      }\n      \n      if (Object.keys(responsiveStateStyles).length > 0) {\n        const stateCss = generateStateCSS(state as any, `.${uniqueClass}`, responsiveStateStyles)\n        // Wrap state CSS in media query with resolved breakpoint value\n        const breakpointValue = breakpoints[breakpoint as keyof typeof breakpoints]\n        generatedCSS += `\n        @media (min-width: ${breakpointValue}) {\n          ${stateCss.trim()}\n        }`\n      }\n    }\n    \n    return {\n      className: clsx(\n        componentClasses,\n        generatedCSS ? uniqueClass : '',\n        ...nonUtilityClasses\n      ),\n      style: Object.keys(baseStyles).length > 0\n        ? { ...baseStyles, ...style }\n        : style,\n      generatedCSS\n    }\n  }, [className, style, componentClasses])\n  \n  // Inject generated CSS\n  useEffect(() => {\n    if (result.generatedCSS && typeof document !== 'undefined') {\n      // Create or update style element\n      if (!styleElementRef.current) {\n        styleElementRef.current = document.createElement('style')\n        styleElementRef.current.setAttribute('data-brutal-utilities', uniqueIdRef.current)\n        document.head.appendChild(styleElementRef.current)\n      }\n      \n      styleElementRef.current.textContent = result.generatedCSS\n      \n      // Debug logging\n      if (process.env.NODE_ENV === 'development') {\n        console.log('Generated CSS for', uniqueIdRef.current, ':\\n', result.generatedCSS)\n      }\n      \n      // Cleanup\n      return () => {\n        if (styleElementRef.current && styleElementRef.current.parentNode) {\n          styleElementRef.current.parentNode.removeChild(styleElementRef.current)\n          styleElementRef.current = null\n        }\n      }\n    }\n  }, [result.generatedCSS])\n  \n  return {\n    className: result.className,\n    style: result.style\n  }\n}\n\n/**\n * Enhanced version of useUtilityStyles that supports responsive and state modifiers\n */\nexport function useEnhancedUtilityStyles(\n  className?: string,\n  style?: CSSProperties,\n  componentClasses?: string | string[]\n): UseResponsiveUtilitiesResult {\n  return useResponsiveUtilities({\n    className,\n    style,\n    componentClasses\n  })\n}","/**\n * Hook for processing utility classes in Brutalist UI components\n * Handles both inline styles and CSS module classes\n */\n\nimport { useMemo } from 'react'\nimport { clsx } from 'clsx'\nimport { extractUtilityClasses } from '../utils/utility-classes'\nimport { useResponsiveUtilities } from './useResponsiveUtilities'\nimport type { CSSProperties } from 'react'\n\nexport interface UseUtilityClassesOptions {\n  /**\n   * The className prop from the component\n   */\n  className?: string\n  \n  /**\n   * The style prop from the component\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether to use CSS modules for utility classes\n   * @default false - uses inline styles\n   */\n  useUtilityCSS?: boolean\n  \n  /**\n   * Base component classes (from CSS modules)\n   */\n  componentClasses?: string | string[]\n}\n\nexport interface UseUtilityClassesResult {\n  /**\n   * Combined className string (component classes + non-utility classes + utility CSS classes if enabled)\n   */\n  className: string\n  \n  /**\n   * Combined style object (component styles + utility styles if not using CSS)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Hook that processes utility classes and merges them with component classes and styles\n * \n * @example\n * ```tsx\n * const { className, style } = useUtilityClasses({\n *   className: \"mt-4 mb-2 custom-class\",\n *   style: { color: 'red' },\n *   componentClasses: styles.button\n * })\n * ```\n */\nexport function useUtilityClasses(options: UseUtilityClassesOptions): UseUtilityClassesResult {\n  const {\n    className = '',\n    style = {},\n    useUtilityCSS = false,\n    componentClasses = ''\n  } = options\n  \n  return useMemo(() => {\n    // Extract utility classes and parse them\n    const { utilities, others, styles: parsedStyles } = extractUtilityClasses(className)\n    \n    if (useUtilityCSS) {\n      // Use CSS module classes for utilities\n      // Note: This would require importing the CSS module, which we'll handle in component implementation\n      return {\n        className: clsx(\n          componentClasses,\n          ...utilities, // Pass through utility classes for now\n          ...others\n        ),\n        style: style\n      }\n    } else {\n      // Use inline styles for utilities\n      return {\n        className: clsx(\n          componentClasses,\n          ...others\n        ),\n        style: Object.keys(parsedStyles).length > 0\n          ? { ...parsedStyles, ...style }\n          : style\n      }\n    }\n  }, [className, style, useUtilityCSS, componentClasses])\n}\n\n/**\n * Alternative hook that always uses inline styles (simpler API)\n * \n * @example\n * ```tsx\n * const { className, style } = useUtilityStyles(\n *   \"mt-4 mb-2 custom-class\",\n *   { color: 'red' },\n *   styles.button\n * )\n * ```\n */\nexport function useUtilityStyles(\n  className?: string,\n  style?: CSSProperties,\n  componentClasses?: string | string[]\n): UseUtilityClassesResult {\n  // Use the enhanced responsive utilities hook\n  return useResponsiveUtilities({\n    className,\n    style,\n    componentClasses\n  }) as UseUtilityClassesResult\n}\n\n/**\n * Alternative hook that always uses CSS module classes\n * \n * @example\n * ```tsx\n * const { className } = useUtilityCSSClasses(\n *   \"mt-4 mb-2 custom-class\",\n *   styles.button\n * )\n * ```\n */\nexport function useUtilityCSSClasses(\n  className?: string,\n  componentClasses?: string | string[]\n): UseUtilityClassesResult {\n  return useUtilityClasses({\n    className,\n    useUtilityCSS: true,\n    componentClasses\n  })\n}","/**\n * @module Box\n * @description A primitive component that supports all utility classes for layout and styling\n */\n\nimport React, { forwardRef, HTMLAttributes } from 'react'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the Box component\n */\nexport interface BoxProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * The HTML element to render\n   * @default 'div'\n   */\n  as?: keyof JSX.IntrinsicElements\n}\n\n/**\n * A primitive component that supports all utility classes for layout and styling.\n * Can be used as any HTML element via the 'as' prop.\n * \n * @example\n * ```tsx\n * <Box className=\"p-4 bg-gray-100 rounded-lg shadow-brutal\">\n *   <Box as=\"h1\" className=\"text-2xl font-bold mb-4\">Title</Box>\n *   <Box as=\"p\" className=\"text-gray-600\">Content goes here</Box>\n * </Box>\n * ```\n */\nexport const Box = forwardRef<HTMLDivElement, BoxProps>(\n  ({ as: Component = 'div', className, style, children, ...props }, ref) => {\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style\n    })\n\n    return React.createElement(\n      Component,\n      {\n        ...props,\n        ref,\n        className: processedClassName,\n        style: processedStyle,\n      },\n      children\n    )\n  }\n)\n\nBox.displayName = 'Box'","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingKey = function () {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingKey.isReactWarning = true;\n    Object.defineProperty(props, 'key', {\n      get: warnAboutAccessingKey,\n      configurable: true\n    });\n  }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingRef = function () {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingRef.isReactWarning = true;\n    Object.defineProperty(props, 'ref', {\n      get: warnAboutAccessingRef,\n      configurable: true\n    });\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n  {\n    var propName; // Reserved names are extracted\n\n    var props = {};\n    var key = null;\n    var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n    // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n    // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n    // but as an intermediary step, we will use jsxDEV for everything except\n    // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n    // key is explicitly declared to be undefined or not.\n\n    if (maybeKey !== undefined) {\n      {\n        checkKeyStringCoercion(maybeKey);\n      }\n\n      key = '' + maybeKey;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    if (hasValidRef(config)) {\n      ref = config.ref;\n      warnIfStringRefCannotBeAutoConverted(config, self);\n    } // Remaining properties are added to a new props object\n\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    } // Resolve default props\n\n\n    if (type && type.defaultProps) {\n      var defaultProps = type.defaultProps;\n\n      for (propName in defaultProps) {\n        if (props[propName] === undefined) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    }\n\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n\n    return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n  }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n  {\n    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n  }\n}\n\nfunction getDeclarationErrorAddendum() {\n  {\n    if (ReactCurrentOwner$1.current) {\n      var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n      if (name) {\n        return '\\n\\nCheck the render method of `' + name + '`.';\n      }\n    }\n\n    return '';\n  }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  {\n    if (source !== undefined) {\n      var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n      var lineNumber = source.lineNumber;\n      return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n    }\n\n    return '';\n  }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  {\n    var info = getDeclarationErrorAddendum();\n\n    if (!info) {\n      var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n      if (parentName) {\n        info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n      }\n    }\n\n    return info;\n  }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  {\n    if (!element._store || element._store.validated || element.key != null) {\n      return;\n    }\n\n    element._store.validated = true;\n    var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n    // property, it may be the creator of the child that's responsible for\n    // assigning it a key.\n\n    var childOwner = '';\n\n    if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n      // Give the component that originally created this child.\n      childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n    }\n\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  {\n    if (typeof node !== 'object') {\n      return;\n    }\n\n    if (isArray(node)) {\n      for (var i = 0; i < node.length; i++) {\n        var child = node[i];\n\n        if (isValidElement(child)) {\n          validateExplicitKey(child, parentType);\n        }\n      }\n    } else if (isValidElement(node)) {\n      // This element was passed in a valid location.\n      if (node._store) {\n        node._store.validated = true;\n      }\n    } else if (node) {\n      var iteratorFn = getIteratorFn(node);\n\n      if (typeof iteratorFn === 'function') {\n        // Entry iterators used to provide implicit keys,\n        // but now we print a separate warning for them later.\n        if (iteratorFn !== node.entries) {\n          var iterator = iteratorFn.call(node);\n          var step;\n\n          while (!(step = iterator.next()).done) {\n            if (isValidElement(step.value)) {\n              validateExplicitKey(step.value, parentType);\n            }\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n  {\n    var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n\n    if (!validType) {\n      var info = '';\n\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(source);\n\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      var typeString;\n\n      if (type === null) {\n        typeString = 'null';\n      } else if (isArray(type)) {\n        typeString = 'array';\n      } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n        typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n        info = ' Did you accidentally export a JSX literal instead of a component?';\n      } else {\n        typeString = typeof type;\n      }\n\n      error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n\n    var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n\n    if (element == null) {\n      return element;\n    } // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n\n\n    if (validType) {\n      var children = props.children;\n\n      if (children !== undefined) {\n        if (isStaticChildren) {\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              validateChildKeys(children[i], type);\n            }\n\n            if (Object.freeze) {\n              Object.freeze(children);\n            }\n          } else {\n            error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n          }\n        } else {\n          validateChildKeys(children, type);\n        }\n      }\n    }\n\n    {\n      if (hasOwnProperty.call(props, 'key')) {\n        var componentName = getComponentNameFromType(type);\n        var keys = Object.keys(props).filter(function (k) {\n          return k !== 'key';\n        });\n        var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n        if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n          var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n          error('A props object containing a \"key\" prop is being spread into JSX:\\n' + '  let props = %s;\\n' + '  <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + '  let props = %s;\\n' + '  <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n          didWarnAboutKeySpread[componentName + beforeExample] = true;\n        }\n      }\n    }\n\n    if (type === REACT_FRAGMENT_TYPE) {\n      validateFragmentProps(element);\n    } else {\n      validatePropTypes(element);\n    }\n\n    return element;\n  }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, true);\n  }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, false);\n  }\n}\n\nvar jsx =  jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs =  jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @module Button\n * @description A versatile button component that supports multiple variants, sizes, and states. Built with accessibility in mind and follows WAI-ARIA guidelines.\n */\n\nimport React, { forwardRef, ButtonHTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Button.module.css'\nimport { useUtilityStyles } from '../hooks/useUtilityClasses'\n\n/**\n * Props for the Button component\n */\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n  /**\n   * The visual style variant of the button\n   * @default 'default'\n   */\n  variant?: 'default' | 'destructive' | 'outline' | 'ghost' | 'brutal' | 'primary' | 'secondary' | 'danger'\n  \n  /**\n   * The size of the button\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg' | 'xl'\n  \n  /**\n   * Whether the button should take full width of its container\n   * @default false\n   */\n  fullWidth?: boolean\n  \n  /**\n   * Shows a loading spinner and disables the button\n   * @default false\n   */\n  loading?: boolean\n  \n  /**\n   * Icon to display on the left side of the button content\n   */\n  leftIcon?: React.ReactNode\n  \n  /**\n   * Icon to display on the right side of the button content\n   */\n  rightIcon?: React.ReactNode\n  \n  /**\n   * Whether to apply the brutalist shadow effect\n   * @default true\n   */\n  brutalistShadow?: boolean\n  \n  /**\n   * Applies a glitch animation effect to the button\n   * @default false\n   */\n  glitch?: boolean\n}\n\n/**\n * A versatile button component that supports multiple variants, sizes, and states.\n * Built with accessibility in mind and follows WAI-ARIA guidelines.\n * \n * @example\n * ```tsx\n * <Button variant=\"brutal\" size=\"lg\" leftIcon={<FaRocket />}>\n *   Launch App\n * </Button>\n * ```\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n  (\n    {\n      children,\n      className,\n      variant = 'default',\n      size = 'md',\n      fullWidth = false,\n      loading = false,\n      leftIcon,\n      rightIcon,\n      brutalistShadow = true,\n      glitch = false,\n      disabled,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useUtilityStyles(\n      className,\n      style,\n      clsx(\n        styles.button,\n        styles[variant],\n        styles[size],\n        {\n          [styles.fullWidth]: fullWidth,\n          [styles.loading]: loading,\n          [styles.withShadow]: brutalistShadow,\n          [styles.glitch]: glitch,\n          [styles.disabled]: disabled || loading,\n        }\n      )\n    )\n\n    return (\n      <button\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        disabled={disabled || loading}\n        data-text={glitch ? children : undefined}\n        {...props}\n      >\n        {loading && <span className={styles.loader} />}\n        {leftIcon && <span className={styles.icon}>{leftIcon}</span>}\n        <span className={styles.content}>{children}</span>\n        {rightIcon && <span className={styles.icon}>{rightIcon}</span>}\n      </button>\n    )\n  }\n)\n\nButton.displayName = 'Button'","/**\n * @module Input\n * @description A flexible input component with support for different types, sizes, and validation states. Follows accessibility best practices with full keyboard support and ARIA compliance.\n */\n\nimport React, { forwardRef, InputHTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Input.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the Input component\n */\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n  /**\n   * The validation state variant of the input\n   * @default 'default'\n   */\n  variant?: 'default' | 'error' | 'success'\n  \n  /**\n   * The size of the input field\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Icon to display on the left side of the input\n   */\n  leftIcon?: React.ReactNode\n  \n  /**\n   * Icon to display on the right side of the input\n   */\n  rightIcon?: React.ReactNode\n  \n  /**\n   * Whether the input should take full width of its container\n   * @default false\n   */\n  fullWidth?: boolean\n  \n  /**\n   * Whether to apply the brutalist shadow effect\n   * @default true\n   */\n  brutalistShadow?: boolean\n}\n\n/**\n * A flexible input component that supports various input types, validation states, and icons.\n * Provides a consistent brutalist design with customizable sizing and styling options.\n * \n * @example\n * ```tsx\n * <Input\n *   type=\"email\"\n *   placeholder=\"Enter your email\"\n *   variant=\"default\"\n *   size=\"md\"\n *   leftIcon={<MailIcon />}\n * />\n * ```\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n  (\n    {\n      className,\n      style,\n      variant = 'default',\n      size = 'md',\n      leftIcon,\n      rightIcon,\n      fullWidth = false,\n      brutalistShadow = true,\n      disabled,\n      readOnly,\n      type = 'text',\n      ...props\n    },\n    ref\n  ) => {\n    // Process input utilities\n    const { className: inputClassName, style: inputStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.input,\n        styles[variant],\n        styles[size],\n        {\n          [styles.withLeftIcon]: leftIcon,\n          [styles.withRightIcon]: rightIcon,\n          [styles.disabled]: disabled,\n          [styles.readOnly]: readOnly,\n          [styles.withShadow]: brutalistShadow && !disabled && !readOnly,\n        }\n      )\n    })\n\n    // Process wrapper utilities (will only be used if icons are present)\n    const { className: wrapperClassName, style: wrapperStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.inputWrapper,\n        styles[variant],\n        styles[size],\n        {\n          [styles.fullWidth]: fullWidth,\n          [styles.disabled]: disabled,\n          [styles.readOnly]: readOnly,\n          [styles.withShadow]: brutalistShadow && !disabled && !readOnly,\n        }\n      )\n    })\n\n    const inputElement = (\n      <input\n        ref={ref}\n        type={type}\n        className={inputClassName}\n        style={inputStyle}\n        disabled={disabled}\n        readOnly={readOnly}\n        {...props}\n      />\n    )\n\n    if (leftIcon || rightIcon) {\n      return (\n        <div\n          className={wrapperClassName}\n          style={wrapperStyle}\n        >\n          {leftIcon && (\n            <span className={clsx(styles.icon, styles.leftIcon)}>{leftIcon}</span>\n          )}\n          {inputElement}\n          {rightIcon && (\n            <span className={clsx(styles.icon, styles.rightIcon)}>{rightIcon}</span>\n          )}\n        </div>\n      )\n    }\n\n    return inputElement\n  }\n)\n\nInput.displayName = 'Input'","/**\n * @module InputOTP\n * @description A one-time password input component that provides an intuitive interface for entering verification codes. Features automatic focus management, paste support, and full keyboard navigation.\n */\n\nimport { forwardRef, useRef, useState, useEffect, KeyboardEvent, ClipboardEvent, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './InputOTP.module.css'\n\n/**\n * Props for the InputOTP component\n */\nexport interface InputOTPProps {\n  /**\n   * Number of input fields to display\n   * @default 6\n   */\n  length?: number\n  \n  /**\n   * Current value of the OTP input (controlled)\n   * @default ''\n   */\n  value?: string\n  \n  /**\n   * Callback function called when the value changes\n   */\n  onChange?: (value: string) => void\n  \n  /**\n   * Callback function called when all fields are filled\n   */\n  onComplete?: (value: string) => void\n  \n  /**\n   * Visual variant for validation states\n   * @default 'default'\n   */\n  variant?: 'default' | 'error' | 'success'\n  \n  /**\n   * Size variant for the input fields\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Whether the input is disabled\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Whether to automatically focus the first input on mount\n   * @default false\n   */\n  autoFocus?: boolean\n  \n  /**\n   * Input type - 'text' allows any characters, 'number' restricts to digits only\n   * @default 'text'\n   */\n  type?: 'text' | 'number'\n  \n  /**\n   * Placeholder character to show in empty fields\n   * @default '•'\n   */\n  placeholder?: string\n  \n  /**\n   * Additional CSS classes to apply to the container\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether to apply the brutalist shadow effect to input fields\n   * @default true\n   */\n  brutalistShadow?: boolean\n}\n\nexport const InputOTP = forwardRef<HTMLDivElement, InputOTPProps>(\n  (\n    {\n      length = 6,\n      value = '',\n      onChange,\n      onComplete,\n      variant = 'default',\n      size = 'md',\n      disabled = false,\n      autoFocus = false,\n      type = 'text',\n      placeholder = '•',\n      className,\n      style,\n      brutalistShadow = true,\n    },\n    ref\n  ) => {\n    const [otp, setOtp] = useState<string[]>(() => {\n      const arr = value.split('').slice(0, length)\n      return [...arr, ...Array(length - arr.length).fill('')]\n    })\n    const inputRefs = useRef<(HTMLInputElement | null)[]>([])\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.container,\n        styles[variant],\n        styles[size],\n        {\n          [styles.brutalistShadow]: brutalistShadow,\n          [styles.disabled]: disabled,\n        }\n      )\n    })\n\n    useEffect(() => {\n      const arr = value.split('').slice(0, length)\n      setOtp([...arr, ...Array(length - arr.length).fill('')])\n    }, [value, length])\n\n    const focusInput = (index: number) => {\n      if (inputRefs.current[index]) {\n        inputRefs.current[index]?.focus()\n        inputRefs.current[index]?.select()\n      }\n    }\n\n    const handleChange = (index: number, val: string) => {\n      if (type === 'number' && val && !/^\\d+$/.test(val)) return\n\n      const newOtp = [...otp]\n      newOtp[index] = val.slice(-1) // Only take last character\n\n      setOtp(newOtp)\n      const otpValue = newOtp.join('')\n      onChange?.(otpValue)\n\n      // Move to next input if value entered\n      if (val && index < length - 1) {\n        focusInput(index + 1)\n      }\n\n      // Check if complete\n      if (otpValue.length === length && !newOtp.includes('')) {\n        onComplete?.(otpValue)\n      }\n    }\n\n    const handleKeyDown = (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n      if (e.key === 'Backspace' && !otp[index] && index > 0) {\n        e.preventDefault()\n        focusInput(index - 1)\n      } else if (e.key === 'ArrowLeft' && index > 0) {\n        e.preventDefault()\n        focusInput(index - 1)\n      } else if (e.key === 'ArrowRight' && index < length - 1) {\n        e.preventDefault()\n        focusInput(index + 1)\n      }\n    }\n\n    const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n      e.preventDefault()\n      const pastedData = e.clipboardData.getData('text/plain').slice(0, length)\n      \n      if (type === 'number' && !/^\\d+$/.test(pastedData)) return\n\n      const newOtp = [...otp]\n      pastedData.split('').forEach((char, i) => {\n        if (i < length) {\n          newOtp[i] = char\n        }\n      })\n\n      setOtp(newOtp)\n      const otpValue = newOtp.join('')\n      onChange?.(otpValue)\n\n      // Focus last filled input or last input\n      const lastFilledIndex = newOtp.map((val, i) => val !== '' ? i : -1).filter(i => i !== -1).pop() ?? -1\n      focusInput(Math.min(lastFilledIndex + 1, length - 1))\n\n      // Check if complete\n      if (otpValue.length === length && !newOtp.includes('')) {\n        onComplete?.(otpValue)\n      }\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n      >\n        {Array.from({ length }).map((_, index) => (\n          <input\n            key={index}\n            ref={el => inputRefs.current[index] = el}\n            type=\"text\"\n            inputMode={type === 'number' ? 'numeric' : 'text'}\n            pattern={type === 'number' ? '\\\\d*' : undefined}\n            maxLength={1}\n            value={otp[index]}\n            onChange={e => handleChange(index, e.target.value)}\n            onKeyDown={e => handleKeyDown(index, e)}\n            onPaste={index === 0 ? handlePaste : undefined}\n            onFocus={e => e.target.select()}\n            placeholder={placeholder}\n            disabled={disabled}\n            autoFocus={autoFocus && index === 0}\n            className={clsx(\n              styles.input,\n              styles[variant],\n              styles[size],\n              {\n                [styles.filled]: otp[index],\n                [styles.disabled]: disabled,\n                [styles.withShadow]: brutalistShadow && !disabled,\n              }\n            )}\n          />\n        ))}\n      </div>\n    )\n  }\n)\n\nInputOTP.displayName = 'InputOTP'","/**\n * @module Textarea\n * @description An enhanced textarea component with auto-resize capabilities and character counting. Supports all native textarea attributes.\n */\n\nimport React, { forwardRef, TextareaHTMLAttributes, useEffect, useRef, useState, useCallback } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Textarea.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n  variant?: 'default' | 'error' | 'success'\n  size?: 'sm' | 'md' | 'lg'\n  autoResize?: boolean\n  showCharacterCount?: boolean\n  maxCharacters?: number\n  minRows?: number\n  maxRows?: number\n  fullWidth?: boolean\n  brutalistShadow?: boolean\n  width?: string | number\n  minWidth?: string | number\n  maxWidth?: string | number\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n  (\n    {\n      className,\n      style,\n      variant = 'default',\n      size = 'md',\n      autoResize = false,\n      showCharacterCount = false,\n      maxCharacters,\n      minRows = 3,\n      maxRows = 10,\n      fullWidth = false,\n      brutalistShadow = true,\n      width,\n      minWidth,\n      maxWidth,\n      disabled,\n      readOnly,\n      value,\n      defaultValue,\n      onChange,\n      ...props\n    },\n    ref\n  ) => {\n    const [internalValue, setInternalValue] = useState(defaultValue || '')\n    const textareaRef = useRef<HTMLTextAreaElement | null>(null)\n\n    // Determine controlled vs uncontrolled\n    const isControlled = value !== undefined\n    const currentValue = isControlled ? value : internalValue\n    const charCount = String(currentValue).length\n\n    // Handle ref forwarding\n    const setRefs = useCallback(\n      (element: HTMLTextAreaElement | null) => {\n        textareaRef.current = element\n        if (ref) {\n          if (typeof ref === 'function') {\n            ref(element)\n          } else {\n            ref.current = element\n          }\n        }\n      },\n      [ref]\n    )\n\n    // Auto-resize functionality\n    const adjustHeight = useCallback(() => {\n      const textarea = textareaRef.current\n      if (!textarea || !autoResize) return\n\n      // Reset to auto to get natural scroll height\n      textarea.style.height = 'auto'\n      const scrollHeight = textarea.scrollHeight\n\n      // Set minimum height based on minRows  \n      const minHeight = `${minRows * 1.5}rem` // Simple rem-based calculation\n      const maxHeight = `${maxRows * 1.5}rem`\n\n      if (scrollHeight <= parseInt(minHeight) * 16) {\n        textarea.style.height = minHeight\n        textarea.style.overflowY = 'hidden'\n      } else if (scrollHeight >= parseInt(maxHeight) * 16) {\n        textarea.style.height = maxHeight\n        textarea.style.overflowY = 'auto'\n      } else {\n        textarea.style.height = `${scrollHeight}px`\n        textarea.style.overflowY = 'hidden'\n      }\n    }, [autoResize, minRows, maxRows])\n\n    // Adjust height on mount and when value changes\n    useEffect(() => {\n      adjustHeight()\n    }, [currentValue, adjustHeight])\n\n    // Adjust height on window resize\n    useEffect(() => {\n      if (!autoResize) return\n\n      const handleResize = () => adjustHeight()\n      window.addEventListener('resize', handleResize)\n      return () => window.removeEventListener('resize', handleResize)\n    }, [autoResize, adjustHeight])\n\n    const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n      const newValue = e.target.value\n\n      // Enforce max characters if specified\n      if (maxCharacters && newValue.length > maxCharacters) {\n        return\n      }\n\n      if (!isControlled) {\n        setInternalValue(newValue)\n      }\n\n      onChange?.(e)\n      \n      // Trigger resize on change for better responsiveness\n      if (autoResize) {\n        setTimeout(() => adjustHeight(), 0)\n      }\n    }\n\n    const isOverLimit = maxCharacters ? charCount > maxCharacters : false\n\n    // Convert width values to CSS strings\n    const getWidthValue = (value: string | number | undefined) => {\n      if (value === undefined) return undefined\n      return typeof value === 'number' ? `${value}px` : value\n    }\n\n    const wrapperStyle: React.CSSProperties = {\n      // Don't set width if fullWidth is true, let CSS class handle it\n      width: fullWidth ? undefined : getWidthValue(width),\n      minWidth: getWidthValue(minWidth),\n      maxWidth: getWidthValue(maxWidth),\n    }\n\n    // Process wrapper utilities\n    const { className: wrapperClassName, style: wrapperStyleProcessed } = useResponsiveUtilities({\n      className: '',\n      style: { ...wrapperStyle, ...style },\n      componentClasses: clsx(\n        styles.wrapper,\n        {\n          [styles.fullWidth]: fullWidth,\n        }\n      )\n    })\n\n    // Process textarea utilities\n    const { className: textareaClassName, style: textareaStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.textarea,\n        styles[variant],\n        styles[size],\n        {\n          [styles.disabled]: disabled,\n          [styles.readOnly]: readOnly,\n          [styles.withShadow]: brutalistShadow && !disabled && !readOnly,\n          [styles.autoResize]: autoResize,\n          [styles.overLimit]: isOverLimit,\n        }\n      )\n    })\n\n    return (\n      <div\n        className={wrapperClassName}\n        style={wrapperStyleProcessed}\n      >\n        <textarea\n          ref={setRefs}\n          className={textareaClassName}\n          style={textareaStyle}\n          disabled={disabled}\n          readOnly={readOnly}\n          value={currentValue}\n          onChange={handleChange}\n          rows={!autoResize ? minRows : undefined}\n          {...props}\n        />\n        {showCharacterCount && (\n          <div\n            className={clsx(\n              styles.characterCount,\n              {\n                [styles.error]: isOverLimit || variant === 'error',\n                [styles.success]: variant === 'success',\n              }\n            )}\n          >\n            <span className={styles.count}>\n              {charCount}\n              {maxCharacters && ` / ${maxCharacters}`}\n            </span>\n          </div>\n        )}\n      </div>\n    )\n  }\n)\n\nTextarea.displayName = 'Textarea'","import React, { useState, useRef, useEffect, forwardRef, useImperativeHandle } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './CustomSelect.module.css'\n\nexport interface SelectOption {\n  value: string\n  label: string\n  disabled?: boolean\n}\n\nexport interface SelectOptionGroup {\n  label: string\n  options: SelectOption[]\n}\n\nexport interface CustomSelectProps {\n  variant?: 'default' | 'error' | 'success'\n  size?: 'sm' | 'md' | 'lg'\n  options?: (SelectOption | SelectOptionGroup)[]\n  placeholder?: string\n  fullWidth?: boolean\n  brutalistShadow?: boolean\n  disabled?: boolean\n  value?: string\n  defaultValue?: string\n  onChange?: (value: string) => void\n  onBlur?: () => void\n  onFocus?: () => void\n  className?: string\n  style?: React.CSSProperties\n  name?: string\n  id?: string\n}\n\nfunction isOptionGroup(option: SelectOption | SelectOptionGroup): option is SelectOptionGroup {\n  return 'options' in option\n}\n\nexport const CustomSelect = forwardRef<HTMLDivElement, CustomSelectProps>(\n  (\n    {\n      className,\n      style,\n      variant = 'default',\n      size = 'md',\n      options = [],\n      placeholder = 'Select an option...',\n      fullWidth = false,\n      brutalistShadow = true,\n      disabled = false,\n      value,\n      defaultValue,\n      onChange,\n      onBlur,\n      onFocus,\n      name,\n      id,\n    },\n    ref\n  ) => {\n    const [isOpen, setIsOpen] = useState(false)\n    const [selectedValue, setSelectedValue] = useState(value || defaultValue || '')\n    const [focusedIndex, setFocusedIndex] = useState(-1)\n    const dropdownRef = useRef<HTMLDivElement>(null)\n    const triggerRef = useRef<HTMLButtonElement>(null)\n\n    useImperativeHandle(ref, () => dropdownRef.current!, [])\n\n    // Flatten options for keyboard navigation\n    const flatOptions: SelectOption[] = []\n    options.forEach(option => {\n      if (isOptionGroup(option)) {\n        flatOptions.push(...option.options.filter(opt => !opt.disabled))\n      } else if (!option.disabled) {\n        flatOptions.push(option)\n      }\n    })\n\n    // Update selectedValue when value prop changes\n    useEffect(() => {\n      if (value !== undefined) {\n        setSelectedValue(value)\n      }\n    }, [value])\n\n    // Close dropdown when clicking outside\n    useEffect(() => {\n      const handleClickOutside = (event: MouseEvent) => {\n        if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n          setIsOpen(false)\n          setFocusedIndex(-1)\n        }\n      }\n\n      if (isOpen) {\n        document.addEventListener('mousedown', handleClickOutside)\n        return () => document.removeEventListener('mousedown', handleClickOutside)\n      }\n    }, [isOpen])\n\n    const handleToggle = () => {\n      if (disabled) return\n      \n      setIsOpen(!isOpen)\n      setFocusedIndex(-1)\n      \n      if (!isOpen) {\n        onFocus?.()\n      } else {\n        onBlur?.()\n      }\n    }\n\n    const handleOptionSelect = (optionValue: string) => {\n      setSelectedValue(optionValue)\n      setIsOpen(false)\n      setFocusedIndex(-1)\n      onChange?.(optionValue)\n      onBlur?.()\n      triggerRef.current?.focus()\n    }\n\n    const handleKeyDown = (event: React.KeyboardEvent) => {\n      if (disabled) return\n\n      switch (event.key) {\n        case 'Enter':\n        case ' ':\n          event.preventDefault()\n          if (isOpen && focusedIndex >= 0) {\n            handleOptionSelect(flatOptions[focusedIndex].value)\n          } else {\n            setIsOpen(!isOpen)\n          }\n          break\n        case 'Escape':\n          setIsOpen(false)\n          setFocusedIndex(-1)\n          triggerRef.current?.focus()\n          break\n        case 'ArrowDown':\n          event.preventDefault()\n          if (!isOpen) {\n            setIsOpen(true)\n            setFocusedIndex(0)\n          } else {\n            setFocusedIndex(prev => \n              prev < flatOptions.length - 1 ? prev + 1 : prev\n            )\n          }\n          break\n        case 'ArrowUp':\n          event.preventDefault()\n          if (isOpen) {\n            setFocusedIndex(prev => prev > 0 ? prev - 1 : prev)\n          }\n          break\n      }\n    }\n\n    // Find selected option label\n    const selectedOption = flatOptions.find(opt => opt.value === selectedValue)\n    const displayValue = selectedOption?.label || placeholder\n\n    return (\n      <div\n        ref={dropdownRef}\n        className={clsx(\n          styles.selectWrapper,\n          styles[variant],\n          styles[size],\n          {\n            [styles.fullWidth]: fullWidth,\n            [styles.disabled]: disabled,\n            [styles.withShadow]: brutalistShadow && !disabled,\n            [styles.isOpen]: isOpen,\n          },\n          className\n        )}\n        style={style}\n      >\n        {/* Hidden input for form submission */}\n        <input\n          type=\"hidden\"\n          name={name}\n          value={selectedValue}\n        />\n        \n        {/* Trigger button */}\n        <button\n          ref={triggerRef}\n          type=\"button\"\n          className={styles.trigger}\n          onClick={handleToggle}\n          onKeyDown={handleKeyDown}\n          disabled={disabled}\n          aria-haspopup=\"listbox\"\n          aria-expanded={isOpen}\n          aria-labelledby={id}\n          id={id}\n        >\n          <span className={clsx(styles.value, { [styles.placeholder]: !selectedOption })}>\n            {displayValue}\n          </span>\n          <div className={styles.arrow}>\n            <svg\n              width=\"12\"\n              height=\"8\"\n              viewBox=\"0 0 12 8\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              className={clsx({ [styles.arrowOpen]: isOpen })}\n            >\n              <path\n                d=\"M1 1L6 6L11 1\"\n                stroke=\"currentColor\"\n                strokeWidth=\"2\"\n                strokeLinecap=\"square\"\n                strokeLinejoin=\"miter\"\n              />\n            </svg>\n          </div>\n        </button>\n\n        {/* Dropdown */}\n        {isOpen && (\n          <div className={styles.dropdown} role=\"listbox\">\n            {options.map((option, groupIndex) => {\n              if (isOptionGroup(option)) {\n                return (\n                  <div key={`group-${groupIndex}`} className={styles.optionGroup}>\n                    <div className={styles.groupLabel}>{option.label}</div>\n                    {option.options.map((opt) => {\n                      const flatIndex = flatOptions.findIndex(fo => fo.value === opt.value)\n                      return (\n                        <button\n                          key={opt.value}\n                          type=\"button\"\n                          className={clsx(\n                            styles.option,\n                            {\n                              [styles.selected]: opt.value === selectedValue,\n                              [styles.focused]: flatIndex === focusedIndex,\n                              [styles.disabled]: opt.disabled,\n                            }\n                          )}\n                          onClick={() => !opt.disabled && handleOptionSelect(opt.value)}\n                          disabled={opt.disabled}\n                          role=\"option\"\n                          aria-selected={opt.value === selectedValue}\n                        >\n                          {opt.label}\n                        </button>\n                      )\n                    })}\n                  </div>\n                )\n              } else {\n                const flatIndex = flatOptions.findIndex(fo => fo.value === option.value)\n                return (\n                  <button\n                    key={option.value}\n                    type=\"button\"\n                    className={clsx(\n                      styles.option,\n                      {\n                        [styles.selected]: option.value === selectedValue,\n                        [styles.focused]: flatIndex === focusedIndex,\n                        [styles.disabled]: option.disabled,\n                      }\n                    )}\n                    onClick={() => !option.disabled && handleOptionSelect(option.value)}\n                    disabled={option.disabled}\n                    role=\"option\"\n                    aria-selected={option.value === selectedValue}\n                  >\n                    {option.label}\n                  </button>\n                )\n              }\n            })}\n          </div>\n        )}\n      </div>\n    )\n  }\n)\n\nCustomSelect.displayName = 'CustomSelect'","/**\n * @module Select\n * @description A customizable select dropdown component with support for single selection, search, and keyboard navigation.\n */\n\nimport React, { forwardRef, SelectHTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport { CustomSelect } from './CustomSelect'\nimport styles from './Select.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface SelectOption {\n  value: string\n  label: string\n  disabled?: boolean\n}\n\nexport interface SelectOptionGroup {\n  label: string\n  options: SelectOption[]\n}\n\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n  variant?: 'default' | 'error' | 'success'\n  size?: 'sm' | 'md' | 'lg'\n  options?: (SelectOption | SelectOptionGroup)[]\n  placeholder?: string\n  fullWidth?: boolean\n  brutalistShadow?: boolean\n  customArrow?: boolean\n  useCustomDropdown?: boolean\n  onValueChange?: (value: string) => void\n}\n\nfunction isOptionGroup(option: SelectOption | SelectOptionGroup): option is SelectOptionGroup {\n  return 'options' in option\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n  (\n    {\n      className,\n      style,\n      variant = 'default',\n      size = 'md',\n      options = [],\n      placeholder,\n      fullWidth = false,\n      brutalistShadow = true,\n      customArrow = true,\n      useCustomDropdown = true,\n      onValueChange,\n      disabled,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    // Process select utilities\n    const { className: selectClassName, style: selectStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.select,\n        styles[variant],\n        styles[size],\n        {\n          [styles.disabled]: disabled,\n          [styles.withShadow]: brutalistShadow && !disabled,\n          [styles.fullWidth]: fullWidth,\n          [styles.hasPlaceholder]: placeholder && !props.value && !props.defaultValue,\n        }\n      )\n    })\n\n    // Process wrapper utilities\n    const { className: wrapperClassName, style: wrapperStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.selectWrapper,\n        styles[variant],\n        styles[size],\n        {\n          [styles.fullWidth]: fullWidth,\n          [styles.disabled]: disabled,\n          [styles.withShadow]: brutalistShadow && !disabled,\n        }\n      )\n    })\n\n    // Use custom dropdown by default for better styling\n    if (useCustomDropdown) {\n      // Convert JSX children to options array if options prop is empty\n      let processedOptions = options\n      \n      if (options.length === 0 && children) {\n        processedOptions = []\n        React.Children.forEach(children, (child) => {\n          if (React.isValidElement(child)) {\n            if (child.type === 'option') {\n              const value = child.props.value || ''\n              const label = child.props.children || ''\n              if (value && label) {\n                processedOptions.push({\n                  value: value,\n                  label: label,\n                  disabled: child.props.disabled\n                })\n              }\n            } else if (child.type === 'optgroup') {\n              const groupLabel = child.props.label || ''\n              const groupOptions: SelectOption[] = []\n              \n              React.Children.forEach(child.props.children, (optionChild) => {\n                if (React.isValidElement(optionChild) && optionChild.type === 'option') {\n                  const props = optionChild.props as React.OptionHTMLAttributes<HTMLOptionElement>\n                  const value = props.value || ''\n                  const label = props.children || ''\n                  if (value && label) {\n                    groupOptions.push({\n                      value: String(value),\n                      label: String(label),\n                      disabled: props.disabled\n                    })\n                  }\n                }\n              })\n              \n              if (groupOptions.length > 0) {\n                processedOptions.push({\n                  label: groupLabel,\n                  options: groupOptions\n                })\n              }\n            }\n          }\n        })\n      }\n      \n      return (\n        <CustomSelect\n          variant={variant}\n          size={size}\n          options={processedOptions}\n          placeholder={placeholder}\n          fullWidth={fullWidth}\n          brutalistShadow={brutalistShadow}\n          disabled={disabled}\n          value={props.value as string}\n          defaultValue={props.defaultValue as string}\n          onChange={onValueChange || ((value) => {\n            // Create a synthetic event for compatibility\n            const syntheticEvent = {\n              target: { value },\n              currentTarget: { value }\n            } as React.ChangeEvent<HTMLSelectElement>\n            props.onChange?.(syntheticEvent)\n          })}\n          onBlur={props.onBlur ? () => props.onBlur?.({} as React.FocusEvent<HTMLSelectElement>) : undefined}\n          onFocus={props.onFocus ? () => props.onFocus?.({} as React.FocusEvent<HTMLSelectElement>) : undefined}\n          className={className}\n          style={style}\n          name={props.name}\n          id={props.id}\n        />\n      )\n    }\n\n    const selectElement = (\n      <select\n        ref={ref}\n        className={selectClassName}\n        style={selectStyle}\n        disabled={disabled}\n        {...props}\n      >\n        {placeholder && (\n          <option value=\"\" disabled hidden>\n            {placeholder}\n          </option>\n        )}\n        {children\n          ? children\n          : options.map((option, index) => {\n              if (isOptionGroup(option)) {\n                return (\n                  <optgroup key={`group-${index}`} label={option.label}>\n                    {option.options.map((opt) => (\n                      <option\n                        key={opt.value}\n                        value={opt.value}\n                        disabled={opt.disabled}\n                      >\n                        {opt.label}\n                      </option>\n                    ))}\n                  </optgroup>\n                )\n              } else {\n                return (\n                  <option\n                    key={option.value}\n                    value={option.value}\n                    disabled={option.disabled}\n                  >\n                    {option.label}\n                  </option>\n                )\n              }\n            })}\n      </select>\n    )\n\n    if (customArrow) {\n      return (\n        <div\n          className={wrapperClassName}\n          style={wrapperStyle}\n        >\n          {selectElement}\n          <div className={styles.arrow}>\n            <svg\n              width=\"12\"\n              height=\"8\"\n              viewBox=\"0 0 12 8\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M1 1L6 6L11 1\"\n                stroke=\"currentColor\"\n                strokeWidth=\"2\"\n                strokeLinecap=\"square\"\n                strokeLinejoin=\"miter\"\n              />\n            </svg>\n          </div>\n        </div>\n      )\n    }\n\n    return selectElement\n  }\n)\n\nSelect.displayName = 'Select'","/**\n * @module Checkbox\n * @description A customizable checkbox component with indeterminate state support and keyboard accessibility.\n */\n\nimport React, { forwardRef, InputHTMLAttributes, useRef, useEffect } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Checkbox.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n  size?: 'sm' | 'md' | 'lg'\n  label?: React.ReactNode\n  indeterminate?: boolean\n  error?: boolean\n  brutalistShadow?: boolean\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n  (\n    {\n      className,\n      style,\n      size = 'md',\n      label,\n      indeterminate = false,\n      error = false,\n      brutalistShadow = true,\n      disabled,\n      id,\n      ...props\n    },\n    ref\n  ) => {\n    const internalRef = useRef<HTMLInputElement>(null)\n    const checkboxRef = ref || internalRef\n\n    // Handle indeterminate state\n    useEffect(() => {\n      const checkbox = typeof checkboxRef === 'function' ? null : checkboxRef.current\n      if (checkbox) {\n        checkbox.indeterminate = indeterminate\n      }\n    }, [indeterminate, checkboxRef])\n\n    const checkboxId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`\n\n    // Process container utilities\n    const { className: containerClassName, style: containerStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.container,\n        styles[size],\n        {\n          [styles.disabled]: disabled,\n          [styles.error]: error,\n        }\n      )\n    })\n\n    return (\n      <div \n        className={containerClassName}\n        style={containerStyle}\n      >\n        <div className={styles.checkboxWrapper}>\n          <input\n            ref={checkboxRef as React.Ref<HTMLInputElement>}\n            type=\"checkbox\"\n            id={checkboxId}\n            className={styles.input}\n            disabled={disabled}\n            aria-invalid={error}\n            {...props}\n          />\n          <div \n            className={clsx(\n              styles.checkbox,\n              {\n                [styles.withShadow]: brutalistShadow,\n                [styles.indeterminate]: indeterminate,\n              }\n            )}\n          >\n            <svg \n              className={styles.checkmark} \n              viewBox=\"0 0 24 24\" \n              fill=\"none\"\n              aria-hidden=\"true\"\n            >\n              <path \n                d=\"M5 13L9 17L19 7\" \n                stroke=\"currentColor\" \n                strokeWidth=\"4\" \n                strokeLinecap=\"square\" \n                strokeLinejoin=\"miter\"\n              />\n            </svg>\n            <div className={styles.indeterminateLine} />\n          </div>\n        </div>\n        {label && (\n          <label htmlFor={checkboxId} className={styles.label}>\n            {label}\n          </label>\n        )}\n      </div>\n    )\n  }\n)\n\nCheckbox.displayName = 'Checkbox'","/**\n * @module Radio\n * @description A radio button component system with group management for single-selection scenarios. Features brutalist styling with customizable sizes and validation states.\n */\n\nimport React, { forwardRef, InputHTMLAttributes, createContext, useContext, useState } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Radio.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Context value interface for RadioGroup\n */\ninterface RadioGroupContextValue {\n  name: string\n  value: string | undefined\n  onChange: (value: string) => void\n  disabled?: boolean\n  error?: boolean\n  size?: 'sm' | 'md' | 'lg'\n  brutalistShadow?: boolean\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | undefined>(undefined)\n\n/**\n * Props for the RadioGroup component\n */\nexport interface RadioGroupProps {\n  /**\n   * Name attribute for the radio group (required for form handling)\n   */\n  name: string\n  \n  /**\n   * Currently selected value (controlled mode)\n   */\n  value?: string\n  \n  /**\n   * Default selected value (uncontrolled mode)\n   */\n  defaultValue?: string\n  \n  /**\n   * Callback function called when the selection changes\n   */\n  onChange?: (value: string) => void\n  \n  /**\n   * Radio buttons to render within the group\n   */\n  children: React.ReactNode\n  \n  /**\n   * Layout direction for the radio buttons\n   * @default 'vertical'\n   */\n  direction?: 'horizontal' | 'vertical'\n  \n  /**\n   * Size variant for all radio buttons in the group\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Whether all radio buttons in the group are disabled\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Whether the group is in an error state\n   * @default false\n   */\n  error?: boolean\n  \n  /**\n   * Whether to apply brutalist shadow effect to radio buttons\n   * @default true\n   */\n  brutalistShadow?: boolean\n  \n  /**\n   * Additional CSS classes to apply to the group container\n   */\n  className?: string\n  \n  /**\n   * Additional inline styles to apply to the group container\n   */\n  style?: React.CSSProperties\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n  name,\n  value: controlledValue,\n  defaultValue,\n  onChange,\n  children,\n  direction = 'vertical',\n  size = 'md',\n  disabled = false,\n  error = false,\n  brutalistShadow = true,\n  className,\n  style,\n}) => {\n  const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue)\n  const isControlled = controlledValue !== undefined\n  const value = isControlled ? controlledValue : uncontrolledValue\n\n  const handleChange = (newValue: string) => {\n    if (!isControlled) {\n      setUncontrolledValue(newValue)\n    }\n    onChange?.(newValue)\n  }\n\n  // Process group utilities\n  const { className: groupClassName, style: groupStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: clsx(\n      styles.group,\n      styles[direction],\n      {\n        [styles.disabled]: disabled,\n        [styles.error]: error,\n      }\n    )\n  })\n\n  return (\n    <RadioGroupContext.Provider \n      value={{ \n        name, \n        value, \n        onChange: handleChange, \n        disabled, \n        error,\n        size,\n        brutalistShadow\n      }}\n    >\n      <div \n        className={groupClassName}\n        style={groupStyle}\n        role=\"radiogroup\"\n        aria-invalid={error}\n      >\n        {children}\n      </div>\n    </RadioGroupContext.Provider>\n  )\n}\n\n/**\n * Props for the Radio component\n */\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'onChange'> {\n  /**\n   * The value of this radio button\n   */\n  value: string\n  \n  /**\n   * Label text or element to display next to the radio button\n   */\n  label?: React.ReactNode\n  \n  /**\n   * Size variant for this specific radio button (overrides group size)\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Whether this specific radio button is disabled (overrides group disabled)\n   */\n  disabled?: boolean\n  \n  /**\n   * Whether this specific radio button is in error state (overrides group error)\n   */\n  error?: boolean\n  \n  /**\n   * Whether to apply brutalist shadow effect (overrides group setting)\n   */\n  brutalistShadow?: boolean\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n  (\n    {\n      className,\n      style,\n      value,\n      label,\n      size: propSize,\n      disabled: propDisabled,\n      error: propError,\n      brutalistShadow: propShadow,\n      id,\n      ...props\n    },\n    ref\n  ) => {\n    const context = useContext(RadioGroupContext)\n    \n    if (!context) {\n      throw new Error('Radio must be used within RadioGroup')\n    }\n\n    const { \n      name, \n      value: groupValue, \n      onChange, \n      disabled: groupDisabled, \n      error: groupError,\n      size: groupSize,\n      brutalistShadow: groupShadow\n    } = context\n\n    const size = propSize || groupSize || 'md'\n    const disabled = propDisabled || groupDisabled\n    const error = propError || groupError\n    const brutalistShadow = propShadow !== undefined ? propShadow : groupShadow\n    const isChecked = value === groupValue\n    const radioId = id || `radio-${name}-${value}`\n\n    const handleChange = () => {\n      if (!disabled) {\n        onChange(value)\n      }\n    }\n\n    // Process container utilities\n    const { className: containerClassName, style: containerStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.container,\n        styles[size],\n        {\n          [styles.disabled]: disabled,\n          [styles.error]: error,\n          [styles.checked]: isChecked,\n        }\n      )\n    })\n\n    return (\n      <div \n        className={containerClassName}\n        style={containerStyle}\n      >\n        <div className={styles.radioWrapper}>\n          <input\n            ref={ref}\n            type=\"radio\"\n            id={radioId}\n            name={name}\n            value={value}\n            checked={isChecked}\n            onChange={() => handleChange()}\n            className={styles.input}\n            disabled={disabled}\n            aria-invalid={error}\n            {...props}\n          />\n          <div \n            className={clsx(\n              styles.radio,\n              {\n                [styles.withShadow]: brutalistShadow,\n              }\n            )}\n          >\n            <div className={styles.indicator} />\n          </div>\n        </div>\n        {label && (\n          <label htmlFor={radioId} className={styles.label}>\n            {label}\n          </label>\n        )}\n      </div>\n    )\n  }\n)\n\nRadio.displayName = 'Radio'","/**\n * @module Switch\n * @description A toggle switch component for binary choices. Provides clear on/off states with smooth animations.\n */\n\nimport React, { forwardRef, InputHTMLAttributes, useState, useCallback } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Switch.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n  size?: 'sm' | 'md' | 'lg'\n  label?: React.ReactNode\n  labelPosition?: 'left' | 'right'\n  loading?: boolean\n  brutalistShadow?: boolean\n  onCheckedChange?: (checked: boolean) => void\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n  (\n    {\n      className,\n      style,\n      size = 'md',\n      label,\n      labelPosition = 'right',\n      loading = false,\n      brutalistShadow = true,\n      disabled,\n      checked: controlledChecked,\n      defaultChecked,\n      onChange,\n      onCheckedChange,\n      id,\n      ...props\n    },\n    ref\n  ) => {\n    // Handle controlled/uncontrolled state\n    const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false)\n    const isControlled = controlledChecked !== undefined\n    const isChecked = isControlled ? controlledChecked : internalChecked\n\n    const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n      const newChecked = event.target.checked\n      \n      // Update internal state for uncontrolled mode\n      if (!isControlled) {\n        setInternalChecked(newChecked)\n      }\n      \n      // Call event handlers\n      onChange?.(event)\n      onCheckedChange?.(newChecked)\n    }, [isControlled, onChange, onCheckedChange])\n\n    const switchId = id || `switch-${Math.random().toString(36).substr(2, 9)}`\n    const isDisabled = disabled || loading\n\n    // Process container utilities\n    const { className: containerClassName, style: containerStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.container,\n        styles[size],\n        {\n          [styles.disabled]: isDisabled,\n          [styles.labelLeft]: labelPosition === 'left',\n        }\n      )\n    })\n\n    const switchElement = (\n      <div className={styles.switchWrapper}>\n        <input\n          ref={ref}\n          type=\"checkbox\"\n          id={switchId}\n          className={styles.input}\n          disabled={isDisabled}\n          checked={isChecked}\n          onChange={handleChange}\n          {...props}\n        />\n        <div \n          className={clsx(\n            styles.switch,\n            {\n              [styles.withShadow]: brutalistShadow,\n              [styles.checked]: isChecked,\n              [styles.loading]: loading,\n            }\n          )}\n        >\n          <div className={styles.thumb}>\n            {loading && (\n              <div className={styles.loadingIndicator} />\n            )}\n          </div>\n        </div>\n      </div>\n    )\n\n    const labelElement = label && (\n      <label htmlFor={switchId} className={styles.label}>\n        {label}\n      </label>\n    )\n\n    return (\n      <div \n        className={containerClassName}\n        style={containerStyle}\n      >\n        {labelPosition === 'left' && labelElement}\n        {switchElement}\n        {labelPosition === 'right' && labelElement}\n      </div>\n    )\n  }\n)\n\nSwitch.displayName = 'Switch'","/**\n * @module Toggle\n * @description A button component that can be toggled between pressed and unpressed states. Supports both controlled and uncontrolled usage patterns with accessibility features.\n */\n\nimport React, { forwardRef, ButtonHTMLAttributes, useState, useCallback, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Toggle.module.css'\n\n/**\n * Props for the Toggle component\n */\nexport interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n  /**\n   * Visual style variant of the toggle button\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'outline'\n  \n  /**\n   * Size of the toggle button\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Controlled pressed state of the toggle\n   */\n  pressed?: boolean\n  \n  /**\n   * Default pressed state for uncontrolled usage\n   * @default false\n   */\n  defaultPressed?: boolean\n  \n  /**\n   * Callback function triggered when the pressed state changes\n   */\n  onPressedChange?: (pressed: boolean) => void\n  \n  /**\n   * Whether to apply the brutalist shadow effect\n   * @default true\n   */\n  brutalistShadow?: boolean\n  \n  /**\n   * Render as a child component (span) instead of button\n   * @default false\n   */\n  asChild?: boolean\n\n  /**\n   * Custom styles to apply to the toggle\n   */\n  style?: CSSProperties\n}\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n  (\n    {\n      className,\n      style,\n      variant = 'default',\n      size = 'md',\n      pressed: controlledPressed,\n      defaultPressed = false,\n      onPressedChange,\n      onClick,\n      disabled,\n      brutalistShadow = true,\n      children,\n      asChild = false,\n      ...props\n    },\n    ref\n  ) => {\n    // Handle controlled/uncontrolled state\n    const [internalPressed, setInternalPressed] = useState(defaultPressed)\n    const isControlled = controlledPressed !== undefined\n    const isPressed = isControlled ? controlledPressed : internalPressed\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.toggle,\n        styles[variant],\n        styles[size],\n        {\n          [styles.pressed]: isPressed,\n          [styles.disabled]: disabled,\n          [styles.withShadow]: brutalistShadow && !disabled,\n        }\n      )\n    })\n\n    const handleClick = useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\n      if (disabled) return\n      \n      const newPressed = !isPressed\n      \n      // Update internal state for uncontrolled mode\n      if (!isControlled) {\n        setInternalPressed(newPressed)\n      }\n      \n      // Call event handlers\n      onClick?.(event)\n      onPressedChange?.(newPressed)\n    }, [isControlled, isPressed, onClick, onPressedChange, disabled])\n\n    const Comp = asChild ? 'span' : 'button'\n\n    return (\n      <Comp\n        ref={ref}\n        type={asChild ? undefined : 'button'}\n        role=\"button\"\n        aria-pressed={isPressed}\n        data-state={isPressed ? 'on' : 'off'}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={handleClick}\n        disabled={disabled}\n        {...props}\n      >\n        {children}\n      </Comp>\n    )\n  }\n)\n\nToggle.displayName = 'Toggle'","/**\n * @module HoverCard\n * @description A card component that appears on hover to display additional information. Features automatic positioning, customizable delays, and support for rich content.\n */\n\nimport React, { forwardRef, useState, useRef, useEffect, ReactNode, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './HoverCard.module.css'\n\n// Context for compound components\nconst HoverCardContext = React.createContext<{\n  open: boolean\n  setOpen: (open: boolean) => void\n  triggerRef: React.RefObject<HTMLDivElement>\n} | null>(null)\n\nconst useHoverCard = () => {\n  const context = React.useContext(HoverCardContext)\n  if (!context) {\n    throw new Error('HoverCard components must be used within a HoverCard')\n  }\n  return context\n}\n\n/**\n * Props for the HoverCard component\n */\nexport interface HoverCardProps {\n  /**\n   * The trigger and content elements\n   */\n  children: ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the hover card\n   */\n  style?: CSSProperties\n  \n  /**\n   * Default open state when uncontrolled\n   * @default false\n   */\n  defaultOpen?: boolean\n  \n  /**\n   * Controlled open state\n   */\n  open?: boolean\n  \n  /**\n   * Callback fired when the hover card opens or closes\n   */\n  onOpenChange?: (open: boolean) => void\n  \n  /**\n   * Delay in milliseconds before showing the card\n   * @default 700\n   */\n  openDelay?: number\n  \n  /**\n   * Delay in milliseconds before hiding the card\n   * @default 300\n   */\n  closeDelay?: number\n}\n\n/**\n * A card that appears on hover to display additional information.\n * Useful for providing context without cluttering the interface.\n * \n * @example\n * ```tsx\n * <HoverCard>\n *   <HoverCard.Trigger asChild>\n *     <span>@username</span>\n *   </HoverCard.Trigger>\n *   <HoverCard.Content>\n *     <div>\n *       <h4>User Profile</h4>\n *       <p>Additional user information...</p>\n *     </div>\n *   </HoverCard.Content>\n * </HoverCard>\n * ```\n */\nexport const HoverCard: React.FC<HoverCardProps> & {\n  Trigger: typeof HoverCardTrigger\n  Content: typeof HoverCardContent\n} = ({\n  children,\n  className,\n  style,\n  defaultOpen = false,\n  open: controlledOpen,\n  onOpenChange,\n  openDelay = 700,\n  closeDelay = 300\n}) => {\n  const [internalOpen, setInternalOpen] = useState(defaultOpen)\n  const isControlled = controlledOpen !== undefined\n  const open = isControlled ? controlledOpen : internalOpen\n  const triggerRef = useRef<HTMLDivElement>(null)\n  const openTimerRef = useRef<NodeJS.Timeout>()\n  const closeTimerRef = useRef<NodeJS.Timeout>()\n\n  const setOpen = (newOpen: boolean) => {\n    // Clear any existing timers\n    if (openTimerRef.current) clearTimeout(openTimerRef.current)\n    if (closeTimerRef.current) clearTimeout(closeTimerRef.current)\n\n    const delay = newOpen ? openDelay : closeDelay\n\n    const timer = setTimeout(() => {\n      if (!isControlled) {\n        setInternalOpen(newOpen)\n      }\n      onOpenChange?.(newOpen)\n    }, delay)\n\n    if (newOpen) {\n      openTimerRef.current = timer\n    } else {\n      closeTimerRef.current = timer\n    }\n  }\n\n  // Cleanup timers on unmount\n  useEffect(() => {\n    return () => {\n      if (openTimerRef.current) clearTimeout(openTimerRef.current)\n      if (closeTimerRef.current) clearTimeout(closeTimerRef.current)\n    }\n  }, [])\n\n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: styles.root\n  })\n\n  return (\n    <HoverCardContext.Provider value={{ open, setOpen, triggerRef }}>\n      <div className={processedClassName} style={processedStyle}>\n        {children}\n      </div>\n    </HoverCardContext.Provider>\n  )\n}\n\n/**\n * Props for the HoverCard.Trigger component\n */\nexport interface HoverCardTriggerProps {\n  /**\n   * The element that triggers the hover card\n   */\n  children: ReactNode\n  \n  /**\n   * Whether to render as a child element instead of wrapping in a div\n   * @default false\n   */\n  asChild?: boolean\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the trigger\n   */\n  style?: CSSProperties\n}\n\n/**\n * The trigger area for the hover card.\n * Shows the card content on hover or focus.\n */\nconst HoverCardTrigger = forwardRef<HTMLDivElement, HoverCardTriggerProps>(\n  ({ children, asChild = false, className, style }, _ref) => {\n    const { setOpen, triggerRef } = useHoverCard()\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.trigger\n    })\n\n    const handleMouseEnter = () => setOpen(true)\n    const handleMouseLeave = () => setOpen(false)\n    const handleFocus = () => setOpen(true)\n    const handleBlur = () => setOpen(false)\n\n    const triggerProps = {\n      ref: triggerRef,\n      onMouseEnter: handleMouseEnter,\n      onMouseLeave: handleMouseLeave,\n      onFocus: handleFocus,\n      onBlur: handleBlur,\n      className: processedClassName,\n      style: processedStyle\n    }\n\n    if (asChild && React.isValidElement(children)) {\n      return React.cloneElement(children as React.ReactElement<any>, triggerProps)\n    }\n\n    return (\n      <div {...triggerProps}>\n        {children}\n      </div>\n    )\n  }\n)\n\nHoverCardTrigger.displayName = 'HoverCardTrigger'\n\n/**\n * Props for the HoverCard.Content component\n */\nexport interface HoverCardContentProps {\n  /**\n   * The content to display in the hover card\n   */\n  children: ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the content\n   */\n  style?: CSSProperties\n  \n  /**\n   * The preferred side to position the card\n   * @default 'bottom'\n   */\n  side?: 'top' | 'right' | 'bottom' | 'left'\n  \n  /**\n   * How to align the card relative to the trigger\n   * @default 'center'\n   */\n  align?: 'start' | 'center' | 'end'\n  \n  /**\n   * Distance in pixels from the trigger\n   * @default 8\n   */\n  sideOffset?: number\n  \n  /**\n   * Offset along the alignment axis\n   * @default 0\n   */\n  alignOffset?: number\n  \n  /**\n   * Boundary to check for collisions\n   * @default 'viewport'\n   */\n  collisionBoundary?: 'viewport' | 'parent' | HTMLElement\n  \n  /**\n   * Whether to hide when the trigger is detached\n   * @default true\n   */\n  hideWhenDetached?: boolean\n  \n  /**\n   * Whether to apply the brutalist shadow effect\n   * @default true\n   */\n  brutalistShadow?: boolean\n}\n\n/**\n * The content of the hover card.\n * Positioned automatically with collision detection.\n */\nconst HoverCardContent = forwardRef<HTMLDivElement, HoverCardContentProps>(\n  ({\n    children,\n    className,\n    style,\n    side = 'bottom',\n    align = 'center',\n    sideOffset = 8,\n    alignOffset = 0,\n    collisionBoundary = 'viewport',\n    hideWhenDetached = true, // eslint-disable-line @typescript-eslint/no-unused-vars\n    brutalistShadow = true,\n    ...props\n  }, ref) => {\n    const { open, triggerRef, setOpen } = useHoverCard()\n    const internalRef = useRef<HTMLDivElement>(null)\n    const contentRef = (ref as React.RefObject<HTMLDivElement>) || internalRef\n    const [position, setPosition] = useState({ top: 0, left: 0 })\n    const [actualSide, setActualSide] = useState(side)\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.content,\n        brutalistShadow && styles.shadow,\n        styles[actualSide]\n      )\n    })\n\n    // Handle mouse events on content\n    const handleMouseEnter = () => setOpen(true)\n    const handleMouseLeave = () => setOpen(false)\n\n    // Update position when open or window resizes\n    useEffect(() => {\n      if (!open || !triggerRef.current || !contentRef.current) return\n\n      const updatePosition = () => {\n        const trigger = triggerRef.current\n        const content = contentRef.current\n        if (!trigger || !content) return\n\n        const triggerRect = trigger.getBoundingClientRect()\n        const contentRect = content.getBoundingClientRect()\n        const viewportWidth = window.innerWidth\n        const viewportHeight = window.innerHeight\n\n        let top = 0\n        let left = 0\n        let finalSide = side\n\n        // Calculate initial position based on side\n        switch (side) {\n          case 'top':\n            top = triggerRect.top - contentRect.height - sideOffset\n            left = triggerRect.left + triggerRect.width / 2 - contentRect.width / 2\n            break\n          case 'right':\n            top = triggerRect.top + triggerRect.height / 2 - contentRect.height / 2\n            left = triggerRect.right + sideOffset\n            break\n          case 'bottom':\n            top = triggerRect.bottom + sideOffset\n            left = triggerRect.left + triggerRect.width / 2 - contentRect.width / 2\n            break\n          case 'left':\n            top = triggerRect.top + triggerRect.height / 2 - contentRect.height / 2\n            left = triggerRect.left - contentRect.width - sideOffset\n            break\n        }\n\n        // Apply alignment offset\n        if (side === 'top' || side === 'bottom') {\n          if (align === 'start') {\n            left = triggerRect.left + alignOffset\n          } else if (align === 'end') {\n            left = triggerRect.right - contentRect.width - alignOffset\n          }\n        } else {\n          if (align === 'start') {\n            top = triggerRect.top + alignOffset\n          } else if (align === 'end') {\n            top = triggerRect.bottom - contentRect.height - alignOffset\n          }\n        }\n\n        // Collision detection and adjustment\n        if (collisionBoundary === 'viewport') {\n          // Check if content overflows viewport and flip if needed\n          if (side === 'bottom' && top + contentRect.height > viewportHeight) {\n            top = triggerRect.top - contentRect.height - sideOffset\n            finalSide = 'top'\n          } else if (side === 'top' && top < 0) {\n            top = triggerRect.bottom + sideOffset\n            finalSide = 'bottom'\n          } else if (side === 'right' && left + contentRect.width > viewportWidth) {\n            left = triggerRect.left - contentRect.width - sideOffset\n            finalSide = 'left'\n          } else if (side === 'left' && left < 0) {\n            left = triggerRect.right + sideOffset\n            finalSide = 'right'\n          }\n\n          // Ensure content stays within viewport\n          left = Math.max(8, Math.min(left, viewportWidth - contentRect.width - 8))\n          top = Math.max(8, Math.min(top, viewportHeight - contentRect.height - 8))\n        }\n\n        setPosition({ top, left })\n        setActualSide(finalSide)\n      }\n\n      updatePosition()\n      window.addEventListener('resize', updatePosition)\n      window.addEventListener('scroll', updatePosition, true)\n\n      return () => {\n        window.removeEventListener('resize', updatePosition)\n        window.removeEventListener('scroll', updatePosition, true)\n      }\n    }, [open, side, align, sideOffset, alignOffset, collisionBoundary, triggerRef, contentRef])\n\n    if (!open) return null\n\n    return (\n      <div\n        ref={contentRef}\n        className={processedClassName}\n        style={{\n          position: 'fixed',\n          top: `${position.top}px`,\n          left: `${position.left}px`,\n          zIndex: 50,\n          ...processedStyle\n        }}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <div className={styles.contentInner}>\n          {children}\n        </div>\n        <div className={styles.arrow} data-side={actualSide} />\n      </div>\n    )\n  }\n)\n\nHoverCardContent.displayName = 'HoverCardContent'\n\n// Attach compound components\nHoverCard.Trigger = HoverCardTrigger\nHoverCard.Content = HoverCardContent\n\nexport { HoverCardTrigger, HoverCardContent }","/**\n * @module Typography\n * @description A flexible typography component that supports multiple text variants, styling options, and semantic HTML elements. Provides consistent text styling across the application.\n */\n\nimport React, { forwardRef, HTMLAttributes, ReactNode, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Typography.module.css'\n\n/**\n * Props for the Typography component\n */\nexport interface TypographyProps extends HTMLAttributes<HTMLElement> {\n  /**\n   * Semantic variant determining the HTML element and base styling\n   * @default 'p'\n   */\n  variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'lead' | 'large' | 'small' | 'muted' | 'blockquote' | 'code' | 'list'\n  \n  /**\n   * Font size override independent of variant\n   */\n  size?: 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl'\n  \n  /**\n   * Font weight for the text\n   */\n  weight?: 'normal' | 'medium' | 'semibold' | 'bold' | 'black'\n  \n  /**\n   * Text alignment\n   */\n  align?: 'left' | 'center' | 'right' | 'justify'\n  \n  /**\n   * Text transformation\n   */\n  transform?: 'none' | 'uppercase' | 'lowercase' | 'capitalize'\n  \n  /**\n   * Color variant for the text\n   * @default 'default'\n   */\n  color?: 'default' | 'muted' | 'accent' | 'destructive' | 'warning' | 'success'\n  \n  /**\n   * Font family to use\n   */\n  family?: 'mono' | 'sans' | 'serif'\n  \n  /**\n   * Whether to truncate text with ellipsis on overflow\n   * @default false\n   */\n  truncate?: boolean\n  \n  /**\n   * The content to be rendered\n   */\n  children: ReactNode\n  \n  /**\n   * Render as a span element instead of the semantic variant element\n   * @default false\n   */\n  asChild?: boolean\n\n  /**\n   * Custom styles to apply to the typography\n   */\n  style?: CSSProperties\n}\n\nconst variantElementMap = {\n  h1: 'h1',\n  h2: 'h2', \n  h3: 'h3',\n  h4: 'h4',\n  h5: 'h5',\n  h6: 'h6',\n  p: 'p',\n  lead: 'p',\n  large: 'p',\n  small: 'p',\n  muted: 'p',\n  blockquote: 'blockquote',\n  code: 'code',\n  list: 'ul'\n} as const\n\nexport const Typography = forwardRef<HTMLElement, TypographyProps>(\n  ({\n    variant = 'p',\n    size,\n    weight,\n    align,\n    transform,\n    color = 'default',\n    family,\n    truncate = false,\n    className,\n    style,\n    children,\n    asChild = false,\n    ...props\n  }, ref) => {\n    const Component = asChild ? 'span' : variantElementMap[variant] as keyof JSX.IntrinsicElements\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.typography,\n        styles[variant],\n        size && styles[`size-${size}`],\n        weight && styles[`weight-${weight}`],\n        align && styles[`align-${align}`],\n        transform && styles[`transform-${transform}`],\n        color && styles[`color-${color}`],\n        family && styles[`family-${family}`],\n        {\n          [styles.truncate]: truncate\n        }\n      )\n    })\n\n    // Handle different component types manually to avoid type conflicts\n    if (Component === 'h1') {\n      return <h1 ref={ref as React.ForwardedRef<HTMLHeadingElement>} className={processedClassName} style={processedStyle} {...props}>{children}</h1>\n    }\n    if (Component === 'h2') {\n      return <h2 ref={ref as React.ForwardedRef<HTMLHeadingElement>} className={processedClassName} style={processedStyle} {...props}>{children}</h2>\n    }\n    if (Component === 'h3') {\n      return <h3 ref={ref as React.ForwardedRef<HTMLHeadingElement>} className={processedClassName} style={processedStyle} {...props}>{children}</h3>\n    }\n    if (Component === 'h4') {\n      return <h4 ref={ref as React.ForwardedRef<HTMLHeadingElement>} className={processedClassName} style={processedStyle} {...props}>{children}</h4>\n    }\n    if (Component === 'h5') {\n      return <h5 ref={ref as React.ForwardedRef<HTMLHeadingElement>} className={processedClassName} style={processedStyle} {...props}>{children}</h5>\n    }\n    if (Component === 'h6') {\n      return <h6 ref={ref as React.ForwardedRef<HTMLHeadingElement>} className={processedClassName} style={processedStyle} {...props}>{children}</h6>\n    }\n    if (Component === 'blockquote') {\n      return <blockquote ref={ref as React.ForwardedRef<HTMLQuoteElement>} className={processedClassName} style={processedStyle} {...props}>{children}</blockquote>\n    }\n    if (Component === 'code') {\n      return <code ref={ref as React.ForwardedRef<HTMLElement>} className={processedClassName} style={processedStyle} {...props}>{children}</code>\n    }\n    if (Component === 'ul') {\n      return <ul ref={ref as React.ForwardedRef<HTMLUListElement>} className={processedClassName} style={processedStyle} {...props}>{children}</ul>\n    }\n    if (Component === 'span') {\n      return <span ref={ref as React.ForwardedRef<HTMLSpanElement>} className={processedClassName} style={processedStyle} {...props}>{children}</span>\n    }\n    \n    // Default to paragraph\n    return <p ref={ref as React.ForwardedRef<HTMLParagraphElement>} className={processedClassName} style={processedStyle} {...props}>{children}</p>\n  }\n)\n\nTypography.displayName = 'Typography'\n\n// Convenience components for common use cases\nexport const TypographyH1 = forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"h1\" ref={ref} {...props} />\n)\nTypographyH1.displayName = 'TypographyH1'\n\nexport const TypographyH2 = forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"h2\" ref={ref} {...props} />\n)\nTypographyH2.displayName = 'TypographyH2'\n\nexport const TypographyH3 = forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"h3\" ref={ref} {...props} />\n)\nTypographyH3.displayName = 'TypographyH3'\n\nexport const TypographyH4 = forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"h4\" ref={ref} {...props} />\n)\nTypographyH4.displayName = 'TypographyH4'\n\nexport const TypographyP = forwardRef<HTMLParagraphElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"p\" ref={ref} {...props} />\n)\nTypographyP.displayName = 'TypographyP'\n\nexport const TypographyLead = forwardRef<HTMLParagraphElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"lead\" ref={ref} {...props} />\n)\nTypographyLead.displayName = 'TypographyLead'\n\nexport const TypographyLarge = forwardRef<HTMLParagraphElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"large\" ref={ref} {...props} />\n)\nTypographyLarge.displayName = 'TypographyLarge'\n\nexport const TypographySmall = forwardRef<HTMLParagraphElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"small\" ref={ref} {...props} />\n)\nTypographySmall.displayName = 'TypographySmall'\n\nexport const TypographyMuted = forwardRef<HTMLParagraphElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"muted\" ref={ref} {...props} />\n)\nTypographyMuted.displayName = 'TypographyMuted'\n\nexport const TypographyBlockquote = forwardRef<HTMLQuoteElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"blockquote\" ref={ref} {...props} />\n)\nTypographyBlockquote.displayName = 'TypographyBlockquote'\n\nexport const TypographyCode = forwardRef<HTMLElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"code\" ref={ref} {...props} />\n)\nTypographyCode.displayName = 'TypographyCode'\n\nexport const TypographyList = forwardRef<HTMLUListElement, Omit<TypographyProps, 'variant'>>(\n  (props, ref) => <Typography variant=\"list\" ref={ref} {...props} />\n)\nTypographyList.displayName = 'TypographyList'","/**\n * @module Command\n * @description A command palette component for building searchable, keyboard-navigable menus. Inspired by command palettes in modern applications with compound components for flexible composition.\n */\n\nimport React, { forwardRef, useState, useRef, useEffect, ReactNode, KeyboardEvent, useMemo, useCallback, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Command.module.css'\n\n// Context for compound components\nconst CommandContext = React.createContext<{\n  search: string\n  setSearch: (search: string) => void\n  selectedIndex: number\n  setSelectedIndex: (index: number) => void\n  items: CommandItemData[]\n  setItems: React.Dispatch<React.SetStateAction<CommandItemData[]>>\n  onSelect?: (value: string) => void\n  visibleCount: number\n  setVisibleCount: React.Dispatch<React.SetStateAction<number>>\n} | null>(null)\n\nconst useCommand = () => {\n  const context = React.useContext(CommandContext)\n  if (!context) {\n    throw new Error('Command components must be used within a Command')\n  }\n  return context\n}\n\ninterface CommandItemData {\n  value: string\n  keywords?: string[]\n  disabled?: boolean\n}\n\n/**\n * Props for the Command component\n */\nexport interface CommandProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n  /**\n   * The content of the command palette (typically Command.Input, Command.List, etc.)\n   */\n  children: ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n  \n  /**\n   * Callback fired when an item is selected\n   */\n  onSelect?: (value: string) => void\n  \n  /**\n   * Default search value when uncontrolled\n   * @default ''\n   */\n  defaultValue?: string\n  \n  /**\n   * Controlled search value\n   */\n  value?: string\n  \n  /**\n   * Callback fired when the search value changes\n   */\n  onValueChange?: (value: string) => void\n  \n  /**\n   * Custom filter function for matching items\n   */\n  filter?: (value: string, search: string, keywords?: string[]) => number\n  \n  /**\n   * Whether to filter items based on search input\n   * @default true\n   */\n  shouldFilter?: boolean\n  \n  /**\n   * Placeholder text for the search input\n   */\n  placeholder?: string\n}\n\n/**\n * A command palette component for searchable, keyboard-navigable menus.\n * Provides a flexible structure for building command interfaces with filtering and grouping.\n * \n * @example\n * ```tsx\n * <Command onSelect={(value) => console.log(value)}>\n *   <Command.Input placeholder=\"Type a command...\" />\n *   <Command.List>\n *     <Command.Empty>No results found.</Command.Empty>\n *     <Command.Group heading=\"Suggestions\">\n *       <Command.Item value=\"profile\">Profile</Command.Item>\n *       <Command.Item value=\"settings\">Settings</Command.Item>\n *     </Command.Group>\n *   </Command.List>\n * </Command>\n * ```\n */\nexport const Command: React.FC<CommandProps> & {\n  Input: typeof CommandInput\n  List: typeof CommandList\n  Empty: typeof CommandEmpty\n  Group: typeof CommandGroup\n  Item: typeof CommandItem\n  Separator: typeof CommandSeparator\n} = ({\n  children,\n  className,\n  style,\n  onSelect,\n  defaultValue = '',\n  value: controlledValue,\n  onValueChange,\n  filter: _filter,\n  shouldFilter = true, // eslint-disable-line @typescript-eslint/no-unused-vars\n  ...props\n}) => {\n  const [search, setSearch] = useState(defaultValue)\n  const [selectedIndex, setSelectedIndex] = useState(0)\n  const [items, setItems] = useState<CommandItemData[]>([])\n  const [visibleCount, setVisibleCount] = useState(0)\n  const isControlled = controlledValue !== undefined\n  \n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: styles.command\n  })\n\n  const currentSearch = isControlled ? controlledValue : search\n\n  const handleSearchChange = useCallback((newSearch: string) => {\n    if (!isControlled) {\n      setSearch(newSearch)\n    }\n    onValueChange?.(newSearch)\n    setSelectedIndex(0)\n  }, [isControlled, onValueChange])\n\n  // Default filter function and custom filter are available for future use\n  // They can be implemented when needed for custom filtering logic\n\n  const contextValue = useMemo(() => ({\n    search: currentSearch,\n    setSearch: handleSearchChange,\n    selectedIndex,\n    setSelectedIndex,\n    items,\n    setItems,\n    onSelect,\n    visibleCount,\n    setVisibleCount\n  }), [currentSearch, handleSearchChange, selectedIndex, items, onSelect, visibleCount])\n\n  return (\n    <CommandContext.Provider value={contextValue}>\n      <div\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    </CommandContext.Provider>\n  )\n}\n\n/**\n * Props for the Command.Input component\n */\nexport interface CommandInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Search input for the command palette.\n * Handles keyboard navigation and filtering of command items.\n */\nconst CommandInput = forwardRef<HTMLInputElement, CommandInputProps>(\n  ({ className, style, ...props }, ref) => {\n    const { search, setSearch, selectedIndex, setSelectedIndex, items, onSelect } = useCommand()\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.input\n    })\n\n    const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n      switch (e.key) {\n        case 'ArrowDown':\n          e.preventDefault()\n          setSelectedIndex(Math.min(selectedIndex + 1, items.length - 1))\n          break\n        case 'ArrowUp':\n          e.preventDefault()\n          setSelectedIndex(Math.max(selectedIndex - 1, 0))\n          break\n        case 'Enter':\n          e.preventDefault()\n          if (items[selectedIndex] && !items[selectedIndex].disabled) {\n            onSelect?.(items[selectedIndex].value)\n          }\n          break\n        case 'Escape':\n          e.preventDefault()\n          setSearch('')\n          break\n      }\n      props.onKeyDown?.(e)\n    }\n\n    return (\n      <div className={styles.inputWrapper}>\n        <input\n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          value={search}\n          onChange={(e) => setSearch(e.target.value)}\n          onKeyDown={handleKeyDown}\n          {...props}\n        />\n      </div>\n    )\n  }\n)\n\nCommandInput.displayName = 'CommandInput'\n\n/**\n * Props for the Command.List component\n */\nexport interface CommandListProps {\n  /**\n   * Command items and groups to display\n   */\n  children: ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n}\n\n/**\n * Container for command items and groups.\n * Provides scrollable area for the command options.\n */\nconst CommandList = forwardRef<HTMLDivElement, CommandListProps>(\n  ({ children, className, ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={clsx(styles.list, className)}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nCommandList.displayName = 'CommandList'\n\n/**\n * Props for the Command.Empty component\n */\nexport interface CommandEmptyProps {\n  /**\n   * Content to show when no results are found\n   */\n  children: ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n}\n\n/**\n * Placeholder content shown when no command items match the search.\n * Only visible when search is active and no results are found.\n */\nconst CommandEmpty = forwardRef<HTMLDivElement, CommandEmptyProps>(\n  ({ children, className, ...props }, ref) => {\n    const { visibleCount, search } = useCommand()\n    \n    if (visibleCount > 0 || !search) return null\n    \n    return (\n      <div\n        ref={ref}\n        className={clsx(styles.empty, className)}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nCommandEmpty.displayName = 'CommandEmpty'\n\n/**\n * Props for the Command.Group component\n */\nexport interface CommandGroupProps {\n  /**\n   * Command items within this group\n   */\n  children: ReactNode\n  \n  /**\n   * Optional heading text for the group\n   */\n  heading?: string\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n}\n\n/**\n * Groups related command items together with an optional heading.\n * Useful for organizing commands by category or type.\n */\nconst CommandGroup = forwardRef<HTMLDivElement, CommandGroupProps>(\n  ({ children, heading, className, ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={clsx(styles.group, className)}\n        {...props}\n      >\n        {heading && (\n          <div className={styles.groupHeading}>\n            {heading}\n          </div>\n        )}\n        <div className={styles.groupItems}>\n          {children}\n        </div>\n      </div>\n    )\n  }\n)\n\nCommandGroup.displayName = 'CommandGroup'\n\n/**\n * Props for the Command.Item component\n */\nexport interface CommandItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n  /**\n   * The content to display for this command\n   */\n  children: ReactNode\n  \n  /**\n   * The value to return when this item is selected\n   */\n  value: string\n  \n  /**\n   * Additional keywords to match during search\n   * @default []\n   */\n  keywords?: string[]\n  \n  /**\n   * Whether this item is disabled and cannot be selected\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Callback fired when this specific item is selected\n   */\n  onSelect?: (value: string) => void\n}\n\n/**\n * Individual command option within the palette.\n * Supports keyboard navigation and search filtering.\n */\nconst CommandItem = forwardRef<HTMLDivElement, CommandItemProps>(\n  ({ children, value, keywords = [], disabled = false, className, onSelect: onItemSelect, ...props }, ref) => {\n    const { search, selectedIndex, setItems, onSelect, setVisibleCount } = useCommand()\n    const itemIndex = useRef<number>(-1)\n    const isMounted = useRef(false)\n\n    // Register item with command context\n    useEffect(() => {\n      isMounted.current = true\n      const item: CommandItemData = { value, keywords, disabled }\n      setItems((prev: CommandItemData[]) => {\n        const newItems = [...prev, item]\n        itemIndex.current = newItems.length - 1\n        return newItems\n      })\n\n      return () => {\n        isMounted.current = false\n        // Use setTimeout to avoid state update during render\n        setTimeout(() => {\n          if (!isMounted.current) {\n            setItems((prev: CommandItemData[]) => prev.filter((prevItem: CommandItemData) => prevItem.value !== value))\n          }\n        }, 0)\n      }\n    }, [value, keywords, disabled])\n\n    const isSelected = itemIndex.current === selectedIndex\n\n    const handleClick = () => {\n      if (!disabled) {\n        onItemSelect?.(value)\n        onSelect?.(value)\n      }\n    }\n\n    const handleMouseEnter = () => {\n      if (!disabled && itemIndex.current >= 0) {\n        // setSelectedIndex(itemIndex.current)\n      }\n    }\n\n    // Filter logic\n    const shouldShow = React.useMemo(() => {\n      if (!search) return true\n      \n      const searchLower = search.toLowerCase()\n      const valueLower = value.toLowerCase()\n      \n      if (valueLower.includes(searchLower)) return true\n      \n      return keywords.some(keyword => \n        keyword.toLowerCase().includes(searchLower)\n      )\n    }, [search, value, keywords])\n\n    // Update visible count when visibility changes\n    useEffect(() => {\n      if (shouldShow) {\n        setVisibleCount(prev => prev + 1)\n        return () => setVisibleCount(prev => prev - 1)\n      }\n    }, [shouldShow])\n\n    if (!shouldShow) return null\n\n    return (\n      <div\n        ref={ref}\n        className={clsx(\n          styles.item,\n          {\n            [styles.itemSelected]: isSelected,\n            [styles.itemDisabled]: disabled\n          },\n          className\n        )}\n        onClick={handleClick}\n        onMouseEnter={handleMouseEnter}\n        role=\"option\"\n        aria-selected={isSelected}\n        aria-disabled={disabled}\n        data-value={value}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nCommandItem.displayName = 'CommandItem'\n\n/**\n * Props for the Command.Separator component\n */\nexport interface CommandSeparatorProps {\n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n}\n\n/**\n * Visual separator between command groups or items.\n * Helps organize and structure the command palette visually.\n */\nconst CommandSeparator = forwardRef<HTMLDivElement, CommandSeparatorProps>(\n  ({ className, ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={clsx(styles.separator, className)}\n        role=\"separator\"\n        {...props}\n      />\n    )\n  }\n)\n\nCommandSeparator.displayName = 'CommandSeparator'\n\n// Attach compound components\nCommand.Input = CommandInput\nCommand.List = CommandList\nCommand.Empty = CommandEmpty\nCommand.Group = CommandGroup\nCommand.Item = CommandItem\nCommand.Separator = CommandSeparator\n\nexport { CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator }","/**\n * @module Slider\n * @description A range slider component for selecting values from a continuous range. Supports keyboard navigation and ARIA attributes.\n */\n\nimport React, { forwardRef, InputHTMLAttributes, useState, useEffect, useRef, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Slider.module.css'\n\nexport interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n  size?: 'sm' | 'md' | 'lg'\n  orientation?: 'horizontal' | 'vertical'\n  showValue?: boolean\n  marks?: number[] | { value: number; label?: string }[]\n  min?: number\n  max?: number\n  step?: number\n  disabled?: boolean\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n  trackClassName?: string\n  thumbClassName?: string\n  valueClassName?: string\n}\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n  (\n    {\n      size = 'md',\n      orientation = 'horizontal',\n      showValue = false,\n      marks,\n      min = 0,\n      max = 100,\n      step = 1,\n      disabled = false,\n      value: propValue,\n      defaultValue = min,\n      onChange,\n      className,\n      style,\n      trackClassName,\n      thumbClassName,\n      valueClassName,\n      ...props\n    },\n    ref\n  ) => {\n    const [value, setValue] = useState<number>(\n      propValue !== undefined ? Number(propValue) : Number(defaultValue)\n    )\n    const internalRef = useRef<HTMLInputElement>(null)\n    const sliderRef = ref || internalRef\n\n    useEffect(() => {\n      if (propValue !== undefined) {\n        setValue(Number(propValue))\n      }\n    }, [propValue])\n\n    const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n      const newValue = Number(e.target.value)\n      setValue(newValue)\n      onChange?.(e)\n    }\n\n    const percentage = ((value - min) / (max - min)) * 100\n\n    const renderMarks = () => {\n      if (!marks) return null\n\n      const normalizedMarks = marks.map((mark) =>\n        typeof mark === 'number' ? { value: mark } : mark\n      )\n\n      return (\n        <div className={styles.marks}>\n          {normalizedMarks.map((mark) => {\n            const markPercentage = ((mark.value - min) / (max - min)) * 100\n            const markStyle =\n              orientation === 'horizontal'\n                ? { left: `${markPercentage}%` }\n                : { bottom: `${markPercentage}%` }\n\n            return (\n              <div\n                key={mark.value}\n                className={clsx(styles.mark, {\n                  [styles.markActive]: value >= mark.value,\n                })}\n                style={markStyle}\n              >\n                <div className={styles.markTick} />\n                {mark.label && (\n                  <div className={styles.markLabel}>{mark.label}</div>\n                )}\n              </div>\n            )\n          })}\n        </div>\n      )\n    }\n\n    const sliderStyle =\n      orientation === 'horizontal'\n        ? {\n            '--slider-percentage': `${percentage}%`,\n          }\n        : {\n            '--slider-percentage': `${percentage}%`,\n            height: '200px',\n          }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.container,\n        styles[size],\n        styles[orientation],\n        {\n          [styles.disabled]: disabled,\n          [styles.withValue]: showValue,\n        }\n      )\n    })\n\n    // Merge slider-specific styles with processed styles\n    const finalStyle = { ...sliderStyle, ...processedStyle } as React.CSSProperties\n\n    return (\n      <div\n        className={processedClassName}\n        style={finalStyle}\n      >\n        <div className={clsx(styles.track, trackClassName)}>\n          <div className={styles.progress} />\n          <input\n            ref={sliderRef}\n            type=\"range\"\n            min={min}\n            max={max}\n            step={step}\n            value={value}\n            disabled={disabled}\n            onChange={handleChange}\n            className={clsx(styles.input)}\n            {...props}\n          />\n          <div className={clsx(styles.thumb, thumbClassName)} />\n          {renderMarks()}\n        </div>\n        {showValue && (\n          <div className={clsx(styles.value, valueClassName)}>\n            {value}\n          </div>\n        )}\n      </div>\n    )\n  }\n)\n\nSlider.displayName = 'Slider'","/**\n * @module Avatar\n * @description A component for displaying user profile images or initials. Includes fallback support for missing images.\n */\n\nimport React, { useState, forwardRef, ImgHTMLAttributes, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Avatar.module.css'\n\nexport interface AvatarProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'size' | 'children'> {\n  /** Image source URL */\n  src?: string\n  /** Alt text for the image */\n  alt?: string\n  /** Initials to display when no image */\n  initials?: string\n  /** Icon to display as fallback */\n  icon?: React.ReactNode\n  /** Avatar size */\n  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n  /** Status indicator */\n  status?: 'online' | 'offline' | 'busy' | 'away'\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n  /** Custom click handler */\n  onClick?: () => void\n  /** Whether the avatar is clickable */\n  clickable?: boolean\n}\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n  (\n    {\n      src,\n      alt,\n      initials,\n      icon,\n      size = 'md',\n      status,\n      className,\n      style,\n      onClick,\n      clickable = false,\n      ...props\n    },\n    ref\n  ) => {\n    const [imageError, setImageError] = useState(false)\n    const [imageLoaded, setImageLoaded] = useState(false)\n\n    const handleImageError = () => {\n      setImageError(true)\n    }\n\n    const handleImageLoad = () => {\n      setImageLoaded(true)\n      setImageError(false)\n    }\n\n    const hasImage = src && !imageError\n    const hasInitials = initials && initials.length > 0\n    const hasIcon = icon\n\n    // Determine what to display based on available data and fallback order\n    const showImage = hasImage\n    const showInitials = !hasImage && hasInitials\n    const showIcon = !hasImage && !hasInitials && hasIcon\n\n    // Get initials (first 2 characters max)\n    const displayInitials = initials ? initials.slice(0, 2).toUpperCase() : ''\n\n    // Default icon if no image, initials, or custom icon\n    const defaultIcon = (\n      <svg\n        viewBox=\"0 0 24 24\"\n        fill=\"currentColor\"\n        className={styles.defaultIcon}\n      >\n        <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"/>\n      </svg>\n    )\n\n    const isClickable = clickable || !!onClick\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.container,\n        styles[size],\n        {\n          [styles.clickable]: isClickable,\n          [styles.hasStatus]: !!status,\n        }\n      )\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={isClickable ? onClick : undefined}\n        role={isClickable ? 'button' : undefined}\n        tabIndex={isClickable ? 0 : undefined}\n        onKeyDown={\n          isClickable\n            ? (e) => {\n                if (e.key === 'Enter' || e.key === ' ') {\n                  e.preventDefault()\n                  onClick?.()\n                }\n              }\n            : undefined\n        }\n        aria-label={alt || `Avatar${initials ? ` for ${initials}` : ''}`}\n      >\n        <div className={styles.avatar}>\n          {showImage && (\n            <img\n              src={src}\n              alt={alt}\n              className={clsx(styles.image, {\n                [styles.loaded]: imageLoaded,\n              })}\n              onError={handleImageError}\n              onLoad={handleImageLoad}\n              {...props}\n            />\n          )}\n          \n          {showInitials && (\n            <span className={styles.initials} aria-label={`Initials: ${displayInitials}`}>\n              {displayInitials}\n            </span>\n          )}\n          \n          {showIcon && (\n            <span className={styles.iconWrapper} aria-label=\"Avatar icon\">\n              {icon}\n            </span>\n          )}\n          \n          {!showImage && !showInitials && !showIcon && (\n            <span className={styles.iconWrapper} aria-label=\"Default avatar\">\n              {defaultIcon}\n            </span>\n          )}\n        </div>\n        \n        {status && (\n          <div\n            className={clsx(styles.status, styles[status])}\n            aria-label={`Status: ${status}`}\n            role=\"img\"\n          />\n        )}\n      </div>\n    )\n  }\n)\n\nAvatar.displayName = 'Avatar'","/**\n * @module Badge\n * @description A small labeling component used to highlight status or categorical information. Perfect for notifications, tags, and status indicators.\n */\n\nimport React, { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Badge.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n  /** Badge content */\n  children?: React.ReactNode\n  /** Badge variant */\n  variant?: 'solid' | 'outline' | 'dot' | 'secondary'\n  /** Badge color */\n  color?: 'accent' | 'success' | 'warning' | 'error' | 'info' | 'neutral'\n  /** Badge size */\n  size?: 'sm' | 'md' | 'lg'\n  /** Whether the badge is dismissible */\n  dismissible?: boolean\n  /** Click handler for dismissible badges */\n  onDismiss?: () => void\n  /** Additional CSS classes */\n  className?: string\n  /** Custom click handler */\n  onClick?: () => void\n  /** Whether the badge is clickable */\n  clickable?: boolean\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n  (\n    {\n      children,\n      variant = 'solid',\n      color = 'accent',\n      size = 'md',\n      dismissible = false,\n      onDismiss,\n      className,\n      style,\n      onClick,\n      clickable = false,\n      ...props\n    },\n    ref\n  ) => {\n    const isDot = variant === 'dot'\n    const isClickable = clickable || !!onClick\n    const isDismissible = dismissible && !!onDismiss\n\n    const handleDismiss = (e: React.MouseEvent) => {\n      e.stopPropagation()\n      onDismiss?.()\n    }\n\n    const handleClick = () => {\n      if (isClickable) {\n        onClick?.()\n      }\n    }\n\n    const handleKeyDown = (e: React.KeyboardEvent) => {\n      if (isClickable && (e.key === 'Enter' || e.key === ' ')) {\n        e.preventDefault()\n        onClick?.()\n      }\n    }\n\n    // For dot variant, don't render children\n    const content = isDot ? null : children\n\n    // Dismiss icon\n    const dismissIcon = (\n      <svg\n        viewBox=\"0 0 24 24\"\n        fill=\"currentColor\"\n        className={styles.dismissIcon}\n        aria-hidden=\"true\"\n      >\n        <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n      </svg>\n    )\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.badge,\n        styles[variant],\n        styles[color],\n        styles[size],\n        {\n          [styles.clickable]: isClickable,\n          [styles.dismissible]: isDismissible,\n          [styles.dot]: isDot,\n        }\n      )\n    })\n\n    return (\n      <span\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={isClickable ? handleClick : undefined}\n        onKeyDown={isClickable ? handleKeyDown : undefined}\n        role={isClickable ? 'button' : isDot ? 'status' : undefined}\n        tabIndex={isClickable ? 0 : undefined}\n        aria-label={\n          isDot \n            ? `${color} status indicator` \n            : typeof children === 'string' \n              ? children \n              : undefined\n        }\n        {...props}\n      >\n        {content}\n        \n        {isDismissible && (\n          <button\n            type=\"button\"\n            className={styles.dismissButton}\n            onClick={handleDismiss}\n            aria-label=\"Dismiss badge\"\n            tabIndex={-1}\n          >\n            {dismissIcon}\n          </button>\n        )}\n      </span>\n    )\n  }\n)\n\nBadge.displayName = 'Badge'","/**\n * @module Card\n * @description A versatile card component for displaying content in a contained format. Supports multiple variants, compound components, and interactive states with brutalist design aesthetics.\n */\n\nimport { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Card.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the Card component\n */\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Visual variant of the card\n   * @default 'elevated'\n   */\n  variant?: 'elevated' | 'flat' | 'outline'\n  \n  /**\n   * Padding size for the card content\n   * @default 'md'\n   */\n  padding?: 'none' | 'sm' | 'md' | 'lg'\n  \n  /**\n   * Whether the card is clickable/interactive\n   * @default false\n   */\n  clickable?: boolean\n  \n  /**\n   * Whether to show hover effects when not clickable\n   * @default true\n   */\n  hover?: boolean\n}\n\n/**\n * Props for the Card.Header component\n */\nexport interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Props for the Card.Body component\n */\nexport interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Props for the Card.Footer component\n */\nexport interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {}\n\n/**\n * A container component for grouping related content and actions.\n * Supports compound components for flexible layouts.\n * \n * @example\n * ```tsx\n * <Card variant=\"elevated\" padding=\"lg\">\n *   <Card.Header>\n *     <h3>Card Title</h3>\n *   </Card.Header>\n *   <Card.Body>\n *     <p>Card content goes here</p>\n *   </Card.Body>\n *   <Card.Footer>\n *     <Button>Action</Button>\n *   </Card.Footer>\n * </Card>\n * ```\n */\nconst Card = forwardRef<HTMLDivElement, CardProps>(\n  (\n    {\n      children,\n      className,\n      style,\n      variant = 'elevated',\n      padding = 'md',\n      clickable = false,\n      hover = true,\n      ...props\n    },\n    ref\n  ) => {\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.card,\n        styles[variant],\n        styles[`padding-${padding}`],\n        {\n          [styles.clickable]: clickable,\n          [styles.hover]: hover && !clickable,\n        }\n      )\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role={clickable ? 'button' : undefined}\n        tabIndex={clickable ? 0 : undefined}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Header section of the Card component.\n * Typically contains the title and optional actions.\n */\nconst CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n  ({ children, className, style, ...props }, ref) => {\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.header\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Main content area of the Card component.\n * Contains the primary content of the card.\n */\nconst CardBody = forwardRef<HTMLDivElement, CardBodyProps>(\n  ({ children, className, style, ...props }, ref) => {\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.body\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Footer section of the Card component.\n * Typically contains actions or additional information.\n */\nconst CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n  ({ children, className, style, ...props }, ref) => {\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.footer\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nCard.displayName = 'Card'\nCardHeader.displayName = 'Card.Header'\nCardBody.displayName = 'Card.Body'\nCardFooter.displayName = 'Card.Footer'\n\n// Compound component\nconst CardComponent = Card as typeof Card & {\n  Header: typeof CardHeader\n  Body: typeof CardBody\n  Footer: typeof CardFooter\n}\n\nCardComponent.Header = CardHeader\nCardComponent.Body = CardBody\nCardComponent.Footer = CardFooter\n\nexport { CardComponent as Card }","/**\n * @module Alert\n * @description A component for displaying important messages to users. Supports different severity levels and optional dismiss functionality.\n */\n\nimport { forwardRef, HTMLAttributes, useState, CSSProperties, useEffect } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Alert.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface AlertProps extends HTMLAttributes<HTMLDivElement> {\n  /** Type of alert */\n  type?: 'info' | 'success' | 'warning' | 'error'\n  /** Visual variant */\n  variant?: 'filled' | 'outline'\n  /** Size of the alert */\n  size?: 'sm' | 'md' | 'lg'\n  /** Whether the alert can be dismissed */\n  dismissible?: boolean\n  /** Callback when alert is dismissed */\n  onDismiss?: () => void\n}\n\nexport interface AlertIconProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the icon wrapper\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nexport interface AlertContentProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the content wrapper\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nexport interface AlertTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n  /**\n   * Additional CSS classes to apply to the title\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nexport interface AlertDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {\n  /**\n   * Additional CSS classes to apply to the description\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nexport interface AlertActionsProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the actions container\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>(\n  (\n    {\n      children,\n      className,\n      style,\n      type = 'info',\n      variant = 'filled',\n      size = 'md',\n      dismissible = false,\n      onDismiss,\n      ...props\n    },\n    ref\n  ) => {\n    const [dismissed, setDismissed] = useState(false)\n    const [isExiting, setIsExiting] = useState(false)\n\n    const handleDismiss = () => {\n      setIsExiting(true)\n    }\n\n    useEffect(() => {\n      if (isExiting) {\n        // Wait for animation to complete before removing from DOM\n        const timer = setTimeout(() => {\n          setDismissed(true)\n          onDismiss?.()\n        }, 300) // Match animation duration\n\n        return () => clearTimeout(timer)\n      }\n    }, [isExiting, onDismiss])\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.alert,\n        styles[type],\n        styles[variant],\n        styles[size],\n        {\n          [styles.dismissible]: dismissible,\n          [styles.exiting]: isExiting,\n        }\n      )\n    })\n\n    if (dismissed) {\n      return null\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"alert\"\n        aria-live=\"polite\"\n        {...props}\n      >\n        {children}\n        {dismissible && (\n          <button\n            className={styles.dismissButton}\n            onClick={handleDismiss}\n            aria-label=\"Dismiss alert\"\n            type=\"button\"\n          >\n            <svg\n              width=\"16\"\n              height=\"16\"\n              viewBox=\"0 0 16 16\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M12 4L4 12M4 4L12 12\"\n                stroke=\"currentColor\"\n                strokeWidth=\"2\"\n                strokeLinecap=\"square\"\n              />\n            </svg>\n          </button>\n        )}\n      </div>\n    )\n  }\n)\n\nconst AlertIcon = forwardRef<HTMLDivElement, AlertIconProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.icon\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children || <DefaultIcon />}\n      </div>\n    )\n  }\n)\n\nconst AlertContent = forwardRef<HTMLDivElement, AlertContentProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.content\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nconst AlertTitle = forwardRef<HTMLHeadingElement, AlertTitleProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.title\n    })\n    \n    return (\n      <h4\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </h4>\n    )\n  }\n)\n\nconst AlertDescription = forwardRef<HTMLParagraphElement, AlertDescriptionProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.description\n    })\n    \n    return (\n      <p\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </p>\n    )\n  }\n)\n\nconst AlertActions = forwardRef<HTMLDivElement, AlertActionsProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.actions\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n// Default icon component\nconst DefaultIcon = () => (\n  <svg\n    width=\"20\"\n    height=\"20\"\n    viewBox=\"0 0 20 20\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <circle\n      cx=\"10\"\n      cy=\"10\"\n      r=\"8\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      fill=\"none\"\n    />\n    <path\n      d=\"M10 6V10\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"square\"\n    />\n    <circle\n      cx=\"10\"\n      cy=\"14\"\n      r=\"1\"\n      fill=\"currentColor\"\n    />\n  </svg>\n)\n\nAlert.displayName = 'Alert'\nAlertIcon.displayName = 'Alert.Icon'\nAlertContent.displayName = 'Alert.Content'\nAlertTitle.displayName = 'Alert.Title'\nAlertDescription.displayName = 'Alert.Description'\nAlertActions.displayName = 'Alert.Actions'\n\n// Compound component\nconst AlertComponent = Alert as typeof Alert & {\n  Icon: typeof AlertIcon\n  Content: typeof AlertContent\n  Title: typeof AlertTitle\n  Description: typeof AlertDescription\n  Actions: typeof AlertActions\n}\n\nAlertComponent.Icon = AlertIcon\nAlertComponent.Content = AlertContent\nAlertComponent.Title = AlertTitle\nAlertComponent.Description = AlertDescription\nAlertComponent.Actions = AlertActions\n\nexport { AlertComponent as Alert }","import { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './AlertStack.module.css'\n\nexport interface AlertStackProps extends HTMLAttributes<HTMLDivElement> {\n  /** Direction of the stack */\n  direction?: 'vertical' | 'horizontal'\n  /** Gap between alerts */\n  gap?: 'sm' | 'md' | 'lg'\n}\n\nexport const AlertStack = forwardRef<HTMLDivElement, AlertStackProps>(\n  (\n    {\n      children,\n      className,\n      direction = 'vertical',\n      gap = 'md',\n      ...props\n    },\n    ref\n  ) => {\n    return (\n      <div\n        ref={ref}\n        className={clsx(\n          styles.stack,\n          styles[direction],\n          styles[`gap-${gap}`],\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nAlertStack.displayName = 'AlertStack'","/**\n * @module Progress\n * @description A progress bar component for showing task completion or loading states. Supports determinate and indeterminate modes.\n */\n\nimport { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Progress.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n  /** Progress value (0-max for determinate, undefined for indeterminate) */\n  value?: number\n  /** Maximum value */\n  max?: number\n  /** Progress type */\n  type?: 'linear' | 'circular'\n  /** Progress variant */\n  variant?: 'default' | 'striped' | 'animated'\n  /** Progress size */\n  size?: 'sm' | 'md' | 'lg'\n  /** Whether to show the value label */\n  showLabel?: boolean\n  /** Custom label text (overrides default percentage) */\n  label?: string\n  /** Whether progress is indeterminate */\n  indeterminate?: boolean\n  /** Progress bar color */\n  color?: 'accent' | 'success' | 'warning' | 'error' | 'info'\n  /** Additional CSS classes */\n  className?: string\n}\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n  (\n    {\n      value,\n      max = 100,\n      type = 'linear',\n      variant = 'default',\n      size = 'md',\n      showLabel = false,\n      label,\n      indeterminate = false,\n      color = 'accent',\n      className,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    // Calculate progress percentage\n    const progressValue = indeterminate ? undefined : Math.min(Math.max((value ?? 0) / max * 100, 0), 100)\n    const isCircular = type === 'circular'\n    \n    // Calculate label text\n    const labelText = label || (progressValue !== undefined ? `${Math.round(progressValue)}%` : '')\n    \n    // Squared circular progress calculations\n    const boxSize = isCircular ? (size === 'sm' ? 40 : size === 'lg' ? 80 : 60) : 0\n    const pathLength = isCircular ? boxSize * 4 - 16 : 0 // Perimeter minus corners\n    const dashOffset = isCircular && progressValue !== undefined \n      ? pathLength - (progressValue / 100) * pathLength \n      : 0\n\n    const progressBarStyles = {\n      ...(type === 'linear' && progressValue !== undefined && {\n        width: `${progressValue}%`,\n      }),\n      ...(isCircular && progressValue !== undefined && {\n        strokeDasharray: pathLength,\n        strokeDashoffset: dashOffset,\n      }),\n    }\n\n    // Process progress utilities\n    const { className: progressClassName, style: progressStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.progress,\n        styles[type],\n        styles[variant],\n        styles[size],\n        styles[color],\n        {\n          [styles.indeterminate]: indeterminate,\n          [styles.withLabel]: showLabel,\n        }\n      )\n    })\n\n    // Accessibility props\n    const progressRole = 'progressbar'\n    const ariaValueNow = indeterminate ? undefined : value ?? 0\n    const ariaValueMin = 0\n    const ariaValueMax = max\n    const ariaLabel = label || (indeterminate ? 'Loading' : `${Math.round(progressValue ?? 0)} percent complete`)\n\n    if (isCircular) {\n      const strokeWidth = size === 'sm' ? 3 : size === 'lg' ? 6 : 4\n      const padding = strokeWidth + 2\n      const svgSize = boxSize + padding * 2\n      const cornerSize = 4\n\n      return (\n        <div\n          ref={ref}\n          className={progressClassName}\n          style={progressStyle}\n          role={progressRole}\n          aria-valuenow={ariaValueNow}\n          aria-valuemin={ariaValueMin}\n          aria-valuemax={ariaValueMax}\n          aria-label={ariaLabel}\n          {...props}\n        >\n          <div className={styles.circularContainer}>\n            <svg\n              className={styles.circularSvg}\n              width={svgSize}\n              height={svgSize}\n              viewBox={`0 0 ${svgSize} ${svgSize}`}\n            >\n              {/* Background square track */}\n              <rect\n                className={styles.circularTrack}\n                x={padding}\n                y={padding}\n                width={boxSize}\n                height={boxSize}\n                rx={cornerSize}\n                ry={cornerSize}\n                fill=\"none\"\n                strokeWidth={strokeWidth}\n              />\n              {/* Progress square */}\n              <rect\n                className={styles.circularBar}\n                x={padding}\n                y={padding}\n                width={boxSize}\n                height={boxSize}\n                rx={cornerSize}\n                ry={cornerSize}\n                fill=\"none\"\n                strokeWidth={strokeWidth}\n                style={progressBarStyles}\n                strokeLinecap=\"square\"\n                transform={`rotate(-90 ${svgSize / 2} ${svgSize / 2})`}\n              />\n            </svg>\n            {showLabel && (\n              <div className={styles.circularLabel}>\n                {labelText}\n              </div>\n            )}\n          </div>\n        </div>\n      )\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={progressClassName}\n        style={progressStyle}\n        role={progressRole}\n        aria-valuenow={ariaValueNow}\n        aria-valuemin={ariaValueMin}\n        aria-valuemax={ariaValueMax}\n        aria-label={ariaLabel}\n        {...props}\n      >\n        <div className={styles.track}>\n          <div\n            className={styles.bar}\n            style={progressBarStyles}\n            aria-hidden=\"true\"\n          />\n        </div>\n        {showLabel && (\n          <div className={styles.label}>\n            {labelText}\n          </div>\n        )}\n      </div>\n    )\n  }\n)\n\nProgress.displayName = 'Progress'","/**\n * @module Skeleton\n * @description A placeholder component used while content is loading. Provides a subtle animation to indicate loading state.\n */\n\nimport React, { forwardRef, HTMLAttributes, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Skeleton.module.css'\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n  /** Shape of the skeleton */\n  shape?: 'text' | 'circular' | 'rectangular'\n  /** Animation type */\n  animation?: 'pulse' | 'wave' | 'none'\n  /** Width of the skeleton (for rectangular and circular) */\n  width?: number | string\n  /** Height of the skeleton (for rectangular and circular) */\n  height?: number | string\n  /** Number of text lines (only for text shape) */\n  lines?: 1 | 2 | 3 | 4 | 5\n  /** Variant style */\n  variant?: 'default' | 'rounded'\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n  (\n    {\n      shape = 'text',\n      animation = 'pulse',\n      width,\n      height,\n      lines = 1,\n      variant = 'default',\n      className,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    const isText = shape === 'text'\n    const isCircular = shape === 'circular'\n\n    // Generate styles for width and height\n    const dimensionStyles: React.CSSProperties = {\n      ...style,\n      ...(width && { width: typeof width === 'number' ? `${width}px` : width }),\n      ...(height && { height: typeof height === 'number' ? `${height}px` : height }),\n    }\n\n    // For circular, use width as diameter if height not specified\n    if (isCircular && width && !height) {\n      dimensionStyles.height = dimensionStyles.width\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.skeleton,\n        styles[shape],\n        styles[animation],\n        styles[variant]\n      )\n    })\n\n    // For text skeleton with multiple lines\n    if (isText && lines > 1) {\n      const textLines = Array.from({ length: lines }, (_, index) => {\n        const isLastLine = index === lines - 1\n        const lineWidth = isLastLine ? '75%' : '100%'\n        \n        return (\n          <div\n            key={index}\n            className={clsx(styles.skeleton, styles.text, styles[animation], styles[variant])}\n            style={{ \n              width: lineWidth,\n              marginBottom: index < lines - 1 ? 'var(--brutal-space-2)' : 0 \n            }}\n            aria-hidden=\"true\"\n          />\n        )\n      })\n\n      return (\n        <div\n          ref={ref}\n          className={clsx(styles.textContainer, processedClassName)}\n          style={processedStyle}\n          role=\"status\"\n          aria-label=\"Loading content\"\n          {...props}\n        >\n          {textLines}\n        </div>\n      )\n    }\n\n    // Single skeleton element - merge processed style with dimension styles\n    const finalStyle = { ...dimensionStyles, ...processedStyle }\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={finalStyle}\n        role=\"status\"\n        aria-label=\"Loading content\"\n        aria-hidden=\"true\"\n        {...props}\n      />\n    )\n  }\n)\n\nSkeleton.displayName = 'Skeleton'","/**\n * @module Tooltip\n * @description A tooltip component for displaying contextual information on hover or focus. Automatically positions itself to stay within viewport bounds.\n */\n\nimport React, { useState, useRef, useEffect, useCallback, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Tooltip.module.css'\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right' | 'auto'\nexport type TooltipTrigger = 'hover' | 'click' | 'focus' | 'manual'\n\nexport interface TooltipProps {\n  /** The content to display inside the tooltip */\n  content: React.ReactNode\n  /** The element that triggers the tooltip */\n  children: React.ReactElement\n  /** Position of the tooltip relative to the trigger */\n  position?: TooltipPosition\n  /** How the tooltip is triggered */\n  trigger?: TooltipTrigger\n  /** Delay before showing tooltip (ms) */\n  showDelay?: number\n  /** Delay before hiding tooltip (ms) */\n  hideDelay?: number\n  /** Whether the tooltip is currently visible (for manual trigger) */\n  visible?: boolean\n  /** Callback when visibility changes (for manual trigger) */\n  onVisibilityChange?: (visible: boolean) => void\n  /** Whether to show an arrow pointing to the trigger */\n  showArrow?: boolean\n  /** Additional CSS classes */\n  className?: string\n  /** Custom styles to apply to the tooltip */\n  style?: CSSProperties\n  /** Whether the tooltip is disabled */\n  disabled?: boolean\n  /** Maximum width of the tooltip */\n  maxWidth?: number\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n  content,\n  children,\n  position = 'top',\n  trigger = 'hover',\n  showDelay = 0,\n  hideDelay = 0,\n  visible: controlledVisible,\n  onVisibilityChange,\n  showArrow = true,\n  className,\n  style,\n  disabled = false,\n  maxWidth = 300,\n}) => {\n  const [visible, setVisible] = useState(false)\n  const [actualPosition, setActualPosition] = useState<TooltipPosition>(position)\n  const [coords, setCoords] = useState({ x: -9999, y: -9999 })\n  const triggerRef = useRef<HTMLElement>(null)\n  const tooltipRef = useRef<HTMLDivElement>(null)\n  const showTimeoutRef = useRef<NodeJS.Timeout>()\n  const hideTimeoutRef = useRef<NodeJS.Timeout>()\n\n  const isVisible = controlledVisible !== undefined ? controlledVisible : visible\n\n  // Calculate position and coordinates\n  const calculatePosition = useCallback(() => {\n    if (!triggerRef.current || !tooltipRef.current) return\n\n    const triggerRect = triggerRef.current.getBoundingClientRect()\n    const tooltipRect = tooltipRef.current.getBoundingClientRect()\n    const viewportWidth = window.innerWidth\n    const viewportHeight = window.innerHeight\n    const scrollX = window.scrollX\n    const scrollY = window.scrollY\n\n    let finalPosition = position\n    let x = 0\n    let y = 0\n\n    // Auto positioning logic\n    if (position === 'auto') {\n      const spaceTop = triggerRect.top\n      const spaceBottom = viewportHeight - triggerRect.bottom\n      const spaceLeft = triggerRect.left\n      const spaceRight = viewportWidth - triggerRect.right\n\n      if (spaceTop >= tooltipRect.height + 10) {\n        finalPosition = 'top'\n      } else if (spaceBottom >= tooltipRect.height + 10) {\n        finalPosition = 'bottom'\n      } else if (spaceRight >= tooltipRect.width + 10) {\n        finalPosition = 'right'\n      } else if (spaceLeft >= tooltipRect.width + 10) {\n        finalPosition = 'left'\n      } else {\n        finalPosition = 'bottom' // fallback\n      }\n    }\n\n    // Calculate coordinates based on final position\n    switch (finalPosition) {\n      case 'top':\n        x = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2\n        y = triggerRect.top - tooltipRect.height - 8\n        break\n      case 'bottom':\n        x = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2\n        y = triggerRect.bottom + 8\n        break\n      case 'left':\n        x = triggerRect.left - tooltipRect.width - 8\n        y = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2\n        break\n      case 'right':\n        x = triggerRect.right + 8\n        y = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2\n        break\n    }\n\n    // Adjust for viewport boundaries\n    x = Math.max(8, Math.min(x, viewportWidth - tooltipRect.width - 8))\n    y = Math.max(8, Math.min(y, viewportHeight - tooltipRect.height - 8))\n\n    setActualPosition(finalPosition)\n    setCoords({\n      x: x + scrollX,\n      y: y + scrollY,\n    })\n  }, [position])\n\n  // Show tooltip\n  const showTooltip = useCallback(() => {\n    if (disabled) return\n    \n    if (hideTimeoutRef.current) {\n      clearTimeout(hideTimeoutRef.current)\n      hideTimeoutRef.current = undefined\n    }\n\n    if (showDelay > 0) {\n      showTimeoutRef.current = setTimeout(() => {\n        if (controlledVisible === undefined) {\n          setVisible(true)\n        }\n        onVisibilityChange?.(true)\n      }, showDelay)\n    } else {\n      if (controlledVisible === undefined) {\n        setVisible(true)\n      }\n      onVisibilityChange?.(true)\n    }\n  }, [disabled, showDelay, controlledVisible, onVisibilityChange])\n\n  // Hide tooltip\n  const hideTooltip = useCallback(() => {\n    if (showTimeoutRef.current) {\n      clearTimeout(showTimeoutRef.current)\n      showTimeoutRef.current = undefined\n    }\n\n    if (hideDelay > 0) {\n      hideTimeoutRef.current = setTimeout(() => {\n        if (controlledVisible === undefined) {\n          setVisible(false)\n        }\n        onVisibilityChange?.(false)\n      }, hideDelay)\n    } else {\n      if (controlledVisible === undefined) {\n        setVisible(false)\n      }\n      onVisibilityChange?.(false)\n    }\n  }, [hideDelay, controlledVisible, onVisibilityChange])\n\n  // Handle keyboard events\n  const handleKeyDown = useCallback((event: KeyboardEvent) => {\n    if (event.key === 'Escape' && isVisible) {\n      hideTooltip()\n    }\n  }, [isVisible, hideTooltip])\n\n  // Effect to handle position calculation\n  useEffect(() => {\n    if (isVisible && triggerRef.current) {\n      // Use requestAnimationFrame to ensure the tooltip is rendered first\n      const frame = requestAnimationFrame(() => {\n        calculatePosition()\n      })\n      \n      const handleResize = () => calculatePosition()\n      const handleScroll = () => calculatePosition()\n      \n      window.addEventListener('resize', handleResize)\n      window.addEventListener('scroll', handleScroll)\n      document.addEventListener('keydown', handleKeyDown)\n      \n      return () => {\n        cancelAnimationFrame(frame)\n        window.removeEventListener('resize', handleResize)\n        window.removeEventListener('scroll', handleScroll)\n        document.removeEventListener('keydown', handleKeyDown)\n      }\n    }\n  }, [isVisible, calculatePosition, handleKeyDown])\n\n  // Additional effect to recalculate position when tooltip ref becomes available\n  useEffect(() => {\n    if (isVisible && tooltipRef.current && triggerRef.current) {\n      const timeout = setTimeout(() => {\n        calculatePosition()\n      }, 0)\n      \n      return () => clearTimeout(timeout)\n    }\n  }, [isVisible, calculatePosition])\n\n  // Cleanup timeouts on unmount\n  useEffect(() => {\n    return () => {\n      if (showTimeoutRef.current) {\n        clearTimeout(showTimeoutRef.current)\n      }\n      if (hideTimeoutRef.current) {\n        clearTimeout(hideTimeoutRef.current)\n      }\n    }\n  }, [])\n\n  // Create trigger event handlers\n  const triggerProps: Record<string, (() => void) | ((e: React.MouseEvent) => void)> = {}\n  \n  if (trigger === 'hover') {\n    triggerProps.onMouseEnter = showTooltip\n    triggerProps.onMouseLeave = hideTooltip\n  } else if (trigger === 'click') {\n    triggerProps.onClick = (e: React.MouseEvent) => {\n      e.preventDefault()\n      if (isVisible) {\n        hideTooltip()\n      } else {\n        showTooltip()\n      }\n    }\n  } else if (trigger === 'focus') {\n    triggerProps.onFocus = showTooltip\n    triggerProps.onBlur = hideTooltip\n  }\n\n  // Clone trigger element with event handlers\n  const triggerElement = React.cloneElement(children, {\n    ...triggerProps,\n    ref: (el: HTMLElement) => {\n      if (triggerRef) {\n        (triggerRef as React.MutableRefObject<HTMLElement | null>).current = el\n      }\n      const childRef = (children as React.ReactElement & { ref?: React.Ref<HTMLElement> }).ref\n      if (typeof childRef === 'function') {\n        childRef(el)\n      } else if (childRef && typeof childRef === 'object') {\n        (childRef as React.MutableRefObject<HTMLElement | null>).current = el\n      }\n    },\n    'aria-describedby': isVisible ? 'tooltip' : undefined,\n  })\n\n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: clsx(\n      styles.tooltip,\n      styles[actualPosition],\n      {\n        [styles.withArrow]: showArrow,\n      }\n    )\n  })\n\n  // Render tooltip portal\n  const tooltipPortal = isVisible ? createPortal(\n    <div\n      ref={tooltipRef}\n      className={processedClassName}\n      style={{\n        position: 'absolute',\n        left: coords.x,\n        top: coords.y,\n        maxWidth,\n        zIndex: 'var(--brutal-z-tooltip)',\n        opacity: coords.x === -9999 ? 0 : 1,\n        transition: 'opacity 0.15s ease-in-out',\n        ...processedStyle\n      }}\n      role=\"tooltip\"\n      id=\"tooltip\"\n      onMouseEnter={trigger === 'hover' ? showTooltip : undefined}\n      onMouseLeave={trigger === 'hover' ? hideTooltip : undefined}\n    >\n      {showArrow && <div className={styles.arrow} />}\n      <div className={styles.content}>\n        {content}\n      </div>\n    </div>,\n    document.body\n  ) : null\n\n  return (\n    <>\n      {triggerElement}\n      {tooltipPortal}\n    </>\n  )\n}\n\nTooltip.displayName = 'Tooltip'","/**\n * @module Popover\n * @description A floating content component that displays rich content in a portal overlay. Features intelligent positioning, focus management, and keyboard navigation with customizable trigger behaviors.\n */\n\nimport React, { useState, useRef, useEffect, useCallback, useContext, createContext, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Popover.module.css'\n\n/**\n * Available positions for the popover relative to its trigger element\n */\nexport type PopoverPosition = \n  | 'top' | 'top-start' | 'top-end'\n  | 'bottom' | 'bottom-start' | 'bottom-end'\n  | 'left' | 'left-start' | 'left-end'\n  | 'right' | 'right-start' | 'right-end'\n  | 'auto'\n\n/**\n * Available trigger behaviors for showing the popover\n */\nexport type PopoverTrigger = 'click' | 'focus' | 'manual'\n\n/**\n * Props for the Popover component\n */\nexport interface PopoverProps {\n  /**\n   * The trigger element that will show the popover when interacted with\n   */\n  children: React.ReactElement\n  \n  /**\n   * The content to display inside the popover (for simple usage without sub-components)\n   */\n  content?: React.ReactNode\n  \n  /**\n   * Position of the popover relative to the trigger element\n   * @default 'bottom'\n   */\n  position?: PopoverPosition\n  \n  /**\n   * How the popover should be triggered to show/hide\n   * @default 'click'\n   */\n  trigger?: PopoverTrigger\n  \n  /**\n   * Whether the popover is currently visible (controlled mode)\n   */\n  open?: boolean\n  \n  /**\n   * Callback function called when the popover visibility changes\n   */\n  onOpenChange?: (open: boolean) => void\n  \n  /**\n   * Whether the popover should close when clicking outside of it\n   * @default true\n   */\n  closeOnClickOutside?: boolean\n  \n  /**\n   * Whether the popover should close when pressing the Escape key\n   * @default true\n   */\n  closeOnEscape?: boolean\n  \n  /**\n   * Whether to show an arrow pointing from the popover to the trigger\n   * @default true\n   */\n  showArrow?: boolean\n  \n  /**\n   * Additional CSS classes to apply to the popover\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the popover\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether the popover trigger is disabled\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Maximum width of the popover in pixels\n   * @default 400\n   */\n  maxWidth?: number\n  \n  /**\n   * Whether to automatically focus the first focusable element when opened\n   * @default true\n   */\n  autoFocus?: boolean\n  \n  /**\n   * CSS selector for the element that should receive initial focus\n   */\n  initialFocus?: string\n}\n\ninterface PopoverContextValue {\n  close: () => void\n}\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null)\n\nexport const Popover: React.FC<PopoverProps> & {\n  Content: typeof PopoverContent\n  Header: typeof PopoverHeader\n  Body: typeof PopoverBody\n  Footer: typeof PopoverFooter\n} = ({\n  children,\n  content,\n  position = 'bottom',\n  trigger = 'click',\n  open: controlledOpen,\n  onOpenChange,\n  closeOnClickOutside = true,\n  closeOnEscape = true,\n  showArrow = true,\n  className,\n  style,\n  disabled = false,\n  maxWidth = 400,\n  autoFocus = true,\n  initialFocus,\n}) => {\n  const [open, setOpen] = useState(false)\n  const [actualPosition, setActualPosition] = useState<PopoverPosition>(position)\n  const [coords, setCoords] = useState({ x: 0, y: 0 })\n  const triggerRef = useRef<HTMLElement | null>(null)\n  const popoverRef = useRef<HTMLDivElement | null>(null)\n  const previousActiveElementRef = useRef<HTMLElement | null>(null)\n\n  const isOpen = controlledOpen !== undefined ? controlledOpen : open\n\n  // Calculate position and coordinates\n  const calculatePosition = useCallback(() => {\n    if (!triggerRef.current || !popoverRef.current) return\n\n    const triggerRect = triggerRef.current.getBoundingClientRect()\n    const popoverRect = popoverRef.current.getBoundingClientRect()\n    const viewportWidth = window.innerWidth\n    const viewportHeight = window.innerHeight\n    const scrollX = window.scrollX\n    const scrollY = window.scrollY\n\n    let finalPosition = position\n    let x = 0\n    let y = 0\n\n    // Auto positioning logic\n    if (position === 'auto') {\n      const spaceTop = triggerRect.top\n      const spaceBottom = viewportHeight - triggerRect.bottom\n      const spaceLeft = triggerRect.left\n      const spaceRight = viewportWidth - triggerRect.right\n\n      if (spaceBottom >= popoverRect.height + 10) {\n        finalPosition = 'bottom'\n      } else if (spaceTop >= popoverRect.height + 10) {\n        finalPosition = 'top'\n      } else if (spaceRight >= popoverRect.width + 10) {\n        finalPosition = 'right'\n      } else if (spaceLeft >= popoverRect.width + 10) {\n        finalPosition = 'left'\n      } else {\n        finalPosition = 'bottom'\n      }\n    }\n\n    // Calculate coordinates based on final position\n    switch (finalPosition.split('-')[0]) {\n      case 'top':\n        y = triggerRect.top - popoverRect.height - 8\n        break\n      case 'bottom':\n        y = triggerRect.bottom + 8\n        break\n      case 'left':\n        x = triggerRect.left - popoverRect.width - 8\n        break\n      case 'right':\n        x = triggerRect.right + 8\n        break\n    }\n\n    // Handle alignment variants (start, end)\n    if (finalPosition.includes('top') || finalPosition.includes('bottom')) {\n      if (finalPosition.includes('start')) {\n        x = triggerRect.left\n      } else if (finalPosition.includes('end')) {\n        x = triggerRect.right - popoverRect.width\n      } else {\n        x = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2\n      }\n    } else if (finalPosition.includes('left') || finalPosition.includes('right')) {\n      if (finalPosition.includes('start')) {\n        y = triggerRect.top\n      } else if (finalPosition.includes('end')) {\n        y = triggerRect.bottom - popoverRect.height\n      } else {\n        y = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2\n      }\n    }\n\n    // Adjust for viewport boundaries\n    x = Math.max(8, Math.min(x, viewportWidth - popoverRect.width - 8))\n    y = Math.max(8, Math.min(y, viewportHeight - popoverRect.height - 8))\n\n    setActualPosition(finalPosition)\n    setCoords({\n      x: x + scrollX,\n      y: y + scrollY,\n    })\n  }, [position])\n\n  // Open popover\n  const openPopover = useCallback(() => {\n    if (disabled) return\n    \n    previousActiveElementRef.current = document.activeElement as HTMLElement\n    \n    if (controlledOpen === undefined) {\n      setOpen(true)\n    }\n    onOpenChange?.(true)\n  }, [disabled, controlledOpen, onOpenChange])\n\n  // Close popover\n  const closePopover = useCallback(() => {\n    if (controlledOpen === undefined) {\n      setOpen(false)\n    }\n    onOpenChange?.(false)\n    \n    // Restore focus to trigger element without scrolling\n    if (previousActiveElementRef.current) {\n      previousActiveElementRef.current.focus({ preventScroll: true })\n    }\n  }, [controlledOpen, onOpenChange])\n\n  // Handle click outside\n  const handleClickOutside = useCallback((event: MouseEvent) => {\n    if (!closeOnClickOutside || !isOpen) return\n    \n    const target = event.target as Node\n    if (\n      popoverRef.current &&\n      triggerRef.current &&\n      !popoverRef.current.contains(target) &&\n      !triggerRef.current.contains(target)\n    ) {\n      closePopover()\n    }\n  }, [closeOnClickOutside, isOpen, closePopover])\n\n  // Handle keyboard events\n  const handleKeyDown = useCallback((event: KeyboardEvent) => {\n    if (event.key === 'Escape' && closeOnEscape && isOpen) {\n      closePopover()\n    }\n  }, [closeOnEscape, isOpen, closePopover])\n\n  // Handle focus management\n  const handleFocusManagement = useCallback(() => {\n    if (!autoFocus || !isOpen || !popoverRef.current) return\n\n    const focusableElements = popoverRef.current.querySelectorAll(\n      'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n    )\n\n    if (initialFocus) {\n      const initialElement = popoverRef.current.querySelector(initialFocus) as HTMLElement\n      if (initialElement) {\n        initialElement.focus({ preventScroll: true })\n        return\n      }\n    }\n\n    if (focusableElements.length > 0) {\n      (focusableElements[0] as HTMLElement).focus({ preventScroll: true })\n    } else {\n      popoverRef.current.focus({ preventScroll: true })\n    }\n  }, [autoFocus, isOpen, initialFocus])\n\n  // Handle focus trap\n  const handleFocusTrap = useCallback((event: KeyboardEvent) => {\n    if (!isOpen || !popoverRef.current || event.key !== 'Tab') return\n\n    const focusableElements = popoverRef.current.querySelectorAll(\n      'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n    )\n\n    if (focusableElements.length === 0) return\n\n    const firstElement = focusableElements[0] as HTMLElement\n    const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement\n\n    if (event.shiftKey) {\n      if (document.activeElement === firstElement) {\n        lastElement.focus({ preventScroll: true })\n        event.preventDefault()\n      }\n    } else {\n      if (document.activeElement === lastElement) {\n        firstElement.focus({ preventScroll: true })\n        event.preventDefault()\n      }\n    }\n  }, [isOpen])\n\n  // Effects\n  useEffect(() => {\n    if (isOpen) {\n      calculatePosition()\n      handleFocusManagement()\n      \n      const handleResize = () => calculatePosition()\n      const handleScroll = () => calculatePosition()\n      \n      window.addEventListener('resize', handleResize)\n      window.addEventListener('scroll', handleScroll)\n      document.addEventListener('mousedown', handleClickOutside)\n      document.addEventListener('keydown', handleKeyDown)\n      document.addEventListener('keydown', handleFocusTrap)\n      \n      return () => {\n        window.removeEventListener('resize', handleResize)\n        window.removeEventListener('scroll', handleScroll)\n        document.removeEventListener('mousedown', handleClickOutside)\n        document.removeEventListener('keydown', handleKeyDown)\n        document.removeEventListener('keydown', handleFocusTrap)\n      }\n    }\n  }, [isOpen, calculatePosition, handleFocusManagement, handleClickOutside, handleKeyDown, handleFocusTrap])\n\n  // Create trigger event handlers\n  const triggerProps: Record<string, (() => void) | ((e: React.MouseEvent) => void) | ((e: React.FocusEvent) => void)> = {}\n  \n  if (trigger === 'click') {\n    triggerProps.onClick = (e: React.MouseEvent) => {\n      e.preventDefault()\n      e.stopPropagation()\n      if (isOpen) {\n        closePopover()\n      } else {\n        openPopover()\n      }\n    }\n  } else if (trigger === 'focus') {\n    triggerProps.onFocus = openPopover\n    triggerProps.onBlur = (_e: React.FocusEvent) => {\n      // Don't close if focus moved to popover\n      setTimeout(() => {\n        if (popoverRef.current && popoverRef.current.contains(document.activeElement)) {\n          return\n        }\n        closePopover()\n      }, 0)\n    }\n  }\n\n  // Clone trigger element with event handlers\n  const triggerElement = React.cloneElement(children, {\n    ...triggerProps,\n    ref: (el: HTMLElement | null) => {\n      if (el) {\n        triggerRef.current = el\n      }\n    },\n    'aria-expanded': isOpen,\n    'aria-haspopup': 'dialog',\n  })\n\n  // Context value\n  const contextValue: PopoverContextValue = {\n    close: closePopover,\n  }\n\n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: clsx(\n      styles.popover,\n      styles[actualPosition.split('-')[0]],\n      {\n        [styles.withArrow]: showArrow,\n      }\n    )\n  })\n\n  // Render popover portal\n  const popoverPortal = isOpen ? createPortal(\n    <PopoverContext.Provider value={contextValue}>\n      <div\n        ref={popoverRef}\n        className={processedClassName}\n        style={{\n          position: 'absolute',\n          left: coords.x,\n          top: coords.y,\n          maxWidth,\n          zIndex: 'var(--brutal-z-popover)',\n          ...processedStyle\n        }}\n        role=\"dialog\"\n        aria-modal=\"true\"\n        tabIndex={-1}\n      >\n        {showArrow && <div className={styles.arrow} />}\n        <div className={styles.content}>\n          {content}\n        </div>\n      </div>\n    </PopoverContext.Provider>,\n    document.body\n  ) : null\n\n  return (\n    <>\n      {triggerElement}\n      {popoverPortal}\n    </>\n  )\n}\n\n// Subcomponents\nexport const PopoverContent: React.FC<{ children: React.ReactNode; className?: string; style?: CSSProperties }> = ({\n  children,\n  className,\n  style,\n}) => {\n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: styles.contentWrapper\n  })\n\n  return (\n    <div className={processedClassName} style={processedStyle}>\n      {children}\n    </div>\n  )\n}\n\nexport const PopoverHeader: React.FC<{ children: React.ReactNode; className?: string; style?: CSSProperties }> = ({\n  children,\n  className,\n  style,\n}) => {\n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: styles.header\n  })\n\n  return (\n    <div className={processedClassName} style={processedStyle}>\n      {children}\n    </div>\n  )\n}\n\nexport const PopoverBody: React.FC<{ children: React.ReactNode; className?: string; style?: CSSProperties }> = ({\n  children,\n  className,\n  style,\n}) => {\n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: styles.body\n  })\n\n  return (\n    <div className={processedClassName} style={processedStyle}>\n      {children}\n    </div>\n  )\n}\n\nexport const PopoverFooter: React.FC<{ children: React.ReactNode; className?: string; style?: CSSProperties }> = ({\n  children,\n  className,\n  style,\n}) => {\n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: styles.footer\n  })\n\n  return (\n    <div className={processedClassName} style={processedStyle}>\n      {children}\n    </div>\n  )\n}\n\n// Hook to access popover context\nexport const usePopover = () => {\n  const context = useContext(PopoverContext)\n  if (!context) {\n    throw new Error('usePopover must be used within a Popover component')\n  }\n  return context\n}\n\n// Assign subcomponents\nPopover.Content = PopoverContent\nPopover.Header = PopoverHeader\nPopover.Body = PopoverBody\nPopover.Footer = PopoverFooter\n\nPopover.displayName = 'Popover'\nPopoverContent.displayName = 'PopoverContent'\nPopoverHeader.displayName = 'PopoverHeader'\nPopoverBody.displayName = 'PopoverBody'\nPopoverFooter.displayName = 'PopoverFooter'","/**\n * @module Separator\n * @description A visual separator component for dividing content sections with customizable styles, orientations, and optional labels. Supports horizontal and vertical layouts with various border styles.\n */\n\nimport React from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Separator.module.css'\n\n/**\n * Props for the Separator component\n */\nexport interface SeparatorProps {\n  /**\n   * Orientation of the separator line\n   * @default 'horizontal'\n   */\n  orientation?: 'horizontal' | 'vertical'\n  \n  /**\n   * Thickness variant for the separator line\n   * @default 'medium'\n   */\n  thickness?: 'thin' | 'medium' | 'thick'\n  \n  /**\n   * Visual style variant for the separator line\n   * @default 'solid'\n   */\n  variant?: 'solid' | 'dashed' | 'dotted' | 'double'\n  \n  /**\n   * Additional CSS classes to apply to the separator\n   */\n  className?: string\n  \n  /**\n   * Inline styles to apply to the separator\n   */\n  style?: React.CSSProperties\n  \n  /**\n   * Decorative text or element to display in the middle of the separator (horizontal only)\n   */\n  label?: string | React.ReactNode\n  \n  /**\n   * Position of the label along the separator line\n   * @default 'center'\n   */\n  labelPosition?: 'start' | 'center' | 'end'\n  \n  /**\n   * Accessible label for screen readers\n   * @default 'Separator'\n   */\n  ariaLabel?: string\n}\n\nexport const Separator: React.FC<SeparatorProps> = ({\n  orientation = 'horizontal',\n  thickness = 'medium',\n  variant = 'solid',\n  className,\n  style,\n  label,\n  labelPosition = 'center',\n  ariaLabel = 'Separator',\n}) => {\n  const isHorizontal = orientation === 'horizontal'\n  \n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: clsx(\n      styles.separator,\n      styles[orientation],\n      styles[thickness],\n      styles[variant],\n      {\n        [styles.withLabel]: label && isHorizontal,\n        [styles[`label-${labelPosition}`]]: label && isHorizontal,\n      }\n    )\n  })\n  \n  return (\n    <div\n      className={processedClassName}\n      style={processedStyle}\n      role=\"separator\"\n      aria-orientation={orientation}\n      aria-label={ariaLabel}\n    >\n      {label && isHorizontal && (\n        <>\n          <div className={styles.line} />\n          <div className={styles.label}>\n            {typeof label === 'string' ? <span>{label}</span> : label}\n          </div>\n          <div className={styles.line} />\n        </>\n      )}\n    </div>\n  )\n}\n\nSeparator.displayName = 'Separator'\n\nexport default Separator","import { BrutalistTheme } from './types'\n\nexport const CLASSIC_THEME: BrutalistTheme = {\n  id: 'classic',\n  name: 'Classic Brutalist',\n  description: 'The original black, white, and red brutalist aesthetic',\n  colors: {\n    black: '#000000',\n    white: '#FFFFFF',\n    accent: '#FF0000',\n    accentDark: '#CC0000',\n    gray50: '#FAFAFA',\n    gray100: '#F5F5F5',\n    gray200: '#E5E5E5',\n    gray300: '#D4D4D4',\n    gray400: '#A3A3A3',\n    gray500: '#737373',\n    gray700: '#404040',\n    gray900: '#171717',\n    warning: '#FFC107',\n    success: '#22C55E',\n    error: '#FF0000',\n    info: '#0000FF',\n  }\n}\n\nexport const NEON_THEME: BrutalistTheme = {\n  id: 'neon',\n  name: 'Neon Cyber',\n  description: 'Electric cyberpunk brutalism with neon highlights',\n  colors: {\n    black: '#0A0A0A',\n    white: '#F0F0F0',\n    accent: '#00FF88',\n    accentDark: '#00CC6A',\n    gray50: '#F8F8F8',\n    gray100: '#E8E8E8',\n    gray200: '#D8D8D8',\n    gray300: '#C8C8C8',\n    gray400: '#888888',\n    gray500: '#555555',\n    gray700: '#333333',\n    gray900: '#111111',\n    warning: '#FFAA00',\n    success: '#00FF88',\n    error: '#FF0044',\n    info: '#00AAFF',\n  }\n}\n\nexport const PASTEL_THEME: BrutalistTheme = {\n  id: 'pastel',\n  name: 'Soft Brutalism',\n  description: 'Gentle pastel colors with brutalist structure',\n  colors: {\n    black: '#2D2D2D',\n    white: '#FFFBF7',\n    accent: '#FF6B9D',\n    accentDark: '#E85A8A',\n    gray50: '#FDF9F5',\n    gray100: '#F7F0E8',\n    gray200: '#F0E6DB',\n    gray300: '#E8DCCE',\n    gray400: '#C4B5A0',\n    gray500: '#9A8B7A',\n    gray700: '#5D4E42',\n    gray900: '#2D2D2D',\n    warning: '#FFB347',\n    success: '#77DD77',\n    error: '#FF6B9D',\n    info: '#87CEEB',\n  }\n}\n\nexport const DARK_THEME: BrutalistTheme = {\n  id: 'dark',\n  name: 'Dark Brutalism',\n  description: 'Dark mode brutalism with bright accents',\n  colors: {\n    black: '#FFFFFF',\n    white: '#0F0F0F',\n    accent: '#FF4444',\n    accentDark: '#DD2222',\n    gray50: '#1A1A1A',\n    gray100: '#242424',\n    gray200: '#2E2E2E',\n    gray300: '#383838',\n    gray400: '#666666',\n    gray500: '#999999',\n    gray700: '#CCCCCC',\n    gray900: '#F0F0F0',\n    warning: '#FFB000',\n    success: '#00DD55',\n    error: '#FF4444',\n    info: '#4488FF',\n  }\n}\n\nexport const RETRO_THEME: BrutalistTheme = {\n  id: 'retro',\n  name: 'Retro Future',\n  description: '80s-inspired brutalism with vintage computing vibes',\n  colors: {\n    black: '#1A0D1A',\n    white: '#F5F5DC',\n    accent: '#FF00FF',\n    accentDark: '#CC00CC',\n    gray50: '#F0F0E6',\n    gray100: '#E6E6DC',\n    gray200: '#DCDCD2',\n    gray300: '#C8C8BE',\n    gray400: '#A0A096',\n    gray500: '#78786E',\n    gray700: '#464640',\n    gray900: '#2D2D27',\n    warning: '#FFAA00',\n    success: '#00FF00',\n    error: '#FF00FF',\n    info: '#00FFFF',\n  }\n}\n\nexport const NATURE_THEME: BrutalistTheme = {\n  id: 'nature',\n  name: 'Earth Brutalism',\n  description: 'Natural earth tones with brutalist structure',\n  colors: {\n    black: '#2F2F23',\n    white: '#F7F5F0',\n    accent: '#8B4513',\n    accentDark: '#6B3410',\n    gray50: '#F5F3EE',\n    gray100: '#EBE7DD',\n    gray200: '#E1DBCC',\n    gray300: '#D7CFBB',\n    gray400: '#B8A990',\n    gray500: '#998365',\n    gray700: '#5C5140',\n    gray900: '#3A3328',\n    warning: '#DAA520',\n    success: '#228B22',\n    error: '#A0522D',\n    info: '#4682B4',\n  }\n}\n\nexport const OCEAN_THEME: BrutalistTheme = {\n  id: 'ocean',\n  name: 'Ocean Brutalism',\n  description: 'Deep blue ocean-inspired color palette',\n  colors: {\n    black: '#0F1419',\n    white: '#F0F8FF',\n    accent: '#1E90FF',\n    accentDark: '#1874CD',\n    gray50: '#F8FBFF',\n    gray100: '#E6F2FF',\n    gray200: '#D4E9FF',\n    gray300: '#C2E0FF',\n    gray400: '#85C1F5',\n    gray500: '#4A90E2',\n    gray700: '#2E5984',\n    gray900: '#1A3A5C',\n    warning: '#FF8C00',\n    success: '#00CED1',\n    error: '#DC143C',\n    info: '#1E90FF',\n  }\n}\n\nexport const MONOCHROME_THEME: BrutalistTheme = {\n  id: 'monochrome',\n  name: 'Pure Monochrome',\n  description: 'Strict black and white with minimal color',\n  colors: {\n    black: '#000000',\n    white: '#FFFFFF',\n    accent: '#000000',\n    accentDark: '#333333',\n    gray50: '#FAFAFA',\n    gray100: '#F0F0F0',\n    gray200: '#E0E0E0',\n    gray300: '#D0D0D0',\n    gray400: '#A0A0A0',\n    gray500: '#707070',\n    gray700: '#404040',\n    gray900: '#101010',\n    warning: '#666666',\n    success: '#444444',\n    error: '#000000',\n    info: '#888888',\n  }\n}\n\n// Collection of all available themes\nexport const AVAILABLE_THEMES: BrutalistTheme[] = [\n  CLASSIC_THEME,\n  NEON_THEME,\n  PASTEL_THEME,\n  DARK_THEME,\n  RETRO_THEME,\n  NATURE_THEME,\n  OCEAN_THEME,\n  MONOCHROME_THEME,\n]\n\n// Default theme\nexport const DEFAULT_THEME = CLASSIC_THEME\n\n// Helper to get theme by ID\nexport const getThemeById = (id: string): BrutalistTheme | undefined => {\n  return AVAILABLE_THEMES.find(theme => theme.id === id)\n}","export interface BrutalistTheme {\n  id: string\n  name: string\n  description: string\n  colors: {\n    // Primary colors\n    black: string\n    white: string\n    accent: string\n    accentDark: string\n    \n    // Gray scale\n    gray50: string\n    gray100: string\n    gray200: string\n    gray300: string\n    gray400: string\n    gray500: string\n    gray700: string\n    gray900: string\n    \n    // Status colors\n    warning: string\n    success: string\n    error: string\n    info: string\n  }\n}\n\nexport interface ThemeContextValue {\n  currentTheme: BrutalistTheme\n  setTheme: (theme: BrutalistTheme) => void\n  availableThemes: BrutalistTheme[]\n  randomizeTheme: () => void\n  resetToDefault: () => void\n}\n\nexport type ThemeColors = BrutalistTheme['colors']\n\n// CSS custom properties mapping\nexport const CSS_VARIABLES_MAP = {\n  black: '--brutal-black',\n  white: '--brutal-white',\n  accent: '--brutal-accent',\n  accentDark: '--brutal-accent-dark',\n  gray50: '--brutal-gray-50',\n  gray100: '--brutal-gray-100',\n  gray200: '--brutal-gray-200',\n  gray300: '--brutal-gray-300',\n  gray400: '--brutal-gray-400',\n  gray500: '--brutal-gray-500',\n  gray700: '--brutal-gray-700',\n  gray900: '--brutal-gray-900',\n  warning: '--brutal-warning',\n  success: '--brutal-success',\n  error: '--brutal-error',\n  info: '--brutal-info',\n} as const\n\nexport type CSSVariableKey = keyof typeof CSS_VARIABLES_MAP","import { BrutalistTheme, ThemeColors, CSS_VARIABLES_MAP, CSSVariableKey } from './types'\nimport { AVAILABLE_THEMES, DEFAULT_THEME } from './themes'\n\n/**\n * Applies a theme by setting CSS custom properties on the document root\n */\nexport const applyTheme = (theme: BrutalistTheme): void => {\n  const root = document.documentElement\n  \n  Object.entries(theme.colors).forEach(([colorKey, colorValue]) => {\n    const cssVariable = CSS_VARIABLES_MAP[colorKey as CSSVariableKey]\n    if (cssVariable) {\n      root.style.setProperty(cssVariable, colorValue)\n    }\n  })\n}\n\n/**\n * Generates a random theme by mixing colors from existing themes\n */\nexport const generateRandomTheme = (): BrutalistTheme => {\n  const randomId = `random-${Date.now()}`\n  \n  // Get random colors from different themes\n  const randomColors: ThemeColors = {\n    black: getRandomColorFromThemes('black'),\n    white: getRandomColorFromThemes('white'),\n    accent: getRandomColorFromThemes('accent'),\n    accentDark: getRandomColorFromThemes('accentDark'),\n    gray50: getRandomColorFromThemes('gray50'),\n    gray100: getRandomColorFromThemes('gray100'),\n    gray200: getRandomColorFromThemes('gray200'),\n    gray300: getRandomColorFromThemes('gray300'),\n    gray400: getRandomColorFromThemes('gray400'),\n    gray500: getRandomColorFromThemes('gray500'),\n    gray700: getRandomColorFromThemes('gray700'),\n    gray900: getRandomColorFromThemes('gray900'),\n    warning: getRandomColorFromThemes('warning'),\n    success: getRandomColorFromThemes('success'),\n    error: getRandomColorFromThemes('error'),\n    info: getRandomColorFromThemes('info'),\n  }\n\n  return {\n    id: randomId,\n    name: 'Random Theme',\n    description: 'Randomly generated color combination',\n    colors: randomColors\n  }\n}\n\n/**\n * Gets a random color value for a specific color key from all available themes\n */\nconst getRandomColorFromThemes = (colorKey: keyof ThemeColors): string => {\n  const randomTheme = AVAILABLE_THEMES[Math.floor(Math.random() * AVAILABLE_THEMES.length)]\n  return randomTheme.colors[colorKey]\n}\n\n/**\n * Generates CSS custom properties string for a theme\n */\nexport const generateThemeCSS = (theme: BrutalistTheme): string => {\n  const cssLines = Object.entries(theme.colors).map(([colorKey, colorValue]) => {\n    const cssVariable = CSS_VARIABLES_MAP[colorKey as CSSVariableKey]\n    return `  ${cssVariable}: ${colorValue};`\n  })\n  \n  return `:root {\\n${cssLines.join('\\n')}\\n}`\n}\n\n/**\n * Generates JavaScript object for theme colors\n */\nexport const generateThemeJS = (theme: BrutalistTheme): string => {\n  const jsObject = JSON.stringify(theme.colors, null, 2)\n  return `const theme = ${jsObject}`\n}\n\n/**\n * Creates a copy-ready CSS variables snippet\n */\nexport const generateCSSVariablesCode = (theme: BrutalistTheme): string => {\n  return `/* ${theme.name} Theme */\\n${generateThemeCSS(theme)}`\n}\n\n/**\n * Creates a copy-ready React theme provider code\n */\nexport const generateReactThemeCode = (theme: BrutalistTheme): string => {\n  return `import { ThemeProvider } from '@brutalist-ui/components'\n\nconst ${theme.id}Theme = ${JSON.stringify(theme, null, 2)}\n\nfunction App() {\n  return (\n    <ThemeProvider theme={${theme.id}Theme}>\n      {/* Your components */}\n    </ThemeProvider>\n  )\n}`\n}\n\n/**\n * Generates separate theme definition file\n */\nexport const generateThemeFile = (theme: BrutalistTheme): string => {\n  return `import { BrutalistTheme } from '@brutalist-ui/components'\n\nexport const ${theme.id}Theme: BrutalistTheme = ${JSON.stringify(theme, null, 2)}\n\nexport default ${theme.id}Theme`\n}\n\n/**\n * Generates App.tsx with theme provider\n */\nexport const generateAppFile = (theme: BrutalistTheme, componentName?: string): string => {\n  const componentImport = componentName ? `import ${componentName} from './components/${componentName}'` : \"import YourComponent from './components/YourComponent'\"\n  const componentUsage = componentName ? `<${componentName} />` : '<YourComponent />'\n  \n  return `import React from 'react'\nimport { ThemeProvider } from '@brutalist-ui/components'\nimport { ${theme.id}Theme } from './theme'\n${componentImport}\n\nfunction App() {\n  return (\n    <ThemeProvider theme={${theme.id}Theme}>\n      <div className=\"app\">\n        ${componentUsage}\n      </div>\n    </ThemeProvider>\n  )\n}\n\nexport default App`\n}\n\n/**\n * Generates multi-file code examples\n */\nexport const generateMultiFileCode = (theme: BrutalistTheme, componentCode?: string, componentName?: string): {\n  'theme.ts': string\n  'App.tsx': string\n  'component.tsx': string\n} => {\n  return {\n    'theme.ts': generateThemeFile(theme),\n    'App.tsx': generateAppFile(theme, componentName),\n    'component.tsx': componentCode || '// Your component code goes here'\n  }\n}\n\n/**\n * Saves theme to localStorage\n */\nexport const saveThemeToStorage = (theme: BrutalistTheme): void => {\n  try {\n    localStorage.setItem('brutalist-theme', JSON.stringify(theme))\n  } catch (error) {\n    console.warn('Failed to save theme to localStorage:', error)\n  }\n}\n\n/**\n * Loads theme from localStorage\n */\nexport const loadThemeFromStorage = (): BrutalistTheme | null => {\n  try {\n    const savedTheme = localStorage.getItem('brutalist-theme')\n    if (savedTheme) {\n      return JSON.parse(savedTheme)\n    }\n  } catch (error) {\n    console.warn('Failed to load theme from localStorage:', error)\n  }\n  return null\n}\n\n/**\n * Validates if a theme object has all required properties\n */\nexport const isValidTheme = (theme: unknown): theme is BrutalistTheme => {\n  if (!theme || typeof theme !== 'object') return false\n  \n  const themeObj = theme as Record<string, unknown>\n  \n  const requiredProps = ['id', 'name', 'description', 'colors']\n  const hasRequiredProps = requiredProps.every(prop => prop in themeObj)\n  \n  if (!hasRequiredProps) return false\n  \n  // Check if colors object exists and has all required color properties\n  if (!themeObj.colors || typeof themeObj.colors !== 'object') return false\n  \n  const requiredColors = Object.keys(CSS_VARIABLES_MAP)\n  const hasRequiredColors = requiredColors.every(color => color in (themeObj.colors as Record<string, unknown>))\n  \n  return hasRequiredColors\n}\n\n/**\n * Gets the current theme from CSS custom properties\n */\nexport const getCurrentThemeFromDOM = (): Partial<ThemeColors> => {\n  const root = document.documentElement\n  const computedStyle = getComputedStyle(root)\n  \n  const currentColors: Partial<ThemeColors> = {}\n  \n  Object.entries(CSS_VARIABLES_MAP).forEach(([colorKey, cssVariable]) => {\n    const value = computedStyle.getPropertyValue(cssVariable).trim()\n    if (value) {\n      currentColors[colorKey as keyof ThemeColors] = value\n    }\n  })\n  \n  return currentColors\n}\n\n/**\n * Resets theme to default\n */\nexport const resetToDefaultTheme = (): void => {\n  applyTheme(DEFAULT_THEME)\n  localStorage.removeItem('brutalist-theme')\n}","/**\n * @module ThemeContext\n * @description Theme management system providing context for theme switching, persistence, and customization. Supports multiple predefined themes and custom theme generation.\n */\n\nimport React, { createContext, useContext, useEffect, useState, ReactNode } from 'react'\nimport { BrutalistTheme, ThemeContextValue } from './types'\nimport { \n  DEFAULT_THEME, \n  AVAILABLE_THEMES,\n  getThemeById \n} from './themes'\nimport { \n  applyTheme, \n  generateRandomTheme, \n  saveThemeToStorage, \n  loadThemeFromStorage, \n  resetToDefaultTheme,\n  isValidTheme \n} from './utils'\n\n// Create the theme context\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined)\n\n/**\n * Props for the ThemeProvider component\n */\nexport interface ThemeProviderProps {\n  /** Child components that will have access to theme context */\n  children: ReactNode\n  /** Initial theme to use. If not provided, will try to load from localStorage or use default */\n  initialTheme?: BrutalistTheme\n  /** Whether to persist theme changes to localStorage\n   * @default true\n   */\n  enablePersistence?: boolean\n}\n\n/**\n * ThemeProvider component that manages theme state and provides theme functionality\n */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n  children,\n  initialTheme,\n  enablePersistence = true,\n}) => {\n  // Initialize theme state\n  const [currentTheme, setCurrentTheme] = useState<BrutalistTheme>(() => {\n    // Priority: initialTheme > localStorage > default\n    if (initialTheme && isValidTheme(initialTheme)) {\n      return initialTheme\n    }\n    \n    if (enablePersistence) {\n      const savedTheme = loadThemeFromStorage()\n      if (savedTheme && isValidTheme(savedTheme)) {\n        return savedTheme\n      }\n    }\n    \n    return DEFAULT_THEME\n  })\n\n  // Apply theme when currentTheme changes\n  useEffect(() => {\n    applyTheme(currentTheme)\n    \n    if (enablePersistence) {\n      saveThemeToStorage(currentTheme)\n    }\n  }, [currentTheme, enablePersistence])\n\n  // Theme management functions\n  const setTheme = (theme: BrutalistTheme) => {\n    if (isValidTheme(theme)) {\n      setCurrentTheme(theme)\n    } else {\n      console.warn('Invalid theme provided to setTheme:', theme)\n    }\n  }\n\n  const randomizeTheme = () => {\n    const randomTheme = generateRandomTheme()\n    setCurrentTheme(randomTheme)\n  }\n\n  const resetToDefault = () => {\n    setCurrentTheme(DEFAULT_THEME)\n    if (enablePersistence) {\n      resetToDefaultTheme()\n    }\n  }\n\n  // Context value\n  const contextValue: ThemeContextValue = {\n    currentTheme,\n    setTheme,\n    availableThemes: AVAILABLE_THEMES,\n    randomizeTheme,\n    resetToDefault,\n  }\n\n  return (\n    <ThemeContext.Provider value={contextValue}>\n      {children}\n    </ThemeContext.Provider>\n  )\n}\n\n/**\n * Hook to consume theme context\n * @returns ThemeContextValue\n * @throws Error if used outside of ThemeProvider\n */\nexport const useTheme = (): ThemeContextValue => {\n  const context = useContext(ThemeContext)\n  \n  if (context === undefined) {\n    throw new Error('useTheme must be used within a ThemeProvider')\n  }\n  \n  return context\n}\n\n/**\n * Hook to get current theme colors\n * @returns Current theme colors\n */\nexport const useThemeColors = () => {\n  const { currentTheme } = useTheme()\n  return currentTheme.colors\n}\n\n/**\n * Hook to check if a specific theme is currently active\n * @param themeId - Theme ID to check\n * @returns boolean indicating if theme is active\n */\nexport const useIsThemeActive = (themeId: string): boolean => {\n  const { currentTheme } = useTheme()\n  return currentTheme.id === themeId\n}\n\n/**\n * Hook to switch to a theme by ID\n * @returns Function to switch theme by ID\n */\nexport const useThemeSwitcher = () => {\n  const { setTheme } = useTheme()\n  \n  return (themeId: string) => {\n    const theme = getThemeById(themeId)\n    if (theme) {\n      setTheme(theme)\n    } else {\n      console.warn(`Theme with ID \"${themeId}\" not found`)\n    }\n  }\n}","/**\n * @module ThemePicker\n * @description Interactive theme selection component with live preview, code generation, and theme customization. Allows users to browse predefined themes and generate custom themes.\n */\n\nimport React, { useState } from 'react'\nimport { clsx } from 'clsx'\nimport { useTheme } from './ThemeContext'\nimport { BrutalistTheme } from './types'\nimport { generateCSSVariablesCode, generateReactThemeCode } from './utils'\nimport styles from './ThemePicker.module.css'\n\n/**\n * Props for the ThemePicker component\n */\nexport interface ThemePickerProps {\n  /** Visual variant affecting size and layout\n   * @default 'default'\n   */\n  variant?: 'default' | 'compact'\n  /** Whether to show brutalist-style shadow effects\n   * @default true\n   */\n  brutalistShadow?: boolean\n  /** Whether to show code generation section\n   * @default true\n   */\n  showCode?: boolean\n  /** Additional CSS class names */\n  className?: string\n  /** Callback fired when theme changes */\n  onThemeChange?: (theme: BrutalistTheme) => void\n}\n\nexport const ThemePicker: React.FC<ThemePickerProps> = ({\n  variant = 'default',\n  brutalistShadow = true,\n  showCode = true,\n  className,\n  onThemeChange,\n}) => {\n  const { currentTheme, setTheme, availableThemes, randomizeTheme, resetToDefault } = useTheme()\n  const [showCodeSection, setShowCodeSection] = useState(false)\n  const [codeType, setCodeType] = useState<'css' | 'react'>('css')\n  const [copyFeedback, setCopyFeedback] = useState('')\n\n  const handleThemeSelect = (theme: BrutalistTheme) => {\n    setTheme(theme)\n    onThemeChange?.(theme)\n  }\n\n  const handleRandomize = () => {\n    randomizeTheme()\n    onThemeChange?.(currentTheme)\n  }\n\n  const handleReset = () => {\n    resetToDefault()\n    onThemeChange?.(currentTheme)\n  }\n\n  const copyToClipboard = async (text: string, type: string) => {\n    try {\n      await navigator.clipboard.writeText(text)\n      setCopyFeedback(`${type} copied!`)\n      setTimeout(() => setCopyFeedback(''), 2000)\n    } catch (error) {\n      console.error('Failed to copy to clipboard:', error)\n      setCopyFeedback('Copy failed')\n      setTimeout(() => setCopyFeedback(''), 2000)\n    }\n  }\n\n  const generateCode = () => {\n    return codeType === 'css' \n      ? generateCSSVariablesCode(currentTheme)\n      : generateReactThemeCode(currentTheme)\n  }\n\n  // Get key colors for theme preview\n  const getPreviewColors = (theme: BrutalistTheme) => [\n    theme.colors.black,\n    theme.colors.white,\n    theme.colors.accent,\n    theme.colors.gray500,\n  ]\n\n  return (\n    <div \n      className={clsx(\n        styles.container,\n        {\n          [styles.compact]: variant === 'compact',\n          [styles.withShadow]: brutalistShadow,\n        },\n        className\n      )}\n    >\n      {/* Header */}\n      <div className={styles.header}>\n        <h3 className={styles.title}>Theme Picker</h3>\n        <div className={styles.actions}>\n          <button \n            className={styles.actionButton}\n            onClick={handleRandomize}\n            title=\"Generate random theme\"\n          >\n            🎲 Random\n          </button>\n          <button \n            className={styles.actionButton}\n            onClick={handleReset}\n            title=\"Reset to default theme\"\n          >\n            🔄 Reset\n          </button>\n        </div>\n      </div>\n\n      {/* Current Theme Info */}\n      <div className={styles.currentTheme}>\n        <h4 className={styles.currentThemeTitle}>Current Theme</h4>\n        <div className={styles.currentThemeInfo}>\n          <span className={styles.currentThemeName}>{currentTheme.name}</span>\n          <button\n            className={styles.copyButton}\n            onClick={() => copyToClipboard(JSON.stringify(currentTheme, null, 2), 'Theme')}\n          >\n            {copyFeedback || 'Copy Theme'}\n          </button>\n        </div>\n        \n        {/* Color Palette */}\n        <div className={styles.colorPalette}>\n          {Object.entries(currentTheme.colors).map(([colorName, colorValue]) => (\n            <div\n              key={colorName}\n              className={styles.paletteColor}\n              style={{ backgroundColor: colorValue }}\n              title={`${colorName}: ${colorValue}`}\n              onClick={() => copyToClipboard(colorValue, colorName)}\n            />\n          ))}\n        </div>\n      </div>\n\n      {/* Theme Grid */}\n      <div className={styles.themeGrid}>\n        {availableThemes.map((theme) => (\n          <div\n            key={theme.id}\n            className={clsx(styles.themeCard, {\n              [styles.active]: currentTheme.id === theme.id,\n            })}\n            onClick={() => handleThemeSelect(theme)}\n          >\n            {/* Color Preview */}\n            <div className={styles.colorPreview}>\n              {getPreviewColors(theme).map((color, index) => (\n                <div\n                  key={index}\n                  className={styles.colorSwatch}\n                  style={{ backgroundColor: color }}\n                />\n              ))}\n            </div>\n            \n            {/* Theme Info */}\n            <div className={styles.themeInfo}>\n              <h4 className={styles.themeName}>{theme.name}</h4>\n              {variant !== 'compact' && (\n                <p className={styles.themeDescription}>{theme.description}</p>\n              )}\n            </div>\n          </div>\n        ))}\n      </div>\n\n      {/* Code Section */}\n      {showCode && (\n        <div className={styles.codeSection}>\n          <button\n            className={styles.codeToggle}\n            onClick={() => setShowCodeSection(!showCodeSection)}\n          >\n            {showCodeSection ? '🔻 Hide Code' : '🔺 Show Code'}\n          </button>\n          \n          {showCodeSection && (\n            <>\n              {/* Code Type Selector */}\n              <div className={styles.actions} style={{ marginBottom: 'var(--brutal-space-3)' }}>\n                <button\n                  className={clsx(styles.actionButton, {\n                    [styles.active]: codeType === 'css'\n                  })}\n                  onClick={() => setCodeType('css')}\n                >\n                  CSS\n                </button>\n                <button\n                  className={clsx(styles.actionButton, {\n                    [styles.active]: codeType === 'react'\n                  })}\n                  onClick={() => setCodeType('react')}\n                >\n                  React\n                </button>\n              </div>\n\n              {/* Code Block */}\n              <div className={styles.codeBlock}>\n                <button\n                  className={styles.codeCopyButton}\n                  onClick={() => copyToClipboard(generateCode(), codeType.toUpperCase())}\n                >\n                  {copyFeedback || 'Copy'}\n                </button>\n                <pre>{generateCode()}</pre>\n              </div>\n            </>\n          )}\n        </div>\n      )}\n    </div>\n  )\n}","/**\n * @module Table\n * @description A comprehensive table component with support for sorting, alignment, and various styling options. Includes compound components for building complex data tables with accessibility features.\n */\n\nimport { forwardRef, HTMLAttributes, ThHTMLAttributes, TdHTMLAttributes, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Table.module.css'\n\n/**\n * Props for the main Table component\n */\nexport interface TableProps extends HTMLAttributes<HTMLTableElement> {\n  /**\n   * Visual style variant of the table\n   * @default 'default'\n   */\n  variant?: 'default' | 'striped' | 'bordered'\n  \n  /**\n   * Size of the table affecting padding and font size\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Whether table rows should highlight on hover\n   * @default false\n   */\n  hoverable?: boolean\n  \n  /**\n   * Whether the table should take full width of its container\n   * @default true\n   */\n  fullWidth?: boolean\n  \n  /**\n   * Additional CSS classes to apply to the table\n   */\n  className?: string\n\n  /**\n   * Custom styles to apply to the table\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the TableHead component\n */\nexport interface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {\n  /**\n   * Whether the table header should stick to the top on scroll\n   * @default false\n   */\n  sticky?: boolean\n  \n  /**\n   * Additional CSS classes to apply to the table head\n   */\n  className?: string\n\n  /**\n   * Custom styles to apply to the table head\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the TableHeader component (th elements)\n */\nexport interface TableHeaderProps extends ThHTMLAttributes<HTMLTableCellElement> {\n  /**\n   * Text alignment for the header content\n   * @default 'left'\n   */\n  align?: 'left' | 'center' | 'right'\n  \n  /**\n   * Whether this column supports sorting\n   * @default false\n   */\n  sortable?: boolean\n  \n  /**\n   * Current sort direction for this column\n   * @default 'none'\n   */\n  sortDirection?: 'asc' | 'desc' | 'none'\n  \n  /**\n   * Callback function triggered when the sort button is clicked\n   */\n  onSort?: () => void\n  \n  /**\n   * Additional CSS classes to apply to the header cell\n   */\n  className?: string\n\n  /**\n   * Custom styles to apply to the header cell\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the TableCell component (td elements)\n */\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n  /**\n   * Text alignment for the cell content\n   * @default 'left'\n   */\n  align?: 'left' | 'center' | 'right'\n  \n  /**\n   * Whether this cell contains numeric data (affects styling)\n   * @default false\n   */\n  numeric?: boolean\n  \n  /**\n   * Additional CSS classes to apply to the cell\n   */\n  className?: string\n\n  /**\n   * Custom styles to apply to the cell\n   */\n  style?: CSSProperties\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n  (\n    {\n      variant = 'default',\n      size = 'md',\n      hoverable = false,\n      fullWidth = true,\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.table,\n        styles[variant],\n        styles[size],\n        {\n          [styles.hoverable]: hoverable,\n          [styles.fullWidth]: fullWidth,\n        }\n      )\n    })\n\n    return (\n      <div className={clsx(styles.tableWrapper, { [styles.fullWidth]: fullWidth })}>\n        <table\n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          {...props}\n        >\n          {children}\n        </table>\n      </div>\n    )\n  }\n)\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, TableHeadProps>(\n  ({ sticky = false, className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.thead,\n        {\n          [styles.sticky]: sticky,\n        }\n      )\n    })\n\n    return (\n      <thead\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </thead>\n    )\n  }\n)\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement> & { style?: CSSProperties }>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.tbody\n    })\n\n    return (\n      <tbody ref={ref} className={processedClassName} style={processedStyle} {...props}>\n        {children}\n      </tbody>\n    )\n  }\n)\n\nexport const TableRow = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement> & { style?: CSSProperties }>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.tr\n    })\n\n    return (\n      <tr ref={ref} className={processedClassName} style={processedStyle} {...props}>\n        {children}\n      </tr>\n    )\n  }\n)\n\nexport const TableHeader = forwardRef<HTMLTableCellElement, TableHeaderProps>(\n  (\n    {\n      align = 'left',\n      sortable = false,\n      sortDirection = 'none',\n      onSort,\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const handleClick = () => {\n      if (sortable && onSort) {\n        onSort()\n      }\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.th,\n        styles[`align-${align}`],\n        {\n          [styles.sortable]: sortable,\n          [styles.sorted]: sortDirection !== 'none',\n        }\n      )\n    })\n\n    return (\n      <th\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={handleClick}\n        role={sortable ? 'button' : undefined}\n        tabIndex={sortable ? 0 : undefined}\n        aria-sort={\n          sortDirection === 'asc'\n            ? 'ascending'\n            : sortDirection === 'desc'\n            ? 'descending'\n            : 'none'\n        }\n        {...props}\n      >\n        <div className={styles.thContent}>\n          {children}\n          {sortable && (\n            <span className={clsx(styles.sortIcon, styles[`sort-${sortDirection}`])}>\n              {sortDirection === 'asc' && '↑'}\n              {sortDirection === 'desc' && '↓'}\n              {sortDirection === 'none' && '↕'}\n            </span>\n          )}\n        </div>\n      </th>\n    )\n  }\n)\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(\n  ({ align = 'left', numeric = false, className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.td,\n        styles[`align-${align}`],\n        {\n          [styles.numeric]: numeric,\n        }\n      )\n    })\n\n    return (\n      <td\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </td>\n    )\n  }\n)\n\n// Export compound components\nTable.displayName = 'Table'\nTableHead.displayName = 'TableHead'\nTableBody.displayName = 'TableBody'\nTableRow.displayName = 'TableRow'\nTableHeader.displayName = 'TableHeader'\nTableCell.displayName = 'TableCell'\n\n// Attach subcomponents\nconst TableNamespace = Object.assign(Table, {\n  Head: TableHead,\n  Body: TableBody,\n  Row: TableRow,\n  Header: TableHeader,\n  Cell: TableCell,\n})\n\nexport default TableNamespace","/**\n * @module Spinner\n * @description A loading spinner component for indicating background activity or content loading. Customizable size and appearance.\n */\n\nimport { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Spinner.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface SpinnerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n  /** Size of the spinner */\n  size?: 'sm' | 'md' | 'lg' | 'xl'\n  /** Color variant */\n  color?: 'default' | 'accent' | 'success' | 'warning' | 'error' | 'info'\n  /** Animation variant */\n  variant?: 'dots' | 'bars' | 'square' | 'glitch'\n  /** Speed of animation */\n  speed?: 'slow' | 'normal' | 'fast'\n  /** Label for accessibility */\n  label?: string\n  /** Additional CSS classes */\n  className?: string\n}\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(\n  (\n    {\n      size = 'md',\n      color = 'default',\n      variant = 'dots',\n      speed = 'normal',\n      label = 'Loading',\n      className,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    const renderSpinner = () => {\n      switch (variant) {\n        case 'dots':\n          return (\n            <>\n              <span className={styles.dot} />\n              <span className={styles.dot} />\n              <span className={styles.dot} />\n            </>\n          )\n        case 'bars':\n          return (\n            <>\n              <span className={styles.bar} />\n              <span className={styles.bar} />\n              <span className={styles.bar} />\n              <span className={styles.bar} />\n            </>\n          )\n        case 'square':\n          return <span className={styles.square} />\n        case 'glitch':\n          return (\n            <>\n              <span className={styles.glitchSquare} />\n              <span className={styles.glitchSquare} />\n              <span className={styles.glitchSquare} />\n            </>\n          )\n        default:\n          return null\n      }\n    }\n\n    // Process spinner utilities\n    const { className: spinnerClassName, style: spinnerStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.spinner,\n        styles[size],\n        styles[color],\n        styles[variant],\n        styles[`speed-${speed}`]\n      )\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={spinnerClassName}\n        style={spinnerStyle}\n        role=\"status\"\n        aria-label={label}\n        {...props}\n      >\n        {renderSpinner()}\n        <span className={styles.srOnly}>{label}</span>\n      </div>\n    )\n  }\n)\n\nSpinner.displayName = 'Spinner'","/**\n * @module Toast\n * @description A notification system with support for different types, positioning, and actions. Provides both hook-based and imperative APIs for showing temporary messages to users.\n */\n\nimport React, { useState, useEffect, createContext, useContext, useCallback, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Toast.module.css'\n\n/**\n * Available toast notification types\n */\nexport type ToastType = 'info' | 'success' | 'warning' | 'error'\n\n/**\n * Available positions for toast notifications\n */\nexport type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'\n\n/**\n * Data structure for a toast notification\n */\nexport interface ToastData {\n  /**\n   * Unique identifier for the toast\n   */\n  id: string\n  \n  /**\n   * Type of the notification affecting appearance and icon\n   */\n  type: ToastType\n  \n  /**\n   * Optional title displayed above the message\n   */\n  title?: string\n  \n  /**\n   * Main message content of the toast\n   */\n  message: string\n  \n  /**\n   * Duration in milliseconds before auto-dismissal (0 = no auto-dismiss)\n   * @default 5000\n   */\n  duration?: number\n  \n  /**\n   * Whether the toast can be manually dismissed by the user\n   * @default true\n   */\n  dismissible?: boolean\n  \n  /**\n   * Optional action button configuration\n   */\n  action?: {\n    /**\n     * Text label for the action button\n     */\n    label: string\n    /**\n     * Callback function when action button is clicked\n     */\n    onClick: () => void\n  }\n}\n\n/**\n * Context value interface for toast management\n */\ninterface ToastContextValue {\n  /**\n   * Array of currently active toasts\n   */\n  toasts: ToastData[]\n  \n  /**\n   * Function to display a new toast notification\n   */\n  showToast: (toast: Omit<ToastData, 'id'>) => string\n  \n  /**\n   * Function to hide a specific toast by ID\n   */\n  hideToast: (id: string) => void\n  \n  /**\n   * Function to hide all active toasts\n   */\n  hideAllToasts: () => void\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\n/**\n * Props for the ToastProvider component\n */\nexport interface ToastProviderProps {\n  /**\n   * Child components that will have access to toast functionality\n   */\n  children: React.ReactNode\n  \n  /**\n   * Position where toasts should appear on screen\n   * @default 'bottom-right'\n   */\n  position?: ToastPosition\n  \n  /**\n   * Maximum number of toasts to display at once\n   * @default 5\n   */\n  maxToasts?: number\n  \n  /**\n   * Additional CSS classes to apply to the toast container\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the toast container\n   */\n  style?: CSSProperties\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({ \n  children, \n  position = 'bottom-right',\n  maxToasts = 5,\n  className,\n  style\n}) => {\n  const [toasts, setToasts] = useState<ToastData[]>([])\n\n  const showToast = useCallback((toast: Omit<ToastData, 'id'>) => {\n    const id = `toast-${Date.now()}-${Math.random()}`\n    const newToast = { ...toast, id }\n    \n    setToasts(prev => {\n      const updated = [...prev, newToast]\n      // Keep only the latest maxToasts\n      return updated.slice(-maxToasts)\n    })\n    \n    return id\n  }, [maxToasts])\n\n  const hideToast = useCallback((id: string) => {\n    setToasts(prev => prev.filter(toast => toast.id !== id))\n  }, [])\n\n  const hideAllToasts = useCallback(() => {\n    setToasts([])\n  }, [])\n\n  const contextValue = React.useMemo(() => ({ \n    toasts, \n    showToast, \n    hideToast, \n    hideAllToasts \n  }), [toasts, showToast, hideToast, hideAllToasts])\n\n  // Register the store for imperative API\n  useEffect(() => {\n    registerToastStore(contextValue)\n    return () => {\n      toastStore = null\n    }\n  }, [contextValue])\n\n  return (\n    <ToastContext.Provider value={contextValue}>\n      {children}\n      <ToastContainer position={position} className={className} style={style} />\n    </ToastContext.Provider>\n  )\n}\n\ninterface ToastContainerProps {\n  position: ToastPosition\n  className?: string\n  style?: CSSProperties\n}\n\nconst ToastContainer: React.FC<ToastContainerProps> = ({ position, className, style }) => {\n  const context = useContext(ToastContext)\n  \n  // Process utility classes - must be called before any conditional returns\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: clsx(styles.container, styles[position])\n  })\n  \n  if (!context) return null\n\n  const { toasts } = context\n\n  if (toasts.length === 0) return null\n\n  return createPortal(\n    <div className={processedClassName} style={processedStyle}>\n      {toasts.map(toast => (\n        <ToastItem key={toast.id} {...toast} />\n      ))}\n    </div>,\n    document.body\n  )\n}\n\ninterface ToastItemProps extends ToastData {\n  className?: string\n  style?: CSSProperties\n}\n\nconst ToastItem: React.FC<ToastItemProps> = ({\n  id,\n  type,\n  title,\n  message,\n  duration = 5000,\n  dismissible = true,\n  action,\n  className,\n  style\n}) => {\n  const context = useContext(ToastContext)\n  const [isExiting, setIsExiting] = useState(false)\n\n  const handleDismiss = useCallback(() => {\n    setIsExiting(true)\n    setTimeout(() => {\n      context?.hideToast(id)\n    }, 300) // Match animation duration\n  }, [context, id])\n\n  useEffect(() => {\n    if (duration > 0) {\n      const timer = setTimeout(() => {\n        handleDismiss()\n      }, duration)\n\n      return () => clearTimeout(timer)\n    }\n  }, [duration, handleDismiss])\n\n  const getIcon = () => {\n    switch (type) {\n      case 'success':\n        return '✓'\n      case 'error':\n        return '✕'\n      case 'warning':\n        return '!'\n      case 'info':\n      default:\n        return 'i'\n    }\n  }\n\n  // Process utility classes\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: clsx(\n      styles.toast,\n      styles[type],\n      {\n        [styles.exiting]: isExiting\n      }\n    )\n  })\n\n  return (\n    <div\n      className={processedClassName}\n      style={processedStyle}\n      role=\"alert\"\n      aria-live=\"polite\"\n    >\n      <div className={styles.icon}>\n        <span>{getIcon()}</span>\n      </div>\n      \n      <div className={styles.content}>\n        {title && <div className={styles.title}>{title}</div>}\n        <div className={styles.message}>{message}</div>\n        {action && (\n          <button\n            className={styles.action}\n            onClick={() => {\n              action.onClick()\n              handleDismiss()\n            }}\n          >\n            {action.label}\n          </button>\n        )}\n      </div>\n\n      {dismissible && (\n        <button\n          className={styles.dismiss}\n          onClick={handleDismiss}\n          aria-label=\"Dismiss\"\n        >\n          ✕\n        </button>\n      )}\n    </div>\n  )\n}\n\n// Hook to use toast\nexport const useToast = () => {\n  const context = useContext(ToastContext)\n  if (!context) {\n    throw new Error('useToast must be used within a ToastProvider')\n  }\n  return context\n}\n\n// Store for imperative toast API\nlet toastStore: ToastContextValue | null = null\n\n// Register toast store (called by provider)\nexport const registerToastStore = (store: ToastContextValue) => {\n  toastStore = store\n}\n\n// Convenience methods\nexport const toast = {\n  info: (message: string, options?: Partial<Omit<ToastData, 'id' | 'type' | 'message'>>) => {\n    if (!toastStore) {\n      // ToastProvider not found. Make sure to wrap your app with ToastProvider.\n      return ''\n    }\n    return toastStore.showToast({ ...options, type: 'info', message })\n  },\n  success: (message: string, options?: Partial<Omit<ToastData, 'id' | 'type' | 'message'>>) => {\n    if (!toastStore) {\n      // ToastProvider not found. Make sure to wrap your app with ToastProvider.\n      return ''\n    }\n    return toastStore.showToast({ ...options, type: 'success', message })\n  },\n  warning: (message: string, options?: Partial<Omit<ToastData, 'id' | 'type' | 'message'>>) => {\n    if (!toastStore) {\n      // ToastProvider not found. Make sure to wrap your app with ToastProvider.\n      return ''\n    }\n    return toastStore.showToast({ ...options, type: 'warning', message })\n  },\n  error: (message: string, options?: Partial<Omit<ToastData, 'id' | 'type' | 'message'>>) => {\n    if (!toastStore) {\n      // ToastProvider not found. Make sure to wrap your app with ToastProvider.\n      return ''\n    }\n    return toastStore.showToast({ ...options, type: 'error', message })\n  }\n}","/**\n * @module Dialog\n * @description A modal dialog component for displaying content that requires user interaction. Supports accessibility features including focus trap and ESC key handling.\n */\n\nimport React, { forwardRef, HTMLAttributes, useEffect, useRef, useCallback, useState, createContext, useContext, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Dialog.module.css'\n\nexport interface DialogProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n  /** Whether the dialog is open */\n  open?: boolean\n  /** Callback when open state changes */\n  onOpenChange?: (open: boolean) => void\n  /** Whether to show backdrop */\n  backdrop?: boolean\n  /** Whether clicking backdrop closes dialog */\n  closeOnBackdropClick?: boolean\n  /** Whether pressing escape closes dialog */\n  closeOnEscape?: boolean\n  /** Dialog size */\n  size?: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n  /** Dialog position */\n  position?: 'center' | 'top' | 'bottom'\n  /** Whether to animate the dialog */\n  animate?: boolean\n  /** Whether to manage focus automatically */\n  autoFocus?: boolean\n  /** Initial focus element selector */\n  initialFocus?: string\n  /** Additional CSS classes */\n  className?: string\n  /** Custom styles to apply to the dialog */\n  style?: CSSProperties\n}\n\ninterface DialogContextValue {\n  close: () => void\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null)\n\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(\n  (\n    {\n      open = false,\n      onOpenChange,\n      backdrop = true,\n      closeOnBackdropClick = true,\n      closeOnEscape = true,\n      size = 'md',\n      position = 'center',\n      animate = true,\n      autoFocus = true,\n      initialFocus,\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const [isExiting, setIsExiting] = useState(false)\n    const dialogRef = useRef<HTMLDivElement | null>(null)\n    const previousActiveElementRef = useRef<HTMLElement | null>(null)\n\n    // Combine refs\n    const setRefs = useCallback(\n      (element: HTMLDivElement | null) => {\n        dialogRef.current = element\n        if (ref) {\n          if (typeof ref === 'function') {\n            ref(element)\n          } else {\n            ref.current = element\n          }\n        }\n      },\n      [ref]\n    )\n\n    // Close dialog\n    const close = useCallback(() => {\n      if (animate) {\n        setIsExiting(true)\n        setTimeout(() => {\n          onOpenChange?.(false)\n          setIsExiting(false)\n        }, 300) // Match animation duration\n      } else {\n        onOpenChange?.(false)\n      }\n    }, [animate, onOpenChange])\n\n    // Handle backdrop click\n    const handleBackdropClick = useCallback(\n      (event: React.MouseEvent) => {\n        if (closeOnBackdropClick && event.target === event.currentTarget) {\n          close()\n        }\n      },\n      [closeOnBackdropClick, close]\n    )\n\n    // Handle keyboard events\n    const handleKeyDown = useCallback(\n      (event: KeyboardEvent) => {\n        if (event.key === 'Escape' && closeOnEscape) {\n          close()\n        }\n      },\n      [closeOnEscape, close]\n    )\n\n    // Focus management\n    const handleFocusManagement = useCallback(() => {\n      if (!autoFocus || !dialogRef.current) return\n\n      const focusableElements = dialogRef.current.querySelectorAll(\n        'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n      )\n\n      if (initialFocus) {\n        const initialElement = dialogRef.current.querySelector(initialFocus) as HTMLElement\n        if (initialElement) {\n          initialElement.focus({ preventScroll: true })\n          return\n        }\n      }\n\n      if (focusableElements.length > 0) {\n        (focusableElements[0] as HTMLElement).focus({ preventScroll: true })\n      } else {\n        dialogRef.current.focus({ preventScroll: true })\n      }\n    }, [autoFocus, initialFocus])\n\n    // Focus trap\n    const handleFocusTrap = useCallback((event: KeyboardEvent) => {\n      if (!dialogRef.current || event.key !== 'Tab') return\n\n      const focusableElements = dialogRef.current.querySelectorAll(\n        'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n      )\n\n      if (focusableElements.length === 0) return\n\n      const firstElement = focusableElements[0] as HTMLElement\n      const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement\n\n      if (event.shiftKey) {\n        if (document.activeElement === firstElement) {\n          lastElement.focus({ preventScroll: true })\n          event.preventDefault()\n        }\n      } else {\n        if (document.activeElement === lastElement) {\n          firstElement.focus({ preventScroll: true })\n          event.preventDefault()\n        }\n      }\n    }, [])\n\n    // Effects\n    useEffect(() => {\n      if (open) {\n        previousActiveElementRef.current = document.activeElement as HTMLElement\n        handleFocusManagement()\n\n        document.addEventListener('keydown', handleKeyDown)\n        document.addEventListener('keydown', handleFocusTrap)\n\n        // Prevent body scroll\n        document.body.style.overflow = 'hidden'\n\n        return () => {\n          document.removeEventListener('keydown', handleKeyDown)\n          document.removeEventListener('keydown', handleFocusTrap)\n          document.body.style.overflow = ''\n\n          // Restore focus\n          if (previousActiveElementRef.current) {\n            previousActiveElementRef.current.focus({ preventScroll: true })\n          }\n        }\n      }\n    }, [open, handleKeyDown, handleFocusTrap, handleFocusManagement])\n\n    const contextValue: DialogContextValue = {\n      close,\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.dialog,\n        styles[size],\n        styles[position],\n        {\n          [styles.animate]: animate,\n          [styles.exiting]: isExiting,\n        }\n      )\n    })\n\n    if (!open && !isExiting) return null\n\n    return createPortal(\n      <DialogContext.Provider value={contextValue}>\n        <div\n          className={clsx(\n            styles.backdrop,\n            {\n              [styles.visible]: backdrop,\n              [styles.exiting]: isExiting,\n            }\n          )}\n          onClick={handleBackdropClick}\n        >\n          <div\n            ref={setRefs}\n            className={processedClassName}\n            style={processedStyle}\n            role=\"dialog\"\n            aria-modal=\"true\"\n            tabIndex={-1}\n            {...props}\n          >\n            {children}\n          </div>\n        </div>\n      </DialogContext.Provider>,\n      document.body\n    )\n  }\n)\n\n// Dialog subcomponents\nexport const DialogHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement> & { style?: CSSProperties }>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.header\n    })\n\n    return (\n      <div ref={ref} className={processedClassName} style={processedStyle} {...props}>\n        {children}\n      </div>\n    )\n  }\n)\n\nexport const DialogTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement> & { style?: CSSProperties }>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.title\n    })\n\n    return (\n      <h2 ref={ref} className={processedClassName} style={processedStyle} {...props}>\n        {children}\n      </h2>\n    )\n  }\n)\n\nexport const DialogBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement> & { style?: CSSProperties }>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.body\n    })\n\n    return (\n      <div ref={ref} className={processedClassName} style={processedStyle} {...props}>\n        {children}\n      </div>\n    )\n  }\n)\n\nexport const DialogFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement> & { style?: CSSProperties }>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.footer\n    })\n\n    return (\n      <div ref={ref} className={processedClassName} style={processedStyle} {...props}>\n        {children}\n      </div>\n    )\n  }\n)\n\ninterface DialogCloseProps extends HTMLAttributes<HTMLButtonElement> {\n  asChild?: boolean\n  style?: CSSProperties\n}\n\nexport const DialogClose = forwardRef<HTMLButtonElement, DialogCloseProps>(\n  ({ className, style, children, asChild, onClick, ...props }, ref) => {\n    const context = useContext(DialogContext)\n\n    const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n      onClick?.(e)\n      context?.close()\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.close\n    })\n\n    if (asChild && React.isValidElement(children)) {\n      return React.cloneElement(children as React.ReactElement<React.HTMLAttributes<HTMLElement>>, {\n        onClick: handleClick,\n      })\n    }\n\n    return (\n      <button\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={handleClick}\n        aria-label=\"Close dialog\"\n        {...props}\n      >\n        {children || '✕'}\n      </button>\n    )\n  }\n)\n\n// Hook to use dialog context\nexport const useDialog = () => {\n  const context = useContext(DialogContext)\n  if (!context) {\n    throw new Error('useDialog must be used within a Dialog component')\n  }\n  return context\n}\n\n// Display names\nDialog.displayName = 'Dialog'\nDialogHeader.displayName = 'DialogHeader'\nDialogTitle.displayName = 'DialogTitle'\nDialogBody.displayName = 'DialogBody'\nDialogFooter.displayName = 'DialogFooter'\nDialogClose.displayName = 'DialogClose'\n\n// Attach subcomponents\nconst DialogNamespace = Object.assign(Dialog, {\n  Header: DialogHeader,\n  Title: DialogTitle,\n  Body: DialogBody,\n  Footer: DialogFooter,\n  Close: DialogClose,\n})\n\nexport default DialogNamespace","/**\n * @module Drawer\n * @description A slide-out panel component that appears from the edge of the screen. Perfect for navigation menus, forms, and supplementary content with full accessibility support.\n */\n\nimport React, { createContext, useContext, useState, useEffect, useCallback, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Drawer.module.css'\n\n/**\n * Props for the Drawer component\n */\ninterface DrawerProps {\n  /**\n   * Controlled open state\n   */\n  open?: boolean\n  \n  /**\n   * Default open state when uncontrolled\n   * @default false\n   */\n  defaultOpen?: boolean\n  \n  /**\n   * Callback fired when the drawer opens or closes\n   */\n  onOpenChange?: (open: boolean) => void\n  \n  /**\n   * The edge of the screen from which the drawer appears\n   * @default 'right'\n   */\n  direction?: 'left' | 'right' | 'top' | 'bottom'\n  \n  /**\n   * The size of the drawer\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n  \n  /**\n   * The visual style variant of the drawer\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'outline'\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the drawer\n   */\n  style?: CSSProperties\n  \n  /**\n   * Drawer trigger and content components\n   */\n  children?: React.ReactNode\n}\n\ninterface DrawerContextValue {\n  open: boolean\n  setOpen: (open: boolean) => void\n  direction: 'left' | 'right' | 'top' | 'bottom'\n  size: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n  variant: 'default' | 'brutal' | 'outline'\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null)\n\nconst useDrawer = () => {\n  const context = useContext(DrawerContext)\n  if (!context) {\n    throw new Error('Drawer components must be used within a Drawer')\n  }\n  return context\n}\n\n/**\n * A slide-out panel that appears from the edge of the screen.\n * Manages open state and provides context for child components.\n * \n * @example\n * ```tsx\n * <Drawer>\n *   <Drawer.Trigger>Open Menu</Drawer.Trigger>\n *   <Drawer.Content>\n *     <Drawer.Header>\n *       <Drawer.Title>Navigation</Drawer.Title>\n *       <Drawer.Close />\n *     </Drawer.Header>\n *     <Drawer.Body>\n *       <nav>...</nav>\n *     </Drawer.Body>\n *   </Drawer.Content>\n * </Drawer>\n * ```\n */\nconst Drawer = React.forwardRef<HTMLDivElement, DrawerProps>(\n  ({ \n    open, \n    defaultOpen = false, \n    onOpenChange, \n    direction = 'right',\n    size = 'md',\n    variant = 'default',\n    className,\n    style, \n    children, \n    ...props \n  }, ref) => {\n    const [isOpen, setIsOpen] = useState(open ?? defaultOpen)\n\n    // Handle controlled state\n    useEffect(() => {\n      if (open !== undefined) {\n        setIsOpen(open)\n      }\n    }, [open])\n\n    const handleOpenChange = useCallback((newOpen: boolean) => {\n      setIsOpen(newOpen)\n      onOpenChange?.(newOpen)\n    }, [onOpenChange])\n\n    const contextValue: DrawerContextValue = {\n      open: isOpen,\n      setOpen: handleOpenChange,\n      direction,\n      size,\n      variant\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: ''\n    })\n\n    return (\n      <DrawerContext.Provider value={contextValue}>\n        <div ref={ref} className={processedClassName} style={processedStyle} {...props}>\n          {children}\n        </div>\n      </DrawerContext.Provider>\n    )\n  }\n)\n\n/**\n * Props for the Drawer.Trigger component\n */\ninterface DrawerTriggerProps {\n  /**\n   * The trigger element content\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the trigger\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether to render as a child element instead of a button\n   * @default false\n   */\n  asChild?: boolean\n}\n\n/**\n * Button or element that opens the drawer when clicked.\n */\nconst DrawerTrigger = React.forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n  ({ children, className, style, asChild = false, ...props }, ref) => {\n    const { setOpen } = useDrawer()\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.trigger\n    })\n\n    if (asChild) {\n      return React.cloneElement(children as React.ReactElement, {\n        onClick: () => setOpen(true),\n        ...props\n      })\n    }\n\n    return (\n      <button\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={() => setOpen(true)}\n        {...props}\n      >\n        {children}\n      </button>\n    )\n  }\n)\n\n/**\n * Props for the Drawer.Content component\n */\ninterface DrawerContentProps {\n  /**\n   * The drawer content (header, body, footer, etc.)\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the content\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether to show a backdrop overlay\n   * @default true\n   */\n  showOverlay?: boolean\n  \n  /**\n   * Whether clicking the overlay closes the drawer\n   * @default true\n   */\n  closeOnOverlayClick?: boolean\n  \n  /**\n   * Whether pressing Escape closes the drawer\n   * @default true\n   */\n  closeOnEscape?: boolean\n}\n\n/**\n * The sliding panel content of the drawer.\n * Handles animations, focus management, and accessibility.\n */\nconst DrawerContent = React.forwardRef<HTMLDivElement, DrawerContentProps>(\n  ({ \n    children, \n    className,\n    style, \n    showOverlay = true,\n    closeOnOverlayClick = true,\n    closeOnEscape = true,\n    ...props \n  }, ref) => {\n    const { open, setOpen, direction, size, variant } = useDrawer()\n\n    // Handle escape key\n    useEffect(() => {\n      if (!closeOnEscape || !open) return\n\n      const handleEscape = (e: KeyboardEvent) => {\n        if (e.key === 'Escape') {\n          setOpen(false)\n        }\n      }\n\n      document.addEventListener('keydown', handleEscape)\n      return () => document.removeEventListener('keydown', handleEscape)\n    }, [open, closeOnEscape, setOpen])\n\n    // Handle body scroll\n    useEffect(() => {\n      if (open) {\n        const originalStyle = window.getComputedStyle(document.body).overflow\n        document.body.style.overflow = 'hidden'\n        return () => {\n          document.body.style.overflow = originalStyle\n        }\n      }\n    }, [open])\n\n    // Focus management\n    useEffect(() => {\n      if (open) {\n        const activeElement = document.activeElement as HTMLElement\n        const drawerContent = document.querySelector('[data-drawer-content]') as HTMLElement\n        if (drawerContent) {\n          const focusableElement = drawerContent.querySelector(\n            'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n          ) as HTMLElement\n          if (focusableElement) {\n            focusableElement.focus()\n          }\n        }\n        return () => {\n          if (activeElement) {\n            activeElement.focus()\n          }\n        }\n      }\n    }, [open])\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.content,\n        styles[`content--${direction}`],\n        styles[`content--${size}`],\n        styles[`content--${variant}`]\n      )\n    })\n\n    if (!open) return null\n\n    const content = (\n      <>\n        {showOverlay && (\n          <div \n            className={styles.overlay}\n            onClick={() => closeOnOverlayClick && setOpen(false)}\n            aria-hidden=\"true\"\n          />\n        )}\n        <div\n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          role=\"dialog\"\n          aria-modal=\"true\"\n          data-drawer-content\n          data-state={open ? 'open' : 'closed'}\n          {...props}\n        >\n          {children}\n        </div>\n      </>\n    )\n\n    return createPortal(content, document.body)\n  }\n)\n\n/**\n * Props for the Drawer.Header component\n */\ninterface DrawerHeaderProps {\n  /**\n   * Header content (typically title and close button)\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the header\n   */\n  style?: CSSProperties\n}\n\n/**\n * Header section of the drawer.\n * Typically contains the title and close button.\n */\nconst DrawerHeader = React.forwardRef<HTMLDivElement, DrawerHeaderProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.header\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Drawer.Title component\n */\ninterface DrawerTitleProps {\n  /**\n   * The title text content\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the title\n   */\n  style?: CSSProperties\n}\n\n/**\n * Title element for the drawer header.\n * Renders as an h2 element.\n */\nconst DrawerTitle = React.forwardRef<HTMLHeadingElement, DrawerTitleProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.title\n    })\n\n    return (\n      <h2\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </h2>\n    )\n  }\n)\n\n/**\n * Props for the Drawer.Description component\n */\ninterface DrawerDescriptionProps {\n  /**\n   * The description text content\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the description\n   */\n  style?: CSSProperties\n}\n\n/**\n * Description text for the drawer.\n * Provides additional context below the title.\n */\nconst DrawerDescription = React.forwardRef<HTMLParagraphElement, DrawerDescriptionProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.description\n    })\n\n    return (\n      <p\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </p>\n    )\n  }\n)\n\n/**\n * Props for the Drawer.Body component\n */\ninterface DrawerBodyProps {\n  /**\n   * The main content of the drawer\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the body\n   */\n  style?: CSSProperties\n}\n\n/**\n * Main content area of the drawer.\n * Scrollable when content exceeds the drawer height.\n */\nconst DrawerBody = React.forwardRef<HTMLDivElement, DrawerBodyProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.body\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Drawer.Footer component\n */\ninterface DrawerFooterProps {\n  /**\n   * Footer content (typically action buttons)\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the footer\n   */\n  style?: CSSProperties\n}\n\n/**\n * Footer section of the drawer.\n * Typically contains action buttons.\n */\nconst DrawerFooter = React.forwardRef<HTMLDivElement, DrawerFooterProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.footer\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Drawer.Close component\n */\ninterface DrawerCloseProps {\n  /**\n   * Custom close button content (defaults to X icon)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the close button\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether to render as a child element instead of a button\n   * @default false\n   */\n  asChild?: boolean\n}\n\n/**\n * Close button for the drawer.\n * Typically placed in the drawer header.\n */\nconst DrawerClose = React.forwardRef<HTMLButtonElement, DrawerCloseProps>(\n  ({ children, className, style, asChild = false, ...props }, ref) => {\n    const { setOpen } = useDrawer()\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.close\n    })\n\n    if (asChild) {\n      return React.cloneElement(children as React.ReactElement, {\n        onClick: () => setOpen(false),\n        ...props\n      })\n    }\n\n    return (\n      <button\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={() => setOpen(false)}\n        aria-label=\"Close drawer\"\n        {...props}\n      >\n        {children || (\n          <svg\n            width=\"16\"\n            height=\"16\"\n            viewBox=\"0 0 16 16\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M12 4L4 12M4 4L12 12\"\n              stroke=\"currentColor\"\n              strokeWidth=\"2\"\n              strokeLinecap=\"round\"\n              strokeLinejoin=\"round\"\n            />\n          </svg>\n        )}\n      </button>\n    )\n  }\n)\n\n// Display names\nDrawer.displayName = 'Drawer'\nDrawerTrigger.displayName = 'DrawerTrigger'\nDrawerContent.displayName = 'DrawerContent'\nDrawerHeader.displayName = 'DrawerHeader'\nDrawerTitle.displayName = 'DrawerTitle'\nDrawerDescription.displayName = 'DrawerDescription'\nDrawerBody.displayName = 'DrawerBody'\nDrawerFooter.displayName = 'DrawerFooter'\nDrawerClose.displayName = 'DrawerClose'\n\n// Compound component pattern with proper typing\ninterface DrawerCompound extends React.ForwardRefExoticComponent<DrawerProps & React.RefAttributes<HTMLDivElement>> {\n  Trigger: typeof DrawerTrigger\n  Content: typeof DrawerContent\n  Header: typeof DrawerHeader\n  Title: typeof DrawerTitle\n  Description: typeof DrawerDescription\n  Body: typeof DrawerBody\n  Footer: typeof DrawerFooter\n  Close: typeof DrawerClose\n}\n\nconst DrawerWithSubComponents = Drawer as DrawerCompound\nDrawerWithSubComponents.Trigger = DrawerTrigger\nDrawerWithSubComponents.Content = DrawerContent\nDrawerWithSubComponents.Header = DrawerHeader\nDrawerWithSubComponents.Title = DrawerTitle\nDrawerWithSubComponents.Description = DrawerDescription\nDrawerWithSubComponents.Body = DrawerBody\nDrawerWithSubComponents.Footer = DrawerFooter\nDrawerWithSubComponents.Close = DrawerClose\n\nexport { DrawerWithSubComponents as Drawer }\nexport type { \n  DrawerProps, \n  DrawerTriggerProps, \n  DrawerContentProps, \n  DrawerHeaderProps,\n  DrawerTitleProps,\n  DrawerDescriptionProps,\n  DrawerBodyProps,\n  DrawerFooterProps,\n  DrawerCloseProps\n}","/**\n * @module Dropdown\n * @description A dropdown menu component triggered by user interaction. Features automatic positioning, keyboard navigation, and flexible content with support for icons and shortcuts.\n */\n\nimport React, { useState, useRef, useEffect, useCallback, createContext, useContext, forwardRef, HTMLAttributes, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Dropdown.module.css'\n\nexport type DropdownPosition = \n  | 'bottom' | 'bottom-start' | 'bottom-end'\n  | 'top' | 'top-start' | 'top-end'\n  | 'left' | 'left-start' | 'left-end'\n  | 'right' | 'right-start' | 'right-end'\n\n/**\n * Props for the Dropdown component\n */\nexport interface DropdownProps {\n  /**\n   * The trigger element and menu content\n   */\n  children: React.ReactNode\n  \n  /**\n   * Controlled open state\n   */\n  open?: boolean\n  \n  /**\n   * Callback fired when the dropdown opens or closes\n   */\n  onOpenChange?: (open: boolean) => void\n  \n  /**\n   * Position of the dropdown relative to the trigger\n   * @default 'bottom'\n   */\n  position?: DropdownPosition\n  \n  /**\n   * Distance in pixels from the trigger\n   * @default 8\n   */\n  offset?: number\n  \n  /**\n   * Whether to close the dropdown when an item is clicked\n   * @default true\n   */\n  closeOnItemClick?: boolean\n  \n  /**\n   * Whether to close when clicking outside the dropdown\n   * @default true\n   */\n  closeOnClickOutside?: boolean\n  \n  /**\n   * Whether to close when pressing the Escape key\n   * @default true\n   */\n  closeOnEscape?: boolean\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the dropdown\n   */\n  style?: CSSProperties\n}\n\ninterface DropdownContextValue {\n  close: () => void\n  closeOnItemClick: boolean\n}\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null)\n\n/**\n * A dropdown menu triggered by user interaction.\n * Provides automatic positioning and keyboard navigation.\n * \n * @example\n * ```tsx\n * <Dropdown>\n *   <button>Options</button>\n *   <Dropdown.Menu>\n *     <Dropdown.Item icon={<EditIcon />}>Edit</Dropdown.Item>\n *     <Dropdown.Item icon={<CopyIcon />}>Duplicate</Dropdown.Item>\n *     <Dropdown.Separator />\n *     <Dropdown.Item destructive>Delete</Dropdown.Item>\n *   </Dropdown.Menu>\n * </Dropdown>\n * ```\n */\nexport const Dropdown: React.FC<DropdownProps> & {\n  Menu: typeof DropdownMenu\n  Item: typeof DropdownItem\n  Separator: typeof DropdownSeparator\n  Label: typeof DropdownLabel\n} = ({\n  children,\n  open: controlledOpen,\n  onOpenChange,\n  position = 'bottom',\n  offset = 8,\n  closeOnItemClick = true,\n  closeOnClickOutside = true,\n  closeOnEscape = true,\n  className,\n  style,\n}) => {\n  const [open, setOpen] = useState(false)\n  const [actualPosition, setActualPosition] = useState<DropdownPosition>(position)\n  const [coords, setCoords] = useState({ x: 0, y: 0 })\n  const triggerRef = useRef<HTMLElement | null>(null)\n  const dropdownRef = useRef<HTMLDivElement | null>(null)\n\n  const isOpen = controlledOpen !== undefined ? controlledOpen : open\n\n  // Extract trigger and menu from children\n  let triggerElement: React.ReactElement | null = null\n  let menuContent: React.ReactNode = null\n\n  React.Children.forEach(children, (child) => {\n    if (React.isValidElement(child)) {\n      if (child.type === DropdownMenu) {\n        menuContent = child.props.children\n      } else {\n        triggerElement = child\n      }\n    }\n  })\n\n  // Calculate position\n  const calculatePosition = useCallback(() => {\n    if (!triggerRef.current || !dropdownRef.current) return\n\n    const triggerRect = triggerRef.current.getBoundingClientRect()\n    const dropdownRect = dropdownRef.current.getBoundingClientRect()\n    const viewportWidth = window.innerWidth\n    const viewportHeight = window.innerHeight\n\n    let x = 0\n    let y = 0\n\n    // Calculate base position\n    const [main, alignment] = position.split('-') as [string, string?]\n\n    switch (main) {\n      case 'bottom':\n        y = triggerRect.bottom + offset\n        break\n      case 'top':\n        y = triggerRect.top - dropdownRect.height - offset\n        break\n      case 'left':\n        x = triggerRect.left - dropdownRect.width - offset\n        break\n      case 'right':\n        x = triggerRect.right + offset\n        break\n    }\n\n    // Handle alignment\n    if (main === 'bottom' || main === 'top') {\n      switch (alignment) {\n        case 'start':\n          x = triggerRect.left\n          break\n        case 'end':\n          x = triggerRect.right - dropdownRect.width\n          break\n        default:\n          x = triggerRect.left + triggerRect.width / 2 - dropdownRect.width / 2\n      }\n    } else if (main === 'left' || main === 'right') {\n      switch (alignment) {\n        case 'start':\n          y = triggerRect.top\n          break\n        case 'end':\n          y = triggerRect.bottom - dropdownRect.height\n          break\n        default:\n          y = triggerRect.top + triggerRect.height / 2 - dropdownRect.height / 2\n      }\n    }\n\n    // Adjust for viewport boundaries\n    x = Math.max(8, Math.min(x, viewportWidth - dropdownRect.width - 8))\n    y = Math.max(8, Math.min(y, viewportHeight - dropdownRect.height - 8))\n\n    setActualPosition(position)\n    setCoords({\n      x: x,\n      y: y,\n    })\n  }, [position, offset])\n\n  // Toggle dropdown\n  const toggleDropdown = useCallback(() => {\n    if (controlledOpen === undefined) {\n      setOpen(prev => !prev)\n    }\n    onOpenChange?.(!isOpen)\n  }, [controlledOpen, isOpen, onOpenChange])\n\n  // Close dropdown\n  const closeDropdown = useCallback(() => {\n    if (controlledOpen === undefined) {\n      setOpen(false)\n    }\n    onOpenChange?.(false)\n  }, [controlledOpen, onOpenChange])\n\n  // Handle click outside\n  const handleClickOutside = useCallback((event: MouseEvent) => {\n    if (!closeOnClickOutside || !isOpen) return\n\n    const target = event.target as Node\n    if (\n      dropdownRef.current &&\n      triggerRef.current &&\n      !dropdownRef.current.contains(target) &&\n      !triggerRef.current.contains(target)\n    ) {\n      closeDropdown()\n    }\n  }, [closeOnClickOutside, isOpen, closeDropdown])\n\n  // Handle escape key\n  const handleKeyDown = useCallback((event: KeyboardEvent) => {\n    if (event.key === 'Escape' && closeOnEscape && isOpen) {\n      closeDropdown()\n    }\n  }, [closeOnEscape, isOpen, closeDropdown])\n\n  // Effects\n  useEffect(() => {\n    if (isOpen) {\n      calculatePosition()\n\n      const handleResize = () => calculatePosition()\n      const handleScroll = () => {\n        calculatePosition()\n        // Optional: Close dropdown if trigger is scrolled out of view\n        if (triggerRef.current) {\n          const rect = triggerRef.current.getBoundingClientRect()\n          if (rect.bottom < 0 || rect.top > window.innerHeight) {\n            closeDropdown()\n          }\n        }\n      }\n\n      window.addEventListener('resize', handleResize)\n      window.addEventListener('scroll', handleScroll, true) // Use capture to catch all scroll events\n      document.addEventListener('mousedown', handleClickOutside)\n      document.addEventListener('keydown', handleKeyDown)\n\n      return () => {\n        window.removeEventListener('resize', handleResize)\n        window.removeEventListener('scroll', handleScroll, true)\n        document.removeEventListener('mousedown', handleClickOutside)\n        document.removeEventListener('keydown', handleKeyDown)\n      }\n    }\n  }, [isOpen, calculatePosition, handleClickOutside, handleKeyDown, closeDropdown])\n\n  // Clone trigger with ref and click handler\n  const trigger = triggerElement && React.isValidElement(triggerElement) ? React.cloneElement(triggerElement, {\n    ref: (el: HTMLElement | null) => {\n      triggerRef.current = el\n    },\n    onClick: (e: React.MouseEvent) => {\n      triggerElement?.props.onClick?.(e)\n      toggleDropdown()\n    },\n    'aria-expanded': isOpen,\n    'aria-haspopup': 'menu',\n  }) : null\n\n  const contextValue: DropdownContextValue = {\n    close: closeDropdown,\n    closeOnItemClick,\n  }\n\n  // Process utility classes for the dropdown\n  const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n    className,\n    style,\n    componentClasses: clsx(\n      styles.dropdown,\n      styles[actualPosition.split('-')[0]]\n    )\n  })\n\n  return (\n    <>\n      {trigger}\n      {isOpen && createPortal(\n        <DropdownContext.Provider value={contextValue}>\n          <div\n            ref={dropdownRef}\n            className={processedClassName}\n            style={{\n              position: 'fixed',\n              left: coords.x,\n              top: coords.y,\n              zIndex: 'var(--brutal-z-dropdown)',\n              ...processedStyle\n            }}\n            role=\"menu\"\n            aria-orientation=\"vertical\"\n          >\n            {menuContent}\n          </div>\n        </DropdownContext.Provider>,\n        document.body\n      )}\n    </>\n  )\n}\n\n/**\n * Container for dropdown menu items.\n * Must be a direct child of the Dropdown component.\n */\nexport const DropdownMenu = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement> & { style?: CSSProperties }>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.menu\n    })\n\n    return (\n      <div ref={ref} className={processedClassName} style={processedStyle} {...props}>\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Dropdown.Item component\n */\ninterface DropdownItemProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Whether the item is disabled and cannot be selected\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Whether the item represents a destructive action (shown in red)\n   * @default false\n   */\n  destructive?: boolean\n  \n  /**\n   * Icon to display before the item text\n   */\n  icon?: React.ReactNode\n  \n  /**\n   * Keyboard shortcut to display on the right\n   */\n  shortcut?: string\n  \n  /**\n   * Custom styles to apply to the item\n   */\n  style?: CSSProperties\n}\n\n/**\n * Individual item within the dropdown menu.\n * Supports icons, shortcuts, and various states.\n */\nexport const DropdownItem = forwardRef<HTMLDivElement, DropdownItemProps>(\n  ({ className, style, disabled, destructive, icon, shortcut, children, onClick, ...props }, ref) => {\n    const context = useContext(DropdownContext)\n\n    const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n      if (disabled) return\n      \n      onClick?.(e)\n      if (context?.closeOnItemClick) {\n        context.close()\n      }\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.item,\n        {\n          [styles.disabled]: disabled,\n          [styles.destructive]: destructive,\n        }\n      )\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"menuitem\"\n        tabIndex={disabled ? -1 : 0}\n        onClick={handleClick}\n        {...props}\n      >\n        {icon && <span className={styles.icon}>{icon}</span>}\n        <span className={styles.text}>{children}</span>\n        {shortcut && <span className={styles.shortcut}>{shortcut}</span>}\n      </div>\n    )\n  }\n)\n\n/**\n * Visual separator between dropdown items or groups.\n */\nexport const DropdownSeparator = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement> & { style?: CSSProperties }>(\n  ({ className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.separator\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"separator\"\n        {...props}\n      />\n    )\n  }\n)\n\n/**\n * Label for grouping dropdown items.\n * Non-interactive and used for organizational purposes.\n */\nexport const DropdownLabel = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement> & { style?: CSSProperties }>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.label\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n// Hook to use dropdown context\nexport const useDropdown = () => {\n  const context = useContext(DropdownContext)\n  if (!context) {\n    throw new Error('useDropdown must be used within a Dropdown component')\n  }\n  return context\n}\n\n// Display names\nDropdownMenu.displayName = 'DropdownMenu'\nDropdownItem.displayName = 'DropdownItem'\nDropdownSeparator.displayName = 'DropdownSeparator'\nDropdownLabel.displayName = 'DropdownLabel'\n\n// Attach subcomponents\nDropdown.Menu = DropdownMenu\nDropdown.Item = DropdownItem\nDropdown.Separator = DropdownSeparator\nDropdown.Label = DropdownLabel","/**\n * @module Tabs\n * @description A tab navigation component for organizing content into separate views. Supports keyboard navigation and ARIA attributes.\n */\n\nimport React, { forwardRef, HTMLAttributes, useState, useCallback, createContext, useContext, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Tabs.module.css'\n\nexport interface TabsProps extends HTMLAttributes<HTMLDivElement> {\n  /** The default active tab */\n  defaultValue?: string\n  /** The controlled active tab */\n  value?: string\n  /** Callback when active tab changes */\n  onValueChange?: (value: string) => void\n  /** Orientation of the tabs */\n  orientation?: 'horizontal' | 'vertical'\n  /** Size variant */\n  size?: 'sm' | 'md' | 'lg'\n  /** Whether tabs should be full width */\n  fullWidth?: boolean\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\ninterface TabsContextValue {\n  activeTab: string\n  setActiveTab: (value: string) => void\n  orientation: 'horizontal' | 'vertical'\n  size: 'sm' | 'md' | 'lg'\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null)\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(\n  (\n    {\n      defaultValue = '',\n      value: controlledValue,\n      onValueChange,\n      orientation = 'horizontal',\n      size = 'md',\n      fullWidth = false,\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const [internalValue, setInternalValue] = useState(defaultValue)\n    const activeTab = controlledValue !== undefined ? controlledValue : internalValue\n\n    const setActiveTab = useCallback((newValue: string) => {\n      if (controlledValue === undefined) {\n        setInternalValue(newValue)\n      }\n      onValueChange?.(newValue)\n    }, [controlledValue, onValueChange])\n\n    const contextValue: TabsContextValue = {\n      activeTab,\n      setActiveTab,\n      orientation,\n      size,\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.tabs,\n        styles[orientation],\n        styles[size],\n        {\n          [styles.fullWidth]: fullWidth,\n        }\n      )\n    })\n\n    return (\n      <TabsContext.Provider value={contextValue}>\n        <div\n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          {...props}\n        >\n          {children}\n        </div>\n      </TabsContext.Provider>\n    )\n  }\n)\n\n// Tabs List container\ninterface TabsListProps extends HTMLAttributes<HTMLDivElement> {\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nexport const TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n  ({ className, style, children, ...props }, ref) => {\n    const context = useContext(TabsContext)\n    if (!context) {\n      throw new Error('TabsList must be used within Tabs')\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.list,\n        styles[context.orientation]\n      )\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"tablist\"\n        aria-orientation={context.orientation}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n// Tab Trigger\ninterface TabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {\n  /** The value of the tab */\n  value: string\n  /** Whether the tab is disabled */\n  disabled?: boolean\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nexport const TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\n  ({ value, disabled, className, style, children, onClick, ...props }, ref) => {\n    const context = useContext(TabsContext)\n    if (!context) {\n      throw new Error('TabsTrigger must be used within Tabs')\n    }\n\n    const isActive = context.activeTab === value\n\n    const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n      if (!disabled) {\n        context.setActiveTab(value)\n        onClick?.(e)\n      }\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.trigger,\n        styles[context.size],\n        {\n          [styles.active]: isActive,\n          [styles.disabled]: disabled,\n        }\n      )\n    })\n\n    return (\n      <button\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"tab\"\n        aria-selected={isActive}\n        aria-controls={`tabpanel-${value}`}\n        id={`tab-${value}`}\n        tabIndex={isActive ? 0 : -1}\n        disabled={disabled}\n        onClick={handleClick}\n        {...props}\n      >\n        {children}\n      </button>\n    )\n  }\n)\n\n// Tab Content\ninterface TabsContentProps extends HTMLAttributes<HTMLDivElement> {\n  /** The value of the tab */\n  value: string\n  /** Whether to force mount the content */\n  forceMount?: boolean\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nexport const TabsContent = forwardRef<HTMLDivElement, TabsContentProps>(\n  ({ value, forceMount = false, className, style, children, ...props }, ref) => {\n    const context = useContext(TabsContext)\n    if (!context) {\n      throw new Error('TabsContent must be used within Tabs')\n    }\n\n    const isActive = context.activeTab === value\n\n    // Process utility classes (must be called before any conditional returns)\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.content,\n        {\n          [styles.active]: isActive,\n          [styles.inactive]: !isActive,\n        }\n      )\n    })\n\n    if (!isActive && !forceMount) {\n      return null\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"tabpanel\"\n        aria-labelledby={`tab-${value}`}\n        id={`tabpanel-${value}`}\n        tabIndex={0}\n        hidden={!isActive}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n// Hook to use tabs context\nexport const useTabs = () => {\n  const context = useContext(TabsContext)\n  if (!context) {\n    throw new Error('useTabs must be used within Tabs')\n  }\n  return context\n}\n\n// Display names\nTabs.displayName = 'Tabs'\nTabsList.displayName = 'TabsList'\nTabsTrigger.displayName = 'TabsTrigger'\nTabsContent.displayName = 'TabsContent'\n\n// Attach subcomponents\nconst TabsNamespace = Object.assign(Tabs, {\n  List: TabsList,\n  Trigger: TabsTrigger,\n  Content: TabsContent,\n})\n\nexport default TabsNamespace","/**\n * @module Container\n * @description A responsive container component that provides consistent max-width constraints and padding. Essential for creating well-structured page layouts with proper content alignment.\n */\n\nimport { forwardRef, HTMLAttributes, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Container.module.css'\n\n/**\n * Props for the Container component\n */\nexport interface ContainerProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * The maximum width size of the container\n   * @default 'lg'\n   */\n  size?: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n  \n  /**\n   * Whether the container should be horizontally centered\n   * @default true\n   */\n  centered?: boolean\n  \n  /**\n   * The amount of padding inside the container\n   * @default 'md'\n   */\n  padding?: 'none' | 'sm' | 'md' | 'lg'\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom CSS styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * A responsive container that constrains content width and provides consistent padding.\n * Commonly used as a top-level wrapper for page content to ensure proper layout on different screen sizes.\n * \n * @example\n * ```tsx\n * <Container size=\"lg\" padding=\"lg\">\n *   <h1>Page Title</h1>\n *   <p>Your content goes here...</p>\n * </Container>\n * ```\n */\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n  (\n    {\n      size = 'lg',\n      centered = true,\n      padding = 'md',\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.container,\n        styles[size],\n        styles[`padding-${padding}`],\n        {\n          [styles.centered]: centered,\n        }\n      )\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nContainer.displayName = 'Container'","/**\n * @module Stack\n * @description A layout component for arranging child elements in horizontal or vertical stacks with customizable spacing, alignment, and semantic HTML elements. Provides flexible layout options with CSS flexbox.\n */\n\nimport { forwardRef, HTMLAttributes, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Stack.module.css'\n\n/**\n * Props for the Stack component\n */\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Direction in which to arrange the child elements\n   * @default 'vertical'\n   */\n  direction?: 'horizontal' | 'vertical'\n  \n  /**\n   * Amount of space between child elements\n   * @default 'md'\n   */\n  gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n  \n  /**\n   * Cross-axis alignment of child elements\n   * @default 'stretch'\n   */\n  align?: 'start' | 'center' | 'end' | 'stretch'\n  \n  /**\n   * Main-axis justification of child elements\n   * @default 'start'\n   */\n  justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'\n  \n  /**\n   * Whether child elements should wrap to new lines when space is limited\n   * @default false\n   */\n  wrap?: boolean\n  \n  /**\n   * The HTML element type to render as the stack container\n   * @default 'div'\n   */\n  as?: 'div' | 'section' | 'article' | 'aside' | 'header' | 'footer' | 'main' | 'nav'\n  \n  /**\n   * Additional CSS classes to apply to the stack container\n   */\n  className?: string\n\n  /**\n   * Custom styles to apply to the stack\n   */\n  style?: CSSProperties\n}\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n  (\n    {\n      direction = 'vertical',\n      gap = 'md',\n      align = 'stretch',\n      justify = 'start',\n      wrap = false,\n      as: Component = 'div',\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.stack,\n        styles[direction],\n        styles[`gap-${gap}`],\n        styles[`align-${align}`],\n        styles[`justify-${justify}`],\n        {\n          [styles.wrap]: wrap,\n        }\n      )\n    })\n\n    return (\n      <Component\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </Component>\n    )\n  }\n)\n\nStack.displayName = 'Stack'","/**\n * @module Breadcrumb\n * @description A navigation component that shows the current page location within a hierarchical structure. Helps users understand their location and navigate back.\n */\n\nimport React, { forwardRef, HTMLAttributes, AnchorHTMLAttributes, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Breadcrumb.module.css'\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\n  /** Separator between breadcrumb items */\n  separator?: React.ReactNode\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nexport interface BreadcrumbItemProps extends HTMLAttributes<HTMLLIElement> {\n  /** Whether this item is the current page */\n  isCurrentPage?: boolean\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nexport interface BreadcrumbLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n  ({ separator = '/', className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.breadcrumb\n    })\n\n    return (\n      <nav\n        ref={ref}\n        aria-label=\"Breadcrumb\"\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        <ol className={styles.list}>\n          {React.Children.map(children, (child, index) => {\n            if (!React.isValidElement(child)) return null\n            \n            const isLast = index === React.Children.count(children) - 1\n            \n            return (\n              <>\n                {child}\n                {!isLast && (\n                  <li className={styles.separator} aria-hidden=\"true\">\n                    {separator}\n                  </li>\n                )}\n              </>\n            )\n          })}\n        </ol>\n      </nav>\n    )\n  }\n)\n\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n  ({ isCurrentPage = false, className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.item,\n        {\n          [styles.current]: isCurrentPage,\n        }\n      )\n    })\n\n    return (\n      <li\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        aria-current={isCurrentPage ? 'page' : undefined}\n        {...props}\n      >\n        {children}\n      </li>\n    )\n  }\n)\n\nexport const BreadcrumbLink = forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.link\n    })\n\n    return (\n      <a\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </a>\n    )\n  }\n)\n\nexport interface BreadcrumbPageProps extends HTMLAttributes<HTMLSpanElement> {\n  /** Additional CSS classes */\n  className?: string\n  /** Custom CSS styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nexport const BreadcrumbPage = forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.page\n    })\n\n    return (\n      <span\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </span>\n    )\n  }\n)\n\n// Display names\nBreadcrumb.displayName = 'Breadcrumb'\nBreadcrumbItem.displayName = 'BreadcrumbItem'\nBreadcrumbLink.displayName = 'BreadcrumbLink'\nBreadcrumbPage.displayName = 'BreadcrumbPage'\n\n// Attach subcomponents\nconst BreadcrumbNamespace = Object.assign(Breadcrumb, {\n  Item: BreadcrumbItem,\n  Link: BreadcrumbLink,\n  Page: BreadcrumbPage,\n})\n\nexport default BreadcrumbNamespace","/**\n * @module Sidebar\n * @description A comprehensive sidebar navigation component with collapsible functionality, hierarchical menu structure, and multiple layout variants. Features responsive design and accessibility support.\n */\n\nimport React, { forwardRef, HTMLAttributes, createContext, useContext, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Sidebar.module.css'\n\n/**\n * Props for the Sidebar component\n */\nexport interface SidebarProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Whether the sidebar can be collapsed and expanded\n   * @default false\n   */\n  collapsible?: boolean\n  \n  /**\n   * Whether the sidebar is currently in collapsed state\n   * @default false\n   */\n  collapsed?: boolean\n  \n  /**\n   * Callback function called when the collapsed state changes\n   */\n  onCollapsedChange?: (collapsed: boolean) => void\n  \n  /**\n   * Which side of the screen the sidebar should appear on\n   * @default 'left'\n   */\n  side?: 'left' | 'right'\n  \n  /**\n   * Visual style variant for the sidebar\n   * @default 'default'\n   */\n  variant?: 'default' | 'floating' | 'inset'\n  \n  /**\n   * Additional CSS classes to apply to the sidebar\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the SidebarHeader component\n */\nexport interface SidebarHeaderProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the sidebar header\n   */\n  className?: string\n}\n\n/**\n * Props for the SidebarContent component\n */\nexport interface SidebarContentProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the sidebar content\n   */\n  className?: string\n}\n\n/**\n * Props for the SidebarFooter component\n */\nexport interface SidebarFooterProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the sidebar footer\n   */\n  className?: string\n}\n\n/**\n * Props for the SidebarGroup component\n */\nexport interface SidebarGroupProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the sidebar group\n   */\n  className?: string\n}\n\n/**\n * Props for the SidebarGroupLabel component\n */\nexport interface SidebarGroupLabelProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the group label\n   */\n  className?: string\n}\n\n/**\n * Props for the SidebarGroupContent component\n */\nexport interface SidebarGroupContentProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Additional CSS classes to apply to the group content\n   */\n  className?: string\n}\n\n/**\n * Props for the SidebarMenu component\n */\nexport interface SidebarMenuProps extends HTMLAttributes<HTMLUListElement> {\n  /**\n   * Additional CSS classes to apply to the sidebar menu\n   */\n  className?: string\n}\n\n/**\n * Props for the SidebarMenuItem component\n */\nexport interface SidebarMenuItemProps extends HTMLAttributes<HTMLLIElement> {\n  /**\n   * Additional CSS classes to apply to the menu item\n   */\n  className?: string\n}\n\n/**\n * Props for the SidebarMenuButton component\n */\nexport interface SidebarMenuButtonProps extends HTMLAttributes<HTMLButtonElement> {\n  /**\n   * Whether this menu item is currently active/selected\n   * @default false\n   */\n  isActive?: boolean\n  \n  /**\n   * Icon element to display alongside the menu button text\n   */\n  icon?: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the menu button\n   */\n  className?: string\n}\n\ninterface SidebarContextValue {\n  collapsed: boolean\n  collapsible: boolean\n}\n\nconst SidebarContext = createContext<SidebarContextValue | null>(null)\n\nexport const Sidebar = forwardRef<HTMLDivElement, SidebarProps>(\n  (\n    {\n      collapsible = false,\n      collapsed = false,\n      onCollapsedChange: _onCollapsedChange,\n      side = 'left',\n      variant = 'default',\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const contextValue: SidebarContextValue = {\n      collapsed,\n      collapsible,\n    }\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.sidebar,\n        styles[side],\n        styles[variant],\n        {\n          [styles.collapsed]: collapsed,\n          [styles.collapsible]: collapsible,\n        }\n      )\n    })\n\n    return (\n      <SidebarContext.Provider value={contextValue}>\n        <div\n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          data-sidebar=\"sidebar\"\n          data-collapsed={collapsed}\n          {...props}\n        >\n          {children}\n        </div>\n      </SidebarContext.Provider>\n    )\n  }\n)\n\nexport const SidebarHeader = forwardRef<HTMLDivElement, SidebarHeaderProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.header\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"header\"\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nexport const SidebarContent = forwardRef<HTMLDivElement, SidebarContentProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.content\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"content\"\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nexport const SidebarFooter = forwardRef<HTMLDivElement, SidebarFooterProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.footer\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"footer\"\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nexport const SidebarGroup = forwardRef<HTMLDivElement, SidebarGroupProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.group\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"group\"\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nexport const SidebarGroupLabel = forwardRef<HTMLDivElement, SidebarGroupLabelProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.groupLabel\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"group-label\"\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nexport const SidebarGroupContent = forwardRef<HTMLDivElement, SidebarGroupContentProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.groupContent\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"group-content\"\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nexport const SidebarMenu = forwardRef<HTMLUListElement, SidebarMenuProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.menu\n    })\n    \n    return (\n      <ul\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"menu\"\n        {...props}\n      >\n        {children}\n      </ul>\n    )\n  }\n)\n\nexport const SidebarMenuItem = forwardRef<HTMLLIElement, SidebarMenuItemProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.menuItem\n    })\n    \n    return (\n      <li\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"menu-item\"\n        {...props}\n      >\n        {children}\n      </li>\n    )\n  }\n)\n\nexport const SidebarMenuButton = forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n  ({ isActive = false, icon, className, style, children, ...props }, ref) => {\n    const context = useContext(SidebarContext)\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.menuButton,\n        {\n          [styles.active]: isActive,\n          [styles.withIcon]: !!icon,\n        }\n      )\n    })\n\n    return (\n      <button\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        data-sidebar=\"menu-button\"\n        data-active={isActive}\n        {...props}\n      >\n        {icon && (\n          <span className={styles.icon} data-sidebar=\"icon\">\n            {icon}\n          </span>\n        )}\n        {(!context?.collapsed || !context?.collapsible) && (\n          <span className={styles.text} data-sidebar=\"text\">\n            {children}\n          </span>\n        )}\n      </button>\n    )\n  }\n)\n\n// Hook to use sidebar context\nexport const useSidebar = () => {\n  const context = useContext(SidebarContext)\n  if (!context) {\n    throw new Error('useSidebar must be used within a Sidebar component')\n  }\n  return context\n}\n\n// Display names\nSidebar.displayName = 'Sidebar'\nSidebarHeader.displayName = 'SidebarHeader'\nSidebarContent.displayName = 'SidebarContent'\nSidebarFooter.displayName = 'SidebarFooter'\nSidebarGroup.displayName = 'SidebarGroup'\nSidebarGroupLabel.displayName = 'SidebarGroupLabel'\nSidebarGroupContent.displayName = 'SidebarGroupContent'\nSidebarMenu.displayName = 'SidebarMenu'\nSidebarMenuItem.displayName = 'SidebarMenuItem'\nSidebarMenuButton.displayName = 'SidebarMenuButton'\n\n// Attach subcomponents\nconst SidebarNamespace = Object.assign(Sidebar, {\n  Header: SidebarHeader,\n  Content: SidebarContent,\n  Footer: SidebarFooter,\n  Group: SidebarGroup,\n  GroupLabel: SidebarGroupLabel,\n  GroupContent: SidebarGroupContent,\n  Menu: SidebarMenu,\n  MenuItem: SidebarMenuItem,\n  MenuButton: SidebarMenuButton,\n})\n\nexport default SidebarNamespace","/**\n * @module Navigation\n * @description A flexible navigation component system that supports vertical and horizontal layouts with keyboard navigation and accessibility features. Includes list, item, link, and separator sub-components.\n */\n\nimport React, { forwardRef, HTMLAttributes, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Navigation.module.css'\n\n/**\n * Props for the Navigation component\n */\nexport interface NavigationProps extends HTMLAttributes<HTMLElement> {\n  /**\n   * Whether the navigation should be laid out vertically\n   * @default false\n   */\n  vertical?: boolean\n  \n  /**\n   * Size variant for the navigation\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Additional CSS classes to apply to the navigation\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the navigation\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the NavigationList component\n */\nexport interface NavigationListProps extends HTMLAttributes<HTMLUListElement> {\n  /**\n   * Additional CSS classes to apply to the navigation list\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the navigation list\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the NavigationItem component\n */\nexport interface NavigationItemProps extends HTMLAttributes<HTMLLIElement> {\n  /**\n   * Whether this navigation item is currently active\n   * @default false\n   */\n  isActive?: boolean\n  \n  /**\n   * Whether this navigation item is disabled\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Additional CSS classes to apply to the navigation item\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the navigation item\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the NavigationLink component\n */\nexport interface NavigationLinkProps extends HTMLAttributes<HTMLAnchorElement> {\n  /**\n   * The URL that the link points to\n   */\n  href?: string\n  \n  /**\n   * Whether this navigation link is currently active\n   * @default false\n   */\n  isActive?: boolean\n  \n  /**\n   * Whether this navigation link is disabled\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Icon element to display alongside the link text\n   */\n  icon?: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the navigation link\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the navigation link\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the NavigationSeparator component\n */\nexport interface NavigationSeparatorProps extends HTMLAttributes<HTMLHRElement> {\n  /**\n   * Additional CSS classes to apply to the navigation separator\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the navigation separator\n   */\n  style?: CSSProperties\n}\n\n// Create compound component interface\ninterface NavigationComponent extends React.ForwardRefExoticComponent<NavigationProps & React.RefAttributes<HTMLElement>> {\n  List: typeof NavigationList;\n  Item: typeof NavigationItem;\n  Link: typeof NavigationLink;\n  Separator: typeof NavigationSeparator;\n}\n\nexport const Navigation = forwardRef<HTMLElement, NavigationProps>(\n  ({ vertical = false, size = 'md', className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.navigation,\n        {\n          [styles.vertical]: vertical,\n          [styles[size]]: size,\n        }\n      )\n    })\n\n    return (\n      <nav\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </nav>\n    )\n  }\n) as NavigationComponent\n\nexport const NavigationList = forwardRef<HTMLUListElement, NavigationListProps>(\n  ({ className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.list\n    })\n\n    return (\n      <ul\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </ul>\n    )\n  }\n)\n\nexport const NavigationItem = forwardRef<HTMLLIElement, NavigationItemProps>(\n  ({ isActive, disabled, className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.item,\n        {\n          [styles.active]: isActive,\n          [styles.disabled]: disabled,\n        }\n      )\n    })\n\n    return (\n      <li\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </li>\n    )\n  }\n)\n\nexport const NavigationLink = forwardRef<HTMLAnchorElement, NavigationLinkProps>(\n  ({ href, isActive, disabled, icon, className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.link,\n        {\n          [styles.active]: isActive,\n          [styles.disabled]: disabled,\n        }\n      )\n    })\n\n    return (\n      <a\n        ref={ref}\n        href={disabled ? undefined : href}\n        className={processedClassName}\n        style={processedStyle}\n        aria-current={isActive ? 'page' : undefined}\n        tabIndex={disabled ? -1 : undefined}\n        {...props}\n      >\n        {icon && <span className={styles.icon}>{icon}</span>}\n        <span className={styles.text}>{children}</span>\n      </a>\n    )\n  }\n)\n\nexport const NavigationSeparator = forwardRef<HTMLHRElement, NavigationSeparatorProps>(\n  ({ className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.separator\n    })\n\n    return (\n      <hr\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      />\n    )\n  }\n)\n\n// Display names\nNavigation.displayName = 'Navigation'\nNavigationList.displayName = 'NavigationList'\nNavigationItem.displayName = 'NavigationItem'\nNavigationLink.displayName = 'NavigationLink'\nNavigationSeparator.displayName = 'NavigationSeparator'\n\n// Attach subcomponents\nNavigation.List = NavigationList\nNavigation.Item = NavigationItem\nNavigation.Link = NavigationLink\nNavigation.Separator = NavigationSeparator","/**\n * @module TableOfContents\n * @description A navigational component that displays a hierarchical list of page sections with support for active states and multiple positioning options. Perfect for documentation and long-form content.\n */\n\nimport React, { forwardRef, HTMLAttributes, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './TableOfContents.module.css'\n\n/**\n * Props for the main TableOfContents component\n */\nexport interface TableOfContentsProps extends HTMLAttributes<HTMLElement> {\n  /**\n   * Title text displayed at the top of the table of contents\n   * @default 'Table of Contents'\n   */\n  title?: string\n  \n  /**\n   * Whether to display the title header\n   * @default true\n   */\n  showTitle?: boolean\n  \n  /**\n   * Size variant affecting spacing and typography\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Positioning behavior of the table of contents\n   * @default 'default'\n   */\n  position?: 'default' | 'sticky' | 'floating'\n  \n  /**\n   * Additional CSS classes to apply to the component\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the TableOfContentsList component\n */\nexport interface TableOfContentsListProps extends HTMLAttributes<HTMLOListElement> {\n  /**\n   * Additional CSS classes to apply to the ordered list\n   */\n  className?: string\n}\n\n/**\n * Props for the TableOfContentsItem component\n */\nexport interface TableOfContentsItemProps extends HTMLAttributes<HTMLLIElement> {\n  /**\n   * Heading level for proper indentation and styling\n   * @default 1\n   */\n  level?: 1 | 2 | 3 | 4 | 5 | 6\n  \n  /**\n   * Whether this item represents the currently active section\n   * @default false\n   */\n  isActive?: boolean\n  \n  /**\n   * Additional CSS classes to apply to the list item\n   */\n  className?: string\n}\n\n/**\n * Props for the TableOfContentsLink component\n */\nexport interface TableOfContentsLinkProps extends HTMLAttributes<HTMLAnchorElement> {\n  /**\n   * URL or anchor link that the item should navigate to\n   */\n  href: string\n  \n  /**\n   * Whether this link represents the currently active section\n   * @default false\n   */\n  isActive?: boolean\n  \n  /**\n   * Heading level for appropriate styling and indentation\n   * @default 1\n   */\n  level?: 1 | 2 | 3 | 4 | 5 | 6\n  \n  /**\n   * Additional CSS classes to apply to the link element\n   */\n  className?: string\n}\n\n// Create compound component type interface\nexport interface TableOfContentsComponent extends React.ForwardRefExoticComponent<TableOfContentsProps & React.RefAttributes<HTMLElement>> {\n  List: typeof TableOfContentsList;\n  Item: typeof TableOfContentsItem;\n  Link: typeof TableOfContentsLink;\n}\n\nexport const TableOfContents = forwardRef<HTMLElement, TableOfContentsProps>(\n  ({ \n    title = 'Table of Contents', \n    showTitle = true, \n    size = 'md', \n    position = 'default',\n    className,\n    style,\n    children, \n    ...props \n  }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.tableOfContents,\n        styles[size],\n        styles[position]\n      )\n    })\n    \n    return (\n      <nav\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        aria-label=\"Table of contents\"\n        {...props}\n      >\n        {showTitle && (\n          <h2 className={styles.title}>\n            {title}\n          </h2>\n        )}\n        {children}\n      </nav>\n    )\n  }\n) as TableOfContentsComponent\n\nexport const TableOfContentsList = forwardRef<HTMLOListElement, TableOfContentsListProps>(\n  ({ className, children, ...props }, ref) => {\n    return (\n      <ol\n        ref={ref}\n        className={clsx(styles.list, className)}\n        {...props}\n      >\n        {children}\n      </ol>\n    )\n  }\n)\n\nexport const TableOfContentsItem = forwardRef<HTMLLIElement, TableOfContentsItemProps>(\n  ({ level = 1, isActive, className, children, ...props }, ref) => {\n    return (\n      <li\n        ref={ref}\n        className={clsx(\n          styles.item,\n          styles[`level${level}`],\n          {\n            [styles.active]: isActive,\n          },\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </li>\n    )\n  }\n)\n\nexport const TableOfContentsLink = forwardRef<HTMLAnchorElement, TableOfContentsLinkProps>(\n  ({ href, isActive, level = 1, className, style, children, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.link,\n        styles[`linkLevel${level}`],\n        {\n          [styles.activeLink]: isActive,\n        }\n      )\n    })\n    \n    return (\n      <a\n        ref={ref}\n        href={href}\n        className={processedClassName}\n        style={processedStyle}\n        aria-current={isActive ? 'location' : undefined}\n        {...props}\n      >\n        <span className={styles.linkText}>{children}</span>\n      </a>\n    )\n  }\n)\n\n// Display names\nTableOfContents.displayName = 'TableOfContents'\nTableOfContentsList.displayName = 'TableOfContentsList'\nTableOfContentsItem.displayName = 'TableOfContentsItem'\nTableOfContentsLink.displayName = 'TableOfContentsLink'\n\n// Attach subcomponents\nTableOfContents.List = TableOfContentsList\nTableOfContents.Item = TableOfContentsItem\nTableOfContents.Link = TableOfContentsLink","/**\n * @module Accordion\n * @description A collapsible content component that allows users to toggle the visibility of sections. Supports single and multiple selection modes with smooth animations and full keyboard navigation.\n */\n\nimport { createContext, forwardRef, HTMLAttributes, useContext, useState, useId, ReactNode, CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Accordion.module.css'\n\n/**\n * Props for the Accordion component\n */\nexport interface AccordionProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Determines whether only one item can be open at a time ('single') or multiple items can be open ('multiple')\n   * @default 'single'\n   */\n  type?: 'single' | 'multiple'\n  \n  /**\n   * For single type: whether the currently open item can be collapsed by clicking it again\n   * @default false\n   */\n  collapsible?: boolean\n  \n  /**\n   * Default open items (for uncontrolled usage). String for single type, array for multiple type\n   */\n  defaultValue?: string | string[]\n  \n  /**\n   * Controlled value. String for single type, array for multiple type\n   */\n  value?: string | string[]\n  \n  /**\n   * Callback function called when the open state changes\n   */\n  onValueChange?: (value: string | string[]) => void\n  \n  /**\n   * Size variant for the accordion\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Visual style variant for the accordion\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'outline'\n  \n  /**\n   * Whether the entire accordion is disabled\n   * @default false\n   */\n  disabled?: boolean\n\n  /**\n   * Custom CSS styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the AccordionItem component\n */\nexport interface AccordionItemProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Unique identifier for this accordion item\n   */\n  value: string\n  \n  /**\n   * Whether this specific item is disabled\n   * @default false\n   */\n  disabled?: boolean\n\n  /**\n   * Custom CSS styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the AccordionTrigger component\n */\nexport interface AccordionTriggerProps extends HTMLAttributes<HTMLButtonElement> {\n  /**\n   * Custom icon element to display instead of the default chevron\n   */\n  icon?: ReactNode\n  \n  /**\n   * Whether to hide the default chevron icon completely\n   * @default false\n   */\n  hideIcon?: boolean\n\n  /**\n   * Custom CSS styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Props for the AccordionContent component\n */\nexport interface AccordionContentProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * The content to display when the accordion item is expanded\n   */\n  children: ReactNode\n\n  /**\n   * Custom CSS styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n// Context for accordion state\ninterface AccordionContextValue {\n  type: 'single' | 'multiple'\n  value: string | string[]\n  onValueChange: (value: string | string[]) => void\n  size: 'sm' | 'md' | 'lg'\n  variant: 'default' | 'brutal' | 'outline'\n  disabled: boolean\n  collapsible: boolean\n}\n\nconst AccordionContext = createContext<AccordionContextValue | null>(null)\n\n// Context for accordion item\ninterface AccordionItemContextValue {\n  value: string\n  isOpen: boolean\n  disabled: boolean\n  toggle: () => void\n  triggerId: string\n  contentId: string\n}\n\nconst AccordionItemContext = createContext<AccordionItemContextValue | null>(null)\n\nconst Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n  (\n    {\n      children,\n      className,\n      style,\n      type = 'single',\n      collapsible = false,\n      defaultValue,\n      value: controlledValue,\n      onValueChange,\n      size = 'md',\n      variant = 'default',\n      disabled = false,\n      ...props\n    },\n    ref\n  ) => {\n    // Initialize internal state\n    const [internalValue, setInternalValue] = useState<string | string[]>(() => {\n      if (controlledValue !== undefined) return controlledValue\n      if (defaultValue !== undefined) return defaultValue\n      return type === 'multiple' ? [] : ''\n    })\n\n    const value = controlledValue !== undefined ? controlledValue : internalValue\n\n    const handleValueChange = (newValue: string | string[]) => {\n      if (controlledValue === undefined) {\n        setInternalValue(newValue)\n      }\n      onValueChange?.(newValue)\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.accordion,\n        styles[size],\n        styles[variant],\n        {\n          [styles.disabled]: disabled,\n        }\n      )\n    })\n\n    return (\n      <AccordionContext.Provider\n        value={{\n          type,\n          value,\n          onValueChange: handleValueChange,\n          size,\n          variant,\n          disabled,\n          collapsible,\n        }}\n      >\n        <div\n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          {...props}\n        >\n          {children}\n        </div>\n      </AccordionContext.Provider>\n    )\n  }\n)\n\nconst AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n  ({ children, className, style, value, disabled: itemDisabled = false, ...props }, ref) => {\n    const context = useContext(AccordionContext)\n    if (!context) {\n      throw new Error('AccordionItem must be used within an Accordion')\n    }\n\n    const { type, value: accordionValue, onValueChange, disabled: accordionDisabled } = context\n    const disabled = accordionDisabled || itemDisabled\n\n    // Generate unique IDs for accessibility\n    const baseId = useId()\n    const triggerId = `${baseId}-trigger`\n    const contentId = `${baseId}-content`\n\n    // Determine if this item is open\n    const isOpen = type === 'multiple' \n      ? Array.isArray(accordionValue) && accordionValue.includes(value)\n      : accordionValue === value\n\n    const toggle = () => {\n      if (disabled) return\n\n      if (type === 'multiple') {\n        const currentValue = Array.isArray(accordionValue) ? accordionValue : []\n        const newValue = isOpen\n          ? currentValue.filter(v => v !== value)\n          : [...currentValue, value]\n        onValueChange(newValue)\n      } else {\n        const newValue = isOpen && context.collapsible ? '' : value\n        onValueChange(newValue)\n      }\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.item,\n        {\n          [styles.open]: isOpen,\n          [styles.disabled]: disabled,\n        }\n      )\n    })\n\n    return (\n      <AccordionItemContext.Provider\n        value={{\n          value,\n          isOpen,\n          disabled,\n          toggle,\n          triggerId,\n          contentId,\n        }}\n      >\n        <div\n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          {...props}\n        >\n          {children}\n        </div>\n      </AccordionItemContext.Provider>\n    )\n  }\n)\n\nconst AccordionTrigger = forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n  ({ children, className, style, icon, hideIcon = false, onClick, ...props }, ref) => {\n    const itemContext = useContext(AccordionItemContext)\n    const accordionContext = useContext(AccordionContext)\n    \n    if (!itemContext || !accordionContext) {\n      throw new Error('AccordionTrigger must be used within an AccordionItem')\n    }\n\n    const { isOpen, disabled, toggle, triggerId, contentId } = itemContext\n\n    const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n      toggle()\n      onClick?.(event)\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.trigger,\n        {\n          [styles.open]: isOpen,\n          [styles.disabled]: disabled,\n        }\n      )\n    })\n\n    return (\n      <button\n        ref={ref}\n        id={triggerId}\n        type=\"button\"\n        className={processedClassName}\n        style={processedStyle}\n        onClick={handleClick}\n        disabled={disabled}\n        aria-expanded={isOpen}\n        aria-controls={contentId}\n        {...props}\n      >\n        <span className={styles.triggerText}>{children}</span>\n        {!hideIcon && (\n          <span \n            className={clsx(styles.triggerIcon, {\n              [styles.rotated]: isOpen\n            })}\n          >\n            {icon || <DefaultChevronIcon />}\n          </span>\n        )}\n      </button>\n    )\n  }\n)\n\nconst AccordionContent = forwardRef<HTMLDivElement, AccordionContentProps>(\n  ({ children, className, style, ...props }, ref) => {\n    const itemContext = useContext(AccordionItemContext)\n    \n    if (!itemContext) {\n      throw new Error('AccordionContent must be used within an AccordionItem')\n    }\n\n    const { isOpen, contentId, triggerId } = itemContext\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.content,\n        {\n          [styles.open]: isOpen,\n        }\n      )\n    })\n\n    return (\n      <div\n        ref={ref}\n        id={contentId}\n        role=\"region\"\n        aria-labelledby={triggerId}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        <div className={styles.contentInner}>\n          {children}\n        </div>\n      </div>\n    )\n  }\n)\n\n// Default chevron icon\nconst DefaultChevronIcon = () => (\n  <svg\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M4 6L8 10L12 6\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"miter\"\n    />\n  </svg>\n)\n\nAccordion.displayName = 'Accordion'\nAccordionItem.displayName = 'Accordion.Item'\nAccordionTrigger.displayName = 'Accordion.Trigger'\nAccordionContent.displayName = 'Accordion.Content'\n\n// Compound component\nconst AccordionComponent = Accordion as typeof Accordion & {\n  Item: typeof AccordionItem\n  Trigger: typeof AccordionTrigger\n  Content: typeof AccordionContent\n}\n\nAccordionComponent.Item = AccordionItem\nAccordionComponent.Trigger = AccordionTrigger\nAccordionComponent.Content = AccordionContent\n\nexport { AccordionComponent as Accordion }","/**\n * @module Combobox\n * @description A searchable dropdown component that combines a text input with a select menu. Supports keyboard navigation, search filtering, and customizable options.\n */\n\nimport React, { createContext, useContext, useState, useRef, useEffect, useCallback, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Combobox.module.css'\n\n/**\n * Structure for combobox options\n */\ninterface ComboboxOption {\n  /**\n   * The value to be submitted when the option is selected\n   */\n  value: string\n  \n  /**\n   * The display label for the option\n   */\n  label: string\n  \n  /**\n   * Whether the option is disabled and cannot be selected\n   * @default false\n   */\n  disabled?: boolean\n}\n\n/**\n * Props for the Combobox component\n */\ninterface ComboboxProps {\n  /**\n   * Array of options to display in the combobox\n   */\n  options: ComboboxOption[]\n  \n  /**\n   * The controlled value of the combobox\n   */\n  value?: string\n  \n  /**\n   * The default value when uncontrolled\n   */\n  defaultValue?: string\n  \n  /**\n   * Callback fired when the selected value changes\n   */\n  onValueChange?: (value: string) => void\n  \n  /**\n   * Placeholder text for the trigger button\n   */\n  placeholder?: string\n  \n  /**\n   * Message to show when no options match the search\n   */\n  emptyMessage?: string\n  \n  /**\n   * Placeholder text for the search input\n   */\n  searchPlaceholder?: string\n  \n  /**\n   * Whether the combobox is disabled\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n  \n  /**\n   * Custom content for the combobox (overrides default rendering)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * The size variant of the combobox\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * The visual style variant of the combobox\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'outline' | 'info' | 'system' | 'destructive' | 'success' | 'warning' | 'ghost' | 'neon' | 'retro'\n}\n\ninterface ComboboxContextValue {\n  isOpen: boolean\n  setIsOpen: (open: boolean) => void\n  selectedValue: string\n  setSelectedValue: (value: string) => void\n  searchValue: string\n  setSearchValue: (value: string) => void\n  options: ComboboxOption[]\n  filteredOptions: ComboboxOption[]\n  triggerRef: React.RefObject<HTMLButtonElement>\n  contentRef: React.RefObject<HTMLDivElement>\n  highlightedIndex: number\n  setHighlightedIndex: (index: number) => void\n  onSelect: (value: string) => void\n  placeholder?: string\n  emptyMessage?: string\n  searchPlaceholder?: string\n}\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null)\n\nconst useCombobox = () => {\n  const context = useContext(ComboboxContext)\n  if (!context) {\n    throw new Error('Combobox components must be used within a Combobox')\n  }\n  return context\n}\n\n/**\n * A searchable dropdown component combining text input with selectable options.\n * Supports keyboard navigation, filtering, and custom rendering.\n * \n * @example\n * ```tsx\n * <Combobox\n *   options={[\n *     { value: 'react', label: 'React' },\n *     { value: 'vue', label: 'Vue' },\n *     { value: 'angular', label: 'Angular' }\n *   ]}\n *   placeholder=\"Select framework\"\n *   onValueChange={(value) => console.log(value)}\n * >\n *   <Combobox.Trigger />\n *   <Combobox.Content />\n * </Combobox>\n * ```\n */\nconst Combobox = React.forwardRef<HTMLDivElement, ComboboxProps>(\n  ({ \n    options = [], \n    value, \n    defaultValue = '', \n    onValueChange, \n    placeholder,\n    emptyMessage,\n    searchPlaceholder,\n    className,\n    style, \n    children, \n    size = 'md',\n    variant = 'default',\n    ...props \n  }, ref) => {\n    const [isOpen, setIsOpen] = useState(false)\n    const [selectedValue, setSelectedValue] = useState(value ?? defaultValue)\n    const [searchValue, setSearchValue] = useState('')\n    const [highlightedIndex, setHighlightedIndex] = useState(-1)\n    \n    const triggerRef = useRef<HTMLButtonElement>(null)\n    const contentRef = useRef<HTMLDivElement>(null)\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.combobox,\n        styles[`combobox--${size}`],\n        styles[`combobox--${variant}`]\n      )\n    })\n\n    // Filter options based on search\n    const filteredOptions = React.useMemo(() => {\n      if (!searchValue) return options\n      return options.filter(option => \n        option.label.toLowerCase().includes(searchValue.toLowerCase())\n      )\n    }, [options, searchValue])\n\n    // Handle value changes\n    useEffect(() => {\n      if (value !== undefined) {\n        setSelectedValue(value)\n      }\n    }, [value])\n\n    const onSelect = useCallback((optionValue: string) => {\n      setSelectedValue(optionValue)\n      setIsOpen(false)\n      setSearchValue('')\n      setHighlightedIndex(-1)\n      onValueChange?.(optionValue)\n    }, [onValueChange])\n\n    // Handle keyboard navigation\n    const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n      if (!isOpen) {\n        if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n          e.preventDefault()\n          setIsOpen(true)\n          setHighlightedIndex(0)\n        }\n        return\n      }\n\n      switch (e.key) {\n        case 'Escape':\n          e.preventDefault()\n          setIsOpen(false)\n          setHighlightedIndex(-1)\n          triggerRef.current?.focus()\n          break\n        case 'ArrowDown':\n          e.preventDefault()\n          setHighlightedIndex(prev => \n            prev < filteredOptions.length - 1 ? prev + 1 : 0\n          )\n          break\n        case 'ArrowUp':\n          e.preventDefault()\n          setHighlightedIndex(prev => \n            prev > 0 ? prev - 1 : filteredOptions.length - 1\n          )\n          break\n        case 'Enter':\n          e.preventDefault()\n          if (highlightedIndex >= 0 && filteredOptions[highlightedIndex]) {\n            onSelect(filteredOptions[highlightedIndex].value)\n          }\n          break\n      }\n    }, [isOpen, filteredOptions, highlightedIndex, onSelect])\n\n    // Close on outside click\n    useEffect(() => {\n      const handleClickOutside = (event: MouseEvent) => {\n        if (\n          contentRef.current && \n          !contentRef.current.contains(event.target as Node) &&\n          triggerRef.current &&\n          !triggerRef.current.contains(event.target as Node)\n        ) {\n          setIsOpen(false)\n          setHighlightedIndex(-1)\n        }\n      }\n\n      if (isOpen) {\n        document.addEventListener('mousedown', handleClickOutside)\n        return () => document.removeEventListener('mousedown', handleClickOutside)\n      }\n    }, [isOpen])\n\n    const contextValue: ComboboxContextValue = {\n      isOpen,\n      setIsOpen,\n      selectedValue,\n      setSelectedValue,\n      searchValue,\n      setSearchValue,\n      options,\n      filteredOptions,\n      triggerRef,\n      contentRef,\n      highlightedIndex,\n      setHighlightedIndex,\n      onSelect,\n      placeholder,\n      emptyMessage,\n      searchPlaceholder\n    }\n\n    return (\n      <ComboboxContext.Provider value={contextValue}>\n        <div \n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          onKeyDown={handleKeyDown}\n          {...props}\n        >\n          {children}\n        </div>\n      </ComboboxContext.Provider>\n    )\n  }\n)\n\n/**\n * Props for the Combobox.Trigger component\n */\ninterface ComboboxTriggerProps {\n  /**\n   * Custom content for the trigger (overrides default display)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n  \n  /**\n   * Placeholder text when no option is selected\n   */\n  placeholder?: string\n  \n  /**\n   * Icon to display in the trigger button\n   */\n  icon?: React.ReactNode\n}\n\n/**\n * Trigger button for opening the combobox dropdown.\n * Displays the selected value or placeholder text.\n */\nconst ComboboxTrigger = React.forwardRef<HTMLButtonElement, ComboboxTriggerProps>(\n  ({ className, style, placeholder: triggerPlaceholder, icon, ...props }, _ref) => {\n    const { isOpen, setIsOpen, selectedValue, options, triggerRef, placeholder: contextPlaceholder } = useCombobox()\n    \n    const selectedOption = options.find(option => option.value === selectedValue)\n    const finalPlaceholder = triggerPlaceholder || contextPlaceholder || 'Select option...'\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.trigger\n    })\n    \n    return (\n      <button\n        ref={triggerRef}\n        type=\"button\"\n        role=\"combobox\"\n        aria-expanded={isOpen}\n        aria-haspopup=\"listbox\"\n        className={processedClassName}\n        style={processedStyle}\n        onClick={() => setIsOpen(!isOpen)}\n        {...props}\n      >\n        {icon && <span className={styles.triggerIcon}>{icon}</span>}\n        <span className={styles.triggerText}>\n          {selectedOption ? selectedOption.label : finalPlaceholder}\n        </span>\n        <svg \n          className={clsx(styles.triggerArrow, { [styles.triggerArrowOpen]: isOpen })}\n          width=\"12\" \n          height=\"12\" \n          viewBox=\"0 0 12 12\" \n          fill=\"none\"\n        >\n          <path d=\"M3 4.5L6 7.5L9 4.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n        </svg>\n      </button>\n    )\n  }\n)\n\n/**\n * Props for the Combobox.Content component\n */\ninterface ComboboxContentProps {\n  /**\n   * Custom option elements (overrides automatic rendering)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Placeholder text for the search input\n   */\n  searchPlaceholder?: string\n  \n  /**\n   * Message to display when no options match the search\n   */\n  emptyMessage?: string\n}\n\n/**\n * Dropdown content containing the search input and option list.\n * Rendered in a portal for proper positioning and z-index handling.\n */\nconst ComboboxContent = React.forwardRef<HTMLDivElement, ComboboxContentProps>(\n  ({ \n    children, \n    className, \n    searchPlaceholder: contentSearchPlaceholder, \n    emptyMessage: contentEmptyMessage,\n    ...props \n  }, _ref) => {\n    const { \n      isOpen, \n      searchValue, \n      setSearchValue, \n      filteredOptions, \n      contentRef,\n      triggerRef,\n      searchPlaceholder: contextSearchPlaceholder,\n      emptyMessage: contextEmptyMessage\n    } = useCombobox()\n    \n    const finalSearchPlaceholder = contentSearchPlaceholder || contextSearchPlaceholder || 'Search options...'\n    const finalEmptyMessage = contentEmptyMessage || contextEmptyMessage || 'No options found.'\n    \n    const [position, setPosition] = useState({ top: 0, left: 0, width: 0 })\n    \n    // Position the content relative to trigger and update on scroll/resize\n    const updatePosition = useCallback(() => {\n      if (isOpen && triggerRef.current) {\n        const triggerRect = triggerRef.current.getBoundingClientRect()\n        setPosition({\n          top: triggerRect.bottom + 4,\n          left: triggerRect.left,\n          width: triggerRect.width\n        })\n      }\n    }, [isOpen, triggerRef])\n\n    useEffect(() => {\n      updatePosition()\n    }, [updatePosition])\n\n    useEffect(() => {\n      if (isOpen) {\n        const handleUpdate = () => updatePosition()\n        window.addEventListener('scroll', handleUpdate, true)\n        window.addEventListener('resize', handleUpdate)\n        return () => {\n          window.removeEventListener('scroll', handleUpdate, true)\n          window.removeEventListener('resize', handleUpdate)\n        }\n      }\n    }, [isOpen, updatePosition])\n\n    if (!isOpen) return null\n\n    const content = (\n      <div\n        ref={contentRef}\n        className={clsx(styles.content, className)}\n        style={{\n          top: position.top,\n          left: position.left,\n          minWidth: position.width\n        }}\n        role=\"listbox\"\n        {...props}\n      >\n        <div className={styles.searchContainer}>\n          <input\n            type=\"text\"\n            className={styles.searchInput}\n            placeholder={finalSearchPlaceholder}\n            value={searchValue}\n            onChange={(e) => setSearchValue(e.target.value)}\n            autoFocus\n          />\n        </div>\n        \n        <div className={styles.optionsList}>\n          {filteredOptions.length === 0 ? (\n            <div className={styles.emptyMessage}>{finalEmptyMessage}</div>\n          ) : (\n            children || filteredOptions.map((option) => (\n              <ComboboxOption \n                key={option.value} \n                value={option.value}\n                disabled={option.disabled}\n              >\n                {option.label}\n              </ComboboxOption>\n            ))\n          )}\n        </div>\n      </div>\n    )\n\n    return createPortal(content, document.body)\n  }\n)\n\n/**\n * Props for the Combobox.Option component\n */\ninterface ComboboxOptionProps {\n  /**\n   * The value to be selected when this option is chosen\n   */\n  value: string\n  \n  /**\n   * The content to display for this option\n   */\n  children: React.ReactNode\n  \n  /**\n   * Whether this option is disabled and cannot be selected\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n}\n\n/**\n * Individual option within the combobox dropdown.\n * Shows selection state and responds to clicks and keyboard navigation.\n */\nconst ComboboxOption = React.forwardRef<HTMLDivElement, ComboboxOptionProps>(\n  ({ value, children, disabled = false, className, ...props }, ref) => {\n    const { \n      selectedValue, \n      onSelect, \n      highlightedIndex, \n      setHighlightedIndex,\n      filteredOptions \n    } = useCombobox()\n    \n    const optionIndex = filteredOptions.findIndex(option => option.value === value)\n    const isSelected = selectedValue === value\n    const isHighlighted = highlightedIndex === optionIndex\n\n    return (\n      <div\n        ref={ref}\n        role=\"option\"\n        aria-selected={isSelected}\n        className={clsx(\n          styles.option,\n          {\n            [styles.optionSelected]: isSelected,\n            [styles.optionHighlighted]: isHighlighted,\n            [styles.optionDisabled]: disabled\n          },\n          className\n        )}\n        onClick={() => !disabled && onSelect(value)}\n        onMouseEnter={() => !disabled && setHighlightedIndex(optionIndex)}\n        {...props}\n      >\n        {children}\n        {isSelected && (\n          <svg \n            className={styles.checkIcon}\n            width=\"16\" \n            height=\"16\" \n            viewBox=\"0 0 16 16\" \n            fill=\"none\"\n          >\n            <path \n              d=\"M13.5 4.5L6 12L2.5 8.5\" \n              stroke=\"currentColor\" \n              strokeWidth=\"2\" \n              strokeLinecap=\"round\" \n              strokeLinejoin=\"round\"\n            />\n          </svg>\n        )}\n      </div>\n    )\n  }\n)\n\n// Display names\nCombobox.displayName = 'Combobox'\nComboboxTrigger.displayName = 'ComboboxTrigger'\nComboboxContent.displayName = 'ComboboxContent'\nComboboxOption.displayName = 'ComboboxOption'\n\n// Compound component pattern with proper typing\ninterface ComboboxCompound extends React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLDivElement>> {\n  Trigger: typeof ComboboxTrigger\n  Content: typeof ComboboxContent\n  Option: typeof ComboboxOption\n}\n\nconst ComboboxWithSubComponents = Combobox as ComboboxCompound\nComboboxWithSubComponents.Trigger = ComboboxTrigger\nComboboxWithSubComponents.Content = ComboboxContent\nComboboxWithSubComponents.Option = ComboboxOption\n\nexport { ComboboxWithSubComponents as Combobox }\nexport type { \n  ComboboxProps, \n  ComboboxOption, \n  ComboboxTriggerProps, \n  ComboboxContentProps, \n  ComboboxOptionProps \n}","/**\n * @module BarChart\n * @description A data visualization component for displaying bar charts with interactive tooltips, animations, and customizable styling. Ideal for comparing values across categories.\n */\n\nimport React, { CSSProperties } from 'react'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport { clsx } from 'clsx'\nimport styles from './BarChart.module.css'\nimport { Tooltip } from '../tooltip'\n\n/**\n * Data point structure for the bar chart\n */\ninterface BarChartDataPoint {\n  /** Label for the data point (typically X-axis category) */\n  label: string\n  /** Numeric value for the bar height */\n  value: number\n  /** Optional custom color for this specific bar */\n  color?: string\n}\n\n/**\n * Props for the BarChart component\n */\ninterface BarChartProps {\n  /** Array of data points to display as bars */\n  data: BarChartDataPoint[]\n  /** Optional title displayed above the chart */\n  title?: string\n  /** Optional subtitle displayed below the title */\n  subtitle?: string\n  /** Height of the chart area in pixels\n   * @default 300\n   */\n  height?: number\n  /** Whether to show value labels on top of bars\n   * @default true\n   */\n  showValues?: boolean\n  /** Whether to show horizontal grid lines\n   * @default true\n   */\n  showGrid?: boolean\n  /** Whether to animate bars on mount\n   * @default true\n   */\n  animated?: boolean\n  /** Size variant affecting spacing and text sizes\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  /** Visual style variant\n   * @default 'default'\n   */\n  variant?: 'default' | 'minimal' | 'brutal'\n  /** Whether to show a container border\n   * @default false\n   */\n  showContainer?: boolean\n  /** Border style when showContainer is true\n   * @default 'solid'\n   */\n  borderStyle?: 'solid' | 'dashed' | 'dotted' | 'double'\n  /** Additional CSS class names */\n  className?: string\n  /** Additional inline styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nconst BarChart = React.forwardRef<HTMLDivElement, BarChartProps>(\n  ({ \n    data,\n    title,\n    subtitle,\n    height = 300,\n    showValues = true,\n    showGrid = true,\n    animated = true,\n    size = 'md',\n    variant = 'default',\n    showContainer = false,\n    borderStyle = 'solid',\n    className,\n    style,\n    ...props \n  }, ref) => {\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.barChart\n    })\n    \n    if (!data || data.length === 0) {\n      return (\n        <div \n          ref={ref} \n          className={clsx(processedClassName, styles.empty)}\n          data-size={size}\n          data-variant={variant}\n          style={processedStyle}\n          {...props}\n        >\n          <div className={styles.emptyState}>\n            <span className={styles.emptyText}>NO DATA AVAILABLE</span>\n          </div>\n        </div>\n      )\n    }\n\n    const maxValue = Math.max(...data.map(d => d.value))\n    \n    // Calculate dynamic heights based on size\n    const sizeConfig = {\n      sm: { headerHeight: 50, footerHeight: 40, padding: 12 },\n      md: { headerHeight: 70, footerHeight: 50, padding: 16 },\n      lg: { headerHeight: 90, footerHeight: 60, padding: 24 }\n    }\n    \n    const config = sizeConfig[size]\n    const headerHeight = (title || subtitle) ? config.headerHeight : 0\n    const actualChartHeight = height - headerHeight - config.footerHeight\n\n    // Default colors using CSS custom properties for theme support\n    const defaultColors = [\n      'var(--brutal-accent)',\n      'var(--brutal-blue)',\n      'var(--brutal-green)', \n      'var(--brutal-yellow)', \n      'var(--brutal-red)',\n      'var(--brutal-orange)',\n      'var(--brutal-purple)'\n    ]\n\n    return (\n      <div \n        ref={ref} \n        className={processedClassName}\n        data-size={size}\n        data-variant={variant}\n        data-animated={animated}\n        data-show-grid={showGrid}\n        data-show-container={showContainer}\n        style={processedStyle}\n        {...props}\n      >\n        {/* Chart Header */}\n        {(title || subtitle) && (\n          <div className={styles.header}>\n            {title && <h2 className={styles.title}>{title}</h2>}\n            {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n          </div>\n        )}\n\n        {/* Chart Container */}\n        <div \n          className={styles.chartContainer}\n          style={{ \n            height: `${actualChartHeight}px`,\n            minHeight: `${actualChartHeight}px`,\n            maxHeight: `${actualChartHeight}px`,\n            ...(showContainer ? { '--brutal-border-style': borderStyle } : {})\n          } as React.CSSProperties}\n        >\n          {/* Y-axis grid and labels */}\n          {showGrid && (\n            <div className={styles.yAxis}>\n              <div className={styles.yAxisLabels}>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.75)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.5)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.25)}</span>\n                <span className={styles.yAxisLabel}>0</span>\n              </div>\n              <div className={styles.gridLines}>\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n              </div>\n            </div>\n          )}\n\n          {/* Bars Container */}\n          <div className={styles.barsContainer}>\n            {data.map((item, index) => {\n              // Calculate bar height to match Y-axis scale exactly\n              const barHeight = Math.max(8, (item.value / maxValue) * actualChartHeight)\n              const color = item.color || defaultColors[index % defaultColors.length]\n              \n              return (\n                <div\n                  key={`${item.label}-${index}`}\n                  className={styles.barWrapper}\n                  style={{ \n                    animationDelay: animated ? `${index * 100}ms` : undefined \n                  }}\n                >\n                  {/* Value label positioned absolutely above bar */}\n                  {showValues && (\n                    <div \n                      className={styles.barValue}\n                      style={{\n                        position: 'absolute',\n                        bottom: `${barHeight + 5}px`,\n                        left: '50%',\n                        transform: 'translateX(-50%)',\n                        zIndex: 3\n                      }}\n                    >\n                      {item.value}\n                    </div>\n                  )}\n                  \n                  {/* Spacer to push bar to bottom */}\n                  <div style={{ flex: 1 }} />\n                  \n                  {/* Bar at bottom */}\n                  <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n                    <Tooltip content={`${item.label}: ${item.value}`}>\n                      <div\n                        className={styles.bar}\n                        style={{\n                          height: `${barHeight}px`,\n                          backgroundColor: color,\n                          animationDelay: animated ? `${index * 150}ms` : undefined\n                        }}\n                      />\n                    </Tooltip>\n                  </div>\n                </div>\n              )\n            })}\n          </div>\n        </div>\n\n        {/* Chart Footer with X-axis labels and data count */}\n        <div className={styles.footer}>\n          <div className={styles.xAxisLabels}>\n            {data.map((item, index) => (\n              <Tooltip key={`label-${index}`} content={item.label}>\n                <div className={styles.xAxisLabel}>\n                  {item.label}\n                </div>\n              </Tooltip>\n            ))}\n          </div>\n          <div className={styles.dataCount}>\n            {data.length} DATA POINTS\n          </div>\n        </div>\n      </div>\n    )\n  }\n)\n\nBarChart.displayName = 'BarChart'\n\nexport { BarChart }\nexport type { BarChartProps, BarChartDataPoint }","/**\n * @module LineChart\n * @description A line chart component for visualizing data trends over time. Features smooth curves, animated rendering, tooltips, and customizable styling with brutalist aesthetics.\n */\n\nimport React, { CSSProperties } from 'react'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport { clsx } from 'clsx'\nimport styles from './LineChart.module.css'\nimport { Tooltip } from '../tooltip'\n\n/**\n * Structure for line chart data points\n */\ninterface LineChartDataPoint {\n  /**\n   * Label for the data point (e.g., date, category)\n   */\n  label: string\n  \n  /**\n   * Numeric value for the data point\n   */\n  value: number\n  \n  /**\n   * Optional custom color for this specific point\n   */\n  color?: string\n}\n\n/**\n * Props for the LineChart component\n */\ninterface LineChartProps {\n  /**\n   * Array of data points to display\n   */\n  data: LineChartDataPoint[]\n  \n  /**\n   * Chart title\n   */\n  title?: string\n  \n  /**\n   * Chart subtitle\n   */\n  subtitle?: string\n  \n  /**\n   * Height of the chart in pixels\n   * @default 300\n   */\n  height?: number\n  \n  /**\n   * Whether to show value labels on data points\n   * @default true\n   */\n  showValues?: boolean\n  \n  /**\n   * Whether to show grid lines\n   * @default true\n   */\n  showGrid?: boolean\n  \n  /**\n   * Whether to animate the chart on render\n   * @default true\n   */\n  animated?: boolean\n  \n  /**\n   * Size variant of the chart\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Visual style variant\n   * @default 'default'\n   */\n  variant?: 'default' | 'minimal' | 'brutal'\n  \n  /**\n   * Whether to show a container border\n   * @default false\n   */\n  showContainer?: boolean\n  \n  /**\n   * Border style when showContainer is true\n   * @default 'solid'\n   */\n  borderStyle?: 'solid' | 'dashed' | 'dotted' | 'double'\n  \n  /**\n   * Color of the line\n   * @default 'var(--brutal-accent)'\n   */\n  lineColor?: string\n  \n  /**\n   * Width of the line\n   * @default 3\n   */\n  lineWidth?: number\n  \n  /**\n   * Whether to show dots at data points\n   * @default true\n   */\n  showDots?: boolean\n  \n  /**\n   * Whether to use smooth curves instead of straight lines\n   * @default false\n   */\n  smooth?: boolean\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * A line chart component for visualizing data trends.\n * Supports smooth curves, animations, and interactive tooltips.\n * \n * @example\n * ```tsx\n * <LineChart\n *   data={[\n *     { label: 'Jan', value: 100 },\n *     { label: 'Feb', value: 150 },\n *     { label: 'Mar', value: 120 }\n *   ]}\n *   title=\"Monthly Sales\"\n *   smooth\n *   animated\n * />\n * ```\n */\nconst LineChart = React.forwardRef<HTMLDivElement, LineChartProps>(\n  ({ \n    data,\n    title,\n    subtitle,\n    height = 300,\n    showValues = true,\n    showGrid = true,\n    animated = true,\n    size = 'md',\n    variant = 'default',\n    showContainer = false,\n    borderStyle = 'solid',\n    lineColor = 'var(--brutal-accent)',\n    lineWidth = 3,\n    showDots = true,\n    smooth = false,\n    className,\n    style,\n    ...props \n  }, ref) => {\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.lineChart\n    })\n    \n    if (!data || data.length === 0) {\n      return (\n        <div \n          ref={ref} \n          className={clsx(processedClassName, styles.empty)}\n          data-size={size}\n          data-variant={variant}\n          style={processedStyle}\n          {...props}\n        >\n          <div className={styles.emptyState}>\n            <span className={styles.emptyText}>NO DATA AVAILABLE</span>\n          </div>\n        </div>\n      )\n    }\n\n    const maxValue = Math.max(...data.map(d => d.value))\n    const minValue = Math.min(...data.map(d => d.value))\n    const valueRange = maxValue - minValue\n    \n    // Calculate dynamic heights based on size\n    const sizeConfig = {\n      sm: { headerHeight: 50, footerHeight: 40, padding: 12 },\n      md: { headerHeight: 70, footerHeight: 50, padding: 16 },\n      lg: { headerHeight: 90, footerHeight: 60, padding: 24 }\n    }\n    \n    const config = sizeConfig[size]\n    const headerHeight = (title || subtitle) ? config.headerHeight : 0\n    const actualChartHeight = height - headerHeight - config.footerHeight\n\n    // Generate SVG path for the line\n    const generatePath = (smooth: boolean) => {\n      if (data.length === 0) return ''\n      \n      const points = data.map((point, index) => {\n        const x = data.length === 1 ? 50 : (index / (data.length - 1)) * 100\n        const y = valueRange === 0 ? 50 : 100 - ((point.value - minValue) / valueRange) * 100\n        return { x, y }\n      })\n\n      if (smooth && data.length > 2) {\n        // Generate smooth curve using cubic bezier\n        let path = `M ${points[0].x} ${points[0].y}`\n        \n        for (let i = 1; i < points.length; i++) {\n          const cp1x = points[i - 1].x + (points[i].x - points[i - 1].x) / 3\n          const cp1y = points[i - 1].y\n          const cp2x = points[i].x - (points[i].x - points[i - 1].x) / 3\n          const cp2y = points[i].y\n          \n          path += ` C ${cp1x} ${cp1y}, ${cp2x} ${cp2y}, ${points[i].x} ${points[i].y}`\n        }\n        \n        return path\n      } else {\n        // Generate straight lines\n        return points.map((point, index) => \n          index === 0 ? `M ${point.x} ${point.y}` : `L ${point.x} ${point.y}`\n        ).join(' ')\n      }\n    }\n\n    const pathData = generatePath(smooth)\n\n    return (\n      <div \n        ref={ref} \n        className={processedClassName}\n        data-size={size}\n        data-variant={variant}\n        data-animated={animated}\n        data-show-grid={showGrid}\n        data-show-container={showContainer}\n        style={processedStyle}\n        {...props}\n      >\n        {/* Chart Header */}\n        {(title || subtitle) && (\n          <div className={styles.header}>\n            {title && <h2 className={styles.title}>{title}</h2>}\n            {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n          </div>\n        )}\n\n        {/* Chart Container */}\n        <div \n          className={styles.chartContainer}\n          style={{ \n            height: `${actualChartHeight}px`,\n            minHeight: `${actualChartHeight}px`,\n            maxHeight: `${actualChartHeight}px`,\n            ...(showContainer ? { '--brutal-border-style': borderStyle } : {})\n          } as React.CSSProperties}\n        >\n          {/* Y-axis grid and labels */}\n          {showGrid && (\n            <div className={styles.yAxis}>\n              <div className={styles.yAxisLabels}>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.75 + minValue * 0.25)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.5 + minValue * 0.5)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.25 + minValue * 0.75)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(minValue)}</span>\n              </div>\n              <div className={styles.gridLines}>\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n              </div>\n            </div>\n          )}\n\n          {/* Line Chart SVG */}\n          <div className={styles.lineContainer}>\n            <svg \n              className={styles.lineSvg}\n              viewBox=\"0 0 100 100\"\n              preserveAspectRatio=\"none\"\n            >\n              {/* Line path */}\n              <path\n                d={pathData}\n                fill=\"none\"\n                stroke={lineColor}\n                strokeWidth={lineWidth / 10}\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                className={animated ? styles.animatedLine : ''}\n              />\n              \n              {/* Data points */}\n              {showDots && data.map((point, index) => {\n                const x = data.length === 1 ? 50 : (index / (data.length - 1)) * 100\n                const y = valueRange === 0 ? 50 : 100 - ((point.value - minValue) / valueRange) * 100\n                const dotSize = 4 // Fixed small size\n                \n                return (\n                  <rect\n                    key={`dot-${index}`}\n                    x={x - dotSize/2}\n                    y={y - dotSize/2}\n                    width={dotSize}\n                    height={dotSize}\n                    fill={point.color || lineColor}\n                    stroke=\"none\"\n                    className={animated ? styles.animatedDot : ''}\n                    style={{ animationDelay: animated ? `${index * 100}ms` : undefined }}\n                  />\n                )\n              })}\n            </svg>\n\n            {/* Interactive data point areas for tooltips */}\n            {data.map((point, index) => {\n              const x = data.length === 1 ? 50 : (index / (data.length - 1)) * 100\n              const y = valueRange === 0 ? 50 : 100 - ((point.value - minValue) / valueRange) * 100\n              \n              return (\n                <Tooltip key={`tooltip-${index}`} content={`${point.label}: ${point.value}`}>\n                  <div\n                    className={styles.dataPointHover}\n                    style={{\n                      left: `${x}%`,\n                      top: `${y}%`,\n                      transform: 'translate(-50%, -50%)'\n                    }}\n                  />\n                </Tooltip>\n              )\n            })}\n\n            {/* Value labels */}\n            {showValues && data.map((point, index) => {\n              const x = (index / (data.length - 1)) * 100\n              const y = 100 - ((point.value - minValue) / valueRange) * 100\n              \n              return (\n                <div\n                  key={`value-${index}`}\n                  className={styles.valueLabel}\n                  style={{\n                    left: `${x}%`,\n                    top: `${y}%`,\n                    transform: 'translate(-50%, -150%)',\n                    animationDelay: animated ? `${index * 150}ms` : undefined\n                  }}\n                >\n                  {point.value}\n                </div>\n              )\n            })}\n          </div>\n        </div>\n\n        {/* Chart Footer with X-axis labels and data count */}\n        <div className={styles.footer}>\n          <div className={styles.xAxisLabels}>\n            {data.map((item, index) => (\n              <Tooltip key={`label-${index}`} content={item.label}>\n                <div className={styles.xAxisLabel}>\n                  {item.label}\n                </div>\n              </Tooltip>\n            ))}\n          </div>\n          <div className={styles.dataCount}>\n            {data.length} DATA POINTS\n          </div>\n        </div>\n      </div>\n    )\n  }\n)\n\nLineChart.displayName = 'LineChart'\n\nexport { LineChart }\nexport type { LineChartProps, LineChartDataPoint }","/**\n * @module PieChart\n * @description A brutalist-styled pie chart component for data visualization with customizable segments, animations, and interactive tooltips. Features stark visual design with bold borders and high contrast colors.\n */\n\nimport React, { CSSProperties } from 'react'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport { clsx } from 'clsx'\nimport styles from './PieChart.module.css'\nimport { Tooltip } from '../tooltip'\n\n/**\n * Data point interface for pie chart segments\n */\ninterface PieChartDataPoint {\n  /**\n   * Text label for this data segment\n   */\n  label: string\n  \n  /**\n   * Numeric value for this data segment\n   */\n  value: number\n  \n  /**\n   * Optional custom color for this segment (defaults to auto-generated color)\n   */\n  color?: string\n}\n\n/**\n * Props for the PieChart component\n */\ninterface PieChartProps {\n  /**\n   * Array of data points to display in the pie chart\n   */\n  data: PieChartDataPoint[]\n  \n  /**\n   * Optional title to display above the chart\n   */\n  title?: string\n  \n  /**\n   * Optional subtitle to display below the title\n   */\n  subtitle?: string\n  \n  /**\n   * Size of the chart in pixels (both width and height)\n   * @default 300\n   */\n  size?: number\n  \n  /**\n   * Whether to show percentage values on the chart segments\n   * @default true\n   */\n  showValues?: boolean\n  \n  /**\n   * Whether to show the legend with labels below the chart\n   * @default true\n   */\n  showLabels?: boolean\n  \n  /**\n   * Whether to enable entry animations for chart segments\n   * @default true\n   */\n  animated?: boolean\n  \n  /**\n   * Visual style variant for the chart\n   * @default 'default'\n   */\n  variant?: 'default' | 'minimal' | 'brutal'\n  \n  /**\n   * Whether to show a border container around the chart\n   * @default false\n   */\n  showContainer?: boolean\n  \n  /**\n   * Style of the border (when showContainer is true)\n   * @default 'solid'\n   */\n  borderStyle?: 'solid' | 'dashed' | 'dotted' | 'double'\n  \n  /**\n   * Width of the stroke between segments in pixels\n   * @default 2\n   */\n  strokeWidth?: number\n  \n  /**\n   * Additional CSS classes to apply to the chart container\n   */\n  className?: string\n  \n  /**\n   * Inline styles to apply to the chart container (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nconst PieChart = React.forwardRef<HTMLDivElement, PieChartProps>(\n  ({ \n    data,\n    title,\n    subtitle,\n    size = 300,\n    showValues = true,\n    showLabels = true,\n    animated = true,\n    variant = 'default',\n    showContainer = false,\n    borderStyle = 'solid',\n    strokeWidth = 2,\n    className,\n    style,\n    ...props \n  }, ref) => {\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.pieChart\n    })\n    \n    if (!data || data.length === 0) {\n      return (\n        <div \n          ref={ref} \n          className={clsx(processedClassName, styles.empty)}\n          data-variant={variant}\n          style={processedStyle}\n          {...props}\n        >\n          <div className={styles.emptyState}>\n            <span className={styles.emptyText}>NO DATA AVAILABLE</span>\n          </div>\n        </div>\n      )\n    }\n\n    const total = data.reduce((sum, item) => sum + item.value, 0)\n    const radius = (size - 40) / 2\n    const centerX = size / 2\n    const centerY = size / 2\n\n    // Generate pie slices\n    let cumulativeAngle = 0\n    const slices = data.map((item, index) => {\n      const percentage = (item.value / total) * 100\n      const angle = (item.value / total) * 360\n      const startAngle = cumulativeAngle\n      const endAngle = cumulativeAngle + angle\n      \n      // Calculate path for slice\n      const startAngleRad = (startAngle - 90) * (Math.PI / 180)\n      const endAngleRad = (endAngle - 90) * (Math.PI / 180)\n      \n      const x1 = centerX + radius * Math.cos(startAngleRad)\n      const y1 = centerY + radius * Math.sin(startAngleRad)\n      const x2 = centerX + radius * Math.cos(endAngleRad)\n      const y2 = centerY + radius * Math.sin(endAngleRad)\n      \n      const largeArcFlag = angle > 180 ? 1 : 0\n      \n      const pathData = [\n        `M ${centerX} ${centerY}`,\n        `L ${x1} ${y1}`,\n        `A ${radius} ${radius} 0 ${largeArcFlag} 1 ${x2} ${y2}`,\n        'Z'\n      ].join(' ')\n\n      // Calculate label position\n      const labelAngle = (startAngle + angle / 2 - 90) * (Math.PI / 180)\n      const labelRadius = radius * 0.7\n      const labelX = centerX + labelRadius * Math.cos(labelAngle)\n      const labelY = centerY + labelRadius * Math.sin(labelAngle)\n\n      cumulativeAngle += angle\n\n      return {\n        path: pathData,\n        color: item.color || `hsl(${(index * 360) / data.length}, 70%, 50%)`,\n        percentage,\n        labelX,\n        labelY,\n        item,\n        angle\n      }\n    })\n\n    const defaultColors = [\n      '#FF0000', '#0066FF', '#00FF41', '#FFFF00', \n      '#FF6600', '#9900FF', '#00FFFF', '#FF0099'\n    ]\n\n    return (\n      <div \n        ref={ref} \n        className={processedClassName}\n        data-variant={variant}\n        data-animated={animated}\n        data-show-container={showContainer}\n        style={processedStyle}\n        {...props}\n      >\n        {/* Chart Header */}\n        {(title || subtitle) && (\n          <div className={styles.header}>\n            {title && <h2 className={styles.title}>{title}</h2>}\n            {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n          </div>\n        )}\n\n        {/* Chart Container */}\n        <div \n          className={styles.chartContainer}\n          style={{ \n            ...(showContainer ? { '--brutal-border-style': borderStyle } : {}),\n            width: `${size}px`,\n            height: `${size}px`\n          } as React.CSSProperties}\n        >\n          <svg \n            className={styles.pieSvg}\n            width={size}\n            height={size}\n            viewBox={`0 0 ${size} ${size}`}\n          >\n            {/* Pie slices */}\n            {slices.map((slice, index) => (\n              <g key={`slice-${index}`}>\n                <path\n                  d={slice.path}\n                  fill={slice.item.color || defaultColors[index % defaultColors.length]}\n                  stroke=\"var(--brutal-white)\"\n                  strokeWidth={strokeWidth}\n                  className={animated ? styles.animatedSlice : ''}\n                  style={{ animationDelay: animated ? `${index * 150}ms` : undefined }}\n                />\n                \n                {/* Value labels */}\n                {showValues && slice.percentage > 5 && (\n                  <text\n                    x={slice.labelX}\n                    y={slice.labelY}\n                    textAnchor=\"middle\"\n                    dominantBaseline=\"middle\"\n                    className={styles.valueLabel}\n                    style={{ animationDelay: animated ? `${index * 200}ms` : undefined }}\n                  >\n                    {Math.round(slice.percentage)}%\n                  </text>\n                )}\n              </g>\n            ))}\n          </svg>\n\n          {/* Interactive hover areas for tooltips */}\n          {slices.map((slice, index) => (\n            <Tooltip \n              key={`tooltip-${index}`} \n              content={`${slice.item.label}: ${slice.item.value} (${Math.round(slice.percentage)}%)`}\n            >\n              <div\n                className={styles.sliceHover}\n                style={{\n                  position: 'absolute',\n                  left: `${slice.labelX - 20}px`,\n                  top: `${slice.labelY - 20}px`,\n                  width: '40px',\n                  height: '40px',\n                  borderRadius: '50%'\n                }}\n              />\n            </Tooltip>\n          ))}\n        </div>\n\n        {/* Legend */}\n        {showLabels && (\n          <div className={styles.legend}>\n            {data.map((item, index) => (\n              <div key={`legend-${index}`} className={styles.legendItem}>\n                <div \n                  className={styles.legendColor}\n                  style={{ \n                    backgroundColor: item.color || defaultColors[index % defaultColors.length]\n                  }}\n                />\n                <span className={styles.legendLabel}>{item.label}</span>\n                <span className={styles.legendValue}>{item.value}</span>\n              </div>\n            ))}\n          </div>\n        )}\n\n        {/* Data Count */}\n        <div className={styles.dataCount}>\n          {data.length} DATA SEGMENTS • TOTAL: {total}\n        </div>\n      </div>\n    )\n  }\n)\n\nPieChart.displayName = 'PieChart'\n\nexport { PieChart }\nexport type { PieChartProps, PieChartDataPoint }","/**\n * @module AreaChart\n * @description A data visualization component for displaying area charts with smooth curves, interactive tooltips, and customizable styling. Perfect for showing trends and data over time.\n */\n\nimport React, { CSSProperties } from 'react'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport { clsx } from 'clsx'\nimport styles from './AreaChart.module.css'\nimport { Tooltip } from '../tooltip'\n\n/**\n * Data point structure for the area chart\n */\ninterface AreaChartDataPoint {\n  /** Label for the data point (typically X-axis value) */\n  label: string\n  /** Numeric value for the data point (Y-axis value) */\n  value: number\n  /** Optional custom color for this specific data point */\n  color?: string\n}\n\n/**\n * Props for the AreaChart component\n */\ninterface AreaChartProps {\n  /** Array of data points to display in the chart */\n  data: AreaChartDataPoint[]\n  /** Optional title displayed above the chart */\n  title?: string\n  /** Optional subtitle displayed below the title */\n  subtitle?: string\n  /** Height of the chart area in pixels\n   * @default 300\n   */\n  height?: number\n  /** Whether to show value labels on data points\n   * @default true\n   */\n  showValues?: boolean\n  /** Whether to show grid lines\n   * @default true\n   */\n  showGrid?: boolean\n  /** Whether to animate the chart on mount\n   * @default true\n   */\n  animated?: boolean\n  /** Size variant affecting padding and text sizes\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  /** Visual style variant\n   * @default 'default'\n   */\n  variant?: 'default' | 'minimal' | 'brutal'\n  /** Whether to show a container border around the chart\n   * @default false\n   */\n  showContainer?: boolean\n  /** Border style when showContainer is true\n   * @default 'solid'\n   */\n  borderStyle?: 'solid' | 'dashed' | 'dotted' | 'double'\n  /** Fill color for the area (CSS color value)\n   * @default 'var(--brutal-accent)'\n   */\n  fillColor?: string\n  /** Stroke color for the line (CSS color value)\n   * @default 'var(--brutal-accent)'\n   */\n  lineColor?: string\n  /** Width of the line stroke\n   * @default 3\n   */\n  lineWidth?: number\n  /** Whether to show dots at data points\n   * @default true\n   */\n  showDots?: boolean\n  /** Whether to use smooth curves instead of straight lines\n   * @default false\n   */\n  smooth?: boolean\n  /** Opacity of the area fill (0-1)\n   * @default 0.3\n   */\n  fillOpacity?: number\n  /** Additional CSS class names */\n  className?: string\n  /** Additional inline styles (supports utility classes) */\n  style?: CSSProperties\n}\n\nconst AreaChart = React.forwardRef<HTMLDivElement, AreaChartProps>(\n  ({ \n    data,\n    title,\n    subtitle,\n    height = 300,\n    showValues = true,\n    showGrid = true,\n    animated = true,\n    size = 'md',\n    variant = 'default',\n    showContainer = false,\n    borderStyle = 'solid',\n    fillColor = 'var(--brutal-accent)',\n    lineColor = 'var(--brutal-accent)',\n    lineWidth = 3,\n    showDots = true,\n    smooth = false,\n    fillOpacity = 0.3,\n    className,\n    style,\n    ...props \n  }, ref) => {\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.areaChart\n    })\n    \n    if (!data || data.length === 0) {\n      return (\n        <div \n          ref={ref} \n          className={clsx(processedClassName, styles.empty)}\n          data-size={size}\n          data-variant={variant}\n          style={processedStyle}\n          {...props}\n        >\n          <div className={styles.emptyState}>\n            <span className={styles.emptyText}>NO DATA AVAILABLE</span>\n          </div>\n        </div>\n      )\n    }\n\n    const maxValue = Math.max(...data.map(d => d.value))\n    const minValue = Math.min(...data.map(d => d.value))\n    const valueRange = maxValue - minValue\n    \n    // Calculate dynamic heights based on size\n    const sizeConfig = {\n      sm: { headerHeight: 50, footerHeight: 40, padding: 12 },\n      md: { headerHeight: 70, footerHeight: 50, padding: 16 },\n      lg: { headerHeight: 90, footerHeight: 60, padding: 24 }\n    }\n    \n    const config = sizeConfig[size]\n    const headerHeight = (title || subtitle) ? config.headerHeight : 0\n    const actualChartHeight = height - headerHeight - config.footerHeight\n\n    // Generate SVG path for the area\n    const generateAreaPath = (smooth: boolean): { linePath: string; areaPath: string } => {\n      if (data.length === 0) return { linePath: '', areaPath: '' }\n      \n      const points = data.map((point, index) => {\n        const x = (index / (data.length - 1)) * 100\n        const y = 100 - ((point.value - minValue) / valueRange) * 100\n        return { x, y }\n      })\n\n      let linePath = ''\n      \n      if (smooth && data.length > 2) {\n        // Generate smooth curve using cubic bezier\n        linePath = `M ${points[0].x} ${points[0].y}`\n        \n        for (let i = 1; i < points.length; i++) {\n          const cp1x = points[i - 1].x + (points[i].x - points[i - 1].x) / 3\n          const cp1y = points[i - 1].y\n          const cp2x = points[i].x - (points[i].x - points[i - 1].x) / 3\n          const cp2y = points[i].y\n          \n          linePath += ` C ${cp1x} ${cp1y}, ${cp2x} ${cp2y}, ${points[i].x} ${points[i].y}`\n        }\n      } else {\n        // Generate straight lines\n        linePath = points.map((point, index) => \n          index === 0 ? `M ${point.x} ${point.y}` : `L ${point.x} ${point.y}`\n        ).join(' ')\n      }\n\n      // Close the area path by connecting to bottom\n      const areaPath = linePath + \n        ` L ${points[points.length - 1].x} 100` + \n        ` L ${points[0].x} 100 Z`\n\n      return { linePath, areaPath }\n    }\n\n    const { linePath, areaPath } = generateAreaPath(smooth)\n\n    return (\n      <div \n        ref={ref} \n        className={processedClassName}\n        data-size={size}\n        data-variant={variant}\n        data-animated={animated}\n        data-show-grid={showGrid}\n        data-show-container={showContainer}\n        style={processedStyle}\n        {...props}\n      >\n        {/* Chart Header */}\n        {(title || subtitle) && (\n          <div className={styles.header}>\n            {title && <h2 className={styles.title}>{title}</h2>}\n            {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n          </div>\n        )}\n\n        {/* Chart Container */}\n        <div \n          className={styles.chartContainer}\n          style={{ \n            height: `${actualChartHeight}px`,\n            minHeight: `${actualChartHeight}px`,\n            maxHeight: `${actualChartHeight}px`,\n            ...(showContainer ? { '--brutal-border-style': borderStyle } : {})\n          } as React.CSSProperties}\n        >\n          {/* Y-axis grid and labels */}\n          {showGrid && (\n            <div className={styles.yAxis}>\n              <div className={styles.yAxisLabels}>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.75 + minValue * 0.25)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.5 + minValue * 0.5)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(maxValue * 0.25 + minValue * 0.75)}</span>\n                <span className={styles.yAxisLabel}>{Math.round(minValue)}</span>\n              </div>\n              <div className={styles.gridLines}>\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n                <div className={styles.gridLine} />\n              </div>\n            </div>\n          )}\n\n          {/* Area Chart SVG */}\n          <div className={styles.areaContainer}>\n            <svg \n              className={styles.areaSvg}\n              viewBox=\"0 0 100 100\"\n              preserveAspectRatio=\"none\"\n            >\n              {/* Area fill */}\n              <path\n                d={areaPath}\n                fill={fillColor}\n                fillOpacity={fillOpacity}\n                className={animated ? styles.animatedArea : ''}\n              />\n              \n              {/* Line path */}\n              <path\n                d={linePath}\n                fill=\"none\"\n                stroke={lineColor}\n                strokeWidth={lineWidth / 10}\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                className={animated ? styles.animatedLine : ''}\n              />\n              \n              {/* Data points */}\n              {showDots && data.map((point, index) => {\n                const x = (index / (data.length - 1)) * 100\n                const y = 100 - ((point.value - minValue) / valueRange) * 100\n                const dotSize = 4 // Fixed small size\n                \n                return (\n                  <rect\n                    key={`dot-${index}`}\n                    x={x - dotSize/2}\n                    y={y - dotSize/2}\n                    width={dotSize}\n                    height={dotSize}\n                    fill={point.color || lineColor}\n                    stroke=\"none\"\n                    className={animated ? styles.animatedDot : ''}\n                    style={{ animationDelay: animated ? `${index * 100}ms` : undefined }}\n                  />\n                )\n              })}\n            </svg>\n\n            {/* Interactive data point areas for tooltips */}\n            {data.map((point, index) => {\n              const x = (index / (data.length - 1)) * 100\n              const y = 100 - ((point.value - minValue) / valueRange) * 100\n              \n              return (\n                <Tooltip key={`tooltip-${index}`} content={`${point.label}: ${point.value}`}>\n                  <div\n                    className={styles.dataPointHover}\n                    style={{\n                      left: `${x}%`,\n                      top: `${y}%`,\n                      transform: 'translate(-50%, -50%)'\n                    }}\n                  />\n                </Tooltip>\n              )\n            })}\n\n            {/* Value labels */}\n            {showValues && data.map((point, index) => {\n              const x = (index / (data.length - 1)) * 100\n              const y = 100 - ((point.value - minValue) / valueRange) * 100\n              \n              return (\n                <div\n                  key={`value-${index}`}\n                  className={styles.valueLabel}\n                  style={{\n                    left: `${x}%`,\n                    top: `${y}%`,\n                    transform: 'translate(-50%, -150%)',\n                    animationDelay: animated ? `${index * 150}ms` : undefined\n                  }}\n                >\n                  {point.value}\n                </div>\n              )\n            })}\n          </div>\n        </div>\n\n        {/* Chart Footer with X-axis labels and data count */}\n        <div className={styles.footer}>\n          <div className={styles.xAxisLabels}>\n            {data.map((item, index) => (\n              <Tooltip key={`label-${index}`} content={item.label}>\n                <div className={styles.xAxisLabel}>\n                  {item.label}\n                </div>\n              </Tooltip>\n            ))}\n          </div>\n          <div className={styles.dataCount}>\n            {data.length} DATA POINTS\n          </div>\n        </div>\n      </div>\n    )\n  }\n)\n\nAreaChart.displayName = 'AreaChart'\n\nexport { AreaChart }\nexport type { AreaChartProps, AreaChartDataPoint }","/**\n * @module AspectRatio\n * @description A container component that maintains a specific width-to-height ratio for responsive content. Perfect for images, videos, embeds, and any content requiring consistent proportions across different screen sizes.\n */\n\nimport React, { forwardRef, CSSProperties } from 'react'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './AspectRatio.module.css'\n\nexport interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement> {\n  /** The aspect ratio to maintain (e.g., 16/9, 4/3, 1/1) */\n  ratio?: number\n  /** Content to display within the aspect ratio container */\n  children: React.ReactNode\n  /** Additional CSS classes */\n  className?: string\n  /** Custom inline styles (supports utility classes) */\n  style?: CSSProperties\n  /** Whether to apply object-fit to child images/videos */\n  objectFit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'\n  /** Background color when content doesn't fill the container */\n  backgroundColor?: string\n}\n\n/**\n * AspectRatio component maintains a specific width-to-height ratio for its content.\n * Useful for responsive images, videos, embeds, and any content that needs consistent dimensions.\n */\nexport const AspectRatio = forwardRef<HTMLDivElement, AspectRatioProps>(\n  ({ \n    ratio = 16/9, \n    children, \n    className,\n    objectFit = 'cover',\n    backgroundColor,\n    style,\n    ...props \n  }, ref) => {\n    const paddingBottom = `${(1 / ratio) * 100}%`\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.container\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={{\n          ...processedStyle,\n          backgroundColor\n        }}\n        data-object-fit={objectFit}\n        {...props}\n      >\n        <div \n          className={styles.sizer} \n          style={{ paddingBottom }}\n        />\n        <div className={styles.content}>\n          {children}\n        </div>\n      </div>\n    )\n  }\n)\n\nAspectRatio.displayName = 'AspectRatio'","/**\n * @module Pagination\n * @description A component for navigating through pages of content. Includes page numbers, previous/next buttons, and optional page size selection.\n */\n\nimport React, { forwardRef, useMemo } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Pagination.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\nexport interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'> {\n  /** Current active page number (1-indexed) */\n  currentPage: number\n  /** Total number of pages */\n  totalPages: number\n  /** Number of sibling pages to show on each side of current page */\n  siblingCount?: number\n  /** Number of boundary pages to show at start and end */\n  boundaryCount?: number\n  /** Callback when page changes */\n  onChange?: (page: number) => void\n  /** Show previous/next buttons */\n  showPrevNext?: boolean\n  /** Show first/last buttons */\n  showFirstLast?: boolean\n  /** Custom labels for navigation buttons */\n  labels?: {\n    previous?: string\n    next?: string\n    first?: string\n    last?: string\n  }\n  /** Size variant */\n  size?: 'sm' | 'md' | 'lg'\n  /** Additional CSS classes */\n  className?: string\n  /** Disabled state */\n  disabled?: boolean\n}\n\nconst DOTS = '...'\n\n// Helper function to generate pagination range\nfunction usePaginationRange(\n  currentPage: number,\n  totalPages: number,\n  siblingCount: number,\n  boundaryCount: number\n): (number | string)[] {\n  return useMemo(() => {\n    const totalPageNumbers = siblingCount * 2 + 5 + boundaryCount * 2\n\n    // If the number of pages is less than the page numbers we want to show\n    if (totalPageNumbers >= totalPages) {\n      return Array.from({ length: totalPages }, (_, i) => i + 1)\n    }\n\n    const leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n    const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\n    const shouldShowLeftDots = leftSiblingIndex > boundaryCount + 2\n    const shouldShowRightDots = rightSiblingIndex < totalPages - boundaryCount - 1\n\n    const firstPages = Array.from({ length: boundaryCount }, (_, i) => i + 1)\n    const lastPages = Array.from({ length: boundaryCount }, (_, i) => totalPages - boundaryCount + i + 1)\n\n    if (!shouldShowLeftDots && shouldShowRightDots) {\n      const leftItemCount = 3 + 2 * siblingCount\n      const leftRange = Array.from({ length: leftItemCount }, (_, i) => i + 1)\n      return [...leftRange, DOTS, ...lastPages]\n    }\n\n    if (shouldShowLeftDots && !shouldShowRightDots) {\n      const rightItemCount = 3 + 2 * siblingCount\n      const rightRange = Array.from(\n        { length: rightItemCount },\n        (_, i) => totalPages - rightItemCount + i + 1\n      )\n      return [...firstPages, DOTS, ...rightRange]\n    }\n\n    if (shouldShowLeftDots && shouldShowRightDots) {\n      const middleRange = Array.from(\n        { length: rightSiblingIndex - leftSiblingIndex + 1 },\n        (_, i) => leftSiblingIndex + i\n      )\n      return [...firstPages, DOTS, ...middleRange, DOTS, ...lastPages]\n    }\n\n    return []\n  }, [currentPage, totalPages, siblingCount, boundaryCount])\n}\n\n/**\n * Pagination component for navigating through pages of content.\n * Features a brutalist design with bold styling and clear visual feedback.\n */\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n  (\n    {\n      currentPage,\n      totalPages,\n      siblingCount = 1,\n      boundaryCount = 1,\n      onChange,\n      showPrevNext = true,\n      showFirstLast = false,\n      labels = {\n        previous: 'Previous',\n        next: 'Next',\n        first: 'First',\n        last: 'Last'\n      },\n      size = 'md',\n      className,\n      style,\n      disabled = false,\n      ...props\n    },\n    ref\n  ) => {\n    const paginationRange = usePaginationRange(currentPage, totalPages, siblingCount, boundaryCount)\n\n    const handleClick = (page: number) => {\n      if (!disabled && onChange && page !== currentPage && page >= 1 && page <= totalPages) {\n        onChange(page)\n      }\n    }\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.pagination,\n        styles[size],\n        disabled && styles.disabled\n      )\n    })\n\n    if (totalPages <= 1) {\n      return null\n    }\n\n    return (\n      <nav\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        aria-label=\"Pagination Navigation\"\n        {...props}\n      >\n        <ul className={styles.list}>\n          {/* First button */}\n          {showFirstLast && (\n            <li>\n              <button\n                className={clsx(styles.item, styles.nav)}\n                onClick={() => handleClick(1)}\n                disabled={disabled || currentPage === 1}\n                aria-label={labels.first}\n                type=\"button\"\n              >\n                <span className={styles.navIcon}>«</span>\n                <span className={styles.navText}>{labels.first}</span>\n              </button>\n            </li>\n          )}\n\n          {/* Previous button */}\n          {showPrevNext && (\n            <li>\n              <button\n                className={clsx(styles.item, styles.nav)}\n                onClick={() => handleClick(currentPage - 1)}\n                disabled={disabled || currentPage === 1}\n                aria-label={labels.previous}\n                type=\"button\"\n              >\n                <span className={styles.navIcon}>‹</span>\n                <span className={styles.navText}>{labels.previous}</span>\n              </button>\n            </li>\n          )}\n\n          {/* Page numbers */}\n          {paginationRange.map((pageNumber, index) => {\n            if (pageNumber === DOTS) {\n              return (\n                <li key={`dots-${index}`}>\n                  <span className={clsx(styles.item, styles.dots)}>...</span>\n                </li>\n              )\n            }\n\n            return (\n              <li key={pageNumber}>\n                <button\n                  className={clsx(\n                    styles.item,\n                    styles.page,\n                    pageNumber === currentPage && styles.active\n                  )}\n                  onClick={() => handleClick(pageNumber as number)}\n                  disabled={disabled}\n                  aria-label={`Go to page ${pageNumber}`}\n                  aria-current={pageNumber === currentPage ? 'page' : undefined}\n                  type=\"button\"\n                >\n                  {pageNumber}\n                </button>\n              </li>\n            )\n          })}\n\n          {/* Next button */}\n          {showPrevNext && (\n            <li>\n              <button\n                className={clsx(styles.item, styles.nav)}\n                onClick={() => handleClick(currentPage + 1)}\n                disabled={disabled || currentPage === totalPages}\n                aria-label={labels.next}\n                type=\"button\"\n              >\n                <span className={styles.navText}>{labels.next}</span>\n                <span className={styles.navIcon}>›</span>\n              </button>\n            </li>\n          )}\n\n          {/* Last button */}\n          {showFirstLast && (\n            <li>\n              <button\n                className={clsx(styles.item, styles.nav)}\n                onClick={() => handleClick(totalPages)}\n                disabled={disabled || currentPage === totalPages}\n                aria-label={labels.last}\n                type=\"button\"\n              >\n                <span className={styles.navText}>{labels.last}</span>\n                <span className={styles.navIcon}>»</span>\n              </button>\n            </li>\n          )}\n        </ul>\n      </nav>\n    )\n  }\n)\n\nPagination.displayName = 'Pagination'","/**\n * @module ContextMenu\n * @description A context menu component that appears on right-click. Supports nested menus, keyboard navigation, and customizable items with icons and shortcuts.\n */\n\nimport React, { createContext, useContext, useState, useRef, useEffect, useCallback, forwardRef, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './ContextMenu.module.css'\n\n// Context for managing context menu state\ninterface ContextMenuContextValue {\n  isOpen: boolean\n  position: { x: number; y: number } | null\n  onOpen: (e: React.MouseEvent) => void\n  onClose: () => void\n  onKeepOpen?: () => void\n  size?: 'sm' | 'md' | 'lg'\n  variant?: 'default' | 'brutal' | 'dark'\n}\n\nconst ContextMenuContext = createContext<ContextMenuContextValue | undefined>(undefined)\n\nfunction useContextMenu() {\n  const context = useContext(ContextMenuContext)\n  if (!context) {\n    throw new Error('ContextMenu components must be used within ContextMenu')\n  }\n  return context\n}\n\n/**\n * Props for the ContextMenu component\n */\nexport interface ContextMenuProps {\n  /**\n   * The trigger and content elements for the context menu\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the context menu\n   */\n  style?: CSSProperties\n  \n  /**\n   * The size variant of the context menu\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * The visual style variant of the context menu\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'dark'\n  \n  /**\n   * Callback fired when the menu opens or closes\n   */\n  onOpenChange?: (open: boolean) => void\n}\n\n/**\n * A context menu that appears on right-click.\n * Provides a flexible structure for building context-sensitive menus with keyboard navigation.\n * \n * @example\n * ```tsx\n * <ContextMenu>\n *   <ContextMenu.Trigger asChild>\n *     <div>Right-click me</div>\n *   </ContextMenu.Trigger>\n *   <ContextMenu.Content>\n *     <ContextMenu.Item onSelect={() => console.log('Edit')}>\n *       Edit\n *     </ContextMenu.Item>\n *     <ContextMenu.Separator />\n *     <ContextMenu.Item destructive>Delete</ContextMenu.Item>\n *   </ContextMenu.Content>\n * </ContextMenu>\n * ```\n */\nconst ContextMenu = forwardRef<HTMLDivElement, ContextMenuProps>(\n  ({ children, className, style, size = 'md', variant = 'default', onOpenChange }, ref) => {\n    const [isOpen, setIsOpen] = useState(false)\n    const [position, setPosition] = useState<{ x: number; y: number } | null>(null)\n\n    const onOpen = useCallback((e: React.MouseEvent) => {\n      e.preventDefault()\n      e.stopPropagation()\n      \n      setPosition({ x: e.clientX, y: e.clientY })\n      setIsOpen(true)\n      onOpenChange?.(true)\n      \n      // Lock body scroll\n      document.body.style.overflow = 'hidden'\n      document.body.style.userSelect = 'none'\n    }, [onOpenChange])\n\n    const onClose = useCallback(() => {\n      setIsOpen(false)\n      setPosition(null)\n      onOpenChange?.(false)\n      \n      // Restore body scroll\n      document.body.style.overflow = ''\n      document.body.style.userSelect = ''\n    }, [onOpenChange])\n\n    // Close on escape key\n    useEffect(() => {\n      const handleKeyDown = (e: KeyboardEvent) => {\n        if (e.key === 'Escape' && isOpen) {\n          onClose()\n        }\n      }\n\n      if (isOpen) {\n        document.addEventListener('keydown', handleKeyDown)\n        return () => document.removeEventListener('keydown', handleKeyDown)\n      }\n    }, [isOpen, onClose])\n    \n    // Cleanup on unmount\n    useEffect(() => {\n      return () => {\n        if (isOpen) {\n          document.body.style.overflow = ''\n          document.body.style.userSelect = ''\n        }\n      }\n    }, [isOpen])\n\n    const contextValue: ContextMenuContextValue = {\n      isOpen,\n      position,\n      onOpen,\n      onClose,\n      size,\n      variant\n    }\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.root\n    })\n\n    return (\n      <ContextMenuContext.Provider value={contextValue}>\n        <div ref={ref} className={processedClassName} style={processedStyle}>\n          {children}\n        </div>\n      </ContextMenuContext.Provider>\n    )\n  }\n)\n\n/**\n * Props for the ContextMenu.Trigger component\n */\nexport interface ContextMenuTriggerProps {\n  /**\n   * The element that triggers the context menu on right-click\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the trigger\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether to render as a child element instead of wrapping in a div\n   * @default false\n   */\n  asChild?: boolean\n}\n\n/**\n * The trigger area for the context menu.\n * Activates the menu on right-click (context menu event).\n */\nconst ContextMenuTrigger = forwardRef<HTMLDivElement, ContextMenuTriggerProps>(\n  ({ children, className, style, asChild = false }, ref) => {\n    const { onOpen } = useContextMenu()\n    \n    // Process utility classes - must be called before any returns\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.trigger\n    })\n\n    if (asChild && React.isValidElement(children)) {\n      return React.cloneElement(children as React.ReactElement<{ onContextMenu?: (e: React.MouseEvent) => void; ref?: React.Ref<HTMLElement> }>, {\n        onContextMenu: onOpen,\n        ref\n      })\n    }\n\n    return (\n      <div \n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onContextMenu={onOpen}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the ContextMenu.Content component\n */\nexport interface ContextMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {\n  /**\n   * Menu items and other content\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * How to align the menu relative to the trigger\n   * @default 'start'\n   */\n  align?: 'start' | 'center' | 'end'\n  \n  /**\n   * Distance in pixels from the trigger\n   * @default 5\n   */\n  sideOffset?: number\n  \n  /**\n   * Offset along the alignment axis\n   * @default 0\n   */\n  alignOffset?: number\n  \n  /**\n   * Minimum distance from viewport edges\n   * @default 8\n   */\n  collisionPadding?: number\n  \n  /**\n   * Whether to adjust position to stay in viewport\n   * @default true\n   */\n  avoidCollisions?: boolean\n  \n  /**\n   * Container element for the portal\n   */\n  container?: HTMLElement | null\n  \n  /**\n   * Override the size from the root component\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Override the variant from the root component\n   */\n  variant?: 'default' | 'brutal' | 'dark'\n}\n\n/**\n * The content area of the context menu.\n * Rendered in a portal with automatic positioning and collision detection.\n */\nconst ContextMenuContent = forwardRef<HTMLDivElement, ContextMenuContentProps>(\n  ({ \n    children, \n    className, \n    align = 'start',\n    sideOffset = 5,\n    alignOffset = 0,\n    collisionPadding = 8,\n    avoidCollisions = true,\n    container,\n    size: sizeProp,\n    variant: variantProp,\n    ...rest\n  }, ref) => {\n    const { isOpen, position, onClose, size: contextSize, variant: contextVariant } = useContextMenu()\n    const size = sizeProp || contextSize\n    const variant = variantProp || contextVariant\n    const contentRef = useRef<HTMLDivElement>(null)\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style: rest.style,\n      componentClasses: styles.content\n    })\n\n    // Define ref callback outside of conditionals\n    const refCallback = useCallback((node: HTMLDivElement | null) => {\n      if (contentRef.current !== node) {\n        (contentRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n      }\n      if (typeof ref === 'function') {\n        ref(node)\n      } else if (ref) {\n        (ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n      }\n    }, [ref])\n\n    // No need for click-outside detection since we have backdrop\n\n    // Calculate position with collision detection\n    const [adjustedPosition, setAdjustedPosition] = useState(position)\n\n    useEffect(() => {\n      if (!position || !contentRef.current || !avoidCollisions) {\n        setAdjustedPosition(position)\n        return\n      }\n\n      const rect = contentRef.current.getBoundingClientRect()\n      const viewportWidth = window.innerWidth\n      const viewportHeight = window.innerHeight\n\n      let x = position.x + sideOffset\n      let y = position.y + sideOffset\n\n      // Adjust horizontal position\n      if (x + rect.width > viewportWidth - collisionPadding) {\n        x = position.x - rect.width - sideOffset\n      }\n      if (x < collisionPadding) {\n        x = collisionPadding\n      }\n\n      // Adjust vertical position\n      if (y + rect.height > viewportHeight - collisionPadding) {\n        y = position.y - rect.height - sideOffset\n      }\n      if (y < collisionPadding) {\n        y = collisionPadding\n      }\n\n      // Apply alignment offset\n      switch (align) {\n        case 'center':\n          x = position.x - rect.width / 2\n          break\n        case 'end':\n          x = position.x - rect.width\n          break\n      }\n\n      x += alignOffset\n\n      setAdjustedPosition({ x, y })\n    }, [position, align, alignOffset, sideOffset, collisionPadding, avoidCollisions])\n\n    if (!isOpen || !adjustedPosition) return null\n\n    const content = (\n      <>\n        {/* Backdrop to capture clicks and prevent interaction */}\n        <div \n          className={styles.backdrop}\n          onClick={onClose}\n          onContextMenu={(e) => e.preventDefault()}\n          style={{\n            position: 'fixed',\n            inset: 0,\n            zIndex: 9998,\n            cursor: 'default',\n            pointerEvents: 'auto'\n          }}\n        />\n        <div\n          ref={refCallback}\n          className={processedClassName}\n          data-size={size}\n          data-variant={variant}\n          style={{\n            position: 'fixed',\n            left: `${adjustedPosition.x}px`,\n            top: `${adjustedPosition.y}px`,\n            zIndex: 9999,\n            ...processedStyle\n          }}\n          role=\"menu\"\n          aria-orientation=\"vertical\"\n          onMouseEnter={rest.onMouseEnter}\n          onMouseLeave={rest.onMouseLeave}\n        >\n          {children}\n        </div>\n      </>\n    )\n\n    return createPortal(content, container || document.body)\n  }\n)\n\n/**\n * Props for the ContextMenu.Item component\n */\nexport interface ContextMenuItemProps {\n  /**\n   * The content of the menu item\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the menu item\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether the item is disabled and cannot be selected\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Whether the item represents a destructive action (shown in red)\n   * @default false\n   */\n  destructive?: boolean\n  \n  /**\n   * Callback fired when the item is selected\n   */\n  onSelect?: (e: React.MouseEvent) => void\n  \n  /**\n   * Whether to close the menu when this item is selected\n   * @default true\n   */\n  closeOnSelect?: boolean\n  \n  /**\n   * Icon to display before the item text\n   */\n  icon?: React.ReactNode\n  \n  /**\n   * Keyboard shortcut to display\n   */\n  shortcut?: string\n  \n  /**\n   * Whether to show a checkmark (for checked items)\n   */\n  checked?: boolean\n  \n  /**\n   * Whether to show a dot indicator\n   */\n  dotted?: boolean\n}\n\n/**\n * Individual menu item within the context menu.\n * Supports icons, shortcuts, and various states.\n */\nconst ContextMenuItem = forwardRef<HTMLDivElement, ContextMenuItemProps>(\n  ({ children, className, style, disabled = false, destructive = false, onSelect, closeOnSelect = true, icon, shortcut, checked, dotted }, ref) => {\n    const { onClose } = useContextMenu()\n    const [isHighlighted, setIsHighlighted] = useState(false)\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.item,\n        disabled && styles.itemDisabled,\n        destructive && styles.itemDestructive\n      )\n    })\n\n    const handleClick = (e: React.MouseEvent) => {\n      // Context menu item clicked\n      if (disabled) {\n        e.preventDefault()\n        return\n      }\n      \n      e.stopPropagation() // Prevent backdrop from closing\n      onSelect?.(e)\n      \n      if (closeOnSelect && !e.defaultPrevented) {\n        onClose()\n      }\n    }\n\n    const handleKeyDown = (e: React.KeyboardEvent) => {\n      if (disabled) return\n      \n      if (e.key === 'Enter' || e.key === ' ') {\n        e.preventDefault()\n        handleClick(e as unknown as React.MouseEvent)\n      }\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"menuitem\"\n        tabIndex={disabled ? -1 : 0}\n        aria-disabled={disabled}\n        aria-checked={checked}\n        data-highlighted={isHighlighted}\n        data-disabled={disabled}\n        data-destructive={destructive}\n        onClick={handleClick}\n        onKeyDown={handleKeyDown}\n        onMouseEnter={() => setIsHighlighted(true)}\n        onMouseLeave={() => setIsHighlighted(false)}\n      >\n        {(checked || dotted) && (\n          <span className={styles.indicator}>\n            {checked ? '✓' : '•'}\n          </span>\n        )}\n        {icon && <span className={styles.icon}>{icon}</span>}\n        <span className={styles.itemText}>{children}</span>\n        {shortcut && <span className={styles.shortcut}>{shortcut}</span>}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the ContextMenu.Separator component\n */\nexport interface ContextMenuSeparatorProps {\n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the separator\n   */\n  style?: CSSProperties\n}\n\n/**\n * Visual separator between menu items or groups.\n */\nconst ContextMenuSeparator = forwardRef<HTMLDivElement, ContextMenuSeparatorProps>(\n  ({ className, style }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.separator\n    })\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"separator\"\n        aria-orientation=\"horizontal\"\n      />\n    )\n  }\n)\n\n/**\n * Props for the ContextMenu.Label component\n */\nexport interface ContextMenuLabelProps {\n  /**\n   * The label text content\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the label\n   */\n  style?: CSSProperties\n}\n\n/**\n * Label for grouping menu items.\n * Non-interactive and used for organizational purposes.\n */\nconst ContextMenuLabel = forwardRef<HTMLDivElement, ContextMenuLabelProps>(\n  ({ children, className, style }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.label\n    })\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"presentation\"\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the ContextMenu.Sub component\n */\nexport interface ContextMenuSubProps {\n  /**\n   * The trigger and content for the submenu\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the sub menu\n   */\n  style?: CSSProperties\n  \n  /**\n   * Controlled open state\n   */\n  open?: boolean\n  \n  /**\n   * Callback fired when the submenu opens or closes\n   */\n  onOpenChange?: (open: boolean) => void\n}\n\n/**\n * Container for nested submenus.\n * Manages the open state and positioning of submenu content.\n */\nconst ContextMenuSub = forwardRef<HTMLDivElement, ContextMenuSubProps>(\n  ({ children, className, style, open: controlledOpen, onOpenChange }, ref) => {\n    const parentContext = useContextMenu()\n    const [internalOpen, setInternalOpen] = useState(false)\n    const [position, setPosition] = useState<{ x: number; y: number } | null>(null)\n    const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\n    const hoverTimeoutRef = useRef<NodeJS.Timeout>()\n    const closeTimeoutRef = useRef<NodeJS.Timeout>()\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: undefined // No default classes for Sub\n    })\n\n    const handleOpenChange = (newOpen: boolean) => {\n      if (controlledOpen === undefined) {\n        setInternalOpen(newOpen)\n      }\n      onOpenChange?.(newOpen)\n    }\n\n    const handleOpen = (e: React.MouseEvent) => {\n      clearTimeout(closeTimeoutRef.current)\n      const element = e.currentTarget as HTMLElement\n      hoverTimeoutRef.current = setTimeout(() => {\n        const rect = element.getBoundingClientRect()\n        setPosition({ x: rect.right - 4, y: rect.top - 4 })\n        handleOpenChange(true)\n      }, 100)\n    }\n\n    const handleKeepOpen = () => {\n      // Just clear the close timeout without repositioning\n      clearTimeout(closeTimeoutRef.current)\n    }\n\n    const handleClose = () => {\n      clearTimeout(hoverTimeoutRef.current)\n      closeTimeoutRef.current = setTimeout(() => {\n        handleOpenChange(false)\n      }, 300)\n    }\n\n    useEffect(() => {\n      return () => {\n        clearTimeout(hoverTimeoutRef.current)\n        clearTimeout(closeTimeoutRef.current)\n      }\n    }, [])\n\n    return (\n      <ContextMenuContext.Provider value={{\n        isOpen,\n        position,\n        onOpen: handleOpen,\n        onClose: handleClose,\n        onKeepOpen: handleKeepOpen,\n        size: parentContext.size,\n        variant: parentContext.variant\n      }}>\n        <div \n          ref={ref} \n          className={processedClassName}\n          style={processedStyle}\n          onMouseEnter={() => {\n            clearTimeout(closeTimeoutRef.current)\n            clearTimeout(hoverTimeoutRef.current)\n          }}\n          onMouseLeave={() => handleClose()}\n        >\n          {children}\n        </div>\n      </ContextMenuContext.Provider>\n    )\n  }\n)\n\n/**\n * Props for the ContextMenu.SubTrigger component\n */\nexport interface ContextMenuSubTriggerProps {\n  /**\n   * The trigger content for the submenu\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom styles to apply to the sub trigger\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether the submenu trigger is disabled\n   * @default false\n   */\n  disabled?: boolean\n  \n  /**\n   * Icon to display before the trigger text\n   */\n  icon?: React.ReactNode\n}\n\n/**\n * Trigger item that opens a submenu on hover.\n * Displays an arrow indicator to show it has a submenu.\n */\nconst ContextMenuSubTrigger = forwardRef<HTMLDivElement, ContextMenuSubTriggerProps>(\n  ({ children, className, style, disabled = false, icon }, ref) => {\n    const { onOpen, onClose, isOpen } = useContextMenu()\n    const [isHighlighted, setIsHighlighted] = useState(false)\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.subTrigger,\n        disabled && styles.itemDisabled,\n        isOpen && styles.subTriggerOpen\n      )\n    })\n\n    const handleMouseEnter = (e: React.MouseEvent) => {\n      setIsHighlighted(true)\n      if (!disabled) {\n        onOpen(e)\n      }\n    }\n\n    const handleMouseLeave = () => {\n      setIsHighlighted(false)\n      // Don't close immediately - let the Sub component handle the timing\n      onClose()\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"menuitem\"\n        aria-haspopup=\"menu\"\n        aria-expanded={isOpen}\n        aria-disabled={disabled}\n        data-highlighted={isHighlighted}\n        data-disabled={disabled}\n        data-state={isOpen ? 'open' : 'closed'}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n      >\n        {icon && <span className={styles.icon}>{icon}</span>}\n        <span className={styles.itemText}>{children}</span>\n        <span className={styles.subTriggerIcon} aria-hidden=\"true\">▶</span>\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the ContextMenu.SubContent component\n */\nexport interface ContextMenuSubContentProps extends Omit<ContextMenuContentProps, 'container'> {\n  /**\n   * Callback when mouse enters the submenu\n   */\n  onMouseEnter?: () => void\n  \n  /**\n   * Callback when mouse leaves the submenu\n   */\n  onMouseLeave?: () => void\n}\n\n/**\n * Content area for a submenu.\n * Positioned relative to its trigger with automatic collision detection.\n */\nconst ContextMenuSubContent = forwardRef<HTMLDivElement, ContextMenuSubContentProps>(\n  ({ className, onMouseEnter, onMouseLeave, ...props }, ref) => {\n    const context = useContextMenu()\n    const elementRef = useRef<HTMLDivElement>(null)\n    \n    const subRefCallback = useCallback((node: HTMLDivElement | null) => {\n      if (elementRef.current !== node) {\n        (elementRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n      }\n      if (typeof ref === 'function') {\n        ref(node)\n      } else if (ref) {\n        (ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n      }\n    }, [ref])\n    \n    const handleMouseEnter = () => {\n      // When hovering over sub-content, keep it open by calling onKeepOpen \n      // which will clear any pending close timeout without repositioning\n      context.onKeepOpen?.()\n      onMouseEnter?.()\n    }\n\n    const handleMouseLeave = () => {\n      // Start the close timer when leaving the sub-content\n      onMouseLeave?.()\n      context.onClose()\n    }\n\n    // Sub content uses the position from the parent context\n    return (\n      <ContextMenuContent \n        {...props} \n        ref={subRefCallback}\n        className={clsx(styles.subContent, className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n      />\n    )\n  }\n)\n\n// Set display names\nContextMenu.displayName = 'ContextMenu'\nContextMenuTrigger.displayName = 'ContextMenu.Trigger'\nContextMenuContent.displayName = 'ContextMenu.Content'\nContextMenuItem.displayName = 'ContextMenu.Item'\nContextMenuSeparator.displayName = 'ContextMenu.Separator'\nContextMenuLabel.displayName = 'ContextMenu.Label'\nContextMenuSub.displayName = 'ContextMenu.Sub'\nContextMenuSubTrigger.displayName = 'ContextMenu.SubTrigger'\nContextMenuSubContent.displayName = 'ContextMenu.SubContent'\n\n// Compound component pattern\nexport const ContextMenuNamespace = Object.assign(ContextMenu, {\n  Trigger: ContextMenuTrigger,\n  Content: ContextMenuContent,\n  Item: ContextMenuItem,\n  Separator: ContextMenuSeparator,\n  Label: ContextMenuLabel,\n  Sub: ContextMenuSub,\n  SubTrigger: ContextMenuSubTrigger,\n  SubContent: ContextMenuSubContent\n})\n\nexport { ContextMenuNamespace as ContextMenu }","/**\n * @module Sheet\n * @description A slide-out panel component that displays content in an overlay from any side of the screen. Features backdrop blur, focus management, and smooth animations with multiple size variants.\n */\n\nimport React, { createContext, useContext, useState, useEffect, useCallback, useRef, CSSProperties } from 'react'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Sheet.module.css'\n\n/**\n * Props for the Sheet component\n */\ninterface SheetProps {\n  /**\n   * Whether the sheet is currently open (controlled mode)\n   */\n  open?: boolean\n  \n  /**\n   * Whether the sheet should be open by default (uncontrolled mode)\n   * @default false\n   */\n  defaultOpen?: boolean\n  \n  /**\n   * Callback function called when the sheet open state changes\n   */\n  onOpenChange?: (open: boolean) => void\n  \n  /**\n   * Content to render within the sheet provider\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the sheet container\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Context value interface for Sheet components\n */\ninterface SheetContextValue {\n  open: boolean\n  setOpen: (open: boolean) => void\n}\n\nconst SheetContext = createContext<SheetContextValue | null>(null)\n\nconst useSheet = () => {\n  const context = useContext(SheetContext)\n  if (!context) {\n    throw new Error('Sheet components must be used within a Sheet')\n  }\n  return context\n}\n\nconst Sheet = React.forwardRef<HTMLDivElement, SheetProps>(\n  ({ \n    open, \n    defaultOpen = false, \n    onOpenChange, \n    className, \n    style,\n    children, \n    ...props \n  }, ref) => {\n    const [isOpen, setIsOpen] = useState(open ?? defaultOpen)\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style\n    })\n\n    // Handle controlled state\n    useEffect(() => {\n      if (open !== undefined) {\n        setIsOpen(open)\n      }\n    }, [open])\n\n    const handleOpenChange = useCallback((newOpen: boolean) => {\n      setIsOpen(newOpen)\n      onOpenChange?.(newOpen)\n    }, [onOpenChange])\n\n    const contextValue: SheetContextValue = {\n      open: isOpen,\n      setOpen: handleOpenChange\n    }\n\n    return (\n      <SheetContext.Provider value={contextValue}>\n        <div ref={ref} className={processedClassName} style={processedStyle} {...props}>\n          {children}\n        </div>\n      </SheetContext.Provider>\n    )\n  }\n)\n\n/**\n * Props for the SheetTrigger component\n */\ninterface SheetTriggerProps {\n  /**\n   * Content to render inside the trigger button\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the trigger\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether to use the child element as the trigger instead of a button\n   * @default false\n   */\n  asChild?: boolean\n}\n\nconst SheetTrigger = React.forwardRef<HTMLButtonElement, SheetTriggerProps>(\n  ({ children, className, style, asChild = false, ...props }, ref) => {\n    const { setOpen } = useSheet()\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.trigger\n    })\n\n    if (asChild) {\n      return React.cloneElement(children as React.ReactElement, {\n        onClick: () => setOpen(true),\n        className: processedClassName,\n        style: processedStyle,\n        ...props\n      })\n    }\n\n    return (\n      <button\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={() => setOpen(true)}\n        {...props}\n      >\n        {children}\n      </button>\n    )\n  }\n)\n\n/**\n * Props for the SheetContent component\n */\ninterface SheetContentProps {\n  /**\n   * Content to render inside the sheet\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the sheet content\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n  \n  /**\n   * Side of the screen from which the sheet should slide out\n   * @default 'right'\n   */\n  side?: 'top' | 'bottom' | 'left' | 'right'\n  \n  /**\n   * Size variant for the sheet\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n  \n  /**\n   * Visual style variant for the sheet\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'outline'\n  \n  /**\n   * Whether to show the backdrop overlay\n   * @default true\n   */\n  showOverlay?: boolean\n  \n  /**\n   * Whether clicking the overlay should close the sheet\n   * @default true\n   */\n  closeOnOverlayClick?: boolean\n  \n  /**\n   * Whether pressing Escape should close the sheet\n   * @default true\n   */\n  closeOnEscape?: boolean\n  \n  /**\n   * Custom container element to portal the sheet into\n   */\n  container?: HTMLElement | null\n  \n  /**\n   * Callback when the Escape key is pressed\n   */\n  onEscapeKeyDown?: (event: KeyboardEvent) => void\n  \n  /**\n   * Callback when a pointer down event occurs outside the sheet\n   */\n  onPointerDownOutside?: (event: PointerEvent) => void\n  \n  /**\n   * Callback when any interaction occurs outside the sheet\n   */\n  onInteractOutside?: (event: Event) => void\n  \n  /**\n   * Callback when the sheet opens and focus is applied\n   */\n  onOpenAutoFocus?: (event: Event) => void\n  \n  /**\n   * Callback when the sheet closes and focus is restored\n   */\n  onCloseAutoFocus?: (event: Event) => void\n}\n\nconst SheetContent = React.forwardRef<HTMLDivElement, SheetContentProps>(\n  ({ \n    children, \n    className,\n    style,\n    side = 'right',\n    size = 'md',\n    variant = 'default',\n    showOverlay = true,\n    closeOnOverlayClick = true,\n    closeOnEscape = true,\n    container,\n    onEscapeKeyDown,\n    onPointerDownOutside,\n    onInteractOutside,\n    onOpenAutoFocus,\n    onCloseAutoFocus,\n    ...props \n  }, ref) => {\n    const { open, setOpen } = useSheet()\n    const contentRef = useRef<HTMLDivElement>(null)\n    const overlayRef = useRef<HTMLDivElement>(null)\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.content,\n        styles[`side-${side}`],\n        styles[`size-${size}`],\n        styles[`variant-${variant}`]\n      )\n    })\n\n    const sheetRefCallback = useCallback((node: HTMLDivElement | null) => {\n      if (contentRef && contentRef.current !== node) {\n        (contentRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n      }\n      if (typeof ref === 'function') {\n        ref(node)\n      } else if (ref) {\n        (ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n      }\n    }, [ref])\n\n    // Handle escape key\n    useEffect(() => {\n      if (!open || !closeOnEscape) return\n\n      const handleKeyDown = (event: KeyboardEvent) => {\n        if (event.key === 'Escape') {\n          onEscapeKeyDown?.(event)\n          if (!event.defaultPrevented) {\n            setOpen(false)\n          }\n        }\n      }\n\n      document.addEventListener('keydown', handleKeyDown)\n      return () => document.removeEventListener('keydown', handleKeyDown)\n    }, [open, closeOnEscape, onEscapeKeyDown, setOpen])\n\n    // Handle body scroll lock\n    useEffect(() => {\n      if (!open) return\n\n      const originalStyle = window.getComputedStyle(document.body).overflow\n      document.body.style.overflow = 'hidden'\n      document.body.style.userSelect = 'none'\n\n      return () => {\n        document.body.style.overflow = originalStyle\n        document.body.style.userSelect = ''\n      }\n    }, [open])\n\n    // Handle focus management\n    useEffect(() => {\n      if (!open) return\n\n      const previousActiveElement = document.activeElement as HTMLElement\n      const content = contentRef.current\n\n      if (content) {\n        // Focus the content or first focusable element\n        const focusableElements = content.querySelectorAll(\n          'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n        )\n        const firstFocusable = focusableElements[0] as HTMLElement\n        \n        if (firstFocusable) {\n          firstFocusable.focus()\n        } else {\n          content.focus()\n        }\n\n        const focusEvent = new Event('focus')\n        onOpenAutoFocus?.(focusEvent)\n      }\n\n      return () => {\n        if (previousActiveElement) {\n          previousActiveElement.focus()\n          const focusEvent = new Event('focus')\n          onCloseAutoFocus?.(focusEvent)\n        }\n      }\n    }, [open, onOpenAutoFocus, onCloseAutoFocus])\n\n    // Handle outside clicks\n    useEffect(() => {\n      if (!open || !closeOnOverlayClick) return\n\n      const handlePointerDown = (event: PointerEvent) => {\n        const target = event.target as Node\n        const overlay = overlayRef.current\n        const content = contentRef.current\n\n        if (overlay && content && target) {\n          // Check if click was on overlay but not on content\n          if (overlay.contains(target) && !content.contains(target)) {\n            onPointerDownOutside?.(event)\n            onInteractOutside?.(event)\n            \n            if (!event.defaultPrevented) {\n              setOpen(false)\n            }\n          }\n        }\n      }\n\n      document.addEventListener('pointerdown', handlePointerDown)\n      return () => document.removeEventListener('pointerdown', handlePointerDown)\n    }, [open, closeOnOverlayClick, onPointerDownOutside, onInteractOutside, setOpen])\n\n    if (!open) return null\n\n    const content = (\n      <>\n        {showOverlay && (\n          <div\n            ref={overlayRef}\n            className={styles.overlay}\n            data-side={side}\n            data-variant={variant}\n          />\n        )}\n        <div\n          ref={sheetRefCallback}\n          className={processedClassName}\n          style={processedStyle}\n          role=\"dialog\"\n          aria-modal=\"true\"\n          tabIndex={-1}\n          data-side={side}\n          data-size={size}\n          data-variant={variant}\n          data-state={open ? 'open' : 'closed'}\n          {...props}\n        >\n          {children}\n        </div>\n      </>\n    )\n\n    return createPortal(content, container || document.body)\n  }\n)\n\n/**\n * Props for the SheetHeader component\n */\ninterface SheetHeaderProps {\n  /**\n   * Content to render in the sheet header\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the header\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nconst SheetHeader = React.forwardRef<HTMLDivElement, SheetHeaderProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.header\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the SheetTitle component\n */\ninterface SheetTitleProps {\n  /**\n   * Title text or content\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the title\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nconst SheetTitle = React.forwardRef<HTMLHeadingElement, SheetTitleProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.title\n    })\n\n    return (\n      <h2\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </h2>\n    )\n  }\n)\n\n/**\n * Props for the SheetDescription component\n */\ninterface SheetDescriptionProps {\n  /**\n   * Description text or content\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the description\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nconst SheetDescription = React.forwardRef<HTMLParagraphElement, SheetDescriptionProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.description\n    })\n\n    return (\n      <p\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </p>\n    )\n  }\n)\n\n/**\n * Props for the SheetFooter component\n */\ninterface SheetFooterProps {\n  /**\n   * Content to render in the sheet footer\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the footer\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\nconst SheetFooter = React.forwardRef<HTMLDivElement, SheetFooterProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.footer\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the SheetClose component\n */\ninterface SheetCloseProps {\n  /**\n   * Content to render inside the close button\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS classes to apply to the close button\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n  \n  /**\n   * Whether to use the child element as the close trigger instead of a button\n   * @default false\n   */\n  asChild?: boolean\n}\n\nconst SheetClose = React.forwardRef<HTMLButtonElement, SheetCloseProps>(\n  ({ children, className, style, asChild = false, ...props }, ref) => {\n    const { setOpen } = useSheet()\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.close\n    })\n\n    if (asChild) {\n      return React.cloneElement(children as React.ReactElement, {\n        onClick: () => setOpen(false),\n        className: processedClassName,\n        style: processedStyle,\n        ...props\n      })\n    }\n\n    return (\n      <button\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        onClick={() => setOpen(false)}\n        aria-label=\"Close sheet\"\n        {...props}\n      >\n        {children}\n      </button>\n    )\n  }\n)\n\n// Set display names\nSheet.displayName = 'Sheet'\nSheetTrigger.displayName = 'Sheet.Trigger'\nSheetContent.displayName = 'Sheet.Content'\nSheetHeader.displayName = 'Sheet.Header'\nSheetTitle.displayName = 'Sheet.Title'\nSheetDescription.displayName = 'Sheet.Description'\nSheetFooter.displayName = 'Sheet.Footer'\nSheetClose.displayName = 'Sheet.Close'\n\n// Compound component pattern\nexport const SheetNamespace = Object.assign(Sheet, {\n  Trigger: SheetTrigger,\n  Content: SheetContent,\n  Header: SheetHeader,\n  Title: SheetTitle,\n  Description: SheetDescription,\n  Footer: SheetFooter,\n  Close: SheetClose\n})\n\nexport { SheetNamespace as Sheet }\nexport type {\n  SheetProps,\n  SheetTriggerProps,\n  SheetContentProps,\n  SheetHeaderProps,\n  SheetTitleProps,\n  SheetDescriptionProps,\n  SheetFooterProps,\n  SheetCloseProps\n}","/**\n * @module Carousel\n * @description A fully-featured carousel component with support for touch gestures, keyboard navigation, and auto-play. Includes compound components for flexible composition.\n */\n\nimport React, { createContext, useContext, useState, useEffect, useCallback, useRef, forwardRef, CSSProperties } from 'react'\nimport clsx from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Carousel.module.css'\n\n/**\n * Props for the Carousel component\n */\ninterface CarouselProps extends React.HTMLAttributes<HTMLDivElement> {\n  /**\n   * The orientation of the carousel slides\n   * @default 'horizontal'\n   */\n  orientation?: 'horizontal' | 'vertical'\n  \n  /**\n   * Whether the carousel should automatically advance slides\n   * @default false\n   */\n  autoPlay?: boolean\n  \n  /**\n   * The interval between auto-play transitions in milliseconds\n   * @default 3000\n   */\n  autoPlayInterval?: number\n  \n  /**\n   * Whether the carousel should loop back to the beginning after the last slide\n   * @default false\n   */\n  loop?: boolean\n  \n  /**\n   * The controlled current slide index\n   */\n  value?: number\n  \n  /**\n   * The default slide index when uncontrolled\n   * @default 0\n   */\n  defaultValue?: number\n  \n  /**\n   * Callback fired when the slide index changes\n   */\n  onValueChange?: (value: number) => void\n  \n  /**\n   * The size variant of the carousel\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * The visual style variant of the carousel\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'outline'\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\ninterface CarouselContextValue {\n  currentIndex: number\n  setCurrentIndex: (index: number) => void\n  orientation: 'horizontal' | 'vertical'\n  totalItems: number\n  setTotalItems: (count: number) => void\n  loop: boolean\n  autoPlay: boolean\n  autoPlayInterval: number\n  size?: 'sm' | 'md' | 'lg'\n  variant?: 'default' | 'brutal' | 'outline'\n}\n\nconst CarouselContext = createContext<CarouselContextValue | null>(null)\n\nconst useCarousel = () => {\n  const context = useContext(CarouselContext)\n  if (!context) {\n    throw new Error('Carousel components must be used within a Carousel')\n  }\n  return context\n}\n\n/**\n * A fully-featured carousel component for displaying content in a slideshow format.\n * Supports keyboard navigation, touch gestures, and auto-play functionality.\n * \n * @example\n * ```tsx\n * <Carousel autoPlay loop>\n *   <Carousel.Content>\n *     <img src=\"slide1.jpg\" alt=\"Slide 1\" />\n *     <img src=\"slide2.jpg\" alt=\"Slide 2\" />\n *     <img src=\"slide3.jpg\" alt=\"Slide 3\" />\n *   </Carousel.Content>\n *   <Carousel.Controls>\n *     <Carousel.Previous />\n *     <Carousel.Next />\n *   </Carousel.Controls>\n *   <Carousel.Indicators />\n * </Carousel>\n * ```\n */\nconst Carousel = forwardRef<HTMLDivElement, CarouselProps>(\n  ({ \n    orientation = 'horizontal',\n    autoPlay = false,\n    autoPlayInterval = 3000,\n    loop = false,\n    value,\n    defaultValue = 0,\n    onValueChange,\n    size = 'md',\n    variant = 'default',\n    children,\n    className,\n    style,\n    ...props\n  }, ref) => {\n    const [currentIndex, setCurrentIndexState] = useState(value ?? defaultValue)\n    const [totalItems, setTotalItems] = useState(0)\n\n    const setCurrentIndex = useCallback((index: number) => {\n      if (loop) {\n        const newIndex = (index + totalItems) % totalItems\n        setCurrentIndexState(newIndex)\n        onValueChange?.(newIndex)\n      } else {\n        const newIndex = Math.max(0, Math.min(index, totalItems - 1))\n        setCurrentIndexState(newIndex)\n        onValueChange?.(newIndex)\n      }\n    }, [loop, totalItems, onValueChange])\n\n    useEffect(() => {\n      if (value !== undefined) {\n        setCurrentIndexState(value)\n      }\n    }, [value])\n\n    useEffect(() => {\n      if (autoPlay && totalItems > 0) {\n        const interval = setInterval(() => {\n          setCurrentIndex(currentIndex + 1)\n        }, autoPlayInterval)\n        return () => clearInterval(interval)\n      }\n    }, [autoPlay, autoPlayInterval, currentIndex, setCurrentIndex, totalItems])\n\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.carousel,\n        styles[`carousel-${size}`],\n        styles[`carousel-${variant}`]\n      )\n    })\n\n    return (\n      <CarouselContext.Provider\n        value={{\n          currentIndex,\n          setCurrentIndex,\n          orientation,\n          totalItems,\n          setTotalItems,\n          loop,\n          autoPlay,\n          autoPlayInterval,\n          size,\n          variant\n        }}\n      >\n        <div\n          ref={ref}\n          className={processedClassName}\n          style={processedStyle}\n          data-orientation={orientation}\n          data-size={size}\n          data-variant={variant}\n          {...props}\n        >\n          {children}\n        </div>\n      </CarouselContext.Provider>\n    )\n  }\n)\n\n/**\n * Props for the Carousel.Content component\n */\ninterface CarouselContentProps {\n  /**\n   * The slide items to display in the carousel\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n}\n\n/**\n * Container for the carousel slides.\n * Automatically tracks and transitions between child elements.\n */\nconst CarouselContent = forwardRef<HTMLDivElement, CarouselContentProps>(\n  ({ children, className }, ref) => {\n    const { currentIndex, orientation, setTotalItems } = useCarousel()\n    const contentRef = useRef<HTMLDivElement>(null)\n\n    useEffect(() => {\n      const items = React.Children.count(children)\n      setTotalItems(items)\n    }, [children, setTotalItems])\n\n    const transform = orientation === 'horizontal' \n      ? `translateX(-${currentIndex * 100}%)`\n      : `translateY(-${currentIndex * 100}%)`\n\n    return (\n      <div \n        ref={ref}\n        className={clsx(styles.carouselContent, className)}\n      >\n        <div\n          ref={contentRef}\n          className={styles.carouselTrack}\n          style={{ transform }}\n        >\n          {React.Children.map(children, (child, index) => (\n            <div\n              className={styles.carouselItem}\n              data-active={index === currentIndex}\n              key={index}\n            >\n              {child}\n            </div>\n          ))}\n        </div>\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Carousel.Controls component\n */\ninterface CarouselControlsProps {\n  /**\n   * The control elements (typically Previous and Next buttons)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n}\n\n/**\n * Container for carousel navigation controls.\n * Typically contains Previous and Next buttons.\n */\nconst CarouselControls = forwardRef<HTMLDivElement, CarouselControlsProps>(\n  ({ children, className }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={clsx(styles.carouselControls, className)}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Carousel.Previous component\n */\ninterface CarouselPreviousProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n  /**\n   * Custom content for the button (defaults to arrow icon)\n   */\n  children?: React.ReactNode\n}\n\n/**\n * Previous slide navigation button.\n * Automatically disabled when at the first slide unless loop is enabled.\n */\nconst CarouselPrevious = forwardRef<HTMLButtonElement, CarouselPreviousProps>(\n  ({ children, className, onClick, ...props }, ref) => {\n    const { currentIndex, setCurrentIndex, loop } = useCarousel()\n    const isDisabled = !loop && currentIndex === 0\n\n    const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n      onClick?.(e)\n      if (!e.defaultPrevented) {\n        setCurrentIndex(currentIndex - 1)\n      }\n    }\n\n    return (\n      <button\n        ref={ref}\n        type=\"button\"\n        className={clsx(styles.carouselButton, styles.carouselPrevious, className)}\n        onClick={handleClick}\n        disabled={isDisabled}\n        aria-label=\"Previous slide\"\n        {...props}\n      >\n        {children || (\n          <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\">\n            <polyline points=\"15 18 9 12 15 6\" />\n          </svg>\n        )}\n      </button>\n    )\n  }\n)\n\n/**\n * Props for the Carousel.Next component\n */\ninterface CarouselNextProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n  /**\n   * Custom content for the button (defaults to arrow icon)\n   */\n  children?: React.ReactNode\n}\n\n/**\n * Next slide navigation button.\n * Automatically disabled when at the last slide unless loop is enabled.\n */\nconst CarouselNext = forwardRef<HTMLButtonElement, CarouselNextProps>(\n  ({ children, className, onClick, ...props }, ref) => {\n    const { currentIndex, setCurrentIndex, totalItems, loop } = useCarousel()\n    const isDisabled = !loop && currentIndex === totalItems - 1\n\n    const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n      onClick?.(e)\n      if (!e.defaultPrevented) {\n        setCurrentIndex(currentIndex + 1)\n      }\n    }\n\n    return (\n      <button\n        ref={ref}\n        type=\"button\"\n        className={clsx(styles.carouselButton, styles.carouselNext, className)}\n        onClick={handleClick}\n        disabled={isDisabled}\n        aria-label=\"Next slide\"\n        {...props}\n      >\n        {children || (\n          <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\">\n            <polyline points=\"9 18 15 12 9 6\" />\n          </svg>\n        )}\n      </button>\n    )\n  }\n)\n\n/**\n * Props for the Carousel.Indicators component\n */\ninterface CarouselIndicatorsProps {\n  /**\n   * Custom indicator elements (defaults to dot indicators)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n}\n\n/**\n * Slide position indicators for the carousel.\n * Displays dots by default that can be clicked to navigate to specific slides.\n */\nconst CarouselIndicators = forwardRef<HTMLDivElement, CarouselIndicatorsProps>(\n  ({ children, className }, ref) => {\n    const { currentIndex, setCurrentIndex, totalItems } = useCarousel()\n\n    if (children) {\n      return (\n        <div\n          ref={ref}\n          className={clsx(styles.carouselIndicators, className)}\n        >\n          {children}\n        </div>\n      )\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={clsx(styles.carouselIndicators, className)}\n      >\n        {Array.from({ length: totalItems }).map((_, index) => (\n          <button\n            key={index}\n            type=\"button\"\n            className={clsx(\n              styles.carouselIndicator,\n              index === currentIndex && styles.carouselIndicatorActive\n            )}\n            onClick={() => setCurrentIndex(index)}\n            aria-label={`Go to slide ${index + 1}`}\n          />\n        ))}\n      </div>\n    )\n  }\n)\n\n// Component display names\nCarousel.displayName = 'Carousel'\nCarouselContent.displayName = 'CarouselContent'\nCarouselControls.displayName = 'CarouselControls'\nCarouselPrevious.displayName = 'CarouselPrevious'\nCarouselNext.displayName = 'CarouselNext'\nCarouselIndicators.displayName = 'CarouselIndicators'\n\n// Compound component pattern\nconst CarouselComponent = Object.assign(Carousel, {\n  Content: CarouselContent,\n  Controls: CarouselControls,\n  Previous: CarouselPrevious,\n  Next: CarouselNext,\n  Indicators: CarouselIndicators\n})\n\nexport { CarouselComponent as Carousel }\nexport type {\n  CarouselProps,\n  CarouselContentProps,\n  CarouselControlsProps,\n  CarouselPreviousProps,\n  CarouselNextProps,\n  CarouselIndicatorsProps\n}","/**\n * @module Chart\n * @description A comprehensive chart container component that provides structure and styling for data visualizations. Includes compound components for headers, legends, and content areas.\n */\n\nimport React, { forwardRef, createContext, useContext, CSSProperties } from 'react'\nimport clsx from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './Chart.module.css'\n\n/**\n * Props for the Chart component\n */\ninterface ChartProps extends React.HTMLAttributes<HTMLDivElement> {\n  /**\n   * The visual style variant of the chart\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'outline'\n  \n  /**\n   * The size of the chart\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Whether to show a border around the chart\n   * @default true\n   */\n  showBorder?: boolean\n  \n  /**\n   * Whether to apply the brutalist shadow effect\n   * @default true\n   */\n  showShadow?: boolean\n  \n  /**\n   * Whether to display a background grid in the chart content area\n   * @default true\n   */\n  showGrid?: boolean\n  \n  /**\n   * The aspect ratio of the chart (CSS aspect-ratio value)\n   * @default '16/9'\n   */\n  aspectRatio?: string\n  \n  /**\n   * Fixed height for the chart (overrides aspectRatio)\n   */\n  height?: number | string\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\ninterface ChartContextValue {\n  variant?: 'default' | 'brutal' | 'outline'\n  size?: 'sm' | 'md' | 'lg'\n  showGrid?: boolean\n}\n\nconst ChartContext = createContext<ChartContextValue | null>(null)\n\nconst useChart = () => {\n  const context = useContext(ChartContext)\n  if (!context) {\n    throw new Error('Chart components must be used within a Chart')\n  }\n  return context\n}\n\n/**\n * A container component for data visualizations.\n * Provides consistent styling and structure for charts with support for headers, legends, and content areas.\n * \n * @example\n * ```tsx\n * <Chart variant=\"brutal\" size=\"lg\">\n *   <Chart.Header>\n *     <Chart.Title>Sales Overview</Chart.Title>\n *     <Chart.Subtitle>Q4 2023</Chart.Subtitle>\n *   </Chart.Header>\n *   <Chart.Content>\n *     <MyChartComponent data={data} />\n *   </Chart.Content>\n *   <Chart.Legend position=\"bottom\">\n *     <LegendItems />\n *   </Chart.Legend>\n * </Chart>\n * ```\n */\nconst Chart = forwardRef<HTMLDivElement, ChartProps>(\n  ({ \n    variant = 'default',\n    size = 'md',\n    showBorder = true,\n    showShadow = true,\n    showGrid = true,\n    aspectRatio = '16/9',\n    height,\n    children,\n    className,\n    style,\n    ...props\n  }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.chart,\n        styles[`chart-${size}`],\n        styles[`chart-${variant}`],\n        !showBorder && styles.noBorder,\n        !showShadow && styles.noShadow\n      )\n    })\n    \n    const chartStyle: React.CSSProperties = {\n      ...processedStyle,\n      height: height,\n      aspectRatio: !height ? aspectRatio : undefined\n    }\n\n    return (\n      <ChartContext.Provider value={{ variant, size, showGrid }}>\n        <div\n          ref={ref}\n          className={processedClassName}\n          style={chartStyle}\n          data-variant={variant}\n          data-size={size}\n          role=\"img\"\n          aria-label=\"Chart container\"\n          {...props}\n        >\n          {children}\n        </div>\n      </ChartContext.Provider>\n    )\n  }\n)\n\n/**\n * Props for the Chart.Header component\n */\ninterface ChartHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n  /**\n   * The header content (typically Chart.Title and Chart.Subtitle)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Header section of the Chart component.\n * Contains the chart title and optional subtitle.\n */\nconst ChartHeader = forwardRef<HTMLDivElement, ChartHeaderProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.chartHeader\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Chart.Title component\n */\ninterface ChartTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n  /**\n   * The title text for the chart\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Title component for the chart.\n * Renders as an h3 element with appropriate styling.\n */\nconst ChartTitle = forwardRef<HTMLHeadingElement, ChartTitleProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.chartTitle\n    })\n    \n    return (\n      <h3\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </h3>\n    )\n  }\n)\n\n/**\n * Props for the Chart.Subtitle component\n */\ninterface ChartSubtitleProps extends React.HTMLAttributes<HTMLParagraphElement> {\n  /**\n   * The subtitle text for the chart\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Subtitle component for the chart.\n * Provides additional context or time period information.\n */\nconst ChartSubtitle = forwardRef<HTMLParagraphElement, ChartSubtitleProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.chartSubtitle\n    })\n    \n    return (\n      <p\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </p>\n    )\n  }\n)\n\n/**\n * Props for the Chart.Content component\n */\ninterface ChartContentProps extends React.HTMLAttributes<HTMLDivElement> {\n  /**\n   * The chart visualization content (e.g., SVG, canvas, or third-party chart library)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Main content area of the Chart component.\n * Contains the actual chart visualization with optional grid background.\n */\nconst ChartContent = forwardRef<HTMLDivElement, ChartContentProps>(\n  ({ children, className, style, ...props }, ref) => {\n    const { showGrid } = useChart()\n    \n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.chartContent\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        <div className={styles.chartWrapper}>\n          {showGrid && <div className={styles.chartGrid} aria-hidden=\"true\" />}\n          <div className={styles.chartContainer}>\n            {children}\n          </div>\n        </div>\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Chart.Legend component\n */\ninterface ChartLegendProps extends React.HTMLAttributes<HTMLDivElement> {\n  /**\n   * The position of the legend relative to the chart content\n   * @default 'bottom'\n   */\n  position?: 'top' | 'bottom' | 'left' | 'right'\n  \n  /**\n   * The legend items to display\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Legend component for the chart.\n * Displays color/pattern mappings for data series.\n */\nconst ChartLegend = forwardRef<HTMLDivElement, ChartLegendProps>(\n  ({ position = 'bottom', children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.chartLegend,\n        styles[`legend-${position}`]\n      )\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        role=\"group\"\n        aria-label=\"Chart legend\"\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n/**\n * Props for the Chart.Footer component\n */\ninterface ChartFooterProps extends React.HTMLAttributes<HTMLDivElement> {\n  /**\n   * The footer content (typically source information or notes)\n   */\n  children?: React.ReactNode\n  \n  /**\n   * Additional CSS class name for styling\n   */\n  className?: string\n  \n  /**\n   * Custom inline styles (supports utility classes)\n   */\n  style?: CSSProperties\n}\n\n/**\n * Footer section of the Chart component.\n * Typically contains data source information or additional notes.\n */\nconst ChartFooter = forwardRef<HTMLDivElement, ChartFooterProps>(\n  ({ children, className, style, ...props }, ref) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.chartFooter\n    })\n    \n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n// Component display names\nChart.displayName = 'Chart'\nChartHeader.displayName = 'ChartHeader'\nChartTitle.displayName = 'ChartTitle'\nChartSubtitle.displayName = 'ChartSubtitle'\nChartContent.displayName = 'ChartContent'\nChartLegend.displayName = 'ChartLegend'\nChartFooter.displayName = 'ChartFooter'\n\n// Compound component pattern\nconst ChartComponent = Object.assign(Chart, {\n  Header: ChartHeader,\n  Title: ChartTitle,\n  Subtitle: ChartSubtitle,\n  Content: ChartContent,\n  Legend: ChartLegend,\n  Footer: ChartFooter\n})\n\nexport { ChartComponent as Chart }\nexport type {\n  ChartProps,\n  ChartHeaderProps,\n  ChartTitleProps,\n  ChartSubtitleProps,\n  ChartContentProps,\n  ChartLegendProps,\n  ChartFooterProps\n}","/**\n * @module ScrollArea\n * @description A custom scrollable area component with brutalist-styled scrollbars. Provides consistent cross-browser scrolling with customizable scrollbar appearance.\n */\n\nimport React, { forwardRef, useRef, useState, useEffect, useCallback } from 'react'\nimport { clsx } from 'clsx'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\nimport styles from './ScrollArea.module.css'\n\nexport interface ScrollAreaProps {\n  /**\n   * The content to be scrolled\n   */\n  children: React.ReactNode\n  \n  /**\n   * Additional CSS classes\n   */\n  className?: string\n  \n  /**\n   * Height of the scroll area\n   */\n  height?: string | number\n  \n  /**\n   * Maximum height of the scroll area\n   */\n  maxHeight?: string | number\n  \n  /**\n   * Width of the scroll area\n   */\n  width?: string | number\n  \n  /**\n   * Whether to show horizontal scrollbar\n   * @default false\n   */\n  horizontal?: boolean\n  \n  /**\n   * Whether to show vertical scrollbar\n   * @default true\n   */\n  vertical?: boolean\n  \n  /**\n   * Scrollbar size variant\n   * @default 'md'\n   */\n  scrollbarSize?: 'sm' | 'md' | 'lg'\n  \n  /**\n   * Visual style variant\n   * @default 'default'\n   */\n  variant?: 'default' | 'minimal' | 'brutal'\n  \n  /**\n   * Whether to auto-hide scrollbars when not scrolling\n   * @default false\n   */\n  autoHide?: boolean\n  \n  /**\n   * Whether to show a border around the scroll area\n   * @default true\n   */\n  showBorder?: boolean\n  \n  /**\n   * Additional inline styles\n   */\n  style?: React.CSSProperties\n  \n  /**\n   * Callback when scroll position changes\n   */\n  onScroll?: (event: React.UIEvent<HTMLDivElement>) => void\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n  (\n    {\n      children,\n      className,\n      height,\n      maxHeight,\n      width,\n      horizontal = false,\n      vertical = true,\n      scrollbarSize = 'md',\n      variant = 'default',\n      autoHide = false,\n      showBorder = true,\n      style,\n      onScroll,\n      ...props\n    },\n    ref\n  ) => {\n    const scrollRef = useRef<HTMLDivElement>(null)\n    const [isScrolling, setIsScrolling] = useState(false)\n    const [showVerticalScrollbar, setShowVerticalScrollbar] = useState(false)\n    const [showHorizontalScrollbar, setShowHorizontalScrollbar] = useState(false)\n    const [verticalThumbHeight, setVerticalThumbHeight] = useState(0)\n    const [horizontalThumbWidth, setHorizontalThumbWidth] = useState(0)\n    const [verticalThumbTop, setVerticalThumbTop] = useState(0)\n    const [horizontalThumbLeft, setHorizontalThumbLeft] = useState(0)\n    \n    // Process utility classes for the container\n    const containerClasses = clsx(\n      styles.scrollArea,\n      styles[variant],\n      styles[`size-${scrollbarSize}`],\n      {\n        [styles.showBorder]: showBorder,\n        [styles.autoHide]: autoHide,\n        [styles.isScrolling]: isScrolling,\n      }\n    )\n    \n    // Process utility classes for the viewport (content area)\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: styles.viewport\n    })\n    \n    // Use useEffect to update external ref\n    useEffect(() => {\n      if (ref) {\n        if (typeof ref === 'function') {\n          ref(scrollRef.current)\n        } else if ('current' in ref) {\n          (ref as React.MutableRefObject<HTMLDivElement | null>).current = scrollRef.current\n        }\n      }\n    }, [ref])\n    \n    // Calculate scrollbar visibility and thumb sizes\n    const updateScrollbars = useCallback(() => {\n      if (!scrollRef.current) return\n      \n      const element = scrollRef.current\n      const { scrollHeight, clientHeight, scrollWidth, clientWidth, scrollTop, scrollLeft } = element\n      \n      // Vertical scrollbar\n      if (vertical) {\n        const hasVerticalScroll = scrollHeight > clientHeight\n        setShowVerticalScrollbar(hasVerticalScroll)\n        \n        if (hasVerticalScroll) {\n          const thumbHeight = Math.max(30, (clientHeight / scrollHeight) * clientHeight)\n          const maxThumbTop = clientHeight - thumbHeight\n          const thumbTop = (scrollTop / (scrollHeight - clientHeight)) * maxThumbTop\n          \n          setVerticalThumbHeight(thumbHeight)\n          setVerticalThumbTop(thumbTop)\n        }\n      }\n      \n      // Horizontal scrollbar\n      if (horizontal) {\n        const hasHorizontalScroll = scrollWidth > clientWidth\n        setShowHorizontalScrollbar(hasHorizontalScroll)\n        \n        if (hasHorizontalScroll) {\n          const thumbWidth = Math.max(30, (clientWidth / scrollWidth) * clientWidth)\n          const maxThumbLeft = clientWidth - thumbWidth\n          const thumbLeft = (scrollLeft / (scrollWidth - clientWidth)) * maxThumbLeft\n          \n          setHorizontalThumbWidth(thumbWidth)\n          setHorizontalThumbLeft(thumbLeft)\n        }\n      }\n    }, [vertical, horizontal])\n    \n    // Handle scroll\n    const handleScroll = (event: React.UIEvent<HTMLDivElement>) => {\n      updateScrollbars()\n      setIsScrolling(true)\n      onScroll?.(event)\n      \n      // Auto-hide scrollbars after delay\n      if (autoHide) {\n        setTimeout(() => {\n          setIsScrolling(false)\n        }, 1000)\n      }\n    }\n    \n    // Handle vertical scrollbar drag\n    const handleVerticalMouseDown = (e: React.MouseEvent) => {\n      e.preventDefault()\n      const startY = e.clientY\n      const startTop = verticalThumbTop\n      \n      const handleMouseMove = (e: MouseEvent) => {\n        if (!scrollRef.current) return\n        \n        const deltaY = e.clientY - startY\n        const element = scrollRef.current\n        const { scrollHeight, clientHeight } = element\n        const maxThumbTop = clientHeight - verticalThumbHeight\n        const newThumbTop = Math.max(0, Math.min(maxThumbTop, startTop + deltaY))\n        const scrollRatio = newThumbTop / maxThumbTop\n        \n        element.scrollTop = scrollRatio * (scrollHeight - clientHeight)\n      }\n      \n      const handleMouseUp = () => {\n        document.removeEventListener('mousemove', handleMouseMove)\n        document.removeEventListener('mouseup', handleMouseUp)\n      }\n      \n      document.addEventListener('mousemove', handleMouseMove)\n      document.addEventListener('mouseup', handleMouseUp)\n    }\n    \n    // Handle horizontal scrollbar drag\n    const handleHorizontalMouseDown = (e: React.MouseEvent) => {\n      e.preventDefault()\n      const startX = e.clientX\n      const startLeft = horizontalThumbLeft\n      \n      const handleMouseMove = (e: MouseEvent) => {\n        if (!scrollRef.current) return\n        \n        const deltaX = e.clientX - startX\n        const element = scrollRef.current\n        const { scrollWidth, clientWidth } = element\n        const maxThumbLeft = clientWidth - horizontalThumbWidth\n        const newThumbLeft = Math.max(0, Math.min(maxThumbLeft, startLeft + deltaX))\n        const scrollRatio = newThumbLeft / maxThumbLeft\n        \n        element.scrollLeft = scrollRatio * (scrollWidth - clientWidth)\n      }\n      \n      const handleMouseUp = () => {\n        document.removeEventListener('mousemove', handleMouseMove)\n        document.removeEventListener('mouseup', handleMouseUp)\n      }\n      \n      document.addEventListener('mousemove', handleMouseMove)\n      document.addEventListener('mouseup', handleMouseUp)\n    }\n    \n    // Initialize scrollbars\n    useEffect(() => {\n      updateScrollbars()\n      \n      // Add resize observer\n      if (scrollRef.current) {\n        const resizeObserver = new ResizeObserver(updateScrollbars)\n        resizeObserver.observe(scrollRef.current)\n        \n        return () => {\n          resizeObserver.disconnect()\n        }\n      }\n    }, [updateScrollbars])\n    \n    const scrollAreaStyle: React.CSSProperties = {\n      ...style,\n      height,\n      maxHeight,\n      width,\n    }\n    \n    return (\n      <div\n        className={containerClasses}\n        style={scrollAreaStyle}\n        {...props}\n      >\n        <div\n          ref={scrollRef}\n          className={clsx(styles.viewport, processedClassName)}\n          onScroll={handleScroll}\n          style={{\n            ...processedStyle,\n            overflowX: horizontal ? 'auto' : 'hidden',\n            overflowY: vertical ? 'auto' : 'hidden',\n          }}\n        >\n          {children}\n        </div>\n        \n        {/* Custom vertical scrollbar */}\n        {vertical && showVerticalScrollbar && (\n          <div className={clsx(styles.scrollbar, styles.vertical)}>\n            <div\n              className={styles.thumb}\n              style={{\n                height: verticalThumbHeight,\n                transform: `translateY(${verticalThumbTop}px)`,\n              }}\n              onMouseDown={handleVerticalMouseDown}\n            />\n          </div>\n        )}\n        \n        {/* Custom horizontal scrollbar */}\n        {horizontal && showHorizontalScrollbar && (\n          <div className={clsx(styles.scrollbar, styles.horizontal)}>\n            <div\n              className={styles.thumb}\n              style={{\n                width: horizontalThumbWidth,\n                transform: `translateX(${horizontalThumbLeft}px)`,\n              }}\n              onMouseDown={handleHorizontalMouseDown}\n            />\n          </div>\n        )}\n        \n        {/* Corner when both scrollbars are visible */}\n        {vertical && horizontal && showVerticalScrollbar && showHorizontalScrollbar && (\n          <div className={styles.corner} />\n        )}\n      </div>\n    )\n  }\n)\n\nScrollArea.displayName = 'ScrollArea'","/**\n * @module Wireframe\n * @description A brutalist wireframe component for building layouts with a sketchy, hand-drawn aesthetic. Perfect for prototyping and creating low-fidelity mockups with distinctive brutalist styling.\n */\n\nimport { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './Wireframe.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the Wireframe component\n */\nexport interface WireframeProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Visual variant of the wireframe\n   * @default 'box'\n   */\n  variant?: 'box' | 'dashed' | 'dotted' | 'sketch'\n  \n  /**\n   * The type of wireframe element\n   * @default 'container'\n   */\n  type?: 'container' | 'text' | 'image' | 'button' | 'input' | 'header' | 'nav' | 'content'\n  \n  /**\n   * Height of the wireframe element\n   * @default 'auto'\n   */\n  height?: 'auto' | 'sm' | 'md' | 'lg' | 'full' | string\n  \n  /**\n   * Whether to show a label inside the wireframe\n   * @default true\n   */\n  showLabel?: boolean\n  \n  /**\n   * Custom label text (defaults to the type)\n   */\n  label?: string\n  \n  /**\n   * Whether to add diagonal lines pattern\n   * @default false\n   */\n  hatched?: boolean\n  \n  /**\n   * Whether the wireframe should have interactive hover effects\n   * @default false\n   */\n  interactive?: boolean\n  \n  /**\n   * Padding size for the wireframe content\n   * @default 'md'\n   */\n  padding?: 'none' | 'sm' | 'md' | 'lg'\n  \n  /**\n   * Whether to make the wireframe scrollable\n   * @default false\n   */\n  scrollable?: boolean\n  \n  /**\n   * Scroll direction when scrollable is true\n   * @default 'vertical'\n   */\n  scrollDirection?: 'vertical' | 'horizontal' | 'both'\n}\n\n/**\n * Props for Wireframe.Group component\n */\nexport interface WireframeGroupProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * Direction of the group layout\n   * @default 'vertical'\n   */\n  direction?: 'horizontal' | 'vertical'\n  \n  /**\n   * Gap between wireframe items\n   * @default 'md'\n   */\n  gap?: 'sm' | 'md' | 'lg'\n}\n\n/**\n * A brutalist wireframe component for creating low-fidelity layouts and mockups.\n * Features hand-drawn aesthetics with various styles like sketchy borders, hatching patterns, and labels.\n * \n * @example\n * ```tsx\n * <Wireframe type=\"header\" height=\"sm\">\n *   <Wireframe.Group direction=\"horizontal\">\n *     <Wireframe type=\"image\" variant=\"sketch\" />\n *     <Wireframe type=\"nav\" variant=\"dashed\" />\n *   </Wireframe.Group>\n * </Wireframe>\n * ```\n */\nexport const Wireframe = forwardRef<HTMLDivElement, WireframeProps>(\n  (\n    {\n      variant = 'box',\n      type = 'container',\n      height = 'auto',\n      showLabel = true,\n      label,\n      hatched = false,\n      interactive = false,\n      padding = 'md',\n      scrollable = false,\n      scrollDirection = 'vertical',\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    // Process utility classes\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.wireframe,\n        styles[variant],\n        styles[`type-${type}`],\n        styles[`padding-${padding}`],\n        {\n          [styles.hatched]: hatched,\n          [styles.interactive]: interactive,\n          [styles[`height-${height}`]]: typeof height === 'string' && ['sm', 'md', 'lg', 'full'].includes(height),\n          [styles.scrollable]: scrollable,\n          [styles[`scroll-${scrollDirection}`]]: scrollable\n        }\n      )\n    })\n\n    const customHeight = !['auto', 'sm', 'md', 'lg', 'full'].includes(height) ? height : undefined\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={{\n          ...processedStyle,\n          ...(customHeight && { height: customHeight })\n        }}\n        data-wireframe-type={type}\n        {...props}\n      >\n        {showLabel && !children && (\n          <span className={styles.label}>{label || type.toUpperCase()}</span>\n        )}\n        {children}\n      </div>\n    )\n  }\n)\n\nWireframe.displayName = 'Wireframe'\n\n/**\n * Group component for organizing multiple wireframe elements\n */\nconst WireframeGroup = forwardRef<HTMLDivElement, WireframeGroupProps>(\n  (\n    {\n      direction = 'vertical',\n      gap = 'md',\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.group,\n        styles[`direction-${direction}`],\n        styles[`gap-${gap}`]\n      )\n    })\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={processedStyle}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nWireframeGroup.displayName = 'Wireframe.Group'\n\n// Attach Group as a static property\nexport const WireframeWithGroup = Object.assign(Wireframe, {\n  Group: WireframeGroup\n})","/**\n * @module ComicText\n * @description A bold, comic book-style text component with halftone dot pattern and brutalist aesthetics\n */\n\nimport React, { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './ComicText.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the ComicText component\n */\nexport interface ComicTextProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * The text content to display\n   */\n  children: string\n  \n  /**\n   * The size of the text in rem units\n   * @default 5\n   */\n  fontSize?: number\n  \n  /**\n   * The visual style variant\n   * @default 'default'\n   */\n  variant?: 'default' | 'brutal' | 'outline' | 'shadow'\n  \n  /**\n   * The color scheme\n   * @default 'yellow'\n   */\n  color?: 'yellow' | 'red' | 'blue' | 'green' | 'purple' | 'orange'\n  \n  /**\n   * The component element type\n   * @default 'div'\n   */\n  as?: 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span' | 'p'\n}\n\n/**\n * ComicText component for displaying bold, comic book-style text with brutalist design\n *\n * @example\n * ```tsx\n * <ComicText fontSize={6} color=\"red\">\n *   POW!\n * </ComicText>\n * ```\n */\nexport const ComicText = forwardRef<HTMLDivElement, ComicTextProps>(\n  ({ \n    children, \n    className, \n    style,\n    fontSize = 5,\n    variant = 'default',\n    color = 'yellow',\n    as: Component = 'div',\n    ...props \n  }, ref) => {\n    if (typeof children !== 'string') {\n      throw new Error('ComicText: children must be a string')\n    }\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.comicText,\n        styles[variant],\n        styles[color]\n      )\n    })\n\n    const finalStyle = {\n      ...processedStyle,\n      '--comic-font-size': `${fontSize}rem`,\n      '--comic-stroke-width': `${fontSize * 0.35}px`,\n      '--comic-shadow-offset': `${fontSize * 0.8}px`\n    } as React.CSSProperties\n\n    return (\n      <Component\n        ref={ref as any}\n        className={processedClassName}\n        style={finalStyle}\n        {...props}\n      >\n        {children}\n      </Component>\n    )\n  }\n)\n\nComicText.displayName = 'ComicText'\n\nexport default ComicText","/**\n * @module GlitchText\n * @description A glitchy, cyberpunk-style text component with digital distortion effects\n */\n\nimport { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './GlitchText.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the GlitchText component\n */\nexport interface GlitchTextProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * The text content to display\n   */\n  children: string\n  \n  /**\n   * The size of the text\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg' | 'xl'\n  \n  /**\n   * The glitch intensity\n   * @default 'medium'\n   */\n  intensity?: 'subtle' | 'medium' | 'extreme'\n  \n  /**\n   * The color scheme\n   * @default 'cyber'\n   */\n  color?: 'cyber' | 'vhs' | 'matrix' | 'corrupt' | 'neon'\n  \n  /**\n   * Whether to animate the glitch effect\n   * @default true\n   */\n  animated?: boolean\n  \n  /**\n   * The component element type\n   * @default 'div'\n   */\n  as?: 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span' | 'p'\n}\n\n/**\n * GlitchText component for displaying text with digital glitch effects\n *\n * @example\n * ```tsx\n * <GlitchText size=\"lg\" intensity=\"extreme\" color=\"cyber\">\n *   SYSTEM ERROR\n * </GlitchText>\n * ```\n */\nexport const GlitchText = forwardRef<HTMLDivElement, GlitchTextProps>(\n  ({ \n    children, \n    className, \n    style,\n    size = 'md',\n    intensity = 'medium',\n    color = 'cyber',\n    animated = true,\n    as: Component = 'div',\n    ...props \n  }, ref) => {\n    if (typeof children !== 'string') {\n      throw new Error('GlitchText: children must be a string')\n    }\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.glitchText,\n        styles[size],\n        styles[intensity],\n        styles[color],\n        animated && styles.animated\n      )\n    })\n\n    return (\n      <Component\n        ref={ref as any}\n        className={processedClassName}\n        style={processedStyle}\n        data-text={children}\n        {...props}\n      >\n        {children}\n      </Component>\n    )\n  }\n)\n\nGlitchText.displayName = 'GlitchText'\n\nexport default GlitchText","/**\n * @module StampText\n * @description A rubber stamp-style text component with ink bleed and distressed effects\n */\n\nimport { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './StampText.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the StampText component\n */\nexport interface StampTextProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * The text content to display\n   */\n  children: string\n  \n  /**\n   * The size of the stamp\n   * @default 'md'\n   */\n  size?: 'sm' | 'md' | 'lg' | 'xl'\n  \n  /**\n   * The stamp style variant\n   * @default 'approved'\n   */\n  variant?: 'approved' | 'rejected' | 'urgent' | 'classified' | 'draft' | 'void'\n  \n  /**\n   * The rotation angle of the stamp\n   * @default 'slight'\n   */\n  rotation?: 'none' | 'slight' | 'tilted' | 'heavy'\n  \n  /**\n   * The ink effect intensity\n   * @default 'normal'\n   */\n  ink?: 'light' | 'normal' | 'heavy' | 'worn'\n  \n  /**\n   * The component element type\n   * @default 'div'\n   */\n  as?: 'div' | 'span' | 'p'\n}\n\n/**\n * StampText component for displaying text with rubber stamp effects\n *\n * @example\n * ```tsx\n * <StampText size=\"lg\" variant=\"approved\" rotation=\"tilted\">\n *   APPROVED\n * </StampText>\n * ```\n */\nexport const StampText = forwardRef<HTMLDivElement, StampTextProps>(\n  ({ \n    children, \n    className, \n    style,\n    size = 'md',\n    variant = 'approved',\n    rotation = 'slight',\n    ink = 'normal',\n    as: Component = 'div',\n    ...props \n  }, ref) => {\n    if (typeof children !== 'string') {\n      throw new Error('StampText: children must be a string')\n    }\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.stampText,\n        styles[size],\n        styles[variant],\n        styles[rotation],\n        styles[ink]\n      )\n    })\n\n    return (\n      <Component\n        ref={ref as any}\n        className={processedClassName}\n        style={processedStyle}\n        data-text={children}\n        {...props}\n      >\n        <span className={styles.stampContent}>{children}</span>\n      </Component>\n    )\n  }\n)\n\nStampText.displayName = 'StampText'\n\nexport default StampText","/**\n * @module NoiseTexture\n * @description A brutalist noise texture background component using SVG filters\n */\n\nimport React, { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './NoiseTexture.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the NoiseTexture component\n */\nexport interface NoiseTextureProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * The intensity of the noise\n   * @default 'medium'\n   */\n  intensity?: 'subtle' | 'medium' | 'heavy' | 'extreme'\n  \n  /**\n   * The type of noise pattern\n   * @default 'static'\n   */\n  variant?: 'static' | 'grainy' | 'rough' | 'organic'\n  \n  /**\n   * The blend mode for the noise\n   * @default 'multiply'\n   */\n  blendMode?: 'multiply' | 'screen' | 'overlay' | 'soft-light'\n  \n  /**\n   * The base color of the noise\n   * @default 'monochrome'\n   */\n  color?: 'monochrome' | 'warm' | 'cool' | 'rainbow'\n  \n  /**\n   * Whether to animate the noise\n   * @default false\n   */\n  animated?: boolean\n  \n  /**\n   * The opacity of the noise layer\n   * @default 0.5\n   */\n  opacity?: number\n  \n  /**\n   * Additional className\n   */\n  className?: string\n}\n\n/**\n * NoiseTexture component for creating brutalist noise backgrounds\n *\n * @example\n * ```tsx\n * <NoiseTexture \n *   intensity=\"heavy\" \n *   variant=\"grainy\" \n *   color=\"warm\"\n *   animated\n * />\n * ```\n */\nexport const NoiseTexture = forwardRef<HTMLDivElement, NoiseTextureProps>(\n  ({ \n    intensity = 'medium',\n    variant = 'static',\n    blendMode = 'multiply',\n    color = 'monochrome',\n    animated = false,\n    opacity = 0.5,\n    className,\n    style,\n    children,\n    ...props \n  }, ref) => {\n    const id = `noise-${Math.random().toString(36).substr(2, 9)}`\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.noiseTexture,\n        styles[intensity],\n        styles[variant],\n        styles[color],\n        animated && styles.animated\n      )\n    })\n\n    const noiseScale = {\n      subtle: 0.003,\n      medium: 0.008,\n      heavy: 0.015,\n      extreme: 0.03\n    }[intensity]\n\n    const turbulenceType = {\n      static: 'fractalNoise',\n      grainy: 'fractalNoise',\n      rough: 'turbulence',\n      organic: 'turbulence'\n    }[variant] as 'fractalNoise' | 'turbulence'\n\n    const numOctaves = {\n      static: 1,\n      grainy: 3,\n      rough: 2,\n      organic: 4\n    }[variant]\n\n    return (\n      <div\n        ref={ref}\n        className={processedClassName}\n        style={{\n          ...processedStyle,\n          '--noise-opacity': opacity,\n          '--noise-blend-mode': blendMode\n        } as React.CSSProperties}\n        {...props}\n      >\n        <svg className={styles.noiseSvg} aria-hidden=\"true\">\n          <defs>\n            <filter id={id}>\n              <feTurbulence\n                type={turbulenceType}\n                baseFrequency={noiseScale}\n                numOctaves={numOctaves}\n                seed={animated ? undefined : 5}\n              >\n                {animated && (\n                  <animate\n                    attributeName=\"seed\"\n                    from=\"0\"\n                    to=\"100\"\n                    dur=\"0.1s\"\n                    repeatCount=\"indefinite\"\n                  />\n                )}\n              </feTurbulence>\n              \n              {color === 'warm' && (\n                <feColorMatrix\n                  type=\"matrix\"\n                  values=\"1 0 0 0 0.2\n                          0 0.8 0 0 0.1\n                          0 0 0.6 0 0\n                          0 0 0 1 0\"\n                />\n              )}\n              \n              {color === 'cool' && (\n                <feColorMatrix\n                  type=\"matrix\"\n                  values=\"0.6 0 0 0 0\n                          0 0.8 0 0 0.1\n                          0 0 1 0 0.2\n                          0 0 0 1 0\"\n                />\n              )}\n              \n              {color === 'rainbow' && (\n                <feColorMatrix\n                  type=\"hueRotate\"\n                  values=\"0\"\n                >\n                  {animated && (\n                    <animate\n                      attributeName=\"values\"\n                      from=\"0\"\n                      to=\"360\"\n                      dur=\"3s\"\n                      repeatCount=\"indefinite\"\n                    />\n                  )}\n                </feColorMatrix>\n              )}\n              \n              <feComponentTransfer>\n                <feFuncA type=\"discrete\" tableValues=\"0 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 1\" />\n              </feComponentTransfer>\n            </filter>\n          </defs>\n          <rect\n            width=\"100%\"\n            height=\"100%\"\n            filter={`url(#${id})`}\n            className={styles.noiseRect}\n          />\n        </svg>\n        {children}\n      </div>\n    )\n  }\n)\n\nNoiseTexture.displayName = 'NoiseTexture'\n\nexport default NoiseTexture","/**\n * @module HalftonePattern\n * @description A halftone dot pattern background component inspired by comic book and print media\n */\n\nimport React, { forwardRef, SVGProps, useEffect, useState } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './HalftonePattern.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the HalftonePattern component\n */\nexport interface HalftonePatternProps extends SVGProps<SVGSVGElement> {\n  /**\n   * The spacing between dots\n   * @default 20\n   */\n  dotSpacing?: number\n  \n  /**\n   * The maximum radius of dots\n   * @default 8\n   */\n  maxRadius?: number\n  \n  /**\n   * The minimum radius of dots\n   * @default 1\n   */\n  minRadius?: number\n  \n  /**\n   * The pattern type\n   * @default 'radial'\n   */\n  variant?: 'radial' | 'linear' | 'noise' | 'wave'\n  \n  /**\n   * The color scheme\n   * @default 'black'\n   */\n  color?: 'black' | 'white' | 'red' | 'blue' | 'yellow' | 'cyan'\n  \n  /**\n   * Whether to animate the pattern\n   * @default false\n   */\n  animated?: boolean\n  \n  /**\n   * The angle for linear gradient (in degrees)\n   * @default 45\n   */\n  angle?: number\n  \n  /**\n   * Additional className\n   */\n  className?: string\n}\n\n/**\n * HalftonePattern component for creating comic book style halftone backgrounds\n *\n * @example\n * ```tsx\n * <HalftonePattern \n *   dotSpacing={15} \n *   maxRadius={6} \n *   variant=\"wave\" \n *   color=\"cyan\"\n *   animated\n * />\n * ```\n */\nexport const HalftonePattern = forwardRef<SVGSVGElement, HalftonePatternProps>(\n  ({ \n    dotSpacing = 20,\n    maxRadius = 8,\n    minRadius = 1,\n    variant = 'radial',\n    color = 'black',\n    animated = false,\n    angle = 45,\n    className,\n    style,\n    ...props \n  }, ref) => {\n    const [svgElement, setSvgElement] = useState<SVGSVGElement | null>(null)\n    const [dimensions, setDimensions] = useState({ width: 0, height: 0 })\n\n    useEffect(() => {\n      const updateDimensions = () => {\n        if (svgElement) {\n          const { width, height } = svgElement.getBoundingClientRect()\n          setDimensions({ width, height })\n        }\n      }\n\n      updateDimensions()\n      window.addEventListener('resize', updateDimensions)\n      return () => window.removeEventListener('resize', updateDimensions)\n    }, [svgElement])\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.halftonePattern,\n        styles[color],\n        animated && styles.animated\n      )\n    })\n\n    const cols = Math.ceil(dimensions.width / dotSpacing)\n    const rows = Math.ceil(dimensions.height / dotSpacing)\n    const centerX = dimensions.width / 2\n    const centerY = dimensions.height / 2\n\n    const calculateRadius = (x: number, y: number): number => {\n      switch (variant) {\n        case 'radial': {\n          const distance = Math.sqrt(\n            Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2)\n          )\n          const maxDistance = Math.sqrt(\n            Math.pow(centerX, 2) + Math.pow(centerY, 2)\n          )\n          const normalized = 1 - (distance / maxDistance)\n          return minRadius + (maxRadius - minRadius) * normalized\n        }\n        case 'linear': {\n          const radians = (angle * Math.PI) / 180\n          const dotProduct = x * Math.cos(radians) + y * Math.sin(radians)\n          const maxDot = dimensions.width * Math.abs(Math.cos(radians)) + \n                        dimensions.height * Math.abs(Math.sin(radians))\n          const normalized = dotProduct / maxDot\n          return minRadius + (maxRadius - minRadius) * normalized\n        }\n        case 'noise': {\n          // Pseudo-random based on position\n          const hash = (x * 12.9898 + y * 78.233) * 43758.5453\n          const random = hash - Math.floor(hash)\n          return minRadius + (maxRadius - minRadius) * random\n        }\n        case 'wave': {\n          const waveX = Math.sin((x / dimensions.width) * Math.PI * 4)\n          const waveY = Math.cos((y / dimensions.height) * Math.PI * 3)\n          const combined = (waveX + waveY + 2) / 4\n          return minRadius + (maxRadius - minRadius) * combined\n        }\n        default:\n          return maxRadius / 2\n      }\n    }\n\n    const dots = []\n    for (let row = 0; row < rows; row++) {\n      for (let col = 0; col < cols; col++) {\n        const x = col * dotSpacing + dotSpacing / 2\n        const y = row * dotSpacing + dotSpacing / 2\n        const radius = calculateRadius(x, y)\n        \n        if (radius > 0.5) {\n          dots.push({\n            x,\n            y,\n            radius,\n            delay: animated ? (row + col) * 0.01 : 0\n          })\n        }\n      }\n    }\n\n    return (\n      <svg\n        ref={(node) => {\n          setSvgElement(node)\n          if (ref) {\n            if (typeof ref === 'function') {\n              ref(node)\n            } else {\n              (ref as React.MutableRefObject<SVGSVGElement | null>).current = node\n            }\n          }\n        }}\n        className={processedClassName}\n        style={processedStyle}\n        aria-hidden=\"true\"\n        {...props}\n      >\n        <g className={styles.dots}>\n          {dots.map((dot) => (\n            <circle\n              key={`${dot.x}-${dot.y}`}\n              cx={dot.x}\n              cy={dot.y}\n              r={dot.radius}\n              fill=\"currentColor\"\n              className={styles.dot}\n              style={{\n                animationDelay: `${dot.delay}s`\n              }}\n            />\n          ))}\n        </g>\n      </svg>\n    )\n  }\n)\n\nHalftonePattern.displayName = 'HalftonePattern'\n\nexport default HalftonePattern","/**\n * @module BrutalGrid\n * @description A brutalist grid pattern background component with thick lines and bold aesthetics\n */\n\nimport React, { forwardRef, SVGProps, useEffect, useState } from 'react'\nimport { clsx } from 'clsx'\nimport styles from './BrutalGrid.module.css'\nimport { useResponsiveUtilities } from '../hooks/useResponsiveUtilities'\n\n/**\n * Props for the BrutalGrid component\n */\nexport interface BrutalGridProps extends SVGProps<SVGSVGElement> {\n  /**\n   * The width of grid cells\n   * @default 40\n   */\n  cellWidth?: number\n  \n  /**\n   * The height of grid cells\n   * @default 40\n   */\n  cellHeight?: number\n  \n  /**\n   * The thickness of grid lines\n   * @default 3\n   */\n  strokeWidth?: number\n  \n  /**\n   * The pattern style\n   * @default 'solid'\n   */\n  variant?: 'solid' | 'dashed' | 'double' | 'offset'\n  \n  /**\n   * The color scheme\n   * @default 'black'\n   */\n  color?: 'black' | 'white' | 'accent' | 'red' | 'blue' | 'yellow'\n  \n  /**\n   * Whether to animate the grid\n   * @default false\n   */\n  animated?: boolean\n  \n  /**\n   * Additional className\n   */\n  className?: string\n}\n\n/**\n * BrutalGrid component for creating brutalist grid pattern backgrounds\n *\n * @example\n * ```tsx\n * <BrutalGrid \n *   cellWidth={50} \n *   strokeWidth={4} \n *   variant=\"dashed\" \n *   color=\"accent\"\n * />\n * ```\n */\nexport const BrutalGrid = forwardRef<SVGSVGElement, BrutalGridProps>(\n  ({ \n    cellWidth = 40,\n    cellHeight = 40,\n    strokeWidth = 3,\n    variant = 'solid',\n    color = 'black',\n    animated = false,\n    className,\n    style,\n    ...props \n  }, ref) => {\n    const [svgElement, setSvgElement] = useState<SVGSVGElement | null>(null)\n    const [dimensions, setDimensions] = useState({ width: 0, height: 0 })\n    const id = `brutal-grid-${Math.random().toString(36).substring(2, 11)}`\n\n    useEffect(() => {\n      const updateDimensions = () => {\n        if (svgElement) {\n          const { width, height } = svgElement.getBoundingClientRect()\n          setDimensions({ width, height })\n        }\n      }\n\n      updateDimensions()\n      window.addEventListener('resize', updateDimensions)\n      return () => window.removeEventListener('resize', updateDimensions)\n    }, [svgElement])\n\n    const { className: processedClassName, style: processedStyle } = useResponsiveUtilities({\n      className,\n      style,\n      componentClasses: clsx(\n        styles.brutalGrid,\n        styles[variant],\n        styles[color],\n        animated && styles.animated\n      )\n    })\n\n    const cols = Math.ceil(dimensions.width / cellWidth)\n    const rows = Math.ceil(dimensions.height / cellHeight)\n\n    return (\n      <svg\n        ref={(node) => {\n          setSvgElement(node)\n          if (ref) {\n            if (typeof ref === 'function') {\n              ref(node)\n            } else {\n              (ref as React.MutableRefObject<SVGSVGElement | null>).current = node\n            }\n          }\n        }}\n        className={processedClassName}\n        style={processedStyle}\n        aria-hidden=\"true\"\n        {...props}\n      >\n        <defs>\n          {variant === 'dashed' && (\n            <pattern\n              id={`${id}-dash`}\n              patternUnits=\"userSpaceOnUse\"\n              width=\"10\"\n              height=\"1\"\n            >\n              <line\n                x1=\"0\"\n                y1=\"0\"\n                x2=\"6\"\n                y2=\"0\"\n                stroke=\"currentColor\"\n                strokeWidth={strokeWidth}\n              />\n            </pattern>\n          )}\n        </defs>\n\n        <g className={styles.gridLines}>\n          {/* Vertical lines */}\n          {Array.from({ length: cols + 1 }, (_, i) => (\n            <line\n              key={`v-${i}`}\n              x1={i * cellWidth}\n              y1={0}\n              x2={i * cellWidth}\n              y2={dimensions.height}\n              stroke={variant === 'dashed' ? `url(#${id}-dash)` : 'currentColor'}\n              strokeWidth={strokeWidth}\n              className={styles.verticalLine}\n              style={{\n                animationDelay: animated ? `${i * 0.05}s` : undefined\n              }}\n            />\n          ))}\n\n          {/* Horizontal lines */}\n          {Array.from({ length: rows + 1 }, (_, i) => (\n            <line\n              key={`h-${i}`}\n              x1={0}\n              y1={i * cellHeight}\n              x2={dimensions.width}\n              y2={i * cellHeight}\n              stroke={variant === 'dashed' ? `url(#${id}-dash)` : 'currentColor'}\n              strokeWidth={strokeWidth}\n              className={styles.horizontalLine}\n              style={{\n                animationDelay: animated ? `${i * 0.05}s` : undefined\n              }}\n            />\n          ))}\n\n          {/* Double lines variant */}\n          {variant === 'double' && (\n            <>\n              {Array.from({ length: cols + 1 }, (_, i) => (\n                <line\n                  key={`v2-${i}`}\n                  x1={i * cellWidth + strokeWidth * 2}\n                  y1={0}\n                  x2={i * cellWidth + strokeWidth * 2}\n                  y2={dimensions.height}\n                  stroke=\"currentColor\"\n                  strokeWidth={strokeWidth}\n                  opacity={0.5}\n                />\n              ))}\n              {Array.from({ length: rows + 1 }, (_, i) => (\n                <line\n                  key={`h2-${i}`}\n                  x1={0}\n                  y1={i * cellHeight + strokeWidth * 2}\n                  x2={dimensions.width}\n                  y2={i * cellHeight + strokeWidth * 2}\n                  stroke=\"currentColor\"\n                  strokeWidth={strokeWidth}\n                  opacity={0.5}\n                />\n              ))}\n            </>\n          )}\n\n          {/* Offset variant - creates a brick-like pattern */}\n          {variant === 'offset' && (\n            <>\n              {Array.from({ length: rows }, (_, row) => \n                Array.from({ length: cols }, (_, col) => (\n                  <rect\n                    key={`cell-${row}-${col}`}\n                    x={col * cellWidth + (row % 2 ? cellWidth / 2 : 0)}\n                    y={row * cellHeight}\n                    width={cellWidth}\n                    height={cellHeight}\n                    fill=\"none\"\n                    stroke=\"currentColor\"\n                    strokeWidth={strokeWidth}\n                  />\n                ))\n              )}\n            </>\n          )}\n        </g>\n      </svg>\n    )\n  }\n)\n\nBrutalGrid.displayName = 'BrutalGrid'\n\nexport default BrutalGrid","// Brutalist SVG Shapes\n// Import these SVG files directly or use them as React components\n\nexport const shapes = {\n  square: '/shapes/BrutalSquare.svg',\n  triangle: '/shapes/BrutalTriangle.svg',\n  circle: '/shapes/BrutalCircle.svg',\n  diamond: '/shapes/BrutalDiamond.svg',\n  hexagon: '/shapes/BrutalHexagon.svg',\n  arrow: '/shapes/BrutalArrow.svg',\n  cross: '/shapes/BrutalCross.svg',\n  star: '/shapes/BrutalStar.svg',\n  lightning: '/shapes/BrutalLightning.svg',\n  octagon: '/shapes/BrutalOctagon.svg',\n} as const\n\nexport const shapesList = [\n  {\n    name: 'Square',\n    id: 'square',\n    file: 'BrutalSquare.svg',\n    description: 'Classic brutalist square with thick borders'\n  },\n  {\n    name: 'Triangle',\n    id: 'triangle', \n    file: 'BrutalTriangle.svg',\n    description: 'Sharp angular triangle with bold edges'\n  },\n  {\n    name: 'Circle',\n    id: 'circle',\n    file: 'BrutalCircle.svg', \n    description: 'Solid circle with contrasting inner border'\n  },\n  {\n    name: 'Diamond',\n    id: 'diamond',\n    file: 'BrutalDiamond.svg',\n    description: 'Rotated square creating diamond shape'\n  },\n  {\n    name: 'Hexagon',\n    id: 'hexagon',\n    file: 'BrutalHexagon.svg',\n    description: 'Six-sided polygon with clean geometry'\n  },\n  {\n    name: 'Arrow',\n    id: 'arrow',\n    file: 'BrutalArrow.svg',\n    description: 'Directional arrow for navigation and flow'\n  },\n  {\n    name: 'Cross',\n    id: 'cross',\n    file: 'BrutalCross.svg',\n    description: 'Plus/cross shape for icons and UI elements'\n  },\n  {\n    name: 'Star',\n    id: 'star',\n    file: 'BrutalStar.svg',\n    description: 'Five-pointed star with sharp angles'\n  },\n  {\n    name: 'Lightning',\n    id: 'lightning',\n    file: 'BrutalLightning.svg',\n    description: 'Jagged lightning bolt for energy and power'\n  },\n  {\n    name: 'Octagon',\n    id: 'octagon',\n    file: 'BrutalOctagon.svg',\n    description: 'Eight-sided stop sign inspired shape'\n  }\n] as const\n\nexport type ShapeId = keyof typeof shapes\nexport type ShapeInfo = typeof shapesList[number]","import React from 'react'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n  variant?: 'default' | 'brutal' | 'destructive' | 'outline' | 'ghost'\n  size?: 'sm' | 'md' | 'lg' | 'xl'\n  fullWidth?: boolean\n  loading?: boolean\n  brutalistShadow?: boolean\n  glitch?: boolean\n  leftIcon?: React.ReactNode\n  rightIcon?: React.ReactNode\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n  variant = 'default',\n  size = 'md',\n  fullWidth = false,\n  loading = false,\n  brutalistShadow = true,\n  glitch = false,\n  leftIcon,\n  rightIcon,\n  disabled,\n  children,\n  className = '',\n  ...props\n}) => {\n  const baseClasses = `\n    relative inline-flex items-center justify-center gap-[0.5rem]\n    font-bold uppercase tracking-wider\n    border-[3px] border-solid border-black\n    cursor-pointer transition-all duration-[150ms] ease-in-out\n    select-none whitespace-nowrap outline-none\n    focus-visible:outline focus-visible:outline-[3px] focus-visible:outline-red-500 focus-visible:outline-offset-2\n    disabled:opacity-50 disabled:cursor-not-allowed\n    rounded-none\n  `\n\n  const sizeClasses = {\n    sm: 'py-[0.5rem] px-[1rem] text-xs',      // --brutal-space-2 (0.5rem) --brutal-space-4 (1rem)\n    md: 'py-[0.75rem] px-[1.5rem] text-sm',   // --brutal-space-3 (0.75rem) --brutal-space-6 (1.5rem) \n    lg: 'py-[1rem] px-[2rem] text-base',      // --brutal-space-4 (1rem) --brutal-space-8 (2rem)\n    xl: 'py-[1.5rem] px-[2.5rem] text-lg'     // --brutal-space-6 (1.5rem) --brutal-space-10 (2.5rem)\n  }\n\n  const variantClasses = {\n    default: `\n      bg-white text-black\n      hover:bg-[#f5f5f5]\n      disabled:hover:bg-white\n    `,\n    brutal: `\n      bg-black text-white\n      hover:bg-[#171717]\n      disabled:hover:bg-black\n    `,\n    destructive: `\n      bg-[#ff0000] text-white border-[#cc0000]\n      hover:bg-[#cc0000]\n      disabled:hover:bg-[#ff0000]\n    `,\n    outline: `\n      bg-transparent text-black\n      hover:bg-black hover:text-white\n      disabled:hover:bg-transparent disabled:hover:text-black\n    `,\n    ghost: `\n      bg-transparent text-black border-transparent\n      hover:bg-[#f5f5f5] hover:border-black\n      disabled:hover:bg-transparent disabled:hover:border-transparent\n    `\n  }\n\n  const shadowClasses = brutalistShadow && !disabled ? `\n    shadow-[8px_8px_0px_black]\n    hover:shadow-[12px_12px_0px_black] hover:-translate-x-[4px] hover:-translate-y-[4px]\n    active:shadow-[4px_4px_0px_black] active:translate-x-0 active:translate-y-0\n  ` : brutalistShadow && disabled ? 'shadow-[8px_8px_0px_black]' : ''\n\n  const glitchClasses = glitch ? 'before:content-[attr(data-text)] after:content-[attr(data-text)] before:absolute after:absolute before:top-0 after:top-0 before:left-0 after:left-0 before:w-full after:w-full before:h-full after:h-full before:flex after:flex before:items-center after:items-center before:justify-center after:justify-center before:px-inherit after:px-inherit before:py-inherit after:py-inherit before:animate-[glitch-1_0.5s_infinite] after:animate-[glitch-2_0.5s_infinite] before:text-red-500 after:text-blue-600 before:-z-10 after:-z-20 before:opacity-80 after:opacity-80 hover:before:animate-[glitch-1_0.2s_infinite] hover:after:animate-[glitch-2_0.2s_infinite]' : ''\n\n  const widthClasses = fullWidth ? 'w-full' : ''\n  const loadingClasses = loading ? 'text-transparent' : ''\n\n  const combinedClasses = `\n    ${baseClasses}\n    ${sizeClasses[size]}\n    ${variantClasses[variant]}\n    ${shadowClasses}\n    ${glitchClasses}\n    ${widthClasses}\n    ${loadingClasses}\n    ${className}\n  `.replace(/\\s+/g, ' ').trim()\n\n  return (\n    <button\n      className={combinedClasses}\n      style={{\n        fontFamily: \"'JetBrains Mono', 'Courier New', monospace\",\n        letterSpacing: '0.05em',\n        ...props.style\n      }}\n      disabled={disabled || loading}\n      data-text={glitch ? children : undefined}\n      {...props}\n    >\n      {loading && (\n        <span className=\"absolute w-4 h-4 border-2 border-current border-r-transparent animate-spin rounded-full\" />\n      )}\n      {leftIcon && <span className=\"inline-flex items-center justify-center\">{leftIcon}</span>}\n      <span className=\"inline-flex items-center\">{children}</span>\n      {rightIcon && <span className=\"inline-flex items-center justify-center\">{rightIcon}</span>}\n    </button>\n  )\n}","import React, { forwardRef } from 'react'\n\nexport interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement> {\n  /** The aspect ratio to maintain (e.g., 16/9, 4/3, 1/1) */\n  ratio?: number\n  /** Content to display within the aspect ratio container */\n  children: React.ReactNode\n  /** Whether to apply object-fit to child images/videos */\n  objectFit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'\n  /** Background color when content doesn't fill the container */\n  backgroundColor?: string\n}\n\n/**\n * AspectRatio component maintains a specific width-to-height ratio for its content.\n * Useful for responsive images, videos, embeds, and any content that needs consistent dimensions.\n */\nexport const AspectRatio = forwardRef<HTMLDivElement, AspectRatioProps>(\n  ({ \n    ratio = 16/9, \n    children, \n    className = '',\n    objectFit = 'cover',\n    backgroundColor,\n    style,\n    ...props \n  }, ref) => {\n    const paddingBottom = `${(1 / ratio) * 100}%`\n\n    const baseClasses = `\n      relative w-full overflow-hidden\n      border-[3px] border-solid border-black\n      bg-gray-100\n      shadow-[4px_4px_0px_black]\n      rounded-none\n      transition-none\n      dark:bg-gray-800 dark:border-white\n      contrast-more:border-[4px] contrast-more:shadow-[5px_5px_0px_black]\n      print:shadow-none print:border print:border-black\n    `\n\n    const objectFitClasses = {\n      contain: '[&>div>img]:object-contain [&>div>video]:object-contain',\n      cover: '[&>div>img]:object-cover [&>div>video]:object-cover',\n      fill: '[&>div>img]:object-fill [&>div>video]:object-fill',\n      none: '[&>div>img]:object-none [&>div>video]:object-none',\n      'scale-down': '[&>div>img]:object-scale-down [&>div>video]:object-scale-down'\n    }\n\n    const combinedClasses = `\n      ${baseClasses}\n      ${objectFitClasses[objectFit]}\n      ${className}\n    `.replace(/\\s+/g, ' ').trim()\n\n    return (\n      <div\n        ref={ref}\n        className={combinedClasses}\n        style={{\n          ...style,\n          backgroundColor: backgroundColor || undefined\n        }}\n        {...props}\n      >\n        {/* Sizer div to maintain aspect ratio */}\n        <div style={{ paddingBottom }} />\n        \n        {/* Content container */}\n        <div className=\"absolute inset-0 flex items-center justify-center\">\n          <div className=\"w-full h-full [&>img]:w-full [&>img]:h-full [&>img]:block [&>video]:w-full [&>video]:h-full [&>video]:block [&>iframe]:w-full [&>iframe]:h-full [&>iframe]:block [&>svg]:w-full [&>svg]:h-full [&>svg]:block\">\n            {children}\n          </div>\n        </div>\n      </div>\n    )\n  }\n)\n\nAspectRatio.displayName = 'AspectRatio'","import { forwardRef, HTMLAttributes } from 'react'\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n  /** Visual variant of the card */\n  variant?: 'elevated' | 'flat' | 'outline'\n  /** Padding options */\n  padding?: 'none' | 'sm' | 'md' | 'lg'\n  /** Whether the card is clickable */\n  clickable?: boolean\n  /** Whether to show hover effects */\n  hover?: boolean\n}\n\nexport interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {}\nexport interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {}\nexport interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {}\n\nconst Card = forwardRef<HTMLDivElement, CardProps>(\n  (\n    {\n      children,\n      className = '',\n      variant = 'elevated',\n      padding = 'md',\n      clickable = false,\n      hover = true,\n      ...props\n    },\n    ref\n  ) => {\n    const baseClasses = `\n      bg-white border-[3px] border-solid border-black\n      transition-all duration-150 ease-in-out\n      rounded-none\n    `\n\n    const variantClasses = {\n      elevated: 'shadow-[8px_8px_0px_black]',\n      flat: '',\n      outline: 'bg-transparent'\n    }\n\n    const paddingClasses = {\n      none: '',\n      sm: 'p-3',\n      md: 'p-6',\n      lg: 'p-8'\n    }\n\n    const interactionClasses = clickable \n      ? 'cursor-pointer hover:shadow-[12px_12px_0px_black] hover:-translate-x-1 hover:-translate-y-1 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2'\n      : hover\n        ? 'hover:shadow-[12px_12px_0px_black] hover:-translate-x-1 hover:-translate-y-1'\n        : ''\n\n    const combinedClasses = `\n      ${baseClasses}\n      ${variantClasses[variant]}\n      ${paddingClasses[padding]}\n      ${interactionClasses}\n      ${className}\n    `.replace(/\\s+/g, ' ').trim()\n\n    return (\n      <div\n        ref={ref}\n        className={combinedClasses}\n        role={clickable ? 'button' : undefined}\n        tabIndex={clickable ? 0 : undefined}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nconst CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n  ({ children, className = '', ...props }, ref) => {\n    const headerClasses = `\n      pb-4 border-b-[2px] border-black mb-4\n      ${className}\n    `.replace(/\\s+/g, ' ').trim()\n\n    return (\n      <div\n        ref={ref}\n        className={headerClasses}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nconst CardBody = forwardRef<HTMLDivElement, CardBodyProps>(\n  ({ children, className = '', ...props }, ref) => {\n    const bodyClasses = `\n      ${className}\n    `.replace(/\\s+/g, ' ').trim()\n\n    return (\n      <div\n        ref={ref}\n        className={bodyClasses}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nconst CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n  ({ children, className = '', ...props }, ref) => {\n    const footerClasses = `\n      pt-4 border-t-[2px] border-black mt-4\n      ${className}\n    `.replace(/\\s+/g, ' ').trim()\n\n    return (\n      <div\n        ref={ref}\n        className={footerClasses}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nCard.displayName = 'Card'\nCardHeader.displayName = 'Card.Header'\nCardBody.displayName = 'Card.Body'\nCardFooter.displayName = 'Card.Footer'\n\n// Compound component\nconst CardComponent = Card as typeof Card & {\n  Header: typeof CardHeader\n  Body: typeof CardBody\n  Footer: typeof CardFooter\n}\n\nCardComponent.Header = CardHeader\nCardComponent.Body = CardBody\nCardComponent.Footer = CardFooter\n\nexport { CardComponent as Card }","import React, { forwardRef, InputHTMLAttributes } from 'react'\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n  variant?: 'default' | 'error' | 'success'\n  size?: 'sm' | 'md' | 'lg'\n  leftIcon?: React.ReactNode\n  rightIcon?: React.ReactNode\n  fullWidth?: boolean\n  brutalistShadow?: boolean\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n  (\n    {\n      className = '',\n      variant = 'default',\n      size = 'md',\n      leftIcon,\n      rightIcon,\n      fullWidth = false,\n      brutalistShadow = true,\n      disabled,\n      readOnly,\n      type = 'text',\n      ...props\n    },\n    ref\n  ) => {\n    const baseClasses = `\n      border-[3px] border-solid border-black\n      bg-white text-black placeholder-gray-500\n      transition-all duration-150 ease-in-out\n      focus:outline-none focus:border-black\n      hover:border-gray-700\n      disabled:opacity-60 disabled:cursor-not-allowed disabled:bg-gray-100\n      read-only:cursor-default read-only:bg-gray-100\n      w-full block\n      rounded-none\n    `\n\n    const sizeClasses = {\n      sm: 'px-3 py-2 text-sm leading-tight',\n      md: 'px-4 py-3 text-base leading-normal',\n      lg: 'px-5 py-4 text-lg leading-normal'\n    }\n\n    const variantClasses = {\n      default: 'border-black focus:border-black',\n      error: 'border-red-500 focus:border-red-500 bg-red-50',\n      success: 'border-green-500 focus:border-green-500 bg-green-50'\n    }\n\n    const shadowClasses = brutalistShadow && !disabled && !readOnly\n      ? 'shadow-[4px_4px_0px_black] focus:shadow-[6px_6px_0px_black] focus:-translate-x-0.5 focus:-translate-y-0.5'\n      : ''\n\n    const widthClasses = fullWidth ? 'w-full' : ''\n\n    const iconPadding = {\n      left: leftIcon ? 'pl-12' : '',\n      right: rightIcon ? 'pr-12' : ''\n    }\n\n    if (leftIcon || rightIcon) {\n      return (\n        <div className={`relative ${fullWidth ? 'w-full' : 'inline-block'}`}>\n          {leftIcon && (\n            <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-600 pointer-events-none\">\n              {leftIcon}\n            </div>\n          )}\n          <input\n            ref={ref}\n            type={type}\n            className={`\n              ${baseClasses}\n              ${sizeClasses[size]}\n              ${variantClasses[variant]}\n              ${shadowClasses}\n              ${widthClasses}\n              ${iconPadding.left}\n              ${iconPadding.right}\n              ${className}\n            `.replace(/\\s+/g, ' ').trim()}\n            style={{\n              fontFamily: \"'JetBrains Mono', 'Courier New', monospace\",\n              fontWeight: 500,\n              ...props.style\n            }}\n            disabled={disabled}\n            readOnly={readOnly}\n            {...props}\n          />\n          {rightIcon && (\n            <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-600 pointer-events-none\">\n              {rightIcon}\n            </div>\n          )}\n        </div>\n      )\n    }\n\n    return (\n      <input\n        ref={ref}\n        type={type}\n        className={`\n          ${baseClasses}\n          ${sizeClasses[size]}\n          ${variantClasses[variant]}\n          ${shadowClasses}\n          ${widthClasses}\n          ${className}\n        `.replace(/\\s+/g, ' ').trim()}\n        style={{\n          fontFamily: \"'JetBrains Mono', 'Courier New', monospace\",\n          fontWeight: 500,\n          ...props.style\n        }}\n        disabled={disabled}\n        readOnly={readOnly}\n        {...props}\n      />\n    )\n  }\n)\n\nInput.displayName = 'Input'","import React, { forwardRef, HTMLAttributes } from 'react'\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n  /** Badge content */\n  children?: React.ReactNode\n  /** Badge variant */\n  variant?: 'solid' | 'outline' | 'dot' | 'secondary'\n  /** Badge color */\n  color?: 'accent' | 'success' | 'warning' | 'error' | 'info' | 'neutral'\n  /** Badge size */\n  size?: 'sm' | 'md' | 'lg'\n  /** Whether the badge is dismissible */\n  dismissible?: boolean\n  /** Click handler for dismissible badges */\n  onDismiss?: () => void\n  /** Additional CSS classes */\n  className?: string\n  /** Custom click handler */\n  onClick?: () => void\n  /** Whether the badge is clickable */\n  clickable?: boolean\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n  (\n    {\n      children,\n      variant = 'solid',\n      color = 'accent',\n      size = 'md',\n      dismissible = false,\n      onDismiss,\n      className = '',\n      onClick,\n      clickable = false,\n      ...props\n    },\n    ref\n  ) => {\n    const isDot = variant === 'dot'\n    const isClickable = clickable || !!onClick\n    const isDismissible = dismissible && !!onDismiss\n\n    const handleDismiss = (e: React.MouseEvent) => {\n      e.stopPropagation()\n      onDismiss?.()\n    }\n\n    const handleClick = () => {\n      if (isClickable) {\n        onClick?.()\n      }\n    }\n\n    const handleKeyDown = (e: React.KeyboardEvent) => {\n      if (isClickable && (e.key === 'Enter' || e.key === ' ')) {\n        e.preventDefault()\n        onClick?.()\n      }\n    }\n\n    // For dot variant, don't render children\n    const content = isDot ? null : children\n\n    const baseClasses = `\n      inline-flex items-center justify-center\n      font-mono font-bold uppercase tracking-wider\n      border-[3px] border-solid border-black\n      rounded-none whitespace-nowrap\n      transition-all duration-150 ease-in-out\n      shadow-[4px_4px_0px_black]\n    `\n\n    const sizeClasses = {\n      sm: isDot ? 'w-2 h-2' : 'px-2 py-1 text-xs min-h-[20px]',\n      md: isDot ? 'w-3 h-3' : 'px-3 py-2 text-sm min-h-[24px]',\n      lg: isDot ? 'w-4 h-4' : 'px-4 py-3 text-base min-h-[32px]'\n    }\n\n    const variantClasses = {\n      solid: 'bg-black text-white border-black',\n      outline: 'bg-transparent text-black border-black',\n      dot: 'rounded-full',\n      secondary: 'bg-gray-100 text-gray-900 border-gray-600'\n    }\n\n    const colorClasses = {\n      accent: variant === 'outline' ? 'text-red-500 border-red-500' : 'bg-red-500 text-white border-red-700',\n      success: variant === 'outline' ? 'text-green-500 border-green-500' : 'bg-green-500 text-white border-green-700',\n      warning: variant === 'outline' ? 'text-yellow-500 border-yellow-500' : 'bg-yellow-400 text-black border-yellow-600',\n      error: variant === 'outline' ? 'text-red-500 border-red-500' : 'bg-red-500 text-white border-red-700',\n      info: variant === 'outline' ? 'text-blue-500 border-blue-500' : 'bg-blue-500 text-white border-blue-700',\n      neutral: variant === 'outline' ? 'text-gray-500 border-gray-500' : 'bg-gray-500 text-white border-gray-700'\n    }\n\n    const interactionClasses = isClickable\n      ? 'cursor-pointer hover:shadow-[6px_6px_0px_black] hover:-translate-x-0.5 hover:-translate-y-0.5 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2'\n      : ''\n\n    const combinedClasses = `\n      ${baseClasses}\n      ${sizeClasses[size]}\n      ${variantClasses[variant]}\n      ${variant !== 'solid' && variant !== 'secondary' ? colorClasses[color] : ''}\n      ${interactionClasses}\n      ${className}\n    `.replace(/\\s+/g, ' ').trim()\n\n    // Dismiss icon\n    const dismissIcon = (\n      <svg\n        viewBox=\"0 0 24 24\"\n        fill=\"currentColor\"\n        className=\"w-3 h-3 ml-1\"\n        aria-hidden=\"true\"\n      >\n        <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n      </svg>\n    )\n\n    return (\n      <span\n        ref={ref}\n        className={combinedClasses}\n        style={{\n          fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, sans-serif\",\n          fontWeight: 700,\n          letterSpacing: '0.02em',\n          lineHeight: 1,\n          ...props.style\n        }}\n        onClick={isClickable ? handleClick : undefined}\n        onKeyDown={isClickable ? handleKeyDown : undefined}\n        role={isClickable ? 'button' : isDot ? 'status' : undefined}\n        tabIndex={isClickable ? 0 : undefined}\n        aria-label={\n          isDot \n            ? `${color} status indicator` \n            : typeof children === 'string' \n              ? children \n              : undefined\n        }\n        {...props}\n      >\n        {content}\n        \n        {isDismissible && (\n          <button\n            type=\"button\"\n            className=\"ml-1 text-current hover:text-gray-700 focus:outline-none\"\n            onClick={handleDismiss}\n            aria-label=\"Dismiss badge\"\n            tabIndex={-1}\n          >\n            {dismissIcon}\n          </button>\n        )}\n      </span>\n    )\n  }\n)\n\nBadge.displayName = 'Badge'","import { forwardRef, HTMLAttributes, useState } from 'react'\n\nexport interface AlertProps extends HTMLAttributes<HTMLDivElement> {\n  /** Type of alert */\n  type?: 'info' | 'success' | 'warning' | 'error'\n  /** Visual variant */\n  variant?: 'filled' | 'outline'\n  /** Size of the alert */\n  size?: 'sm' | 'md' | 'lg'\n  /** Whether the alert can be dismissed */\n  dismissible?: boolean\n  /** Callback when alert is dismissed */\n  onDismiss?: () => void\n}\n\nexport interface AlertIconProps extends HTMLAttributes<HTMLDivElement> {}\nexport interface AlertContentProps extends HTMLAttributes<HTMLDivElement> {}\nexport interface AlertTitleProps extends HTMLAttributes<HTMLHeadingElement> {}\nexport interface AlertDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {}\nexport interface AlertActionsProps extends HTMLAttributes<HTMLDivElement> {}\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>(\n  (\n    {\n      children,\n      className = '',\n      type = 'info',\n      variant = 'filled',\n      size = 'md',\n      dismissible = false,\n      onDismiss,\n      ...props\n    },\n    ref\n  ) => {\n    const [dismissed, setDismissed] = useState(false)\n    const [isExiting, setIsExiting] = useState(false)\n\n    const handleDismiss = () => {\n      setIsExiting(true)\n      // Wait for animation to complete before removing from DOM\n      setTimeout(() => {\n        setDismissed(true)\n        onDismiss?.()\n      }, 300) // Match animation duration\n    }\n\n    if (dismissed) {\n      return null\n    }\n\n    const baseClasses = `\n      relative flex items-start gap-3\n      border-[3px] border-solid rounded-none\n      font-medium transition-all duration-150 ease-in-out\n      shadow-[4px_4px_0px_black]\n      hover:shadow-[6px_6px_0px_black] hover:-translate-x-0.5 hover:-translate-y-0.5\n      motion-reduce:transition-none motion-reduce:animate-none\n      contrast-more:border-[4px]\n    `\n\n    const sizeClasses = {\n      sm: 'p-3 text-sm leading-tight',\n      md: 'p-4 text-base leading-normal',\n      lg: 'p-6 text-lg leading-normal'\n    }\n\n    const typeVariantClasses = {\n      info: {\n        filled: 'bg-blue-500 border-black text-white',\n        outline: 'bg-white border-blue-500 text-blue-500 border-[5px]'\n      },\n      success: {\n        filled: 'bg-green-500 border-black text-white',\n        outline: 'bg-white border-green-500 text-green-500 border-[5px]'\n      },\n      warning: {\n        filled: 'bg-yellow-400 border-black text-black',\n        outline: 'bg-white border-yellow-400 text-yellow-600 border-[5px]'\n      },\n      error: {\n        filled: 'bg-red-500 border-black text-white hover:animate-[alertShake_0.15s_ease-in-out]',\n        outline: 'bg-white border-red-500 text-red-500 border-[5px] hover:animate-[alertShake_0.15s_ease-in-out]'\n      }\n    }\n\n    const dismissibleClasses = dismissible ? 'pr-12' : ''\n\n    const combinedClasses = `\n      ${baseClasses}\n      ${sizeClasses[size]}\n      ${typeVariantClasses[type][variant]}\n      ${dismissibleClasses}\n      ${className}\n    `.replace(/\\s+/g, ' ').trim()\n\n    return (\n      <div\n        ref={ref}\n        className={combinedClasses}\n        style={{\n          fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, sans-serif\",\n          animation: isExiting \n            ? 'alertExit 0.3s cubic-bezier(0.55, 0.055, 0.675, 0.19) forwards'\n            : 'alertEnter 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) forwards',\n          ...props.style\n        }}\n        role=\"alert\"\n        aria-live=\"polite\"\n        {...props}\n      >\n        <style>\n          {`\n            @keyframes alertEnter {\n              from {\n                opacity: 0;\n                transform: translateY(-20px) scale(0.95);\n              }\n              to {\n                opacity: 1;\n                transform: translateY(0) scale(1);\n              }\n            }\n            @keyframes alertExit {\n              from {\n                opacity: 1;\n                transform: translateX(0) scale(1);\n              }\n              to {\n                opacity: 0;\n                transform: translateX(100px) scale(0.9);\n              }\n            }\n            @keyframes alertShake {\n              0%, 100% {\n                transform: translateX(0);\n              }\n              25% {\n                transform: translateX(-4px);\n              }\n              75% {\n                transform: translateX(4px);\n              }\n            }\n          `}\n        </style>\n        {children}\n        {dismissible && (\n          <button\n            className={`\n              absolute top-3 right-3 bg-transparent border-none text-current cursor-pointer\n              p-1 flex items-center justify-center rounded-none opacity-70 transition-all duration-100 ease-in-out\n              hover:opacity-100 hover:scale-110 active:scale-95\n              focus:outline focus:outline-2 focus:outline-current focus:outline-offset-1\n              motion-reduce:transition-none motion-reduce:hover:scale-100 motion-reduce:active:scale-100\n              ${size === 'sm' ? 'top-2 right-2 p-0.5' : size === 'lg' ? 'top-4 right-4' : ''}\n            `}\n            onClick={handleDismiss}\n            aria-label=\"Dismiss alert\"\n            type=\"button\"\n          >\n            <svg\n              width={size === 'sm' ? 14 : size === 'lg' ? 18 : 16}\n              height={size === 'sm' ? 14 : size === 'lg' ? 18 : 16}\n              viewBox=\"0 0 16 16\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M12 4L4 12M4 4L12 12\"\n                stroke=\"currentColor\"\n                strokeWidth=\"2\"\n                strokeLinecap=\"square\"\n              />\n            </svg>\n          </button>\n        )}\n      </div>\n    )\n  }\n)\n\nconst AlertIcon = forwardRef<HTMLDivElement, AlertIconProps>(\n  ({ children, className = '', ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={`\n          flex-shrink-0 flex items-center justify-center mt-1\n          ${className}\n        `.replace(/\\s+/g, ' ').trim()}\n        {...props}\n      >\n        {children || <DefaultIcon />}\n      </div>\n    )\n  }\n)\n\nconst AlertContent = forwardRef<HTMLDivElement, AlertContentProps>(\n  ({ children, className = '', ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={`\n          flex-1 min-w-0\n          ${className}\n        `.replace(/\\s+/g, ' ').trim()}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\nconst AlertTitle = forwardRef<HTMLHeadingElement, AlertTitleProps>(\n  ({ children, className = '', ...props }, ref) => {\n    return (\n      <h4\n        ref={ref}\n        className={`\n          font-bold text-inherit leading-tight uppercase tracking-wider\n          m-0 mb-1\n          ${className}\n        `.replace(/\\s+/g, ' ').trim()}\n        style={{\n          fontFamily: \"'Space Grotesk', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif\",\n          letterSpacing: '0.05em',\n          ...props.style\n        }}\n        {...props}\n      >\n        {children}\n      </h4>\n    )\n  }\n)\n\nconst AlertDescription = forwardRef<HTMLParagraphElement, AlertDescriptionProps>(\n  ({ children, className = '', ...props }, ref) => {\n    return (\n      <p\n        ref={ref}\n        className={`\n          m-0 leading-normal opacity-90\n          ${className}\n        `.replace(/\\s+/g, ' ').trim()}\n        {...props}\n      >\n        {children}\n      </p>\n    )\n  }\n)\n\nconst AlertActions = forwardRef<HTMLDivElement, AlertActionsProps>(\n  ({ children, className = '', ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={`\n          flex items-center gap-2 mt-3 flex-wrap\n          max-md:flex-col max-md:items-stretch max-md:[&>button]:w-full\n          ${className}\n        `.replace(/\\s+/g, ' ').trim()}\n        {...props}\n      >\n        {children}\n      </div>\n    )\n  }\n)\n\n// Default icon component\nconst DefaultIcon = () => (\n  <svg\n    width=\"20\"\n    height=\"20\"\n    viewBox=\"0 0 20 20\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <circle\n      cx=\"10\"\n      cy=\"10\"\n      r=\"8\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      fill=\"none\"\n    />\n    <path\n      d=\"M10 6V10\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"square\"\n    />\n    <circle\n      cx=\"10\"\n      cy=\"14\"\n      r=\"1\"\n      fill=\"currentColor\"\n    />\n  </svg>\n)\n\nAlert.displayName = 'Alert'\nAlertIcon.displayName = 'Alert.Icon'\nAlertContent.displayName = 'Alert.Content'\nAlertTitle.displayName = 'Alert.Title'\nAlertDescription.displayName = 'Alert.Description'\nAlertActions.displayName = 'Alert.Actions'\n\n// Compound component\nconst AlertComponent = Alert as typeof Alert & {\n  Icon: typeof AlertIcon\n  Content: typeof AlertContent\n  Title: typeof AlertTitle\n  Description: typeof AlertDescription\n  Actions: typeof AlertActions\n}\n\nAlertComponent.Icon = AlertIcon\nAlertComponent.Content = AlertContent\nAlertComponent.Title = AlertTitle\nAlertComponent.Description = AlertDescription\nAlertComponent.Actions = AlertActions\n\nexport { AlertComponent as Alert }","import React, { forwardRef, InputHTMLAttributes, useRef, useEffect } from 'react'\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n  size?: 'sm' | 'md' | 'lg'\n  label?: React.ReactNode\n  indeterminate?: boolean\n  error?: boolean\n  brutalistShadow?: boolean\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n  (\n    {\n      className = '',\n      size = 'md',\n      label,\n      indeterminate = false,\n      error = false,\n      brutalistShadow = true,\n      disabled,\n      id,\n      ...props\n    },\n    ref\n  ) => {\n    const internalRef = useRef<HTMLInputElement>(null)\n    const checkboxRef = ref || internalRef\n\n    // Handle indeterminate state\n    useEffect(() => {\n      const checkbox = typeof checkboxRef === 'function' ? null : checkboxRef.current\n      if (checkbox) {\n        checkbox.indeterminate = indeterminate\n      }\n    }, [indeterminate, checkboxRef])\n\n    const checkboxId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`\n\n    const sizeClasses = {\n      sm: 'w-4 h-4',\n      md: 'w-5 h-5', \n      lg: 'w-6 h-6'\n    }\n\n    const labelSizeClasses = {\n      sm: 'text-sm',\n      md: 'text-base',\n      lg: 'text-lg'\n    }\n\n    const containerClasses = `\n      inline-flex items-center gap-3 relative select-none\n      ${disabled ? 'cursor-not-allowed opacity-50' : ''}\n      ${className}\n    `\n\n    const checkboxClasses = `\n      flex items-center justify-center\n      bg-white border-[3px] border-solid rounded-none\n      cursor-pointer transition-all duration-150 ease-in-out\n      relative overflow-hidden\n      ${sizeClasses[size]}\n      ${brutalistShadow ? 'shadow-[4px_4px_0px_black]' : ''}\n      ${error ? 'border-red-500' : 'border-black'}\n      ${disabled ? 'cursor-not-allowed bg-gray-300' : ''}\n      hover:bg-gray-100 hover:-translate-x-0.5 hover:-translate-y-0.5\n      ${brutalistShadow ? 'hover:shadow-[6px_6px_0px_black]' : ''}\n      ${error && brutalistShadow ? 'hover:shadow-[6px_6px_0px_red-500]' : ''}\n      active:translate-x-0.5 active:translate-y-0.5\n      ${brutalistShadow ? 'active:shadow-[2px_2px_0px_black]' : ''}\n      ${error && brutalistShadow ? 'active:shadow-[2px_2px_0px_red-500]' : ''}\n      focus-within:outline focus-within:outline-2 focus-within:outline-red-500 focus-within:outline-offset-2\n      ${disabled ? 'hover:bg-gray-300 hover:translate-x-0 hover:translate-y-0 hover:shadow-[4px_4px_0px_black]' : ''}\n    `\n\n    const inputClasses = `\n      absolute opacity-0 w-full h-full cursor-pointer z-10\n      ${disabled ? 'cursor-not-allowed' : ''}\n    `\n\n    const checkmarkClasses = `\n      w-full h-full opacity-0 transform scale-75 transition-all duration-150 ease-in-out\n      ${error ? 'text-red-500' : 'text-black'}\n      ${indeterminate ? 'opacity-0' : ''}\n    `\n\n    const indeterminateLineClasses = `\n      absolute h-[3px] w-[60%] transition-opacity duration-150 ease-in-out\n      ${indeterminate ? 'opacity-100' : 'opacity-0'}\n      ${error ? 'bg-red-500' : 'bg-black'}\n    `\n\n    const labelClasses = `\n      font-medium text-black cursor-pointer transition-colors duration-150 ease-in-out\n      ${labelSizeClasses[size]}\n      ${disabled ? 'cursor-not-allowed text-gray-500' : 'hover:text-gray-700'}\n    `\n\n    return (\n      <div className={containerClasses}>\n        <div className=\"relative inline-block leading-[0]\">\n          <input\n            ref={checkboxRef as React.Ref<HTMLInputElement>}\n            type=\"checkbox\"\n            id={checkboxId}\n            className={`${inputClasses} checked:~[&+div>svg]:opacity-100 checked:~[&+div>svg]:scale-100`}\n            disabled={disabled}\n            aria-invalid={error}\n            {...props}\n          />\n          <div className={checkboxClasses}>\n            <svg \n              className={checkmarkClasses}\n              viewBox=\"0 0 24 24\" \n              fill=\"none\"\n              aria-hidden=\"true\"\n            >\n              <path \n                d=\"M5 13L9 17L19 7\" \n                stroke=\"currentColor\" \n                strokeWidth=\"4\" \n                strokeLinecap=\"square\" \n                strokeLinejoin=\"miter\"\n              />\n            </svg>\n            <div className={indeterminateLineClasses} />\n          </div>\n        </div>\n        {label && (\n          <label \n            htmlFor={checkboxId} \n            className={labelClasses}\n            style={{\n              fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, sans-serif\"\n            }}\n          >\n            {label}\n          </label>\n        )}\n        \n        <style>\n          {`\n            input:checked + div svg {\n              opacity: 1;\n              transform: scale(1);\n            }\n          `}\n        </style>\n      </div>\n    )\n  }\n)\n\nCheckbox.displayName = 'Checkbox'","import React, { useState, forwardRef, ImgHTMLAttributes } from 'react'\n\nexport interface AvatarProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'size' | 'children'> {\n  /** Image source URL */\n  src?: string\n  /** Alt text for the image */\n  alt?: string\n  /** Initials to display when no image */\n  initials?: string\n  /** Icon to display as fallback */\n  icon?: React.ReactNode\n  /** Avatar size */\n  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n  /** Status indicator */\n  status?: 'online' | 'offline' | 'busy' | 'away'\n  /** Additional CSS classes */\n  className?: string\n  /** Custom click handler */\n  onClick?: () => void\n  /** Whether the avatar is clickable */\n  clickable?: boolean\n}\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n  (\n    {\n      src,\n      alt,\n      initials,\n      icon,\n      size = 'md',\n      status,\n      className = '',\n      onClick,\n      clickable = false,\n      ...props\n    },\n    ref\n  ) => {\n    const [imageError, setImageError] = useState(false)\n    const [imageLoaded, setImageLoaded] = useState(false)\n\n    const handleImageError = () => {\n      setImageError(true)\n    }\n\n    const handleImageLoad = () => {\n      setImageLoaded(true)\n      setImageError(false)\n    }\n\n    const hasImage = src && !imageError\n    const hasInitials = initials && initials.length > 0\n    const hasIcon = icon\n\n    // Determine what to display based on available data and fallback order\n    const showImage = hasImage\n    const showInitials = !hasImage && hasInitials\n    const showIcon = !hasImage && !hasInitials && hasIcon\n\n    // Get initials (first 2 characters max)\n    const displayInitials = initials ? initials.slice(0, 2).toUpperCase() : ''\n\n    // Default icon if no image, initials, or custom icon\n    const defaultIcon = (\n      <svg\n        viewBox=\"0 0 24 24\"\n        fill=\"currentColor\"\n        className=\"w-full h-full\"\n      >\n        <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"/>\n      </svg>\n    )\n\n    const isClickable = clickable || !!onClick\n\n    const sizeClasses = {\n      xs: 'w-6 h-6',\n      sm: 'w-8 h-8',\n      md: 'w-10 h-10',\n      lg: 'w-12 h-12',\n      xl: 'w-16 h-16'\n    }\n\n    const textSizeClasses = {\n      xs: 'text-xs',\n      sm: 'text-sm',\n      md: 'text-base',\n      lg: 'text-lg',\n      xl: 'text-xl'\n    }\n\n    const statusSizeClasses = {\n      xs: 'w-1.5 h-1.5',\n      sm: 'w-2 h-2',\n      md: 'w-2.5 h-2.5',\n      lg: 'w-3 h-3',\n      xl: 'w-4 h-4'\n    }\n\n    const statusColorClasses = {\n      online: 'bg-green-500',\n      offline: 'bg-gray-400',\n      busy: 'bg-red-500',\n      away: 'bg-yellow-500'\n    }\n\n    const containerClasses = `\n      relative inline-block\n      ${isClickable ? 'cursor-pointer' : ''}\n      ${className}\n    `\n\n    const avatarClasses = `\n      ${sizeClasses[size]}\n      bg-gray-100 border-[3px] border-solid border-black\n      rounded-none shadow-[4px_4px_0px_black]\n      flex items-center justify-center\n      overflow-hidden text-black font-bold\n      transition-all duration-150 ease-in-out\n      ${isClickable ? 'hover:shadow-[6px_6px_0px_black] hover:-translate-x-0.5 hover:-translate-y-0.5' : ''}\n      ${isClickable ? 'active:shadow-[2px_2px_0px_black] active:translate-x-0.5 active:translate-y-0.5' : ''}\n      ${isClickable ? 'focus:outline focus:outline-2 focus:outline-red-500 focus:outline-offset-2' : ''}\n    `\n\n    const statusClasses = `\n      absolute -bottom-0.5 -right-0.5 \n      ${statusSizeClasses[size]}\n      ${statusColorClasses[status!]}\n      border-2 border-white rounded-full\n      shadow-[2px_2px_0px_black]\n    `\n\n    return (\n      <div\n        ref={ref}\n        className={containerClasses}\n        onClick={isClickable ? onClick : undefined}\n        role={isClickable ? 'button' : undefined}\n        tabIndex={isClickable ? 0 : undefined}\n        onKeyDown={\n          isClickable\n            ? (e) => {\n                if (e.key === 'Enter' || e.key === ' ') {\n                  e.preventDefault()\n                  onClick?.()\n                }\n              }\n            : undefined\n        }\n        aria-label={alt || `Avatar${initials ? ` for ${initials}` : ''}`}\n      >\n        <div className={avatarClasses}>\n          {showImage && (\n            <img\n              src={src}\n              alt={alt}\n              className={`w-full h-full object-cover ${imageLoaded ? 'opacity-100' : 'opacity-0'} transition-opacity duration-200`}\n              onError={handleImageError}\n              onLoad={handleImageLoad}\n              {...props}\n            />\n          )}\n          \n          {showInitials && (\n            <span \n              className={`${textSizeClasses[size]} font-bold uppercase`}\n              style={{\n                fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, sans-serif\"\n              }}\n              aria-label={`Initials: ${displayInitials}`}\n            >\n              {displayInitials}\n            </span>\n          )}\n          \n          {showIcon && (\n            <span \n              className=\"w-3/5 h-3/5 flex items-center justify-center text-gray-600\" \n              aria-label=\"Avatar icon\"\n            >\n              {icon}\n            </span>\n          )}\n          \n          {!showImage && !showInitials && !showIcon && (\n            <span \n              className=\"w-3/5 h-3/5 flex items-center justify-center text-gray-600\" \n              aria-label=\"Default avatar\"\n            >\n              {defaultIcon}\n            </span>\n          )}\n        </div>\n        \n        {status && (\n          <div\n            className={statusClasses}\n            aria-label={`Status: ${status}`}\n            role=\"img\"\n          />\n        )}\n      </div>\n    )\n  }\n)\n\nAvatar.displayName = 'Avatar'","import { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\n\nexport interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n  /** Progress value (0-max for determinate, undefined for indeterminate) */\n  value?: number\n  /** Maximum value */\n  max?: number\n  /** Progress type */\n  type?: 'linear' | 'circular'\n  /** Progress variant */\n  variant?: 'default' | 'striped' | 'animated'\n  /** Progress size */\n  size?: 'sm' | 'md' | 'lg'\n  /** Whether to show the value label */\n  showLabel?: boolean\n  /** Custom label text (overrides default percentage) */\n  label?: string\n  /** Whether progress is indeterminate */\n  indeterminate?: boolean\n  /** Progress bar color */\n  color?: 'accent' | 'success' | 'warning' | 'error' | 'info'\n  /** Additional CSS classes */\n  className?: string\n}\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n  (\n    {\n      value,\n      max = 100,\n      type = 'linear',\n      variant = 'default', // eslint-disable-line @typescript-eslint/no-unused-vars\n      size = 'md',\n      showLabel = false,\n      label,\n      indeterminate = false,\n      color = 'accent',\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    // Calculate progress percentage\n    const progressValue = indeterminate ? undefined : Math.min(Math.max((value ?? 0) / max * 100, 0), 100)\n    const isCircular = type === 'circular'\n    \n    // Calculate label text\n    const labelText = label || (progressValue !== undefined ? `${Math.round(progressValue)}%` : '')\n    \n    // Squared circular progress calculations\n    const boxSize = isCircular ? (size === 'sm' ? 40 : size === 'lg' ? 80 : 60) : 0\n    const pathLength = isCircular ? boxSize * 4 - 16 : 0 // Perimeter minus corners\n    const dashOffset = isCircular && progressValue !== undefined \n      ? pathLength - (progressValue / 100) * pathLength \n      : 0\n\n    // Accessibility props\n    const progressRole = 'progressbar'\n    const ariaValueNow = indeterminate ? undefined : value ?? 0\n    const ariaValueMin = 0\n    const ariaValueMax = max\n    const ariaLabel = label || (indeterminate ? 'Loading' : `${Math.round(progressValue ?? 0)} percent complete`)\n\n    // Base classes\n    const baseClasses = clsx(\n      'relative',\n      'font-mono font-bold text-black',\n      className\n    )\n\n    // Color variants\n    const colorClasses = {\n      accent: 'bg-yellow-400 border-yellow-400',\n      success: 'bg-green-400 border-green-400',\n      warning: 'bg-orange-400 border-orange-400',\n      error: 'bg-red-400 border-red-400',\n      info: 'bg-blue-400 border-blue-400'\n    }\n\n    const trackColorClasses = {\n      accent: 'bg-yellow-100 border-yellow-400',\n      success: 'bg-green-100 border-green-400',\n      warning: 'bg-orange-100 border-orange-400',\n      error: 'bg-red-100 border-red-400',\n      info: 'bg-blue-100 border-blue-400'\n    }\n\n    if (isCircular) {\n      const strokeWidth = size === 'sm' ? 3 : size === 'lg' ? 6 : 4\n      const padding = strokeWidth + 2\n      const svgSize = boxSize + padding * 2\n      const cornerSize = 4\n\n      const circularClasses = clsx(\n        baseClasses,\n        'inline-flex items-center justify-center'\n      )\n\n      const strokeColorClasses = {\n        accent: 'stroke-yellow-400',\n        success: 'stroke-green-400',\n        warning: 'stroke-orange-400',\n        error: 'stroke-red-400',\n        info: 'stroke-blue-400'\n      }\n\n      const trackStrokeClasses = {\n        accent: 'stroke-yellow-200',\n        success: 'stroke-green-200',\n        warning: 'stroke-orange-200',\n        error: 'stroke-red-200',\n        info: 'stroke-blue-200'\n      }\n\n      return (\n        <div\n          ref={ref}\n          className={circularClasses}\n          role={progressRole}\n          aria-valuenow={ariaValueNow}\n          aria-valuemin={ariaValueMin}\n          aria-valuemax={ariaValueMax}\n          aria-label={ariaLabel}\n          {...props}\n        >\n          <div className=\"relative flex items-center justify-center\">\n            <svg\n              className=\"transform rotate-0\"\n              width={svgSize}\n              height={svgSize}\n              viewBox={`0 0 ${svgSize} ${svgSize}`}\n              style={{\n                fontFamily: 'JetBrains Mono, monospace',\n                fontWeight: 'bold'\n              }}\n            >\n              {/* Background square track */}\n              <rect\n                className={clsx('fill-white', trackStrokeClasses[color])}\n                x={padding}\n                y={padding}\n                width={boxSize}\n                height={boxSize}\n                rx={cornerSize}\n                ry={cornerSize}\n                fill=\"none\"\n                strokeWidth={strokeWidth}\n              />\n              {/* Progress square */}\n              <rect\n                className={clsx('fill-none transition-all duration-300', strokeColorClasses[color])}\n                x={padding}\n                y={padding}\n                width={boxSize}\n                height={boxSize}\n                rx={cornerSize}\n                ry={cornerSize}\n                fill=\"none\"\n                strokeWidth={strokeWidth}\n                style={{\n                  strokeDasharray: pathLength,\n                  strokeDashoffset: dashOffset,\n                }}\n                strokeLinecap=\"square\"\n                transform={`rotate(-90 ${svgSize / 2} ${svgSize / 2})`}\n              />\n            </svg>\n            {showLabel && (\n              <div \n                className={clsx(\n                  'absolute text-center font-bold text-black leading-none',\n                  size === 'sm' ? 'text-xs' : size === 'lg' ? 'text-base' : 'text-sm'\n                )}\n                style={{\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              >\n                {labelText}\n              </div>\n            )}\n          </div>\n        </div>\n      )\n    }\n\n    // Linear progress\n    const linearClasses = clsx(\n      baseClasses,\n      'w-full',\n      showLabel && 'mb-6'\n    )\n\n    const sizeClasses = {\n      sm: 'h-2',\n      md: 'h-3',\n      lg: 'h-4'\n    }\n\n    const trackClasses = clsx(\n      'relative overflow-hidden border-2 border-black',\n      'shadow-[inset_2px_2px_0px_rgba(0,0,0,0.2),3px_3px_0px_black]',\n      'transform -translate-y-px',\n      sizeClasses[size],\n      trackColorClasses[color]\n    )\n\n    const barClasses = clsx(\n      'h-full relative transition-all duration-300',\n      'shadow-[inset_-2px_-2px_0px_rgba(0,0,0,0.2)]',\n      'after:absolute after:top-0 after:right-0 after:w-1 after:h-full after:bg-black',\n      colorClasses[color],\n      indeterminate && 'animate-pulse'\n    )\n\n    return (\n      <div\n        ref={ref}\n        className={linearClasses}\n        role={progressRole}\n        aria-valuenow={ariaValueNow}\n        aria-valuemin={ariaValueMin}\n        aria-valuemax={ariaValueMax}\n        aria-label={ariaLabel}\n        {...props}\n      >\n        <div className={trackClasses}>\n          <div\n            className={barClasses}\n            style={{\n              width: indeterminate ? '30%' : `${progressValue}%`,\n              fontFamily: 'JetBrains Mono, monospace'\n            }}\n            aria-hidden=\"true\"\n          />\n        </div>\n        {showLabel && (\n          <div \n            className=\"mt-2 text-sm font-bold text-center text-black\"\n            style={{\n              fontFamily: 'JetBrains Mono, monospace'\n            }}\n          >\n            {labelText}\n          </div>\n        )}\n      </div>\n    )\n  }\n)\n\nProgress.displayName = 'Progress'","import { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\n\nexport interface SpinnerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n  /** Size of the spinner */\n  size?: 'sm' | 'md' | 'lg' | 'xl'\n  /** Color variant */\n  color?: 'default' | 'accent' | 'success' | 'warning' | 'error' | 'info'\n  /** Animation variant */\n  variant?: 'dots' | 'bars' | 'square' | 'glitch'\n  /** Speed of animation */\n  speed?: 'slow' | 'normal' | 'fast'\n  /** Label for accessibility */\n  label?: string\n  /** Additional CSS classes */\n  className?: string\n}\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(\n  (\n    {\n      size = 'md',\n      color = 'default',\n      variant = 'dots',\n      speed = 'normal',\n      label = 'Loading',\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    // Size classes\n    const sizeClasses = {\n      sm: {\n        container: 'w-4 h-4',\n        dot: 'w-1 h-1',\n        bar: 'w-0.5 h-2',\n        square: 'w-4 h-4',\n        glitch: 'w-4 h-4'\n      },\n      md: {\n        container: 'w-6 h-6',\n        dot: 'w-1.5 h-1.5',\n        bar: 'w-0.5 h-3',\n        square: 'w-6 h-6',\n        glitch: 'w-6 h-6'\n      },\n      lg: {\n        container: 'w-8 h-8',\n        dot: 'w-2 h-2',\n        bar: 'w-1 h-4',\n        square: 'w-8 h-8',\n        glitch: 'w-8 h-8'\n      },\n      xl: {\n        container: 'w-12 h-12',\n        dot: 'w-3 h-3',\n        bar: 'w-1.5 h-6',\n        square: 'w-12 h-12',\n        glitch: 'w-12 h-12'\n      }\n    }\n\n    // Color classes\n    const colorClasses = {\n      default: 'bg-black border-black',\n      accent: 'bg-yellow-400 border-yellow-400',\n      success: 'bg-green-400 border-green-400',\n      warning: 'bg-orange-400 border-orange-400',\n      error: 'bg-red-400 border-red-400',\n      info: 'bg-blue-400 border-blue-400'\n    }\n\n    // Animation speed classes\n    const speedClasses = {\n      slow: 'duration-2000',\n      normal: 'duration-1000',\n      fast: 'duration-500'\n    }\n\n    const renderSpinner = () => {\n      const baseClasses = clsx(\n        'border-2 border-black',\n        colorClasses[color],\n        speedClasses[speed]\n      )\n\n      switch (variant) {\n        case 'dots':\n          return (\n            <>\n              <span \n                className={clsx(\n                  baseClasses,\n                  sizeClasses[size].dot,\n                  'animate-pulse'\n                )}\n                style={{\n                  animationDelay: '0ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n              <span \n                className={clsx(\n                  baseClasses,\n                  sizeClasses[size].dot,\n                  'animate-pulse'\n                )}\n                style={{\n                  animationDelay: '200ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n              <span \n                className={clsx(\n                  baseClasses,\n                  sizeClasses[size].dot,\n                  'animate-pulse'\n                )}\n                style={{\n                  animationDelay: '400ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n            </>\n          )\n        case 'bars':\n          return (\n            <>\n              <span \n                className={clsx(\n                  baseClasses,\n                  sizeClasses[size].bar,\n                  'animate-bounce'\n                )}\n                style={{\n                  animationDelay: '0ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n              <span \n                className={clsx(\n                  baseClasses,\n                  sizeClasses[size].bar,\n                  'animate-bounce'\n                )}\n                style={{\n                  animationDelay: '100ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n              <span \n                className={clsx(\n                  baseClasses,\n                  sizeClasses[size].bar,\n                  'animate-bounce'\n                )}\n                style={{\n                  animationDelay: '200ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n              <span \n                className={clsx(\n                  baseClasses,\n                  sizeClasses[size].bar,\n                  'animate-bounce'\n                )}\n                style={{\n                  animationDelay: '300ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n            </>\n          )\n        case 'square':\n          return (\n            <span \n              className={clsx(\n                baseClasses,\n                sizeClasses[size].square,\n                'animate-spin border-4'\n              )}\n              style={{\n                fontFamily: 'JetBrains Mono, monospace'\n              }}\n            />\n          )\n        case 'glitch':\n          return (\n            <>\n              <span \n                className={clsx(\n                  baseClasses,\n                  sizeClasses[size].glitch,\n                  'absolute animate-ping border-4'\n                )}\n                style={{\n                  animationDelay: '0ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n              <span \n                className={clsx(\n                  'absolute border-2 bg-transparent',\n                  colorClasses[color].replace('bg-', 'border-'),\n                  sizeClasses[size].glitch,\n                  'animate-pulse'\n                )}\n                style={{\n                  animationDelay: '100ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n              <span \n                className={clsx(\n                  'absolute bg-black border-none scale-75',\n                  sizeClasses[size].glitch,\n                  'animate-ping'\n                )}\n                style={{\n                  animationDelay: '200ms',\n                  fontFamily: 'JetBrains Mono, monospace'\n                }}\n              />\n            </>\n          )\n        default:\n          return null\n      }\n    }\n\n    const containerClasses = clsx(\n      'inline-flex items-center justify-center gap-2',\n      variant === 'glitch' && 'relative',\n      variant === 'bars' && sizeClasses[size].container,\n      className\n    )\n\n    return (\n      <div\n        ref={ref}\n        className={containerClasses}\n        role=\"status\"\n        aria-label={label}\n        style={{\n          fontFamily: 'JetBrains Mono, monospace',\n          fontWeight: 'bold'\n        }}\n        {...props}\n      >\n        {renderSpinner()}\n        <span className=\"sr-only\">{label}</span>\n      </div>\n    )\n  }\n)\n\nSpinner.displayName = 'Spinner'","import React from 'react'\nimport { clsx } from 'clsx'\n\nexport interface SeparatorProps {\n  /** Orientation of the separator */\n  orientation?: 'horizontal' | 'vertical'\n  /** Thickness variant */\n  thickness?: 'thin' | 'medium' | 'thick'\n  /** Style variant */\n  variant?: 'solid' | 'dashed' | 'dotted' | 'double'\n  /** Custom CSS class */\n  className?: string\n  /** Additional CSS properties */\n  style?: React.CSSProperties\n  /** Decorative element in the middle (horizontal only) */\n  label?: string | React.ReactNode\n  /** Position of the label */\n  labelPosition?: 'start' | 'center' | 'end'\n  /** ARIA label for accessibility */\n  ariaLabel?: string\n}\n\nexport const Separator: React.FC<SeparatorProps> = ({\n  orientation = 'horizontal',\n  thickness = 'medium',\n  variant = 'solid',\n  className,\n  style,\n  label,\n  labelPosition = 'center',\n  ariaLabel = 'Separator',\n}) => {\n  const isHorizontal = orientation === 'horizontal'\n  \n  // Base classes\n  const baseClasses = clsx(\n    'flex items-center relative text-black',\n    isHorizontal ? 'w-full my-6' : 'h-full mx-6 flex-col',\n    className\n  )\n\n  // Thickness classes\n  const thicknessClasses = {\n    thin: isHorizontal ? 'border-t' : 'border-l',\n    medium: isHorizontal ? 'border-t-2' : 'border-l-2',\n    thick: isHorizontal ? 'border-t-4' : 'border-l-4'\n  }\n\n  // Style classes\n  const styleClasses = {\n    solid: 'border-black',\n    dashed: 'border-black border-dashed',\n    dotted: 'border-black border-dotted',\n    double: 'border-black border-double'\n  }\n\n  // If there's a label and it's horizontal, use different layout\n  if (label && isHorizontal) {\n    const lineClasses = clsx(\n      'flex-1 bg-black',\n      thickness === 'thin' ? 'h-px' : thickness === 'thick' ? 'h-1' : 'h-0.5'\n    )\n\n    // Special handling for different line styles\n    const getLineStyle = () => {\n      switch (variant) {\n        case 'dashed':\n          return {\n            background: 'repeating-linear-gradient(to right, black 0, black 8px, transparent 8px, transparent 16px)',\n            backgroundSize: '16px 100%',\n            backgroundColor: 'transparent'\n          }\n        case 'dotted':\n          return {\n            background: 'repeating-linear-gradient(to right, black 0, black 4px, transparent 4px, transparent 8px)',\n            backgroundSize: '8px 100%',\n            backgroundColor: 'transparent'\n          }\n        case 'double':\n          return {\n            backgroundColor: 'transparent',\n            borderTop: '2px solid black',\n            borderBottom: '2px solid black',\n            height: '6px'\n          }\n        default:\n          return {}\n      }\n    }\n\n    const labelClasses = clsx(\n      'flex-shrink-0 px-2 font-mono text-sm font-bold uppercase tracking-wide',\n      'text-black'\n    )\n\n    return (\n      <div\n        className={clsx(baseClasses, 'gap-4 border-none')}\n        style={{\n          ...style,\n          fontFamily: 'JetBrains Mono, monospace',\n          fontWeight: 'bold'\n        }}\n        role=\"separator\"\n        aria-orientation={orientation}\n        aria-label={ariaLabel}\n      >\n        {labelPosition !== 'start' && (\n          <div className={lineClasses} style={getLineStyle()} />\n        )}\n        <div className={labelClasses}>\n          {typeof label === 'string' ? <span>{label}</span> : label}\n        </div>\n        {labelPosition !== 'end' && (\n          <div className={lineClasses} style={getLineStyle()} />\n        )}\n      </div>\n    )\n  }\n\n  // Simple separator without label\n  return (\n    <div\n      className={clsx(\n        baseClasses,\n        thicknessClasses[thickness],\n        styleClasses[variant]\n      )}\n      style={{\n        ...style,\n        fontFamily: 'JetBrains Mono, monospace',\n        fontWeight: 'bold'\n      }}\n      role=\"separator\"\n      aria-orientation={orientation}\n      aria-label={ariaLabel}\n    />\n  )\n}\n\nSeparator.displayName = 'Separator'","import React, { forwardRef, HTMLAttributes } from 'react'\nimport { clsx } from 'clsx'\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n  /** Shape of the skeleton */\n  shape?: 'text' | 'circular' | 'rectangular'\n  /** Animation type */\n  animation?: 'pulse' | 'wave' | 'none'\n  /** Width of the skeleton (for rectangular and circular) */\n  width?: number | string\n  /** Height of the skeleton (for rectangular and circular) */\n  height?: number | string\n  /** Number of text lines (only for text shape) */\n  lines?: 1 | 2 | 3 | 4 | 5\n  /** Variant style */\n  variant?: 'default' | 'rounded'\n  /** Additional CSS classes */\n  className?: string\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n  (\n    {\n      shape = 'text',\n      animation = 'pulse',\n      width,\n      height,\n      lines = 1,\n      variant = 'default',\n      className,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    const isText = shape === 'text'\n    const isCircular = shape === 'circular'\n\n    // Generate styles for width and height\n    const dimensionStyles: React.CSSProperties = {\n      ...style,\n      ...(width && { width: typeof width === 'number' ? `${width}px` : width }),\n      ...(height && { height: typeof height === 'number' ? `${height}px` : height }),\n      fontFamily: 'JetBrains Mono, monospace',\n      fontWeight: 'bold'\n    }\n\n    // For circular, use width as diameter if height not specified\n    if (isCircular && width && !height) {\n      dimensionStyles.height = dimensionStyles.width\n    }\n\n    // Base classes\n    const baseClasses = clsx(\n      'bg-gray-200 border border-black block relative overflow-hidden',\n      // Shape classes\n      isText && 'h-5 leading-normal',\n      isCircular && 'rounded-full min-w-10 min-h-10',\n      shape === 'rectangular' && 'min-w-50 min-h-30',\n      // Variant classes\n      variant === 'rounded' && !isCircular && 'rounded',\n      // Animation classes\n      animation === 'pulse' && 'animate-pulse',\n      animation === 'wave' && 'bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 bg-[length:200%_100%] animate-[wave_1.6s_linear_infinite]',\n      className\n    )\n\n    // For text skeleton with multiple lines\n    if (isText && lines > 1) {\n      const textLines = Array.from({ length: lines }, (_, index) => {\n        const isLastLine = index === lines - 1\n        const lineWidth = isLastLine ? '75%' : '100%'\n        \n        return (\n          <div\n            key={index}\n            className={clsx(\n              'bg-gray-200 border border-black block relative overflow-hidden h-5 leading-normal',\n              animation === 'pulse' && 'animate-pulse',\n              animation === 'wave' && 'bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 bg-[length:200%_100%] animate-[wave_1.6s_linear_infinite]',\n              variant === 'rounded' && 'rounded'\n            )}\n            style={{ \n              width: lineWidth,\n              marginBottom: index < lines - 1 ? '8px' : 0,\n              fontFamily: 'JetBrains Mono, monospace',\n              fontWeight: 'bold'\n            }}\n            aria-hidden=\"true\"\n          />\n        )\n      })\n\n      return (\n        <div\n          ref={ref}\n          className=\"flex flex-col w-full\"\n          role=\"status\"\n          aria-label=\"Loading content\"\n          style={{\n            fontFamily: 'JetBrains Mono, monospace',\n            fontWeight: 'bold'\n          }}\n          {...props}\n        >\n          {textLines}\n        </div>\n      )\n    }\n\n    // Single skeleton element\n    return (\n      <div\n        ref={ref}\n        className={baseClasses}\n        style={dimensionStyles}\n        role=\"status\"\n        aria-label=\"Loading content\"\n        aria-hidden=\"true\"\n        {...props}\n      />\n    )\n  }\n)\n\nSkeleton.displayName = 'Skeleton'"],"names":["r","t","f","n","o","clsx","spacingScale","utilityPatterns","value","displayUtilities","flexUtilities","sizeUtilities","positionUtilities","overflowUtilities","typographyUtilities","colorUtilities","borderUtilities","shadowUtilities","opacityUtilities","ringUtilities","transformUtilities","cursorUtilities","transitionUtilities","parseUtilityClass","className","prefix","generator","parseUtilityClasses","classNames","classes","styles","parsed","extractUtilityClasses","utilities","others","cls","breakpoints","stateModifiers","parseModifiedUtility","parts","breakpoint","state","utility","modifier","utilityPart","breakpointPart","statePart","generateResponsiveCSS","selector","cssProperties","prop","generateStateCSS","groupUtilitiesByModifiers","base","responsive","states","responsiveStates","key","styleId","useResponsiveUtilities","options","style","componentClasses","componentId","styleElementRef","useRef","uniqueIdRef","result","useMemo","utilityClasses","nonUtilityClasses","baseStyles","grouped","generatedCSS","uniqueClass","breakpointStyles","stateStyles","transformValues","responsiveStateStyles","stateCss","breakpointValue","useEffect","useEnhancedUtilityStyles","useUtilityClasses","useUtilityCSS","parsedStyles","useUtilityStyles","useUtilityCSSClasses","Box","forwardRef","Component","children","props","ref","processedClassName","processedStyle","React","require$$0","k","l","m","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","reenableLogs","ReactCurrentDispatcher","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","beforeExample","afterExample","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","Button","variant","size","fullWidth","loading","leftIcon","rightIcon","brutalistShadow","glitch","disabled","Input","readOnly","inputClassName","inputStyle","wrapperClassName","wrapperStyle","inputElement","InputOTP","length","onChange","onComplete","autoFocus","placeholder","otp","setOtp","useState","arr","inputRefs","focusInput","index","_a","_b","handleChange","val","newOtp","otpValue","handleKeyDown","handlePaste","pastedData","char","lastFilledIndex","_","el","Textarea","autoResize","showCharacterCount","maxCharacters","minRows","maxRows","width","minWidth","maxWidth","defaultValue","internalValue","setInternalValue","textareaRef","isControlled","currentValue","charCount","setRefs","useCallback","adjustHeight","textarea","scrollHeight","minHeight","maxHeight","handleResize","newValue","isOverLimit","getWidthValue","wrapperStyleProcessed","textareaClassName","textareaStyle","isOptionGroup","option","CustomSelect","onBlur","onFocus","id","isOpen","setIsOpen","selectedValue","setSelectedValue","focusedIndex","setFocusedIndex","dropdownRef","triggerRef","useImperativeHandle","flatOptions","opt","handleClickOutside","event","handleToggle","handleOptionSelect","optionValue","prev","selectedOption","displayValue","groupIndex","flatIndex","fo","Select","customArrow","useCustomDropdown","onValueChange","selectClassName","selectStyle","processedOptions","label","groupLabel","groupOptions","optionChild","syntheticEvent","selectElement","Checkbox","indeterminate","internalRef","checkboxRef","checkbox","checkboxId","containerClassName","containerStyle","RadioGroupContext","createContext","RadioGroup","controlledValue","direction","uncontrolledValue","setUncontrolledValue","groupClassName","groupStyle","Radio","propSize","propDisabled","propError","propShadow","useContext","groupValue","groupDisabled","groupError","groupSize","groupShadow","isChecked","radioId","Switch","labelPosition","controlledChecked","defaultChecked","onCheckedChange","internalChecked","setInternalChecked","newChecked","switchId","isDisabled","switchElement","labelElement","Toggle","controlledPressed","defaultPressed","onPressedChange","onClick","asChild","internalPressed","setInternalPressed","isPressed","handleClick","newPressed","Comp","HoverCardContext","useHoverCard","HoverCard","defaultOpen","controlledOpen","onOpenChange","openDelay","closeDelay","internalOpen","setInternalOpen","open","openTimerRef","closeTimerRef","setOpen","newOpen","timer","HoverCardTrigger","_ref","triggerProps","HoverCardContent","side","align","sideOffset","alignOffset","collisionBoundary","hideWhenDetached","contentRef","position","setPosition","actualSide","setActualSide","handleMouseEnter","handleMouseLeave","updatePosition","trigger","content","triggerRect","contentRect","viewportWidth","viewportHeight","top","left","finalSide","variantElementMap","Typography","weight","transform","color","family","truncate","TypographyH1","TypographyH2","TypographyH3","TypographyH4","TypographyP","TypographyLead","TypographyLarge","TypographySmall","TypographyMuted","TypographyBlockquote","TypographyCode","TypographyList","CommandContext","useCommand","Command","onSelect","_filter","shouldFilter","search","setSearch","selectedIndex","setSelectedIndex","items","setItems","visibleCount","setVisibleCount","currentSearch","handleSearchChange","newSearch","contextValue","CommandInput","CommandList","CommandEmpty","CommandGroup","heading","CommandItem","keywords","onItemSelect","itemIndex","isMounted","newItems","prevItem","isSelected","shouldShow","searchLower","keyword","CommandSeparator","Slider","orientation","showValue","marks","min","max","propValue","trackClassName","thumbClassName","valueClassName","setValue","sliderRef","percentage","renderMarks","normalizedMarks","mark","markPercentage","markStyle","sliderStyle","finalStyle","Avatar","src","alt","initials","icon","status","clickable","imageError","setImageError","imageLoaded","setImageLoaded","handleImageError","handleImageLoad","hasImage","hasInitials","hasIcon","showImage","showInitials","showIcon","displayInitials","defaultIcon","isClickable","Badge","dismissible","onDismiss","isDot","isDismissible","handleDismiss","dismissIcon","Card","padding","hover","CardHeader","CardBody","CardFooter","CardComponent","Alert","dismissed","setDismissed","isExiting","setIsExiting","AlertIcon","DefaultIcon","AlertContent","AlertTitle","AlertDescription","AlertActions","AlertComponent","AlertStack","gap","Progress","showLabel","progressValue","isCircular","labelText","boxSize","pathLength","dashOffset","progressBarStyles","progressClassName","progressStyle","progressRole","ariaValueNow","ariaValueMin","ariaValueMax","ariaLabel","strokeWidth","svgSize","cornerSize","Skeleton","shape","animation","height","lines","isText","dimensionStyles","textLines","lineWidth","Tooltip","showDelay","hideDelay","controlledVisible","onVisibilityChange","showArrow","visible","setVisible","actualPosition","setActualPosition","coords","setCoords","tooltipRef","showTimeoutRef","hideTimeoutRef","isVisible","calculatePosition","tooltipRect","scrollX","scrollY","finalPosition","y","spaceTop","spaceBottom","spaceLeft","spaceRight","showTooltip","hideTooltip","handleScroll","timeout","triggerElement","childRef","tooltipPortal","createPortal","Fragment","PopoverContext","Popover","closeOnClickOutside","closeOnEscape","initialFocus","popoverRef","previousActiveElementRef","popoverRect","openPopover","closePopover","target","handleFocusManagement","focusableElements","initialElement","handleFocusTrap","firstElement","lastElement","_e","popoverPortal","PopoverContent","PopoverHeader","PopoverBody","PopoverFooter","usePopover","Separator","thickness","isHorizontal","CLASSIC_THEME","NEON_THEME","PASTEL_THEME","DARK_THEME","RETRO_THEME","NATURE_THEME","OCEAN_THEME","MONOCHROME_THEME","AVAILABLE_THEMES","DEFAULT_THEME","getThemeById","theme","CSS_VARIABLES_MAP","applyTheme","root","colorKey","colorValue","cssVariable","generateRandomTheme","randomId","randomColors","getRandomColorFromThemes","generateThemeCSS","generateThemeJS","generateCSSVariablesCode","generateReactThemeCode","generateThemeFile","generateAppFile","componentImport","componentUsage","generateMultiFileCode","componentCode","saveThemeToStorage","loadThemeFromStorage","savedTheme","isValidTheme","themeObj","getCurrentThemeFromDOM","computedStyle","currentColors","resetToDefaultTheme","ThemeContext","ThemeProvider","initialTheme","enablePersistence","currentTheme","setCurrentTheme","randomTheme","useTheme","useThemeColors","useIsThemeActive","themeId","useThemeSwitcher","setTheme","ThemePicker","showCode","onThemeChange","availableThemes","randomizeTheme","resetToDefault","showCodeSection","setShowCodeSection","codeType","setCodeType","copyFeedback","setCopyFeedback","handleThemeSelect","handleRandomize","handleReset","copyToClipboard","text","generateCode","getPreviewColors","colorName","Table","hoverable","TableHead","sticky","TableBody","TableRow","TableHeader","sortable","sortDirection","onSort","TableCell","numeric","TableNamespace","Spinner","speed","renderSpinner","spinnerClassName","spinnerStyle","ToastContext","ToastProvider","maxToasts","toasts","setToasts","showToast","toast","newToast","hideToast","hideAllToasts","registerToastStore","toastStore","ToastContainer","ToastItem","title","message","duration","action","getIcon","useToast","store","DialogContext","Dialog","backdrop","closeOnBackdropClick","animate","dialogRef","close","handleBackdropClick","DialogHeader","DialogTitle","DialogBody","DialogFooter","DialogClose","useDialog","DialogNamespace","DrawerContext","useDrawer","Drawer","handleOpenChange","DrawerTrigger","DrawerContent","showOverlay","closeOnOverlayClick","handleEscape","originalStyle","activeElement","drawerContent","focusableElement","DrawerHeader","DrawerTitle","DrawerDescription","DrawerBody","DrawerFooter","DrawerClose","DrawerWithSubComponents","DropdownContext","Dropdown","offset","closeOnItemClick","menuContent","DropdownMenu","dropdownRect","main","alignment","toggleDropdown","closeDropdown","rect","DropdownItem","destructive","shortcut","DropdownSeparator","DropdownLabel","useDropdown","TabsContext","Tabs","activeTab","setActiveTab","TabsList","TabsTrigger","isActive","TabsContent","forceMount","useTabs","TabsNamespace","Container","centered","Stack","justify","wrap","Breadcrumb","separator","isLast","BreadcrumbItem","isCurrentPage","BreadcrumbLink","BreadcrumbPage","SidebarContext","Sidebar","collapsible","collapsed","_onCollapsedChange","SidebarHeader","SidebarContent","SidebarFooter","SidebarGroup","SidebarGroupLabel","SidebarGroupContent","SidebarMenu","SidebarMenuItem","SidebarMenuButton","useSidebar","Navigation","vertical","NavigationList","NavigationItem","NavigationLink","href","NavigationSeparator","TableOfContents","showTitle","TableOfContentsList","TableOfContentsItem","TableOfContentsLink","AccordionContext","AccordionItemContext","Accordion","handleValueChange","AccordionItem","itemDisabled","accordionValue","accordionDisabled","baseId","useId","triggerId","contentId","toggle","v","AccordionTrigger","hideIcon","itemContext","accordionContext","DefaultChevronIcon","AccordionContent","AccordionComponent","ComboboxContext","useCombobox","Combobox","emptyMessage","searchPlaceholder","searchValue","setSearchValue","highlightedIndex","setHighlightedIndex","filteredOptions","ComboboxTrigger","triggerPlaceholder","contextPlaceholder","finalPlaceholder","ComboboxContent","contentSearchPlaceholder","contentEmptyMessage","contextSearchPlaceholder","contextEmptyMessage","finalSearchPlaceholder","finalEmptyMessage","handleUpdate","ComboboxOption","optionIndex","isHighlighted","ComboboxWithSubComponents","BarChart","data","subtitle","showValues","showGrid","animated","showContainer","borderStyle","maxValue","headerHeight","actualChartHeight","defaultColors","barHeight","LineChart","lineColor","showDots","smooth","minValue","valueRange","pathData","points","point","path","cp1x","cp1y","cp2x","cp2y","dotSize","PieChart","showLabels","total","sum","radius","centerX","centerY","cumulativeAngle","slices","angle","startAngle","endAngle","startAngleRad","endAngleRad","x1","y1","x2","y2","largeArcFlag","labelAngle","labelRadius","labelX","labelY","slice","AreaChart","fillColor","fillOpacity","generateAreaPath","linePath","areaPath","AspectRatio","ratio","objectFit","backgroundColor","paddingBottom","DOTS","usePaginationRange","currentPage","totalPages","siblingCount","boundaryCount","leftSiblingIndex","rightSiblingIndex","shouldShowLeftDots","shouldShowRightDots","firstPages","lastPages","leftItemCount","rightItemCount","rightRange","middleRange","Pagination","showPrevNext","showFirstLast","labels","paginationRange","page","pageNumber","ContextMenuContext","useContextMenu","ContextMenu","onOpen","onClose","ContextMenuTrigger","ContextMenuContent","collisionPadding","avoidCollisions","container","sizeProp","variantProp","rest","contextSize","contextVariant","refCallback","adjustedPosition","setAdjustedPosition","ContextMenuItem","closeOnSelect","checked","dotted","setIsHighlighted","ContextMenuSeparator","ContextMenuLabel","ContextMenuSub","parentContext","hoverTimeoutRef","closeTimeoutRef","handleOpen","handleKeepOpen","handleClose","ContextMenuSubTrigger","ContextMenuSubContent","onMouseEnter","onMouseLeave","elementRef","subRefCallback","ContextMenuNamespace","SheetContext","useSheet","Sheet","SheetTrigger","SheetContent","onEscapeKeyDown","onPointerDownOutside","onInteractOutside","onOpenAutoFocus","onCloseAutoFocus","overlayRef","sheetRefCallback","previousActiveElement","firstFocusable","focusEvent","handlePointerDown","overlay","SheetHeader","SheetTitle","SheetDescription","SheetFooter","SheetClose","SheetNamespace","CarouselContext","useCarousel","Carousel","autoPlay","autoPlayInterval","loop","currentIndex","setCurrentIndexState","totalItems","setTotalItems","setCurrentIndex","newIndex","interval","CarouselContent","CarouselControls","CarouselPrevious","CarouselNext","CarouselIndicators","CarouselComponent","ChartContext","useChart","Chart","showBorder","showShadow","aspectRatio","chartStyle","ChartHeader","ChartTitle","ChartSubtitle","ChartContent","ChartLegend","ChartFooter","ChartComponent","ScrollArea","horizontal","scrollbarSize","autoHide","onScroll","scrollRef","isScrolling","setIsScrolling","showVerticalScrollbar","setShowVerticalScrollbar","showHorizontalScrollbar","setShowHorizontalScrollbar","verticalThumbHeight","setVerticalThumbHeight","horizontalThumbWidth","setHorizontalThumbWidth","verticalThumbTop","setVerticalThumbTop","horizontalThumbLeft","setHorizontalThumbLeft","containerClasses","updateScrollbars","clientHeight","scrollWidth","clientWidth","scrollTop","scrollLeft","hasVerticalScroll","thumbHeight","maxThumbTop","thumbTop","hasHorizontalScroll","thumbWidth","maxThumbLeft","thumbLeft","handleVerticalMouseDown","startY","startTop","handleMouseMove","deltaY","scrollRatio","handleMouseUp","handleHorizontalMouseDown","startX","startLeft","deltaX","resizeObserver","scrollAreaStyle","Wireframe","hatched","interactive","scrollable","scrollDirection","customHeight","WireframeGroup","WireframeWithGroup","ComicText","fontSize","GlitchText","intensity","StampText","rotation","ink","NoiseTexture","blendMode","opacity","noiseScale","turbulenceType","numOctaves","HalftonePattern","dotSpacing","maxRadius","minRadius","svgElement","setSvgElement","dimensions","setDimensions","updateDimensions","cols","rows","calculateRadius","distance","maxDistance","normalized","radians","dotProduct","maxDot","hash","random","waveX","waveY","combined","dots","row","col","dot","BrutalGrid","cellWidth","cellHeight","shapes","shapesList","baseClasses","sizeClasses","variantClasses","shadowClasses","glitchClasses","widthClasses","loadingClasses","combinedClasses","paddingClasses","interactionClasses","headerClasses","bodyClasses","footerClasses","iconPadding","colorClasses","typeVariantClasses","dismissibleClasses","labelSizeClasses","checkboxClasses","inputClasses","checkmarkClasses","indeterminateLineClasses","labelClasses","textSizeClasses","statusSizeClasses","statusColorClasses","avatarClasses","statusClasses","trackColorClasses","circularClasses","strokeColorClasses","trackStrokeClasses","linearClasses","trackClasses","barClasses","speedClasses","thicknessClasses","styleClasses","lineClasses","getLineStyle"],"mappings":"iIAAA,SAASA,GAAE,EAAE,CAAC,IAAIC,EAAEC,EAAEC,EAAE,GAAG,GAAa,OAAO,GAAjB,UAA8B,OAAO,GAAjB,SAAmBA,GAAG,UAAoB,OAAO,GAAjB,SAAmB,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,IAAIC,EAAE,EAAE,OAAO,IAAIH,EAAE,EAAEA,EAAEG,EAAEH,IAAI,EAAEA,CAAC,IAAIC,EAAEF,GAAE,EAAEC,CAAC,CAAC,KAAKE,IAAIA,GAAG,KAAKA,GAAGD,EAAE,KAAM,KAAIA,KAAK,EAAE,EAAEA,CAAC,IAAIC,IAAIA,GAAG,KAAKA,GAAGD,GAAG,OAAOC,CAAC,CAAQ,SAASE,GAAM,CAAC,QAAQ,EAAEJ,EAAEC,EAAE,EAAEC,EAAE,GAAGC,EAAE,UAAU,OAAOF,EAAEE,EAAEF,KAAK,EAAE,UAAUA,CAAC,KAAKD,EAAED,GAAE,CAAC,KAAKG,IAAIA,GAAG,KAAKA,GAAGF,GAAG,OAAOE,CAAC,CCM/W,MAAMG,GAAuC,CAC3C,EAAK,IACL,EAAK,wBACL,EAAK,wBACL,EAAK,wBACL,EAAK,wBACL,EAAK,wBACL,EAAK,wBACL,EAAK,wBACL,GAAM,yBACN,GAAM,yBACN,GAAM,yBACN,GAAM,yBACN,GAAM,wBACR,EAGMC,GAAkB,CAEtB,EAAMC,IAAmB,CAAE,QAASF,GAAaE,CAAK,IACtD,GAAOA,IAAmB,CAAE,WAAYF,GAAaE,CAAK,IAC1D,GAAOA,IAAmB,CAAE,aAAcF,GAAaE,CAAK,IAC5D,GAAOA,IAAmB,CAAE,cAAeF,GAAaE,CAAK,IAC7D,GAAOA,IAAmB,CAAE,YAAaF,GAAaE,CAAK,IAC3D,GAAOA,IAAmB,CAAE,YAAaF,GAAaE,CAAK,EAAG,aAAcF,GAAaE,CAAK,IAC9F,GAAOA,IAAmB,CAAE,WAAYF,GAAaE,CAAK,EAAG,cAAeF,GAAaE,CAAK,IAG9F,EAAMA,IAAmB,CAAE,OAAQF,GAAaE,CAAK,IACrD,GAAOA,IAAmB,CAAE,UAAWF,GAAaE,CAAK,IACzD,GAAOA,IAAmB,CAAE,YAAaF,GAAaE,CAAK,IAC3D,GAAOA,IAAmB,CAAE,aAAcF,GAAaE,CAAK,IAC5D,GAAOA,IAAmB,CAAE,WAAYF,GAAaE,CAAK,IAC1D,GAAOA,IAAmB,CAAE,WAAYF,GAAaE,CAAK,EAAG,YAAaF,GAAaE,CAAK,IAC5F,GAAOA,IAAmB,CAAE,UAAWF,GAAaE,CAAK,EAAG,aAAcF,GAAaE,CAAK,IAG5F,IAAQA,IAAmB,CAAE,IAAKF,GAAaE,CAAK,IACpD,QAAUA,IAAmB,CAAE,UAAWF,GAAaE,CAAK,IAC5D,QAAUA,IAAmB,CAAE,OAAQF,GAAaE,CAAK,CAAA,EAC3D,EAGMC,GAAwD,CAC5D,MAAS,CAAE,QAAS,OAAA,EACpB,eAAgB,CAAE,QAAS,cAAA,EAC3B,OAAU,CAAE,QAAS,QAAA,EACrB,KAAQ,CAAE,QAAS,MAAA,EACnB,cAAe,CAAE,QAAS,aAAA,EAC1B,KAAQ,CAAE,QAAS,MAAA,EACnB,OAAU,CAAE,QAAS,MAAA,CACvB,EAGMC,GAAqD,CACzD,WAAY,CAAE,cAAe,KAAA,EAC7B,mBAAoB,CAAE,cAAe,aAAA,EACrC,WAAY,CAAE,cAAe,QAAA,EAC7B,mBAAoB,CAAE,cAAe,gBAAA,EACrC,YAAa,CAAE,SAAU,MAAA,EACzB,cAAe,CAAE,SAAU,QAAA,EAC3B,cAAe,CAAE,WAAY,YAAA,EAC7B,YAAa,CAAE,WAAY,UAAA,EAC3B,eAAgB,CAAE,WAAY,QAAA,EAC9B,iBAAkB,CAAE,WAAY,UAAA,EAChC,gBAAiB,CAAE,WAAY,SAAA,EAC/B,gBAAiB,CAAE,eAAgB,YAAA,EACnC,cAAe,CAAE,eAAgB,UAAA,EACjC,iBAAkB,CAAE,eAAgB,QAAA,EACpC,kBAAmB,CAAE,eAAgB,eAAA,EACrC,iBAAkB,CAAE,eAAgB,cAAA,EACpC,iBAAkB,CAAE,eAAgB,cAAA,CACtC,EAGMC,GAAqD,CACzD,SAAU,CAAE,MAAO,MAAA,EACnB,SAAU,CAAE,MAAO,MAAA,EACnB,SAAU,CAAE,OAAQ,MAAA,EACpB,SAAU,CAAE,OAAQ,MAAA,CACtB,EAGMC,GAAyD,CAC7D,SAAY,CAAE,SAAU,UAAA,EACxB,SAAY,CAAE,SAAU,UAAA,EACxB,MAAS,CAAE,SAAU,OAAA,EACrB,OAAU,CAAE,SAAU,QAAA,EACtB,OAAU,CAAE,SAAU,QAAA,CACxB,EAGMC,GAAyD,CAC7D,gBAAiB,CAAE,SAAU,MAAA,EAC7B,kBAAmB,CAAE,SAAU,QAAA,EAC/B,mBAAoB,CAAE,SAAU,SAAA,EAChC,kBAAmB,CAAE,SAAU,QAAA,EAC/B,kBAAmB,CAAE,UAAW,MAAA,EAChC,kBAAmB,CAAE,UAAW,MAAA,CAClC,EAGMC,GAA2D,CAE/D,UAAW,CAAE,SAAU,UAAW,WAAY,MAAA,EAC9C,UAAW,CAAE,SAAU,WAAY,WAAY,SAAA,EAC/C,YAAa,CAAE,SAAU,OAAQ,WAAY,QAAA,EAC7C,UAAW,CAAE,SAAU,WAAY,WAAY,SAAA,EAC/C,UAAW,CAAE,SAAU,UAAW,WAAY,SAAA,EAC9C,WAAY,CAAE,SAAU,SAAU,WAAY,MAAA,EAC9C,WAAY,CAAE,SAAU,WAAY,WAAY,SAAA,EAChD,WAAY,CAAE,SAAU,UAAW,WAAY,QAAA,EAC/C,WAAY,CAAE,SAAU,OAAQ,WAAY,GAAA,EAC5C,WAAY,CAAE,SAAU,UAAW,WAAY,GAAA,EAG/C,YAAa,CAAE,UAAW,MAAA,EAC1B,cAAe,CAAE,UAAW,QAAA,EAC5B,aAAc,CAAE,UAAW,OAAA,EAC3B,eAAgB,CAAE,UAAW,SAAA,EAG7B,cAAe,CAAE,WAAY,4BAAA,EAC7B,cAAe,CAAE,WAAY,2BAAA,EAC7B,YAAa,CAAE,WAAY,yBAAA,EAC3B,aAAc,CAAE,WAAY,0BAAA,EAG5B,UAAa,CAAE,cAAe,WAAA,EAC9B,UAAa,CAAE,cAAe,WAAA,EAC9B,WAAc,CAAE,cAAe,YAAA,EAC/B,cAAe,CAAE,cAAe,MAAA,EAGhC,eAAgB,CAAE,WAAY,GAAA,EAC9B,gBAAiB,CAAE,WAAY,MAAA,EAC/B,eAAgB,CAAE,WAAY,OAAA,EAC9B,iBAAkB,CAAE,WAAY,KAAA,EAChC,kBAAmB,CAAE,WAAY,OAAA,EACjC,gBAAiB,CAAE,WAAY,GAAA,EAG/B,mBAAoB,CAAE,cAAe,SAAA,EACrC,iBAAkB,CAAE,cAAe,UAAA,EACnC,kBAAmB,CAAE,cAAe,GAAA,EACpC,gBAAiB,CAAE,cAAe,SAAA,EAClC,iBAAkB,CAAE,cAAe,QAAA,EACnC,kBAAmB,CAAE,cAAe,OAAA,CACtC,EAGMC,GAAsD,CAE1D,aAAc,CAAE,MAAO,qBAAA,EACvB,aAAc,CAAE,MAAO,qBAAA,EACvB,cAAe,CAAE,MAAO,sBAAA,EACxB,eAAgB,CAAE,MAAO,SAAA,EACzB,gBAAiB,CAAE,MAAO,SAAA,EAC1B,gBAAiB,CAAE,MAAO,SAAA,EAC1B,gBAAiB,CAAE,MAAO,SAAA,EAC1B,gBAAiB,CAAE,MAAO,SAAA,EAC1B,gBAAiB,CAAE,MAAO,SAAA,EAC1B,gBAAiB,CAAE,MAAO,SAAA,EAC1B,gBAAiB,CAAE,MAAO,SAAA,EAC1B,gBAAiB,CAAE,MAAO,SAAA,EAC1B,gBAAiB,CAAE,MAAO,SAAA,EAC1B,WAAY,CAAE,MAAO,SAAA,EACrB,YAAa,CAAE,MAAO,SAAA,EACtB,aAAc,CAAE,MAAO,SAAA,EACvB,cAAe,CAAE,MAAO,SAAA,EACxB,cAAe,CAAE,MAAO,SAAA,EACxB,YAAa,CAAE,MAAO,SAAA,EAGtB,WAAY,CAAE,gBAAiB,qBAAA,EAC/B,WAAY,CAAE,gBAAiB,qBAAA,EAC/B,YAAa,CAAE,gBAAiB,sBAAA,EAChC,aAAc,CAAE,gBAAiB,SAAA,EACjC,cAAe,CAAE,gBAAiB,SAAA,EAClC,cAAe,CAAE,gBAAiB,SAAA,EAClC,cAAe,CAAE,gBAAiB,SAAA,EAClC,cAAe,CAAE,gBAAiB,SAAA,EAClC,cAAe,CAAE,gBAAiB,SAAA,EAClC,cAAe,CAAE,gBAAiB,SAAA,EAClC,cAAe,CAAE,gBAAiB,SAAA,EAClC,cAAe,CAAE,gBAAiB,SAAA,EAClC,cAAe,CAAE,gBAAiB,SAAA,EAClC,SAAU,CAAE,gBAAiB,SAAA,EAC7B,UAAW,CAAE,gBAAiB,SAAA,EAC9B,WAAY,CAAE,gBAAiB,SAAA,EAC/B,YAAa,CAAE,gBAAiB,SAAA,EAChC,YAAa,CAAE,gBAAiB,SAAA,EAChC,UAAW,CAAE,gBAAiB,SAAA,CAChC,EAGMC,GAAuD,CAC3D,OAAU,CAAE,OAAQ,sDAAA,EACpB,WAAY,CAAE,YAAa,GAAA,EAC3B,WAAY,CAAE,YAAa,MAAO,YAAa,OAAA,EAC/C,WAAY,CAAE,YAAa,MAAO,YAAa,OAAA,EAC/C,WAAY,CAAE,YAAa,MAAO,YAAa,OAAA,EAC/C,WAAY,CAAE,UAAW,sDAAA,EACzB,WAAY,CAAE,YAAa,sDAAA,EAC3B,WAAY,CAAE,aAAc,sDAAA,EAC5B,WAAY,CAAE,WAAY,sDAAA,EAC1B,eAAgB,CAAE,YAAa,qBAAA,EAC/B,eAAgB,CAAE,YAAa,qBAAA,EAC/B,gBAAiB,CAAE,YAAa,sBAAA,EAChC,iBAAkB,CAAE,YAAa,SAAA,EACjC,kBAAmB,CAAE,YAAa,SAAA,EAClC,kBAAmB,CAAE,YAAa,SAAA,EAClC,kBAAmB,CAAE,YAAa,SAAA,EAClC,kBAAmB,CAAE,YAAa,SAAA,EAClC,kBAAmB,CAAE,YAAa,SAAA,EAClC,kBAAmB,CAAE,YAAa,SAAA,EAClC,kBAAmB,CAAE,YAAa,SAAA,EAClC,kBAAmB,CAAE,YAAa,SAAA,EAClC,kBAAmB,CAAE,YAAa,SAAA,EAGlC,eAAgB,CAAE,aAAc,GAAA,EAChC,aAAc,CAAE,aAAc,UAAA,EAC9B,QAAW,CAAE,aAAc,SAAA,EAC3B,aAAc,CAAE,aAAc,UAAA,EAC9B,aAAc,CAAE,aAAc,QAAA,EAC9B,aAAc,CAAE,aAAc,SAAA,EAC9B,cAAe,CAAE,aAAc,MAAA,EAC/B,eAAgB,CAAE,aAAc,QAAA,CAClC,EAGMC,GAAuD,CAC3D,cAAe,CAAE,UAAW,MAAA,EAC5B,gBAAiB,CAAE,UAAW,sBAAA,EAC9B,mBAAoB,CAAE,UAAW,+BAAA,EACjC,mBAAoB,CAAE,UAAW,+BAAA,EACjC,mBAAoB,CAAE,UAAW,+BAAA,EACjC,mBAAoB,CAAE,UAAW,+BAAA,CACnC,EAGMC,GAAwD,CAC5D,YAAa,CAAE,QAAS,GAAA,EACxB,YAAa,CAAE,QAAS,MAAA,EACxB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,MAAA,EACzB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,MAAA,EACzB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,KAAA,EACzB,aAAc,CAAE,QAAS,MAAA,EACzB,cAAe,CAAE,QAAS,GAAA,CAC5B,EAGMC,GAAqD,CACzD,SAAU,CAAE,UAAW,+BAAA,EACvB,SAAU,CAAE,UAAW,+BAAA,EACvB,SAAU,CAAE,UAAW,+BAAA,EACvB,SAAU,CAAE,UAAW,+BAAA,EACvB,SAAU,CAAE,UAAW,+BAAA,EACvB,aAAc,CAAE,UAAW,+BAAA,EAC3B,aAAc,CAAE,UAAW,+BAAA,EAC3B,cAAe,CAAE,UAAW,gCAAA,EAC5B,cAAe,CAAE,UAAW,mBAAA,EAE5B,gBAAiB,CAAE,UAAW,+CAAA,EAC9B,gBAAiB,CAAE,UAAW,gDAAA,EAC9B,gBAAiB,CAAE,UAAW,gDAAA,EAC9B,gBAAiB,CAAE,UAAW,gDAAA,EAC9B,gBAAiB,CAAE,UAAW,iDAAA,CAChC,EAGMC,GAA0D,CAC9D,gBAAiB,CAAE,UAAW,iBAAA,EAC9B,gBAAiB,CAAE,UAAW,qBAAA,EAC9B,gBAAiB,CAAE,UAAW,oBAAA,EAC9B,gBAAiB,CAAE,UAAW,kBAAA,EAC9B,gBAAiB,CAAE,UAAW,iBAAA,EAC9B,gBAAiB,CAAE,UAAW,qBAAA,EAC9B,gBAAiB,CAAE,UAAW,oBAAA,EAC9B,gBAAiB,CAAE,UAAW,kBAAA,EAC9B,UAAW,CAAE,UAAW,UAAA,EACxB,WAAY,CAAE,UAAW,YAAA,EACzB,WAAY,CAAE,UAAW,aAAA,EACzB,WAAY,CAAE,UAAW,YAAA,EACzB,WAAY,CAAE,UAAW,aAAA,EACzB,YAAa,CAAE,UAAW,UAAA,EAC1B,YAAa,CAAE,UAAW,aAAA,EAC1B,YAAa,CAAE,UAAW,YAAA,EAC1B,YAAa,CAAE,UAAW,aAAA,EAC1B,YAAa,CAAE,UAAW,YAAA,EAC1B,WAAY,CAAE,UAAW,cAAA,EACzB,WAAY,CAAE,UAAW,cAAA,EACzB,WAAY,CAAE,UAAW,cAAA,EACzB,WAAY,CAAE,UAAW,cAAA,EACzB,WAAY,CAAE,UAAW,cAAA,EACzB,YAAa,CAAE,UAAW,eAAA,EAC1B,YAAa,CAAE,UAAW,eAAA,EAC1B,YAAa,CAAE,UAAW,eAAA,EAC1B,aAAc,CAAE,UAAW,gBAAA,CAC7B,EAGMC,GAAuD,CAC3D,cAAe,CAAE,OAAQ,MAAA,EACzB,iBAAkB,CAAE,OAAQ,SAAA,EAC5B,iBAAkB,CAAE,OAAQ,SAAA,EAC5B,cAAe,CAAE,OAAQ,MAAA,EACzB,cAAe,CAAE,OAAQ,MAAA,EACzB,cAAe,CAAE,OAAQ,MAAA,EACzB,cAAe,CAAE,OAAQ,MAAA,EACzB,qBAAsB,CAAE,OAAQ,aAAA,EAChC,cAAe,CAAE,OAAQ,MAAA,EACzB,sBAAuB,CAAE,OAAQ,cAAA,EACjC,kBAAmB,CAAE,OAAQ,UAAA,EAC7B,cAAe,CAAE,OAAQ,MAAA,EACzB,mBAAoB,CAAE,OAAQ,WAAA,EAC9B,uBAAwB,CAAE,OAAQ,eAAA,EAClC,eAAgB,CAAE,OAAQ,OAAA,EAC1B,cAAe,CAAE,OAAQ,MAAA,EACzB,iBAAkB,CAAE,OAAQ,SAAA,EAC5B,cAAe,CAAE,OAAQ,MAAA,EACzB,kBAAmB,CAAE,OAAQ,UAAA,CAC/B,EAGMC,GAA2D,CAC/D,kBAAmB,CAAE,WAAY,MAAA,EACjC,iBAAkB,CAAE,WAAY,wCAAA,EAChC,WAAc,CAAE,WAAY,8RAAA,EAC5B,oBAAqB,CAAE,WAAY,8RAAA,EACnC,qBAAsB,CAAE,WAAY,4CAAA,EACpC,oBAAqB,CAAE,WAAY,+CAAA,EACnC,uBAAwB,CAAE,WAAY,8CAAA,EAEtC,cAAe,CAAE,mBAAoB,MAAA,EACrC,eAAgB,CAAE,mBAAoB,OAAA,EACtC,eAAgB,CAAE,mBAAoB,OAAA,EACtC,eAAgB,CAAE,mBAAoB,OAAA,EACtC,eAAgB,CAAE,mBAAoB,OAAA,EACtC,eAAgB,CAAE,mBAAoB,OAAA,EACtC,eAAgB,CAAE,mBAAoB,OAAA,EACtC,gBAAiB,CAAE,mBAAoB,QAAA,CACzC,EAKO,SAASC,GAAkBC,EAA+C,CAE/E,GAAIf,GAAiBe,CAAS,EAC5B,OAAOf,GAAiBe,CAAS,EAInC,GAAId,GAAcc,CAAS,EACzB,OAAOd,GAAcc,CAAS,EAIhC,GAAIb,GAAca,CAAS,EACzB,OAAOb,GAAca,CAAS,EAIhC,GAAIZ,GAAkBY,CAAS,EAC7B,OAAOZ,GAAkBY,CAAS,EAIpC,GAAIX,GAAkBW,CAAS,EAC7B,OAAOX,GAAkBW,CAAS,EAIpC,GAAIV,GAAoBU,CAAS,EAC/B,OAAOV,GAAoBU,CAAS,EAItC,GAAIT,GAAeS,CAAS,EAC1B,OAAOT,GAAeS,CAAS,EAIjC,GAAIR,GAAgBQ,CAAS,EAC3B,OAAOR,GAAgBQ,CAAS,EAIlC,GAAIP,GAAgBO,CAAS,EAC3B,OAAOP,GAAgBO,CAAS,EAIlC,GAAIN,GAAiBM,CAAS,EAC5B,OAAON,GAAiBM,CAAS,EAInC,GAAIL,GAAcK,CAAS,EACzB,OAAOL,GAAcK,CAAS,EAIhC,GAAIJ,GAAmBI,CAAS,EAC9B,OAAOJ,GAAmBI,CAAS,EAIrC,GAAIF,GAAoBE,CAAS,EAC/B,OAAOF,GAAoBE,CAAS,EAItC,GAAIH,GAAgBG,CAAS,EAC3B,OAAOH,GAAgBG,CAAS,EAIlC,SAAW,CAACC,EAAQC,CAAS,IAAK,OAAO,QAAQnB,EAAe,EAC9D,GAAIiB,EAAU,WAAW,GAAGC,CAAM,GAAG,EAAG,CACtC,MAAMjB,EAAQgB,EAAU,MAAMC,EAAO,OAAS,CAAC,EAC/C,GAAInB,GAAaE,CAAK,EACpB,OAAOkB,EAAUlB,CAAK,CAE1B,CAIF,OAAIgB,IAAc,SAAiB,CAAE,OAAQ,MAAA,EACzCA,IAAc,UAAkB,CAAE,UAAW,MAAA,EAC7CA,IAAc,UAAkB,CAAE,YAAa,MAAA,EAC/CA,IAAc,UAAkB,CAAE,aAAc,MAAA,EAChDA,IAAc,UAAkB,CAAE,WAAY,MAAA,EAC9CA,IAAc,UAAkB,CAAE,WAAY,OAAQ,YAAa,MAAA,EACnEA,IAAc,UAAkB,CAAE,UAAW,OAAQ,aAAc,MAAA,EAEhE,IACT,CAKO,SAASG,GAAoBC,EAAyC,CAC3E,MAAMC,EAAUD,EAAW,MAAM,GAAG,EAAE,OAAO,OAAO,EAC9CE,EAA8B,CAAA,EAEpC,UAAWN,KAAaK,EAAS,CAC/B,MAAME,EAASR,GAAkBC,CAAS,EACtCO,GACF,OAAO,OAAOD,EAAQC,CAAM,CAEhC,CAEA,OAAOD,CACT,CAKO,SAASE,GAAsBR,EAIpC,CACA,MAAMK,EAAUL,EAAU,MAAM,GAAG,EAAE,OAAO,OAAO,EAC7CS,EAAsB,CAAA,EACtBC,EAAmB,CAAA,EACnBJ,EAA8B,CAAA,EAEpC,UAAWK,KAAON,EAAS,CACzB,MAAME,EAASR,GAAkBY,CAAG,EAChCJ,GACFE,EAAU,KAAKE,CAAG,EAClB,OAAO,OAAOL,EAAQC,CAAM,GAE5BG,EAAO,KAAKC,CAAG,CAEnB,CAEA,MAAO,CAAE,UAAAF,EAAW,OAAAC,EAAQ,OAAAJ,CAAA,CAC9B,CC3eO,MAAMM,GAAc,CACzB,GAAI,QACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,MAAO,QACT,EAGaC,GAAiB,CAC5B,QACA,QACA,SACA,WACA,eACA,eACF,EAYO,SAASC,GAAqBd,EAInC,CACA,MAAMe,EAAQf,EAAU,MAAM,GAAG,EAEjC,GAAIe,EAAM,SAAW,EAEnB,MAAO,CAAE,QAASA,EAAM,CAAC,CAAA,EAG3B,IAAIC,EACAC,EACAC,EAEJ,GAAIH,EAAM,SAAW,EAAG,CAEtB,KAAM,CAACI,EAAUC,CAAW,EAAIL,EAE5BI,KAAYP,GACdI,EAAaG,EACJN,GAAe,SAASM,CAAyB,IAC1DF,EAAQE,GAGVD,EAAUE,CACZ,SAAWL,EAAM,SAAW,EAAG,CAE7B,KAAM,CAACM,EAAgBC,EAAWF,CAAW,EAAIL,EAE7CM,KAAkBT,KACpBI,EAAaK,GAGXR,GAAe,SAASS,CAA0B,IACpDL,EAAQK,GAGVJ,EAAUE,CACZ,MAEEF,EAAUH,EAAMA,EAAM,OAAS,CAAC,EAGlC,MAAO,CAAE,WAAAC,EAAY,MAAAC,EAAO,QAAAC,CAAA,CAC9B,CAKO,SAASK,GACdP,EACAQ,EACAlB,EACQ,CACR,MAAMmB,EAAgB,OAAO,QAAQnB,CAAM,EACxC,IAAI,CAAC,CAACoB,EAAM1C,CAAK,IAET,GADS0C,EAAK,QAAQ,WAAY,KAAK,EAAE,YAAA,CAC/B,KAAK1C,CAAK,GAC5B,EACA,KAAK;AAAA,KAAQ,EAEhB,MAAO;AAAA,uBACc4B,GAAYI,CAAU,CAAC;AAAA,MACxCQ,CAAQ;AAAA,QACNC,CAAa;AAAA;AAAA,IAGrB,CAKO,SAASE,GACdV,EACAO,EACAlB,EACQ,CACR,MAAMmB,EAAgB,OAAO,QAAQnB,CAAM,EACxC,IAAI,CAAC,CAACoB,EAAM1C,CAAK,IAGT,GAFS0C,EAAK,QAAQ,WAAY,KAAK,EAAE,YAAA,CAE/B,KAAK1C,CAAK,cAC5B,EACA,KAAK;AAAA,KAAQ,EAMhB,MAAO;AAAA,IACLwC,CAAQ,IALYP,IAAU,eAAiB,eAC5BA,IAAU,gBAAkB,gBAC5BA,CAGM;AAAA,MACvBQ,CAAa;AAAA,IAEnB,CAKO,SAASG,GAA0BxB,EAKxC,CACA,MAAMyB,EAAiB,CAAA,EACjBC,MAAiB,IACjBC,MAAa,IACbC,MAAuB,IAE7B,UAAWhC,KAAaI,EAAY,CAClC,KAAM,CAAE,WAAAY,EAAY,MAAAC,EAAO,QAAAC,CAAA,EAAYJ,GAAqBd,CAAS,EAErE,GAAI,CAACgB,GAAc,CAACC,EAClBY,EAAK,KAAKX,CAAO,UACRF,GAAc,CAACC,EACnBa,EAAW,IAAId,CAAU,GAC5Bc,EAAW,IAAId,EAAY,EAAE,EAE/Bc,EAAW,IAAId,CAAU,EAAG,KAAKE,CAAO,UAC/B,CAACF,GAAcC,EACnBc,EAAO,IAAId,CAAK,GACnBc,EAAO,IAAId,EAAO,EAAE,EAEtBc,EAAO,IAAId,CAAK,EAAG,KAAKC,CAAO,UACtBF,GAAcC,EAAO,CAC9B,MAAMgB,EAAM,GAAGjB,CAAU,IAAIC,CAAK,GAC7Be,EAAiB,IAAIC,CAAG,GAC3BD,EAAiB,IAAIC,EAAK,EAAE,EAE9BD,EAAiB,IAAIC,CAAG,EAAG,KAAKf,CAAO,CACzC,CACF,CAEA,MAAO,CAAE,KAAAW,EAAM,WAAAC,EAAY,OAAAC,EAAQ,iBAAAC,CAAA,CACrC,CC/JA,IAAIE,GAAU,EAgDP,SAASC,EAAuBC,EAAsE,CAC3G,KAAM,CACJ,UAAApC,EAAY,GACZ,MAAAqC,EAAQ,CAAA,EACR,iBAAAC,EAAmB,GACnB,YAAAC,CAAA,EACEH,EAEEI,EAAkBC,EAAAA,OAAgC,IAAI,EACtDC,EAAcD,SAAe,UAAUF,GAAe,QAAQL,IAAS,EAAE,EAAE,EAE3ES,EAASC,EAAAA,QAAQ,IAAM,CAC3B,GAAI,CAAC5C,EACH,MAAO,CACL,UAAWnB,EAAKyD,CAAgB,EAChC,MAAAD,CAAA,EAIJ,MAAMhC,EAAUL,EAAU,MAAM,GAAG,EAAE,OAAO,OAAO,EAC7C6C,EAA2B,CAAA,EAC3BC,EAA8B,CAAA,EAC9BC,EAA4B,CAAA,EAGlC,UAAWpC,KAAON,EAAS,CACzB,KAAM,CAAE,QAAAa,CAAA,EAAYJ,GAAqBH,CAAG,EACtCJ,EAASR,GAAkBmB,CAAO,EAEpCX,GACFsC,EAAe,KAAKlC,CAAG,EAEnBA,IAAQO,GACV,OAAO,OAAO6B,EAAYxC,CAAM,GAGlCuC,EAAkB,KAAKnC,CAAG,CAE9B,CAGA,MAAMqC,EAAUpB,GAA0BiB,CAAc,EAGxD,IAAII,EAAe,GACnB,MAAMC,EAAcR,EAAY,QAGhC,SAAW,CAAC1B,EAAYP,CAAS,IAAKuC,EAAQ,WAAY,CACxD,MAAMG,EAAkC,CAAA,EACxC,UAAWjC,KAAWT,EAAW,CAC/B,MAAMF,EAASR,GAAkBmB,CAAO,EACpCX,GACF,OAAO,OAAO4C,EAAkB5C,CAAM,CAE1C,CACI,OAAO,KAAK4C,CAAgB,EAAE,OAAS,IACzCF,GAAgB1B,GAAsBP,EAAY,IAAIkC,CAAW,GAAIC,CAAgB,EAEzF,CAGA,SAAW,CAAClC,EAAOR,CAAS,IAAKuC,EAAQ,OAAQ,CAC/C,MAAMI,EAA6B,CAAA,EAC7BC,EAA4B,CAAA,EAElC,UAAWnC,KAAWT,EAAW,CAC/B,MAAMF,EAASR,GAAkBmB,CAAO,EACpCX,IAEEA,EAAO,WAAa,OAAOA,EAAO,WAAc,SAClD8C,EAAgB,KAAK9C,EAAO,SAAS,EAErC,OAAO,OAAO6C,EAAa7C,CAAM,EAGvC,CAGI8C,EAAgB,OAAS,IAC3BD,EAAY,UAAYC,EAAgB,KAAK,GAAG,GAG9C,OAAO,KAAKD,CAAW,EAAE,OAAS,IACpCH,GAAgBtB,GAAiBV,EAAO,IAAIiC,CAAW,GAAIE,CAAW,EAE1E,CAGA,SAAW,CAACnB,EAAKxB,CAAS,IAAKuC,EAAQ,iBAAkB,CACvD,KAAM,CAAChC,EAAYC,CAAK,EAAIgB,EAAI,MAAM,GAAG,EACnCqB,EAAuC,CAAA,EACvCD,EAA4B,CAAA,EAElC,UAAWnC,KAAWT,EAAW,CAC/B,MAAMF,EAASR,GAAkBmB,CAAO,EACpCX,IAEEA,EAAO,WAAa,OAAOA,EAAO,WAAc,SAClD8C,EAAgB,KAAK9C,EAAO,SAAS,EAErC,OAAO,OAAO+C,EAAuB/C,CAAM,EAGjD,CAOA,GAJI8C,EAAgB,OAAS,IAC3BC,EAAsB,UAAYD,EAAgB,KAAK,GAAG,GAGxD,OAAO,KAAKC,CAAqB,EAAE,OAAS,EAAG,CACjD,MAAMC,EAAW5B,GAAiBV,EAAc,IAAIiC,CAAW,GAAII,CAAqB,EAElFE,EAAkB5C,GAAYI,CAAsC,EAC1EiC,GAAgB;AAAA,6BACKO,CAAe;AAAA,YAChCD,EAAS,MAAM;AAAA,UAErB,CACF,CAEA,MAAO,CACL,UAAW1E,EACTyD,EACAW,EAAeC,EAAc,GAC7B,GAAGJ,CAAA,EAEL,MAAO,OAAO,KAAKC,CAAU,EAAE,OAAS,EACpC,CAAE,GAAGA,EAAY,GAAGV,CAAA,EACpBA,EACJ,aAAAY,CAAA,CAEJ,EAAG,CAACjD,EAAWqC,EAAOC,CAAgB,CAAC,EAGvCmB,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAId,EAAO,cAAgB,OAAO,SAAa,IAE7C,OAAKH,EAAgB,UACnBA,EAAgB,QAAU,SAAS,cAAc,OAAO,EACxDA,EAAgB,QAAQ,aAAa,wBAAyBE,EAAY,OAAO,EACjF,SAAS,KAAK,YAAYF,EAAgB,OAAO,GAGnDA,EAAgB,QAAQ,YAAcG,EAAO,aAGzC,QAAQ,IAAI,WAAa,eAC3B,QAAQ,IAAI,oBAAqBD,EAAY,QAAS;AAAA,EAAOC,EAAO,YAAY,EAI3E,IAAM,CACPH,EAAgB,SAAWA,EAAgB,QAAQ,aACrDA,EAAgB,QAAQ,WAAW,YAAYA,EAAgB,OAAO,EACtEA,EAAgB,QAAU,KAE9B,CAEJ,EAAG,CAACG,EAAO,YAAY,CAAC,EAEjB,CACL,UAAWA,EAAO,UAClB,MAAOA,EAAO,KAAA,CAElB,CAKO,SAASe,GACd1D,EACAqC,EACAC,EAC8B,CAC9B,OAAOH,EAAuB,CAC5B,UAAAnC,EACA,MAAAqC,EACA,iBAAAC,CAAA,CACD,CACH,CCrLO,SAASqB,GAAkBvB,EAA4D,CAC5F,KAAM,CACJ,UAAApC,EAAY,GACZ,MAAAqC,EAAQ,CAAA,EACR,cAAAuB,EAAgB,GAChB,iBAAAtB,EAAmB,EAAA,EACjBF,EAEJ,OAAOQ,EAAAA,QAAQ,IAAM,CAEnB,KAAM,CAAE,UAAAnC,EAAW,OAAAC,EAAQ,OAAQmD,CAAA,EAAiBrD,GAAsBR,CAAS,EAEnF,OAAI4D,EAGK,CACL,UAAW/E,EACTyD,EACA,GAAG7B,EACH,GAAGC,CAAA,EAEL,MAAA2B,CAAA,EAIK,CACL,UAAWxD,EACTyD,EACA,GAAG5B,CAAA,EAEL,MAAO,OAAO,KAAKmD,CAAY,EAAE,OAAS,EACtC,CAAE,GAAGA,EAAc,GAAGxB,GACtBA,CAAA,CAGV,EAAG,CAACrC,EAAWqC,EAAOuB,EAAetB,CAAgB,CAAC,CACxD,CAcO,SAASwB,GACd9D,EACAqC,EACAC,EACyB,CAEzB,OAAOH,EAAuB,CAC5B,UAAAnC,EACA,MAAAqC,EACA,iBAAAC,CAAA,CACD,CACH,CAaO,SAASyB,GACd/D,EACAsC,EACyB,CACzB,OAAOqB,GAAkB,CACvB,UAAA3D,EACA,cAAe,GACf,iBAAAsC,CAAA,CACD,CACH,CC9GO,MAAM0B,GAAMC,EAAAA,WACjB,CAAC,CAAE,GAAIC,EAAY,MAAO,UAAAlE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACxE,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,CAAA,CACD,EAED,OAAOmC,EAAM,cACXN,EACA,CACE,GAAGE,EACH,IAAAC,EACA,UAAWC,EACX,MAAOC,CAAA,EAETJ,CAAA,CAEJ,CACF,EAEAH,GAAI,YAAc;;;;;;;;6CC1CL,IAAItF,EAAE+F,EAAiBC,EAAE,OAAO,IAAI,eAAe,EAAEC,EAAE,OAAO,IAAI,gBAAgB,EAAEC,EAAE,OAAO,UAAU,eAAejG,EAAED,EAAE,mDAAmD,kBAAkBmG,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,EAAE,EAClP,SAASC,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAEC,EAAE,CAAA,EAAGC,EAAE,KAAKC,EAAE,KAAcJ,IAAT,SAAaG,EAAE,GAAGH,GAAYD,EAAE,MAAX,SAAiBI,EAAE,GAAGJ,EAAE,KAAcA,EAAE,MAAX,SAAiBK,EAAEL,EAAE,KAAK,IAAIE,KAAKF,EAAEJ,EAAE,KAAKI,EAAEE,CAAC,GAAG,CAACL,EAAE,eAAeK,CAAC,IAAIC,EAAED,CAAC,EAAEF,EAAEE,CAAC,GAAG,GAAGH,GAAGA,EAAE,aAAa,IAAIG,KAAKF,EAAED,EAAE,aAAaC,EAAWG,EAAED,CAAC,IAAZ,SAAgBC,EAAED,CAAC,EAAEF,EAAEE,CAAC,GAAG,MAAM,CAAC,SAASR,EAAE,KAAKK,EAAE,IAAIK,EAAE,IAAIC,EAAE,MAAMF,EAAE,OAAOxG,EAAE,OAAO,CAAC,CAAC,OAAA2G,YAAiBX,EAAEW,GAAA,IAAYR,EAAEQ,GAAA,KAAaR;;;;;;;;yCCEtW,QAAQ,IAAI,WAAa,cAC1B,UAAW,CAGd,IAAIN,EAAQC,EAMRc,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAoB,OAAO,IAAI,cAAc,EAC7CC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAyB,OAAO,IAAI,mBAAmB,EACvDC,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAA2B,OAAO,IAAI,qBAAqB,EAC3DC,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAuB,OAAO,IAAI,iBAAiB,EACnDC,EAAwB,OAAO,SAC/BC,EAAuB,aAC3B,SAASC,EAAcC,EAAe,CACpC,GAAIA,IAAkB,MAAQ,OAAOA,GAAkB,SACrD,OAAO,KAGT,IAAIC,EAAgBJ,GAAyBG,EAAcH,CAAqB,GAAKG,EAAcF,CAAoB,EAEvH,OAAI,OAAOG,GAAkB,WACpBA,EAGF,IACT,CAEA,IAAIC,EAAuBjC,EAAM,mDAEjC,SAASkC,EAAMC,EAAQ,CAEnB,CACE,QAASC,EAAQ,UAAU,OAAQC,EAAO,IAAI,MAAMD,EAAQ,EAAIA,EAAQ,EAAI,CAAC,EAAGE,EAAQ,EAAGA,EAAQF,EAAOE,IACxGD,EAAKC,EAAQ,CAAC,EAAI,UAAUA,CAAK,EAGnCC,EAAa,QAASJ,EAAQE,CAAI,CACxC,CAEA,CAEA,SAASE,EAAaC,EAAOL,EAAQE,EAAM,CAGzC,CACE,IAAII,EAAyBR,EAAqB,uBAC9CS,GAAQD,EAAuB,iBAAgB,EAE/CC,KAAU,KACZP,GAAU,KACVE,EAAOA,EAAK,OAAO,CAACK,EAAK,CAAC,GAI5B,IAAIC,GAAiBN,EAAK,IAAI,SAAUO,EAAM,CAC5C,OAAO,OAAOA,CAAI,CACxB,CAAK,EAEDD,GAAe,QAAQ,YAAcR,CAAM,EAI3C,SAAS,UAAU,MAAM,KAAK,QAAQK,CAAK,EAAG,QAASG,EAAc,CACzE,CACA,CAIA,IAAIE,EAAiB,GACjBC,EAAqB,GACrBC,EAA0B,GAE1BC,EAAqB,GAIrBC,EAAqB,GAErBC,EAGFA,EAAyB,OAAO,IAAI,wBAAwB,EAG9D,SAASC,EAAmBC,EAAM,CAUhC,MATI,UAAOA,GAAS,UAAY,OAAOA,GAAS,YAK5CA,IAASnC,GAAuBmC,IAASjC,GAAuB8B,GAAuBG,IAASlC,GAA0BkC,IAAS7B,GAAuB6B,IAAS5B,GAA4BwB,GAAuBI,IAASzB,GAAwBkB,GAAmBC,GAAuBC,GAIjS,OAAOK,GAAS,UAAYA,IAAS,OACnCA,EAAK,WAAa1B,GAAmB0B,EAAK,WAAa3B,GAAmB2B,EAAK,WAAahC,GAAuBgC,EAAK,WAAa/B,GAAsB+B,EAAK,WAAa9B,GAIjL8B,EAAK,WAAaF,GAA0BE,EAAK,cAAgB,QAMrE,CAEA,SAASC,EAAeC,EAAWC,EAAWC,EAAa,CACzD,IAAIC,EAAcH,EAAU,YAE5B,GAAIG,EACF,OAAOA,EAGT,IAAIC,GAAeH,EAAU,aAAeA,EAAU,MAAQ,GAC9D,OAAOG,KAAiB,GAAKF,EAAc,IAAME,GAAe,IAAMF,CACxE,CAGA,SAASG,EAAeP,EAAM,CAC5B,OAAOA,EAAK,aAAe,SAC7B,CAGA,SAASQ,EAAyBR,EAAM,CACtC,GAAIA,GAAQ,KAEV,OAAO,KAST,GALM,OAAOA,EAAK,KAAQ,UACtBlB,EAAM,mHAAwH,EAI9H,OAAOkB,GAAS,WAClB,OAAOA,EAAK,aAAeA,EAAK,MAAQ,KAG1C,GAAI,OAAOA,GAAS,SAClB,OAAOA,EAGT,OAAQA,EAAI,CACV,KAAKnC,EACH,MAAO,WAET,KAAKD,EACH,MAAO,SAET,KAAKG,EACH,MAAO,WAET,KAAKD,EACH,MAAO,aAET,KAAKK,EACH,MAAO,WAET,KAAKC,EACH,MAAO,eAIX,GAAI,OAAO4B,GAAS,SAClB,OAAQA,EAAK,SAAQ,CACnB,KAAK/B,EACH,IAAIwC,EAAUT,EACd,OAAOO,EAAeE,CAAO,EAAI,YAEnC,KAAKzC,EACH,IAAI0C,EAAWV,EACf,OAAOO,EAAeG,EAAS,QAAQ,EAAI,YAE7C,KAAKxC,EACH,OAAO+B,EAAeD,EAAMA,EAAK,OAAQ,YAAY,EAEvD,KAAK3B,EACH,IAAIsC,EAAYX,EAAK,aAAe,KAEpC,OAAIW,IAAc,KACTA,EAGFH,EAAyBR,EAAK,IAAI,GAAK,OAEhD,KAAK1B,EACH,CACE,IAAIsC,GAAgBZ,EAChBa,GAAUD,GAAc,SACxBE,EAAOF,GAAc,MAEzB,GAAI,CACF,OAAOJ,EAAyBM,EAAKD,EAAO,CAAC,CACzD,MAAsB,CACV,OAAO,IACnB,CACA,EAME,OAAO,IACT,CAEA,IAAIE,EAAS,OAAO,OAMhBC,EAAgB,EAChBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,SAASC,GAAc,CAAA,CAEvBA,EAAY,mBAAqB,GACjC,SAASC,GAAc,CACrB,CACE,GAAIT,IAAkB,EAAG,CAEvBC,EAAU,QAAQ,IAClBC,EAAW,QAAQ,KACnBC,EAAW,QAAQ,KACnBC,EAAY,QAAQ,MACpBC,EAAY,QAAQ,MACpBC,EAAqB,QAAQ,eAC7BC,EAAe,QAAQ,SAEvB,IAAI/E,EAAQ,CACV,aAAc,GACd,WAAY,GACZ,MAAOgF,EACP,SAAU,EAClB,EAEM,OAAO,iBAAiB,QAAS,CAC/B,KAAMhF,EACN,IAAKA,EACL,KAAMA,EACN,MAAOA,EACP,MAAOA,EACP,eAAgBA,EAChB,SAAUA,CAClB,CAAO,CAEP,CAEIwE,GACJ,CACA,CACA,SAASU,IAAe,CACtB,CAGE,GAFAV,IAEIA,IAAkB,EAAG,CAEvB,IAAIxE,EAAQ,CACV,aAAc,GACd,WAAY,GACZ,SAAU,EAClB,EAEM,OAAO,iBAAiB,QAAS,CAC/B,IAAKuE,EAAO,CAAA,EAAIvE,EAAO,CACrB,MAAOyE,CACjB,CAAS,EACD,KAAMF,EAAO,CAAA,EAAIvE,EAAO,CACtB,MAAO0E,CACjB,CAAS,EACD,KAAMH,EAAO,CAAA,EAAIvE,EAAO,CACtB,MAAO2E,CACjB,CAAS,EACD,MAAOJ,EAAO,CAAA,EAAIvE,EAAO,CACvB,MAAO4E,CACjB,CAAS,EACD,MAAOL,EAAO,CAAA,EAAIvE,EAAO,CACvB,MAAO6E,CACjB,CAAS,EACD,eAAgBN,EAAO,CAAA,EAAIvE,EAAO,CAChC,MAAO8E,CACjB,CAAS,EACD,SAAUP,EAAO,CAAA,EAAIvE,EAAO,CAC1B,MAAO+E,CACjB,CAAS,CACT,CAAO,CAEP,CAEQP,EAAgB,GAClBlC,EAAM,8EAAmF,CAE/F,CACA,CAEA,IAAI6C,GAAyB9C,EAAqB,uBAC9CxG,GACJ,SAASuJ,GAA8BC,EAAMC,EAAQC,EAAS,CAC5D,CACE,GAAI1J,KAAW,OAEb,GAAI,CACF,MAAM,MAAK,CACnB,OAAe2J,GAAG,CACV,IAAIC,EAAQD,GAAE,MAAM,KAAI,EAAG,MAAM,cAAc,EAC/C3J,GAAS4J,GAASA,EAAM,CAAC,GAAK,EACtC,CAII,MAAO;AAAA,EAAO5J,GAASwJ,CAC3B,CACA,CACA,IAAIK,GAAU,GACVC,GAEJ,CACE,IAAIC,GAAkB,OAAO,SAAY,WAAa,QAAU,IAChED,GAAsB,IAAIC,EAC5B,CAEA,SAASC,GAA6BC,EAAIC,EAAW,CAEnD,GAAK,CAACD,GAAMJ,GACV,MAAO,GAGT,CACE,IAAIM,EAAQL,GAAoB,IAAIG,CAAE,EAEtC,GAAIE,IAAU,OACZ,OAAOA,CAEb,CAEE,IAAIC,EACJP,GAAU,GACV,IAAIQ,GAA4B,MAAM,kBAEtC,MAAM,kBAAoB,OAC1B,IAAIC,GAGFA,GAAqBhB,GAAuB,QAG5CA,GAAuB,QAAU,KACjCF,EAAW,EAGb,GAAI,CAEF,GAAIc,EAAW,CAEb,IAAIK,EAAO,UAAY,CACrB,MAAM,MAAK,CACnB,EAWM,GARA,OAAO,eAAeA,EAAK,UAAW,QAAS,CAC7C,IAAK,UAAY,CAGf,MAAM,MAAK,CACrB,CACA,CAAO,EAEG,OAAO,SAAY,UAAY,QAAQ,UAAW,CAGpD,GAAI,CACF,QAAQ,UAAUA,EAAM,EAAE,CACpC,OAAiBZ,GAAG,CACVS,EAAUT,EACpB,CAEQ,QAAQ,UAAUM,EAAI,CAAA,EAAIM,CAAI,CACtC,KAAa,CACL,GAAI,CACFA,EAAK,KAAI,CACnB,OAAiBZ,GAAG,CACVS,EAAUT,EACpB,CAEQM,EAAG,KAAKM,EAAK,SAAS,CAC9B,CACA,KAAW,CACL,GAAI,CACF,MAAM,MAAK,CACnB,OAAeZ,GAAG,CACVS,EAAUT,EAClB,CAEMM,EAAE,CACR,CACA,OAAWO,GAAQ,CAEf,GAAIA,IAAUJ,GAAW,OAAOI,GAAO,OAAU,SAAU,CAQzD,QALIC,EAAcD,GAAO,MAAM,MAAM;AAAA,CAAI,EACrCE,GAAeN,EAAQ,MAAM,MAAM;AAAA,CAAI,EACvCO,GAAIF,EAAY,OAAS,EACzB3F,GAAI4F,GAAa,OAAS,EAEvBC,IAAK,GAAK7F,IAAK,GAAK2F,EAAYE,EAAC,IAAMD,GAAa5F,EAAC,GAO1DA,KAGF,KAAO6F,IAAK,GAAK7F,IAAK,EAAG6F,KAAK7F,KAG5B,GAAI2F,EAAYE,EAAC,IAAMD,GAAa5F,EAAC,EAAG,CAMtC,GAAI6F,KAAM,GAAK7F,KAAM,EACnB,EAKE,IAJA6F,KACA7F,KAGIA,GAAI,GAAK2F,EAAYE,EAAC,IAAMD,GAAa5F,EAAC,EAAG,CAE/C,IAAI8F,GAAS;AAAA,EAAOH,EAAYE,EAAC,EAAE,QAAQ,WAAY,MAAM,EAK7D,OAAIV,EAAG,aAAeW,GAAO,SAAS,aAAa,IACjDA,GAASA,GAAO,QAAQ,cAAeX,EAAG,WAAW,GAIjD,OAAOA,GAAO,YAChBH,GAAoB,IAAIG,EAAIW,EAAM,EAK/BA,EACvB,OACqBD,IAAK,GAAK7F,IAAK,GAG1B,KACV,CAEA,CACA,QAAG,CACC+E,GAAU,GAGRP,GAAuB,QAAUgB,GACjCjB,GAAY,EAGd,MAAM,kBAAoBgB,EAC9B,CAGE,IAAIb,GAAOS,EAAKA,EAAG,aAAeA,EAAG,KAAO,GACxCY,GAAiBrB,GAAOD,GAA8BC,EAAI,EAAI,GAGhE,OAAI,OAAOS,GAAO,YAChBH,GAAoB,IAAIG,EAAIY,EAAc,EAIvCA,EACT,CACA,SAASC,GAA+Bb,EAAIR,EAAQC,EAAS,CAEzD,OAAOM,GAA6BC,EAAI,EAAK,CAEjD,CAEA,SAASc,GAAgB9G,EAAW,CAClC,IAAI+G,EAAY/G,EAAU,UAC1B,MAAO,CAAC,EAAE+G,GAAaA,EAAU,iBACnC,CAEA,SAASC,GAAqCtD,EAAM8B,EAAQC,EAAS,CAEnE,GAAI/B,GAAQ,KACV,MAAO,GAGT,GAAI,OAAOA,GAAS,WAEhB,OAAOqC,GAA6BrC,EAAMoD,GAAgBpD,CAAI,CAAC,EAInE,GAAI,OAAOA,GAAS,SAClB,OAAO4B,GAA8B5B,CAAI,EAG3C,OAAQA,EAAI,CACV,KAAK7B,EACH,OAAOyD,GAA8B,UAAU,EAEjD,KAAKxD,EACH,OAAOwD,GAA8B,cAAc,EAGvD,GAAI,OAAO5B,GAAS,SAClB,OAAQA,EAAK,SAAQ,CACnB,KAAK9B,EACH,OAAOiF,GAA+BnD,EAAK,MAAM,EAEnD,KAAK3B,EAEH,OAAOiF,GAAqCtD,EAAK,KAAM8B,EAAQC,CAAO,EAExE,KAAKzD,EACH,CACE,IAAIsC,EAAgBZ,EAChBa,GAAUD,EAAc,SACxBE,GAAOF,EAAc,MAEzB,GAAI,CAEF,OAAO0C,GAAqCxC,GAAKD,EAAO,EAAGiB,EAAQC,CAAO,CACtF,MAAsB,CAAA,CACtB,EAIE,MAAO,EACT,CAEA,IAAIwB,GAAiB,OAAO,UAAU,eAElCC,GAAqB,CAAA,EACrBnE,GAAyBR,EAAqB,uBAElD,SAAS4E,GAA8BC,EAAS,CAE5C,GAAIA,EAAS,CACX,IAAIC,EAAQD,EAAQ,OAChBpE,EAAQgE,GAAqCI,EAAQ,KAAMA,EAAQ,QAASC,EAAQA,EAAM,KAAO,IAAI,EACzGtE,GAAuB,mBAAmBC,CAAK,CACrD,MACMD,GAAuB,mBAAmB,IAAI,CAGpD,CAEA,SAASuE,GAAeC,EAAWC,EAAQC,EAAUC,EAAeN,GAAS,CAC3E,CAEE,IAAIO,GAAM,SAAS,KAAK,KAAKV,EAAc,EAE3C,QAASW,KAAgBL,EACvB,GAAII,GAAIJ,EAAWK,CAAY,EAAG,CAChC,IAAIC,EAAU,OAId,GAAI,CAGF,GAAI,OAAON,EAAUK,CAAY,GAAM,WAAY,CAEjD,IAAIE,GAAM,OAAOJ,GAAiB,eAAiB,KAAOD,EAAW,UAAYG,EAAe,6FAAoG,OAAOL,EAAUK,CAAY,EAAI,iGAAsG,EAC3U,MAAAE,GAAI,KAAO,sBACLA,EAClB,CAEUD,EAAUN,EAAUK,CAAY,EAAEJ,EAAQI,EAAcF,EAAeD,EAAU,KAAM,8CAA8C,CAC/I,OAAiBM,GAAI,CACXF,EAAUE,EACpB,CAEYF,GAAW,EAAEA,aAAmB,SAClCV,GAA8BC,EAAO,EAErC5E,EAAM,2RAAqTkF,GAAiB,cAAeD,EAAUG,EAAc,OAAOC,CAAO,EAEjYV,GAA8B,IAAI,GAGhCU,aAAmB,OAAS,EAAEA,EAAQ,WAAWX,MAGnDA,GAAmBW,EAAQ,OAAO,EAAI,GACtCV,GAA8BC,EAAO,EAErC5E,EAAM,qBAAsBiF,EAAUI,EAAQ,OAAO,EAErDV,GAA8B,IAAI,EAE5C,CAEA,CACA,CAEA,IAAIa,GAAc,MAAM,QAExB,SAASC,GAAQnH,EAAG,CAClB,OAAOkH,GAAYlH,CAAC,CACtB,CAYA,SAASoH,GAASpN,EAAO,CACvB,CAEE,IAAIqN,EAAiB,OAAO,QAAW,YAAc,OAAO,YACxDzE,EAAOyE,GAAkBrN,EAAM,OAAO,WAAW,GAAKA,EAAM,YAAY,MAAQ,SACpF,OAAO4I,CACX,CACA,CAGA,SAAS0E,GAAkBtN,EAAO,CAE9B,GAAI,CACF,OAAAuN,GAAmBvN,CAAK,EACjB,EACb,MAAgB,CACV,MAAO,EACb,CAEA,CAEA,SAASuN,GAAmBvN,EAAO,CAwBjC,MAAO,GAAKA,CACd,CACA,SAASwN,GAAuBxN,EAAO,CAEnC,GAAIsN,GAAkBtN,CAAK,EACzB,OAAA0H,EAAM,kHAAwH0F,GAASpN,CAAK,CAAC,EAEtIuN,GAAmBvN,CAAK,CAGrC,CAEA,IAAIyN,GAAoBhG,EAAqB,kBACzCiG,GAAiB,CACnB,IAAK,GACL,IAAK,GACL,OAAQ,GACR,SAAU,EACZ,EACIC,GACAC,GAOJ,SAASC,GAAYC,EAAQ,CAEzB,GAAI3B,GAAe,KAAK2B,EAAQ,KAAK,EAAG,CACtC,IAAIC,EAAS,OAAO,yBAAyBD,EAAQ,KAAK,EAAE,IAE5D,GAAIC,GAAUA,EAAO,eACnB,MAAO,EAEf,CAGE,OAAOD,EAAO,MAAQ,MACxB,CAEA,SAASE,GAAYF,EAAQ,CAEzB,GAAI3B,GAAe,KAAK2B,EAAQ,KAAK,EAAG,CACtC,IAAIC,EAAS,OAAO,yBAAyBD,EAAQ,KAAK,EAAE,IAE5D,GAAIC,GAAUA,EAAO,eACnB,MAAO,EAEf,CAGE,OAAOD,EAAO,MAAQ,MACxB,CAEA,SAASG,GAAqCH,EAAQI,EAAM,CAEpD,OAAOJ,EAAO,KAAQ,UAAYL,GAAkB,OAU5D,CAEA,SAASU,GAA2B/I,EAAO6D,EAAa,CACtD,CACE,IAAImF,EAAwB,UAAY,CACjCT,KACHA,GAA6B,GAE7BjG,EAAM,4OAA4PuB,CAAW,EAErR,EAEImF,EAAsB,eAAiB,GACvC,OAAO,eAAehJ,EAAO,MAAO,CAClC,IAAKgJ,EACL,aAAc,EACpB,CAAK,CACL,CACA,CAEA,SAASC,GAA2BjJ,EAAO6D,EAAa,CACtD,CACE,IAAIqF,EAAwB,UAAY,CACjCV,KACHA,GAA6B,GAE7BlG,EAAM,4OAA4PuB,CAAW,EAErR,EAEIqF,EAAsB,eAAiB,GACvC,OAAO,eAAelJ,EAAO,MAAO,CAClC,IAAKkJ,EACL,aAAc,EACpB,CAAK,CACL,CACA,CAuBA,IAAIC,GAAe,SAAU3F,EAAM3F,EAAKoC,EAAK6I,EAAMxD,GAAQ6B,GAAOnH,EAAO,CACvE,IAAIkH,EAAU,CAEZ,SAAU/F,EAEV,KAAMqC,EACN,IAAK3F,EACL,IAAKoC,EACL,MAAOD,EAEP,OAAQmH,EACZ,EAOI,OAAAD,EAAQ,OAAS,GAKjB,OAAO,eAAeA,EAAQ,OAAQ,YAAa,CACjD,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,EACb,CAAK,EAED,OAAO,eAAeA,EAAS,QAAS,CACtC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO4B,CACb,CAAK,EAGD,OAAO,eAAe5B,EAAS,UAAW,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO5B,EACb,CAAK,EAEG,OAAO,SACT,OAAO,OAAO4B,EAAQ,KAAK,EAC3B,OAAO,OAAOA,CAAO,GAIlBA,CACT,EAQA,SAASkC,GAAO5F,EAAMkF,EAAQW,EAAU/D,EAAQwD,GAAM,CACpD,CACE,IAAIQ,GAEAtJ,EAAQ,CAAA,EACRnC,EAAM,KACNoC,GAAM,KAONoJ,IAAa,SAEbjB,GAAuBiB,CAAQ,EAGjCxL,EAAM,GAAKwL,GAGTT,GAAYF,CAAM,IAElBN,GAAuBM,EAAO,GAAG,EAGnC7K,EAAM,GAAK6K,EAAO,KAGhBD,GAAYC,CAAM,IACpBzI,GAAMyI,EAAO,IACbG,GAAqCH,EAAQI,EAAI,GAInD,IAAKQ,MAAYZ,EACX3B,GAAe,KAAK2B,EAAQY,EAAQ,GAAK,CAAChB,GAAe,eAAegB,EAAQ,IAClFtJ,EAAMsJ,EAAQ,EAAIZ,EAAOY,EAAQ,GAKrC,GAAI9F,GAAQA,EAAK,aAAc,CAC7B,IAAI+F,GAAe/F,EAAK,aAExB,IAAK8F,MAAYC,GACXvJ,EAAMsJ,EAAQ,IAAM,SACtBtJ,EAAMsJ,EAAQ,EAAIC,GAAaD,EAAQ,EAGjD,CAEI,GAAIzL,GAAOoC,GAAK,CACd,IAAI4D,GAAc,OAAOL,GAAS,WAAaA,EAAK,aAAeA,EAAK,MAAQ,UAAYA,EAExF3F,GACFkL,GAA2B/I,EAAO6D,EAAW,EAG3C5D,IACFgJ,GAA2BjJ,EAAO6D,EAAW,CAErD,CAEI,OAAOsF,GAAa3F,EAAM3F,EAAKoC,GAAK6I,GAAMxD,EAAQ+C,GAAkB,QAASrI,CAAK,CACtF,CACA,CAEA,IAAIwJ,GAAsBnH,EAAqB,kBAC3CoH,GAA2BpH,EAAqB,uBAEpD,SAASqH,GAAgCxC,EAAS,CAE9C,GAAIA,EAAS,CACX,IAAIC,EAAQD,EAAQ,OAChBpE,EAAQgE,GAAqCI,EAAQ,KAAMA,EAAQ,QAASC,EAAQA,EAAM,KAAO,IAAI,EACzGsC,GAAyB,mBAAmB3G,CAAK,CACvD,MACM2G,GAAyB,mBAAmB,IAAI,CAGtD,CAEA,IAAIE,GAGFA,GAAgC,GAWlC,SAASC,GAAeC,EAAQ,CAE5B,OAAO,OAAOA,GAAW,UAAYA,IAAW,MAAQA,EAAO,WAAa1I,CAEhF,CAEA,SAAS2I,IAA8B,CACrC,CACE,GAAIN,GAAoB,QAAS,CAC/B,IAAInE,EAAOrB,EAAyBwF,GAAoB,QAAQ,IAAI,EAEpE,GAAInE,EACF,MAAO;AAAA;AAAA,+BAAqCA,EAAO,IAE3D,CAEI,MAAO,EACX,CACA,CAEA,SAAS0E,GAA2BzE,EAAQ,CAQxC,MAAO,EAEX,CAQA,IAAI0E,GAAwB,CAAA,EAE5B,SAASC,GAA6BC,EAAY,CAChD,CACE,IAAIC,EAAOL,GAA2B,EAEtC,GAAI,CAACK,EAAM,CACT,IAAIC,EAAa,OAAOF,GAAe,SAAWA,EAAaA,EAAW,aAAeA,EAAW,KAEhGE,IACFD,EAAO;AAAA;AAAA,yCAAgDC,EAAa,KAE5E,CAEI,OAAOD,CACX,CACA,CAcA,SAASE,GAAoBnD,EAASgD,EAAY,CAChD,CACE,GAAI,CAAChD,EAAQ,QAAUA,EAAQ,OAAO,WAAaA,EAAQ,KAAO,KAChE,OAGFA,EAAQ,OAAO,UAAY,GAC3B,IAAIoD,EAA4BL,GAA6BC,CAAU,EAEvE,GAAIF,GAAsBM,CAAyB,EACjD,OAGFN,GAAsBM,CAAyB,EAAI,GAInD,IAAIC,EAAa,GAEbrD,GAAWA,EAAQ,QAAUA,EAAQ,SAAWsC,GAAoB,UAEtEe,EAAa,+BAAiCvG,EAAyBkD,EAAQ,OAAO,IAAI,EAAI,KAGhGwC,GAAgCxC,CAAO,EAEvC5E,EAAM,4HAAkIgI,EAA2BC,CAAU,EAE7Kb,GAAgC,IAAI,CACxC,CACA,CAYA,SAASc,GAAkBC,EAAMP,EAAY,CAC3C,CACE,GAAI,OAAOO,GAAS,SAClB,OAGF,GAAI1C,GAAQ0C,CAAI,EACd,QAASC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAK,CACpC,IAAIC,EAAQF,EAAKC,CAAC,EAEdd,GAAee,CAAK,GACtBN,GAAoBM,EAAOT,CAAU,CAE/C,SACeN,GAAea,CAAI,EAExBA,EAAK,SACPA,EAAK,OAAO,UAAY,YAEjBA,EAAM,CACf,IAAIG,GAAa1I,EAAcuI,CAAI,EAEnC,GAAI,OAAOG,IAAe,YAGpBA,KAAeH,EAAK,QAItB,QAHII,GAAWD,GAAW,KAAKH,CAAI,EAC/BK,EAEG,EAAEA,EAAOD,GAAS,KAAI,GAAI,MAC3BjB,GAAekB,EAAK,KAAK,GAC3BT,GAAoBS,EAAK,MAAOZ,CAAU,CAKxD,CACA,CACA,CASA,SAASa,GAAkB7D,EAAS,CAClC,CACE,IAAI1D,EAAO0D,EAAQ,KAEnB,GAAI1D,GAAS,MAA8B,OAAOA,GAAS,SACzD,OAGF,IAAIwH,EAEJ,GAAI,OAAOxH,GAAS,WAClBwH,EAAYxH,EAAK,kBACR,OAAOA,GAAS,WAAaA,EAAK,WAAa9B,GAE1D8B,EAAK,WAAa3B,GAChBmJ,EAAYxH,EAAK,cAEjB,QAGF,GAAIwH,EAAW,CAEb,IAAI3F,EAAOrB,EAAyBR,CAAI,EACxC4D,GAAe4D,EAAW9D,EAAQ,MAAO,OAAQ7B,EAAM6B,CAAO,CACpE,SAAe1D,EAAK,YAAc,QAAa,CAACmG,GAA+B,CACzEA,GAAgC,GAEhC,IAAIsB,GAAQjH,EAAyBR,CAAI,EAEzClB,EAAM,sGAAuG2I,IAAS,SAAS,CACrI,CAEQ,OAAOzH,EAAK,iBAAoB,YAAc,CAACA,EAAK,gBAAgB,sBACtElB,EAAM,4HAAiI,CAE7I,CACA,CAOA,SAAS4I,GAAsBC,EAAU,CACvC,CAGE,QAFIC,EAAO,OAAO,KAAKD,EAAS,KAAK,EAE5BT,EAAI,EAAGA,EAAIU,EAAK,OAAQV,IAAK,CACpC,IAAI7M,EAAMuN,EAAKV,CAAC,EAEhB,GAAI7M,IAAQ,YAAcA,IAAQ,MAAO,CACvC6L,GAAgCyB,CAAQ,EAExC7I,EAAM,2GAAiHzE,CAAG,EAE1H6L,GAAgC,IAAI,EACpC,KACR,CACA,CAEQyB,EAAS,MAAQ,OACnBzB,GAAgCyB,CAAQ,EAExC7I,EAAM,uDAAuD,EAE7DoH,GAAgC,IAAI,EAE1C,CACA,CAEA,IAAI2B,GAAwB,CAAA,EAC5B,SAASC,GAAkB9H,EAAMxD,EAAOnC,EAAK0N,EAAkBjG,GAAQwD,GAAM,CAC3E,CACE,IAAI0C,EAAYjI,EAAmBC,CAAI,EAGvC,GAAI,CAACgI,EAAW,CACd,IAAIrB,EAAO,IAEP3G,IAAS,QAAa,OAAOA,GAAS,UAAYA,IAAS,MAAQ,OAAO,KAAKA,CAAI,EAAE,SAAW,KAClG2G,GAAQ,oIAGV,IAAIsB,GAAa1B,GAAiC,EAE9C0B,GACFtB,GAAQsB,GAERtB,GAAQL,GAA2B,EAGrC,IAAI4B,GAEAlI,IAAS,KACXkI,GAAa,OACJ3D,GAAQvE,CAAI,EACrBkI,GAAa,QACJlI,IAAS,QAAaA,EAAK,WAAarC,GACjDuK,GAAa,KAAO1H,EAAyBR,EAAK,IAAI,GAAK,WAAa,MACxE2G,EAAO,sEAEPuB,GAAa,OAAOlI,EAGtBlB,EAAM,0IAAqJoJ,GAAYvB,CAAI,CACjL,CAEI,IAAIjD,GAAUkC,GAAO5F,EAAMxD,EAAOnC,EAAKyH,GAAQwD,EAAI,EAGnD,GAAI5B,IAAW,KACb,OAAOA,GAQT,GAAIsE,EAAW,CACb,IAAIzL,GAAWC,EAAM,SAErB,GAAID,KAAa,OACf,GAAIwL,EACF,GAAIxD,GAAQhI,EAAQ,EAAG,CACrB,QAAS2K,GAAI,EAAGA,GAAI3K,GAAS,OAAQ2K,KACnCF,GAAkBzK,GAAS2K,EAAC,EAAGlH,CAAI,EAGjC,OAAO,QACT,OAAO,OAAOzD,EAAQ,CAEpC,MACYuC,EAAM,sJAAgK,OAGxKkI,GAAkBzK,GAAUyD,CAAI,CAG1C,CAGM,GAAIuD,GAAe,KAAK/G,EAAO,KAAK,EAAG,CACrC,IAAIwH,GAAgBxD,EAAyBR,CAAI,EAC7C4H,GAAO,OAAO,KAAKpL,CAAK,EAAE,OAAO,SAAUM,GAAG,CAChD,OAAOA,KAAM,KACvB,CAAS,EACGqL,GAAgBP,GAAK,OAAS,EAAI,kBAAoBA,GAAK,KAAK,SAAS,EAAI,SAAW,iBAE5F,GAAI,CAACC,GAAsB7D,GAAgBmE,EAAa,EAAG,CACzD,IAAIC,GAAeR,GAAK,OAAS,EAAI,IAAMA,GAAK,KAAK,SAAS,EAAI,SAAW,KAE7E9I,EAAM;AAAA;AAAA;AAAA;AAAA;AAAA,mCAA4PqJ,GAAenE,GAAeoE,GAAcpE,EAAa,EAE3T6D,GAAsB7D,GAAgBmE,EAAa,EAAI,EACjE,CACA,CAGI,OAAInI,IAASnC,EACX6J,GAAsBhE,EAAO,EAE7B6D,GAAkB7D,EAAO,EAGpBA,EACX,CACA,CAKA,SAAS2E,GAAwBrI,EAAMxD,EAAOnC,EAAK,CAE/C,OAAOyN,GAAkB9H,EAAMxD,EAAOnC,EAAK,EAAI,CAEnD,CACA,SAASiO,GAAyBtI,EAAMxD,EAAOnC,EAAK,CAEhD,OAAOyN,GAAkB9H,EAAMxD,EAAOnC,EAAK,EAAK,CAEpD,CAEA,IAAIkO,GAAOD,GAGPE,GAAQH,GAEZI,GAAA,SAAmB5K,EACnB4K,GAAA,IAAcF,GACdE,GAAA,KAAeD,EACf,EAAG,MCjzCC,QAAQ,IAAI,WAAa,aAC3BE,GAAA,QAAiB7L,GAAA,EAEjB6L,GAAA,QAAiBC,GAAA,knCCmENC,GAASvM,EAAAA,WACpB,CACE,CACE,SAAAE,EACA,UAAAnE,EACA,QAAAyQ,EAAU,UACV,KAAAC,EAAO,KACP,UAAAC,EAAY,GACZ,QAAAC,EAAU,GACV,SAAAC,EACA,UAAAC,EACA,gBAAAC,EAAkB,GAClB,OAAAC,EAAS,GACT,SAAAC,EACA,MAAA5O,EACA,GAAG+B,CAAA,EAELC,IACG,CAEH,KAAM,CAAE,UAAWC,EAAoB,MAAOC,GAAmBT,GAC/D9D,EACAqC,EACAxD,EACEyB,GAAO,OACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,SAAS,EAAGqQ,EACpB,CAACrQ,GAAO,OAAO,EAAGsQ,EAClB,CAACtQ,GAAO,UAAU,EAAGyQ,EACrB,CAACzQ,GAAO,MAAM,EAAG0Q,EACjB,CAAC1Q,GAAO,QAAQ,EAAG2Q,GAAYL,CAAA,CACjC,CACF,EAGF,OACER,EAAAA,KAAC,SAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,SAAU0M,GAAYL,EACtB,YAAWI,EAAS7M,EAAW,OAC9B,GAAGC,EAEH,SAAA,CAAAwM,GAAWT,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,OAAQ,EAC3CuQ,GAAYV,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAO,SAAAuQ,EAAS,EACrDV,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,QAAU,SAAA6D,EAAS,EAC1C2M,GAAaX,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAO,SAAAwQ,CAAA,CAAU,CAAA,CAAA,CAAA,CAG7D,CACF,EAEAN,GAAO,YAAc,oyBC/DRU,GAAQjN,EAAAA,WACnB,CACE,CACE,UAAAjE,EACA,MAAAqC,EACA,QAAAoO,EAAU,UACV,KAAAC,EAAO,KACP,SAAAG,EACA,UAAAC,EACA,UAAAH,EAAY,GACZ,gBAAAI,EAAkB,GAClB,SAAAE,EACA,SAAAE,EACA,KAAAvJ,EAAO,OACP,GAAGxD,CAAA,EAELC,IACG,CAEH,KAAM,CAAE,UAAW+M,EAAgB,MAAOC,CAAA,EAAelP,EAAuB,CAC9E,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,YAAY,EAAGuQ,EACvB,CAACvQ,GAAO,aAAa,EAAGwQ,EACxB,CAACxQ,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,QAAQ,EAAG6Q,EACnB,CAAC7Q,GAAO,UAAU,EAAGyQ,GAAmB,CAACE,GAAY,CAACE,CAAA,CACxD,CACF,CACD,EAGK,CAAE,UAAWG,EAAkB,MAAOC,CAAA,EAAiBpP,EAAuB,CAClF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,aACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,SAAS,EAAGqQ,EACpB,CAACrQ,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,QAAQ,EAAG6Q,EACnB,CAAC7Q,GAAO,UAAU,EAAGyQ,GAAmB,CAACE,GAAY,CAACE,CAAA,CACxD,CACF,CACD,EAEKK,EACJrB,EAAAA,IAAC,QAAA,CACC,IAAA9L,EACA,KAAAuD,EACA,UAAWwJ,EACX,MAAOC,EACP,SAAAJ,EACA,SAAAE,EACC,GAAG/M,CAAA,CAAA,EAIR,OAAIyM,GAAYC,EAEZV,EAAAA,KAAC,MAAA,CACC,UAAWkB,EACX,MAAOC,EAEN,SAAA,CAAAV,GACCV,EAAAA,IAAC,QAAK,UAAWtR,EAAKyB,GAAO,KAAMA,GAAO,QAAQ,EAAI,SAAAuQ,CAAA,CAAS,EAEhEW,EACAV,GACCX,EAAAA,IAAC,OAAA,CAAK,UAAWtR,EAAKyB,GAAO,KAAMA,GAAO,SAAS,EAAI,SAAAwQ,CAAA,CAAU,CAAA,CAAA,CAAA,EAMlEU,CACT,CACF,EAEAN,GAAM,YAAc,4gBC7DPO,GAAWxN,EAAAA,WACtB,CACE,CACE,OAAAyN,EAAS,EACT,MAAA1S,EAAQ,GACR,SAAA2S,EACA,WAAAC,EACA,QAAAnB,EAAU,UACV,KAAAC,EAAO,KACP,SAAAO,EAAW,GACX,UAAAY,EAAY,GACZ,KAAAjK,EAAO,OACP,YAAAkK,EAAc,IACd,UAAA9R,EACA,MAAAqC,EACA,gBAAA0O,EAAkB,EAAA,EAEpB1M,IACG,CACH,KAAM,CAAC0N,EAAKC,CAAM,EAAIC,EAAAA,SAAmB,IAAM,CAC7C,MAAMC,EAAMlT,EAAM,MAAM,EAAE,EAAE,MAAM,EAAG0S,CAAM,EAC3C,MAAO,CAAC,GAAGQ,EAAK,GAAG,MAAMR,EAASQ,EAAI,MAAM,EAAE,KAAK,EAAE,CAAC,CACxD,CAAC,EACKC,EAAY1P,EAAAA,OAAoC,EAAE,EAGlD,CAAE,UAAW6B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,eAAe,EAAGyQ,EAC1B,CAACzQ,GAAO,QAAQ,EAAG2Q,CAAA,CACrB,CACF,CACD,EAEDxN,EAAAA,UAAU,IAAM,CACd,MAAMyO,EAAMlT,EAAM,MAAM,EAAE,EAAE,MAAM,EAAG0S,CAAM,EAC3CM,EAAO,CAAC,GAAGE,EAAK,GAAG,MAAMR,EAASQ,EAAI,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CACzD,EAAG,CAAClT,EAAO0S,CAAM,CAAC,EAElB,MAAMU,EAAcC,GAAkB,SAChCF,EAAU,QAAQE,CAAK,KACzBC,EAAAH,EAAU,QAAQE,CAAK,IAAvB,MAAAC,EAA0B,SAC1BC,EAAAJ,EAAU,QAAQE,CAAK,IAAvB,MAAAE,EAA0B,SAE9B,EAEMC,EAAe,CAACH,EAAeI,IAAgB,CACnD,GAAI7K,IAAS,UAAY6K,GAAO,CAAC,QAAQ,KAAKA,CAAG,EAAG,OAEpD,MAAMC,EAAS,CAAC,GAAGX,CAAG,EACtBW,EAAOL,CAAK,EAAII,EAAI,MAAM,EAAE,EAE5BT,EAAOU,CAAM,EACb,MAAMC,EAAWD,EAAO,KAAK,EAAE,EAC/Bf,GAAA,MAAAA,EAAWgB,GAGPF,GAAOJ,EAAQX,EAAS,GAC1BU,EAAWC,EAAQ,CAAC,EAIlBM,EAAS,SAAWjB,GAAU,CAACgB,EAAO,SAAS,EAAE,IACnDd,GAAA,MAAAA,EAAae,GAEjB,EAEMC,EAAgB,CAACP,EAAejN,IAAuC,CACvEA,EAAE,MAAQ,aAAe,CAAC2M,EAAIM,CAAK,GAAKA,EAAQ,GAGzCjN,EAAE,MAAQ,aAAeiN,EAAQ,GAF1CjN,EAAE,eAAA,EACFgN,EAAWC,EAAQ,CAAC,GAIXjN,EAAE,MAAQ,cAAgBiN,EAAQX,EAAS,IACpDtM,EAAE,eAAA,EACFgN,EAAWC,EAAQ,CAAC,EAExB,EAEMQ,EAAezN,GAAwC,CAC3DA,EAAE,eAAA,EACF,MAAM0N,EAAa1N,EAAE,cAAc,QAAQ,YAAY,EAAE,MAAM,EAAGsM,CAAM,EAExE,GAAI9J,IAAS,UAAY,CAAC,QAAQ,KAAKkL,CAAU,EAAG,OAEpD,MAAMJ,EAAS,CAAC,GAAGX,CAAG,EACtBe,EAAW,MAAM,EAAE,EAAE,QAAQ,CAACC,EAAMjE,IAAM,CACpCA,EAAI4C,IACNgB,EAAO5D,CAAC,EAAIiE,EAEhB,CAAC,EAEDf,EAAOU,CAAM,EACb,MAAMC,EAAWD,EAAO,KAAK,EAAE,EAC/Bf,GAAA,MAAAA,EAAWgB,GAGX,MAAMK,EAAkBN,EAAO,IAAI,CAACD,EAAK3D,IAAM2D,IAAQ,GAAK3D,EAAI,EAAE,EAAE,OAAOA,GAAKA,IAAM,EAAE,EAAE,OAAS,GACnGsD,EAAW,KAAK,IAAIY,EAAkB,EAAGtB,EAAS,CAAC,CAAC,EAGhDiB,EAAS,SAAWjB,GAAU,CAACgB,EAAO,SAAS,EAAE,IACnDd,GAAA,MAAAA,EAAae,GAEjB,EAEA,OACExC,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EAEN,SAAA,MAAM,KAAK,CAAE,OAAAmN,CAAA,CAAQ,EAAE,IAAI,CAACuB,EAAGZ,IAC9BlC,EAAAA,IAAC,QAAA,CAEC,IAAK+C,GAAMf,EAAU,QAAQE,CAAK,EAAIa,EACtC,KAAK,OACL,UAAWtL,IAAS,SAAW,UAAY,OAC3C,QAASA,IAAS,SAAW,OAAS,OACtC,UAAW,EACX,MAAOmK,EAAIM,CAAK,EAChB,SAAUjN,GAAKoN,EAAaH,EAAOjN,EAAE,OAAO,KAAK,EACjD,UAAWA,GAAKwN,EAAcP,EAAOjN,CAAC,EACtC,QAASiN,IAAU,EAAIQ,EAAc,OACrC,QAASzN,GAAKA,EAAE,OAAO,OAAA,EACvB,YAAA0M,EACA,SAAAb,EACA,UAAWY,GAAaQ,IAAU,EAClC,UAAWxT,EACTyB,GAAO,MACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,MAAM,EAAGyR,EAAIM,CAAK,EAC1B,CAAC/R,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,UAAU,EAAGyQ,GAAmB,CAACE,CAAA,CAC3C,CACF,EAvBKoB,CAAA,CAyBR,CAAA,CAAA,CAGP,CACF,EAEAZ,GAAS,YAAc,qvBCxNV0B,GAAWlP,EAAAA,WACtB,CACE,CACE,UAAAjE,EACA,MAAAqC,EACA,QAAAoO,EAAU,UACV,KAAAC,EAAO,KACP,WAAA0C,EAAa,GACb,mBAAAC,EAAqB,GACrB,cAAAC,EACA,QAAAC,EAAU,EACV,QAAAC,EAAU,GACV,UAAA7C,EAAY,GACZ,gBAAAI,EAAkB,GAClB,MAAA0C,EACA,SAAAC,EACA,SAAAC,EACA,SAAA1C,EACA,SAAAE,EACA,MAAAnS,EACA,aAAA4U,EACA,SAAAjC,EACA,GAAGvN,CAAA,EAELC,IACG,CACH,KAAM,CAACwP,EAAeC,CAAgB,EAAI7B,EAAAA,SAAS2B,GAAgB,EAAE,EAC/DG,EAActR,EAAAA,OAAmC,IAAI,EAGrDuR,EAAehV,IAAU,OACzBiV,EAAeD,EAAehV,EAAQ6U,EACtCK,EAAY,OAAOD,CAAY,EAAE,OAGjCE,EAAUC,EAAAA,YACb9I,GAAwC,CACvCyI,EAAY,QAAUzI,EAClBjH,IACE,OAAOA,GAAQ,WACjBA,EAAIiH,CAAO,EAEXjH,EAAI,QAAUiH,EAGpB,EACA,CAACjH,CAAG,CAAA,EAIAgQ,EAAeD,EAAAA,YAAY,IAAM,CACrC,MAAME,EAAWP,EAAY,QAC7B,GAAI,CAACO,GAAY,CAAClB,EAAY,OAG9BkB,EAAS,MAAM,OAAS,OACxB,MAAMC,EAAeD,EAAS,aAGxBE,EAAY,GAAGjB,EAAU,GAAG,MAC5BkB,EAAY,GAAGjB,EAAU,GAAG,MAE9Be,GAAgB,SAASC,CAAS,EAAI,IACxCF,EAAS,MAAM,OAASE,EACxBF,EAAS,MAAM,UAAY,UAClBC,GAAgB,SAASE,CAAS,EAAI,IAC/CH,EAAS,MAAM,OAASG,EACxBH,EAAS,MAAM,UAAY,SAE3BA,EAAS,MAAM,OAAS,GAAGC,CAAY,KACvCD,EAAS,MAAM,UAAY,SAE/B,EAAG,CAAClB,EAAYG,EAASC,CAAO,CAAC,EAGjC/P,EAAAA,UAAU,IAAM,CACd4Q,EAAA,CACF,EAAG,CAACJ,EAAcI,CAAY,CAAC,EAG/B5Q,EAAAA,UAAU,IAAM,CACd,GAAI,CAAC2P,EAAY,OAEjB,MAAMsB,EAAe,IAAML,EAAA,EAC3B,cAAO,iBAAiB,SAAUK,CAAY,EACvC,IAAM,OAAO,oBAAoB,SAAUA,CAAY,CAChE,EAAG,CAACtB,EAAYiB,CAAY,CAAC,EAE7B,MAAM7B,EAAgBpN,GAA8C,CAClE,MAAMuP,EAAWvP,EAAE,OAAO,MAGtBkO,GAAiBqB,EAAS,OAASrB,IAIlCU,GACHF,EAAiBa,CAAQ,EAG3BhD,GAAA,MAAAA,EAAWvM,GAGPgO,GACF,WAAW,IAAMiB,EAAA,EAAgB,CAAC,EAEtC,EAEMO,EAActB,EAAgBY,EAAYZ,EAAgB,GAG1DuB,EAAiB7V,GAAuC,CAC5D,GAAIA,IAAU,OACd,OAAO,OAAOA,GAAU,SAAW,GAAGA,CAAK,KAAOA,CACpD,EAEMuS,EAAoC,CAExC,MAAOZ,EAAY,OAAYkE,EAAcpB,CAAK,EAClD,SAAUoB,EAAcnB,CAAQ,EAChC,SAAUmB,EAAclB,CAAQ,CAAA,EAI5B,CAAE,UAAWrC,EAAkB,MAAOwD,CAAA,EAA0B3S,EAAuB,CAC3F,UAAW,GACX,MAAO,CAAE,GAAGoP,EAAc,GAAGlP,CAAA,EAC7B,iBAAkBxD,EAChByB,GAAO,QACP,CACE,CAACA,GAAO,SAAS,EAAGqQ,CAAA,CACtB,CACF,CACD,EAGK,CAAE,UAAWoE,EAAmB,MAAOC,CAAA,EAAkB7S,EAAuB,CACpF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,SACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,QAAQ,EAAG6Q,EACnB,CAAC7Q,GAAO,UAAU,EAAGyQ,GAAmB,CAACE,GAAY,CAACE,EACtD,CAAC7Q,GAAO,UAAU,EAAG8S,EACrB,CAAC9S,GAAO,SAAS,EAAGsU,CAAA,CACtB,CACF,CACD,EAED,OACExE,EAAAA,KAAC,MAAA,CACC,UAAWkB,EACX,MAAOwD,EAEP,SAAA,CAAA3E,EAAAA,IAAC,WAAA,CACC,IAAKgE,EACL,UAAWY,EACX,MAAOC,EACP,SAAA/D,EACA,SAAAE,EACA,MAAO8C,EACP,SAAUzB,EACV,KAAOY,EAAuB,OAAVG,EACnB,GAAGnP,CAAA,CAAA,EAELiP,GACClD,EAAAA,IAAC,MAAA,CACC,UAAWtR,EACTyB,GAAO,eACP,CACE,CAACA,GAAO,KAAK,EAAGsU,GAAenE,IAAY,QAC3C,CAACnQ,GAAO,OAAO,EAAGmQ,IAAY,SAAA,CAChC,EAGF,SAAAL,EAAAA,KAAC,OAAA,CAAK,UAAW9P,GAAO,MACrB,SAAA,CAAA4T,EACAZ,GAAiB,MAAMA,CAAa,EAAA,CAAA,CACvC,CAAA,CAAA,CACF,CAAA,CAAA,CAIR,CACF,EAEAH,GAAS,YAAc,+uCCrLvB,SAAS8B,GAAcC,EAAuE,CAC5F,MAAO,YAAaA,CACtB,CAEO,MAAMC,GAAelR,EAAAA,WAC1B,CACE,CACE,UAAAjE,EACA,MAAAqC,EACA,QAAAoO,EAAU,UACV,KAAAC,EAAO,KACP,QAAAtO,EAAU,CAAA,EACV,YAAA0P,EAAc,sBACd,UAAAnB,EAAY,GACZ,gBAAAI,EAAkB,GAClB,SAAAE,EAAW,GACX,MAAAjS,EACA,aAAA4U,EACA,SAAAjC,EACA,OAAAyD,EACA,QAAAC,EACA,KAAA5L,EACA,GAAA6L,CAAA,EAEFjR,IACG,CACH,KAAM,CAACkR,EAAQC,CAAS,EAAIvD,EAAAA,SAAS,EAAK,EACpC,CAACwD,EAAeC,CAAgB,EAAIzD,EAAAA,SAASjT,GAAS4U,GAAgB,EAAE,EACxE,CAAC+B,EAAcC,CAAe,EAAI3D,EAAAA,SAAS,EAAE,EAC7C4D,EAAcpT,EAAAA,OAAuB,IAAI,EACzCqT,EAAarT,EAAAA,OAA0B,IAAI,EAEjDsT,EAAAA,oBAAoB1R,EAAK,IAAMwR,EAAY,QAAU,CAAA,CAAE,EAGvD,MAAMG,EAA8B,CAAA,EACpC5T,EAAQ,QAAQ8S,GAAU,CACpBD,GAAcC,CAAM,EACtBc,EAAY,KAAK,GAAGd,EAAO,QAAQ,OAAOe,GAAO,CAACA,EAAI,QAAQ,CAAC,EACrDf,EAAO,UACjBc,EAAY,KAAKd,CAAM,CAE3B,CAAC,EAGDzR,EAAAA,UAAU,IAAM,CACVzE,IAAU,QACZ0W,EAAiB1W,CAAK,CAE1B,EAAG,CAACA,CAAK,CAAC,EAGVyE,EAAAA,UAAU,IAAM,CACd,MAAMyS,EAAsBC,GAAsB,CAC5CN,EAAY,SAAW,CAACA,EAAY,QAAQ,SAASM,EAAM,MAAc,IAC3EX,EAAU,EAAK,EACfI,EAAgB,EAAE,EAEtB,EAEA,GAAIL,EACF,gBAAS,iBAAiB,YAAaW,CAAkB,EAClD,IAAM,SAAS,oBAAoB,YAAaA,CAAkB,CAE7E,EAAG,CAACX,CAAM,CAAC,EAEX,MAAMa,EAAe,IAAM,CACrBnF,IAEJuE,EAAU,CAACD,CAAM,EACjBK,EAAgB,EAAE,EAEbL,EAGHH,GAAA,MAAAA,IAFAC,GAAA,MAAAA,IAIJ,EAEMgB,EAAsBC,GAAwB,OAClDZ,EAAiBY,CAAW,EAC5Bd,EAAU,EAAK,EACfI,EAAgB,EAAE,EAClBjE,GAAA,MAAAA,EAAW2E,GACXlB,GAAA,MAAAA,KACA9C,EAAAwD,EAAW,UAAX,MAAAxD,EAAoB,OACtB,EAEMM,EAAiBuD,GAA+B,OACpD,GAAI,CAAAlF,EAEJ,OAAQkF,EAAM,IAAA,CACZ,IAAK,QACL,IAAK,IACHA,EAAM,eAAA,EACFZ,GAAUI,GAAgB,EAC5BU,EAAmBL,EAAYL,CAAY,EAAE,KAAK,EAElDH,EAAU,CAACD,CAAM,EAEnB,MACF,IAAK,SACHC,EAAU,EAAK,EACfI,EAAgB,EAAE,GAClBtD,EAAAwD,EAAW,UAAX,MAAAxD,EAAoB,QACpB,MACF,IAAK,YACH6D,EAAM,eAAA,EACDZ,EAIHK,KACEW,EAAOP,EAAY,OAAS,EAAIO,EAAO,EAAIA,CAAA,GAJ7Cf,EAAU,EAAI,EACdI,EAAgB,CAAC,GAMnB,MACF,IAAK,UACHO,EAAM,eAAA,EACFZ,GACFK,EAAgBW,GAAQA,EAAO,EAAIA,EAAO,EAAIA,CAAI,EAEpD,KAAA,CAEN,EAGMC,EAAiBR,EAAY,KAAKC,GAAOA,EAAI,QAAUR,CAAa,EACpEgB,GAAeD,GAAA,YAAAA,EAAgB,QAAS1E,EAE9C,OACE1B,EAAAA,KAAC,MAAA,CACC,IAAKyF,EACL,UAAWhX,EACTyB,GAAO,cACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,SAAS,EAAGqQ,EACpB,CAACrQ,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,UAAU,EAAGyQ,GAAmB,CAACE,EACzC,CAAC3Q,GAAO,MAAM,EAAGiV,CAAA,EAEnBvV,CAAA,EAEF,MAAAqC,EAGA,SAAA,CAAA8N,EAAAA,IAAC,QAAA,CACC,KAAK,SACL,KAAA1G,EACA,MAAOgM,CAAA,CAAA,EAITrF,EAAAA,KAAC,SAAA,CACC,IAAK0F,EACL,KAAK,SACL,UAAWxV,GAAO,QAClB,QAAS8V,EACT,UAAWxD,EACX,SAAA3B,EACA,gBAAc,UACd,gBAAesE,EACf,kBAAiBD,EACjB,GAAAA,EAEA,SAAA,CAAAnF,EAAAA,IAAC,OAAA,CAAK,UAAWtR,EAAKyB,GAAO,MAAO,CAAE,CAACA,GAAO,WAAW,EAAG,CAACkW,CAAA,CAAgB,EAC1E,SAAAC,CAAA,CACH,EACAtG,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MACrB,SAAA6P,EAAAA,IAAC,MAAA,CACC,MAAM,KACN,OAAO,IACP,QAAQ,WACR,KAAK,OACL,MAAM,6BACN,UAAWtR,EAAK,CAAE,CAACyB,GAAO,SAAS,EAAGiV,EAAQ,EAE9C,SAAApF,EAAAA,IAAC,OAAA,CACC,EAAE,gBACF,OAAO,eACP,YAAY,IACZ,cAAc,SACd,eAAe,OAAA,CAAA,CACjB,CAAA,CACF,CACF,CAAA,CAAA,CAAA,EAIDoF,GACCpF,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,SAAU,KAAK,UACnC,SAAA8B,EAAQ,IAAI,CAAC8S,EAAQwB,IAAe,CACnC,GAAIzB,GAAcC,CAAM,EACtB,OACE9E,EAAAA,KAAC,MAAA,CAAgC,UAAW9P,GAAO,YACjD,SAAA,CAAA6P,MAAC,MAAA,CAAI,UAAW7P,GAAO,WAAa,WAAO,MAAM,EAChD4U,EAAO,QAAQ,IAAKe,GAAQ,CAC3B,MAAMU,EAAYX,EAAY,aAAgBY,EAAG,QAAUX,EAAI,KAAK,EACpE,OACE9F,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,UAAWtR,EACTyB,GAAO,OACP,CACE,CAACA,GAAO,QAAQ,EAAG2V,EAAI,QAAUR,EACjC,CAACnV,GAAO,OAAO,EAAGqW,IAAchB,EAChC,CAACrV,GAAO,QAAQ,EAAG2V,EAAI,QAAA,CACzB,EAEF,QAAS,IAAM,CAACA,EAAI,UAAYI,EAAmBJ,EAAI,KAAK,EAC5D,SAAUA,EAAI,SACd,KAAK,SACL,gBAAeA,EAAI,QAAUR,EAE5B,SAAAQ,EAAI,KAAA,EAfAA,EAAI,KAAA,CAkBf,CAAC,CAAA,CAAA,EAxBO,SAASS,CAAU,EAyB7B,EAEG,CACL,MAAMC,EAAYX,EAAY,aAAgBY,EAAG,QAAU1B,EAAO,KAAK,EACvE,OACE/E,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,UAAWtR,EACTyB,GAAO,OACP,CACE,CAACA,GAAO,QAAQ,EAAG4U,EAAO,QAAUO,EACpC,CAACnV,GAAO,OAAO,EAAGqW,IAAchB,EAChC,CAACrV,GAAO,QAAQ,EAAG4U,EAAO,QAAA,CAC5B,EAEF,QAAS,IAAM,CAACA,EAAO,UAAYmB,EAAmBnB,EAAO,KAAK,EAClE,SAAUA,EAAO,SACjB,KAAK,SACL,gBAAeA,EAAO,QAAUO,EAE/B,SAAAP,EAAO,KAAA,EAfHA,EAAO,KAAA,CAkBlB,CACF,CAAC,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,CACF,EAEAC,GAAa,YAAc,qnBC9P3B,SAASF,GAAcC,EAAuE,CAC5F,MAAO,YAAaA,CACtB,CAEO,MAAM2B,GAAS5S,EAAAA,WACpB,CACE,CACE,UAAAjE,EACA,MAAAqC,EACA,QAAAoO,EAAU,UACV,KAAAC,EAAO,KACP,QAAAtO,EAAU,CAAA,EACV,YAAA0P,EACA,UAAAnB,EAAY,GACZ,gBAAAI,EAAkB,GAClB,YAAA+F,EAAc,GACd,kBAAAC,EAAoB,GACpB,cAAAC,EACA,SAAA/F,EACA,SAAA9M,EACA,GAAGC,CAAA,EAELC,IACG,CAEH,KAAM,CAAE,UAAW4S,EAAiB,MAAOC,CAAA,EAAgB/U,EAAuB,CAChF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,OACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,UAAU,EAAGyQ,GAAmB,CAACE,EACzC,CAAC3Q,GAAO,SAAS,EAAGqQ,EACpB,CAACrQ,GAAO,cAAc,EAAGwR,GAAe,CAAC1N,EAAM,OAAS,CAACA,EAAM,YAAA,CACjE,CACF,CACD,EAGK,CAAE,UAAWkN,EAAkB,MAAOC,CAAA,EAAiBpP,EAAuB,CAClF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,cACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,SAAS,EAAGqQ,EACpB,CAACrQ,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,UAAU,EAAGyQ,GAAmB,CAACE,CAAA,CAC3C,CACF,CACD,EAGD,GAAI8F,EAAmB,CAErB,IAAII,EAAmB/U,EAEvB,OAAIA,EAAQ,SAAW,GAAK+B,IAC1BgT,EAAmB,CAAA,EACnB3S,EAAM,SAAS,QAAQL,EAAW4K,GAAU,CAC1C,GAAIvK,EAAM,eAAeuK,CAAK,GAC5B,GAAIA,EAAM,OAAS,SAAU,CAC3B,MAAM/P,EAAQ+P,EAAM,MAAM,OAAS,GAC7BqI,EAAQrI,EAAM,MAAM,UAAY,GAClC/P,GAASoY,GACXD,EAAiB,KAAK,CACpB,MAAAnY,EACA,MAAAoY,EACA,SAAUrI,EAAM,MAAM,QAAA,CACvB,CAEL,SAAWA,EAAM,OAAS,WAAY,CACpC,MAAMsI,EAAatI,EAAM,MAAM,OAAS,GAClCuI,EAA+B,CAAA,EAErC9S,EAAM,SAAS,QAAQuK,EAAM,MAAM,SAAWwI,GAAgB,CAC5D,GAAI/S,EAAM,eAAe+S,CAAW,GAAKA,EAAY,OAAS,SAAU,CACtE,MAAMnT,EAAQmT,EAAY,MACpBvY,EAAQoF,EAAM,OAAS,GACvBgT,EAAQhT,EAAM,UAAY,GAC5BpF,GAASoY,GACXE,EAAa,KAAK,CAChB,MAAO,OAAOtY,CAAK,EACnB,MAAO,OAAOoY,CAAK,EACnB,SAAUhT,EAAM,QAAA,CACjB,CAEL,CACF,CAAC,EAEGkT,EAAa,OAAS,GACxBH,EAAiB,KAAK,CACpB,MAAOE,EACP,QAASC,CAAA,CACV,CAEL,EAEJ,CAAC,GAIDnH,EAAAA,IAACgF,GAAA,CACC,QAAA1E,EACA,KAAAC,EACA,QAASyG,EACT,YAAArF,EACA,UAAAnB,EACA,gBAAAI,EACA,SAAAE,EACA,MAAO7M,EAAM,MACb,aAAcA,EAAM,aACpB,SAAU4S,IAAmBhY,GAAU,OAErC,MAAMwY,EAAiB,CACrB,OAAQ,CAAE,MAAAxY,CAAA,EACV,cAAe,CAAE,MAAAA,CAAA,CAAM,GAEzBsT,EAAAlO,EAAM,WAAN,MAAAkO,EAAA,KAAAlO,EAAiBoT,EACnB,GACA,OAAQpT,EAAM,OAAS,IAAA,OAAM,OAAAkO,EAAAlO,EAAM,SAAN,YAAAkO,EAAA,KAAAlO,EAAe,CAAA,IAA6C,OACzF,QAASA,EAAM,QAAU,IAAA,OAAM,OAAAkO,EAAAlO,EAAM,UAAN,YAAAkO,EAAA,KAAAlO,EAAgB,CAAA,IAA6C,OAC5F,UAAApE,EACA,MAAAqC,EACA,KAAM+B,EAAM,KACZ,GAAIA,EAAM,EAAA,CAAA,CAGhB,CAEA,MAAMqT,EACJrH,EAAAA,KAAC,SAAA,CACC,IAAA/L,EACA,UAAW4S,EACX,MAAOC,EACP,SAAAjG,EACC,GAAG7M,EAEH,SAAA,CAAA0N,GACC3B,EAAAA,IAAC,UAAO,MAAM,GAAG,SAAQ,GAAC,OAAM,GAC7B,SAAA2B,CAAA,CACH,EAED3N,GAEG/B,EAAQ,IAAI,CAAC8S,EAAQ7C,IACf4C,GAAcC,CAAM,EAEpB/E,MAAC,YAAgC,MAAO+E,EAAO,MAC5C,SAAAA,EAAO,QAAQ,IAAKe,GACnB9F,EAAAA,IAAC,SAAA,CAEC,MAAO8F,EAAI,MACX,SAAUA,EAAI,SAEb,SAAAA,EAAI,KAAA,EAJAA,EAAI,KAAA,CAMZ,GATY,SAAS5D,CAAK,EAU7B,EAIAlC,EAAAA,IAAC,SAAA,CAEC,MAAO+E,EAAO,MACd,SAAUA,EAAO,SAEhB,SAAAA,EAAO,KAAA,EAJHA,EAAO,KAAA,CAQnB,CAAA,CAAA,CAAA,EAIT,OAAI4B,EAEA1G,EAAAA,KAAC,MAAA,CACC,UAAWkB,EACX,MAAOC,EAEN,SAAA,CAAAkG,EACDtH,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MACrB,SAAA6P,EAAAA,IAAC,MAAA,CACC,MAAM,KACN,OAAO,IACP,QAAQ,WACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,gBACF,OAAO,eACP,YAAY,IACZ,cAAc,SACd,eAAe,OAAA,CAAA,CACjB,CAAA,CACF,CACF,CAAA,CAAA,CAAA,EAKCsH,CACT,CACF,EAEAZ,GAAO,YAAc,yxBCpORa,GAAWzT,EAAAA,WACtB,CACE,CACE,UAAAjE,EACA,MAAAqC,EACA,KAAAqO,EAAO,KACP,MAAA0G,EACA,cAAAO,EAAgB,GAChB,MAAAjR,EAAQ,GACR,gBAAAqK,EAAkB,GAClB,SAAAE,EACA,GAAAqE,EACA,GAAGlR,CAAA,EAELC,IACG,CACH,MAAMuT,EAAcnV,EAAAA,OAAyB,IAAI,EAC3CoV,EAAcxT,GAAOuT,EAG3BnU,EAAAA,UAAU,IAAM,CACd,MAAMqU,EAAW,OAAOD,GAAgB,WAAa,KAAOA,EAAY,QACpEC,IACFA,EAAS,cAAgBH,EAE7B,EAAG,CAACA,EAAeE,CAAW,CAAC,EAE/B,MAAME,EAAazC,GAAM,YAAY,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,CAAC,GAGtE,CAAE,UAAW0C,EAAoB,MAAOC,CAAA,EAAmB9V,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,KAAK,EAAGoG,CAAA,CAClB,CACF,CACD,EAED,OACE0J,EAAAA,KAAC,MAAA,CACC,UAAW4H,EACX,MAAOC,EAEP,SAAA,CAAA7H,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,gBACrB,SAAA,CAAA6P,EAAAA,IAAC,QAAA,CACC,IAAK0H,EACL,KAAK,WACL,GAAIE,EACJ,UAAWzX,GAAO,MAClB,SAAA2Q,EACA,eAAcvK,EACb,GAAGtC,CAAA,CAAA,EAENgM,EAAAA,KAAC,MAAA,CACC,UAAWvR,EACTyB,GAAO,SACP,CACE,CAACA,GAAO,UAAU,EAAGyQ,EACrB,CAACzQ,GAAO,aAAa,EAAGqX,CAAA,CAC1B,EAGF,SAAA,CAAAxH,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,UAClB,QAAQ,YACR,KAAK,OACL,cAAY,OAEZ,SAAA6P,EAAAA,IAAC,OAAA,CACC,EAAE,kBACF,OAAO,eACP,YAAY,IACZ,cAAc,SACd,eAAe,OAAA,CAAA,CACjB,CAAA,EAEFA,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,iBAAA,CAAmB,CAAA,CAAA,CAAA,CAC5C,EACF,EACC8W,SACE,QAAA,CAAM,QAASW,EAAY,UAAWzX,GAAO,MAC3C,SAAA8W,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,CACF,EAEAM,GAAS,YAAc,oyBCzFjBQ,GAAoBC,EAAAA,cAAkD,MAAS,EAwExEC,GAAwC,CAAC,CACpD,KAAA3O,EACA,MAAO4O,EACP,aAAAzE,EACA,SAAAjC,EACA,SAAAxN,EACA,UAAAmU,EAAY,WACZ,KAAA5H,EAAO,KACP,SAAAO,EAAW,GACX,MAAAvK,EAAQ,GACR,gBAAAqK,EAAkB,GAClB,UAAA/Q,EACA,MAAAqC,CACF,IAAM,CACJ,KAAM,CAACkW,EAAmBC,CAAoB,EAAIvG,EAAAA,SAAS2B,CAAY,EACjEI,EAAeqE,IAAoB,OACnCrZ,EAAQgV,EAAeqE,EAAkBE,EAEzC/F,EAAgBmC,GAAqB,CACpCX,GACHwE,EAAqB7D,CAAQ,EAE/BhD,GAAA,MAAAA,EAAWgD,EACb,EAGM,CAAE,UAAW8D,EAAgB,MAAOC,CAAA,EAAevW,EAAuB,CAC9E,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAOgY,CAAS,EAChB,CACE,CAAChY,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,KAAK,EAAGoG,CAAA,CAClB,CACF,CACD,EAED,OACEyJ,EAAAA,IAAC+H,GAAkB,SAAlB,CACC,MAAO,CACL,KAAAzO,EACA,MAAAzK,EACA,SAAUwT,EACV,SAAAvB,EACA,MAAAvK,EACA,KAAAgK,EACA,gBAAAK,CAAA,EAGF,SAAAZ,EAAAA,IAAC,MAAA,CACC,UAAWsI,EACX,MAAOC,EACP,KAAK,aACL,eAAchS,EAEb,SAAAvC,CAAA,CAAA,CACH,CAAA,CAGN,EAqCawU,GAAQ1U,EAAAA,WACnB,CACE,CACE,UAAAjE,EACA,MAAAqC,EACA,MAAArD,EACA,MAAAoY,EACA,KAAMwB,EACN,SAAUC,EACV,MAAOC,EACP,gBAAiBC,EACjB,GAAAzD,EACA,GAAGlR,CAAA,EAELC,IACG,CACH,MAAMgE,EAAU2Q,EAAAA,WAAWd,EAAiB,EAE5C,GAAI,CAAC7P,EACH,MAAM,IAAI,MAAM,sCAAsC,EAGxD,KAAM,CACJ,KAAAoB,EACA,MAAOwP,EACP,SAAAtH,EACA,SAAUuH,EACV,MAAOC,EACP,KAAMC,EACN,gBAAiBC,CAAA,EACfhR,EAEEqI,EAAOkI,GAAYQ,GAAa,KAChCnI,EAAW4H,GAAgBK,EAC3BxS,EAAQoS,GAAaK,EACrBpI,EAAkBgI,IAAe,OAAYA,EAAaM,EAC1DC,EAAYta,IAAUia,EACtBM,EAAUjE,GAAM,SAAS7L,CAAI,IAAIzK,CAAK,GAEtCwT,EAAe,IAAM,CACpBvB,GACHU,EAAS3S,CAAK,CAElB,EAGM,CAAE,UAAWgZ,EAAoB,MAAOC,CAAA,EAAmB9V,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,KAAK,EAAGoG,EAChB,CAACpG,GAAO,OAAO,EAAGgZ,CAAA,CACpB,CACF,CACD,EAED,OACElJ,EAAAA,KAAC,MAAA,CACC,UAAW4H,EACX,MAAOC,EAEP,SAAA,CAAA7H,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,aACrB,SAAA,CAAA6P,EAAAA,IAAC,QAAA,CACC,IAAA9L,EACA,KAAK,QACL,GAAIkV,EACJ,KAAA9P,EACA,MAAAzK,EACA,QAASsa,EACT,SAAU,IAAM9G,EAAA,EAChB,UAAWlS,GAAO,MAClB,SAAA2Q,EACA,eAAcvK,EACb,GAAGtC,CAAA,CAAA,EAEN+L,EAAAA,IAAC,MAAA,CACC,UAAWtR,EACTyB,GAAO,MACP,CACE,CAACA,GAAO,UAAU,EAAGyQ,CAAA,CACvB,EAGF,SAAAZ,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,SAAA,CAAW,CAAA,CAAA,CACpC,EACF,EACC8W,SACE,QAAA,CAAM,QAASmC,EAAS,UAAWjZ,GAAO,MACxC,SAAA8W,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,CACF,EAEAuB,GAAM,YAAc,wzBClRPa,GAASvV,EAAAA,WACpB,CACE,CACE,UAAAjE,EACA,MAAAqC,EACA,KAAAqO,EAAO,KACP,MAAA0G,EACA,cAAAqC,EAAgB,QAChB,QAAA7I,EAAU,GACV,gBAAAG,EAAkB,GAClB,SAAAE,EACA,QAASyI,EACT,eAAAC,EACA,SAAAhI,EACA,gBAAAiI,EACA,GAAAtE,EACA,GAAGlR,CAAA,EAELC,IACG,CAEH,KAAM,CAACwV,EAAiBC,CAAkB,EAAI7H,EAAAA,SAAS0H,GAAkB,EAAK,EACxE3F,EAAe0F,IAAsB,OACrCJ,EAAYtF,EAAe0F,EAAoBG,EAE/CrH,EAAe4B,cAAa+B,GAA+C,CAC/E,MAAM4D,EAAa5D,EAAM,OAAO,QAG3BnC,GACH8F,EAAmBC,CAAU,EAI/BpI,GAAA,MAAAA,EAAWwE,GACXyD,GAAA,MAAAA,EAAkBG,EACpB,EAAG,CAAC/F,EAAcrC,EAAUiI,CAAe,CAAC,EAEtCI,EAAW1E,GAAM,UAAU,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,CAAC,GAClE2E,EAAahJ,GAAYL,EAGzB,CAAE,UAAWoH,EAAoB,MAAOC,CAAA,EAAmB9V,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,QAAQ,EAAG2Z,EACnB,CAAC3Z,GAAO,SAAS,EAAGmZ,IAAkB,MAAA,CACxC,CACF,CACD,EAEKS,EACJ9J,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,cACrB,SAAA,CAAA6P,EAAAA,IAAC,QAAA,CACC,IAAA9L,EACA,KAAK,WACL,GAAI2V,EACJ,UAAW1Z,GAAO,MAClB,SAAU2Z,EACV,QAASX,EACT,SAAU9G,EACT,GAAGpO,CAAA,CAAA,EAEN+L,EAAAA,IAAC,MAAA,CACC,UAAWtR,EACTyB,GAAO,OACP,CACE,CAACA,GAAO,UAAU,EAAGyQ,EACrB,CAACzQ,GAAO,OAAO,EAAGgZ,EAClB,CAAChZ,GAAO,OAAO,EAAGsQ,CAAA,CACpB,EAGF,SAAAT,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MACpB,SAAAsQ,GACCT,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,gBAAA,CAAkB,CAAA,CAE7C,CAAA,CAAA,CACF,EACF,EAGI6Z,EAAe/C,GACnBjH,MAAC,QAAA,CAAM,QAAS6J,EAAU,UAAW1Z,GAAO,MACzC,SAAA8W,CAAA,CACH,EAGF,OACEhH,EAAAA,KAAC,MAAA,CACC,UAAW4H,EACX,MAAOC,EAEN,SAAA,CAAAwB,IAAkB,QAAUU,EAC5BD,EACAT,IAAkB,SAAWU,CAAA,CAAA,CAAA,CAGpC,CACF,EAEAX,GAAO,YAAc,qfChERY,GAASnW,EAAAA,WACpB,CACE,CACE,UAAAjE,EACA,MAAAqC,EACA,QAAAoO,EAAU,UACV,KAAAC,EAAO,KACP,QAAS2J,EACT,eAAAC,EAAiB,GACjB,gBAAAC,EACA,QAAAC,EACA,SAAAvJ,EACA,gBAAAF,EAAkB,GAClB,SAAA5M,EACA,QAAAsW,EAAU,GACV,GAAGrW,CAAA,EAELC,IACG,CAEH,KAAM,CAACqW,EAAiBC,CAAkB,EAAI1I,EAAAA,SAASqI,CAAc,EAC/DtG,EAAeqG,IAAsB,OACrCO,EAAY5G,EAAeqG,EAAoBK,EAG/C,CAAE,UAAWpW,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,OACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,OAAO,EAAGsa,EAClB,CAACta,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,UAAU,EAAGyQ,GAAmB,CAACE,CAAA,CAC3C,CACF,CACD,EAEK4J,EAAczG,cAAa+B,GAA+C,CAC9E,GAAIlF,EAAU,OAEd,MAAM6J,EAAa,CAACF,EAGf5G,GACH2G,EAAmBG,CAAU,EAI/BN,GAAA,MAAAA,EAAUrE,GACVoE,GAAA,MAAAA,EAAkBO,EACpB,EAAG,CAAC9G,EAAc4G,EAAWJ,EAASD,EAAiBtJ,CAAQ,CAAC,EAE1D8J,EAAON,EAAU,OAAS,SAEhC,OACEtK,EAAAA,IAAC4K,EAAA,CACC,IAAA1W,EACA,KAAMoW,EAAU,OAAY,SAC5B,KAAK,SACL,eAAcG,EACd,aAAYA,EAAY,KAAO,MAC/B,UAAWtW,EACX,MAAOC,EACP,QAASsW,EACT,SAAA5J,EACC,GAAG7M,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEAiW,GAAO,YAAc,4kCC7HfY,GAAmBxW,EAAM,cAIrB,IAAI,EAERyW,GAAe,IAAM,CACzB,MAAM5S,EAAU7D,EAAM,WAAWwW,EAAgB,EACjD,GAAI,CAAC3S,EACH,MAAM,IAAI,MAAM,sDAAsD,EAExE,OAAOA,CACT,EAqEa6S,GAGT,CAAC,CACH,SAAA/W,EACA,UAAAnE,EACA,MAAAqC,EACA,YAAA8Y,EAAc,GACd,KAAMC,EACN,aAAAC,EACA,UAAAC,EAAY,IACZ,WAAAC,EAAa,GACf,IAAM,CACJ,KAAM,CAACC,EAAcC,CAAe,EAAIxJ,EAAAA,SAASkJ,CAAW,EACtDnH,EAAeoH,IAAmB,OAClCM,EAAO1H,EAAeoH,EAAiBI,EACvC1F,EAAarT,EAAAA,OAAuB,IAAI,EACxCkZ,EAAelZ,EAAAA,OAAA,EACfmZ,EAAgBnZ,EAAAA,OAAA,EAEhBoZ,EAAWC,GAAqB,CAEhCH,EAAa,SAAS,aAAaA,EAAa,OAAO,EACvDC,EAAc,SAAS,aAAaA,EAAc,OAAO,EAI7D,MAAMG,EAAQ,WAAW,IAAM,CACxB/H,GACHyH,EAAgBK,CAAO,EAEzBT,GAAA,MAAAA,EAAeS,EACjB,EAPcA,EAAUR,EAAYC,CAO5B,EAEJO,EACFH,EAAa,QAAUI,EAEvBH,EAAc,QAAUG,CAE5B,EAGAtY,EAAAA,UAAU,IACD,IAAM,CACPkY,EAAa,SAAS,aAAaA,EAAa,OAAO,EACvDC,EAAc,SAAS,aAAaA,EAAc,OAAO,CAC/D,EACC,CAAA,CAAE,EAGL,KAAM,CAAE,UAAWtX,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,aACG0a,GAAiB,SAAjB,CAA0B,MAAO,CAAE,KAAAU,EAAM,QAAAG,EAAS,WAAA/F,CAAA,EACjD,eAAC,MAAA,CAAI,UAAWxR,EAAoB,MAAOC,EACxC,SAAAJ,EACH,EACF,CAEJ,EAgCM6X,GAAmB/X,EAAAA,WACvB,CAAC,CAAE,SAAAE,EAAU,QAAAsW,EAAU,GAAO,UAAAza,EAAW,MAAAqC,CAAA,EAAS4Z,IAAS,CACzD,KAAM,CAAE,QAAAJ,EAAS,WAAA/F,CAAA,EAAemF,GAAA,EAG1B,CAAE,UAAW3W,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAOK4b,EAAe,CACnB,IAAKpG,EACL,aAPuB,IAAM+F,EAAQ,EAAI,EAQzC,aAPuB,IAAMA,EAAQ,EAAK,EAQ1C,QAPkB,IAAMA,EAAQ,EAAI,EAQpC,OAPiB,IAAMA,EAAQ,EAAK,EAQpC,UAAWvX,EACX,MAAOC,CAAA,EAGT,OAAIkW,GAAWjW,EAAM,eAAeL,CAAQ,EACnCK,EAAM,aAAaL,EAAqC+X,CAAY,EAI3E/L,EAAAA,IAAC,MAAA,CAAK,GAAG+L,EACN,SAAA/X,CAAA,CACH,CAEJ,CACF,EAEA6X,GAAiB,YAAc,mBAoE/B,MAAMG,GAAmBlY,EAAAA,WACvB,CAAC,CACC,SAAAE,EACA,UAAAnE,EACA,MAAAqC,EACA,KAAA+Z,EAAO,SACP,MAAAC,EAAQ,SACR,WAAAC,EAAa,EACb,YAAAC,EAAc,EACd,kBAAAC,EAAoB,WACpB,iBAAAC,EAAmB,GACnB,gBAAA1L,EAAkB,GAClB,GAAG3M,CAAA,EACFC,IAAQ,CACT,KAAM,CAAE,KAAAqX,EAAM,WAAA5F,EAAY,QAAA+F,CAAA,EAAYZ,GAAA,EAChCrD,EAAcnV,EAAAA,OAAuB,IAAI,EACzCia,EAAcrY,GAA2CuT,EACzD,CAAC+E,EAAUC,CAAW,EAAI3K,EAAAA,SAAS,CAAE,IAAK,EAAG,KAAM,EAAG,EACtD,CAAC4K,EAAYC,CAAa,EAAI7K,EAAAA,SAASmK,CAAI,EAG3C,CAAE,UAAW9X,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACPyQ,GAAmBzQ,GAAO,OAC1BA,GAAOuc,CAAU,CAAA,CACnB,CACD,EAGKE,EAAmB,IAAMlB,EAAQ,EAAI,EACrCmB,EAAmB,IAAMnB,EAAQ,EAAK,EA2F5C,OAxFApY,EAAAA,UAAU,IAAM,CACd,GAAI,CAACiY,GAAQ,CAAC5F,EAAW,SAAW,CAAC4G,EAAW,QAAS,OAEzD,MAAMO,EAAiB,IAAM,CAC3B,MAAMC,EAAUpH,EAAW,QACrBqH,EAAUT,EAAW,QAC3B,GAAI,CAACQ,GAAW,CAACC,EAAS,OAE1B,MAAMC,EAAcF,EAAQ,sBAAA,EACtBG,EAAcF,EAAQ,sBAAA,EACtBG,EAAgB,OAAO,WACvBC,EAAiB,OAAO,YAE9B,IAAIC,EAAM,EACNC,EAAO,EACPC,EAAYtB,EAGhB,OAAQA,EAAA,CACN,IAAK,MACHoB,EAAMJ,EAAY,IAAMC,EAAY,OAASf,EAC7CmB,EAAOL,EAAY,KAAOA,EAAY,MAAQ,EAAIC,EAAY,MAAQ,EACtE,MACF,IAAK,QACHG,EAAMJ,EAAY,IAAMA,EAAY,OAAS,EAAIC,EAAY,OAAS,EACtEI,EAAOL,EAAY,MAAQd,EAC3B,MACF,IAAK,SACHkB,EAAMJ,EAAY,OAASd,EAC3BmB,EAAOL,EAAY,KAAOA,EAAY,MAAQ,EAAIC,EAAY,MAAQ,EACtE,MACF,IAAK,OACHG,EAAMJ,EAAY,IAAMA,EAAY,OAAS,EAAIC,EAAY,OAAS,EACtEI,EAAOL,EAAY,KAAOC,EAAY,MAAQf,EAC9C,KAAA,CAIAF,IAAS,OAASA,IAAS,SACzBC,IAAU,QACZoB,EAAOL,EAAY,KAAOb,EACjBF,IAAU,QACnBoB,EAAOL,EAAY,MAAQC,EAAY,MAAQd,GAG7CF,IAAU,QACZmB,EAAMJ,EAAY,IAAMb,EACfF,IAAU,QACnBmB,EAAMJ,EAAY,OAASC,EAAY,OAASd,GAKhDC,IAAsB,aAEpBJ,IAAS,UAAYoB,EAAMH,EAAY,OAASE,GAClDC,EAAMJ,EAAY,IAAMC,EAAY,OAASf,EAC7CoB,EAAY,OACHtB,IAAS,OAASoB,EAAM,GACjCA,EAAMJ,EAAY,OAASd,EAC3BoB,EAAY,UACHtB,IAAS,SAAWqB,EAAOJ,EAAY,MAAQC,GACxDG,EAAOL,EAAY,KAAOC,EAAY,MAAQf,EAC9CoB,EAAY,QACHtB,IAAS,QAAUqB,EAAO,IACnCA,EAAOL,EAAY,MAAQd,EAC3BoB,EAAY,SAIdD,EAAO,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAMH,EAAgBD,EAAY,MAAQ,CAAC,CAAC,EACxEG,EAAM,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAKD,EAAiBF,EAAY,OAAS,CAAC,CAAC,GAG1ET,EAAY,CAAE,IAAAY,EAAK,KAAAC,EAAM,EACzBX,EAAcY,CAAS,CACzB,EAEA,OAAAT,EAAA,EACA,OAAO,iBAAiB,SAAUA,CAAc,EAChD,OAAO,iBAAiB,SAAUA,EAAgB,EAAI,EAE/C,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAc,EACnD,OAAO,oBAAoB,SAAUA,EAAgB,EAAI,CAC3D,CACF,EAAG,CAACvB,EAAMU,EAAMC,EAAOC,EAAYC,EAAaC,EAAmB1G,EAAY4G,CAAU,CAAC,EAErFhB,EAGHtL,EAAAA,KAAC,MAAA,CACC,IAAKsM,EACL,UAAWpY,EACX,MAAO,CACL,SAAU,QACV,IAAK,GAAGqY,EAAS,GAAG,KACpB,KAAM,GAAGA,EAAS,IAAI,KACtB,OAAQ,GACR,GAAGpY,CAAA,EAEL,aAAcwY,EACd,aAAcC,EACb,GAAG5Y,EAEJ,SAAA,CAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,aACpB,SAAA6D,EACH,QACC,MAAA,CAAI,UAAW7D,GAAO,MAAO,YAAWuc,CAAA,CAAY,CAAA,CAAA,CAAA,EApBvC,IAuBpB,CACF,EAEAV,GAAiB,YAAc,mBAG/BjB,GAAU,QAAUc,GACpBd,GAAU,QAAUiB,8kFCrXdwB,GAAoB,CACxB,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,EAAG,IACH,KAAM,IACN,MAAO,IACP,MAAO,IACP,MAAO,IACP,WAAY,aACZ,KAAM,OACN,KAAM,IACR,EAEaC,GAAa3Z,EAAAA,WACxB,CAAC,CACC,QAAAwM,EAAU,IACV,KAAAC,EACA,OAAAmN,EACA,MAAAxB,EACA,UAAAyB,EACA,MAAAC,EAAQ,UACR,OAAAC,EACA,SAAAC,EAAW,GACX,UAAAje,EACA,MAAAqC,EACA,SAAA8B,EACA,QAAAsW,EAAU,GACV,GAAGrW,CAAA,EACFC,IAAQ,CACT,MAAMH,EAAYuW,EAAU,OAASkD,GAAkBlN,CAAO,EAGxD,CAAE,UAAWnM,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,WACPA,GAAOmQ,CAAO,EACdC,GAAQpQ,GAAO,QAAQoQ,CAAI,EAAE,EAC7BmN,GAAUvd,GAAO,UAAUud,CAAM,EAAE,EACnCxB,GAAS/b,GAAO,SAAS+b,CAAK,EAAE,EAChCyB,GAAaxd,GAAO,aAAawd,CAAS,EAAE,EAC5CC,GAASzd,GAAO,SAASyd,CAAK,EAAE,EAChCC,GAAU1d,GAAO,UAAU0d,CAAM,EAAE,EACnC,CACE,CAAC1d,GAAO,QAAQ,EAAG2d,CAAA,CACrB,CACF,CACD,EAGD,OAAI/Z,IAAc,KACTiM,MAAC,MAAG,IAAA9L,EAAoD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAExID,IAAc,KACTiM,MAAC,MAAG,IAAA9L,EAAoD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAExID,IAAc,KACTiM,MAAC,MAAG,IAAA9L,EAAoD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAExID,IAAc,KACTiM,MAAC,MAAG,IAAA9L,EAAoD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAExID,IAAc,KACTiM,MAAC,MAAG,IAAA9L,EAAoD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAExID,IAAc,KACTiM,MAAC,MAAG,IAAA9L,EAAoD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAExID,IAAc,aACTiM,MAAC,cAAW,IAAA9L,EAAkD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAE9ID,IAAc,OACTiM,MAAC,QAAK,IAAA9L,EAA6C,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAEnID,IAAc,KACTiM,MAAC,MAAG,IAAA9L,EAAkD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAEtID,IAAc,OACTiM,MAAC,QAAK,IAAA9L,EAAiD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,EAIpIgM,MAAC,KAAE,IAAA9L,EAAsD,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EAAQ,SAAAD,CAAA,CAAS,CAC7I,CACF,EAEAyZ,GAAW,YAAc,aAGlB,MAAMM,GAAeja,EAAAA,WAC1B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,KAAK,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CAChE,EACA8Z,GAAa,YAAc,eAEpB,MAAMC,GAAela,EAAAA,WAC1B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,KAAK,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CAChE,EACA+Z,GAAa,YAAc,eAEpB,MAAMC,GAAena,EAAAA,WAC1B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,KAAK,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CAChE,EACAga,GAAa,YAAc,eAEpB,MAAMC,GAAepa,EAAAA,WAC1B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,KAAK,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CAChE,EACAia,GAAa,YAAc,eAEpB,MAAMC,GAAcra,EAAAA,WACzB,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,IAAI,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CAC/D,EACAka,GAAY,YAAc,cAEnB,MAAMC,GAAiBta,EAAAA,WAC5B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,OAAO,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CAClE,EACAma,GAAe,YAAc,iBAEtB,MAAMC,GAAkBva,EAAAA,WAC7B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,QAAQ,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CACnE,EACAoa,GAAgB,YAAc,kBAEvB,MAAMC,GAAkBxa,EAAAA,WAC7B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,QAAQ,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CACnE,EACAqa,GAAgB,YAAc,kBAEvB,MAAMC,GAAkBza,EAAAA,WAC7B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,QAAQ,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CACnE,EACAsa,GAAgB,YAAc,kBAEvB,MAAMC,GAAuB1a,EAAAA,WAClC,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,aAAa,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CACxE,EACAua,GAAqB,YAAc,uBAE5B,MAAMC,GAAiB3a,EAAAA,WAC5B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,OAAO,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CAClE,EACAwa,GAAe,YAAc,iBAEtB,MAAMC,GAAiB5a,EAAAA,WAC5B,CAACG,EAAOC,IAAQ8L,EAAAA,IAACyN,IAAW,QAAQ,OAAO,IAAAvZ,EAAW,GAAGD,CAAA,CAAO,CAClE,EACAya,GAAe,YAAc,snBCvNvBC,GAAiBta,EAAM,cAUnB,IAAI,EAERua,GAAa,IAAM,CACvB,MAAM1W,EAAU7D,EAAM,WAAWsa,EAAc,EAC/C,GAAI,CAACzW,EACH,MAAM,IAAI,MAAM,kDAAkD,EAEpE,OAAOA,CACT,EAmFa2W,GAOT,CAAC,CACH,SAAA7a,EACA,UAAAnE,EACA,MAAAqC,EACA,SAAA4c,EACA,aAAArL,EAAe,GACf,MAAOyE,EACP,cAAArB,EACA,OAAQkI,EACR,aAAAC,EAAe,GACf,GAAG/a,CACL,IAAM,CACJ,KAAM,CAACgb,EAAQC,CAAS,EAAIpN,EAAAA,SAAS2B,CAAY,EAC3C,CAAC0L,EAAeC,CAAgB,EAAItN,EAAAA,SAAS,CAAC,EAC9C,CAACuN,EAAOC,CAAQ,EAAIxN,EAAAA,SAA4B,CAAA,CAAE,EAClD,CAACyN,EAAcC,CAAe,EAAI1N,EAAAA,SAAS,CAAC,EAC5C+B,EAAeqE,IAAoB,OAGnC,CAAE,UAAW/T,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAEKsf,EAAgB5L,EAAeqE,EAAkB+G,EAEjDS,EAAqBzL,cAAa0L,GAAsB,CACvD9L,GACHqL,EAAUS,CAAS,EAErB9I,GAAA,MAAAA,EAAgB8I,GAChBP,EAAiB,CAAC,CACpB,EAAG,CAACvL,EAAcgD,CAAa,CAAC,EAK1B+I,EAAend,EAAAA,QAAQ,KAAO,CAClC,OAAQgd,EACR,UAAWC,EACX,cAAAP,EACA,iBAAAC,EACA,MAAAC,EACA,SAAAC,EACA,SAAAR,EACA,aAAAS,EACA,gBAAAC,CAAA,GACE,CAACC,EAAeC,EAAoBP,EAAeE,EAAOP,EAAUS,CAAY,CAAC,EAErF,OACEvP,EAAAA,IAAC2O,GAAe,SAAf,CAAwB,MAAOiB,EAC9B,SAAA5P,EAAAA,IAAC,MAAA,CACC,UAAW7L,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,EAEL,CAEJ,EAqBM6b,GAAe/b,EAAAA,WACnB,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CACvC,KAAM,CAAE,OAAA+a,EAAQ,UAAAC,EAAW,cAAAC,EAAe,iBAAAC,EAAkB,MAAAC,EAAO,SAAAP,CAAA,EAAaF,GAAA,EAG1E,CAAE,UAAWza,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAEKsS,EAAiBxN,GAAuC,OAC5D,OAAQA,EAAE,IAAA,CACR,IAAK,YACHA,EAAE,eAAA,EACFma,EAAiB,KAAK,IAAID,EAAgB,EAAGE,EAAM,OAAS,CAAC,CAAC,EAC9D,MACF,IAAK,UACHpa,EAAE,eAAA,EACFma,EAAiB,KAAK,IAAID,EAAgB,EAAG,CAAC,CAAC,EAC/C,MACF,IAAK,QACHla,EAAE,eAAA,EACEoa,EAAMF,CAAa,GAAK,CAACE,EAAMF,CAAa,EAAE,WAChDL,GAAA,MAAAA,EAAWO,EAAMF,CAAa,EAAE,QAElC,MACF,IAAK,SACHla,EAAE,eAAA,EACFia,EAAU,EAAE,EACZ,KAAA,EAEJ/M,EAAAlO,EAAM,YAAN,MAAAkO,EAAA,KAAAlO,EAAkBgB,EACpB,EAEA,OACE+K,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,aACrB,SAAA6P,EAAAA,IAAC,QAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,MAAO6a,EACP,SAAWha,GAAMia,EAAUja,EAAE,OAAO,KAAK,EACzC,UAAWwN,EACV,GAAGxO,CAAA,CAAA,EAER,CAEJ,CACF,EAEA4b,GAAa,YAAc,eAqB3B,MAAMC,GAAchc,EAAAA,WAClB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,GAAGoE,CAAA,EAASC,IAEhC8L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,KAAMN,CAAS,EACrC,GAAGoE,EAEH,SAAAD,CAAA,CAAA,CAIT,EAEA8b,GAAY,YAAc,cAqB1B,MAAMC,GAAejc,EAAAA,WACnB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,GAAGoE,CAAA,EAASC,IAAQ,CAC1C,KAAM,CAAE,aAAAqb,EAAc,OAAAN,CAAA,EAAWL,GAAA,EAEjC,OAAIW,EAAe,GAAK,CAACN,EAAe,KAGtCjP,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,MAAON,CAAS,EACtC,GAAGoE,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEA+b,GAAa,YAAc,eA0B3B,MAAMC,GAAelc,EAAAA,WACnB,CAAC,CAAE,SAAAE,EAAU,QAAAic,EAAS,UAAApgB,EAAW,GAAGoE,CAAA,EAASC,IAEzC+L,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWxF,EAAKyB,GAAO,MAAON,CAAS,EACtC,GAAGoE,EAEH,SAAA,CAAAgc,GACCjQ,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,aACpB,SAAA8f,EACH,EAEFjQ,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,WACpB,SAAA6D,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,EAEAgc,GAAa,YAAc,eA2C3B,MAAME,GAAcpc,EAAAA,WAClB,CAAC,CAAE,SAAAE,EAAU,MAAAnF,EAAO,SAAAshB,EAAW,CAAA,EAAI,SAAArP,EAAW,GAAO,UAAAjR,EAAW,SAAUugB,EAAc,GAAGnc,CAAA,EAASC,IAAQ,CAC1G,KAAM,CAAE,OAAA+a,EAAQ,cAAAE,EAAe,SAAAG,EAAU,SAAAR,EAAU,gBAAAU,CAAA,EAAoBZ,GAAA,EACjEyB,EAAY/d,EAAAA,OAAe,EAAE,EAC7Bge,EAAYhe,EAAAA,OAAO,EAAK,EAG9BgB,EAAAA,UAAU,IAAM,CACdgd,EAAU,QAAU,GACpB,MAAMrZ,EAAwB,CAAE,MAAApI,EAAO,SAAAshB,EAAU,SAAArP,CAAA,EACjD,OAAAwO,EAAUlJ,GAA4B,CACpC,MAAMmK,EAAW,CAAC,GAAGnK,EAAMnP,CAAI,EAC/B,OAAAoZ,EAAU,QAAUE,EAAS,OAAS,EAC/BA,CACT,CAAC,EAEM,IAAM,CACXD,EAAU,QAAU,GAEpB,WAAW,IAAM,CACVA,EAAU,SACbhB,EAAUlJ,GAA4BA,EAAK,OAAQoK,GAA8BA,EAAS,QAAU3hB,CAAK,CAAC,CAE9G,EAAG,CAAC,CACN,CACF,EAAG,CAACA,EAAOshB,EAAUrP,CAAQ,CAAC,EAE9B,MAAM2P,EAAaJ,EAAU,UAAYlB,EAEnCzE,EAAc,IAAM,CACnB5J,IACHsP,GAAA,MAAAA,EAAevhB,GACfigB,GAAA,MAAAA,EAAWjgB,GAEf,EAEM+d,EAAmB,IAAM,CACzB,CAAC9L,GAAYuP,EAAU,SAAW,CAGxC,EAGMK,EAAarc,EAAM,QAAQ,IAAM,CACrC,GAAI,CAAC4a,EAAQ,MAAO,GAEpB,MAAM0B,EAAc1B,EAAO,YAAA,EAG3B,OAFmBpgB,EAAM,YAAA,EAEV,SAAS8hB,CAAW,EAAU,GAEtCR,EAAS,KAAKS,GACnBA,EAAQ,YAAA,EAAc,SAASD,CAAW,CAAA,CAE9C,EAAG,CAAC1B,EAAQpgB,EAAOshB,CAAQ,CAAC,EAU5B,OAPA7c,EAAAA,UAAU,IAAM,CACd,GAAIod,EACF,OAAAlB,EAAgBpJ,GAAQA,EAAO,CAAC,EACzB,IAAMoJ,EAAgBpJ,GAAQA,EAAO,CAAC,CAEjD,EAAG,CAACsK,CAAU,CAAC,EAEVA,EAGH1Q,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EACTyB,GAAO,KACP,CACE,CAACA,GAAO,YAAY,EAAGsgB,EACvB,CAACtgB,GAAO,YAAY,EAAG2Q,CAAA,EAEzBjR,CAAA,EAEF,QAAS6a,EACT,aAAckC,EACd,KAAK,SACL,gBAAe6D,EACf,gBAAe3P,EACf,aAAYjS,EACX,GAAGoF,EAEH,SAAAD,CAAA,CAAA,EArBmB,IAwB1B,CACF,EAEAkc,GAAY,YAAc,cAgB1B,MAAMW,GAAmB/c,EAAAA,WACvB,CAAC,CAAE,UAAAjE,EAAW,GAAGoE,CAAA,EAASC,IAEtB8L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,UAAWN,CAAS,EAC3C,KAAK,YACJ,GAAGoE,CAAA,CAAA,CAIZ,EAEA4c,GAAiB,YAAc,mBAG/BhC,GAAQ,MAAQgB,GAChBhB,GAAQ,KAAOiB,GACfjB,GAAQ,MAAQkB,GAChBlB,GAAQ,MAAQmB,GAChBnB,GAAQ,KAAOqB,GACfrB,GAAQ,UAAYgC,o0BCrgBPC,GAAShd,EAAAA,WACpB,CACE,CACE,KAAAyM,EAAO,KACP,YAAAwQ,EAAc,aACd,UAAAC,EAAY,GACZ,MAAAC,EACA,IAAAC,EAAM,EACN,IAAAC,EAAM,IACN,KAAApS,EAAO,EACP,SAAA+B,EAAW,GACX,MAAOsQ,EACP,aAAA3N,EAAeyN,EACf,SAAA1P,EACA,UAAA3R,EACA,MAAAqC,EACA,eAAAmf,EACA,eAAAC,EACA,eAAAC,EACA,GAAGtd,CAAA,EAELC,IACG,CACH,KAAM,CAACrF,EAAO2iB,CAAQ,EAAI1P,EAAAA,SACE,OAA1BsP,IAAc,OAAmBA,EAAoB3N,CAAX,CAAuB,EAE7DgE,EAAcnV,EAAAA,OAAyB,IAAI,EAC3Cmf,EAAYvd,GAAOuT,EAEzBnU,EAAAA,UAAU,IAAM,CACV8d,IAAc,QAChBI,EAAS,OAAOJ,CAAS,CAAC,CAE9B,EAAG,CAACA,CAAS,CAAC,EAEd,MAAM/O,EAAgBpN,GAA2C,CAC/D,MAAMuP,EAAW,OAAOvP,EAAE,OAAO,KAAK,EACtCuc,EAAShN,CAAQ,EACjBhD,GAAA,MAAAA,EAAWvM,EACb,EAEMyc,GAAe7iB,EAAQqiB,IAAQC,EAAMD,GAAQ,IAE7CS,EAAc,IAAM,CACxB,GAAI,CAACV,EAAO,OAAO,KAEnB,MAAMW,EAAkBX,EAAM,IAAKY,GACjC,OAAOA,GAAS,SAAW,CAAE,MAAOA,GAASA,CAAA,EAG/C,OACE7R,MAAC,OAAI,UAAW7P,GAAO,MACpB,SAAAyhB,EAAgB,IAAKC,GAAS,CAC7B,MAAMC,GAAmBD,EAAK,MAAQX,IAAQC,EAAMD,GAAQ,IACtDa,EACJhB,IAAgB,aACZ,CAAE,KAAM,GAAGe,CAAc,GAAA,EACzB,CAAE,OAAQ,GAAGA,CAAc,GAAA,EAEjC,OACE7R,EAAAA,KAAC,MAAA,CAEC,UAAWvR,EAAKyB,GAAO,KAAM,CAC3B,CAACA,GAAO,UAAU,EAAGtB,GAASgjB,EAAK,KAAA,CACpC,EACD,MAAOE,EAEP,SAAA,CAAA/R,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QAAA,CAAU,EAChC0hB,EAAK,OACJ7R,MAAC,MAAA,CAAI,UAAW7P,GAAO,UAAY,WAAK,KAAA,CAAM,CAAA,CAAA,EAR3C0hB,EAAK,KAAA,CAYhB,CAAC,CAAA,CACH,CAEJ,EAEMG,EACJjB,IAAgB,aACZ,CACE,sBAAuB,GAAGW,CAAU,GAAA,EAEtC,CACE,sBAAuB,GAAGA,CAAU,IACpC,OAAQ,OAAA,EAIV,CAAE,UAAWvd,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOoQ,CAAI,EACXpQ,GAAO4gB,CAAW,EAClB,CACE,CAAC5gB,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,SAAS,EAAG6gB,CAAA,CACtB,CACF,CACD,EAGKiB,EAAa,CAAE,GAAGD,EAAa,GAAG5d,CAAA,EAExC,OACE6L,EAAAA,KAAC,MAAA,CACC,UAAW9L,EACX,MAAO8d,EAEP,SAAA,CAAAhS,OAAC,OAAI,UAAWvR,EAAKyB,GAAO,MAAOkhB,CAAc,EAC/C,SAAA,CAAArR,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,QAAA,CACC,IAAKyR,EACL,KAAK,QACL,IAAAP,EACA,IAAAC,EACA,KAAApS,EACA,MAAAlQ,EACA,SAAAiS,EACA,SAAUuB,EACV,UAAW3T,EAAKyB,GAAO,KAAK,EAC3B,GAAG8D,CAAA,CAAA,QAEL,MAAA,CAAI,UAAWvF,EAAKyB,GAAO,MAAOmhB,CAAc,EAAG,EACnDK,EAAA,CAAY,EACf,EACCX,SACE,MAAA,CAAI,UAAWtiB,EAAKyB,GAAO,MAAOohB,CAAc,EAC9C,SAAA1iB,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,CACF,EAEAiiB,GAAO,YAAc,kzBCpIRoB,GAASpe,EAAAA,WACpB,CACE,CACE,IAAAqe,EACA,IAAAC,EACA,SAAAC,EACA,KAAAC,EACA,KAAA/R,EAAO,KACP,OAAAgS,EACA,UAAA1iB,EACA,MAAAqC,EACA,QAAAmY,EACA,UAAAmI,EAAY,GACZ,GAAGve,CAAA,EAELC,IACG,CACH,KAAM,CAACue,EAAYC,CAAa,EAAI5Q,EAAAA,SAAS,EAAK,EAC5C,CAAC6Q,EAAaC,CAAc,EAAI9Q,EAAAA,SAAS,EAAK,EAE9C+Q,EAAmB,IAAM,CAC7BH,EAAc,EAAI,CACpB,EAEMI,EAAkB,IAAM,CAC5BF,EAAe,EAAI,EACnBF,EAAc,EAAK,CACrB,EAEMK,EAAWZ,GAAO,CAACM,EACnBO,EAAcX,GAAYA,EAAS,OAAS,EAC5CY,EAAUX,EAGVY,EAAYH,EACZI,EAAe,CAACJ,GAAYC,EAC5BI,EAAW,CAACL,GAAY,CAACC,GAAeC,EAGxCI,EAAkBhB,EAAWA,EAAS,MAAM,EAAG,CAAC,EAAE,cAAgB,GAGlEiB,EACJtT,EAAAA,IAAC,MAAA,CACC,QAAQ,YACR,KAAK,eACL,UAAW7P,GAAO,YAElB,SAAA6P,EAAAA,IAAC,OAAA,CAAK,EAAE,+GAAA,CAA+G,CAAA,CAAA,EAIrHuT,EAAcf,GAAa,CAAC,CAACnI,EAG7B,CAAE,UAAWlW,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,SAAS,EAAGojB,EACpB,CAACpjB,GAAO,SAAS,EAAG,CAAC,CAACoiB,CAAA,CACxB,CACF,CACD,EAED,OACEtS,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,QAASmf,EAAclJ,EAAU,OACjC,KAAMkJ,EAAc,SAAW,OAC/B,SAAUA,EAAc,EAAI,OAC5B,UACEA,EACKte,GAAM,EACDA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjCA,EAAE,eAAA,EACFoV,GAAA,MAAAA,IAEJ,EACA,OAEN,aAAY+H,GAAO,SAASC,EAAW,QAAQA,CAAQ,GAAK,EAAE,GAE9D,SAAA,CAAApS,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,OACpB,SAAA,CAAA+iB,GACClT,EAAAA,IAAC,MAAA,CACC,IAAAmS,EACA,IAAAC,EACA,UAAW1jB,EAAKyB,GAAO,MAAO,CAC5B,CAACA,GAAO,MAAM,EAAGwiB,CAAA,CAClB,EACD,QAASE,EACT,OAAQC,EACP,GAAG7e,CAAA,CAAA,EAIPkf,GACCnT,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,SAAU,aAAY,aAAakjB,CAAe,GACvE,SAAAA,CAAA,CACH,EAGDD,SACE,OAAA,CAAK,UAAWjjB,GAAO,YAAa,aAAW,cAC7C,SAAAmiB,CAAA,CACH,EAGD,CAACY,GAAa,CAACC,GAAgB,CAACC,GAC/BpT,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,YAAa,aAAW,iBAC7C,SAAAmjB,CAAA,CACH,CAAA,EAEJ,EAECf,GACCvS,EAAAA,IAAC,MAAA,CACC,UAAWtR,EAAKyB,GAAO,OAAQA,GAAOoiB,CAAM,CAAC,EAC7C,aAAY,WAAWA,CAAM,GAC7B,KAAK,KAAA,CAAA,CACP,CAAA,CAAA,CAIR,CACF,EAEAL,GAAO,YAAc,0zBCvIRsB,GAAQ1f,EAAAA,WACnB,CACE,CACE,SAAAE,EACA,QAAAsM,EAAU,QACV,MAAAsN,EAAQ,SACR,KAAArN,EAAO,KACP,YAAAkT,EAAc,GACd,UAAAC,EACA,UAAA7jB,EACA,MAAAqC,EACA,QAAAmY,EACA,UAAAmI,EAAY,GACZ,GAAGve,CAAA,EAELC,IACG,CACH,MAAMyf,EAAQrT,IAAY,MACpBiT,EAAcf,GAAa,CAAC,CAACnI,EAC7BuJ,EAAgBH,GAAe,CAAC,CAACC,EAEjCG,EAAiB5e,GAAwB,CAC7CA,EAAE,gBAAA,EACFye,GAAA,MAAAA,GACF,EAEMhJ,EAAc,IAAM,CACpB6I,IACFlJ,GAAA,MAAAA,IAEJ,EAEM5H,EAAiBxN,GAA2B,CAC5Cse,IAAgBte,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjDA,EAAE,eAAA,EACFoV,GAAA,MAAAA,IAEJ,EAGM2C,EAAU2G,EAAQ,KAAO3f,EAGzB8f,EACJ9T,EAAAA,IAAC,MAAA,CACC,QAAQ,YACR,KAAK,eACL,UAAW7P,GAAO,YAClB,cAAY,OAEZ,SAAA6P,EAAAA,IAAC,OAAA,CAAK,EAAE,uGAAA,CAAuG,CAAA,CAAA,EAI7G,CAAE,UAAW7L,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAOmQ,CAAO,EACdnQ,GAAOyd,CAAK,EACZzd,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,SAAS,EAAGojB,EACpB,CAACpjB,GAAO,WAAW,EAAGyjB,EACtB,CAACzjB,GAAO,GAAG,EAAGwjB,CAAA,CAChB,CACF,CACD,EAED,OACE1T,EAAAA,KAAC,OAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,QAASmf,EAAc7I,EAAc,OACrC,UAAW6I,EAAc9Q,EAAgB,OACzC,KAAM8Q,EAAc,SAAWI,EAAQ,SAAW,OAClD,SAAUJ,EAAc,EAAI,OAC5B,aACEI,EACI,GAAG/F,CAAK,oBACR,OAAO5Z,GAAa,SAClBA,EACA,OAEP,GAAGC,EAEH,SAAA,CAAA+Y,EAEA4G,GACC5T,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAW7P,GAAO,cAClB,QAAS0jB,EACT,aAAW,gBACX,SAAU,GAET,SAAAC,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,CACF,EAEAN,GAAM,YAAc,gmBChEdO,GAAOjgB,EAAAA,WACX,CACE,CACE,SAAAE,EACA,UAAAnE,EACA,MAAAqC,EACA,QAAAoO,EAAU,WACV,QAAA0T,EAAU,KACV,UAAAxB,EAAY,GACZ,MAAAyB,EAAQ,GACR,GAAGhgB,CAAA,EAELC,IACG,CACH,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACPA,GAAOmQ,CAAO,EACdnQ,GAAO,WAAW6jB,CAAO,EAAE,EAC3B,CACE,CAAC7jB,GAAO,SAAS,EAAGqiB,EACpB,CAACriB,GAAO,KAAK,EAAG8jB,GAAS,CAACzB,CAAA,CAC5B,CACF,CACD,EAED,OACExS,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAMoe,EAAY,SAAW,OAC7B,SAAUA,EAAY,EAAI,OACzB,GAAGve,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAMMkgB,GAAapgB,EAAAA,WACjB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CACjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAMMmgB,GAAWrgB,EAAAA,WACf,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CACjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAMMogB,GAAatgB,EAAAA,WACjB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CACjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEA+f,GAAK,YAAc,OACnBG,GAAW,YAAc,cACzBC,GAAS,YAAc,YACvBC,GAAW,YAAc,cAGzB,MAAMC,GAAgBN,GAMtBM,GAAc,OAASH,GACvBG,GAAc,KAAOF,GACrBE,GAAc,OAASD,w8BC1HjBE,GAAQxgB,EAAAA,WACZ,CACE,CACE,SAAAE,EACA,UAAAnE,EACA,MAAAqC,EACA,KAAAuF,EAAO,OACP,QAAA6I,EAAU,SACV,KAAAC,EAAO,KACP,YAAAkT,EAAc,GACd,UAAAC,EACA,GAAGzf,CAAA,EAELC,IACG,CACH,KAAM,CAACqgB,EAAWC,CAAY,EAAI1S,EAAAA,SAAS,EAAK,EAC1C,CAAC2S,EAAWC,CAAY,EAAI5S,EAAAA,SAAS,EAAK,EAE1C+R,EAAgB,IAAM,CAC1Ba,EAAa,EAAI,CACnB,EAEAphB,EAAAA,UAAU,IAAM,CACd,GAAImhB,EAAW,CAEb,MAAM7I,EAAQ,WAAW,IAAM,CAC7B4I,EAAa,EAAI,EACjBd,GAAA,MAAAA,GACF,EAAG,GAAG,EAEN,MAAO,IAAM,aAAa9H,CAAK,CACjC,CACF,EAAG,CAAC6I,EAAWf,CAAS,CAAC,EAEzB,KAAM,CAAE,UAAWvf,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAOsH,CAAI,EACXtH,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,WAAW,EAAGsjB,EACtB,CAACtjB,GAAO,OAAO,EAAGskB,CAAA,CACpB,CACF,CACD,EAED,OAAIF,EACK,KAIPtU,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,QACL,YAAU,SACT,GAAGH,EAEH,SAAA,CAAAD,EACAyf,GACCzT,EAAAA,IAAC,SAAA,CACC,UAAW7P,GAAO,cAClB,QAAS0jB,EACT,aAAW,gBACX,KAAK,SAEL,SAAA7T,EAAAA,IAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,uBACF,OAAO,eACP,YAAY,IACZ,cAAc,QAAA,CAAA,CAChB,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAIR,CACF,EAEM2U,GAAY7gB,EAAAA,WAChB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,SAAa4gB,GAAA,CAAA,CAAY,CAAA,CAAA,CAGhC,CACF,EAEMC,GAAe/gB,EAAAA,WACnB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEM8gB,GAAahhB,EAAAA,WACjB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEM+gB,GAAmBjhB,EAAAA,WACvB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,WAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,IAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEMghB,GAAelhB,EAAAA,WACnB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAGM4gB,GAAc,IAClB3U,EAAAA,KAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAA,CAAAD,EAAAA,IAAC,SAAA,CACC,GAAG,KACH,GAAG,KACH,EAAE,IACF,OAAO,eACP,YAAY,IACZ,KAAK,MAAA,CAAA,EAEPA,EAAAA,IAAC,OAAA,CACC,EAAE,WACF,OAAO,eACP,YAAY,IACZ,cAAc,QAAA,CAAA,EAEhBA,EAAAA,IAAC,SAAA,CACC,GAAG,KACH,GAAG,KACH,EAAE,IACF,KAAK,cAAA,CAAA,CACP,CAAA,CACF,EAGFsU,GAAM,YAAc,QACpBK,GAAU,YAAc,aACxBE,GAAa,YAAc,gBAC3BC,GAAW,YAAc,cACzBC,GAAiB,YAAc,oBAC/BC,GAAa,YAAc,gBAG3B,MAAMC,GAAiBX,GAQvBW,GAAe,KAAON,GACtBM,GAAe,QAAUJ,GACzBI,GAAe,MAAQH,GACvBG,GAAe,YAAcF,GAC7BE,GAAe,QAAUD,2TCrUZE,GAAaphB,EAAAA,WACxB,CACE,CACE,SAAAE,EACA,UAAAnE,EACA,UAAAsY,EAAY,WACZ,IAAAgN,EAAM,KACN,GAAGlhB,CAAA,EAELC,IAGE8L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EACTyB,GAAO,MACPA,GAAOgY,CAAS,EAChBhY,GAAO,OAAOglB,CAAG,EAAE,EACnBtlB,CAAA,EAED,GAAGoE,EAEH,SAAAD,CAAA,CAAA,CAIT,EAEAkhB,GAAW,YAAc,mhDCNZE,GAAWthB,EAAAA,WACtB,CACE,CACE,MAAAjF,EACA,IAAAsiB,EAAM,IACN,KAAA1Z,EAAO,SACP,QAAA6I,EAAU,UACV,KAAAC,EAAO,KACP,UAAA8U,EAAY,GACZ,MAAApO,EACA,cAAAO,EAAgB,GAChB,MAAAoG,EAAQ,SACR,UAAA/d,EACA,MAAAqC,EACA,GAAG+B,CAAA,EAELC,IACG,CAEH,MAAMohB,EAAgB9N,EAAgB,OAAY,KAAK,IAAI,KAAK,KAAK3Y,GAAS,GAAKsiB,EAAM,IAAK,CAAC,EAAG,GAAG,EAC/FoE,EAAa9d,IAAS,WAGtB+d,EAAYvO,IAAUqO,IAAkB,OAAY,GAAG,KAAK,MAAMA,CAAa,CAAC,IAAM,IAGtFG,EAAUF,EAAchV,IAAS,KAAO,GAAKA,IAAS,KAAO,GAAK,GAAM,EACxEmV,EAAaH,EAAaE,EAAU,EAAI,GAAK,EAC7CE,EAAaJ,GAAcD,IAAkB,OAC/CI,EAAcJ,EAAgB,IAAOI,EACrC,EAEEE,EAAoB,CACxB,GAAIne,IAAS,UAAY6d,IAAkB,QAAa,CACtD,MAAO,GAAGA,CAAa,GAAA,EAEzB,GAAIC,GAAcD,IAAkB,QAAa,CAC/C,gBAAiBI,EACjB,iBAAkBC,CAAA,CACpB,EAII,CAAE,UAAWE,EAAmB,MAAOC,CAAA,EAAkB9jB,EAAuB,CACpF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,SACPA,GAAOsH,CAAI,EACXtH,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACXpQ,GAAOyd,CAAK,EACZ,CACE,CAACzd,GAAO,aAAa,EAAGqX,EACxB,CAACrX,GAAO,SAAS,EAAGklB,CAAA,CACtB,CACF,CACD,EAGKU,EAAe,cACfC,EAAexO,EAAgB,OAAY3Y,GAAS,EACpDonB,EAAe,EACfC,EAAe/E,EACfgF,EAAYlP,IAAUO,EAAgB,UAAY,GAAG,KAAK,MAAM8N,GAAiB,CAAC,CAAC,qBAEzF,GAAIC,EAAY,CACd,MAAMa,EAAc7V,IAAS,KAAO,EAAIA,IAAS,KAAO,EAAI,EACtDyT,EAAUoC,EAAc,EACxBC,EAAUZ,EAAUzB,EAAU,EAC9BsC,EAAa,EAEnB,OACEtW,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAW2hB,EACX,MAAOC,EACP,KAAMC,EACN,gBAAeC,EACf,gBAAeC,EACf,gBAAeC,EACf,aAAYC,EACX,GAAGliB,EAEJ,SAAAgM,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,kBACrB,SAAA,CAAA8P,EAAAA,KAAC,MAAA,CACC,UAAW9P,GAAO,YAClB,MAAOkmB,EACP,OAAQA,EACR,QAAS,OAAOA,CAAO,IAAIA,CAAO,GAGlC,SAAA,CAAArW,EAAAA,IAAC,OAAA,CACC,UAAW7P,GAAO,cAClB,EAAG6jB,EACH,EAAGA,EACH,MAAOyB,EACP,OAAQA,EACR,GAAIa,EACJ,GAAIA,EACJ,KAAK,OACL,YAAAF,CAAA,CAAA,EAGFpW,EAAAA,IAAC,OAAA,CACC,UAAW7P,GAAO,YAClB,EAAG6jB,EACH,EAAGA,EACH,MAAOyB,EACP,OAAQA,EACR,GAAIa,EACJ,GAAIA,EACJ,KAAK,OACL,YAAAF,EACA,MAAOR,EACP,cAAc,SACd,UAAW,cAAcS,EAAU,CAAC,IAAIA,EAAU,CAAC,GAAA,CAAA,CACrD,CAAA,CAAA,EAEDhB,GACCrV,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,cACpB,SAAAqlB,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CAAA,CAGN,CAEA,OACEvV,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAW2hB,EACX,MAAOC,EACP,KAAMC,EACN,gBAAeC,EACf,gBAAeC,EACf,gBAAeC,EACf,aAAYC,EACX,GAAGliB,EAEJ,SAAA,CAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MACrB,SAAA6P,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,IAClB,MAAOylB,EACP,cAAY,MAAA,CAAA,EAEhB,EACCP,GACCrV,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MACpB,SAAAqlB,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,CACF,EAEAJ,GAAS,YAAc,onBClKVmB,GAAWziB,EAAAA,WACtB,CACE,CACE,MAAA0iB,EAAQ,OACR,UAAAC,EAAY,QACZ,MAAAnT,EACA,OAAAoT,EACA,MAAAC,EAAQ,EACR,QAAArW,EAAU,UACV,UAAAzQ,EACA,MAAAqC,EACA,GAAG+B,CAAA,EAELC,IACG,CACH,MAAM0iB,EAASJ,IAAU,OACnBjB,EAAaiB,IAAU,WAGvBK,EAAuC,CAC3C,GAAG3kB,EACH,GAAIoR,GAAS,CAAE,MAAO,OAAOA,GAAU,SAAW,GAAGA,CAAK,KAAOA,CAAA,EACjE,GAAIoT,GAAU,CAAE,OAAQ,OAAOA,GAAW,SAAW,GAAGA,CAAM,KAAOA,CAAA,CAAO,EAI1EnB,GAAcjS,GAAS,CAACoT,IAC1BG,EAAgB,OAASA,EAAgB,OAI3C,KAAM,CAAE,UAAW1iB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,SACPA,GAAOqmB,CAAK,EACZrmB,GAAOsmB,CAAS,EAChBtmB,GAAOmQ,CAAO,CAAA,CAChB,CACD,EAGD,GAAIsW,GAAUD,EAAQ,EAAG,CACvB,MAAMG,EAAY,MAAM,KAAK,CAAE,OAAQH,CAAA,EAAS,CAAC7T,EAAGZ,IAAU,CAE5D,MAAM6U,EADa7U,IAAUyU,EAAQ,EACN,MAAQ,OAEvC,OACE3W,EAAAA,IAAC,MAAA,CAEC,UAAWtR,EAAKyB,GAAO,SAAUA,GAAO,KAAMA,GAAOsmB,CAAS,EAAGtmB,GAAOmQ,CAAO,CAAC,EAChF,MAAO,CACL,MAAOyW,EACP,aAAc7U,EAAQyU,EAAQ,EAAI,wBAA0B,CAAA,EAE9D,cAAY,MAAA,EANPzU,CAAA,CASX,CAAC,EAED,OACElC,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,cAAegE,CAAkB,EACxD,MAAOC,EACP,KAAK,SACL,aAAW,kBACV,GAAGH,EAEH,SAAA6iB,CAAA,CAAA,CAGP,CAGA,MAAM7E,EAAa,CAAE,GAAG4E,EAAiB,GAAGziB,CAAA,EAE5C,OACE4L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAO8d,EACP,KAAK,SACL,aAAW,kBACX,cAAY,OACX,GAAGhe,CAAA,CAAA,CAGV,CACF,EAEAsiB,GAAS,YAAc,sgBC9EVS,GAAkC,CAAC,CAC9C,QAAAhK,EACA,SAAAhZ,EACA,SAAAwY,EAAW,MACX,QAAAO,EAAU,QACV,UAAAkK,EAAY,EACZ,UAAAC,EAAY,EACZ,QAASC,EACT,mBAAAC,EACA,UAAAC,EAAY,GACZ,UAAAxnB,EACA,MAAAqC,EACA,SAAA4O,EAAW,GACX,SAAA0C,EAAW,GACb,IAAM,CACJ,KAAM,CAAC8T,EAASC,CAAU,EAAIzV,EAAAA,SAAS,EAAK,EACtC,CAAC0V,EAAgBC,CAAiB,EAAI3V,EAAAA,SAA0B0K,CAAQ,EACxE,CAACkL,EAAQC,CAAS,EAAI7V,EAAAA,SAAS,CAAE,EAAG,MAAO,EAAG,MAAO,EACrD6D,EAAarT,EAAAA,OAAoB,IAAI,EACrCslB,EAAatlB,EAAAA,OAAuB,IAAI,EACxCulB,EAAiBvlB,EAAAA,OAAA,EACjBwlB,EAAiBxlB,EAAAA,OAAA,EAEjBylB,EAAYZ,IAAsB,OAAYA,EAAoBG,EAGlEU,EAAoB/T,EAAAA,YAAY,IAAM,CAC1C,GAAI,CAAC0B,EAAW,SAAW,CAACiS,EAAW,QAAS,OAEhD,MAAM3K,EAActH,EAAW,QAAQ,sBAAA,EACjCsS,EAAcL,EAAW,QAAQ,sBAAA,EACjCzK,EAAgB,OAAO,WACvBC,EAAiB,OAAO,YACxB8K,EAAU,OAAO,QACjBC,EAAU,OAAO,QAEvB,IAAIC,EAAgB5L,EAChB/S,EAAI,EACJ4e,GAAI,EAGR,GAAI7L,IAAa,OAAQ,CACvB,MAAM8L,GAAWrL,EAAY,IACvBsL,GAAcnL,EAAiBH,EAAY,OAC3CuL,GAAYvL,EAAY,KACxBwL,GAAatL,EAAgBF,EAAY,MAE3CqL,IAAYL,EAAY,OAAS,GACnCG,EAAgB,MACPG,IAAeN,EAAY,OAAS,GAC7CG,EAAgB,SACPK,IAAcR,EAAY,MAAQ,GAC3CG,EAAgB,QACPI,IAAaP,EAAY,MAAQ,GAC1CG,EAAgB,OAEhBA,EAAgB,QAEpB,CAGA,OAAQA,EAAA,CACN,IAAK,MACH3e,EAAIwT,EAAY,KAAOA,EAAY,MAAQ,EAAIgL,EAAY,MAAQ,EACnEI,GAAIpL,EAAY,IAAMgL,EAAY,OAAS,EAC3C,MACF,IAAK,SACHxe,EAAIwT,EAAY,KAAOA,EAAY,MAAQ,EAAIgL,EAAY,MAAQ,EACnEI,GAAIpL,EAAY,OAAS,EACzB,MACF,IAAK,OACHxT,EAAIwT,EAAY,KAAOgL,EAAY,MAAQ,EAC3CI,GAAIpL,EAAY,IAAMA,EAAY,OAAS,EAAIgL,EAAY,OAAS,EACpE,MACF,IAAK,QACHxe,EAAIwT,EAAY,MAAQ,EACxBoL,GAAIpL,EAAY,IAAMA,EAAY,OAAS,EAAIgL,EAAY,OAAS,EACpE,KAAA,CAIJxe,EAAI,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAG0T,EAAgB8K,EAAY,MAAQ,CAAC,CAAC,EAClEI,GAAI,KAAK,IAAI,EAAG,KAAK,IAAIA,GAAGjL,EAAiB6K,EAAY,OAAS,CAAC,CAAC,EAEpER,EAAkBW,CAAa,EAC/BT,EAAU,CACR,EAAGle,EAAIye,EACP,EAAGG,GAAIF,CAAA,CACR,CACH,EAAG,CAAC3L,CAAQ,CAAC,EAGPkM,EAAczU,EAAAA,YAAY,IAAM,CAChCnD,IAEAgX,EAAe,UACjB,aAAaA,EAAe,OAAO,EACnCA,EAAe,QAAU,QAGvBb,EAAY,EACdY,EAAe,QAAU,WAAW,IAAM,CACpCV,IAAsB,QACxBI,EAAW,EAAI,EAEjBH,GAAA,MAAAA,EAAqB,GACvB,EAAGH,CAAS,GAERE,IAAsB,QACxBI,EAAW,EAAI,EAEjBH,GAAA,MAAAA,EAAqB,KAEzB,EAAG,CAACtW,EAAUmW,EAAWE,EAAmBC,CAAkB,CAAC,EAGzDuB,EAAc1U,EAAAA,YAAY,IAAM,CAChC4T,EAAe,UACjB,aAAaA,EAAe,OAAO,EACnCA,EAAe,QAAU,QAGvBX,EAAY,EACdY,EAAe,QAAU,WAAW,IAAM,CACpCX,IAAsB,QACxBI,EAAW,EAAK,EAElBH,GAAA,MAAAA,EAAqB,GACvB,EAAGF,CAAS,GAERC,IAAsB,QACxBI,EAAW,EAAK,EAElBH,GAAA,MAAAA,EAAqB,IAEzB,EAAG,CAACF,EAAWC,EAAmBC,CAAkB,CAAC,EAG/C3U,EAAgBwB,cAAa+B,GAAyB,CACtDA,EAAM,MAAQ,UAAY+R,GAC5BY,EAAA,CAEJ,EAAG,CAACZ,EAAWY,CAAW,CAAC,EAG3BrlB,EAAAA,UAAU,IAAM,CACd,GAAIykB,GAAapS,EAAW,QAAS,CAEnC,MAAM1L,EAAQ,sBAAsB,IAAM,CACxC+d,EAAA,CACF,CAAC,EAEKzT,EAAe,IAAMyT,EAAA,EACrBY,EAAe,IAAMZ,EAAA,EAE3B,cAAO,iBAAiB,SAAUzT,CAAY,EAC9C,OAAO,iBAAiB,SAAUqU,CAAY,EAC9C,SAAS,iBAAiB,UAAWnW,CAAa,EAE3C,IAAM,CACX,qBAAqBxI,CAAK,EAC1B,OAAO,oBAAoB,SAAUsK,CAAY,EACjD,OAAO,oBAAoB,SAAUqU,CAAY,EACjD,SAAS,oBAAoB,UAAWnW,CAAa,CACvD,CACF,CACF,EAAG,CAACsV,EAAWC,EAAmBvV,CAAa,CAAC,EAGhDnP,EAAAA,UAAU,IAAM,CACd,GAAIykB,GAAaH,EAAW,SAAWjS,EAAW,QAAS,CACzD,MAAMkT,EAAU,WAAW,IAAM,CAC/Bb,EAAA,CACF,EAAG,CAAC,EAEJ,MAAO,IAAM,aAAaa,CAAO,CACnC,CACF,EAAG,CAACd,EAAWC,CAAiB,CAAC,EAGjC1kB,EAAAA,UAAU,IACD,IAAM,CACPukB,EAAe,SACjB,aAAaA,EAAe,OAAO,EAEjCC,EAAe,SACjB,aAAaA,EAAe,OAAO,CAEvC,EACC,CAAA,CAAE,EAGL,MAAM/L,EAA+E,CAAA,EAEjFgB,IAAY,SACdhB,EAAa,aAAe2M,EAC5B3M,EAAa,aAAe4M,GACnB5L,IAAY,QACrBhB,EAAa,QAAW9W,GAAwB,CAC9CA,EAAE,eAAA,EACE8iB,EACFY,EAAA,EAEAD,EAAA,CAEJ,EACS3L,IAAY,UACrBhB,EAAa,QAAU2M,EACvB3M,EAAa,OAAS4M,GAIxB,MAAMG,EAAiBzkB,EAAM,aAAaL,EAAU,CAClD,GAAG+X,EACH,IAAMhJ,GAAoB,CACpB4C,IACDA,EAA0D,QAAU5C,GAEvE,MAAMgW,EAAY/kB,EAAmE,IACjF,OAAO+kB,GAAa,WACtBA,EAAShW,CAAE,EACFgW,GAAY,OAAOA,GAAa,WACxCA,EAAwD,QAAUhW,EAEvE,EACA,mBAAoBgV,EAAY,UAAY,MAAA,CAC7C,EAGK,CAAE,UAAW5jB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACPA,GAAOqnB,CAAc,EACrB,CACE,CAACrnB,GAAO,SAAS,EAAGknB,CAAA,CACtB,CACF,CACD,EAGK2B,EAAgBjB,EAAYkB,GAAAA,aAChChZ,EAAAA,KAAC,MAAA,CACC,IAAK2X,EACL,UAAWzjB,EACX,MAAO,CACL,SAAU,WACV,KAAMujB,EAAO,EACb,IAAKA,EAAO,EACZ,SAAAlU,EACA,OAAQ,0BACR,QAASkU,EAAO,IAAM,MAAQ,EAAI,EAClC,WAAY,4BACZ,GAAGtjB,CAAA,EAEL,KAAK,UACL,GAAG,UACH,aAAc2Y,IAAY,QAAU2L,EAAc,OAClD,aAAc3L,IAAY,QAAU4L,EAAc,OAEjD,SAAA,CAAAtB,GAAarX,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MAAO,EAC5C6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QACpB,SAAA6c,CAAA,CACH,CAAA,CAAA,CAAA,EAEF,SAAS,IAAA,EACP,KAEJ,OACE/M,EAAAA,KAAAiZ,WAAA,CACG,SAAA,CAAAJ,EACAE,CAAA,EACH,CAEJ,EAEAhC,GAAQ,YAAc,20BC1MhBmC,GAAiBnR,EAAAA,cAA0C,IAAI,EAExDoR,GAKT,CAAC,CACH,SAAAplB,EACA,QAAAgZ,EACA,SAAAR,EAAW,SACX,QAAAO,EAAU,QACV,KAAM9B,EACN,aAAAC,EACA,oBAAAmO,EAAsB,GACtB,cAAAC,EAAgB,GAChB,UAAAjC,EAAY,GACZ,UAAAxnB,EACA,MAAAqC,EACA,SAAA4O,EAAW,GACX,SAAA0C,EAAW,IACX,UAAA9B,EAAY,GACZ,aAAA6X,CACF,IAAM,CACJ,KAAM,CAAChO,EAAMG,CAAO,EAAI5J,EAAAA,SAAS,EAAK,EAChC,CAAC0V,EAAgBC,CAAiB,EAAI3V,EAAAA,SAA0B0K,CAAQ,EACxE,CAACkL,EAAQC,CAAS,EAAI7V,EAAAA,SAAS,CAAE,EAAG,EAAG,EAAG,EAAG,EAC7C6D,EAAarT,EAAAA,OAA2B,IAAI,EAC5CknB,EAAalnB,EAAAA,OAA8B,IAAI,EAC/CmnB,EAA2BnnB,EAAAA,OAA2B,IAAI,EAE1D8S,EAAS6F,IAAmB,OAAYA,EAAiBM,EAGzDyM,EAAoB/T,EAAAA,YAAY,IAAM,CAC1C,GAAI,CAAC0B,EAAW,SAAW,CAAC6T,EAAW,QAAS,OAEhD,MAAMvM,EAActH,EAAW,QAAQ,sBAAA,EACjC+T,EAAcF,EAAW,QAAQ,sBAAA,EACjCrM,EAAgB,OAAO,WACvBC,GAAiB,OAAO,YACxB8K,GAAU,OAAO,QACjBC,GAAU,OAAO,QAEvB,IAAIC,GAAgB5L,EAChB/S,GAAI,EACJ4e,GAAI,EAGR,GAAI7L,IAAa,OAAQ,CACvB,MAAM8L,GAAWrL,EAAY,IACvBsL,GAAcnL,GAAiBH,EAAY,OAC3CuL,GAAYvL,EAAY,KACxBwL,GAAatL,EAAgBF,EAAY,MAE3CsL,IAAemB,EAAY,OAAS,GACtCtB,GAAgB,SACPE,IAAYoB,EAAY,OAAS,GAC1CtB,GAAgB,MACPK,IAAciB,EAAY,MAAQ,GAC3CtB,GAAgB,QACPI,IAAakB,EAAY,MAAQ,GAC1CtB,GAAgB,OAEhBA,GAAgB,QAEpB,CAGA,OAAQA,GAAc,MAAM,GAAG,EAAE,CAAC,EAAA,CAChC,IAAK,MACHC,GAAIpL,EAAY,IAAMyM,EAAY,OAAS,EAC3C,MACF,IAAK,SACHrB,GAAIpL,EAAY,OAAS,EACzB,MACF,IAAK,OACHxT,GAAIwT,EAAY,KAAOyM,EAAY,MAAQ,EAC3C,MACF,IAAK,QACHjgB,GAAIwT,EAAY,MAAQ,EACxB,KAAA,CAIAmL,GAAc,SAAS,KAAK,GAAKA,GAAc,SAAS,QAAQ,EAC9DA,GAAc,SAAS,OAAO,EAChC3e,GAAIwT,EAAY,KACPmL,GAAc,SAAS,KAAK,EACrC3e,GAAIwT,EAAY,MAAQyM,EAAY,MAEpCjgB,GAAIwT,EAAY,KAAOA,EAAY,MAAQ,EAAIyM,EAAY,MAAQ,GAE5DtB,GAAc,SAAS,MAAM,GAAKA,GAAc,SAAS,OAAO,KACrEA,GAAc,SAAS,OAAO,EAChCC,GAAIpL,EAAY,IACPmL,GAAc,SAAS,KAAK,EACrCC,GAAIpL,EAAY,OAASyM,EAAY,OAErCrB,GAAIpL,EAAY,IAAMA,EAAY,OAAS,EAAIyM,EAAY,OAAS,GAKxEjgB,GAAI,KAAK,IAAI,EAAG,KAAK,IAAIA,GAAG0T,EAAgBuM,EAAY,MAAQ,CAAC,CAAC,EAClErB,GAAI,KAAK,IAAI,EAAG,KAAK,IAAIA,GAAGjL,GAAiBsM,EAAY,OAAS,CAAC,CAAC,EAEpEjC,EAAkBW,EAAa,EAC/BT,EAAU,CACR,EAAGle,GAAIye,GACP,EAAGG,GAAIF,EAAA,CACR,CACH,EAAG,CAAC3L,CAAQ,CAAC,EAGPmN,EAAc1V,EAAAA,YAAY,IAAM,CAChCnD,IAEJ2Y,EAAyB,QAAU,SAAS,cAExCxO,IAAmB,QACrBS,EAAQ,EAAI,EAEdR,GAAA,MAAAA,EAAe,IACjB,EAAG,CAACpK,EAAUmK,EAAgBC,CAAY,CAAC,EAGrC0O,EAAe3V,EAAAA,YAAY,IAAM,CACjCgH,IAAmB,QACrBS,EAAQ,EAAK,EAEfR,GAAA,MAAAA,EAAe,IAGXuO,EAAyB,SAC3BA,EAAyB,QAAQ,MAAM,CAAE,cAAe,GAAM,CAElE,EAAG,CAACxO,EAAgBC,CAAY,CAAC,EAG3BnF,EAAqB9B,cAAa+B,GAAsB,CAC5D,GAAI,CAACqT,GAAuB,CAACjU,EAAQ,OAErC,MAAMyU,EAAS7T,EAAM,OAEnBwT,EAAW,SACX7T,EAAW,SACX,CAAC6T,EAAW,QAAQ,SAASK,CAAM,GACnC,CAAClU,EAAW,QAAQ,SAASkU,CAAM,GAEnCD,EAAA,CAEJ,EAAG,CAACP,EAAqBjU,EAAQwU,CAAY,CAAC,EAGxCnX,EAAgBwB,cAAa+B,GAAyB,CACtDA,EAAM,MAAQ,UAAYsT,GAAiBlU,GAC7CwU,EAAA,CAEJ,EAAG,CAACN,EAAelU,EAAQwU,CAAY,CAAC,EAGlCE,EAAwB7V,EAAAA,YAAY,IAAM,CAC9C,GAAI,CAACvC,GAAa,CAAC0D,GAAU,CAACoU,EAAW,QAAS,OAElD,MAAMO,EAAoBP,EAAW,QAAQ,iBAC3C,0EAAA,EAGF,GAAID,EAAc,CAChB,MAAMS,EAAiBR,EAAW,QAAQ,cAAcD,CAAY,EACpE,GAAIS,EAAgB,CAClBA,EAAe,MAAM,CAAE,cAAe,EAAA,CAAM,EAC5C,MACF,CACF,CAEID,EAAkB,OAAS,EAC5BA,EAAkB,CAAC,EAAkB,MAAM,CAAE,cAAe,GAAM,EAEnEP,EAAW,QAAQ,MAAM,CAAE,cAAe,GAAM,CAEpD,EAAG,CAAC9X,EAAW0D,EAAQmU,CAAY,CAAC,EAG9BU,EAAkBhW,cAAa+B,GAAyB,CAC5D,GAAI,CAACZ,GAAU,CAACoU,EAAW,SAAWxT,EAAM,MAAQ,MAAO,OAE3D,MAAM+T,EAAoBP,EAAW,QAAQ,iBAC3C,0EAAA,EAGF,GAAIO,EAAkB,SAAW,EAAG,OAEpC,MAAMG,EAAeH,EAAkB,CAAC,EAClCI,GAAcJ,EAAkBA,EAAkB,OAAS,CAAC,EAE9D/T,EAAM,SACJ,SAAS,gBAAkBkU,IAC7BC,GAAY,MAAM,CAAE,cAAe,EAAA,CAAM,EACzCnU,EAAM,eAAA,GAGJ,SAAS,gBAAkBmU,KAC7BD,EAAa,MAAM,CAAE,cAAe,EAAA,CAAM,EAC1ClU,EAAM,eAAA,EAGZ,EAAG,CAACZ,CAAM,CAAC,EAGX9R,EAAAA,UAAU,IAAM,CACd,GAAI8R,EAAQ,CACV4S,EAAA,EACA8B,EAAA,EAEA,MAAMvV,EAAe,IAAMyT,EAAA,EACrBY,EAAe,IAAMZ,EAAA,EAE3B,cAAO,iBAAiB,SAAUzT,CAAY,EAC9C,OAAO,iBAAiB,SAAUqU,CAAY,EAC9C,SAAS,iBAAiB,YAAa7S,CAAkB,EACzD,SAAS,iBAAiB,UAAWtD,CAAa,EAClD,SAAS,iBAAiB,UAAWwX,CAAe,EAE7C,IAAM,CACX,OAAO,oBAAoB,SAAU1V,CAAY,EACjD,OAAO,oBAAoB,SAAUqU,CAAY,EACjD,SAAS,oBAAoB,YAAa7S,CAAkB,EAC5D,SAAS,oBAAoB,UAAWtD,CAAa,EACrD,SAAS,oBAAoB,UAAWwX,CAAe,CACzD,CACF,CACF,EAAG,CAAC7U,EAAQ4S,EAAmB8B,EAAuB/T,EAAoBtD,EAAewX,CAAe,CAAC,EAGzG,MAAMlO,EAAiH,CAAA,EAEnHgB,IAAY,QACdhB,EAAa,QAAW9W,GAAwB,CAC9CA,EAAE,eAAA,EACFA,EAAE,gBAAA,EACEmQ,EACFwU,EAAA,EAEAD,EAAA,CAEJ,EACS5M,IAAY,UACrBhB,EAAa,QAAU4N,EACvB5N,EAAa,OAAUqO,GAAyB,CAE9C,WAAW,IAAM,CACXZ,EAAW,SAAWA,EAAW,QAAQ,SAAS,SAAS,aAAa,GAG5EI,EAAA,CACF,EAAG,CAAC,CACN,GAIF,MAAMd,EAAiBzkB,EAAM,aAAaL,EAAU,CAClD,GAAG+X,EACH,IAAMhJ,GAA2B,CAC3BA,IACF4C,EAAW,QAAU5C,EAEzB,EACA,gBAAiBqC,EACjB,gBAAiB,QAAA,CAClB,EAGKwK,EAAoC,CACxC,MAAOgK,CAAA,EAIH,CAAE,UAAWzlB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACPA,GAAOqnB,EAAe,MAAM,GAAG,EAAE,CAAC,CAAC,EACnC,CACE,CAACrnB,GAAO,SAAS,EAAGknB,CAAA,CACtB,CACF,CACD,EAGKgD,EAAgBjV,EAAS6T,GAAAA,aAC7BjZ,EAAAA,IAACmZ,GAAe,SAAf,CAAwB,MAAOvJ,EAC9B,SAAA3P,EAAAA,KAAC,MAAA,CACC,IAAKuZ,EACL,UAAWrlB,EACX,MAAO,CACL,SAAU,WACV,KAAMujB,EAAO,EACb,IAAKA,EAAO,EACZ,SAAAlU,EACA,OAAQ,0BACR,GAAGpP,CAAA,EAEL,KAAK,SACL,aAAW,OACX,SAAU,GAET,SAAA,CAAAijB,GAAarX,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MAAO,EAC5C6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QACpB,SAAA6c,CAAA,CACH,CAAA,CAAA,CAAA,EAEJ,EACA,SAAS,IAAA,EACP,KAEJ,OACE/M,EAAAA,KAAAiZ,WAAA,CACG,SAAA,CAAAJ,EACAuB,CAAA,EACH,CAEJ,EAGaC,GAAqG,CAAC,CACjH,SAAAtmB,EACA,UAAAnE,EACA,MAAAqC,CACF,IAAM,CAEJ,KAAM,CAAE,UAAWiC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,cAAA,CAC1B,EAED,aACG,MAAA,CAAI,UAAWgE,EAAoB,MAAOC,EACxC,SAAAJ,EACH,CAEJ,EAEaumB,GAAoG,CAAC,CAChH,SAAAvmB,EACA,UAAAnE,EACA,MAAAqC,CACF,IAAM,CAEJ,KAAM,CAAE,UAAWiC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,aACG,MAAA,CAAI,UAAWgE,EAAoB,MAAOC,EACxC,SAAAJ,EACH,CAEJ,EAEawmB,GAAkG,CAAC,CAC9G,SAAAxmB,EACA,UAAAnE,EACA,MAAAqC,CACF,IAAM,CAEJ,KAAM,CAAE,UAAWiC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,aACG,MAAA,CAAI,UAAWgE,EAAoB,MAAOC,EACxC,SAAAJ,EACH,CAEJ,EAEaymB,GAAoG,CAAC,CAChH,SAAAzmB,EACA,UAAAnE,EACA,MAAAqC,CACF,IAAM,CAEJ,KAAM,CAAE,UAAWiC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,aACG,MAAA,CAAI,UAAWgE,EAAoB,MAAOC,EACxC,SAAAJ,EACH,CAEJ,EAGa0mB,GAAa,IAAM,CAC9B,MAAMxiB,EAAU2Q,EAAAA,WAAWsQ,EAAc,EACzC,GAAI,CAACjhB,EACH,MAAM,IAAI,MAAM,oDAAoD,EAEtE,OAAOA,CACT,EAGAkhB,GAAQ,QAAUkB,GAClBlB,GAAQ,OAASmB,GACjBnB,GAAQ,KAAOoB,GACfpB,GAAQ,OAASqB,GAEjBrB,GAAQ,YAAc,UACtBkB,GAAe,YAAc,iBAC7BC,GAAc,YAAc,gBAC5BC,GAAY,YAAc,cAC1BC,GAAc,YAAc,8zBChefE,GAAsC,CAAC,CAClD,YAAA5J,EAAc,aACd,UAAA6J,EAAY,SACZ,QAAAta,EAAU,QACV,UAAAzQ,EACA,MAAAqC,EACA,MAAA+U,EACA,cAAAqC,EAAgB,SAChB,UAAA6M,EAAY,WACd,IAAM,CACJ,MAAM0E,EAAe9J,IAAgB,aAG/B,CAAE,UAAW5c,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAO4gB,CAAW,EAClB5gB,GAAOyqB,CAAS,EAChBzqB,GAAOmQ,CAAO,EACd,CACE,CAACnQ,GAAO,SAAS,EAAG8W,GAAS4T,EAC7B,CAAC1qB,GAAO,SAASmZ,CAAa,EAAE,CAAC,EAAGrC,GAAS4T,CAAA,CAC/C,CACF,CACD,EAED,OACE7a,EAAAA,IAAC,MAAA,CACC,UAAW7L,EACX,MAAOC,EACP,KAAK,YACL,mBAAkB2c,EAClB,aAAYoF,EAEX,SAAAlP,GAAS4T,GACR5a,EAAAA,KAAAiZ,EAAAA,SAAA,CACE,SAAA,CAAAlZ,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,IAAA,CAAM,EAC7B6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MACpB,SAAA,OAAO8W,GAAU,SAAWjH,EAAAA,IAAC,OAAA,CAAM,SAAAiH,CAAA,CAAM,EAAUA,EACtD,EACAjH,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,IAAA,CAAM,CAAA,CAAA,CAC/B,CAAA,CAAA,CAIR,EAEAwqB,GAAU,YAAc,YC3GjB,MAAMG,GAAgC,CAC3C,GAAI,UACJ,KAAM,oBACN,YAAa,yDACb,OAAQ,CACN,MAAO,UACP,MAAO,UACP,OAAQ,UACR,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,MAAO,UACP,KAAM,SAAA,CAEV,EAEaC,GAA6B,CACxC,GAAI,OACJ,KAAM,aACN,YAAa,oDACb,OAAQ,CACN,MAAO,UACP,MAAO,UACP,OAAQ,UACR,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,MAAO,UACP,KAAM,SAAA,CAEV,EAEaC,GAA+B,CAC1C,GAAI,SACJ,KAAM,iBACN,YAAa,gDACb,OAAQ,CACN,MAAO,UACP,MAAO,UACP,OAAQ,UACR,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,MAAO,UACP,KAAM,SAAA,CAEV,EAEaC,GAA6B,CACxC,GAAI,OACJ,KAAM,iBACN,YAAa,0CACb,OAAQ,CACN,MAAO,UACP,MAAO,UACP,OAAQ,UACR,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,MAAO,UACP,KAAM,SAAA,CAEV,EAEaC,GAA8B,CACzC,GAAI,QACJ,KAAM,eACN,YAAa,sDACb,OAAQ,CACN,MAAO,UACP,MAAO,UACP,OAAQ,UACR,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,MAAO,UACP,KAAM,SAAA,CAEV,EAEaC,GAA+B,CAC1C,GAAI,SACJ,KAAM,kBACN,YAAa,+CACb,OAAQ,CACN,MAAO,UACP,MAAO,UACP,OAAQ,UACR,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,MAAO,UACP,KAAM,SAAA,CAEV,EAEaC,GAA8B,CACzC,GAAI,QACJ,KAAM,kBACN,YAAa,yCACb,OAAQ,CACN,MAAO,UACP,MAAO,UACP,OAAQ,UACR,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,MAAO,UACP,KAAM,SAAA,CAEV,EAEaC,GAAmC,CAC9C,GAAI,aACJ,KAAM,kBACN,YAAa,4CACb,OAAQ,CACN,MAAO,UACP,MAAO,UACP,OAAQ,UACR,WAAY,UACZ,OAAQ,UACR,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,MAAO,UACP,KAAM,SAAA,CAEV,EAGaC,GAAqC,CAChDR,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EACF,EAGaE,GAAgBT,GAGhBU,GAAgBrW,GACpBmW,GAAiB,KAAKG,GAASA,EAAM,KAAOtW,CAAE,EC3K1CuW,GAAoB,CAC/B,MAAO,iBACP,MAAO,iBACP,OAAQ,kBACR,WAAY,uBACZ,OAAQ,mBACR,QAAS,oBACT,QAAS,oBACT,QAAS,oBACT,QAAS,oBACT,QAAS,oBACT,QAAS,oBACT,QAAS,oBACT,QAAS,mBACT,QAAS,mBACT,MAAO,iBACP,KAAM,eACR,ECnDaC,GAAcF,GAAgC,CACzD,MAAMG,EAAO,SAAS,gBAEtB,OAAO,QAAQH,EAAM,MAAM,EAAE,QAAQ,CAAC,CAACI,EAAUC,CAAU,IAAM,CAC/D,MAAMC,EAAcL,GAAkBG,CAA0B,EAC5DE,GACFH,EAAK,MAAM,YAAYG,EAAaD,CAAU,CAElD,CAAC,CACH,EAKaE,GAAsB,IAAsB,CACvD,MAAMC,EAAW,UAAU,KAAK,IAAA,CAAK,GAG/BC,EAA4B,CAChC,MAAOC,GAAyB,OAAO,EACvC,MAAOA,GAAyB,OAAO,EACvC,OAAQA,GAAyB,QAAQ,EACzC,WAAYA,GAAyB,YAAY,EACjD,OAAQA,GAAyB,QAAQ,EACzC,QAASA,GAAyB,SAAS,EAC3C,QAASA,GAAyB,SAAS,EAC3C,QAASA,GAAyB,SAAS,EAC3C,QAASA,GAAyB,SAAS,EAC3C,QAASA,GAAyB,SAAS,EAC3C,QAASA,GAAyB,SAAS,EAC3C,QAASA,GAAyB,SAAS,EAC3C,QAASA,GAAyB,SAAS,EAC3C,QAASA,GAAyB,SAAS,EAC3C,MAAOA,GAAyB,OAAO,EACvC,KAAMA,GAAyB,MAAM,CAAA,EAGvC,MAAO,CACL,GAAIF,EACJ,KAAM,eACN,YAAa,uCACb,OAAQC,CAAA,CAEZ,EAKMC,GAA4BN,GACZP,GAAiB,KAAK,MAAM,KAAK,OAAA,EAAWA,GAAiB,MAAM,CAAC,EACrE,OAAOO,CAAQ,EAMvBO,GAAoBX,GAMxB;AAAA,EALU,OAAO,QAAQA,EAAM,MAAM,EAAE,IAAI,CAAC,CAACI,EAAUC,CAAU,IAE/D,KADaJ,GAAkBG,CAA0B,CACzC,KAAKC,CAAU,GACvC,EAE2B,KAAK;AAAA,CAAI,CAAC;AAAA,GAM3BO,GAAmBZ,GAEvB,iBADU,KAAK,UAAUA,EAAM,OAAQ,KAAM,CAAC,CACrB,GAMrBa,GAA4Bb,GAChC,MAAMA,EAAM,IAAI;AAAA,EAAcW,GAAiBX,CAAK,CAAC,GAMjDc,GAA0Bd,GAC9B;AAAA;AAAA,QAEDA,EAAM,EAAE,WAAW,KAAK,UAAUA,EAAO,KAAM,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,4BAI7BA,EAAM,EAAE;AAAA;AAAA;AAAA;AAAA,GAUvBe,GAAqBf,GACzB;AAAA;AAAA,eAEMA,EAAM,EAAE,2BAA2B,KAAK,UAAUA,EAAO,KAAM,CAAC,CAAC;AAAA;AAAA,iBAE/DA,EAAM,EAAE,QAMZgB,GAAkB,CAAChB,EAAuBhgB,IAAmC,CACxF,MAAMihB,EAAkBjhB,EAAgB,UAAUA,CAAa,uBAAuBA,CAAa,IAAM,yDACnGkhB,EAAiBlhB,EAAgB,IAAIA,CAAa,MAAQ,oBAEhE,MAAO;AAAA;AAAA,WAEEggB,EAAM,EAAE;AAAA,EACjBiB,CAAe;AAAA;AAAA;AAAA;AAAA,4BAIWjB,EAAM,EAAE;AAAA;AAAA,UAE1BkB,CAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAOxB,EAKaC,GAAwB,CAACnB,EAAuBoB,EAAwBphB,KAK5E,CACL,WAAY+gB,GAAkBf,CAAK,EACnC,UAAWgB,GAAgBhB,EAAOhgB,CAAa,EAC/C,gBAAiBohB,GAAiB,kCAAA,GAOzBC,GAAsBrB,GAAgC,CACjE,GAAI,CACF,aAAa,QAAQ,kBAAmB,KAAK,UAAUA,CAAK,CAAC,CAC/D,OAASllB,EAAO,CACd,QAAQ,KAAK,wCAAyCA,CAAK,CAC7D,CACF,EAKawmB,GAAuB,IAA6B,CAC/D,GAAI,CACF,MAAMC,EAAa,aAAa,QAAQ,iBAAiB,EACzD,GAAIA,EACF,OAAO,KAAK,MAAMA,CAAU,CAEhC,OAASzmB,EAAO,CACd,QAAQ,KAAK,0CAA2CA,CAAK,CAC/D,CACA,OAAO,IACT,EAKa0mB,GAAgBxB,GAA4C,CACvE,GAAI,CAACA,GAAS,OAAOA,GAAU,SAAU,MAAO,GAEhD,MAAMyB,EAAWzB,EAQjB,MAHI,CAHkB,CAAC,KAAM,OAAQ,cAAe,QAAQ,EACrB,MAAMlqB,GAAQA,KAAQ2rB,CAAQ,GAKjE,CAACA,EAAS,QAAU,OAAOA,EAAS,QAAW,SAAiB,GAE7C,OAAO,KAAKxB,EAAiB,EACX,MAAM9N,GAASA,KAAUsP,EAAS,MAAkC,CAG/G,EAKaC,GAAyB,IAA4B,CAChE,MAAMvB,EAAO,SAAS,gBAChBwB,EAAgB,iBAAiBxB,CAAI,EAErCyB,EAAsC,CAAA,EAE5C,cAAO,QAAQ3B,EAAiB,EAAE,QAAQ,CAAC,CAACG,EAAUE,CAAW,IAAM,CACrE,MAAMltB,EAAQuuB,EAAc,iBAAiBrB,CAAW,EAAE,KAAA,EACtDltB,IACFwuB,EAAcxB,CAA6B,EAAIhtB,EAEnD,CAAC,EAEMwuB,CACT,EAKaC,GAAsB,IAAY,CAC7C3B,GAAWJ,EAAa,EACxB,aAAa,WAAW,iBAAiB,CAC3C,EC7MMgC,GAAevV,EAAAA,cAA6C,MAAS,EAmB9DwV,GAA8C,CAAC,CAC1D,SAAAxpB,EACA,aAAAypB,EACA,kBAAAC,EAAoB,EACtB,IAAM,CAEJ,KAAM,CAACC,EAAcC,CAAe,EAAI9b,EAAAA,SAAyB,IAAM,CAErE,GAAI2b,GAAgBR,GAAaQ,CAAY,EAC3C,OAAOA,EAGT,GAAIC,EAAmB,CACrB,MAAMV,EAAaD,GAAA,EACnB,GAAIC,GAAcC,GAAaD,CAAU,EACvC,OAAOA,CAEX,CAEA,OAAOzB,EACT,CAAC,EAGDjoB,EAAAA,UAAU,IAAM,CACdqoB,GAAWgC,CAAY,EAEnBD,GACFZ,GAAmBa,CAAY,CAEnC,EAAG,CAACA,EAAcD,CAAiB,CAAC,EAwBpC,MAAM9N,EAAkC,CACtC,aAAA+N,EACA,SAvBgBlC,GAA0B,CACtCwB,GAAaxB,CAAK,EACpBmC,EAAgBnC,CAAK,EAErB,QAAQ,KAAK,sCAAuCA,CAAK,CAE7D,EAkBE,gBAAiBH,GACjB,eAjBqB,IAAM,CAC3B,MAAMuC,EAAc7B,GAAA,EACpB4B,EAAgBC,CAAW,CAC7B,EAeE,eAbqB,IAAM,CAC3BD,EAAgBrC,EAAa,EACzBmC,GACFJ,GAAA,CAEJ,CAQE,EAGF,aACGC,GAAa,SAAb,CAAsB,MAAO3N,EAC3B,SAAA5b,EACH,CAEJ,EAOa8pB,GAAW,IAAyB,CAC/C,MAAM5lB,EAAU2Q,EAAAA,WAAW0U,EAAY,EAEvC,GAAIrlB,IAAY,OACd,MAAM,IAAI,MAAM,8CAA8C,EAGhE,OAAOA,CACT,EAMa6lB,GAAiB,IAAM,CAClC,KAAM,CAAE,aAAAJ,CAAA,EAAiBG,GAAA,EACzB,OAAOH,EAAa,MACtB,EAOaK,GAAoBC,GAA6B,CAC5D,KAAM,CAAE,aAAAN,CAAA,EAAiBG,GAAA,EACzB,OAAOH,EAAa,KAAOM,CAC7B,EAMaC,GAAmB,IAAM,CACpC,KAAM,CAAE,SAAAC,CAAA,EAAaL,GAAA,EAErB,OAAQG,GAAoB,CAC1B,MAAMxC,EAAQD,GAAayC,CAAO,EAC9BxC,EACF0C,EAAS1C,CAAK,EAEd,QAAQ,KAAK,kBAAkBwC,CAAO,aAAa,CAEvD,CACF,0gDC5HaG,GAA0C,CAAC,CACtD,QAAA9d,EAAU,UACV,gBAAAM,EAAkB,GAClB,SAAAyd,EAAW,GACX,UAAAxuB,EACA,cAAAyuB,CACF,IAAM,CACJ,KAAM,CAAE,aAAAX,EAAc,SAAAQ,EAAU,gBAAAI,EAAiB,eAAAC,EAAgB,eAAAC,CAAA,EAAmBX,GAAA,EAC9E,CAACY,EAAiBC,CAAkB,EAAI7c,EAAAA,SAAS,EAAK,EACtD,CAAC8c,EAAUC,CAAW,EAAI/c,EAAAA,SAA0B,KAAK,EACzD,CAACgd,EAAcC,CAAe,EAAIjd,EAAAA,SAAS,EAAE,EAE7Ckd,EAAqBvD,GAA0B,CACnD0C,EAAS1C,CAAK,EACd6C,GAAA,MAAAA,EAAgB7C,EAClB,EAEMwD,EAAkB,IAAM,CAC5BT,EAAA,EACAF,GAAA,MAAAA,EAAgBX,EAClB,EAEMuB,EAAc,IAAM,CACxBT,EAAA,EACAH,GAAA,MAAAA,EAAgBX,EAClB,EAEMwB,EAAkB,MAAOC,EAAc3nB,IAAiB,CAC5D,GAAI,CACF,MAAM,UAAU,UAAU,UAAU2nB,CAAI,EACxCL,EAAgB,GAAGtnB,CAAI,UAAU,EACjC,WAAW,IAAMsnB,EAAgB,EAAE,EAAG,GAAI,CAC5C,OAASxoB,EAAO,CACd,QAAQ,MAAM,+BAAgCA,CAAK,EACnDwoB,EAAgB,aAAa,EAC7B,WAAW,IAAMA,EAAgB,EAAE,EAAG,GAAI,CAC5C,CACF,EAEMM,EAAe,IACZT,IAAa,MAChBtC,GAAyBqB,CAAY,EACrCpB,GAAuBoB,CAAY,EAInC2B,EAAoB7D,GAA0B,CAClDA,EAAM,OAAO,MACbA,EAAM,OAAO,MACbA,EAAM,OAAO,OACbA,EAAM,OAAO,OAAA,EAGf,OACExb,EAAAA,KAAC,MAAA,CACC,UAAWvR,EACTyB,EAAO,UACP,CACE,CAACA,EAAO,OAAO,EAAGmQ,IAAY,UAC9B,CAACnQ,EAAO,UAAU,EAAGyQ,CAAA,EAEvB/Q,CAAA,EAIF,SAAA,CAAAoQ,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,OACrB,SAAA,CAAA6P,EAAAA,IAAC,KAAA,CAAG,UAAW7P,EAAO,MAAO,SAAA,eAAY,EACzC8P,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,QACrB,SAAA,CAAA6P,EAAAA,IAAC,SAAA,CACC,UAAW7P,EAAO,aAClB,QAAS8uB,EACT,MAAM,wBACP,SAAA,WAAA,CAAA,EAGDjf,EAAAA,IAAC,SAAA,CACC,UAAW7P,EAAO,aAClB,QAAS+uB,EACT,MAAM,yBACP,SAAA,UAAA,CAAA,CAED,CAAA,CACF,CAAA,EACF,EAGAjf,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,aACrB,SAAA,CAAA6P,EAAAA,IAAC,KAAA,CAAG,UAAW7P,EAAO,kBAAmB,SAAA,gBAAa,EACtD8P,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,iBACrB,SAAA,CAAA6P,MAAC,OAAA,CAAK,UAAW7P,EAAO,iBAAmB,WAAa,KAAK,EAC7D6P,EAAAA,IAAC,SAAA,CACC,UAAW7P,EAAO,WAClB,QAAS,IAAMgvB,EAAgB,KAAK,UAAUxB,EAAc,KAAM,CAAC,EAAG,OAAO,EAE5E,SAAAmB,GAAgB,YAAA,CAAA,CACnB,EACF,EAGA9e,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,aACpB,SAAA,OAAO,QAAQwtB,EAAa,MAAM,EAAE,IAAI,CAAC,CAAC4B,EAAWzD,CAAU,IAC9D9b,EAAAA,IAAC,MAAA,CAEC,UAAW7P,EAAO,aAClB,MAAO,CAAE,gBAAiB2rB,CAAA,EAC1B,MAAO,GAAGyD,CAAS,KAAKzD,CAAU,GAClC,QAAS,IAAMqD,EAAgBrD,EAAYyD,CAAS,CAAA,EAJ/CA,CAAA,CAMR,CAAA,CACH,CAAA,EACF,EAGAvf,EAAAA,IAAC,OAAI,UAAW7P,EAAO,UACpB,SAAAouB,EAAgB,IAAK9C,GACpBxb,EAAAA,KAAC,MAAA,CAEC,UAAWvR,EAAKyB,EAAO,UAAW,CAChC,CAACA,EAAO,MAAM,EAAGwtB,EAAa,KAAOlC,EAAM,EAAA,CAC5C,EACD,QAAS,IAAMuD,EAAkBvD,CAAK,EAGtC,SAAA,CAAAzb,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,aACpB,SAAAmvB,EAAiB7D,CAAK,EAAE,IAAI,CAAC7N,EAAO1L,IACnClC,EAAAA,IAAC,MAAA,CAEC,UAAW7P,EAAO,YAClB,MAAO,CAAE,gBAAiByd,CAAA,CAAM,EAF3B1L,CAAA,CAIR,EACH,EAGAjC,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,UACrB,SAAA,CAAA6P,MAAC,KAAA,CAAG,UAAW7P,EAAO,UAAY,WAAM,KAAK,EAC5CmQ,IAAY,WACXN,MAAC,IAAA,CAAE,UAAW7P,EAAO,iBAAmB,WAAM,WAAA,CAAY,CAAA,CAAA,CAE9D,CAAA,CAAA,EAvBKsrB,EAAM,EAAA,CAyBd,EACH,EAGC4C,GACCpe,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,YACrB,SAAA,CAAA6P,EAAAA,IAAC,SAAA,CACC,UAAW7P,EAAO,WAClB,QAAS,IAAMwuB,EAAmB,CAACD,CAAe,EAEjD,WAAkB,eAAiB,cAAA,CAAA,EAGrCA,GACCze,EAAAA,KAAAiZ,WAAA,CAEE,SAAA,CAAAjZ,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,QAAS,MAAO,CAAE,aAAc,yBACrD,SAAA,CAAA6P,EAAAA,IAAC,SAAA,CACC,UAAWtR,EAAKyB,EAAO,aAAc,CACnC,CAACA,EAAO,MAAM,EAAGyuB,IAAa,KAAA,CAC/B,EACD,QAAS,IAAMC,EAAY,KAAK,EACjC,SAAA,KAAA,CAAA,EAGD7e,EAAAA,IAAC,SAAA,CACC,UAAWtR,EAAKyB,EAAO,aAAc,CACnC,CAACA,EAAO,MAAM,EAAGyuB,IAAa,OAAA,CAC/B,EACD,QAAS,IAAMC,EAAY,OAAO,EACnC,SAAA,OAAA,CAAA,CAED,EACF,EAGA5e,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,UACrB,SAAA,CAAA6P,EAAAA,IAAC,SAAA,CACC,UAAW7P,EAAO,eAClB,QAAS,IAAMgvB,EAAgBE,IAAgBT,EAAS,aAAa,EAEpE,SAAAE,GAAgB,MAAA,CAAA,EAEnB9e,EAAAA,IAAC,MAAA,CAAK,SAAAqf,EAAA,CAAa,CAAE,CAAA,CAAA,CACvB,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,CAAA,CAIR,8gCC3FaG,GAAQ1rB,EAAAA,WACnB,CACE,CACE,QAAAwM,EAAU,UACV,KAAAC,EAAO,KACP,UAAAkf,EAAY,GACZ,UAAAjf,EAAY,GACZ,UAAA3Q,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CAEH,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAOmQ,CAAO,EACdnQ,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,SAAS,EAAGsvB,EACpB,CAACtvB,GAAO,SAAS,EAAGqQ,CAAA,CACtB,CACF,CACD,EAED,OACER,EAAAA,IAAC,MAAA,CAAI,UAAWtR,EAAKyB,GAAO,aAAc,CAAE,CAACA,GAAO,SAAS,EAAGqQ,CAAA,CAAW,EACzE,SAAAR,EAAAA,IAAC,QAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,EAEL,CAEJ,CACF,EAEa0rB,GAAY5rB,EAAAA,WACvB,CAAC,CAAE,OAAA6rB,EAAS,GAAO,UAAA9vB,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjE,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACP,CACE,CAACA,GAAO,MAAM,EAAGwvB,CAAA,CACnB,CACF,CACD,EAED,OACE3f,EAAAA,IAAC,QAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEa4rB,GAAY9rB,EAAAA,WACvB,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OACE6P,MAAC,SAAM,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACxE,SAAAD,CAAA,CACH,CAEJ,CACF,EAEa6rB,GAAW/rB,EAAAA,WACtB,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,EAAA,CAC1B,EAED,OACE6P,MAAC,MAAG,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACrE,SAAAD,CAAA,CACH,CAEJ,CACF,EAEa8rB,GAAchsB,EAAAA,WACzB,CACE,CACE,MAAAoY,EAAQ,OACR,SAAA6T,EAAW,GACX,cAAAC,EAAgB,OAChB,OAAAC,EACA,UAAApwB,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMwW,EAAc,IAAM,CACpBqV,GAAYE,GACdA,EAAA,CAEJ,EAGM,CAAE,UAAW9rB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,GACPA,GAAO,SAAS+b,CAAK,EAAE,EACvB,CACE,CAAC/b,GAAO,QAAQ,EAAG4vB,EACnB,CAAC5vB,GAAO,MAAM,EAAG6vB,IAAkB,MAAA,CACrC,CACF,CACD,EAED,OACEhgB,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,QAASsW,EACT,KAAMqV,EAAW,SAAW,OAC5B,SAAUA,EAAW,EAAI,OACzB,YACEC,IAAkB,MACd,YACAA,IAAkB,OAClB,aACA,OAEL,GAAG/rB,EAEJ,SAAAgM,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,UACpB,SAAA,CAAA6D,EACA+rB,GACC9f,EAAAA,KAAC,OAAA,CAAK,UAAWvR,EAAKyB,GAAO,SAAUA,GAAO,QAAQ6vB,CAAa,EAAE,CAAC,EACnE,SAAA,CAAAA,IAAkB,OAAS,IAC3BA,IAAkB,QAAU,IAC5BA,IAAkB,QAAU,GAAA,CAAA,CAC/B,CAAA,CAAA,CAEJ,CAAA,CAAA,CAGN,CACF,EAEaE,GAAYpsB,EAAAA,WACvB,CAAC,CAAE,MAAAoY,EAAQ,OAAQ,QAAAiU,EAAU,GAAO,UAAAtwB,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAElF,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,GACPA,GAAO,SAAS+b,CAAK,EAAE,EACvB,CACE,CAAC/b,GAAO,OAAO,EAAGgwB,CAAA,CACpB,CACF,CACD,EAED,OACEngB,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAGAwrB,GAAM,YAAc,QACpBE,GAAU,YAAc,YACxBE,GAAU,YAAc,YACxBC,GAAS,YAAc,WACvBC,GAAY,YAAc,cAC1BI,GAAU,YAAc,YAGxB,MAAME,GAAiB,OAAO,OAAOZ,GAAO,CAC1C,KAAME,GACN,KAAME,GACN,IAAKC,GACL,OAAQC,GACR,KAAMI,EACR,CAAC,0xCCpUYG,GAAUvsB,EAAAA,WACrB,CACE,CACE,KAAAyM,EAAO,KACP,MAAAqN,EAAQ,UACR,QAAAtN,EAAU,OACV,MAAAggB,EAAQ,SACR,MAAArZ,EAAQ,UACR,UAAApX,EACA,MAAAqC,EACA,GAAG+B,CAAA,EAELC,IACG,CACH,MAAMqsB,EAAgB,IAAM,CAC1B,OAAQjgB,EAAA,CACN,IAAK,OACH,OACEL,EAAAA,KAAAiZ,WAAA,CACE,SAAA,CAAAlZ,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,GAAA,CAAK,EAC7B6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,GAAA,CAAK,EAC7B6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,GAAA,CAAK,CAAA,EAC/B,EAEJ,IAAK,OACH,OACE8P,EAAAA,KAAAiZ,WAAA,CACE,SAAA,CAAAlZ,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,GAAA,CAAK,EAC7B6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,GAAA,CAAK,EAC7B6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,GAAA,CAAK,EAC7B6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,GAAA,CAAK,CAAA,EAC/B,EAEJ,IAAK,SACH,OAAO6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,MAAA,CAAQ,EACzC,IAAK,SACH,OACE8P,EAAAA,KAAAiZ,WAAA,CACE,SAAA,CAAAlZ,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,YAAA,CAAc,EACtC6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,YAAA,CAAc,EACtC6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,YAAA,CAAc,CAAA,EACxC,EAEJ,QACE,OAAO,IAAA,CAEb,EAGM,CAAE,UAAWqwB,EAAkB,MAAOC,CAAA,EAAiBzuB,EAAuB,CAClF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACPA,GAAOoQ,CAAI,EACXpQ,GAAOyd,CAAK,EACZzd,GAAOmQ,CAAO,EACdnQ,GAAO,SAASmwB,CAAK,EAAE,CAAA,CACzB,CACD,EAED,OACErgB,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWssB,EACX,MAAOC,EACP,KAAK,SACL,aAAYxZ,EACX,GAAGhT,EAEH,SAAA,CAAAssB,EAAA,EACDvgB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,OAAS,SAAA8W,CAAA,CAAM,CAAA,CAAA,CAAA,CAG7C,CACF,EAEAoZ,GAAQ,YAAc,6iCCLhBK,GAAe1Y,EAAAA,cAAwC,IAAI,EAkCpD2Y,GAA8C,CAAC,CAC1D,SAAA3sB,EACA,SAAAwY,EAAW,eACX,UAAAoU,EAAY,EACZ,UAAA/wB,EACA,MAAAqC,CACF,IAAM,CACJ,KAAM,CAAC2uB,EAAQC,CAAS,EAAIhf,EAAAA,SAAsB,CAAA,CAAE,EAE9Cif,EAAY9c,cAAa+c,GAAiC,CAC9D,MAAM7b,EAAK,SAAS,KAAK,IAAA,CAAK,IAAI,KAAK,QAAQ,GACzC8b,EAAW,CAAE,GAAGD,EAAO,GAAA7b,CAAA,EAE7B,OAAA2b,EAAU1a,GACQ,CAAC,GAAGA,EAAM6a,CAAQ,EAEnB,MAAM,CAACL,CAAS,CAChC,EAEMzb,CACT,EAAG,CAACyb,CAAS,CAAC,EAERM,EAAYjd,cAAakB,GAAe,CAC5C2b,EAAU1a,GAAQA,EAAK,OAAO4a,GAASA,EAAM,KAAO7b,CAAE,CAAC,CACzD,EAAG,CAAA,CAAE,EAECgc,EAAgBld,EAAAA,YAAY,IAAM,CACtC6c,EAAU,CAAA,CAAE,CACd,EAAG,CAAA,CAAE,EAEClR,EAAevb,EAAM,QAAQ,KAAO,CACxC,OAAAwsB,EACA,UAAAE,EACA,UAAAG,EACA,cAAAC,CAAA,GACE,CAACN,EAAQE,EAAWG,EAAWC,CAAa,CAAC,EAGjD7tB,OAAAA,EAAAA,UAAU,KACR8tB,GAAmBxR,CAAY,EACxB,IAAM,CACXyR,GAAa,IACf,GACC,CAACzR,CAAY,CAAC,EAGf3P,EAAAA,KAACygB,GAAa,SAAb,CAAsB,MAAO9Q,EAC3B,SAAA,CAAA5b,EACDgM,EAAAA,IAACshB,GAAA,CAAe,SAAA9U,EAAoB,UAAA3c,EAAsB,MAAAqC,CAAA,CAAc,CAAA,EAC1E,CAEJ,EAQMovB,GAAgD,CAAC,CAAE,SAAA9U,EAAU,UAAA3c,EAAW,MAAAqC,KAAY,CACxF,MAAMgG,EAAU2Q,EAAAA,WAAW6X,EAAY,EAGjC,CAAE,UAAWvsB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAAKyB,GAAO,UAAWA,GAAOqc,CAAQ,CAAC,CAAA,CAC1D,EAED,GAAI,CAACtU,EAAS,OAAO,KAErB,KAAM,CAAE,OAAA2oB,GAAW3oB,EAEnB,OAAI2oB,EAAO,SAAW,EAAU,KAEzB5H,GAAAA,mBACJ,MAAA,CAAI,UAAW9kB,EAAoB,MAAOC,EACxC,SAAAysB,EAAO,IAAIG,SACTO,GAAA,CAA0B,GAAGP,GAAdA,EAAM,EAAe,CACtC,EACH,EACA,SAAS,IAAA,CAEb,EAOMO,GAAsC,CAAC,CAC3C,GAAApc,EACA,KAAA1N,EACA,MAAA+pB,EACA,QAAAC,EACA,SAAAC,EAAW,IACX,YAAAjO,EAAc,GACd,OAAAkO,EACA,UAAA9xB,EACA,MAAAqC,CACF,IAAM,CACJ,MAAMgG,EAAU2Q,EAAAA,WAAW6X,EAAY,EACjC,CAACjM,EAAWC,CAAY,EAAI5S,EAAAA,SAAS,EAAK,EAE1C+R,EAAgB5P,EAAAA,YAAY,IAAM,CACtCyQ,EAAa,EAAI,EACjB,WAAW,IAAM,CACfxc,GAAA,MAAAA,EAAS,UAAUiN,EACrB,EAAG,GAAG,CACR,EAAG,CAACjN,EAASiN,CAAE,CAAC,EAEhB7R,EAAAA,UAAU,IAAM,CACd,GAAIouB,EAAW,EAAG,CAChB,MAAM9V,EAAQ,WAAW,IAAM,CAC7BiI,EAAA,CACF,EAAG6N,CAAQ,EAEX,MAAO,IAAM,aAAa9V,CAAK,CACjC,CACF,EAAG,CAAC8V,EAAU7N,CAAa,CAAC,EAE5B,MAAM+N,EAAU,IAAM,CACpB,OAAQnqB,EAAA,CACN,IAAK,UACH,MAAO,IACT,IAAK,QACH,MAAO,IACT,IAAK,UACH,MAAO,IACT,IAAK,OACL,QACE,MAAO,GAAA,CAEb,EAGM,CAAE,UAAWtD,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAOsH,CAAI,EACX,CACE,CAACtH,GAAO,OAAO,EAAGskB,CAAA,CACpB,CACF,CACD,EAED,OACExU,EAAAA,KAAC,MAAA,CACC,UAAW9L,EACX,MAAOC,EACP,KAAK,QACL,YAAU,SAEV,SAAA,CAAA4L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,KACrB,eAAC,OAAA,CAAM,SAAAyxB,EAAA,EAAU,CAAA,CACnB,EAEA3hB,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,QACpB,SAAA,CAAAqxB,GAASxhB,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,MAAQ,SAAAqxB,EAAM,EAC/CxhB,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QAAU,SAAAsxB,EAAQ,EACxCE,GACC3hB,EAAAA,IAAC,SAAA,CACC,UAAW7P,GAAO,OAClB,QAAS,IAAM,CACbwxB,EAAO,QAAA,EACP9N,EAAA,CACF,EAEC,SAAA8N,EAAO,KAAA,CAAA,CACV,EAEJ,EAEClO,GACCzT,EAAAA,IAAC,SAAA,CACC,UAAW7P,GAAO,QAClB,QAAS0jB,EACT,aAAW,UACZ,SAAA,GAAA,CAAA,CAED,CAAA,CAAA,CAIR,EAGagO,GAAW,IAAM,CAC5B,MAAM3pB,EAAU2Q,EAAAA,WAAW6X,EAAY,EACvC,GAAI,CAACxoB,EACH,MAAM,IAAI,MAAM,8CAA8C,EAEhE,OAAOA,CACT,EAGA,IAAImpB,GAAuC,KAGpC,MAAMD,GAAsBU,GAA6B,CAC9DT,GAAaS,CACf,EAGad,GAAQ,CACnB,KAAM,CAACS,EAAiBxvB,IACjBovB,GAIEA,GAAW,UAAU,CAAE,GAAGpvB,EAAS,KAAM,OAAQ,QAAAwvB,EAAS,EAFxD,GAIX,QAAS,CAACA,EAAiBxvB,IACpBovB,GAIEA,GAAW,UAAU,CAAE,GAAGpvB,EAAS,KAAM,UAAW,QAAAwvB,EAAS,EAF3D,GAIX,QAAS,CAACA,EAAiBxvB,IACpBovB,GAIEA,GAAW,UAAU,CAAE,GAAGpvB,EAAS,KAAM,UAAW,QAAAwvB,EAAS,EAF3D,GAIX,MAAO,CAACA,EAAiBxvB,IAClBovB,GAIEA,GAAW,UAAU,CAAE,GAAGpvB,EAAS,KAAM,QAAS,QAAAwvB,EAAS,EAFzD,EAIb,w0BCpUMM,GAAgB/Z,EAAAA,cAAyC,IAAI,EAEtDga,GAASluB,EAAAA,WACpB,CACE,CACE,KAAAyX,EAAO,GACP,aAAAL,EACA,SAAA+W,EAAW,GACX,qBAAAC,EAAuB,GACvB,cAAA5I,EAAgB,GAChB,KAAA/Y,EAAO,KACP,SAAAiM,EAAW,SACX,QAAA2V,EAAU,GACV,UAAAzgB,EAAY,GACZ,aAAA6X,EACA,UAAA1pB,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACugB,EAAWC,CAAY,EAAI5S,EAAAA,SAAS,EAAK,EAC1CsgB,EAAY9vB,EAAAA,OAA8B,IAAI,EAC9CmnB,EAA2BnnB,EAAAA,OAA2B,IAAI,EAG1D0R,EAAUC,EAAAA,YACb9I,GAAmC,CAClCinB,EAAU,QAAUjnB,EAChBjH,IACE,OAAOA,GAAQ,WACjBA,EAAIiH,CAAO,EAEXjH,EAAI,QAAUiH,EAGpB,EACA,CAACjH,CAAG,CAAA,EAIAmuB,EAAQpe,EAAAA,YAAY,IAAM,CAC1Bke,GACFzN,EAAa,EAAI,EACjB,WAAW,IAAM,CACfxJ,GAAA,MAAAA,EAAe,IACfwJ,EAAa,EAAK,CACpB,EAAG,GAAG,GAENxJ,GAAA,MAAAA,EAAe,GAEnB,EAAG,CAACiX,EAASjX,CAAY,CAAC,EAGpBoX,EAAsBre,EAAAA,YACzB+B,GAA4B,CACvBkc,GAAwBlc,EAAM,SAAWA,EAAM,eACjDqc,EAAA,CAEJ,EACA,CAACH,EAAsBG,CAAK,CAAA,EAIxB5f,EAAgBwB,EAAAA,YACnB+B,GAAyB,CACpBA,EAAM,MAAQ,UAAYsT,GAC5B+I,EAAA,CAEJ,EACA,CAAC/I,EAAe+I,CAAK,CAAA,EAIjBvI,EAAwB7V,EAAAA,YAAY,IAAM,CAC9C,GAAI,CAACvC,GAAa,CAAC0gB,EAAU,QAAS,OAEtC,MAAMrI,EAAoBqI,EAAU,QAAQ,iBAC1C,0EAAA,EAGF,GAAI7I,EAAc,CAChB,MAAMS,EAAiBoI,EAAU,QAAQ,cAAc7I,CAAY,EACnE,GAAIS,EAAgB,CAClBA,EAAe,MAAM,CAAE,cAAe,EAAA,CAAM,EAC5C,MACF,CACF,CAEID,EAAkB,OAAS,EAC5BA,EAAkB,CAAC,EAAkB,MAAM,CAAE,cAAe,GAAM,EAEnEqI,EAAU,QAAQ,MAAM,CAAE,cAAe,GAAM,CAEnD,EAAG,CAAC1gB,EAAW6X,CAAY,CAAC,EAGtBU,EAAkBhW,cAAa+B,GAAyB,CAC5D,GAAI,CAACoc,EAAU,SAAWpc,EAAM,MAAQ,MAAO,OAE/C,MAAM+T,EAAoBqI,EAAU,QAAQ,iBAC1C,0EAAA,EAGF,GAAIrI,EAAkB,SAAW,EAAG,OAEpC,MAAMG,EAAeH,EAAkB,CAAC,EAClCI,EAAcJ,EAAkBA,EAAkB,OAAS,CAAC,EAE9D/T,EAAM,SACJ,SAAS,gBAAkBkU,IAC7BC,EAAY,MAAM,CAAE,cAAe,EAAA,CAAM,EACzCnU,EAAM,eAAA,GAGJ,SAAS,gBAAkBmU,IAC7BD,EAAa,MAAM,CAAE,cAAe,EAAA,CAAM,EAC1ClU,EAAM,eAAA,EAGZ,EAAG,CAAA,CAAE,EAGL1S,EAAAA,UAAU,IAAM,CACd,GAAIiY,EACF,OAAAkO,EAAyB,QAAU,SAAS,cAC5CK,EAAA,EAEA,SAAS,iBAAiB,UAAWrX,CAAa,EAClD,SAAS,iBAAiB,UAAWwX,CAAe,EAGpD,SAAS,KAAK,MAAM,SAAW,SAExB,IAAM,CACX,SAAS,oBAAoB,UAAWxX,CAAa,EACrD,SAAS,oBAAoB,UAAWwX,CAAe,EACvD,SAAS,KAAK,MAAM,SAAW,GAG3BR,EAAyB,SAC3BA,EAAyB,QAAQ,MAAM,CAAE,cAAe,GAAM,CAElE,CAEJ,EAAG,CAAClO,EAAM9I,EAAewX,EAAiBH,CAAqB,CAAC,EAEhE,MAAMlK,EAAmC,CACvC,MAAAyS,CAAA,EAII,CAAE,UAAWluB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,OACPA,GAAOoQ,CAAI,EACXpQ,GAAOqc,CAAQ,EACf,CACE,CAACrc,GAAO,OAAO,EAAGgyB,EAClB,CAAChyB,GAAO,OAAO,EAAGskB,CAAA,CACpB,CACF,CACD,EAED,MAAI,CAAClJ,GAAQ,CAACkJ,EAAkB,KAEzBwE,GAAAA,aACLjZ,EAAAA,IAAC+hB,GAAc,SAAd,CAAuB,MAAOnS,EAC7B,SAAA5P,EAAAA,IAAC,MAAA,CACC,UAAWtR,EACTyB,GAAO,SACP,CACE,CAACA,GAAO,OAAO,EAAG8xB,EAClB,CAAC9xB,GAAO,OAAO,EAAGskB,CAAA,CACpB,EAEF,QAAS6N,EAET,SAAAtiB,EAAAA,IAAC,MAAA,CACC,IAAKgE,EACL,UAAW7P,EACX,MAAOC,EACP,KAAK,SACL,aAAW,OACX,SAAU,GACT,GAAGH,EAEH,SAAAD,CAAA,CAAA,CACH,CAAA,EAEJ,EACA,SAAS,IAAA,CAEb,CACF,EAGauuB,GAAezuB,EAAAA,WAC1B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,MAAC,OAAI,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACtE,SAAAD,CAAA,CACH,CAEJ,CACF,EAEawuB,GAAc1uB,EAAAA,WACzB,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OACE6P,MAAC,MAAG,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACrE,SAAAD,CAAA,CACH,CAEJ,CACF,EAEayuB,GAAa3uB,EAAAA,WACxB,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,MAAC,OAAI,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACtE,SAAAD,CAAA,CACH,CAEJ,CACF,EAEa0uB,GAAe5uB,EAAAA,WAC1B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,MAAC,OAAI,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACtE,SAAAD,CAAA,CACH,CAEJ,CACF,EAOa2uB,GAAc7uB,EAAAA,WACzB,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,QAAAsW,EAAS,QAAAD,EAAS,GAAGpW,CAAA,EAASC,IAAQ,CACnE,MAAMgE,EAAU2Q,EAAAA,WAAWkZ,EAAa,EAElCrX,EAAezV,GAA2C,CAC9DoV,GAAA,MAAAA,EAAUpV,GACViD,GAAA,MAAAA,EAAS,OACX,EAGM,CAAE,UAAW/D,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OAAIma,GAAWjW,EAAM,eAAeL,CAAQ,EACnCK,EAAM,aAAaL,EAAmE,CAC3F,QAAS0W,CAAA,CACV,EAID1K,EAAAA,IAAC,SAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,QAASsW,EACT,aAAW,eACV,GAAGzW,EAEH,SAAAD,GAAY,GAAA,CAAA,CAGnB,CACF,EAGa4uB,GAAY,IAAM,CAC7B,MAAM1qB,EAAU2Q,EAAAA,WAAWkZ,EAAa,EACxC,GAAI,CAAC7pB,EACH,MAAM,IAAI,MAAM,kDAAkD,EAEpE,OAAOA,CACT,EAGA8pB,GAAO,YAAc,SACrBO,GAAa,YAAc,eAC3BC,GAAY,YAAc,cAC1BC,GAAW,YAAc,aACzBC,GAAa,YAAc,eAC3BC,GAAY,YAAc,cAG1B,MAAME,GAAkB,OAAO,OAAOb,GAAQ,CAC5C,OAAQO,GACR,MAAOC,GACP,KAAMC,GACN,OAAQC,GACR,MAAOC,EACT,CAAC,i+CC/SKG,GAAgB9a,EAAAA,cAAyC,IAAI,EAE7D+a,GAAY,IAAM,CACtB,MAAM7qB,EAAU2Q,EAAAA,WAAWia,EAAa,EACxC,GAAI,CAAC5qB,EACH,MAAM,IAAI,MAAM,gDAAgD,EAElE,OAAOA,CACT,EAsBM8qB,GAAS3uB,EAAM,WACnB,CAAC,CACC,KAAAkX,EACA,YAAAP,EAAc,GACd,aAAAE,EACA,UAAA/C,EAAY,QACZ,KAAA5H,EAAO,KACP,QAAAD,EAAU,UACV,UAAAzQ,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EACFC,IAAQ,CACT,KAAM,CAACkR,EAAQC,CAAS,EAAIvD,EAAAA,SAASyJ,GAAQP,CAAW,EAGxD1X,EAAAA,UAAU,IAAM,CACViY,IAAS,QACXlG,EAAUkG,CAAI,CAElB,EAAG,CAACA,CAAI,CAAC,EAET,MAAM0X,EAAmBhf,cAAa0H,GAAqB,CACzDtG,EAAUsG,CAAO,EACjBT,GAAA,MAAAA,EAAeS,EACjB,EAAG,CAACT,CAAY,CAAC,EAEX0E,EAAmC,CACvC,KAAMxK,EACN,QAAS6d,EACT,UAAA9a,EACA,KAAA5H,EACA,QAAAD,CAAA,EAII,CAAE,UAAWnM,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB,EAAA,CACnB,EAED,aACG4wB,GAAc,SAAd,CAAuB,MAAOlT,EAC7B,SAAA5P,EAAAA,IAAC,MAAA,CAAI,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACtE,SAAAD,EACH,EACF,CAEJ,CACF,EA+BMkvB,GAAgB7uB,EAAM,WAC1B,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,QAAAoY,EAAU,GAAO,GAAGrW,CAAA,EAASC,IAAQ,CAClE,KAAM,CAAE,QAAAwX,CAAA,EAAYqX,GAAA,EAGd,CAAE,UAAW5uB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAED,OAAIma,EACKjW,EAAM,aAAaL,EAAgC,CACxD,QAAS,IAAM0X,EAAQ,EAAI,EAC3B,GAAGzX,CAAA,CACJ,EAID+L,EAAAA,IAAC,SAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,QAAS,IAAMsX,EAAQ,EAAI,EAC1B,GAAGzX,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA4CMmvB,GAAgB9uB,EAAM,WAC1B,CAAC,CACC,SAAAL,EACA,UAAAnE,EACA,MAAAqC,EACA,YAAAkxB,EAAc,GACd,oBAAAC,EAAsB,GACtB,cAAA/J,EAAgB,GAChB,GAAGrlB,CAAA,EACFC,IAAQ,CACT,KAAM,CAAE,KAAAqX,EAAM,QAAAG,EAAS,UAAAvD,EAAW,KAAA5H,EAAM,QAAAD,CAAA,EAAYyiB,GAAA,EAGpDzvB,EAAAA,UAAU,IAAM,CACd,GAAI,CAACgmB,GAAiB,CAAC/N,EAAM,OAE7B,MAAM+X,EAAgBruB,GAAqB,CACrCA,EAAE,MAAQ,UACZyW,EAAQ,EAAK,CAEjB,EAEA,gBAAS,iBAAiB,UAAW4X,CAAY,EAC1C,IAAM,SAAS,oBAAoB,UAAWA,CAAY,CACnE,EAAG,CAAC/X,EAAM+N,EAAe5N,CAAO,CAAC,EAGjCpY,EAAAA,UAAU,IAAM,CACd,GAAIiY,EAAM,CACR,MAAMgY,EAAgB,OAAO,iBAAiB,SAAS,IAAI,EAAE,SAC7D,gBAAS,KAAK,MAAM,SAAW,SACxB,IAAM,CACX,SAAS,KAAK,MAAM,SAAWA,CACjC,CACF,CACF,EAAG,CAAChY,CAAI,CAAC,EAGTjY,EAAAA,UAAU,IAAM,CACd,GAAIiY,EAAM,CACR,MAAMiY,EAAgB,SAAS,cACzBC,EAAgB,SAAS,cAAc,uBAAuB,EACpE,GAAIA,EAAe,CACjB,MAAMC,EAAmBD,EAAc,cACrC,0EAAA,EAEEC,GACFA,EAAiB,MAAA,CAErB,CACA,MAAO,IAAM,CACPF,GACFA,EAAc,MAAA,CAElB,CACF,CACF,EAAG,CAACjY,CAAI,CAAC,EAGT,KAAM,CAAE,UAAWpX,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACPA,GAAO,YAAYgY,CAAS,EAAE,EAC9BhY,GAAO,YAAYoQ,CAAI,EAAE,EACzBpQ,GAAO,YAAYmQ,CAAO,EAAE,CAAA,CAC9B,CACD,EAED,GAAI,CAACiL,EAAM,OAAO,KAElB,MAAMyB,EACJ/M,EAAAA,KAAAiZ,EAAAA,SAAA,CACG,SAAA,CAAAkK,GACCpjB,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,QAClB,QAAS,IAAMkzB,GAAuB3X,EAAQ,EAAK,EACnD,cAAY,MAAA,CAAA,EAGhB1L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,SACL,aAAW,OACX,sBAAmB,GACnB,aAAYmX,EAAO,OAAS,SAC3B,GAAGtX,EAEH,SAAAD,CAAA,CAAA,CACH,EACF,EAGF,OAAOilB,gBAAajM,EAAS,SAAS,IAAI,CAC5C,CACF,EA0BM2W,GAAetvB,EAAM,WACzB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA0BM4vB,GAAcvvB,EAAM,WACxB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA0BM6vB,GAAoBxvB,EAAM,WAC9B,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,WAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,IAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA0BM8vB,GAAazvB,EAAM,WACvB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA0BM+vB,GAAe1vB,EAAM,WACzB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAgCMgwB,GAAc3vB,EAAM,WACxB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,QAAAoY,EAAU,GAAO,GAAGrW,CAAA,EAASC,IAAQ,CAClE,KAAM,CAAE,QAAAwX,CAAA,EAAYqX,GAAA,EAGd,CAAE,UAAW5uB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OAAIma,EACKjW,EAAM,aAAaL,EAAgC,CACxD,QAAS,IAAM0X,EAAQ,EAAK,EAC5B,GAAGzX,CAAA,CACJ,EAID+L,EAAAA,IAAC,SAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,QAAS,IAAMsX,EAAQ,EAAK,EAC5B,aAAW,eACV,GAAGzX,EAEH,SAAAD,GACCgM,EAAAA,IAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,uBACF,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,OAAA,CAAA,CACjB,CAAA,CACF,CAAA,CAIR,CACF,EAGAgjB,GAAO,YAAc,SACrBE,GAAc,YAAc,gBAC5BC,GAAc,YAAc,gBAC5BQ,GAAa,YAAc,eAC3BC,GAAY,YAAc,cAC1BC,GAAkB,YAAc,oBAChCC,GAAW,YAAc,aACzBC,GAAa,YAAc,eAC3BC,GAAY,YAAc,cAc1B,MAAMC,GAA0BjB,GAChCiB,GAAwB,QAAUf,GAClCe,GAAwB,QAAUd,GAClCc,GAAwB,OAASN,GACjCM,GAAwB,MAAQL,GAChCK,GAAwB,YAAcJ,GACtCI,GAAwB,KAAOH,GAC/BG,GAAwB,OAASF,GACjCE,GAAwB,MAAQD,2iBCxmB1BE,GAAkBlc,EAAAA,cAA2C,IAAI,EAmB1Dmc,GAKT,CAAC,CACH,SAAAnwB,EACA,KAAMiX,EACN,aAAAC,EACA,SAAAsB,EAAW,SACX,OAAA4X,EAAS,EACT,iBAAAC,EAAmB,GACnB,oBAAAhL,EAAsB,GACtB,cAAAC,EAAgB,GAChB,UAAAzpB,EACA,MAAAqC,CACF,IAAM,CACJ,KAAM,CAACqZ,EAAMG,CAAO,EAAI5J,EAAAA,SAAS,EAAK,EAChC,CAAC0V,EAAgBC,CAAiB,EAAI3V,EAAAA,SAA2B0K,CAAQ,EACzE,CAACkL,EAAQC,CAAS,EAAI7V,EAAAA,SAAS,CAAE,EAAG,EAAG,EAAG,EAAG,EAC7C6D,EAAarT,EAAAA,OAA2B,IAAI,EAC5CoT,EAAcpT,EAAAA,OAA8B,IAAI,EAEhD8S,EAAS6F,IAAmB,OAAYA,EAAiBM,EAG/D,IAAIuN,EAA4C,KAC5CwL,EAA+B,KAEnCjwB,EAAM,SAAS,QAAQL,EAAW4K,GAAU,CACtCvK,EAAM,eAAeuK,CAAK,IACxBA,EAAM,OAAS2lB,GACjBD,EAAc1lB,EAAM,MAAM,SAE1Bka,EAAiBla,EAGvB,CAAC,EAGD,MAAMoZ,EAAoB/T,EAAAA,YAAY,IAAM,CAC1C,GAAI,CAAC0B,EAAW,SAAW,CAACD,EAAY,QAAS,OAEjD,MAAMuH,EAActH,EAAW,QAAQ,sBAAA,EACjC6e,EAAe9e,EAAY,QAAQ,sBAAA,EACnCyH,EAAgB,OAAO,WACvBC,EAAiB,OAAO,YAE9B,IAAI3T,EAAI,EACJ4e,EAAI,EAGR,KAAM,CAACoM,EAAMC,CAAS,EAAIlY,EAAS,MAAM,GAAG,EAE5C,OAAQiY,EAAA,CACN,IAAK,SACHpM,EAAIpL,EAAY,OAASmX,EACzB,MACF,IAAK,MACH/L,EAAIpL,EAAY,IAAMuX,EAAa,OAASJ,EAC5C,MACF,IAAK,OACH3qB,EAAIwT,EAAY,KAAOuX,EAAa,MAAQJ,EAC5C,MACF,IAAK,QACH3qB,EAAIwT,EAAY,MAAQmX,EACxB,KAAA,CAIJ,GAAIK,IAAS,UAAYA,IAAS,MAChC,OAAQC,EAAA,CACN,IAAK,QACHjrB,EAAIwT,EAAY,KAChB,MACF,IAAK,MACHxT,EAAIwT,EAAY,MAAQuX,EAAa,MACrC,MACF,QACE/qB,EAAIwT,EAAY,KAAOA,EAAY,MAAQ,EAAIuX,EAAa,MAAQ,CAAA,SAE/DC,IAAS,QAAUA,IAAS,QACrC,OAAQC,EAAA,CACN,IAAK,QACHrM,EAAIpL,EAAY,IAChB,MACF,IAAK,MACHoL,EAAIpL,EAAY,OAASuX,EAAa,OACtC,MACF,QACEnM,EAAIpL,EAAY,IAAMA,EAAY,OAAS,EAAIuX,EAAa,OAAS,CAAA,CAK3E/qB,EAAI,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAG0T,EAAgBqX,EAAa,MAAQ,CAAC,CAAC,EACnEnM,EAAI,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAGjL,EAAiBoX,EAAa,OAAS,CAAC,CAAC,EAErE/M,EAAkBjL,CAAQ,EAC1BmL,EAAU,CACR,EAAAle,EACA,EAAA4e,CAAA,CACD,CACH,EAAG,CAAC7L,EAAU4X,CAAM,CAAC,EAGfO,EAAiB1gB,EAAAA,YAAY,IAAM,CACnCgH,IAAmB,QACrBS,EAAQtF,GAAQ,CAACA,CAAI,EAEvB8E,GAAA,MAAAA,EAAe,CAAC9F,EAClB,EAAG,CAAC6F,EAAgB7F,EAAQ8F,CAAY,CAAC,EAGnC0Z,EAAgB3gB,EAAAA,YAAY,IAAM,CAClCgH,IAAmB,QACrBS,EAAQ,EAAK,EAEfR,GAAA,MAAAA,EAAe,GACjB,EAAG,CAACD,EAAgBC,CAAY,CAAC,EAG3BnF,EAAqB9B,cAAa+B,GAAsB,CAC5D,GAAI,CAACqT,GAAuB,CAACjU,EAAQ,OAErC,MAAMyU,EAAS7T,EAAM,OAEnBN,EAAY,SACZC,EAAW,SACX,CAACD,EAAY,QAAQ,SAASmU,CAAM,GACpC,CAAClU,EAAW,QAAQ,SAASkU,CAAM,GAEnC+K,EAAA,CAEJ,EAAG,CAACvL,EAAqBjU,EAAQwf,CAAa,CAAC,EAGzCniB,EAAgBwB,cAAa+B,GAAyB,CACtDA,EAAM,MAAQ,UAAYsT,GAAiBlU,GAC7Cwf,EAAA,CAEJ,EAAG,CAACtL,EAAelU,EAAQwf,CAAa,CAAC,EAGzCtxB,EAAAA,UAAU,IAAM,CACd,GAAI8R,EAAQ,CACV4S,EAAA,EAEA,MAAMzT,EAAe,IAAMyT,EAAA,EACrBY,EAAe,IAAM,CAGzB,GAFAZ,EAAA,EAEIrS,EAAW,QAAS,CACtB,MAAMkf,EAAOlf,EAAW,QAAQ,sBAAA,GAC5Bkf,EAAK,OAAS,GAAKA,EAAK,IAAM,OAAO,cACvCD,EAAA,CAEJ,CACF,EAEA,cAAO,iBAAiB,SAAUrgB,CAAY,EAC9C,OAAO,iBAAiB,SAAUqU,EAAc,EAAI,EACpD,SAAS,iBAAiB,YAAa7S,CAAkB,EACzD,SAAS,iBAAiB,UAAWtD,CAAa,EAE3C,IAAM,CACX,OAAO,oBAAoB,SAAU8B,CAAY,EACjD,OAAO,oBAAoB,SAAUqU,EAAc,EAAI,EACvD,SAAS,oBAAoB,YAAa7S,CAAkB,EAC5D,SAAS,oBAAoB,UAAWtD,CAAa,CACvD,CACF,CACF,EAAG,CAAC2C,EAAQ4S,EAAmBjS,EAAoBtD,EAAemiB,CAAa,CAAC,EAGhF,MAAM7X,EAAU+L,GAAkBzkB,EAAM,eAAeykB,CAAc,EAAIzkB,EAAM,aAAaykB,EAAgB,CAC1G,IAAM/V,GAA2B,CAC/B4C,EAAW,QAAU5C,CACvB,EACA,QAAU9N,GAAwB,UAChCmN,EAAA0W,GAAA,aAAA3W,EAAA2W,EAAgB,OAAM,UAAtB,MAAA1W,EAAA,KAAAD,EAAgClN,GAChC0vB,EAAA,CACF,EACA,gBAAiBvf,EACjB,gBAAiB,MAAA,CAClB,EAAI,KAECwK,EAAqC,CACzC,MAAOgV,EACP,iBAAAP,CAAA,EAII,CAAE,UAAWlwB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,SACPA,GAAOqnB,EAAe,MAAM,GAAG,EAAE,CAAC,CAAC,CAAA,CACrC,CACD,EAED,OACEvX,EAAAA,KAAAiZ,WAAA,CACG,SAAA,CAAAnM,EACA3H,GAAU6T,GAAAA,aACTjZ,EAAAA,IAACkkB,GAAgB,SAAhB,CAAyB,MAAOtU,EAC/B,SAAA5P,EAAAA,IAAC,MAAA,CACC,IAAK0F,EACL,UAAWvR,EACX,MAAO,CACL,SAAU,QACV,KAAMujB,EAAO,EACb,IAAKA,EAAO,EACZ,OAAQ,2BACR,GAAGtjB,CAAA,EAEL,KAAK,OACL,mBAAiB,WAEhB,SAAAkwB,CAAA,CAAA,EAEL,EACA,SAAS,IAAA,CACX,EACF,CAEJ,EAMaC,GAAezwB,EAAAA,WAC1B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,MAAC,OAAI,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACtE,SAAAD,CAAA,CACH,CAEJ,CACF,EAsCa8wB,GAAehxB,EAAAA,WAC1B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA4O,EAAU,YAAAikB,EAAa,KAAAzS,EAAM,SAAA0S,EAAU,SAAAhxB,EAAU,QAAAqW,EAAS,GAAGpW,CAAA,EAASC,IAAQ,CACjG,MAAMgE,EAAU2Q,EAAAA,WAAWqb,EAAe,EAEpCxZ,EAAezV,GAAwC,CACvD6L,IAEJuJ,GAAA,MAAAA,EAAUpV,GACNiD,GAAA,MAAAA,EAAS,kBACXA,EAAQ,MAAA,EAEZ,EAGM,CAAE,UAAW/D,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACP,CACE,CAACA,GAAO,QAAQ,EAAG2Q,EACnB,CAAC3Q,GAAO,WAAW,EAAG40B,CAAA,CACxB,CACF,CACD,EAED,OACE9kB,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,WACL,SAAU0M,EAAW,GAAK,EAC1B,QAAS4J,EACR,GAAGzW,EAEH,SAAA,CAAAqe,GAAQtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAO,SAAAmiB,EAAK,EAC7CtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAO,SAAA6D,EAAS,EACvCgxB,GAAYhlB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,SAAW,SAAA60B,CAAA,CAAS,CAAA,CAAA,CAAA,CAG/D,CACF,EAKaC,GAAoBnxB,EAAAA,WAC/B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEvC,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,SAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,YACJ,GAAGH,CAAA,CAAA,CAGV,CACF,EAMaixB,GAAgBpxB,EAAAA,WAC3B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAGamxB,GAAc,IAAM,CAC/B,MAAMjtB,EAAU2Q,EAAAA,WAAWqb,EAAe,EAC1C,GAAI,CAAChsB,EACH,MAAM,IAAI,MAAM,sDAAsD,EAExE,OAAOA,CACT,EAGAqsB,GAAa,YAAc,eAC3BO,GAAa,YAAc,eAC3BG,GAAkB,YAAc,oBAChCC,GAAc,YAAc,gBAG5Bf,GAAS,KAAOI,GAChBJ,GAAS,KAAOW,GAChBX,GAAS,UAAYc,GACrBd,GAAS,MAAQe,knBChdXE,GAAcpd,EAAAA,cAAuC,IAAI,EAElDqd,GAAOvxB,EAAAA,WAClB,CACE,CACE,aAAA2P,EAAe,GACf,MAAOyE,EACP,cAAArB,EACA,YAAAkK,EAAc,aACd,KAAAxQ,EAAO,KACP,UAAAC,EAAY,GACZ,UAAA3Q,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAACwP,EAAeC,CAAgB,EAAI7B,EAAAA,SAAS2B,CAAY,EACzD6hB,EAAYpd,IAAoB,OAAYA,EAAkBxE,EAE9D6hB,EAAethB,cAAaO,GAAqB,CACjD0D,IAAoB,QACtBvE,EAAiBa,CAAQ,EAE3BqC,GAAA,MAAAA,EAAgBrC,EAClB,EAAG,CAAC0D,EAAiBrB,CAAa,CAAC,EAE7B+I,EAAiC,CACrC,UAAA0V,EACA,aAAAC,EACA,YAAAxU,EACA,KAAAxQ,CAAA,EAII,CAAE,UAAWpM,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACPA,GAAO4gB,CAAW,EAClB5gB,GAAOoQ,CAAI,EACX,CACE,CAACpQ,GAAO,SAAS,EAAGqQ,CAAA,CACtB,CACF,CACD,EAED,OACER,EAAAA,IAAColB,GAAY,SAAZ,CAAqB,MAAOxV,EAC3B,SAAA5P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,EAEL,CAEJ,CACF,EAUawxB,GAAW1xB,EAAAA,WACtB,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACjD,MAAMgE,EAAU2Q,EAAAA,WAAWuc,EAAW,EACtC,GAAI,CAACltB,EACH,MAAM,IAAI,MAAM,mCAAmC,EAIrD,KAAM,CAAE,UAAW/D,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACPA,GAAO+H,EAAQ,WAAW,CAAA,CAC5B,CACD,EAED,OACE8H,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,UACL,mBAAkB8D,EAAQ,YACzB,GAAGjE,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAcayxB,GAAc3xB,EAAAA,WACzB,CAAC,CAAE,MAAAjF,EAAO,SAAAiS,EAAU,UAAAjR,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,QAAAqW,EAAS,GAAGpW,CAAA,EAASC,IAAQ,CAC3E,MAAMgE,EAAU2Q,EAAAA,WAAWuc,EAAW,EACtC,GAAI,CAACltB,EACH,MAAM,IAAI,MAAM,sCAAsC,EAGxD,MAAMwtB,EAAWxtB,EAAQ,YAAcrJ,EAEjC6b,EAAezV,GAA2C,CACzD6L,IACH5I,EAAQ,aAAarJ,CAAK,EAC1Bwb,GAAA,MAAAA,EAAUpV,GAEd,EAGM,CAAE,UAAWd,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACPA,GAAO+H,EAAQ,IAAI,EACnB,CACE,CAAC/H,GAAO,MAAM,EAAGu1B,EACjB,CAACv1B,GAAO,QAAQ,EAAG2Q,CAAA,CACrB,CACF,CACD,EAED,OACEd,EAAAA,IAAC,SAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,MACL,gBAAesxB,EACf,gBAAe,YAAY72B,CAAK,GAChC,GAAI,OAAOA,CAAK,GAChB,SAAU62B,EAAW,EAAI,GACzB,SAAA5kB,EACA,QAAS4J,EACR,GAAGzW,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAca2xB,GAAc7xB,EAAAA,WACzB,CAAC,CAAE,MAAAjF,EAAO,WAAA+2B,EAAa,GAAO,UAAA/1B,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAC5E,MAAMgE,EAAU2Q,EAAAA,WAAWuc,EAAW,EACtC,GAAI,CAACltB,EACH,MAAM,IAAI,MAAM,sCAAsC,EAGxD,MAAMwtB,EAAWxtB,EAAQ,YAAcrJ,EAGjC,CAAE,UAAWsF,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACP,CACE,CAACA,GAAO,MAAM,EAAGu1B,EACjB,CAACv1B,GAAO,QAAQ,EAAG,CAACu1B,CAAA,CACtB,CACF,CACD,EAED,MAAI,CAACA,GAAY,CAACE,EACT,KAIP5lB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,WACL,kBAAiB,OAAOvF,CAAK,GAC7B,GAAI,YAAYA,CAAK,GACrB,SAAU,EACV,OAAQ,CAAC62B,EACR,GAAGzxB,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAGa6xB,GAAU,IAAM,CAC3B,MAAM3tB,EAAU2Q,EAAAA,WAAWuc,EAAW,EACtC,GAAI,CAACltB,EACH,MAAM,IAAI,MAAM,kCAAkC,EAEpD,OAAOA,CACT,EAGAmtB,GAAK,YAAc,OACnBG,GAAS,YAAc,WACvBC,GAAY,YAAc,cAC1BE,GAAY,YAAc,cAG1B,MAAMG,GAAgB,OAAO,OAAOT,GAAM,CACxC,KAAMG,GACN,QAASC,GACT,QAASE,EACX,CAAC,6hBC/NYI,GAAYjyB,EAAAA,WACvB,CACE,CACE,KAAAyM,EAAO,KACP,SAAAylB,EAAW,GACX,QAAAhS,EAAU,KACV,UAAAnkB,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CAEH,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOoQ,CAAI,EACXpQ,GAAO,WAAW6jB,CAAO,EAAE,EAC3B,CACE,CAAC7jB,GAAO,QAAQ,EAAG61B,CAAA,CACrB,CACF,CACD,EAED,OACEhmB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEA+xB,GAAU,YAAc,qgCClCXE,GAAQnyB,EAAAA,WACnB,CACE,CACE,UAAAqU,EAAY,WACZ,IAAAgN,EAAM,KACN,MAAAjJ,EAAQ,UACR,QAAAga,EAAU,QACV,KAAAC,EAAO,GACP,GAAIpyB,EAAY,MAChB,UAAAlE,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CAEH,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAOgY,CAAS,EAChBhY,GAAO,OAAOglB,CAAG,EAAE,EACnBhlB,GAAO,SAAS+b,CAAK,EAAE,EACvB/b,GAAO,WAAW+1B,CAAO,EAAE,EAC3B,CACE,CAAC/1B,GAAO,IAAI,EAAGg2B,CAAA,CACjB,CACF,CACD,EAED,OACEnmB,EAAAA,IAACjM,EAAA,CACC,IAAAG,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEAiyB,GAAM,YAAc,0WCvEPG,GAAatyB,EAAAA,WACxB,CAAC,CAAE,UAAAuyB,EAAY,IAAK,UAAAx2B,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAElE,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,UAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,aAAW,aACX,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEJ,SAAA+L,EAAAA,IAAC,KAAA,CAAG,UAAW7P,GAAO,KACnB,SAAAkE,EAAM,SAAS,IAAIL,EAAU,CAAC4K,EAAOsD,IAAU,CAC9C,GAAI,CAAC7N,EAAM,eAAeuK,CAAK,EAAG,OAAO,KAEzC,MAAM0nB,EAASpkB,IAAU7N,EAAM,SAAS,MAAML,CAAQ,EAAI,EAE1D,OACEiM,EAAAA,KAAAiZ,WAAA,CACG,SAAA,CAAAta,EACA,CAAC0nB,GACAtmB,EAAAA,IAAC,KAAA,CAAG,UAAW7P,GAAO,UAAW,cAAY,OAC1C,SAAAk2B,CAAA,CACH,CAAA,EAEJ,CAEJ,CAAC,CAAA,CACH,CAAA,CAAA,CAGN,CACF,EAEaE,GAAiBzyB,EAAAA,WAC5B,CAAC,CAAE,cAAA0yB,EAAgB,GAAO,UAAA32B,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAExE,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACP,CACE,CAACA,GAAO,OAAO,EAAGq2B,CAAA,CACpB,CACF,CACD,EAED,OACExmB,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAcoyB,EAAgB,OAAS,OACtC,GAAGvyB,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEayyB,GAAiB3yB,EAAAA,WAC5B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,IAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EASa0yB,GAAiB5yB,EAAAA,WAC5B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,OAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAGAoyB,GAAW,YAAc,aACzBG,GAAe,YAAc,iBAC7BE,GAAe,YAAc,iBAC7BC,GAAe,YAAc,iBAGD,OAAO,OAAON,GAAY,CACpD,KAAMG,GACN,KAAME,GACN,KAAMC,EACR,CAAC,i6BCLKC,GAAiB3e,EAAAA,cAA0C,IAAI,EAExD4e,GAAU9yB,EAAAA,WACrB,CACE,CACE,YAAA+yB,EAAc,GACd,UAAAC,EAAY,GACZ,kBAAmBC,EACnB,KAAA9a,EAAO,OACP,QAAA3L,EAAU,UACV,UAAAzQ,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAM0b,EAAoC,CACxC,UAAAkX,EACA,YAAAD,CAAA,EAII,CAAE,UAAW1yB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACPA,GAAO8b,CAAI,EACX9b,GAAOmQ,CAAO,EACd,CACE,CAACnQ,GAAO,SAAS,EAAG22B,EACpB,CAAC32B,GAAO,WAAW,EAAG02B,CAAA,CACxB,CACF,CACD,EAED,OACE7mB,EAAAA,IAAC2mB,GAAe,SAAf,CAAwB,MAAO/W,EAC9B,SAAA5P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,UACb,iBAAgB0yB,EACf,GAAG7yB,EAEH,SAAAD,CAAA,CAAA,EAEL,CAEJ,CACF,EAEagzB,GAAgBlzB,EAAAA,WAC3B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,SACZ,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEaizB,GAAiBnzB,EAAAA,WAC5B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,UACZ,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEakzB,GAAgBpzB,EAAAA,WAC3B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,SACZ,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEamzB,GAAerzB,EAAAA,WAC1B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,QACZ,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEaozB,GAAoBtzB,EAAAA,WAC/B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,UAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,cACZ,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEaqzB,GAAsBvzB,EAAAA,WACjC,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,YAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,gBACZ,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEaszB,GAAcxzB,EAAAA,WACzB,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,OACZ,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEauzB,GAAkBzzB,EAAAA,WAC7B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,QAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,YACZ,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEawzB,GAAoB1zB,EAAAA,WAC/B,CAAC,CAAE,SAAA4xB,EAAW,GAAO,KAAApT,EAAM,UAAAziB,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CACzE,MAAMgE,EAAU2Q,EAAAA,WAAW8d,EAAc,EAGnC,CAAE,UAAWxyB,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,WACP,CACE,CAACA,GAAO,MAAM,EAAGu1B,EACjB,CAACv1B,GAAO,QAAQ,EAAG,CAAC,CAACmiB,CAAA,CACvB,CACF,CACD,EAED,OACErS,EAAAA,KAAC,SAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,eAAa,cACb,cAAasxB,EACZ,GAAGzxB,EAEH,SAAA,CAAAqe,SACE,OAAA,CAAK,UAAWniB,GAAO,KAAM,eAAa,OACxC,SAAAmiB,CAAA,CACH,GAEA,EAACpa,GAAA,MAAAA,EAAS,YAAa,EAACA,GAAA,MAAAA,EAAS,eACjC8H,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAM,eAAa,OACxC,SAAA6D,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,CACF,EAGayzB,GAAa,IAAM,CAC9B,MAAMvvB,EAAU2Q,EAAAA,WAAW8d,EAAc,EACzC,GAAI,CAACzuB,EACH,MAAM,IAAI,MAAM,oDAAoD,EAEtE,OAAOA,CACT,EAGA0uB,GAAQ,YAAc,UACtBI,GAAc,YAAc,gBAC5BC,GAAe,YAAc,iBAC7BC,GAAc,YAAc,gBAC5BC,GAAa,YAAc,eAC3BC,GAAkB,YAAc,oBAChCC,GAAoB,YAAc,sBAClCC,GAAY,YAAc,cAC1BC,GAAgB,YAAc,kBAC9BC,GAAkB,YAAc,oBAGP,OAAO,OAAOZ,GAAS,CAC9C,OAAQI,GACR,QAASC,GACT,OAAQC,GACR,MAAOC,GACP,WAAYC,GACZ,aAAcC,GACd,KAAMC,GACN,SAAUC,GACV,WAAYC,EACd,CAAC,2kBC5UYE,GAAa5zB,EAAAA,WACxB,CAAC,CAAE,SAAA6zB,EAAW,GAAO,KAAApnB,EAAO,KAAM,UAAA1Q,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEhF,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,WACP,CACE,CAACA,GAAO,QAAQ,EAAGw3B,EACnB,CAACx3B,GAAOoQ,CAAI,CAAC,EAAGA,CAAA,CAClB,CACF,CACD,EAED,OACEP,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEa4zB,GAAiB9zB,EAAAA,WAC5B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEa6zB,GAAiB/zB,EAAAA,WAC5B,CAAC,CAAE,SAAA4xB,EAAU,SAAA5kB,EAAU,UAAAjR,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAErE,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACP,CACE,CAACA,GAAO,MAAM,EAAGu1B,EACjB,CAACv1B,GAAO,QAAQ,EAAG2Q,CAAA,CACrB,CACF,CACD,EAED,OACEd,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEa8zB,GAAiBh0B,EAAAA,WAC5B,CAAC,CAAE,KAAAi0B,EAAM,SAAArC,EAAU,SAAA5kB,EAAU,KAAAwR,EAAM,UAAAziB,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAEjF,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACP,CACE,CAACA,GAAO,MAAM,EAAGu1B,EACjB,CAACv1B,GAAO,QAAQ,EAAG2Q,CAAA,CACrB,CACF,CACD,EAED,OACEb,EAAAA,KAAC,IAAA,CACC,IAAA/L,EACA,KAAM4M,EAAW,OAAYinB,EAC7B,UAAW5zB,EACX,MAAOC,EACP,eAAcsxB,EAAW,OAAS,OAClC,SAAU5kB,EAAW,GAAK,OACzB,GAAG7M,EAEH,SAAA,CAAAqe,GAAQtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAO,SAAAmiB,EAAK,EAC7CtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAO,SAAA6D,CAAA,CAAS,CAAA,CAAA,CAAA,CAG9C,CACF,EAEag0B,GAAsBl0B,EAAAA,WACjC,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEvC,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,SAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,CAAA,CAAA,CAGV,CACF,EAGAyzB,GAAW,YAAc,aACzBE,GAAe,YAAc,iBAC7BC,GAAe,YAAc,iBAC7BC,GAAe,YAAc,iBAC7BE,GAAoB,YAAc,sBAGlCN,GAAW,KAAOE,GAClBF,GAAW,KAAOG,GAClBH,GAAW,KAAOI,GAClBJ,GAAW,UAAYM,k1CCrKVC,GAAkBn0B,EAAAA,WAC7B,CAAC,CACC,MAAA0tB,EAAQ,oBACR,UAAA0G,EAAY,GACZ,KAAA3nB,EAAO,KACP,SAAAiM,EAAW,UACX,UAAA3c,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EACFC,IAAQ,CAET,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,gBACPA,GAAOoQ,CAAI,EACXpQ,GAAOqc,CAAQ,CAAA,CACjB,CACD,EAED,OACEvM,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,aAAW,oBACV,GAAGH,EAEH,SAAA,CAAAi0B,GACCloB,EAAAA,IAAC,KAAA,CAAG,UAAW7P,GAAO,MACnB,SAAAqxB,EACH,EAEDxtB,CAAA,CAAA,CAAA,CAGP,CACF,EAEam0B,GAAsBr0B,EAAAA,WACjC,CAAC,CAAE,UAAAjE,EAAW,SAAAmE,EAAU,GAAGC,CAAA,EAASC,IAEhC8L,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,KAAMN,CAAS,EACrC,GAAGoE,EAEH,SAAAD,CAAA,CAAA,CAIT,EAEao0B,GAAsBt0B,EAAAA,WACjC,CAAC,CAAE,MAAA+C,EAAQ,EAAG,SAAA6uB,EAAU,UAAA71B,EAAW,SAAAmE,EAAU,GAAGC,CAAA,EAASC,IAErD8L,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWxF,EACTyB,GAAO,KACPA,GAAO,QAAQ0G,CAAK,EAAE,EACtB,CACE,CAAC1G,GAAO,MAAM,EAAGu1B,CAAA,EAEnB71B,CAAA,EAED,GAAGoE,EAEH,SAAAD,CAAA,CAAA,CAIT,EAEaq0B,GAAsBv0B,EAAAA,WACjC,CAAC,CAAE,KAAAi0B,EAAM,SAAArC,EAAU,MAAA7uB,EAAQ,EAAG,UAAAhH,EAAW,MAAAqC,EAAO,SAAA8B,EAAU,GAAGC,CAAA,EAASC,IAAQ,CAE5E,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACPA,GAAO,YAAY0G,CAAK,EAAE,EAC1B,CACE,CAAC1G,GAAO,UAAU,EAAGu1B,CAAA,CACvB,CACF,CACD,EAED,OACE1lB,EAAAA,IAAC,IAAA,CACC,IAAA9L,EACA,KAAA6zB,EACA,UAAW5zB,EACX,MAAOC,EACP,eAAcsxB,EAAW,WAAa,OACrC,GAAGzxB,EAEJ,SAAA+L,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,SAAW,SAAA6D,CAAA,CAAS,CAAA,CAAA,CAGlD,CACF,EAGAi0B,GAAgB,YAAc,kBAC9BE,GAAoB,YAAc,sBAClCC,GAAoB,YAAc,sBAClCC,GAAoB,YAAc,sBAGlCJ,GAAgB,KAAOE,GACvBF,GAAgB,KAAOG,GACvBH,GAAgB,KAAOI,4xBCjGjBC,GAAmBtgB,EAAAA,cAA4C,IAAI,EAYnEugB,GAAuBvgB,EAAAA,cAAgD,IAAI,EAE3EwgB,GAAY10B,EAAAA,WAChB,CACE,CACE,SAAAE,EACA,UAAAnE,EACA,MAAAqC,EACA,KAAAuF,EAAO,SACP,YAAAovB,EAAc,GACd,aAAApjB,EACA,MAAOyE,EACP,cAAArB,EACA,KAAAtG,EAAO,KACP,QAAAD,EAAU,UACV,SAAAQ,EAAW,GACX,GAAG7M,CAAA,EAELC,IACG,CAEH,KAAM,CAACwP,EAAeC,CAAgB,EAAI7B,EAAAA,SAA4B,IAChEoG,IAAoB,OAAkBA,EACtCzE,IAAiB,OAAkBA,EAChChM,IAAS,WAAa,CAAA,EAAK,EACnC,EAEK5I,EAAQqZ,IAAoB,OAAYA,EAAkBxE,EAE1D+kB,EAAqBjkB,GAAgC,CACrD0D,IAAoB,QACtBvE,EAAiBa,CAAQ,EAE3BqC,GAAA,MAAAA,EAAgBrC,EAClB,EAGM,CAAE,UAAWrQ,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOoQ,CAAI,EACXpQ,GAAOmQ,CAAO,EACd,CACE,CAACnQ,GAAO,QAAQ,EAAG2Q,CAAA,CACrB,CACF,CACD,EAED,OACEd,EAAAA,IAACsoB,GAAiB,SAAjB,CACC,MAAO,CACL,KAAA7wB,EACA,MAAA5I,EACA,cAAe45B,EACf,KAAAloB,EACA,QAAAD,EACA,SAAAQ,EACA,YAAA+lB,CAAA,EAGF,SAAA7mB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CACH,CAAA,CAGN,CACF,EAEM00B,GAAgB50B,EAAAA,WACpB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,MAAArD,EAAO,SAAU85B,EAAe,GAAO,GAAG10B,CAAA,EAASC,IAAQ,CACxF,MAAMgE,EAAU2Q,EAAAA,WAAWyf,EAAgB,EAC3C,GAAI,CAACpwB,EACH,MAAM,IAAI,MAAM,gDAAgD,EAGlE,KAAM,CAAE,KAAAT,EAAM,MAAOmxB,EAAgB,cAAA/hB,EAAe,SAAUgiB,GAAsB3wB,EAC9E4I,EAAW+nB,GAAqBF,EAGhCG,EAASC,EAAAA,MAAA,EACTC,EAAY,GAAGF,CAAM,WACrBG,EAAY,GAAGH,CAAM,WAGrB1jB,EAAS3N,IAAS,WACpB,MAAM,QAAQmxB,CAAc,GAAKA,EAAe,SAAS/5B,CAAK,EAC9D+5B,IAAmB/5B,EAEjBq6B,EAAS,IAAM,CACnB,GAAI,CAAApoB,EAEJ,GAAIrJ,IAAS,WAAY,CACvB,MAAMqM,EAAe,MAAM,QAAQ8kB,CAAc,EAAIA,EAAiB,CAAA,EAChEpkB,EAAWY,EACbtB,EAAa,OAAOqlB,GAAKA,IAAMt6B,CAAK,EACpC,CAAC,GAAGiV,EAAcjV,CAAK,EAC3BgY,EAAcrC,CAAQ,CACxB,KAAO,CACL,MAAMA,EAAWY,GAAUlN,EAAQ,YAAc,GAAKrJ,EACtDgY,EAAcrC,CAAQ,CACxB,CACF,EAGM,CAAE,UAAWrQ,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACP,CACE,CAACA,GAAO,IAAI,EAAGiV,EACf,CAACjV,GAAO,QAAQ,EAAG2Q,CAAA,CACrB,CACF,CACD,EAED,OACEd,EAAAA,IAACuoB,GAAqB,SAArB,CACC,MAAO,CACL,MAAA15B,EACA,OAAAuW,EACA,SAAAtE,EACA,OAAAooB,EACA,UAAAF,EACA,UAAAC,CAAA,EAGF,SAAAjpB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CACH,CAAA,CAGN,CACF,EAEMo1B,GAAmBt1B,EAAAA,WACvB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,KAAAogB,EAAM,SAAA+W,EAAW,GAAO,QAAAhf,EAAS,GAAGpW,CAAA,EAASC,IAAQ,CAClF,MAAMo1B,EAAczgB,EAAAA,WAAW0f,EAAoB,EAC7CgB,EAAmB1gB,EAAAA,WAAWyf,EAAgB,EAEpD,GAAI,CAACgB,GAAe,CAACC,EACnB,MAAM,IAAI,MAAM,uDAAuD,EAGzE,KAAM,CAAE,OAAAnkB,EAAQ,SAAAtE,EAAU,OAAAooB,EAAQ,UAAAF,EAAW,UAAAC,GAAcK,EAErD5e,EAAe1E,GAA+C,CAClEkjB,EAAA,EACA7e,GAAA,MAAAA,EAAUrE,EACZ,EAGM,CAAE,UAAW7R,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACP,CACE,CAACA,GAAO,IAAI,EAAGiV,EACf,CAACjV,GAAO,QAAQ,EAAG2Q,CAAA,CACrB,CACF,CACD,EAED,OACEb,EAAAA,KAAC,SAAA,CACC,IAAA/L,EACA,GAAI80B,EACJ,KAAK,SACL,UAAW70B,EACX,MAAOC,EACP,QAASsW,EACT,SAAA5J,EACA,gBAAesE,EACf,gBAAe6jB,EACd,GAAGh1B,EAEJ,SAAA,CAAA+L,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,YAAc,SAAA6D,EAAS,EAC9C,CAACq1B,GACArpB,EAAAA,IAAC,OAAA,CACC,UAAWtR,EAAKyB,GAAO,YAAa,CAClC,CAACA,GAAO,OAAO,EAAGiV,CAAA,CACnB,EAEA,SAAAkN,SAASkX,GAAA,CAAA,CAAmB,CAAA,CAAA,CAC/B,CAAA,CAAA,CAIR,CACF,EAEMC,GAAmB31B,EAAAA,WACvB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CACjD,MAAMo1B,EAAczgB,EAAAA,WAAW0f,EAAoB,EAEnD,GAAI,CAACe,EACH,MAAM,IAAI,MAAM,uDAAuD,EAGzE,KAAM,CAAE,OAAAlkB,EAAQ,UAAA6jB,EAAW,UAAAD,CAAA,EAAcM,EAGnC,CAAE,UAAWn1B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACP,CACE,CAACA,GAAO,IAAI,EAAGiV,CAAA,CACjB,CACF,CACD,EAED,OACEpF,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,GAAI+0B,EACJ,KAAK,SACL,kBAAiBD,EACjB,UAAW70B,EACX,MAAOC,EACN,GAAGH,EAEJ,SAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,aACpB,SAAA6D,CAAA,CACH,CAAA,CAAA,CAGN,CACF,EAGMw1B,GAAqB,IACzBxpB,EAAAA,IAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,iBACF,OAAO,eACP,YAAY,IACZ,cAAc,SACd,eAAe,OAAA,CAAA,CACjB,CACF,EAGFwoB,GAAU,YAAc,YACxBE,GAAc,YAAc,iBAC5BU,GAAiB,YAAc,oBAC/BK,GAAiB,YAAc,oBAG/B,MAAMC,GAAqBlB,GAM3BkB,GAAmB,KAAOhB,GAC1BgB,GAAmB,QAAUN,GAC7BM,GAAmB,QAAUD,0vEC1SvBE,GAAkB3hB,EAAAA,cAA2C,IAAI,EAEjE4hB,GAAc,IAAM,CACxB,MAAM1xB,EAAU2Q,EAAAA,WAAW8gB,EAAe,EAC1C,GAAI,CAACzxB,EACH,MAAM,IAAI,MAAM,oDAAoD,EAEtE,OAAOA,CACT,EAsBM2xB,GAAWx1B,EAAM,WACrB,CAAC,CACC,QAAApC,EAAU,CAAA,EACV,MAAApD,EACA,aAAA4U,EAAe,GACf,cAAAoD,EACA,YAAAlF,EACA,aAAAmoB,EACA,kBAAAC,EACA,UAAAl6B,EACA,MAAAqC,EACA,SAAA8B,EACA,KAAAuM,EAAO,KACP,QAAAD,EAAU,UACV,GAAGrM,CAAA,EACFC,IAAQ,CACT,KAAM,CAACkR,EAAQC,CAAS,EAAIvD,EAAAA,SAAS,EAAK,EACpC,CAACwD,EAAeC,CAAgB,EAAIzD,EAAAA,SAASjT,GAAS4U,CAAY,EAClE,CAACumB,EAAaC,CAAc,EAAInoB,EAAAA,SAAS,EAAE,EAC3C,CAACooB,EAAkBC,CAAmB,EAAIroB,EAAAA,SAAS,EAAE,EAErD6D,EAAarT,EAAAA,OAA0B,IAAI,EAC3Cia,EAAaja,EAAAA,OAAuB,IAAI,EAGxC,CAAE,UAAW6B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,SACPA,GAAO,aAAaoQ,CAAI,EAAE,EAC1BpQ,GAAO,aAAamQ,CAAO,EAAE,CAAA,CAC/B,CACD,EAGK8pB,EAAkB/1B,EAAM,QAAQ,IAC/B21B,EACE/3B,EAAQ,OAAO8S,GACpBA,EAAO,MAAM,YAAA,EAAc,SAASilB,EAAY,aAAa,CAAA,EAFtC/3B,EAIxB,CAACA,EAAS+3B,CAAW,CAAC,EAGzB12B,EAAAA,UAAU,IAAM,CACVzE,IAAU,QACZ0W,EAAiB1W,CAAK,CAE1B,EAAG,CAACA,CAAK,CAAC,EAEV,MAAMigB,EAAW7K,cAAakC,GAAwB,CACpDZ,EAAiBY,CAAW,EAC5Bd,EAAU,EAAK,EACf4kB,EAAe,EAAE,EACjBE,EAAoB,EAAE,EACtBtjB,GAAA,MAAAA,EAAgBV,EAClB,EAAG,CAACU,CAAa,CAAC,EAGZpE,EAAgBwB,cAAahP,GAA2B,OAC5D,GAAI,CAACmQ,EAAQ,EACPnQ,EAAE,MAAQ,SAAWA,EAAE,MAAQ,KAAOA,EAAE,MAAQ,eAClDA,EAAE,eAAA,EACFoQ,EAAU,EAAI,EACd8kB,EAAoB,CAAC,GAEvB,MACF,CAEA,OAAQl1B,EAAE,IAAA,CACR,IAAK,SACHA,EAAE,eAAA,EACFoQ,EAAU,EAAK,EACf8kB,EAAoB,EAAE,GACtBhoB,EAAAwD,EAAW,UAAX,MAAAxD,EAAoB,QACpB,MACF,IAAK,YACHlN,EAAE,eAAA,EACFk1B,KACE/jB,EAAOgkB,EAAgB,OAAS,EAAIhkB,EAAO,EAAI,CAAA,EAEjD,MACF,IAAK,UACHnR,EAAE,eAAA,EACFk1B,KACE/jB,EAAO,EAAIA,EAAO,EAAIgkB,EAAgB,OAAS,CAAA,EAEjD,MACF,IAAK,QACHn1B,EAAE,eAAA,EACEi1B,GAAoB,GAAKE,EAAgBF,CAAgB,GAC3Dpb,EAASsb,EAAgBF,CAAgB,EAAE,KAAK,EAElD,KAAA,CAEN,EAAG,CAAC9kB,EAAQglB,EAAiBF,EAAkBpb,CAAQ,CAAC,EAGxDxb,EAAAA,UAAU,IAAM,CACd,MAAMyS,EAAsBC,GAAsB,CAE9CuG,EAAW,SACX,CAACA,EAAW,QAAQ,SAASvG,EAAM,MAAc,GACjDL,EAAW,SACX,CAACA,EAAW,QAAQ,SAASK,EAAM,MAAc,IAEjDX,EAAU,EAAK,EACf8kB,EAAoB,EAAE,EAE1B,EAEA,GAAI/kB,EACF,gBAAS,iBAAiB,YAAaW,CAAkB,EAClD,IAAM,SAAS,oBAAoB,YAAaA,CAAkB,CAE7E,EAAG,CAACX,CAAM,CAAC,EAEX,MAAMwK,EAAqC,CACzC,OAAAxK,EACA,UAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,YAAAykB,EACA,eAAAC,EACA,QAAAh4B,EACA,gBAAAm4B,EACA,WAAAzkB,EACA,WAAA4G,EACA,iBAAA2d,EACA,oBAAAC,EACA,SAAArb,EACA,YAAAnN,EACA,aAAAmoB,EACA,kBAAAC,CAAA,EAGF,OACE/pB,EAAAA,IAAC2pB,GAAgB,SAAhB,CAAyB,MAAO/Z,EAC/B,SAAA5P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,UAAWqO,EACV,GAAGxO,EAEH,SAAAD,CAAA,CAAA,EAEL,CAEJ,CACF,EAoCMq2B,GAAkBh2B,EAAM,WAC5B,CAAC,CAAE,UAAAxE,EAAW,MAAAqC,EAAO,YAAao4B,EAAoB,KAAAhY,EAAM,GAAGre,CAAA,EAAS6X,IAAS,CAC/E,KAAM,CAAE,OAAA1G,EAAQ,UAAAC,EAAW,cAAAC,EAAe,QAAArT,EAAS,WAAA0T,EAAY,YAAa4kB,CAAA,EAAuBX,GAAA,EAE7FvjB,EAAiBpU,EAAQ,KAAK8S,GAAUA,EAAO,QAAUO,CAAa,EACtEklB,EAAmBF,GAAsBC,GAAsB,mBAG/D,CAAE,UAAWp2B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAED,OACE8P,EAAAA,KAAC,SAAA,CACC,IAAK0F,EACL,KAAK,SACL,KAAK,WACL,gBAAeP,EACf,gBAAc,UACd,UAAWjR,EACX,MAAOC,EACP,QAAS,IAAMiR,EAAU,CAACD,CAAM,EAC/B,GAAGnR,EAEH,SAAA,CAAAqe,GAAQtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,YAAc,SAAAmiB,EAAK,EACpDtS,EAAAA,IAAC,QAAK,UAAW7P,GAAO,YACrB,SAAAkW,EAAiBA,EAAe,MAAQmkB,CAAA,CAC3C,EACAxqB,EAAAA,IAAC,MAAA,CACC,UAAWtR,EAAKyB,GAAO,aAAc,CAAE,CAACA,GAAO,gBAAgB,EAAGiV,EAAQ,EAC1E,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OAEL,SAAApF,EAAAA,IAAC,OAAA,CAAK,EAAE,qBAAqB,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,eAAe,OAAA,CAAO,CAAA,CAAA,CACjH,CAAA,CAAA,CAGN,CACF,EA+BMyqB,GAAkBp2B,EAAM,WAC5B,CAAC,CACC,SAAAL,EACA,UAAAnE,EACA,kBAAmB66B,EACnB,aAAcC,EACd,GAAG12B,CAAA,EACF6X,IAAS,CACV,KAAM,CACJ,OAAA1G,EACA,YAAA4kB,EACA,eAAAC,EACA,gBAAAG,EACA,WAAA7d,EACA,WAAA5G,EACA,kBAAmBilB,EACnB,aAAcC,CAAA,EACZjB,GAAA,EAEEkB,EAAyBJ,GAA4BE,GAA4B,oBACjFG,EAAoBJ,GAAuBE,GAAuB,oBAElE,CAACre,EAAUC,CAAW,EAAI3K,EAAAA,SAAS,CAAE,IAAK,EAAG,KAAM,EAAG,MAAO,CAAA,CAAG,EAGhEgL,EAAiB7I,EAAAA,YAAY,IAAM,CACvC,GAAImB,GAAUO,EAAW,QAAS,CAChC,MAAMsH,EAActH,EAAW,QAAQ,sBAAA,EACvC8G,EAAY,CACV,IAAKQ,EAAY,OAAS,EAC1B,KAAMA,EAAY,KAClB,MAAOA,EAAY,KAAA,CACpB,CACH,CACF,EAAG,CAAC7H,EAAQO,CAAU,CAAC,EAkBvB,GAhBArS,EAAAA,UAAU,IAAM,CACdwZ,EAAA,CACF,EAAG,CAACA,CAAc,CAAC,EAEnBxZ,EAAAA,UAAU,IAAM,CACd,GAAI8R,EAAQ,CACV,MAAM4lB,EAAe,IAAMle,EAAA,EAC3B,cAAO,iBAAiB,SAAUke,EAAc,EAAI,EACpD,OAAO,iBAAiB,SAAUA,CAAY,EACvC,IAAM,CACX,OAAO,oBAAoB,SAAUA,EAAc,EAAI,EACvD,OAAO,oBAAoB,SAAUA,CAAY,CACnD,CACF,CACF,EAAG,CAAC5lB,EAAQ0H,CAAc,CAAC,EAEvB,CAAC1H,EAAQ,OAAO,KAEpB,MAAM4H,EACJ/M,EAAAA,KAAC,MAAA,CACC,IAAKsM,EACL,UAAW7d,EAAKyB,GAAO,QAASN,CAAS,EACzC,MAAO,CACL,IAAK2c,EAAS,IACd,KAAMA,EAAS,KACf,SAAUA,EAAS,KAAA,EAErB,KAAK,UACJ,GAAGvY,EAEJ,SAAA,CAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,gBACrB,SAAA6P,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,UAAW7P,GAAO,YAClB,YAAa26B,EACb,MAAOd,EACP,SAAW/0B,GAAMg1B,EAAeh1B,EAAE,OAAO,KAAK,EAC9C,UAAS,EAAA,CAAA,EAEb,QAEC,MAAA,CAAI,UAAW9E,GAAO,YACpB,SAAAi6B,EAAgB,SAAW,EAC1BpqB,MAAC,OAAI,UAAW7P,GAAO,aAAe,SAAA46B,CAAA,CAAkB,EAExD/2B,GAAYo2B,EAAgB,IAAKrlB,GAC/B/E,EAAAA,IAACirB,GAAA,CAEC,MAAOlmB,EAAO,MACd,SAAUA,EAAO,SAEhB,SAAAA,EAAO,KAAA,EAJHA,EAAO,KAAA,CAMf,CAAA,CAEL,CAAA,CAAA,CAAA,EAIJ,OAAOkU,gBAAajM,EAAS,SAAS,IAAI,CAC5C,CACF,EAgCMie,GAAiB52B,EAAM,WAC3B,CAAC,CAAE,MAAAxF,EAAO,SAAAmF,EAAU,SAAA8M,EAAW,GAAO,UAAAjR,EAAW,GAAGoE,CAAA,EAASC,IAAQ,CACnE,KAAM,CACJ,cAAAoR,EACA,SAAAwJ,EACA,iBAAAob,EACA,oBAAAC,EACA,gBAAAC,CAAA,EACER,GAAA,EAEEsB,EAAcd,EAAgB,UAAUrlB,GAAUA,EAAO,QAAUlW,CAAK,EACxE4hB,EAAanL,IAAkBzW,EAC/Bs8B,EAAgBjB,IAAqBgB,EAE3C,OACEjrB,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,KAAK,SACL,gBAAeuc,EACf,UAAW/hB,EACTyB,GAAO,OACP,CACE,CAACA,GAAO,cAAc,EAAGsgB,EACzB,CAACtgB,GAAO,iBAAiB,EAAGg7B,EAC5B,CAACh7B,GAAO,cAAc,EAAG2Q,CAAA,EAE3BjR,CAAA,EAEF,QAAS,IAAM,CAACiR,GAAYgO,EAASjgB,CAAK,EAC1C,aAAc,IAAM,CAACiS,GAAYqpB,EAAoBe,CAAW,EAC/D,GAAGj3B,EAEH,SAAA,CAAAD,EACAyc,GACCzQ,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,UAClB,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OAEL,SAAA6P,EAAAA,IAAC,OAAA,CACC,EAAE,yBACF,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,OAAA,CAAA,CACjB,CAAA,CACF,CAAA,CAAA,CAIR,CACF,EAGA6pB,GAAS,YAAc,WACvBQ,GAAgB,YAAc,kBAC9BI,GAAgB,YAAc,kBAC9BQ,GAAe,YAAc,iBAS7B,MAAMG,GAA4BvB,GAClCuB,GAA0B,QAAUf,GACpCe,GAA0B,QAAUX,GACpCW,GAA0B,OAASH,ilCC9hB7BI,GAAWh3B,EAAM,WACrB,CAAC,CACC,KAAAi3B,EACA,MAAA9J,EACA,SAAA+J,EACA,OAAA7U,EAAS,IACT,WAAA8U,EAAa,GACb,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,KAAAnrB,EAAO,KACP,QAAAD,EAAU,UACV,cAAAqrB,EAAgB,GAChB,YAAAC,EAAc,QACd,UAAA/7B,EACA,MAAAqC,EACA,GAAG+B,CAAA,EACFC,IAAQ,CAGT,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,QAAA,CAC1B,EAED,GAAI,CAACm7B,GAAQA,EAAK,SAAW,EAC3B,OACEtrB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyF,EAAoBhE,GAAO,KAAK,EAChD,YAAWoQ,EACX,eAAcD,EACd,MAAOlM,EACN,GAAGH,EAEJ,SAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,WACrB,SAAA6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,UAAW,SAAA,mBAAA,CAAiB,CAAA,CACtD,CAAA,CAAA,EAKN,MAAM07B,EAAW,KAAK,IAAI,GAAGP,EAAK,IAAIt2B,GAAKA,EAAE,KAAK,CAAC,EAS7C2H,EANa,CACjB,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,EACnD,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,EACnD,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,CAAG,EAG9B4D,CAAI,EACxBurB,EAAgBtK,GAAS+J,EAAY5uB,EAAO,aAAe,EAC3DovB,EAAoBrV,EAASoV,EAAenvB,EAAO,aAGnDqvB,EAAgB,CACpB,uBACA,qBACA,sBACA,uBACA,oBACA,uBACA,sBAAA,EAGF,OACE/rB,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,YAAWoM,EACX,eAAcD,EACd,gBAAeorB,EACf,iBAAgBD,EAChB,sBAAqBE,EACrB,MAAOv3B,EACN,GAAGH,EAGF,SAAA,EAAAutB,GAAS+J,IACTtrB,OAAC,MAAA,CAAI,UAAW9P,GAAO,OACpB,SAAA,CAAAqxB,GAASxhB,EAAAA,IAAC,KAAA,CAAG,UAAW7P,GAAO,MAAQ,SAAAqxB,EAAM,EAC7C+J,GAAYvrB,EAAAA,IAAC,IAAA,CAAE,UAAW7P,GAAO,SAAW,SAAAo7B,CAAA,CAAS,CAAA,EACxD,EAIFtrB,EAAAA,KAAC,MAAA,CACC,UAAW9P,GAAO,eAClB,MAAO,CACL,OAAQ,GAAG47B,CAAiB,KAC5B,UAAW,GAAGA,CAAiB,KAC/B,UAAW,GAAGA,CAAiB,KAC/B,GAAIJ,EAAgB,CAAE,wBAAyBC,GAAgB,CAAA,CAAC,EAIjE,SAAA,CAAAH,GACCxrB,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,MACrB,SAAA,CAAA8P,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,YACrB,SAAA,CAAA6P,EAAAA,IAAC,QAAK,UAAW7P,GAAO,WAAa,SAAA,KAAK,MAAM07B,CAAQ,EAAE,EAC1D7rB,EAAAA,IAAC,QAAK,UAAW7P,GAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,GAAI,CAAA,CAAE,EACjE7rB,EAAAA,IAAC,QAAK,UAAW7P,GAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,EAAG,CAAA,CAAE,EAChE7rB,EAAAA,IAAC,QAAK,UAAW7P,GAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,GAAI,CAAA,CAAE,EACjE7rB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,WAAY,SAAA,GAAA,CAAC,CAAA,EACvC,EACA8P,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,UACrB,SAAA,CAAA6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QAAA,CAAU,CAAA,CAAA,CACnC,CAAA,EACF,EAIF6P,EAAAA,IAAC,OAAI,UAAW7P,GAAO,cACpB,SAAAm7B,EAAK,IAAI,CAACr0B,EAAMiL,IAAU,CAEzB,MAAM+pB,EAAY,KAAK,IAAI,EAAIh1B,EAAK,MAAQ40B,EAAYE,CAAiB,EACnEne,EAAQ3W,EAAK,OAAS+0B,EAAc9pB,EAAQ8pB,EAAc,MAAM,EAEtE,OACE/rB,EAAAA,KAAC,MAAA,CAEC,UAAW9P,GAAO,WAClB,MAAO,CACL,eAAgBu7B,EAAW,GAAGxpB,EAAQ,GAAG,KAAO,MAAA,EAIjD,SAAA,CAAAspB,GACCxrB,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,SAClB,MAAO,CACL,SAAU,WACV,OAAQ,GAAG87B,EAAY,CAAC,KACxB,KAAM,MACN,UAAW,mBACX,OAAQ,CAAA,EAGT,SAAAh1B,EAAK,KAAA,CAAA,QAKT,MAAA,CAAI,MAAO,CAAE,KAAM,GAAK,EAGzB+I,EAAAA,IAAC,OAAI,MAAO,CAAE,MAAO,OAAQ,QAAS,OAAQ,eAAgB,QAAA,EAC5D,SAAAA,MAACgX,GAAA,CAAQ,QAAS,GAAG/f,EAAK,KAAK,KAAKA,EAAK,KAAK,GAC5C,SAAA+I,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,IAClB,MAAO,CACL,OAAQ,GAAG87B,CAAS,KACpB,gBAAiBre,EACjB,eAAgB8d,EAAW,GAAGxpB,EAAQ,GAAG,KAAO,MAAA,CAClD,CAAA,EAEJ,CAAA,CACF,CAAA,CAAA,EArCK,GAAGjL,EAAK,KAAK,IAAIiL,CAAK,EAAA,CAwCjC,CAAC,CAAA,CACH,CAAA,CAAA,CAAA,EAIFjC,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,OACrB,SAAA,CAAA6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,YACpB,SAAAm7B,EAAK,IAAI,CAACr0B,EAAMiL,IACflC,EAAAA,IAACgX,GAAA,CAA+B,QAAS/f,EAAK,MAC5C,SAAA+I,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,WACpB,SAAA8G,EAAK,KAAA,CACR,CAAA,EAHY,SAASiL,CAAK,EAI5B,CACD,EACH,EACAjC,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,UACpB,SAAA,CAAAm7B,EAAK,OAAO,cAAA,CAAA,CACf,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CAGN,CACF,EAEAD,GAAS,YAAc,yvCC7GjBa,GAAY73B,EAAM,WACtB,CAAC,CACC,KAAAi3B,EACA,MAAA9J,EACA,SAAA+J,EACA,OAAA7U,EAAS,IACT,WAAA8U,EAAa,GACb,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,KAAAnrB,EAAO,KACP,QAAAD,EAAU,UACV,cAAAqrB,EAAgB,GAChB,YAAAC,EAAc,QACd,UAAAO,EAAY,uBACZ,UAAApV,EAAY,EACZ,SAAAqV,EAAW,GACX,OAAAC,EAAS,GACT,UAAAx8B,EACA,MAAAqC,EACA,GAAG+B,CAAA,EACFC,IAAQ,CAGT,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,EAAO,SAAA,CAC1B,EAED,GAAI,CAACm7B,GAAQA,EAAK,SAAW,EAC3B,OACEtrB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyF,EAAoBhE,EAAO,KAAK,EAChD,YAAWoQ,EACX,eAAcD,EACd,MAAOlM,EACN,GAAGH,EAEJ,SAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,WACrB,SAAA6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,EAAO,UAAW,SAAA,mBAAA,CAAiB,CAAA,CACtD,CAAA,CAAA,EAKN,MAAM07B,EAAW,KAAK,IAAI,GAAGP,EAAK,IAAIt2B,GAAKA,EAAE,KAAK,CAAC,EAC7Cs3B,EAAW,KAAK,IAAI,GAAGhB,EAAK,IAAIt2B,GAAKA,EAAE,KAAK,CAAC,EAC7Cu3B,EAAaV,EAAWS,EASxB3vB,EANa,CACjB,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,EACnD,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,EACnD,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,CAAG,EAG9B4D,CAAI,EACxBurB,EAAgBtK,GAAS+J,EAAY5uB,EAAO,aAAe,EAC3DovB,EAAoBrV,EAASoV,EAAenvB,EAAO,aAkCnD6vB,GA/BgBH,GAAoB,CACxC,GAAIf,EAAK,SAAW,EAAG,MAAO,GAE9B,MAAMmB,EAASnB,EAAK,IAAI,CAACoB,EAAOxqB,IAAU,CACxC,MAAMzI,EAAI6xB,EAAK,SAAW,EAAI,GAAMppB,GAASopB,EAAK,OAAS,GAAM,IAC3DjT,EAAIkU,IAAe,EAAI,GAAK,KAAQG,EAAM,MAAQJ,GAAYC,EAAc,IAClF,MAAO,CAAE,EAAA9yB,EAAG,EAAA4e,CAAA,CACd,CAAC,EAED,GAAIgU,GAAUf,EAAK,OAAS,EAAG,CAE7B,IAAIqB,EAAO,KAAKF,EAAO,CAAC,EAAE,CAAC,IAAIA,EAAO,CAAC,EAAE,CAAC,GAE1C,QAAS9tB,EAAI,EAAGA,EAAI8tB,EAAO,OAAQ9tB,IAAK,CACtC,MAAMiuB,EAAOH,EAAO9tB,EAAI,CAAC,EAAE,GAAK8tB,EAAO9tB,CAAC,EAAE,EAAI8tB,EAAO9tB,EAAI,CAAC,EAAE,GAAK,EAC3DkuB,EAAOJ,EAAO9tB,EAAI,CAAC,EAAE,EACrBmuB,EAAOL,EAAO9tB,CAAC,EAAE,GAAK8tB,EAAO9tB,CAAC,EAAE,EAAI8tB,EAAO9tB,EAAI,CAAC,EAAE,GAAK,EACvDouB,EAAON,EAAO9tB,CAAC,EAAE,EAEvBguB,GAAQ,MAAMC,CAAI,IAAIC,CAAI,KAAKC,CAAI,IAAIC,CAAI,KAAKN,EAAO9tB,CAAC,EAAE,CAAC,IAAI8tB,EAAO9tB,CAAC,EAAE,CAAC,EAC5E,CAEA,OAAOguB,CACT,KAEE,QAAOF,EAAO,IAAI,CAACC,EAAOxqB,IACxBA,IAAU,EAAI,KAAKwqB,EAAM,CAAC,IAAIA,EAAM,CAAC,GAAK,KAAKA,EAAM,CAAC,IAAIA,EAAM,CAAC,EAAA,EACjE,KAAK,GAAG,CAEd,GAE8BL,CAAM,EAEpC,OACEpsB,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,YAAWoM,EACX,eAAcD,EACd,gBAAeorB,EACf,iBAAgBD,EAChB,sBAAqBE,EACrB,MAAOv3B,EACN,GAAGH,EAGF,SAAA,EAAAutB,GAAS+J,IACTtrB,OAAC,MAAA,CAAI,UAAW9P,EAAO,OACpB,SAAA,CAAAqxB,GAASxhB,EAAAA,IAAC,KAAA,CAAG,UAAW7P,EAAO,MAAQ,SAAAqxB,EAAM,EAC7C+J,GAAYvrB,EAAAA,IAAC,IAAA,CAAE,UAAW7P,EAAO,SAAW,SAAAo7B,CAAA,CAAS,CAAA,EACxD,EAIFtrB,EAAAA,KAAC,MAAA,CACC,UAAW9P,EAAO,eAClB,MAAO,CACL,OAAQ,GAAG47B,CAAiB,KAC5B,UAAW,GAAGA,CAAiB,KAC/B,UAAW,GAAGA,CAAiB,KAC/B,GAAIJ,EAAgB,CAAE,wBAAyBC,GAAgB,CAAA,CAAC,EAIjE,SAAA,CAAAH,GACCxrB,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,MACrB,SAAA,CAAA8P,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,YACrB,SAAA,CAAA6P,EAAAA,IAAC,QAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAM07B,CAAQ,EAAE,EAC1D7rB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,IAAOS,EAAW,GAAI,CAAA,CAAE,EACnFtsB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,GAAMS,EAAW,EAAG,CAAA,CAAE,EACjFtsB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,IAAOS,EAAW,GAAI,CAAA,CAAE,EACnFtsB,MAAC,QAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAMm8B,CAAQ,CAAA,CAAE,CAAA,EAC5D,EACArsB,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,UACrB,SAAA,CAAA6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,CAAA,CAAA,CACnC,CAAA,EACF,EAIF8P,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,cACrB,SAAA,CAAA8P,EAAAA,KAAC,MAAA,CACC,UAAW9P,EAAO,QAClB,QAAQ,cACR,oBAAoB,OAGpB,SAAA,CAAA6P,EAAAA,IAAC,OAAA,CACC,EAAGwsB,EACH,KAAK,OACL,OAAQL,EACR,YAAapV,EAAY,GACzB,cAAc,QACd,eAAe,QACf,UAAW2U,EAAWv7B,EAAO,aAAe,EAAA,CAAA,EAI7Ci8B,GAAYd,EAAK,IAAI,CAACoB,EAAOxqB,IAAU,CACtC,MAAMzI,EAAI6xB,EAAK,SAAW,EAAI,GAAMppB,GAASopB,EAAK,OAAS,GAAM,IAC3DjT,EAAIkU,IAAe,EAAI,GAAK,KAAQG,EAAM,MAAQJ,GAAYC,EAAc,IAC5ES,EAAU,EAEhB,OACEhtB,EAAAA,IAAC,OAAA,CAEC,EAAGvG,EAAIuzB,EAAQ,EACf,EAAG3U,EAAI2U,EAAQ,EACf,MAAOA,EACP,OAAQA,EACR,KAAMN,EAAM,OAASP,EACrB,OAAO,OACP,UAAWT,EAAWv7B,EAAO,YAAc,GAC3C,MAAO,CAAE,eAAgBu7B,EAAW,GAAGxpB,EAAQ,GAAG,KAAO,MAAA,CAAU,EAR9D,OAAOA,CAAK,EAAA,CAWvB,CAAC,CAAA,CAAA,CAAA,EAIFopB,EAAK,IAAI,CAACoB,EAAOxqB,IAAU,CAC1B,MAAMzI,EAAI6xB,EAAK,SAAW,EAAI,GAAMppB,GAASopB,EAAK,OAAS,GAAM,IAC3DjT,EAAIkU,IAAe,EAAI,GAAK,KAAQG,EAAM,MAAQJ,GAAYC,EAAc,IAElF,OACEvsB,EAAAA,IAACgX,IAAiC,QAAS,GAAG0V,EAAM,KAAK,KAAKA,EAAM,KAAK,GACvE,SAAA1sB,EAAAA,IAAC,MAAA,CACC,UAAW7P,EAAO,eAClB,MAAO,CACL,KAAM,GAAGsJ,CAAC,IACV,IAAK,GAAG4e,CAAC,IACT,UAAW,uBAAA,CACb,CAAA,CACF,EARY,WAAWnW,CAAK,EAS9B,CAEJ,CAAC,EAGAspB,GAAcF,EAAK,IAAI,CAACoB,EAAOxqB,IAAU,CACxC,MAAMzI,EAAKyI,GAASopB,EAAK,OAAS,GAAM,IAClCjT,EAAI,KAAQqU,EAAM,MAAQJ,GAAYC,EAAc,IAE1D,OACEvsB,EAAAA,IAAC,MAAA,CAEC,UAAW7P,EAAO,WAClB,MAAO,CACL,KAAM,GAAGsJ,CAAC,IACV,IAAK,GAAG4e,CAAC,IACT,UAAW,yBACX,eAAgBqT,EAAW,GAAGxpB,EAAQ,GAAG,KAAO,MAAA,EAGjD,SAAAwqB,EAAM,KAAA,EATF,SAASxqB,CAAK,EAAA,CAYzB,CAAC,CAAA,CAAA,CACH,CAAA,CAAA,CAAA,EAIFjC,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,OACrB,SAAA,CAAA6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,YACpB,SAAAm7B,EAAK,IAAI,CAACr0B,EAAMiL,IACflC,EAAAA,IAACgX,GAAA,CAA+B,QAAS/f,EAAK,MAC5C,SAAA+I,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,WACpB,SAAA8G,EAAK,KAAA,CACR,CAAA,EAHY,SAASiL,CAAK,EAI5B,CACD,EACH,EACAjC,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,UACpB,SAAA,CAAAm7B,EAAK,OAAO,cAAA,CAAA,CACf,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CAGN,CACF,EAEAY,GAAU,YAAc,i9BCjSlBe,GAAW54B,EAAM,WACrB,CAAC,CACC,KAAAi3B,EACA,MAAA9J,EACA,SAAA+J,EACA,KAAAhrB,EAAO,IACP,WAAAirB,EAAa,GACb,WAAA0B,EAAa,GACb,SAAAxB,EAAW,GACX,QAAAprB,EAAU,UACV,cAAAqrB,EAAgB,GAChB,YAAAC,EAAc,QACd,YAAAxV,EAAc,EACd,UAAAvmB,EACA,MAAAqC,EACA,GAAG+B,CAAA,EACFC,IAAQ,CAGT,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,QAAA,CAC1B,EAED,GAAI,CAACm7B,GAAQA,EAAK,SAAW,EAC3B,OACEtrB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyF,EAAoBhE,GAAO,KAAK,EAChD,eAAcmQ,EACd,MAAOlM,EACN,GAAGH,EAEJ,SAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,WACrB,SAAA6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,UAAW,SAAA,mBAAA,CAAiB,CAAA,CACtD,CAAA,CAAA,EAKN,MAAMg9B,EAAQ7B,EAAK,OAAO,CAAC8B,EAAKn2B,IAASm2B,EAAMn2B,EAAK,MAAO,CAAC,EACtDo2B,GAAU9sB,EAAO,IAAM,EACvB+sB,EAAU/sB,EAAO,EACjBgtB,EAAUhtB,EAAO,EAGvB,IAAIitB,EAAkB,EACtB,MAAMC,EAASnC,EAAK,IAAI,CAACr0B,EAAMiL,IAAU,CACvC,MAAMwP,EAAcza,EAAK,MAAQk2B,EAAS,IACpCO,EAASz2B,EAAK,MAAQk2B,EAAS,IAC/BQ,EAAaH,EACbI,EAAWJ,EAAkBE,EAG7BG,GAAiBF,EAAa,KAAO,KAAK,GAAK,KAC/CG,GAAeF,EAAW,KAAO,KAAK,GAAK,KAE3CG,EAAKT,EAAUD,EAAS,KAAK,IAAIQ,CAAa,EAC9CG,EAAKT,EAAUF,EAAS,KAAK,IAAIQ,CAAa,EAC9CI,EAAKX,EAAUD,EAAS,KAAK,IAAIS,CAAW,EAC5CI,EAAKX,EAAUF,EAAS,KAAK,IAAIS,CAAW,EAE5CK,EAAeT,EAAQ,IAAM,EAAI,EAEjClB,EAAW,CACf,KAAKc,CAAO,IAAIC,CAAO,GACvB,KAAKQ,CAAE,IAAIC,CAAE,GACb,KAAKX,CAAM,IAAIA,CAAM,MAAMc,CAAY,MAAMF,CAAE,IAAIC,CAAE,GACrD,GAAA,EACA,KAAK,GAAG,EAGJE,GAAcT,EAAaD,EAAQ,EAAI,KAAO,KAAK,GAAK,KACxDW,EAAchB,EAAS,GACvBiB,EAAShB,EAAUe,EAAc,KAAK,IAAID,CAAU,EACpDG,GAAShB,EAAUc,EAAc,KAAK,IAAID,CAAU,EAE1D,OAAAZ,GAAmBE,EAEZ,CACL,KAAMlB,EACN,MAAOv1B,EAAK,OAAS,OAAQiL,EAAQ,IAAOopB,EAAK,MAAM,cACvD,WAAA5Z,EACA,OAAA4c,EACA,OAAAC,GACA,KAAAt3B,EACA,MAAAy2B,CAAA,CAEJ,CAAC,EAEK1B,EAAgB,CACpB,UAAW,UAAW,UAAW,UACjC,UAAW,UAAW,UAAW,SAAA,EAGnC,OACE/rB,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,eAAcmM,EACd,gBAAeorB,EACf,sBAAqBC,EACrB,MAAOv3B,EACN,GAAGH,EAGF,SAAA,EAAAutB,GAAS+J,IACTtrB,OAAC,MAAA,CAAI,UAAW9P,GAAO,OACpB,SAAA,CAAAqxB,GAASxhB,EAAAA,IAAC,KAAA,CAAG,UAAW7P,GAAO,MAAQ,SAAAqxB,EAAM,EAC7C+J,GAAYvrB,EAAAA,IAAC,IAAA,CAAE,UAAW7P,GAAO,SAAW,SAAAo7B,CAAA,CAAS,CAAA,EACxD,EAIFtrB,EAAAA,KAAC,MAAA,CACC,UAAW9P,GAAO,eAClB,MAAO,CACL,GAAIw7B,EAAgB,CAAE,wBAAyBC,CAAA,EAAgB,CAAA,EAC/D,MAAO,GAAGrrB,CAAI,KACd,OAAQ,GAAGA,CAAI,IAAA,EAGjB,SAAA,CAAAP,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,OAClB,MAAOoQ,EACP,OAAQA,EACR,QAAS,OAAOA,CAAI,IAAIA,CAAI,GAG3B,WAAO,IAAI,CAACiuB,EAAOtsB,WACjB,IAAA,CACC,SAAA,CAAAlC,EAAAA,IAAC,OAAA,CACC,EAAGwuB,EAAM,KACT,KAAMA,EAAM,KAAK,OAASxC,EAAc9pB,EAAQ8pB,EAAc,MAAM,EACpE,OAAO,sBACP,YAAA5V,EACA,UAAWsV,EAAWv7B,GAAO,cAAgB,GAC7C,MAAO,CAAE,eAAgBu7B,EAAW,GAAGxpB,EAAQ,GAAG,KAAO,MAAA,CAAU,CAAA,EAIpEspB,GAAcgD,EAAM,WAAa,GAChCvuB,EAAAA,KAAC,OAAA,CACC,EAAGuuB,EAAM,OACT,EAAGA,EAAM,OACT,WAAW,SACX,iBAAiB,SACjB,UAAWr+B,GAAO,WAClB,MAAO,CAAE,eAAgBu7B,EAAW,GAAGxpB,EAAQ,GAAG,KAAO,MAAA,EAExD,SAAA,CAAA,KAAK,MAAMssB,EAAM,UAAU,EAAE,GAAA,CAAA,CAAA,CAChC,CAAA,EArBI,SAAStsB,CAAK,EAuBtB,CACD,CAAA,CAAA,EAIFurB,EAAO,IAAI,CAACe,EAAOtsB,IAClBlC,EAAAA,IAACgX,GAAA,CAEC,QAAS,GAAGwX,EAAM,KAAK,KAAK,KAAKA,EAAM,KAAK,KAAK,KAAK,KAAK,MAAMA,EAAM,UAAU,CAAC,KAElF,SAAAxuB,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,WAClB,MAAO,CACL,SAAU,WACV,KAAM,GAAGq+B,EAAM,OAAS,EAAE,KAC1B,IAAK,GAAGA,EAAM,OAAS,EAAE,KACzB,MAAO,OACP,OAAQ,OACR,aAAc,KAAA,CAChB,CAAA,CACF,EAbK,WAAWtsB,CAAK,EAAA,CAexB,CAAA,CAAA,CAAA,EAIFgrB,GACCltB,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,OACpB,SAAAm7B,EAAK,IAAI,CAACr0B,EAAMiL,IACfjC,EAAAA,KAAC,MAAA,CAA4B,UAAW9P,GAAO,WAC7C,SAAA,CAAA6P,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,YAClB,MAAO,CACL,gBAAiB8G,EAAK,OAAS+0B,EAAc9pB,EAAQ8pB,EAAc,MAAM,CAAA,CAC3E,CAAA,QAED,OAAA,CAAK,UAAW77B,GAAO,YAAc,WAAK,MAAM,QAChD,OAAA,CAAK,UAAWA,GAAO,YAAc,WAAK,KAAA,CAAM,CAAA,CAAA,EARzC,UAAU+R,CAAK,EASzB,CACD,CAAA,CACH,EAIFjC,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,UACpB,SAAA,CAAAm7B,EAAK,OAAO,2BAAyB6B,CAAA,CAAA,CACxC,CAAA,CAAA,CAAA,CAGN,CACF,EAEAF,GAAS,YAAc,qzCC5NjBwB,GAAYp6B,EAAM,WACtB,CAAC,CACC,KAAAi3B,EACA,MAAA9J,EACA,SAAA+J,EACA,OAAA7U,EAAS,IACT,WAAA8U,EAAa,GACb,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,KAAAnrB,EAAO,KACP,QAAAD,EAAU,UACV,cAAAqrB,EAAgB,GAChB,YAAAC,EAAc,QACd,UAAA8C,EAAY,uBACZ,UAAAvC,EAAY,uBACZ,UAAApV,EAAY,EACZ,SAAAqV,EAAW,GACX,OAAAC,EAAS,GACT,YAAAsC,EAAc,GACd,UAAA9+B,EACA,MAAAqC,EACA,GAAG+B,CAAA,EACFC,IAAQ,CAGT,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,EAAO,SAAA,CAC1B,EAED,GAAI,CAACm7B,GAAQA,EAAK,SAAW,EAC3B,OACEtrB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyF,EAAoBhE,EAAO,KAAK,EAChD,YAAWoQ,EACX,eAAcD,EACd,MAAOlM,EACN,GAAGH,EAEJ,SAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,WACrB,SAAA6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,EAAO,UAAW,SAAA,mBAAA,CAAiB,CAAA,CACtD,CAAA,CAAA,EAKN,MAAM07B,EAAW,KAAK,IAAI,GAAGP,EAAK,IAAIt2B,GAAKA,EAAE,KAAK,CAAC,EAC7Cs3B,EAAW,KAAK,IAAI,GAAGhB,EAAK,IAAIt2B,GAAKA,EAAE,KAAK,CAAC,EAC7Cu3B,EAAaV,EAAWS,EASxB3vB,EANa,CACjB,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,EACnD,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,EACnD,GAAI,CAAE,aAAc,GAAI,aAAc,GAAI,QAAS,EAAA,CAAG,EAG9B4D,CAAI,EACxBurB,EAAgBtK,GAAS+J,EAAY5uB,EAAO,aAAe,EAC3DovB,EAAoBrV,EAASoV,EAAenvB,EAAO,aAGnDiyB,EAAoBvC,GAA4D,CACpF,GAAIf,EAAK,SAAW,EAAG,MAAO,CAAE,SAAU,GAAI,SAAU,EAAA,EAExD,MAAMmB,EAASnB,EAAK,IAAI,CAACoB,EAAOxqB,IAAU,CACxC,MAAMzI,EAAKyI,GAASopB,EAAK,OAAS,GAAM,IAClCjT,EAAI,KAAQqU,EAAM,MAAQJ,GAAYC,EAAc,IAC1D,MAAO,CAAE,EAAA9yB,EAAG,EAAA4e,CAAA,CACd,CAAC,EAED,IAAIwW,EAAW,GAEf,GAAIxC,GAAUf,EAAK,OAAS,EAAG,CAE7BuD,EAAW,KAAKpC,EAAO,CAAC,EAAE,CAAC,IAAIA,EAAO,CAAC,EAAE,CAAC,GAE1C,QAAS9tB,EAAI,EAAGA,EAAI8tB,EAAO,OAAQ9tB,IAAK,CACtC,MAAMiuB,EAAOH,EAAO9tB,EAAI,CAAC,EAAE,GAAK8tB,EAAO9tB,CAAC,EAAE,EAAI8tB,EAAO9tB,EAAI,CAAC,EAAE,GAAK,EAC3DkuB,EAAOJ,EAAO9tB,EAAI,CAAC,EAAE,EACrBmuB,EAAOL,EAAO9tB,CAAC,EAAE,GAAK8tB,EAAO9tB,CAAC,EAAE,EAAI8tB,EAAO9tB,EAAI,CAAC,EAAE,GAAK,EACvDouB,GAAON,EAAO9tB,CAAC,EAAE,EAEvBkwB,GAAY,MAAMjC,CAAI,IAAIC,CAAI,KAAKC,CAAI,IAAIC,EAAI,KAAKN,EAAO9tB,CAAC,EAAE,CAAC,IAAI8tB,EAAO9tB,CAAC,EAAE,CAAC,EAChF,CACF,MAEEkwB,EAAWpC,EAAO,IAAI,CAACC,EAAOxqB,IAC5BA,IAAU,EAAI,KAAKwqB,EAAM,CAAC,IAAIA,EAAM,CAAC,GAAK,KAAKA,EAAM,CAAC,IAAIA,EAAM,CAAC,EAAA,EACjE,KAAK,GAAG,EAIZ,MAAMoC,EAAWD,EACf,MAAMpC,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,UAC3BA,EAAO,CAAC,EAAE,CAAC,SAEnB,MAAO,CAAE,SAAAoC,EAAU,SAAAC,CAAAA,CACrB,EAEM,CAAE,SAAAD,EAAU,SAAAC,GAAaF,EAAiBvC,CAAM,EAEtD,OACEpsB,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,YAAWoM,EACX,eAAcD,EACd,gBAAeorB,EACf,iBAAgBD,EAChB,sBAAqBE,EACrB,MAAOv3B,EACN,GAAGH,EAGF,SAAA,EAAAutB,GAAS+J,IACTtrB,OAAC,MAAA,CAAI,UAAW9P,EAAO,OACpB,SAAA,CAAAqxB,GAASxhB,EAAAA,IAAC,KAAA,CAAG,UAAW7P,EAAO,MAAQ,SAAAqxB,EAAM,EAC7C+J,GAAYvrB,EAAAA,IAAC,IAAA,CAAE,UAAW7P,EAAO,SAAW,SAAAo7B,CAAA,CAAS,CAAA,EACxD,EAIFtrB,EAAAA,KAAC,MAAA,CACC,UAAW9P,EAAO,eAClB,MAAO,CACL,OAAQ,GAAG47B,CAAiB,KAC5B,UAAW,GAAGA,CAAiB,KAC/B,UAAW,GAAGA,CAAiB,KAC/B,GAAIJ,EAAgB,CAAE,wBAAyBC,GAAgB,CAAA,CAAC,EAIjE,SAAA,CAAAH,GACCxrB,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,MACrB,SAAA,CAAA8P,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,YACrB,SAAA,CAAA6P,EAAAA,IAAC,QAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAM07B,CAAQ,EAAE,EAC1D7rB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,IAAOS,EAAW,GAAI,CAAA,CAAE,EACnFtsB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,GAAMS,EAAW,EAAG,CAAA,CAAE,EACjFtsB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAM07B,EAAW,IAAOS,EAAW,GAAI,CAAA,CAAE,EACnFtsB,MAAC,QAAK,UAAW7P,EAAO,WAAa,SAAA,KAAK,MAAMm8B,CAAQ,CAAA,CAAE,CAAA,EAC5D,EACArsB,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,UACrB,SAAA,CAAA6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,EACjC6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,QAAA,CAAU,CAAA,CAAA,CACnC,CAAA,EACF,EAIF8P,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,cACrB,SAAA,CAAA8P,EAAAA,KAAC,MAAA,CACC,UAAW9P,EAAO,QAClB,QAAQ,cACR,oBAAoB,OAGpB,SAAA,CAAA6P,EAAAA,IAAC,OAAA,CACC,EAAG8uB,EACH,KAAMJ,EACN,YAAAC,EACA,UAAWjD,EAAWv7B,EAAO,aAAe,EAAA,CAAA,EAI9C6P,EAAAA,IAAC,OAAA,CACC,EAAG6uB,EACH,KAAK,OACL,OAAQ1C,EACR,YAAapV,EAAY,GACzB,cAAc,QACd,eAAe,QACf,UAAW2U,EAAWv7B,EAAO,aAAe,EAAA,CAAA,EAI7Ci8B,GAAYd,EAAK,IAAI,CAACoB,EAAOxqB,IAAU,CACtC,MAAMzI,EAAKyI,GAASopB,EAAK,OAAS,GAAM,IAClCjT,EAAI,KAAQqU,EAAM,MAAQJ,GAAYC,EAAc,IACpDS,EAAU,EAEhB,OACEhtB,EAAAA,IAAC,OAAA,CAEC,EAAGvG,EAAIuzB,EAAQ,EACf,EAAG3U,EAAI2U,EAAQ,EACf,MAAOA,EACP,OAAQA,EACR,KAAMN,EAAM,OAASP,EACrB,OAAO,OACP,UAAWT,EAAWv7B,EAAO,YAAc,GAC3C,MAAO,CAAE,eAAgBu7B,EAAW,GAAGxpB,EAAQ,GAAG,KAAO,MAAA,CAAU,EAR9D,OAAOA,CAAK,EAAA,CAWvB,CAAC,CAAA,CAAA,CAAA,EAIFopB,EAAK,IAAI,CAACoB,EAAOxqB,IAAU,CAC1B,MAAMzI,EAAKyI,GAASopB,EAAK,OAAS,GAAM,IAClCjT,EAAI,KAAQqU,EAAM,MAAQJ,GAAYC,EAAc,IAE1D,OACEvsB,EAAAA,IAACgX,IAAiC,QAAS,GAAG0V,EAAM,KAAK,KAAKA,EAAM,KAAK,GACvE,SAAA1sB,EAAAA,IAAC,MAAA,CACC,UAAW7P,EAAO,eAClB,MAAO,CACL,KAAM,GAAGsJ,CAAC,IACV,IAAK,GAAG4e,CAAC,IACT,UAAW,uBAAA,CACb,CAAA,CACF,EARY,WAAWnW,CAAK,EAS9B,CAEJ,CAAC,EAGAspB,GAAcF,EAAK,IAAI,CAACoB,EAAOxqB,IAAU,CACxC,MAAMzI,EAAKyI,GAASopB,EAAK,OAAS,GAAM,IAClCjT,EAAI,KAAQqU,EAAM,MAAQJ,GAAYC,EAAc,IAE1D,OACEvsB,EAAAA,IAAC,MAAA,CAEC,UAAW7P,EAAO,WAClB,MAAO,CACL,KAAM,GAAGsJ,CAAC,IACV,IAAK,GAAG4e,CAAC,IACT,UAAW,yBACX,eAAgBqT,EAAW,GAAGxpB,EAAQ,GAAG,KAAO,MAAA,EAGjD,SAAAwqB,EAAM,KAAA,EATF,SAASxqB,CAAK,EAAA,CAYzB,CAAC,CAAA,CAAA,CACH,CAAA,CAAA,CAAA,EAIFjC,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,OACrB,SAAA,CAAA6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,YACpB,SAAAm7B,EAAK,IAAI,CAACr0B,EAAMiL,IACflC,EAAAA,IAACgX,GAAA,CAA+B,QAAS/f,EAAK,MAC5C,SAAA+I,EAAAA,IAAC,MAAA,CAAI,UAAW7P,EAAO,WACpB,SAAA8G,EAAK,KAAA,CACR,CAAA,EAHY,SAASiL,CAAK,EAI5B,CACD,EACH,EACAjC,EAAAA,KAAC,MAAA,CAAI,UAAW9P,EAAO,UACpB,SAAA,CAAAm7B,EAAK,OAAO,cAAA,CAAA,CACf,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CAGN,CACF,EAEAmD,GAAU,YAAc,mLC3UXM,GAAcj7B,EAAAA,WACzB,CAAC,CACC,MAAAk7B,EAAQ,GAAG,EACX,SAAAh7B,EACA,UAAAnE,EACA,UAAAo/B,EAAY,QACZ,gBAAAC,EACA,MAAAh9B,EACA,GAAG+B,CAAA,EACFC,IAAQ,CACT,MAAMi7B,EAAgB,GAAI,EAAIH,EAAS,GAAG,IAGpC,CAAE,UAAW76B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,SAAA,CAC1B,EAED,OACE8P,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAO,CACL,GAAGC,EACH,gBAAA86B,CAAA,EAEF,kBAAiBD,EAChB,GAAGh7B,EAEJ,SAAA,CAAA+L,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,MAClB,MAAO,CAAE,cAAAg/B,CAAA,CAAc,CAAA,EAEzBnvB,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,QACpB,SAAA6D,CAAA,CACH,CAAA,CAAA,CAAA,CAGN,CACF,EAEA+6B,GAAY,YAAc,kiBC9BpBK,GAAO,MAGb,SAASC,GACPC,EACAC,EACAC,EACAC,EACqB,CACrB,OAAOh9B,EAAAA,QAAQ,IAAM,CAInB,GAHyB+8B,EAAe,EAAI,EAAIC,EAAgB,GAGxCF,EACtB,OAAO,MAAM,KAAK,CAAE,OAAQA,GAAc,CAACzsB,EAAGnE,IAAMA,EAAI,CAAC,EAG3D,MAAM+wB,EAAmB,KAAK,IAAIJ,EAAcE,EAAc,CAAC,EACzDG,EAAoB,KAAK,IAAIL,EAAcE,EAAcD,CAAU,EAEnEK,EAAqBF,EAAmBD,EAAgB,EACxDI,EAAsBF,EAAoBJ,EAAaE,EAAgB,EAEvEK,EAAa,MAAM,KAAK,CAAE,OAAQL,CAAA,EAAiB,CAAC3sB,EAAGnE,IAAMA,EAAI,CAAC,EAClEoxB,EAAY,MAAM,KAAK,CAAE,OAAQN,CAAA,EAAiB,CAAC3sB,EAAGnE,IAAM4wB,EAAaE,EAAgB9wB,EAAI,CAAC,EAEpG,GAAI,CAACixB,GAAsBC,EAAqB,CAC9C,MAAMG,EAAgB,EAAI,EAAIR,EAE9B,MAAO,CAAC,GADU,MAAM,KAAK,CAAE,OAAQQ,CAAA,EAAiB,CAACltB,EAAGnE,IAAMA,EAAI,CAAC,EACjDywB,GAAM,GAAGW,CAAS,CAC1C,CAEA,GAAIH,GAAsB,CAACC,EAAqB,CAC9C,MAAMI,EAAiB,EAAI,EAAIT,EACzBU,EAAa,MAAM,KACvB,CAAE,OAAQD,CAAA,EACV,CAACntB,EAAGnE,IAAM4wB,EAAaU,EAAiBtxB,EAAI,CAAA,EAE9C,MAAO,CAAC,GAAGmxB,EAAYV,GAAM,GAAGc,CAAU,CAC5C,CAEA,GAAIN,GAAsBC,EAAqB,CAC7C,MAAMM,EAAc,MAAM,KACxB,CAAE,OAAQR,EAAoBD,EAAmB,CAAA,EACjD,CAAC5sB,EAAGnE,IAAM+wB,EAAmB/wB,CAAA,EAE/B,MAAO,CAAC,GAAGmxB,EAAYV,GAAM,GAAGe,EAAaf,GAAM,GAAGW,CAAS,CACjE,CAEA,MAAO,CAAA,CACT,EAAG,CAACT,EAAaC,EAAYC,EAAcC,CAAa,CAAC,CAC3D,CAMO,MAAMW,GAAat8B,EAAAA,WACxB,CACE,CACE,YAAAw7B,EACA,WAAAC,EACA,aAAAC,EAAe,EACf,cAAAC,EAAgB,EAChB,SAAAjuB,EACA,aAAA6uB,EAAe,GACf,cAAAC,EAAgB,GAChB,OAAAC,EAAS,CACP,SAAU,WACV,KAAM,OACN,MAAO,QACP,KAAM,MAAA,EAER,KAAAhwB,EAAO,KACP,UAAA1Q,EACA,MAAAqC,EACA,SAAA4O,EAAW,GACX,GAAG7M,CAAA,EAELC,IACG,CACH,MAAMs8B,EAAkBnB,GAAmBC,EAAaC,EAAYC,EAAcC,CAAa,EAEzF/kB,EAAe+lB,GAAiB,CAChC,CAAC3vB,GAAYU,GAAYivB,IAASnB,GAAemB,GAAQ,GAAKA,GAAQlB,GACxE/tB,EAASivB,CAAI,CAEjB,EAEM,CAAE,UAAWt8B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,WACPA,GAAOoQ,CAAI,EACXO,GAAY3Q,GAAO,QAAA,CACrB,CACD,EAED,OAAIo/B,GAAc,EACT,KAIPvvB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,aAAW,wBACV,GAAGH,EAEJ,SAAAgM,EAAAA,KAAC,KAAA,CAAG,UAAW9P,GAAO,KAEnB,SAAA,CAAAmgC,SACE,KAAA,CACC,SAAArwB,EAAAA,KAAC,SAAA,CACC,UAAWvR,EAAKyB,GAAO,KAAMA,GAAO,GAAG,EACvC,QAAS,IAAMua,EAAY,CAAC,EAC5B,SAAU5J,GAAYwuB,IAAgB,EACtC,aAAYiB,EAAO,MACnB,KAAK,SAEL,SAAA,CAAAvwB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,QAAS,SAAA,IAAC,QACjC,OAAA,CAAK,UAAWA,GAAO,QAAU,WAAO,KAAA,CAAM,CAAA,CAAA,CAAA,EAEnD,EAIDkgC,SACE,KAAA,CACC,SAAApwB,EAAAA,KAAC,SAAA,CACC,UAAWvR,EAAKyB,GAAO,KAAMA,GAAO,GAAG,EACvC,QAAS,IAAMua,EAAY4kB,EAAc,CAAC,EAC1C,SAAUxuB,GAAYwuB,IAAgB,EACtC,aAAYiB,EAAO,SACnB,KAAK,SAEL,SAAA,CAAAvwB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,QAAS,SAAA,IAAC,QACjC,OAAA,CAAK,UAAWA,GAAO,QAAU,WAAO,QAAA,CAAS,CAAA,CAAA,CAAA,EAEtD,EAIDqgC,EAAgB,IAAI,CAACE,EAAYxuB,IAC5BwuB,IAAetB,GAEfpvB,EAAAA,IAAC,KAAA,CACC,SAAAA,EAAAA,IAAC,OAAA,CAAK,UAAWtR,EAAKyB,GAAO,KAAMA,GAAO,IAAI,EAAG,SAAA,KAAA,CAAG,CAAA,EAD7C,QAAQ+R,CAAK,EAEtB,QAKD,KAAA,CACC,SAAAlC,EAAAA,IAAC,SAAA,CACC,UAAWtR,EACTyB,GAAO,KACPA,GAAO,KACPugC,IAAepB,GAAen/B,GAAO,MAAA,EAEvC,QAAS,IAAMua,EAAYgmB,CAAoB,EAC/C,SAAA5vB,EACA,aAAY,cAAc4vB,CAAU,GACpC,eAAcA,IAAepB,EAAc,OAAS,OACpD,KAAK,SAEJ,SAAAoB,CAAA,CAAA,GAbIA,CAeT,CAEH,EAGAL,SACE,KAAA,CACC,SAAApwB,EAAAA,KAAC,SAAA,CACC,UAAWvR,EAAKyB,GAAO,KAAMA,GAAO,GAAG,EACvC,QAAS,IAAMua,EAAY4kB,EAAc,CAAC,EAC1C,SAAUxuB,GAAYwuB,IAAgBC,EACtC,aAAYgB,EAAO,KACnB,KAAK,SAEL,SAAA,CAAAvwB,MAAC,OAAA,CAAK,UAAW7P,GAAO,QAAU,WAAO,KAAK,EAC9C6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,QAAS,SAAA,GAAA,CAAC,CAAA,CAAA,CAAA,EAEtC,EAIDmgC,SACE,KAAA,CACC,SAAArwB,EAAAA,KAAC,SAAA,CACC,UAAWvR,EAAKyB,GAAO,KAAMA,GAAO,GAAG,EACvC,QAAS,IAAMua,EAAY6kB,CAAU,EACrC,SAAUzuB,GAAYwuB,IAAgBC,EACtC,aAAYgB,EAAO,KACnB,KAAK,SAEL,SAAA,CAAAvwB,MAAC,OAAA,CAAK,UAAW7P,GAAO,QAAU,WAAO,KAAK,EAC9C6P,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,QAAS,SAAA,GAAA,CAAC,CAAA,CAAA,CAAA,CACpC,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,CAGN,CACF,EAEAigC,GAAW,YAAc,otBCrOnBO,GAAqB3oB,EAAAA,cAAmD,MAAS,EAEvF,SAAS4oB,IAAiB,CACxB,MAAM14B,EAAU2Q,EAAAA,WAAW8nB,EAAkB,EAC7C,GAAI,CAACz4B,EACH,MAAM,IAAI,MAAM,wDAAwD,EAE1E,OAAOA,CACT,CA2DA,MAAM24B,GAAc/8B,EAAAA,WAClB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,KAAAqO,EAAO,KAAM,QAAAD,EAAU,UAAW,aAAA4K,CAAA,EAAgBhX,IAAQ,CACvF,KAAM,CAACkR,EAAQC,CAAS,EAAIvD,EAAAA,SAAS,EAAK,EACpC,CAAC0K,EAAUC,CAAW,EAAI3K,EAAAA,SAA0C,IAAI,EAExEgvB,EAAS7sB,cAAahP,GAAwB,CAClDA,EAAE,eAAA,EACFA,EAAE,gBAAA,EAEFwX,EAAY,CAAE,EAAGxX,EAAE,QAAS,EAAGA,EAAE,QAAS,EAC1CoQ,EAAU,EAAI,EACd6F,GAAA,MAAAA,EAAe,IAGf,SAAS,KAAK,MAAM,SAAW,SAC/B,SAAS,KAAK,MAAM,WAAa,MACnC,EAAG,CAACA,CAAY,CAAC,EAEX6lB,EAAU9sB,EAAAA,YAAY,IAAM,CAChCoB,EAAU,EAAK,EACfoH,EAAY,IAAI,EAChBvB,GAAA,MAAAA,EAAe,IAGf,SAAS,KAAK,MAAM,SAAW,GAC/B,SAAS,KAAK,MAAM,WAAa,EACnC,EAAG,CAACA,CAAY,CAAC,EAGjB5X,EAAAA,UAAU,IAAM,CACd,MAAMmP,EAAiBxN,GAAqB,CACtCA,EAAE,MAAQ,UAAYmQ,GACxB2rB,EAAA,CAEJ,EAEA,GAAI3rB,EACF,gBAAS,iBAAiB,UAAW3C,CAAa,EAC3C,IAAM,SAAS,oBAAoB,UAAWA,CAAa,CAEtE,EAAG,CAAC2C,EAAQ2rB,CAAO,CAAC,EAGpBz9B,EAAAA,UAAU,IACD,IAAM,CACP8R,IACF,SAAS,KAAK,MAAM,SAAW,GAC/B,SAAS,KAAK,MAAM,WAAa,GAErC,EACC,CAACA,CAAM,CAAC,EAEX,MAAMwK,EAAwC,CAC5C,OAAAxK,EACA,SAAAoH,EACA,OAAAskB,EACA,QAAAC,EACA,KAAAxwB,EACA,QAAAD,CAAA,EAII,CAAE,UAAWnM,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,IAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC2wB,GAAmB,SAAnB,CAA4B,MAAO/gB,EAClC,SAAA5P,EAAAA,IAAC,MAAA,CAAI,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAClD,SAAAJ,EACH,EACF,CAEJ,CACF,EAgCMg9B,GAAqBl9B,EAAAA,WACzB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,QAAAoY,EAAU,EAAA,EAASpW,IAAQ,CACxD,KAAM,CAAE,OAAA48B,CAAA,EAAWF,GAAA,EAGb,CAAE,UAAWz8B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAED,OAAIma,GAAWjW,EAAM,eAAeL,CAAQ,EACnCK,EAAM,aAAaL,EAAiH,CACzI,cAAe88B,EACf,IAAA58B,CAAA,CACD,EAID8L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,cAAe08B,EAEd,SAAA98B,CAAA,CAAA,CAGP,CACF,EAkEMi9B,GAAqBn9B,EAAAA,WACzB,CAAC,CACC,SAAAE,EACA,UAAAnE,EACA,MAAAqc,EAAQ,QACR,WAAAC,EAAa,EACb,YAAAC,EAAc,EACd,iBAAA8kB,EAAmB,EACnB,gBAAAC,EAAkB,GAClB,UAAAC,EACA,KAAMC,EACN,QAASC,EACT,GAAGC,CAAA,EACFr9B,IAAQ,CACT,KAAM,CAAE,OAAAkR,EAAQ,SAAAoH,EAAU,QAAAukB,EAAS,KAAMS,EAAa,QAASC,CAAA,EAAmBb,GAAA,EAC5ErwB,EAAO8wB,GAAYG,EACnBlxB,EAAUgxB,GAAeG,EACzBllB,EAAaja,EAAAA,OAAuB,IAAI,EAGxC,CAAE,UAAW6B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAO0hC,EAAK,MACZ,iBAAkBphC,GAAO,OAAA,CAC1B,EAGKuhC,EAAcztB,cAAavF,GAAgC,CAC3D6N,EAAW,UAAY7N,IACxB6N,EAA6D,QAAU7N,GAEtE,OAAOxK,GAAQ,WACjBA,EAAIwK,CAAI,EACCxK,IACRA,EAAsD,QAAUwK,EAErE,EAAG,CAACxK,CAAG,CAAC,EAKF,CAACy9B,EAAkBC,CAAmB,EAAI9vB,EAAAA,SAAS0K,CAAQ,EA8CjE,GA5CAlZ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACkZ,GAAY,CAACD,EAAW,SAAW,CAAC4kB,EAAiB,CACxDS,EAAoBplB,CAAQ,EAC5B,MACF,CAEA,MAAMqY,EAAOtY,EAAW,QAAQ,sBAAA,EAC1BY,EAAgB,OAAO,WACvBC,EAAiB,OAAO,YAE9B,IAAI3T,EAAI+S,EAAS,EAAIL,EACjBkM,EAAI7L,EAAS,EAAIL,EAmBrB,OAhBI1S,EAAIorB,EAAK,MAAQ1X,EAAgB+jB,IACnCz3B,EAAI+S,EAAS,EAAIqY,EAAK,MAAQ1Y,GAE5B1S,EAAIy3B,IACNz3B,EAAIy3B,GAIF7Y,EAAIwM,EAAK,OAASzX,EAAiB8jB,IACrC7Y,EAAI7L,EAAS,EAAIqY,EAAK,OAAS1Y,GAE7BkM,EAAI6Y,IACN7Y,EAAI6Y,GAIEhlB,EAAA,CACN,IAAK,SACHzS,EAAI+S,EAAS,EAAIqY,EAAK,MAAQ,EAC9B,MACF,IAAK,MACHprB,EAAI+S,EAAS,EAAIqY,EAAK,MACtB,KAAA,CAGJprB,GAAK2S,EAELwlB,EAAoB,CAAE,EAAAn4B,EAAG,EAAA4e,EAAG,CAC9B,EAAG,CAAC7L,EAAUN,EAAOE,EAAaD,EAAY+kB,EAAkBC,CAAe,CAAC,EAE5E,CAAC/rB,GAAU,CAACusB,EAAkB,OAAO,KAEzC,MAAM3kB,EACJ/M,EAAAA,KAAAiZ,EAAAA,SAAA,CAEE,SAAA,CAAAlZ,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,SAClB,QAAS4gC,EACT,cAAgB97B,GAAMA,EAAE,eAAA,EACxB,MAAO,CACL,SAAU,QACV,MAAO,EACP,OAAQ,KACR,OAAQ,UACR,cAAe,MAAA,CACjB,CAAA,EAEF+K,EAAAA,IAAC,MAAA,CACC,IAAK0xB,EACL,UAAWv9B,EACX,YAAWoM,EACX,eAAcD,EACd,MAAO,CACL,SAAU,QACV,KAAM,GAAGqxB,EAAiB,CAAC,KAC3B,IAAK,GAAGA,EAAiB,CAAC,KAC1B,OAAQ,KACR,GAAGv9B,CAAA,EAEL,KAAK,OACL,mBAAiB,WACjB,aAAcm9B,EAAK,aACnB,aAAcA,EAAK,aAElB,SAAAv9B,CAAA,CAAA,CACH,EACF,EAGF,OAAOilB,GAAAA,aAAajM,EAASokB,GAAa,SAAS,IAAI,CACzD,CACF,EAqEMS,GAAkB/9B,EAAAA,WACtB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,SAAA4O,EAAW,GAAO,YAAAikB,EAAc,GAAO,SAAAjW,EAAU,cAAAgjB,EAAgB,GAAM,KAAAxf,EAAM,SAAA0S,EAAU,QAAA+M,EAAS,OAAAC,CAAA,EAAU99B,IAAQ,CAC/I,KAAM,CAAE,QAAA68B,CAAA,EAAYH,GAAA,EACd,CAACzF,EAAe8G,CAAgB,EAAInwB,EAAAA,SAAS,EAAK,EAGlD,CAAE,UAAW3N,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,KACP2Q,GAAY3Q,GAAO,aACnB40B,GAAe50B,GAAO,eAAA,CACxB,CACD,EAEKua,EAAezV,GAAwB,CAE3C,GAAI6L,EAAU,CACZ7L,EAAE,eAAA,EACF,MACF,CAEAA,EAAE,gBAAA,EACF6Z,GAAA,MAAAA,EAAW7Z,GAEP68B,GAAiB,CAAC78B,EAAE,kBACtB87B,EAAA,CAEJ,EAEMtuB,EAAiBxN,GAA2B,CAC5C6L,IAEA7L,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjCA,EAAE,eAAA,EACFyV,EAAYzV,CAAgC,EAEhD,EAEA,OACEgL,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,WACL,SAAU0M,EAAW,GAAK,EAC1B,gBAAeA,EACf,eAAcixB,EACd,mBAAkB5G,EAClB,gBAAerqB,EACf,mBAAkBikB,EAClB,QAASra,EACT,UAAWjI,EACX,aAAc,IAAMwvB,EAAiB,EAAI,EACzC,aAAc,IAAMA,EAAiB,EAAK,EAExC,SAAA,EAAAF,GAAWC,UACV,OAAA,CAAK,UAAW7hC,GAAO,UACrB,SAAA4hC,EAAU,IAAM,GAAA,CACnB,EAEDzf,GAAQtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAO,SAAAmiB,EAAK,EAC7CtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,SAAW,SAAA6D,EAAS,EAC3CgxB,GAAYhlB,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,SAAW,SAAA60B,CAAA,CAAS,CAAA,CAAA,CAAA,CAG/D,CACF,EAoBMkN,GAAuBp+B,EAAAA,WAC3B,CAAC,CAAE,UAAAjE,EAAW,MAAAqC,CAAA,EAASgC,IAAQ,CAE7B,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,SAAA,CAC1B,EACD,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,YACL,mBAAiB,YAAA,CAAA,CAGvB,CACF,EA0BM+9B,GAAmBr+B,EAAAA,WACvB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,CAAA,EAASgC,IAAQ,CAEvC,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EACD,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,eAEJ,SAAAJ,CAAA,CAAA,CAGP,CACF,EAoCMo+B,GAAiBt+B,EAAAA,WACrB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,KAAM+Y,EAAgB,aAAAC,CAAA,EAAgBhX,IAAQ,CAC3E,MAAMm+B,EAAgBzB,GAAA,EAChB,CAACvlB,EAAcC,CAAe,EAAIxJ,EAAAA,SAAS,EAAK,EAChD,CAAC0K,EAAUC,CAAW,EAAI3K,EAAAA,SAA0C,IAAI,EACxEsD,EAAS6F,IAAmB,OAAYA,EAAiBI,EACzDinB,EAAkBhgC,EAAAA,OAAA,EAClBigC,EAAkBjgC,EAAAA,OAAA,EAGlB,CAAE,UAAW6B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB,MAAA,CACnB,EAEK+wB,EAAoBtX,GAAqB,CACzCV,IAAmB,QACrBK,EAAgBK,CAAO,EAEzBT,GAAA,MAAAA,EAAeS,EACjB,EAEM6mB,EAAcv9B,GAAwB,CAC1C,aAAas9B,EAAgB,OAAO,EACpC,MAAMp3B,EAAUlG,EAAE,cAClBq9B,EAAgB,QAAU,WAAW,IAAM,CACzC,MAAMzN,EAAO1pB,EAAQ,sBAAA,EACrBsR,EAAY,CAAE,EAAGoY,EAAK,MAAQ,EAAG,EAAGA,EAAK,IAAM,EAAG,EAClD5B,EAAiB,EAAI,CACvB,EAAG,GAAG,CACR,EAEMwP,EAAiB,IAAM,CAE3B,aAAaF,EAAgB,OAAO,CACtC,EAEMG,EAAc,IAAM,CACxB,aAAaJ,EAAgB,OAAO,EACpCC,EAAgB,QAAU,WAAW,IAAM,CACzCtP,EAAiB,EAAK,CACxB,EAAG,GAAG,CACR,EAEA3vB,OAAAA,EAAAA,UAAU,IACD,IAAM,CACX,aAAag/B,EAAgB,OAAO,EACpC,aAAaC,EAAgB,OAAO,CACtC,EACC,CAAA,CAAE,EAGHvyB,MAAC2wB,GAAmB,SAAnB,CAA4B,MAAO,CAClC,OAAAvrB,EACA,SAAAoH,EACA,OAAQgmB,EACR,QAASE,EACT,WAAYD,EACZ,KAAMJ,EAAc,KACpB,QAASA,EAAc,OAAA,EAEvB,SAAAryB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,aAAc,IAAM,CAClB,aAAam+B,EAAgB,OAAO,EACpC,aAAaD,EAAgB,OAAO,CACtC,EACA,aAAc,IAAMI,EAAA,EAEnB,SAAA1+B,CAAA,CAAA,EAEL,CAEJ,CACF,EAqCM2+B,GAAwB7+B,EAAAA,WAC5B,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,SAAA4O,EAAW,GAAO,KAAAwR,CAAA,EAAQpe,IAAQ,CAC/D,KAAM,CAAE,OAAA48B,EAAQ,QAAAC,EAAS,OAAA3rB,CAAA,EAAWwrB,GAAA,EAC9B,CAACzF,EAAe8G,CAAgB,EAAInwB,EAAAA,SAAS,EAAK,EAGlD,CAAE,UAAW3N,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,WACP2Q,GAAY3Q,GAAO,aACnBiV,GAAUjV,GAAO,cAAA,CACnB,CACD,EAEKyc,EAAoB3X,GAAwB,CAChDg9B,EAAiB,EAAI,EAChBnxB,GACHgwB,EAAO77B,CAAC,CAEZ,EAEM4X,EAAmB,IAAM,CAC7BolB,EAAiB,EAAK,EAEtBlB,EAAA,CACF,EAEA,OACE9wB,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,WACL,gBAAc,OACd,gBAAegR,EACf,gBAAetE,EACf,mBAAkBqqB,EAClB,gBAAerqB,EACf,aAAYsE,EAAS,OAAS,SAC9B,aAAcwH,EACd,aAAcC,EAEb,SAAA,CAAAyF,GAAQtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,KAAO,SAAAmiB,EAAK,EAC7CtS,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,SAAW,SAAA6D,EAAS,QAC3C,OAAA,CAAK,UAAW7D,GAAO,eAAgB,cAAY,OAAO,SAAA,GAAA,CAAC,CAAA,CAAA,CAAA,CAGlE,CACF,EAqBMyiC,GAAwB9+B,EAAAA,WAC5B,CAAC,CAAE,UAAAjE,EAAW,aAAAgjC,EAAc,aAAAC,EAAc,GAAG7+B,CAAA,EAASC,IAAQ,CAC5D,MAAMgE,EAAU04B,GAAA,EACVmC,EAAazgC,EAAAA,OAAuB,IAAI,EAExC0gC,EAAiB/uB,cAAavF,GAAgC,CAC9Dq0B,EAAW,UAAYr0B,IACxBq0B,EAA6D,QAAUr0B,GAEtE,OAAOxK,GAAQ,WACjBA,EAAIwK,CAAI,EACCxK,IACRA,EAAsD,QAAUwK,EAErE,EAAG,CAACxK,CAAG,CAAC,EAEF0Y,EAAmB,IAAM,QAG7BzK,EAAAjK,EAAQ,aAAR,MAAAiK,EAAA,KAAAjK,GACA26B,GAAA,MAAAA,GACF,EAEMhmB,EAAmB,IAAM,CAE7BimB,GAAA,MAAAA,IACA56B,EAAQ,QAAA,CACV,EAGA,OACE8H,EAAAA,IAACixB,GAAA,CACE,GAAGh9B,EACJ,IAAK++B,EACL,UAAWtkC,EAAKyB,GAAO,WAAYN,CAAS,EAC5C,aAAc+c,EACd,aAAcC,CAAA,CAAA,CAGpB,CACF,EAGAgkB,GAAY,YAAc,cAC1BG,GAAmB,YAAc,sBACjCC,GAAmB,YAAc,sBACjCY,GAAgB,YAAc,mBAC9BK,GAAqB,YAAc,wBACnCC,GAAiB,YAAc,oBAC/BC,GAAe,YAAc,kBAC7BO,GAAsB,YAAc,yBACpCC,GAAsB,YAAc,yBAG7B,MAAMK,GAAuB,OAAO,OAAOpC,GAAa,CAC7D,QAASG,GACT,QAASC,GACT,KAAMY,GACN,UAAWK,GACX,MAAOC,GACP,IAAKC,GACL,WAAYO,GACZ,WAAYC,EACd,CAAC,igCCr2BKM,GAAelrB,EAAAA,cAAwC,IAAI,EAE3DmrB,GAAW,IAAM,CACrB,MAAMj7B,EAAU2Q,EAAAA,WAAWqqB,EAAY,EACvC,GAAI,CAACh7B,EACH,MAAM,IAAI,MAAM,8CAA8C,EAEhE,OAAOA,CACT,EAEMk7B,GAAQ/+B,EAAM,WAClB,CAAC,CACC,KAAAkX,EACA,YAAAP,EAAc,GACd,aAAAE,EACA,UAAArb,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EACFC,IAAQ,CACT,KAAM,CAACkR,EAAQC,CAAS,EAAIvD,EAAAA,SAASyJ,GAAQP,CAAW,EAGlD,CAAE,UAAW7W,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,CAAA,CACD,EAGDoB,EAAAA,UAAU,IAAM,CACViY,IAAS,QACXlG,EAAUkG,CAAI,CAElB,EAAG,CAACA,CAAI,CAAC,EAET,MAAM0X,EAAmBhf,cAAa0H,GAAqB,CACzDtG,EAAUsG,CAAO,EACjBT,GAAA,MAAAA,EAAeS,EACjB,EAAG,CAACT,CAAY,CAAC,EAEX0E,EAAkC,CACtC,KAAMxK,EACN,QAAS6d,CAAA,EAGX,aACGiQ,GAAa,SAAb,CAAsB,MAAOtjB,EAC5B,SAAA5P,EAAAA,IAAC,MAAA,CAAI,IAAA9L,EAAU,UAAWC,EAAoB,MAAOC,EAAiB,GAAGH,EACtE,SAAAD,EACH,EACF,CAEJ,CACF,EA4BMq/B,GAAeh/B,EAAM,WACzB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,QAAAoY,EAAU,GAAO,GAAGrW,CAAA,EAASC,IAAQ,CAClE,KAAM,CAAE,QAAAwX,CAAA,EAAYynB,GAAA,EAGd,CAAE,UAAWh/B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,OAAA,CAC1B,EAED,OAAIma,EACKjW,EAAM,aAAaL,EAAgC,CACxD,QAAS,IAAM0X,EAAQ,EAAI,EAC3B,UAAWvX,EACX,MAAOC,EACP,GAAGH,CAAA,CACJ,EAID+L,EAAAA,IAAC,SAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,QAAS,IAAMsX,EAAQ,EAAI,EAC1B,GAAGzX,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAwFMs/B,GAAej/B,EAAM,WACzB,CAAC,CACC,SAAAL,EACA,UAAAnE,EACA,MAAAqC,EACA,KAAA+Z,EAAO,QACP,KAAA1L,EAAO,KACP,QAAAD,EAAU,UACV,YAAA8iB,EAAc,GACd,oBAAAC,EAAsB,GACtB,cAAA/J,EAAgB,GAChB,UAAA8X,EACA,gBAAAmC,EACA,qBAAAC,EACA,kBAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,GAAG1/B,CAAA,EACFC,IAAQ,CACT,KAAM,CAAE,KAAAqX,EAAM,QAAAG,CAAA,EAAYynB,GAAA,EACpB5mB,EAAaja,EAAAA,OAAuB,IAAI,EACxCshC,EAAathC,EAAAA,OAAuB,IAAI,EAGxC,CAAE,UAAW6B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,QACPA,GAAO,QAAQ8b,CAAI,EAAE,EACrB9b,GAAO,QAAQoQ,CAAI,EAAE,EACrBpQ,GAAO,WAAWmQ,CAAO,EAAE,CAAA,CAC7B,CACD,EAEKuzB,EAAmB5vB,cAAavF,GAAgC,CAChE6N,GAAcA,EAAW,UAAY7N,IACtC6N,EAA6D,QAAU7N,GAEtE,OAAOxK,GAAQ,WACjBA,EAAIwK,CAAI,EACCxK,IACRA,EAAsD,QAAUwK,EAErE,EAAG,CAACxK,CAAG,CAAC,EA4FR,GAzFAZ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACiY,GAAQ,CAAC+N,EAAe,OAE7B,MAAM7W,EAAiBuD,GAAyB,CAC1CA,EAAM,MAAQ,WAChButB,GAAA,MAAAA,EAAkBvtB,GACbA,EAAM,kBACT0F,EAAQ,EAAK,EAGnB,EAEA,gBAAS,iBAAiB,UAAWjJ,CAAa,EAC3C,IAAM,SAAS,oBAAoB,UAAWA,CAAa,CACpE,EAAG,CAAC8I,EAAM+N,EAAeia,EAAiB7nB,CAAO,CAAC,EAGlDpY,EAAAA,UAAU,IAAM,CACd,GAAI,CAACiY,EAAM,OAEX,MAAMgY,EAAgB,OAAO,iBAAiB,SAAS,IAAI,EAAE,SAC7D,gBAAS,KAAK,MAAM,SAAW,SAC/B,SAAS,KAAK,MAAM,WAAa,OAE1B,IAAM,CACX,SAAS,KAAK,MAAM,SAAWA,EAC/B,SAAS,KAAK,MAAM,WAAa,EACnC,CACF,EAAG,CAAChY,CAAI,CAAC,EAGTjY,EAAAA,UAAU,IAAM,CACd,GAAI,CAACiY,EAAM,OAEX,MAAMuoB,EAAwB,SAAS,cACjC9mB,EAAUT,EAAW,QAE3B,GAAIS,EAAS,CAKX,MAAM+mB,EAHoB/mB,EAAQ,iBAChC,0EAAA,EAEuC,CAAC,EAEtC+mB,EACFA,EAAe,MAAA,EAEf/mB,EAAQ,MAAA,EAGV,MAAMgnB,EAAa,IAAI,MAAM,OAAO,EACpCN,GAAA,MAAAA,EAAkBM,EACpB,CAEA,MAAO,IAAM,CACX,GAAIF,EAAuB,CACzBA,EAAsB,MAAA,EACtB,MAAME,EAAa,IAAI,MAAM,OAAO,EACpCL,GAAA,MAAAA,EAAmBK,EACrB,CACF,CACF,EAAG,CAACzoB,EAAMmoB,EAAiBC,CAAgB,CAAC,EAG5CrgC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACiY,GAAQ,CAAC8X,EAAqB,OAEnC,MAAM4Q,EAAqBjuB,GAAwB,CACjD,MAAM6T,EAAS7T,EAAM,OACfkuB,EAAUN,EAAW,QACrB5mB,EAAUT,EAAW,QAEvB2nB,GAAWlnB,GAAW6M,GAEpBqa,EAAQ,SAASra,CAAM,GAAK,CAAC7M,EAAQ,SAAS6M,CAAM,IACtD2Z,GAAA,MAAAA,EAAuBxtB,GACvBytB,GAAA,MAAAA,EAAoBztB,GAEfA,EAAM,kBACT0F,EAAQ,EAAK,EAIrB,EAEA,gBAAS,iBAAiB,cAAeuoB,CAAiB,EACnD,IAAM,SAAS,oBAAoB,cAAeA,CAAiB,CAC5E,EAAG,CAAC1oB,EAAM8X,EAAqBmQ,EAAsBC,EAAmB/nB,CAAO,CAAC,EAE5E,CAACH,EAAM,OAAO,KAElB,MAAMyB,EACJ/M,EAAAA,KAAAiZ,EAAAA,SAAA,CACG,SAAA,CAAAkK,GACCpjB,EAAAA,IAAC,MAAA,CACC,IAAK4zB,EACL,UAAWzjC,GAAO,QAClB,YAAW8b,EACX,eAAc3L,CAAA,CAAA,EAGlBN,EAAAA,IAAC,MAAA,CACC,IAAK6zB,EACL,UAAW1/B,EACX,MAAOC,EACP,KAAK,SACL,aAAW,OACX,SAAU,GACV,YAAW6X,EACX,YAAW1L,EACX,eAAcD,EACd,aAAYiL,EAAO,OAAS,SAC3B,GAAGtX,EAEH,SAAAD,CAAA,CAAA,CACH,EACF,EAGF,OAAOilB,GAAAA,aAAajM,EAASokB,GAAa,SAAS,IAAI,CACzD,CACF,EAsBM+C,GAAc9/B,EAAM,WACxB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAsBMogC,GAAa//B,EAAM,WACvB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAsBMqgC,GAAmBhgC,EAAM,WAC7B,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,WAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,IAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAsBMsgC,GAAcjgC,EAAM,WACxB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,MAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA4BMugC,GAAalgC,EAAM,WACvB,CAAC,CAAE,SAAAL,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,QAAAoY,EAAU,GAAO,GAAGrW,CAAA,EAASC,IAAQ,CAClE,KAAM,CAAE,QAAAwX,CAAA,EAAYynB,GAAA,EAGd,CAAE,UAAWh/B,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,KAAA,CAC1B,EAED,OAAIma,EACKjW,EAAM,aAAaL,EAAgC,CACxD,QAAS,IAAM0X,EAAQ,EAAK,EAC5B,UAAWvX,EACX,MAAOC,EACP,GAAGH,CAAA,CACJ,EAID+L,EAAAA,IAAC,SAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,QAAS,IAAMsX,EAAQ,EAAK,EAC5B,aAAW,cACV,GAAGzX,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAGAo/B,GAAM,YAAc,QACpBC,GAAa,YAAc,gBAC3BC,GAAa,YAAc,gBAC3Ba,GAAY,YAAc,eAC1BC,GAAW,YAAc,cACzBC,GAAiB,YAAc,oBAC/BC,GAAY,YAAc,eAC1BC,GAAW,YAAc,cAGlB,MAAMC,GAAiB,OAAO,OAAOpB,GAAO,CACjD,QAASC,GACT,QAASC,GACT,OAAQa,GACR,MAAOC,GACP,YAAaC,GACb,OAAQC,GACR,MAAOC,EACT,CAAC,k8BCxkBKE,GAAkBzsB,EAAAA,cAA2C,IAAI,EAEjE0sB,GAAc,IAAM,CACxB,MAAMx8B,EAAU2Q,EAAAA,WAAW4rB,EAAe,EAC1C,GAAI,CAACv8B,EACH,MAAM,IAAI,MAAM,oDAAoD,EAEtE,OAAOA,CACT,EAsBMy8B,GAAW7gC,EAAAA,WACf,CAAC,CACC,YAAAid,EAAc,aACd,SAAA6jB,EAAW,GACX,iBAAAC,EAAmB,IACnB,KAAAC,EAAO,GACP,MAAAjmC,EACA,aAAA4U,EAAe,EACf,cAAAoD,EACA,KAAAtG,EAAO,KACP,QAAAD,EAAU,UACV,SAAAtM,EACA,UAAAnE,EACA,MAAAqC,EACA,GAAG+B,CAAA,EACFC,IAAQ,CACT,KAAM,CAAC6gC,EAAcC,CAAoB,EAAIlzB,EAAAA,SAASjT,GAAS4U,CAAY,EACrE,CAACwxB,EAAYC,CAAa,EAAIpzB,EAAAA,SAAS,CAAC,EAExCqzB,EAAkBlxB,cAAa/B,GAAkB,CACrD,GAAI4yB,EAAM,CACR,MAAMM,GAAYlzB,EAAQ+yB,GAAcA,EACxCD,EAAqBI,CAAQ,EAC7BvuB,GAAA,MAAAA,EAAgBuuB,EAClB,KAAO,CACL,MAAMA,EAAW,KAAK,IAAI,EAAG,KAAK,IAAIlzB,EAAO+yB,EAAa,CAAC,CAAC,EAC5DD,EAAqBI,CAAQ,EAC7BvuB,GAAA,MAAAA,EAAgBuuB,EAClB,CACF,EAAG,CAACN,EAAMG,EAAYpuB,CAAa,CAAC,EAEpCvT,EAAAA,UAAU,IAAM,CACVzE,IAAU,QACZmmC,EAAqBnmC,CAAK,CAE9B,EAAG,CAACA,CAAK,CAAC,EAEVyE,EAAAA,UAAU,IAAM,CACd,GAAIshC,GAAYK,EAAa,EAAG,CAC9B,MAAMI,EAAW,YAAY,IAAM,CACjCF,EAAgBJ,EAAe,CAAC,CAClC,EAAGF,CAAgB,EACnB,MAAO,IAAM,cAAcQ,CAAQ,CACrC,CACF,EAAG,CAACT,EAAUC,EAAkBE,EAAcI,EAAiBF,CAAU,CAAC,EAG1E,KAAM,CAAE,UAAW9gC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,SACPA,GAAO,YAAYoQ,CAAI,EAAE,EACzBpQ,GAAO,YAAYmQ,CAAO,EAAE,CAAA,CAC9B,CACD,EAED,OACEN,EAAAA,IAACy0B,GAAgB,SAAhB,CACC,MAAO,CACL,aAAAM,EACA,gBAAAI,EACA,YAAApkB,EACA,WAAAkkB,EACA,cAAAC,EACA,KAAAJ,EACA,SAAAF,EACA,iBAAAC,EACA,KAAAt0B,EACA,QAAAD,CAAA,EAGF,SAAAN,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,mBAAkB2c,EAClB,YAAWxQ,EACX,eAAcD,EACb,GAAGrM,EAEH,SAAAD,CAAA,CAAA,CACH,CAAA,CAGN,CACF,EAqBMshC,GAAkBxhC,EAAAA,WACtB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,CAAA,EAAaqE,IAAQ,CAChC,KAAM,CAAE,aAAA6gC,EAAc,YAAAhkB,EAAa,cAAAmkB,CAAA,EAAkBR,GAAA,EAC/CnoB,EAAaja,EAAAA,OAAuB,IAAI,EAE9CgB,EAAAA,UAAU,IAAM,CACd,MAAM+b,EAAQhb,EAAM,SAAS,MAAML,CAAQ,EAC3CkhC,EAAc7lB,CAAK,CACrB,EAAG,CAACrb,EAAUkhC,CAAa,CAAC,EAE5B,MAAMvnB,EAAYoD,IAAgB,aAC9B,eAAegkB,EAAe,GAAG,KACjC,eAAeA,EAAe,GAAG,KAErC,OACE/0B,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,gBAAiBN,CAAS,EAEjD,SAAAmQ,EAAAA,IAAC,MAAA,CACC,IAAKuM,EACL,UAAWpc,GAAO,cAClB,MAAO,CAAE,UAAAwd,CAAA,EAER,WAAM,SAAS,IAAI3Z,EAAU,CAAC4K,EAAOsD,IACpClC,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,aAClB,cAAa+R,IAAU6yB,EAGtB,SAAAn2B,CAAA,EAFIsD,CAAA,CAIR,CAAA,CAAA,CACH,CAAA,CAGN,CACF,EAqBMqzB,GAAmBzhC,EAAAA,WACvB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,CAAA,EAAaqE,IAEtB8L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,iBAAkBN,CAAS,EAEjD,SAAAmE,CAAA,CAAA,CAIT,EAgBMwhC,GAAmB1hC,EAAAA,WACvB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,QAAAwa,EAAS,GAAGpW,CAAA,EAASC,IAAQ,CACnD,KAAM,CAAE,aAAA6gC,EAAc,gBAAAI,EAAiB,KAAAL,CAAA,EAASJ,GAAA,EAC1C5qB,EAAa,CAACgrB,GAAQC,IAAiB,EAEvCrqB,EAAezV,GAA2C,CAC9DoV,GAAA,MAAAA,EAAUpV,GACLA,EAAE,kBACLkgC,EAAgBJ,EAAe,CAAC,CAEpC,EAEA,OACE/0B,EAAAA,IAAC,SAAA,CACC,IAAA9L,EACA,KAAK,SACL,UAAWxF,EAAKyB,GAAO,eAAgBA,GAAO,iBAAkBN,CAAS,EACzE,QAAS6a,EACT,SAAUZ,EACV,aAAW,iBACV,GAAG7V,EAEH,YACC+L,MAAC,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,IAC5F,eAAC,WAAA,CAAS,OAAO,kBAAkB,CAAA,CACrC,CAAA,CAAA,CAIR,CACF,EAgBMy1B,GAAe3hC,EAAAA,WACnB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,QAAAwa,EAAS,GAAGpW,CAAA,EAASC,IAAQ,CACnD,KAAM,CAAE,aAAA6gC,EAAc,gBAAAI,EAAiB,WAAAF,EAAY,KAAAH,CAAA,EAASJ,GAAA,EACtD5qB,EAAa,CAACgrB,GAAQC,IAAiBE,EAAa,EAEpDvqB,EAAezV,GAA2C,CAC9DoV,GAAA,MAAAA,EAAUpV,GACLA,EAAE,kBACLkgC,EAAgBJ,EAAe,CAAC,CAEpC,EAEA,OACE/0B,EAAAA,IAAC,SAAA,CACC,IAAA9L,EACA,KAAK,SACL,UAAWxF,EAAKyB,GAAO,eAAgBA,GAAO,aAAcN,CAAS,EACrE,QAAS6a,EACT,SAAUZ,EACV,aAAW,aACV,GAAG7V,EAEH,YACC+L,MAAC,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,IAC5F,eAAC,WAAA,CAAS,OAAO,iBAAiB,CAAA,CACpC,CAAA,CAAA,CAIR,CACF,EAqBM01B,GAAqB5hC,EAAAA,WACzB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,CAAA,EAAaqE,IAAQ,CAChC,KAAM,CAAE,aAAA6gC,EAAc,gBAAAI,EAAiB,WAAAF,CAAA,EAAeP,GAAA,EAEtD,OAAI1gC,EAEAgM,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,mBAAoBN,CAAS,EAEnD,SAAAmE,CAAA,CAAA,EAMLgM,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWxF,EAAKyB,GAAO,mBAAoBN,CAAS,EAEnD,SAAA,MAAM,KAAK,CAAE,OAAQolC,EAAY,EAAE,IAAI,CAACnyB,EAAGZ,IAC1ClC,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,UAAWtR,EACTyB,GAAO,kBACP+R,IAAU6yB,GAAgB5kC,GAAO,uBAAA,EAEnC,QAAS,IAAMglC,EAAgBjzB,CAAK,EACpC,aAAY,eAAeA,EAAQ,CAAC,EAAA,EAP/BA,CAAA,CASR,CAAA,CAAA,CAGP,CACF,EAGAyyB,GAAS,YAAc,WACvBW,GAAgB,YAAc,kBAC9BC,GAAiB,YAAc,mBAC/BC,GAAiB,YAAc,mBAC/BC,GAAa,YAAc,eAC3BC,GAAmB,YAAc,qBAGjC,MAAMC,GAAoB,OAAO,OAAOhB,GAAU,CAChD,QAASW,GACT,SAAUC,GACV,SAAUC,GACV,KAAMC,GACN,WAAYC,EACd,CAAC,shCCrYKE,GAAe5tB,EAAAA,cAAwC,IAAI,EAE3D6tB,GAAW,IAAM,CACrB,MAAM39B,EAAU2Q,EAAAA,WAAW+sB,EAAY,EACvC,GAAI,CAAC19B,EACH,MAAM,IAAI,MAAM,8CAA8C,EAEhE,OAAOA,CACT,EAsBM49B,GAAQhiC,EAAAA,WACZ,CAAC,CACC,QAAAwM,EAAU,UACV,KAAAC,EAAO,KACP,WAAAw1B,EAAa,GACb,WAAAC,EAAa,GACb,SAAAvK,EAAW,GACX,YAAAwK,EAAc,OACd,OAAAvf,EACA,SAAA1iB,EACA,UAAAnE,EACA,MAAAqC,EACA,GAAG+B,CAAA,EACFC,IAAQ,CAET,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAO,SAASoQ,CAAI,EAAE,EACtBpQ,GAAO,SAASmQ,CAAO,EAAE,EACzB,CAACy1B,GAAc5lC,GAAO,SACtB,CAAC6lC,GAAc7lC,GAAO,QAAA,CACxB,CACD,EAEK+lC,EAAkC,CACtC,GAAG9hC,EACH,OAAAsiB,EACA,YAAcA,EAAuB,OAAduf,CAAc,EAGvC,OACEj2B,MAAC41B,GAAa,SAAb,CAAsB,MAAO,CAAE,QAAAt1B,EAAS,KAAAC,EAAM,SAAAkrB,GAC7C,SAAAzrB,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAO+hC,EACP,eAAc51B,EACd,YAAWC,EACX,KAAK,MACL,aAAW,kBACV,GAAGtM,EAEH,SAAAD,CAAA,CAAA,EAEL,CAEJ,CACF,EA0BMmiC,GAAcriC,EAAAA,WAClB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,WAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA0BMoiC,GAAatiC,EAAAA,WACjB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,UAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA0BMqiC,GAAgBviC,EAAAA,WACpB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,aAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,IAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA0BMsiC,GAAexiC,EAAAA,WACnB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CACjD,KAAM,CAAE,SAAAu3B,CAAA,EAAaoK,GAAA,EAGf,CAAE,UAAW1hC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,YAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEJ,SAAAgM,EAAAA,KAAC,MAAA,CAAI,UAAW9P,GAAO,aACpB,SAAA,CAAAs7B,SAAa,MAAA,CAAI,UAAWt7B,GAAO,UAAW,cAAY,OAAO,EAClE6P,EAAAA,IAAC,MAAA,CAAI,UAAW7P,GAAO,eACpB,SAAA6D,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,CAGN,CACF,EAgCMuiC,GAAcziC,EAAAA,WAClB,CAAC,CAAE,SAAA0Y,EAAW,SAAU,SAAAxY,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEtE,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,YACPA,GAAO,UAAUqc,CAAQ,EAAE,CAAA,CAC7B,CACD,EAED,OACExM,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACP,KAAK,QACL,aAAW,eACV,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EA0BMwiC,GAAc1iC,EAAAA,WAClB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAW,MAAAqC,EAAO,GAAG+B,CAAA,EAASC,IAAQ,CAEjD,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,WAAA,CAC1B,EAED,OACE6P,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAGA8hC,GAAM,YAAc,QACpBK,GAAY,YAAc,cAC1BC,GAAW,YAAc,aACzBC,GAAc,YAAc,gBAC5BC,GAAa,YAAc,eAC3BC,GAAY,YAAc,cAC1BC,GAAY,YAAc,cAG1B,MAAMC,GAAiB,OAAO,OAAOX,GAAO,CAC1C,OAAQK,GACR,MAAOC,GACP,SAAUC,GACV,QAASC,GACT,OAAQC,GACR,OAAQC,EACV,CAAC,00BC9XYE,GAAa5iC,EAAAA,WACxB,CACE,CACE,SAAAE,EACA,UAAAnE,EACA,OAAA6mB,EACA,UAAApS,EACA,MAAAhB,EACA,WAAAqzB,EAAa,GACb,SAAAhP,EAAW,GACX,cAAAiP,EAAgB,KAChB,QAAAt2B,EAAU,UACV,SAAAu2B,EAAW,GACX,WAAAd,EAAa,GACb,MAAA7jC,EACA,SAAA4kC,EACA,GAAG7iC,CAAA,EAELC,IACG,CACH,MAAM6iC,EAAYzkC,EAAAA,OAAuB,IAAI,EACvC,CAAC0kC,EAAaC,CAAc,EAAIn1B,EAAAA,SAAS,EAAK,EAC9C,CAACo1B,EAAuBC,CAAwB,EAAIr1B,EAAAA,SAAS,EAAK,EAClE,CAACs1B,EAAyBC,CAA0B,EAAIv1B,EAAAA,SAAS,EAAK,EACtE,CAACw1B,EAAqBC,CAAsB,EAAIz1B,EAAAA,SAAS,CAAC,EAC1D,CAAC01B,EAAsBC,CAAuB,EAAI31B,EAAAA,SAAS,CAAC,EAC5D,CAAC41B,EAAkBC,CAAmB,EAAI71B,EAAAA,SAAS,CAAC,EACpD,CAAC81B,EAAqBC,CAAsB,EAAI/1B,EAAAA,SAAS,CAAC,EAG1Dg2B,EAAmBppC,EACvByB,GAAO,WACPA,GAAOmQ,CAAO,EACdnQ,GAAO,QAAQymC,CAAa,EAAE,EAC9B,CACE,CAACzmC,GAAO,UAAU,EAAG4lC,EACrB,CAAC5lC,GAAO,QAAQ,EAAG0mC,EACnB,CAAC1mC,GAAO,WAAW,EAAG6mC,CAAA,CACxB,EAII,CAAE,UAAW7iC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkB/B,GAAO,QAAA,CAC1B,EAGDmD,EAAAA,UAAU,IAAM,CACVY,IACE,OAAOA,GAAQ,WACjBA,EAAI6iC,EAAU,OAAO,EACZ,YAAa7iC,IACrBA,EAAsD,QAAU6iC,EAAU,SAGjF,EAAG,CAAC7iC,CAAG,CAAC,EAGR,MAAM6jC,EAAmB9zB,EAAAA,YAAY,IAAM,CACzC,GAAI,CAAC8yB,EAAU,QAAS,OAExB,MAAM57B,EAAU47B,EAAU,QACpB,CAAE,aAAA3yB,EAAc,aAAA4zB,EAAc,YAAAC,GAAa,YAAAC,GAAa,UAAAC,GAAW,WAAAC,IAAej9B,EAGxF,GAAIwsB,EAAU,CACZ,MAAM0Q,GAAoBj0B,EAAe4zB,EAGzC,GAFAb,EAAyBkB,EAAiB,EAEtCA,GAAmB,CACrB,MAAMC,GAAc,KAAK,IAAI,GAAKN,EAAe5zB,EAAgB4zB,CAAY,EACvEO,GAAcP,EAAeM,GAC7BE,GAAYL,IAAa/zB,EAAe4zB,GAAiBO,GAE/DhB,EAAuBe,EAAW,EAClCX,EAAoBa,EAAQ,CAC9B,CACF,CAGA,GAAI7B,EAAY,CACd,MAAM8B,GAAsBR,GAAcC,GAG1C,GAFAb,EAA2BoB,EAAmB,EAE1CA,GAAqB,CACvB,MAAMC,GAAa,KAAK,IAAI,GAAKR,GAAcD,GAAeC,EAAW,EACnES,GAAeT,GAAcQ,GAC7BE,GAAaR,IAAcH,GAAcC,IAAgBS,GAE/DlB,EAAwBiB,EAAU,EAClCb,EAAuBe,EAAS,CAClC,CACF,CACF,EAAG,CAACjR,EAAUgP,CAAU,CAAC,EAGnB/d,EAAgB5S,GAAyC,CAC7D+xB,EAAA,EACAd,EAAe,EAAI,EACnBH,GAAA,MAAAA,EAAW9wB,GAGP6wB,GACF,WAAW,IAAM,CACfI,EAAe,EAAK,CACtB,EAAG,GAAI,CAEX,EAGM4B,EAA2B5jC,GAAwB,CACvDA,EAAE,eAAA,EACF,MAAM6jC,EAAS7jC,EAAE,QACX8jC,EAAWrB,EAEXsB,GAAmB/jC,IAAkB,CACzC,GAAI,CAAC8hC,EAAU,QAAS,OAExB,MAAMkC,GAAShkC,GAAE,QAAU6jC,EACrB39B,GAAU47B,EAAU,QACpB,CAAE,aAAA3yB,GAAc,aAAA4zB,EAAA,EAAiB78B,GACjCo9B,GAAcP,GAAeV,EAE7B4B,GADc,KAAK,IAAI,EAAG,KAAK,IAAIX,GAAaQ,EAAWE,EAAM,CAAC,EACtCV,GAElCp9B,GAAQ,UAAY+9B,IAAe90B,GAAe4zB,GACpD,EAEMmB,GAAgB,IAAM,CAC1B,SAAS,oBAAoB,YAAaH,EAAe,EACzD,SAAS,oBAAoB,UAAWG,EAAa,CACvD,EAEA,SAAS,iBAAiB,YAAaH,EAAe,EACtD,SAAS,iBAAiB,UAAWG,EAAa,CACpD,EAGMC,EAA6BnkC,GAAwB,CACzDA,EAAE,eAAA,EACF,MAAMokC,EAASpkC,EAAE,QACXqkC,EAAY1B,EAEZoB,GAAmB/jC,IAAkB,CACzC,GAAI,CAAC8hC,EAAU,QAAS,OAExB,MAAMwC,GAAStkC,GAAE,QAAUokC,EACrBl+B,GAAU47B,EAAU,QACpB,CAAE,YAAAkB,GAAa,YAAAC,EAAA,EAAgB/8B,GAC/Bw9B,GAAeT,GAAcV,EAE7B0B,GADe,KAAK,IAAI,EAAG,KAAK,IAAIP,GAAcW,EAAYC,EAAM,CAAC,EACxCZ,GAEnCx9B,GAAQ,WAAa+9B,IAAejB,GAAcC,GACpD,EAEMiB,GAAgB,IAAM,CAC1B,SAAS,oBAAoB,YAAaH,EAAe,EACzD,SAAS,oBAAoB,UAAWG,EAAa,CACvD,EAEA,SAAS,iBAAiB,YAAaH,EAAe,EACtD,SAAS,iBAAiB,UAAWG,EAAa,CACpD,EAGA7lC,EAAAA,UAAU,IAAM,CAId,GAHAykC,EAAA,EAGIhB,EAAU,QAAS,CACrB,MAAMyC,EAAiB,IAAI,eAAezB,CAAgB,EAC1D,OAAAyB,EAAe,QAAQzC,EAAU,OAAO,EAEjC,IAAM,CACXyC,EAAe,WAAA,CACjB,CACF,CACF,EAAG,CAACzB,CAAgB,CAAC,EAErB,MAAM0B,EAAuC,CAC3C,GAAGvnC,EACH,OAAAwkB,EACA,UAAApS,EACA,MAAAhB,CAAA,EAGF,OACErD,EAAAA,KAAC,MAAA,CACC,UAAW63B,EACX,MAAO2B,EACN,GAAGxlC,EAEJ,SAAA,CAAA+L,EAAAA,IAAC,MAAA,CACC,IAAK+2B,EACL,UAAWroC,EAAKyB,GAAO,SAAUgE,CAAkB,EACnD,SAAUykB,EACV,MAAO,CACL,GAAGxkB,EACH,UAAWuiC,EAAa,OAAS,SACjC,UAAWhP,EAAW,OAAS,QAAA,EAGhC,SAAA3zB,CAAA,CAAA,EAIF2zB,GAAYuP,GACXl3B,EAAAA,IAAC,MAAA,CAAI,UAAWtR,EAAKyB,GAAO,UAAWA,GAAO,QAAQ,EACpD,SAAA6P,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,MAClB,MAAO,CACL,OAAQmnC,EACR,UAAW,cAAcI,CAAgB,KAAA,EAE3C,YAAamB,CAAA,CAAA,EAEjB,EAIDlC,GAAcS,GACbp3B,EAAAA,IAAC,MAAA,CAAI,UAAWtR,EAAKyB,GAAO,UAAWA,GAAO,UAAU,EACtD,SAAA6P,EAAAA,IAAC,MAAA,CACC,UAAW7P,GAAO,MAClB,MAAO,CACL,MAAOqnC,EACP,UAAW,cAAcI,CAAmB,KAAA,EAE9C,YAAawB,CAAA,CAAA,EAEjB,EAIDzR,GAAYgP,GAAcO,GAAyBE,SACjD,MAAA,CAAI,UAAWjnC,GAAO,MAAA,CAAQ,CAAA,CAAA,CAAA,CAIvC,CACF,EAEAumC,GAAW,YAAc,65DC/NZgD,GAAY5lC,EAAAA,WACvB,CACE,CACE,QAAAwM,EAAU,MACV,KAAA7I,EAAO,YACP,OAAAif,EAAS,OACT,UAAArB,EAAY,GACZ,MAAApO,EACA,QAAA0yB,EAAU,GACV,YAAAC,EAAc,GACd,QAAA5lB,EAAU,KACV,WAAA6lB,EAAa,GACb,gBAAAC,EAAkB,WAClB,UAAAjqC,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CAEH,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOmQ,CAAO,EACdnQ,GAAO,QAAQsH,CAAI,EAAE,EACrBtH,GAAO,WAAW6jB,CAAO,EAAE,EAC3B,CACE,CAAC7jB,GAAO,OAAO,EAAGwpC,EAClB,CAACxpC,GAAO,WAAW,EAAGypC,EACtB,CAACzpC,GAAO,UAAUumB,CAAM,EAAE,CAAC,EAAG,OAAOA,GAAW,UAAY,CAAC,KAAM,KAAM,KAAM,MAAM,EAAE,SAASA,CAAM,EACtG,CAACvmB,GAAO,UAAU,EAAG0pC,EACrB,CAAC1pC,GAAO,UAAU2pC,CAAe,EAAE,CAAC,EAAGD,CAAA,CACzC,CACF,CACD,EAEKE,EAAgB,CAAC,OAAQ,KAAM,KAAM,KAAM,MAAM,EAAE,SAASrjB,CAAM,EAAa,OAATA,EAE5E,OACEzW,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAO,CACL,GAAGC,EACH,GAAI2lC,GAAgB,CAAE,OAAQA,CAAA,CAAa,EAE7C,sBAAqBtiC,EACpB,GAAGxD,EAEH,SAAA,CAAAohB,GAAa,CAACrhB,GACbgM,MAAC,OAAA,CAAK,UAAW7P,GAAO,MAAQ,SAAA8W,GAASxP,EAAK,YAAA,CAAY,CAAE,EAE7DzD,CAAA,CAAA,CAAA,CAGP,CACF,EAEA0lC,GAAU,YAAc,YAKxB,MAAMM,GAAiBlmC,EAAAA,WACrB,CACE,CACE,UAAAqU,EAAY,WACZ,IAAAgN,EAAM,KACN,UAAAtlB,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EAELC,IACG,CACH,KAAM,CAAE,UAAWC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,MACPA,GAAO,aAAagY,CAAS,EAAE,EAC/BhY,GAAO,OAAOglB,CAAG,EAAE,CAAA,CACrB,CACD,EAED,OACEnV,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWC,EACX,MAAOC,EACN,GAAGH,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEAgmC,GAAe,YAAc,kBAGtB,MAAMC,GAAqB,OAAO,OAAOP,GAAW,CACzD,MAAOM,EACT,CAAC,ykBC7JYE,GAAYpmC,EAAAA,WACvB,CAAC,CACC,SAAAE,EACA,UAAAnE,EACA,MAAAqC,EACA,SAAAioC,EAAW,EACX,QAAA75B,EAAU,UACV,MAAAsN,EAAQ,SACR,GAAI7Z,EAAY,MAChB,GAAGE,CAAA,EACFC,IAAQ,CACT,GAAI,OAAOF,GAAa,SACtB,MAAM,IAAI,MAAM,sCAAsC,EAGxD,KAAM,CAAE,UAAWG,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOmQ,CAAO,EACdnQ,GAAOyd,CAAK,CAAA,CACd,CACD,EAEKqE,EAAa,CACjB,GAAG7d,EACH,oBAAqB,GAAG+lC,CAAQ,MAChC,uBAAwB,GAAGA,EAAW,GAAI,KAC1C,wBAAyB,GAAGA,EAAW,EAAG,IAAA,EAG5C,OACEn6B,EAAAA,IAACjM,EAAA,CACC,IAAAG,EACA,UAAWC,EACX,MAAO8d,EACN,GAAGhe,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEAkmC,GAAU,YAAc,+/BCvCXE,GAAatmC,EAAAA,WACxB,CAAC,CACC,SAAAE,EACA,UAAAnE,EACA,MAAAqC,EACA,KAAAqO,EAAO,KACP,UAAA85B,EAAY,SACZ,MAAAzsB,EAAQ,QACR,SAAA8d,EAAW,GACX,GAAI33B,EAAY,MAChB,GAAGE,CAAA,EACFC,IAAQ,CACT,GAAI,OAAOF,GAAa,SACtB,MAAM,IAAI,MAAM,uCAAuC,EAGzD,KAAM,CAAE,UAAWG,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,WACPA,GAAOoQ,CAAI,EACXpQ,GAAOkqC,CAAS,EAChBlqC,GAAOyd,CAAK,EACZ8d,GAAYv7B,GAAO,QAAA,CACrB,CACD,EAED,OACE6P,EAAAA,IAACjM,EAAA,CACC,IAAAG,EACA,UAAWC,EACX,MAAOC,EACP,YAAWJ,EACV,GAAGC,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEAomC,GAAW,YAAc,k5BC1CZE,GAAYxmC,EAAAA,WACvB,CAAC,CACC,SAAAE,EACA,UAAAnE,EACA,MAAAqC,EACA,KAAAqO,EAAO,KACP,QAAAD,EAAU,WACV,SAAAi6B,EAAW,SACX,IAAAC,EAAM,SACN,GAAIzmC,EAAY,MAChB,GAAGE,CAAA,EACFC,IAAQ,CACT,GAAI,OAAOF,GAAa,SACtB,MAAM,IAAI,MAAM,sCAAsC,EAGxD,KAAM,CAAE,UAAWG,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,UACPA,GAAOoQ,CAAI,EACXpQ,GAAOmQ,CAAO,EACdnQ,GAAOoqC,CAAQ,EACfpqC,GAAOqqC,CAAG,CAAA,CACZ,CACD,EAED,OACEx6B,EAAAA,IAACjM,EAAA,CACC,IAAAG,EACA,UAAWC,EACX,MAAOC,EACP,YAAWJ,EACV,GAAGC,EAEJ,SAAA+L,EAAAA,IAAC,OAAA,CAAK,UAAW7P,GAAO,aAAe,SAAA6D,CAAA,CAAS,CAAA,CAAA,CAGtD,CACF,EAEAsmC,GAAU,YAAc,m9BCjCXG,GAAe3mC,EAAAA,WAC1B,CAAC,CACC,UAAAumC,EAAY,SACZ,QAAA/5B,EAAU,SACV,UAAAo6B,EAAY,WACZ,MAAA9sB,EAAQ,aACR,SAAA8d,EAAW,GACX,QAAAiP,EAAU,GACV,UAAA9qC,EACA,MAAAqC,EACA,SAAA8B,EACA,GAAGC,CAAA,EACFC,IAAQ,CACT,MAAMiR,EAAK,SAAS,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,CAAC,GAErD,CAAE,UAAWhR,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,aACPA,GAAOkqC,CAAS,EAChBlqC,GAAOmQ,CAAO,EACdnQ,GAAOyd,CAAK,EACZ8d,GAAYv7B,GAAO,QAAA,CACrB,CACD,EAEKyqC,EAAa,CACjB,OAAQ,KACR,OAAQ,KACR,MAAO,KACP,QAAS,GAAA,EACTP,CAAS,EAELQ,EAAiB,CACrB,OAAQ,eACR,OAAQ,eACR,MAAO,aACP,QAAS,YAAA,EACTv6B,CAAO,EAEHw6B,EAAa,CACjB,OAAQ,EACR,OAAQ,EACR,MAAO,EACP,QAAS,CAAA,EACTx6B,CAAO,EAET,OACEL,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWC,EACX,MAAO,CACL,GAAGC,EACH,kBAAmBumC,EACnB,qBAAsBD,CAAA,EAEvB,GAAGzmC,EAEJ,SAAA,CAAAgM,OAAC,MAAA,CAAI,UAAW9P,GAAO,SAAU,cAAY,OAC3C,SAAA,CAAA6P,EAAAA,IAAC,OAAA,CACC,SAAAC,EAAAA,KAAC,SAAA,CAAO,GAAAkF,EACN,SAAA,CAAAnF,EAAAA,IAAC,eAAA,CACC,KAAM66B,EACN,cAAeD,EACf,WAAAE,EACA,KAAMpP,EAAW,OAAY,EAE5B,SAAAA,GACC1rB,EAAAA,IAAC,UAAA,CACC,cAAc,OACd,KAAK,IACL,GAAG,MACH,IAAI,OACJ,YAAY,YAAA,CAAA,CACd,CAAA,EAIH4N,IAAU,QACT5N,EAAAA,IAAC,gBAAA,CACC,KAAK,SACL,OAAO;AAAA;AAAA;AAAA,oCAAA,CAAA,EAOV4N,IAAU,QACT5N,EAAAA,IAAC,gBAAA,CACC,KAAK,SACL,OAAO;AAAA;AAAA;AAAA,oCAAA,CAAA,EAOV4N,IAAU,WACT5N,EAAAA,IAAC,gBAAA,CACC,KAAK,YACL,OAAO,IAEN,SAAA0rB,GACC1rB,EAAAA,IAAC,UAAA,CACC,cAAc,SACd,KAAK,IACL,GAAG,MACH,IAAI,KACJ,YAAY,YAAA,CAAA,CACd,CAAA,EAKNA,EAAAA,IAAC,uBACC,SAAAA,MAAC,UAAA,CAAQ,KAAK,WAAW,YAAY,yDAAyD,CAAA,CAChG,CAAA,CAAA,CACF,CAAA,CACF,EACAA,EAAAA,IAAC,OAAA,CACC,MAAM,OACN,OAAO,OACP,OAAQ,QAAQmF,CAAE,IAClB,UAAWhV,GAAO,SAAA,CAAA,CACpB,EACF,EACC6D,CAAA,CAAA,CAAA,CAGP,CACF,EAEAymC,GAAa,YAAc,wjBC/HdM,GAAkBjnC,EAAAA,WAC7B,CAAC,CACC,WAAAknC,EAAa,GACb,UAAAC,EAAY,EACZ,UAAAC,EAAY,EACZ,QAAA56B,EAAU,SACV,MAAAsN,EAAQ,QACR,SAAA8d,EAAW,GACX,MAAAgC,EAAQ,GACR,UAAA79B,EACA,MAAAqC,EACA,GAAG+B,CAAA,EACFC,IAAQ,CACT,KAAM,CAACinC,EAAYC,CAAa,EAAIt5B,EAAAA,SAA+B,IAAI,EACjE,CAACu5B,EAAYC,CAAa,EAAIx5B,EAAAA,SAAS,CAAE,MAAO,EAAG,OAAQ,EAAG,EAEpExO,EAAAA,UAAU,IAAM,CACd,MAAMioC,EAAmB,IAAM,CAC7B,GAAIJ,EAAY,CACd,KAAM,CAAE,MAAA73B,EAAO,OAAAoT,GAAWykB,EAAW,sBAAA,EACrCG,EAAc,CAAE,MAAAh4B,EAAO,OAAAoT,EAAQ,CACjC,CACF,EAEA,OAAA6kB,EAAA,EACA,OAAO,iBAAiB,SAAUA,CAAgB,EAC3C,IAAM,OAAO,oBAAoB,SAAUA,CAAgB,CACpE,EAAG,CAACJ,CAAU,CAAC,EAEf,KAAM,CAAE,UAAWhnC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,gBACPA,GAAOyd,CAAK,EACZ8d,GAAYv7B,GAAO,QAAA,CACrB,CACD,EAEKqrC,EAAO,KAAK,KAAKH,EAAW,MAAQL,CAAU,EAC9CS,EAAO,KAAK,KAAKJ,EAAW,OAASL,CAAU,EAC/C1N,EAAU+N,EAAW,MAAQ,EAC7B9N,EAAU8N,EAAW,OAAS,EAE9BK,EAAkB,CAACjiC,EAAW4e,IAAsB,CACxD,OAAQ/X,EAAA,CACN,IAAK,SAAU,CACb,MAAMq7B,EAAW,KAAK,KACpB,KAAK,IAAIliC,EAAI6zB,EAAS,CAAC,EAAI,KAAK,IAAIjV,EAAIkV,EAAS,CAAC,CAAA,EAE9CqO,EAAc,KAAK,KACvB,KAAK,IAAItO,EAAS,CAAC,EAAI,KAAK,IAAIC,EAAS,CAAC,CAAA,EAEtCsO,EAAa,EAAKF,EAAWC,EACnC,OAAOV,GAAaD,EAAYC,GAAaW,CAC/C,CACA,IAAK,SAAU,CACb,MAAMC,EAAWpO,EAAQ,KAAK,GAAM,IAC9BqO,EAAatiC,EAAI,KAAK,IAAIqiC,CAAO,EAAIzjB,EAAI,KAAK,IAAIyjB,CAAO,EACzDE,EAASX,EAAW,MAAQ,KAAK,IAAI,KAAK,IAAIS,CAAO,CAAC,EAC9CT,EAAW,OAAS,KAAK,IAAI,KAAK,IAAIS,CAAO,CAAC,EACtDD,EAAaE,EAAaC,EAChC,OAAOd,GAAaD,EAAYC,GAAaW,CAC/C,CACA,IAAK,QAAS,CAEZ,MAAMI,GAAQxiC,EAAI,QAAU4e,EAAI,QAAU,WACpC6jB,EAASD,EAAO,KAAK,MAAMA,CAAI,EACrC,OAAOf,GAAaD,EAAYC,GAAagB,CAC/C,CACA,IAAK,OAAQ,CACX,MAAMC,EAAQ,KAAK,IAAK1iC,EAAI4hC,EAAW,MAAS,KAAK,GAAK,CAAC,EACrDe,EAAQ,KAAK,IAAK/jB,EAAIgjB,EAAW,OAAU,KAAK,GAAK,CAAC,EACtDgB,GAAYF,EAAQC,EAAQ,GAAK,EACvC,OAAOlB,GAAaD,EAAYC,GAAamB,CAC/C,CACA,QACE,OAAOpB,EAAY,CAAA,CAEzB,EAEMqB,EAAO,CAAA,EACb,QAASC,EAAM,EAAGA,EAAMd,EAAMc,IAC5B,QAASC,EAAM,EAAGA,EAAMhB,EAAMgB,IAAO,CACnC,MAAM/iC,EAAI+iC,EAAMxB,EAAaA,EAAa,EACpC3iB,EAAIkkB,EAAMvB,EAAaA,EAAa,EACpC3N,EAASqO,EAAgBjiC,EAAG4e,CAAC,EAE/BgV,EAAS,IACXiP,EAAK,KAAK,CACR,EAAA7iC,EACA,EAAA4e,EACA,OAAAgV,EACA,MAAO3B,GAAY6Q,EAAMC,GAAO,IAAO,CAAA,CACxC,CAEL,CAGF,OACEx8B,EAAAA,IAAC,MAAA,CACC,IAAMtB,GAAS,CACb08B,EAAc18B,CAAI,EACdxK,IACE,OAAOA,GAAQ,WACjBA,EAAIwK,CAAI,EAEPxK,EAAqD,QAAUwK,EAGtE,EACA,UAAWvK,EACX,MAAOC,EACP,cAAY,OACX,GAAGH,EAEJ,SAAA+L,EAAAA,IAAC,KAAE,UAAW7P,GAAO,KAClB,SAAAmsC,EAAK,IAAKG,GACTz8B,EAAAA,IAAC,SAAA,CAEC,GAAIy8B,EAAI,EACR,GAAIA,EAAI,EACR,EAAGA,EAAI,OACP,KAAK,eACL,UAAWtsC,GAAO,IAClB,MAAO,CACL,eAAgB,GAAGssC,EAAI,KAAK,GAAA,CAC9B,EARK,GAAGA,EAAI,CAAC,IAAIA,EAAI,CAAC,EAAA,CAUzB,CAAA,CACH,CAAA,CAAA,CAGN,CACF,EAEA1B,GAAgB,YAAc,4gCC/IjB2B,GAAa5oC,EAAAA,WACxB,CAAC,CACC,UAAA6oC,EAAY,GACZ,WAAAC,EAAa,GACb,YAAAxmB,EAAc,EACd,QAAA9V,EAAU,QACV,MAAAsN,EAAQ,QACR,SAAA8d,EAAW,GACX,UAAA77B,EACA,MAAAqC,EACA,GAAG+B,CAAA,EACFC,IAAQ,CACT,KAAM,CAACinC,EAAYC,CAAa,EAAIt5B,EAAAA,SAA+B,IAAI,EACjE,CAACu5B,EAAYC,CAAa,EAAIx5B,EAAAA,SAAS,CAAE,MAAO,EAAG,OAAQ,EAAG,EAC9DqD,EAAK,eAAe,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,CAAC,GAErE7R,EAAAA,UAAU,IAAM,CACd,MAAMioC,EAAmB,IAAM,CAC7B,GAAIJ,EAAY,CACd,KAAM,CAAE,MAAA73B,EAAO,OAAAoT,GAAWykB,EAAW,sBAAA,EACrCG,EAAc,CAAE,MAAAh4B,EAAO,OAAAoT,EAAQ,CACjC,CACF,EAEA,OAAA6kB,EAAA,EACA,OAAO,iBAAiB,SAAUA,CAAgB,EAC3C,IAAM,OAAO,oBAAoB,SAAUA,CAAgB,CACpE,EAAG,CAACJ,CAAU,CAAC,EAEf,KAAM,CAAE,UAAWhnC,EAAoB,MAAOC,CAAA,EAAmBpC,EAAuB,CACtF,UAAAnC,EACA,MAAAqC,EACA,iBAAkBxD,EAChByB,GAAO,WACPA,GAAOmQ,CAAO,EACdnQ,GAAOyd,CAAK,EACZ8d,GAAYv7B,GAAO,QAAA,CACrB,CACD,EAEKqrC,EAAO,KAAK,KAAKH,EAAW,MAAQsB,CAAS,EAC7ClB,EAAO,KAAK,KAAKJ,EAAW,OAASuB,CAAU,EAErD,OACE38B,EAAAA,KAAC,MAAA,CACC,IAAMvB,GAAS,CACb08B,EAAc18B,CAAI,EACdxK,IACE,OAAOA,GAAQ,WACjBA,EAAIwK,CAAI,EAEPxK,EAAqD,QAAUwK,EAGtE,EACA,UAAWvK,EACX,MAAOC,EACP,cAAY,OACX,GAAGH,EAEJ,SAAA,CAAA+L,EAAAA,IAAC,OAAA,CACE,aAAY,UACXA,EAAAA,IAAC,UAAA,CACC,GAAI,GAAGmF,CAAE,QACT,aAAa,iBACb,MAAM,KACN,OAAO,IAEP,SAAAnF,EAAAA,IAAC,OAAA,CACC,GAAG,IACH,GAAG,IACH,GAAG,IACH,GAAG,IACH,OAAO,eACP,YAAAoW,CAAA,CAAA,CACF,CAAA,EAGN,EAEAnW,EAAAA,KAAC,IAAA,CAAE,UAAW9P,GAAO,UAElB,SAAA,CAAA,MAAM,KAAK,CAAE,OAAQqrC,EAAO,GAAK,CAAC14B,EAAGnE,IACpCqB,EAAAA,IAAC,OAAA,CAEC,GAAIrB,EAAIg+B,EACR,GAAI,EACJ,GAAIh+B,EAAIg+B,EACR,GAAItB,EAAW,OACf,OAAQ/6B,IAAY,SAAW,QAAQ6E,CAAE,SAAW,eACpD,YAAAiR,EACA,UAAWjmB,GAAO,aAClB,MAAO,CACL,eAAgBu7B,EAAW,GAAG/sB,EAAI,GAAI,IAAM,MAAA,CAC9C,EAVK,KAAKA,CAAC,EAAA,CAYd,EAGA,MAAM,KAAK,CAAE,OAAQ88B,EAAO,GAAK,CAAC34B,EAAGnE,IACpCqB,EAAAA,IAAC,OAAA,CAEC,GAAI,EACJ,GAAIrB,EAAIi+B,EACR,GAAIvB,EAAW,MACf,GAAI18B,EAAIi+B,EACR,OAAQt8B,IAAY,SAAW,QAAQ6E,CAAE,SAAW,eACpD,YAAAiR,EACA,UAAWjmB,GAAO,eAClB,MAAO,CACL,eAAgBu7B,EAAW,GAAG/sB,EAAI,GAAI,IAAM,MAAA,CAC9C,EAVK,KAAKA,CAAC,EAAA,CAYd,EAGA2B,IAAY,UACXL,EAAAA,KAAAiZ,EAAAA,SAAA,CACG,SAAA,CAAA,MAAM,KAAK,CAAE,OAAQsiB,EAAO,GAAK,CAAC14B,EAAGnE,IACpCqB,EAAAA,IAAC,OAAA,CAEC,GAAIrB,EAAIg+B,EAAYvmB,EAAc,EAClC,GAAI,EACJ,GAAIzX,EAAIg+B,EAAYvmB,EAAc,EAClC,GAAIilB,EAAW,OACf,OAAO,eACP,YAAAjlB,EACA,QAAS,EAAA,EAPJ,MAAMzX,CAAC,EAAA,CASf,EACA,MAAM,KAAK,CAAE,OAAQ88B,EAAO,GAAK,CAAC34B,EAAGnE,IACpCqB,EAAAA,IAAC,OAAA,CAEC,GAAI,EACJ,GAAIrB,EAAIi+B,EAAaxmB,EAAc,EACnC,GAAIilB,EAAW,MACf,GAAI18B,EAAIi+B,EAAaxmB,EAAc,EACnC,OAAO,eACP,YAAAA,EACA,QAAS,EAAA,EAPJ,MAAMzX,CAAC,EAAA,CASf,CAAA,EACH,EAID2B,IAAY,UACXN,EAAAA,IAAAkZ,EAAAA,SAAA,CACG,SAAA,MAAM,KAAK,CAAE,OAAQuiB,CAAA,EAAQ,CAAC34B,EAAGy5B,IAChC,MAAM,KAAK,CAAE,OAAQf,GAAQ,CAAC14B,EAAG05B,IAC/Bx8B,EAAAA,IAAC,OAAA,CAEC,EAAGw8B,EAAMG,GAAaJ,EAAM,EAAII,EAAY,EAAI,GAChD,EAAGJ,EAAMK,EACT,MAAOD,EACP,OAAQC,EACR,KAAK,OACL,OAAO,eACP,YAAAxmB,CAAA,EAPK,QAAQmmB,CAAG,IAAIC,CAAG,EAAA,CAS1B,CAAA,CACH,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,CAAA,CAGN,CACF,EAEAE,GAAW,YAAc,aC5OlB,MAAMG,GAAS,CACpB,OAAQ,2BACR,SAAU,6BACV,OAAQ,2BACR,QAAS,4BACT,QAAS,4BACT,MAAO,0BACP,MAAO,0BACP,KAAM,yBACN,UAAW,8BACX,QAAS,2BACX,EAEaC,GAAa,CACxB,CACE,KAAM,SACN,GAAI,SACJ,KAAM,mBACN,YAAa,6CAAA,EAEf,CACE,KAAM,WACN,GAAI,WACJ,KAAM,qBACN,YAAa,wCAAA,EAEf,CACE,KAAM,SACN,GAAI,SACJ,KAAM,mBACN,YAAa,4CAAA,EAEf,CACE,KAAM,UACN,GAAI,UACJ,KAAM,oBACN,YAAa,uCAAA,EAEf,CACE,KAAM,UACN,GAAI,UACJ,KAAM,oBACN,YAAa,uCAAA,EAEf,CACE,KAAM,QACN,GAAI,QACJ,KAAM,kBACN,YAAa,2CAAA,EAEf,CACE,KAAM,QACN,GAAI,QACJ,KAAM,kBACN,YAAa,4CAAA,EAEf,CACE,KAAM,OACN,GAAI,OACJ,KAAM,iBACN,YAAa,qCAAA,EAEf,CACE,KAAM,YACN,GAAI,YACJ,KAAM,sBACN,YAAa,4CAAA,EAEf,CACE,KAAM,UACN,GAAI,UACJ,KAAM,oBACN,YAAa,sCAAA,CAEjB,EChEaz8B,GAAgC,CAAC,CAC5C,QAAAC,EAAU,UACV,KAAAC,EAAO,KACP,UAAAC,EAAY,GACZ,QAAAC,EAAU,GACV,gBAAAG,EAAkB,GAClB,OAAAC,EAAS,GACT,SAAAH,EACA,UAAAC,EACA,SAAAG,EACA,SAAA9M,EACA,UAAAnE,EAAY,GACZ,GAAGoE,CACL,IAAM,CACJ,MAAM8oC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWdC,EAAc,CAClB,GAAI,gCACJ,GAAI,mCACJ,GAAI,gCACJ,GAAI,iCAAA,EAGAC,EAAiB,CACrB,QAAS;AAAA;AAAA;AAAA;AAAA,MAKT,OAAQ;AAAA;AAAA;AAAA;AAAA,MAKR,YAAa;AAAA;AAAA;AAAA;AAAA,MAKb,QAAS;AAAA;AAAA;AAAA;AAAA,MAKT,MAAO;AAAA;AAAA;AAAA;AAAA,KAAA,EAOHC,EAAgBt8B,GAAmB,CAACE,EAAW;AAAA;AAAA;AAAA;AAAA,IAIjDF,GAAmBE,EAAW,6BAA+B,GAE3Dq8B,EAAgBt8B,EAAS,yoBAA2oB,GAEpqBu8B,EAAe58B,EAAY,SAAW,GACtC68B,EAAiB58B,EAAU,mBAAqB,GAEhD68B,EAAkB;AAAA,MACpBP,CAAW;AAAA,MACXC,EAAYz8B,CAAI,CAAC;AAAA,MACjB08B,EAAe38B,CAAO,CAAC;AAAA,MACvB48B,CAAa;AAAA,MACbC,CAAa;AAAA,MACbC,CAAY;AAAA,MACZC,CAAc;AAAA,MACdxtC,CAAS;AAAA,IACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAEvB,OACEoQ,EAAAA,KAAC,SAAA,CACC,UAAWq9B,EACX,MAAO,CACL,WAAY,6CACZ,cAAe,SACf,GAAGrpC,EAAM,KAAA,EAEX,SAAU6M,GAAYL,EACtB,YAAWI,EAAS7M,EAAW,OAC9B,GAAGC,EAEH,SAAA,CAAAwM,GACCT,EAAAA,IAAC,OAAA,CAAK,UAAU,yFAAA,CAA0F,EAE3GU,GAAYV,EAAAA,IAAC,OAAA,CAAK,UAAU,0CAA2C,SAAAU,EAAS,EACjFV,EAAAA,IAAC,OAAA,CAAK,UAAU,2BAA4B,SAAAhM,CAAA,CAAS,EACpD2M,GAAaX,EAAAA,IAAC,OAAA,CAAK,UAAU,0CAA2C,SAAAW,CAAA,CAAU,CAAA,CAAA,CAAA,CAGzF,EClGaouB,GAAcj7B,EAAAA,WACzB,CAAC,CACC,MAAAk7B,EAAQ,GAAG,EACX,SAAAh7B,EACA,UAAAnE,EAAY,GACZ,UAAAo/B,EAAY,QACZ,gBAAAC,EACA,MAAAh9B,EACA,GAAG+B,CAAA,EACFC,IAAQ,CACT,MAAMi7B,EAAgB,GAAI,EAAIH,EAAS,GAAG,IAsBpCsO,EAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QARC,CACvB,QAAS,0DACT,MAAO,sDACP,KAAM,oDACN,KAAM,oDACN,aAAc,+DAAA,EAKKrO,CAAS,CAAC;AAAA,QAC3Bp/B,CAAS;AAAA,MACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAEvB,OACEoQ,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWopC,EACX,MAAO,CACL,GAAGprC,EACH,gBAAiBg9B,GAAmB,MAAA,EAErC,GAAGj7B,EAGJ,SAAA,CAAA+L,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,cAAAmvB,CAAA,CAAc,CAAG,EAG/BnvB,EAAAA,IAAC,OAAI,UAAU,oDACb,eAAC,MAAA,CAAI,UAAU,+MACZ,SAAAhM,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CAAA,CAGN,CACF,EAEA+6B,GAAY,YAAc,cC9D1B,MAAMhb,GAAOjgB,EAAAA,WACX,CACE,CACE,SAAAE,EACA,UAAAnE,EAAY,GACZ,QAAAyQ,EAAU,WACV,QAAA0T,EAAU,KACV,UAAAxB,EAAY,GACZ,MAAAyB,EAAQ,GACR,GAAGhgB,CAAA,EAELC,IACG,CACH,MAAM6oC,EAAc;AAAA;AAAA;AAAA;AAAA,MAMdE,EAAiB,CACrB,SAAU,6BACV,KAAM,GACN,QAAS,gBAAA,EAGLM,EAAiB,CACrB,KAAM,GACN,GAAI,MACJ,GAAI,MACJ,GAAI,KAAA,EAGAC,EAAqBhrB,EACvB,qKACAyB,EACE,+EACA,GAEAqpB,EAAkB;AAAA,QACpBP,CAAW;AAAA,QACXE,EAAe38B,CAAO,CAAC;AAAA,QACvBi9B,EAAevpB,CAAO,CAAC;AAAA,QACvBwpB,CAAkB;AAAA,QAClB3tC,CAAS;AAAA,MACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAEvB,OACEmQ,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWopC,EACX,KAAM9qB,EAAY,SAAW,OAC7B,SAAUA,EAAY,EAAI,OACzB,GAAGve,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEMkgB,GAAapgB,EAAAA,WACjB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAY,GAAI,GAAGoE,CAAA,EAASC,IAAQ,CAC/C,MAAMupC,EAAgB;AAAA;AAAA,QAElB5tC,CAAS;AAAA,MACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAEvB,OACEmQ,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWupC,EACV,GAAGxpC,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEMmgB,GAAWrgB,EAAAA,WACf,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAY,GAAI,GAAGoE,CAAA,EAASC,IAAQ,CAC/C,MAAMwpC,EAAc;AAAA,QAChB7tC,CAAS;AAAA,MACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAEvB,OACEmQ,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWwpC,EACV,GAAGzpC,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEMogB,GAAatgB,EAAAA,WACjB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAY,GAAI,GAAGoE,CAAA,EAASC,IAAQ,CAC/C,MAAMypC,EAAgB;AAAA;AAAA,QAElB9tC,CAAS;AAAA,MACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAEvB,OACEmQ,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAWypC,EACV,GAAG1pC,EAEH,SAAAD,CAAA,CAAA,CAGP,CACF,EAEA+f,GAAK,YAAc,OACnBG,GAAW,YAAc,cACzBC,GAAS,YAAc,YACvBC,GAAW,YAAc,cAGzB,MAAMC,GAAgBN,GAMtBM,GAAc,OAASH,GACvBG,GAAc,KAAOF,GACrBE,GAAc,OAASD,GCxIhB,MAAMrT,GAAQjN,EAAAA,WACnB,CACE,CACE,UAAAjE,EAAY,GACZ,QAAAyQ,EAAU,UACV,KAAAC,EAAO,KACP,SAAAG,EACA,UAAAC,EACA,UAAAH,EAAY,GACZ,gBAAAI,EAAkB,GAClB,SAAAE,EACA,SAAAE,EACA,KAAAvJ,EAAO,OACP,GAAGxD,CAAA,EAELC,IACG,CACH,MAAM6oC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYdC,EAAc,CAClB,GAAI,kCACJ,GAAI,qCACJ,GAAI,kCAAA,EAGAC,EAAiB,CACrB,QAAS,kCACT,MAAO,gDACP,QAAS,qDAAA,EAGLC,EAAgBt8B,GAAmB,CAACE,GAAY,CAACE,EACnD,4GACA,GAEEo8B,EAAe58B,EAAY,SAAW,GAEtCo9B,EAAc,CAClB,KAAMl9B,EAAW,QAAU,GAC3B,MAAOC,EAAY,QAAU,EAAA,EAG/B,OAAID,GAAYC,SAEX,MAAA,CAAI,UAAW,YAAYH,EAAY,SAAW,cAAc,GAC9D,SAAA,CAAAE,GACCV,EAAAA,IAAC,MAAA,CAAI,UAAU,uFACZ,SAAAU,EACH,EAEFV,EAAAA,IAAC,QAAA,CACC,IAAA9L,EACA,KAAAuD,EACA,UAAW;AAAA,gBACPslC,CAAW;AAAA,gBACXC,EAAYz8B,CAAI,CAAC;AAAA,gBACjB08B,EAAe38B,CAAO,CAAC;AAAA,gBACvB48B,CAAa;AAAA,gBACbE,CAAY;AAAA,gBACZQ,EAAY,IAAI;AAAA,gBAChBA,EAAY,KAAK;AAAA,gBACjB/tC,CAAS;AAAA,cACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EACvB,MAAO,CACL,WAAY,6CACZ,WAAY,IACZ,GAAGoE,EAAM,KAAA,EAEX,SAAA6M,EACA,SAAAE,EACC,GAAG/M,CAAA,CAAA,EAEL0M,GACCX,EAAAA,IAAC,MAAA,CAAI,UAAU,wFACZ,SAAAW,CAAA,CACH,CAAA,EAEJ,EAKFX,EAAAA,IAAC,QAAA,CACC,IAAA9L,EACA,KAAAuD,EACA,UAAW;AAAA,YACPslC,CAAW;AAAA,YACXC,EAAYz8B,CAAI,CAAC;AAAA,YACjB08B,EAAe38B,CAAO,CAAC;AAAA,YACvB48B,CAAa;AAAA,YACbE,CAAY;AAAA,YACZvtC,CAAS;AAAA,UACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EACvB,MAAO,CACL,WAAY,6CACZ,WAAY,IACZ,GAAGoE,EAAM,KAAA,EAEX,SAAA6M,EACA,SAAAE,EACC,GAAG/M,CAAA,CAAA,CAGV,CACF,EAEA8M,GAAM,YAAc,QCxGb,MAAMyS,GAAQ1f,EAAAA,WACnB,CACE,CACE,SAAAE,EACA,QAAAsM,EAAU,QACV,MAAAsN,EAAQ,SACR,KAAArN,EAAO,KACP,YAAAkT,EAAc,GACd,UAAAC,EACA,UAAA7jB,EAAY,GACZ,QAAAwa,EACA,UAAAmI,EAAY,GACZ,GAAGve,CAAA,EAELC,IACG,CACH,MAAMyf,EAAQrT,IAAY,MACpBiT,EAAcf,GAAa,CAAC,CAACnI,EAC7BuJ,EAAgBH,GAAe,CAAC,CAACC,EAEjCG,EAAiB5e,GAAwB,CAC7CA,EAAE,gBAAA,EACFye,GAAA,MAAAA,GACF,EAEMhJ,EAAc,IAAM,CACpB6I,IACFlJ,GAAA,MAAAA,IAEJ,EAEM5H,EAAiBxN,GAA2B,CAC5Cse,IAAgBte,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjDA,EAAE,eAAA,EACFoV,GAAA,MAAAA,IAEJ,EAGM2C,EAAU2G,EAAQ,KAAO3f,EAEzB+oC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASdC,EAAc,CAClB,GAAIrpB,EAAQ,UAAY,iCACxB,GAAIA,EAAQ,UAAY,iCACxB,GAAIA,EAAQ,UAAY,kCAAA,EAGpBspB,EAAiB,CACrB,MAAO,mCACP,QAAS,yCACT,IAAK,eACL,UAAW,2CAAA,EAGPY,EAAe,CACnB,OAAQv9B,IAAY,UAAY,8BAAgC,uCAChE,QAASA,IAAY,UAAY,kCAAoC,2CACrE,QAASA,IAAY,UAAY,oCAAsC,6CACvE,MAAOA,IAAY,UAAY,8BAAgC,uCAC/D,KAAMA,IAAY,UAAY,gCAAkC,yCAChE,QAASA,IAAY,UAAY,gCAAkC,wCAAA,EAG/Dk9B,EAAqBjqB,EACvB,uKACA,GAEE+pB,EAAkB;AAAA,QACpBP,CAAW;AAAA,QACXC,EAAYz8B,CAAI,CAAC;AAAA,QACjB08B,EAAe38B,CAAO,CAAC;AAAA,QACvBA,IAAY,SAAWA,IAAY,YAAcu9B,EAAajwB,CAAK,EAAI,EAAE;AAAA,QACzE4vB,CAAkB;AAAA,QAClB3tC,CAAS;AAAA,MACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAGjBikB,EACJ9T,EAAAA,IAAC,MAAA,CACC,QAAQ,YACR,KAAK,eACL,UAAU,eACV,cAAY,OAEZ,SAAAA,EAAAA,IAAC,OAAA,CAAK,EAAE,uGAAA,CAAuG,CAAA,CAAA,EAInH,OACEC,EAAAA,KAAC,OAAA,CACC,IAAA/L,EACA,UAAWopC,EACX,MAAO,CACL,WAAY,yDACZ,WAAY,IACZ,cAAe,SACf,WAAY,EACZ,GAAGrpC,EAAM,KAAA,EAEX,QAASsf,EAAc7I,EAAc,OACrC,UAAW6I,EAAc9Q,EAAgB,OACzC,KAAM8Q,EAAc,SAAWI,EAAQ,SAAW,OAClD,SAAUJ,EAAc,EAAI,OAC5B,aACEI,EACI,GAAG/F,CAAK,oBACR,OAAO5Z,GAAa,SAClBA,EACA,OAEP,GAAGC,EAEH,SAAA,CAAA+Y,EAEA4G,GACC5T,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAU,2DACV,QAAS6T,EACT,aAAW,gBACX,SAAU,GAET,SAAAC,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,CACF,EAEAN,GAAM,YAAc,QC7IpB,MAAMc,GAAQxgB,EAAAA,WACZ,CACE,CACE,SAAAE,EACA,UAAAnE,EAAY,GACZ,KAAA4H,EAAO,OACP,QAAA6I,EAAU,SACV,KAAAC,EAAO,KACP,YAAAkT,EAAc,GACd,UAAAC,EACA,GAAGzf,CAAA,EAELC,IACG,CACH,KAAM,CAACqgB,EAAWC,CAAY,EAAI1S,EAAAA,SAAS,EAAK,EAC1C,CAAC2S,EAAWC,CAAY,EAAI5S,EAAAA,SAAS,EAAK,EAE1C+R,EAAgB,IAAM,CAC1Ba,EAAa,EAAI,EAEjB,WAAW,IAAM,CACfF,EAAa,EAAI,EACjBd,GAAA,MAAAA,GACF,EAAG,GAAG,CACR,EAEA,GAAIa,EACF,OAAO,KAGT,MAAMwoB,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUdC,EAAc,CAClB,GAAI,4BACJ,GAAI,+BACJ,GAAI,4BAAA,EAGAc,EAAqB,CACzB,KAAM,CACJ,OAAQ,sCACR,QAAS,qDAAA,EAEX,QAAS,CACP,OAAQ,uCACR,QAAS,uDAAA,EAEX,QAAS,CACP,OAAQ,wCACR,QAAS,yDAAA,EAEX,MAAO,CACL,OAAQ,kFACR,QAAS,gGAAA,CACX,EAGIC,EAAqBtqB,EAAc,QAAU,GAE7C6pB,EAAkB;AAAA,QACpBP,CAAW;AAAA,QACXC,EAAYz8B,CAAI,CAAC;AAAA,QACjBu9B,EAAmBrmC,CAAI,EAAE6I,CAAO,CAAC;AAAA,QACjCy9B,CAAkB;AAAA,QAClBluC,CAAS;AAAA,MACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAEvB,OACEoQ,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAWopC,EACX,MAAO,CACL,WAAY,yDACZ,UAAW7oB,EACP,iEACA,6DACJ,GAAGxgB,EAAM,KAAA,EAEX,KAAK,QACL,YAAU,SACT,GAAGA,EAEJ,SAAA,CAAA+L,MAAC,QAAA,CACE,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAiCH,EACChM,EACAyf,GACCzT,EAAAA,IAAC,SAAA,CACC,UAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAMPO,IAAS,KAAO,sBAAwBA,IAAS,KAAO,gBAAkB,EAAE;AAAA,cAEhF,QAASsT,EACT,aAAW,gBACX,KAAK,SAEL,SAAA7T,EAAAA,IAAC,MAAA,CACC,MAAOO,IAAS,KAAO,GAAKA,IAAS,KAAO,GAAK,GACjD,OAAQA,IAAS,KAAO,GAAKA,IAAS,KAAO,GAAK,GAClD,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAP,EAAAA,IAAC,OAAA,CACC,EAAE,uBACF,OAAO,eACP,YAAY,IACZ,cAAc,QAAA,CAAA,CAChB,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAIR,CACF,EAEM2U,GAAY7gB,EAAAA,WAChB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAY,GAAI,GAAGoE,CAAA,EAASC,IAErC8L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAW;AAAA;AAAA,YAEPrE,CAAS;AAAA,UACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EACtB,GAAGoE,EAEH,SAAAD,SAAa4gB,GAAA,CAAA,CAAY,CAAA,CAAA,CAIlC,EAEMC,GAAe/gB,EAAAA,WACnB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAY,GAAI,GAAGoE,CAAA,EAASC,IAErC8L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAW;AAAA;AAAA,YAEPrE,CAAS;AAAA,UACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EACtB,GAAGoE,EAEH,SAAAD,CAAA,CAAA,CAIT,EAEM8gB,GAAahhB,EAAAA,WACjB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAY,GAAI,GAAGoE,CAAA,EAASC,IAErC8L,EAAAA,IAAC,KAAA,CACC,IAAA9L,EACA,UAAW;AAAA;AAAA;AAAA,YAGPrE,CAAS;AAAA,UACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EACvB,MAAO,CACL,WAAY,0EACZ,cAAe,SACf,GAAGoE,EAAM,KAAA,EAEV,GAAGA,EAEH,SAAAD,CAAA,CAAA,CAIT,EAEM+gB,GAAmBjhB,EAAAA,WACvB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAY,GAAI,GAAGoE,CAAA,EAASC,IAErC8L,EAAAA,IAAC,IAAA,CACC,IAAA9L,EACA,UAAW;AAAA;AAAA,YAEPrE,CAAS;AAAA,UACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EACtB,GAAGoE,EAEH,SAAAD,CAAA,CAAA,CAIT,EAEMghB,GAAelhB,EAAAA,WACnB,CAAC,CAAE,SAAAE,EAAU,UAAAnE,EAAY,GAAI,GAAGoE,CAAA,EAASC,IAErC8L,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAW;AAAA;AAAA;AAAA,YAGPrE,CAAS;AAAA,UACX,QAAQ,OAAQ,GAAG,EAAE,KAAA,EACtB,GAAGoE,EAEH,SAAAD,CAAA,CAAA,CAIT,EAGM4gB,GAAc,IAClB3U,EAAAA,KAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAA,CAAAD,EAAAA,IAAC,SAAA,CACC,GAAG,KACH,GAAG,KACH,EAAE,IACF,OAAO,eACP,YAAY,IACZ,KAAK,MAAA,CAAA,EAEPA,EAAAA,IAAC,OAAA,CACC,EAAE,WACF,OAAO,eACP,YAAY,IACZ,cAAc,QAAA,CAAA,EAEhBA,EAAAA,IAAC,SAAA,CACC,GAAG,KACH,GAAG,KACH,EAAE,IACF,KAAK,cAAA,CAAA,CACP,CAAA,CACF,EAGFsU,GAAM,YAAc,QACpBK,GAAU,YAAc,aACxBE,GAAa,YAAc,gBAC3BC,GAAW,YAAc,cACzBC,GAAiB,YAAc,oBAC/BC,GAAa,YAAc,gBAG3B,MAAMC,GAAiBX,GAQvBW,GAAe,KAAON,GACtBM,GAAe,QAAUJ,GACzBI,GAAe,MAAQH,GACvBG,GAAe,YAAcF,GAC7BE,GAAe,QAAUD,GC5TlB,MAAMzN,GAAWzT,EAAAA,WACtB,CACE,CACE,UAAAjE,EAAY,GACZ,KAAA0Q,EAAO,KACP,MAAA0G,EACA,cAAAO,EAAgB,GAChB,MAAAjR,EAAQ,GACR,gBAAAqK,EAAkB,GAClB,SAAAE,EACA,GAAAqE,EACA,GAAGlR,CAAA,EAELC,IACG,CACH,MAAMuT,EAAcnV,EAAAA,OAAyB,IAAI,EAC3CoV,EAAcxT,GAAOuT,EAG3BnU,EAAAA,UAAU,IAAM,CACd,MAAMqU,EAAW,OAAOD,GAAgB,WAAa,KAAOA,EAAY,QACpEC,IACFA,EAAS,cAAgBH,EAE7B,EAAG,CAACA,EAAeE,CAAW,CAAC,EAE/B,MAAME,EAAazC,GAAM,YAAY,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,CAAC,GAEtE63B,EAAc,CAClB,GAAI,UACJ,GAAI,UACJ,GAAI,SAAA,EAGAgB,EAAmB,CACvB,GAAI,UACJ,GAAI,YACJ,GAAI,SAAA,EAGAlG,EAAmB;AAAA;AAAA,QAErBh3B,EAAW,gCAAkC,EAAE;AAAA,QAC/CjR,CAAS;AAAA,MAGPouC,EAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,QAKpBjB,EAAYz8B,CAAI,CAAC;AAAA,QACjBK,EAAkB,6BAA+B,EAAE;AAAA,QACnDrK,EAAQ,iBAAmB,cAAc;AAAA,QACzCuK,EAAW,iCAAmC,EAAE;AAAA;AAAA,QAEhDF,EAAkB,mCAAqC,EAAE;AAAA,QACzDrK,GAASqK,EAAkB,qCAAuC,EAAE;AAAA;AAAA,QAEpEA,EAAkB,oCAAsC,EAAE;AAAA,QAC1DrK,GAASqK,EAAkB,sCAAwC,EAAE;AAAA;AAAA,QAErEE,EAAW,6FAA+F,EAAE;AAAA,MAG1Go9B,EAAe;AAAA;AAAA,QAEjBp9B,EAAW,qBAAuB,EAAE;AAAA,MAGlCq9B,EAAmB;AAAA;AAAA,QAErB5nC,EAAQ,eAAiB,YAAY;AAAA,QACrCiR,EAAgB,YAAc,EAAE;AAAA,MAG9B42B,EAA2B;AAAA;AAAA,QAE7B52B,EAAgB,cAAgB,WAAW;AAAA,QAC3CjR,EAAQ,aAAe,UAAU;AAAA,MAG/B8nC,EAAe;AAAA;AAAA,QAEjBL,EAAiBz9B,CAAI,CAAC;AAAA,QACtBO,EAAW,mCAAqC,qBAAqB;AAAA,MAGzE,OACEb,EAAAA,KAAC,MAAA,CAAI,UAAW63B,EACd,SAAA,CAAA73B,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACC,IAAK0H,EACL,KAAK,WACL,GAAIE,EACJ,UAAW,GAAGs2B,CAAY,mEAC1B,SAAAp9B,EACA,eAAcvK,EACb,GAAGtC,CAAA,CAAA,EAENgM,EAAAA,KAAC,MAAA,CAAI,UAAWg+B,EACd,SAAA,CAAAj+B,EAAAA,IAAC,MAAA,CACC,UAAWm+B,EACX,QAAQ,YACR,KAAK,OACL,cAAY,OAEZ,SAAAn+B,EAAAA,IAAC,OAAA,CACC,EAAE,kBACF,OAAO,eACP,YAAY,IACZ,cAAc,SACd,eAAe,OAAA,CAAA,CACjB,CAAA,EAEFA,EAAAA,IAAC,MAAA,CAAI,UAAWo+B,CAAA,CAA0B,CAAA,CAAA,CAC5C,CAAA,EACF,EACCn3B,GACCjH,EAAAA,IAAC,QAAA,CACC,QAAS4H,EACT,UAAWy2B,EACX,MAAO,CACL,WAAY,wDAAA,EAGb,SAAAp3B,CAAA,CAAA,QAIJ,QAAA,CACE,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAA,CAMH,CAAA,EACF,CAEJ,CACF,EAEAM,GAAS,YAAc,WClIhB,MAAM2K,GAASpe,EAAAA,WACpB,CACE,CACE,IAAAqe,EACA,IAAAC,EACA,SAAAC,EACA,KAAAC,EACA,KAAA/R,EAAO,KACP,OAAAgS,EACA,UAAA1iB,EAAY,GACZ,QAAAwa,EACA,UAAAmI,EAAY,GACZ,GAAGve,CAAA,EAELC,IACG,CACH,KAAM,CAACue,EAAYC,CAAa,EAAI5Q,EAAAA,SAAS,EAAK,EAC5C,CAAC6Q,EAAaC,CAAc,EAAI9Q,EAAAA,SAAS,EAAK,EAE9C+Q,EAAmB,IAAM,CAC7BH,EAAc,EAAI,CACpB,EAEMI,EAAkB,IAAM,CAC5BF,EAAe,EAAI,EACnBF,EAAc,EAAK,CACrB,EAEMK,EAAWZ,GAAO,CAACM,EACnBO,EAAcX,GAAYA,EAAS,OAAS,EAC5CY,EAAUX,EAGVY,EAAYH,EACZI,EAAe,CAACJ,GAAYC,EAC5BI,EAAW,CAACL,GAAY,CAACC,GAAeC,EAGxCI,EAAkBhB,EAAWA,EAAS,MAAM,EAAG,CAAC,EAAE,cAAgB,GAGlEiB,EACJtT,EAAAA,IAAC,MAAA,CACC,QAAQ,YACR,KAAK,eACL,UAAU,gBAEV,SAAAA,EAAAA,IAAC,OAAA,CAAK,EAAE,+GAAA,CAA+G,CAAA,CAAA,EAIrHuT,EAAcf,GAAa,CAAC,CAACnI,EAE7B2yB,EAAc,CAClB,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,YACJ,GAAI,WAAA,EAGAsB,EAAkB,CACtB,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,SAAA,EAGAC,EAAoB,CACxB,GAAI,cACJ,GAAI,UACJ,GAAI,cACJ,GAAI,UACJ,GAAI,SAAA,EAGAC,EAAqB,CACzB,OAAQ,eACR,QAAS,cACT,KAAM,aACN,KAAM,eAAA,EAGF1G,EAAmB;AAAA;AAAA,QAErBvkB,EAAc,iBAAmB,EAAE;AAAA,QACnC1jB,CAAS;AAAA,MAGP4uC,EAAgB;AAAA,QAClBzB,EAAYz8B,CAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMjBgT,EAAc,iFAAmF,EAAE;AAAA,QACnGA,EAAc,kFAAoF,EAAE;AAAA,QACpGA,EAAc,6EAA+E,EAAE;AAAA,MAG7FmrB,EAAgB;AAAA;AAAA,QAElBH,EAAkBh+B,CAAI,CAAC;AAAA,QACvBi+B,EAAmBjsB,CAAO,CAAC;AAAA;AAAA;AAAA,MAK/B,OACEtS,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAW4jC,EACX,QAASvkB,EAAclJ,EAAU,OACjC,KAAMkJ,EAAc,SAAW,OAC/B,SAAUA,EAAc,EAAI,OAC5B,UACEA,EACKte,GAAM,EACDA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjCA,EAAE,eAAA,EACFoV,GAAA,MAAAA,IAEJ,EACA,OAEN,aAAY+H,GAAO,SAASC,EAAW,QAAQA,CAAQ,GAAK,EAAE,GAE9D,SAAA,CAAApS,EAAAA,KAAC,MAAA,CAAI,UAAWw+B,EACb,SAAA,CAAAvrB,GACClT,EAAAA,IAAC,MAAA,CACC,IAAAmS,EACA,IAAAC,EACA,UAAW,8BAA8BO,EAAc,cAAgB,WAAW,mCAClF,QAASE,EACT,OAAQC,EACP,GAAG7e,CAAA,CAAA,EAIPkf,GACCnT,EAAAA,IAAC,OAAA,CACC,UAAW,GAAGs+B,EAAgB/9B,CAAI,CAAC,uBACnC,MAAO,CACL,WAAY,wDAAA,EAEd,aAAY,aAAa8S,CAAe,GAEvC,SAAAA,CAAA,CAAA,EAIJD,GACCpT,EAAAA,IAAC,OAAA,CACC,UAAU,6DACV,aAAW,cAEV,SAAAsS,CAAA,CAAA,EAIJ,CAACY,GAAa,CAACC,GAAgB,CAACC,GAC/BpT,EAAAA,IAAC,OAAA,CACC,UAAU,6DACV,aAAW,iBAEV,SAAAsT,CAAA,CAAA,CACH,EAEJ,EAECf,GACCvS,EAAAA,IAAC,MAAA,CACC,UAAW0+B,EACX,aAAY,WAAWnsB,CAAM,GAC7B,KAAK,KAAA,CAAA,CACP,CAAA,CAAA,CAIR,CACF,EAEAL,GAAO,YAAc,SCrLd,MAAMkD,GAAWthB,EAAAA,WACtB,CACE,CACE,MAAAjF,EACA,IAAAsiB,EAAM,IACN,KAAA1Z,EAAO,SACP,QAAA6I,EAAU,UACV,KAAAC,EAAO,KACP,UAAA8U,EAAY,GACZ,MAAApO,EACA,cAAAO,EAAgB,GAChB,MAAAoG,EAAQ,SACR,UAAA/d,EACA,GAAGoE,CAAA,EAELC,IACG,CAEH,MAAMohB,EAAgB9N,EAAgB,OAAY,KAAK,IAAI,KAAK,KAAK3Y,GAAS,GAAKsiB,EAAM,IAAK,CAAC,EAAG,GAAG,EAC/FoE,EAAa9d,IAAS,WAGtB+d,EAAYvO,IAAUqO,IAAkB,OAAY,GAAG,KAAK,MAAMA,CAAa,CAAC,IAAM,IAGtFG,EAAUF,EAAchV,IAAS,KAAO,GAAKA,IAAS,KAAO,GAAK,GAAM,EACxEmV,EAAaH,EAAaE,EAAU,EAAI,GAAK,EAC7CE,EAAaJ,GAAcD,IAAkB,OAC/CI,EAAcJ,EAAgB,IAAOI,EACrC,EAGEK,EAAe,cACfC,EAAexO,EAAgB,OAAY3Y,GAAS,EACpDonB,EAAe,EACfC,EAAe/E,EACfgF,EAAYlP,IAAUO,EAAgB,UAAY,GAAG,KAAK,MAAM8N,GAAiB,CAAC,CAAC,qBAGnFynB,EAAcruC,EAClB,WACA,iCACAmB,CAAA,EAIIguC,EAAe,CACnB,OAAQ,kCACR,QAAS,gCACT,QAAS,kCACT,MAAO,4BACP,KAAM,6BAAA,EAGFc,EAAoB,CACxB,OAAQ,kCACR,QAAS,gCACT,QAAS,kCACT,MAAO,4BACP,KAAM,6BAAA,EAGR,GAAIppB,EAAY,CACd,MAAMa,EAAc7V,IAAS,KAAO,EAAIA,IAAS,KAAO,EAAI,EACtDyT,EAAUoC,EAAc,EACxBC,EAAUZ,EAAUzB,EAAU,EAC9BsC,EAAa,EAEbsoB,EAAkBlwC,EACtBquC,EACA,yCAAA,EAGI8B,EAAqB,CACzB,OAAQ,oBACR,QAAS,mBACT,QAAS,oBACT,MAAO,iBACP,KAAM,iBAAA,EAGFC,EAAqB,CACzB,OAAQ,oBACR,QAAS,mBACT,QAAS,oBACT,MAAO,iBACP,KAAM,iBAAA,EAGR,OACE9+B,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAW0qC,EACX,KAAM7oB,EACN,gBAAeC,EACf,gBAAeC,EACf,gBAAeC,EACf,aAAYC,EACX,GAAGliB,EAEJ,SAAAgM,EAAAA,KAAC,MAAA,CAAI,UAAU,4CACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CACC,UAAU,qBACV,MAAOoW,EACP,OAAQA,EACR,QAAS,OAAOA,CAAO,IAAIA,CAAO,GAClC,MAAO,CACL,WAAY,4BACZ,WAAY,MAAA,EAId,SAAA,CAAArW,EAAAA,IAAC,OAAA,CACC,UAAWtR,EAAK,aAAcowC,EAAmBlxB,CAAK,CAAC,EACvD,EAAGoG,EACH,EAAGA,EACH,MAAOyB,EACP,OAAQA,EACR,GAAIa,EACJ,GAAIA,EACJ,KAAK,OACL,YAAAF,CAAA,CAAA,EAGFpW,EAAAA,IAAC,OAAA,CACC,UAAWtR,EAAK,wCAAyCmwC,EAAmBjxB,CAAK,CAAC,EAClF,EAAGoG,EACH,EAAGA,EACH,MAAOyB,EACP,OAAQA,EACR,GAAIa,EACJ,GAAIA,EACJ,KAAK,OACL,YAAAF,EACA,MAAO,CACL,gBAAiBV,EACjB,iBAAkBC,CAAA,EAEpB,cAAc,SACd,UAAW,cAAcU,EAAU,CAAC,IAAIA,EAAU,CAAC,GAAA,CAAA,CACrD,CAAA,CAAA,EAEDhB,GACCrV,EAAAA,IAAC,MAAA,CACC,UAAWtR,EACT,yDACA6R,IAAS,KAAO,UAAYA,IAAS,KAAO,YAAc,SAAA,EAE5D,MAAO,CACL,WAAY,2BAAA,EAGb,SAAAiV,CAAA,CAAA,CACH,CAAA,CAEJ,CAAA,CAAA,CAGN,CAGA,MAAMupB,EAAgBrwC,EACpBquC,EACA,SACA1nB,GAAa,MAAA,EAST2pB,EAAetwC,EACnB,iDACA,+DACA,4BATkB,CAClB,GAAI,MACJ,GAAI,MACJ,GAAI,KAAA,EAOQ6R,CAAI,EAChBo+B,EAAkB/wB,CAAK,CAAA,EAGnBqxB,EAAavwC,EACjB,8CACA,+CACA,iFACAmvC,EAAajwB,CAAK,EAClBpG,GAAiB,eAAA,EAGnB,OACEvH,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAW6qC,EACX,KAAMhpB,EACN,gBAAeC,EACf,gBAAeC,EACf,gBAAeC,EACf,aAAYC,EACX,GAAGliB,EAEJ,SAAA,CAAA+L,EAAAA,IAAC,MAAA,CAAI,UAAWg/B,EACd,SAAAh/B,EAAAA,IAAC,MAAA,CACC,UAAWi/B,EACX,MAAO,CACL,MAAOz3B,EAAgB,MAAQ,GAAG8N,CAAa,IAC/C,WAAY,2BAAA,EAEd,cAAY,MAAA,CAAA,EAEhB,EACCD,GACCrV,EAAAA,IAAC,MAAA,CACC,UAAU,gDACV,MAAO,CACL,WAAY,2BAAA,EAGb,SAAAwV,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,CACF,EAEAJ,GAAS,YAAc,WCzOhB,MAAMiL,GAAUvsB,EAAAA,WACrB,CACE,CACE,KAAAyM,EAAO,KACP,MAAAqN,EAAQ,UACR,QAAAtN,EAAU,OACV,MAAAggB,EAAQ,SACR,MAAArZ,EAAQ,UACR,UAAApX,EACA,GAAGoE,CAAA,EAELC,IACG,CAEH,MAAM8oC,EAAc,CAClB,GAAI,CACF,UAAW,UACX,IAAK,UACL,IAAK,YACL,OAAQ,UACR,OAAQ,SAAA,EAEV,GAAI,CACF,UAAW,UACX,IAAK,cACL,IAAK,YACL,OAAQ,UACR,OAAQ,SAAA,EAEV,GAAI,CACF,UAAW,UACX,IAAK,UACL,IAAK,UACL,OAAQ,UACR,OAAQ,SAAA,EAEV,GAAI,CACF,UAAW,YACX,IAAK,UACL,IAAK,YACL,OAAQ,YACR,OAAQ,WAAA,CACV,EAIIa,EAAe,CACnB,QAAS,wBACT,OAAQ,kCACR,QAAS,gCACT,QAAS,kCACT,MAAO,4BACP,KAAM,6BAAA,EAIFqB,EAAe,CACnB,KAAM,gBACN,OAAQ,gBACR,KAAM,cAAA,EAGF3e,EAAgB,IAAM,CAC1B,MAAMwc,EAAcruC,EAClB,wBACAmvC,EAAajwB,CAAK,EAClBsxB,EAAa5e,CAAK,CAAA,EAGpB,OAAQhgB,EAAA,CACN,IAAK,OACH,OACEL,EAAAA,KAAAiZ,WAAA,CACE,SAAA,CAAAlZ,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,IAClB,eAAA,EAEF,MAAO,CACL,eAAgB,MAChB,WAAY,2BAAA,CACd,CAAA,EAEFP,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,IAClB,eAAA,EAEF,MAAO,CACL,eAAgB,QAChB,WAAY,2BAAA,CACd,CAAA,EAEFP,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,IAClB,eAAA,EAEF,MAAO,CACL,eAAgB,QAChB,WAAY,2BAAA,CACd,CAAA,CACF,EACF,EAEJ,IAAK,OACH,OACEN,EAAAA,KAAAiZ,WAAA,CACE,SAAA,CAAAlZ,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,IAClB,gBAAA,EAEF,MAAO,CACL,eAAgB,MAChB,WAAY,2BAAA,CACd,CAAA,EAEFP,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,IAClB,gBAAA,EAEF,MAAO,CACL,eAAgB,QAChB,WAAY,2BAAA,CACd,CAAA,EAEFP,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,IAClB,gBAAA,EAEF,MAAO,CACL,eAAgB,QAChB,WAAY,2BAAA,CACd,CAAA,EAEFP,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,IAClB,gBAAA,EAEF,MAAO,CACL,eAAgB,QAChB,WAAY,2BAAA,CACd,CAAA,CACF,EACF,EAEJ,IAAK,SACH,OACEP,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,OAClB,uBAAA,EAEF,MAAO,CACL,WAAY,2BAAA,CACd,CAAA,EAGN,IAAK,SACH,OACEN,EAAAA,KAAAiZ,WAAA,CACE,SAAA,CAAAlZ,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACTquC,EACAC,EAAYz8B,CAAI,EAAE,OAClB,gCAAA,EAEF,MAAO,CACL,eAAgB,MAChB,WAAY,2BAAA,CACd,CAAA,EAEFP,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACT,mCACAmvC,EAAajwB,CAAK,EAAE,QAAQ,MAAO,SAAS,EAC5CovB,EAAYz8B,CAAI,EAAE,OAClB,eAAA,EAEF,MAAO,CACL,eAAgB,QAChB,WAAY,2BAAA,CACd,CAAA,EAEFP,EAAAA,IAAC,OAAA,CACC,UAAWtR,EACT,yCACAsuC,EAAYz8B,CAAI,EAAE,OAClB,cAAA,EAEF,MAAO,CACL,eAAgB,QAChB,WAAY,2BAAA,CACd,CAAA,CACF,EACF,EAEJ,QACE,OAAO,IAAA,CAEb,EAEMu3B,EAAmBppC,EACvB,gDACA4R,IAAY,UAAY,WACxBA,IAAY,QAAU08B,EAAYz8B,CAAI,EAAE,UACxC1Q,CAAA,EAGF,OACEoQ,EAAAA,KAAC,MAAA,CACC,IAAA/L,EACA,UAAW4jC,EACX,KAAK,SACL,aAAY7wB,EACZ,MAAO,CACL,WAAY,4BACZ,WAAY,MAAA,EAEb,GAAGhT,EAEH,SAAA,CAAAssB,EAAA,EACDvgB,EAAAA,IAAC,OAAA,CAAK,UAAU,UAAW,SAAAiH,CAAA,CAAM,CAAA,CAAA,CAAA,CAGvC,CACF,EAEAoZ,GAAQ,YAAc,UC5Of,MAAM1F,GAAsC,CAAC,CAClD,YAAA5J,EAAc,aACd,UAAA6J,EAAY,SACZ,QAAAta,EAAU,QACV,UAAAzQ,EACA,MAAAqC,EACA,MAAA+U,EACA,cAAAqC,EAAgB,SAChB,UAAA6M,EAAY,WACd,IAAM,CACJ,MAAM0E,EAAe9J,IAAgB,aAG/BgsB,EAAcruC,EAClB,wCACAmsB,EAAe,cAAgB,uBAC/BhrB,CAAA,EAIIsvC,EAAmB,CACvB,KAAMtkB,EAAe,WAAa,WAClC,OAAQA,EAAe,aAAe,aACtC,MAAOA,EAAe,aAAe,YAAA,EAIjCukB,EAAe,CACnB,MAAO,eACP,OAAQ,6BACR,OAAQ,6BACR,OAAQ,4BAAA,EAIV,GAAIn4B,GAAS4T,EAAc,CACzB,MAAMwkB,EAAc3wC,EAClB,kBACAksB,IAAc,OAAS,OAASA,IAAc,QAAU,MAAQ,OAAA,EAI5D0kB,EAAe,IAAM,CACzB,OAAQh/B,EAAA,CACN,IAAK,SACH,MAAO,CACL,WAAY,6FACZ,eAAgB,YAChB,gBAAiB,aAAA,EAErB,IAAK,SACH,MAAO,CACL,WAAY,4FACZ,eAAgB,WAChB,gBAAiB,aAAA,EAErB,IAAK,SACH,MAAO,CACL,gBAAiB,cACjB,UAAW,kBACX,aAAc,kBACd,OAAQ,KAAA,EAEZ,QACE,MAAO,CAAA,CAAC,CAEd,EAEM+9B,EAAe3vC,EACnB,yEACA,YAAA,EAGF,OACEuR,EAAAA,KAAC,MAAA,CACC,UAAWvR,EAAKquC,EAAa,mBAAmB,EAChD,MAAO,CACL,GAAG7qC,EACH,WAAY,4BACZ,WAAY,MAAA,EAEd,KAAK,YACL,mBAAkB6e,EAClB,aAAYoF,EAEX,SAAA,CAAA7M,IAAkB,SACjBtJ,EAAAA,IAAC,MAAA,CAAI,UAAWq/B,EAAa,MAAOC,IAAgB,EAEtDt/B,EAAAA,IAAC,MAAA,CAAI,UAAWq+B,EACb,SAAA,OAAOp3B,GAAU,SAAWjH,EAAAA,IAAC,OAAA,CAAM,SAAAiH,CAAA,CAAM,EAAUA,EACtD,EACCqC,IAAkB,OACjBtJ,EAAAA,IAAC,MAAA,CAAI,UAAWq/B,EAAa,MAAOC,GAAa,CAAG,CAAA,CAAA,CAAA,CAI5D,CAGA,OACEt/B,EAAAA,IAAC,MAAA,CACC,UAAWtR,EACTquC,EACAoC,EAAiBvkB,CAAS,EAC1BwkB,EAAa9+B,CAAO,CAAA,EAEtB,MAAO,CACL,GAAGpO,EACH,WAAY,4BACZ,WAAY,MAAA,EAEd,KAAK,YACL,mBAAkB6e,EAClB,aAAYoF,CAAA,CAAA,CAGlB,EAEAwE,GAAU,YAAc,YCxHjB,MAAMpE,GAAWziB,EAAAA,WACtB,CACE,CACE,MAAA0iB,EAAQ,OACR,UAAAC,EAAY,QACZ,MAAAnT,EACA,OAAAoT,EACA,MAAAC,EAAQ,EACR,QAAArW,EAAU,UACV,UAAAzQ,EACA,MAAAqC,EACA,GAAG+B,CAAA,EAELC,IACG,CACH,MAAM0iB,EAASJ,IAAU,OACnBjB,EAAaiB,IAAU,WAGvBK,EAAuC,CAC3C,GAAG3kB,EACH,GAAIoR,GAAS,CAAE,MAAO,OAAOA,GAAU,SAAW,GAAGA,CAAK,KAAOA,CAAA,EACjE,GAAIoT,GAAU,CAAE,OAAQ,OAAOA,GAAW,SAAW,GAAGA,CAAM,KAAOA,CAAA,EACrE,WAAY,4BACZ,WAAY,MAAA,EAIVnB,GAAcjS,GAAS,CAACoT,IAC1BG,EAAgB,OAASA,EAAgB,OAI3C,MAAMkmB,EAAcruC,EAClB,iEAEAkoB,GAAU,qBACVrB,GAAc,iCACdiB,IAAU,eAAiB,oBAE3BlW,IAAY,WAAa,CAACiV,GAAc,UAExCkB,IAAc,SAAW,gBACzBA,IAAc,QAAU,oHACxB5mB,CAAA,EAIF,GAAI+mB,GAAUD,EAAQ,EAAG,CACvB,MAAMG,EAAY,MAAM,KAAK,CAAE,OAAQH,CAAA,EAAS,CAAC7T,EAAGZ,IAAU,CAE5D,MAAM6U,EADa7U,IAAUyU,EAAQ,EACN,MAAQ,OAEvC,OACE3W,EAAAA,IAAC,MAAA,CAEC,UAAWtR,EACT,oFACA+nB,IAAc,SAAW,gBACzBA,IAAc,QAAU,oHACxBnW,IAAY,WAAa,SAAA,EAE3B,MAAO,CACL,MAAOyW,EACP,aAAc7U,EAAQyU,EAAQ,EAAI,MAAQ,EAC1C,WAAY,4BACZ,WAAY,MAAA,EAEd,cAAY,MAAA,EAbPzU,CAAA,CAgBX,CAAC,EAED,OACElC,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAU,uBACV,KAAK,SACL,aAAW,kBACX,MAAO,CACL,WAAY,4BACZ,WAAY,MAAA,EAEb,GAAGD,EAEH,SAAA6iB,CAAA,CAAA,CAGP,CAGA,OACE9W,EAAAA,IAAC,MAAA,CACC,IAAA9L,EACA,UAAW6oC,EACX,MAAOlmB,EACP,KAAK,SACL,aAAW,kBACX,cAAY,OACX,GAAG5iB,CAAA,CAAA,CAGV,CACF,EAEAsiB,GAAS,YAAc","x_google_ignoreList":[0,6,7,8]}