{"version":3,"sources":["../src/components/ImportMapDevtools.tsx","../src/hooks/useImportMap.ts","../src/services/import-map.ts","../src/components/ModuleList.tsx","../src/components/ui/button.tsx","../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/class-variance-authority/dist/index.mjs","../../../node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../../node_modules/tailwind-merge/src/lib/lru-cache.ts","../../../node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../../node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../../../node_modules/tailwind-merge/src/lib/config-utils.ts","../../../node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../../node_modules/tailwind-merge/src/lib/tw-join.ts","../../../node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../../node_modules/tailwind-merge/src/lib/from-theme.ts","../../../node_modules/tailwind-merge/src/lib/validators.ts","../../../node_modules/tailwind-merge/src/lib/default-config.ts","../../../node_modules/tailwind-merge/src/lib/merge-configs.ts","../../../node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../../node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/utils/cn.ts","../src/components/ui/input.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { useImportMap } from \"../hooks/useImportMap\";\nimport { ModuleList } from \"./ModuleList\";\nimport { Button } from \"./ui/button\";\nimport { Input } from \"./ui/input\";\n\n// Type for storing module override history entries\ninterface OverrideHistoryEntry {\n  url: string;\n  timestamp: number; // Unix timestamp\n}\n\n// Type for storing override history by module name\ninterface ModuleOverrideHistory {\n  [moduleName: string]: OverrideHistoryEntry[];\n}\n\n// Type for storing active overrides by module name\ninterface ActiveOverrides {\n  [moduleName: string]: string;\n}\n\ninterface ImportMapDevtoolsProps {\n  buttonPosition?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n  buttonText?: string;\n  className?: string;\n  buttonVariant?: \"solid\" | \"outline\" | \"minimal\" | \"glass\";\n}\n\nexport function ImportMapDevtools({\n  buttonPosition = \"bottom-right\",\n  buttonText = \"Import Map\",\n  className = \"\",\n  buttonVariant = \"solid\",\n}: ImportMapDevtoolsProps) {\n  const [isOpen, setIsOpen] = useState(false);\n  const [filter, setFilter] = useState(\"\");\n  // Track override history separately from active overrides\n  const [moduleOverrideHistory, setModuleOverrideHistory] =\n    useState<ModuleOverrideHistory>({});\n  const [activeOverrides, setActiveOverrides] = useState<ActiveOverrides>({});\n  const [, setOriginalImportMap] = useState<Record<string, string> | null>(\n    null\n  );\n  // Animation state for dialog opening/closing\n  const [isClosing, setIsClosing] = useState(false);\n\n  const {\n    modules,\n    isLoading,\n    overrideModule,\n    removeOverride,\n    resetAllOverrides,\n  } = useImportMap();\n\n  // Restore all saved state from localStorage on initial load\n  useEffect(() => {\n    try {\n      // Restore original import map if it exists\n      const savedOriginal = localStorage.getItem(\n        \"import-map-devtools-original\"\n      );\n      if (savedOriginal) {\n        setOriginalImportMap(JSON.parse(savedOriginal));\n      }\n\n      // Restore active overrides\n      const savedActiveOverrides = localStorage.getItem(\n        \"import-map-devtools-active-overrides\"\n      );\n      if (savedActiveOverrides) {\n        setActiveOverrides(JSON.parse(savedActiveOverrides));\n      }\n\n      // Restore override history\n      const savedHistory = localStorage.getItem(\n        \"import-map-devtools-override-history\"\n      );\n      if (savedHistory) {\n        setModuleOverrideHistory(JSON.parse(savedHistory));\n      }\n    } catch (error) {\n      console.error(\"Failed to restore saved state:\", error);\n    }\n  }, []);\n\n  // Wrapper for override module that also saves the override by module\n  const handleOverrideModule = (moduleName: string, url: string) => {\n    overrideModule(moduleName, url);\n\n    // Get current time for history entry\n    const timestamp = Date.now();\n\n    // Update active overrides\n    const newActiveOverrides = { ...activeOverrides, [moduleName]: url };\n    setActiveOverrides(newActiveOverrides);\n\n    // Update the module override history\n    const newHistory = { ...moduleOverrideHistory };\n\n    // If this module doesn't have a history yet, create an array\n    if (!newHistory[moduleName]) {\n      newHistory[moduleName] = [];\n    }\n\n    // Add new history entry (avoid duplicates)\n    const existingEntryIndex = newHistory[moduleName].findIndex(\n      (entry) => entry.url === url\n    );\n    if (existingEntryIndex >= 0) {\n      // Update timestamp on existing entry\n      newHistory[moduleName][existingEntryIndex].timestamp = timestamp;\n    } else {\n      // Add new entry\n      newHistory[moduleName].push({ url, timestamp });\n    }\n\n    // Sort by most recent\n    newHistory[moduleName].sort((a, b) => b.timestamp - a.timestamp);\n\n    // Keep only the most recent 10 entries\n    if (newHistory[moduleName].length > 10) {\n      newHistory[moduleName] = newHistory[moduleName].slice(0, 10);\n    }\n\n    setModuleOverrideHistory(newHistory);\n\n    // Save to localStorage\n    try {\n      localStorage.setItem(\n        \"import-map-devtools-active-overrides\",\n        JSON.stringify(newActiveOverrides)\n      );\n      localStorage.setItem(\n        \"import-map-devtools-override-history\",\n        JSON.stringify(newHistory)\n      );\n    } catch (error) {\n      console.error(\"Failed to save state:\", error);\n    }\n  };\n\n  // Handle reset for a specific module\n  const handleResetModule = (moduleName: string) => {\n    removeOverride(moduleName);\n\n    // Remove from active overrides (but keep in history)\n    const newActiveOverrides = { ...activeOverrides };\n    delete newActiveOverrides[moduleName];\n    setActiveOverrides(newActiveOverrides);\n\n    // Update localStorage\n    try {\n      localStorage.setItem(\n        \"import-map-devtools-active-overrides\",\n        JSON.stringify(newActiveOverrides)\n      );\n    } catch (error) {\n      console.error(\"Failed to save after reset:\", error);\n    }\n  };\n\n  const filteredModules = modules.filter(\n    (module) =>\n      module.moduleName.toLowerCase().includes(filter.toLowerCase()) ||\n      module.originalUrl.toLowerCase().includes(filter.toLowerCase()) ||\n      (module.overrideUrl &&\n        module.overrideUrl.toLowerCase().includes(filter.toLowerCase()))\n  );\n\n  const positionClasses = {\n    \"top-left\": \"top-4 left-4\",\n    \"top-right\": \"top-4 right-4\",\n    \"bottom-left\": \"bottom-4 left-4\",\n    \"bottom-right\": \"bottom-4 right-4\",\n  };\n\n  const buttonVariantClasses = {\n    solid:\n      \"bg-indigo-600 hover:bg-indigo-700 text-white shadow-lg hover:shadow-indigo-500/40 shadow-indigo-500/20 transition-all duration-300\",\n    outline:\n      \"bg-white hover:bg-gray-50 text-indigo-600 border border-indigo-300 hover:border-indigo-500 hover:shadow-indigo-500/30 shadow-md transition-all duration-300\",\n    minimal:\n      \"bg-white/90 hover:bg-white text-gray-800 shadow-md hover:shadow-lg backdrop-blur-sm transition-all duration-300\",\n    glass:\n      \"bg-white/30 hover:bg-white/40 backdrop-blur-md text-slate-800 border border-white/50 shadow-xl hover:shadow-2xl shadow-white/20 hover:shadow-white/30 transition-all duration-300\",\n  };\n\n  // Controlled open/close with animation\n  const handleOpen = () => {\n    setIsOpen(true);\n    setIsClosing(false);\n  };\n\n  const handleClose = () => {\n    setIsClosing(true);\n    setTimeout(() => {\n      setIsOpen(false);\n      setIsClosing(false);\n    }, 300); // Match this with animation duration\n  };\n\n  // Check if we have any overrides\n  const hasOverrides = filteredModules.some((m) => !!m.overrideUrl);\n\n  // Count active overrides\n  const activeOverrideCount = filteredModules.filter(\n    (m) => !!m.overrideUrl\n  ).length;\n\n  return (\n    <>\n      <button\n        onClick={handleOpen}\n        className={`fixed ${positionClasses[buttonPosition]} z-50 font-medium py-2 px-4 rounded-full ${buttonVariantClasses[buttonVariant]} flex items-center space-x-2 transform hover:scale-105 active:scale-95 transition-all duration-300 ${className} group`}\n        aria-label=\"Toggle Import Map Devtools\"\n      >\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"h-5 w-5 group-hover:rotate-12 transition-transform duration-300\"\n          viewBox=\"0 0 20 20\"\n          fill=\"currentColor\"\n        >\n          <path\n            fillRule=\"evenodd\"\n            d=\"M12.316 3.051a1 1 0 01.633 1.265l-4 12a1 1 0 11-1.898-.632l4-12a1 1 0 011.265-.633zM5.707 6.293a1 1 0 010 1.414L3.414 10l2.293 2.293a1 1 0 11-1.414 1.414l-3-3a1 1 0 010-1.414l3-3a1 1 0 011.414 0zm8.586 0a1 1 0 011.414 0l3 3a1 1 0 010 1.414l-3 3a1 1 0 11-1.414-1.414L16.586 10l-2.293-2.293a1 1 0 010-1.414z\"\n            clipRule=\"evenodd\"\n          />\n        </svg>\n        <span className=\"relative overflow-hidden\">\n          <span className=\"group-hover:translate-y-full group-hover:opacity-0 transition-all duration-300 inline-block\">\n            {buttonText}\n          </span>\n          <span className=\"absolute top-0 left-0 -translate-y-full group-hover:translate-y-0 transition-all duration-300\">\n            {buttonText}\n          </span>\n        </span>\n        {activeOverrideCount > 0 && (\n          <span className=\"ml-1 bg-white text-indigo-600 font-semibold text-xs py-0.5 px-1.5 rounded-full inline-flex items-center justify-center min-w-[1.25rem] shadow-inner shadow-indigo-100 group-hover:scale-110 transition-transform duration-300\">\n            {activeOverrideCount}\n          </span>\n        )}\n      </button>\n\n      {isOpen && (\n        <div\n          className={`fixed inset-0 z-[9999] overflow-hidden bg-slate-900/80 backdrop-blur-sm flex items-center justify-center transition-all duration-300 ${\n            isClosing ? \"animate-out fade-out\" : \"animate-in fade-in\"\n          }`}\n          onClick={(e) => {\n            if (e.target === e.currentTarget) handleClose();\n          }}\n        >\n          <div\n            className={`bg-white dark:bg-slate-900 rounded-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.5)] dark:shadow-[0_20px_60px_-15px_rgba(0,0,0,0.7)] w-full max-w-3xl max-h-[90vh] flex flex-col border border-slate-200 dark:border-slate-700 overflow-hidden transition-all duration-300 ${\n              isClosing\n                ? \"animate-out slide-out-to-bottom-10 duration-300 zoom-out-95\"\n                : \"animate-in slide-in-from-bottom-10 duration-300 zoom-in-95\"\n            }`}\n          >\n            <div className=\"flex justify-between items-center border-b border-slate-200 dark:border-slate-700 p-4 bg-gradient-to-r from-indigo-600 to-violet-600 dark:from-indigo-800 dark:to-violet-800 text-white shadow-md animate-in fade-in-75 slide-in-from-top-2 duration-500\">\n              <div className=\"flex items-center space-x-3\">\n                <div className=\"p-2 bg-white/20 rounded-lg shadow-inner shadow-black/10 animate-in fade-in zoom-in-75 duration-700 delay-100\">\n                  <svg\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                    className=\"h-6 w-6\"\n                    viewBox=\"0 0 20 20\"\n                    fill=\"currentColor\"\n                  >\n                    <path\n                      fillRule=\"evenodd\"\n                      d=\"M12.316 3.051a1 1 0 01.633 1.265l-4 12a1 1 0 11-1.898-.632l4-12a1 1 0 011.265-.633zM5.707 6.293a1 1 0 010 1.414L3.414 10l2.293 2.293a1 1 0 11-1.414 1.414l-3-3a1 1 0 010-1.414l3-3a1 1 0 011.414 0zm8.586 0a1 1 0 011.414 0l3 3a1 1 0 010 1.414l-3 3a1 1 0 11-1.414-1.414L16.586 10l-2.293-2.293a1 1 0 010-1.414z\"\n                      clipRule=\"evenodd\"\n                    />\n                  </svg>\n                </div>\n                <h2 className=\"text-xl font-bold text-shadow animate-in slide-in-from-left-4 duration-700 delay-150\">\n                  Import Map Overrides\n                </h2>\n                {activeOverrideCount > 0 && (\n                  <span className=\"bg-white text-indigo-600 font-semibold text-xs py-1 px-2 rounded-full shadow shadow-black/10 animate-in fade-in zoom-in duration-700 delay-200\">\n                    {activeOverrideCount} active\n                  </span>\n                )}\n              </div>\n              <button\n                onClick={handleClose}\n                className=\"text-white/80 hover:text-white rounded-full p-2 hover:bg-white/10 transition-colors hover:rotate-90 transition-transform duration-300\"\n                aria-label=\"Close Import Map Devtools\"\n              >\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  className=\"h-5 w-5\"\n                  fill=\"none\"\n                  viewBox=\"0 0 24 24\"\n                  stroke=\"currentColor\"\n                >\n                  <path\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    strokeWidth={2}\n                    d=\"M6 18L18 6M6 6l12 12\"\n                  />\n                </svg>\n              </button>\n            </div>\n\n            <div className=\"p-4 border-b border-slate-200 dark:border-slate-700 space-y-4 bg-slate-50 dark:bg-slate-800/50 shadow-sm animate-in fade-in slide-in-from-top-2 duration-700 delay-200\">\n              <div className=\"flex flex-col sm:flex-row sm:items-center gap-4\">\n                <div className=\"relative flex-1 group animate-in fade-in-50 slide-in-from-left-4 duration-700 delay-300\">\n                  <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n                    <svg\n                      className=\"h-5 w-5 text-slate-400 group-focus-within:text-indigo-500 transition-colors duration-300\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      viewBox=\"0 0 20 20\"\n                      fill=\"currentColor\"\n                    >\n                      <path\n                        fillRule=\"evenodd\"\n                        d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n                        clipRule=\"evenodd\"\n                      />\n                    </svg>\n                  </div>\n                  <Input\n                    value={filter}\n                    onChange={(e) => setFilter(e.target.value)}\n                    placeholder=\"Filter modules...\"\n                    className=\"pl-10 pr-10 bg-white dark:bg-slate-800 border-slate-200 dark:border-slate-700 focus:ring-indigo-500 dark:focus:ring-indigo-400 focus:border-indigo-500 dark:focus:border-indigo-400 shadow-md transition-shadow duration-300 focus:shadow-lg\"\n                  />\n                  {filter && (\n                    <button\n                      onClick={() => setFilter(\"\")}\n                      className=\"absolute right-2 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 dark:hover:text-slate-300 p-1 rounded-full hover:bg-slate-100 dark:hover:bg-slate-700 transition-colors shadow-sm hover:shadow active:scale-90 transition-transform\"\n                      aria-label=\"Clear filter\"\n                    >\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        className=\"h-4 w-4\"\n                        viewBox=\"0 0 20 20\"\n                        fill=\"currentColor\"\n                      >\n                        <path\n                          fillRule=\"evenodd\"\n                          d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n                          clipRule=\"evenodd\"\n                        />\n                      </svg>\n                    </button>\n                  )}\n                </div>\n                <div className=\"flex gap-2 animate-in fade-in-50 slide-in-from-right-4 duration-700 delay-300\">\n                  <Button\n                    variant=\"destructive\"\n                    onClick={resetAllOverrides}\n                    className=\"w-full sm:w-auto shadow-md hover:shadow-lg transition-all flex items-center gap-1 active:scale-95 transition-transform\"\n                    disabled={!hasOverrides}\n                  >\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      className=\"h-4 w-4 group-hover:rotate-180 transition-transform duration-500\"\n                      fill=\"none\"\n                      viewBox=\"0 0 24 24\"\n                      stroke=\"currentColor\"\n                    >\n                      <path\n                        strokeLinecap=\"round\"\n                        strokeLinejoin=\"round\"\n                        strokeWidth={2}\n                        d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n                      />\n                    </svg>\n                    Reset All\n                  </Button>\n                </div>\n              </div>\n            </div>\n\n            <div className=\"flex-1 overflow-auto p-4 bg-white dark:bg-slate-900 rounded-b-xl animate-in fade-in-75 slide-in-from-bottom-4 duration-700 delay-300\">\n              {isLoading ? (\n                <div className=\"flex flex-col justify-center items-center h-40 space-y-4\">\n                  <div className=\"animate-spin rounded-full h-10 w-10 border-4 border-indigo-600 border-t-transparent shadow-md\"></div>\n                  <p className=\"text-slate-500 dark:text-slate-400 text-sm animate-pulse\">\n                    Loading modules...\n                  </p>\n                </div>\n              ) : filteredModules.length === 0 ? (\n                <div className=\"flex flex-col items-center justify-center h-40 text-center p-4 bg-slate-50/50 dark:bg-slate-800/20 rounded-lg border border-slate-100 dark:border-slate-800 shadow-lg animate-in fade-in zoom-in-95 duration-700\">\n                  <div className=\"bg-slate-100 dark:bg-slate-800 p-3 rounded-full mb-4 shadow-inner animate-in zoom-in-50 duration-700 delay-100\">\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      className=\"h-8 w-8 text-slate-400\"\n                      fill=\"none\"\n                      viewBox=\"0 0 24 24\"\n                      stroke=\"currentColor\"\n                    >\n                      <path\n                        strokeLinecap=\"round\"\n                        strokeLinejoin=\"round\"\n                        strokeWidth={1.5}\n                        d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n                      />\n                    </svg>\n                  </div>\n                  <h3 className=\"text-slate-700 dark:text-slate-300 font-medium mb-1 drop-shadow animate-in fade-in-50 slide-in-from-bottom-2 duration-700 delay-150\">\n                    No modules found\n                  </h3>\n                  <p className=\"text-slate-500 dark:text-slate-400 text-sm animate-in fade-in-50 slide-in-from-bottom-1 duration-700 delay-200\">\n                    {filter\n                      ? \"No modules match your filter. Try a different search term.\"\n                      : \"No modules found. Make sure you have an import map on this page.\"}\n                  </p>\n                </div>\n              ) : (\n                <div className=\"animate-in fade-in-75 duration-500 delay-300\">\n                  <ModuleList\n                    modules={filteredModules}\n                    onReset={handleResetModule}\n                    onSave={handleOverrideModule}\n                    moduleOverrideHistory={moduleOverrideHistory}\n                    activeOverrides={activeOverrides}\n                  />\n                </div>\n              )}\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n}\n","import { useState, useEffect, useCallback } from \"react\";\nimport { ImportMapModule, importMapService } from \"../services/import-map\";\n\nexport function useImportMap() {\n  const [modules, setModules] = useState<ImportMapModule[]>([]);\n  const [isLoading, setIsLoading] = useState(true);\n\n  const refreshModules = useCallback(() => {\n    setModules(importMapService.getAllModules());\n    setIsLoading(false);\n  }, []);\n\n  useEffect(() => {\n    // Initial load and apply any existing overrides\n    // This ensures import maps are updated when the component mounts\n    refreshModules();\n    importMapService.applyOverridesOnInit();\n\n    // Listen for changes\n    const handleChange = () => {\n      refreshModules();\n    };\n\n    window.addEventListener(\"import-map-overrides:change\", handleChange);\n\n    return () => {\n      window.removeEventListener(\"import-map-overrides:change\", handleChange);\n    };\n  }, [refreshModules]);\n\n  const overrideModule = useCallback((moduleName: string, url: string) => {\n    importMapService.override(moduleName, url);\n  }, []);\n\n  const removeOverride = useCallback((moduleName: string) => {\n    importMapService.removeOverride(moduleName);\n  }, []);\n\n  const resetAllOverrides = useCallback(() => {\n    importMapService.resetAll();\n  }, []);\n\n  const isOverridden = useCallback((moduleName: string) => {\n    return importMapService.isOverridden(moduleName);\n  }, []);\n\n  return {\n    modules,\n    isLoading,\n    overrideModule,\n    removeOverride,\n    resetAllOverrides,\n    isOverridden,\n    refreshModules,\n  };\n}\n","const LOCAL_STORAGE_KEY = \"import-map-overrides\";\nconst ORIGINALS_STORAGE_KEY = \"import-map-originals\";\n\nexport interface ImportMapModule {\n  moduleName: string;\n  originalUrl: string;\n  overrideUrl: string | null;\n}\n\nexport class ImportMapService {\n  private loaderReady: boolean;\n\n  constructor() {\n    this.loaderReady = false;\n\n    // Check if the loader event has already been dispatched\n    this.checkLoaderStatus();\n\n    // Listen for the loader to be ready\n    window.addEventListener(\"import-map-devtools:loader-ready\", () => {\n      console.log(\"[Import Map Devtools] Detected loader is active\");\n      this.loaderReady = true;\n    });\n  }\n\n  private checkLoaderStatus() {\n    // We can't directly check if the loader is already initialized,\n    // but we can check if its effects are visible\n    const importMaps = document.querySelectorAll('script[type=\"importmap\"]');\n    if (importMaps.length > 0) {\n      // Check if any import map has overrides applied\n      const overrides = this.getOverrides();\n      for (const importMap of importMaps) {\n        try {\n          const map = JSON.parse(importMap.textContent || \"{}\");\n          if (map.imports) {\n            for (const [moduleName, url] of Object.entries(overrides)) {\n              if (map.imports[moduleName] === url) {\n                this.loaderReady = true;\n                console.log(\n                  \"[Import Map Devtools] Loader appears to be active (overrides detected)\"\n                );\n                return;\n              }\n            }\n          }\n        } catch {\n          // Ignore parsing errors\n        }\n      }\n    }\n  }\n\n  /**\n   * Get the current import map from the DOM\n   */\n  getBaseImportMap(): Record<string, string> {\n    // First try to get original URLs from localStorage\n    const originals = this.getOriginalUrls();\n    if (Object.keys(originals).length > 0) {\n      console.log(\n        \"[Import Map Devtools] Using original URLs from localStorage\"\n      );\n      return originals;\n    }\n\n    // If no originals in localStorage, try to extract from the current import map\n    const importMaps = document.querySelectorAll('script[type=\"importmap\"]');\n    const importMap: Record<string, string> = {};\n\n    importMaps.forEach((importMapEl) => {\n      try {\n        const map = JSON.parse(importMapEl.textContent || \"{}\");\n        if (map.imports) {\n          Object.assign(importMap, map.imports);\n        }\n      } catch (e) {\n        console.error(\"Error parsing import map:\", e);\n      }\n    });\n\n    // Remove any override URLs to get the actual base map\n    const overrides = this.getOverrides();\n    for (const moduleName of Object.keys(overrides)) {\n      // If the current URL is from an override, remove it\n      if (importMap[moduleName] === overrides[moduleName]) {\n        delete importMap[moduleName];\n      }\n    }\n\n    return importMap;\n  }\n\n  /**\n   * Get original URLs from localStorage\n   */\n  getOriginalUrls(): Record<string, string> {\n    try {\n      return JSON.parse(localStorage.getItem(ORIGINALS_STORAGE_KEY) || \"{}\");\n    } catch (e) {\n      console.error(\"Error retrieving original import map URLs:\", e);\n      return {};\n    }\n  }\n\n  /**\n   * Get all overrides from local storage\n   */\n  getOverrides(): Record<string, string> {\n    try {\n      return JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY) || \"{}\");\n    } catch (e) {\n      console.error(\n        \"Error retrieving import map overrides from localStorage\",\n        e\n      );\n      return {};\n    }\n  }\n\n  /**\n   * Get the effective import map (base map + overrides)\n   */\n  getEffectiveImportMap(): Record<string, string> {\n    const baseMap = this.getBaseImportMap();\n    const overrides = this.getOverrides();\n\n    return { ...baseMap, ...overrides };\n  }\n\n  /**\n   * Initialize and apply any existing overrides\n   * This should be called when the application starts\n   */\n  applyOverridesOnInit(): void {\n    // If the loader is active, we don't need to apply overrides here\n    if (this.loaderReady) {\n      console.log(\n        \"[Import Map Devtools] Loader is handling overrides, skipping manual application\"\n      );\n      return;\n    }\n\n    const overrides = this.getOverrides();\n    if (Object.keys(overrides).length > 0) {\n      console.log(\"Initializing with import map overrides:\", overrides);\n      this.applyOverridesToImportMap();\n    }\n  }\n\n  /**\n   * Get a list of all modules with their original and override URLs\n   */\n  getAllModules(): ImportMapModule[] {\n    const originalUrls = this.getOriginalUrls();\n    const baseMap = this.getBaseImportMap();\n    const overrides = this.getOverrides();\n\n    // Combine all sources to get a complete list of module names\n    const allModuleNames = new Set([\n      ...Object.keys(originalUrls),\n      ...Object.keys(baseMap),\n      ...Object.keys(overrides),\n    ]);\n\n    return Array.from(allModuleNames).map((moduleName) => {\n      // The original URL is first checked from originalUrls, then from baseMap\n      const originalUrl = originalUrls[moduleName] || baseMap[moduleName] || \"\";\n\n      return {\n        moduleName,\n        originalUrl,\n        overrideUrl: overrides[moduleName] || null,\n      };\n    });\n  }\n\n  /**\n   * Check if a module is currently overridden\n   */\n  isOverridden(moduleName: string): boolean {\n    const overrides = this.getOverrides();\n    return !!overrides[moduleName];\n  }\n\n  /**\n   * Override a module with a new URL\n   */\n  override(moduleName: string, url: string): void {\n    // Before overriding, ensure we've saved the original URL\n    const originals = this.getOriginalUrls();\n    const baseMap = this.getBaseImportMap();\n\n    if (!originals[moduleName] && baseMap[moduleName]) {\n      // Save the original URL if we don't have it yet\n      const updatedOriginals = {\n        ...originals,\n        [moduleName]: baseMap[moduleName],\n      };\n      localStorage.setItem(\n        ORIGINALS_STORAGE_KEY,\n        JSON.stringify(updatedOriginals)\n      );\n      console.log(\n        `Saved original URL for ${moduleName}: ${baseMap[moduleName]}`\n      );\n    }\n\n    // Now apply the override without cache busting\n    const overrides = this.getOverrides();\n    overrides[moduleName] = url;\n    localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(overrides));\n    this.dispatchChangeEvent();\n\n    // Apply the overrides to the DOM's import map\n    // The loader should handle this automatically if it's active,\n    // but we'll do it manually if needed\n    if (!this.loaderReady) {\n      this.applyOverridesToImportMap();\n    }\n  }\n\n  /**\n   * Remove an override for a module\n   */\n  removeOverride(moduleName: string): void {\n    const overrides = this.getOverrides();\n    if (overrides[moduleName]) {\n      delete overrides[moduleName];\n      localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(overrides));\n      this.dispatchChangeEvent();\n\n      // Apply the overrides to the DOM's import map\n      if (!this.loaderReady) {\n        this.applyOverridesToImportMap();\n      }\n    }\n  }\n\n  /**\n   * Reset all overrides\n   */\n  resetAll(): void {\n    localStorage.removeItem(LOCAL_STORAGE_KEY);\n    this.dispatchChangeEvent();\n\n    // Apply the overrides to the DOM's import map\n    if (!this.loaderReady) {\n      this.applyOverridesToImportMap();\n    }\n  }\n\n  /**\n   * Merge all import maps in the document\n   */\n  private mergeImportMaps(): boolean {\n    const importMaps = document.querySelectorAll('script[type=\"importmap\"]');\n\n    if (importMaps.length <= 1) {\n      console.log(\"No need to merge import maps, one or fewer found\");\n      return false;\n    }\n\n    console.log(`Found ${importMaps.length} import maps, merging into one`);\n\n    // Combine all import maps\n    const combined = { imports: {} as Record<string, string> };\n\n    importMaps.forEach((importMapEl) => {\n      try {\n        const content = JSON.parse(importMapEl.textContent || '{\"imports\":{}}');\n        if (content.imports) {\n          Object.assign(combined.imports, content.imports);\n          console.log(\n            `Merged import map containing ${\n              Object.keys(content.imports).length\n            } modules`\n          );\n        }\n      } catch (e) {\n        console.error(\"Error parsing import map during merge:\", e);\n      }\n    });\n\n    // Create a new import map with combined content\n    const newImportMap = document.createElement(\"script\");\n    newImportMap.setAttribute(\"type\", \"importmap\");\n    newImportMap.textContent = JSON.stringify(combined, null, 2);\n\n    // Remove all existing import maps\n    importMaps.forEach((map) => {\n      if (map.parentNode) {\n        map.parentNode.removeChild(map);\n      }\n    });\n\n    // Add the new combined map to the head\n    document.head.insertBefore(newImportMap, document.head.firstChild);\n    console.log(\"Successfully merged all import maps into one\");\n\n    return true;\n  }\n\n  /**\n   * Apply current overrides to any import maps in the DOM\n   *\n   * This is necessary for browsers to actually use the overridden modules\n   * when they are imported. This function modifies the import map in the DOM\n   * to include the overrides.\n   */\n  applyOverridesToImportMap(): void {\n    // If the loader is active, it handles this for us\n    if (this.loaderReady) {\n      console.log(\n        \"[Import Map Devtools] Loader is handling imports, triggering reload\"\n      );\n      // Instead of modifying the DOM directly, we trigger a storage event that the loader listens for\n      window.dispatchEvent(\n        new StorageEvent(\"storage\", {\n          key: LOCAL_STORAGE_KEY,\n          newValue: localStorage.getItem(LOCAL_STORAGE_KEY),\n        })\n      );\n\n      // Also trigger the custom event for good measure\n      window.dispatchEvent(new CustomEvent(\"import-map-overrides:change\"));\n      return;\n    }\n\n    // First, ensure we only have one import map\n    const importMapElements = document.querySelectorAll(\n      'script[type=\"importmap\"]'\n    );\n\n    // If multiple import maps are found, merge them\n    if (importMapElements.length > 1) {\n      console.warn(\n        `Found ${importMapElements.length} import maps, merging them into one`\n      );\n      this.mergeImportMaps();\n    }\n\n    const overrides = this.getOverrides();\n\n    // Try to find the existing import map to modify (there should be only one now)\n    let importMapEl = document.querySelector('script[type=\"importmap\"]');\n\n    // If no import map exists, create one\n    if (!importMapEl) {\n      importMapEl = document.createElement(\"script\") as HTMLScriptElement;\n      importMapEl.setAttribute(\"type\", \"importmap\");\n      document.head.appendChild(importMapEl);\n      console.log(\"Created new import map element in DOM\");\n    }\n\n    try {\n      // Get the current import map content\n      let currentMap: { imports: Record<string, string> };\n      try {\n        currentMap = JSON.parse(importMapEl.textContent || '{\"imports\":{}}');\n      } catch (error) {\n        console.error(\"Error parsing import map, creating new one\", error);\n        currentMap = { imports: {} };\n      }\n\n      // Apply overrides\n      if (!currentMap.imports) {\n        currentMap.imports = {};\n      }\n\n      // Before applying overrides, save original URLs if we don't have them yet\n      const originals = this.getOriginalUrls();\n      let updatedOriginals = false;\n      for (const [moduleName, url] of Object.entries(currentMap.imports)) {\n        if (!originals[moduleName] && !overrides[moduleName]) {\n          originals[moduleName] = url as string;\n          updatedOriginals = true;\n        }\n      }\n      if (updatedOriginals) {\n        localStorage.setItem(ORIGINALS_STORAGE_KEY, JSON.stringify(originals));\n        console.log(\"Saved original URLs to localStorage:\", originals);\n      }\n\n      // Check if we're actually changing anything\n      let changes = 0;\n      for (const [moduleName, url] of Object.entries(overrides)) {\n        if (currentMap.imports[moduleName] !== url) {\n          console.log(\n            `Overriding \"${moduleName}\" from \"${\n              currentMap.imports[moduleName] || \"undefined\"\n            }\" to \"${url}\"`\n          );\n          currentMap.imports[moduleName] = url;\n          changes++;\n        }\n      }\n\n      if (changes > 0) {\n        // Create the new content\n        const newContent = JSON.stringify(currentMap, null, 2);\n        console.log(\"Setting new import map content:\", newContent);\n\n        // Simply update the existing import map in place\n        importMapEl.textContent = newContent;\n        console.log(`Updated import map in place with ${changes} override(s)`);\n      } else {\n        console.log(\n          \"No changes needed to import map, overrides already applied\"\n        );\n      }\n    } catch (error) {\n      console.error(\"Error applying import map overrides:\", error);\n    }\n  }\n\n  /**\n   * Dispatch a custom event when overrides change\n   */\n  private dispatchChangeEvent(): void {\n    window.dispatchEvent(new CustomEvent(\"import-map-overrides:change\"));\n  }\n}\n\n// Export a singleton instance\nexport const importMapService = new ImportMapService();\n\n/**\n * Apply import map overrides directly to the DOM\n * This is a standalone function that can be used outside of the ImportMapService\n */\nexport function applyOverridesToImportMap(): boolean {\n  try {\n    // Check if loader is ready\n    if (!window || document.readyState !== \"complete\") {\n      console.warn(\n        \"Import map loader: document not ready, delaying application of overrides\"\n      );\n      return false;\n    }\n\n    // Check for multiple import maps and merge them if needed\n    const allImportMaps = document.querySelectorAll('script[type=\"importmap\"]');\n\n    if (allImportMaps.length > 1) {\n      console.group(\"Import map loader: Merging multiple import maps\");\n      console.log(`Found ${allImportMaps.length} import maps, merging them`);\n\n      // Combine all maps - this preserves all modules from all import maps\n      const combinedMap = { imports: {} as Record<string, string> };\n\n      allImportMaps.forEach((map, index) => {\n        try {\n          const mapContent = JSON.parse(map.textContent || '{\"imports\":{}}');\n          if (mapContent.imports) {\n            console.log(\n              `Merging map #${index + 1} with ${\n                Object.keys(mapContent.imports).length\n              } entries`\n            );\n            Object.assign(combinedMap.imports, mapContent.imports);\n          }\n        } catch (err) {\n          console.error(`Failed to parse import map #${index + 1}`, err);\n        }\n      });\n\n      // Remove all existing maps except the first one\n      for (let i = 1; i < allImportMaps.length; i++) {\n        const map = allImportMaps[i];\n        if (map.parentNode) {\n          console.log(`Removing redundant import map #${i + 1}`);\n          map.parentNode.removeChild(map);\n        }\n      }\n\n      // Update the first map with the combined content\n      const firstMap = allImportMaps[0] as HTMLScriptElement;\n      firstMap.textContent = JSON.stringify(combinedMap, null, 2);\n      console.log(\"Combined all import maps into one\");\n      console.groupEnd();\n    }\n\n    // Get the import map element (now there should be only one)\n    let importMapElement = document.querySelector(\n      'script[type=\"importmap\"]'\n    ) as HTMLScriptElement;\n\n    // If no import map element exists, we create a new one\n    if (!importMapElement) {\n      console.warn(\n        \"Import map loader: No import map found, creating a new one\"\n      );\n      importMapElement = document.createElement(\"script\");\n      importMapElement.type = \"importmap\";\n      document.head.appendChild(importMapElement);\n    }\n\n    // Parse current import map\n    let currentImportMap: { imports: Record<string, string> } = { imports: {} };\n    try {\n      if (importMapElement.textContent) {\n        currentImportMap = JSON.parse(importMapElement.textContent);\n      }\n    } catch (err) {\n      console.error(\n        \"Import map loader: Failed to parse current import map\",\n        err\n      );\n      return false;\n    }\n\n    // Ensure imports object exists\n    if (!currentImportMap.imports) {\n      currentImportMap.imports = {};\n    }\n\n    // Get overrides from localStorage\n    const overridesJson = localStorage.getItem(\"import-map-overrides\");\n    if (!overridesJson) {\n      console.log(\"Import map loader: No overrides found in localStorage\");\n      return true; // No error, just no overrides\n    }\n\n    // Parse overrides\n    let overrides: Record<string, string>;\n    try {\n      overrides = JSON.parse(overridesJson);\n    } catch (err) {\n      console.error(\n        \"Import map loader: Failed to parse overrides from localStorage\",\n        err\n      );\n      return false;\n    }\n\n    // Save original URLs to localStorage if they don't exist\n    const originals: Record<string, string> = {};\n    let originalsChanged = false;\n    const originalsJson = localStorage.getItem(\"import-map-originals\");\n    const existingOriginals = originalsJson ? JSON.parse(originalsJson) : {};\n\n    // Apply overrides to the current import map\n    console.group(\"Import map loader: Applying overrides\");\n    for (const [moduleName, overrideUrl] of Object.entries(overrides)) {\n      // Save original if not already saved\n      if (\n        currentImportMap.imports[moduleName] &&\n        currentImportMap.imports[moduleName] !== overrideUrl &&\n        !existingOriginals[moduleName]\n      ) {\n        originals[moduleName] = currentImportMap.imports[moduleName];\n        originalsChanged = true;\n        console.log(\n          `Saving original URL for \"${moduleName}\": ${originals[moduleName]}`\n        );\n      }\n\n      // Apply override - only modify modules that are explicitly overridden\n      const oldValue = currentImportMap.imports[moduleName];\n      currentImportMap.imports[moduleName] = overrideUrl;\n      console.log(\n        `Overriding \"${moduleName}\": ${oldValue || \"(new)\"} -> ${overrideUrl}`\n      );\n    }\n    console.groupEnd();\n\n    // Save originals if any new ones were added\n    if (originalsChanged) {\n      const newOriginals = { ...existingOriginals, ...originals };\n      localStorage.setItem(\n        \"import-map-originals\",\n        JSON.stringify(newOriginals)\n      );\n    }\n\n    // Update the import map content in the DOM\n    importMapElement.textContent = JSON.stringify(currentImportMap, null, 2);\n\n    // No need to remove and re-add the import map - just update it in place\n    console.log(\n      \"Import map loader: Updated import map in DOM with overrides applied\"\n    );\n\n    return true;\n  } catch (err) {\n    console.error(\"Import map loader: Error applying overrides\", err);\n    return false;\n  }\n}\n\n/**\n * Function to reset all overrides\n */\nexport function resetAllOverrides(): boolean {\n  // Get the list of overridden modules before clearing\n  const overridesJson = localStorage.getItem(\"import-map-overrides\");\n  const overriddenModules = overridesJson\n    ? Object.keys(JSON.parse(overridesJson))\n    : [];\n\n  // Clear overrides from localStorage\n  localStorage.removeItem(\"import-map-overrides\");\n\n  // Get originals to restore them\n  const originalsJson = localStorage.getItem(\"import-map-originals\");\n  if (!originalsJson) {\n    console.log(\"Import map loader: No originals found to restore\");\n    return true;\n  }\n\n  try {\n    const originals = JSON.parse(originalsJson);\n\n    // Get the import map element\n    const importMapElement = document.querySelector(\n      'script[type=\"importmap\"]'\n    ) as HTMLScriptElement;\n\n    if (!importMapElement) {\n      console.error(\"Import map loader: No import map found for reset\");\n      return false;\n    }\n\n    // Parse current import map\n    let currentImportMap: { imports: Record<string, string> } = { imports: {} };\n    try {\n      if (importMapElement.textContent) {\n        currentImportMap = JSON.parse(importMapElement.textContent);\n      }\n    } catch (err) {\n      console.error(\n        \"Import map loader: Failed to parse current import map\",\n        err\n      );\n      return false;\n    }\n\n    // Restore original URLs, but only for modules that were overridden\n    console.group(\"Import map loader: Resetting to original URLs\");\n    for (const moduleName of overriddenModules) {\n      if (originals[moduleName]) {\n        console.log(\n          `Restoring \"${moduleName}\": ${currentImportMap.imports[moduleName]} -> ${originals[moduleName]}`\n        );\n        currentImportMap.imports[moduleName] = originals[moduleName];\n      } else {\n        // If we don't have an original for an overridden module, just leave it as is\n        console.log(`No original found for \"${moduleName}\", leaving as is`);\n      }\n    }\n    console.groupEnd();\n\n    // Update the import map content in the DOM\n    importMapElement.textContent = JSON.stringify(currentImportMap, null, 2);\n    console.log(\"Import map loader: Reset import map to original URLs\");\n\n    // Clear originals from localStorage as they've been restored\n    localStorage.removeItem(\"import-map-originals\");\n\n    return true;\n  } catch (err: unknown) {\n    console.error(\"Import map loader: Error resetting overrides\", err);\n    return false;\n  }\n}\n\n// Export utility functions alongside the service\nexport const importMapUtils = {\n  applyOverridesToImportMap,\n  resetAllOverrides,\n};\n","import React, { useState, useEffect, useRef, useCallback } from \"react\";\nimport { ImportMapModule } from \"../services/import-map\";\nimport { Button } from \"./ui/button\";\nimport { Input } from \"./ui/input\";\n\n// Type for storing module override history entries\ninterface OverrideHistoryEntry {\n  url: string;\n  timestamp: number; // Unix timestamp\n}\n\n// Type for storing override history by module name\ninterface ModuleOverrideHistory {\n  [moduleName: string]: OverrideHistoryEntry[];\n}\n\n// Type for storing active overrides by module name\ninterface ActiveOverrides {\n  [moduleName: string]: string;\n}\n\n// Type for tracking URL validation status\ninterface ValidationStatus {\n  isValid: boolean | null; // null means not validated yet\n  isValidating: boolean;\n  error?: string;\n}\n\n// Custom debounce function\nfunction useDebounce<T>(callback: T, delay: number) {\n  const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n  return useCallback(\n    (...args: unknown[]) => {\n      if (timeoutRef.current) {\n        clearTimeout(timeoutRef.current);\n      }\n\n      timeoutRef.current = setTimeout(() => {\n        // Type assertion is safe because we're passing through the args\n        (callback as (...callbackArgs: unknown[]) => unknown)(...args);\n      }, delay);\n    },\n    [callback, delay]\n  );\n}\n\ninterface ModuleListProps {\n  modules: ImportMapModule[];\n  onReset: (moduleName: string) => void;\n  onSave: (moduleName: string, url: string) => void;\n  moduleOverrideHistory: ModuleOverrideHistory;\n  activeOverrides: ActiveOverrides;\n}\n\nexport function ModuleList({\n  modules,\n  onReset,\n  onSave,\n  moduleOverrideHistory,\n}: ModuleListProps) {\n  const [editStates, setEditStates] = useState<\n    Record<\n      string,\n      {\n        value: string;\n        isEditing: boolean;\n        isSaving: boolean;\n        saveSuccess: boolean | null;\n        validation: ValidationStatus;\n      }\n    >\n  >({});\n\n  // Track which popover is open\n  const [openPopoverId, setOpenPopoverId] = useState<string | null>(null);\n\n  // Function to validate a URL\n  const validateModuleUrl = useCallback(\n    async (url: string): Promise<ValidationStatus> => {\n      if (!url) {\n        return { isValid: false, isValidating: false, error: \"URL is empty\" };\n      }\n\n      try {\n        // Add a cache-busting query parameter to avoid getting cached responses\n        const urlWithParam = new URL(url);\n        urlWithParam.searchParams.append(\n          \"_devtools_validate\",\n          Date.now().toString()\n        );\n\n        // First try with CORS mode\n        try {\n          const response = await fetch(urlWithParam.toString(), {\n            method: \"HEAD\",\n            mode: \"cors\",\n            credentials: \"omit\",\n            cache: \"no-store\",\n          });\n\n          if (!response.ok) {\n            return {\n              isValid: false,\n              isValidating: false,\n              error: `HTTP error: ${response.status}`,\n            };\n          }\n\n          // Check content type if available\n          const contentType = response.headers.get(\"content-type\");\n          if (contentType) {\n            const isJavaScript =\n              contentType.includes(\"javascript\") ||\n              contentType.includes(\"application/ecmascript\") ||\n              contentType.includes(\"text/ecmascript\") ||\n              contentType.includes(\"module\") ||\n              contentType.includes(\"json\") || // For import maps\n              contentType.includes(\"text/html\") || // For dev servers\n              (contentType.includes(\"text/plain\") && url.endsWith(\".js\"));\n\n            if (!isJavaScript) {\n              return {\n                isValid: false,\n                isValidating: false,\n                error: `Not a JavaScript file: ${contentType}`,\n              };\n            }\n          }\n\n          return { isValid: true, isValidating: false };\n        } catch {\n          // If CORS fails, try with no-cors mode\n          try {\n            await fetch(urlWithParam.toString(), {\n              method: \"HEAD\",\n              mode: \"no-cors\",\n              cache: \"no-store\",\n            });\n\n            // In no-cors mode, we can't check the response status or headers\n            // If the request doesn't throw, we assume it's accessible\n            return {\n              isValid: true,\n              isValidating: false,\n              error:\n                \"URL is accessible but CORS headers are not set. Some features may not work.\",\n            };\n          } catch {\n            return {\n              isValid: false,\n              isValidating: false,\n              error:\n                \"URL is not accessible. Check if CORS is enabled on the server.\",\n            };\n          }\n        }\n      } catch (error) {\n        return {\n          isValid: false,\n          isValidating: false,\n          error: error instanceof Error ? error.message : \"Unknown error\",\n        };\n      }\n    },\n    []\n  );\n\n  // Debounced validation function for input changes\n  const debouncedValidate = useDebounce(\n    async (moduleName: string, value: string) => {\n      // Set validating state\n      setEditStates((prev) => ({\n        ...prev,\n        [moduleName]: {\n          ...prev[moduleName],\n          validation: { ...prev[moduleName].validation, isValidating: true },\n        },\n      }));\n\n      // Validate URL\n      const validationResult = await validateModuleUrl(value);\n\n      // Update state with validation result\n      setEditStates((prev) => ({\n        ...prev,\n        [moduleName]: {\n          ...prev[moduleName],\n          validation: validationResult,\n        },\n      }));\n    },\n    800\n  );\n\n  // Validate all module URLs when component mounts or modules change\n  useEffect(() => {\n    // Collect all modules that need validation\n    const modulesToValidate = modules.filter((module) => {\n      const currentUrl = module.overrideUrl || module.originalUrl;\n      const currentState = editStates[module.moduleName];\n\n      // Skip if already validating this URL or if we already have a valid result for this exact URL\n      return !(\n        currentState?.validation?.isValidating ||\n        (currentState?.validation?.isValid !== null &&\n          currentState?.value === currentUrl)\n      );\n    });\n\n    if (modulesToValidate.length === 0) {\n      return;\n    }\n\n    // Set all modules to validating state\n    const updatedEditStates = { ...editStates };\n    modulesToValidate.forEach((module) => {\n      const currentUrl = module.overrideUrl || module.originalUrl;\n      updatedEditStates[module.moduleName] = {\n        ...updatedEditStates[module.moduleName],\n        validation: {\n          ...(updatedEditStates[module.moduleName]?.validation || {}),\n          isValidating: true,\n        },\n      };\n    });\n    setEditStates(updatedEditStates);\n\n    // Validate all URLs in parallel\n    const validationPromises = modulesToValidate.map(async (module) => {\n      const currentUrl = module.overrideUrl || module.originalUrl;\n      const validationResult = await validateModuleUrl(currentUrl);\n\n      // Update each module's validation status as it completes\n      setEditStates((prev) => ({\n        ...prev,\n        [module.moduleName]: {\n          ...prev[module.moduleName],\n          validation: validationResult,\n        },\n      }));\n\n      return { moduleName: module.moduleName, result: validationResult };\n    });\n\n    // We don't need to wait for all promises to resolve in the useEffect\n    // as each one will update the state individually when it completes\n    Promise.all(validationPromises).catch((error) => {\n      console.error(\"Error during parallel validation:\", error);\n    });\n  }, [modules, editStates, validateModuleUrl]);\n\n  // Function to manually trigger validation for a module\n  const handleManualValidation = useCallback(\n    async (moduleName: string) => {\n      const moduleState = editStates[moduleName];\n      if (moduleState) {\n        // Set validating state\n        setEditStates((prev) => ({\n          ...prev,\n          [moduleName]: {\n            ...prev[moduleName],\n            validation: { ...prev[moduleName].validation, isValidating: true },\n          },\n        }));\n\n        // Validate URL directly (no debounce for manual validation)\n        const validationResult = await validateModuleUrl(moduleState.value);\n\n        // Update state with validation result\n        setEditStates((prev) => ({\n          ...prev,\n          [moduleName]: {\n            ...prev[moduleName],\n            validation: validationResult,\n          },\n        }));\n      }\n    },\n    [editStates, validateModuleUrl]\n  );\n\n  // Initialize edit states for all modules\n  useEffect(() => {\n    const newEditStates: Record<\n      string,\n      {\n        value: string;\n        isEditing: boolean;\n        isSaving: boolean;\n        saveSuccess: boolean | null;\n        validation: ValidationStatus;\n      }\n    > = {};\n    modules.forEach((module) => {\n      if (!editStates[module.moduleName]) {\n        newEditStates[module.moduleName] = {\n          value: module.overrideUrl || module.originalUrl,\n          isEditing: false,\n          isSaving: false,\n          saveSuccess: null,\n          validation: { isValid: null, isValidating: false },\n        };\n      }\n    });\n    if (Object.keys(newEditStates).length > 0) {\n      setEditStates((prev) => ({ ...prev, ...newEditStates }));\n    }\n  }, [modules]);\n\n  // Save handler with feedback\n  const handleSave = useCallback(\n    (moduleName: string, value: string) => {\n      setEditStates((prev) => ({\n        ...prev,\n        [moduleName]: {\n          ...prev[moduleName],\n          isSaving: true,\n          saveSuccess: null,\n        },\n      }));\n\n      onSave(moduleName, value);\n\n      // Show success status\n      setTimeout(() => {\n        setEditStates((prev) => ({\n          ...prev,\n          [moduleName]: {\n            ...prev[moduleName],\n            isSaving: false,\n            saveSuccess: true,\n          },\n        }));\n\n        // Clear success status after 2 seconds\n        setTimeout(() => {\n          setEditStates((prev) => ({\n            ...prev,\n            [moduleName]: {\n              ...prev[moduleName],\n              saveSuccess: null,\n            },\n          }));\n        }, 2000);\n      }, 500);\n    },\n    [onSave]\n  );\n\n  // Create debounced save function\n  const debouncedSave = useDebounce((moduleName: string, value: string) => {\n    handleSave(moduleName, value);\n  }, 800);\n\n  const handleInputChange = (moduleName: string, value: string) => {\n    setEditStates((prev) => ({\n      ...prev,\n      [moduleName]: {\n        ...prev[moduleName],\n        value,\n        saveSuccess: null,\n      },\n    }));\n    debouncedSave(moduleName, value);\n    debouncedValidate(moduleName, value);\n  };\n\n  const handleInputFocus = (moduleName: string) => {\n    setEditStates((prev) => ({\n      ...prev,\n      [moduleName]: {\n        ...prev[moduleName],\n        isEditing: true,\n      },\n    }));\n  };\n\n  const handleInputBlur = (moduleName: string) => {\n    setEditStates((prev) => ({\n      ...prev,\n      [moduleName]: {\n        ...prev[moduleName],\n        isEditing: false,\n      },\n    }));\n  };\n\n  // Toggle popover open/close\n  const togglePopover = (moduleId: string) => {\n    setOpenPopoverId((prevId) => (prevId === moduleId ? null : moduleId));\n  };\n\n  // Close popover when clicking outside\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (\n        openPopoverId &&\n        !(event.target as Element).closest(\".override-popover\")\n      ) {\n        setOpenPopoverId(null);\n      }\n    };\n\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [openPopoverId]);\n\n  // Handler for applying a previous override\n  const handleApplyPreviousOverride = useCallback(\n    (moduleName: string, url: string) => {\n      // Update the edit state first so UI reflects the change immediately\n      setEditStates((prev) => ({\n        ...prev,\n        [moduleName]: {\n          ...prev[moduleName],\n          value: url,\n          saveSuccess: null,\n        },\n      }));\n\n      // Then save the change\n      handleSave(moduleName, url);\n      setOpenPopoverId(null); // Close popover after applying\n\n      // Also validate the URL\n      debouncedValidate(moduleName, url);\n    },\n    [handleSave, debouncedValidate]\n  );\n\n  // Handler for resetting a module override\n  const handleReset = useCallback(\n    (moduleName: string) => {\n      // Find the module\n      const module = modules.find((m) => m.moduleName === moduleName);\n      if (module) {\n        // Update the edit state to show the original URL\n        setEditStates((prev) => ({\n          ...prev,\n          [moduleName]: {\n            ...prev[moduleName],\n            value: module.originalUrl,\n            saveSuccess: null,\n            validation: { isValid: null, isValidating: false },\n          },\n        }));\n\n        // Then reset the override\n        onReset(moduleName);\n\n        // Validate the original URL\n        debouncedValidate(moduleName, module.originalUrl);\n      }\n    },\n    [modules, onReset, debouncedValidate]\n  );\n\n  // Format the relative time for display\n  const formatRelativeTime = (timestamp: number): string => {\n    const now = Date.now();\n    const diff = now - timestamp;\n\n    const seconds = Math.floor(diff / 1000);\n    const minutes = Math.floor(seconds / 60);\n    const hours = Math.floor(minutes / 60);\n    const days = Math.floor(hours / 24);\n\n    if (days > 0) return `${days}d ago`;\n    if (hours > 0) return `${hours}h ago`;\n    if (minutes > 0) return `${minutes}m ago`;\n    if (seconds > 10) return `${seconds}s ago`;\n    return \"Just now\";\n  };\n\n  // Get available overrides for a module (history for this module)\n  const getAvailableOverrides = (\n    module: ImportMapModule\n  ): OverrideHistoryEntry[] => {\n    const moduleHistory = moduleOverrideHistory[module.moduleName] || [];\n\n    // Filter out the current override URL if it exists\n    return moduleHistory.filter((entry) => entry.url !== module.overrideUrl);\n  };\n\n  if (modules.length === 0) {\n    return (\n      <div className=\"p-4 text-center text-slate-500 dark:text-slate-400\">\n        No modules found. Make sure you have an import map on this page.\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"grid gap-4\">\n      {modules.map((module, index) => {\n        const editState = editStates[module.moduleName] || {\n          value: module.overrideUrl || module.originalUrl,\n          isEditing: false,\n          isSaving: false,\n          saveSuccess: null,\n          validation: { isValid: null, isValidating: false },\n        };\n\n        const isOverridden = !!module.overrideUrl;\n        const isDirty =\n          editState.value !== (module.overrideUrl || module.originalUrl);\n\n        // Get available overrides for this module\n        const availableOverrides = getAvailableOverrides(module);\n        const hasOverrideHistory = availableOverrides.length > 0;\n        const popoverId = `popover-${module.moduleName}`;\n        const isPopoverOpen = openPopoverId === popoverId;\n\n        return (\n          <div\n            key={module.moduleName}\n            className={`p-4 rounded-lg border shadow-sm hover:shadow transition-all duration-200 ${\n              isOverridden\n                ? \"border-indigo-300 dark:border-indigo-700 bg-gradient-to-r from-indigo-50 to-violet-50 dark:from-indigo-950/20 dark:to-violet-950/20\"\n                : \"border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800\"\n            } animate-in slide-in-from-bottom duration-300`}\n            style={{ animationDelay: `${index * 50}ms` }}\n          >\n            <div className=\"flex flex-col gap-4\">\n              <div className=\"flex justify-between items-start\">\n                <h3 className=\"font-medium text-slate-900 dark:text-slate-100 break-all text-base\">\n                  {module.moduleName}\n                </h3>\n                <div className=\"flex gap-2 flex-shrink-0\">\n                  {editState.isSaving && (\n                    <span className=\"inline-flex items-center text-xs text-amber-600 dark:text-amber-400\">\n                      <svg\n                        className=\"animate-spin -ml-1 mr-2 h-3 w-3\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        fill=\"none\"\n                        viewBox=\"0 0 24 24\"\n                      >\n                        <circle\n                          className=\"opacity-25\"\n                          cx=\"12\"\n                          cy=\"12\"\n                          r=\"10\"\n                          stroke=\"currentColor\"\n                          strokeWidth=\"4\"\n                        ></circle>\n                        <path\n                          className=\"opacity-75\"\n                          fill=\"currentColor\"\n                          d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n                        ></path>\n                      </svg>\n                      Saving...\n                    </span>\n                  )}\n                  {editState.saveSuccess && (\n                    <span className=\"inline-flex items-center text-xs text-emerald-600 dark:text-emerald-400\">\n                      <svg\n                        className=\"h-3 w-3 mr-1\"\n                        fill=\"currentColor\"\n                        viewBox=\"0 0 20 20\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                      >\n                        <path\n                          fillRule=\"evenodd\"\n                          d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.707a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                      </svg>\n                      Saved\n                    </span>\n                  )}\n                  {hasOverrideHistory && (\n                    <div className=\"relative override-popover\">\n                      <Button\n                        onClick={() => togglePopover(popoverId)}\n                        variant=\"outline\"\n                        size=\"sm\"\n                        title=\"View override history\"\n                        aria-expanded={isPopoverOpen}\n                        aria-controls={popoverId}\n                        className={`text-xs py-1 px-2 h-auto font-normal ${\n                          isPopoverOpen\n                            ? \"bg-indigo-200 text-indigo-800 border-indigo-300 hover:bg-indigo-200/90 dark:bg-indigo-800/60 dark:text-indigo-200 dark:border-indigo-700\"\n                            : \"bg-indigo-100 text-indigo-700 border-indigo-200 hover:bg-indigo-200 hover:text-white dark:bg-indigo-900/40 dark:text-indigo-300 dark:border-indigo-800/30 dark:hover:bg-indigo-800/60 dark:hover:text-white\"\n                        }`}\n                      >\n                        <svg\n                          xmlns=\"http://www.w3.org/2000/svg\"\n                          className=\"h-3 w-3 mr-1\"\n                          viewBox=\"0 0 20 20\"\n                          fill=\"currentColor\"\n                        >\n                          <path\n                            fillRule=\"evenodd\"\n                            d=\"M7.707 3.293a1 1 0 010 1.414L5.414 7H11a7 7 0 017 7v2a1 1 0 11-2 0v-2a5 5 0 00-5-5H5.414l2.293 2.293a1 1 0 11-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n                            clipRule=\"evenodd\"\n                          />\n                        </svg>\n                        History\n                      </Button>\n                      {isPopoverOpen && (\n                        <div\n                          id={popoverId}\n                          className=\"override-popover absolute right-0 top-full mt-1 w-auto p-2 bg-white dark:bg-slate-800 rounded-md shadow-lg border border-slate-200 dark:border-slate-700 z-10 animate-in fade-in zoom-in-95 duration-100\"\n                        >\n                          <div className=\"text-xs text-slate-500 dark:text-slate-400 mb-1 font-medium\">\n                            Override history for this module:\n                          </div>\n                          <div className=\"max-h-52 overflow-y-auto\">\n                            {availableOverrides.map((entry, i) => (\n                              <button\n                                key={i}\n                                onClick={() =>\n                                  handleApplyPreviousOverride(\n                                    module.moduleName,\n                                    entry.url\n                                  )\n                                }\n                                className=\"w-full text-left text-xs px-2 py-1.5 rounded hover:bg-slate-100 dark:hover:bg-slate-700 mb-1 last:mb-0 flex items-center font-mono truncate text-slate-700 dark:text-slate-300\"\n                              >\n                                <svg\n                                  xmlns=\"http://www.w3.org/2000/svg\"\n                                  className=\"h-3 w-3 mr-1.5 text-indigo-500 dark:text-indigo-400 flex-shrink-0\"\n                                  viewBox=\"0 0 20 20\"\n                                  fill=\"currentColor\"\n                                >\n                                  <path\n                                    fillRule=\"evenodd\"\n                                    d=\"M3 4a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm0 4a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm0 4a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm0 4a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z\"\n                                    clipRule=\"evenodd\"\n                                  />\n                                </svg>\n                                <div className=\"flex-1 flex justify-between items-center min-w-0\">\n                                  <span className=\"truncate mr-1.5\">\n                                    {entry.url}\n                                  </span>\n                                  <span className=\"text-slate-400 dark:text-slate-500 text-[10px] whitespace-nowrap\">\n                                    {formatRelativeTime(entry.timestamp)}\n                                  </span>\n                                </div>\n                              </button>\n                            ))}\n                          </div>\n                        </div>\n                      )}\n                    </div>\n                  )}\n                  {isOverridden && (\n                    <Button\n                      variant=\"destructive\"\n                      size=\"sm\"\n                      onClick={() => handleReset(module.moduleName)}\n                      className=\"text-xs py-1 px-2 h-auto font-normal\"\n                    >\n                      Reset\n                    </Button>\n                  )}\n                </div>\n              </div>\n\n              <div className=\"relative group\">\n                <Input\n                  value={editState.value}\n                  onChange={(e) =>\n                    handleInputChange(module.moduleName, e.target.value)\n                  }\n                  onFocus={() => handleInputFocus(module.moduleName)}\n                  onBlur={() => handleInputBlur(module.moduleName)}\n                  spellCheck=\"false\"\n                  autoComplete=\"off\"\n                  className={`w-full font-mono text-sm transition-all ${\n                    isOverridden\n                      ? \"bg-white/70 dark:bg-slate-700/70 border-indigo-200 dark:border-indigo-800\"\n                      : \"bg-slate-50 dark:bg-slate-800 border-slate-200 dark:border-slate-700\"\n                  } ${\n                    editState.isEditing\n                      ? \"pl-4 ring-2 ring-indigo-500 dark:ring-indigo-400 shadow-sm\"\n                      : \"\"\n                  }`}\n                />\n\n                {isDirty && !editState.isSaving && !editState.saveSuccess && (\n                  <div className=\"absolute right-3 top-1/2 -translate-y-1/2 text-amber-500 dark:text-amber-400\">\n                    <span className=\"animate-pulse\">●</span>\n                  </div>\n                )}\n\n                {editState.validation.isValidating && (\n                  <div className=\"absolute right-3 top-1/2 -translate-y-1/2 text-blue-500 dark:text-blue-400\">\n                    <svg\n                      className=\"animate-spin h-4 w-4\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      fill=\"none\"\n                      viewBox=\"0 0 24 24\"\n                    >\n                      <circle\n                        className=\"opacity-25\"\n                        cx=\"12\"\n                        cy=\"12\"\n                        r=\"10\"\n                        stroke=\"currentColor\"\n                        strokeWidth=\"4\"\n                      ></circle>\n                      <path\n                        className=\"opacity-75\"\n                        fill=\"currentColor\"\n                        d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n                      ></path>\n                    </svg>\n                  </div>\n                )}\n              </div>\n\n              {/* Validation status row */}\n              <div className=\"flex items-center mt-1 text-xs h-5\">\n                {editState.validation.isValidating && (\n                  <div className=\"flex items-center text-blue-500\">\n                    <svg\n                      className=\"animate-spin h-3 w-3 mr-1.5\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      fill=\"none\"\n                      viewBox=\"0 0 24 24\"\n                    >\n                      <circle\n                        className=\"opacity-25\"\n                        cx=\"12\"\n                        cy=\"12\"\n                        r=\"10\"\n                        stroke=\"currentColor\"\n                        strokeWidth=\"4\"\n                      ></circle>\n                      <path\n                        className=\"opacity-75\"\n                        fill=\"currentColor\"\n                        d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n                      ></path>\n                    </svg>\n                    Validating URL...\n                  </div>\n                )}\n\n                {editState.validation.isValid === true &&\n                  !editState.validation.isValidating && (\n                    <div className=\"flex items-center text-emerald-500 dark:text-emerald-400\">\n                      <svg\n                        className=\"h-3 w-3 mr-1.5\"\n                        fill=\"currentColor\"\n                        viewBox=\"0 0 20 20\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                      >\n                        <path\n                          fillRule=\"evenodd\"\n                          d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.707a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                      </svg>\n                      URL is valid and accessible\n                    </div>\n                  )}\n\n                {editState.validation.isValid === false &&\n                  !editState.validation.isValidating && (\n                    <div className=\"flex items-center justify-between w-full\">\n                      <div className=\"flex items-center text-red-500 dark:text-red-400\">\n                        <svg\n                          className=\"h-3 w-3 mr-1.5\"\n                          fill=\"currentColor\"\n                          viewBox=\"0 0 20 20\"\n                          xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                          <path\n                            fillRule=\"evenodd\"\n                            d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n                            clipRule=\"evenodd\"\n                          ></path>\n                        </svg>\n                        {editState.validation.error || \"URL is invalid\"}\n                      </div>\n                      <button\n                        onClick={() =>\n                          handleManualValidation(module.moduleName)\n                        }\n                        className=\"text-xs text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300\"\n                        title=\"Retry validation\"\n                      >\n                        Retry\n                      </button>\n                    </div>\n                  )}\n\n                {editState.validation.isValid === null &&\n                  !editState.validation.isValidating && (\n                    <div className=\"flex items-center justify-between w-full\">\n                      <div className=\"flex items-center text-slate-400 dark:text-slate-500\">\n                        <svg\n                          className=\"h-3 w-3 mr-1.5\"\n                          fill=\"currentColor\"\n                          viewBox=\"0 0 20 20\"\n                          xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                          <path\n                            fillRule=\"evenodd\"\n                            d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3a1 1 0 00-.867.5 1 1 0 11-1.731-1A3 3 0 0113 8a3.001 3.001 0 01-2 2.83V11a1 1 0 11-2 0v-1a1 1 0 011-1 1 1 0 100-2zm0 8a1 1 0 100-2 1 1 0 000 2z\"\n                            clipRule=\"evenodd\"\n                          ></path>\n                        </svg>\n                        URL not validated yet\n                      </div>\n                      <button\n                        onClick={() =>\n                          handleManualValidation(module.moduleName)\n                        }\n                        className=\"text-xs text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300\"\n                        title=\"Start validation\"\n                      >\n                        Validate\n                      </button>\n                    </div>\n                  )}\n              </div>\n\n              {isOverridden && (\n                <div className=\"text-xs text-slate-500 dark:text-slate-500 break-all line-through mt-1\">\n                  <span className=\"inline-block mr-1 not-italic text-slate-400 dark:text-slate-500 no-underline\">\n                    Original:\n                  </span>\n                  {module.originalUrl}\n                </div>\n              )}\n            </div>\n          </div>\n        );\n      })}\n\n      {/* We can remove the tooltip styles as they're no longer needed */}\n      <style>\n        {`\n          /* Empty style block - previously had tooltip styles */\n        `}\n      </style>\n    </div>\n  );\n}\n","import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-slate-900 text-slate-50 hover:bg-slate-900/90\",\n        destructive: \"bg-red-500 text-slate-50 hover:bg-red-500/90\",\n        outline:\n          \"border border-slate-200 bg-white hover:bg-slate-100 hover:text-slate-900\",\n        secondary: \"bg-slate-100 text-slate-900 hover:bg-slate-100/80\",\n        ghost: \"hover:bg-slate-100 hover:text-slate-900\",\n        link: \"text-slate-900 underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-10 px-4 py-2\",\n        sm: \"h-9 rounded-md px-3\",\n        lg: \"h-11 rounded-md px-8\",\n        icon: \"h-10 w-10\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n);\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    return (\n      <button\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    );\n  }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","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 * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n        var _config_compoundVariants;\n        if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n        const { variants, defaultVariants } = config;\n        const getVariantClassNames = Object.keys(variants).map((variant)=>{\n            const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n            const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n            if (variantProp === null) return null;\n            const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n            return variants[variant][variantKey];\n        });\n        const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n            let [key, value] = param;\n            if (value === undefined) {\n                return acc;\n            }\n            acc[key] = value;\n            return acc;\n        }, {});\n        const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n            let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n            return Object.entries(compoundVariantOptions).every((param)=>{\n                let [key, value] = param;\n                return Array.isArray(value) ? value.includes({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                }[key]) : ({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                })[key] === value;\n            }) ? [\n                ...acc,\n                cvClass,\n                cvClassName\n            ] : acc;\n        }, []);\n        return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n    };\n\n","import {\n    AnyClassGroupIds,\n    AnyConfig,\n    AnyThemeGroupIds,\n    ClassGroup,\n    ClassValidator,\n    Config,\n    ThemeGetter,\n    ThemeObject,\n} from './types'\n\nexport interface ClassPartObject {\n    nextPart: Map<string, ClassPartObject>\n    validators: ClassValidatorObject[]\n    classGroupId?: AnyClassGroupIds\n}\n\ninterface ClassValidatorObject {\n    classGroupId: AnyClassGroupIds\n    validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n    const classMap = createClassMap(config)\n    const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n    const getClassGroupId = (className: string) => {\n        const classParts = className.split(CLASS_PART_SEPARATOR)\n\n        // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n        if (classParts[0] === '' && classParts.length !== 1) {\n            classParts.shift()\n        }\n\n        return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n    }\n\n    const getConflictingClassGroupIds = (\n        classGroupId: AnyClassGroupIds,\n        hasPostfixModifier: boolean,\n    ) => {\n        const conflicts = conflictingClassGroups[classGroupId] || []\n\n        if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n            return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n        }\n\n        return conflicts\n    }\n\n    return {\n        getClassGroupId,\n        getConflictingClassGroupIds,\n    }\n}\n\nconst getGroupRecursive = (\n    classParts: string[],\n    classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n    if (classParts.length === 0) {\n        return classPartObject.classGroupId\n    }\n\n    const currentClassPart = classParts[0]!\n    const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n    const classGroupFromNextClassPart = nextClassPartObject\n        ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n        : undefined\n\n    if (classGroupFromNextClassPart) {\n        return classGroupFromNextClassPart\n    }\n\n    if (classPartObject.validators.length === 0) {\n        return undefined\n    }\n\n    const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n    return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nconst getGroupIdForArbitraryProperty = (className: string) => {\n    if (arbitraryPropertyRegex.test(className)) {\n        const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n        const property = arbitraryPropertyClassName?.substring(\n            0,\n            arbitraryPropertyClassName.indexOf(':'),\n        )\n\n        if (property) {\n            // I use two dots here because one dot is used as prefix for class groups in plugins\n            return 'arbitrary..' + property\n        }\n    }\n}\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n    const { theme, classGroups } = config\n    const classMap: ClassPartObject = {\n        nextPart: new Map<string, ClassPartObject>(),\n        validators: [],\n    }\n\n    for (const classGroupId in classGroups) {\n        processClassesRecursively(classGroups[classGroupId]!, classMap, classGroupId, theme)\n    }\n\n    return classMap\n}\n\nconst processClassesRecursively = (\n    classGroup: ClassGroup<AnyThemeGroupIds>,\n    classPartObject: ClassPartObject,\n    classGroupId: AnyClassGroupIds,\n    theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n    classGroup.forEach((classDefinition) => {\n        if (typeof classDefinition === 'string') {\n            const classPartObjectToEdit =\n                classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n            classPartObjectToEdit.classGroupId = classGroupId\n            return\n        }\n\n        if (typeof classDefinition === 'function') {\n            if (isThemeGetter(classDefinition)) {\n                processClassesRecursively(\n                    classDefinition(theme),\n                    classPartObject,\n                    classGroupId,\n                    theme,\n                )\n                return\n            }\n\n            classPartObject.validators.push({\n                validator: classDefinition,\n                classGroupId,\n            })\n\n            return\n        }\n\n        Object.entries(classDefinition).forEach(([key, classGroup]) => {\n            processClassesRecursively(\n                classGroup,\n                getPart(classPartObject, key),\n                classGroupId,\n                theme,\n            )\n        })\n    })\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string) => {\n    let currentClassPartObject = classPartObject\n\n    path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n        if (!currentClassPartObject.nextPart.has(pathPart)) {\n            currentClassPartObject.nextPart.set(pathPart, {\n                nextPart: new Map(),\n                validators: [],\n            })\n        }\n\n        currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n    })\n\n    return currentClassPartObject\n}\n\nconst isThemeGetter = (func: ClassValidator | ThemeGetter): func is ThemeGetter =>\n    (func as ThemeGetter).isThemeGetter\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key, Value> {\n    get(key: Key): Value | undefined\n    set(key: Key, value: Value): void\n}\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nexport const createLruCache = <Key, Value>(maxCacheSize: number): LruCache<Key, Value> => {\n    if (maxCacheSize < 1) {\n        return {\n            get: () => undefined,\n            set: () => {},\n        }\n    }\n\n    let cacheSize = 0\n    let cache = new Map<Key, Value>()\n    let previousCache = new Map<Key, Value>()\n\n    const update = (key: Key, value: Value) => {\n        cache.set(key, value)\n        cacheSize++\n\n        if (cacheSize > maxCacheSize) {\n            cacheSize = 0\n            previousCache = cache\n            cache = new Map()\n        }\n    }\n\n    return {\n        get(key) {\n            let value = cache.get(key)\n\n            if (value !== undefined) {\n                return value\n            }\n            if ((value = previousCache.get(key)) !== undefined) {\n                update(key, value)\n                return value\n            }\n        },\n        set(key, value) {\n            if (cache.has(key)) {\n                cache.set(key, value)\n            } else {\n                update(key, value)\n            }\n        },\n    }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\nconst MODIFIER_SEPARATOR = ':'\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length\n\nexport const createParseClassName = (config: AnyConfig) => {\n    const { prefix, experimentalParseClassName } = config\n\n    /**\n     * Parse class name into parts.\n     *\n     * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n     * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n     */\n    let parseClassName = (className: string): ParsedClassName => {\n        const modifiers = []\n\n        let bracketDepth = 0\n        let parenDepth = 0\n        let modifierStart = 0\n        let postfixModifierPosition: number | undefined\n\n        for (let index = 0; index < className.length; index++) {\n            let currentCharacter = className[index]\n\n            if (bracketDepth === 0 && parenDepth === 0) {\n                if (currentCharacter === MODIFIER_SEPARATOR) {\n                    modifiers.push(className.slice(modifierStart, index))\n                    modifierStart = index + MODIFIER_SEPARATOR_LENGTH\n                    continue\n                }\n\n                if (currentCharacter === '/') {\n                    postfixModifierPosition = index\n                    continue\n                }\n            }\n\n            if (currentCharacter === '[') {\n                bracketDepth++\n            } else if (currentCharacter === ']') {\n                bracketDepth--\n            } else if (currentCharacter === '(') {\n                parenDepth++\n            } else if (currentCharacter === ')') {\n                parenDepth--\n            }\n        }\n\n        const baseClassNameWithImportantModifier =\n            modifiers.length === 0 ? className : className.substring(modifierStart)\n        const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier)\n        const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier\n        const maybePostfixModifierPosition =\n            postfixModifierPosition && postfixModifierPosition > modifierStart\n                ? postfixModifierPosition - modifierStart\n                : undefined\n\n        return {\n            modifiers,\n            hasImportantModifier,\n            baseClassName,\n            maybePostfixModifierPosition,\n        }\n    }\n\n    if (prefix) {\n        const fullPrefix = prefix + MODIFIER_SEPARATOR\n        const parseClassNameOriginal = parseClassName\n        parseClassName = (className) =>\n            className.startsWith(fullPrefix)\n                ? parseClassNameOriginal(className.substring(fullPrefix.length))\n                : {\n                      isExternal: true,\n                      modifiers: [],\n                      hasImportantModifier: false,\n                      baseClassName: className,\n                      maybePostfixModifierPosition: undefined,\n                  }\n    }\n\n    if (experimentalParseClassName) {\n        const parseClassNameOriginal = parseClassName\n        parseClassName = (className) =>\n            experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n    }\n\n    return parseClassName\n}\n\nconst stripImportantModifier = (baseClassName: string) => {\n    if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n        return baseClassName.substring(0, baseClassName.length - 1)\n    }\n\n    /**\n     * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n     * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n     */\n    if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n        return baseClassName.substring(1)\n    }\n\n    return baseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n    const orderSensitiveModifiers = Object.fromEntries(\n        config.orderSensitiveModifiers.map((modifier) => [modifier, true]),\n    )\n\n    const sortModifiers = (modifiers: string[]) => {\n        if (modifiers.length <= 1) {\n            return modifiers\n        }\n\n        const sortedModifiers: string[] = []\n        let unsortedModifiers: string[] = []\n\n        modifiers.forEach((modifier) => {\n            const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier]\n\n            if (isPositionSensitive) {\n                sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n                unsortedModifiers = []\n            } else {\n                unsortedModifiers.push(modifier)\n            }\n        })\n\n        sortedModifiers.push(...unsortedModifiers.sort())\n\n        return sortedModifiers\n    }\n\n    return sortModifiers\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n    cache: createLruCache<string, string>(config.cacheSize),\n    parseClassName: createParseClassName(config),\n    sortModifiers: createSortModifiers(config),\n    ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n    const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n        configUtils\n\n    /**\n     * Set of classGroupIds in following format:\n     * `{importantModifier}{variantModifiers}{classGroupId}`\n     * @example 'float'\n     * @example 'hover:focus:bg-color'\n     * @example 'md:!pr'\n     */\n    const classGroupsInConflict: string[] = []\n    const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n    let result = ''\n\n    for (let index = classNames.length - 1; index >= 0; index -= 1) {\n        const originalClassName = classNames[index]!\n\n        const {\n            isExternal,\n            modifiers,\n            hasImportantModifier,\n            baseClassName,\n            maybePostfixModifierPosition,\n        } = parseClassName(originalClassName)\n\n        if (isExternal) {\n            result = originalClassName + (result.length > 0 ? ' ' + result : result)\n            continue\n        }\n\n        let hasPostfixModifier = !!maybePostfixModifierPosition\n        let classGroupId = getClassGroupId(\n            hasPostfixModifier\n                ? baseClassName.substring(0, maybePostfixModifierPosition)\n                : baseClassName,\n        )\n\n        if (!classGroupId) {\n            if (!hasPostfixModifier) {\n                // Not a Tailwind class\n                result = originalClassName + (result.length > 0 ? ' ' + result : result)\n                continue\n            }\n\n            classGroupId = getClassGroupId(baseClassName)\n\n            if (!classGroupId) {\n                // Not a Tailwind class\n                result = originalClassName + (result.length > 0 ? ' ' + result : result)\n                continue\n            }\n\n            hasPostfixModifier = false\n        }\n\n        const variantModifier = sortModifiers(modifiers).join(':')\n\n        const modifierId = hasImportantModifier\n            ? variantModifier + IMPORTANT_MODIFIER\n            : variantModifier\n\n        const classId = modifierId + classGroupId\n\n        if (classGroupsInConflict.includes(classId)) {\n            // Tailwind class omitted due to conflict\n            continue\n        }\n\n        classGroupsInConflict.push(classId)\n\n        const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n        for (let i = 0; i < conflictGroups.length; ++i) {\n            const group = conflictGroups[i]!\n            classGroupsInConflict.push(modifierId + group)\n        }\n\n        // Tailwind class not in conflict\n        result = originalClassName + (result.length > 0 ? ' ' + result : result)\n    }\n\n    return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n    let index = 0\n    let argument: ClassNameValue\n    let resolvedValue: string\n    let string = ''\n\n    while (index < arguments.length) {\n        if ((argument = arguments[index++])) {\n            if ((resolvedValue = toValue(argument))) {\n                string && (string += ' ')\n                string += resolvedValue\n            }\n        }\n    }\n    return string\n}\n\nconst toValue = (mix: ClassNameArray | string) => {\n    if (typeof mix === 'string') {\n        return mix\n    }\n\n    let resolvedValue: string\n    let string = ''\n\n    for (let k = 0; k < mix.length; k++) {\n        if (mix[k]) {\n            if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n                string && (string += ' ')\n                string += resolvedValue\n            }\n        }\n    }\n\n    return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createTailwindMerge(\n    createConfigFirst: CreateConfigFirst,\n    ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge {\n    let configUtils: ConfigUtils\n    let cacheGet: ConfigUtils['cache']['get']\n    let cacheSet: ConfigUtils['cache']['set']\n    let functionToCall = initTailwindMerge\n\n    function initTailwindMerge(classList: string) {\n        const config = createConfigRest.reduce(\n            (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n            createConfigFirst() as AnyConfig,\n        )\n\n        configUtils = createConfigUtils(config)\n        cacheGet = configUtils.cache.get\n        cacheSet = configUtils.cache.set\n        functionToCall = tailwindMerge\n\n        return tailwindMerge(classList)\n    }\n\n    function tailwindMerge(classList: string) {\n        const cachedResult = cacheGet(classList)\n\n        if (cachedResult) {\n            return cachedResult\n        }\n\n        const result = mergeClassList(classList, configUtils)\n        cacheSet(classList, result)\n\n        return result\n    }\n\n    return function callTailwindMerge() {\n        return functionToCall(twJoin.apply(null, arguments as any))\n    }\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nexport const fromTheme = <\n    AdditionalThemeGroupIds extends string = never,\n    DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>): ThemeGetter => {\n    const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n        theme[key] || []\n\n    themeGetter.isThemeGetter = true as const\n\n    return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n    /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n    /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n    // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n    // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n    // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n    lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n    !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n    getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n    getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryPosition = (value: string) =>\n    getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n    getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n    getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n    getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n    getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n    getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n    getIsArbitraryVariable(value, isLabelShadow, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n    value: string,\n    testLabel: (label: string) => boolean,\n    testValue: (value: string) => boolean,\n) => {\n    const result = arbitraryValueRegex.exec(value)\n\n    if (result) {\n        if (result[1]) {\n            return testLabel(result[1])\n        }\n\n        return testValue(result[2]!)\n    }\n\n    return false\n}\n\nconst getIsArbitraryVariable = (\n    value: string,\n    testLabel: (label: string) => boolean,\n    shouldMatchNoLabel = false,\n) => {\n    const result = arbitraryVariableRegex.exec(value)\n\n    if (result) {\n        if (result[1]) {\n            return testLabel(result[1])\n        }\n        return shouldMatchNoLabel\n    }\n\n    return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n    isAny,\n    isAnyNonArbitrary,\n    isArbitraryImage,\n    isArbitraryLength,\n    isArbitraryNumber,\n    isArbitraryPosition,\n    isArbitraryShadow,\n    isArbitrarySize,\n    isArbitraryValue,\n    isArbitraryVariable,\n    isArbitraryVariableFamilyName,\n    isArbitraryVariableImage,\n    isArbitraryVariableLength,\n    isArbitraryVariablePosition,\n    isArbitraryVariableShadow,\n    isArbitraryVariableSize,\n    isFraction,\n    isInteger,\n    isNumber,\n    isPercent,\n    isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n    /**\n     * Theme getters for theme variable namespaces\n     * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n     */\n    /***/\n\n    const themeColor = fromTheme('color')\n    const themeFont = fromTheme('font')\n    const themeText = fromTheme('text')\n    const themeFontWeight = fromTheme('font-weight')\n    const themeTracking = fromTheme('tracking')\n    const themeLeading = fromTheme('leading')\n    const themeBreakpoint = fromTheme('breakpoint')\n    const themeContainer = fromTheme('container')\n    const themeSpacing = fromTheme('spacing')\n    const themeRadius = fromTheme('radius')\n    const themeShadow = fromTheme('shadow')\n    const themeInsetShadow = fromTheme('inset-shadow')\n    const themeTextShadow = fromTheme('text-shadow')\n    const themeDropShadow = fromTheme('drop-shadow')\n    const themeBlur = fromTheme('blur')\n    const themePerspective = fromTheme('perspective')\n    const themeAspect = fromTheme('aspect')\n    const themeEase = fromTheme('ease')\n    const themeAnimate = fromTheme('animate')\n\n    /**\n     * Helpers to avoid repeating the same scales\n     *\n     * We use functions that create a new array every time they're called instead of static arrays.\n     * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n     */\n    /***/\n\n    const scaleBreak = () =>\n        ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n    const scalePosition = () =>\n        [\n            'center',\n            'top',\n            'bottom',\n            'left',\n            'right',\n            'top-left',\n            // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n            'left-top',\n            'top-right',\n            // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n            'right-top',\n            'bottom-right',\n            // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n            'right-bottom',\n            'bottom-left',\n            // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n            'left-bottom',\n        ] as const\n    const scalePositionWithArbitrary = () =>\n        [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n    const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n    const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n    const scaleUnambiguousSpacing = () =>\n        [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n    const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n    const scaleGridTemplateColsRows = () =>\n        [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n    const scaleGridColRowStartAndEnd = () =>\n        [\n            'auto',\n            { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n            isInteger,\n            isArbitraryVariable,\n            isArbitraryValue,\n        ] as const\n    const scaleGridColRowStartOrEnd = () =>\n        [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n    const scaleGridAutoColsRows = () =>\n        ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n    const scaleAlignPrimaryAxis = () =>\n        [\n            'start',\n            'end',\n            'center',\n            'between',\n            'around',\n            'evenly',\n            'stretch',\n            'baseline',\n            'center-safe',\n            'end-safe',\n        ] as const\n    const scaleAlignSecondaryAxis = () =>\n        ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n    const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n    const scaleSizing = () =>\n        [\n            isFraction,\n            'auto',\n            'full',\n            'dvw',\n            'dvh',\n            'lvw',\n            'lvh',\n            'svw',\n            'svh',\n            'min',\n            'max',\n            'fit',\n            ...scaleUnambiguousSpacing(),\n        ] as const\n    const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n    const scaleBgPosition = () =>\n        [\n            ...scalePosition(),\n            isArbitraryVariablePosition,\n            isArbitraryPosition,\n            { position: [isArbitraryVariable, isArbitraryValue] },\n        ] as const\n    const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n    const scaleBgSize = () =>\n        [\n            'auto',\n            'cover',\n            'contain',\n            isArbitraryVariableSize,\n            isArbitrarySize,\n            { size: [isArbitraryVariable, isArbitraryValue] },\n        ] as const\n    const scaleGradientStopPosition = () =>\n        [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n    const scaleRadius = () =>\n        [\n            // Deprecated since Tailwind CSS v4.0.0\n            '',\n            'none',\n            'full',\n            themeRadius,\n            isArbitraryVariable,\n            isArbitraryValue,\n        ] as const\n    const scaleBorderWidth = () =>\n        ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n    const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n    const scaleBlendMode = () =>\n        [\n            'normal',\n            'multiply',\n            'screen',\n            'overlay',\n            'darken',\n            'lighten',\n            'color-dodge',\n            'color-burn',\n            'hard-light',\n            'soft-light',\n            'difference',\n            'exclusion',\n            'hue',\n            'saturation',\n            'color',\n            'luminosity',\n        ] as const\n    const scaleMaskImagePosition = () =>\n        [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n    const scaleBlur = () =>\n        [\n            // Deprecated since Tailwind CSS v4.0.0\n            '',\n            'none',\n            themeBlur,\n            isArbitraryVariable,\n            isArbitraryValue,\n        ] as const\n    const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n    const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n    const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n    const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n    return {\n        cacheSize: 500,\n        theme: {\n            animate: ['spin', 'ping', 'pulse', 'bounce'],\n            aspect: ['video'],\n            blur: [isTshirtSize],\n            breakpoint: [isTshirtSize],\n            color: [isAny],\n            container: [isTshirtSize],\n            'drop-shadow': [isTshirtSize],\n            ease: ['in', 'out', 'in-out'],\n            font: [isAnyNonArbitrary],\n            'font-weight': [\n                'thin',\n                'extralight',\n                'light',\n                'normal',\n                'medium',\n                'semibold',\n                'bold',\n                'extrabold',\n                'black',\n            ],\n            'inset-shadow': [isTshirtSize],\n            leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n            perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n            radius: [isTshirtSize],\n            shadow: [isTshirtSize],\n            spacing: ['px', isNumber],\n            text: [isTshirtSize],\n            'text-shadow': [isTshirtSize],\n            tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n        },\n        classGroups: {\n            // --------------\n            // --- Layout ---\n            // --------------\n\n            /**\n             * Aspect Ratio\n             * @see https://tailwindcss.com/docs/aspect-ratio\n             */\n            aspect: [\n                {\n                    aspect: [\n                        'auto',\n                        'square',\n                        isFraction,\n                        isArbitraryValue,\n                        isArbitraryVariable,\n                        themeAspect,\n                    ],\n                },\n            ],\n            /**\n             * Container\n             * @see https://tailwindcss.com/docs/container\n             * @deprecated since Tailwind CSS v4.0.0\n             */\n            container: ['container'],\n            /**\n             * Columns\n             * @see https://tailwindcss.com/docs/columns\n             */\n            columns: [\n                { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n            ],\n            /**\n             * Break After\n             * @see https://tailwindcss.com/docs/break-after\n             */\n            'break-after': [{ 'break-after': scaleBreak() }],\n            /**\n             * Break Before\n             * @see https://tailwindcss.com/docs/break-before\n             */\n            'break-before': [{ 'break-before': scaleBreak() }],\n            /**\n             * Break Inside\n             * @see https://tailwindcss.com/docs/break-inside\n             */\n            'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n            /**\n             * Box Decoration Break\n             * @see https://tailwindcss.com/docs/box-decoration-break\n             */\n            'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n            /**\n             * Box Sizing\n             * @see https://tailwindcss.com/docs/box-sizing\n             */\n            box: [{ box: ['border', 'content'] }],\n            /**\n             * Display\n             * @see https://tailwindcss.com/docs/display\n             */\n            display: [\n                'block',\n                'inline-block',\n                'inline',\n                'flex',\n                'inline-flex',\n                'table',\n                'inline-table',\n                'table-caption',\n                'table-cell',\n                'table-column',\n                'table-column-group',\n                'table-footer-group',\n                'table-header-group',\n                'table-row-group',\n                'table-row',\n                'flow-root',\n                'grid',\n                'inline-grid',\n                'contents',\n                'list-item',\n                'hidden',\n            ],\n            /**\n             * Screen Reader Only\n             * @see https://tailwindcss.com/docs/display#screen-reader-only\n             */\n            sr: ['sr-only', 'not-sr-only'],\n            /**\n             * Floats\n             * @see https://tailwindcss.com/docs/float\n             */\n            float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n            /**\n             * Clear\n             * @see https://tailwindcss.com/docs/clear\n             */\n            clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n            /**\n             * Isolation\n             * @see https://tailwindcss.com/docs/isolation\n             */\n            isolation: ['isolate', 'isolation-auto'],\n            /**\n             * Object Fit\n             * @see https://tailwindcss.com/docs/object-fit\n             */\n            'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n            /**\n             * Object Position\n             * @see https://tailwindcss.com/docs/object-position\n             */\n            'object-position': [{ object: scalePositionWithArbitrary() }],\n            /**\n             * Overflow\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            overflow: [{ overflow: scaleOverflow() }],\n            /**\n             * Overflow X\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n            /**\n             * Overflow Y\n             * @see https://tailwindcss.com/docs/overflow\n             */\n            'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n            /**\n             * Overscroll Behavior\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            overscroll: [{ overscroll: scaleOverscroll() }],\n            /**\n             * Overscroll Behavior X\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n            /**\n             * Overscroll Behavior Y\n             * @see https://tailwindcss.com/docs/overscroll-behavior\n             */\n            'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n            /**\n             * Position\n             * @see https://tailwindcss.com/docs/position\n             */\n            position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n            /**\n             * Top / Right / Bottom / Left\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            inset: [{ inset: scaleInset() }],\n            /**\n             * Right / Left\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            'inset-x': [{ 'inset-x': scaleInset() }],\n            /**\n             * Top / Bottom\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            'inset-y': [{ 'inset-y': scaleInset() }],\n            /**\n             * Start\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            start: [{ start: scaleInset() }],\n            /**\n             * End\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            end: [{ end: scaleInset() }],\n            /**\n             * Top\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            top: [{ top: scaleInset() }],\n            /**\n             * Right\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            right: [{ right: scaleInset() }],\n            /**\n             * Bottom\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            bottom: [{ bottom: scaleInset() }],\n            /**\n             * Left\n             * @see https://tailwindcss.com/docs/top-right-bottom-left\n             */\n            left: [{ left: scaleInset() }],\n            /**\n             * Visibility\n             * @see https://tailwindcss.com/docs/visibility\n             */\n            visibility: ['visible', 'invisible', 'collapse'],\n            /**\n             * Z-Index\n             * @see https://tailwindcss.com/docs/z-index\n             */\n            z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n            // ------------------------\n            // --- Flexbox and Grid ---\n            // ------------------------\n\n            /**\n             * Flex Basis\n             * @see https://tailwindcss.com/docs/flex-basis\n             */\n            basis: [\n                {\n                    basis: [\n                        isFraction,\n                        'full',\n                        'auto',\n                        themeContainer,\n                        ...scaleUnambiguousSpacing(),\n                    ],\n                },\n            ],\n            /**\n             * Flex Direction\n             * @see https://tailwindcss.com/docs/flex-direction\n             */\n            'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n            /**\n             * Flex Wrap\n             * @see https://tailwindcss.com/docs/flex-wrap\n             */\n            'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n            /**\n             * Flex\n             * @see https://tailwindcss.com/docs/flex\n             */\n            flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n            /**\n             * Flex Grow\n             * @see https://tailwindcss.com/docs/flex-grow\n             */\n            grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Flex Shrink\n             * @see https://tailwindcss.com/docs/flex-shrink\n             */\n            shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Order\n             * @see https://tailwindcss.com/docs/order\n             */\n            order: [\n                {\n                    order: [\n                        isInteger,\n                        'first',\n                        'last',\n                        'none',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Grid Template Columns\n             * @see https://tailwindcss.com/docs/grid-template-columns\n             */\n            'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n            /**\n             * Grid Column Start / End\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n            /**\n             * Grid Column Start\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n            /**\n             * Grid Column End\n             * @see https://tailwindcss.com/docs/grid-column\n             */\n            'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n            /**\n             * Grid Template Rows\n             * @see https://tailwindcss.com/docs/grid-template-rows\n             */\n            'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n            /**\n             * Grid Row Start / End\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n            /**\n             * Grid Row Start\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n            /**\n             * Grid Row End\n             * @see https://tailwindcss.com/docs/grid-row\n             */\n            'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n            /**\n             * Grid Auto Flow\n             * @see https://tailwindcss.com/docs/grid-auto-flow\n             */\n            'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n            /**\n             * Grid Auto Columns\n             * @see https://tailwindcss.com/docs/grid-auto-columns\n             */\n            'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n            /**\n             * Grid Auto Rows\n             * @see https://tailwindcss.com/docs/grid-auto-rows\n             */\n            'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n            /**\n             * Gap\n             * @see https://tailwindcss.com/docs/gap\n             */\n            gap: [{ gap: scaleUnambiguousSpacing() }],\n            /**\n             * Gap X\n             * @see https://tailwindcss.com/docs/gap\n             */\n            'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n            /**\n             * Gap Y\n             * @see https://tailwindcss.com/docs/gap\n             */\n            'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n            /**\n             * Justify Content\n             * @see https://tailwindcss.com/docs/justify-content\n             */\n            'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n            /**\n             * Justify Items\n             * @see https://tailwindcss.com/docs/justify-items\n             */\n            'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n            /**\n             * Justify Self\n             * @see https://tailwindcss.com/docs/justify-self\n             */\n            'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n            /**\n             * Align Content\n             * @see https://tailwindcss.com/docs/align-content\n             */\n            'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n            /**\n             * Align Items\n             * @see https://tailwindcss.com/docs/align-items\n             */\n            'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n            /**\n             * Align Self\n             * @see https://tailwindcss.com/docs/align-self\n             */\n            'align-self': [\n                { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n            ],\n            /**\n             * Place Content\n             * @see https://tailwindcss.com/docs/place-content\n             */\n            'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n            /**\n             * Place Items\n             * @see https://tailwindcss.com/docs/place-items\n             */\n            'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n            /**\n             * Place Self\n             * @see https://tailwindcss.com/docs/place-self\n             */\n            'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n            // Spacing\n            /**\n             * Padding\n             * @see https://tailwindcss.com/docs/padding\n             */\n            p: [{ p: scaleUnambiguousSpacing() }],\n            /**\n             * Padding X\n             * @see https://tailwindcss.com/docs/padding\n             */\n            px: [{ px: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Y\n             * @see https://tailwindcss.com/docs/padding\n             */\n            py: [{ py: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Start\n             * @see https://tailwindcss.com/docs/padding\n             */\n            ps: [{ ps: scaleUnambiguousSpacing() }],\n            /**\n             * Padding End\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pe: [{ pe: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Top\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pt: [{ pt: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Right\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pr: [{ pr: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Bottom\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pb: [{ pb: scaleUnambiguousSpacing() }],\n            /**\n             * Padding Left\n             * @see https://tailwindcss.com/docs/padding\n             */\n            pl: [{ pl: scaleUnambiguousSpacing() }],\n            /**\n             * Margin\n             * @see https://tailwindcss.com/docs/margin\n             */\n            m: [{ m: scaleMargin() }],\n            /**\n             * Margin X\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mx: [{ mx: scaleMargin() }],\n            /**\n             * Margin Y\n             * @see https://tailwindcss.com/docs/margin\n             */\n            my: [{ my: scaleMargin() }],\n            /**\n             * Margin Start\n             * @see https://tailwindcss.com/docs/margin\n             */\n            ms: [{ ms: scaleMargin() }],\n            /**\n             * Margin End\n             * @see https://tailwindcss.com/docs/margin\n             */\n            me: [{ me: scaleMargin() }],\n            /**\n             * Margin Top\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mt: [{ mt: scaleMargin() }],\n            /**\n             * Margin Right\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mr: [{ mr: scaleMargin() }],\n            /**\n             * Margin Bottom\n             * @see https://tailwindcss.com/docs/margin\n             */\n            mb: [{ mb: scaleMargin() }],\n            /**\n             * Margin Left\n             * @see https://tailwindcss.com/docs/margin\n             */\n            ml: [{ ml: scaleMargin() }],\n            /**\n             * Space Between X\n             * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n             */\n            'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n            /**\n             * Space Between X Reverse\n             * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n             */\n            'space-x-reverse': ['space-x-reverse'],\n            /**\n             * Space Between Y\n             * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n             */\n            'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n            /**\n             * Space Between Y Reverse\n             * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n             */\n            'space-y-reverse': ['space-y-reverse'],\n\n            // --------------\n            // --- Sizing ---\n            // --------------\n\n            /**\n             * Size\n             * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n             */\n            size: [{ size: scaleSizing() }],\n            /**\n             * Width\n             * @see https://tailwindcss.com/docs/width\n             */\n            w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n            /**\n             * Min-Width\n             * @see https://tailwindcss.com/docs/min-width\n             */\n            'min-w': [\n                {\n                    'min-w': [\n                        themeContainer,\n                        'screen',\n                        /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n                        'none',\n                        ...scaleSizing(),\n                    ],\n                },\n            ],\n            /**\n             * Max-Width\n             * @see https://tailwindcss.com/docs/max-width\n             */\n            'max-w': [\n                {\n                    'max-w': [\n                        themeContainer,\n                        'screen',\n                        'none',\n                        /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n                        'prose',\n                        /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n                        { screen: [themeBreakpoint] },\n                        ...scaleSizing(),\n                    ],\n                },\n            ],\n            /**\n             * Height\n             * @see https://tailwindcss.com/docs/height\n             */\n            h: [{ h: ['screen', ...scaleSizing()] }],\n            /**\n             * Min-Height\n             * @see https://tailwindcss.com/docs/min-height\n             */\n            'min-h': [{ 'min-h': ['screen', 'none', ...scaleSizing()] }],\n            /**\n             * Max-Height\n             * @see https://tailwindcss.com/docs/max-height\n             */\n            'max-h': [{ 'max-h': ['screen', ...scaleSizing()] }],\n\n            // ------------------\n            // --- Typography ---\n            // ------------------\n\n            /**\n             * Font Size\n             * @see https://tailwindcss.com/docs/font-size\n             */\n            'font-size': [\n                { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n            ],\n            /**\n             * Font Smoothing\n             * @see https://tailwindcss.com/docs/font-smoothing\n             */\n            'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n            /**\n             * Font Style\n             * @see https://tailwindcss.com/docs/font-style\n             */\n            'font-style': ['italic', 'not-italic'],\n            /**\n             * Font Weight\n             * @see https://tailwindcss.com/docs/font-weight\n             */\n            'font-weight': [{ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber] }],\n            /**\n             * Font Stretch\n             * @see https://tailwindcss.com/docs/font-stretch\n             */\n            'font-stretch': [\n                {\n                    'font-stretch': [\n                        'ultra-condensed',\n                        'extra-condensed',\n                        'condensed',\n                        'semi-condensed',\n                        'normal',\n                        'semi-expanded',\n                        'expanded',\n                        'extra-expanded',\n                        'ultra-expanded',\n                        isPercent,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Font Family\n             * @see https://tailwindcss.com/docs/font-family\n             */\n            'font-family': [{ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont] }],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-normal': ['normal-nums'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-ordinal': ['ordinal'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-slashed-zero': ['slashed-zero'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n            /**\n             * Font Variant Numeric\n             * @see https://tailwindcss.com/docs/font-variant-numeric\n             */\n            'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n            /**\n             * Letter Spacing\n             * @see https://tailwindcss.com/docs/letter-spacing\n             */\n            tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Line Clamp\n             * @see https://tailwindcss.com/docs/line-clamp\n             */\n            'line-clamp': [\n                { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n            ],\n            /**\n             * Line Height\n             * @see https://tailwindcss.com/docs/line-height\n             */\n            leading: [\n                {\n                    leading: [\n                        /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n                        themeLeading,\n                        ...scaleUnambiguousSpacing(),\n                    ],\n                },\n            ],\n            /**\n             * List Style Image\n             * @see https://tailwindcss.com/docs/list-style-image\n             */\n            'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * List Style Position\n             * @see https://tailwindcss.com/docs/list-style-position\n             */\n            'list-style-position': [{ list: ['inside', 'outside'] }],\n            /**\n             * List Style Type\n             * @see https://tailwindcss.com/docs/list-style-type\n             */\n            'list-style-type': [\n                { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Text Alignment\n             * @see https://tailwindcss.com/docs/text-align\n             */\n            'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n            /**\n             * Placeholder Color\n             * @deprecated since Tailwind CSS v3.0.0\n             * @see https://v3.tailwindcss.com/docs/placeholder-color\n             */\n            'placeholder-color': [{ placeholder: scaleColor() }],\n            /**\n             * Text Color\n             * @see https://tailwindcss.com/docs/text-color\n             */\n            'text-color': [{ text: scaleColor() }],\n            /**\n             * Text Decoration\n             * @see https://tailwindcss.com/docs/text-decoration\n             */\n            'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n            /**\n             * Text Decoration Style\n             * @see https://tailwindcss.com/docs/text-decoration-style\n             */\n            'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n            /**\n             * Text Decoration Thickness\n             * @see https://tailwindcss.com/docs/text-decoration-thickness\n             */\n            'text-decoration-thickness': [\n                {\n                    decoration: [\n                        isNumber,\n                        'from-font',\n                        'auto',\n                        isArbitraryVariable,\n                        isArbitraryLength,\n                    ],\n                },\n            ],\n            /**\n             * Text Decoration Color\n             * @see https://tailwindcss.com/docs/text-decoration-color\n             */\n            'text-decoration-color': [{ decoration: scaleColor() }],\n            /**\n             * Text Underline Offset\n             * @see https://tailwindcss.com/docs/text-underline-offset\n             */\n            'underline-offset': [\n                { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Text Transform\n             * @see https://tailwindcss.com/docs/text-transform\n             */\n            'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n            /**\n             * Text Overflow\n             * @see https://tailwindcss.com/docs/text-overflow\n             */\n            'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n            /**\n             * Text Wrap\n             * @see https://tailwindcss.com/docs/text-wrap\n             */\n            'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n            /**\n             * Text Indent\n             * @see https://tailwindcss.com/docs/text-indent\n             */\n            indent: [{ indent: scaleUnambiguousSpacing() }],\n            /**\n             * Vertical Alignment\n             * @see https://tailwindcss.com/docs/vertical-align\n             */\n            'vertical-align': [\n                {\n                    align: [\n                        'baseline',\n                        'top',\n                        'middle',\n                        'bottom',\n                        'text-top',\n                        'text-bottom',\n                        'sub',\n                        'super',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Whitespace\n             * @see https://tailwindcss.com/docs/whitespace\n             */\n            whitespace: [\n                { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n            ],\n            /**\n             * Word Break\n             * @see https://tailwindcss.com/docs/word-break\n             */\n            break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n            /**\n             * Overflow Wrap\n             * @see https://tailwindcss.com/docs/overflow-wrap\n             */\n            wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n            /**\n             * Hyphens\n             * @see https://tailwindcss.com/docs/hyphens\n             */\n            hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n            /**\n             * Content\n             * @see https://tailwindcss.com/docs/content\n             */\n            content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n            // -------------------\n            // --- Backgrounds ---\n            // -------------------\n\n            /**\n             * Background Attachment\n             * @see https://tailwindcss.com/docs/background-attachment\n             */\n            'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n            /**\n             * Background Clip\n             * @see https://tailwindcss.com/docs/background-clip\n             */\n            'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n            /**\n             * Background Origin\n             * @see https://tailwindcss.com/docs/background-origin\n             */\n            'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n            /**\n             * Background Position\n             * @see https://tailwindcss.com/docs/background-position\n             */\n            'bg-position': [{ bg: scaleBgPosition() }],\n            /**\n             * Background Repeat\n             * @see https://tailwindcss.com/docs/background-repeat\n             */\n            'bg-repeat': [{ bg: scaleBgRepeat() }],\n            /**\n             * Background Size\n             * @see https://tailwindcss.com/docs/background-size\n             */\n            'bg-size': [{ bg: scaleBgSize() }],\n            /**\n             * Background Image\n             * @see https://tailwindcss.com/docs/background-image\n             */\n            'bg-image': [\n                {\n                    bg: [\n                        'none',\n                        {\n                            linear: [\n                                { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n                                isInteger,\n                                isArbitraryVariable,\n                                isArbitraryValue,\n                            ],\n                            radial: ['', isArbitraryVariable, isArbitraryValue],\n                            conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n                        },\n                        isArbitraryVariableImage,\n                        isArbitraryImage,\n                    ],\n                },\n            ],\n            /**\n             * Background Color\n             * @see https://tailwindcss.com/docs/background-color\n             */\n            'bg-color': [{ bg: scaleColor() }],\n            /**\n             * Gradient Color Stops From Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n            /**\n             * Gradient Color Stops Via Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n            /**\n             * Gradient Color Stops To Position\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n            /**\n             * Gradient Color Stops From\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-from': [{ from: scaleColor() }],\n            /**\n             * Gradient Color Stops Via\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-via': [{ via: scaleColor() }],\n            /**\n             * Gradient Color Stops To\n             * @see https://tailwindcss.com/docs/gradient-color-stops\n             */\n            'gradient-to': [{ to: scaleColor() }],\n\n            // ---------------\n            // --- Borders ---\n            // ---------------\n\n            /**\n             * Border Radius\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            rounded: [{ rounded: scaleRadius() }],\n            /**\n             * Border Radius Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-s': [{ 'rounded-s': scaleRadius() }],\n            /**\n             * Border Radius End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-e': [{ 'rounded-e': scaleRadius() }],\n            /**\n             * Border Radius Top\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-t': [{ 'rounded-t': scaleRadius() }],\n            /**\n             * Border Radius Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-r': [{ 'rounded-r': scaleRadius() }],\n            /**\n             * Border Radius Bottom\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-b': [{ 'rounded-b': scaleRadius() }],\n            /**\n             * Border Radius Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-l': [{ 'rounded-l': scaleRadius() }],\n            /**\n             * Border Radius Start Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n            /**\n             * Border Radius Start End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-se': [{ 'rounded-se': scaleRadius() }],\n            /**\n             * Border Radius End End\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n            /**\n             * Border Radius End Start\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-es': [{ 'rounded-es': scaleRadius() }],\n            /**\n             * Border Radius Top Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n            /**\n             * Border Radius Top Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n            /**\n             * Border Radius Bottom Right\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-br': [{ 'rounded-br': scaleRadius() }],\n            /**\n             * Border Radius Bottom Left\n             * @see https://tailwindcss.com/docs/border-radius\n             */\n            'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n            /**\n             * Border Width\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w': [{ border: scaleBorderWidth() }],\n            /**\n             * Border Width X\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n            /**\n             * Border Width Y\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n            /**\n             * Border Width Start\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n            /**\n             * Border Width End\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n            /**\n             * Border Width Top\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n            /**\n             * Border Width Right\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n            /**\n             * Border Width Bottom\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n            /**\n             * Border Width Left\n             * @see https://tailwindcss.com/docs/border-width\n             */\n            'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n            /**\n             * Divide Width X\n             * @see https://tailwindcss.com/docs/border-width#between-children\n             */\n            'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n            /**\n             * Divide Width X Reverse\n             * @see https://tailwindcss.com/docs/border-width#between-children\n             */\n            'divide-x-reverse': ['divide-x-reverse'],\n            /**\n             * Divide Width Y\n             * @see https://tailwindcss.com/docs/border-width#between-children\n             */\n            'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n            /**\n             * Divide Width Y Reverse\n             * @see https://tailwindcss.com/docs/border-width#between-children\n             */\n            'divide-y-reverse': ['divide-y-reverse'],\n            /**\n             * Border Style\n             * @see https://tailwindcss.com/docs/border-style\n             */\n            'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n            /**\n             * Divide Style\n             * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n             */\n            'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n            /**\n             * Border Color\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color': [{ border: scaleColor() }],\n            /**\n             * Border Color X\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-x': [{ 'border-x': scaleColor() }],\n            /**\n             * Border Color Y\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-y': [{ 'border-y': scaleColor() }],\n            /**\n             * Border Color S\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-s': [{ 'border-s': scaleColor() }],\n            /**\n             * Border Color E\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-e': [{ 'border-e': scaleColor() }],\n            /**\n             * Border Color Top\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-t': [{ 'border-t': scaleColor() }],\n            /**\n             * Border Color Right\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-r': [{ 'border-r': scaleColor() }],\n            /**\n             * Border Color Bottom\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-b': [{ 'border-b': scaleColor() }],\n            /**\n             * Border Color Left\n             * @see https://tailwindcss.com/docs/border-color\n             */\n            'border-color-l': [{ 'border-l': scaleColor() }],\n            /**\n             * Divide Color\n             * @see https://tailwindcss.com/docs/divide-color\n             */\n            'divide-color': [{ divide: scaleColor() }],\n            /**\n             * Outline Style\n             * @see https://tailwindcss.com/docs/outline-style\n             */\n            'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n            /**\n             * Outline Offset\n             * @see https://tailwindcss.com/docs/outline-offset\n             */\n            'outline-offset': [\n                { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Outline Width\n             * @see https://tailwindcss.com/docs/outline-width\n             */\n            'outline-w': [\n                { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n            ],\n            /**\n             * Outline Color\n             * @see https://tailwindcss.com/docs/outline-color\n             */\n            'outline-color': [{ outline: scaleColor() }],\n\n            // ---------------\n            // --- Effects ---\n            // ---------------\n\n            /**\n             * Box Shadow\n             * @see https://tailwindcss.com/docs/box-shadow\n             */\n            shadow: [\n                {\n                    shadow: [\n                        // Deprecated since Tailwind CSS v4.0.0\n                        '',\n                        'none',\n                        themeShadow,\n                        isArbitraryVariableShadow,\n                        isArbitraryShadow,\n                    ],\n                },\n            ],\n            /**\n             * Box Shadow Color\n             * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n             */\n            'shadow-color': [{ shadow: scaleColor() }],\n            /**\n             * Inset Box Shadow\n             * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n             */\n            'inset-shadow': [\n                {\n                    'inset-shadow': [\n                        'none',\n                        themeInsetShadow,\n                        isArbitraryVariableShadow,\n                        isArbitraryShadow,\n                    ],\n                },\n            ],\n            /**\n             * Inset Box Shadow Color\n             * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n             */\n            'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n            /**\n             * Ring Width\n             * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n             */\n            'ring-w': [{ ring: scaleBorderWidth() }],\n            /**\n             * Ring Width Inset\n             * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n             * @deprecated since Tailwind CSS v4.0.0\n             * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n             */\n            'ring-w-inset': ['ring-inset'],\n            /**\n             * Ring Color\n             * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n             */\n            'ring-color': [{ ring: scaleColor() }],\n            /**\n             * Ring Offset Width\n             * @see https://v3.tailwindcss.com/docs/ring-offset-width\n             * @deprecated since Tailwind CSS v4.0.0\n             * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n             */\n            'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n            /**\n             * Ring Offset Color\n             * @see https://v3.tailwindcss.com/docs/ring-offset-color\n             * @deprecated since Tailwind CSS v4.0.0\n             * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n             */\n            'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n            /**\n             * Inset Ring Width\n             * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n             */\n            'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n            /**\n             * Inset Ring Color\n             * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n             */\n            'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n            /**\n             * Text Shadow\n             * @see https://tailwindcss.com/docs/text-shadow\n             */\n            'text-shadow': [\n                {\n                    'text-shadow': [\n                        'none',\n                        themeTextShadow,\n                        isArbitraryVariableShadow,\n                        isArbitraryShadow,\n                    ],\n                },\n            ],\n            /**\n             * Text Shadow Color\n             * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n             */\n            'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n            /**\n             * Opacity\n             * @see https://tailwindcss.com/docs/opacity\n             */\n            opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Mix Blend Mode\n             * @see https://tailwindcss.com/docs/mix-blend-mode\n             */\n            'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n            /**\n             * Background Blend Mode\n             * @see https://tailwindcss.com/docs/background-blend-mode\n             */\n            'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n            /**\n             * Mask Clip\n             * @see https://tailwindcss.com/docs/mask-clip\n             */\n            'mask-clip': [\n                { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n                'mask-no-clip',\n            ],\n            /**\n             * Mask Composite\n             * @see https://tailwindcss.com/docs/mask-composite\n             */\n            'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n            /**\n             * Mask Image\n             * @see https://tailwindcss.com/docs/mask-image\n             */\n            'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n            'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n            'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n            'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n            'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n            'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n            'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n            'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n            'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n            'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n            'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n            'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n            'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n            'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n            'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n            'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n            'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n            'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n            'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n            'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n            'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n            'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n            'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n            'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n            'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n            'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n            'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n            'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n            'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n            'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n            'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n            'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n            'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n            'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n            'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n            'mask-image-radial-size': [\n                { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n            ],\n            'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n            'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n            'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n            'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n            'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n            'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n            /**\n             * Mask Mode\n             * @see https://tailwindcss.com/docs/mask-mode\n             */\n            'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n            /**\n             * Mask Origin\n             * @see https://tailwindcss.com/docs/mask-origin\n             */\n            'mask-origin': [\n                { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n            ],\n            /**\n             * Mask Position\n             * @see https://tailwindcss.com/docs/mask-position\n             */\n            'mask-position': [{ mask: scaleBgPosition() }],\n            /**\n             * Mask Repeat\n             * @see https://tailwindcss.com/docs/mask-repeat\n             */\n            'mask-repeat': [{ mask: scaleBgRepeat() }],\n            /**\n             * Mask Size\n             * @see https://tailwindcss.com/docs/mask-size\n             */\n            'mask-size': [{ mask: scaleBgSize() }],\n            /**\n             * Mask Type\n             * @see https://tailwindcss.com/docs/mask-type\n             */\n            'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n            /**\n             * Mask Image\n             * @see https://tailwindcss.com/docs/mask-image\n             */\n            'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n            // ---------------\n            // --- Filters ---\n            // ---------------\n\n            /**\n             * Filter\n             * @see https://tailwindcss.com/docs/filter\n             */\n            filter: [\n                {\n                    filter: [\n                        // Deprecated since Tailwind CSS v3.0.0\n                        '',\n                        'none',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Blur\n             * @see https://tailwindcss.com/docs/blur\n             */\n            blur: [{ blur: scaleBlur() }],\n            /**\n             * Brightness\n             * @see https://tailwindcss.com/docs/brightness\n             */\n            brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Contrast\n             * @see https://tailwindcss.com/docs/contrast\n             */\n            contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Drop Shadow\n             * @see https://tailwindcss.com/docs/drop-shadow\n             */\n            'drop-shadow': [\n                {\n                    'drop-shadow': [\n                        // Deprecated since Tailwind CSS v4.0.0\n                        '',\n                        'none',\n                        themeDropShadow,\n                        isArbitraryVariableShadow,\n                        isArbitraryShadow,\n                    ],\n                },\n            ],\n            /**\n             * Drop Shadow Color\n             * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n             */\n            'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n            /**\n             * Grayscale\n             * @see https://tailwindcss.com/docs/grayscale\n             */\n            grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Hue Rotate\n             * @see https://tailwindcss.com/docs/hue-rotate\n             */\n            'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Invert\n             * @see https://tailwindcss.com/docs/invert\n             */\n            invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Saturate\n             * @see https://tailwindcss.com/docs/saturate\n             */\n            saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Sepia\n             * @see https://tailwindcss.com/docs/sepia\n             */\n            sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Backdrop Filter\n             * @see https://tailwindcss.com/docs/backdrop-filter\n             */\n            'backdrop-filter': [\n                {\n                    'backdrop-filter': [\n                        // Deprecated since Tailwind CSS v3.0.0\n                        '',\n                        'none',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Backdrop Blur\n             * @see https://tailwindcss.com/docs/backdrop-blur\n             */\n            'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n            /**\n             * Backdrop Brightness\n             * @see https://tailwindcss.com/docs/backdrop-brightness\n             */\n            'backdrop-brightness': [\n                { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Contrast\n             * @see https://tailwindcss.com/docs/backdrop-contrast\n             */\n            'backdrop-contrast': [\n                { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Grayscale\n             * @see https://tailwindcss.com/docs/backdrop-grayscale\n             */\n            'backdrop-grayscale': [\n                { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Hue Rotate\n             * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n             */\n            'backdrop-hue-rotate': [\n                { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Invert\n             * @see https://tailwindcss.com/docs/backdrop-invert\n             */\n            'backdrop-invert': [\n                { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Opacity\n             * @see https://tailwindcss.com/docs/backdrop-opacity\n             */\n            'backdrop-opacity': [\n                { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Saturate\n             * @see https://tailwindcss.com/docs/backdrop-saturate\n             */\n            'backdrop-saturate': [\n                { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Backdrop Sepia\n             * @see https://tailwindcss.com/docs/backdrop-sepia\n             */\n            'backdrop-sepia': [\n                { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n            ],\n\n            // --------------\n            // --- Tables ---\n            // --------------\n\n            /**\n             * Border Collapse\n             * @see https://tailwindcss.com/docs/border-collapse\n             */\n            'border-collapse': [{ border: ['collapse', 'separate'] }],\n            /**\n             * Border Spacing\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n            /**\n             * Border Spacing X\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n            /**\n             * Border Spacing Y\n             * @see https://tailwindcss.com/docs/border-spacing\n             */\n            'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n            /**\n             * Table Layout\n             * @see https://tailwindcss.com/docs/table-layout\n             */\n            'table-layout': [{ table: ['auto', 'fixed'] }],\n            /**\n             * Caption Side\n             * @see https://tailwindcss.com/docs/caption-side\n             */\n            caption: [{ caption: ['top', 'bottom'] }],\n\n            // ---------------------------------\n            // --- Transitions and Animation ---\n            // ---------------------------------\n\n            /**\n             * Transition Property\n             * @see https://tailwindcss.com/docs/transition-property\n             */\n            transition: [\n                {\n                    transition: [\n                        '',\n                        'all',\n                        'colors',\n                        'opacity',\n                        'shadow',\n                        'transform',\n                        'none',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Transition Behavior\n             * @see https://tailwindcss.com/docs/transition-behavior\n             */\n            'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n            /**\n             * Transition Duration\n             * @see https://tailwindcss.com/docs/transition-duration\n             */\n            duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Transition Timing Function\n             * @see https://tailwindcss.com/docs/transition-timing-function\n             */\n            ease: [\n                { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Transition Delay\n             * @see https://tailwindcss.com/docs/transition-delay\n             */\n            delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n            /**\n             * Animation\n             * @see https://tailwindcss.com/docs/animation\n             */\n            animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n            // ------------------\n            // --- Transforms ---\n            // ------------------\n\n            /**\n             * Backface Visibility\n             * @see https://tailwindcss.com/docs/backface-visibility\n             */\n            backface: [{ backface: ['hidden', 'visible'] }],\n            /**\n             * Perspective\n             * @see https://tailwindcss.com/docs/perspective\n             */\n            perspective: [\n                { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n            ],\n            /**\n             * Perspective Origin\n             * @see https://tailwindcss.com/docs/perspective-origin\n             */\n            'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n            /**\n             * Rotate\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            rotate: [{ rotate: scaleRotate() }],\n            /**\n             * Rotate X\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            'rotate-x': [{ 'rotate-x': scaleRotate() }],\n            /**\n             * Rotate Y\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            'rotate-y': [{ 'rotate-y': scaleRotate() }],\n            /**\n             * Rotate Z\n             * @see https://tailwindcss.com/docs/rotate\n             */\n            'rotate-z': [{ 'rotate-z': scaleRotate() }],\n            /**\n             * Scale\n             * @see https://tailwindcss.com/docs/scale\n             */\n            scale: [{ scale: scaleScale() }],\n            /**\n             * Scale X\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-x': [{ 'scale-x': scaleScale() }],\n            /**\n             * Scale Y\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-y': [{ 'scale-y': scaleScale() }],\n            /**\n             * Scale Z\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-z': [{ 'scale-z': scaleScale() }],\n            /**\n             * Scale 3D\n             * @see https://tailwindcss.com/docs/scale\n             */\n            'scale-3d': ['scale-3d'],\n            /**\n             * Skew\n             * @see https://tailwindcss.com/docs/skew\n             */\n            skew: [{ skew: scaleSkew() }],\n            /**\n             * Skew X\n             * @see https://tailwindcss.com/docs/skew\n             */\n            'skew-x': [{ 'skew-x': scaleSkew() }],\n            /**\n             * Skew Y\n             * @see https://tailwindcss.com/docs/skew\n             */\n            'skew-y': [{ 'skew-y': scaleSkew() }],\n            /**\n             * Transform\n             * @see https://tailwindcss.com/docs/transform\n             */\n            transform: [\n                { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n            ],\n            /**\n             * Transform Origin\n             * @see https://tailwindcss.com/docs/transform-origin\n             */\n            'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n            /**\n             * Transform Style\n             * @see https://tailwindcss.com/docs/transform-style\n             */\n            'transform-style': [{ transform: ['3d', 'flat'] }],\n            /**\n             * Translate\n             * @see https://tailwindcss.com/docs/translate\n             */\n            translate: [{ translate: scaleTranslate() }],\n            /**\n             * Translate X\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-x': [{ 'translate-x': scaleTranslate() }],\n            /**\n             * Translate Y\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-y': [{ 'translate-y': scaleTranslate() }],\n            /**\n             * Translate Z\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-z': [{ 'translate-z': scaleTranslate() }],\n            /**\n             * Translate None\n             * @see https://tailwindcss.com/docs/translate\n             */\n            'translate-none': ['translate-none'],\n\n            // ---------------------\n            // --- Interactivity ---\n            // ---------------------\n\n            /**\n             * Accent Color\n             * @see https://tailwindcss.com/docs/accent-color\n             */\n            accent: [{ accent: scaleColor() }],\n            /**\n             * Appearance\n             * @see https://tailwindcss.com/docs/appearance\n             */\n            appearance: [{ appearance: ['none', 'auto'] }],\n            /**\n             * Caret Color\n             * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n             */\n            'caret-color': [{ caret: scaleColor() }],\n            /**\n             * Color Scheme\n             * @see https://tailwindcss.com/docs/color-scheme\n             */\n            'color-scheme': [\n                { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n            ],\n            /**\n             * Cursor\n             * @see https://tailwindcss.com/docs/cursor\n             */\n            cursor: [\n                {\n                    cursor: [\n                        'auto',\n                        'default',\n                        'pointer',\n                        'wait',\n                        'text',\n                        'move',\n                        'help',\n                        'not-allowed',\n                        'none',\n                        'context-menu',\n                        'progress',\n                        'cell',\n                        'crosshair',\n                        'vertical-text',\n                        'alias',\n                        'copy',\n                        'no-drop',\n                        'grab',\n                        'grabbing',\n                        'all-scroll',\n                        'col-resize',\n                        'row-resize',\n                        'n-resize',\n                        'e-resize',\n                        's-resize',\n                        'w-resize',\n                        'ne-resize',\n                        'nw-resize',\n                        'se-resize',\n                        'sw-resize',\n                        'ew-resize',\n                        'ns-resize',\n                        'nesw-resize',\n                        'nwse-resize',\n                        'zoom-in',\n                        'zoom-out',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n            /**\n             * Field Sizing\n             * @see https://tailwindcss.com/docs/field-sizing\n             */\n            'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n            /**\n             * Pointer Events\n             * @see https://tailwindcss.com/docs/pointer-events\n             */\n            'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n            /**\n             * Resize\n             * @see https://tailwindcss.com/docs/resize\n             */\n            resize: [{ resize: ['none', '', 'y', 'x'] }],\n            /**\n             * Scroll Behavior\n             * @see https://tailwindcss.com/docs/scroll-behavior\n             */\n            'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n            /**\n             * Scroll Margin\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin X\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Y\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Start\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin End\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Top\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Right\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Bottom\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Margin Left\n             * @see https://tailwindcss.com/docs/scroll-margin\n             */\n            'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding X\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Y\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Start\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding End\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Top\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Right\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Bottom\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Padding Left\n             * @see https://tailwindcss.com/docs/scroll-padding\n             */\n            'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n            /**\n             * Scroll Snap Align\n             * @see https://tailwindcss.com/docs/scroll-snap-align\n             */\n            'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n            /**\n             * Scroll Snap Stop\n             * @see https://tailwindcss.com/docs/scroll-snap-stop\n             */\n            'snap-stop': [{ snap: ['normal', 'always'] }],\n            /**\n             * Scroll Snap Type\n             * @see https://tailwindcss.com/docs/scroll-snap-type\n             */\n            'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n            /**\n             * Scroll Snap Type Strictness\n             * @see https://tailwindcss.com/docs/scroll-snap-type\n             */\n            'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n            /**\n             * Touch Action\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n            /**\n             * Touch Action X\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n            /**\n             * Touch Action Y\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n            /**\n             * Touch Action Pinch Zoom\n             * @see https://tailwindcss.com/docs/touch-action\n             */\n            'touch-pz': ['touch-pinch-zoom'],\n            /**\n             * User Select\n             * @see https://tailwindcss.com/docs/user-select\n             */\n            select: [{ select: ['none', 'text', 'all', 'auto'] }],\n            /**\n             * Will Change\n             * @see https://tailwindcss.com/docs/will-change\n             */\n            'will-change': [\n                {\n                    'will-change': [\n                        'auto',\n                        'scroll',\n                        'contents',\n                        'transform',\n                        isArbitraryVariable,\n                        isArbitraryValue,\n                    ],\n                },\n            ],\n\n            // -----------\n            // --- SVG ---\n            // -----------\n\n            /**\n             * Fill\n             * @see https://tailwindcss.com/docs/fill\n             */\n            fill: [{ fill: ['none', ...scaleColor()] }],\n            /**\n             * Stroke Width\n             * @see https://tailwindcss.com/docs/stroke-width\n             */\n            'stroke-w': [\n                {\n                    stroke: [\n                        isNumber,\n                        isArbitraryVariableLength,\n                        isArbitraryLength,\n                        isArbitraryNumber,\n                    ],\n                },\n            ],\n            /**\n             * Stroke\n             * @see https://tailwindcss.com/docs/stroke\n             */\n            stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n            // ---------------------\n            // --- Accessibility ---\n            // ---------------------\n\n            /**\n             * Forced Color Adjust\n             * @see https://tailwindcss.com/docs/forced-color-adjust\n             */\n            'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n        },\n        conflictingClassGroups: {\n            overflow: ['overflow-x', 'overflow-y'],\n            overscroll: ['overscroll-x', 'overscroll-y'],\n            inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n            'inset-x': ['right', 'left'],\n            'inset-y': ['top', 'bottom'],\n            flex: ['basis', 'grow', 'shrink'],\n            gap: ['gap-x', 'gap-y'],\n            p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n            px: ['pr', 'pl'],\n            py: ['pt', 'pb'],\n            m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n            mx: ['mr', 'ml'],\n            my: ['mt', 'mb'],\n            size: ['w', 'h'],\n            'font-size': ['leading'],\n            'fvn-normal': [\n                'fvn-ordinal',\n                'fvn-slashed-zero',\n                'fvn-figure',\n                'fvn-spacing',\n                'fvn-fraction',\n            ],\n            'fvn-ordinal': ['fvn-normal'],\n            'fvn-slashed-zero': ['fvn-normal'],\n            'fvn-figure': ['fvn-normal'],\n            'fvn-spacing': ['fvn-normal'],\n            'fvn-fraction': ['fvn-normal'],\n            'line-clamp': ['display', 'overflow'],\n            rounded: [\n                'rounded-s',\n                'rounded-e',\n                'rounded-t',\n                'rounded-r',\n                'rounded-b',\n                'rounded-l',\n                'rounded-ss',\n                'rounded-se',\n                'rounded-ee',\n                'rounded-es',\n                'rounded-tl',\n                'rounded-tr',\n                'rounded-br',\n                'rounded-bl',\n            ],\n            'rounded-s': ['rounded-ss', 'rounded-es'],\n            'rounded-e': ['rounded-se', 'rounded-ee'],\n            'rounded-t': ['rounded-tl', 'rounded-tr'],\n            'rounded-r': ['rounded-tr', 'rounded-br'],\n            'rounded-b': ['rounded-br', 'rounded-bl'],\n            'rounded-l': ['rounded-tl', 'rounded-bl'],\n            'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n            'border-w': [\n                'border-w-x',\n                'border-w-y',\n                'border-w-s',\n                'border-w-e',\n                'border-w-t',\n                'border-w-r',\n                'border-w-b',\n                'border-w-l',\n            ],\n            'border-w-x': ['border-w-r', 'border-w-l'],\n            'border-w-y': ['border-w-t', 'border-w-b'],\n            'border-color': [\n                'border-color-x',\n                'border-color-y',\n                'border-color-s',\n                'border-color-e',\n                'border-color-t',\n                'border-color-r',\n                'border-color-b',\n                'border-color-l',\n            ],\n            'border-color-x': ['border-color-r', 'border-color-l'],\n            'border-color-y': ['border-color-t', 'border-color-b'],\n            translate: ['translate-x', 'translate-y', 'translate-none'],\n            'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n            'scroll-m': [\n                'scroll-mx',\n                'scroll-my',\n                'scroll-ms',\n                'scroll-me',\n                'scroll-mt',\n                'scroll-mr',\n                'scroll-mb',\n                'scroll-ml',\n            ],\n            'scroll-mx': ['scroll-mr', 'scroll-ml'],\n            'scroll-my': ['scroll-mt', 'scroll-mb'],\n            'scroll-p': [\n                'scroll-px',\n                'scroll-py',\n                'scroll-ps',\n                'scroll-pe',\n                'scroll-pt',\n                'scroll-pr',\n                'scroll-pb',\n                'scroll-pl',\n            ],\n            'scroll-px': ['scroll-pr', 'scroll-pl'],\n            'scroll-py': ['scroll-pt', 'scroll-pb'],\n            touch: ['touch-x', 'touch-y', 'touch-pz'],\n            'touch-x': ['touch'],\n            'touch-y': ['touch'],\n            'touch-pz': ['touch'],\n        },\n        conflictingClassGroupModifiers: {\n            'font-size': ['leading'],\n        },\n        orderSensitiveModifiers: [\n            '*',\n            '**',\n            'after',\n            'backdrop',\n            'before',\n            'details-content',\n            'file',\n            'first-letter',\n            'first-line',\n            'marker',\n            'placeholder',\n            'selection',\n        ],\n    } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n    baseConfig: AnyConfig,\n    {\n        cacheSize,\n        prefix,\n        experimentalParseClassName,\n        extend = {},\n        override = {},\n    }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n    overrideProperty(baseConfig, 'cacheSize', cacheSize)\n    overrideProperty(baseConfig, 'prefix', prefix)\n    overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n    overrideConfigProperties(baseConfig.theme, override.theme)\n    overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n    overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n    overrideConfigProperties(\n        baseConfig.conflictingClassGroupModifiers,\n        override.conflictingClassGroupModifiers,\n    )\n    overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n    mergeConfigProperties(baseConfig.theme, extend.theme)\n    mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n    mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n    mergeConfigProperties(\n        baseConfig.conflictingClassGroupModifiers,\n        extend.conflictingClassGroupModifiers,\n    )\n    mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n    return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n    baseObject: T,\n    overrideKey: K,\n    overrideValue: T[K] | undefined,\n) => {\n    if (overrideValue !== undefined) {\n        baseObject[overrideKey] = overrideValue\n    }\n}\n\nconst overrideConfigProperties = (\n    baseObject: Partial<Record<string, readonly unknown[]>>,\n    overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n    if (overrideObject) {\n        for (const key in overrideObject) {\n            overrideProperty(baseObject, key, overrideObject[key])\n        }\n    }\n}\n\nconst mergeConfigProperties = (\n    baseObject: Partial<Record<string, readonly unknown[]>>,\n    mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n    if (mergeObject) {\n        for (const key in mergeObject) {\n            mergeArrayProperties(baseObject, mergeObject, key)\n        }\n    }\n}\n\nconst mergeArrayProperties = <Key extends string>(\n    baseObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n    mergeObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n    key: Key,\n) => {\n    const mergeValue = mergeObject[key]\n\n    if (mergeValue !== undefined) {\n        baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n    }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n    AdditionalClassGroupIds extends string = never,\n    AdditionalThemeGroupIds extends string = never,\n>(\n    configExtension:\n        | ConfigExtension<\n              DefaultClassGroupIds | AdditionalClassGroupIds,\n              DefaultThemeGroupIds | AdditionalThemeGroupIds\n          >\n        | CreateConfigSubsequent,\n    ...createConfig: CreateConfigSubsequent[]\n) =>\n    typeof configExtension === 'function'\n        ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n        : createTailwindMerge(\n              () => mergeConfigs(getDefaultConfig(), configExtension),\n              ...createConfig,\n          )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * A utility function to merge Tailwind classes\n */\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n","import React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface InputProps\n  extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n  ({ className, ...props }, ref) => {\n    return (\n      <input\n        className={cn(\n          \"flex h-10 w-full rounded-md border border-slate-200 bg-white px-3 py-2 text-sm text-slate-900 ring-offset-white file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-slate-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-50 dark:ring-offset-slate-950 dark:placeholder:text-slate-400 dark:focus-visible:ring-indigo-400\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    );\n  }\n);\n\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"mappings":";;;AAAA,SAAgB,YAAAA,WAAU,aAAAC,kBAAiB;;;ACA3C,SAAS,UAAU,WAAW,mBAAmB;;;ACAjD,IAAM,oBAAoB;AAC1B,IAAM,wBAAwB;AAQvB,IAAM,mBAAN,MAAuB;AAAA,EAG5B,cAAc;AACZ,SAAK,cAAc;AAGnB,SAAK,kBAAkB;AAGvB,WAAO,iBAAiB,oCAAoC,MAAM;AAChE,cAAQ,IAAI,iDAAiD;AAC7D,WAAK,cAAc;AAAA,IACrB,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB;AAG1B,UAAM,aAAa,SAAS,iBAAiB,0BAA0B;AACvE,QAAI,WAAW,SAAS,GAAG;AAEzB,YAAM,YAAY,KAAK,aAAa;AACpC,iBAAW,aAAa,YAAY;AAClC,YAAI;AACF,gBAAM,MAAM,KAAK,MAAM,UAAU,eAAe,IAAI;AACpD,cAAI,IAAI,SAAS;AACf,uBAAW,CAAC,YAAY,GAAG,KAAK,OAAO,QAAQ,SAAS,GAAG;AACzD,kBAAI,IAAI,QAAQ,UAAU,MAAM,KAAK;AACnC,qBAAK,cAAc;AACnB,wBAAQ;AAAA,kBACN;AAAA,gBACF;AACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,SAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,mBAA2C;AAEzC,UAAM,YAAY,KAAK,gBAAgB;AACvC,QAAI,OAAO,KAAK,SAAS,EAAE,SAAS,GAAG;AACrC,cAAQ;AAAA,QACN;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAGA,UAAM,aAAa,SAAS,iBAAiB,0BAA0B;AACvE,UAAM,YAAoC,CAAC;AAE3C,eAAW,QAAQ,CAAC,gBAAgB;AAClC,UAAI;AACF,cAAM,MAAM,KAAK,MAAM,YAAY,eAAe,IAAI;AACtD,YAAI,IAAI,SAAS;AACf,iBAAO,OAAO,WAAW,IAAI,OAAO;AAAA,QACtC;AAAA,MACF,SAAS,GAAG;AACV,gBAAQ,MAAM,6BAA6B,CAAC;AAAA,MAC9C;AAAA,IACF,CAAC;AAGD,UAAM,YAAY,KAAK,aAAa;AACpC,eAAW,cAAc,OAAO,KAAK,SAAS,GAAG;AAE/C,UAAI,UAAU,UAAU,MAAM,UAAU,UAAU,GAAG;AACnD,eAAO,UAAU,UAAU;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,kBAA0C;AACxC,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,QAAQ,qBAAqB,KAAK,IAAI;AAAA,IACvE,SAAS,GAAG;AACV,cAAQ,MAAM,8CAA8C,CAAC;AAC7D,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,eAAuC;AACrC,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,QAAQ,iBAAiB,KAAK,IAAI;AAAA,IACnE,SAAS,GAAG;AACV,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,MACF;AACA,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,wBAAgD;AAC9C,UAAM,UAAU,KAAK,iBAAiB;AACtC,UAAM,YAAY,KAAK,aAAa;AAEpC,WAAO,EAAE,GAAG,SAAS,GAAG,UAAU;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAA6B;AAE3B,QAAI,KAAK,aAAa;AACpB,cAAQ;AAAA,QACN;AAAA,MACF;AACA;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,aAAa;AACpC,QAAI,OAAO,KAAK,SAAS,EAAE,SAAS,GAAG;AACrC,cAAQ,IAAI,2CAA2C,SAAS;AAChE,WAAK,0BAA0B;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAmC;AACjC,UAAM,eAAe,KAAK,gBAAgB;AAC1C,UAAM,UAAU,KAAK,iBAAiB;AACtC,UAAM,YAAY,KAAK,aAAa;AAGpC,UAAM,iBAAiB,oBAAI,IAAI;AAAA,MAC7B,GAAG,OAAO,KAAK,YAAY;AAAA,MAC3B,GAAG,OAAO,KAAK,OAAO;AAAA,MACtB,GAAG,OAAO,KAAK,SAAS;AAAA,IAC1B,CAAC;AAED,WAAO,MAAM,KAAK,cAAc,EAAE,IAAI,CAAC,eAAe;AAEpD,YAAM,cAAc,aAAa,UAAU,KAAK,QAAQ,UAAU,KAAK;AAEvE,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,aAAa,UAAU,UAAU,KAAK;AAAA,MACxC;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,YAA6B;AACxC,UAAM,YAAY,KAAK,aAAa;AACpC,WAAO,CAAC,CAAC,UAAU,UAAU;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,YAAoB,KAAmB;AAE9C,UAAM,YAAY,KAAK,gBAAgB;AACvC,UAAM,UAAU,KAAK,iBAAiB;AAEtC,QAAI,CAAC,UAAU,UAAU,KAAK,QAAQ,UAAU,GAAG;AAEjD,YAAM,mBAAmB;AAAA,QACvB,GAAG;AAAA,QACH,CAAC,UAAU,GAAG,QAAQ,UAAU;AAAA,MAClC;AACA,mBAAa;AAAA,QACX;AAAA,QACA,KAAK,UAAU,gBAAgB;AAAA,MACjC;AACA,cAAQ;AAAA,QACN,0BAA0B,UAAU,KAAK,QAAQ,UAAU,CAAC;AAAA,MAC9D;AAAA,IACF;AAGA,UAAM,YAAY,KAAK,aAAa;AACpC,cAAU,UAAU,IAAI;AACxB,iBAAa,QAAQ,mBAAmB,KAAK,UAAU,SAAS,CAAC;AACjE,SAAK,oBAAoB;AAKzB,QAAI,CAAC,KAAK,aAAa;AACrB,WAAK,0BAA0B;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,YAA0B;AACvC,UAAM,YAAY,KAAK,aAAa;AACpC,QAAI,UAAU,UAAU,GAAG;AACzB,aAAO,UAAU,UAAU;AAC3B,mBAAa,QAAQ,mBAAmB,KAAK,UAAU,SAAS,CAAC;AACjE,WAAK,oBAAoB;AAGzB,UAAI,CAAC,KAAK,aAAa;AACrB,aAAK,0BAA0B;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,WAAiB;AACf,iBAAa,WAAW,iBAAiB;AACzC,SAAK,oBAAoB;AAGzB,QAAI,CAAC,KAAK,aAAa;AACrB,WAAK,0BAA0B;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,kBAA2B;AACjC,UAAM,aAAa,SAAS,iBAAiB,0BAA0B;AAEvE,QAAI,WAAW,UAAU,GAAG;AAC1B,cAAQ,IAAI,kDAAkD;AAC9D,aAAO;AAAA,IACT;AAEA,YAAQ,IAAI,SAAS,WAAW,MAAM,gCAAgC;AAGtE,UAAM,WAAW,EAAE,SAAS,CAAC,EAA4B;AAEzD,eAAW,QAAQ,CAAC,gBAAgB;AAClC,UAAI;AACF,cAAM,UAAU,KAAK,MAAM,YAAY,eAAe,gBAAgB;AACtE,YAAI,QAAQ,SAAS;AACnB,iBAAO,OAAO,SAAS,SAAS,QAAQ,OAAO;AAC/C,kBAAQ;AAAA,YACN,gCACE,OAAO,KAAK,QAAQ,OAAO,EAAE,MAC/B;AAAA,UACF;AAAA,QACF;AAAA,MACF,SAAS,GAAG;AACV,gBAAQ,MAAM,0CAA0C,CAAC;AAAA,MAC3D;AAAA,IACF,CAAC;AAGD,UAAM,eAAe,SAAS,cAAc,QAAQ;AACpD,iBAAa,aAAa,QAAQ,WAAW;AAC7C,iBAAa,cAAc,KAAK,UAAU,UAAU,MAAM,CAAC;AAG3D,eAAW,QAAQ,CAAC,QAAQ;AAC1B,UAAI,IAAI,YAAY;AAClB,YAAI,WAAW,YAAY,GAAG;AAAA,MAChC;AAAA,IACF,CAAC;AAGD,aAAS,KAAK,aAAa,cAAc,SAAS,KAAK,UAAU;AACjE,YAAQ,IAAI,8CAA8C;AAE1D,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,4BAAkC;AAEhC,QAAI,KAAK,aAAa;AACpB,cAAQ;AAAA,QACN;AAAA,MACF;AAEA,aAAO;AAAA,QACL,IAAI,aAAa,WAAW;AAAA,UAC1B,KAAK;AAAA,UACL,UAAU,aAAa,QAAQ,iBAAiB;AAAA,QAClD,CAAC;AAAA,MACH;AAGA,aAAO,cAAc,IAAI,YAAY,6BAA6B,CAAC;AACnE;AAAA,IACF;AAGA,UAAM,oBAAoB,SAAS;AAAA,MACjC;AAAA,IACF;AAGA,QAAI,kBAAkB,SAAS,GAAG;AAChC,cAAQ;AAAA,QACN,SAAS,kBAAkB,MAAM;AAAA,MACnC;AACA,WAAK,gBAAgB;AAAA,IACvB;AAEA,UAAM,YAAY,KAAK,aAAa;AAGpC,QAAI,cAAc,SAAS,cAAc,0BAA0B;AAGnE,QAAI,CAAC,aAAa;AAChB,oBAAc,SAAS,cAAc,QAAQ;AAC7C,kBAAY,aAAa,QAAQ,WAAW;AAC5C,eAAS,KAAK,YAAY,WAAW;AACrC,cAAQ,IAAI,uCAAuC;AAAA,IACrD;AAEA,QAAI;AAEF,UAAI;AACJ,UAAI;AACF,qBAAa,KAAK,MAAM,YAAY,eAAe,gBAAgB;AAAA,MACrE,SAAS,OAAO;AACd,gBAAQ,MAAM,8CAA8C,KAAK;AACjE,qBAAa,EAAE,SAAS,CAAC,EAAE;AAAA,MAC7B;AAGA,UAAI,CAAC,WAAW,SAAS;AACvB,mBAAW,UAAU,CAAC;AAAA,MACxB;AAGA,YAAM,YAAY,KAAK,gBAAgB;AACvC,UAAI,mBAAmB;AACvB,iBAAW,CAAC,YAAY,GAAG,KAAK,OAAO,QAAQ,WAAW,OAAO,GAAG;AAClE,YAAI,CAAC,UAAU,UAAU,KAAK,CAAC,UAAU,UAAU,GAAG;AACpD,oBAAU,UAAU,IAAI;AACxB,6BAAmB;AAAA,QACrB;AAAA,MACF;AACA,UAAI,kBAAkB;AACpB,qBAAa,QAAQ,uBAAuB,KAAK,UAAU,SAAS,CAAC;AACrE,gBAAQ,IAAI,wCAAwC,SAAS;AAAA,MAC/D;AAGA,UAAI,UAAU;AACd,iBAAW,CAAC,YAAY,GAAG,KAAK,OAAO,QAAQ,SAAS,GAAG;AACzD,YAAI,WAAW,QAAQ,UAAU,MAAM,KAAK;AAC1C,kBAAQ;AAAA,YACN,eAAe,UAAU,WACvB,WAAW,QAAQ,UAAU,KAAK,WACpC,SAAS,GAAG;AAAA,UACd;AACA,qBAAW,QAAQ,UAAU,IAAI;AACjC;AAAA,QACF;AAAA,MACF;AAEA,UAAI,UAAU,GAAG;AAEf,cAAM,aAAa,KAAK,UAAU,YAAY,MAAM,CAAC;AACrD,gBAAQ,IAAI,mCAAmC,UAAU;AAGzD,oBAAY,cAAc;AAC1B,gBAAQ,IAAI,oCAAoC,OAAO,cAAc;AAAA,MACvE,OAAO;AACL,gBAAQ;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,wCAAwC,KAAK;AAAA,IAC7D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,sBAA4B;AAClC,WAAO,cAAc,IAAI,YAAY,6BAA6B,CAAC;AAAA,EACrE;AACF;AAGO,IAAM,mBAAmB,IAAI,iBAAiB;;;ADta9C,SAAS,eAAe;AAC7B,QAAM,CAAC,SAAS,UAAU,IAAI,SAA4B,CAAC,CAAC;AAC5D,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAE/C,QAAM,iBAAiB,YAAY,MAAM;AACvC,eAAW,iBAAiB,cAAc,CAAC;AAC3C,iBAAa,KAAK;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AAGd,mBAAe;AACf,qBAAiB,qBAAqB;AAGtC,UAAM,eAAe,MAAM;AACzB,qBAAe;AAAA,IACjB;AAEA,WAAO,iBAAiB,+BAA+B,YAAY;AAEnE,WAAO,MAAM;AACX,aAAO,oBAAoB,+BAA+B,YAAY;AAAA,IACxE;AAAA,EACF,GAAG,CAAC,cAAc,CAAC;AAEnB,QAAM,iBAAiB,YAAY,CAAC,YAAoB,QAAgB;AACtE,qBAAiB,SAAS,YAAY,GAAG;AAAA,EAC3C,GAAG,CAAC,CAAC;AAEL,QAAM,iBAAiB,YAAY,CAAC,eAAuB;AACzD,qBAAiB,eAAe,UAAU;AAAA,EAC5C,GAAG,CAAC,CAAC;AAEL,QAAM,oBAAoB,YAAY,MAAM;AAC1C,qBAAiB,SAAS;AAAA,EAC5B,GAAG,CAAC,CAAC;AAEL,QAAM,eAAe,YAAY,CAAC,eAAuB;AACvD,WAAO,iBAAiB,aAAa,UAAU;AAAA,EACjD,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AEvDA,SAAgB,YAAAC,WAAU,aAAAC,YAAW,QAAQ,eAAAC,oBAAmB;;;ACAhE,OAAO,WAAW;;;ACAlB,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO;AAAE,SAAG;AAAA,WAAU,YAAU,OAAO;AAAE,QAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,UAAI,IAAE,EAAE;AAAO,WAAI,IAAE,GAAE,IAAE,GAAE;AAAI,UAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA,IAAE;AAAM,WAAI,KAAK;AAAE,UAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU,QAAO,IAAE,GAAE;AAAI,KAAC,IAAE,UAAU,CAAC,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;;;ACe/W,IAAM,gBAAgB,CAAC,UAAQ,OAAO,UAAU,YAAY,GAAG,KAAK,KAAK,UAAU,IAAI,MAAM;AACtF,IAAM,KAAK;AACX,IAAM,MAAM,CAAC,MAAM,WAAS,CAAC,UAAQ;AACpC,MAAI;AACJ,OAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,aAAa;AAAM,WAAO,GAAG,MAAM,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,SAAS;AACvN,QAAM,EAAE,UAAU,gBAAgB,IAAI;AACtC,QAAM,uBAAuB,OAAO,KAAK,QAAQ,EAAE,IAAI,CAAC,YAAU;AAC9D,UAAM,cAAc,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO;AAC/E,UAAM,qBAAqB,oBAAoB,QAAQ,oBAAoB,SAAS,SAAS,gBAAgB,OAAO;AACpH,QAAI,gBAAgB;AAAM,aAAO;AACjC,UAAM,aAAa,cAAc,WAAW,KAAK,cAAc,kBAAkB;AACjF,WAAO,SAAS,OAAO,EAAE,UAAU;AAAA,EACvC,CAAC;AACD,QAAM,wBAAwB,SAAS,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK,UAAQ;AAC9E,QAAI,CAAC,KAAK,KAAK,IAAI;AACnB,QAAI,UAAU,QAAW;AACrB,aAAO;AAAA,IACX;AACA,QAAI,GAAG,IAAI;AACX,WAAO;AAAA,EACX,GAAG,CAAC,CAAC;AACL,QAAM,+BAA+B,WAAW,QAAQ,WAAW,SAAS,UAAU,2BAA2B,OAAO,sBAAsB,QAAQ,6BAA6B,SAAS,SAAS,yBAAyB,OAAO,CAAC,KAAK,UAAQ;AAC/O,QAAI,EAAE,OAAO,SAAS,WAAW,aAAa,GAAG,uBAAuB,IAAI;AAC5E,WAAO,OAAO,QAAQ,sBAAsB,EAAE,MAAM,CAACC,WAAQ;AACzD,UAAI,CAAC,KAAK,KAAK,IAAIA;AACnB,aAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS;AAAA,QACzC,GAAG;AAAA,QACH,GAAG;AAAA,MACP,EAAE,GAAG,CAAC,IAAK;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACP,EAAG,GAAG,MAAM;AAAA,IAChB,CAAC,IAAI;AAAA,MACD,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ,IAAI;AAAA,EACR,GAAG,CAAC,CAAC;AACL,SAAO,GAAG,MAAM,sBAAsB,8BAA8B,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,OAAO,UAAU,QAAQ,UAAU,SAAS,SAAS,MAAM,SAAS;AAChM;;;AChCJ,IAAMC,uBAAuB;AAEtB,IAAMC,wBAAyBC,YAAqB;AACvD,QAAMC,WAAWC,eAAeF,MAAM;AACtC,QAAM;IAAEG;IAAwBC;EAA8B,IAAKJ;AAEnE,QAAMK,kBAAmBC,eAAqB;AAC1C,UAAMC,aAAaD,UAAUE,MAAMV,oBAAoB;AAGvD,QAAIS,WAAW,CAAC,MAAM,MAAMA,WAAWE,WAAW,GAAG;AACjDF,iBAAWG,MAAO;;AAGtB,WAAOC,kBAAkBJ,YAAYN,QAAQ,KAAKW,+BAA+BN,SAAS;EAC7F;AAED,QAAMO,8BAA8BA,CAChCC,cACAC,uBACA;AACA,UAAMC,YAAYb,uBAAuBW,YAAY,KAAK,CAAA;AAE1D,QAAIC,sBAAsBX,+BAA+BU,YAAY,GAAG;AACpE,aAAO,CAAC,GAAGE,WAAW,GAAGZ,+BAA+BU,YAAY,CAAE;;AAG1E,WAAOE;EACV;AAED,SAAO;IACHX;IACAQ;EACH;AACL;AAEA,IAAMF,oBAAoBA,CACtBJ,YACAU,oBAC8B;AAvClC;AAwCI,MAAIV,WAAWE,WAAW,GAAG;AACzB,WAAOQ,gBAAgBH;;AAG3B,QAAMI,mBAAmBX,WAAW,CAAC;AACrC,QAAMY,sBAAsBF,gBAAgBG,SAASC,IAAIH,gBAAgB;AACzE,QAAMI,8BAA8BH,sBAC9BR,kBAAkBJ,WAAWgB,MAAM,CAAC,GAAGJ,mBAAmB,IAC1DK;AAEN,MAAIF,6BAA6B;AAC7B,WAAOA;;AAGX,MAAIL,gBAAgBQ,WAAWhB,WAAW,GAAG;AACzC,WAAOe;;AAGX,QAAME,YAAYnB,WAAWoB,KAAK7B,oBAAoB;AAEtD,UAAOmB,qBAAgBQ,WAAWG,KAAK,CAAC;IAAEC;EAAS,MAAOA,UAAUH,SAAS,CAAC,MAAvET,mBAA0EH;AACrF;AAEA,IAAMgB,yBAAyB;AAE/B,IAAMlB,iCAAkCN,eAAqB;AACzD,MAAIwB,uBAAuBC,KAAKzB,SAAS,GAAG;AACxC,UAAM0B,6BAA6BF,uBAAuBG,KAAK3B,SAAS,EAAG,CAAC;AAC5E,UAAM4B,WAAWF,yEAA4BG,UACzC,GACAH,2BAA2BI,QAAQ,GAAG;AAG1C,QAAIF,UAAU;AAEV,aAAO,gBAAgBA;;;AAGnC;AAKO,IAAMhC,iBAAkBF,YAAsD;AACjF,QAAM;IAAEqC;IAAOC;EAAW,IAAKtC;AAC/B,QAAMC,WAA4B;IAC9BmB,UAAU,oBAAImB,IAA8B;IAC5Cd,YAAY,CAAA;EACf;AAED,aAAWX,gBAAgBwB,aAAa;AACpCE,8BAA0BF,YAAYxB,YAAY,GAAIb,UAAUa,cAAcuB,KAAK;;AAGvF,SAAOpC;AACX;AAEA,IAAMuC,4BAA4BA,CAC9BC,YACAxB,iBACAH,cACAuB,UACA;AACAI,aAAWC,QAASC,qBAAmB;AACnC,QAAI,OAAOA,oBAAoB,UAAU;AACrC,YAAMC,wBACFD,oBAAoB,KAAK1B,kBAAkB4B,QAAQ5B,iBAAiB0B,eAAe;AACvFC,4BAAsB9B,eAAeA;AACrC;;AAGJ,QAAI,OAAO6B,oBAAoB,YAAY;AACvC,UAAIG,cAAcH,eAAe,GAAG;AAChCH,kCACIG,gBAAgBN,KAAK,GACrBpB,iBACAH,cACAuB,KAAK;AAET;;AAGJpB,sBAAgBQ,WAAWsB,KAAK;QAC5BlB,WAAWc;QACX7B;MACH,CAAA;AAED;;AAGJkC,WAAOC,QAAQN,eAAe,EAAED,QAAQ,CAAC,CAACQ,KAAKT,WAAU,MAAK;AAC1DD,gCACIC,aACAI,QAAQ5B,iBAAiBiC,GAAG,GAC5BpC,cACAuB,KAAK;IAEb,CAAC;EACL,CAAC;AACL;AAEA,IAAMQ,UAAUA,CAAC5B,iBAAkCkC,SAAgB;AAC/D,MAAIC,yBAAyBnC;AAE7BkC,OAAK3C,MAAMV,oBAAoB,EAAE4C,QAASW,cAAY;AAClD,QAAI,CAACD,uBAAuBhC,SAASkC,IAAID,QAAQ,GAAG;AAChDD,6BAAuBhC,SAASmC,IAAIF,UAAU;QAC1CjC,UAAU,oBAAImB,IAAK;QACnBd,YAAY,CAAA;MACf,CAAA;;AAGL2B,6BAAyBA,uBAAuBhC,SAASC,IAAIgC,QAAQ;EACzE,CAAC;AAED,SAAOD;AACX;AAEA,IAAMN,gBAAiBU,UAClBA,KAAqBV;AC7KnB,IAAMW,iBAA8BC,kBAA8C;AACrF,MAAIA,eAAe,GAAG;AAClB,WAAO;MACHrC,KAAKA,MAAMG;MACX+B,KAAKA,MAAK;MAAG;IAChB;;AAGL,MAAII,YAAY;AAChB,MAAIC,QAAQ,oBAAIrB,IAAiB;AACjC,MAAIsB,gBAAgB,oBAAItB,IAAiB;AAEzC,QAAMuB,SAASA,CAACZ,KAAUa,UAAgB;AACtCH,UAAML,IAAIL,KAAKa,KAAK;AACpBJ;AAEA,QAAIA,YAAYD,cAAc;AAC1BC,kBAAY;AACZE,sBAAgBD;AAChBA,cAAQ,oBAAIrB,IAAK;;EAExB;AAED,SAAO;IACHlB,IAAI6B,KAAG;AACH,UAAIa,QAAQH,MAAMvC,IAAI6B,GAAG;AAEzB,UAAIa,UAAUvC,QAAW;AACrB,eAAOuC;;AAEX,WAAKA,QAAQF,cAAcxC,IAAI6B,GAAG,OAAO1B,QAAW;AAChDsC,eAAOZ,KAAKa,KAAK;AACjB,eAAOA;;IAEd;IACDR,IAAIL,KAAKa,OAAK;AACV,UAAIH,MAAMN,IAAIJ,GAAG,GAAG;AAChBU,cAAML,IAAIL,KAAKa,KAAK;aACjB;AACHD,eAAOZ,KAAKa,KAAK;;IAExB;EACJ;AACL;ACjDO,IAAMC,qBAAqB;AAClC,IAAMC,qBAAqB;AAC3B,IAAMC,4BAA4BD,mBAAmBxD;AAE9C,IAAM0D,uBAAwBnE,YAAqB;AACtD,QAAM;IAAEoE;IAAQC;EAA0B,IAAKrE;AAQ/C,MAAIsE,iBAAkBhE,eAAsC;AACxD,UAAMiE,YAAY,CAAA;AAElB,QAAIC,eAAe;AACnB,QAAIC,aAAa;AACjB,QAAIC,gBAAgB;AACpB,QAAIC;AAEJ,aAASC,QAAQ,GAAGA,QAAQtE,UAAUG,QAAQmE,SAAS;AACnD,UAAIC,mBAAmBvE,UAAUsE,KAAK;AAEtC,UAAIJ,iBAAiB,KAAKC,eAAe,GAAG;AACxC,YAAII,qBAAqBZ,oBAAoB;AACzCM,oBAAUxB,KAAKzC,UAAUiB,MAAMmD,eAAeE,KAAK,CAAC;AACpDF,0BAAgBE,QAAQV;AACxB;;AAGJ,YAAIW,qBAAqB,KAAK;AAC1BF,oCAA0BC;AAC1B;;;AAIR,UAAIC,qBAAqB,KAAK;AAC1BL;iBACOK,qBAAqB,KAAK;AACjCL;iBACOK,qBAAqB,KAAK;AACjCJ;iBACOI,qBAAqB,KAAK;AACjCJ;;;AAIR,UAAMK,qCACFP,UAAU9D,WAAW,IAAIH,YAAYA,UAAU6B,UAAUuC,aAAa;AAC1E,UAAMK,gBAAgBC,uBAAuBF,kCAAkC;AAC/E,UAAMG,uBAAuBF,kBAAkBD;AAC/C,UAAMI,+BACFP,2BAA2BA,0BAA0BD,gBAC/CC,0BAA0BD,gBAC1BlD;AAEV,WAAO;MACH+C;MACAU;MACAF;MACAG;IACH;EACJ;AAED,MAAId,QAAQ;AACR,UAAMe,aAAaf,SAASH;AAC5B,UAAMmB,yBAAyBd;AAC/BA,qBAAkBhE,eACdA,UAAU+E,WAAWF,UAAU,IACzBC,uBAAuB9E,UAAU6B,UAAUgD,WAAW1E,MAAM,CAAC,IAC7D;MACI6E,YAAY;MACZf,WAAW,CAAA;MACXU,sBAAsB;MACtBF,eAAezE;MACf4E,8BAA8B1D;IACjC;;AAGf,MAAI6C,4BAA4B;AAC5B,UAAMe,yBAAyBd;AAC/BA,qBAAkBhE,eACd+D,2BAA2B;MAAE/D;MAAWgE,gBAAgBc;KAAwB;;AAGxF,SAAOd;AACX;AAEA,IAAMU,yBAA0BD,mBAAyB;AACrD,MAAIA,cAAcQ,SAASvB,kBAAkB,GAAG;AAC5C,WAAOe,cAAc5C,UAAU,GAAG4C,cAActE,SAAS,CAAC;;AAO9D,MAAIsE,cAAcM,WAAWrB,kBAAkB,GAAG;AAC9C,WAAOe,cAAc5C,UAAU,CAAC;;AAGpC,SAAO4C;AACX;AClGO,IAAMS,sBAAuBxF,YAAqB;AACrD,QAAMyF,0BAA0BzC,OAAO0C,YACnC1F,OAAOyF,wBAAwBE,IAAKC,cAAa,CAACA,UAAU,IAAI,CAAC,CAAC;AAGtE,QAAMC,gBAAiBtB,eAAuB;AAC1C,QAAIA,UAAU9D,UAAU,GAAG;AACvB,aAAO8D;;AAGX,UAAMuB,kBAA4B,CAAA;AAClC,QAAIC,oBAA8B,CAAA;AAElCxB,cAAU7B,QAASkD,cAAY;AAC3B,YAAMI,sBAAsBJ,SAAS,CAAC,MAAM,OAAOH,wBAAwBG,QAAQ;AAEnF,UAAII,qBAAqB;AACrBF,wBAAgB/C,KAAK,GAAGgD,kBAAkBE,KAAI,GAAIL,QAAQ;AAC1DG,4BAAoB,CAAA;aACjB;AACHA,0BAAkBhD,KAAK6C,QAAQ;;IAEvC,CAAC;AAEDE,oBAAgB/C,KAAK,GAAGgD,kBAAkBE,KAAI,CAAE;AAEhD,WAAOH;EACV;AAED,SAAOD;AACX;AC7BO,IAAMK,oBAAqBlG,aAAuB;EACrD4D,OAAOH,eAA+BzD,OAAO2D,SAAS;EACtDW,gBAAgBH,qBAAqBnE,MAAM;EAC3C6F,eAAeL,oBAAoBxF,MAAM;EACzC,GAAGD,sBAAsBC,MAAM;AAClC;ACVD,IAAMmG,sBAAsB;AAErB,IAAMC,iBAAiBA,CAACC,WAAmBC,gBAA4B;AAC1E,QAAM;IAAEhC;IAAgBjE;IAAiBQ;IAA6BgF;EAAe,IACjFS;AASJ,QAAMC,wBAAkC,CAAA;AACxC,QAAMC,aAAaH,UAAUI,KAAI,EAAGjG,MAAM2F,mBAAmB;AAE7D,MAAIO,SAAS;AAEb,WAAS9B,QAAQ4B,WAAW/F,SAAS,GAAGmE,SAAS,GAAGA,SAAS,GAAG;AAC5D,UAAM+B,oBAAoBH,WAAW5B,KAAK;AAE1C,UAAM;MACFU;MACAf;MACAU;MACAF;MACAG;IACH,IAAGZ,eAAeqC,iBAAiB;AAEpC,QAAIrB,YAAY;AACZoB,eAASC,qBAAqBD,OAAOjG,SAAS,IAAI,MAAMiG,SAASA;AACjE;;AAGJ,QAAI3F,qBAAqB,CAAC,CAACmE;AAC3B,QAAIpE,eAAeT,gBACfU,qBACMgE,cAAc5C,UAAU,GAAG+C,4BAA4B,IACvDH,aAAa;AAGvB,QAAI,CAACjE,cAAc;AACf,UAAI,CAACC,oBAAoB;AAErB2F,iBAASC,qBAAqBD,OAAOjG,SAAS,IAAI,MAAMiG,SAASA;AACjE;;AAGJ5F,qBAAeT,gBAAgB0E,aAAa;AAE5C,UAAI,CAACjE,cAAc;AAEf4F,iBAASC,qBAAqBD,OAAOjG,SAAS,IAAI,MAAMiG,SAASA;AACjE;;AAGJ3F,2BAAqB;;AAGzB,UAAM6F,kBAAkBf,cAActB,SAAS,EAAE5C,KAAK,GAAG;AAEzD,UAAMkF,aAAa5B,uBACb2B,kBAAkB5C,qBAClB4C;AAEN,UAAME,UAAUD,aAAa/F;AAE7B,QAAIyF,sBAAsBQ,SAASD,OAAO,GAAG;AAEzC;;AAGJP,0BAAsBxD,KAAK+D,OAAO;AAElC,UAAME,iBAAiBnG,4BAA4BC,cAAcC,kBAAkB;AACnF,aAASkG,IAAI,GAAGA,IAAID,eAAevG,QAAQ,EAAEwG,GAAG;AAC5C,YAAMC,QAAQF,eAAeC,CAAC;AAC9BV,4BAAsBxD,KAAK8D,aAAaK,KAAK;;AAIjDR,aAASC,qBAAqBD,OAAOjG,SAAS,IAAI,MAAMiG,SAASA;;AAGrE,SAAOA;AACX;SC1EgBS,SAAM;AAClB,MAAIvC,QAAQ;AACZ,MAAIwC;AACJ,MAAIC;AACJ,MAAIC,SAAS;AAEb,SAAO1C,QAAQ2C,UAAU9G,QAAQ;AAC7B,QAAK2G,WAAWG,UAAU3C,OAAO,GAAI;AACjC,UAAKyC,gBAAgBG,QAAQJ,QAAQ,GAAI;AACrCE,mBAAWA,UAAU;AACrBA,kBAAUD;;;;AAItB,SAAOC;AACX;AAEA,IAAME,UAAWC,SAAgC;AAC7C,MAAI,OAAOA,QAAQ,UAAU;AACzB,WAAOA;;AAGX,MAAIJ;AACJ,MAAIC,SAAS;AAEb,WAASI,IAAI,GAAGA,IAAID,IAAIhH,QAAQiH,KAAK;AACjC,QAAID,IAAIC,CAAC,GAAG;AACR,UAAKL,gBAAgBG,QAAQC,IAAIC,CAAC,CAA4B,GAAI;AAC9DJ,mBAAWA,UAAU;AACrBA,kBAAUD;;;;AAKtB,SAAOC;AACX;SCvCgBK,oBACZC,sBACGC,kBAA0C;AAE7C,MAAIvB;AACJ,MAAIwB;AACJ,MAAIC;AACJ,MAAIC,iBAAiBC;AAErB,WAASA,kBAAkB5B,WAAiB;AACxC,UAAMrG,SAAS6H,iBAAiBK,OAC5B,CAACC,gBAAgBC,wBAAwBA,oBAAoBD,cAAc,GAC3EP,kBAAiB,CAAe;AAGpCtB,kBAAcJ,kBAAkBlG,MAAM;AACtC8H,eAAWxB,YAAY1C,MAAMvC;AAC7B0G,eAAWzB,YAAY1C,MAAML;AAC7ByE,qBAAiBK;AAEjB,WAAOA,cAAchC,SAAS;;AAGlC,WAASgC,cAAchC,WAAiB;AACpC,UAAMiC,eAAeR,SAASzB,SAAS;AAEvC,QAAIiC,cAAc;AACd,aAAOA;;AAGX,UAAM5B,SAASN,eAAeC,WAAWC,WAAW;AACpDyB,aAAS1B,WAAWK,MAAM;AAE1B,WAAOA;;AAGX,SAAO,SAAS6B,oBAAiB;AAC7B,WAAOP,eAAeb,OAAOqB,MAAM,MAAMjB,SAAgB,CAAC;EAC7D;AACL;AC/Ca,IAAAkB,YAGXvF,SAAkF;AAChF,QAAMwF,cAAerG,WACjBA,MAAMa,GAAG,KAAK,CAAA;AAElBwF,cAAY5F,gBAAgB;AAE5B,SAAO4F;AACX;ACZA,IAAMC,sBAAsB;AAC5B,IAAMC,yBAAyB;AAC/B,IAAMC,gBAAgB;AACtB,IAAMC,kBAAkB;AACxB,IAAMC,kBACF;AACJ,IAAMC,qBAAqB;AAE3B,IAAMC,cAAc;AACpB,IAAMC,aACF;AAEG,IAAMC,aAAcpF,WAAkB8E,cAAc9G,KAAKgC,KAAK;AAE9D,IAAMqF,WAAYrF,WAAkB,CAAC,CAACA,SAAS,CAACsF,OAAOC,MAAMD,OAAOtF,KAAK,CAAC;AAE1E,IAAMwF,YAAaxF,WAAkB,CAAC,CAACA,SAASsF,OAAOE,UAAUF,OAAOtF,KAAK,CAAC;AAE9E,IAAMyF,YAAazF,WAAkBA,MAAMwB,SAAS,GAAG,KAAK6D,SAASrF,MAAMxC,MAAM,GAAG,EAAE,CAAC;AAEvF,IAAMkI,eAAgB1F,WAAkB+E,gBAAgB/G,KAAKgC,KAAK;AAElE,IAAM2F,QAAQA,MAAM;AAE3B,IAAMC,eAAgB5F;;;;EAIlBgF,gBAAgBhH,KAAKgC,KAAK,KAAK,CAACiF,mBAAmBjH,KAAKgC,KAAK;;AAEjE,IAAM6F,UAAUA,MAAM;AAEtB,IAAMC,WAAY9F,WAAkBkF,YAAYlH,KAAKgC,KAAK;AAE1D,IAAM+F,UAAW/F,WAAkBmF,WAAWnH,KAAKgC,KAAK;AAEjD,IAAMgG,oBAAqBhG,WAC9B,CAACiG,iBAAiBjG,KAAK,KAAK,CAACkG,oBAAoBlG,KAAK;AAEnD,IAAMmG,kBAAmBnG,WAAkBoG,oBAAoBpG,OAAOqG,aAAaR,OAAO;AAE1F,IAAMI,mBAAoBjG,WAAkB4E,oBAAoB5G,KAAKgC,KAAK;AAE1E,IAAMsG,oBAAqBtG,WAC9BoG,oBAAoBpG,OAAOuG,eAAeX,YAAY;AAEnD,IAAMY,oBAAqBxG,WAC9BoG,oBAAoBpG,OAAOyG,eAAepB,QAAQ;AAE/C,IAAMqB,sBAAuB1G,WAChCoG,oBAAoBpG,OAAO2G,iBAAiBd,OAAO;AAEhD,IAAMe,mBAAoB5G,WAAkBoG,oBAAoBpG,OAAO6G,cAAcd,OAAO;AAE5F,IAAMe,oBAAqB9G,WAC9BoG,oBAAoBpG,OAAO+G,eAAejB,QAAQ;AAE/C,IAAMI,sBAAuBlG,WAAkB6E,uBAAuB7G,KAAKgC,KAAK;AAEhF,IAAMgH,4BAA6BhH,WACtCiH,uBAAuBjH,OAAOuG,aAAa;AAExC,IAAMW,gCAAiClH,WAC1CiH,uBAAuBjH,OAAOmH,iBAAiB;AAE5C,IAAMC,8BAA+BpH,WACxCiH,uBAAuBjH,OAAO2G,eAAe;AAE1C,IAAMU,0BAA2BrH,WAAkBiH,uBAAuBjH,OAAOqG,WAAW;AAE5F,IAAMiB,2BAA4BtH,WACrCiH,uBAAuBjH,OAAO6G,YAAY;AAEvC,IAAMU,4BAA6BvH,WACtCiH,uBAAuBjH,OAAO+G,eAAe,IAAI;AAIrD,IAAMX,sBAAsBA,CACxBpG,OACAwH,WACAC,cACA;AACA,QAAM9E,SAASiC,oBAAoB1G,KAAK8B,KAAK;AAE7C,MAAI2C,QAAQ;AACR,QAAIA,OAAO,CAAC,GAAG;AACX,aAAO6E,UAAU7E,OAAO,CAAC,CAAC;;AAG9B,WAAO8E,UAAU9E,OAAO,CAAC,CAAE;;AAG/B,SAAO;AACX;AAEA,IAAMsE,yBAAyBA,CAC3BjH,OACAwH,WACAE,qBAAqB,UACrB;AACA,QAAM/E,SAASkC,uBAAuB3G,KAAK8B,KAAK;AAEhD,MAAI2C,QAAQ;AACR,QAAIA,OAAO,CAAC,GAAG;AACX,aAAO6E,UAAU7E,OAAO,CAAC,CAAC;;AAE9B,WAAO+E;;AAGX,SAAO;AACX;AAIA,IAAMf,kBAAmBgB,WAAkBA,UAAU,cAAcA,UAAU;AAE7E,IAAMd,eAAgBc,WAAkBA,UAAU,WAAWA,UAAU;AAEvE,IAAMtB,cAAesB,WAAkBA,UAAU,YAAYA,UAAU,UAAUA,UAAU;AAE3F,IAAMpB,gBAAiBoB,WAAkBA,UAAU;AAEnD,IAAMlB,gBAAiBkB,WAAkBA,UAAU;AAEnD,IAAMR,oBAAqBQ,WAAkBA,UAAU;AAEvD,IAAMZ,gBAAiBY,WAAkBA,UAAU;ACrG5C,IAAMC,mBAAmBA,MAAK;AAOjC,QAAMC,aAAaC,UAAU,OAAO;AACpC,QAAMC,YAAYD,UAAU,MAAM;AAClC,QAAME,YAAYF,UAAU,MAAM;AAClC,QAAMG,kBAAkBH,UAAU,aAAa;AAC/C,QAAMI,gBAAgBJ,UAAU,UAAU;AAC1C,QAAMK,eAAeL,UAAU,SAAS;AACxC,QAAMM,kBAAkBN,UAAU,YAAY;AAC9C,QAAMO,iBAAiBP,UAAU,WAAW;AAC5C,QAAMQ,eAAeR,UAAU,SAAS;AACxC,QAAMS,cAAcT,UAAU,QAAQ;AACtC,QAAMU,cAAcV,UAAU,QAAQ;AACtC,QAAMW,mBAAmBX,UAAU,cAAc;AACjD,QAAMY,kBAAkBZ,UAAU,aAAa;AAC/C,QAAMa,kBAAkBb,UAAU,aAAa;AAC/C,QAAMc,YAAYd,UAAU,MAAM;AAClC,QAAMe,mBAAmBf,UAAU,aAAa;AAChD,QAAMgB,cAAchB,UAAU,QAAQ;AACtC,QAAMiB,YAAYjB,UAAU,MAAM;AAClC,QAAMkB,eAAelB,UAAU,SAAS;AAUxC,QAAMmB,aAAaA,MACf,CAAC,QAAQ,SAAS,OAAO,cAAc,QAAQ,QAAQ,SAAS,QAAQ;AAC5E,QAAMC,gBAAgBA,MAClB;IACI;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;;IAEA;IACA;;IAEA;IACA;;IAEA;EAAa;AAErB,QAAMC,6BAA6BA,MAC/B,CAAC,GAAGD,cAAa,GAAIE,qBAAqBC,gBAAgB;AAC9D,QAAMC,gBAAgBA,MAAM,CAAC,QAAQ,UAAU,QAAQ,WAAW,QAAQ;AAC1E,QAAMC,kBAAkBA,MAAM,CAAC,QAAQ,WAAW,MAAM;AACxD,QAAMC,0BAA0BA,MAC5B,CAACJ,qBAAqBC,kBAAkBf,YAAY;AACxD,QAAMmB,aAAaA,MAAM,CAACC,YAAY,QAAQ,QAAQ,GAAGF,wBAAuB,CAAE;AAClF,QAAMG,4BAA4BA,MAC9B,CAACC,WAAW,QAAQ,WAAWR,qBAAqBC,gBAAgB;AACxE,QAAMQ,6BAA6BA,MAC/B,CACI,QACA;IAAEC,MAAM,CAAC,QAAQF,WAAWR,qBAAqBC,gBAAgB;EAAG,GACpEO,WACAR,qBACAC,gBAAgB;AAExB,QAAMU,4BAA4BA,MAC9B,CAACH,WAAW,QAAQR,qBAAqBC,gBAAgB;AAC7D,QAAMW,wBAAwBA,MAC1B,CAAC,QAAQ,OAAO,OAAO,MAAMZ,qBAAqBC,gBAAgB;AACtE,QAAMY,wBAAwBA,MAC1B,CACI,SACA,OACA,UACA,WACA,UACA,UACA,WACA,YACA,eACA,UAAU;AAElB,QAAMC,0BAA0BA,MAC5B,CAAC,SAAS,OAAO,UAAU,WAAW,eAAe,UAAU;AACnE,QAAMC,cAAcA,MAAM,CAAC,QAAQ,GAAGX,wBAAuB,CAAE;AAC/D,QAAMY,cAAcA,MAChB,CACIV,YACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,GAAGF,wBAAyB,CAAA;AAEpC,QAAMa,aAAaA,MAAM,CAACxC,YAAYuB,qBAAqBC,gBAAgB;AAC3E,QAAMiB,kBAAkBA,MACpB,CACI,GAAGpB,cAAe,GAClBqB,6BACAC,qBACA;IAAEC,UAAU,CAACrB,qBAAqBC,gBAAgB;EAAG,CAAA;AAE7D,QAAMqB,gBAAgBA,MAAM,CAAC,aAAa;IAAEC,QAAQ,CAAC,IAAI,KAAK,KAAK,SAAS,OAAO;EAAC,CAAE;AACtF,QAAMC,cAAcA,MAChB,CACI,QACA,SACA,WACAC,yBACAC,iBACA;IAAEC,MAAM,CAAC3B,qBAAqBC,gBAAgB;EAAG,CAAA;AAEzD,QAAM2B,4BAA4BA,MAC9B,CAACC,WAAWC,2BAA2BC,iBAAiB;AAC5D,QAAMC,cAAcA,MAChB;;IAEI;IACA;IACA;IACA7C;IACAa;IACAC;EAAgB;AAExB,QAAMgC,mBAAmBA,MACrB,CAAC,IAAIC,UAAUJ,2BAA2BC,iBAAiB;AAC/D,QAAMI,iBAAiBA,MAAM,CAAC,SAAS,UAAU,UAAU,QAAQ;AACnE,QAAMC,iBAAiBA,MACnB,CACI,UACA,YACA,UACA,WACA,UACA,WACA,eACA,cACA,cACA,cACA,cACA,aACA,OACA,cACA,SACA,YAAY;AAEpB,QAAMC,yBAAyBA,MAC3B,CAACH,UAAUL,WAAWV,6BAA6BC,mBAAmB;AAC1E,QAAMkB,YAAYA,MACd;;IAEI;IACA;IACA9C;IACAQ;IACAC;EAAgB;AAExB,QAAMsC,cAAcA,MAAM,CAAC,QAAQL,UAAUlC,qBAAqBC,gBAAgB;AAClF,QAAMuC,aAAaA,MAAM,CAAC,QAAQN,UAAUlC,qBAAqBC,gBAAgB;AACjF,QAAMwC,YAAYA,MAAM,CAACP,UAAUlC,qBAAqBC,gBAAgB;AACxE,QAAMyC,iBAAiBA,MAAM,CAACpC,YAAY,QAAQ,GAAGF,wBAAuB,CAAE;AAE9E,SAAO;IACHuC,WAAW;IACXC,OAAO;MACHC,SAAS,CAAC,QAAQ,QAAQ,SAAS,QAAQ;MAC3CC,QAAQ,CAAC,OAAO;MAChBC,MAAM,CAACC,YAAY;MACnBC,YAAY,CAACD,YAAY;MACzBE,OAAO,CAACC,KAAK;MACbC,WAAW,CAACJ,YAAY;MACxB,eAAe,CAACA,YAAY;MAC5BK,MAAM,CAAC,MAAM,OAAO,QAAQ;MAC5BC,MAAM,CAACC,iBAAiB;MACxB,eAAe,CACX,QACA,cACA,SACA,UACA,UACA,YACA,QACA,aACA,OAAO;MAEX,gBAAgB,CAACP,YAAY;MAC7BQ,SAAS,CAAC,QAAQ,SAAS,QAAQ,UAAU,WAAW,OAAO;MAC/DC,aAAa,CAAC,YAAY,QAAQ,UAAU,YAAY,WAAW,MAAM;MACzEC,QAAQ,CAACV,YAAY;MACrBW,QAAQ,CAACX,YAAY;MACrBY,SAAS,CAAC,MAAM1B,QAAQ;MACxB2B,MAAM,CAACb,YAAY;MACnB,eAAe,CAACA,YAAY;MAC5Bc,UAAU,CAAC,WAAW,SAAS,UAAU,QAAQ,SAAS,QAAQ;IACrE;IACDC,aAAa;;;;;;;;MASTjB,QAAQ,CACJ;QACIA,QAAQ,CACJ,QACA,UACAxC,YACAL,kBACAD,qBACAN,WAAW;MAElB,CAAA;;;;;;MAOL0D,WAAW,CAAC,WAAW;;;;;MAKvBY,SAAS,CACL;QAAEA,SAAS,CAAC9B,UAAUjC,kBAAkBD,qBAAqBf,cAAc;MAAG,CAAA;;;;;MAMlF,eAAe,CAAC;QAAE,eAAeY,WAAY;MAAA,CAAE;;;;;MAK/C,gBAAgB,CAAC;QAAE,gBAAgBA,WAAY;MAAA,CAAE;;;;;MAKjD,gBAAgB,CAAC;QAAE,gBAAgB,CAAC,QAAQ,SAAS,cAAc,cAAc;OAAG;;;;;MAKpF,kBAAkB,CAAC;QAAE,kBAAkB,CAAC,SAAS,OAAO;MAAC,CAAE;;;;;MAK3DoE,KAAK,CAAC;QAAEA,KAAK,CAAC,UAAU,SAAS;MAAC,CAAE;;;;;MAKpCC,SAAS,CACL,SACA,gBACA,UACA,QACA,eACA,SACA,gBACA,iBACA,cACA,gBACA,sBACA,sBACA,sBACA,mBACA,aACA,aACA,QACA,eACA,YACA,aACA,QAAQ;;;;;MAMZC,IAAI,CAAC,WAAW,aAAa;;;;;MAK7BC,OAAO,CAAC;QAAEA,OAAO,CAAC,SAAS,QAAQ,QAAQ,SAAS,KAAK;OAAG;;;;;MAK5DC,OAAO,CAAC;QAAEA,OAAO,CAAC,QAAQ,SAAS,QAAQ,QAAQ,SAAS,KAAK;OAAG;;;;;MAKpEC,WAAW,CAAC,WAAW,gBAAgB;;;;;MAKvC,cAAc,CAAC;QAAEC,QAAQ,CAAC,WAAW,SAAS,QAAQ,QAAQ,YAAY;OAAG;;;;;MAK7E,mBAAmB,CAAC;QAAEA,QAAQxE,2BAA4B;MAAA,CAAE;;;;;MAK5DyE,UAAU,CAAC;QAAEA,UAAUtE,cAAe;MAAA,CAAE;;;;;MAKxC,cAAc,CAAC;QAAE,cAAcA,cAAe;MAAA,CAAE;;;;;MAKhD,cAAc,CAAC;QAAE,cAAcA,cAAe;MAAA,CAAE;;;;;MAKhDuE,YAAY,CAAC;QAAEA,YAAYtE,gBAAiB;MAAA,CAAE;;;;;MAK9C,gBAAgB,CAAC;QAAE,gBAAgBA,gBAAiB;MAAA,CAAE;;;;;MAKtD,gBAAgB,CAAC;QAAE,gBAAgBA,gBAAiB;MAAA,CAAE;;;;;MAKtDkB,UAAU,CAAC,UAAU,SAAS,YAAY,YAAY,QAAQ;;;;;MAK9DqD,OAAO,CAAC;QAAEA,OAAOrE,WAAY;MAAA,CAAE;;;;;MAK/B,WAAW,CAAC;QAAE,WAAWA,WAAY;MAAA,CAAE;;;;;MAKvC,WAAW,CAAC;QAAE,WAAWA,WAAY;MAAA,CAAE;;;;;MAKvCsE,OAAO,CAAC;QAAEA,OAAOtE,WAAY;MAAA,CAAE;;;;;MAK/BuE,KAAK,CAAC;QAAEA,KAAKvE,WAAY;MAAA,CAAE;;;;;MAK3BwE,KAAK,CAAC;QAAEA,KAAKxE,WAAY;MAAA,CAAE;;;;;MAK3ByE,OAAO,CAAC;QAAEA,OAAOzE,WAAY;MAAA,CAAE;;;;;MAK/B0E,QAAQ,CAAC;QAAEA,QAAQ1E,WAAY;MAAA,CAAE;;;;;MAKjC2E,MAAM,CAAC;QAAEA,MAAM3E,WAAY;MAAA,CAAE;;;;;MAK7B4E,YAAY,CAAC,WAAW,aAAa,UAAU;;;;;MAK/CC,GAAG,CAAC;QAAEA,GAAG,CAAC1E,WAAW,QAAQR,qBAAqBC,gBAAgB;OAAG;;;;;;;;MAUrEkF,OAAO,CACH;QACIA,OAAO,CACH7E,YACA,QACA,QACArB,gBACA,GAAGmB,wBAAyB,CAAA;MAEnC,CAAA;;;;;MAML,kBAAkB,CAAC;QAAEgF,MAAM,CAAC,OAAO,eAAe,OAAO,aAAa;OAAG;;;;;MAKzE,aAAa,CAAC;QAAEA,MAAM,CAAC,UAAU,QAAQ,cAAc;OAAG;;;;;MAK1DA,MAAM,CAAC;QAAEA,MAAM,CAAClD,UAAU5B,YAAY,QAAQ,WAAW,QAAQL,gBAAgB;OAAG;;;;;MAKpFoF,MAAM,CAAC;QAAEA,MAAM,CAAC,IAAInD,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAKtEqF,QAAQ,CAAC;QAAEA,QAAQ,CAAC,IAAIpD,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAK1EsF,OAAO,CACH;QACIA,OAAO,CACH/E,WACA,SACA,QACA,QACAR,qBACAC,gBAAgB;MAEvB,CAAA;;;;;MAML,aAAa,CAAC;QAAE,aAAaM,0BAA2B;MAAA,CAAE;;;;;MAK1D,iBAAiB,CAAC;QAAEiF,KAAK/E,2BAA4B;MAAA,CAAE;;;;;MAKvD,aAAa,CAAC;QAAE,aAAaE,0BAA2B;MAAA,CAAE;;;;;MAK1D,WAAW,CAAC;QAAE,WAAWA,0BAA2B;MAAA,CAAE;;;;;MAKtD,aAAa,CAAC;QAAE,aAAaJ,0BAA2B;MAAA,CAAE;;;;;MAK1D,iBAAiB,CAAC;QAAEkF,KAAKhF,2BAA4B;MAAA,CAAE;;;;;MAKvD,aAAa,CAAC;QAAE,aAAaE,0BAA2B;MAAA,CAAE;;;;;MAK1D,WAAW,CAAC;QAAE,WAAWA,0BAA2B;MAAA,CAAE;;;;;MAKtD,aAAa,CAAC;QAAE,aAAa,CAAC,OAAO,OAAO,SAAS,aAAa,WAAW;OAAG;;;;;MAKhF,aAAa,CAAC;QAAE,aAAaC,sBAAuB;MAAA,CAAE;;;;;MAKtD,aAAa,CAAC;QAAE,aAAaA,sBAAuB;MAAA,CAAE;;;;;MAKtD8E,KAAK,CAAC;QAAEA,KAAKtF,wBAAyB;MAAA,CAAE;;;;;MAKxC,SAAS,CAAC;QAAE,SAASA,wBAAyB;MAAA,CAAE;;;;;MAKhD,SAAS,CAAC;QAAE,SAASA,wBAAyB;MAAA,CAAE;;;;;MAKhD,mBAAmB,CAAC;QAAEuF,SAAS,CAAC,GAAG9E,sBAAuB,GAAE,QAAQ;OAAG;;;;;MAKvE,iBAAiB,CAAC;QAAE,iBAAiB,CAAC,GAAGC,wBAAyB,GAAE,QAAQ;OAAG;;;;;MAK/E,gBAAgB,CAAC;QAAE,gBAAgB,CAAC,QAAQ,GAAGA,wBAAyB,CAAA;OAAG;;;;;MAK3E,iBAAiB,CAAC;QAAE8E,SAAS,CAAC,UAAU,GAAG/E,sBAAuB,CAAA;OAAG;;;;;MAKrE,eAAe,CAAC;QAAEgF,OAAO,CAAC,GAAG/E,wBAAyB,GAAE;UAAEgF,UAAU,CAAC,IAAI,MAAM;QAAC,CAAE;MAAC,CAAE;;;;;MAKrF,cAAc,CACV;QAAEC,MAAM,CAAC,QAAQ,GAAGjF,wBAAyB,GAAE;UAAEgF,UAAU,CAAC,IAAI,MAAM;QAAC,CAAE;MAAG,CAAA;;;;;MAMhF,iBAAiB,CAAC;QAAE,iBAAiBjF,sBAAuB;MAAA,CAAE;;;;;MAK9D,eAAe,CAAC;QAAE,eAAe,CAAC,GAAGC,wBAAyB,GAAE,UAAU;OAAG;;;;;MAK7E,cAAc,CAAC;QAAE,cAAc,CAAC,QAAQ,GAAGA,wBAAyB,CAAA;OAAG;;;;;;MAMvEkF,GAAG,CAAC;QAAEA,GAAG5F,wBAAyB;MAAA,CAAE;;;;;MAKpC6F,IAAI,CAAC;QAAEA,IAAI7F,wBAAyB;MAAA,CAAE;;;;;MAKtC8F,IAAI,CAAC;QAAEA,IAAI9F,wBAAyB;MAAA,CAAE;;;;;MAKtC+F,IAAI,CAAC;QAAEA,IAAI/F,wBAAyB;MAAA,CAAE;;;;;MAKtCgG,IAAI,CAAC;QAAEA,IAAIhG,wBAAyB;MAAA,CAAE;;;;;MAKtCiG,IAAI,CAAC;QAAEA,IAAIjG,wBAAyB;MAAA,CAAE;;;;;MAKtCkG,IAAI,CAAC;QAAEA,IAAIlG,wBAAyB;MAAA,CAAE;;;;;MAKtCmG,IAAI,CAAC;QAAEA,IAAInG,wBAAyB;MAAA,CAAE;;;;;MAKtCoG,IAAI,CAAC;QAAEA,IAAIpG,wBAAyB;MAAA,CAAE;;;;;MAKtCqG,GAAG,CAAC;QAAEA,GAAG1F,YAAa;MAAA,CAAE;;;;;MAKxB2F,IAAI,CAAC;QAAEA,IAAI3F,YAAa;MAAA,CAAE;;;;;MAK1B4F,IAAI,CAAC;QAAEA,IAAI5F,YAAa;MAAA,CAAE;;;;;MAK1B6F,IAAI,CAAC;QAAEA,IAAI7F,YAAa;MAAA,CAAE;;;;;MAK1B8F,IAAI,CAAC;QAAEA,IAAI9F,YAAa;MAAA,CAAE;;;;;MAK1B+F,IAAI,CAAC;QAAEA,IAAI/F,YAAa;MAAA,CAAE;;;;;MAK1BgG,IAAI,CAAC;QAAEA,IAAIhG,YAAa;MAAA,CAAE;;;;;MAK1BiG,IAAI,CAAC;QAAEA,IAAIjG,YAAa;MAAA,CAAE;;;;;MAK1BkG,IAAI,CAAC;QAAEA,IAAIlG,YAAa;MAAA,CAAE;;;;;MAK1B,WAAW,CAAC;QAAE,WAAWX,wBAAyB;MAAA,CAAE;;;;;MAKpD,mBAAmB,CAAC,iBAAiB;;;;;MAKrC,WAAW,CAAC;QAAE,WAAWA,wBAAyB;MAAA,CAAE;;;;;MAKpD,mBAAmB,CAAC,iBAAiB;;;;;;;;MAUrCuB,MAAM,CAAC;QAAEA,MAAMX,YAAa;MAAA,CAAE;;;;;MAK9BkG,GAAG,CAAC;QAAEA,GAAG,CAACjI,gBAAgB,UAAU,GAAG+B,YAAa,CAAA;OAAG;;;;;MAKvD,SAAS,CACL;QACI,SAAS;UACL/B;UACA;;UAEA;UACA,GAAG+B,YAAa;QAAA;MAEvB,CAAA;;;;;MAML,SAAS,CACL;QACI,SAAS;UACL/B;UACA;UACA;;UAEA;;UAEA;YAAEkI,QAAQ,CAACnI,eAAe;UAAG;UAC7B,GAAGgC,YAAa;QAAA;MAEvB,CAAA;;;;;MAMLoG,GAAG,CAAC;QAAEA,GAAG,CAAC,UAAU,GAAGpG,YAAa,CAAA;OAAG;;;;;MAKvC,SAAS,CAAC;QAAE,SAAS,CAAC,UAAU,QAAQ,GAAGA,YAAa,CAAA;OAAG;;;;;MAK3D,SAAS,CAAC;QAAE,SAAS,CAAC,UAAU,GAAGA,YAAa,CAAA;OAAG;;;;;;;;MAUnD,aAAa,CACT;QAAE6C,MAAM,CAAC,QAAQjF,WAAWkD,2BAA2BC,iBAAiB;MAAG,CAAA;;;;;MAM/E,kBAAkB,CAAC,eAAe,sBAAsB;;;;;MAKxD,cAAc,CAAC,UAAU,YAAY;;;;;MAKrC,eAAe,CAAC;QAAEuB,MAAM,CAACzE,iBAAiBmB,qBAAqBqH,iBAAiB;OAAG;;;;;MAKnF,gBAAgB,CACZ;QACI,gBAAgB,CACZ,mBACA,mBACA,aACA,kBACA,UACA,iBACA,YACA,kBACA,kBACAxF,WACA5B,gBAAgB;MAEvB,CAAA;;;;;MAML,eAAe,CAAC;QAAEqD,MAAM,CAACgE,+BAA+BrH,kBAAkBtB,SAAS;OAAG;;;;;MAKtF,cAAc,CAAC,aAAa;;;;;MAK5B,eAAe,CAAC,SAAS;;;;;MAKzB,oBAAoB,CAAC,cAAc;;;;;MAKnC,cAAc,CAAC,eAAe,eAAe;;;;;MAK7C,eAAe,CAAC,qBAAqB,cAAc;;;;;MAKnD,gBAAgB,CAAC,sBAAsB,mBAAmB;;;;;MAK1DmF,UAAU,CAAC;QAAEA,UAAU,CAAChF,eAAekB,qBAAqBC,gBAAgB;OAAG;;;;;MAK/E,cAAc,CACV;QAAE,cAAc,CAACiC,UAAU,QAAQlC,qBAAqBqH,iBAAiB;MAAG,CAAA;;;;;MAMhF7D,SAAS,CACL;QACIA,SAAS;;UAELzE;UACA,GAAGqB,wBAAyB;QAAA;MAEnC,CAAA;;;;;MAML,cAAc,CAAC;QAAE,cAAc,CAAC,QAAQJ,qBAAqBC,gBAAgB;OAAG;;;;;MAKhF,uBAAuB,CAAC;QAAEsH,MAAM,CAAC,UAAU,SAAS;MAAC,CAAE;;;;;MAKvD,mBAAmB,CACf;QAAEA,MAAM,CAAC,QAAQ,WAAW,QAAQvH,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAMhF,kBAAkB,CAAC;QAAE4D,MAAM,CAAC,QAAQ,UAAU,SAAS,WAAW,SAAS,KAAK;OAAG;;;;;;MAMnF,qBAAqB,CAAC;QAAE2D,aAAavG,WAAY;MAAA,CAAE;;;;;MAKnD,cAAc,CAAC;QAAE4C,MAAM5C,WAAY;MAAA,CAAE;;;;;MAKrC,mBAAmB,CAAC,aAAa,YAAY,gBAAgB,cAAc;;;;;MAK3E,yBAAyB,CAAC;QAAEwG,YAAY,CAAC,GAAGtF,eAAgB,GAAE,MAAM;OAAG;;;;;MAKvE,6BAA6B,CACzB;QACIsF,YAAY,CACRvF,UACA,aACA,QACAlC,qBACA+B,iBAAiB;MAExB,CAAA;;;;;MAML,yBAAyB,CAAC;QAAE0F,YAAYxG,WAAY;MAAA,CAAE;;;;;MAKtD,oBAAoB,CAChB;QAAE,oBAAoB,CAACiB,UAAU,QAAQlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAMrF,kBAAkB,CAAC,aAAa,aAAa,cAAc,aAAa;;;;;MAKxE,iBAAiB,CAAC,YAAY,iBAAiB,WAAW;;;;;MAK1D,aAAa,CAAC;QAAE4D,MAAM,CAAC,QAAQ,UAAU,WAAW,QAAQ;OAAG;;;;;MAK/D6D,QAAQ,CAAC;QAAEA,QAAQtH,wBAAyB;MAAA,CAAE;;;;;MAK9C,kBAAkB,CACd;QACIuH,OAAO,CACH,YACA,OACA,UACA,UACA,YACA,eACA,OACA,SACA3H,qBACAC,gBAAgB;MAEvB,CAAA;;;;;MAML2H,YAAY,CACR;QAAEA,YAAY,CAAC,UAAU,UAAU,OAAO,YAAY,YAAY,cAAc;MAAG,CAAA;;;;;MAMvFC,OAAO,CAAC;QAAEA,OAAO,CAAC,UAAU,SAAS,OAAO,MAAM;OAAG;;;;;MAKrDC,MAAM,CAAC;QAAEA,MAAM,CAAC,cAAc,YAAY,QAAQ;OAAG;;;;;MAKrDC,SAAS,CAAC;QAAEA,SAAS,CAAC,QAAQ,UAAU,MAAM;OAAG;;;;;MAKjDnC,SAAS,CAAC;QAAEA,SAAS,CAAC,QAAQ5F,qBAAqBC,gBAAgB;OAAG;;;;;;;;MAUtE,iBAAiB,CAAC;QAAE+H,IAAI,CAAC,SAAS,SAAS,QAAQ;OAAG;;;;;MAKtD,WAAW,CAAC;QAAE,WAAW,CAAC,UAAU,WAAW,WAAW,MAAM;OAAG;;;;;MAKnE,aAAa,CAAC;QAAE,aAAa,CAAC,UAAU,WAAW,SAAS;OAAG;;;;;MAK/D,eAAe,CAAC;QAAEA,IAAI9G,gBAAiB;MAAA,CAAE;;;;;MAKzC,aAAa,CAAC;QAAE8G,IAAI1G,cAAe;MAAA,CAAE;;;;;MAKrC,WAAW,CAAC;QAAE0G,IAAIxG,YAAa;MAAA,CAAE;;;;;MAKjC,YAAY,CACR;QACIwG,IAAI,CACA,QACA;UACIC,QAAQ,CACJ;YAAEC,IAAI,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI;UAAG,GACpD1H,WACAR,qBACAC,gBAAgB;UAEpBkI,QAAQ,CAAC,IAAInI,qBAAqBC,gBAAgB;UAClDmI,OAAO,CAAC5H,WAAWR,qBAAqBC,gBAAgB;QAC3D,GACDoI,0BACAC,gBAAgB;MAEvB,CAAA;;;;;MAML,YAAY,CAAC;QAAEN,IAAI/G,WAAY;MAAA,CAAE;;;;;MAKjC,qBAAqB,CAAC;QAAEsH,MAAM3G,0BAA2B;MAAA,CAAE;;;;;MAK3D,oBAAoB,CAAC;QAAE4G,KAAK5G,0BAA2B;MAAA,CAAE;;;;;MAKzD,mBAAmB,CAAC;QAAEsG,IAAItG,0BAA2B;MAAA,CAAE;;;;;MAKvD,iBAAiB,CAAC;QAAE2G,MAAMtH,WAAY;MAAA,CAAE;;;;;MAKxC,gBAAgB,CAAC;QAAEuH,KAAKvH,WAAY;MAAA,CAAE;;;;;MAKtC,eAAe,CAAC;QAAEiH,IAAIjH,WAAY;MAAA,CAAE;;;;;;;;MAUpCwH,SAAS,CAAC;QAAEA,SAASzG,YAAa;MAAA,CAAE;;;;;MAKpC,aAAa,CAAC;QAAE,aAAaA,YAAa;MAAA,CAAE;;;;;MAK5C,aAAa,CAAC;QAAE,aAAaA,YAAa;MAAA,CAAE;;;;;MAK5C,aAAa,CAAC;QAAE,aAAaA,YAAa;MAAA,CAAE;;;;;MAK5C,aAAa,CAAC;QAAE,aAAaA,YAAa;MAAA,CAAE;;;;;MAK5C,aAAa,CAAC;QAAE,aAAaA,YAAa;MAAA,CAAE;;;;;MAK5C,aAAa,CAAC;QAAE,aAAaA,YAAa;MAAA,CAAE;;;;;MAK5C,cAAc,CAAC;QAAE,cAAcA,YAAa;MAAA,CAAE;;;;;MAK9C,cAAc,CAAC;QAAE,cAAcA,YAAa;MAAA,CAAE;;;;;MAK9C,cAAc,CAAC;QAAE,cAAcA,YAAa;MAAA,CAAE;;;;;MAK9C,cAAc,CAAC;QAAE,cAAcA,YAAa;MAAA,CAAE;;;;;MAK9C,cAAc,CAAC;QAAE,cAAcA,YAAa;MAAA,CAAE;;;;;MAK9C,cAAc,CAAC;QAAE,cAAcA,YAAa;MAAA,CAAE;;;;;MAK9C,cAAc,CAAC;QAAE,cAAcA,YAAa;MAAA,CAAE;;;;;MAK9C,cAAc,CAAC;QAAE,cAAcA,YAAa;MAAA,CAAE;;;;;MAK9C,YAAY,CAAC;QAAE0G,QAAQzG,iBAAkB;MAAA,CAAE;;;;;MAK3C,cAAc,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAKjD,cAAc,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAKjD,cAAc,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAKjD,cAAc,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAKjD,cAAc,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAKjD,cAAc,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAKjD,cAAc,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAKjD,cAAc,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAKjD,YAAY,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAK/C,oBAAoB,CAAC,kBAAkB;;;;;MAKvC,YAAY,CAAC;QAAE,YAAYA,iBAAkB;MAAA,CAAE;;;;;MAK/C,oBAAoB,CAAC,kBAAkB;;;;;MAKvC,gBAAgB,CAAC;QAAEyG,QAAQ,CAAC,GAAGvG,eAAc,GAAI,UAAU,MAAM;OAAG;;;;;MAKpE,gBAAgB,CAAC;QAAEwG,QAAQ,CAAC,GAAGxG,eAAc,GAAI,UAAU,MAAM;OAAG;;;;;MAKpE,gBAAgB,CAAC;QAAEuG,QAAQzH,WAAY;MAAA,CAAE;;;;;MAKzC,kBAAkB,CAAC;QAAE,YAAYA,WAAY;MAAA,CAAE;;;;;MAK/C,kBAAkB,CAAC;QAAE,YAAYA,WAAY;MAAA,CAAE;;;;;MAK/C,kBAAkB,CAAC;QAAE,YAAYA,WAAY;MAAA,CAAE;;;;;MAK/C,kBAAkB,CAAC;QAAE,YAAYA,WAAY;MAAA,CAAE;;;;;MAK/C,kBAAkB,CAAC;QAAE,YAAYA,WAAY;MAAA,CAAE;;;;;MAK/C,kBAAkB,CAAC;QAAE,YAAYA,WAAY;MAAA,CAAE;;;;;MAK/C,kBAAkB,CAAC;QAAE,YAAYA,WAAY;MAAA,CAAE;;;;;MAK/C,kBAAkB,CAAC;QAAE,YAAYA,WAAY;MAAA,CAAE;;;;;MAK/C,gBAAgB,CAAC;QAAE0H,QAAQ1H,WAAY;MAAA,CAAE;;;;;MAKzC,iBAAiB,CAAC;QAAE2H,SAAS,CAAC,GAAGzG,eAAc,GAAI,QAAQ,QAAQ;OAAG;;;;;MAKtE,kBAAkB,CACd;QAAE,kBAAkB,CAACD,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAM3E,aAAa,CACT;QAAE2I,SAAS,CAAC,IAAI1G,UAAUJ,2BAA2BC,iBAAiB;MAAG,CAAA;;;;;MAM7E,iBAAiB,CAAC;QAAE6G,SAAS3H,WAAY;MAAA,CAAE;;;;;;;;MAU3C0C,QAAQ,CACJ;QACIA,QAAQ;;UAEJ;UACA;UACAvE;UACAyJ;UACAC;QAAiB;MAExB,CAAA;;;;;MAML,gBAAgB,CAAC;QAAEnF,QAAQ1C,WAAY;MAAA,CAAE;;;;;MAKzC,gBAAgB,CACZ;QACI,gBAAgB,CACZ,QACA5B,kBACAwJ,2BACAC,iBAAiB;MAExB,CAAA;;;;;MAML,sBAAsB,CAAC;QAAE,gBAAgB7H,WAAY;MAAA,CAAE;;;;;MAKvD,UAAU,CAAC;QAAE8H,MAAM9G,iBAAkB;MAAA,CAAE;;;;;;;MAOvC,gBAAgB,CAAC,YAAY;;;;;MAK7B,cAAc,CAAC;QAAE8G,MAAM9H,WAAY;MAAA,CAAE;;;;;;;MAOrC,iBAAiB,CAAC;QAAE,eAAe,CAACiB,UAAUH,iBAAiB;MAAC,CAAE;;;;;;;MAOlE,qBAAqB,CAAC;QAAE,eAAed,WAAY;MAAA,CAAE;;;;;MAKrD,gBAAgB,CAAC;QAAE,cAAcgB,iBAAkB;MAAA,CAAE;;;;;MAKrD,oBAAoB,CAAC;QAAE,cAAchB,WAAY;MAAA,CAAE;;;;;MAKnD,eAAe,CACX;QACI,eAAe,CACX,QACA3B,iBACAuJ,2BACAC,iBAAiB;MAExB,CAAA;;;;;MAML,qBAAqB,CAAC;QAAE,eAAe7H,WAAY;MAAA,CAAE;;;;;MAKrD+H,SAAS,CAAC;QAAEA,SAAS,CAAC9G,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAKxE,aAAa,CAAC;QAAE,aAAa,CAAC,GAAGmC,eAAc,GAAI,eAAe,cAAc;OAAG;;;;;MAKnF,YAAY,CAAC;QAAE,YAAYA,eAAgB;MAAA,CAAE;;;;;MAK7C,aAAa,CACT;QAAE,aAAa,CAAC,UAAU,WAAW,WAAW,QAAQ,UAAU,MAAM;MAAG,GAC3E,cAAc;;;;;MAMlB,kBAAkB,CAAC;QAAE6G,MAAM,CAAC,OAAO,YAAY,aAAa,SAAS;OAAG;;;;;MAKxE,yBAAyB,CAAC;QAAE,eAAe,CAAC/G,QAAQ;MAAC,CAAE;MACvD,8BAA8B,CAAC;QAAE,oBAAoBG,uBAAwB;MAAA,CAAE;MAC/E,4BAA4B,CAAC;QAAE,kBAAkBA,uBAAwB;MAAA,CAAE;MAC3E,gCAAgC,CAAC;QAAE,oBAAoBpB,WAAY;MAAA,CAAE;MACrE,8BAA8B,CAAC;QAAE,kBAAkBA,WAAY;MAAA,CAAE;MACjE,yBAAyB,CAAC;QAAE,eAAeoB,uBAAwB;MAAA,CAAE;MACrE,uBAAuB,CAAC;QAAE,aAAaA,uBAAwB;MAAA,CAAE;MACjE,2BAA2B,CAAC;QAAE,eAAepB,WAAY;MAAA,CAAE;MAC3D,yBAAyB,CAAC;QAAE,aAAaA,WAAY;MAAA,CAAE;MACvD,yBAAyB,CAAC;QAAE,eAAeoB,uBAAwB;MAAA,CAAE;MACrE,uBAAuB,CAAC;QAAE,aAAaA,uBAAwB;MAAA,CAAE;MACjE,2BAA2B,CAAC;QAAE,eAAepB,WAAY;MAAA,CAAE;MAC3D,yBAAyB,CAAC;QAAE,aAAaA,WAAY;MAAA,CAAE;MACvD,yBAAyB,CAAC;QAAE,eAAeoB,uBAAwB;MAAA,CAAE;MACrE,uBAAuB,CAAC;QAAE,aAAaA,uBAAwB;MAAA,CAAE;MACjE,2BAA2B,CAAC;QAAE,eAAepB,WAAY;MAAA,CAAE;MAC3D,yBAAyB,CAAC;QAAE,aAAaA,WAAY;MAAA,CAAE;MACvD,yBAAyB,CAAC;QAAE,eAAeoB,uBAAwB;MAAA,CAAE;MACrE,uBAAuB,CAAC;QAAE,aAAaA,uBAAwB;MAAA,CAAE;MACjE,2BAA2B,CAAC;QAAE,eAAepB,WAAY;MAAA,CAAE;MAC3D,yBAAyB,CAAC;QAAE,aAAaA,WAAY;MAAA,CAAE;MACvD,yBAAyB,CAAC;QAAE,eAAeoB,uBAAwB;MAAA,CAAE;MACrE,uBAAuB,CAAC;QAAE,aAAaA,uBAAwB;MAAA,CAAE;MACjE,2BAA2B,CAAC;QAAE,eAAepB,WAAY;MAAA,CAAE;MAC3D,yBAAyB,CAAC;QAAE,aAAaA,WAAY;MAAA,CAAE;MACvD,yBAAyB,CAAC;QAAE,eAAeoB,uBAAwB;MAAA,CAAE;MACrE,uBAAuB,CAAC;QAAE,aAAaA,uBAAwB;MAAA,CAAE;MACjE,2BAA2B,CAAC;QAAE,eAAepB,WAAY;MAAA,CAAE;MAC3D,yBAAyB,CAAC;QAAE,aAAaA,WAAY;MAAA,CAAE;MACvD,qBAAqB,CAAC;QAAE,eAAe,CAACjB,qBAAqBC,gBAAgB;MAAC,CAAE;MAChF,8BAA8B,CAAC;QAAE,oBAAoBoC,uBAAwB;MAAA,CAAE;MAC/E,4BAA4B,CAAC;QAAE,kBAAkBA,uBAAwB;MAAA,CAAE;MAC3E,gCAAgC,CAAC;QAAE,oBAAoBpB,WAAY;MAAA,CAAE;MACrE,8BAA8B,CAAC;QAAE,kBAAkBA,WAAY;MAAA,CAAE;MACjE,2BAA2B,CAAC;QAAE,eAAe,CAAC,UAAU,SAAS;MAAC,CAAE;MACpE,0BAA0B,CACtB;QAAE,eAAe,CAAC;UAAEiI,SAAS,CAAC,QAAQ,QAAQ;UAAGC,UAAU,CAAC,QAAQ,QAAQ;QAAG,CAAA;MAAG,CAAA;MAEtF,yBAAyB,CAAC;QAAE,kBAAkBrJ,cAAe;MAAA,CAAE;MAC/D,wBAAwB,CAAC;QAAE,cAAc,CAACoC,QAAQ;MAAC,CAAE;MACrD,6BAA6B,CAAC;QAAE,mBAAmBG,uBAAwB;MAAA,CAAE;MAC7E,2BAA2B,CAAC;QAAE,iBAAiBA,uBAAwB;MAAA,CAAE;MACzE,+BAA+B,CAAC;QAAE,mBAAmBpB,WAAY;MAAA,CAAE;MACnE,6BAA6B,CAAC;QAAE,iBAAiBA,WAAY;MAAA,CAAE;;;;;MAK/D,aAAa,CAAC;QAAEgI,MAAM,CAAC,SAAS,aAAa,OAAO;OAAG;;;;;MAKvD,eAAe,CACX;QAAE,eAAe,CAAC,UAAU,WAAW,WAAW,QAAQ,UAAU,MAAM;MAAG,CAAA;;;;;MAMjF,iBAAiB,CAAC;QAAEA,MAAM/H,gBAAiB;MAAA,CAAE;;;;;MAK7C,eAAe,CAAC;QAAE+H,MAAM3H,cAAe;MAAA,CAAE;;;;;MAKzC,aAAa,CAAC;QAAE2H,MAAMzH,YAAa;MAAA,CAAE;;;;;MAKrC,aAAa,CAAC;QAAE,aAAa,CAAC,SAAS,WAAW;MAAC,CAAE;;;;;MAKrD,cAAc,CAAC;QAAEyH,MAAM,CAAC,QAAQjJ,qBAAqBC,gBAAgB;OAAG;;;;;;;;MAUxEmJ,QAAQ,CACJ;QACIA,QAAQ;;UAEJ;UACA;UACApJ;UACAC;QAAgB;MAEvB,CAAA;;;;;MAML8C,MAAM,CAAC;QAAEA,MAAMT,UAAW;MAAA,CAAE;;;;;MAK5B+G,YAAY,CAAC;QAAEA,YAAY,CAACnH,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAK9EqJ,UAAU,CAAC;QAAEA,UAAU,CAACpH,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAK1E,eAAe,CACX;QACI,eAAe;;UAEX;UACA;UACAV;UACAsJ;UACAC;QAAiB;MAExB,CAAA;;;;;MAML,qBAAqB,CAAC;QAAE,eAAe7H,WAAY;MAAA,CAAE;;;;;MAKrDsI,WAAW,CAAC;QAAEA,WAAW,CAAC,IAAIrH,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAKhF,cAAc,CAAC;QAAE,cAAc,CAACiC,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAKlFuJ,QAAQ,CAAC;QAAEA,QAAQ,CAAC,IAAItH,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAK1EwJ,UAAU,CAAC;QAAEA,UAAU,CAACvH,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAK1EyJ,OAAO,CAAC;QAAEA,OAAO,CAAC,IAAIxH,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAKxE,mBAAmB,CACf;QACI,mBAAmB;;UAEf;UACA;UACAD;UACAC;QAAgB;MAEvB,CAAA;;;;;MAML,iBAAiB,CAAC;QAAE,iBAAiBqC,UAAW;MAAA,CAAE;;;;;MAKlD,uBAAuB,CACnB;QAAE,uBAAuB,CAACJ,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAMhF,qBAAqB,CACjB;QAAE,qBAAqB,CAACiC,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAM9E,sBAAsB,CAClB;QAAE,sBAAsB,CAAC,IAAIiC,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAMnF,uBAAuB,CACnB;QAAE,uBAAuB,CAACiC,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAMhF,mBAAmB,CACf;QAAE,mBAAmB,CAAC,IAAIiC,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAMhF,oBAAoB,CAChB;QAAE,oBAAoB,CAACiC,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAM7E,qBAAqB,CACjB;QAAE,qBAAqB,CAACiC,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAM9E,kBAAkB,CACd;QAAE,kBAAkB,CAAC,IAAIiC,UAAUlC,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;;;;MAW/E,mBAAmB,CAAC;QAAEyI,QAAQ,CAAC,YAAY,UAAU;MAAC,CAAE;;;;;MAKxD,kBAAkB,CAAC;QAAE,kBAAkBtI,wBAAyB;MAAA,CAAE;;;;;MAKlE,oBAAoB,CAAC;QAAE,oBAAoBA,wBAAyB;MAAA,CAAE;;;;;MAKtE,oBAAoB,CAAC;QAAE,oBAAoBA,wBAAyB;MAAA,CAAE;;;;;MAKtE,gBAAgB,CAAC;QAAEuJ,OAAO,CAAC,QAAQ,OAAO;MAAC,CAAE;;;;;MAK7CC,SAAS,CAAC;QAAEA,SAAS,CAAC,OAAO,QAAQ;MAAC,CAAE;;;;;;;;MAUxCC,YAAY,CACR;QACIA,YAAY,CACR,IACA,OACA,UACA,WACA,UACA,aACA,QACA7J,qBACAC,gBAAgB;MAEvB,CAAA;;;;;MAML,uBAAuB,CAAC;QAAE4J,YAAY,CAAC,UAAU,UAAU;MAAC,CAAE;;;;;MAK9DC,UAAU,CAAC;QAAEA,UAAU,CAAC5H,UAAU,WAAWlC,qBAAqBC,gBAAgB;OAAG;;;;;MAKrFoD,MAAM,CACF;QAAEA,MAAM,CAAC,UAAU,WAAW1D,WAAWK,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAMrF8J,OAAO,CAAC;QAAEA,OAAO,CAAC7H,UAAUlC,qBAAqBC,gBAAgB;OAAG;;;;;MAKpE4C,SAAS,CAAC;QAAEA,SAAS,CAAC,QAAQjD,cAAcI,qBAAqBC,gBAAgB;OAAG;;;;;;;;MAUpF+J,UAAU,CAAC;QAAEA,UAAU,CAAC,UAAU,SAAS;MAAC,CAAE;;;;;MAK9CvG,aAAa,CACT;QAAEA,aAAa,CAAChE,kBAAkBO,qBAAqBC,gBAAgB;MAAG,CAAA;;;;;MAM9E,sBAAsB,CAAC;QAAE,sBAAsBF,2BAA4B;MAAA,CAAE;;;;;MAK7EkK,QAAQ,CAAC;QAAEA,QAAQ1H,YAAa;MAAA,CAAE;;;;;MAKlC,YAAY,CAAC;QAAE,YAAYA,YAAa;MAAA,CAAE;;;;;MAK1C,YAAY,CAAC;QAAE,YAAYA,YAAa;MAAA,CAAE;;;;;MAK1C,YAAY,CAAC;QAAE,YAAYA,YAAa;MAAA,CAAE;;;;;MAK1C2H,OAAO,CAAC;QAAEA,OAAO1H,WAAY;MAAA,CAAE;;;;;MAK/B,WAAW,CAAC;QAAE,WAAWA,WAAY;MAAA,CAAE;;;;;MAKvC,WAAW,CAAC;QAAE,WAAWA,WAAY;MAAA,CAAE;;;;;MAKvC,WAAW,CAAC;QAAE,WAAWA,WAAY;MAAA,CAAE;;;;;MAKvC,YAAY,CAAC,UAAU;;;;;MAKvB2H,MAAM,CAAC;QAAEA,MAAM1H,UAAW;MAAA,CAAE;;;;;MAK5B,UAAU,CAAC;QAAE,UAAUA,UAAW;MAAA,CAAE;;;;;MAKpC,UAAU,CAAC;QAAE,UAAUA,UAAW;MAAA,CAAE;;;;;MAKpC2H,WAAW,CACP;QAAEA,WAAW,CAACpK,qBAAqBC,kBAAkB,IAAI,QAAQ,OAAO,KAAK;MAAG,CAAA;;;;;MAMpF,oBAAoB,CAAC;QAAEoK,QAAQtK,2BAA4B;MAAA,CAAE;;;;;MAK7D,mBAAmB,CAAC;QAAEqK,WAAW,CAAC,MAAM,MAAM;MAAC,CAAE;;;;;MAKjDE,WAAW,CAAC;QAAEA,WAAW5H,eAAgB;MAAA,CAAE;;;;;MAK3C,eAAe,CAAC;QAAE,eAAeA,eAAgB;MAAA,CAAE;;;;;MAKnD,eAAe,CAAC;QAAE,eAAeA,eAAgB;MAAA,CAAE;;;;;MAKnD,eAAe,CAAC;QAAE,eAAeA,eAAgB;MAAA,CAAE;;;;;MAKnD,kBAAkB,CAAC,gBAAgB;;;;;;;;MAUnC6H,QAAQ,CAAC;QAAEA,QAAQtJ,WAAY;MAAA,CAAE;;;;;MAKjCuJ,YAAY,CAAC;QAAEA,YAAY,CAAC,QAAQ,MAAM;MAAC,CAAE;;;;;MAK7C,eAAe,CAAC;QAAEC,OAAOxJ,WAAY;MAAA,CAAE;;;;;MAKvC,gBAAgB,CACZ;QAAEyJ,QAAQ,CAAC,UAAU,QAAQ,SAAS,cAAc,aAAa,YAAY;MAAG,CAAA;;;;;MAMpFC,QAAQ,CACJ;QACIA,QAAQ,CACJ,QACA,WACA,WACA,QACA,QACA,QACA,QACA,eACA,QACA,gBACA,YACA,QACA,aACA,iBACA,SACA,QACA,WACA,QACA,YACA,cACA,cACA,cACA,YACA,YACA,YACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,eACA,eACA,WACA,YACA3K,qBACAC,gBAAgB;MAEvB,CAAA;;;;;MAML,gBAAgB,CAAC;QAAE,gBAAgB,CAAC,SAAS,SAAS;MAAC,CAAE;;;;;MAKzD,kBAAkB,CAAC;QAAE,kBAAkB,CAAC,QAAQ,MAAM;MAAC,CAAE;;;;;MAKzD2K,QAAQ,CAAC;QAAEA,QAAQ,CAAC,QAAQ,IAAI,KAAK,GAAG;OAAG;;;;;MAK3C,mBAAmB,CAAC;QAAEC,QAAQ,CAAC,QAAQ,QAAQ;MAAC,CAAE;;;;;MAKlD,YAAY,CAAC;QAAE,YAAYzK,wBAAyB;MAAA,CAAE;;;;;MAKtD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,YAAY,CAAC;QAAE,YAAYA,wBAAyB;MAAA,CAAE;;;;;MAKtD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,aAAa,CAAC;QAAE,aAAaA,wBAAyB;MAAA,CAAE;;;;;MAKxD,cAAc,CAAC;QAAE0K,MAAM,CAAC,SAAS,OAAO,UAAU,YAAY;OAAG;;;;;MAKjE,aAAa,CAAC;QAAEA,MAAM,CAAC,UAAU,QAAQ;MAAC,CAAE;;;;;MAK5C,aAAa,CAAC;QAAEA,MAAM,CAAC,QAAQ,KAAK,KAAK,MAAM;OAAG;;;;;MAKlD,mBAAmB,CAAC;QAAEA,MAAM,CAAC,aAAa,WAAW;MAAC,CAAE;;;;;MAKxDC,OAAO,CAAC;QAAEA,OAAO,CAAC,QAAQ,QAAQ,cAAc;OAAG;;;;;MAKnD,WAAW,CAAC;QAAE,aAAa,CAAC,KAAK,QAAQ,OAAO;OAAG;;;;;MAKnD,WAAW,CAAC;QAAE,aAAa,CAAC,KAAK,MAAM,MAAM;OAAG;;;;;MAKhD,YAAY,CAAC,kBAAkB;;;;;MAK/BC,QAAQ,CAAC;QAAEA,QAAQ,CAAC,QAAQ,QAAQ,OAAO,MAAM;OAAG;;;;;MAKpD,eAAe,CACX;QACI,eAAe,CACX,QACA,UACA,YACA,aACAhL,qBACAC,gBAAgB;MAEvB,CAAA;;;;;;;;MAWLgL,MAAM,CAAC;QAAEA,MAAM,CAAC,QAAQ,GAAGhK,WAAY,CAAA;OAAG;;;;;MAK1C,YAAY,CACR;QACIiK,QAAQ,CACJhJ,UACAJ,2BACAC,mBACAsF,iBAAiB;MAExB,CAAA;;;;;MAML6D,QAAQ,CAAC;QAAEA,QAAQ,CAAC,QAAQ,GAAGjK,WAAY,CAAA;OAAG;;;;;;;;MAU9C,uBAAuB,CAAC;QAAE,uBAAuB,CAAC,QAAQ,MAAM;MAAC,CAAE;IACtE;IACDkK,wBAAwB;MACpB3G,UAAU,CAAC,cAAc,YAAY;MACrCC,YAAY,CAAC,gBAAgB,cAAc;MAC3CC,OAAO,CAAC,WAAW,WAAW,SAAS,OAAO,OAAO,SAAS,UAAU,MAAM;MAC9E,WAAW,CAAC,SAAS,MAAM;MAC3B,WAAW,CAAC,OAAO,QAAQ;MAC3BU,MAAM,CAAC,SAAS,QAAQ,QAAQ;MAChCM,KAAK,CAAC,SAAS,OAAO;MACtBM,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;MAClDC,IAAI,CAAC,MAAM,IAAI;MACfC,IAAI,CAAC,MAAM,IAAI;MACfO,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;MAClDC,IAAI,CAAC,MAAM,IAAI;MACfC,IAAI,CAAC,MAAM,IAAI;MACfhF,MAAM,CAAC,KAAK,GAAG;MACf,aAAa,CAAC,SAAS;MACvB,cAAc,CACV,eACA,oBACA,cACA,eACA,cAAc;MAElB,eAAe,CAAC,YAAY;MAC5B,oBAAoB,CAAC,YAAY;MACjC,cAAc,CAAC,YAAY;MAC3B,eAAe,CAAC,YAAY;MAC5B,gBAAgB,CAAC,YAAY;MAC7B,cAAc,CAAC,WAAW,UAAU;MACpC8G,SAAS,CACL,aACA,aACA,aACA,aACA,aACA,aACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,YAAY;MAEhB,aAAa,CAAC,cAAc,YAAY;MACxC,aAAa,CAAC,cAAc,YAAY;MACxC,aAAa,CAAC,cAAc,YAAY;MACxC,aAAa,CAAC,cAAc,YAAY;MACxC,aAAa,CAAC,cAAc,YAAY;MACxC,aAAa,CAAC,cAAc,YAAY;MACxC,kBAAkB,CAAC,oBAAoB,kBAAkB;MACzD,YAAY,CACR,cACA,cACA,cACA,cACA,cACA,cACA,cACA,YAAY;MAEhB,cAAc,CAAC,cAAc,YAAY;MACzC,cAAc,CAAC,cAAc,YAAY;MACzC,gBAAgB,CACZ,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,gBAAgB;MAEpB,kBAAkB,CAAC,kBAAkB,gBAAgB;MACrD,kBAAkB,CAAC,kBAAkB,gBAAgB;MACrD6B,WAAW,CAAC,eAAe,eAAe,gBAAgB;MAC1D,kBAAkB,CAAC,aAAa,eAAe,eAAe,aAAa;MAC3E,YAAY,CACR,aACA,aACA,aACA,aACA,aACA,aACA,aACA,WAAW;MAEf,aAAa,CAAC,aAAa,WAAW;MACtC,aAAa,CAAC,aAAa,WAAW;MACtC,YAAY,CACR,aACA,aACA,aACA,aACA,aACA,aACA,aACA,WAAW;MAEf,aAAa,CAAC,aAAa,WAAW;MACtC,aAAa,CAAC,aAAa,WAAW;MACtCS,OAAO,CAAC,WAAW,WAAW,UAAU;MACxC,WAAW,CAAC,OAAO;MACnB,WAAW,CAAC,OAAO;MACnB,YAAY,CAAC,OAAO;IACvB;IACDK,gCAAgC;MAC5B,aAAa,CAAC,SAAS;IAC1B;IACDC,yBAAyB,CACrB,KACA,MACA,SACA,YACA,UACA,mBACA,QACA,gBACA,cACA,UACA,eACA,WAAW;EAEoD;AAC3E;IGnzEaC,UAAUC,oCAAoBC,gBAAgB;;;ACGpD,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;AjBgCM;AApCN,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aAAa;AAAA,QACb,SACE;AAAA,QACF,WAAW;AAAA,QACX,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAQA,IAAM,SAAS,MAAM;AAAA,EACnB,CAAC,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,GAAG,MAAM,GAAG,QAAQ;AAChE,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,QAC1D;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;AkBjDrB,OAAOC,YAAW;AASZ,gBAAAC,YAAA;AAHN,IAAM,QAAQC,OAAM;AAAA,EAClB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAChC,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;AnBodd,gBAAAE,MA6CgB,YA7ChB;AA5cN,SAAS,YAAe,UAAa,OAAe;AAClD,QAAM,aAAa,OAA8B,IAAI;AAErD,SAAOC;AAAA,IACL,IAAI,SAAoB;AACtB,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAEA,iBAAW,UAAU,WAAW,MAAM;AAEpC,QAAC,SAAqD,GAAG,IAAI;AAAA,MAC/D,GAAG,KAAK;AAAA,IACV;AAAA,IACA,CAAC,UAAU,KAAK;AAAA,EAClB;AACF;AAUO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,YAAY,aAAa,IAAIC,UAWlC,CAAC,CAAC;AAGJ,QAAM,CAAC,eAAe,gBAAgB,IAAIA,UAAwB,IAAI;AAGtE,QAAM,oBAAoBD;AAAA,IACxB,OAAO,QAA2C;AAChD,UAAI,CAAC,KAAK;AACR,eAAO,EAAE,SAAS,OAAO,cAAc,OAAO,OAAO,eAAe;AAAA,MACtE;AAEA,UAAI;AAEF,cAAM,eAAe,IAAI,IAAI,GAAG;AAChC,qBAAa,aAAa;AAAA,UACxB;AAAA,UACA,KAAK,IAAI,EAAE,SAAS;AAAA,QACtB;AAGA,YAAI;AACF,gBAAM,WAAW,MAAM,MAAM,aAAa,SAAS,GAAG;AAAA,YACpD,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,aAAa;AAAA,YACb,OAAO;AAAA,UACT,CAAC;AAED,cAAI,CAAC,SAAS,IAAI;AAChB,mBAAO;AAAA,cACL,SAAS;AAAA,cACT,cAAc;AAAA,cACd,OAAO,eAAe,SAAS,MAAM;AAAA,YACvC;AAAA,UACF;AAGA,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,cAAI,aAAa;AACf,kBAAM,eACJ,YAAY,SAAS,YAAY,KACjC,YAAY,SAAS,wBAAwB,KAC7C,YAAY,SAAS,iBAAiB,KACtC,YAAY,SAAS,QAAQ,KAC7B,YAAY,SAAS,MAAM;AAAA,YAC3B,YAAY,SAAS,WAAW;AAAA,YAC/B,YAAY,SAAS,YAAY,KAAK,IAAI,SAAS,KAAK;AAE3D,gBAAI,CAAC,cAAc;AACjB,qBAAO;AAAA,gBACL,SAAS;AAAA,gBACT,cAAc;AAAA,gBACd,OAAO,0BAA0B,WAAW;AAAA,cAC9C;AAAA,YACF;AAAA,UACF;AAEA,iBAAO,EAAE,SAAS,MAAM,cAAc,MAAM;AAAA,QAC9C,SAAQ;AAEN,cAAI;AACF,kBAAM,MAAM,aAAa,SAAS,GAAG;AAAA,cACnC,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,OAAO;AAAA,YACT,CAAC;AAID,mBAAO;AAAA,cACL,SAAS;AAAA,cACT,cAAc;AAAA,cACd,OACE;AAAA,YACJ;AAAA,UACF,SAAQE,IAAA;AACN,mBAAO;AAAA,cACL,SAAS;AAAA,cACT,cAAc;AAAA,cACd,OACE;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AACd,eAAO;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,UACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC;AAAA,EACH;AAGA,QAAM,oBAAoB;AAAA,IACxB,OAAO,YAAoB,UAAkB;AAE3C,oBAAc,CAAC,UAAU;AAAA,QACvB,GAAG;AAAA,QACH,CAAC,UAAU,GAAG;AAAA,UACZ,GAAG,KAAK,UAAU;AAAA,UAClB,YAAY,EAAE,GAAG,KAAK,UAAU,EAAE,YAAY,cAAc,KAAK;AAAA,QACnE;AAAA,MACF,EAAE;AAGF,YAAM,mBAAmB,MAAM,kBAAkB,KAAK;AAGtD,oBAAc,CAAC,UAAU;AAAA,QACvB,GAAG;AAAA,QACH,CAAC,UAAU,GAAG;AAAA,UACZ,GAAG,KAAK,UAAU;AAAA,UAClB,YAAY;AAAA,QACd;AAAA,MACF,EAAE;AAAA,IACJ;AAAA,IACA;AAAA,EACF;AAGA,EAAAC,WAAU,MAAM;AAEd,UAAM,oBAAoB,QAAQ,OAAO,CAAC,WAAW;AAtMzD;AAuMM,YAAM,aAAa,OAAO,eAAe,OAAO;AAChD,YAAM,eAAe,WAAW,OAAO,UAAU;AAGjD,aAAO,IACL,kDAAc,eAAd,mBAA0B,mBACzB,kDAAc,eAAd,mBAA0B,aAAY,SACrC,6CAAc,WAAU;AAAA,IAE9B,CAAC;AAED,QAAI,kBAAkB,WAAW,GAAG;AAClC;AAAA,IACF;AAGA,UAAM,oBAAoB,EAAE,GAAG,WAAW;AAC1C,sBAAkB,QAAQ,CAAC,WAAW;AAxN1C;AAyNM,YAAM,aAAa,OAAO,eAAe,OAAO;AAChD,wBAAkB,OAAO,UAAU,IAAI;AAAA,QACrC,GAAG,kBAAkB,OAAO,UAAU;AAAA,QACtC,YAAY;AAAA,UACV,KAAI,uBAAkB,OAAO,UAAU,MAAnC,mBAAsC,eAAc,CAAC;AAAA,UACzD,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF,CAAC;AACD,kBAAc,iBAAiB;AAG/B,UAAM,qBAAqB,kBAAkB,IAAI,OAAO,WAAW;AACjE,YAAM,aAAa,OAAO,eAAe,OAAO;AAChD,YAAM,mBAAmB,MAAM,kBAAkB,UAAU;AAG3D,oBAAc,CAAC,UAAU;AAAA,QACvB,GAAG;AAAA,QACH,CAAC,OAAO,UAAU,GAAG;AAAA,UACnB,GAAG,KAAK,OAAO,UAAU;AAAA,UACzB,YAAY;AAAA,QACd;AAAA,MACF,EAAE;AAEF,aAAO,EAAE,YAAY,OAAO,YAAY,QAAQ,iBAAiB;AAAA,IACnE,CAAC;AAID,YAAQ,IAAI,kBAAkB,EAAE,MAAM,CAAC,UAAU;AAC/C,cAAQ,MAAM,qCAAqC,KAAK;AAAA,IAC1D,CAAC;AAAA,EACH,GAAG,CAAC,SAAS,YAAY,iBAAiB,CAAC;AAG3C,QAAM,yBAAyBH;AAAA,IAC7B,OAAO,eAAuB;AAC5B,YAAM,cAAc,WAAW,UAAU;AACzC,UAAI,aAAa;AAEf,sBAAc,CAAC,UAAU;AAAA,UACvB,GAAG;AAAA,UACH,CAAC,UAAU,GAAG;AAAA,YACZ,GAAG,KAAK,UAAU;AAAA,YAClB,YAAY,EAAE,GAAG,KAAK,UAAU,EAAE,YAAY,cAAc,KAAK;AAAA,UACnE;AAAA,QACF,EAAE;AAGF,cAAM,mBAAmB,MAAM,kBAAkB,YAAY,KAAK;AAGlE,sBAAc,CAAC,UAAU;AAAA,UACvB,GAAG;AAAA,UACH,CAAC,UAAU,GAAG;AAAA,YACZ,GAAG,KAAK,UAAU;AAAA,YAClB,YAAY;AAAA,UACd;AAAA,QACF,EAAE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,CAAC,YAAY,iBAAiB;AAAA,EAChC;AAGA,EAAAG,WAAU,MAAM;AACd,UAAM,gBASF,CAAC;AACL,YAAQ,QAAQ,CAAC,WAAW;AAC1B,UAAI,CAAC,WAAW,OAAO,UAAU,GAAG;AAClC,sBAAc,OAAO,UAAU,IAAI;AAAA,UACjC,OAAO,OAAO,eAAe,OAAO;AAAA,UACpC,WAAW;AAAA,UACX,UAAU;AAAA,UACV,aAAa;AAAA,UACb,YAAY,EAAE,SAAS,MAAM,cAAc,MAAM;AAAA,QACnD;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAI,OAAO,KAAK,aAAa,EAAE,SAAS,GAAG;AACzC,oBAAc,CAAC,UAAU,EAAE,GAAG,MAAM,GAAG,cAAc,EAAE;AAAA,IACzD;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAGZ,QAAM,aAAaH;AAAA,IACjB,CAAC,YAAoB,UAAkB;AACrC,oBAAc,CAAC,UAAU;AAAA,QACvB,GAAG;AAAA,QACH,CAAC,UAAU,GAAG;AAAA,UACZ,GAAG,KAAK,UAAU;AAAA,UAClB,UAAU;AAAA,UACV,aAAa;AAAA,QACf;AAAA,MACF,EAAE;AAEF,aAAO,YAAY,KAAK;AAGxB,iBAAW,MAAM;AACf,sBAAc,CAAC,UAAU;AAAA,UACvB,GAAG;AAAA,UACH,CAAC,UAAU,GAAG;AAAA,YACZ,GAAG,KAAK,UAAU;AAAA,YAClB,UAAU;AAAA,YACV,aAAa;AAAA,UACf;AAAA,QACF,EAAE;AAGF,mBAAW,MAAM;AACf,wBAAc,CAAC,UAAU;AAAA,YACvB,GAAG;AAAA,YACH,CAAC,UAAU,GAAG;AAAA,cACZ,GAAG,KAAK,UAAU;AAAA,cAClB,aAAa;AAAA,YACf;AAAA,UACF,EAAE;AAAA,QACJ,GAAG,GAAI;AAAA,MACT,GAAG,GAAG;AAAA,IACR;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AAGA,QAAM,gBAAgB,YAAY,CAAC,YAAoB,UAAkB;AACvE,eAAW,YAAY,KAAK;AAAA,EAC9B,GAAG,GAAG;AAEN,QAAM,oBAAoB,CAAC,YAAoB,UAAkB;AAC/D,kBAAc,CAAC,UAAU;AAAA,MACvB,GAAG;AAAA,MACH,CAAC,UAAU,GAAG;AAAA,QACZ,GAAG,KAAK,UAAU;AAAA,QAClB;AAAA,QACA,aAAa;AAAA,MACf;AAAA,IACF,EAAE;AACF,kBAAc,YAAY,KAAK;AAC/B,sBAAkB,YAAY,KAAK;AAAA,EACrC;AAEA,QAAM,mBAAmB,CAAC,eAAuB;AAC/C,kBAAc,CAAC,UAAU;AAAA,MACvB,GAAG;AAAA,MACH,CAAC,UAAU,GAAG;AAAA,QACZ,GAAG,KAAK,UAAU;AAAA,QAClB,WAAW;AAAA,MACb;AAAA,IACF,EAAE;AAAA,EACJ;AAEA,QAAM,kBAAkB,CAAC,eAAuB;AAC9C,kBAAc,CAAC,UAAU;AAAA,MACvB,GAAG;AAAA,MACH,CAAC,UAAU,GAAG;AAAA,QACZ,GAAG,KAAK,UAAU;AAAA,QAClB,WAAW;AAAA,MACb;AAAA,IACF,EAAE;AAAA,EACJ;AAGA,QAAM,gBAAgB,CAAC,aAAqB;AAC1C,qBAAiB,CAAC,WAAY,WAAW,WAAW,OAAO,QAAS;AAAA,EACtE;AAGA,EAAAG,WAAU,MAAM;AACd,UAAM,qBAAqB,CAAC,UAAsB;AAChD,UACE,iBACA,CAAE,MAAM,OAAmB,QAAQ,mBAAmB,GACtD;AACA,yBAAiB,IAAI;AAAA,MACvB;AAAA,IACF;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,aAAa,CAAC;AAGlB,QAAM,8BAA8BH;AAAA,IAClC,CAAC,YAAoB,QAAgB;AAEnC,oBAAc,CAAC,UAAU;AAAA,QACvB,GAAG;AAAA,QACH,CAAC,UAAU,GAAG;AAAA,UACZ,GAAG,KAAK,UAAU;AAAA,UAClB,OAAO;AAAA,UACP,aAAa;AAAA,QACf;AAAA,MACF,EAAE;AAGF,iBAAW,YAAY,GAAG;AAC1B,uBAAiB,IAAI;AAGrB,wBAAkB,YAAY,GAAG;AAAA,IACnC;AAAA,IACA,CAAC,YAAY,iBAAiB;AAAA,EAChC;AAGA,QAAM,cAAcA;AAAA,IAClB,CAAC,eAAuB;AAEtB,YAAM,SAAS,QAAQ,KAAK,CAAC,MAAM,EAAE,eAAe,UAAU;AAC9D,UAAI,QAAQ;AAEV,sBAAc,CAAC,UAAU;AAAA,UACvB,GAAG;AAAA,UACH,CAAC,UAAU,GAAG;AAAA,YACZ,GAAG,KAAK,UAAU;AAAA,YAClB,OAAO,OAAO;AAAA,YACd,aAAa;AAAA,YACb,YAAY,EAAE,SAAS,MAAM,cAAc,MAAM;AAAA,UACnD;AAAA,QACF,EAAE;AAGF,gBAAQ,UAAU;AAGlB,0BAAkB,YAAY,OAAO,WAAW;AAAA,MAClD;AAAA,IACF;AAAA,IACA,CAAC,SAAS,SAAS,iBAAiB;AAAA,EACtC;AAGA,QAAM,qBAAqB,CAAC,cAA8B;AACxD,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,OAAO,MAAM;AAEnB,UAAM,UAAU,KAAK,MAAM,OAAO,GAAI;AACtC,UAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,UAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;AACrC,UAAM,OAAO,KAAK,MAAM,QAAQ,EAAE;AAElC,QAAI,OAAO;AAAG,aAAO,GAAG,IAAI;AAC5B,QAAI,QAAQ;AAAG,aAAO,GAAG,KAAK;AAC9B,QAAI,UAAU;AAAG,aAAO,GAAG,OAAO;AAClC,QAAI,UAAU;AAAI,aAAO,GAAG,OAAO;AACnC,WAAO;AAAA,EACT;AAGA,QAAM,wBAAwB,CAC5B,WAC2B;AAC3B,UAAM,gBAAgB,sBAAsB,OAAO,UAAU,KAAK,CAAC;AAGnE,WAAO,cAAc,OAAO,CAAC,UAAU,MAAM,QAAQ,OAAO,WAAW;AAAA,EACzE;AAEA,MAAI,QAAQ,WAAW,GAAG;AACxB,WACE,gBAAAD,KAAC,SAAI,WAAU,sDAAqD,8EAEpE;AAAA,EAEJ;AAEA,SACE,qBAAC,SAAI,WAAU,cACZ;AAAA,YAAQ,IAAI,CAAC,QAAQ,UAAU;AAC9B,YAAM,YAAY,WAAW,OAAO,UAAU,KAAK;AAAA,QACjD,OAAO,OAAO,eAAe,OAAO;AAAA,QACpC,WAAW;AAAA,QACX,UAAU;AAAA,QACV,aAAa;AAAA,QACb,YAAY,EAAE,SAAS,MAAM,cAAc,MAAM;AAAA,MACnD;AAEA,YAAM,eAAe,CAAC,CAAC,OAAO;AAC9B,YAAM,UACJ,UAAU,WAAW,OAAO,eAAe,OAAO;AAGpD,YAAM,qBAAqB,sBAAsB,MAAM;AACvD,YAAM,qBAAqB,mBAAmB,SAAS;AACvD,YAAM,YAAY,WAAW,OAAO,UAAU;AAC9C,YAAM,gBAAgB,kBAAkB;AAExC,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,WAAW,4EACT,eACI,wIACA,mEACN;AAAA,UACA,OAAO,EAAE,gBAAgB,GAAG,QAAQ,EAAE,KAAK;AAAA,UAE3C,+BAAC,SAAI,WAAU,uBACb;AAAA,iCAAC,SAAI,WAAU,oCACb;AAAA,8BAAAA,KAAC,QAAG,WAAU,sEACX,iBAAO,YACV;AAAA,cACA,qBAAC,SAAI,WAAU,4BACZ;AAAA,0BAAU,YACT,qBAAC,UAAK,WAAU,uEACd;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAU;AAAA,sBACV,OAAM;AAAA,sBACN,MAAK;AAAA,sBACL,SAAQ;AAAA,sBAER;AAAA,wCAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,WAAU;AAAA,4BACV,IAAG;AAAA,4BACH,IAAG;AAAA,4BACH,GAAE;AAAA,4BACF,QAAO;AAAA,4BACP,aAAY;AAAA;AAAA,wBACb;AAAA,wBACD,gBAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,WAAU;AAAA,4BACV,MAAK;AAAA,4BACL,GAAE;AAAA;AAAA,wBACH;AAAA;AAAA;AAAA,kBACH;AAAA,kBAAM;AAAA,mBAER;AAAA,gBAED,UAAU,eACT,qBAAC,UAAK,WAAU,2EACd;AAAA,kCAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAU;AAAA,sBACV,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,OAAM;AAAA,sBAEN,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,UAAS;AAAA,0BACT,GAAE;AAAA,0BACF,UAAS;AAAA;AAAA,sBACV;AAAA;AAAA,kBACH;AAAA,kBAAM;AAAA,mBAER;AAAA,gBAED,sBACC,qBAAC,SAAI,WAAU,6BACb;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,SAAS,MAAM,cAAc,SAAS;AAAA,sBACtC,SAAQ;AAAA,sBACR,MAAK;AAAA,sBACL,OAAM;AAAA,sBACN,iBAAe;AAAA,sBACf,iBAAe;AAAA,sBACf,WAAW,wCACT,gBACI,6IACA,6MACN;AAAA,sBAEA;AAAA,wCAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,OAAM;AAAA,4BACN,WAAU;AAAA,4BACV,SAAQ;AAAA,4BACR,MAAK;AAAA,4BAEL,0BAAAA;AAAA,8BAAC;AAAA;AAAA,gCACC,UAAS;AAAA,gCACT,GAAE;AAAA,gCACF,UAAS;AAAA;AAAA,4BACX;AAAA;AAAA,wBACF;AAAA,wBAAM;AAAA;AAAA;AAAA,kBAER;AAAA,kBACC,iBACC;AAAA,oBAAC;AAAA;AAAA,sBACC,IAAI;AAAA,sBACJ,WAAU;AAAA,sBAEV;AAAA,wCAAAA,KAAC,SAAI,WAAU,+DAA8D,+CAE7E;AAAA,wBACA,gBAAAA,KAAC,SAAI,WAAU,4BACZ,6BAAmB,IAAI,CAAC,OAAO,MAC9B;AAAA,0BAAC;AAAA;AAAA,4BAEC,SAAS,MACP;AAAA,8BACE,OAAO;AAAA,8BACP,MAAM;AAAA,4BACR;AAAA,4BAEF,WAAU;AAAA,4BAEV;AAAA,8CAAAA;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAM;AAAA,kCACN,WAAU;AAAA,kCACV,SAAQ;AAAA,kCACR,MAAK;AAAA,kCAEL,0BAAAA;AAAA,oCAAC;AAAA;AAAA,sCACC,UAAS;AAAA,sCACT,GAAE;AAAA,sCACF,UAAS;AAAA;AAAA,kCACX;AAAA;AAAA,8BACF;AAAA,8BACA,qBAAC,SAAI,WAAU,oDACb;AAAA,gDAAAA,KAAC,UAAK,WAAU,mBACb,gBAAM,KACT;AAAA,gCACA,gBAAAA,KAAC,UAAK,WAAU,oEACb,6BAAmB,MAAM,SAAS,GACrC;AAAA,iCACF;AAAA;AAAA;AAAA,0BA5BK;AAAA,wBA6BP,CACD,GACH;AAAA;AAAA;AAAA,kBACF;AAAA,mBAEJ;AAAA,gBAED,gBACC,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,SAAS,MAAM,YAAY,OAAO,UAAU;AAAA,oBAC5C,WAAU;AAAA,oBACX;AAAA;AAAA,gBAED;AAAA,iBAEJ;AAAA,eACF;AAAA,YAEA,qBAAC,SAAI,WAAU,kBACb;AAAA,8BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO,UAAU;AAAA,kBACjB,UAAU,CAAC,MACT,kBAAkB,OAAO,YAAY,EAAE,OAAO,KAAK;AAAA,kBAErD,SAAS,MAAM,iBAAiB,OAAO,UAAU;AAAA,kBACjD,QAAQ,MAAM,gBAAgB,OAAO,UAAU;AAAA,kBAC/C,YAAW;AAAA,kBACX,cAAa;AAAA,kBACb,WAAW,2CACT,eACI,8EACA,sEACN,IACE,UAAU,YACN,+DACA,EACN;AAAA;AAAA,cACF;AAAA,cAEC,WAAW,CAAC,UAAU,YAAY,CAAC,UAAU,eAC5C,gBAAAA,KAAC,SAAI,WAAU,gFACb,0BAAAA,KAAC,UAAK,WAAU,iBAAgB,oBAAC,GACnC;AAAA,cAGD,UAAU,WAAW,gBACpB,gBAAAA,KAAC,SAAI,WAAU,8EACb;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAM;AAAA,kBACN,MAAK;AAAA,kBACL,SAAQ;AAAA,kBAER;AAAA,oCAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAU;AAAA,wBACV,IAAG;AAAA,wBACH,IAAG;AAAA,wBACH,GAAE;AAAA,wBACF,QAAO;AAAA,wBACP,aAAY;AAAA;AAAA,oBACb;AAAA,oBACD,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAU;AAAA,wBACV,MAAK;AAAA,wBACL,GAAE;AAAA;AAAA,oBACH;AAAA;AAAA;AAAA,cACH,GACF;AAAA,eAEJ;AAAA,YAGA,qBAAC,SAAI,WAAU,sCACZ;AAAA,wBAAU,WAAW,gBACpB,qBAAC,SAAI,WAAU,mCACb;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAM;AAAA,oBACN,MAAK;AAAA,oBACL,SAAQ;AAAA,oBAER;AAAA,sCAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,WAAU;AAAA,0BACV,IAAG;AAAA,0BACH,IAAG;AAAA,0BACH,GAAE;AAAA,0BACF,QAAO;AAAA,0BACP,aAAY;AAAA;AAAA,sBACb;AAAA,sBACD,gBAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,WAAU;AAAA,0BACV,MAAK;AAAA,0BACL,GAAE;AAAA;AAAA,sBACH;AAAA;AAAA;AAAA,gBACH;AAAA,gBAAM;AAAA,iBAER;AAAA,cAGD,UAAU,WAAW,YAAY,QAChC,CAAC,UAAU,WAAW,gBACpB,qBAAC,SAAI,WAAU,4DACb;AAAA,gCAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,OAAM;AAAA,oBAEN,0BAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,UAAS;AAAA,wBACT,GAAE;AAAA,wBACF,UAAS;AAAA;AAAA,oBACV;AAAA;AAAA,gBACH;AAAA,gBAAM;AAAA,iBAER;AAAA,cAGH,UAAU,WAAW,YAAY,SAChC,CAAC,UAAU,WAAW,gBACpB,qBAAC,SAAI,WAAU,4CACb;AAAA,qCAAC,SAAI,WAAU,oDACb;AAAA,kCAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAU;AAAA,sBACV,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,OAAM;AAAA,sBAEN,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,UAAS;AAAA,0BACT,GAAE;AAAA,0BACF,UAAS;AAAA;AAAA,sBACV;AAAA;AAAA,kBACH;AAAA,kBACC,UAAU,WAAW,SAAS;AAAA,mBACjC;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAS,MACP,uBAAuB,OAAO,UAAU;AAAA,oBAE1C,WAAU;AAAA,oBACV,OAAM;AAAA,oBACP;AAAA;AAAA,gBAED;AAAA,iBACF;AAAA,cAGH,UAAU,WAAW,YAAY,QAChC,CAAC,UAAU,WAAW,gBACpB,qBAAC,SAAI,WAAU,4CACb;AAAA,qCAAC,SAAI,WAAU,wDACb;AAAA,kCAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAU;AAAA,sBACV,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,OAAM;AAAA,sBAEN,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,UAAS;AAAA,0BACT,GAAE;AAAA,0BACF,UAAS;AAAA;AAAA,sBACV;AAAA;AAAA,kBACH;AAAA,kBAAM;AAAA,mBAER;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAS,MACP,uBAAuB,OAAO,UAAU;AAAA,oBAE1C,WAAU;AAAA,oBACV,OAAM;AAAA,oBACP;AAAA;AAAA,gBAED;AAAA,iBACF;AAAA,eAEN;AAAA,YAEC,gBACC,qBAAC,SAAI,WAAU,0EACb;AAAA,8BAAAA,KAAC,UAAK,WAAU,gFAA+E,uBAE/F;AAAA,cACC,OAAO;AAAA,eACV;AAAA,aAEJ;AAAA;AAAA,QA1TK,OAAO;AAAA,MA2Td;AAAA,IAEJ,CAAC;AAAA,IAGD,gBAAAA,KAAC,WACE;AAAA;AAAA,WAGH;AAAA,KACF;AAEJ;;;AH1nBI,mBAYM,OAAAK,MAMF,QAAAC,aAlBJ;AAtLG,SAAS,kBAAkB;AAAA,EAChC,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,gBAAgB;AAClB,GAA2B;AACzB,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,KAAK;AAC1C,QAAM,CAAC,QAAQ,SAAS,IAAIA,UAAS,EAAE;AAEvC,QAAM,CAAC,uBAAuB,wBAAwB,IACpDA,UAAgC,CAAC,CAAC;AACpC,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,UAA0B,CAAC,CAAC;AAC1E,QAAM,CAAC,EAAE,oBAAoB,IAAIA;AAAA,IAC/B;AAAA,EACF;AAEA,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAS,KAAK;AAEhD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,aAAa;AAGjB,EAAAC,WAAU,MAAM;AACd,QAAI;AAEF,YAAM,gBAAgB,aAAa;AAAA,QACjC;AAAA,MACF;AACA,UAAI,eAAe;AACjB,6BAAqB,KAAK,MAAM,aAAa,CAAC;AAAA,MAChD;AAGA,YAAM,uBAAuB,aAAa;AAAA,QACxC;AAAA,MACF;AACA,UAAI,sBAAsB;AACxB,2BAAmB,KAAK,MAAM,oBAAoB,CAAC;AAAA,MACrD;AAGA,YAAM,eAAe,aAAa;AAAA,QAChC;AAAA,MACF;AACA,UAAI,cAAc;AAChB,iCAAyB,KAAK,MAAM,YAAY,CAAC;AAAA,MACnD;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,kCAAkC,KAAK;AAAA,IACvD;AAAA,EACF,GAAG,CAAC,CAAC;AAGL,QAAM,uBAAuB,CAAC,YAAoB,QAAgB;AAChE,mBAAe,YAAY,GAAG;AAG9B,UAAM,YAAY,KAAK,IAAI;AAG3B,UAAM,qBAAqB,EAAE,GAAG,iBAAiB,CAAC,UAAU,GAAG,IAAI;AACnE,uBAAmB,kBAAkB;AAGrC,UAAM,aAAa,EAAE,GAAG,sBAAsB;AAG9C,QAAI,CAAC,WAAW,UAAU,GAAG;AAC3B,iBAAW,UAAU,IAAI,CAAC;AAAA,IAC5B;AAGA,UAAM,qBAAqB,WAAW,UAAU,EAAE;AAAA,MAChD,CAAC,UAAU,MAAM,QAAQ;AAAA,IAC3B;AACA,QAAI,sBAAsB,GAAG;AAE3B,iBAAW,UAAU,EAAE,kBAAkB,EAAE,YAAY;AAAA,IACzD,OAAO;AAEL,iBAAW,UAAU,EAAE,KAAK,EAAE,KAAK,UAAU,CAAC;AAAA,IAChD;AAGA,eAAW,UAAU,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS;AAG/D,QAAI,WAAW,UAAU,EAAE,SAAS,IAAI;AACtC,iBAAW,UAAU,IAAI,WAAW,UAAU,EAAE,MAAM,GAAG,EAAE;AAAA,IAC7D;AAEA,6BAAyB,UAAU;AAGnC,QAAI;AACF,mBAAa;AAAA,QACX;AAAA,QACA,KAAK,UAAU,kBAAkB;AAAA,MACnC;AACA,mBAAa;AAAA,QACX;AAAA,QACA,KAAK,UAAU,UAAU;AAAA,MAC3B;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,yBAAyB,KAAK;AAAA,IAC9C;AAAA,EACF;AAGA,QAAM,oBAAoB,CAAC,eAAuB;AAChD,mBAAe,UAAU;AAGzB,UAAM,qBAAqB,EAAE,GAAG,gBAAgB;AAChD,WAAO,mBAAmB,UAAU;AACpC,uBAAmB,kBAAkB;AAGrC,QAAI;AACF,mBAAa;AAAA,QACX;AAAA,QACA,KAAK,UAAU,kBAAkB;AAAA,MACnC;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,+BAA+B,KAAK;AAAA,IACpD;AAAA,EACF;AAEA,QAAM,kBAAkB,QAAQ;AAAA,IAC9B,CAAC,WACC,OAAO,WAAW,YAAY,EAAE,SAAS,OAAO,YAAY,CAAC,KAC7D,OAAO,YAAY,YAAY,EAAE,SAAS,OAAO,YAAY,CAAC,KAC7D,OAAO,eACN,OAAO,YAAY,YAAY,EAAE,SAAS,OAAO,YAAY,CAAC;AAAA,EACpE;AAEA,QAAM,kBAAkB;AAAA,IACtB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAClB;AAEA,QAAM,uBAAuB;AAAA,IAC3B,OACE;AAAA,IACF,SACE;AAAA,IACF,SACE;AAAA,IACF,OACE;AAAA,EACJ;AAGA,QAAM,aAAa,MAAM;AACvB,cAAU,IAAI;AACd,iBAAa,KAAK;AAAA,EACpB;AAEA,QAAM,cAAc,MAAM;AACxB,iBAAa,IAAI;AACjB,eAAW,MAAM;AACf,gBAAU,KAAK;AACf,mBAAa,KAAK;AAAA,IACpB,GAAG,GAAG;AAAA,EACR;AAGA,QAAM,eAAe,gBAAgB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW;AAGhE,QAAM,sBAAsB,gBAAgB;AAAA,IAC1C,CAAC,MAAM,CAAC,CAAC,EAAE;AAAA,EACb,EAAE;AAEF,SACE,gBAAAF,MAAA,YACE;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,WAAW,SAAS,gBAAgB,cAAc,CAAC,4CAA4C,qBAAqB,aAAa,CAAC,sGAAsG,SAAS;AAAA,QACjP,cAAW;AAAA,QAEX;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,MAAK;AAAA,cAEL,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,UAAS;AAAA,kBACT,GAAE;AAAA,kBACF,UAAS;AAAA;AAAA,cACX;AAAA;AAAA,UACF;AAAA,UACA,gBAAAC,MAAC,UAAK,WAAU,4BACd;AAAA,4BAAAD,KAAC,UAAK,WAAU,+FACb,sBACH;AAAA,YACA,gBAAAA,KAAC,UAAK,WAAU,iGACb,sBACH;AAAA,aACF;AAAA,UACC,sBAAsB,KACrB,gBAAAA,KAAC,UAAK,WAAU,iOACb,+BACH;AAAA;AAAA;AAAA,IAEJ;AAAA,IAEC,UACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,wIACT,YAAY,yBAAyB,oBACvC;AAAA,QACA,SAAS,CAAC,MAAM;AACd,cAAI,EAAE,WAAW,EAAE;AAAe,wBAAY;AAAA,QAChD;AAAA,QAEA,0BAAAC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,0QACT,YACI,gEACA,4DACN;AAAA,YAEA;AAAA,8BAAAA,MAAC,SAAI,WAAU,4PACb;AAAA,gCAAAA,MAAC,SAAI,WAAU,+BACb;AAAA,kCAAAD,KAAC,SAAI,WAAU,gHACb,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAM;AAAA,sBACN,WAAU;AAAA,sBACV,SAAQ;AAAA,sBACR,MAAK;AAAA,sBAEL,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,UAAS;AAAA,0BACT,GAAE;AAAA,0BACF,UAAS;AAAA;AAAA,sBACX;AAAA;AAAA,kBACF,GACF;AAAA,kBACA,gBAAAA,KAAC,QAAG,WAAU,wFAAuF,kCAErG;AAAA,kBACC,sBAAsB,KACrB,gBAAAC,MAAC,UAAK,WAAU,kJACb;AAAA;AAAA,oBAAoB;AAAA,qBACvB;AAAA,mBAEJ;AAAA,gBACA,gBAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAS;AAAA,oBACT,WAAU;AAAA,oBACV,cAAW;AAAA,oBAEX,0BAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAM;AAAA,wBACN,WAAU;AAAA,wBACV,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,QAAO;AAAA,wBAEP,0BAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,eAAc;AAAA,4BACd,gBAAe;AAAA,4BACf,aAAa;AAAA,4BACb,GAAE;AAAA;AAAA,wBACJ;AAAA;AAAA,oBACF;AAAA;AAAA,gBACF;AAAA,iBACF;AAAA,cAEA,gBAAAA,KAAC,SAAI,WAAU,0KACb,0BAAAC,MAAC,SAAI,WAAU,mDACb;AAAA,gCAAAA,MAAC,SAAI,WAAU,2FACb;AAAA,kCAAAD,KAAC,SAAI,WAAU,wEACb,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAU;AAAA,sBACV,OAAM;AAAA,sBACN,SAAQ;AAAA,sBACR,MAAK;AAAA,sBAEL,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,UAAS;AAAA,0BACT,GAAE;AAAA,0BACF,UAAS;AAAA;AAAA,sBACX;AAAA;AAAA,kBACF,GACF;AAAA,kBACA,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO;AAAA,sBACP,UAAU,CAAC,MAAM,UAAU,EAAE,OAAO,KAAK;AAAA,sBACzC,aAAY;AAAA,sBACZ,WAAU;AAAA;AAAA,kBACZ;AAAA,kBACC,UACC,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,SAAS,MAAM,UAAU,EAAE;AAAA,sBAC3B,WAAU;AAAA,sBACV,cAAW;AAAA,sBAEX,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,OAAM;AAAA,0BACN,WAAU;AAAA,0BACV,SAAQ;AAAA,0BACR,MAAK;AAAA,0BAEL,0BAAAA;AAAA,4BAAC;AAAA;AAAA,8BACC,UAAS;AAAA,8BACT,GAAE;AAAA,8BACF,UAAS;AAAA;AAAA,0BACX;AAAA;AAAA,sBACF;AAAA;AAAA,kBACF;AAAA,mBAEJ;AAAA,gBACA,gBAAAA,KAAC,SAAI,WAAU,iFACb,0BAAAC;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,SAAS;AAAA,oBACT,WAAU;AAAA,oBACV,UAAU,CAAC;AAAA,oBAEX;AAAA,sCAAAD;AAAA,wBAAC;AAAA;AAAA,0BACC,OAAM;AAAA,0BACN,WAAU;AAAA,0BACV,MAAK;AAAA,0BACL,SAAQ;AAAA,0BACR,QAAO;AAAA,0BAEP,0BAAAA;AAAA,4BAAC;AAAA;AAAA,8BACC,eAAc;AAAA,8BACd,gBAAe;AAAA,8BACf,aAAa;AAAA,8BACb,GAAE;AAAA;AAAA,0BACJ;AAAA;AAAA,sBACF;AAAA,sBAAM;AAAA;AAAA;AAAA,gBAER,GACF;AAAA,iBACF,GACF;AAAA,cAEA,gBAAAA,KAAC,SAAI,WAAU,wIACZ,sBACC,gBAAAC,MAAC,SAAI,WAAU,4DACb;AAAA,gCAAAD,KAAC,SAAI,WAAU,iGAAgG;AAAA,gBAC/G,gBAAAA,KAAC,OAAE,WAAU,4DAA2D,gCAExE;AAAA,iBACF,IACE,gBAAgB,WAAW,IAC7B,gBAAAC,MAAC,SAAI,WAAU,oNACb;AAAA,gCAAAD,KAAC,SAAI,WAAU,kHACb,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAM;AAAA,oBACN,WAAU;AAAA,oBACV,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,QAAO;AAAA,oBAEP,0BAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,eAAc;AAAA,wBACd,gBAAe;AAAA,wBACf,aAAa;AAAA,wBACb,GAAE;AAAA;AAAA,oBACJ;AAAA;AAAA,gBACF,GACF;AAAA,gBACA,gBAAAA,KAAC,QAAG,WAAU,uIAAsI,8BAEpJ;AAAA,gBACA,gBAAAA,KAAC,OAAE,WAAU,kHACV,mBACG,+DACA,oEACN;AAAA,iBACF,IAEA,gBAAAA,KAAC,SAAI,WAAU,gDACb,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,SAAS;AAAA,kBACT,SAAS;AAAA,kBACT,QAAQ;AAAA,kBACR;AAAA,kBACA;AAAA;AAAA,cACF,GACF,GAEJ;AAAA;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KAEJ;AAEJ;","names":["useState","useEffect","useState","useEffect","useCallback","param","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","classParts","split","length","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","classGroups","Map","processClassesRecursively","classGroup","forEach","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","Object","entries","key","path","currentClassPartObject","pathPart","has","set","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","value","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","startsWith","isExternal","endsWith","createSortModifiers","orderSensitiveModifiers","fromEntries","map","modifier","sortModifiers","sortedModifiers","unsortedModifiers","isPositionSensitive","sort","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","result","originalClassName","variantModifier","modifierId","classId","includes","conflictGroups","i","group","twJoin","argument","resolvedValue","string","arguments","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","callTailwindMerge","apply","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","fromTheme","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","isArbitraryVariable","isArbitraryValue","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","isFraction","scaleGridTemplateColsRows","isInteger","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","isArbitraryVariablePosition","isArbitraryPosition","position","scaleBgRepeat","repeat","scaleBgSize","isArbitraryVariableSize","isArbitrarySize","size","scaleGradientStopPosition","isPercent","isArbitraryVariableLength","isArbitraryLength","scaleRadius","scaleBorderWidth","isNumber","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","cacheSize","theme","animate","aspect","blur","isTshirtSize","breakpoint","color","isAny","container","ease","font","isAnyNonArbitrary","leading","perspective","radius","shadow","spacing","text","tracking","classGroups","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","content","items","baseline","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","isArbitraryNumber","isArbitraryVariableFamilyName","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","isArbitraryVariableImage","isArbitraryImage","from","via","rounded","border","divide","outline","isArbitraryVariableShadow","isArbitraryShadow","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","conflictingClassGroups","conflictingClassGroupModifiers","orderSensitiveModifiers","twMerge","createTailwindMerge","getDefaultConfig","React","jsx","React","jsx","useCallback","useState","e","useEffect","jsx","jsxs","useState","useEffect"]}