@nebutra/ui 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENSE +21 -676
  2. package/README.md +81 -86
  3. package/dist/agent/index.d.ts +119 -0
  4. package/dist/agent/index.js +135 -0
  5. package/dist/agent/index.js.map +1 -0
  6. package/dist/canonical-CrO71UPO.d.ts +4058 -0
  7. package/dist/components/index.d.ts +51 -56
  8. package/dist/components/index.js +1467 -1160
  9. package/dist/components/index.js.map +1 -1
  10. package/dist/hooks/index.d.ts +62 -15
  11. package/dist/hooks/index.js +56 -34
  12. package/dist/hooks/index.js.map +1 -1
  13. package/dist/index-CKLIGfiU.d.ts +19 -0
  14. package/dist/index-Dg4jRJV2.d.ts +57 -0
  15. package/dist/layout/index.d.ts +5 -1
  16. package/dist/layout/index.js +427 -533
  17. package/dist/layout/index.js.map +1 -1
  18. package/dist/layouts/index.js +11 -9
  19. package/dist/layouts/index.js.map +1 -1
  20. package/dist/patterns/index.d.ts +128 -2
  21. package/dist/patterns/index.js +1478 -786
  22. package/dist/patterns/index.js.map +1 -1
  23. package/dist/primitives/canonical.d.ts +25 -0
  24. package/dist/primitives/canonical.js +11903 -0
  25. package/dist/primitives/canonical.js.map +1 -0
  26. package/dist/primitives/index.d.ts +577 -3545
  27. package/dist/primitives/index.js +8002 -6159
  28. package/dist/primitives/index.js.map +1 -1
  29. package/dist/shared/animation/css/index.d.ts +1 -0
  30. package/dist/shared/animation/css/index.js +14 -0
  31. package/dist/shared/animation/css/index.js.map +1 -0
  32. package/dist/shared/animation/index.d.ts +6 -0
  33. package/dist/shared/animation/index.js +272 -0
  34. package/dist/shared/animation/index.js.map +1 -0
  35. package/dist/shared/animation/motion/index.d.ts +4 -0
  36. package/dist/shared/animation/motion/index.js +205 -0
  37. package/dist/shared/animation/motion/index.js.map +1 -0
  38. package/dist/styles/brand-override.css +11 -11
  39. package/dist/tailwind.preset.d.ts +10 -10
  40. package/dist/tailwind.preset.js +7 -4
  41. package/dist/tailwind.preset.js.map +1 -1
  42. package/dist/theme/index.d.ts +2 -2
  43. package/dist/tokens-EAC6uPem.d.ts +302 -0
  44. package/dist/typography/fonts.css +31 -12
  45. package/dist/typography/index.d.ts +27 -27
  46. package/dist/typography/index.js +24 -4
  47. package/dist/typography/index.js.map +1 -1
  48. package/dist/utils/index.d.ts +36 -14
  49. package/dist/utils/index.js +44 -10
  50. package/dist/utils/index.js.map +1 -1
  51. package/package.json +38 -12
  52. package/src/styles/brand-override.css +61 -0
  53. package/src/styles/preset.css +29 -0
  54. package/src/styles/sources.css +27 -0
  55. package/src/typography/fonts.css +129 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/utils/primitive-props.ts","../../src/primitives/accordion.tsx","../../src/primitives/alert.tsx","../../src/tokens/primitive.ts","../../src/tokens/shadows.ts","../../src/tokens/components/overlay.ts","../../src/primitives/button-variants.ts","../../src/primitives/alert-dialog.tsx","../../src/tokens/motion.ts","../../src/primitives/animate-in.tsx","../../src/primitives/aspect-ratio.tsx","../../src/tokens/components/avatar.ts","../../src/primitives/avatar.tsx","../../src/primitives/badge.tsx","../../src/utils/slot.tsx","../../src/primitives/breadcrumb.tsx","../../src/primitives/button.tsx","../../src/primitives/card.tsx","../../src/primitives/checkbox-group.tsx","../../src/primitives/code-block-language-icon.tsx","../../src/primitives/overlay.ts","../../src/primitives/dropdown-menu.tsx","../../src/primitives/code-block.tsx","../../src/primitives/collapse.tsx","../../src/primitives/command-styles.ts","../../src/primitives/dialog.tsx","../../src/primitives/kbd.tsx","../../src/primitives/command.tsx","../../src/primitives/label.tsx","../../src/primitives/popover.tsx","../../src/primitives/combobox.tsx","../../src/primitives/context-menu.tsx","../../src/primitives/tooltip.tsx","../../src/primitives/copy-button.tsx","../../src/tokens/components/context-card.ts","../../src/primitives/context-card.tsx","../../src/primitives/description.tsx","../../src/primitives/drawer.tsx","../../src/tokens/components/empty-state.ts","../../src/primitives/empty-state.tsx","../../src/primitives/error-message.tsx","../../src/primitives/field.tsx","../../src/primitives/form.tsx","../../src/primitives/gauge.tsx","../../src/primitives/hover-card-content.tsx","../../src/primitives/hover-card-trigger.tsx","../../src/primitives/hover-card.tsx","../../src/tokens/components/input.ts","../../src/primitives/form-control.ts","../../src/primitives/input.tsx","../../src/primitives/input-otp.tsx","../../src/primitives/layout.ts","../../src/primitives/loading-dots.tsx","../../src/primitives/menu.tsx","../../src/primitives/menubar.tsx","../../src/primitives/modal.tsx","../../src/tokens/components/multi-select.ts","../../src/primitives/multi-select.tsx","../../src/primitives/navigation-menu-variants.ts","../../src/primitives/navigation-menu.tsx","../../src/tokens/components/button.ts","../../src/tokens/components/note.ts","../../src/tokens/components/pagination.ts","../../src/tokens/components/radio.ts","../../src/tokens/components/scroller.ts","../../src/tokens/components/select.ts","../../src/tokens/components/sheet.ts","../../src/tokens/components/show-more.ts","../../src/tokens/components/slider.ts","../../src/tokens/components/spinner.ts","../../src/tokens/components/split-button.ts","../../src/tokens/components/switch.ts","../../src/tokens/components/table.ts","../../src/tokens/components/tabs.ts","../../src/tokens/components/textarea.ts","../../src/tokens/components/theme-switcher.ts","../../src/tokens/components/theme-toggle.ts","../../src/tokens/components/toast.ts","../../src/tokens/components/toggle.ts","../../src/primitives/note.tsx","../../src/primitives/pagination.tsx","../../src/primitives/progress.tsx","../../src/primitives/project-banner.tsx","../../src/primitives/radio-group.tsx","../../src/primitives/resizable.tsx","../../src/primitives/scroller.tsx","../../src/primitives/select.tsx","../../src/primitives/separator.tsx","../../src/primitives/sheet.tsx","../../src/primitives/show-more.tsx","../../src/primitives/skeleton.tsx","../../src/primitives/slider.tsx","../../src/primitives/spinner.tsx","../../src/primitives/split-button.tsx","../../src/primitives/stack.tsx","../../src/primitives/status-dot.tsx","../../src/primitives/switch.tsx","../../src/primitives/table.tsx","../../src/primitives/tabs.tsx","../../src/primitives/textarea.tsx","../../src/primitives/theme-switcher.tsx","../../src/hooks/use-reduced-motion.ts","../../src/primitives/theme-toggle.tsx","../../src/primitives/toaster.tsx","../../src/primitives/toggle.tsx","../../src/primitives/toggle-group-variants.ts","../../src/primitives/toggle-group.tsx","../../src/primitives/tree.tsx"],"names":["BaseAccordion","jsxs","jsx","X","cva","BaseAlertDialog","React","animate","React2","BaseAvatar","Fragment","React3","React4","React5","isValidElement","React7","BaseMenu","ChevronRight","Circle","FileCode","useState","Check","SyntaxHighlighter","CollapseGroup","useId","useMemo","Children","cloneElement","Collapse","BaseDialog","React8","React9","CommandPrimitive","Search","React10","PopoverPrimitive","React11","React12","ChevronsUpDown","BaseContextMenu","React13","BaseTooltip","React14","React15","Copy","React16","BasePopover","Description","Info","React17","DrawerPrimitive","React18","AlertCircle","ExternalLink","React19","colors","React20","React21","React22","BaseInput","Loader2","React23","createContext","use","MenuButton","ChevronDown","Menu","MenuItem","MenuLink","MenuItemLocked","MenuSection","assignRef","useEffect","ModalBody","ModalHeader","ModalTitle","ModalSubtitle","ModalInset","ModalActions","ModalAction","React25","composeRefs","React26","WarningIcon","Label","GEIST_TYPE_TO_VARIANT","Progress","BaseProgress","useRef","GripVertical","toCssLength","ChevronLeft","React27","React28","BaseSelect","Separator","BaseSeparator","React29","XIcon","React30","React31","Spinner","React32","StatusDot","React33","SwitchRoot","SwitchControl","BaseTabs","React34","joinDescriptionIds","isInvalid","React35","Monitor","React36","useReducedMotion","React37","SonnerToaster","React38","sonnerToast","React39","React40","useCallback","Folder","File"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;;;ACqCO,SAAS,cAEd,SAAA,EAGA;AACA,EAAA,OAAO,SAAA;AACT;ACjCA,IAAM,SAAA,GAAY,aAAA,CAAqBA,WAAA,CAAc,IAAI,CAAA;AACzD,IAAM,WAAA,GAAc,aAAA,CAAoBA,WAAA,CAAc,MAAM,CAAA;AAC5D,IAAM,YAAA,GAAe,aAAA,CAAwBA,WAAA,CAAc,OAAO,CAAA;AAClE,IAAM,YAAA,GAAe,aAAA,CAAqBA,WAAA,CAAc,KAAK,CAAA;AAM7D,IAAM,YAAYA,WAAA,CAAc;AAMhC,IAAM,gBAAgB,CAAC;AAAA,EACrB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE,GAAA;AAAA,EAAC,SAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA;AAAA,IACnE,GAAG;AAAA;AACN;AAEF,aAAA,CAAc,WAAA,GAAc,eAAA;AAM5B,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAIE,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,MAAA,EACrB,QAAA,kBAAA,IAAA;AAAA,EAAC,YAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,8QAAA;AAAA,MACA,IAAA,KAAS,UAAU,gBAAA,GAAmB,kBAAA;AAAA,MACtC;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACD,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,4EAAA;AAAA,YACA,IAAA,KAAS,UAAU,UAAA,GAAa;AAAA;AAClC;AAAA;AACF;AAAA;AACF,CAAA,EACF;AAEF,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAM/B,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,WAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAUE,GAAA;AAAA,EAAC,YAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACC,GAAI,WAAA,GAAc,EAAE,WAAA,EAAa,IAAA,KAAS,EAAC;AAAA,IAC5C,SAAA,EAAU,8LAAA;AAAA,IACT,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,KAAS,UAAU,aAAA,GAAgB,WAAA,EAAa,SAAS,CAAA,EAAI,QAAA,EAAS;AAAA;AAC3F;AAEF,gBAAA,CAAiB,WAAA,GAAc,kBAAA;ACrG/B,IAAM,aAAA,GAAgB,IAAI,8DAAA,EAAgE;AAAA,EACxF,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,SAAA,EAAW,EAAA;AAAA,MACX,OAAA,EAAS,EAAA;AAAA,MACT,WAAA,EAAa,EAAA;AAAA,MACb,OAAA,EAAS,EAAA;AAAA,MACT,IAAA,EAAM,EAAA;AAAA,MACN,IAAA,EAAM,EAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,EAAA;AAAA,MACT,WAAA,EAAa,EAAA;AAAA,MACb,OAAA,EAAS,EAAA;AAAA,MACT,IAAA,EAAM,EAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA,EAAY;AAAA,MACV,KAAA,EAAO,EAAA;AAAA,MACP,OAAA,EAAS,EAAA;AAAA,MACT,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,qJAAA;AAAA,MACJ,EAAA,EAAI,uJAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,gBAAA,EAAkB;AAAA;AAAA,IAEhB;AAAA,MACE,OAAA,EAAS,WAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,OAAA,EAAS,aAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,WAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,aAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,WAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,aAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,SAAA;AAAA,MACT,UAAA,EAAY,OAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,IAAA,EAAM,aAAA;AAAA,MACN,SAAA,EAAW;AAAA,KACb;AAAA,IACA;AAAA,MACE,OAAA,EAAS,MAAA;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,SAAA,EAAW;AAAA;AACb,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,WAAA;AAAA,IACT,UAAA,EAAY,OAAA;AAAA,IACZ,IAAA,EAAM;AAAA;AAEV,CAAC;AAmHD,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,uBACEC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,MAAM,IAAA,EAAM,UAAA,EAAY,CAAA,EAAG,SAAS,CAAA;AAAA,MAC1E,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,yBACCC,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,OAAA;AAAA,YACT,YAAA,EAAW,SAAA;AAAA,YACX,WAAA,EAAU,aAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,0FAAA;AAAA,cACA,iDAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,QAAA,kBAAAA,GAAAA,CAACC,KAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AACxB;AAAA;AAAA,GAEJ;AAEJ;AAKA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoB;AAC5D,EAAA,uBACED,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,aAAA,EAAc,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAE7F;AAKA,SAAS,UAAU,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,OAAM,EAAmB;AACpE,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,YAAA,EAAa,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,KAAA,EACnE,QAAA,EACH,CAAA;AAEJ;AAKA,SAAS,aAAa,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,OAAM,EAAsB;AAC1E,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,eAAA,EAAgB,SAAA,EAAW,EAAA,CAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAC1D,QAAA,EACH,CAAA;AAEJ;AAKA,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA0B;AACxE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,0CAAA,EAA4C,SAAS,CAAA;AAAA,MAClE,GAAG;AAAA;AAAA,GACN;AAEJ;AAKA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAsB;AAChE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,SAAS,CAAA;AAAA,MAC7E,GAAG;AAAA;AAAA,GACN;AAEJ;CC/X+B;AAAA;AAAA,EAE7B,MAAA,EAAQ,MAAA,CAAO,OAAA,CAAQ,EAAE,CAAA;AAAA,EACzB,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC3B,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA;AAAA,EAG3B,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AAAA,EACxB,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA,EAC1B,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA;AAAA;AAAA,EAG1B,SAAA,EAAW,MAAA,CAAO,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC5B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC9B,UAAA,EAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAAA,EAW9B,OAAO,MAAA,CAAO,KAAA;AAAA,EACd,OAAO,MAAA,CAAO;AAChB;CAMkC;AAAA;AAAA,EAEhC,OAAA,EAAS,OAAO,QAAA,CAAS,OAAA;AAAA;AAAA,EAEzB,OAAA,EAAS,OAAO,QAAA,CAAS,cAAA;AAAA;AAAA,EAEzB,QAAA,EAAU,OAAO,QAAA,CAAS,eAAA;AAAA;AAAA,EAE1B,MAAA,EAAQ,OAAO,QAAA,CAAS,aAG1B;AAMO,IAAM,gBAAA,GAAmB;AAAA,EAE9B,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAqBO,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI,EAAA;AAAA;AAAA,EAEJ,IAAA,EAAM,EAAA;AAAA,EACN,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EAEJ,KAAA,EAAO;AACT,CAAA;AAMO,IAAM,eAAA,GAAkB;AAAA,EAE7B,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,KAAA,EAAO,EAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAMO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,IAAA,EAAM,EAAA;AAAA,EACN,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAIN,CAAA;AAMO,IAAM,mBAAA,GAAsB;AAAA,EAEjC,MAAA,EAAQ,GAAA;AAAA,EACR,MAAA,EAAQ,GAAA;AAAA,EACR,QAAA,EAAU,GAEZ,CAAA;AA2BO,IAAM,eAAA,GAAkB;AAAA,EAE7B,EAAA,EAAI,+BAAA;AAAA,EACJ,EAAA,EAAI,kEAAA;AAAA,EACJ,EAAA,EAAI,oEAAA;AAAA,EACJ,EAAA,EAAI,qEAGN,CAAA;AAWO,IAAM,mBAAA,GAAsB;AAAA,EACjC,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,GAAA;AAAA;AAAA,IACP,IAAA,EAAM,GAAA;AAAA;AAAA,IACN,MAAA,EAAQ,GAAA;AAAA;AAAA,IACR,SAAA,EAAW;AAAA;AAAA,GACb;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,UAAA;AAAA,IAET,KAAA,EAAO;AAAA;AAEX,CAAA;AAIO,IAAM,kBAAA,GAAqB;AAAA,EAChC,KAAA,EAAO,CAAA;AAAA;AAAA,EACP,MAAA,EAAQ;AAAA;AACV,CAAA;;;AC/MO,IAAM,aAAA,GAAgB;AAAA,EAI3B,EAAA,EAAI,WAAA;AAAA,EAEJ,EAAA,EAAI,WAAA;AAAA,EACJ,KAAA,EAAO,YAGT,CAAA;;;AC/BA,IAAM,yBAAA,GACJ,uFAAA;AAEK,IAAM,aAAA,GAAgB;AAAA,EAC3B,QAAA,EAAU,IAAA;AAAA,EACV,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS,IAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;AAEO,IAAM,aAAA,GAAgB;AAAA,EAO3B,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,IAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO,OAAA;AAAA,IACnC,cAAA,EAAgB,oBAAoB,QAAA,CAAS,IAAA;AAAA,IAC7C,eAAA,EAAiB,oBAAoB,QAAA,CAAS;AAAA,GAGlD,CAAA;AAEO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,SAAA,EAAW,yBAAA;AAAA,EACX,QAAA,EACE,+NAAA;AAAA,EACF,YAAA,EAAc;AAAA,IACZ,qFAAA;AAAA,IACA,+EAAA;AAAA,IACA,4BAAA;AAAA,IACA,cAAc,KAAK,CAAA;AAAA,IACnB,cAAA;AAAA,IACA,sGAAA;AAAA,IACA,mHAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EAUV,WAAA,EAAa;AAAA,IACX,wIAAA;AAAA,IACA,aAAA,CAAc,EAAA;AAAA,IACd,mHAAA;AAAA,IACA,2HAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,aAAA,EAAe;AAAA,IACb,kGAAA;AAAA,IACA,uHAAA;AAAA,IACA,oDAAA;AAAA,IACA,sGAAA;AAAA,IACA,mHAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,qBAAA,EAAuB;AAAA,IACrB,oIAAA;AAAA,IACA,aAAA,CAAc,EAAA;AAAA,IACd,mHAAA;AAAA,IACA,2HAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,cAAA,EAAgB;AAAA,IACd,oHAAA;AAAA,IACA,aAAA,CAAc,EAAA;AAAA,IACd,mHAAA;AAAA,IACA,8FAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,cAAA,EAAgB;AAAA,IACd,+IAAA;AAAA,IACA,aAAA,CAAc,EAAA;AAAA,IACd,sGAAA;AAAA,IACA,mHAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,aAAA,EAAe;AAAA,IACb,8FAAA;AAAA,IACA,4GAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,YAAA,EAAc;AAAA,IACZ,oIAAA;AAAA,IACA,mHAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,WAAA,EAAa,uFAAuF,yBAAyB,CAAA,uNAAA;AAC/H,CAAA;ACxGO,IAAM,cAAA,GAAiBE,GAAAA;AAAA,EAC5B;AAAA,IACE,iEAAA;AAAA,IACA,sDAAA;AAAA,IACA,gGAAA;AAAA,IACA,2CAAA;AAAA,IACA,qGAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA;AAAA,QAEP,OAAA,EAAS,mBAAA;AAAA,QACT,GAAA,EAAK,iOAAA;AAAA,QACL,WAAA,EAAa,oEAAA;AAAA,QACb,OAAA,EAAS,gFAAA;AAAA,QACT,SAAA,EAAW,8DAAA;AAAA,QACX,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM,iDAAA;AAAA,QACN,QAAA,EACE,gIAAA;AAAA,QACF,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM,6HAAA;AAAA,QACN,EAAA,EAAI,qHAAA;AAAA,QACJ,OAAA,EACE,qHAAA;AAAA,QACF,EAAA,EAAI,kHAAA;AAAA,QACJ,IAAA,EAAM;AAAA,OACR;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,MAAA,EAAQ,EAAA;AAAA,QACR,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,WAAW,4CAAA,EAA6C;AAAA,MACzF,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,IAAA,EAAM,WAAW,wCAAA,EAAyC;AAAA,MACnF,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,WAAW,0CAAA,EAA2C;AAAA,MAC1F,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,IAAA,EAAM,WAAW,wCAAA,EAAyC;AAAA,MACnF;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,IAAA,EAAM,MAAA;AAAA,QACN,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,IAAA,EAAM,IAAA;AAAA,QACN,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,IAAA,EAAM,SAAA;AAAA,QACN,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,KAAA,EAAO,QAAA;AAAA,QACP,IAAA,EAAM,IAAA;AAAA,QACN,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT;AAEJ;ACnEA,IAAM,cAAcC,aAAA,CAAgB;AACpC,IAAM,oBAAoBA,aAAA,CAAgB;AAE1C,IAAM,qBAAqB,CAAC;AAAA,EAC1B,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,IAAI,OAAA,IAAiBC,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACEJ,GAAAA;AAAA,MAACG,aAAA,CAAgB,OAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACEH,IAACG,aAAA,CAAgB,OAAA,EAAhB,EAAwB,GAAA,EAAW,GAAG,OACpC,QAAA,EACH,CAAA;AAEJ;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,IAAM,qBAAqB,CAAC;AAAA,EAC1B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEH,GAAAA;AAAA,EAACG,aAAA,CAAgB,QAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iBAAA,CAAkB,QAAA,EAAU,SAAS,CAAA;AAAA,IACnD,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,QAAA,EAAU,GAAG,KAAA,EAAM;AAAA,IACjD,GAAG;AAAA;AACN;AAEF,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,IAAM,qBAAqB,CAAC;AAAA,EAC1B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEJ,KAAC,iBAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAC,IAAC,kBAAA,EAAA,EAAmB,CAAA;AAAA,kBACpBA,GAAAA;AAAA,IAACG,aAAA,CAAgB,KAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,iBAAA,CAAkB,YAAA,EAAc,SAAS,CAAA;AAAA,MACvD,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,KAAA,EAAO,GAAG,KAAA,EAAM;AAAA,MAC9C,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA;AACH,CAAA,EACF;AAEF,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,IAAM,oBAAoB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBAC/CH,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEhG,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,oBAAoB,CAAC,EAAE,WAAW,GAAG,KAAA,uBACzCA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA,CAAG,+DAAA,EAAiE,SAAS,CAAA;AAAA,IACvF,GAAG;AAAA;AACN;AAEF,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA,CAACG,aAAA,CAAgB,KAAA,EAAhB,EAAsB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEjG,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,IAAM,yBAAyB,CAAC;AAAA,EAC9B,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEH,GAAAA;AAAA,EAACG,aAAA,CAAgB,WAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN;AAEF,sBAAA,CAAuB,WAAA,GAAc,wBAAA;AAGrC,IAAM,oBAAoB,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,IAAI,OAAA,IAAiBC,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACEJ,GAAAA;AAAA,MAACG,aAAA,CAAgB,KAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,SAAA,EAAW,GAAG,SAAS,CAAA;AAAA,QACvB,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACEH,GAAAA,CAACG,aAAA,CAAgB,KAAA,EAAhB,EAAsB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,cAAA,EAAe,EAAG,SAAS,CAAA,EAAI,GAAG,OAC9E,QAAA,EACH,CAAA;AAEJ;AACA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAGhC,IAAM,oBAAoB,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,IAAI,OAAA,IAAiBC,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACEJ,GAAAA;AAAA,MAACG,aAAA,CAAgB,KAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,SAAA,EAAW,GAAG,SAAS,CAAA;AAAA,QACvB,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACEH,GAAAA;AAAA,IAACG,aAAA,CAAgB,KAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,SAAA,EAAW,CAAA,EAAG,cAAA,EAAgB,SAAS,CAAA;AAAA,MAC9E,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AACA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;;ACvJzB,IAAM,eAAA,GAAkB;AAAA,EAEtB;AAAA,EAEP,IAAA,EAAM,GAAA;AAAA;AAAA,EAEN,MAAA,EAAQ,GAAA;AAAA;AAAA,EAER,SAAA,EAAW;AACb,CAAA;AAQO,IAAM,OAAA,GAAU;AAAA,EAGrB,OAAA,EAAS,CAAC,CAAA,EAAG,CAAA,EAAG,KAAK,CAAC,CAAA;AAAA,EACtB,SAAA,EAAW,CAAC,GAAA,EAAK,CAAA,EAAG,KAAK,CAAC,CAG5B,CAAA;AAkCO,IAAM,cAAA,GAA2C;AAAA,EACtD,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,EAAA,EAAG;AAAA,IAC7B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,IAC5B,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,EAAA;AAAG,GAC5B;AAAA,EAWA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,IAAA,EAAK;AAAA,IACnC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,IAChC,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,IAAA;AAAK,GAYpC,CAAA;AAyCO,IAAM,iBAAA,GAAkE;AAAA,EAC7E,IAAA,EAAM;AAAA,IACJ,SAAS,EAAC;AAAA,IACV,OAAA,EAAS,EAAE,UAAA,EAAY,EAAE,iBAAiB,IAAA,EAAM,aAAA,EAAe,KAAI;AAAE,GACvE;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAS,EAAC;AAAA,IACV,OAAA,EAAS,EAAE,UAAA,EAAY,EAAE,iBAAiB,GAAA,EAAK,aAAA,EAAe,KAAI;AAAE,GACtE;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAS,EAAC;AAAA,IACV,OAAA,EAAS,EAAE,UAAA,EAAY,EAAE,iBAAiB,IAAA,EAAM,aAAA,EAAe,KAAI;AAAE;AAEzE,CAAA;AAcO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,QAAQ,QAAA,EAE9B,CAAA;ACtKA,IAAM,aAAA,GAAgB;AAAA,EACpB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,EACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,EACtB,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,EACnB,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA;AAC1B,CAAA;AAMA,IAAM,OAAA,GAAU;AAAA;AAAA,EAEd,MAAA,EAAQ;AAAA,IACN,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,YAAY,MAAA,CAAO;AAAA,GACrB;AAAA;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,YAAY,IAAA,CAAK;AAAA,GACnB;AAAA;AAAA,EAEA,IAAA,EAAM,aAAA;AAAA;AAAA,EAEN,QAAQ,cAAA,CAAe,QAAA;AAAA;AAAA,EAEvB,OAAO,cAAA,CAAe;AACxB,CAAA;AAUA,SAAS,UAAU,KAAA,EAAuB;AACxC,EAAA,uBACEH,GAAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAU,YAAA,EACpB,QAAA,kBAAAA,GAAAA,CAAC,CAAA,CAAE,GAAA,EAAF,EAAO,GAAG,KAAA,EAAO,CAAA,EACpB,CAAA;AAEJ;AA6BO,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,GAAS,QAAA,EAAU,KAAA,GAAQ,GAAG,QAAA,EAAU,MAAA,GAAS,KAAA,EAAO,SAAA,EAAU,GAAI,KAAA;AACxF,EAAA,MAAM,eAAe,gBAAA,EAAuB;AAC5C,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,MAAM,CAAA,IAAK,OAAA,CAAQ,MAAA;AAGxC,EAAA,MAAM,UAAW,YAAA,GAAe,EAAE,OAAA,EAAS,CAAA,KAAM,IAAA,CAAK,OAAA;AACtD,EAAA,MAAMK,WAAW,YAAA,GAAe,EAAE,OAAA,EAAS,CAAA,KAAM,IAAA,CAAK,OAAA;AACtD,EAAA,MAAM,IAAA,GAAQ,eAAe,EAAE,OAAA,EAAS,GAAE,GAAI,MAAA,IAAU,IAAA,GAAO,IAAA,CAAK,IAAA,GAAO,MAAA;AAG3E,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,GAAI,YAAA,GAAe,EAAE,QAAA,EAAU,IAAA,KAAS,IAAA,CAAK,UAAA;AAAA,IAC7C,KAAA;AAAA,IACA,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC,GACjC;AAEA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,uBACEL,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAaK,QAAAA;AAAA,QACZ,GAAI,IAAA,IAAQ,EAAE,IAAA,EAAK;AAAA,QACpB,UAAA;AAAA,QACA,UAAU,gBAAA,CAAiB,IAAA;AAAA,QAE1B;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEL,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA,EAASK,QAAAA;AAAA,MACR,GAAI,IAAA,IAAQ,EAAE,IAAA,EAAK;AAAA,MACpB,UAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAsBO,SAAS,eAAe,KAAA,EAA4B;AACzD,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,GAAU,UAAU,MAAA,GAAS,KAAA,EAAO,WAAU,GAAI,KAAA;AACpE,EAAA,MAAM,eAAe,gBAAA,EAAuB;AAC5C,EAAA,MAAM,SAAA,GAAY,kBAAkB,OAAO,CAAA;AAE3C,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,uBAAOL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAuB,QAAA,EAAS,CAAA;AAAA,EAC9C;AAEA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,uBACEA,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAA;AAAA,QACA,OAAA,EAAQ,SAAA;AAAA,QACR,WAAA,EAAY,SAAA;AAAA,QACZ,UAAU,gBAAA,CAAiB,IAAA;AAAA,QAC3B,QAAA,EAAU,SAAA;AAAA,QAET;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAsB,OAAA,EAAQ,WAAU,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAU,SAAA,EAC5E,QAAA,EACH,CAAA;AAEJ;ACjLA,IAAM,cAAc,CAAC;AAAA,EACnB,KAAA,GAAQ,CAAA;AAAA,EACR,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,IAC1C,OAAO,EAAE,WAAA,EAAa,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,KAAA,EAAM;AAAA,IAC1C,GAAG,KAAA;AAAA,IAEH;AAAA;AACH;AAGF,WAAA,CAAY,WAAA,GAAc,aAAA;;;AClBnB,IAAM,YAAA,GAAe;AAAA,EAC1B,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI;AAAA,MACF,SAAA,EAAW,EAAA;AAAA,MACX,QAAA,EAAU,CAAA;AAAA,MACV,QAAA,EAAU,EAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA,EAAA,EAAI;AAAA,MACF,SAAA,EAAW,EAAA;AAAA,MACX,UAAU,iBAAA,CAAkB,EAAA;AAAA;AAAA,MAC5B,QAAA,EAAU,EAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA,EAAA,EAAI;AAAA,MACF,SAAA,EAAW,EAAA;AAAA,MACX,UAAU,iBAAA,CAAkB,EAAA;AAAA;AAAA,MAC5B,QAAA,EAAU,EAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA,EAAA,EAAI;AAAA,MACF,SAAA,EAAW,EAAA;AAAA,MACX,UAAU,iBAAA,CAAkB,EAAA;AAAA;AAAA,MAC5B,QAAA,EAAU,EAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA,EAAA,EAAI;AAAA,MACF,SAAA,EAAW,EAAA;AAAA,MACX,QAAA,EAAU,EAAA;AAAA,MACV,QAAA,EAAU,EAAA;AAAA,MACV,SAAA,EAAW;AAAA;AACb,GAQJ,CAAA;ACvCA,IAAM,WAAA,GAAc;AAAA,EAClB,EAAA,EAAI,EAAE,IAAA,EAAM,SAAA,EAAW,UAAU,YAAA,EAAa;AAAA,EAC9C,EAAA,EAAI,EAAE,IAAA,EAAM,SAAA,EAAW,UAAU,SAAA,EAAU;AAAA,EAC3C,EAAA,EAAI,EAAE,IAAA,EAAM,WAAA,EAAa,UAAU,SAAA,EAAU;AAAA,EAC7C,EAAA,EAAI,EAAE,IAAA,EAAM,WAAA,EAAa,UAAU,SAAA,EAAU;AAAA,EAC7C,EAAA,EAAI,EAAE,IAAA,EAAM,WAAA,EAAa,UAAU,UAAA;AACrC,CAAA;AAEA,IAAM,kBAAA,GAAqB,+CAAA;AAO3B,IAAM,aAAA,GAAsBM,sBAAyC,IAAI,CAAA;AAEzE,SAAS,aAAa,IAAA,EAA4C;AAChE,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA;AACzB;AAEO,SAAS,gBAAgB,IAAA,EAA0B;AACxD,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA;AACrC,EAAA,OAAO,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,CAAE,SAAA;AACjC;AAEA,SAAS,mBAAmB,IAAA,EAA0B;AACpD,EAAA,OAAO,aAAa,IAAI,CAAA,GAAI,WAAA,CAAY,IAAI,EAAE,IAAA,GAAO,kBAAA;AACvD;AAEA,SAAS,uBAAuB,IAAA,EAA0B;AACxD,EAAA,OAAO,aAAa,IAAI,CAAA,GAAI,WAAA,CAAY,IAAI,EAAE,QAAA,GAAW,gCAAA;AAC3D;AAEA,SAAS,cAAA,CACP,MACA,KAAA,EACiC;AACjC,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,KAAA;AACrC,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,IACxB,oBAAA,EAAsB,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,KAAK,KAAA,CAAM,IAAA,GAAO,KAAK,CAAC,CAAC,CAAA,EAAA,CAAA;AAAA,IAC/D,GAAG;AAAA,GACL;AACF;AAEO,SAAS,kBAAkB,KAAA,EAAuB;AACvD,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AAErB,EAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA,CAAE,OAAO,OAAO,CAAA;AACtD,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA,EAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,WAAA,EAAY;AAExE,EAAA,OAAO,MACJ,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CACV,IAAI,CAAC,IAAA,KAAS,IAAA,CAAK,CAAC,KAAK,EAAE,CAAA,CAC3B,IAAA,CAAK,EAAE,EACP,WAAA,EAAY;AACjB;AAEA,SAAS,eAAA,CAAgB,UAAkB,IAAA,EAA0B;AACnE,EAAA,OAAO,sBAAsB,QAAQ,CAAA,UAAA,EAAa,eAAA,CAAgB,IAAI,IAAI,CAAC,CAAA,CAAA;AAC7E;AAEA,SAAS,oBAAA,CAAqB;AAAA,EAC5B,GAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAIW;AACT,EAAA,OAAO,KAAA,IAAS,OAAO,QAAA,IAAY,QAAA;AACrC;AA2BA,IAAM,SAAS,CAAC;AAAA,EACd,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,GAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAsE;AACpE,EAAA,MAAM,QAAQ,oBAAA,CAAqB,EAAE,GAAA,EAAK,KAAA,EAAO,UAAU,CAAA;AAC3D,EAAA,MAAM,WAAW,MAAA,IAAU,iBAAA,CAAkB,KAAA,IAAS,QAAA,IAAY,OAAO,EAAE,CAAA;AAC3E,EAAA,MAAM,YAAA,GAAe,SAAS,GAAA,IAAO,QAAA;AACrC,EAAA,MAAM,YAAA,GACJ,iBAAiB,MAAA,GAAY,EAAE,MAAK,GAAI,EAAE,IAAA,EAAM,KAAA,EAAO,YAAA,EAAa;AACtE,EAAA,MAAM,8BAAA,GACJ,aAAa,MAAA,KAAc,GAAA,KAAQ,UAAa,WAAA,KAAgB,IAAA,IAAQ,SAAS,MAAA,GAAS,CAAA,CAAA;AAE5F,EAAA,uBACEN,GAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,cAC7B,QAAA,kBAAAA,GAAAA;AAAA,IAACO,QAAA,CAAW,IAAA;AAAA,IAAX;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,8DAAA;AAAA,QACA,mBAAmB,IAAI,CAAA;AAAA,QACvB;AAAA,OACF;AAAA,MACA,KAAA,EAAO,cAAA,CAAe,IAAA,EAAM,KAAK,CAAA;AAAA,MAChC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,8BAAA,mBACCR,IAAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,GAAA,oBAAOC,GAAAA,CAAC,WAAA,EAAA,EAAY,GAAA,EAAU,KAAK,KAAA,EAAO,CAAA;AAAA,wBAC3CA,GAAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAY,OAAO,eAAA,EAChC,QAAA,EAAA,WAAA,mBAAcA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,gBAAA,EAAc,IAAU,QAAA,EACnE;AAAA,OAAA,EACF,CAAA,GAEA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AAIrB,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA;AAAA,EAACO,QAAA,CAAW,KAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0CAAA,EAA4C,SAAS,CAAA;AAAA,IAClE,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAc,aAAA;AAS1B,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA8E;AAC5E,EAAA,MAAM,OAAA,GAAgBD,YAAI,aAAa,CAAA;AACvC,EAAA,MAAM,YAAA,GAAe,IAAA,IAAQ,OAAA,EAAS,IAAA,IAAQ,IAAA;AAC9C,EAAA,MAAM,aAAA,GACJ,SAAA,KACC,OAAO,QAAA,KAAa,QAAA,IAAY,QAAA,CAAS,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,GACtD,CAAA,sBAAA,EAAyB,QAAQ,KACjC,OAAA,EAAS,KAAA,CAAA;AAEf,EAAA,uBACEN,GAAAA;AAAA,IAACO,QAAA,CAAW,QAAA;AAAA,IAAX;AAAA,MACC,GAAA;AAAA,MACA,YAAA,EAAY,aAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,wGAAA;AAAA,QACA,uBAAuB,YAAY,CAAA;AAAA,QACnC;AAAA,OACF;AAAA,MACA,KAAA,EAAO,cAAA,CAAe,YAAA,EAAc,KAAK,CAAA;AAAA,MACxC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AA2B7B,SAAS,kBAAA,CAAmB,MAAuB,IAAA,EAA6C;AAC9F,EAAA,MAAM,QAAQ,oBAAA,CAAqB;AAAA,IACjC,KAAK,IAAA,CAAK,GAAA;AAAA,IACV,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,UAAU,IAAA,CAAK;AAAA,GAChB,CAAA;AACD,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,KAAA,EAAO,KAAK,KAAA,IAAS,KAAA;AAAA,IACrB,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,iBAAA,CAAkB,KAAK,CAAA;AAAA,IAClD,QAAA,EAAU,KAAK,QAAA,IAAY,EAAA;AAAA,IAC3B,GAAA,EAAK,KAAK,GAAA,KAAQ,IAAA,CAAK,WAAW,eAAA,CAAgB,IAAA,CAAK,QAAA,EAAU,IAAI,CAAA,GAAI,EAAA;AAAA,GAC3E;AACF;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA;AAAA,EACA,YAAA,EAAc;AAChB,CAAA,EAAqB;AACnB,EAAA,MAAM,WAAA,GAAc,KAAA,IAAS,OAAA,IAAW,EAAC;AACzC,EAAA,MAAM,cAAc,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAA,IAAO,SAAS,CAAC,CAAA;AACjD,EAAA,MAAM,eAAA,GAAkB,YAAY,GAAA,CAAI,CAAC,SAAS,kBAAA,CAAmB,IAAA,EAAM,IAAI,CAAC,CAAA;AAKhF,EAAA,MAAM,IAAI,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,MAAA,EAAQ,QAAQ,MAAM,CAAA;AACzD,EAAA,MAAM,eACJ,eAAA,CAAgB,MAAA,IAAU,WAAA,GAAc,WAAA,GAAc,IAAI,eAAA,CAAgB,MAAA;AAC5E,EAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,KAAA,CAAM,CAAA,EAAG,YAAY,CAAA;AACrD,EAAA,MAAM,WAAW,eAAA,CAAgB,MAAA,KAAW,cAAc,eAAA,CAAgB,WAAA,GAAc,CAAC,CAAA,GAAI,IAAA;AAC7F,EAAA,MAAM,gBACJ,eAAA,CAAgB,MAAA,GAAS,cAAc,eAAA,CAAgB,MAAA,GAAS,cAAc,CAAA,GAAI,CAAA;AACpF,EAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,CAAK,GAAA,CAAI,cAAc,CAAA,EAAG,CAAA,CAAE,MAAA,GAAS,CAAC,CAAC,CAAA;AACvD,EAAA,MAAM,UAAA,GACJ,SAAA,IAAa,CAAA,EAAG,eAAA,CAAgB,MAAM,IAAI,eAAA,CAAgB,MAAA,KAAW,CAAA,GAAI,QAAA,GAAW,SAAS,CAAA,CAAA;AAE/F,EAAA,uBACER,IAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,KAAA,EAAM,YAAA,EAAY,UAAA,EAAY,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EACjF,QAAA,EAAA;AAAA,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA;AAAA;AAAA,sBAElBC,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAW,GAAG,mCAAA,EAAqC,KAAA,KAAU,KAAK,OAAA,EAAS,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,UAEnF,QAAA,kBAAAD,IAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,WAAU,oCAAA,EAC3B,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,GAAA,oBAAOC,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAK,IAAA,CAAK,GAAA,EAAK,KAAI,EAAA,EAAG,CAAA;AAAA,4BAChDA,GAAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAa,eAAK,QAAA,EAAS;AAAA,WAAA,EAC7C;AAAA,SAAA;AAAA,QAPK,IAAA,CAAK;AAAA;AAQZ,KACD,CAAA;AAAA,IAGA,4BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,KAAK,GACrF,QAAA,kBAAAD,IAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,WAAU,oCAAA,EAC3B,QAAA,EAAA;AAAA,MAAA,QAAA,CAAS,GAAA,oBAAOC,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAK,QAAA,CAAS,GAAA,EAAK,KAAI,EAAA,EAAG,CAAA;AAAA,sBACxDA,GAAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAa,mBAAS,QAAA,EAAS;AAAA,KAAA,EACjD,CAAA,EACF,CAAA;AAAA,IAID,gBAAgB,CAAA,oBACfA,IAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,KAAK,GACrF,QAAA,kBAAAA,GAAAA,CAAC,UAAO,IAAA,EAAY,SAAA,EAAU,wBAC5B,QAAA,kBAAAD,IAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAA,EAAU,qEAAA;AAAA,QACX,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UACG;AAAA;AAAA;AAAA,OAEN,CAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ;AChUA,IAAM,aAAA,GAAgBG,GAAAA;AAAA,EACpB,iRAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA;AAAA;AAAA,QAGP,OAAA,EAAS,4BAAA;AAAA,QACT,SAAA,EACE,iFAAA;AAAA,QACF,WAAA,EACE,uFAAA;AAAA,QACF,OAAA,EAAS,+BAAA;AAAA,QACT,OAAA,EAAS,2EAAA;AAAA,QACT,OAAA,EAAS,2EAAA;AAAA,QACT,IAAA,EAAM,kEAAA;AAAA,QACN,KAAA,EACE,uFAAA;AAAA;AAAA,QAEF,IAAA,EAAM,6CAAA;AAAA,QACN,aAAA,EAAe,mEAAA;AAAA,QACf,IAAA,EAAM,iDAAA;AAAA,QACN,aAAA,EAAe,4DAAA;AAAA,QACf,MAAA,EAAQ,qDAAA;AAAA,QACR,eAAA,EACE,2EAAA;AAAA,QACF,KAAA,EAAO,iDAAA;AAAA,QACP,cAAA,EAAgB,4DAAA;AAAA,QAChB,GAAA,EAAK,yDAAA;AAAA,QACL,YAAA,EAAc,oEAAA;AAAA,QACd,IAAA,EAAM,+CAAA;AAAA,QACN,aAAA,EAAe,qEAAA;AAAA,QACf,KAAA,EAAO,iDAAA;AAAA,QACP,cAAA,EAAgB,4DAAA;AAAA,QAChB,IAAA,EAAM,2CAAA;AAAA,QACN,aAAA,EAAe,sDAAA;AAAA,QACf,QAAA,EAAU,4CAAA;AAAA;AAAA,QAEV,KAAA,EACE,sFAAA;AAAA,QACF,KAAA,EACE,sFAAA;AAAA,QACF,IAAA,EAAM,yGAAA;AAAA,QACN,IAAA,EAAM,mDAAA;AAAA,QACN,GAAA,EAAK,+CAAA;AAAA,QACL,KAAA,EAAO,8CAAA;AAAA,QACP,QAAA,EAAU,6EAAA;AAAA,QACV,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,qFAAA;AAAA,QACJ,EAAA,EAAI,gFAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,IAAM,WAAA,GAA2E;AAAA,EAC/E,OAAA,EAAS,uBAAA;AAAA,EACT,OAAA,EAAS,uBAAA;AAAA,EACT,IAAA,EAAM,oBAAA;AAAA,EACN,KAAA,EAAO,2BAAA;AAAA,EACP,WAAA,EAAa,2BAAA;AAAA,EACb,aAAA,EAAe,qBAAA;AAAA,EACf,cAAA,EAAgB,YAAA;AAAA,EAChB,cAAA,EAAgB,YAAA;AAAA,EAChB,YAAA,EAAc,gBAAA;AAAA,EACd,aAAA,EAAe,YAAA;AAAA,EACf,eAAA,EAAiB,yBAAA;AAAA,EACjB,aAAA,EAAe,sBAAA;AAAA,EACf,aAAA,EAAe,SAAA;AAAA,EACf,OAAA,EAAS,0BAAA;AAAA,EACT,QAAA,EAAU,0BAAA;AAAA,EACV,SAAA,EAAW,yBAAA;AAAA,EACX,OAAA,EAAS;AACX,CAAA;AAaA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,GAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,MAAM,cAAA,GAAiB,GAAG,aAAA,CAAc,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AACrE,EAAA,MAAM,gBAAgB,CAAC,KAAA,qBACrBH,IAAAA,CAAAS,UAAA,EACG,QAAA,EAAA;AAAA,IAAA,GAAA,oBACCR,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,mCAAA;AAAA,UACA,WAAA,CAAY,OAAA,IAAW,SAAS,CAAA,IAAK;AAAA;AACvC;AAAA,KACF;AAAA,IAED,IAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,6CAChC,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAGF,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,UAAA,GAAmBS,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA;AAClD,IAAA,MAAM,QAAQ,UAAA,CAAW,MAAA,KAAW,CAAA,GAAI,UAAA,CAAW,CAAC,CAAA,GAAI,IAAA;AAExD,IAAA,IAAUA,OAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG;AAC/B,MAAA,MAAM,aAAa,KAAA,CAAM,KAAA;AAIzB,MAAA,OAAaA,qBAAa,KAAA,EAAO;AAAA,QAC/B,GAAG,KAAA;AAAA,QACH,GAAG,UAAA;AAAA,QACH,WAAA,EAAa,OAAA;AAAA,QACb,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,UAAA,CAAW,SAAS,CAAA;AAAA,QAClD,OAAO,EAAE,GAAG,MAAM,KAAA,EAAO,GAAG,WAAW,KAAA,EAAM;AAAA,QAC7C,QAAA,EAAU,aAAA,CAAc,UAAA,CAAW,QAAQ;AAAA,OACP,CAAA;AAAA,IACxC;AAAA,EACF;AAEA,EAAA,uBACET,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAA,EAAU,OAAA,EAAQ,SAAA,EAAW,cAAA,EAAiB,GAAG,KAAA,EACpD,QAAA,EAAA,aAAA,CAAc,QAAQ,CAAA,EACzB,CAAA;AAEJ;ACjJO,IAAM,IAAA,GAAaU,OAAA,CAAA,UAAA;AAAA,EACxB,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,OAAO,GAAG,KAAA,IAAS,GAAA,KAAQ;AAKjD,IAAA,MAAM,UAAA,GAAmBA,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA;AAClD,IAAA,MAAM,QAAQ,UAAA,CAAW,MAAA,KAAW,CAAA,GAAI,UAAA,CAAW,CAAC,CAAA,GAAI,IAAA;AAExD,IAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,CAAOA,OAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG;AAEjD,MAAA,uBACEV,IAAC,MAAA,EAAA,EAAK,GAAA,EAAU,WAAsB,KAAA,EAAe,GAAG,OACrD,QAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,MAAM,aAAa,KAAA,CAAM,KAAA;AACzB,IAAA,MAAM,SAAA,GAAY,CAAC,IAAA,KAA6B;AAC9C,MAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,IAAI,CAAA;AAAA,WAAA,IAC9B,GAAA,MAAS,OAAA,GAAU,IAAA;AAI5B,MAAA,MAAM,WACJ,UAAA,CACA,GAAA;AACF,MAAA,IAAI,OAAO,QAAA,KAAa,UAAA,EAAY,QAAA,CAAS,IAAI,CAAA;AAAA,WAAA,IACxC,QAAA,IAAY,aAAa,QAAA,EAAU;AAC1C,QAAC,SAAwD,OAAA,GAAU,IAAA;AAAA,MACrE;AAAA,IACF,CAAA;AAIA,IAAA,MAAM,WAAA,GAAc,CAAC,SAAA,EAAW,UAAA,CAAW,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC9E,IAAA,MAAM,MAAA,GAAkC;AAAA,MACtC,GAAG,UAAA;AAAA,MACH,GAAG,KAAA;AAAA,MACH,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,WAAA;AAAA,MACX,OAAO,EAAE,GAAG,UAAA,CAAW,KAAA,EAAO,GAAG,KAAA;AAAM,KACzC;AACA,IAAA,OAAaU,OAAA,CAAA,YAAA;AAAA,MACX,KAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAA;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;ACgBnB,IAAM,aAAa,CAAC;AAAA,EAClB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEV,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,YAAA,EAAW,YAAA,EAAc,GAAG,KAAA,EAAO;AAEpD,UAAA,CAAW,WAAA,GAAc,YAAA;AAIzB,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,0FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,cAAA,CAAe,WAAA,GAAc,gBAAA;AAI7B,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA,CAAC,IAAA,EAAA,EAAG,GAAA,EAAU,SAAA,EAAW,GAAG,kCAAA,EAAoC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEzF,cAAA,CAAe,WAAA,GAAc,gBAAA;AAqB7B,IAAM,iBAAiB,CAAC;AAAA,EACtB,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAgF;AAC9E,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,GAAA;AAC9B,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAI7B,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA;AAAA;AAAA,kBAEEA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,eAAA,EAAc,MAAA;AAAA,MACd,cAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,MACrD,GAAG;AAAA;AAAA;AACN;AAEF,cAAA,CAAe,WAAA,GAAc,gBAAA;AAc7B,IAAM,mBAAA,GAAsB,CAAC,EAAE,QAAA,EAAU,WAAW,GAAG,KAAA,uBACrDA,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,SAAS,CAAA;AAAA,IAC1C,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,YAAA,EAAA,EAAa;AAAA;AAC7B;AAEF,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAWlC,IAAM,qBAAqB,CAAC,EAAE,WAAW,GAAG,KAAA,uBAC1CD,IAAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW,EAAA,CAAG,0CAAA,EAA4C,SAAS,CAAA;AAAA,IAClE,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,sBACpCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAChC;AAEF,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AC5MjC,SAAS,OAAA,CAAQ,EAAE,SAAA,EAAU,EAA2B;AACtD,EAAA,uBACEA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,wGAAA;AAAA,QACA;AAAA;AACF;AAAA,GACF;AAEJ;AAIA,SAAS,iBAAiB,IAAA,EAAyC;AACjE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,MAAA;AACH,MAAA,OAAO,gBAAA;AAAA;AAAA,IACT,KAAK,IAAA;AACH,MAAA,OAAO,kBAAA;AAAA;AAAA,IACT,KAAK,IAAA;AACH,MAAA,OAAO,kBAAA;AAAA;AAAA,IACT;AACE,MAAA,OAAO,gBAAA;AAAA;AAEb;AAEA,SAAS,oBAAoB,IAAA,EAAyC;AACpE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,MAAA;AACH,MAAA,OAAO,QAAA;AAAA;AAAA,IACT,KAAK,IAAA;AACH,MAAA,OAAO,UAAA;AAAA;AAAA,IACT,KAAK,IAAA;AACH,MAAA,OAAO,UAAA;AAAA;AAAA,IACT;AACE,MAAA,OAAO,QAAA;AAAA;AAEb;AAIA,IAAM,cAAA,GAAyC;AAAA,EAC7C,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,SAAS,mBAAmB,MAAA,EAAsE;AAChG,EAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AACpB,EAAA,MAAM,KAAA,GAAQ,MAAA,KAAW,IAAA,GAAO,IAAA,GAAO,MAAA;AACvC,EAAA,OAAO,eAAe,KAAK,CAAA;AAC7B;AAYA,SAAS,cAAc,EAAE,OAAA,EAAS,QAAQ,MAAA,EAAQ,IAAA,EAAM,UAAS,EAAuB;AACtF,EAAA,MAAM,aAAA,GAAgB,iBAAiB,IAAI,CAAA;AAE3C,EAAA,uBACED,IAAAA,CAAAS,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,OAAA,oBAAWR,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,mBAAA,CAAoB,IAAI,CAAA,EAAG,CAAA;AAAA,IAC1D,MAAA,IAAU,IAAA,oBACTA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,aAAa,CAAA,EAC7D,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,IAED,QAAA;AAAA,IACA,MAAA,IAAU,IAAA,oBACTA,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,aAAa,CAAA,EAC7D,QAAA,EAAA,MAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAmBA,IAAM,SAAS,CAAC;AAAA,EACd,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAwE;AACtE,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,QAAA;AAC9B,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,QAAA,IAAY,OAAO,CAAA;AAC9C,EAAA,MAAM,WAAA,GAAc,mBAAmB,MAAM,CAAA;AAE7C,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,cAAA,CAAe,EAAE,OAAA,EAAS,MAAM,KAAA,EAAO,CAAA,EAAG,WAAA,EAAa,SAAS,CAAA;AAAA,MAC9E,QAAA,EAAU,UAAA;AAAA,MACV,aAAW,OAAA,IAAW,MAAA;AAAA,MACrB,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,OAAA,GACC,2BAEAA,GAAAA,CAAC,iBAAc,OAAA,EAAkB,MAAA,EAAgB,MAAA,EAAgB,IAAA,EAC9D,QAAA,EACH;AAAA;AAAA,GAEJ;AAEJ;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AAiBrB,IAAM,aAAa,CAAC;AAAA,EAClB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4E;AAC1E,EAAA,MAAM,WAAA,GAAc,mBAAmB,MAAM,CAAA;AAE7C,EAAA,MAAM,eAAe,OAAA,GACjB;AAAA,IACE,WAAA,EAAa,MAAA;AAAA,IACb,eAAA,EAAiB,MAAA;AAAA,IACjB,QAAA,EAAU;AAAA,MAEZ,EAAC;AAEL,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA,CAAe,EAAE,OAAA,EAAS,IAAA,EAAM,OAAO,CAAA;AAAA,QACvC,WAAA;AAAA,QACA,OAAA,IAAW,gCAAA;AAAA,QACX;AAAA,OACF;AAAA,MACC,GAAG,YAAA;AAAA,MACH,GAAG,KAAA;AAAA,MAEJ,0BAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAkB,MAAA,EAAgB,MAAA,EAAgB,MAC9D,QAAA,EACH;AAAA;AAAA,GACF;AAEJ;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AC3MzB,IAAM,OAAO,CAAC;AAAA,EACZ,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,IAAA,CAAK,WAAA,GAAc,MAAA;AAEnB,IAAM,aAAa,CAAC;AAAA,EAClB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,GAAG,+BAAA,EAAiC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEvF,UAAA,CAAW,WAAA,GAAc,YAAA;AAEzB,IAAM,YAAY,CAAC;AAAA,EACjB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,oDAAA,EAAsD,SAAS,CAAA;AAAA,IAC5E,GAAG,KAAA;AAAA,IAEH;AAAA;AACH;AAEF,SAAA,CAAU,WAAA,GAAc,WAAA;AAOxB,IAAM,kBAAkB,CAAC;AAAA,EACvB,SAAA;AAAA,EACA,IAAI,GAAA,GAAM,GAAA;AAAA,EACV,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,OAAaW,sBAAc,GAAA,EAAK;AAAA,IAC9B,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACxD,GAAG;AAAA,GACJ,CAAA;AACH;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAE9B,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEX,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,GAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAElE,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,aAAa,CAAC;AAAA,EAClB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,GAAG,4BAAA,EAA8B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEpF,UAAA,CAAW,WAAA,GAAc,YAAA;AClDzB,IAAM,eAAA,GAAkB,CAAC,OAAA,EAAkB,QAAA,EAAmB,aAAA,KAA2B;AACvF,EAAA,IAAI,SAAA,GACF,sFAAA;AACF,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,IAAI,CAAC,WAAW,aAAA,EAAe;AAC7B,MAAA,SAAA,IAAa,0CAAA;AACb,MAAA,SAAA,IAAa,gBACT,wBAAA,GACA,4CAAA;AAAA,IACN,CAAA,MAAO;AACL,MAAA,SAAA,IACE,oFAAA;AAAA,IACJ;AAAA,EACF,CAAA,MAAO;AACL,IAAA,IAAI,CAAC,WAAW,aAAA,EAAe;AAC7B,MAAA,SAAA,IAAa,8EAAA;AACb,MAAA,SAAA,IAAa,gBACT,wBAAA,GACA,0HAAA;AAAA,IACN,CAAA,MAAO;AACL,MAAA,SAAA,IACE,uFAAA;AAAA,IACJ;AAAA,EACF;AACA,EAAA,OAAO,SAAA;AACT,CAAA;AAIO,IAAM,WAAW,CAAC;AAAA,EACvB,OAAA,EAAS,iBAAA;AAAA,EACT,cAAA,GAAiB,KAAA;AAAA,EACjB,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,aAAA,GAAgB,KAAA;AAAA,EAChB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,KAAqB;AACnB,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAII,gBAAAA,CAAM,SAAS,cAAc,CAAA;AAC3E,EAAA,MAAM,eAAe,iBAAA,KAAsB,MAAA;AAC3C,EAAA,MAAM,OAAA,GAAU,eAAe,iBAAA,GAAoB,eAAA;AACnD,EAAA,uBACEL,IAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,+CAAA;AAAA,QACA,WAAW,wCAAA,GAA2C,qCAAA;AAAA,QACtD;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,EAAA;AAAA,YACA,IAAA;AAAA,YACA,QAAA;AAAA,YACA,IAAA,EAAK,UAAA;AAAA,YACL,OAAA;AAAA,YACA,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,cAAA,IAAI,CAAC,aAAA,EAAe;AAClB,gBAAA,IAAI,CAAC,YAAA,EAAc;AACjB,kBAAA,kBAAA,CAAmB,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,gBACrC;AACA,gBAAA,IAAI,QAAA,EAAU;AACZ,kBAAA,QAAA,CAAS,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,gBAC3B;AAAA,cACF;AAAA,YACF,CAAA;AAAA,YACA,YAAA,EAAY,OAAO,QAAA,KAAa,QAAA,GAAW,QAAA,GAAW,UAAA;AAAA,YACtD,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,gBAAgB,OAAA,EAAS,QAAA,EAAU,aAAa,CAAA,EAC/D,QAAA,kBAAAA,GAAAA,CAAC,SAAI,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,UAAA,EAAW,MAAA,EAAO,IAAA,EAAK,SAAQ,WAAA,EAAY,KAAA,EAAM,IAAA,EAChF,QAAA,EAAA,aAAA,mBACCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YACf,WAAA,EAAY,GAAA;AAAA,YACZ,EAAA,EAAG,GAAA;AAAA,YACH,EAAA,EAAG,IAAA;AAAA,YACH,EAAA,EAAG,IAAA;AAAA,YACH,EAAA,EAAG;AAAA;AAAA,4BAGLA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAE,qBAAA;AAAA,YACF,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YACf,WAAA,EAAY;AAAA;AAAA,WAGlB,CAAA,EACF,CAAA;AAAA,QACC,4BAAYA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAQ,QAAA,EAAS;AAAA;AAAA;AAAA,GAChD;AAEJ;AAIO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,QAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA;AAAA;AAAA,oBAEED,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,MAAA;AAAA,UACA,WAAA,KAAgB,aAAa,gBAAA,GAAmB,0BAAA;AAAA,UAChD;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,oBAASC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACtD;AAAA;AAAA;AAAA;AACH;AAEJ;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;ACtE5B,IAAM,gBAAA,GAA2C;AAAA,EAC/C,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,KAAA;AAAA,EACL,CAAA,EAAG,GAAA;AAAA,EACH,KAAA,EAAO,KAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,GAAA,EAAK,KAAA;AAAA,EACL,EAAA,EAAI,QAAA;AAAA,EACJ,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,EAAA,EAAI,IAAA;AAAA,EACJ,GAAA,EAAK,SAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA,EACT,GAAA,EAAK,MAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,UAAA,EAAY,YAAA;AAAA,EACZ,EAAA,EAAI,YAAA;AAAA,EACJ,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,OAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,EAAA,EAAI,QAAA;AAAA,EACJ,QAAA,EAAU,UAAA;AAAA,EACV,EAAA,EAAI,UAAA;AAAA,EACJ,IAAA,EAAM,MAAA;AAAA,EACN,SAAA,EAAW,MAAA;AAAA,EACX,MAAA,EAAQ,MAAA;AAAA,EACR,GAAA,EAAK,KAAA;AAAA,EACL,EAAA,EAAI,QAAA;AAAA,EACJ,MAAA,EAAQ,QAAA;AAAA,EACR,EAAA,EAAI,MAAA;AAAA,EACJ,KAAA,EAAO,OAAA;AAAA,EACP,EAAA,EAAI,MAAA;AAAA,EACJ,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,EAAA,EAAI,MAAA;AAAA,EACJ,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,EAAA,EAAI,YAAA;AAAA,EACJ,GAAA,EAAK,YAAA;AAAA,EACL,UAAA,EAAY,YAAA;AAAA,EACZ,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,GAAA,EAAK,MAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAA;AAYA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,EAAM,KAAA;AAAA,EACN,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,uBACED,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,QAAA;AAAA,MACJ,OAAA,EAAQ,WAAA;AAAA,MACR,SAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,QAAQ,KAAA,IAAS,cAAA;AAAA,MACjB,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,aAAA,EAAY,MAAA;AAAA,MAEX,QAAA,EAAA;AAAA,QAAA,KAAA,mBAAQC,GAAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,KAAA,EAAM,CAAA,GAAW,IAAA;AAAA,wBAClCA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,sEAAA,EAAuE,CAAA;AAAA,wBAC/EA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,0EAAA,EAA2E;AAAA;AAAA;AAAA,GACrF;AAEJ;AAEA,IAAM,sBAAA,GAA2D;AAAA,EAC/D,MAAM,EAAE,KAAA,EAAO,cAAc,IAAA,EAAM,SAAA,EAAW,OAAO,MAAA,EAAO;AAAA,EAC5D,KAAK,EAAE,KAAA,EAAO,UAAU,IAAA,EAAM,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,EAClD,GAAG,EAAE,KAAA,EAAO,QAAQ,IAAA,EAAM,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,EAC1C,QAAQ,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,QAAA,EAAU,OAAO,IAAA,EAAK;AAAA,EAC1D,KAAK,EAAE,KAAA,EAAO,gBAAgB,IAAA,EAAM,WAAA,EAAa,OAAO,KAAA,EAAM;AAAA,EAC9D,KAAK,EAAE,KAAA,EAAO,UAAU,IAAA,EAAM,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,EAClD,IAAI,EAAE,KAAA,EAAO,SAAS,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,EAC9C,SAAS,EAAE,KAAA,EAAO,cAAc,IAAA,EAAM,SAAA,EAAW,OAAO,SAAA,EAAU;AAAA,EAClE,MAAM,EAAE,KAAA,EAAO,YAAY,IAAA,EAAM,OAAA,EAAS,OAAO,MAAA,EAAO;AAAA,EACxD,MAAM,EAAE,KAAA,EAAO,cAAc,IAAA,EAAM,SAAA,EAAW,OAAO,MAAA,EAAO;AAAA,EAC5D,YAAY,EAAE,KAAA,EAAO,iBAAiB,IAAA,EAAM,YAAA,EAAc,OAAO,YAAA,EAAa;AAAA,EAC9E,MAAM,EAAE,KAAA,EAAO,gBAAgB,IAAA,EAAM,cAAA,EAAgB,OAAO,MAAA,EAAO;AAAA,EACnE,QAAQ,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,EAC9D,UAAU,EAAE,KAAA,EAAO,eAAe,IAAA,EAAM,UAAA,EAAY,OAAO,UAAA,EAAW;AAAA,EACtE,MAAM,EAAE,KAAA,EAAO,gBAAgB,IAAA,EAAM,WAAA,EAAa,OAAO,SAAA,EAAU;AAAA,EACnE,KAAK,EAAE,KAAA,EAAO,UAAU,IAAA,EAAM,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,EAClD,QAAQ,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,EAC9D,OAAO,EAAE,KAAA,EAAO,YAAY,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EAC1D,MAAM,EAAE,KAAA,EAAO,WAAW,IAAA,EAAM,MAAA,EAAQ,OAAO,MAAA,EAAO;AAAA,EACtD,MAAM,EAAE,KAAA,EAAO,WAAW,IAAA,EAAM,MAAA,EAAQ,OAAO,MAAA,EAAO;AAAA,EACtD,MAAM,EAAE,KAAA,EAAO,WAAW,IAAA,EAAM,MAAA,EAAQ,OAAO,MAAA,EAAO;AAAA,EACtD,QAAQ,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,EAC9D,OAAO,EAAE,KAAA,EAAO,YAAY,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EAC1D,YAAY,EAAE,KAAA,EAAO,iBAAiB,IAAA,EAAM,YAAA,EAAc,OAAO,YAAA,EAAa;AAAA,EAC9E,KAAK,EAAE,KAAA,EAAO,eAAe,IAAA,EAAM,UAAA,EAAY,OAAO,KAAA,EAAM;AAAA,EAC5D,MAAM,EAAE,KAAA,EAAO,WAAW,IAAA,EAAM,MAAA,EAAQ,OAAO,MAAA;AACjD,CAAA;AAEO,SAAS,2BAA2B,QAAA,EAAkC;AAC3E,EAAA,MAAM,OAAA,GAAU,QAAA,EAAU,IAAA,EAAK,CAAE,WAAA,EAAY;AAC7C,EAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AAErB,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,aAAA,CAAc,QAAA,CAAS,GAAG,CAAA,GAAI,cAAc,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,EAAI,GAAI,MAAA;AACjF,EAAA,MAAM,YAAY,SAAA,IAAa,aAAA;AAE/B,EAAA,OAAO,gBAAA,CAAiB,SAAS,CAAA,IAAK,SAAA;AACxC;AAEA,SAAS,cAAA,CACP,UACA,KAAA,EACwC;AACxC,EAAA,IAAI,CAAC,OAAO,OAAO,MAAA;AACnB,EAAA,MAAM,GAAA,GAAM,QAAA,EAAU,IAAA,EAAK,CAAE,WAAA,EAAY;AACzC,EAAA,MAAM,UAAA,GAAa,2BAA2B,QAAQ,CAAA;AACtD,EAAA,IAAI,GAAA,IAAO,OAAO,MAAA,CAAO,KAAA,EAAO,GAAG,CAAA,EAAG,OAAO,MAAM,GAAG,CAAA;AACtD,EAAA,IAAI,UAAA,IAAc,OAAO,MAAA,CAAO,KAAA,EAAO,UAAU,CAAA,EAAG,OAAO,MAAM,UAAU,CAAA;AAC3E,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,4BAAA,CACd,QAAA,EACA,OAAA,GAGI,EAAC,EACL;AACA,EAAA,MAAM,UAAA,GAAa,2BAA2B,QAAQ,CAAA;AACtD,EAAA,MAAM,WAAW,OAAA,CAAQ,IAAA,IAAQ,cAAA,CAAe,QAAA,EAAU,QAAQ,KAAK,CAAA;AAEvE,EAAA,IAAI,QAAA,KAAa,KAAA,IAAS,QAAA,KAAa,IAAA,EAAM,OAAO,IAAA;AACpD,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,MAAA;AAAA,MACP,IAAA,EAAM,QAAA;AAAA,MACN,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,cAAc,QAAA,IAAY;AAAA,KACnC;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,uBAAuB,UAAU,CAAA;AAC9C,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,QAAA,EAAU;AAAA,GACZ;AACF;AAUO,SAAS,qBAAA,CAAsB;AAAA,EACpC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA+B;AAC7B,EAAA,MAAM,WAAW,4BAAA,CAA6B,QAAA,EAAU,EAAE,IAAA,EAAM,OAAO,CAAA;AAEvE,EAAA,IAAI,CAAC,QAAA,EAAU,OAAO,QAAA,IAAY,IAAA;AAElC,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AAEtB,EAAA,uBACEA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,yDAAA,EAA2D,SAAS,CAAA;AAAA,MAClF,+BAAA,EAA6B,IAAA;AAAA,MAC7B,iBAAe,QAAA,CAAS,QAAA;AAAA,MACxB,OAAO,QAAA,CAAS,KAAA;AAAA,MAEf,QAAA,EAAAY,cAAAA,CAAe,IAAI,CAAA,GAClB,uBAEAZ,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAU,WAAA;AAAA,UACV,SAAA,EAAU,OAAA;AAAA,UACT,GAAI,SAAS,KAAA,GAAQ,EAAE,OAAO,QAAA,CAAS,KAAA,KAAU;AAAC;AAAA;AACrD;AAAA,GAEJ;AAEJ;;;AC9RA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,sGAAA;AAAA,EACA,wDAAA;AAAA,EACA;AACF,CAAA,CAAE,KAAK,GAAG,CAAA;AAEV,IAAM,wBAAA,GACJ,wEAAA;AAEF,IAAM,qBAAA,GACJ,2GAAA;AAEK,IAAM,0BAAA,GAA6B;AAAA,EACxC,YAAA,EACE,6FAAA;AAAA,EACF,cAAA,EAAgB,qEAAA;AAAA,EAChB,WAAA,EAAa,qEAAA;AAAA,EACb,YAAA,EAAc,+DAAA;AAAA,EACd,oBAAA,EAAsB,qBAAA;AAAA,EACtB,WAAA,EAAa;AAAA,IACX,qBAAA;AAAA,IACA,8EAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,eAAA,EAAiB;AAAA,IACf,qBAAA;AAAA,IACA,eAAA;AAAA,IACA,wBAAA;AAAA,IACA,6CAAA;AAAA,IACA,iEAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,UAAU,CAAC,qBAAA,EAAuB,wBAAwB,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EACpE,cAAA,EAAgB;AAAA,IACd,qBAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,kBAAkB,CAAC,qBAAA,EAAuB,0BAA0B,MAAM,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EACpF,aAAA,EACE,qGAAA;AAAA,EACF,WAAA,EACE,iHAAA;AAAA,EACF,cAAA,EAAgB;AAAA,IACd,yGAAA;AAAA,IACA,wDAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,iBAAA,EAAmB;AAAA,IACjB,6FAAA;AAAA,IACA,wDAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,WAAA,EAAa;AAAA,IACX,sGAAA;AAAA,IACA,wDAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,mBAAA,EAAqB;AAAA,IACnB,2GAAA;AAAA,IACA,wDAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG;AACZ,CAAA;AC7DA,IAAM,mBAAA,GAA4Ba,sBAA+C,IAAI,CAAA;AAIrF,SAAS,YAAA,CAAa;AAAA,EACpB,IAAA,EAAM,cAAA;AAAA,EACN,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUA,iBAAS,WAAW,CAAA;AAC1E,EAAA,MAAM,OAAO,cAAA,IAAkB,gBAAA;AAE/B,EAAA,SAAS,OAAA,CACP,UACA,YAAA,EACA;AACA,IAAA,IAAI,mBAAmB,MAAA,EAAW;AAChC,MAAA,mBAAA,CAAoB,QAAQ,CAAA;AAAA,IAC9B;AACA,IAAA,YAAA,GAAe,UAAU,YAAqB,CAAA;AAAA,EAChD;AAEA,EAAA,MAAM,YAAA,GAAyC,EAAE,OAAA,EAAQ;AAEzD,EAAA,uBACEb,GAAAA,CAAC,mBAAA,CAAoB,UAApB,EAA6B,KAAA,EAAO,cACnC,QAAA,kBAAAA,GAAAA,CAACc,MAAA,CAAS,IAAA,EAAT,EAAc,IAAA,EAAY,YAAA,EAAc,SAAU,GAAG,KAAA,EACnD,UACH,CAAA,EACF,CAAA;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAM3B,IAAM,sBAAsB,CAAC;AAAA,EAC3B,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAqF;AACnF,EAAA,MAAM,OAAA,GAAgBD,YAAI,mBAAmB,CAAA;AAC7C,EAAA,SAAS,eAAA,GAAkB;AACzB,IAAA,OAAA,EAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AAEA,EAAA,MAAM,qBACJ,OAAA,IAAiBA,OAAA,CAAA,cAAA,CAAwC,QAAQ,CAAA,GACvDA,qBAAa,QAAA,EAAU;AAAA,IAC3B,WAAA,EAAa,CAAC,KAAA,KAAyC;AACrD,MACE,QAAA,CAAS,KAAA,CAAM,WAAA,GAGb,KAAK,CAAA;AACT,MAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,QAAA,eAAA,EAAgB;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,KAAA,KAA4C;AACtD,MACE,QAAA,CAAS,KAAA,CAAM,SAAA,GAGb,KAAK,CAAA;AACT,MAAA,IAAI,CAAC,MAAM,gBAAA,KAAqB,KAAA,CAAM,QAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,CAAA,EAAM;AAC3E,QAAA,eAAA,EAAgB;AAAA,MAClB;AAAA,IACF;AAAA,GACD,CAAA,GACD,IAAA;AAEN,EAAA,MAAM,gBAAgB,kBAAA,IAAsB,MAAA;AAC5C,EAAA,uBACEb,GAAAA;AAAA,IAACc,MAAA,CAAS,OAAA;AAAA,IAAT;AAAA,MACC,GAAA;AAAA,MACA,MAAA,EAAQ,aAAA;AAAA,MACP,GAAI,aAAA,GAAgB,KAAA,GAAQ,EAAE,GAAG,OAAO,QAAA;AAAS;AAAA,GACpD;AAEJ;AACA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAElC,IAAM,oBAAoBA,MAAA,CAAS;AAEnC,IAAM,qBAAqBA,MAAA,CAAS;AAEpC,IAAM,kBAAkBA,MAAA,CAAS;AAEjC,IAAM,yBAAyBA,MAAA,CAAS;AAExC,IAAM,yBAAyB,CAAC;AAAA,EAC9B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEf,IAAAA;AAAA,EAACe,MAAA,CAAS,cAAA;AAAA,EAAT;AAAA,IACC,GAAA;AAAA,IACA,WAAW,EAAA,CAAG,0BAAA,CAA2B,cAAA,EAAgB,KAAA,IAAS,QAAQ,SAAS,CAAA;AAAA,IAClF,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDd,GAAAA,CAACe,YAAAA,EAAA,EAAa,WAAU,gBAAA,EAAiB;AAAA;AAAA;AAC3C;AAEF,sBAAA,CAAuB,WAAA,GAAc,wBAAA;AAErC,IAAM,yBAAyB,CAAC;AAAA,EAC9B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEf,GAAAA,CAACc,MAAA,CAAS,MAAA,EAAT,EACC,0BAAAd,GAAAA,CAACc,MAAA,CAAS,UAAA,EAAT,EACC,QAAA,kBAAAd,GAAAA;AAAA,EAACc,MAAA,CAAS,KAAA;AAAA,EAAT;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iBAAA,CAAkB,WAAA;AAAA,MAClB,0BAAA,CAA2B,WAAA;AAAA,MAC3B;AAAA,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,IAChD,GAAG;AAAA;AACN,CAAA,EACF,CAAA,EACF;AAEF,sBAAA,CAAuB,WAAA,GAAc,wBAAA;AAUrC,IAAM,sBAAsB,CAAC;AAAA,EAC3B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,KAAA,GAAQ,QAAA;AAAA,EACR,WAAA,GAAc,CAAA;AAAA,EACd,IAAA,GAAO,QAAA;AAAA,EACP,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEd,GAAAA,CAACc,MAAA,CAAS,MAAA,EAAT,EACC,QAAA,kBAAAd,GAAAA;AAAA,EAACc,MAAA,CAAS,UAAA;AAAA,EAAT;AAAA,IACC,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IAEA,QAAA,kBAAAd,GAAAA;AAAA,MAACc,MAAA,CAAS,KAAA;AAAA,MAAT;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,iBAAA,CAAkB,WAAA;AAAA,UAClB,0BAAA,CAA2B,WAAA;AAAA,UAC3B;AAAA,SACF;AAAA,QACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,QAChD,GAAG;AAAA;AAAA;AACN;AACF,CAAA,EACF;AAEF,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAElC,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEd,GAAAA;AAAA,EAACc,MAAA,CAAS,IAAA;AAAA,EAAT;AAAA,IACC,GAAA;AAAA,IACA,WAAW,EAAA,CAAG,0BAAA,CAA2B,QAAA,EAAU,KAAA,IAAS,QAAQ,SAAS,CAAA;AAAA,IAC5E,GAAG;AAAA;AACN;AAEF,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,IAAM,2BAA2B,CAAC;AAAA,EAChC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEf,IAAAA;AAAA,EAACe,MAAA,CAAS,YAAA;AAAA,EAAT;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,gBAAA,EAAkB,SAAS,CAAA;AAAA,IACnE,GAAI,OAAA,KAAY,MAAA,IAAa,EAAE,OAAA,EAAQ;AAAA,IACvC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAd,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2DAAA,EACd,0BAAAA,GAAAA,CAACc,MAAA,CAAS,qBAAA,EAAT,EACC,0BAAAd,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,GAC5B,CAAA,EACF,CAAA;AAAA,MACC;AAAA;AAAA;AACH;AAEF,wBAAA,CAAyB,WAAA,GAAc,0BAAA;AAEvC,IAAM,wBAAwB,CAAC;AAAA,EAC7B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGED,IAAAA;AAAA,EAACe,MAAA,CAAS,SAAA;AAAA,EAAT;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,gBAAA,EAAkB,SAAS,CAAA;AAAA,IACnE,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAd,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2DAAA,EACd,0BAAAA,GAAAA,CAACc,MAAA,CAAS,kBAAA,EAAT,EACC,0BAAAd,GAAAA,CAACgB,MAAA,EAAA,EAAO,SAAA,EAAU,qBAAA,EAAsB,GAC1C,CAAA,EACF,CAAA;AAAA,MACC;AAAA;AAAA;AACH;AAEF,qBAAA,CAAsB,WAAA,GAAc,uBAAA;AAEpC,IAAM,oBAAoB,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEhB,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,KAAA,IAAS,QAAQ,SAAS,CAAA;AAAA,IAC5E,GAAG;AAAA;AACN;AAEF,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,wBAAwB,CAAC;AAAA,EAC7B,SAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA;AAAA,EAACc,MAAA,CAAS,SAAA;AAAA,EAAT;AAAA,IACC,GAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN;AAEF,qBAAA,CAAsB,WAAA,GAAc,uBAAA;AAEpC,IAAM,uBAAuB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,KAA6C;AAC/F,EAAA,uBACEd,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,4CAAA,EAA8C,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAE7F;AACA,oBAAA,CAAqB,WAAA,GAAc,sBAAA;ACxJnC,IAAM,gBAAA,GAAmB,kBAAA;AAEzB,IAAM,UAAA,GAAa;AAAA,EACjB,GAAG,QAAA;AAAA,EACH,yBAAA,EAA2B;AAAA,IACzB,GAAG,SAAS,yBAAyB,CAAA;AAAA,IACrC,UAAA,EAAY,aAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,0BAAA,EAA4B;AAAA,IAC1B,GAAG,SAAS,0BAA0B,CAAA;AAAA,IACtC,KAAA,EAAO,wBAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,8BAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA;AAEX,CAAA;AAEA,IAAM,SAAA,GAAY;AAAA,EAChB,GAAG,QAAA;AAAA,EACH,yBAAA,EAA2B;AAAA,IACzB,GAAG,SAAS,yBAAyB,CAAA;AAAA,IACrC,UAAA,EAAY,aAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,0BAAA,EAA4B;AAAA,IAC1B,GAAG,SAAS,0BAA0B,CAAA;AAAA,IACtC,UAAA,EAAY;AAAA;AAEhB,CAAA;AAMA,SAAS,wBAAwB,QAAA,EAA0B;AACzD,EAAA,MAAM,MAAM,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,IAAO,WAAA,EAAY;AACnD,EAAA,MAAM,WAAA,GAAsC;AAAA,IAC1C,EAAA,EAAI,YAAA;AAAA,IACJ,GAAA,EAAK,KAAA;AAAA,IACL,EAAA,EAAI,YAAA;AAAA,IACJ,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,EAAA,EAAI,UAAA;AAAA,IACJ,EAAA,EAAI,QAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,MAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,GAAA,EAAK;AAAA,GACP;AACA,EAAA,OAAO,WAAA,CAAY,GAAA,IAAO,EAAE,CAAA,IAAK,YAAA;AACnC;AAEA,IAAM,mBAAA,GAAsB;AAAA,EAC1B,YAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA;AAEA,SAAS,QAAA,CAAS,EAAE,QAAA,EAAS,EAAyB;AACpD,EAAA,MAAM,MAAM,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,IAAO,WAAA,EAAY;AACnD,EAAA,QAAQ,GAAA;AAAK,IACX,KAAK,IAAA;AAAA,IACL,KAAK,KAAA;AAAA,IACL,KAAK,IAAA;AAAA,IACL,KAAK,KAAA;AACH,MAAA,uBAAOA,GAAAA,CAACiB,QAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IACvC,KAAK,KAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,uBAAOjB,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IACvC;AACE,MAAA,uBAAOA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA;AAEvC;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,MAAM,QAAA,mBAAWA,GAAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAoB,CAAA;AAE/C,EAAA,IAAI,CAAC,kBAAkB,OAAO,QAAA;AAE9B,EAAA,uBACEA,GAAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,QAAA;AAAA,MACV,QAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA,EAAO,aAAA;AAAA,MACP,UAAU,QAAA,IAAY;AAAA;AAAA,GACxB;AAEJ;AAgDO,SAAS,UAAU,KAAA,EAAuB;AAI/C,EAAA,MAAM,YAAA,GAAe,UAAA,IAAc,KAAA,IAAS,OAAO,MAAM,QAAA,KAAa,QAAA;AAEtE,EAAA,MAAM,eAAA,GAAmC,gBACpC,MAAM;AACL,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,MAAM,CAAA,GAAmB;AAAA,MACvB,KAAA,EAAO,OAAO,QAAA,IAAY,EAAA;AAAA,MAC1B,MAAM,MAAA,CAAO,QAAA;AAAA,MACb,UAAU,MAAA,CAAO;AAAA,KACnB;AACA,IAAA,IAAI,MAAA,CAAO,gBAAA,KAAqB,MAAA,EAAW,CAAA,CAAE,mBAAmB,MAAA,CAAO,gBAAA;AACvE,IAAA,IAAI,MAAA,CAAO,iBAAA,KAAsB,MAAA,EAAW,CAAA,CAAE,aAAa,MAAA,CAAO,iBAAA;AAClE,IAAA,IAAI,MAAA,CAAO,mBAAA,KAAwB,MAAA,EAAW,CAAA,CAAE,eAAe,MAAA,CAAO,mBAAA;AACtE,IAAA,IAAI,MAAA,CAAO,YAAA,KAAiB,MAAA,EAAW,CAAA,CAAE,OAAO,MAAA,CAAO,YAAA;AACvD,IAAA,OAAO,CAAC,CAAC,CAAA;AAAA,EACX,CAAA,MACC,KAAA,CAA8B,KAAA;AAEnC,EAAA,MAAM,kBAAA,GAAqB,YAAA,GACvB,OAAA,CAAS,KAAA,CAA+B,QAAQ,CAAA,GAChD,IAAA;AAEJ,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,SAAA,GAAY,GAAA;AAAA,IACZ,oBAAA,GAAuB,KAAA;AAAA,IACvB,eAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA,GAAmB,IAAA;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB,GAAI,KAAA;AAIJ,EAAA,MAAM,eAAe,KAAA,CAAM,eAAA;AAC3B,EAAA,MAAM,eAAe,KAAA,CAAM,eAAA;AAC3B,EAAA,MAAM,kBACJ,YAAA,KAAiB,MAAA,GACb,eACA,YAAA,KAAiB,MAAA,GACf,CAAC,YAAA,GACD,YAAA;AAIR,EAAA,MAAM,kBAAA,GAAqB,YAAA,GAAgB,KAAA,CAA+B,QAAA,GAAW,MAAA;AACrF,EAAA,MAAM,oBAAA,GACJ,CAAC,YAAA,IAAgB,OAAA,CAAS,MAA8B,oBAAoB,CAAA;AAC9E,EAAA,MAAM,SAAA,GAAY,YAAA,GAAe,MAAA,GAAa,KAAA,CAA8B,SAAA;AAC5E,EAAA,MAAM,YAAA,GAAe,YAAA,GAAe,MAAA,GAAa,KAAA,CAA8B,YAAA;AAE/E,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIkB,QAAAA,CAAS,gBAAgB,eAAA,CAAgB,CAAC,CAAA,EAAG,KAAA,IAAS,EAAE,CAAA;AAC9F,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC5E,EAAA,MAAM,qBAAqB,gBAAA,EAAiB;AAC5C,EAAA,MAAM,OAAA,GAAU,KAAA,EAAM,CAAE,OAAA,CAAQ,MAAM,EAAE,CAAA;AACxC,EAAA,MAAM,cAAA,GAAiB,OAA6C,IAAI,CAAA;AAGxE,EAAA,MAAM,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,cAAA,CAAe,OAAA,EAAS,YAAA,CAAa,cAAA,CAAe,OAAO,CAAA;AAC/D,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,cAAA,CAAe,UAAU,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,GAAG,GAAI,CAAA;AAAA,EAClE,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,cAAA,CAAe,OAAA,EAAS,YAAA,CAAa,cAAA,CAAe,OAAO,CAAA;AAAA,IACjE,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,EAC1B,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAEnC,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,SAAA,CAAU,QAAA,CAAS,eAAA,CAAgB,SAAA,CAAU,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,IAC/D,CAAA;AAEA,IAAA,aAAA,EAAc;AAEd,IAAA,MAAM,QAAA,GAAW,IAAI,gBAAA,CAAiB,aAAa,CAAA;AACnD,IAAA,QAAA,CAAS,OAAA,CAAQ,SAAS,eAAA,EAAiB;AAAA,MACzC,UAAA,EAAY,IAAA;AAAA,MACZ,eAAA,EAAiB,CAAC,OAAO;AAAA,KAC1B,CAAA;AAED,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAa,eAAA,CAAgB,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,UAAU,WAAW,CAAA;AAC5E,EAAA,MAAM,IAAA,GAAO,YAAY,IAAA,IAAQ,EAAA;AACjC,EAAA,MAAM,gBAAA,GAAmB,UAAA,EAAY,QAAA,IAAY,uBAAA,CAAwB,eAAe,EAAE,CAAA;AAE1F,EAAA,MAAM,iBAAA,GAAoB,kBAAA,EAAoB,KAAA,IAAS,gBAAA,IAAoB,gBAAA;AAC3E,EAAA,MAAM,wBAAA,GAA2B,oBAAoB,OAAA,CAAQ,IAAA;AAAA,IAC3D,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU,kBAAA,CAAmB;AAAA,GAClD;AACA,EAAA,MAAM,uBAAA,GAA0B,wBAAA,EAA0B,KAAA,IAAS,kBAAA,EAAoB,KAAA;AAGvF,EAAA,MAAM,cAAA,GAAiB,OAAA;AAAA,IACrB,MAAM,IAAI,GAAA,CAAI,UAAA,EAAY,gBAAgB,CAAA;AAAA,IAC1C,CAAC,YAAY,gBAAgB;AAAA,GAC/B;AACA,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,MAAM,IAAI,GAAA,CAAI,UAAA,EAAY,UAAU,CAAA,EAAG,CAAC,UAAA,EAAY,UAAU,CAAC,CAAA;AACxF,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,MAAM,IAAI,GAAA,CAAI,UAAA,EAAY,YAAY,CAAA,EAAG,CAAC,UAAA,EAAY,YAAY,CAAC,CAAA;AAE9F,EAAA,MAAM,eAAA,GACJ,eAAe,IAAA,GAAO,CAAA,IAAK,SAAS,IAAA,GAAO,CAAA,IAAK,UAAA,CAAW,IAAA,GAAO,CAAA,IAAK,oBAAA;AAGzE,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,UAAA,KAAqD;AACpD,MAAA,MAAM,MAAA,GAA8B;AAAA,QAClC,OAAA,EAAS,OAAA;AAAA,QACT,WAAA,EAAa,MAAA;AAAA,QACb,YAAA,EAAc,MAAA;AAAA,QACd,UAAA,EAAY,OAAA;AAAA,QACZ,WAAA,EAAa;AAAA,OACf;AACA,MAAA,MAAM,YAAoC,EAAC;AAE3C,MAAA,IAAI,cAAA,CAAe,GAAA,CAAI,UAAU,CAAA,EAAG;AAClC,QAAA,MAAA,CAAO,eAAA,GAAkB,SAAS,0BAAA,GAA6B,0BAAA;AAC/D,QAAA,MAAA,CAAO,UAAA,GAAa,mCAAA;AACpB,QAAA,MAAA,CAAO,WAAA,GAAc,kBAAA;AAAA,MACvB;AAEA,MAAA,IAAI,QAAA,CAAS,GAAA,CAAI,UAAU,CAAA,EAAG;AAC5B,QAAA,MAAA,CAAO,eAAA,GAAkB,SAAS,0BAAA,GAA6B,0BAAA;AAC/D,QAAA,SAAA,CAAU,WAAW,CAAA,GAAI,GAAA;AAAA,MAC3B;AAEA,MAAA,IAAI,UAAA,CAAW,GAAA,CAAI,UAAU,CAAA,EAAG;AAC9B,QAAA,MAAA,CAAO,eAAA,GAAkB,SAAS,yBAAA,GAA4B,yBAAA;AAC9D,QAAA,SAAA,CAAU,WAAW,CAAA,GAAI,GAAA;AAAA,MAC3B;AAEA,MAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAG,SAAA,EAAU;AAAA,IACvC,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,QAAA,EAAU,UAAA,EAAY,MAAM;AAAA,GAC/C;AAGA,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACzB,CAAC,UAAA,KAA4C;AAC3C,MAAA,MAAM,QAA6B,EAAC;AAEpC,MAAA,IAAI,QAAA,CAAS,GAAA,CAAI,UAAU,CAAA,EAAG;AAC5B,QAAA,KAAA,CAAM,KAAA,GAAQ,mBAAA;AAAA,MAChB,CAAA,MAAA,IAAW,UAAA,CAAW,GAAA,CAAI,UAAU,CAAA,EAAG;AACrC,QAAA,KAAA,CAAM,KAAA,GAAQ,kBAAA;AAAA,MAChB;AAEA,MAAA,IAAI,wBAAwB,eAAA,EAAiB;AAC3C,QAAA,KAAA,CAAM,MAAA,GAAS,SAAA;AACf,QAAA,KAAA,CAAM,UAAA,GAAa,MAAA;AAAA,MACrB;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,UAAA,EAAY,oBAAA,EAAsB,eAAe;AAAA,GAC9D;AAGA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,CAAA,KAAwB;AACvB,MAAA,IAAI,CAAC,oBAAA,IAAwB,CAAC,eAAA,EAAiB;AAE/C,MAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,OAAA,CAAQ,oDAAoD,CAAA;AACrF,MAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,MAAA,MAAM,aAAa,QAAA,CAAS,SAAA,CAAU,aAAa,IAAA,EAAK,IAAK,IAAI,EAAE,CAAA;AACnE,MAAA,IAAI,MAAA,CAAO,KAAA,CAAM,UAAU,CAAA,EAAG;AAE9B,MAAA,MAAM,MAAA,GAAS,KAAK,UAAU,CAAA,CAAA;AAC9B,MAAA,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,MAAM,CAAA,CAAE,MAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AACpD,MAAA,eAAA,GAAkB,UAAU,CAAA;AAC5B,MAAA,gBAAA,EAAiB;AAAA,IACnB,CAAA;AAAA,IACA,CAAC,oBAAA,EAAsB,eAAA,EAAiB,eAAA,EAAiB,gBAAgB;AAAA,GAC3E;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,OAAO,IAAA,KAAiB;AACtB,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,QAAA,gBAAA,EAAiB;AAAA,MACnB,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAIA,EAAA,MAAM,gBAAA,GAAmB,gBAAgB,MAAA,GAAS,CAAA;AAClD,EAAA,MAAM,WAAA,GAAc,oBAAA,IAAwB,OAAA,CAAQ,kBAAkB,CAAA;AACtE,EAAA,MAAM,aACJ,CAAE,KAAA,CAA+B,UAAA,KAChC,gBAAA,IAAoB,sBAAsB,WAAA,IAAe,IAAA,CAAA;AAE5D,EAAA,uBACEnB,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,iFAAA;AAAA,QACA,kBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,YAAA,EAAY,OAAA;AAAA,MAGV,QAAA,EAAA;AAAA,QAAA,CAAA,QAAA,CAAS,OAAO,CAAA,IAAK,UAAA,CAAW,OAAO,CAAA,qBACvCC,IAAC,OAAA,EAAA,EAAO,QAAA,EAAA;AAAA,uBAAA,EACS,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAA,EAOP,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA,uBAAA,EAIP,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,EAItB,CAAA;AAAA,QAIH,UAAA,oBACCD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sDAAA,EACb,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACZ,QAAA,EAAA,gBAAA,GACC,eAAA,CAAgB,GAAA,CAAI,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,uBACrCD,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,cAAA,CAAe,KAAK,CAAA;AAAA,cACnC,SAAA,EAAW,EAAA;AAAA,gBACT,6GAAA;AAAA,gBACA,KAAA,KAAU,cACN,wCAAA,GACA;AAAA,eACN;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAC,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,QAAA,EAAU,KAAA;AAAA,oBACV,IAAA;AAAA,oBACA,UAAU,QAAA,IAAY,KAAA;AAAA,oBACtB,aAAA;AAAA,oBACA;AAAA;AAAA,iBACF;AAAA,gCACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA,aAAA;AAAA,YAjBrC;AAAA,WAmBR,IACC,kBAAA,IAAsB,WAAA,mBACxBD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,0EAAA,EACd,QAAA,EAAA;AAAA,4BAAAC,GAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAU,WAAA;AAAA,gBACV,MAAM,UAAA,EAAY,IAAA;AAAA,gBAClB,QAAA,EAAU,iBAAA;AAAA,gBACV,aAAA;AAAA,gBACA;AAAA;AAAA,aACF;AAAA,4BACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,WAAA,EAAY;AAAA,WAAA,EACrB,IACE,IAAA,EACN,CAAA;AAAA,0BAEAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAEZ,QAAA,EAAA;AAAA,YAAA,kBAAA,oBACCA,KAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAC,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAAD,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,YAAA,EAAY,CAAA,0BAAA,EACV,uBAAA,IAA2B,kBAAA,CAAmB,KAChD,CAAA,CAAA;AAAA,kBACA,eAAA,EAAc,MAAA;AAAA,kBACd,SAAA,EAAU,4JAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAC,GAAAA;AAAA,sBAAC,qBAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAU,UAAA;AAAA,wBACV,MAAM,wBAAA,EAA0B,IAAA;AAAA,wBAChC,KAAA,EAAO,aAAA;AAAA,wBACP,UAAU,kBAAA,CAAmB;AAAA;AAAA,qBAC/B;AAAA,oCACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,uBAAA,IAA2B,mBAAmB,KAAA,EAAM,CAAA;AAAA,oCAC3DA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAAA,eACnC,EACF,CAAA;AAAA,8BACAA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAM,KAAA,EAAM,SAAA,EAAU,0BAAA,EACxC,QAAA,EAAA,kBAAA,CAAmB,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,qBAC/BD,IAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBAEC,OAAA,EAAS,MAAM,kBAAA,CAAmB,QAAA,CAAS,IAAI,KAAK,CAAA;AAAA,kBACpD,SAAA,EAAW,EAAA;AAAA,oBACT,SAAA;AAAA,oBACA,GAAA,CAAI,KAAA,KAAU,kBAAA,CAAmB,KAAA,IAAS;AAAA,mBAC5C;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAC,GAAAA;AAAA,sBAAC,qBAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAU,eAAA;AAAA,wBACV,MAAM,GAAA,CAAI,IAAA;AAAA,wBACV,KAAA,EAAO,aAAA;AAAA,wBACP,UAAU,GAAA,CAAI;AAAA;AAAA,qBAChB;AAAA,oBACC,GAAA,CAAI;AAAA;AAAA,iBAAA;AAAA,gBAbA,GAAA,CAAI;AAAA,eAeZ,CAAA,EACH;AAAA,aAAA,EACF,CAAA;AAAA,YAID,oBAAA,IAAwB,CAAC,kBAAA,oBACxBD,KAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAC,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAAD,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,YAAA,EAAY,6BAA6B,iBAAiB,CAAA,CAAA;AAAA,kBAC1D,eAAA,EAAc,MAAA;AAAA,kBACd,SAAA,EAAU,4JAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAC,GAAAA;AAAA,sBAAC,qBAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAU,UAAA;AAAA,wBACV,KAAA,EAAO,aAAA;AAAA,wBACP,QAAA,EAAU;AAAA;AAAA,qBACZ;AAAA,oCACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,iBAAA,EAAkB,CAAA;AAAA,oCACzBA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAAA,eACnC,EACF,CAAA;AAAA,8BACAA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAM,KAAA,EAAM,SAAA,EAAU,0BAAA,EACvC,QAAA,EAAA,CAAA,SAAA,IAAa,mBAAA,EAAqB,GAAA,CAAI,CAAC,IAAA,qBACvCD,IAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBAEC,OAAA,EAAS,MAAM,mBAAA,CAAoB,IAAI,CAAA;AAAA,kBACvC,SAAA,EAAW,EAAA;AAAA,oBACT,SAAA;AAAA,oBACA,SAAS,iBAAA,IAAqB;AAAA,mBAChC;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAC,GAAAA;AAAA,sBAAC,qBAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAU,eAAA;AAAA,wBACV,KAAA,EAAO,aAAA;AAAA,wBACP,QAAA,EAAU;AAAA;AAAA,qBACZ;AAAA,oBACC;AAAA;AAAA,iBAAA;AAAA,gBAZI;AAAA,eAcR,CAAA,EACH;AAAA,aAAA,EACF,CAAA;AAAA,4BAIFA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,gBACnC,SAAA,EAAU,yHAAA;AAAA,gBACV,YAAA,EAAW,WAAA;AAAA,gBAEV,mCACCA,GAAAA;AAAA,kBAAC,MAAA,CAAO,GAAA;AAAA,kBAAP;AAAA,oBACC,OAAA,EAAS,qBAAqB,EAAE,OAAA,EAAS,GAAE,GAAI,EAAE,OAAO,CAAA,EAAE;AAAA,oBAC1D,OAAA,EAAS,qBAAqB,EAAE,OAAA,EAAS,GAAE,GAAI,EAAE,OAAO,CAAA,EAAE;AAAA,oBAC1D,IAAA,EAAM,qBAAqB,EAAE,OAAA,EAAS,GAAE,GAAI,EAAE,OAAO,CAAA,EAAE;AAAA,oBACvD,UAAA,EAAY,EAAE,QAAA,EAAU,kBAAA,GAAqB,IAAI,IAAA,EAAK;AAAA,oBAEtD,QAAA,kBAAAA,GAAAA,CAACmB,KAAAA,EAAA,EAAM,WAAU,SAAA,EAAU;AAAA;AAAA,iBAC7B,mBAEAnB,GAAAA,CAAC,IAAA,EAAA,EAAK,WAAU,SAAA,EAAU;AAAA;AAAA;AAE9B,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAKFA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,eAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,WAAW,OAAO,SAAA,KAAc,QAAA,GAAW,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA,GAAO;AAAA,aAChE;AAAA,YACA,OAAA,EAAS,eAAA;AAAA,YAET,QAAA,kBAAAA,GAAAA;AAAA,cAACoB,KAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAU,iBAAA;AAAA,gBACV,KAAA,EAAO,SAAS,SAAA,GAAY,UAAA;AAAA,gBAC5B,eAAA;AAAA,gBACA,SAAA,EAAW,eAAA;AAAA,gBACX,SAAA,EAAW,kBAAkB,YAAA,GAAe,MAAA;AAAA,gBAC5C,eAAA,EAAiB,kBAAkB,kBAAA,GAAqB,MAAA;AAAA,gBACxD,WAAA,EAAa;AAAA,kBACX,MAAA,EAAQ,CAAA;AAAA,kBACR,OAAA,EAAS,MAAA;AAAA,kBACT,UAAA,EAAY,aAAA;AAAA,kBACZ,UAAA,EAAY,gBAAA;AAAA,kBACZ,QAAA,EAAU;AAAA,iBACZ;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;ACrrBO,IAAM,aAAA,GAAgB,SAASC,cAAAA,CAAc;AAAA,EAClD,GAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,IAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAAmE;AAGjE,EAAA,MAAM,UAAUC,KAAAA,EAAM;AACtB,EAAA,MAAM,EAAE,eAAA,EAAiB,YAAA,EAAa,GAAIC,QAAQ,MAAM;AACtD,IAAA,MAAM,UAAuB,EAAC;AAC9B,IAAA,MAAM,WAAqB,EAAC;AAC5B,IAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,IAAAC,QAAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,CAACZ,cAAAA,CAA8B,KAAK,CAAA,IAAK,KAAA,CAAM,SAAS,QAAA,EAAU;AACpE,QAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAClB,QAAA;AAAA,MACF;AACA,MAAA,MAAM,KAAA,GAAQ,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,KAAA,EAAO,CAAA,CAAA;AACnC,MAAA,IAAI,KAAA,CAAM,KAAA,CAAM,eAAA,EAAiB,QAAA,CAAS,KAAK,KAAK,CAAA;AACpD,MAAA,OAAA,CAAQ,IAAA;AAAA,QACNa,aAAa,KAAA,EAAO;AAAA,UAClB,OAAA,EAAS,KAAA;AAAA,UACT,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,IAAA,IAAQ;AAAA,SACD;AAAA,OAC7B;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,EAAE,eAAA,EAAiB,OAAA,EAAS,YAAA,EAAc,QAAA,EAAS;AAAA,EAC5D,CAAA,EAAG,CAAC,QAAA,EAAU,OAAA,EAAS,IAAI,CAAC,CAAA;AAI5B,EAAA,MAAM,gBAAA,GAAsC,QAAA,GAAW,YAAA,GAAgB,YAAA,CAAa,CAAC,CAAA,IAAK,EAAA;AAE1F,EAAA,uBACEzB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MAEA,QAAA;AAAA,MACA,YAAA,EAAc,gBAAA;AAAA,MACd,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MAEhC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAMO,IAAM,QAAA,GAAW,SAAS0B,SAAAA,CAAS;AAAA,EACxC,GAAA;AAAA,EACA,KAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,IAAA,GAAO,SAAA;AAAA,EACP,WAAA,GAAc,IAAA;AAAA,EACd,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAA8D;AAG5D,EAAA,MAAM,eAAeJ,KAAAA,EAAM;AAC3B,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,QAAQ,OAAA,IAAW,YAAA;AAEzB,EAAA,MAAM,uBACJvB,IAAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MAGC,GAAI,QAAA,GAAW,EAAE,QAAA,EAAU,IAAA,KAAS,EAAC;AAAA,MACtC,SAAA,EAAW,EAAA,CAAG,YAAA,IAAgB,UAAA,EAAY,SAAS,CAAA;AAAA,MAEnD,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,gBAAA,EAAA,EAAiB,IAAA,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACrCA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,IAAA,EAAY,aAC3B,QAAA,EACH;AAAA;AAAA;AAAA,GACF;AAGF,EAAA,IAAI,CAAC,cAAc,OAAO,IAAA;AAE1B,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,QAAA,EAAU,KAAA;AAAA,MAEV,YAAA,EAAe,kBAAkB,KAAA,GAAQ,EAAA;AAAA,MACzC,SAAA,EAAU,QAAA;AAAA,MAET,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;;;AC1LO,IAAM,qBAAA,GAAwB,EAAA;AAAA,EACnC,oEAAA;AAAA,EACA,gDAAA;AAAA,EACA,mDAAA;AAAA,EACA,uBAAA;AAAA,EACA,6EAAA;AAAA,EACA,uBAAA;AAAA,EACA,6CAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,4BAAA,GAA+B,EAAA;AAAA,EAC1C,+CAAA;AAAA,EACA,mDAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,qBAAA,GAAwB,EAAA;AAAA,EACnC,gHAAA;AAAA,EACA,mFAAA;AAAA,EACA,yCAAA;AAAA,EACA,mDAAA;AAAA,EACA,gDAAA;AAAA,EACA,oDAAA;AAAA,EACA;AACF,CAAA;ACjBA,IAAM,SAAS2B,QAAA,CAAW;AAC1B,IAAM,eAAeA,QAAA,CAAW;AAEhC,IAAM,gBAAgB,CAAC;AAAA,EACrB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,IAAI,OAAA,IAAiBC,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACE5B,GAAAA;AAAA,MAAC2B,QAAA,CAAW,OAAA;AAAA,MAAX;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACE3B,IAAC2B,QAAA,CAAW,OAAA,EAAX,EAAmB,GAAA,EAAW,GAAG,OAC/B,QAAA,EACH,CAAA;AAEJ;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,cAAc,CAAC;AAAA,EACnB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,IAAI,OAAA,IAAiBC,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACE5B,GAAAA;AAAA,MAAC2B,QAAA,CAAW,KAAA;AAAA,MAAX;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACE3B,IAAC2B,QAAA,CAAW,KAAA,EAAX,EAAiB,GAAA,EAAW,GAAG,OAC7B,QAAA,EACH,CAAA;AAEJ;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,gBAAgB,CAAC;AAAA,EACrB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE3B,GAAAA;AAAA,EAAC2B,QAAA,CAAW,QAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iBAAA,CAAkB,QAAA,EAAU,SAAS,CAAA;AAAA,IACnD,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,QAAA,EAAU,GAAG,KAAA,EAAM;AAAA,IACjD,GAAG;AAAA;AACN;AAEF,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,gBAAgB,CAAC;AAAA,EACrB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE5B,KAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAC,IAAC,aAAA,EAAA,EAAc,CAAA;AAAA,kBACfD,IAAAA;AAAA,IAAC4B,QAAA,CAAW,KAAA;AAAA,IAAX;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,iBAAA,CAAkB,YAAA;AAAA,QAClB,0BAAA,CAA2B,YAAA;AAAA,QAC3B;AAAA,OACF;AAAA,MACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,KAAA,EAAO,GAAG,KAAA,EAAM;AAAA,MAC9C,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD5B,IAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,kBAAkB,WAAA,EACxC,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAACC,KAAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,0BACvBD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA,SAAA,EACjC;AAAA;AAAA;AAAA;AACF,CAAA,EACF;AAEF,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,oDAAA,EAAsD,SAAS,CAAA;AAAA,IAC5E,GAAG;AAAA;AACN;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+DAAA,EAAiE,SAAS,CAAA;AAAA,IACvF,GAAG;AAAA;AACN;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA;AAAA,EAAC2B,QAAA,CAAW,KAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,mDAAA,EAAqD,SAAS,CAAA;AAAA,IAC3E,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,oBAAoB,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE3B,GAAAA;AAAA,EAAC2B,QAAA,CAAW,WAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN;AAEF,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AC7IhC,IAAM,aAAA,GAAgB,CAAC,MAAA,EAAQ,OAAA,EAAS,OAAO,MAAM,CAAA;AAErD,IAAM,oBAAA,GAAiD;AAAA,EACrD,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,GAAA,EAAK,QAAA;AAAA,EACL,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,oBAAA,GAAiD;AAAA,EACrD,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,OAAA;AAAA,EACP,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,cAAA,GAA2C;AAAA,EAC/C,IAAA,EAAM,oBAAA;AAAA,EACN,KAAA,EAAO,OAAA;AAAA,EACP,GAAA,EAAK,eAAA;AAAA,EACL,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,iBAAA,GAA8B;AACrC,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,SAAA,CAAU,QAAA,CAAS,WAAA,EAAY;AACvD,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,SAAA,CAAU,SAAA,CAAU,WAAA,EAAY;AACzD,EAAA,MAAM,UAAU,sBAAA,CAAuB,IAAA,CAAK,QAAQ,CAAA,IAAK,sBAAA,CAAuB,KAAK,SAAS,CAAA;AAE9F,EAAA,OAAO,UAAU,OAAA,GAAU,OAAA;AAC7B;AAEA,SAAS,iBAAA,GAAgC;AACvC,EAAA,OAAO,MAAM,MAAA;AACf;AAEA,SAAS,WAAA,GAAwB;AAC/B,EAAA,OAAaE,OAAA,CAAA,oBAAA,CAAqB,iBAAA,EAAmB,iBAAA,EAAmB,MAAM,OAAO,CAAA;AACvF;AAEA,SAAS,aAAa,QAAA,EAA4C;AAChE,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,OAAA,GAAU,SAAS,IAAA,EAAK;AAE9B,EAAA,IAAI,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA,EAAG;AAC3B,IAAA,OAAO,QAAQ,WAAA,EAAY;AAAA,EAC7B;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,mBAAmB,QAAA,EAA8C;AACxE,EAAA,OAAO,QAAA,KAAa,UAAU,oBAAA,GAAuB,oBAAA;AACvD;AAEA,IAAM,MAAM,CAAC;AAAA,EACX,IAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA+D;AAC7D,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,OAAA,GAAU,mBAAmB,QAAQ,CAAA;AAC3C,EAAA,MAAM,eAAA,GAAkB,aAAA,CAAc,MAAA,CAAO,CAAC,QAAA,KAAa;AACzD,IAAA,IAAI,QAAA,KAAa,QAAQ,OAAO,IAAA;AAChC,IAAA,IAAI,QAAA,KAAa,SAAS,OAAO,KAAA;AACjC,IAAA,IAAI,QAAA,KAAa,OAAO,OAAO,GAAA;AAC/B,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACD,EAAA,MAAM,aAAA,GAAgB,aAAa,QAAQ,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,GAAG,eAAA,CAAgB,GAAA,CAAI,CAAC,QAAA,KAAa,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,IACtD;AAAA,GACF,CAAE,OAAO,OAAO,CAAA;AAChB,EAAA,MAAM,iBACJ,SAAA,IACA;AAAA,IACE,GAAG,eAAA,CAAgB,GAAA,CAAI,CAAC,QAAA,KAAa,cAAA,CAAe,QAAQ,CAAC,CAAA;AAAA,IAC7D,OAAO,aAAA,KAAkB,QAAA,GAAW,aAAA,GAAgB;AAAA,GACtD,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEb,EAAA,uBACE7B,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,cAAY,cAAA,IAAkB,MAAA;AAAA,MAC9B,SAAA,EAAW,EAAA;AAAA,QACT,4LAAA;AAAA,QACA,QAAQ,mCAAA,GAAsC,uCAAA;AAAA,QAC9C;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,WAAA,CAAY,KAAK,EAAE;AAAA;AAAA,GACtB;AAEJ;AACA,GAAA,CAAI,WAAA,GAAc,KAAA;AC7ClB,IAAM,UAAU,CAAC;AAAA,EACf,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC8B,SAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,6CAAA;AAAA,MACA,0BAAA,CAA2B,YAAA;AAAA,MAC3B;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,OAAA,CAAQ,cAAcA,SAAA,CAAiB,WAAA;AAEvC,IAAM,gBAAgB,CAAC,EAAE,QAAA,EAAU,GAAG,OAAM,KAA0B;AACpE,EAAA,uBACE9B,GAAAA,CAAC,MAAA,EAAA,EAAQ,GAAG,OACV,QAAA,kBAAAA,GAAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,0BAAA,CAA2B,YAAA;AAAA,QAC3B,0BAAA,CAA2B;AAAA,OAC7B;AAAA,MAEA,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,uBAAwB,QAAA,EAAS;AAAA;AAAA,GACvD,EACF,CAAA;AAEJ;AAEA,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,4BAAA,EAA8B,2BAAwB,EAAA,EACpE,QAAA,EAAA;AAAA,kBAAAC,GAAAA,CAAC+B,eAAA,EAAA,EAAO,SAAA,EAAU,kCAAA,EAAmC,CAAA;AAAA,kBACrD/B,GAAAA,CAAC8B,SAAA,CAAiB,KAAA,EAAjB,EAAuB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAAA,CAAA,EAChG;AAEF,YAAA,CAAa,WAAA,GAAcA,UAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE9B,GAAAA;AAAA,EAAC8B,SAAA,CAAiB,IAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iDAAA,EAAmD,SAAS,CAAA;AAAA,IACzE,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAcA,UAAiB,IAAA,CAAK,WAAA;AAEhD,IAAM,eAAe,CAAC;AAAA,EACpB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAEM9B,IAAC8B,SAAA,CAAiB,KAAA,EAAjB,EAAuB,GAAA,EAAU,SAAA,EAAU,0BAAA,EAA4B,GAAG,KAAA,EAAO;AACxF,YAAA,CAAa,WAAA,GAAcA,UAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE9B,GAAAA;AAAA,EAAC8B,SAAA,CAAiB,KAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,YAAA,CAAa,WAAA,GAAcA,UAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE9B,GAAAA;AAAA,EAAC8B,SAAA,CAAiB,SAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA;AAAA,IAC9C,GAAG;AAAA;AACN;AAEF,gBAAA,CAAiB,WAAA,GAAcA,UAAiB,SAAA,CAAU,WAAA;AAE1D,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE9B,GAAAA;AAAA,EAAC8B,SAAA,CAAiB,IAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,WAAA,EAAa,SAAS,CAAA;AAAA,IAC9D,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAcA,UAAiB,IAAA,CAAK,WAAA;AAEhD,IAAM,mBAAA,GAAsB,CAAC,KAAA,EAA2B,MAAA,KAAmB;AACzE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,0BAAA;AACtC,EAAA,IAAI,OAAO,IAAA,EAAK,CAAE,WAAW,CAAA,EAAG,OAAO,GAAG,KAAK,CAAA,2BAAA,CAAA;AAC/C,EAAA,OAAO,CAAA,EAAG,KAAK,CAAA,+BAAA,EAAkC,MAAM,CAAA,CAAA,CAAA;AACzD,CAAA;AAEA,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA,GAAS,EAAA;AAAA,EACT,KAAA,GAAQ,mBAAA;AAAA,EACR,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACE9B,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,aAAA,EAAY,MAAA;AAAA,IACZ,WAAA,EAAU,QAAA;AAAA,IACV,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,SAAS,CAAA;AAAA,IACjC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA,QAAA,IAAY,KAAA,CAAM,KAAA,EAAO,MAAM;AAAA;AAClC;AAEF,cAAA,CAAe,WAAA,GAAc,gBAAA;AAE7B,IAAM,aAAA,GAAgB,CAAC,GAAA,KAAyB;AAC9C,EAAA,IAAI,OAAO,QAAQ,QAAA,IAAY,OAAO,QAAQ,QAAA,EAAU,OAAO,OAAO,GAAG,CAAA;AACzE,EAAA,IAAUgC,OAAA,CAAA,cAAA,CAAe,GAAG,CAAA,IAAK,GAAA,CAAI,OAAO,IAAA,EAAM,OAAO,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AACvE,EAAA,OAAO,OAAO,GAAG,CAAA;AACnB,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,EAAE,SAAA,EAAW,MAAM,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,EAAM,KAA4B;AAChG,EAAA,MAAM,eAAe,IAAA,KAAS,QAAA,IAAY,OAAO,CAAC,QAAQ,IAAI,EAAC,CAAA;AAE/D,EAAA,uBACEjC,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,gEAAA,EAAkE,SAAS,CAAA;AAAA,MACxF,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,mBAAQC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,iBAAM,CAAA,GAAU,IAAA;AAAA,QACnD,aAAa,GAAA,CAAI,CAAC,GAAA,qBACjBA,IAAC,GAAA,EAAA,EAA6B,aAAA,EAAa,KAAA,GAAQ,IAAA,GAAO,QAAW,KAAA,EAAK,IAAA,EACvE,iBADO,aAAA,CAAc,GAAG,CAE3B,CACD;AAAA;AAAA;AAAA,GACH;AAEJ;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AClP9B,IAAM,aAAA,GAAgBE,GAAAA;AAAA,EACpB;AACF;AAsCA,IAAM,QAAQ,CAAC;AAAA,EACb,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEF,GAAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,aAAA,EAAc,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEzE,KAAA,CAAM,WAAA,GAAc,OAAA;ACnDpB,SAAS,OAAA,CAAQ,EAAE,GAAG,KAAA,EAAM,EAAuD;AACjF,EAAA,uBAAOA,IAACiC,SAAA,CAAiB,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/D;AAMA,SAAS,eAAe,EAAE,OAAA,EAAS,UAAU,MAAA,EAAQ,GAAG,OAAM,EAAwB;AACpF,EAAA,MAAM,aAAA,GACJ,OAAA,IAAiBC,OAAA,CAAA,cAAA,CAAe,QAAQ,IAAI,QAAA,GAAW,MAAA;AACzD,EAAA,uBACElC,GAAAA;AAAA,IAACiC,SAAA,CAAiB,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,MAAA,EAAQ,aAAA;AAAA,MACP,GAAI,aAAA,GAAgB,KAAA,GAAQ,EAAE,GAAG,OAAO,QAAA;AAAS;AAAA,GACpD;AAEJ;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACzB,UAAA,GAAa,CAAA;AAAA,EACb,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6D;AAC3D,EAAA,uBACEjC,GAAAA,CAACiC,SAAA,CAAiB,MAAA,EAAjB,EACC,QAAA,kBAAAjC,GAAAA;AAAA,IAACiC,SAAA,CAAiB,UAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,UAAA;AAAA,MACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,MAChD,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAUA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,WAAA,GAAc,CAAA;AAAA,EACd,IAAA,GAAO,QAAA;AAAA,EACP,QAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,uBACEjC,GAAAA,CAACiC,SAAA,CAAiB,MAAA,EAAjB,EACC,QAAA,kBAAAjC,GAAAA;AAAA,IAACiC,SAAA,CAAiB,UAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,UAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MAEA,QAAA,kBAAAlC,IAAAA;AAAA,QAACkC,SAAA,CAAiB,KAAA;AAAA,QAAjB;AAAA,UACC,WAAA,EAAU,iBAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACT,iBAAA,CAAkB,cAAA;AAAA,YAClB,0BAAA,CAA2B,cAAA;AAAA,YAC3B;AAAA,WACF;AAAA,UACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,UAChD,GAAG,KAAA;AAAA,UAEH,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YACA,SAAA,oBAAajC,GAAAA,CAAC,YAAA,EAAA,EAAa;AAAA;AAAA;AAAA;AAC9B;AAAA,GACF,EACF,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACEA,GAAAA;AAAA,IAACiC,SAAA,CAAiB,KAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,8MAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,MAChD,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAlC,IAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACtE,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAE,gMAAA;AAAA,YACF,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAE,sTAAA;AAAA,YACF,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,aAAA,CAAc,EAAE,GAAG,KAAA,EAAM,EAAiC;AACjE,EAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACrD;ACtFA,IAAM,eAAA,GAAkB;AAAA,EACtB,EAAA,EAAI,OAAA;AAAA,EACJ,OAAA,EAAS,QAAA;AAAA,EACT,EAAA,EAAI,OAAA;AAAA,EACJ,KAAA,EAAO,OAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,kBAAA,GAAqB;AAAA,EACzB,KAAA,EAAO;AAAA,IACL,2BAAA,EAA6B,MAAA;AAAA,IAC7B,8BAAA,EAAgC,UAAA;AAAA,IAChC,sBAAA,EAAwB;AAAA,GAC1B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,2BAAA,EAA6B,QAAA;AAAA,IAC7B,8BAAA,EAAgC,SAAA;AAAA,IAChC,sBAAA,EAAwB;AAAA,GAC1B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,2BAAA,EAA6B,MAAA;AAAA,IAC7B,8BAAA,EAAgC,UAAA;AAAA,IAChC,sBAAA,EAAwB;AAAA;AAE5B,CAAA;AA0FO,IAAM,uBAAA,GAA0BE,GAAAA;AAAA,EACrC;AAAA,IACE,kEAAA;AAAA,IACA,wIAAA;AAAA,IACA,gEAAA;AAAA,IACA,2CAAA;AAAA,IACA,mCAAA;AAAA,IACA,qGAAA;AAAA,IACA,iDAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,KAAA,EAAO;AAAA,OACT;AAAA,MACA,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,mDAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AAWA,IAAM,eAAA,GAAwBiC,sBAA2C,IAAI,CAAA;AAE7E,SAAS,kBAAA,GAA2C;AAClD,EAAA,MAAM,GAAA,GAAYA,YAAI,eAAe,CAAA;AACrC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,EAC1E;AACA,EAAA,OAAO,GAAA;AACT;AAMA,IAAM,qBAAqB,CAAC;AAAA,EAC1B,GAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAAmG;AACjG,EAAA,MAAM,EAAE,aAAA,EAAe,QAAA,EAAS,GAAI,kBAAA,EAAmB;AACvD,EAAA,MAAM,aAAa,aAAA,KAAkB,KAAA;AAGrC,EAAA,MAAM,QAAA,GAAiBA,gBAAQ,MAAM;AACnC,IAAA,IAAI,KAAA,EAAO,OAAO,CAAC,KAAK,CAAA;AACxB,IAAA,IAAI,OAAO,QAAA,KAAa,QAAA,EAAU,OAAO,CAAC,QAAQ,CAAA;AAClD,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,uBACEpC,IAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa,EAAC;AAAA,MAChC,UAAU,QAAA,IAAY,KAAA;AAAA,MACtB,QAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,SAAS,CAAA;AAAA,MAEhC,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAACmB,KAAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,UAAA,GAAa,gBAAgB,WAAW;AAAA;AAAA,SAC5E;AAAA,QACC,YAAY,KAAA,IAAS;AAAA;AAAA;AAAA,GACxB;AAEJ;AACA,kBAAA,CAAmB,WAAA,GAAc,iBAAA;AAMjC,IAAM,gBAAgB,CAAC;AAAA,EACrB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEnB,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAW,GAAG,KAAA,EAAO;AAErC,aAAA,CAAc,WAAA,GAAc,gBAAA;AAM5B,IAAM,gBAAgB,CAAC;AAAA,EACrB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAW,GAAG,KAAA,EAAO;AAErC,aAAA,CAAc,WAAA,GAAc,gBAAA;AAM5B,IAAM,mBAAmB,CAAC;AAAA,EACxB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAW,GAAG,KAAA,EAAO;AAErC,gBAAA,CAAiB,WAAA,GAAc,gBAAA;AAM/B,IAAM,iBAAA,GAAoB;AAE1B,IAAM,eAAe,CAAC;AAAA,EACpB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,GAAe,mBAAA;AAAA,EACf,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAiG;AAC/F,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,GAAG,KAAA;AAAA,IACH,GAAI,QAAA,GAAW,EAAE,UAAU,WAAA,CAAY,QAAQ,GAAE,GAAI;AAAA,GACvD;AAEA,EAAA,uBACED,KAAC,WAAA,EAAA,EAAY,GAAA,EAAU,WAAsB,KAAA,EAAO,SAAA,EAAY,GAAG,KAAA,EACjE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,gBAAc,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,IAC3B;AAAA,GAAA,EACH,CAAA;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,eAAA;AAM3B,SAAS,YAAY,KAAA,EAA8B;AACjD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,KAAA;AACpD;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,OAAA;AAAA,EACA,KAAA,EAAO,eAAA;AAAA,EACP,QAAA;AAAA,EACA,YAAA,GAAe,IAAA;AAAA,EACf,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,WAAA,GAAc,WAAA;AAAA,EACd,YAAA,GAAe,mBAAA;AAAA,EACf,iBAAA,GAAoB,WAAA;AAAA,EACpB,OAAA,GAAU,KAAA;AAAA,EACV,cAAA,GAAiB,oBAAA;AAAA,EACjB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,GAAG;AACL,CAAA,EAAkB;AAEhB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUmC,iBAAwB,YAAY,CAAA;AACpF,EAAA,MAAM,aAAA,GAAgB,eAAA,KAAoB,MAAA,GAAY,eAAA,GAAkB,aAAA;AACxE,EAAA,MAAM,cAAA,GAAiB,gBAAgB,IAAI,CAAA;AAC3C,EAAA,MAAM,YAAY,OAAA,IAAW,KAAA;AAG7B,EAAA,MAAM,gBAAA,GAAyBA,eAAO,aAAa,CAAA;AACnD,EAAA,gBAAA,CAAiB,OAAA,GAAU,aAAA;AAE3B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,WAAA;AAAA,IACzB,CAAC,QAAA,KAAqB;AACpB,MAAA,MAAM,UAAU,gBAAA,CAAiB,OAAA;AACjC,MAAA,MAAM,IAAA,GAAO,QAAA,KAAa,OAAA,GAAU,IAAA,GAAO,QAAA;AAC3C,MAAA,IAAI,eAAA,KAAoB,MAAA,EAAW,gBAAA,CAAiB,IAAI,CAAA;AACxD,MAAA,QAAA,GAAW,IAAI,CAAA;AACf,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,iBAAiB,QAAQ;AAAA,GAC5B;AAGA,EAAA,MAAM,aAAA,GAAsBA,gBAAQ,MAAM;AACxC,IAAA,IAAI,CAAC,eAAe,OAAO,EAAA;AAC3B,IAAA,IAAI,CAAC,SAAS,OAAO,aAAA;AACrB,IAAA,OAAO,OAAA,CAAQ,KAAK,CAAC,CAAA,KAAM,EAAE,KAAA,KAAU,aAAa,GAAG,KAAA,IAAS,aAAA;AAAA,EAClE,CAAA,EAAG,CAAC,OAAA,EAAS,aAAa,CAAC,CAAA;AAE3B,EAAA,MAAM,UAAgBA,OAAA,CAAA,KAAA,EAAM;AAC5B,EAAA,MAAM,YAAkBA,OAAA,CAAA,KAAA,EAAM;AAC9B,EAAA,MAAM,YAAkBA,OAAA,CAAA,KAAA,EAAM;AAE9B,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,IACzB,OAAO,EAAE,aAAA,EAAe,aAAA,IAAiB,IAAA,EAAM,UAAU,YAAA,EAAa,CAAA;AAAA,IACtE,CAAC,eAAe,YAAY;AAAA,GAC9B;AAGA,EAAA,MAAM,cAAA,GAAuBA,gBAAQ,MAAM;AACzC,IAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,IAAA,MAAM,OAAA,uBAAc,GAAA,EAA0C;AAC9D,IAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,MAAA,MAAM,MAAM,GAAA,CAAI,KAAA;AAChB,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAC7B,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,MAChB,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,GAAA,CAAI,GAAA,EAAK,CAAC,GAAG,CAAC,CAAA;AAAA,MACxB;AAAA,IACF;AACA,IAAA,OAAO,OAAA;AAAA,EACT,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,YAAA,EAAc,UAAU,cAAA,GAAiB,YAAA;AAAA,QACzC,GAAI,YAAA,GAAe,EAAE,QAAA,EAAU,cAAa,GAAI;AAAA,OAClD;AAEA,MAAA,uBACEpC,IAAAA,CAAAS,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAR,GAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAa,iBAAA,EAAmB,CAAA;AAAA,wBAC9CA,GAAAA,CAAC,YAAA,EAAA,EAAc,GAAG,SAAA,EACf,QAAA,EAAA,CAAC,OAAA,IACA,KAAA,CAAM,IAAA,CAAK,cAAA,CAAe,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,KAAA,EAAO,IAAI,CAAA,qBACpDA,GAAAA,CAAC,YAAA,EAAA,EAA4C,OAAA,EAAS,KAAA,EACnD,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,qBACTA,GAAAA;AAAA,UAAC,kBAAA;AAAA,UAAA;AAAA,YAEC,OAAO,GAAA,CAAI,KAAA;AAAA,YACX,QAAA,EAAU,IAAI,QAAA,IAAY,KAAA;AAAA,YAEzB,QAAA,EAAA,GAAA,CAAI;AAAA,WAAA;AAAA,UAJA,GAAA,CAAI;AAAA,SAMZ,CAAA,EAAA,EATgB,KAAA,IAAS,eAU5B,CACD,CAAA,EACL;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,OAAO,QAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,GAAG,KAAA;AAAA,IACH,GAAG,mBAAmB,cAAc,CAAA;AAAA,IACpC,GAAI,KAAA,GAAQ,EAAE,oBAAoB,WAAA,CAAY,KAAK,GAAE,GAAI;AAAA,GAC3D;AAEA,EAAA,uBACEA,GAAAA,CAAC,eAAA,CAAgB,UAAhB,EAAyB,KAAA,EAAO,cAC/B,QAAA,kBAAAD,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,sDAAA,EAAwD,SAAS,CAAA;AAAA,MAC/E,KAAA,EAAO,SAAA;AAAA,MACN,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCC,GAAAA,CAAC,KAAA,EAAA,EAAM,EAAA,EAAI,OAAA,EAAS,OAAA,EAAS,SAAA,EAAW,SAAA,EAAW,EAAA,CAAG,SAAA,IAAa,SAAS,CAAA,EACzE,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,wBAEFD,IAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,YAAA,EAAc,CAAC,MAAA,KAAW;AACxB,cAAA,IAAI,CAAC,QAAA,EAAU,OAAA,CAAQ,MAAM,CAAA;AAAA,YAC/B,CAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAD,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,SAAA;AAAA,kBACJ,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,UAAA;AAAA,kBACL,eAAA,EAAc,SAAA;AAAA,kBACd,eAAA,EAAe,IAAA;AAAA,kBACf,eAAA,EAAe,SAAA;AAAA,kBACf,iBAAA,EAAiB,QAAQ,OAAA,GAAU,MAAA;AAAA,kBACnC,YAAA,EAAY,CAAC,KAAA,GAAS,SAAA,IAAa,WAAA,GAAe,MAAA;AAAA,kBAClD,gBAAc,SAAA,IAAa,MAAA;AAAA,kBAC3B,gBAAc,SAAA,IAAa,MAAA;AAAA,kBAC3B,QAAA;AAAA,kBACA,SAAA,EAAW,GAAG,uBAAA,CAAwB,EAAE,MAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,CAAC,CAAA;AAAA,kBAEjF,QAAA,EAAA;AAAA,oCAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,CAAC,iBAAiB,uBAAuB,CAAA,EAC1D,QAAA,EAAA,aAAA,GAAgB,aAAA,GAAgB,WAAA,EACnC,CAAA;AAAA,oCACAA,GAAAA,CAACoC,aAAA,EAAA,EAAe,aAAA,EAAY,MAAA,EAAO,WAAU,6BAAA,EAA8B;AAAA;AAAA;AAAA,eAC7E,EACF,CAAA;AAAA,8BACApC,GAAAA;AAAA,gBAAC,cAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,KAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,KAAA,EAAO,2DAAA;AAAA,oBACP,QAAA,EAAU,YAAA,GAAe,WAAA,CAAY,YAAY,CAAA,GAAI;AAAA,mBACvD;AAAA,kBAEA,0BAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,EAAA,EAAI,SAAA,EAAY,yBAAc,EAAE;AAAA;AAAA;AAC3C;AAAA;AAAA;AACF;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,UAAA;AAoC3B,IAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;AAAA,EAC3C,KAAA,EAAO,aAAA;AAAA,EACP,IAAA,EAAM,YAAA;AAAA,EACN,MAAA,EAAQ,kBAAA;AAAA,EACR,KAAA,EAAO,aAAA;AAAA,EACP,KAAA,EAAO,gBAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAC;ACzaD,SAAS,sBAAA,CAAuB;AAAA,EAC9B,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,EAKG;AACD,EAAA,uBACED,IAAAA,CAAAS,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,MAAA,oBAAUR,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oDAAoD,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,IACrF,CAAC,UAAU,KAAA,oBAASA,IAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,iBAAA,EAAkB,CAAA;AAAA,oBAC1EA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAA2B,QAAA,EAAS,CAAA;AAAA,IACnD,0BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4DAA4D,QAAA,EAAA,MAAA,EAAO;AAAA,GAAA,EAEvF,CAAA;AAEJ;AAEO,IAAM,kBAAkBqC,aAAA,CAAgB;AAExC,IAAM,qBAAqB,CAAC;AAAA,EACjC,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,aAAA,GACJ,OAAA,IAAiBC,OAAA,CAAA,cAAA,CAAe,QAAQ,IAAI,QAAA,GAAW,MAAA;AACzD,EAAA,uBACEtC,GAAAA;AAAA,IAACqC,aAAA,CAAgB,OAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,MAAA,EAAQ,aAAA;AAAA,MACP,GAAI,aAAA,GAAgB,KAAA,GAAQ,EAAE,GAAG,OAAO,QAAA;AAAS;AAAA,GACpD;AAEJ;AACA,kBAAA,CAAmB,WAAA,GAAc,qBAAA;AAE1B,IAAM,qBAAqB,CAAC;AAAA,EACjC,SAAA;AAAA,EACA,WAAA,GAAc,CAAA;AAAA,EACd,KAAA,GAAQ,OAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGErC,GAAAA,CAACqC,aAAA,CAAgB,MAAA,EAAhB,EACC,QAAA,kBAAArC,GAAAA;AAAA,EAACqC,aAAA,CAAgB,UAAA;AAAA,EAAhB;AAAA,IACC,WAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IAEA,QAAA,kBAAArC,GAAAA;AAAA,MAACqC,aAAA,CAAgB,KAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,iBAAA,CAAkB,WAAA;AAAA,UAClB,0BAAA,CAA2B,WAAA;AAAA,UAC3B,mBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,QAAQ,aAAA,CAAc,OAAA;AAAA,UACtB,SAAA,EAAW,yDAAA;AAAA,UACX,GAAG;AAAA,SACL;AAAA,QACC,GAAG;AAAA;AAAA;AACN;AACF,CAAA,EACF;AAEF,kBAAA,CAAmB,WAAA,GAAc,qBAAA;AAE1B,IAAM,mBAAmBA,aAAA,CAAgB;AAChD,gBAAA,CAAiB,WAAA,GAAc,mBAAA;AAExB,IAAM,mBAAmB,CAAC;AAAA,EAC/B,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGErC,GAAAA;AAAA,EAACqC,aAAA,CAAgB,UAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,SAAS,CAAA;AAAA,IAC7E,GAAG;AAAA;AACN;AAEF,gBAAA,CAAiB,WAAA,GAAc,mBAAA;AAExB,IAAM,uBAAuB,CAAC;AAAA,EACnC,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGErC,GAAAA;AAAA,EAACqC,aAAA,CAAgB,SAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA;AAAA,IACnD,GAAG;AAAA;AACN;AAEF,oBAAA,CAAqB,WAAA,GAAc,uBAAA;AAE5B,IAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,wBACJrC,GAAAA,CAAC,sBAAA,EAAA,EAAuB,MAAA,EAAgB,QACrC,QAAA,EACH,CAAA;AAGF,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACEA,GAAAA;AAAA,MAACqC,aAAA,CAAgB,QAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA;AAAA,QACA,GAAA;AAAA,QACA,YAAA,EAAY,KAAA;AAAA,QACZ,cAAA,EAAc,OAAA;AAAA,QACd,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,eAAA,EAAiB,SAAS,CAAA;AAAA,QAClE,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACErC,GAAAA;AAAA,IAACqC,aAAA,CAAgB,IAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,YAAA,EAAY,KAAA;AAAA,MACZ,cAAA,EAAc,OAAA;AAAA,MACd,QAAA;AAAA,MACA,OAAA,EAAS,QAAA;AAAA,MACT,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,eAAA,EAAiB,SAAS,CAAA;AAAA,MAClE,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AACA,eAAA,CAAgB,WAAA,GAAc,kBAAA;AAEvB,IAAM,0BAA0B,CAAC;AAAA,EACtC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEtC,IAAAA;AAAA,EAACsC,aAAA,CAAgB,YAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA,EAAY,KAAA;AAAA,IACZ,OAAA,EAAS,QAAA;AAAA,IACT,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,eAAA,EAAiB,QAAQ,SAAS,CAAA;AAAA,IAC1E,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAArC,GAAAA,CAACqC,aAAA,CAAgB,qBAAA,EAAhB,EAAsC,SAAA,EAAW,0BAAA,CAA2B,aAAA,EAC3E,QAAA,kBAAArC,GAAAA,CAACmB,KAAAA,EAAA,EAAM,SAAA,EAAU,UAAS,CAAA,EAC5B,CAAA;AAAA,sBACAnB,GAAAA,CAAC,sBAAA,EAAA,EAAuB,MAAA,EAAgB,QACrC,QAAA,EACH;AAAA;AAAA;AACF;AAEF,uBAAA,CAAwB,WAAA,GAAc,0BAAA;AAE/B,IAAM,wBAAwB,CAAC;AAAA,EACpC,aAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAEMA,IAACqC,aAAA,CAAgB,UAAA,EAAhB,EAA2B,GAAA,EAAU,aAAA,EAA+B,GAAG,KAAA,EAAO;AACrF,qBAAA,CAAsB,WAAA,GAAc,wBAAA;AAE7B,IAAM,uBAAuB,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEtC,IAAAA;AAAA,EAACsC,aAAA,CAAgB,SAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA,EAAS,QAAA;AAAA,IACT,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,eAAA,EAAiB,QAAQ,SAAS,CAAA;AAAA,IAC1E,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAArC,GAAAA,CAACqC,aAAA,CAAgB,kBAAA,EAAhB,EAAmC,SAAA,EAAW,0BAAA,CAA2B,aAAA,EACxE,QAAA,kBAAArC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gCAAA,EAAiC,CAAA,EACnD,CAAA;AAAA,sBACAA,GAAAA,CAAC,sBAAA,EAAA,EAAuB,MAAA,EAAgB,QACrC,QAAA,EACH;AAAA;AAAA;AACF;AAEF,oBAAA,CAAqB,WAAA,GAAc,uBAAA;AAE5B,IAAM,iBAAiBqC,aAAA,CAAgB;AAEvC,IAAM,wBAAwB,CAAC;AAAA,EACpC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGErC,GAAAA;AAAA,EAACqC,aAAA,CAAgB,cAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,OAAA,EAAS,QAAA;AAAA,IACT,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,eAAA,EAAiB,SAAS,CAAA;AAAA,IAClE,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAArC,GAAAA,CAAC,sBAAA,EAAA,EAAuB,MAAA,EAAgB,MAAA,EAAQ,MAAA,oBAAUA,GAAAA,CAACe,YAAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EAAS,GACxF,QAAA,EACH;AAAA;AACF;AAEF,qBAAA,CAAsB,WAAA,GAAc,wBAAA;AAE7B,IAAM,qBAAA,GAAwB;AACrC,qBAAA,CAAsB,WAAA,GAAc,wBAAA;AAE7B,IAAM,sBAAsB,CAAC;AAAA,EAClC,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEf,GAAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,oDAAA,EAAsD,SAAS,CAAA;AAAA,IAC5E,GAAG;AAAA;AACN;AAEF,mBAAA,CAAoB,WAAA,GAAc,sBAAA;AAE3B,IAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,eAAA,EAAiB;AAAA,EACxD,IAAA,EAAM,eAAA;AAAA,EACN,OAAA,EAAS,kBAAA;AAAA,EACT,OAAA,EAAS,kBAAA;AAAA,EACT,KAAA,EAAO,gBAAA;AAAA,EACP,IAAA,EAAM,eAAA;AAAA,EACN,YAAA,EAAc,uBAAA;AAAA,EACd,UAAA,EAAY,qBAAA;AAAA,EACZ,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,gBAAA;AAAA,EACP,SAAA,EAAW,oBAAA;AAAA,EACX,QAAA,EAAU,mBAAA;AAAA,EACV,GAAA,EAAK,cAAA;AAAA,EACL,UAAA,EAAY,qBAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAC;AC5WD,IAAM,wBAAA,GAA2B,GAAA;AAKjC,IAAM,kBAAkB,CAAC;AAAA,EACvB,QAAA;AAAA,EACA,aAAA,GAAgB;AAClB,CAAA,KAGM;AACJ,EAAA,uBAAOA,GAAAA,CAACuC,SAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,eAAgB,QAAA,EAAS,CAAA;AAC/D;AAEA,IAAM,UAAU,CAAC;AAAA,EACf,aAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAGM;AAGJ,EAAA,MAAM,QAAQ,aAAA,IAAiB,wBAAA;AAC/B,EAAA,uBACEvC,GAAAA,CAACuC,SAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EACpB,QAAA,kBAAAvC,GAAAA,CAACuC,SAAA,CAAY,IAAA,EAAZ,EAAkB,GAAG,KAAA,EAAQ,UAAS,CAAA,EACzC,CAAA;AAEJ;AAEA,IAAM,iBAAiB,CAAC;AAAA,EACtB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,IAAI,OAAA,IAAiBC,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACExC,GAAAA;AAAA,MAACuC,SAAA,CAAY,OAAA;AAAA,MAAZ;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACEvC,IAACuC,SAAA,CAAY,OAAA,EAAZ,EAAoB,GAAA,EAAW,GAAG,OAChC,QAAA,EACH,CAAA;AAEJ;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAE7B,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,WAAA,GAAc,CAAA;AAAA,EACd,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAMEvC,GAAAA,CAACuC,SAAA,CAAY,MAAA,EAAZ,EACC,QAAA,kBAAAvC,GAAAA;AAAA,EAACuC,SAAA,CAAY,UAAA;AAAA,EAAZ;AAAA,IACC,IAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA,EAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAQ;AAAA,IAEvC,QAAA,kBAAAvC,GAAAA;AAAA,MAACuC,SAAA,CAAY,KAAA;AAAA,MAAZ;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,iBAAA,CAAkB,cAAA,EAAgB,SAAS,CAAA;AAAA,QACzD,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,QAChD,GAAG;AAAA;AAAA;AACN;AACF,CAAA,EACF;AAEF,cAAA,CAAe,WAAA,GAAc,gBAAA;ACvEtB,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA,GAAiB,qBAAA;AAAA,EACjB,WAAA,GAAc,MAAA;AAAA,EACd,QAAA,GAAW,MAAA;AAAA,EACX,SAAA,GAAY,IAAA;AAAA,EACZ,QAAA;AAAA,EACA,OAAA,GAAU,OAAA;AAAA,EACV,IAAA,GAAO,MAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUE,iBAAS,KAAK,CAAA;AAEhD,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,IAAA,EAAMC,IAAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM;AAAA,IACN,QAAQ,CAAA;AAEV,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,KAAK,CAAA;AACzC,MAAA,SAAA,CAAU,IAAI,CAAA;AAEd,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,KAAA,CAAM,QAAQ,cAAc,CAAA;AAAA,MAC9B;AAEA,MAAA,QAAA,GAAW,KAAK,CAAA;AAGhB,MAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,IACzC,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,KAAK,CAAA;AACtC,MAAA,KAAA,CAAM,MAAM,6BAA6B,CAAA;AAAA,IAC3C;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,yBACJ3C,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA,EAAS,UAAA;AAAA,MACT,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,MAAA,IAAU,sCAAsC,SAAS,CAAA;AAAA,MAC3F,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,MAAA,mBAASC,GAAAA,CAACmB,KAAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,CAAA,mBAAKnB,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,QAC1E,yBAASA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAU,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBAC1CA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAW,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA;AAAA,GACzC;AAIF,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,uBACED,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,sBAChCA,IAAC,cAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,MAAA,GAAS,SAAA,GAAY,WAAA,EAAY,CAAA,EACvC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,MAAA;AACT;AASO,SAAS,YAAA,CAAa;AAAA,EAC3B,EAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAGiE;AAC/D,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAA;AAAA,MACP,QAAA,EAAS,MAAA;AAAA,MACT,WAAA,EAAY,SAAA;AAAA,MACZ,cAAA,EAAe,WAAA;AAAA,MACf,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MAChC,GAAG;AAAA;AAAA,GACN;AAEJ;AAKO,SAAS,cAAA,CAAe;AAAA,EAC7B,GAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAGiE;AAC/D,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,GAAA;AAAA,MACP,QAAA,EAAS,MAAA;AAAA,MACT,WAAA,EAAY,WAAA;AAAA,MACZ,cAAA,EAAe,aAAA;AAAA,MACf,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MAChC,GAAG;AAAA;AAAA,GACN;AAEJ;AAKO,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAGiE;AAC/D,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAS,MAAA;AAAA,MACT,WAAA,EAAY,WAAA;AAAA,MACZ,cAAA,EAAe,aAAA;AAAA,MACf,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MAChC,GAAG;AAAA;AAAA,GACN;AAEJ;AAgBO,SAAS,cAAc,EAAE,KAAA,EAAO,OAAO,QAAA,GAAW,IAAA,EAAM,WAAU,EAAuB;AAC9F,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA,EACpD,QAAA,EAAA;AAAA,IAAA,KAAA,oBAASA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EAA0C,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MAAM;AAAA,KAAA,EAAC,CAAA;AAAA,oBAC3EC,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,8CAAA,EAAgD,QAAA,IAAY,UAAU,CAAA;AAAA,QACpF,KAAA,EAAO,KAAA;AAAA,QAEN,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBACAA,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAc,SAAA,EAAW,KAAA,EAAO,WAAU,iBAAA,EAAkB;AAAA,GAAA,EAC1E,CAAA;AAEJ;AAiBO,SAAS,kBAAA,CACd,OAAA,GAAqC,EAAC,EACZ;AAC1B,EAAA,MAAM,EAAE,cAAA,GAAiB,qBAAA,EAAuB,YAAY,IAAA,EAAM,OAAA,GAAU,KAAK,GAAI,OAAA;AAErF,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUyC,iBAAS,KAAK,CAAA;AAEhD,EAAA,MAAM,IAAA,GAAaA,OAAA,CAAA,WAAA;AAAA,IACjB,OAAO,KAAA,KAAoC;AACzC,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,KAAK,CAAA;AACzC,QAAA,SAAA,CAAU,IAAI,CAAA;AAEd,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,KAAA,CAAM,QAAQ,cAAc,CAAA;AAAA,QAC9B;AAEA,QAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,OAAO,CAAA;AAC1C,QAAA,OAAO,IAAA;AAAA,MACT,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,KAAK,CAAA;AACtC,QAAA,KAAA,CAAM,MAAM,6BAA6B,CAAA;AACzC,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,SAAA,EAAW,OAAO;AAAA,GACrC;AAEA,EAAA,OAAO,EAAE,QAAQ,IAAA,EAAK;AACxB;;;ACjQO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO;AAAA,IACL,EAAA,EAAI,eAAA,CAAgB,KAAK,CAAA,GAAI,CAAA;AAAA;AAAA,IAC7B,EAAA,EAAI,gBAAA,CAAiB,EAAE,CAAA,GAAI;AAAA;AAAA,GAC7B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,CAAA,EAAG,iBAAiB,CAAC,CAAA;AAAA;AAAA,IACrB,CAAA,EAAG,iBAAiB,CAAC;AAAA;AAAA,GACvB;AAAA,EACA,GAAA,EAAK;AAAA,IACH,KAAA,EAAO,iBAAiB,CAAC,CAAA;AAAA;AAAA,IACzB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA;AAAA,IAC3B,GAAA,EAAK,iBAAiB,CAAC;AAAA;AAAA,GACzB;AAAA,EACA,cAAc,eAAA,CAAgB,EAAA;AAAA;AAAA,EAC9B,QAAA,EAAU;AAAA,IACR,MAAM,iBAAA,CAAkB,EAAA;AAAA;AAAA,IACxB,UAAU,iBAAA,CAAkB;AAAA;AAAA,GAC9B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW,GAAA;AAAA,IACX,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,oBAAoB,QAAA,CAAS,IAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;ACyBA,IAAM,kBAAA,GAAqB,CAAC,KAAA,MACzB;AAAA,EACC,sBAAA,EAAwB,CAAA,EAAG,iBAAA,CAAkB,KAAA,CAAM,KAAK,CAAC,CAAA,EAAA,CAAA;AAAA,EACzD,0BAAA,EAA4B,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,CAAC,CAAA,EAAA,CAAA;AAAA,EAC1D,0BAAA,EAA4B,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,CAAC,CAAA,EAAA,CAAA;AAAA,EAC1D,0BAAA,EAA4B,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAA,CAAA;AAAA,EAC1D,4BAAA,EAA8B,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,OAAO,CAAA,EAAA,CAAA;AAAA,EAC9D,wBAAA,EAA0B,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,GAAG,CAAA,EAAA,CAAA;AAAA,EACtD,uBAAA,EAAyB,CAAA,EAAG,iBAAA,CAAkB,YAAY,CAAA,EAAA,CAAA;AAAA,EAC1D,0BAAA,EAA4B,CAAA,EAAG,iBAAA,CAAkB,QAAA,CAAS,IAAI,CAAA,EAAA,CAAA;AAAA,EAC9D,8BAAA,EAAgC,CAAA,EAAG,iBAAA,CAAkB,QAAA,CAAS,QAAQ,CAAA,EAAA,CAAA;AAAA,EACtE,yBAAA,EAA2B,CAAA,EAAG,iBAAA,CAAkB,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,EAC/D,uBAAA,EAAyB,kBAAkB,MAAA,CAAO;AACpD,CAAA,CAAA;AAEF,SAAS,eAAkB,IAAA,EAAuC;AAChE,EAAA,OAAO,CAAC,IAAA,KAAmB;AACzB,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,IAAI,CAAA;AAAA,WAAA,IAC9B,GAAA,MAAS,OAAA,GAAU,IAAA;AAAA,IAC9B;AAAA,EACF,CAAA;AACF;AAEA,SAAS,mBAAmB,OAAA,EAA0C;AACpE,EAAA,OAAO,OAAA,YAAmB,WAAA,IAAe,CAAC,OAAA,CAAQ,aAAa,UAAU,CAAA;AAC3E;AAEA,SAAS,sBAAsB,KAAA,EAA2B;AACxD,EAAA,IAAI,CAAC,KAAA,EAAO;AACZ,EAAA,MAAM,SAAS,KAAA,CAAM,aAAA;AAAA,IACnB;AAAA,GACF;AACA,EAAA,IAAI,MAAA,IAAU,kBAAA,CAAmB,MAAM,CAAA,EAAG;AACxC,IAAA,MAAA,CAAO,KAAA,EAAM;AACb,IAAA;AAAA,EACF;AACA,EAAA,KAAA,CAAM,KAAA,EAAM;AACd;AAMA,IAAM,qBAAqB,CAAC;AAAA,EAC1B,GAAA,EAAK,YAAA;AAAA,EACL,OAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,WAAA,GAAc,CAAA;AAAA,EACd,KAAA,GAAQ,IAAA;AAAA,EACR,SAAA,GAAY,kBAAkB,MAAA,CAAO,SAAA;AAAA,EACrC,UAAA,GAAa,kBAAkB,MAAA,CAAO,UAAA;AAAA,EACtC,QAAA;AAAA,EACA;AACF,CAAA,KAAoF;AAClF,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUE,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAmBA,eAAiC,IAAI,CAAA;AAC9D,EAAA,MAAM,QAAA,GAAiBA,eAA8B,IAAI,CAAA;AACzD,EAAA,MAAM,YAAA,GAAqBA,eAAsB,IAAI,CAAA;AACrD,EAAA,MAAM,aAAA,GAAsBA,eAAsB,IAAI,CAAA;AAEtD,EAAA,MAAM,WAAA,GAAoBA,oBAAY,MAAM;AAC1C,IAAA,IAAI,YAAA,CAAa,OAAA,EAAS,MAAA,CAAO,YAAA,CAAa,aAAa,OAAO,CAAA;AAClE,IAAA,IAAI,aAAA,CAAc,OAAA,EAAS,MAAA,CAAO,YAAA,CAAa,cAAc,OAAO,CAAA;AACpE,IAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,IAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,EAC1B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAqBA,oBAAY,MAAM;AAC3C,IAAA,WAAA,EAAY;AACZ,IAAA,YAAA,CAAa,UAAU,MAAA,CAAO,UAAA,CAAW,MAAM,OAAA,CAAQ,IAAI,GAAG,SAAS,CAAA;AAAA,EACzE,CAAA,EAAG,CAAC,WAAA,EAAa,SAAS,CAAC,CAAA;AAE3B,EAAA,MAAM,aAAA,GAAsBA,oBAAY,MAAM;AAC5C,IAAA,WAAA,EAAY;AACZ,IAAA,aAAA,CAAc,UAAU,MAAA,CAAO,UAAA,CAAW,MAAM,OAAA,CAAQ,KAAK,GAAG,UAAU,CAAA;AAAA,EAC5E,CAAA,EAAG,CAAC,WAAA,EAAa,UAAU,CAAC,CAAA;AAE5B,EAAA,MAAM,QAAA,GAAiBA,oBAAY,MAAM;AACvC,IAAA,WAAA,EAAY;AACZ,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAMA,OAAA,CAAA,SAAA,CAAU,MAAM,WAAA,EAAa,CAAC,WAAW,CAAC,CAAA;AAEhD,EAAA,MAAM,cAAA,GAAuBA,uBAAe,QAAQ,CAAA,GAAI,2BAAW3C,GAAAA,CAAC,UAAM,QAAA,EAAS,CAAA;AACnF,EAAA,MAAM,aAAA,GAAgB,cAAA;AAEtB,EAAA,uBACED,IAAAA,CAAC6C,SAAA,CAAY,MAAZ,EAAiB,IAAA,EAAY,cAAc,OAAA,EAC1C,QAAA,EAAA;AAAA,oBAAA5C,GAAAA;AAAA,MAAC4C,SAAA,CAAY,OAAA;AAAA,MAAZ;AAAA,QACC,GAAA,EAAK,WAAA,CAAY,UAAA,EAAY,YAAY,CAAA;AAAA,QACzC,MAAA,EAAQ,aAAA;AAAA,QACR,YAAA,EAAc,YAAA;AAAA,QACd,YAAA,EAAc,aAAA;AAAA,QACd,OAAA,EAAS,YAAA;AAAA,QACT,MAAA,EAAQ,aAAA;AAAA,QACR,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,UAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,YAAA,QAAA,EAAS;AACT,YAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAC1B,YAAA;AAAA,UACF;AACA,UAAA,IAAA,CAAK,MAAM,GAAA,KAAQ,WAAA,IAAe,MAAM,GAAA,KAAQ,OAAA,KAAY,CAAC,IAAA,EAAM;AACjE,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,WAAA,EAAY;AACZ,YAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,YAAA,MAAA,CAAO,qBAAA,CAAsB,MAAM,qBAAA,CAAsB,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA,UAC5E;AAAA,QACF;AAAA;AAAA,KACF;AAAA,oBACA5C,GAAAA,CAAC4C,SAAA,CAAY,MAAA,EAAZ,EACC,QAAA,kBAAA5C,GAAAA;AAAA,MAAC4C,SAAA,CAAY,UAAA;AAAA,MAAZ;AAAA,QACC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA;AAAA,QACA,WAAA;AAAA,QACA,SAAA,EAAU,MAAA;AAAA,QAEV,QAAA,kBAAA5C,GAAAA;AAAA,UAAC4C,SAAA,CAAY,KAAA;AAAA,UAAZ;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,QAAA,EAAU,EAAA;AAAA,YACV,YAAA,EAAc,YAAA;AAAA,YACd,YAAA,EAAc,aAAA;AAAA,YACd,OAAA,EAAS,YAAA;AAAA,YACT,MAAA,EAAQ,aAAA;AAAA,YACR,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,cAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,gBAAA,QAAA,EAAS;AACT,gBAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,cAC5B;AAAA,YACF,CAAA;AAAA,YACA,KAAA,EAAO,mBAAmB,KAAK,CAAA;AAAA,YAC/B,SAAA,EAAW,EAAA;AAAA,cACT,sGAAA;AAAA,cACA,sEAAA;AAAA,cACA,uEAAA;AAAA,cACA,4FAAA;AAAA,cACA,kHAAA;AAAA,cACA,2HAAA;AAAA,cACA,qHAAA;AAAA,cACA,+GAAA;AAAA,cACA,yHAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,KACF,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AACA,kBAAA,CAAmB,WAAA,GAAc,qBAAA;AA6D1B,IAAM,WAAA,GAAc;AAAA,EAEzB,OAAA,EAAS;AACX,CAAA;AC7NO,IAAM,WAAA,GAAc,SAASC,YAAAA,CAAY;AAAA,EAC9C,GAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAmE;AACjE,EAAA,uBACE9C,KAAC,IAAA,EAAA,EAAG,GAAA,EAAU,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAChD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,kEAAA,EACX,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,2BACCC,GAAAA,CAAC,YAAY,OAAA,EAAZ,EAAoB,SAAS,OAAA,EAAS,IAAA,EAAK,OAAM,UAAA,EAAY,CAAA,EAC5D,0BAAAA,GAAAA,CAAC8C,WAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,2CAA0C,CAAA,EAC/E;AAAA,KAAA,EAEJ,CAAA;AAAA,oBACA9C,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,4CAA4C,QAAA,EAAA,OAAA,EAAQ;AAAA,GAAA,EACpE,CAAA;AAEJ;AClBA,IAAM,iBAAA,GAA0B+C,OAAA,CAAA,aAAA,CAAsC,EAAE,CAAA;AAExE,SAAS,mBAAmB,MAAA,EAAsD;AAChF,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO,OAAO,MAAA,KAAW,QAAA,GAAW,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA,GAAO,MAAA;AACtD;AAqCA,SAAS,MAAA,CAAO;AAAA,EACd,IAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA,GAAQ,IAAA;AAAA,EACR,qBAAA,GAAwB,KAAA;AAAA,EACxB,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,MAAM,iBAAiB,IAAA,IAAQ,IAAA;AAC/B,EAAA,MAAM,SAAA,GAA+D;AAAA,IACnE,GAAG,KAAA;AAAA,IACH,SAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,IAAI,mBAAmB,MAAA,EAAW;AAChC,IAAA,SAAA,CAAU,IAAA,GAAO,cAAA;AAAA,EACnB;AAEA,EAAA,IAAI,YAAA,KAAiB,MAAA,IAAa,SAAA,KAAc,MAAA,EAAW;AACzD,IAAA,SAAA,CAAU,YAAA,GAAe,CAAC,QAAA,KAAa;AACrC,MAAA,YAAA,GAAe,QAAQ,CAAA;AAEvB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,SAAA,IAAY;AAAA,MACd;AAAA,IACF,CAAA;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,GAAqBA,gBAAgC,MAAM;AAC/D,IAAA,MAAM,iBAAiB,YAAA,IAAgB,MAAA;AAEvC,IAAA,OAAO,mBAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,QAAQ,cAAA,EAAe;AAAA,EACtE,CAAA,EAAG,CAAC,YAAA,EAAc,MAAM,CAAC,CAAA;AAEzB,EAAA,uBACE/C,GAAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,OAAO,YAAA,EACjC,QAAA,kBAAAA,GAAAA,CAACgD,QAAA,CAAgB,MAAhB,EAAqB,WAAA,EAAU,QAAA,EAAU,GAAG,WAAW,CAAA,EAC1D,CAAA;AAEJ;AAEA,SAAS,aAAA,CAAc,EAAE,GAAG,KAAA,EAAM,EAAuB;AACvD,EAAA,uBAAOhD,IAACgD,QAAA,CAAgB,OAAA,EAAhB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE;AAEA,SAAS,YAAA,CAAa,EAAE,GAAG,KAAA,EAAM,EAAsB;AACrD,EAAA,uBAAOhD,IAACgD,QAAA,CAAgB,MAAA,EAAhB,EAAuB,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACtE;AAEA,SAAS,WAAA,CAAY,EAAE,GAAG,KAAA,EAAM,EAAqB;AACnD,EAAA,uBAAOhD,IAACgD,QAAA,CAAgB,KAAA,EAAhB,EAAsB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,OAAM,EAAuB;AAClE,EAAA,uBACEhD,GAAAA;AAAA,IAACgD,QAAA,CAAgB,OAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yDAAA;AAAA,QACA,yHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA,GAAiB,IAAA;AAAA,EACjB,UAAA,GAAa,IAAA;AAAA,EACb,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuB;AACrB,EAAA,MAAM,WAAA,GAAoBD,YAAI,iBAAiB,CAAA;AAC/C,EAAA,MAAM,cAAA,GAAiB,kBAAA,CAAmB,MAAA,IAAU,WAAA,CAAY,MAAM,CAAA;AACtE,EAAA,MAAM,YAAA,GACJ,cAAA,KAAmB,MAAA,GACf,KAAA,GACC;AAAA,IACC,iBAAA,EAAmB,cAAA;AAAA,IACnB,GAAG;AAAA,GACL;AAEN,EAAA,uBACEhD,IAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAU,eAAA,EACtB,QAAA,EAAA;AAAA,oBAAAC,IAAC,aAAA,EAAA,EAAc,CAAA;AAAA,oBACfD,IAAAA;AAAA,MAACiD,QAAA,CAAgB,OAAA;AAAA,MAAhB;AAAA,QACC,WAAA,EAAU,gBAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,2FAAA;AAAA,UACA,cAAA,IAAkB,iBAAA;AAAA,UAClB,sZAAA;AAAA,UACA,8XAAA;AAAA,UACA,oPAAA;AAAA,UACA,8OAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO,YAAA;AAAA,QACN,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,UAAA,mBACChD,GAAAA,CAACgD,QAAA,CAAgB,QAAhB,EAAuB,SAAA,EAAU,4IAA2I,CAAA,GAC3K,IAAA;AAAA,UACH;AAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAsB;AAChE,EAAA,uBACEhD,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,8EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoB;AAC5D,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2EAAA;AAAA,QACA,gJAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAsB;AAChE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,sFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAqB;AAC9D,EAAA,uBACEA,GAAAA;AAAA,IAACgD,QAAA,CAAgB,KAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mDAAA,EAAqD,SAAS,CAAA;AAAA,MAC3E,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,iBAAA,CAAkB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA2B;AAC1E,EAAA,uBACEhD,GAAAA;AAAA,IAACgD,QAAA,CAAgB,WAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG;AAAA;AAAA,GACN;AAEJ;;;AChRO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW;AAAA,MACT,EAAA,EAAI,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA;AAAA,MAC3B,EAAA,EAAI,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA;AAAA,MAC3B,EAAA,EAAI,gBAAA,CAAiB,EAAE,CAAA,GAAI;AAAA,KAC7B;AAAA,IACA,QAAA,EAAU;AAAA,MACR,EAAA,EAAI,iBAAiB,CAAC,CAAA;AAAA,MACtB,EAAA,EAAI,iBAAiB,CAAC,CAAA;AAAA,MACtB,EAAA,EAAI,iBAAiB,CAAC;AAAA,KACxB;AAAA,IACA,QAAA,EAAU;AAAA,MACR,EAAA,EAAI,iBAAiB,CAAC,CAAA;AAAA,MACtB,EAAA,EAAI,iBAAiB,EAAE,CAAA;AAAA,MACvB,EAAA,EAAI,iBAAiB,EAAE;AAAA,KACzB;AAAA,IACA,QAAQ,eAAA,CAAgB;AAAA,GAC1B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA;AAAA,IACjC,mBAAA,EAAqB,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA;AAAA,IAC5C,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,UAAA,EAAY,iBAAiB,CAAC;AAAA,GAChC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,MAAM,eAAA,CAAgB,EAAA;AAAA,IACtB,QAAQ,eAAA,CAAgB;AAAA,GAC1B;AAAA,EACA,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,IAAI,iBAAA,CAAkB,EAAA;AAAA,MACtB,IAAI,iBAAA,CAAkB,IAAA;AAAA,MACtB,IAAI,iBAAA,CAAkB;AAAA,KACxB;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAI,iBAAA,CAAkB,EAAA;AAAA,MACtB,IAAI,iBAAA,CAAkB,EAAA;AAAA,MACtB,IAAI,iBAAA,CAAkB;AAAA,KACxB;AAAA,IACA,aAAa,mBAAA,CAAoB,QAAA;AAAA,IACjC,eAAA,EAAiB,iBAAiB,CAAC,CAAA;AAAA,IACnC,qBAAA,EAAuB,iBAAiB,CAAC;AAAA;AAE7C,CAAA;ACnBA,IAAM,gBAAA,GAAsD;AAAA,EAC1D,aAAA,EAAe,kDAAA;AAAA,EACf,aAAA,EAAe,8BAAA;AAAA,EACf,WAAA,EAAa,8BAAA;AAAA,EACb,KAAA,EAAO,kCAAA;AAAA,EACP,YAAA,EAAc,kDAAA;AAAA,EACd,OAAA,EAAS,gDAAA;AAAA,EACT,UAAA,EAAY,8BAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,iBAAA,GAAuD;AAAA,EAC3D,aAAA,EAAe,uBAAA;AAAA,EACf,aAAA,EAAe,cAAA;AAAA,EACf,WAAA,EAAa,cAAA;AAAA,EACb,KAAA,EAAO,cAAA;AAAA,EACP,YAAA,EAAc,uBAAA;AAAA,EACd,OAAA,EAAS,uBAAA;AAAA,EACT,UAAA,EAAY,uBAAA;AAAA,EACZ,KAAA,EAAO;AACT,CAAA;AAoBA,IAAM,iBAAA,GAAoB,CAAC,IAAA,MACxB;AAAA,EACC,4BAA4B,CAAA,EAAG,gBAAA,CAAiB,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EACpE,2BAA2B,CAAA,EAAG,gBAAA,CAAiB,IAAA,CAAK,QAAA,CAAS,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EAClE,2BAA2B,CAAA,EAAG,gBAAA,CAAiB,IAAA,CAAK,QAAA,CAAS,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EAClE,sBAAA,EAAwB,CAAA,EAAG,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA,EAAA,CAAA;AAAA,EACvD,iCAAA,EAAmC,CAAA,EAAG,gBAAA,CAAiB,OAAA,CAAQ,QAAQ,CAAA,EAAA,CAAA;AAAA,EACvE,qCAAA,EAAuC,CAAA,EAAG,gBAAA,CAAiB,OAAA,CAAQ,mBAAmB,CAAA,EAAA,CAAA;AAAA,EACtF,yBAAA,EAA2B,CAAA,EAAG,gBAAA,CAAiB,OAAA,CAAQ,QAAQ,CAAA,EAAA,CAAA;AAAA,EAC/D,wBAAA,EAA0B,CAAA,EAAG,gBAAA,CAAiB,OAAA,CAAQ,OAAO,CAAA,EAAA,CAAA;AAAA,EAC7D,2BAAA,EAA6B,CAAA,EAAG,gBAAA,CAAiB,OAAA,CAAQ,UAAU,CAAA,EAAA,CAAA;AAAA,EACnE,yBAAA,EAA2B,CAAA,EAAG,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA,EAAA,CAAA;AAAA,EACxD,2BAAA,EAA6B,CAAA,EAAG,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA,EAAA,CAAA;AAAA,EAC5D,4BAA4B,CAAA,EAAG,gBAAA,CAAiB,UAAA,CAAW,KAAA,CAAM,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EACtE,kCAAkC,CAAA,EAAG,gBAAA,CAAiB,UAAA,CAAW,WAAA,CAAY,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,EAClF,4BAAA,EAA8B,CAAA,EAAG,gBAAA,CAAiB,UAAA,CAAW,WAAW,CAAA,CAAA;AAAA,EACxE,iCAAA,EAAmC,CAAA,EAAG,gBAAA,CAAiB,UAAA,CAAW,eAAe,CAAA,EAAA,CAAA;AAAA,EACjF,uCAAA,EAAyC,CAAA,EAAG,gBAAA,CAAiB,UAAA,CAAW,qBAAqB,CAAA,EAAA;AAC/F,CAAA,CAAA;AAEF,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEhD,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,aAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW,EAAA;AAAA,MACT,iIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA;AACH;AAEF,cAAA,CAAe,WAAA,GAAc,iBAAA;AAE7B,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,IAAA,GAAO,KAAA;AAAA,EACP,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA0E;AACxE,EAAA,MAAM,UAAU,QAAA,IAAY,CAAC,QAAQ,IAAI,CAAA,CAAE,OAAO,OAAO,CAAA;AACzD,EAAA,MAAM,UAAA,GAAmBiD,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,OAAO,EAAE,MAAA,GAAS,CAAA;AAE5D,EAAA,uBACEjD,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAW,OAAO,QAAA,GAAW,MAAA;AAAA,MAC7B,SAAA,EAAW,EAAA;AAAA,QACT,mLAAA;AAAA,QACA,iBAAiB,OAAO,CAAA;AAAA,QACxB,KAAA,KAAU,WAAW,0BAAA,GAA6B,uBAAA;AAAA,QAClD;AAAA,OACF;AAAA,MACA,OAAO,EAAE,GAAG,kBAAkB,IAAI,CAAA,EAAG,GAAG,KAAA,EAAM;AAAA,MAC7C,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAD,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,+FAAA;AAAA,YACA,KAAA,KAAU,WAAW,cAAA,GAAiB;AAAA,WACxC;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,IAAA,mBACCC,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,iBAAA,CAAkB,OAAO,CAAC,CAAA,EAAI,QAAA,EAAA,IAAA,EAAK,CAAA,GACxE,IAAA;AAAA,4BAEJD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACb,QAAA,EAAA;AAAA,8BAAAC,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,mJAAA,EACX,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,cACC,8BACCA,GAAAA,CAAC,OAAE,SAAA,EAAU,+KAAA,EACV,uBACH,CAAA,GACE;AAAA,aAAA,EACN,CAAA;AAAA,YAEC,6BACCA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,qDAAA;AAAA,kBACA,KAAA,KAAU,WAAW,gBAAA,GAAmB;AAAA,iBAC1C;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA,aACH,GACE;AAAA;AAAA;AAAA;AACN;AAAA,GACF;AAEJ;AACA,cAAA,CAAe,WAAA,GAAc,iBAAA;AAEtB,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM;AACR;ACvGA,IAAM,QAAA,GAAmE;AAAA,EACvE,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,QAAA,GAAmE;AAAA,EACvE,KAAA,EAAO,EAAA;AAAA,EACP,MAAA,EAAQ,EAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,WAAA,GAAyC;AAAA,EAC7C,KAAA,EAAO,8CAAA;AAAA,EACP,MAAA,EAAQ,8CAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,eAAA,GAA6C;AAAA,EACjD,KAAA,EAAO,EAAA;AAAA,EACP,MAAA,EAAQ,EAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,SAAS,gBAAgB,IAAA,EAAyE;AAChG,EAAA,IAAI,IAAA,EAAM,UAAA,CAAW,MAAM,CAAA,EAAG;AAC5B,IAAA,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,GAAA,EAAK,qBAAA,EAAsB;AAAA,EACxD;AAEA,EAAA,OAAO,EAAC;AACV;AAqBO,IAAM,eAAe,CAAC;AAAA,EAC3B,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,KAA4E;AAC1E,EAAA,MAAM,EAAA,GAAK,IAAA;AAGX,EAAA,MAAM,OAAA,GAAU,OAAO,OAAA,IAAW,QAAA;AAElC,EAAA,uBACED,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,WAAW,EAAA,CAAG,mDAAA,EAAqD,QAAA,CAAS,EAAE,GAAG,SAAS,CAAA;AAAA,MAE1F,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAACkD,WAAY,IAAA,EAAM,QAAA,CAAS,EAAE,CAAA,EAAG,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,wBAEzEnD,KAAC,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,KAAA,oBAASA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA;AAAA,YAAA,KAAA;AAAA,YAAM;AAAA,WAAA,EAAO,CAAA;AAAA,UACrD,OAAA;AAAA,UACA,OAAO,MAAA,IAAU,KAAA,CAAM,wBACtBA,IAAAA,CAAAS,UAAA,EACG,QAAA,EAAA;AAAA,YAAA,GAAA;AAAA,4BACDT,IAAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,MAAM,KAAA,CAAM,IAAA;AAAA,gBACZ,SAAA,EAAU,iDAAA;AAAA,gBACV,MAAA,EAAO,QAAA;AAAA,gBACP,GAAA,EAAI,qBAAA;AAAA,gBAEH,QAAA,EAAA;AAAA,kBAAA,KAAA,CAAM,MAAA;AAAA,kCACPC,IAACmD,QAAA,EAAA,EAAa,IAAA,EAAM,IAAI,aAAA,EAAY,MAAA,EAAO,WAAU,eAAA,EAAgB;AAAA;AAAA;AAAA;AACvE,WAAA,EACF;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAQ3B,IAAM,eAAe,CAAC;AAAA,EACpB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,KAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA,GAAe,YAAA;AAAA,EACf,IAAA,GAAO,QAAA;AAAA,EACP,MAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,SAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoE;AAClE,EAAA,MAAM,OAAA,GAAU,OAAO,OAAA,IAAW,QAAA;AAClC,EAAA,MAAM,aAAA,GAAgB,SAAS,KAAA,EAAO,KAAA;AACtC,EAAA,MAAM,cAAA,GAAiB,UAAU,KAAA,EAAO,MAAA;AACxC,EAAA,MAAM,YAAA,GAAe,QAAQ,KAAA,EAAO,IAAA;AACpC,EAAA,MAAM,eAAA,GAAkB,WAAW,KAAA,EAAO,EAAA;AAC1C,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,IAAA,KAAS,WAAA,GAAc,OAAA,GAAU,QAAA,CAAA;AAC/D,EAAA,MAAM,QAAA,GAAW,IAAA,KAAS,KAAA,GAAQ,MAAA,GAAY,IAAA;AAE9C,EAAA,uBACEpD,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAM,YAAA;AAAA,MACN,WAAA,EAAW,QAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,2EAAA;AAAA,QACA,YAAY,IAAI,CAAA;AAAA,QAChB;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,gJAAA;AAAA,YAEV,0BAAAA,GAAAA,CAACkD,OAAA,EAAA,EAAY,IAAA,EAAM,eAAA,CAAgB,IAAI,CAAA,EAAG;AAAA;AAAA,SAC5C;AAAA,wBAEAnD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,IAAS,4BACRC,GAAAA,CAAC,OAAE,SAAA,EAAU,qEAAA,EACV,iBACH,CAAA,GACE,IAAA;AAAA,UAEH,gCACCA,GAAAA,CAAC,OAAE,SAAA,EAAU,yCAAA,EAA2C,yBAAc,CAAA,GACpE,IAAA;AAAA,UAEH,OAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,aAAA,IAAiB,MAAM,CAAA,EACxE,QAAA,EAAA,OAAA,EACH,CAAA,GACE,IAAA;AAAA,UAEH,eAAA,mBACCD,IAAAA,CAAC,SAAA,EAAA,EAAQ,WAAU,oCAAA,EACjB,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAU,4CAAA,EAA6C,QAAA,EAAA,oBAAA,EAEhE,CAAA;AAAA,4BACAD,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8HAAA,EACb,QAAA,EAAA;AAAA,cAAA,YAAA;AAAA,cAAa,IAAA;AAAA,cAAG,eAAA;AAAA,cAChB,KAAA,EAAO,IAAA,GAAO,CAAA,EAAA,EAAK,KAAA,CAAM,IAAI,CAAA,CAAA,CAAA,GAAM;AAAA,aAAA,EACtC;AAAA,WAAA,EACF,CAAA,GACE,IAAA;AAAA,UAEH,iCACCC,GAAAA,CAAC,SAAI,SAAA,EAAU,2BAAA,EACZ,yCACCA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,YAAA;AAAA,cACN,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACP,GAAG,gBAAgB,YAAY,CAAA;AAAA,cAE/B,QAAA,EAAA;AAAA;AAAA,8BAGHA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,OAAA,EAAS,aAAA;AAAA,cACT,OAAA,EAAS,QAAA;AAAA,cAER,QAAA,EAAA;AAAA;AAAA,aAGP,CAAA,GACE;AAAA,SAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,OAAA;ACzRpB,IAAM,QAAQ,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoE;AAClE,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,GAAG,YAAA,EAAc,SAAS,CAAA,EAAI,GAAG,KAAA,EACzD,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,SAAM,OAAA,EAAkB,SAAA,EAAW,GAAG,KAAA,IAAS,kBAAkB,GAC/D,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,IACC,QAAA;AAAA,IACA,WAAA,IAAe,CAAC,KAAA,oBAASA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAiC,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,IACnF,yBAASA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wCAAwC,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EACvE,CAAA;AAEJ;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;ACpBpB,IAAM,IAAA,GAAO;AASb,IAAM,gBAAA,GAAyBoD,OAAA,CAAA,aAAA,CAAqC,EAA2B,CAAA;AAE/F,IAAM,YAAY,CAGhB;AAAA,EACA,GAAG;AACL,CAAA,KAA4C;AAC1C,EAAA,uBACEpD,GAAAA,CAAC,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,IAC9C,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAY,GAAG,OAAO,CAAA,EACzB,CAAA;AAEJ;AAEA,IAAM,eAAe,MAAM;AACzB,EAAA,MAAM,YAAA,GAAqBoD,YAAI,gBAAgB,CAAA;AAC/C,EAAA,MAAM,WAAA,GAAoBA,YAAI,eAAe,CAAA;AAC7C,EAAA,MAAM,EAAE,aAAA,EAAe,SAAA,EAAU,GAAI,cAAA,EAAe;AAEpD,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,YAAA,CAAa,IAAA,EAAM,SAAS,CAAA;AAE7D,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,EAAE,IAAG,GAAI,WAAA;AAEf,EAAA,OAAO;AAAA,IACL,EAAA;AAAA,IACA,MAAM,YAAA,CAAa,IAAA;AAAA,IACnB,UAAA,EAAY,GAAG,EAAE,CAAA,UAAA,CAAA;AAAA,IACjB,iBAAA,EAAmB,GAAG,EAAE,CAAA,sBAAA,CAAA;AAAA,IACxB,aAAA,EAAe,GAAG,EAAE,CAAA,kBAAA,CAAA;AAAA,IACpB,GAAG;AAAA,GACL;AACF;AAMA,IAAM,eAAA,GAAwBA,OAAA,CAAA,aAAA,CAAoC,EAA0B,CAAA;AAE5F,IAAM,WAAW,CAAC;AAAA,EAChB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA8F;AAC5F,EAAA,MAAM,KAAWA,OAAA,CAAA,KAAA,EAAM;AAEvB,EAAA,uBACEpD,IAAC,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,EAAE,IAAG,EACpC,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAAI,GAAG,OAAO,CAAA,EACnE,CAAA;AAEJ;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,YAAY,CAAC;AAAA,EACjB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,KAAA,IAAS,kBAAA,EAAoB,SAAS,CAAA;AAAA,MACpD,OAAA,EAAS,UAAA;AAAA,MACR,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,cAAc,CAAC;AAAA,EACnB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,iBAAA,EAAmB,aAAA,KAAkB,YAAA,EAAa;AAE7E,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,UAAA;AAAA,MACJ,kBAAA,EAAkB,CAAC,KAAA,GAAQ,CAAA,EAAG,iBAAiB,CAAA,CAAA,GAAK,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAAA,MACzF,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,MACf,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,kBAAkB,CAAC;AAAA,EACvB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,iBAAA,EAAkB,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,iBAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAE9B,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAI,YAAA,EAAa;AAC9C,EAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA,GAAI,QAAA;AAE9C,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,aAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,sCAAA,EAAwC,SAAS,CAAA;AAAA,MAC9D,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;ACpK1B,IAAM,UAAA,GAAa;AAAA,EACjB,IAAA,EAAM,EAAA;AAAA,EACN,KAAA,EAAO,EAAA;AAAA,EACP,MAAA,EAAQ,EAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,gBAAA,GAAmB;AAAA,EACvB,IAAA,EAAM,CAAA;AAAA,EACN,KAAA,EAAO,CAAA;AAAA,EACP,MAAA,EAAQ,CAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,kBAAA,GAAqB;AAAA,EACzB,GAAA,EAAK,qBAAA;AAAA,EACL,IAAA,EAAM,qBAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAmEA,SAAS,WAAW,KAAA,EAAmC;AACrD,EAAA,OAAO,IAAA,CAAK,IAAI,GAAA,EAAK,IAAA,CAAK,IAAI,CAAA,EAAG,KAAA,IAAS,CAAC,CAAC,CAAA;AAC9C;AAEA,SAAS,cAAc,IAAA,EAA+C;AACpE,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,IAAI,IAAA,IAAQ,WAAW,IAAA,EAAM,OAAO,EAAE,GAAA,EAAK,MAAA,EAAQ,QAAQ,IAAA,EAAK;AAChE,IAAA,IAAI,IAAA,IAAQ,WAAW,KAAA,EAAO,OAAO,EAAE,GAAA,EAAK,OAAA,EAAS,QAAQ,IAAA,EAAK;AAClE,IAAA,IAAI,IAAA,IAAQ,WAAW,MAAA,EAAQ,OAAO,EAAE,GAAA,EAAK,QAAA,EAAU,QAAQ,IAAA,EAAK;AACpE,IAAA,OAAO,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,IAAA,EAAK;AAAA,EACtC;AAEA,EAAA,MAAM,MAAM,IAAA,IAAQ,QAAA;AACpB,EAAA,OAAO,EAAE,GAAA,EAAK,MAAA,EAAQ,UAAA,CAAW,GAAG,CAAA,EAAE;AACxC;AAEA,SAAS,qBAAqB,WAAA,EAA0D;AACtF,EAAA,IAAI,WAAA,KAAgB,OAAA,IAAW,WAAA,KAAgB,WAAA,EAAa;AAC1D,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,qBAAA,CAAsB,OAAeqD,OAAAA,EAAkD;AAC9F,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQA,OAAM,IAC9BA,OAAAA,CAAO,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,MAAA,CAAO,IAAA,CAAK,KAAK,GAAG,IAAA,CAAK,KAAK,CAAU,CAAA,GAC9D,MAAA,CAAO,OAAA,CAAQA,OAAM,CAAA,CAAE,OAAO,CAAC,CAAC,GAAG,CAAA,KAAM,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAEzE,EAAA,MAAM,WAAA,GAAc,KAAA,CACjB,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,MAAO,EAAE,SAAA,EAAW,MAAA,CAAO,GAAG,CAAA,EAAG,OAAM,CAAE,CAAA,CACzD,MAAA,CAAO,CAAC,IAAA,KAAS,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,SAAS,CAAC,CAAA,CAChD,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,SAAA,GAAY,EAAE,SAAS,CAAA;AAE3C,EAAA,IAAI,QAAA,GAAW,WAAA,CAAY,CAAC,CAAA,EAAG,KAAA,IAAS,cAAA;AAExC,EAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,IAAA,IAAI,KAAA,IAAS,KAAK,SAAA,EAAW;AAC3B,MAAA,QAAA,GAAW,IAAA,CAAK,KAAA;AAAA,IAClB;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,OAAeA,OAAAA,EAAsC;AAChF,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQA,OAAM,CAAA,EAAG;AACzB,IAAA,OAAO,qBAAA,CAAsB,OAAOA,OAAM,CAAA;AAAA,EAC5C;AAEA,EAAA,IAAIA,SAAQ,OAAA,EAAS;AACnB,IAAA,OAAOA,OAAAA,CAAO,OAAA;AAAA,EAChB;AAEA,EAAA,OAAO,qBAAA,CAAsB,KAAA,EAAOA,OAAAA,IAAU,kBAAkB,CAAA;AAClE;AAEA,SAAS,qBAAA,CAAsBA,SAA8B,cAAA,EAAiC;AAC5F,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQA,OAAM,CAAA,IAAKA,SAAQ,SAAA,EAAW;AAC/C,IAAA,OAAOA,OAAAA,CAAO,SAAA;AAAA,EAChB;AAEA,EAAA,OAAO,cAAA,IAAkB,mBAAA;AAC3B;AAEA,SAAS,cAAA,CACP,KAAA,EACA,aAAA,EACA,UAAA,EACA,WAAA,EACa;AACb,EAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,IAAA,MAAM,MAAA,GAAU,aAAA,IAAiB,GAAA,GAAM,CAAA,GAAI,cAAe,GAAA,GAAM,CAAA;AAChE,IAAA,MAAM,cAAA,GAAkB,aAAa,GAAA,GAAO,CAAA;AAE5C,IAAA,OAAO;AAAA,MACL,aAAA,EAAe,MAAA;AAAA,MACf,eAAA,EAAiB,MAAA;AAAA,MACjB,iBAAiB,GAAA,GAAM,cAAA;AAAA,MACvB,mBAAmB,GAAA,GAAM;AAAA,KAC3B;AAAA,EACF;AAEA,EAAA,MAAM,GAAA,GAAM,KAAA,KAAU,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,UAAA;AAClC,EAAA,MAAM,mBAAmB,IAAA,CAAK,GAAA,CAAI,GAAA,GAAM,GAAA,GAAM,OAAO,CAAC,CAAA;AAEtD,EAAA,OAAO;AAAA,IACL,aAAA,EAAgB,gBAAgB,KAAA,GAAS,GAAA;AAAA,IACzC,eAAA,EAAkB,gBAAgB,gBAAA,GAAoB,GAAA;AAAA,IACtD,eAAA,EAAiB,GAAA;AAAA,IACjB,iBAAA,EAAmB,MAAM,UAAA,GAAa;AAAA,GACxC;AACF;AAEA,SAAS,kBAAkB,IAAA,EAAyB;AAClD,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,OAAA;AACH,MAAA,OAAO,qBAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,wBAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,qBAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,qBAAA;AAAA;AAEb;AAQO,IAAM,QAAQ,CAAC;AAAA,EACpB,KAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,MAAA,EAAAA,OAAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,SAAA;AAAA,EACd,aAAA,GAAgB,KAAA;AAAA,EAChB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,EAAmB,cAAA;AAAA,EACnB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoE;AAClE,EAAA,MAAM,cAAA,GAAiB,cAAc,IAAI,CAAA;AACzC,EAAA,MAAM,kBAAA,GAAqB,qBAAqB,WAAW,CAAA;AAC3D,EAAA,MAAM,YAAA,GAAe,WAAW,KAAK,CAAA;AACrC,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,GAAA,KAAQ,MAAA,GAAS,IAAA,GAAO,EAAA;AACtD,EAAA,MAAM,aAAA,GAAgB,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,MAAA;AACpC,EAAA,MAAM,QAAA,GAAW,cAAA;AAAA,IACf,YAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA,CAAiB,eAAe,GAAG,CAAA;AAAA,IACnC;AAAA,GACF;AACA,EAAA,MAAM,eAAA,GAAA,CAAmB,SAAA,IAAa,KAAA,KAAU,IAAA,KAAS,eAAe,GAAA,KAAQ,MAAA;AAChF,EAAA,MAAM,aAAA,GAAgB,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,QAAQ,KAAA,GAAQ,QAAA;AAClE,EAAA,MAAM,YAAA,GAAe,mBAAA,CAAoB,YAAA,EAAcA,OAAM,CAAA;AAC7D,EAAA,MAAM,UAAA,GAAa,qBAAA,CAAsBA,OAAAA,EAAQ,cAAc,CAAA;AAC/D,EAAA,MAAM,eAAA,GACJ,cAAc,aAAA,GAAgB,mBAAA,GAAsB,GAAG,IAAA,CAAK,KAAA,CAAM,YAAY,CAAC,CAAA,QAAA,CAAA,CAAA;AAEjF,EAAA,uBACEtD,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,GAAA;AAAA,MACA,IAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAY,iBAAiB,MAAA,GAAY,eAAA;AAAA,MACzC,iBAAA,EAAiB,cAAA;AAAA,MACjB,eAAA,EAAe,CAAA;AAAA,MACf,eAAA,EAAe,GAAA;AAAA,MACf,eAAA,EAAe,gBAAgB,MAAA,GAAY,YAAA;AAAA,MAC3C,aAAW,aAAA,IAAiB,MAAA;AAAA,MAC5B,SAAA,EAAW,EAAA,CAAG,2DAAA,EAA6D,SAAS,CAAA;AAAA,MACpF,KAAA,EAAO,EAAE,KAAA,EAAO,cAAA,CAAe,QAAQ,MAAA,EAAQ,cAAA,CAAe,MAAA,EAAQ,GAAG,KAAA,EAAM;AAAA,MAE/E,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,IAAA,EAAK,MAAA;AAAA,YACL,QAAQ,cAAA,CAAe,MAAA;AAAA,YACvB,OAAO,cAAA,CAAe,MAAA;AAAA,YACtB,OAAA,EAAQ,aAAA;AAAA,YAER,QAAA,EAAA;AAAA,8BAAAC,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,IAAA;AAAA,kBACH,EAAA,EAAG,IAAA;AAAA,kBACH,CAAA,EAAG,MAAA;AAAA,kBACH,MAAA,EAAQ,UAAA;AAAA,kBACR,iBAAiB,CAAA,EAAG,aAAA,GAAgB,gBAAgB,QAAA,CAAS,eAAe,IAAI,aAAa,CAAA,CAAA;AAAA,kBAC7F,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe,OAAA;AAAA,kBACf,WAAA,EAAY,IAAA;AAAA,kBACZ,SAAA,EAAU,wGAAA;AAAA,kBACV,OAAO,EAAE,SAAA,EAAW,CAAA,OAAA,EAAU,QAAA,CAAS,iBAAiB,CAAA,eAAA,CAAA;AAAkB;AAAA,eAC5E;AAAA,cAAA,CAEE,YAAA,GAAe,CAAA,IAAK,kBAAA,KAAuB,OAAA,IAAW,kCACtDA,GAAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA,CAAG,aAAA,IAAiB,uDAAuD,CAAA;AAAA,kBAEtF,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,EAAA,EAAG,IAAA;AAAA,sBACH,EAAA,EAAG,IAAA;AAAA,sBACH,CAAA,EAAG,MAAA;AAAA,sBACH,MAAA,EAAQ,YAAA;AAAA,sBACR,eAAA,EAAiB,GAAG,aAAA,GAAgB,aAAA,GAAgB,OAAO,QAAA,CAAS,aAAa,IAAI,aAAa,CAAA,CAAA;AAAA,sBAClG,aAAA,EAAc,OAAA;AAAA,sBACd,cAAA,EAAe,OAAA;AAAA,sBACf,WAAA,EAAY,IAAA;AAAA,sBACZ,SAAA,EAAU,wGAAA;AAAA,sBACV,OAAO,EAAE,SAAA,EAAW,CAAA,OAAA,EAAU,QAAA,CAAS,eAAe,CAAA,IAAA,CAAA;AAAO;AAAA;AAC/D;AAAA;AACF;AAAA;AAAA,SAEJ;AAAA,QAEC,eAAA,IAAmB,CAAC,aAAA,mBACnBA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW,EAAA;AAAA,cACT,oGAAA;AAAA,cACA,iBAAA,CAAkB,eAAe,GAAG;AAAA,aACtC;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK,MAAM,YAAY;AAAA;AAAA,SAC1B,GACE,IAAA;AAAA,QAEH,aAAA,IAAiB,CAAC,eAAA,mBACjBA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,6FAAA;AAAA,YAET,QAAA,EAAA;AAAA;AAAA,SACH,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;ACpTpB,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAKEA,GAAAA,CAAC4C,SAAAA,CAAY,MAAA,EAAZ,EACC,QAAA,kBAAA5C,GAAAA,CAAC4C,SAAAA,CAAY,UAAA,EAAZ,EAAuB,IAAA,EAAY,KAAA,EAAc,YAChD,QAAA,kBAAA5C,GAAAA;AAAA,EAAC4C,SAAAA,CAAY,KAAA;AAAA,EAAZ;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iBAAA,CAAkB,cAAA;AAAA,MAClB,0BAAA,CAA2B,cAAA;AAAA,MAC3B,MAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,IAChD,GAAG;AAAA;AACN,CAAA,EACF,CAAA,EACF;AAEF,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AChC/B,IAAM,mBAAmB,CAAC;AAAA,EACxB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,IAAI,OAAA,IAAiBU,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACEtD,GAAAA;AAAA,MAAC4C,SAAAA,CAAY,OAAA;AAAA,MAAZ;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACE5C,IAAC4C,SAAAA,CAAY,OAAA,EAAZ,EAAoB,GAAA,EAAW,GAAG,OAChC,QAAA,EACH,CAAA;AAEJ;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;ACjB/B,IAAM,YAAY,CAAC;AAAA,EACjB,SAAA,GAAY,cAAc,MAAA,CAAO,cAAA;AAAA,EACjC,UAAA,GAAa,cAAc,MAAA,CAAO,eAAA;AAAA,EAClC,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAIM;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUW,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAmBA,eAAuB,IAAI,CAAA;AAEpD,EAAA,SAAS,gBAAA,GAAmB;AAC1B,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,YAAA,CAAa,UAAA,CAAW,OAAO,CAAA;AACvD,IAAA,UAAA,CAAW,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,IAAI,GAAG,SAAS,CAAA;AAAA,EAChE;AAEA,EAAA,SAAS,gBAAA,GAAmB;AAC1B,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,YAAA,CAAa,UAAA,CAAW,OAAO,CAAA;AACvD,IAAA,UAAA,CAAW,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,KAAK,GAAG,UAAU,CAAA;AAAA,EAClE;AAEA,EAAA;AAAA;AAAA,oBAEEvD,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAc,gBAAA;AAAA,QACd,YAAA,EAAc,gBAAA;AAAA,QACd,SAAA,EAAU,uBAAA;AAAA,QAEV,QAAA,kBAAAA,GAAAA;AAAA,UAAC4C,SAAAA,CAAY,IAAA;AAAA,UAAZ;AAAA,YACC,IAAA;AAAA,YACA,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,cAAA,IAAI,CAAC,CAAA,EAAG,OAAA,CAAQ,KAAK,CAAA;AAAA,YACvB,CAAA;AAAA,YACC,GAAG,KAAA;AAAA,YAEH;AAAA;AAAA;AACH;AAAA;AACF;AAEJ;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;;;ACrCjB,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AAAA,IACL,EAAA,EAAI;AAAA,MACF,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,UAAA,EAAY,iBAAiB,CAAC,CAAA;AAAA,MAC9B,YAAY,eAAA,CAAgB,EAAA;AAAA,MAC5B,cAAc,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,MAC1D,aAAa,eAAA,CAAgB,EAAA;AAAA,MAC7B,eAAA,EAAiB,eAAA,CAAgB,EAAA,GAAK,gBAAA,CAAiB,CAAC,CAAA;AAAA,MACxD,UAAU,iBAAA,CAAkB;AAAA,KAC9B;AAAA,IACA,EAAA,EAAI;AAAA,MACF,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,UAAA,EAAY,iBAAiB,CAAC,CAAA;AAAA,MAC9B,UAAA,EAAY,eAAA,CAAgB,EAAA,GAAK,gBAAA,CAAiB,CAAC,CAAA;AAAA,MACnD,YAAA,EAAc,iBAAiB,CAAC,CAAA;AAAA,MAChC,aAAa,eAAA,CAAgB,IAAA;AAAA,MAC7B,eAAA,EAAiB,eAAA,CAAgB,IAAA,GAAO,gBAAA,CAAiB,CAAC,CAAA;AAAA,MAC1D,UAAU,iBAAA,CAAkB;AAAA,KAC9B;AAAA,IACA,EAAA,EAAI;AAAA,MACF,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,IAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,UAAA,EAAY,iBAAiB,CAAC,CAAA;AAAA,MAC9B,YAAY,eAAA,CAAgB,EAAA;AAAA,MAC5B,YAAA,EAAc,iBAAiB,CAAC,CAAA;AAAA,MAChC,aAAa,eAAA,CAAgB,IAAA;AAAA,MAC7B,eAAA,EAAiB,eAAA,CAAgB,IAAA,GAAO,gBAAA,CAAiB,CAAC,CAAA;AAAA,MAC1D,UAAU,iBAAA,CAAkB;AAAA;AAC9B,GACF;AAAA,EACA,cAAA,EAAgB,CAAA;AAAA,EAChB,UAAU,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAExD,CAAA;;;AC7CO,IAAM,0BAAA,GAA6B;AAAA,EACxC,KAAA,EACE,qGAAA;AAAA,EACF,QAAA,EACE,wGAAA;AAAA,EACF,MAAA,EACE;AACJ,CAAA;AAEO,IAAM,4BAAA,GAA+B;AAAA,EAC1C,KAAA,EACE,iHAAA;AAAA,EACF,QAAA,EACE,iHAAA;AAAA,EACF,MAAA,EACE;AACJ,CAAA;ACHA,IAAM,aAAA,GAAgB1C,GAAAA;AAAA,EACpB;AAAA,IACE,qGAAA;AAAA,IACA,4FAAA;AAAA,IACA,qFAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA,CAA2B,KAAA;AAAA,IAC3B,iDAAA;AAAA,IACA,gDAAA;AAAA,IACA,iGAAA;AAAA,IACA,mJAAA;AAAA,IACA,4BAAA,CAA6B,KAAA;AAAA,IAC7B,gEAAA;AAAA,IACA,6DAAA;AAAA,IACA,iEAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,EAAA;AAAA,QACJ,EAAA,EAAI,EAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ,gCAAA;AAAA,QACR,MAAA,EAAQ,iCAAA;AAAA,QACR,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AAEA,IAAM,aAAA,GAAgBA,GAAAA;AAAA,EACpB;AAAA,IACE,+FAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,MAAA,EAAQ,iCAAA;AAAA,QACR,MAAA,EAAQ;AAAA;AACV;AACF;AAEJ,CAAA;AAEA,IAAM,0BAAA,GAA6BA,GAAAA;AAAA,EACjC;AAAA,IACE,wIAAA;AAAA,IACA,4FAAA;AAAA,IACA,uCAAA;AAAA,IACA,qGAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG;AACZ,CAAA;AAEA,IAAM,oBAAA,GAAuBA,IAAI,SAAA,EAAW;AAAA,EAC1C,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,WAAA,EAAa,uBAAA;AAAA,MACb,KAAA,EAAO;AAAA;AACT;AAEJ,CAAC,CAAA;AAuDD,SAAS,SAAA,CAAa,KAA+B,KAAA,EAAiB;AACpE,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,KAAK,CAAA;AACT,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,GAAA,CAAI,OAAA,GAAU,KAAA;AAAA,EAChB;AACF;AAEA,SAAS,aAAA,CAAc,MAAiB,KAAA,EAAsD;AAC5F,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,IAAI,CAAA;AAEpC,EAAA,OAAO;AAAA,IACL,gBAAA,EAAkB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IACjC,mBAAA,EAAqB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtC,sBAAA,EAAwB,CAAA,EAAG,KAAA,CAAM,UAAU,CAAA,EAAA,CAAA;AAAA,IAC3C,uBAAA,EAAyB,CAAA,EAAG,KAAA,CAAM,UAAU,CAAA,EAAA,CAAA;AAAA,IAC5C,mBAAA,EAAqB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtC,gBAAA,EAAkB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IACjC,qBAAA,EAAuB,CAAA,EAAG,KAAA,CAAM,UAAU,CAAA,EAAA,CAAA;AAAA,IAC1C,uBAAA,EAAyB,CAAA,EAAG,KAAA,CAAM,YAAY,CAAA,EAAA,CAAA;AAAA,IAC9C,sBAAA,EAAwB,CAAA,EAAG,KAAA,CAAM,WAAW,CAAA,EAAA,CAAA;AAAA,IAC5C,2BAAA,EAA6B,CAAA,EAAG,KAAA,CAAM,eAAe,CAAA,EAAA,CAAA;AAAA,IACrD,mBAAA,EAAqB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtC,0BAAA,EAA4B,CAAA,EAAG,WAAA,CAAY,cAAc,CAAA,EAAA,CAAA;AAAA,IACzD,YAAA,EAAc,qBAAA;AAAA,IACd,OAAA,EAAS,MAAA;AAAA,IACT,GAAG;AAAA,GACL;AACF;AAEA,SAAS,YAAA,CAAa,QAAyB,iBAAA,EAA4B;AACzE,EAAA,IAAI,MAAA,IAAU,IAAA,IAAQ,iBAAA,EAAmB,OAAO,MAAA;AAChD,EAAA,IAAI,MAAA,IAAU,MAAM,OAAO,QAAA;AAC3B,EAAA,IAAI,mBAAmB,OAAO,QAAA;AAC9B,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,SAAA,CACP,OACA,WAAA,EACA;AACA,EAAA,OACE,UAAU,IAAA,IAAQ,OAAO,UAAU,QAAA,IAAY,WAAA,KAAgB,QAAQ,WAAA,KAAgB,MAAA;AAE3F;AAEA,SAAS,YAAY,KAAA,EAAyC;AAC5D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,IAAA,GAAO,MAAA,GAAS,CAAA;AAC5D;AAEA,SAAS,sBAAsB,GAAA,EAAgC;AAC7D,EAAA,OAAO,IAAI,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAC1C;AAEA,IAAM,QAAQ,CAAC;AAAA,EACb,GAAA,EAAK,YAAA;AAAA,EACL,GAAG;AACL,CAAA,KAAsE;AACpE,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,IAAA,GAAO,MAAA;AAAA,IACP,IAAA,GAAO,IAAA;AAAA,IACP,MAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA,GAAc,eAAA;AAAA,IACd,SAAA,GAAY,eAAA;AAAA,IACZ,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,kBAAA,EAAoB,eAAA;AAAA,IACpB,cAAA,EAAgB,WAAA;AAAA,IAChB,EAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,SAAesD,OAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,QAAA,GAAiBA,eAAgC,IAAI,CAAA;AAC3D,EAAA,MAAM,aAAA,GAAgB,WAAA,IAAe,EAAA,GAAK,CAAA,EAAG,EAAE,CAAA,YAAA,CAAA,GAAiB,MAAA;AAChE,EAAA,MAAM,UAAU,OAAO,KAAA,KAAU,YAAY,EAAA,GAAK,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAClE,EAAA,MAAM,sBAAsB,WAAA,CAAY,MAAM,IAAI,CAAA,EAAG,EAAA,IAAM,MAAM,CAAA,OAAA,CAAA,GAAY,MAAA;AAC7E,EAAA,MAAM,sBAAsB,WAAA,CAAY,MAAM,IAAI,CAAA,EAAG,EAAA,IAAM,MAAM,CAAA,OAAA,CAAA,GAAY,MAAA;AAC7E,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,OAAA,CAAA,QAAA;AAAA,IAC9C,OAAO,iBAAiB,QAAA,IAAY,OAAO,iBAAiB,QAAA,GACxD,MAAA,CAAO,YAAY,CAAA,GACnB;AAAA,GACN;AACA,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAElE,EAAA,MAAM,YAAA,GAAe,YAAA,GAAe,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA,GAAI,aAAA;AAC1D,EAAA,MAAM,oBAAA,GAAuB,iBAAiB,IAAA,KAAS,QAAA;AACvD,EAAA,MAAM,iBAAA,GAAoB,OAAA,CAAQ,UAAA,IAAc,IAAA,KAAS,UAAU,CAAA;AACnE,EAAA,MAAM,SAAA,GAAY,QAAQ,SAAA,IAAa,CAAC,YAAY,YAAA,CAAa,MAAA,GAAS,CAAA,IAAK,CAAC,OAAO,CAAA;AACvF,EAAA,MAAM,eAAe,OAAA,CAAQ,QAAA,IAAY,CAAC,OAAA,IAAW,CAAC,SAAS,CAAA;AAC/D,EAAA,MAAM,WAAA,GAAc,QAAQ,OAAO,CAAA;AACnC,EAAA,MAAM,kBAAA,GAAqB,QAAQ,iBAAA,IAAqB,CAAC,WAAW,CAAC,SAAA,IAAa,CAAC,YAAY,CAAA;AAC/F,EAAA,MAAM,iBAAA,GACJ,SAAA,IAAa,YAAA,IAAgB,WAAA,IAAe,sBAAsB,MAAA,IAAU,IAAA;AAC9E,EAAA,MAAM,iBAAA,GAAoB,UAAU,IAAA,IAAQ,iBAAA;AAC5C,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,MAAA,EAAQ,iBAAiB,CAAA;AACpD,EAAA,MAAM,eAAA,GAAkB,SAAA,CAAU,KAAA,EAAO,WAAW,CAAA;AACpD,EAAA,MAAM,WAAA,GAAc,kBAAA;AAAA,IAClB,eAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,UAAA,GAGF,YAAA,GACA,EAAE,KAAA,EAAM,GACR,SAAA,IAAa,QAAA,IAAY,oBAAA,GACvB,EAAE,KAAA,EAAO,YAAA,EAAa,GACtB,EAAE,YAAA,EAAa;AAErB,EAAA,MAAM,WAAA,GAAoBA,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,IAAA,KAA6B;AAC5B,MAAA,MAAM,KAAA,GAAQ,IAAA,YAAgB,gBAAA,GAAmB,IAAA,GAAO,IAAA;AACxD,MAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AACnB,MAAA,SAAA,CAAU,cAAc,KAAK,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,eAAA,GAAwBA,OAAA,CAAA,WAAA;AAAA,IAC5B,CAAC,SAAA,KAAsB;AACrB,MAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AAEvB,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,SAAS,CAAA;AAC7C,QAAA,aAAA,GAAgB,SAAS,CAAA;AACzB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,cAAc,MAAA,CAAO,wBAAA;AAAA,QACzB,OAAO,gBAAA,CAAiB,SAAA;AAAA,QACxB;AAAA,OACF,EAAG,GAAA;AAEH,MAAA,WAAA,EAAa,IAAA,CAAK,OAAO,SAAS,CAAA;AAClC,MAAA,KAAA,CAAM,aAAA,CAAc,IAAI,KAAA,CAAM,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA;AAAA,IAC3D,CAAA;AAAA,IACA,CAAC,cAAc,aAAa;AAAA,GAC9B;AAEA,EAAA,MAAM,cAAA,GAAuBA,OAAA,CAAA,WAAA;AAAA,IAC3B,CAAC,KAAA,KAA+C;AAC9C,MAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,KAAA,CAAM,cAAc,KAAK,CAAA;AAC7D,MAAA,aAAA,GAAgB,KAAA,CAAM,cAAc,KAAK,CAAA;AACzC,MAAA,QAAA,GAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,QAAA,EAAU,aAAa;AAAA,GACxC;AAEA,EAAA,MAAM,WAAA,GAAoBA,oBAAY,MAAM;AAC1C,IAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,IAAA,OAAA,IAAU;AACV,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,EAC1B,CAAA,EAAG,CAAC,eAAA,EAAiB,OAAO,CAAC,CAAA;AAE7B,EAAA,MAAM,aAAA,GAAsBA,OAAA,CAAA,WAAA;AAAA,IAC1B,CAAC,KAAA,KAAiD;AAChD,MAAA,SAAA,GAAY,KAAK,CAAA;AAEjB,MAAA,IACE,KAAA,CAAM,gBAAA,IACN,KAAA,CAAM,GAAA,KAAQ,QAAA,IACd,CAAC,oBAAA,IACD,YAAA,CAAa,MAAA,KAAW,CAAA,IACxB,QAAA,EACA;AACA,QAAA;AAAA,MACF;AAEA,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,MAAA,WAAA,EAAY;AAAA,IACd,CAAA;AAAA,IACA,CAAC,oBAAA,EAAsB,YAAA,CAAa,MAAA,EAAQ,QAAA,EAAU,aAAa,SAAS;AAAA,GAC9E;AAEA,EAAA,MAAM,0BACJxD,GAAAA;AAAA,IAACyD,OAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,WAAA;AAAA,MACL,WAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAM,iBAAA,IAAqB,eAAA,GAAkB,MAAA,GAAS,IAAA;AAAA,MACtD,EAAA;AAAA,MACA,QAAA;AAAA,MACA,gBAAc,eAAA,IAAmB,MAAA;AAAA,MACjC,kBAAA,EAAkB,WAAA;AAAA,MAClB,aAAW,OAAA,IAAW,MAAA;AAAA,MACtB,SAAA,EAAW,EAAA;AAAA,QACT,aAAA,CAAc,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,QAC7B,SAAS,MAAA,IAAU,uDAAA;AAAA,QACnB;AAAA,OACF;AAAA,MACA,KAAA,EAAO,aAAA,CAAc,IAAA,EAAM,KAAK,CAAA;AAAA,MAChC,QAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,aAAA;AAAA,MACV,GAAG,IAAA;AAAA,MACH,GAAG;AAAA;AAAA,GACN;AAGF,EAAA,MAAM,YAAA,GAAe,oCACnB1D,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,gBAAgB,CAAA;AAAA,MAC5D,KAAA,EAAO,aAAA,CAAc,IAAA,EAAM,MAAS,CAAA;AAAA,MAEnC,QAAA,EAAA;AAAA,QAAA,MAAA,IAAU,wBACTC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,mBAAA;AAAA,YACJ,aAAA,EAAa,CAAC,WAAA,CAAY,MAAM,CAAA;AAAA,YAChC,SAAA,EAAW,aAAA,CAAc,EAAE,IAAA,EAAM,UAAU,CAAA;AAAA,YAE1C,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAGD,OAAA;AAAA,QAEA,+BACCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,kLAAA;AAAA,YACV,KAAA,EAAO,aAAA,CAAc,IAAA,EAAM,MAAS,CAAA;AAAA,YAEpC,QAAA,kBAAAA,GAAAA,CAAC0D,YAAA,EAAA,EAAQ,SAAA,EAAU,oDAAA,EAAqD;AAAA;AAAA,SAC1E;AAAA,QAGD,6BACC1D,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAW,aAAA;AAAA,YACX,QAAA;AAAA,YACA,WAAW,0BAAA,EAA2B;AAAA,YACtC,KAAA,EAAO,aAAA,CAAc,IAAA,EAAM,MAAS,CAAA;AAAA,YACpC,OAAA,EAAS,WAAA;AAAA,YAET,QAAA,kBAAAA,GAAAA,CAACC,KAAAA,EAAA,EAAE,eAAY,MAAA,EAAO;AAAA;AAAA,SACxB;AAAA,QAGD,gCACCD,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,4GAAA;AAAA,YACV,KAAA,EAAO,aAAA,CAAc,IAAA,EAAM,MAAS,CAAA;AAAA,YAEpC,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAI,KAAA,EAAK,MAAE,QAAA,EAAA,YAAA,CAAa,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,QAAA,EAAS;AAAA;AAAA,SACzD;AAAA,QAGD,sCACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAY,kBAAkB,SAAA,GAAY,WAAA;AAAA,YAC1C,cAAA,EAAc,eAAA;AAAA,YACd,QAAA;AAAA,YACA,WAAW,0BAAA,EAA2B;AAAA,YACtC,KAAA,EAAO,aAAA,CAAc,IAAA,EAAM,MAAS,CAAA;AAAA,YACpC,SAAS,MAAM;AACb,cAAA,kBAAA,CAAmB,CAAC,OAAA,KAAY,CAAC,OAAO,CAAA;AACxC,cAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,YAC1B,CAAA;AAAA,YAEC,QAAA,EAAA,eAAA,mBAAkBA,GAAAA,CAAC,MAAA,EAAA,EAAO,aAAA,EAAY,MAAA,EAAO,CAAA,mBAAKA,GAAAA,CAAC,GAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO;AAAA;AAAA,SAC7E;AAAA,QAGD,MAAA,IAAU,IAAA,IAAQ,CAAC,SAAA,IAAa,CAAC,gBAAgB,CAAC,WAAA,IAAe,CAAC,kBAAA,oBACjEA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,mBAAA;AAAA,YACJ,aAAA,EAAa,CAAC,WAAA,CAAY,MAAM,CAAA;AAAA,YAChC,SAAA,EAAW,aAAA,CAAc,EAAE,IAAA,EAAM,UAAU,CAAA;AAAA,YAE1C,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ,GAEA,OAAA;AAGF,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,WAAA,IAAe,OAAO,UAAU,QAAA,EAAU;AACvD,IAAA,OAAO,YAAA;AAAA,EACT;AAEA,EAAA,uBACED,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,cAAc,CAAA;AAAA,MACjE,KAAA,EACE;AAAA,QACE,mBAAA,EAAqB,CAAA,EAAG,WAAA,CAAY,QAAQ,CAAA,EAAA;AAAA,OAC9C;AAAA,MAGD,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCC,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAS,EAAA,EAAI,SAAA,EAAU,uCAC3B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QAGD,YAAA;AAAA,QAEA,WAAA,IAAe,CAAC,KAAA,oBACfA,IAAC,GAAA,EAAA,EAAE,EAAA,EAAI,aAAA,EAAe,SAAA,EAAW,qBAAqB,EAAE,IAAA,EAAM,aAAA,EAAe,GAC1E,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,QAGD,OAAO,KAAA,KAAU,QAAA,oBAChBA,GAAAA,CAAC,OAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAK,OAAA,EAAQ,WAAW,oBAAA,CAAqB,EAAE,MAAM,OAAA,EAAS,GAC3E,QAAA,EAAA,KAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AC9cpB,IAAM,WAAW,CAAC;AAAA,EAChB,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAyE;AAEvE,EAAA,MAAM,QAAA,GAAW,MAAA,GAAS,EAAE,MAAA,EAAQ,GAAG,OAAM,GAAI,EAAE,QAAA,EAAU,GAAG,KAAA,EAAM;AAEtE,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,kBAAA,EAAoB,EAAA;AAAA,QAClB,oDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,MACrD,GAAI;AAAA;AAAA,GACP;AAEJ;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAIvB,IAAM,gBAAgB,CAAC;AAAA,EACrB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,GAAG,mBAAA,EAAqB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE3E,aAAA,CAAc,WAAA,GAAc,eAAA;AAM5B,IAAM,eAAe,CAAC;AAAA,EACpB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoF;AAClF,EAAA,MAAM,eAAA,GAAwB2D,YAAI,eAAe,CAAA;AAGjD,EAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAA;AACxC,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,IAAQ,EAAA;AAC3B,EAAA,MAAM,YAAA,GAAe,MAAM,YAAA,IAAgB,KAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,MAAM,QAAA,IAAY,KAAA;AAEnC,EAAA,uBACE5D,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,8NAAA;AAAA,QACA,QAAA,IAAY,8CAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA,YAAA,oBACCC,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uEAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EAA2D,CAAA,EAC5E;AAAA;AAAA;AAAA,GAEJ;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAI3B,IAAM,oBAAoB,CAAC;AAAA,EACzB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,aAAA,EAAY,MAAA,EAAQ,GAAG,KAAA,EACpC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,WAAU,CAAA,EAC7B;AAEF,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;;ACxGzB,IAAM,WAAA,GAAc;AAAA,EACzB,GAAA,EAAK;AAAA,IACH,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACd;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,eAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA;AAEpB;AAKO,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,mBAAA,EAAqB,sCAAA;AAAA,IACrB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,GAAA,EAAK;AAAA,IACH,OAAA,EAAS,MAAA;AAAA,IACT,mBAAA,EAAqB,CAAC,KAAA,EAAO,SAAS,CAAA;AAAA,IACtC,GAAA,EAAK;AAAA,GACP;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IACT,mBAAA,EAAqB,CAAC,KAAA,EAAO,SAAA,EAAW,aAAa,CAAA;AAAA,IACrD,GAAA,EAAK;AAAA,GACP;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,mBAAA,EAAqB,CAAC,KAAA,EAAO,SAAA,EAAW,iBAAiB,CAAA;AAAA,IACzD,GAAA,EAAK;AAAA;AAET;AAKO,IAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAKO,IAAM,MAAA,GAAS;AAAA,EACpB,IAAA,EAAM,CAAA;AAAA,EACN,QAAA,EAAU,GAAA;AAAA,EACV,MAAA,EAAQ,IAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,aAAA,EAAe,IAAA;AAAA,EACf,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS,IAAA;AAAA,EACT,OAAA,EAAS;AACX;ACpEA,IAAM,SAAA,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAUlB,IAAM,0BAAA,GAA6B,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAM3C,SAAS,YAAY,EAAE,GAAA,EAAK,OAAO,CAAA,EAAG,QAAA,EAAU,WAAU,EAAqB;AAC7E,EAAA,uBACED,IAAAA,CAAAS,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAR,GAAAA,CAAC,WAAO,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,oBAClBD,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QAIA,WAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,QAExD,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACDC,GAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,oCAAA,EAChC,QAAA,EAAA,0BAAA,CAA2B,GAAA,CAAI,CAAC,eAAA,qBAC/BA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAU,yCAAA;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,IAAA;AAAA,gBACP,MAAA,EAAQ,IAAA;AAAA,gBACR,SAAA,EAAW,mEAAA;AAAA,gBACX,cAAA,EAAgB,+BAA+B,eAAe,CAAA,CAAA;AAAA;AAChE,aAAA;AAAA,YAPK;AAAA,WASR,CAAA,EACH;AAAA;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;ACPA,SAAS,cAAc,QAAA,EAAsD;AAC3E,EAAA,MAAM,CAAC,IAAA,EAAM,KAAK,CAAA,GAAI,QAAA,CAAS,MAAM,GAAG,CAAA;AACxC,EAAA,OAAO,EAAE,MAAM,KAAA,EAAM;AACvB;AAMA,IAAM,WAAA,GAAc4D,cAAmC,IAAI,CAAA;AAE3D,SAAS,eAAA,GAAgC;AACvC,EAAA,OAAOC,GAAAA,CAAI,WAAW,CAAA,IAAK,cAAA;AAC7B;AAYO,SAAS,aAAA,CAAc,EAAE,QAAA,GAAW,cAAA,EAAgB,UAAS,EAAuB;AACzF,EAAA,uBACE7D,GAAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EAAO,QAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,YAAA,EAAA,EAAc,QAAA,EAAS,CAAA,EAC1B,CAAA;AAEJ;AAoBA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,OAAA;AAAA,EACP,OAAA,EAAS,SAAA;AAAA,EACT,WAAA,EAAa;AACf,CAAA;AAEA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,IAAA;AAAA,EACP,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,UAAA,GAAa,SAAS8D,WAAAA,CAAW;AAAA,EAC5C,WAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,OAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmE;AACjE,EAAA,MAAM,aAAa,OAAA,KAAY,UAAA;AAI/B,EAAA,MAAM,eAAA,GAAkB;AAAA,IACtB,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,KAAY,EAAC;AAAA,IAC3C,GAAI,SAAA,KAAc,MAAA,GAAY,EAAE,YAAA,EAAc,SAAA,KAAc;AAAC,GAC/D;AAEA,EAAA,uBACE9D,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EACzB,QAAA,EAAA,UAAA;AAAA;AAAA;AAAA,oBAGCA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,oEAAA;AAAA,UACA,iBAAA,CAAkB,SAAA;AAAA,UAClB;AAAA,SACF;AAAA,QACC,GAAG,eAAA;AAAA,QAEH;AAAA;AAAA;AACH,sBAEAA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAA,EAAS,sBAAsB,IAAI,CAAA;AAAA,MACnC,IAAA,EAAM,sBAAsB,IAAI,CAAA;AAAA,MAChC,KAAA;AAAA,MACA,SAAA;AAAA,MACC,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,KAAY,EAAC;AAAA,MAC3C,GAAI,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,KAAW,EAAC;AAAA,MACzC,GAAI,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,KAAW,EAAC;AAAA,MACzC,GAAI,SAAA,KAAc,MAAA,GAAY,EAAE,YAAA,EAAc,SAAA,KAAc,EAAC;AAAA,MAC7D,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA,OAAA,GACC,QAAA,mBAEAD,IAAAA,CAAAS,UAAA,EACG,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,+BAAeR,GAAAA,CAAC+D,WAAAA,EAAA,EAAY,WAAU,wBAAA,EAAyB;AAAA,OAAA,EAClE;AAAA;AAAA,GAEJ,EAEJ,CAAA;AAEJ;AAWO,IAAM,IAAA,GAAO,SAASC,KAAAA,CAAK;AAAA,EAChC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,aAAA,CAAc,iBAAiB,CAAA;AACvD,EAAA,MAAM,aAAa,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,KAAU,EAAC;AACtD,EAAA,uBACEhE,GAAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA,EAAO,EAAE,GAAG,UAAA,EAAY,GAAG,KAAA,EAAM;AAAA,MACjC,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MAClC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AA0BA,SAAS,gBAAgB,IAAA,EAAyB;AAChD,EAAA,IAAI,OAAO,SAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU,OAAO,OAAO,IAAI,CAAA;AAC5E,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,KAAA,MAAW,SAAS,IAAA,EAAM;AACxB,MAAA,MAAM,IAAA,GAAO,gBAAgB,KAAK,CAAA;AAClC,MAAA,IAAI,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAAA,IAC3B;AACA,IAAA,OAAO,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,EACvB;AACA,EAAA,IAAIY,eAAyC,IAAI,CAAA,SAAU,eAAA,CAAgB,IAAA,CAAK,MAAM,QAAQ,CAAA;AAC9F,EAAA,OAAO,EAAA;AACT;AAEO,IAAM,QAAA,GAAW,SAASqD,SAAAA,CAAS;AAAA,EACxC,GAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,SAAA;AAAA,EACA;AACF,CAAA,EAA8D;AAC5D,EAAA,MAAM,OAAA,mBACJlE,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gCAAA,EACb,QAAA,EAAA;AAAA,IAAA,MAAA,oBACCC,GAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,uCAChC,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,oBAEFA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAS,CAAA;AAAA,IAC3C,MAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,uCAChC,QAAA,EAAA,MAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAGF,EAAA,MAAM,UAAA,GACJ,IAAA,KAAS,OAAA,GACL,2FAAA,GACA,EAAA;AAGN,EAAA,MAAM,cAA4D,EAAC;AACnE,EAAA,IAAI,OAAA,KAAY,MAAA,EAAW,WAAA,CAAY,OAAA,GAAU,OAAA;AACjD,EAAA,IAAI,QAAA,KAAa,MAAA,EAAW,WAAA,CAAY,QAAA,GAAW,QAAA;AAEnD,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,MAAM,WAAA,GAAc,gBAAgB,QAAQ,CAAA;AAE5C,IAAA,uBACEA,GAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QAKA,wBAAQA,GAAAA,CAAC,OAAE,IAAA,EAAY,YAAA,EAAY,eAAe,MAAA,EAAW,CAAA;AAAA,QAC7D,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,QAClC,GAAG,WAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,WAAA,EACnE,QAAA,EAAA,OAAA,EACH,CAAA;AAEJ;AAUO,IAAM,QAAA,GAAW,SAASkE,SAAAA,CAAS;AAAA,EACxC,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA8D;AAC5D,EAAA,uBAAOlE,GAAAA,CAAC,QAAA,EAAA,EAAS,GAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AACxC;AAWO,IAAM,cAAA,GAAiB,SAASmE,eAAAA,CAAe;AAAA,EACpD,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoE;AAClE,EAAA,uBACEnE,GAAAA,CAAC,QAAA,EAAA,EAAS,GAAA,EAAU,UAAQ,IAAA,EAAC,MAAA,kBAAQA,GAAAA,CAAC,cAAW,aAAA,EAAY,MAAA,EAAO,CAAA,EAAK,GAAG,MACzE,QAAA,EACH,CAAA;AAEJ;AAeO,IAAM,WAAA,GAAc,SAASoE,YAAAA,CAAY;AAAA,EAC9C,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiE;AAC/D,EAAA,uBACErE,IAAAA,CAAAS,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,WAAA,oBAAeR,IAAC,qBAAA,EAAA,EAAsB,CAAA;AAAA,oBACvCD,IAAAA,CAAC,iBAAA,EAAA,EAAkB,GAAA,EAAU,SAAA,EAAuB,GAAG,IAAA,EACpD,QAAA,EAAA;AAAA,MAAA,KAAA,oBACCC,GAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAU,yDAC1B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,MAED;AAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AC5YA,SAASqE,UAAAA,CAAa,KAA+B,KAAA,EAAiB;AACpE,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,KAAK,CAAA;AACT,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,GAAA,CAAI,OAAA,GAAU,KAAA;AAAA,EAChB;AACF;AAEA,IAAM,iBAAuB,OAAA,CAAA,aAAA,CAG1B,EAAE,UAAA,EAAY,IAAA,EAAM,eAAe,MAAM;AAAC,CAAA,EAAG,CAAA;AAEhD,IAAM,UAAU,CAAC;AAAA,EACf,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA8F;AAC5F,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,iBAAwB,IAAI,CAAA;AACtE,EAAA,MAAM,OAAA,GAAgB,eAA8B,IAAI,CAAA;AACxD,EAAA,MAAM,YAAA,GAAe,EAAE,UAAA,EAAY,aAAA,EAAc;AAEjD,EAAM,kBAAU,MAAM;AACpB,IAAA,SAAS,kBAAkB,KAAA,EAAqB;AAC9C,MAAA,IAAI,KAAA,CAAM,kBAAkB,IAAA,IAAQ,OAAA,CAAQ,SAAS,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,EAAG;AAC7E,MAAA,aAAA,CAAc,IAAI,CAAA;AAAA,IACpB;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AAC1D,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,aAAA,EAAe,iBAAiB,CAAA;AAAA,EAC5E,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAS,WAAW,IAAA,EAA6B;AAC/C,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,IAAAA,UAAAA,CAAU,KAAK,IAAI,CAAA;AAAA,EACrB;AAEA,EAAA,uBACErE,GAAAA,CAAC,cAAA,CAAe,UAAf,EAAwB,KAAA,EAAO,cAC9B,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,MAClC,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,QAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,UAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,QACpB;AAAA,MACF,CAAA;AAAA,MACA,QAAA,EAAU,EAAA;AAAA,MACV,IAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,WAAA,EAAa,SAAS,CAAA;AAAA,MAC9D,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AACA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAEtB,IAAM,qBAA2B,OAAA,CAAA,aAAA,CAG9B,EAAE,OAAO,EAAA,EAAI,MAAA,EAAQ,OAAO,CAAA;AAE/B,IAAM,WAAA,GAAc,CAAC,EAAE,QAAA,EAAS,KAAqC;AACnE,EAAA,MAAM,EAAE,UAAA,EAAW,GAAU,OAAA,CAAA,GAAA,CAAI,cAAc,CAAA;AAC/C,EAAA,MAAM,QAAc,OAAA,CAAA,KAAA,EAAM;AAC1B,EAAA,MAAM,SAAS,UAAA,KAAe,KAAA;AAC9B,EAAA,MAAM,YAAA,GAAe,EAAE,KAAA,EAAO,MAAA,EAAO;AAErC,EAAA,uBACEA,GAAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,KAAA,EAAO,YAAA,EAClC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EAAmC,UAAS,CAAA,EAC7D,CAAA;AAEJ;AAEA,IAAM,aAAA,GAAgB,CAAC,EAAE,QAAA,uBAA8CA,GAAAA,CAAAQ,QAAAA,EAAA,EAAG,QAAA,EAAS;AAEnF,IAAM,YAAA,GAAe,CAAC,EAAE,QAAA,uBAA8CR,GAAAA,CAAAQ,QAAAA,EAAA,EAAG,QAAA,EAAS;AAElF,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,UAAA,EAAY,aAAA,EAAc,GAAU,YAAI,cAAc,CAAA;AAC9D,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAO,GAAU,YAAI,kBAAkB,CAAA;AAEtD,EAAA,uBACER,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAK,UAAA;AAAA,MACL,QAAA,EAAU,CAAA;AAAA,MACV,eAAA,EAAc,MAAA;AAAA,MACd,eAAA,EAAe,MAAA;AAAA,MACf,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,MAC9B,OAAA,EAAS,MAAM,aAAA,CAAc,MAAA,GAAS,OAAO,KAAK,CAAA;AAAA,MAClD,cAAc,MAAM;AAElB,QAAA,IAAI,UAAA,IAAc,eAAe,KAAA,EAAO;AACtC,UAAA,aAAA,CAAc,KAAK,CAAA;AAAA,QACrB;AAAA,MACF,CAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,cAAA,EAAgB,SAAS,CAAA;AAAA,MACjE,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAE7B,IAAM,oBAA0B,OAAA,CAAA,aAAA,CAG7B,EAAE,MAAA,EAAQ,KAAA,EAAO,WAAW,MAAM;AAAC,CAAA,EAAG,CAAA;AAEzC,IAAM,UAAA,GAAa,CAAC,EAAE,QAAA,EAAS,KAAqC;AAClE,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,iBAAS,KAAK,CAAA;AAChD,EAAA,MAAM,YAAA,GAAe,EAAE,MAAA,EAAQ,SAAA,EAAU;AAEzC,EAAA,uBACEA,GAAAA,CAAC,iBAAA,CAAkB,UAAlB,EAA2B,KAAA,EAAO,cACjC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,UAAA;AAAA,MACV,cAAA,EAAgB,MAAM,SAAA,CAAU,IAAI,CAAA;AAAA,MACpC,cAAA,EAAgB,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAEpC;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEA,IAAM,oBAAoB,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,MAAA,EAAO,GAAU,OAAA,CAAA,GAAA,CAAI,iBAAiB,CAAA;AAC9C,EAAA,uBACED,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,UAAA;AAAA,MACL,QAAA,EAAU,CAAA;AAAA,MACV,eAAA,EAAc,MAAA;AAAA,MACd,eAAA,EAAe,MAAA;AAAA,MACf,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,MAC9B,WAAW,EAAA,CAAG,0BAAA,CAA2B,iBAAA,EAAmB,KAAA,IAAS,QAAQ,SAAS,CAAA;AAAA,MACrF,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDC,GAAAA,CAACe,YAAAA,EAAA,EAAa,WAAU,iBAAA,EAAkB;AAAA;AAAA;AAAA,GAC5C;AAEJ;AACA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,oBAAoB,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA8F;AAC5F,EAAA,MAAM,EAAE,MAAA,EAAO,GAAU,OAAA,CAAA,GAAA,CAAI,iBAAiB,CAAA;AAE9C,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,uBACEf,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,iBAAA,CAAkB,WAAA;AAAA,QAClB,0BAAA,CAA2B,WAAA;AAAA,QAC3B,4CAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,MAChD,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,OAAO,MAAA,GAAS,OAAA;AAAA,EAChB,aAAa,YAAA,GAAe,EAAA;AAAA,EAC5B,YAAY,WAAA,GAAc,CAAA;AAAA,EAC1B,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAIwD;AACtD,EAAA,MAAM,EAAE,MAAA,EAAO,GAAU,OAAA,CAAA,GAAA,CAAI,kBAAkB,CAAA;AAC/C,EAAA,MAAM,UAAA,GAAmB,eAA8B,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,iBAA2B,QAAQ,CAAA;AAEjE,EAAM,wBAAgB,MAAM;AAC1B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,eAAA,GAAkB,CAAA;AACxB,IAAA,MAAM,IAAA,GAAO,QAAQ,qBAAA,EAAsB;AAC3C,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,GAAA,GAAM,OAAA,CAAQ,YAAA,GAAe,eAAA;AACzD,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,MAAA,GAAS,MAAA,CAAO,WAAA,GAAc,eAAA;AAE3D,IAAA,OAAA,CAAQ,eAAA,IAAmB,cAAA,IAAkB,eAAA,GAAkB,KAAA,GAAQ,QAAQ,CAAA;AAAA,EACjF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,SAAS,cAAc,IAAA,EAA6B;AAClD,IAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,IAAAqE,UAAAA,CAAU,KAAK,IAAI,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,uBACErE,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,aAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,iBAAA,CAAkB,WAAA;AAAA,QAClB,0BAAA,CAA2B,WAAA;AAAA,QAC3B,+BAAA;AAAA,QACA,IAAA,KAAS,QAAQ,sBAAA,GAAyB,mBAAA;AAAA,QAC1C;AAAA,OACF;AAAA,MACA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,MAChD,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAE7B,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAIwD;AACtD,EAAA,MAAM,EAAE,aAAA,EAAc,GAAU,OAAA,CAAA,GAAA,CAAI,cAAc,CAAA;AAElD,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAwC;AAChE,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA;AAAA,IACF;AACA,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,IAAI,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,EACpC,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,aAAA,CAAc,IAAI,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,OAAA,IAAiB,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,MAAM,KAAA,GAAQ,QAAA;AACd,IAAA,OAAa,qBAAa,KAAA,EAAO;AAAA,MAC/B,GAAA;AAAA,MACA,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,IAAA,IAAQ,UAAA;AAAA,MAC1B,QAAA,EAAU,QAAA,GAAW,EAAA,GAAM,KAAA,CAAM,MAAM,QAAA,IAAY,CAAA;AAAA,MACnD,iBAAiB,QAAA,IAAY,MAAA;AAAA,MAC7B,eAAA,EAAiB,WAAW,EAAA,GAAK,MAAA;AAAA,MACjC,OAAA,EAAS,CAAC,CAAA,KAAwC;AAChD,QAAA,gBAAA,CAAiB,CAAC,CAAA;AAClB,QAAA,IAAI,MAAM,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,MAChD,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,0BAAA,CAA2B,WAAA;AAAA,QAC3B,KAAA,IAAS,MAAA;AAAA,QACT,SAAA;AAAA,QACA,MAAM,KAAA,CAAM;AAAA,OACd;AAAA,MACA,GAAG;AAAA,KACiE,CAAA;AAAA,EACxE;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,UAAA;AAAA,MACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,MAC1B,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,MAC/B,OAAA,EAAS,gBAAA;AAAA,MACT,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,QAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,aAAA,EAAc;AAAA,QAChB;AAAA,MACF,CAAA;AAAA,MACA,WAAW,EAAA,CAAG,0BAAA,CAA2B,WAAA,EAAa,KAAA,IAAS,QAAQ,SAAS,CAAA;AAAA,MAC/E,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,sBAAsB,CAAC;AAAA,EAC3B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGED,IAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,IAAA,EAAK,kBAAA;AAAA,IACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,IAC1B,gBAAc,OAAA,IAAW,KAAA;AAAA,IACzB,iBAAe,QAAA,IAAY,MAAA;AAAA,IAC3B,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,IAC/B,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,mBAAA,EAAqB,SAAS,CAAA;AAAA,IACtE,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACb,QAAA,EAAA,OAAA,oBAAWA,GAAAA,CAACmB,KAAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA,EACzC,CAAA;AAAA,MACC;AAAA;AAAA;AACH;AAEF,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAElC,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAOEpB,IAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,IAAA,EAAK,eAAA;AAAA,IACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,IAC1B,gBAAc,OAAA,IAAW,KAAA;AAAA,IACzB,iBAAe,QAAA,IAAY,MAAA;AAAA,IAC3B,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,IAC/B,SAAA,EAAW,EAAA,CAAG,0BAAA,CAA2B,mBAAA,EAAqB,SAAS,CAAA;AAAA,IACtE,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,GAAAA,CAACgB,MAAAA,EAAA,EAAO,SAAA,EAAW,GAAG,sBAAA,EAAwB,OAAA,GAAU,aAAA,GAAgB,WAAW,GAAG,CAAA,EACxF,CAAA;AAAA,MACC;AAAA;AAAA;AACH;AAEF,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,IAAM,oBAAoB,CAAC;AAAA,EACzB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEhB,GAAAA,CAAC,UAAA,EAAA,EAAS,SAAA,EAAW,EAAA,CAAG,4BAA4B,SAAS,CAAA,EAAI,GAAG,KAAA,EACjE,QAAA,EACH;AAGF,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,KAAA,IAAS,QAAQ,SAAS,CAAA;AAAA,IAC5E,GAAG;AAAA;AACN;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,GAAG,0BAAA,EAA4B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAElF,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,IAAM,kBAAkB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,KAA6C;AAC1F,EAAA,uBACEA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,MAC/E,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;ACxX9B,IAAM,YAAA,GAAe4D,cAAwC,IAAI,CAAA;AAEjE,SAAS,eAAA,GAAqC;AAC5C,EAAA,MAAM,GAAA,GAAMC,IAAI,YAAY,CAAA;AAC5B,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,2CAA2C,CAAA;AACrE,EAAA,OAAO,GAAA;AACT;AAyBA,SAAS,SAAA,CAAU;AAAA,EACjB,MAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,eAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,UAAUvC,KAAAA,EAAM;AACtB,EAAA,MAAM,KAAA,GAAQC,OAAAA,CAA2B,OAAO,EAAE,OAAA,EAAS,QAAO,CAAA,EAAI,CAAC,OAAA,EAAS,MAAM,CAAC,CAAA;AAKvF,EAAA+C,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,MAAM,KAAK,eAAA,EAAiB,OAAA;AAC5B,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,MAAM,EAAA,GAAK,sBAAsB,MAAM;AACrC,MAAA,EAAA,CAAG,KAAA,EAAM;AAAA,IACX,CAAC,CAAA;AACD,IAAA,OAAO,MAAM,qBAAqB,EAAE,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,MAAA,EAAQ,eAAe,CAAC,CAAA;AAE5B,EAAA,uBACEtE,GAAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OACrB,QAAA,kBAAAA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,QAAA,IAAI,CAAC,MAAM,cAAA,IAAiB;AAAA,MAC9B,CAAA;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,iBAAA,EAAiB,OAAA;AAAA,UACjB,SAAA,EAAW,EAAA;AAAA,YACT,oBAAA;AAAA,YACA,MAAA,IAAU,wCAAA;AAAA,YACV;AAAA,WACF;AAAA,UAEC;AAAA;AAAA;AACH;AAAA,GACF,EACF,CAAA;AAEJ;AAQA,IAAM,SAAA,GAAY,SAASuE,UAAAA,CAAU;AAAA,EACnC,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA+D;AAC7D,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,eAAA,EAAgB;AACnC,EAAA,uBACEvE,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,oCAAA;AAAA,QACA,MAAA,IAAU,yBAAA;AAAA,QACV;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA;AAQA,IAAM,WAAA,GAAc,SAASwE,YAAAA,CAAY;AAAA,EACvC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiE;AAC/D,EAAA,uBACExE,GAAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAAI,GAAG,IAAA,EAC1E,QAAA,EACH,CAAA;AAEJ,CAAA;AAIA,IAAM,UAAA,GAAa,SAASyE,WAAAA,CAAW;AAAA,EACrC,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoE;AAClE,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,eAAA,EAAgB;AAGpC,EAAA,uBACEzE,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,OAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,SAAS,CAAA;AAAA,MAC7E,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA;AAIA,IAAM,aAAA,GAAgB,SAAS0E,cAAAA,CAAc;AAAA,EAC3C,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyE;AACvE,EAAA,uBACE1E,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,+CAAA,EAAiD,SAAS,CAAA;AAAA,MACvE,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA;AAQA,IAAM,UAAA,GAAa,SAAS2E,WAAAA,CAAW;AAAA,EACrC,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgE;AAC9D,EAAA,uBACE3E,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,yDAAA,EAA2D,SAAS,CAAA;AAAA,MACjF,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA;AAQA,IAAM,YAAA,GAAe,SAAS4E,aAAAA,CAAa;AAAA,EACzC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkE;AAChE,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,eAAA,EAAgB;AACnC,EAAA,uBACE5E,GAAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,0EAAA;AAAA,QACA,MAAA,IAAU,mCAAA;AAAA,QACV;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAA;AAcA,IAAM,WAAA,GAAc,SAAS6E,YAAAA,CAAY;AAAA,EACvC,IAAA,GAAO,SAAA;AAAA,EACP,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,GAAa,QAAA;AAAA,EACb,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoE;AAClE,EAAA,uBACE9E,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAM,UAAA;AAAA,MACN,OAAA,EAAS,IAAA,KAAS,WAAA,GAAc,WAAA,GAAc,SAAA;AAAA,MAC9C,IAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,SAAA,IAAa,QAAA,EAAU,SAAS,CAAA;AAAA,MAC7C,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,MAAA,oBACCC,GAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,uCAChC,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,QAED;AAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAyCO,IAAM,KAAA,GAAQ;AAAA,EACnB,KAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAM,SAAA;AAAA,EACN,MAAA,EAAQ,WAAA;AAAA,EACR,KAAA,EAAO,UAAA;AAAA,EACP,QAAA,EAAU,aAAA;AAAA,EACV,KAAA,EAAO,UAAA;AAAA,EACP,OAAA,EAAS,YAAA;AAAA,EACT,MAAA,EAAQ;AACV;;;ACxVO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO;AAAA,IACL,EAAA,EAAI,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA;AAAA,IAC3B,EAAA,EAAI,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA;AAAA,IAC3B,EAAA,EAAI,gBAAA,CAAiB,EAAE,CAAA,GAAI;AAAA,GAC7B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,QAAA,EAAU,iBAAiB,CAAC;AAAA,GAC9B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,SAAA,EAAW,gBAAA,CAAiB,EAAE,CAAA,GAAI;AAAA,GACpC;AAAA,EACA,GAAA,EAAK;AAAA,IACH,WAAW,eAAA,CAAgB,EAAA;AAAA,IAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,UAAU,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,IACtD,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,iBAAiB,iBAAA,CAAkB,EAAA;AAAA,IACnC,cAAc,eAAA,CAAgB,EAAA;AAAA,IAC9B,kBAAkB,iBAAA,CAAkB,EAAA;AAAA,IACpC,gBAAgB,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA,GAAI,iBAAiB,CAAC;AAAA,GAC/D;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,eAAA,EAAiB,oBAAoB,QAAA,CAAS,IAAA;AAAA,IAC9C,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;ACZA,IAAM,kBAAA,GAA2B8E,sBAA8C,IAAI,CAAA;AAEnF,IAAM,YAAA,GAAe,yBAAA;AACrB,IAAM,iBAAA,GAAoB,8BAAA;AAC1B,IAAM,eAAA,GAAkB,4BAAA;AACxB,IAAM,kBAAA,GACJ,2IAAA;AAEF,SAAS,sBAAsB,SAAA,EAAmB;AAChD,EAAA,MAAM,OAAA,GAAgBA,YAAI,kBAAkB,CAAA;AAC5C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,SAAS,CAAA,qCAAA,CAAuC,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAASC,gBAAkB,IAAA,EAAuC;AAChE,EAAA,OAAO,CAAC,IAAA,KAAmB;AACzB,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,IAAI,CAAA;AAAA,WAAA,IAC9B,GAAA,MAAS,OAAA,GAAU,IAAA;AAAA,IAC9B;AAAA,EACF,CAAA;AACF;AAEA,SAAS,yBAAyB,KAAA,EAA6C;AAC7E,EAAA,OAAO;AAAA,IACL,sBAAA,EAAwB,CAAA,EAAG,iBAAA,CAAkB,KAAA,CAAM,KAAK,CAAC,CAAA,EAAA,CAAA;AAAA,IACzD,+BAAA,EAAiC,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,MAAM,CAAA,EAAA,CAAA;AAAA,IACpE,kCAAA,EAAoC,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzE,4BAAA,EAA8B,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,GAAG,CAAA,EAAA,CAAA;AAAA,IAC9D,+BAAA,EAAiC,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,MAAM,CAAA,EAAA,CAAA;AAAA,IACpE,kCAAA,EAAoC,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzE,kCAAA,EAAoC,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzE,gCAAA,EAAkC,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,OAAO,CAAA,EAAA,CAAA;AAAA,IACtE,+BAAA,EAAiC,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,MAAM,CAAA,EAAA,CAAA;AAAA,IACpE,mCAAA,EAAqC,CAAA,EAAG,iBAAA,CAAkB,OAAA,CAAQ,SAAS,CAAA,EAAA,CAAA;AAAA,IAC3E,+BAAA,EAAiC,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,SAAS,CAAA,EAAA,CAAA;AAAA,IACnE,8BAAA,EAAgC,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,QAAQ,CAAA,EAAA,CAAA;AAAA,IACjE,8BAAA,EAAgC,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,QAAQ,CAAA,EAAA,CAAA;AAAA,IACjE,wBAAA,EAA0B,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,GAAG,CAAA,EAAA,CAAA;AAAA,IACtD,2BAAA,EAA6B,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,MAAM,CAAA,EAAA,CAAA;AAAA,IAC5D,8BAAA,EAAgC,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,QAAQ,CAAA,EAAA,CAAA;AAAA,IACjE,qCAAA,EAAuC,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,eAAe,CAAA,EAAA,CAAA;AAAA,IAC/E,8BAAA,EAAgC,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,YAAY,CAAA,EAAA,CAAA;AAAA,IACrE,mCAAA,EAAqC,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,gBAAgB,CAAA,EAAA,CAAA;AAAA,IAC9E,iCAAA,EAAmC,CAAA,EAAG,iBAAA,CAAkB,GAAA,CAAI,cAAc,CAAA,EAAA,CAAA;AAAA,IAC1E,yBAAA,EAA2B,CAAA,EAAG,iBAAA,CAAkB,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC/D,iCAAA,EAAmC,CAAA,EAAG,iBAAA,CAAkB,MAAA,CAAO,eAAe,CAAA,EAAA,CAAA;AAAA,IAC9E,uBAAA,EAAyB,kBAAkB,MAAA,CAAO;AAAA,GACpD;AACF;AAEA,SAAS,QAAQ,OAAA,EAA+C;AAC9D,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,EAAC;AACtB,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,gBAAA,CAA8B,YAAY,CAAC,CAAA;AACvE;AAEA,SAAS,qBAAqB,OAAA,EAA+C;AAC3E,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,EAAC;AACtB,EAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,gBAAA,CAA8B,kBAAkB,CAAC,CAAA,CAAE,MAAA;AAAA,IAC3E,CAAC,YAAY,CAAC,OAAA,CAAQ,aAAa,UAAU,CAAA,IAAK,QAAQ,QAAA,KAAa;AAAA,GACzE;AACF;AAEA,SAAS,UAAA,CAAW,KAAkB,IAAA,EAAiD;AACrF,EAAA,MAAM,QAAA,GAAW,IAAA,KAAS,UAAA,GAAa,iBAAA,GAAoB,eAAA;AAC3D,EAAA,OAAO,GAAA,CAAI,cAA2B,QAAQ,CAAA;AAChD;AAEA,SAAS,aAAa,IAAA,EAAkD;AACtE,EAAA,MAAM,gBAAgB,QAAA,CAAS,aAAA;AAC/B,EAAA,IAAI,EAAE,aAAA,YAAyB,WAAA,CAAA,EAAc,OAAO,IAAA;AACpD,EAAA,OAAO,IAAA,CAAK,KAAK,CAAC,GAAA,KAAQ,IAAI,QAAA,CAAS,aAAa,CAAC,CAAA,IAAK,IAAA;AAC5D;AAEA,SAAS,cAAc,GAAA,EAAgD;AACrE,EAAA,MAAM,gBAAgB,QAAA,CAAS,aAAA;AAC/B,EAAA,IAAI,EAAE,aAAA,YAAyB,WAAA,CAAA,IAAgB,CAAC,KAAK,OAAO,UAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAA,EAAK,QAAQ,CAAA;AACvC,EAAA,OAAO,MAAA,EAAQ,QAAA,CAAS,aAAa,CAAA,GAAI,QAAA,GAAW,UAAA;AACtD;AAEA,SAAS,eAAA,CAAgB,KAA8B,IAAA,EAA6B;AAClF,EAAA,IAAI,CAAC,GAAA,EAAK;AACV,EAAA,MAAM,SAAA,GAAY,UAAA,CAAW,GAAA,EAAK,IAAI,CAAA;AACtC,EAAA,MAAM,WAAW,UAAA,CAAW,GAAA,EAAK,IAAA,KAAS,UAAA,GAAa,WAAW,UAAU,CAAA;AAC5E,EAAA,CAAC,SAAA,IAAa,WAAW,KAAA,EAAM;AACjC;AAEA,SAAS,cAAc,OAAA,EAAgC;AACrD,EAAA,MAAM,CAAC,QAAQ,CAAA,GAAI,OAAA,CAAQ,OAAO,CAAA;AAClC,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,eAAA,CAAgB,UAAU,UAAU,CAAA;AACpC,IAAA;AAAA,EACF;AACA,EAAA,oBAAA,CAAqB,OAAO,CAAA,CAAE,CAAC,CAAA,EAAG,KAAA,EAAM;AAC1C;AAeA,SAAS,cAAA,CAAe;AAAA,EACtB,OAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,EAAgC;AAC9B,EAAA,IAAI,OAAA,IAAW,aAAA,GAAgB,CAAA,IAAK,YAAA,EAAc;AAChD,IAAA,OAAO,EAAE,KAAA,EAAO,eAAA,IAAmB,aAAA,EAAe,SAAS,YAAA,EAAa;AAAA,EAC1E;AACA,EAAA,IAAI,CAAC,OAAA,IAAW,aAAA,KAAkB,aAAa,CAAA,IAAK,UAAA,GAAa,KAAK,WAAA,EAAa;AACjF,IAAA,OAAO,EAAE,KAAA,EAAO,cAAA,IAAkB,YAAA,EAAc,SAAS,WAAA,EAAY;AAAA,EACvE;AACA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,OAAA,GAAW,aAAA,IAAiB,UAAA,GAAe,WAAA,IAAe,QAAA;AAAA,IACjE,OAAA,EAAS;AAAA,GACX;AACF;AASO,SAAS,eAAA,CAAgB;AAAA,EAC9B,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUD,iBAAS,WAAW,CAAA;AAC1E,EAAA,MAAM,UAAA,GAAmBA,eAAiC,IAAI,CAAA;AAC9D,EAAA,MAAM,UAAA,GAAmBA,eAA8B,IAAI,CAAA;AAC3D,EAAA,MAAM,eAAe,IAAA,KAAS,MAAA;AAC9B,EAAA,MAAM,eAAe,IAAA,IAAQ,gBAAA;AAE7B,EAAA,MAAM,OAAA,GAAgBA,OAAA,CAAA,WAAA;AAAA,IACpB,CAAC,QAAA,KAAsB;AACrB,MAAA,IAAI,CAAC,YAAA,EAAc,mBAAA,CAAoB,QAAQ,CAAA;AAC/C,MAAA,YAAA,GAAe,QAAQ,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,cAAc,YAAY;AAAA,GAC7B;AAEA,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,IACzB,OAAO,EAAE,IAAA,EAAM,YAAA,EAAc,OAAA,EAAS,YAAY,UAAA,EAAW,CAAA;AAAA,IAC7D,CAAC,cAAc,OAAO;AAAA,GACxB;AAEA,EAAA,uBACE9E,IAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,KAAA,EAAO,YAAA,EAClC,QAAA,kBAAAA,GAAAA,CAAC4C,SAAAA,CAAY,IAAA,EAAZ,EAAiB,IAAA,EAAM,YAAA,EAAc,YAAA,EAAc,OAAA,EAClD,QAAA,kBAAA5C,GAAAA,CAAC,SAAI,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAS,CAAA,EAClD,CAAA,EACF,CAAA;AAEJ;AAQO,IAAM,qBAAqB,CAAC;AAAA,EACjC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,IAAA;AAAA,EACR,YAAA,EAAc,SAAA;AAAA,EACd,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoF;AAClF,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAW,GAAI,sBAAsB,oBAAoB,CAAA;AACvE,EAAA,MAAM,OAAA,GAAU,yBAAyB,KAAK,CAAA;AAC9C,EAAA,MAAM,cAAA,GAAiB,SAAA,KAAc,OAAO,QAAA,KAAa,WAAW,QAAA,GAAW,cAAA,CAAA;AAE/E,EAAA,uBACED,IAAAA;AAAA,IAAC6C,SAAAA,CAAY,OAAA;AAAA,IAAZ;AAAA,MACC,GAAA,EAAKmC,YAAAA,CAAY,UAAA,EAAY,GAAG,CAAA;AAAA,MAChC,eAAA,EAAe,IAAA;AAAA,MACf,eAAA,EAAc,QAAA;AAAA,MACd,YAAA,EAAY,cAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,+GAAA;AAAA,QACA,sHAAA;AAAA,QACA,oIAAA;AAAA,QACA,uIAAA;AAAA,QACA,kJAAA;AAAA,QACA,iDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,EAAE,GAAG,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,MAC7B,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA/E,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAS,CAAA;AAAA,wBAC7CA,GAAAA;AAAA,UAAC+D,WAAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW,EAAA;AAAA,cACT,6EAAA;AAAA,cACA,gGAAA;AAAA,cACA,IAAA,IAAQ;AAAA;AACV;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAY1B,IAAM,qBAAqB,CAAC;AAAA,EACjC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,IAAA,GAAO,QAAA;AAAA,EACP,UAAA,GAAa,CAAA;AAAA,EACb,WAAA,GAAc,CAAA;AAAA,EACd,KAAA,GAAQ,IAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAiF;AAC/E,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,YAAY,UAAA,EAAW,GAAI,sBAAsB,oBAAoB,CAAA;AAC5F,EAAA,MAAM,OAAA,GAAU,yBAAyB,KAAK,CAAA;AAE9C,EAAMe,kBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,QAAQ,MAAA,CAAO,qBAAA,CAAsB,MAAM,aAAA,CAAc,UAAA,CAAW,OAAO,CAAC,CAAA;AAClF,IAAA,OAAO,MAAM,MAAA,CAAO,oBAAA,CAAqB,KAAK,CAAA;AAAA,EAChD,CAAA,EAAG,CAAC,UAAA,EAAY,IAAI,CAAC,CAAA;AAErB,EAAA,uBACE9E,GAAAA,CAAC4C,SAAAA,CAAY,MAAA,EAAZ,EACC,QAAA,kBAAA5C,GAAAA;AAAA,IAAC4C,SAAAA,CAAY,UAAA;AAAA,IAAZ;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,EAAU,MAAA;AAAA,MACV,IAAA;AAAA,MACA,UAAA;AAAA,MAEA,QAAA,kBAAA5C,GAAAA;AAAA,QAAC4C,SAAAA,CAAY,KAAA;AAAA,QAAZ;AAAA,UACC,GAAA,EAAKmC,YAAAA,CAAY,UAAA,EAAY,GAAG,CAAA;AAAA,UAChC,IAAA,EAAK,QAAA;AAAA,UACL,YAAA,EAAW,sBAAA;AAAA,UACX,SAAA,EAAW,EAAA;AAAA,YACT,mGAAA;AAAA,YACA,qKAAA;AAAA,YACA,0HAAA;AAAA,YACA,6HAAA;AAAA,YACA,6HAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO,EAAE,GAAG,OAAA,EAAS,GAAG,KAAA,EAAM;AAAA,UAC9B,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,YAAA,SAAA,GAAY,KAAK,CAAA;AACjB,YAAA,IAAI,MAAM,gBAAA,EAAkB;AAE5B,YAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA;AACvC,YAAA,MAAM,SAAA,GAAY,aAAa,IAAI,CAAA;AACnC,YAAA,MAAM,UAAA,GAAa,cAAc,SAAS,CAAA;AAE1C,YAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,cAAA,KAAA,CAAM,cAAA,EAAe;AACrB,cAAA,OAAA,CAAQ,KAAK,CAAA;AACb,cAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAC1B,cAAA;AAAA,YACF;AAEA,YAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,WAAA,IAAe,KAAA,CAAM,QAAQ,SAAA,EAAW;AACxD,cAAA,KAAA,CAAM,cAAA,EAAe;AACrB,cAAA,MAAM,YAAA,GAAe,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,SAAS,CAAA,GAAI,EAAA;AAC3D,cAAA,MAAM,YACJ,KAAA,CAAM,GAAA,KAAQ,WAAA,GACV,IAAA,CAAK,IAAI,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG,YAAA,GAAe,CAAC,CAAA,GAC1C,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,eAAe,CAAC,CAAA;AAClC,cAAA,eAAA,CAAgB,KAAK,SAAS,CAAA,IAAK,IAAA,CAAK,CAAC,GAAG,UAAU,CAAA;AACtD,cAAA;AAAA,YACF;AAEA,YAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,WAAA,IAAe,KAAA,CAAM,QAAQ,YAAA,EAAc;AAC3D,cAAA,KAAA,CAAM,cAAA,EAAe;AACrB,cAAA,eAAA;AAAA,gBACE,SAAA,IAAa,KAAK,CAAC,CAAA;AAAA,gBACnB,KAAA,CAAM,GAAA,KAAQ,WAAA,GAAc,UAAA,GAAa;AAAA,eAC3C;AACA,cAAA;AAAA,YACF;AAEA,YAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,EAAO;AACvB,cAAA,MAAM,UAAA,GAAa,oBAAA,CAAqB,UAAA,CAAW,OAAO,CAAA;AAC1D,cAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC7B,cAAA,MAAM,gBAAgB,QAAA,CAAS,aAAA;AAC/B,cAAA,MAAM,KAAA,GAAQ,WAAW,CAAC,CAAA;AAC1B,cAAA,MAAM,IAAA,GAAO,UAAA,CAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAC7C,cAAA,IAAI,EAAE,yBAAyB,WAAA,CAAA,EAAc;AAC3C,gBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,gBAAA,KAAA,EAAO,KAAA,EAAM;AACb,gBAAA;AAAA,cACF;AACA,cAAA,IAAI,KAAA,CAAM,QAAA,IAAY,aAAA,KAAkB,KAAA,EAAO;AAC7C,gBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,gBAAA,IAAA,EAAM,KAAA,EAAM;AAAA,cACd,CAAA,MAAA,IAAW,CAAC,KAAA,CAAM,QAAA,IAAY,kBAAkB,IAAA,EAAM;AACpD,gBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,gBAAA,KAAA,EAAO,KAAA,EAAM;AAAA,cACf;AAAA,YACF;AAAA,UACF,CAAA;AAAA,UACC,GAAG,KAAA;AAAA,UAEH;AAAA;AAAA;AACH;AAAA,GACF,EACF,CAAA;AAEJ;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAoB1B,IAAM,iBAAiB,CAAC;AAAA,EAC7B,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAkF;AAChF,EAAA,MAAM,SAAS,cAAA,CAAe;AAAA,IAC5B,OAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,uBACEhF,IAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,YAAA,EAAY,IAAA;AAAA,MACZ,uBAAA,EAAsB,EAAA;AAAA,MACtB,YAAA,EAAY,UAAU,SAAA,GAAY,WAAA;AAAA,MAClC,QAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,2KAAA;AAAA,QACA,+HAAA;AAAA,QACA,6FAAA;AAAA,QACA,gDAAA;AAAA,QACA,QAAA,IAAY,YAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oGAAA,EACd,QAAA,EAAA;AAAA,0BAAAC,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,UAAA;AAAA,cACL,YAAA,EAAY,UAAU,IAAI,CAAA,CAAA;AAAA,cAC1B,4BAAA,EAA2B,EAAA;AAAA,cAC3B,OAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,gBAAA,IAAI,KAAA,CAAM,QAAQ,OAAA,EAAS;AACzB,kBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,kBAAA,QAAA,EAAS;AAAA,gBACX;AAAA,cACF,CAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACT,4HAAA;AAAA,gBACA,iIAAA;AAAA,gBACA,6DAAA;AAAA,gBACA;AAAA;AACF;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAACmB,KAAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,MAAA;AAAA,cACZ,SAAA,EAAU,kMAAA;AAAA,cACV,WAAA,EAAa;AAAA;AAAA;AACf,SAAA,EACF,CAAA;AAAA,wBAEApB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8CAAA,EAAgD,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,YACpE,OAAO,UAAU,QAAA,oBAChBA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yFACb,QAAA,EAAA,KAAA,EACH;AAAA,WAAA,EAEJ,CAAA;AAAA,UACC,+BACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yFACZ,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,wBAEAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,0BAAA,EAAyB,EAAA;AAAA,YACzB,QAAA;AAAA,YACA,SAAS,MAAA,CAAO,OAAA;AAAA,YAChB,SAAA,EAAW,EAAA;AAAA,cACT,gMAAA;AAAA,cACA,iIAAA;AAAA,cACA,mOAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEC,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACV;AAAA;AAAA,GACF;AAEJ;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;ACjgBtB,IAAM,0BAAA,GAA6BE,GAAAA;AAAA,EACxC,CAAA,6PAAA,EAAgQ,kBAAkB,SAAS,CAAA,2GAAA;AAC7R;ACGA,IAAM,wBAA8B8E,OAAA,CAAA,aAAA,CAGjC,EAAE,KAAA,EAAO,EAAA,EAAI,eAAe,MAAM;AAAC,CAAA,EAAG,CAAA;AAEzC,IAAM,iBAAiB,CAAC;AAAA,EACtB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,EAAO,eAAA;AAAA,EACP,aAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAGwD;AACtD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAUA,iBAAS,EAAE,CAAA;AACnE,EAAA,MAAM,KAAA,GAAQ,eAAA,KAAoB,MAAA,GAAY,eAAA,GAAkB,iBAAA;AAChE,EAAA,MAAM,WAAW,aAAA,IAAiB,oBAAA;AAClC,EAAA,MAAM,YAAA,GAAe,EAAE,KAAA,EAAO,aAAA,EAAe,QAAA,EAAS;AAEtD,EAAA,uBACEhF,GAAAA,CAAC,qBAAA,CAAsB,UAAtB,EAA+B,KAAA,EAAO,cACrC,QAAA,kBAAAD,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,iEAAA,EAAmE,SAAS,CAAA;AAAA,MACzF,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDC,IAAC,sBAAA,EAAA,EAAuB;AAAA;AAAA;AAAA,GAC1B,EACF,CAAA;AAEJ;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAE7B,IAAM,qBAAqB,CAAC;AAAA,EAC1B,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,mEAAA,EAAqE,SAAS,CAAA;AAAA,IAC3F,GAAG;AAAA;AACN;AAEF,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,IAAM,yBAAA,GAAkCgF,OAAA,CAAA,aAAA,CAAiC,EAAE,KAAA,EAAO,IAAI,CAAA;AAEtF,IAAM,qBAAqB,CAAC;AAAA,EAC1B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,YAAkBA,OAAA,CAAA,KAAA,EAAM;AAC9B,EAAA,MAAM,YAAY,KAAA,IAAS,SAAA;AAC3B,EAAA,MAAM,YAAA,GAAe,EAAE,KAAA,EAAO,SAAA,EAAU;AAExC,EAAA,uBACEhF,GAAAA,CAAC,yBAAA,CAA0B,UAA1B,EAAmC,KAAA,EAAO,cACzC,QAAA,kBAAAA,GAAAA,CAAC,QAAG,GAAA,EAAU,SAAA,EAAW,GAAG,UAAA,EAAY,SAAS,GAAI,GAAG,KAAA,EACrD,UACH,CAAA,EACF,CAAA;AAEJ;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,IAAM,wBAAwB,CAAC;AAAA,EAC7B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,KAAA,EAAO,YAAA,EAAc,aAAA,EAAc,GAAUgF,YAAI,qBAAqB,CAAA;AAC9E,EAAA,MAAM,EAAE,KAAA,EAAO,SAAA,EAAU,GAAUA,YAAI,yBAAyB,CAAA;AAEhE,EAAA,MAAM,SAAS,YAAA,KAAiB,SAAA;AAEhC,EAAA,uBACEjF,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,GAAA;AAAA,MACA,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,MAC9B,OAAA,EAAS,MAAM,aAAA,CAAc,MAAA,GAAS,KAAK,SAAS,CAAA;AAAA,MACpD,YAAA,EAAc,MAAM,aAAA,CAAc,SAAS,CAAA;AAAA,MAC3C,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA2B,EAAG,SAAS,SAAS,CAAA;AAAA,MAC7D,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAU,GAAA;AAAA,wBACXC,GAAAA;AAAA,UAAC+D,WAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,qLAAA;AAAA,YACV,aAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,GACF;AAEJ;AACA,qBAAA,CAAsB,WAAA,GAAc,uBAAA;AAEpC,IAAM,wBAAwB,CAAC;AAAA,EAC7B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA8F;AAC5F,EAAA,MAAM,EAAE,KAAA,EAAO,YAAA,EAAa,GAAUiB,YAAI,qBAAqB,CAAA;AAC/D,EAAA,MAAM,EAAE,KAAA,EAAO,SAAA,EAAU,GAAUA,YAAI,yBAAyB,CAAA;AAChE,EAAA,MAAM,SAAS,YAAA,KAAiB,SAAA;AAEhC,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,uBACEhF,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA;AAAA,MAC1E,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAW,iBAAA,CAAkB,qBAAA;AAAA,UAC7B,KAAA,EAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAA,EAAQ;AAAA,UAEtC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AACA,qBAAA,CAAsB,WAAA,GAAc,uBAAA;AAEpC,IAAM,qBAAqB,CAAC;AAAA,EAC1B,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,MAAM,EAAE,aAAA,EAAc,GAAUgF,OAAA,CAAA,GAAA,CAAI,qBAAqB,CAAA;AAEzD,EAAA,IAAI,OAAA,IAAiBA,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,MAAM,KAAA,GAAQ,QAAA;AACd,IAAA,OAAaA,qBAAa,KAAA,EAAO;AAAA,MAC/B,GAAA;AAAA,MACA,aAAA,EAAe,SAAS,EAAA,GAAK,MAAA;AAAA,MAC7B,OAAA,EAAS,CAAC,CAAA,KAA2C;AACnD,QAAA,aAAA,CAAc,EAAE,CAAA;AAChB,QAAA,OAAA,GAAU,CAAC,CAAA;AACX,QAAA,IAAI,MAAM,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,MAChD,CAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,KAAA,CAAM,MAAM,SAAS,CAAA;AAAA,MAC9C,GAAG;AAAA,KACkE,CAAA;AAAA,EACzE;AAEA,EAAA,uBACEhF,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA,EAAa,SAAS,EAAA,GAAK,MAAA;AAAA,MAC3B,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,aAAA,CAAc,EAAE,CAAA;AAChB,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,SAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AACA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,IAAM,yBAAyB,CAAC;AAAA,EAC9B,GAAA,EAAK;AACP,CAAA,KAA8F;AAC5F,EAAA,OAAO,IAAA;AACT;AACA,sBAAA,CAAuB,WAAA,GAAc,wBAAA;AAErC,IAAM,0BAA0B,CAAC;AAAA,EAC/B,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,oEAAA,EAAsE,SAAS,CAAA;AAAA,IAC5F,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wEAAA,EAAyE;AAAA;AAC1F;AAEF,uBAAA,CAAwB,WAAA,GAAc,yBAAA;;;ACrM/B,IAAM,YAAA,GAAe;AAAA,EAC1B,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,QAAQ,eAAA,CAAgB,IAK1B,CAAA;AAAA,IACA,EAAA,EAAI;AAAA,MACF,QAAQ,eAAA,CAAgB,EAK1B,CAAA;AAAA,IACA,EAAA,EAAI;AAAA,MACF,QAAQ,eAAA,CAAgB,EAK1B,CAAA;AAAA,IACA,EAAA,EAAI;AAAA,MACF,QAAQ,eAAA,CAAgB,EAK1B,CAMF,CAUF,CAAA;;;ACnCA,IAAM,YAAA,GAAe,CAAC,IAAA,KAAgE;AACpF,EAAA,MAAM,KAAA,GAAQ,aAAa,IAAI,CAAA,EAAA,CAAA;AAE/B,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,uBAAuB,KAAK,CAAA,iBAAA,CAAA;AAAA,IACxC,gBAAA,EAAkB,uBAAuB,KAAK,CAAA,kBAAA,CAAA;AAAA,IAC9C,MAAA,EAAQ,uBAAuB,KAAK,CAAA,kBAAA,CAAA;AAAA,IACpC,UAAA,EAAY,mBAAA;AAAA,IACZ,KAAA,EAAO,mBAAA;AAAA,IACP,IAAA,EAAM,KAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AACF,CAAA;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,QAAQ,eAAA,CAAgB,EAAA;AAAA,EAExB,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA,GACrC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,WAAW,eAAA,CAAgB,EAAA;AAAA,MAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,MACvB,QAAA,EAAU,EAAA;AAAA,MACV,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,UAAA,EAAY;AAAA,KACd;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,WAAW,eAAA,CAAgB,EAAA;AAAA,MAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,MACvB,QAAA,EAAU,EAAA;AAAA,MACV,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,UAAA,EAAY;AAAA,KACd;AAAA,IACA,KAAA,EAAO;AAAA,MACL,WAAW,eAAA,CAAgB,EAAA;AAAA,MAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,MACvB,QAAA,EAAU,EAAA;AAAA,MACV,UAAU,iBAAA,CAAkB,IAAA;AAAA,MAC5B,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,YAAY,mBAAA,CAAoB;AAAA,GAClC;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS;AAAA,MACP,UAAA,EAAY,kBAAA;AAAA,MACZ,gBAAA,EAAkB,kBAAA;AAAA,MAClB,MAAA,EAAQ,kBAAA;AAAA,MACR,UAAA,EAAY,mBAAA;AAAA,MACZ,KAAA,EAAO,mBAAA;AAAA,MACP,IAAA,EAAM,mBAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,SAAA,EAAW;AAAA,MACT,UAAA,EAAY,kBAAA;AAAA,MACZ,gBAAA,EAAkB,kBAAA;AAAA,MAClB,MAAA,EAAQ,kBAAA;AAAA,MACR,UAAA,EAAY,mBAAA;AAAA,MACZ,KAAA,EAAO,mBAAA;AAAA,MACP,IAAA,EAAM,mBAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,OAAA,EAAS,aAAa,SAAS,CAAA;AAAA,IAC/B,OAAA,EAAS,aAAa,SAAS,CAAA;AAAA,IAC/B,KAAA,EAAO,aAAa,aAAa,CAAA;AAAA,IACjC,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,0DAAA;AAAA,MACZ,gBAAA,EAAkB,2DAAA;AAAA,MAClB,MAAA,EAAQ,2DAAA;AAAA,MACR,UAAA,EAAY,mBAAA;AAAA,MACZ,KAAA,EAAO,mBAAA;AAAA,MACP,IAAA,EAAM,gBAAA;AAAA,MACN,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;;;AC/FO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,EACvB,SAAA,EAAW,gBAAgB,KAAK,CAAA;AAAA,EAChC,OAAA,EAAS;AAAA,IACP,CAAA,EAAG,iBAAiB,CAAC,CAAA;AAAA,IACrB,CAAA,EAAG,iBAAiB,CAAC;AAAA,GACvB;AAAA,EACA,QAAQ,eAAA,CAAgB,EAAA;AAAA,EACxB,UAAU,iBAAA,CAAkB,EAAA;AAAA,EAC5B,WAAW,iBAAA,CAAkB,EAAA;AAAA,EAC7B,WAAW,iBAAA,CAAkB,EAAA;AAAA,EAC7B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,EAC5B,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;ACnBO,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AAAA,IACL,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,QAAA,EAAU,iBAAiB,CAAC;AAAA,GAC9B;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,WAAW,eAAA,CAAgB,EAAA;AAAA,IAC3B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,YAAY,mBAAA,CAAoB,MAAA;AAAA,IAChC,iBAAiB,iBAAA,CAAkB,EAAA;AAAA,IACnC,cAAA,EAAgB,iBAAiB,CAAC;AAAA,GACpC;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,EAAA;AAAA,IACN,OAAA,EAAS,CAAA;AAAA,IACT,WAAA,EAAa,CAEf,CAAA;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,YAAY,mBAAA,CAAoB;AAAA,GAClC;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;ACvBO,IAAM,cAAA,GAAiB;AAAA,EAC5B,QAAQ,eAAA,CAAgB,EAAA;AAAA,EACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,EAC5B,MAAA,EAAQ;AAAA,IACN,MAAM,eAAA,CAAgB,EAAA;AAAA,IACtB,MAAA,EAAQ,iBAAiB,CAAC,CAAA;AAAA,IAC1B,QAAQ,eAAA,CAAgB,IAAA;AAAA,IACxB,UAAU,iBAAA,CAAkB,IAAA;AAAA,IAC5B,QAAQ,eAAA,CAAgB;AAAA,GAC1B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;ACZO,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,QAAQ,eAAA,CAAgB,IAAA;AAAA,MACxB,UAAU,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,MACtD,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,WAAW,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,MACvD,aAAa,eAAA,CAAgB,EAAA;AAAA,MAC7B,UAAU,iBAAA,CAAkB;AAAA,KAC9B;AAAA,IACA,KAAA,EAAO;AAAA,MACL,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,SAAA,EAAW,iBAAiB,CAAC,CAAA;AAAA,MAC7B,aAAa,eAAA,CAAgB,EAAA;AAAA,MAC7B,UAAU,iBAAA,CAAkB;AAAA,KAC9B;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,SAAA,EAAW,iBAAiB,CAAC,CAAA;AAAA,MAC7B,aAAa,eAAA,CAAgB,EAAA;AAAA,MAC7B,UAAU,iBAAA,CAAkB;AAAA,KAC9B;AAAA,IACA,KAAA,EAAO;AAAA,MACL,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,IAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB,EAAA;AAAA,MACxB,SAAA,EAAW,iBAAiB,CAAC,CAAA;AAAA,MAC7B,aAAa,eAAA,CAAgB,EAAA;AAAA,MAC7B,UAAU,iBAAA,CAAkB;AAAA;AAC9B,GACF;AAAA,EACA,SAAA,EAAW,EAAA;AAAA,EACX,cAAA,EAAgB,CAAA;AAAA,EAChB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,EAC5B,UAAA,EAAY,iBAAiB,CAAC,CAAA;AAAA,EAC9B,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA;AAAA,IACjC,SAAA,EAAW,gBAAA,CAAiB,EAAE,CAAA,GAAI,CAAA;AAAA,IAClC,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,UAAA,EAAY,iBAAiB,CAAC,CAAA;AAAA,IAC9B,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,UAAU,iBAAA,CAAkB;AAAA,GAC9B;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,UAAU,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,IACtD,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAAA,IAClC,aAAA,EAAe,eAAA,CAAgB,EAAA,GAAK,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,IAC1D,mBAAmB,iBAAA,CAAkB;AAAA,GACvC;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,IAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;AC1DO,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO,iBAAiB,CAAC,CAAA;AAAA,EACzB,WAAW,eAAA,CAAgB,KAAK,CAAA,GAAI,CAAA,GAAI,iBAAiB,CAAC,CAAA;AAAA;AAAA,EAC1D,UAAA,EAAY,eAAA,CAAgB,KAAK,CAAA,GAAI,CAAA;AAAA;AAAA,EACrC,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,EAC5B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,EAC5B,YAAA,EAAc,iBAAiB,CAAC,CAAA;AAAA,EAChC,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,EACvB,SAAA,EAAW,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,EACjC,SAAA,EAAW,iBAAiB,CAAC,CAAA;AAAA,EAC7B,MAAA,EAAQ,gBAAgB,KAAK,CAAA;AAAA,EAC7B,KAAA,EAAO;AAAA,IACL,MAAM,eAAA,CAAgB,EAAA;AAAA,IACtB,UAAU,iBAAA,CAAkB,IAAA;AAAA,IAC5B,MAAA,EAAQ,iBAAiB,CAAC,CAAA;AAAA,IAC1B,QAAQ,eAAA,CAAgB;AAAA,GAC1B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,+BAAA;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,qBAAA;AAAA,IACZ,MAAA,EAAQ;AAAA,GAMZ,CAAA;;;ACvCO,IAAM,cAAA,GAAiB;AAAA,EAC5B,eAAe,eAAA,CAAgB,EAAA;AAAA,EAC/B,eAAA,EAAiB,iBAAiB,CAAC,CAAA;AAAA,EACnC,YAAA,EAAc,iBAAiB,CAAC,CAAA;AAAA,EAChC,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,EACvB,QAAQ,eAAA,CAAgB,IAAA;AAAA,EACxB,UAAU,eAAA,CAAgB,EAAA;AAAA,EAC1B,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;ACTO,IAAM,YAAA,GAAe;AAAA,EAC1B,QAAQ,eAAA,CAAgB,EAAA;AAAA,EACxB,WAAA,EAAa,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,EACnC,WAAW,eAAA,CAAgB,EAAA;AAAA,EAC3B,QAAQ,eAAA,CAAgB,IAAA;AAAA,EACxB,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,EACvB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,EAC5B,eAAe,iBAAA,CAAkB,EAAA;AAAA,EACjC,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,mBAAA;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,wBAAA;AAAA,IACZ,QAAQ,eAAA,CAAgB;AAAA,GAC1B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;AC3BO,IAAM,YAAA,GAAe;AAAA,EAC1B,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,IAAI,eAAA,CAAgB,EAAA;AAAA,EACpB,IAAI,eAAA,CAAgB;AACtB,CAAA;AAIO,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS,uBAAA;AAAA,EACT,UAAA,EAAY,iBAAA;AAAA,EACZ,OAAA,EAAS;AACX,CAAA;AAIO,IAAM,aAAA,GAAgB;AAAA,EAC3B,WAAA,EAAa,IAAA;AAAA,EACb,QAAA,EAAU,EAAA;AAAA,EACV,QAAA,EAAU,KAAA;AAAA,EACV,SAAA,EAAW,IAAA;AAAA,EACX,OAAA,EAAS,KAAA;AAAA,EACT,MAAA,EAAQ,IAAA;AAAA,EACR,YAAA,EAAc,MAAA;AAAA,EACd,WAAW,eAAA,CAAgB,IAAA;AAAA,EAC3B,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,IAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,mBAAA,CAAoB,QAAA,CAAS,SAAA,GAAY,CAAA;AAAA,IACnD,MAAA,EAAQ;AAAA;AAEZ,CAAA;;;ACjCO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,MAAA;AAAA,IAC7B,EAAA,EAAI,YAAA,CAAa,IAAA,CAAK,EAAA,CAAG,MAAA;AAAA,IACzB,EAAA,EAAI,YAAA,CAAa,IAAA,CAAK,EAAA,CAAG,MAAA;AAAA,IACzB,EAAA,EAAI,YAAA,CAAa,IAAA,CAAK,EAAA,CAAG;AAAA,GAC3B;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,GAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAAA,IAClC,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;AClBO,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO;AAAA,IACL,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,eAAe,eAAA,CAAgB,IAAA;AAAA,IAC/B,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,QAAA,EAAU,gBAAgB,EAAA,GAAK,CAAA;AAAA,IAC/B,QAAA,EAAU,EAAA;AAAA,IACV,UAAU,iBAAA,CAAkB;AAAA,GAC9B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,eAAe,eAAA,CAAgB,EAAA;AAAA,IAC/B,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,UAAU,eAAA,CAAgB,EAAA;AAAA,IAC1B,QAAA,EAAU,EAAA;AAAA,IACV,UAAU,iBAAA,CAAkB;AAAA,GAC9B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,eAAe,eAAA,CAAgB,EAAA;AAAA,IAC/B,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,UAAU,eAAA,CAAgB,IAAA;AAAA,IAC1B,QAAA,EAAU,EAAA;AAAA,IACV,UAAU,iBAAA,CAAkB;AAAA;AAEhC,CAAA;AAIO,IAAM,YAAA,GAAe;AAAA,EAC1B,QAAQ,eAAA,CAAgB,EAAA;AAAA,EACxB,eAAe,eAAA,CAAgB,EAAA;AAAA,EAC/B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,EACvB,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;ACvCO,IAAM,WAAA,GAAc;AAAA,EACzB,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,GAAA;AAAA,IACV,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAQ,eAAA,CAAgB;AAAA,GAC1B;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAQ,eAAA,CAAgB;AAAA,GAC1B;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,iBAAiB,EAAE;AAAA,GAC7B;AAAA,EACA,UAAA,EAAY;AAAA,IACV,MAAM,iBAAA,CAAkB,EAAA;AAAA,IACxB,eAAe,mBAAA,CAAoB,MAAA;AAAA,IACnC,YAAY,mBAAA,CAAoB;AAAA,GAClC;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,iBAAiB,CAAC;AAAA,GAC7B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;AC5BO,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAI;AAAA,IACF,QAAQ,eAAA,CAAgB,IAAA;AAAA,IACxB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,UAAA,EAAY,iBAAiB,CAAC,CAAA;AAAA,IAC9B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,EAAA,EAAI;AAAA,IACF,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,YAAY,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,IACxD,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,EAAA,EAAI;AAAA,IACF,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,YAAY,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,IACxD,UAAU,iBAAA,CAAkB,IAAA;AAAA,IAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,EAAA,EAAI;AAAA,IACF,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,IAC3B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,KAAK,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,IACjD,UAAA,EAAY,iBAAiB,CAAC,CAAA;AAAA,IAC9B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,QAAA,EAAU;AAAA;AAEd,CAAA;AAIO,IAAM,UAAA,GAAa;AAAA,EACxB,QAAQ,eAAA,CAAgB,EAAA;AAAA,EACxB,eAAe,eAAA,CAAgB,EAAA;AAAA,EAC/B,YAAY,eAAA,CAAgB,IAAA;AAAA,EAC5B,aAAA,EAAe,CAAA;AAAA,EACf,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,EAC5B,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,EAC/B,eAAe,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA;AAAA,EAC3D,eAAe,iBAAA,CAAkB,EAAA;AAAA,EACjC,gBAAgB,kBAAA,CAAmB,KAAA;AAAA,EACnC,iBAAiB,kBAAA,CAAmB,MAAA;AAAA,EACpC,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,IAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;ACjEO,IAAM,cAAA,GAAiB;AAAA,EAC5B,KAAA,EAAO;AAAA,IACL,EAAA,EAAI;AAAA,MACF,SAAA,EAAW,iBAAiB,EAAE,CAAA;AAAA,MAC9B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB;AAAA,KAC1B;AAAA,IACA,EAAA,EAAI;AAAA,MACF,SAAA,EAAW,iBAAiB,EAAE,CAAA;AAAA,MAC9B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB;AAAA,KAC1B;AAAA,IACA,EAAA,EAAI;AAAA,MACF,SAAA,EAAW,iBAAiB,EAAE,CAAA;AAAA,MAC9B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC5B,UAAU,iBAAA,CAAkB,IAAA;AAAA,MAC5B,QAAQ,eAAA,CAAgB;AAAA;AAC1B,GACF;AAAA,EACA,WAAW,iBAAA,CAAkB,EAAA;AAAA,EAC7B,cAAA,EAAgB,CAAA;AAAA,EAChB,UAAU,gBAAA,CAAiB,CAAC,CAAA,GAAI,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAExD,CAAA;;;ACvBO,IAAM,kBAAA,GAAqB;AAAA,EAChC,KAAA,EAAO;AAAA,IACL,eAAe,eAAA,CAAgB,EAAA;AAAA,IAC/B,cAAA,EAAgB,EAAA;AAAA,IAChB,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAAA,IAClC,UAAU,iBAAA,CAAkB,IAAA;AAAA,IAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,OAAA,EAAS,iBAAiB,CAAC;AAAA,GAC7B;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,eAAe,eAAA,CAAgB,EAAA;AAAA,IAC/B,cAAA,EAAgB,EAAA;AAAA,IAChB,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAAA,IAClC,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,UAAU,iBAAA,CAAkB,EAAA;AAAA,IAC5B,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,OAAA,EAAS,iBAAiB,CAAC;AAAA;AAE/B,CAAA;AAIO,IAAM,mBAAA,GAAsB;AAAA,EACjC,QAAQ,eAAA,CAAgB,EAAA;AAAA,EACxB,cAAc,eAAA,CAAgB,EAAA;AAAA,EAC9B,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,EAC5B,gBAAgB,kBAAA,CAAmB,KAAA;AAAA,EACnC,iBAAiB,kBAAA,CAAmB,MAAA;AAAA,EACpC,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,IAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA;AAEvC,CAAA;;;AClCO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,KAAA,EAAO;AAAA,IACL,EAAA,EAAI;AAAA,MACF,SAAS,eAAA,CAAgB,EAAA;AAAA,MACzB,IAAA,EAAM,iBAAiB,CAAC,CAAA;AAAA,MACxB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,MAC3B,QAAQ,eAAA,CAAgB;AAAA,KAC1B;AAAA,IACA,EAAA,EAAI;AAAA,MACF,SAAS,eAAA,CAAgB,EAAA;AAAA,MACzB,IAAA,EAAM,iBAAiB,CAAC,CAAA;AAAA,MACxB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,MAC3B,QAAQ,eAAA,CAAgB;AAAA,KAC1B;AAAA,IACA,EAAA,EAAI;AAAA,MACF,SAAS,eAAA,CAAgB,EAAA;AAAA,MACzB,IAAA,EAAM,iBAAiB,CAAC,CAAA;AAAA,MACxB,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAAA,MAC3B,QAAQ,eAAA,CAAgB;AAAA;AAC1B,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ,EAAA;AAAA,IACR,SAAA,EAAW,CAAA;AAAA,IACX,UAAA,EAAY,CAAA;AAAA,IACZ,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACf;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO,OAAA;AAAA,IACnC,UAAA,EAAY,IAAA;AAAA,IACZ,QAAA,EAAU,IAAA;AAAA,IACV,OAAO,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA,EAAG;AAAA,IACrD,OAAO,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA,EAAG;AAAA,IACrD,OAAA,EAAS,EAAE,QAAA,EAAU,CAAA;AAAE;AAE3B,CAAA;;;ACnCO,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO,GAAA;AAAA,EACP,QAAQ,eAAA,CAAgB,EAAA;AAAA,EACxB,QAAQ,eAAA,CAAgB,EAAA;AAAA,EACxB,KAAA,EAAO;AAAA,IACL,aAAA,EAAe,CAAA;AAAA,IACf,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,IACvB,MAAA,EAAQ,iBAAiB,CAAC,CAAA;AAAA,IAC1B,YAAA,EAAc,iBAAiB,CAAC;AAAA,GAClC;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,GAAA;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAQ,eAAA,CAAgB,EAAA;AAAA,IACxB,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,IAC5B,QAAA,EAAU,iBAAiB,CAAC;AAAA,GAC9B;AAAA,EACA,UAAA,EAAY;AAAA,IACV,WAAW,iBAAA,CAAkB,EAAA;AAAA,IAC7B,iBAAiB,iBAAA,CAAkB,EAAA;AAAA,IACnC,UAAA,EAAY,EAAA;AAAA,IACZ,aAAa,mBAAA,CAAoB;AAAA,GACnC;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,MAAA;AAAA,IACvC,MAAA,EAAQ;AAAA;AAEZ,CAAA;;;ACFA,IAAM,aAAA,GAAgB,CACpB,IAAA,KACsB;AACtB,EAAA,MAAM,KAAA,GAAQ,aAAa,IAAI,CAAA,EAAA,CAAA;AAE/B,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,KAAA;AAAA,IACT,QAAA,EAAU,kBAAA;AAAA,IACV,WAAA,EAAa,uBAAuB,KAAK,CAAA,uBAAA,CAAA;AAAA,IACzC,KAAA,EAAO,kBAAA;AAAA,IACP,MAAA,EAAQ,KAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AACF,CAAA;AAEO,IAAM,YAAA,GAAe;AAAA,EAC1B,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,EAAA;AAAA,MACZ,WAAA,EAAa,EAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,MACX,cAAA,EAAgB,EAAA;AAAA,MAChB,QAAA,EAAU,EAAA;AAAA,MACV,eAAe,iBAAA,CAAkB,EAAA;AAAA,MACjC,QAAA,EAAU,CAAA;AAAA,MACV,GAAA,EAAK,iBAAiB,CAAC;AAAA,KACzB;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,EAAA;AAAA,MACZ,WAAA,EAAa,EAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,MACX,cAAA,EAAgB,EAAA;AAAA,MAChB,QAAA,EAAU,EAAA;AAAA,MACV,eAAe,iBAAA,CAAkB,EAAA;AAAA,MACjC,QAAA,EAAU,CAAA;AAAA,MACV,GAAA,EAAK,iBAAiB,CAAC;AAAA,KACzB;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,EAAA;AAAA,MACZ,WAAA,EAAa,EAAA;AAAA,MACb,SAAA,EAAW,gBAAgB,EAAA,GAAK,CAAA;AAAA,MAChC,cAAA,EAAgB,EAAA;AAAA,MAChB,QAAA,EAAU,EAAA;AAAA,MACV,eAAe,iBAAA,CAAkB,EAAA;AAAA,MACjC,QAAA,EAAU,CAAA;AAAA,MACV,GAAA,EAAK,iBAAiB,CAAC;AAAA;AACzB,GACF;AAAA,EACA,QAAQ,eAAA,CAAgB,IAAA;AAAA,EACxB,aAAa,eAAA,CAAgB,EAAA;AAAA,EAC7B,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAoB,QAAA,CAAS,KAAA;AAAA,IACvC,MAAA,EAAQ,oBAAoB,MAAA,CAAO;AAAA,GACrC;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,cAAc,SAAS,CAAA;AAAA,IAChC,IAAA,EAAM,cAAc,SAAS,CAAA;AAAA,IAC7B,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,qBAAA;AAAA,MACT,QAAA,EAAU,kBAAA;AAAA,MACV,WAAA,EAAa,gEAAA;AAAA,MACb,KAAA,EAAO,kBAAA;AAAA,MACP,MAAA,EAAQ,gBAAA;AAAA,MACR,OAAA,EAAS;AAAA,KACX;AAAA,IACA,OAAA,EAAS,cAAc,SAAS,CAAA;AAAA,IAChC,OAAA,EAAS,cAAc,SAAS,CAAA;AAAA,IAChC,KAAA,EAAO,cAAc,aAAa,CAAA;AAAA,IAClC,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,mBAAA;AAAA,MACT,QAAA,EAAU,kBAAA;AAAA,MACV,WAAA,EAAa,kBAAA;AAAA,MACb,KAAA,EAAO,kBAAA;AAAA,MACP,MAAA,EAAQ,mBAAA;AAAA,MACR,OAAA,EAAS;AAAA;AACX;AAKJ,CAAA;AAEO,IAAM,kBAAA,GAAqB;AAAA,EAChC,KAAA,EAAO,SAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,GAAA,EAAK,OAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;ACnEA,IAAM,aAAA,GAAgB;AAAA,EACpB,OAAA,EAAS,KAAA;AAAA,EACT,SAAA,EAAW,MAAA;AAAA,EACX,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,SAAA,GAAY;AAAA,EAChB,OAAA,EAAS,WAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,OAAA,EAAS,WAAA;AAAA,EACT,OAAA,EAASiF,OAAA;AAAA,EACT,KAAA,EAAOA,OAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,WAAA,CAAY,MAAiB,IAAA,EAA2B;AAC/D,EAAA,OAAO,QAAQ,IAAA,IAAQ,SAAA;AACzB;AAEA,SAAS,YAAA,CAAa,OAA2B,IAAA,EAAgC;AAC/E,EAAA,OAAO,KAAA,KAAU,MAAA,GAAY,aAAA,CAAc,IAAI,CAAA,GAAI,KAAA;AACrD;AAEA,SAAS,YAAA,CAAa,IAAA,EAAgB,IAAA,EAAgB,IAAA,EAA0B;AAC9E,EAAA,MAAM,UAAA,GAAa,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA;AACvC,EAAA,MAAM,UAAA,GAAa,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA;AAEvC,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,IAAA,GAAO,UAAA,CAAW,gBAAA,GAAmB,UAAA,CAAW,UAAA;AAAA,IAC7D,iBAAiB,UAAA,CAAW,MAAA;AAAA,IAC5B,aAAa,UAAA,CAAW,UAAA;AAAA,IACxB,gBAAgB,UAAA,CAAW,KAAA;AAAA,IAC3B,eAAe,UAAA,CAAW,IAAA;AAAA,IAC1B,eAAe,UAAA,CAAW,IAAA;AAAA,IAC1B,eAAA,EAAiB,CAAA,EAAG,UAAA,CAAW,MAAM,CAAA,EAAA,CAAA;AAAA,IACrC,mBAAA,EAAqB,CAAA,EAAG,UAAA,CAAW,SAAS,CAAA,EAAA,CAAA;AAAA,IAC5C,WAAA,EAAa,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnC,WAAA,EAAa,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnC,YAAA,EAAc,CAAA,EAAG,UAAA,CAAW,GAAG,CAAA,EAAA,CAAA;AAAA,IAC/B,kBAAA,EAAoB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC1C,kBAAA,EAAoB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC1C,oBAAA,EAAsB,CAAA,EAAG,UAAA,CAAW,UAAU,CAAA,EAAA,CAAA;AAAA,IAC9C,0BAAA,EAA4B,WAAW,KAAA,CAAM,UAAA;AAAA,IAC7C,wBAAA,EAA0B,CAAA,EAAG,UAAA,CAAW,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACvD,sBAAA,EAAwB,WAAW,MAAA,CAAO;AAAA,GAC5C;AACF;AAEO,SAAS,IAAA,CAAK;AAAA,EACnB,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,KAAA;AAAA,EACP,IAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAc;AACZ,EAAA,MAAM,YAAA,GAAe,WAAA,CAAY,IAAA,EAAM,IAAI,CAAA;AAC3C,EAAA,MAAMC,MAAAA,GAAQ,YAAA,CAAa,KAAA,EAAO,YAAY,CAAA;AAC9C,EAAA,MAAM,IAAA,GAAO,UAAU,YAAY,CAAA;AACnC,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,YAAA,KAAiB,OAAA,GAAU,OAAA,GAAU,MAAA,CAAA;AAEnE,EAAA,uBACEnF,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,GAAA;AAAA,MACA,IAAA,EAAM,YAAA;AAAA,MACN,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,aAAW,IAAA,IAAQ,MAAA;AAAA,MACnB,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAU,MAAA;AAAA,MACV,WAAA,EAAW,YAAA;AAAA,MACX,KAAA,EAAO,EAAE,GAAG,YAAA,CAAa,MAAM,YAAA,EAAc,IAAI,CAAA,EAAG,GAAG,KAAA,EAAM;AAAA,MAC7D,SAAA,EAAW,EAAA;AAAA,QACT,6bAAA;AAAA,QACA,gGAAA;AAAA,QACA,iCAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,KAAS,yBACRC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,WAAA,EAAU,WAAA;AAAA,YACV,SAAA,EAAU,mKAAA;AAAA,YAET,QAAA,EAAA,IAAA,oBAAQA,GAAAA,CAAC,IAAA,EAAA,EAAK,MAAK,uBAAA,EAAwB;AAAA;AAAA,SAC9C;AAAA,wBAGFD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,WAAA,EAAY,WAAU,gBAAA,EAClC,QAAA,EAAA;AAAA,UAAAmF,0BACCnF,IAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,YAAA;AAAA,cACV,SAAA,EAAU,mFAAA;AAAA,cAET,QAAA,EAAA;AAAA,gBAAAmF,MAAAA;AAAA,gBAAM;AAAA;AAAA;AAAA,WACT;AAAA,0BAEFlF,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAA,EAAU,gBAAgB,QAAA,EAAS;AAAA,SAAA,EAC3C,CAAA;AAAA,QAEC,0BACCA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAU,aAAA;AAAA,YACV,OAAO,QAAA,IAAY,MAAA;AAAA,YACnB,SAAA,EAAU,sEAAA;AAAA,YACV,iBAAe,QAAA,IAAY,MAAA;AAAA,YAE1B,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AC5JA,SAAS,kBAAkB,KAAA,EAA2D;AACpF,EAAA,OAAO;AAAA,IACL,kBAAA,EAAoB,CAAA,EAAG,gBAAA,CAAiB,GAAG,CAAA,EAAA,CAAA;AAAA,IAC3C,yBAAA,EAA2B,CAAA,EAAG,gBAAA,CAAiB,SAAS,CAAA,EAAA,CAAA;AAAA,IACxD,wBAAA,EAA0B,CAAA,EAAG,gBAAA,CAAiB,OAAA,CAAQ,CAAC,CAAA,EAAA,CAAA;AAAA,IACvD,wBAAA,EAA0B,CAAA,EAAG,gBAAA,CAAiB,OAAA,CAAQ,CAAC,CAAA,EAAA,CAAA;AAAA,IACvD,qBAAA,EAAuB,CAAA,EAAG,gBAAA,CAAiB,MAAM,CAAA,EAAA,CAAA;AAAA,IACjD,wBAAA,EAA0B,CAAA,EAAG,gBAAA,CAAiB,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtD,yBAAA,EAA2B,CAAA,EAAG,gBAAA,CAAiB,SAAS,CAAA,EAAA,CAAA;AAAA,IACxD,yBAAA,EAA2B,CAAA,EAAG,gBAAA,CAAiB,SAAS,CAAA,EAAA,CAAA;AAAA,IACxD,wBAAA,EAA0B,CAAA,EAAG,gBAAA,CAAiB,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtD,uBAAA,EAAyB,CAAA,EAAG,gBAAA,CAAiB,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5D,qBAAA,EAAuB,iBAAiB,MAAA,CAAO,MAAA;AAAA,IAC/C,GAAG;AAAA,GACL;AACF;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,WAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,WAAU,iBAAA,EAAkB,CAAA;AAAA,EAC7D;AAEA,EAAA,MAAM,aAAa,SAAA,KAAc,UAAA;AACjC,EAAA,MAAM,IAAA,GAAO,aAAa,WAAA,GAAce,YAAAA;AAExC,EAAA,uBACEhB,IAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,MAAM,WAAA,CAAY,IAAA;AAAA,MAClB,GAAA,EAAK,SAAA,KAAc,UAAA,GAAa,MAAA,GAAS,MAAA;AAAA,MACzC,YAAA,EAAY,CAAA,MAAA,EAAS,SAAS,CAAA,OAAA,EAAU,YAAY,KAAK,CAAA,CAAA;AAAA,MACzD,SAAA,EAAW,EAAA;AAAA,QACT,wKAAA;AAAA,QACA,6FAAA;AAAA,QACA,6IAAA;AAAA,QACA,uIAAA;AAAA,QACA,+BAAA;AAAA,QACA,aAAa,yBAAA,GAA4B;AAAA,OAC3C;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,UAAA,oBACCC,GAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBAEFD,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yDAAA,EACd,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wGAAA,EACb,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,0BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iFAAA,EACb,sBAAY,KAAA,EACf;AAAA,SAAA,EACF,CAAA;AAAA,QACC,CAAC,8BACAA,GAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,GAEJ;AAEJ;AAEO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,aAAA,GAAgB,UAAA;AAAA,EAChB,SAAA,GAAY,MAAA;AAAA,EACZ,SAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAc,SAAA,GAAY,iBAAA;AAAA,EAC1B,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,uBACED,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,oEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,kBAAkB,KAAK,CAAA;AAAA,MAC7B,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,IAAC,cAAA,EAAA,EAAe,WAAA,EAAa,UAAU,SAAA,EAAU,UAAA,EAAW,OAAO,aAAA,EAAe,CAAA;AAAA,wBAClFA,IAAC,cAAA,EAAA,EAAe,WAAA,EAAa,MAAM,SAAA,EAAU,MAAA,EAAO,OAAO,SAAA,EAAW;AAAA;AAAA;AAAA,GACxE;AAEJ;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AC3FzB,IAAM,gBAAA,GAAmBE,IAAI,uCAAA,EAAyC;AAAA,EACpE,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,eAAA;AAAA,MACT,OAAA,EAAS,eAAA;AAAA,MACT,SAAA,EAAW,iBAAA;AAAA,MACX,WAAA,EAAa,mBAAA;AAAA,MACb,OAAA,EAAS,eAAA;AAAA,MACT,OAAA,EAAS,eAAA;AAAA,MACT,OAAA,EAAS;AAAA,KACX;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,OAAA;AAAA,MACJ,OAAA,EAAS,OAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM;AAAA;AAEV,CAAC;AAED,IAAM,yBAAA,GAA4BA,GAAAA;AAAA,EAChC,qIAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,YAAA;AAAA,QACT,OAAA,EAAS,YAAA;AAAA,QACT,SAAA,EAAW,eAAA;AAAA,QACX,WAAA,EAAa,gBAAA;AAAA,QACb,OAAA,EAAS,YAAA;AAAA,QACT,OAAA,EAAS,YAAA;AAAA,QACT,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB,EAAE,OAAA,EAAS,SAAA;AAAU;AAE1C;AAGA,IAAMiF,sBAAAA,GAAwB;AAAA,EAC5B,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAO,aAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAeA,SAAS,kBAAA,CAAmB9B,SAA0B,GAAA,EAAiC;AAErF,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAKA,OAAM,CAAA,CAC5B,IAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAC,CAAA,CACpB,OAAO,CAAC,CAAA,KAAM,MAAA,CAAO,QAAA,CAAS,CAAC,CAAC,CAAA,CAChC,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AACvB,EAAA,IAAI,IAAA;AACJ,EAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,IAAA,IAAI,CAAA,IAAK,GAAA,EAAK,IAAA,GAAOA,OAAAA,CAAO,CAAC,CAAA;AAAA,SACxB;AAAA,EACP;AACA,EAAA,OAAO,IAAA;AACT;AAcA,SAAS,YAAA,CAAgB,KAAA,EAAU,EAAA,GAAK,GAAA,EAAS;AAC/C,EAAA,MAAM,CAAC,SAAS,CAAA,GAAI,gBAAA,CAAiB,OAAO,EAAA,EAAI;AAAA,IAC9C,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACV,CAAA;AACD,EAAA,OAAO,SAAA;AACT;AAiCA,IAAM,QAAA,GAAW,SAAS+B,SAAAA,CAAS;AAAA,EACjC,SAAA;AAAA,EACA,KAAA,GAAQ,CAAA;AAAA,EACR,GAAA,GAAM,GAAA;AAAA,EACN,OAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA,EAAA/B,OAAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA,GAAW,IAAA;AAAA,EACX,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgG;AAC9F,EAAA,MAAM,eAAA,GAAkB,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA;AACzD,EAAA,MAAM,MAAA,GAAS,eAAA,GAAkB,CAAA,GAAM,KAAA,GAAmB,GAAA,GAAO,GAAA;AACjE,EAAA,MAAM,GAAA,GAAM,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,MAAA,EAAQ,CAAC,GAAG,GAAG,CAAA;AAC7C,EAAA,MAAM,YAAA,GAAe,aAAa,GAAG,CAAA;AAGrC,EAAA,MAAM,eAAA,GAAoE,IAAA,GACtE8B,sBAAAA,CAAsB,IAAI,IACzB,OAAA,IAAW,SAAA;AAEhB,EAAA,MAAM,cAAA,GAAiB9B,OAAAA,GAAS,kBAAA,CAAmBA,OAAAA,EAAQ,GAAG,CAAA,GAAI,MAAA;AAElE,EAAA,uBACEtD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,oBAASC,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAiD,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAChFD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAACqF,UAAA,CAAa,IAAA;AAAA,QAAb;AAAA,UACE,GAAG,KAAA;AAAA,UACJ,GAAA;AAAA,UACA,KAAA,EAAO,kBAAkB,IAAA,GAAQ,KAAA;AAAA,UACjC,GAAA;AAAA,UAGA,eAAA,EAAe,eAAA,GAAkB,MAAA,GAAY,IAAA,CAAK,MAAM,YAAY,CAAA;AAAA,UACpE,SAAA,EAAW,GAAG,gBAAA,CAAiB,EAAE,SAAS,eAAA,EAAiB,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA;AAAA,UAE7E,QAAA,kBAAArF,GAAAA;AAAA,YAACqF,UAAA,CAAa,SAAA;AAAA,YAAb;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,yBAAA,CAA0B;AAAA,kBACxB,OAAA,EAAS,eAAA,KAAoB,SAAA,GAAY,SAAA,GAAY;AAAA,iBACtD,CAAA;AAAA,gBACD,eAAA,IAAmB;AAAA,eACrB;AAAA,cACA,KAAA,EAAO,cAAA,GAAiB,EAAE,eAAA,EAAiB,gBAAe,GAAI,MAAA;AAAA,cAC9D,wBACErF,GAAAA;AAAA,gBAAC,MAAA,CAAO,GAAA;AAAA,gBAAP;AAAA,kBACC,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA,EAAE;AAAA,kBACrB,OAAA,EAAS,EAAE,MAAA,EAAQ,GAAA,GAAM,GAAA,EAAI;AAAA,kBAC7B,KAAA,EAAO,EAAE,eAAA,EAAiB,aAAA,EAAc;AAAA,kBACxC,UAAA,EAAY;AAAA,oBACV,QAAA,EAAU,QAAA,GAAW,eAAA,CAAgB,SAAA,GAAY,GAAA,GAAO,CAAA;AAAA,oBACxD,MAAM,OAAA,CAAQ;AAAA;AAChB;AAAA;AACF;AAAA;AAEJ;AAAA,OACF;AAAA,MAGC,SAAS,KAAA,CAAM,MAAA,GAAS,CAAA,oBACvBA,IAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,GAAA,EAC9B,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,QAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA,EAAG,GAAG,CAAA;AACrD,QAAA,MAAM,UAAU,GAAA,IAAO,OAAA;AACvB,QAAA,uBACED,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAa,CAAC,IAAA,CAAK,SAAA,GAAY,MAAA,GAAS,MAAA;AAAA,cACxC,SAAA,EAAW,EAAA;AAAA,gBACT,yJAAA;AAAA,gBACA,UAAU,eAAA,GAAkB;AAAA,eAC9B;AAAA,cACA,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA,EAAI;AAAA,cAE5B,QAAA,EAAA,IAAA,CAAK,6BAAaA,GAAAA,CAAC,UAAK,SAAA,EAAU,SAAA,EAAW,eAAK,SAAA,EAAU;AAAA;AAAA,WAC/D,EACF,CAAA;AAAA,UACC,IAAA,CAAK,OAAA,oBACJA,GAAAA,CAAC,cAAA,EAAA,EAAe,MAAK,KAAA,EAAM,SAAA,EAAU,SAAA,EAClC,QAAA,EAAA,IAAA,CAAK,OAAA,EACR;AAAA,SAAA,EAAA,EAhBU,GAAG,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,IAAa,QAAQ,CAAA,CAkBtD,CAAA;AAAA,MAEJ,CAAC,GACH,CAAA,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,IAEC,SAAA,IAAa,CAAC,eAAA,oBACbD,IAAAA;AAAA,MAAC,MAAA,CAAO,GAAA;AAAA,MAAP;AAAA,QACC,SAAA,EAAU,qEAAA;AAAA,QACV,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,EAAA,EAAG;AAAA,QAC7B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY;AAAA,UACV,KAAA,EAAO,QAAA,GAAW,eAAA,CAAgB,MAAA,GAAS,GAAA,GAAO,CAAA;AAAA,UAClD,QAAA,EAAU,gBAAgB,IAAA,GAAO,GAAA;AAAA,UACjC,MAAM,OAAA,CAAQ;AAAA,SAChB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,UAAE;AAAA;AAAA;AAAA;AACnB,GAAA,EAEJ,CAAA;AAEJ;ACjNA,IAAM,UAAA,GAAoE;AAAA,EACxE,OAAA,EAAS;AAAA,IACP,SAAA,EAAW,2DAAA;AAAA,IACX,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,EAAS;AAAA,IACP,SAAA,EAAW,2DAAA;AAAA,IACX,GAAA,EAAK;AAAA,GACP;AAAA,EACA,KAAA,EAAO;AAAA,IACL,SAAA,EAAW,2EAAA;AAAA,IACX,GAAA,EAAK;AAAA,GACP;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW,wDAAA;AAAA,IACX,GAAA,EAAK;AAAA;AAET,CAAA;AAEA,IAAM,OAAA,GAAU,6EAAA;AAMT,SAAS,aAAA,CAAc;AAAA,EAC5B,OAAA,GAAU,MAAA;AAAA,EACV,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,MAAA,GAAS,WAAW,OAAO,CAAA;AACjC,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,OAAA,KAAY,OAAA,GAAU,OAAA,GAAU,QAAA,CAAA;AAE9D,EAAA,uBACEC,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAM,YAAA;AAAA,MAEN,SAAA,EAAW,EAAA;AAAA,QACT,wGAAA;AAAA,QACA,MAAA,CAAO,SAAA;AAAA,QACP;AAAA,OACF;AAAA,MAEA,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+EAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,IAAA,oBAAQC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oDAAoD,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,0BAClFA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA,SAAA,EACf,CAAA;AAAA,QACC,YAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBACZ,QAAA,EAAA,YAAA,CAAa,IAAA,KAAS,MAAA,mBACrBA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,OAAA,EAAS,MAAA,CAAO,GAAG,CAAA,EAAG,IAAA,EAAM,aAAa,IAAA,EACvD,QAAA,EAAA,YAAA,CAAa,KAAA,EAChB,CAAA,mBAEAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,MAAA,CAAO,KAAK,gBAAgB,CAAA;AAAA,YACnD,SAAS,YAAA,CAAa,OAAA;AAAA,YAErB,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA,SAChB,EAEJ;AAAA,OAAA,EAEJ;AAAA;AAAA,GACF;AAEJ;ACrHA,IAAM,iBAAA,GAAoB4D,cAA6C,IAAI,CAAA;AAwF3E,IAAM,SAAA,GAA4B;AAAA,EAChC,kBAAA,EAAoB,CAAA,EAAG,WAAA,CAAY,IAAA,CAAK,GAAG,CAAA,EAAA,CAAA;AAAA,EAC3C,yBAAA,EAA2B,CAAA,EAAG,WAAA,CAAY,IAAA,CAAK,SAAS,CAAA,EAAA,CAAA;AAAA,EACxD,mBAAA,EAAqB,CAAA,EAAG,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,EACjD,qBAAA,EAAuB,YAAY,IAAA,CAAK,UAAA;AAAA,EACxC,0BAAA,EAA4B,CAAA,EAAG,WAAA,CAAY,IAAA,CAAK,eAAe,CAAA,EAAA,CAAA;AAAA,EAC/D,yBAAA,EAA2B,CAAA,EAAG,WAAA,CAAY,IAAA,CAAK,cAAc,CAAA,EAAA,CAAA;AAAA,EAC7D,sBAAA,EAAwB,CAAA,EAAG,WAAA,CAAY,OAAA,CAAQ,IAAI,CAAA,EAAA,CAAA;AAAA,EACnD,kBAAA,EAAoB,CAAA,EAAG,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA,EAAA,CAAA;AAAA,EAClD,sBAAA,EAAwB,CAAA,EAAG,WAAA,CAAY,OAAA,CAAQ,WAAW,CAAA,EAAA,CAAA;AAAA,EAC1D,yBAAA,EAA2B,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,EACzD,uBAAA,EAAyB,YAAY,MAAA,CAAO;AAC9C,CAAA;AAEA,IAAM,qBAAA,GAAwB,EAAA;AAAA,EAC5B,8KAAA;AAAA,EACA,kCAAA;AAAA,EACA,iIAAA;AAAA,EACA,oQAAA;AAAA,EACA,qGAAA;AAAA,EACA,yHAAA;AAAA,EACA;AACF,CAAA;AAEA,SAAS,oBAAA,GAAuB;AAC9B,EAAA,OAAOC,IAAI,iBAAiB,CAAA;AAC9B;AAEA,SAAS,UAAU,EAAE,SAAA,EAAW,oBAAoB,cAAA,EAAgB,GAAG,OAAM,EAAe;AAC1F,EAAA,uBACE9D,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA,EACvD,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAW,GAAG,cAAA,EAAgB,cAAc,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAAA,oBAC9EA,IAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,kBAAkB,CAAA,EAAG;AAAA,GAAA,EACrF,CAAA;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,OAAA;AAExB,SAAS,kBAAA,CAAmB;AAAA,EAC1B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,EAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,MAAM,cAAcsB,KAAAA,EAAM;AAC1B,EAAA,MAAM,UAAU,EAAA,IAAM,CAAA,MAAA,EAAS,YAAY,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAC5D,EAAA,MAAM,QAAA,GAAW,cAAA,GAAiB,CAAA,EAAG,OAAO,CAAA,OAAA,CAAA,GAAY,MAAA;AACxD,EAAA,MAAM,aAAA,GAAgB,WAAA,GAAc,CAAA,EAAG,OAAO,CAAA,YAAA,CAAA,GAAiB,MAAA;AAC/D,EAAA,MAAM,UAAU,oBAAA,EAAqB;AACrC,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,QAAA,IAAY,OAAA,EAAS,QAAQ,CAAA;AACxD,EAAA,MAAM,SAAA,GAAY,OAAA,GAAU,OAAA,CAAQ,KAAA,KAAU,KAAA,GAAQ,MAAA;AACtD,EAAA,MAAM,WAAW,OAAA,EAAS,QAAA;AAC1B,EAAA,MAAM,OAAO,OAAA,EAAS,IAAA;AACtB,EAAA,MAAM,WAAA,GAAc,CAAC,aAAA,EAAe,QAAQ,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEtE,EAAA,MAAM,wBACJtB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,OAAA;AAAA,MACJ,KAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,kBAAA,EAAoB,gBAAA;AAAA,MACpB,cAAA;AAAA,MACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,QAAA,IAAI,KAAA,CAAM,cAAc,OAAA,EAAS;AAC/B,UAAA,OAAA,EAAS,SAAS,KAAK,CAAA;AAAA,QACzB;AAAA,MACF,CAAA;AAAA,MACC,GAAI,IAAA,GAAO,EAAE,IAAA,KAAS,EAAC;AAAA,MACvB,GAAI,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAS,SAAA,EAAU;AAAA,MACxD,GAAI,OAAA,IAAW,KAAA,CAAM,cAAA,KAAmB,MAAA,GACrC,EAAC,GACD,EAAE,cAAA,EAAgB,KAAA,CAAM,cAAA,EAAe;AAAA,MAC1C,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa,EAAC;AAAA,MAC/B,GAAI,WAAA,GAAc,EAAE,kBAAA,EAAoB,WAAA,KAAgB,EAAC;AAAA,MACzD,GAAI,CAAC,QAAA,IAAY,KAAA,CAAM,YAAY,CAAA,GAAI,EAAE,YAAA,EAAc,KAAA,CAAM,YAAY,CAAA,EAAE,GAAI,EAAC;AAAA,MAChF,GAAI,KAAA,CAAM,iBAAiB,CAAA,GAAI,EAAE,mBAAmB,KAAA,CAAM,iBAAiB,CAAA,EAAE,GAAI;AAAC;AAAA,GACrF;AAGF,EAAA,MAAM,WAAA,GAAc,EAAE,GAAG,SAAA,EAAW,GAAG,KAAA,EAAM;AAE7C,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,WAAA,EAAa;AAC7B,IAAA,uBACED,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,2FAAA;AAAA,UACA,UAAA,IAAc,+BAAA;AAAA,UACd;AAAA,SACF;AAAA,QACA,KAAA,EAAO,WAAA;AAAA,QACP,KAAA,EAAO,aAAa,cAAA,GAAiB,MAAA;AAAA,QAEpC,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,cAAA,mBACCC,GAAAA,CAAC,MAAA,EAAA,EAAK,IAAI,QAAA,EAAU,SAAA,EAAU,SAAA,EAC3B,QAAA,EAAA,cAAA,EACH,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AAEA,EAAA,uBACED,IAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,OAAA;AAAA,MACT,SAAA,EAAW,EAAA;AAAA,QACT,+JAAA;AAAA,QACA,aAAa,+BAAA,GAAkC,gBAAA;AAAA,QAC/C;AAAA,OACF;AAAA,MACA,KAAA,EAAO,WAAA;AAAA,MACP,KAAA,EAAO,aAAa,cAAA,GAAiB,MAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAU,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBAChCD,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EACd,QAAA,EAAA;AAAA,0BAAAC,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,0BAAA,IAA+B,QAAA,EAAS,CAAA;AAAA,UAClE,8BACCA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,aAAA;AAAA,cACJ,SAAA,EAAU,qHAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH,GACE,IAAA;AAAA,UACH,cAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,IAAI,QAAA,EAAU,SAAA,EAAU,SAAA,EAC3B,QAAA,EAAA,cAAA,EACH,CAAA,GACE;AAAA,SAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,kBAAA,CAAmB,WAAA,GAAc,gBAAA;AAEjC,SAAS,cAAA,CAAe;AAAA,EACtB,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,EAAmB,cAAA;AAAA,EACnB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,GAAe,EAAA;AAAA,EACf,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,aAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,gBAAgBsB,KAAAA,EAAM;AAC5B,EAAA,MAAM,mBAAA,GAAsBgE,OAAO,YAAY,CAAA;AAC/C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIpE,QAAAA,CAAS,oBAAoB,OAAO,CAAA;AAC9E,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,aAAA,GAAgB,eAAe,KAAA,GAAQ,aAAA;AAC7C,EAAA,MAAM,WAAWI,KAAAA,EAAM;AAEvB,EAAA,MAAM,UAAA,GAA8B;AAAA,IAClC,mBAAA,EAAqB,CAAA,EAAG,WAAA,CAAY,KAAA,CAAM,GAAG,CAAA,EAAA,CAAA;AAAA,IAC7C,mBAAA,EAAqB,CAAA,EAAG,WAAA,CAAY,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IAClD,oBAAA,EAAsB,CAAA,EAAG,WAAA,CAAY,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnD,sBAAA,EAAwB,YAAY,KAAA,CAAM,UAAA;AAAA,IAC1C,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,YAAA,GAAeC,OAAAA;AAAA,IACnB,OAAO;AAAA,MACL,MAAM,IAAA,IAAQ,CAAA,YAAA,EAAe,cAAc,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,MAC5D,KAAA,EAAO,aAAA;AAAA,MACP,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAU,CAAC,SAAA,KAAc;AACvB,QAAA,IAAI,CAAC,YAAA,EAAc;AACjB,UAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,QAC5B;AACA,QAAA,QAAA,GAAW,SAAS,CAAA;AACpB,QAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,MAC3B;AAAA,KACF,CAAA;AAAA,IACA,CAAC,UAAU,aAAA,EAAe,YAAA,EAAc,MAAM,QAAA,EAAU,aAAA,EAAe,UAAU,aAAa;AAAA,GAChG;AAEA,EAAA,uBACExB,IAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,YAAA,EAAY,QAAQ,MAAA,GAAY,SAAA;AAAA,MAChC,iBAAA,EAAiB,QAAQ,QAAA,GAAW,cAAA;AAAA,MACpC,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,aAAa,CAAA;AAAA,MACvD,KAAA,EAAO,UAAA;AAAA,MACN,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,mBACCC,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,QAAA;AAAA,YACJ,SAAA,EAAU,mFAAA;AAAA,YACV,KAAA,EAAO,EAAE,UAAA,EAAY,2BAAA,EAA4B;AAAA,YAEhD,QAAA,EAAA;AAAA;AAAA,SACH,GACE,IAAA;AAAA,wBACJA,GAAAA,CAAC,iBAAA,CAAkB,UAAlB,EAA2B,KAAA,EAAO,cACjC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,mCAAA;AAAA,cACA,WAAA,KAAgB,aAAa,UAAA,GAAa,oBAAA;AAAA,cAC1C;AAAA,aACF;AAAA,YACA,kBAAA,EAAkB,WAAA;AAAA,YAEjB;AAAA;AAAA,SACH,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,cAAA,CAAe,WAAA,GAAc,YAAA;AAgDtB,IAAM,cAAA,GAAiB;AACvB,IAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,cAAA,EAAgB;AAAA,EACtD,IAAA,EAAM;AACR,CAAC;ACrYD,SAAS,mBAAA,CAAoB;AAAA,EAC3B,SAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAGG;AACD,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAa,eAAe,SAAA,IAAa,YAAA;AAAA,MACzC,SAAA,EAAW,EAAA,CAAG,mEAAA,EAAqE,SAAS,CAAA;AAAA,MAC3F,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,cAAA,GAAiB;AAEvB,IAAM,kBAAkB,CAAC;AAAA,EACvB,UAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA;AAAA,EAAC,SAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,yoBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA,UAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,kBAAAA,GAAAA,CAACuF,YAAA,EAAA,EAAa,SAAA,EAAU,UAAA,EAAW,CAAA,EACrC;AAAA;AAEJ;ACYF,SAASC,YAAAA,CAAY,OAAiC,QAAA,EAAkB;AACtE,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,QAAA;AAChC,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,KAAA;AACpD;AAEA,SAAS,qBAAA,CAAsB;AAAA,EAC7B,KAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAIoB;AAClB,EAAA,OAAO;AAAA,IACL,kBAAA,EAAoBA,YAAAA,CAAY,KAAA,EAAO,MAAM,CAAA;AAAA,IAC7C,mBAAA,EAAqBA,YAAAA,CAAY,MAAA,EAAQ,MAAM,CAAA;AAAA,IAC/C,mBAAA,EAAqB,CAAA,EAAG,cAAA,CAAe,MAAM,CAAA,EAAA,CAAA;AAAA,IAC7C,sBAAA,EAAwB,CAAA,EAAG,cAAA,CAAe,QAAQ,CAAA,EAAA,CAAA;AAAA,IAClD,wBAAA,EAA0B,CAAA,EAAG,cAAA,CAAe,MAAA,CAAO,IAAI,CAAA,EAAA,CAAA;AAAA,IACvD,0BAAA,EAA4B,CAAA,EAAG,cAAA,CAAe,MAAA,CAAO,MAAM,CAAA,EAAA,CAAA;AAAA,IAC3D,0BAAA,EAA4B,CAAA,EAAG,cAAA,CAAe,MAAA,CAAO,MAAM,CAAA,EAAA,CAAA;AAAA,IAC3D,6BAAA,EAA+B,CAAA,EAAG,cAAA,CAAe,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IAChE,0BAAA,EAA4B,eAAe,MAAA,CAAO,MAAA;AAAA,IAClD,qBAAA,EAAuB,CAAA,EAAG,cAAA,CAAe,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACxD,mBAAA,EAAqB,eAAe,MAAA,CAAO,MAAA;AAAA,IAC3C,GAAG;AAAA,GACL;AACF;AAEA,SAAS,iBAAA,CAAkB,UAA4B,UAAA,EAA4C;AACjG,EAAA,OAAO,UAAA,KAAe,QAAA,KAAa,GAAA,GAAM,GAAA,GAAM,GAAA,CAAA;AACjD;AAEA,SAAS,qBAAqB,QAAA,EAA4B;AACxD,EAAA,IAAI,QAAA,KAAa,KAAK,OAAO,mCAAA;AAC7B,EAAA,IAAI,QAAA,KAAa,KAAK,OAAO,mCAAA;AAC7B,EAAA,OAAO,eAAA;AACT;AAEA,SAAS,wBAAwB,QAAA,EAA4B;AAC3D,EAAA,IAAI,QAAA,KAAa,KAAK,OAAO,yBAAA;AAC7B,EAAA,IAAI,QAAA,KAAa,KAAK,OAAO,eAAA;AAC7B,EAAA,OAAO,WAAA;AACT;AAEA,SAAS,uBAAuB,SAAA,EAAiD;AAC/E,EAAA,IAAI,CAAC,SAAA,EAAW,OAAO,EAAC;AACxB,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA,CAAE,MAAA;AAAA,IACpC,CAAC,UAAgC,KAAA,YAAiB;AAAA,GACpD;AACF;AAEA,SAAS,gBAAA,CAAiB,OAAoB,IAAA,EAA0B;AACtE,EAAA,OAAO,IAAA,KAAS,GAAA,GAAM,KAAA,CAAM,UAAA,GAAa,KAAA,CAAM,SAAA;AACjD;AAEA,SAAS,iBAAA,CAAkB,UAA0B,IAAA,EAA0B;AAC7E,EAAA,OAAO,IAAA,KAAS,GAAA,GAAM,QAAA,CAAS,UAAA,GAAa,QAAA,CAAS,SAAA;AACvD;AAEA,SAAS,aAAa,QAAA,EAAqC;AACzD,EAAA,MAAM,SAAA,GAAY,CAAA;AAClB,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,WAAA,GAAc,QAAA,CAAS,WAAA;AAC7C,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,YAAA,GAAe,QAAA,CAAS,YAAA;AAE9C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,SAAS,UAAA,GAAa,SAAA;AAAA,IAC5B,KAAA,EAAO,QAAA,CAAS,UAAA,GAAa,IAAA,GAAO,SAAA;AAAA,IACpC,GAAA,EAAK,SAAS,SAAA,GAAY,SAAA;AAAA,IAC1B,MAAA,EAAQ,QAAA,CAAS,SAAA,GAAY,IAAA,GAAO;AAAA,GACtC;AACF;AAEA,SAAS,eAAA,CACP,QAAA,EACA,QAAA,EACA,IAAA,EACA,SAAA,EACA;AACA,EAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAElC,EAAA,MAAM,SAAA,GAAY,CAAA;AAClB,EAAA,MAAM,eAAA,GAAkB,iBAAA,CAAkB,QAAA,EAAU,IAAI,CAAA;AACxD,EAAA,MAAM,cAAA,GAAiB,CAAC,GAAG,QAAQ,CAAA,CAAE,IAAA;AAAA,IACnC,CAAC,GAAG,CAAA,KAAM,gBAAA,CAAiB,GAAG,IAAI,CAAA,GAAI,gBAAA,CAAiB,CAAA,EAAG,IAAI;AAAA,GAChE;AAEA,EAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,IAAA,OACE,cAAA,CAAe,IAAA,CAAK,CAAC,KAAA,KAAU,gBAAA,CAAiB,KAAA,EAAO,IAAI,CAAA,GAAI,eAAA,GAAkB,SAAS,CAAA,IAC1F,cAAA,CAAe,GAAG,EAAE,CAAA;AAAA,EAExB;AAEA,EAAA,KAAA,IAAS,QAAQ,cAAA,CAAe,MAAA,GAAS,GAAG,KAAA,IAAS,CAAA,EAAG,SAAS,CAAA,EAAG;AAClE,IAAA,MAAM,KAAA,GAAQ,eAAe,KAAK,CAAA;AAClC,IAAA,IAAI,SAAS,gBAAA,CAAiB,KAAA,EAAO,IAAI,CAAA,GAAI,kBAAkB,SAAA,EAAW;AACxE,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,eAAe,CAAC,CAAA;AACzB;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,IAAI,CAAA;AAC7C,EAAA,QAAA,CAAS,QAAA,CAAS;AAAA,IAChB,IAAA,EAAM,IAAA,KAAS,GAAA,GAAM,QAAA,GAAW,QAAA,CAAS,UAAA;AAAA,IACzC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,QAAA,GAAW,QAAA,CAAS,SAAA;AAAA,IACxC;AAAA,GACD,CAAA;AACH;AAEA,SAAS,WAAA,CAAY,UAA4B,SAAA,EAAsB;AACrE,EAAA,OAAO;AAAA,IAAA,CACJ,QAAA,KAAa,GAAA,IAAO,QAAA,KAAa,MAAA,KAChC,UAAU,IAAA,IACV,iMAAA;AAAA,IAAA,CACD,QAAA,KAAa,GAAA,IAAO,QAAA,KAAa,MAAA,KAChC,UAAU,KAAA,IACV;AAAA,GACJ;AACF;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,IAAI,QAAA,KAAa,KAAK,OAAO,IAAA;AAE7B,EAAA,uBACEzF,IAAAA,CAAAS,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,SAAA,CAAU,uBACTR,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAU;AAAA;AAAA,KACZ;AAAA,IAED,SAAA,CAAU,0BACTA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAU;AAAA;AAAA;AACZ,GAAA,EAEJ,CAAA;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,MAAM,IAAA,GACJ,SAAS,GAAA,GACL,SAAA,KAAc,aACZyF,WAAAA,GACA1E,YAAAA,GACF,SAAA,KAAc,UAAA,GACZ,SAAA,GACAgD,WAAAA;AAER,EAAA,uBACE/D,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,QAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,kHAAA;AAAA,QACA,iGAAA;AAAA,QACA,sIAAA;AAAA,QACA,6IAAA;AAAA,QACA,+EAAA;AAAA,QACA,IAAA,KAAS,GAAA,IACP,SAAA,KAAc,UAAA,IACd,+DAAA;AAAA,QACF,IAAA,KAAS,GAAA,IACP,SAAA,KAAc,MAAA,IACd,gEAAA;AAAA,QACF,IAAA,KAAS,GAAA,IACP,SAAA,KAAc,UAAA,IACd,+DAAA;AAAA,QACF,IAAA,KAAS,GAAA,IACP,SAAA,KAAc,MAAA,IACd;AAAA,OACJ;AAAA,MAEA,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAU,yCAAA,EAA0C;AAAA;AAAA,GAC/E;AAEJ;AAEO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA,QAAA,GAAW,GAAA;AAAA,EACX,KAAA;AAAA,EACA,MAAA;AAAA,EACA,0BAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,UAAA;AAAA,EACA,YAAA,GAAe,SAAA;AAAA,EACf,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA,GAAiB,MAAA;AAAA,EACjB,cAAA,GAAiB,QAAA;AAAA,EACjB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,WAAA,GAAoB0F,eAA8B,IAAI,CAAA;AAC5D,EAAA,MAAM,oBAAA,GAA6BA,eAA8B,IAAI,CAAA;AACrE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,OAAA,CAAA,QAAA,CAAoB;AAAA,IAC1D,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,KAAA;AAAA,IACP,GAAA,EAAK,KAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AACD,EAAA,MAAM,kBAAA,GAAqB,iBAAA,CAAkB,QAAA,EAAU,UAAU,CAAA;AAEjE,EAAA,MAAM,eAAA,GAAwBA,oBAAY,MAAM;AAC9C,IAAA,MAAM,WAAW,WAAA,CAAY,OAAA;AAC7B,IAAA,IAAI,CAAC,QAAA,EAAU;AACf,IAAA,YAAA,CAAa,YAAA,CAAa,QAAQ,CAAC,CAAA;AAAA,EACrC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAMA,kBAAU,MAAM;AACpB,IAAA,eAAA,EAAgB;AAEhB,IAAA,MAAM,WAAW,WAAA,CAAY,OAAA;AAC7B,IAAA,MAAM,oBAAoB,oBAAA,CAAqB,OAAA;AAC/C,IAAA,IAAI,CAAC,QAAA,EAAU;AAEf,IAAA,MAAM,iBACJ,OAAO,cAAA,KAAmB,cAAc,MAAA,GAAY,IAAI,eAAe,eAAe,CAAA;AACxF,IAAA,cAAA,EAAgB,QAAQ,QAAQ,CAAA;AAChC,IAAA,IAAI,iBAAA,EAAmB,cAAA,EAAgB,OAAA,CAAQ,iBAAiB,CAAA;AAEhE,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,eAAe,CAAA;AAEjD,IAAA,OAAO,MAAM;AACX,MAAA,cAAA,EAAgB,UAAA,EAAW;AAC3B,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,eAAe,CAAA;AAAA,IACtD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,EAAA,MAAM,eAAA,GAAwBA,OAAA,CAAA,WAAA;AAAA,IAC5B,CAAC,SAAA,KAAmC;AAClC,MAAA,MAAM,WAAW,WAAA,CAAY,OAAA;AAC7B,MAAA,IAAI,CAAC,QAAA,EAAU;AAEf,MAAA,MAAM,cAAA,GAAiB,sBAAA,CAAuB,oBAAA,CAAqB,OAAO,CAAA;AAC1E,MAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,cAAA,EAAgB,QAAA,EAAU,oBAAoB,SAAS,CAAA;AAC3F,MAAA,IAAI,CAAC,WAAA,EAAa;AAElB,MAAA,aAAA,CAAc;AAAA,QACZ,KAAA,EAAO,WAAA;AAAA,QACP,QAAA;AAAA,QACA,IAAA,EAAM,kBAAA;AAAA,QACN,QAAA,EAAU;AAAA,OACX,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,oBAAoB,cAAc;AAAA,GACrC;AAEA,EAAA,MAAM,WAAA,GAAc,kBAAA,KAAuB,GAAA,GAAM,SAAA,CAAU,OAAO,SAAA,CAAU,GAAA;AAC5E,EAAA,MAAM,OAAA,GAAU,kBAAA,KAAuB,GAAA,GAAM,SAAA,CAAU,QAAQ,SAAA,CAAU,MAAA;AACzE,EAAA,MAAM,aAAA,GACJ,uBAAuB,CAAA,OAAA,EAAU,YAAY,IAAI,kBAAA,KAAuB,GAAA,GAAM,SAAS,IAAI,CAAA,CAAA;AAC7F,EAAA,MAAM,SAAA,GACJ,mBAAmB,CAAA,OAAA,EAAU,YAAY,IAAI,kBAAA,KAAuB,GAAA,GAAM,UAAU,MAAM,CAAA,CAAA;AAE5F,EAAA,uBACE3F,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,4CAAA;AAAA,QACA,cAAA,KAAmB,MAAA,IAAU,WAAA,CAAY,QAAA,EAAU,SAAS,CAAA;AAAA,QAC5D;AAAA,OACF;AAAA,MACA,OAAO,qBAAA,CAAsB,EAAE,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AAAA,MACpD,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,WAAA;AAAA,YACL,YAAA,EAAY,YAAA;AAAA,YACZ,QAAA,EAAU,eAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,0EAAA;AAAA,cACA,qIAAA;AAAA,cACA,qBAAqB,QAAQ;AAAA,aAC/B;AAAA,YAEA,QAAA,kBAAAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,oBAAA;AAAA,gBACL,SAAA,EAAW,EAAA,CAAG,uBAAA,CAAwB,QAAQ,GAAG,0BAA0B,CAAA;AAAA,gBAE1E;AAAA;AAAA;AACH;AAAA,SACF;AAAA,QACC,mBAAmB,MAAA,oBAAUA,GAAAA,CAAC,aAAA,EAAA,EAAc,WAAsB,QAAA,EAAoB,CAAA;AAAA,QACtF,WAAA,oBACCD,IAAAA,CAAAS,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAR,GAAAA;AAAA,YAAC,cAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,kBAAA;AAAA,cACN,SAAA,EAAU,UAAA;AAAA,cACV,UAAU,CAAC,WAAA;AAAA,cACX,KAAA,EAAO,aAAA;AAAA,cACP,OAAA,EAAS,MAAM,eAAA,CAAgB,UAAU;AAAA;AAAA,WAC3C;AAAA,0BACAA,GAAAA;AAAA,YAAC,cAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,kBAAA;AAAA,cACN,SAAA,EAAU,MAAA;AAAA,cACV,UAAU,CAAC,OAAA;AAAA,cACX,KAAA,EAAO,SAAA;AAAA,cACP,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAM;AAAA;AAAA;AACvC,SAAA,EACF;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AC7XvB,SAAS,qBAAA,CACP,MACA,KAAA,EACsB;AACtB,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,IAAI,CAAA;AAErC,EAAA,OAAO;AAAA,IACL,iBAAA,EAAmB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IAClC,oBAAA,EAAsB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACvC,oBAAA,EAAsB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACvC,iBAAA,EAAmB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IAClC,2BAAA,EAA6B,CAAA,EAAG,YAAA,CAAa,cAAc,CAAA,EAAA,CAAA;AAAA,IAC3D,YAAA,EAAc,sBAAA;AAAA,IACd,OAAA,EAAS,MAAA;AAAA,IACT,GAAG;AAAA,GACL;AACF;AA+EA,SAAS,oBAAA,CACP,MACA,KAAA,EACqB;AACrB,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,IAAI,CAAA;AAErC,EAAA,OAAO;AAAA,IACL,iBAAA,EAAmB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IAClC,oBAAA,EAAsB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACvC,oBAAA,EAAsB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACvC,iBAAA,EAAmB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IAClC,qBAAA,EAAuB,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,EAAA,CAAA;AAAA,IACzC,wBAAA,EAA0B,CAAA,EAAG,KAAA,CAAM,WAAW,CAAA,EAAA,CAAA;AAAA,IAC9C,oBAAA,EAAsB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACvC,qBAAA,EAAuB,CAAA,EAAG,YAAA,CAAa,SAAS,CAAA,EAAA,CAAA;AAAA,IAChD,2BAAA,EAA6B,CAAA,EAAG,YAAA,CAAa,cAAc,CAAA,EAAA,CAAA;AAAA,IAC3D,oBAAA,EAAsB,CAAA,EAAG,YAAA,CAAa,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC9C,sBAAA,EAAwB,CAAA,EAAG,YAAA,CAAa,UAAU,CAAA,EAAA,CAAA;AAAA,IAClD,mBAAA,EAAqB,CAAA,EAAG,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,iBAAA,EAAmB,aAAa,MAAA,CAAO,MAAA;AAAA,IACvC,GAAG;AAAA,GACL;AACF;AAEA,SAAS,sBAAsB,KAAA,EAA8D;AAC3F,EAAA,OAAO;AAAA,IACL,6BAAA,EAA+B,CAAA,EAAG,YAAA,CAAa,OAAA,CAAQ,SAAS,CAAA,EAAA,CAAA;AAAA,IAChE,4BAAA,EAA8B,CAAA,EAAG,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC9D,0BAAA,EAA4B,CAAA,EAAG,YAAA,CAAa,OAAA,CAAQ,OAAO,CAAA,EAAA,CAAA;AAAA,IAC3D,yBAAA,EAA2B,CAAA,EAAG,YAAA,CAAa,OAAA,CAAQ,MAAM,CAAA,EAAA,CAAA;AAAA,IACzD,yBAAA,EAA2B,aAAa,OAAA,CAAQ,MAAA;AAAA,IAChD,oBAAA,EAAsB,CAAA,EAAG,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtD,mBAAA,EAAqB,CAAA,EAAG,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,iBAAA,EAAmB,aAAa,MAAA,CAAO,MAAA;AAAA,IACvC,sBAAA,EAAwB,CAAA,EAAG,YAAA,CAAa,IAAA,CAAK,MAAM,CAAA,EAAA,CAAA;AAAA,IACnD,yBAAA,EAA2B,CAAA,EAAG,YAAA,CAAa,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,IACxD,yBAAA,EAA2B,CAAA,EAAG,YAAA,CAAa,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,IACxD,+BAAA,EAAiC,CAAA,EAAG,YAAA,CAAa,IAAA,CAAK,cAAc,CAAA,EAAA,CAAA;AAAA,IACpE,8BAAA,EAAgC,CAAA,EAAG,YAAA,CAAa,IAAA,CAAK,aAAa,CAAA,EAAA,CAAA;AAAA,IAClE,mCAAA,EAAqC,CAAA,EAAG,YAAA,CAAa,IAAA,CAAK,iBAAiB,CAAA,EAAA,CAAA;AAAA,IAC3E,QAAQ,aAAA,CAAc,OAAA;AAAA,IACtB,GAAG;AAAA,GACL;AACF;AAEA,SAAS,OAAO,IAAA,EAA+B;AAC7C,EAAA,IAAI,IAAA,IAAQ,IAAA,IAAQ,OAAO,IAAA,KAAS,WAAW,OAAO,EAAA;AACtD,EAAA,IAAI,OAAO,SAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU,OAAO,OAAO,IAAI,CAAA;AAC5E,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG,OAAO,KAAK,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AACxD,EAAA,IAAU2F,OAAA,CAAA,cAAA,CAAe,IAAI,CAAA,EAAG;AAC9B,IAAA,MAAM,QAAQ,IAAA,CAAK,KAAA;AACnB,IAAA,OAAO,MAAA,CAAO,MAAM,QAAQ,CAAA;AAAA,EAC9B;AACA,EAAA,OAAO,EAAA;AACT;AAEA,SAAS,oBAAoB,QAAA,EAA2C;AACtE,EAAA,MAAM,UAA0B,EAAC;AACjC,EAAMA,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AAC1C,IAAA,IAAI,CAAOA,OAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG;AAClC,IAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC7B,IAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAKpB,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,KAAA,IAAS,EAAE,CAAA;AACtC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,QAAQ,CAAA,IAAK,KAAA;AACxC,IAAA,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,QAAA,KAAa,IAAA,GAAO,EAAE,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,IAAA,EAAK,GAAI,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAC5F,CAAC,CAAA;AACD,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,wBAAwB,QAAA,EAA2B;AAC1D,EAAA,IAAI,iBAAA,GAAoB,KAAA;AACxB,EAAMA,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AAC1C,IAAA,IAAI,CAAOA,OAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG;AAClC,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,KAAA,CAAM,SAAS,UAAA,EAAY;AACxD,MAAA,iBAAA,GAAoB,IAAA;AAAA,IACtB;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,iBAAA;AACT;AAGA,SAAS,mBAAmB,KAAA,EAAiD;AAC3E,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,IAAA,EAAM,OAAO,KAAA;AAClC,EAAA,IAAI,SAAA,IAAa,KAAA,IAAS,KAAA,CAAM,OAAA,KAAY,QAAW,OAAO,IAAA;AAC9D,EAAA,IAAI,OAAA,IAAW,KAAA,IAAS,KAAA,CAAM,KAAA,KAAU,QAAW,OAAO,IAAA;AAC1D,EAAA,IAAI,aAAA,IAAiB,KAAA,IAAS,KAAA,CAAM,WAAA,KAAgB,QAAW,OAAO,IAAA;AACtE,EAAA,IAAI,OAAA,IAAW,KAAA,IAAS,KAAA,CAAM,KAAA,KAAU,QAAW,OAAO,IAAA;AAC1D,EAAA,IAAI,QAAA,IAAY,KAAA,IAAS,KAAA,CAAM,MAAA,KAAW,QAAW,OAAO,IAAA;AAC5D,EAAA,IAAI,QAAA,IAAY,KAAA,IAAS,KAAA,CAAM,MAAA,KAAW,QAAW,OAAO,IAAA;AAC5D,EAAA,IAAI,UAAA,IAAc,KAAA,IAAS,OAAQ,KAAA,CAA6B,aAAa,UAAA,EAAY;AACvF,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,cAAc,KAAA,IAAS,uBAAA,CAAwB,KAAA,CAAM,QAAQ,GAAG,OAAO,IAAA;AAC3E,EAAA,OAAO,KAAA;AACT;AAGA,SAAS,YAAA,CAAa;AAAA,EACpB,EAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,kBAAA,EAAoB,eAAA;AAAA,EACpB,GAAG;AACL,CAAA,EAAuB;AACrB,EAAA,MAAM,cAAoBA,OAAA,CAAA,KAAA,EAAM;AAChC,EAAA,MAAM,WAAW,EAAA,IAAM,WAAA;AACvB,EAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,CAAA,EAAG,QAAQ,CAAA,MAAA,CAAA,GAAW,MAAA;AAC9C,EAAA,MAAM,WAAA,GAAc,CAAC,eAAA,EAAiB,OAAO,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAC5E,EAAA,MAAM,uBACJ,WAAA,IAAe,KAAA,KAAU,MAAA,IAAa,YAAA,KAAiB,SAAY,EAAA,GAAK,YAAA;AAC1E,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,MAAA,IAAU,MAAM,CAAA;AACzC,EAAA,MAAM,iBAAA,GAAoB,oBAAA,CAAqB,IAAA,EAAM,KAAK,CAAA;AAE1D,EAAA,uBACE5F,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,gBAAgB,CAAA;AAAA,MACpE,KAAA,EAAO,iBAAA;AAAA,MAEN,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCC,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,QAAA;AAAA,YACT,SAAA,EAAU,+EAAA;AAAA,YAET,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAEFD,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,kDAAA;AAAA,cACA,CAAC,QAAA,IAAY;AAAA,aACf;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,QAAA;AAAA,kBACJ,QAAA;AAAA,kBACA,KAAA;AAAA,kBACA,YAAA,EAAc,oBAAA;AAAA,kBACd,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,kBAC7B,kBAAA,EAAkB,WAAA;AAAA,kBAClB,KAAA,EAAO,EAAE,YAAA,EAAc,sBAAA,EAAuB;AAAA,kBAC9C,SAAA,EAAW,EAAA;AAAA,oBACT,iGAAA;AAAA,oBACA,4FAAA;AAAA,oBACA,2HAAA;AAAA,oBACA,0BAAA,CAA2B,MAAA;AAAA,oBAC3B,8EAAA;AAAA,oBACA,4BAAA,CAA6B,MAAA;AAAA,oBAC7B,OAAA,KAAY,UAAU,+CAAA,GAAkD,cAAA;AAAA,oBACxE,SACI,iEAAA,GACA,8BAAA;AAAA,oBACJ,WACI,iEAAA,GACA,8BAAA;AAAA,oBACJ;AAAA,mBACF;AAAA,kBACA,QAAA,EAAU,CAAC,KAAA,KAAU,QAAA,GAAW,KAAK,CAAA;AAAA,kBACpC,GAAG,KAAA;AAAA,kBAEH,QAAA,EAAA;AAAA,oBAAA,WAAA,oBACCC,GAAAA,CAAC,QAAA,EAAA,EAAO,OAAM,EAAA,EAAG,QAAA,EAAQ,MACtB,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,oBAED,SAAS,GAAA,CAAI,CAAC,MAAA,qBACbA,IAAC,QAAA,EAAA,EAA0B,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,UAAU,MAAA,CAAO,QAAA,EAC9D,iBAAO,KAAA,EAAA,EADG,MAAA,CAAO,KAEpB,CACD,CAAA;AAAA,oBACA;AAAA;AAAA;AAAA,eACH;AAAA,cACC,0BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2IACb,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,8BAEFA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4IACb,QAAA,EAAA,MAAA,oBAAUA,GAAAA,CAAC+D,WAAAA,EAAA,EAAY,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,kCAAiC,CAAA,EACxF;AAAA;AAAA;AAAA,SACF;AAAA,QACC,yBACC/D,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,SAAS,SAAA,EAAU,gCAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,gBAAa,IAAA,EAAM,IAAA,KAAS,UAAU,QAAA,GAAW,OAAA,EAAU,iBAAM,CAAA,EACpE;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAMA,SAAS,oBAAA,CAAqB;AAAA,EAC5B,EAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,OAAA,EAAS,WAAA;AAAA,EACT,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,kBAAA,EAAoB,eAAA;AAAA,EACpB,aAAA,EAAe;AACjB,CAAA,EAAoD;AAClD,EAAA,MAAM,cAAoB2F,OAAA,CAAA,KAAA,EAAM;AAChC,EAAA,MAAM,WAAW,EAAA,IAAM,WAAA;AACvB,EAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,CAAA,EAAG,QAAQ,CAAA,MAAA,CAAA,GAAW,MAAA;AAC9C,EAAA,MAAM,WAAA,GAAc,CAAC,eAAA,EAAiB,OAAO,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAC5E,EAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,CAAA,EAAG,QAAQ,CAAA,MAAA,CAAA,GAAW,MAAA;AAE9C,EAAA,MAAM,OAAA,GAAgBA,gBAAQ,MAAM;AAClC,IAAA,MAAM,QAAA,GAAW,WAAA,EAAa,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACxC,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA;AAAA,MACrB,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,GAAI,EAAE,QAAA,KAAa,IAAA,GAAO,EAAE,QAAA,EAAU,IAAA,KAAkB;AAAC,KAC3D,CAAE,CAAA;AACF,IAAA,IAAI,QAAA,EAAU,QAAQ,OAAO,QAAA;AAC7B,IAAA,OAAO,oBAAoB,QAAQ,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,WAAA,EAAa,QAAQ,CAAC,CAAA;AAE1B,EAAA,MAAM,KAAA,GAAcA,OAAA,CAAA,OAAA;AAAA,IAClB,MAAM,MAAA,CAAO,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAAA,IAC/D,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,OAAA,CAAA,QAAA;AAAA,IAAS,MACrD,YAAA,KAAiB,MAAA,GAAY,MAAA,CAAO,YAAY,CAAA,GAAI;AAAA,GACtD;AACA,EAAA,MAAM,OAAA,GAAU,YAAA,GAAe,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA,GAAI,YAAA;AACrD,EAAA,MAAM,aAAA,GAAiB,OAAA,IAAW,KAAA,CAAM,OAAO,KAAM,OAAA,IAAW,EAAA;AAEhE,EAAA,MAAM,iBAAA,GAAoB,CAAC,IAAA,KAAwB;AACjD,IAAA,MAAM,WAAW,IAAA,IAAQ,EAAA;AACzB,IAAA,IAAI,CAAC,YAAA,EAAc,eAAA,CAAgB,QAAQ,CAAA;AAC3C,IAAA,aAAA,GAAgB,IAAI,CAAA;AACpB,IAAA,QAAA,GAAW;AAAA,MACT,MAAA,EAAQ,IAAA,KAAS,MAAA,GAAY,EAAE,KAAA,EAAO,UAAS,GAAI,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA;AAAK,KAC5E,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,oBAAA,CAAqB,IAAA,EAAM,KAAK,CAAA;AAEnD,EAAA,uBACE5F,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,oCAAA,EAAsC,gBAAgB,CAAA,EAAG,KAAA,EAAO,UAAA,EAChF,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCC,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,OAAA;AAAA,QACJ,OAAA,EAAS,QAAA;AAAA,QACT,SAAA,EAAU,+EAAA;AAAA,QAET,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IAED,IAAA,mBAAOA,GAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAA,EAAS,IAAA,EAAY,KAAA,EAAO,OAAA,EAAS,mBAAA,EAAiB,IAAA,EAAC,CAAA,GAAK,IAAA;AAAA,oBAChFD,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,kDAAA;AAAA,UACA,CAAC,QAAA,IAAY;AAAA,SACf;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,MAAA,oBACCC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gJACb,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,0BAEFD,IAAAA;AAAA,YAAC6F,QAAA,CAAW,IAAA;AAAA,YAAX;AAAA,cACC,OAAO,OAAA,IAAW,IAAA;AAAA,cAClB,aAAA,EAAe,iBAAA;AAAA,cACf,QAAA;AAAA,cACA,KAAA;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA5F,GAAAA;AAAA,kBAAC,aAAA;AAAA,kBAAA;AAAA,oBACC,EAAA,EAAI,QAAA;AAAA,oBACJ,IAAA;AAAA,oBACA,aAAA,EAAa,UAAA;AAAA,oBACb,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,oBAC7B,kBAAA,EAAkB,WAAA;AAAA,oBAClB,iBAAA,EAAiB,OAAA;AAAA,oBACjB,SAAA,EAAW,EAAA;AAAA,sBACT,YAAY,OAAA,IAAW,+CAAA;AAAA,sBACvB,MAAA,IAAU,iEAAA;AAAA,sBACV;AAAA,qBACF;AAAA,oBAEA,QAAA,kBAAAA,IAAC,WAAA,EAAA,EAAY,WAAA,EAAa,eAAe,cAAA,EACtC,QAAA,EAAA,MAAM,aAAA,IAAiB,WAAA,IAAe,cAAA,EACzC;AAAA;AAAA,iBACF;AAAA,gCACAA,IAAC,aAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,MAAA,qBACZA,GAAAA,CAAC,UAAA,EAAA,EAA8B,OAAO,MAAA,CAAO,KAAA,EAAO,UAAU,MAAA,CAAO,QAAA,EAClE,iBAAO,KAAA,EAAA,EADO,MAAA,CAAO,KAExB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,WACF;AAAA,UACC,0BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iJACb,QAAA,EAAA,MAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,IACC,yBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,SAAS,SAAA,EAAU,gCAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,gBAAa,IAAA,EAAM,IAAA,KAAS,UAAU,QAAA,GAAW,OAAA,EAAU,iBAAM,CAAA,EACpE;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAIA,SAAS,OAAO,KAAA,EAAuC;AACrD,EAAA,IAAI,KAAA,CAAM,WAAW,IAAA,EAAM;AACzB,IAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,EAAc,GAAI,KAAA,EAA8B,CAAA;AAAA,EAC1D;AAEA,EAAA,IAAI,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC7B,IAAA,uBAAOA,GAAAA,CAAC,oBAAA,EAAA,EAAsB,GAAI,KAAA,EAA8B,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,GAAG,WAAU,GAAI,KAAA;AAC1C,EAAA,uBAAOA,GAAAA,CAAC4F,QAAA,CAAW,IAAA,EAAX,EAAiB,GAAG,SAAA,EAAW,CAAA;AACzC;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AAErB,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAEM5F,GAAAA,CAAC4F,QAAA,CAAW,KAAA,EAAX,EAAiB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAC9E,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAEM;AACJ,EAAA,uBACE5F,GAAAA,CAAC4F,QAAA,CAAW,KAAA,EAAX,EAAiB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,KAAA,EACnE,QAAA,EAAA,QAAA,KACE,CAAC,KAAA,KAAoC;AACpC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,GAAI,WAAA;AACnE,IAAA,OAAO,KAAA,IAAS,WAAA;AAAA,EAClB,CAAA,CAAA,EACJ,CAAA;AAEJ;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,gBAAgB,CAAC;AAAA,EACrB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE7F,IAAAA;AAAA,EAAC6F,QAAA,CAAW,OAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sJAAA;AAAA,MACA,8FAAA;AAAA,MACA,uHAAA;AAAA,MACA,0BAAA,CAA2B,MAAA;AAAA,MAC3B,uEAAA;AAAA,MACA,4BAAA,CAA6B,MAAA;AAAA,MAC7B;AAAA,KACF;AAAA,IACA,KAAA,EAAO,qBAAA,CAAsB,IAAA,EAAM,KAAK,CAAA;AAAA,IACvC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACD5F,GAAAA,CAAC4F,QAAA,CAAW,IAAA,EAAX,EAAgB,wBAAQ5F,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAC7B,0BAAAA,GAAAA,CAAC+D,WAAAA,EAAA,EAAY,SAAA,EAAU,sBAAqB,CAAA,EAC9C;AAAA;AAAA;AACF;AAEF,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,uBAAuB,CAAC;AAAA,EAC5B,GAAA,EAAK;AACP,CAAA,KAA+F;AAC/F,oBAAA,CAAqB,WAAA,GAAc,sBAAA;AAEnC,IAAM,yBAAyB,CAAC;AAAA,EAC9B,GAAA,EAAK;AACP,CAAA,KAA+F;AAC/F,sBAAA,CAAuB,WAAA,GAAc,wBAAA;AAErC,IAAM,gBAAgB,CAAC;AAAA,EACrB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,QAAA;AAAA,EACX,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE/D,GAAAA,CAAC4F,QAAA,CAAW,MAAA,EAAX,EACC,QAAA,kBAAA5F,GAAAA;AAAA,EAAC4F,QAAA,CAAW,UAAA;AAAA,EAAX;AAAA,IACC,sBAAsB,QAAA,KAAa,cAAA;AAAA,IACnC,UAAA,EAAY,aAAa,OAAA,CAAQ,UAAA;AAAA,IAEjC,QAAA,kBAAA5F,GAAAA;AAAA,MAAC4F,QAAA,CAAW,KAAA;AAAA,MAAX;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,iBAAA,CAAkB,eAAe,SAAS,CAAA;AAAA,QACpE,KAAA,EAAO,sBAAsB,KAAK,CAAA;AAAA,QACjC,GAAG,KAAA;AAAA,QAEJ,0BAAA5F,GAAAA,CAAC4F,QAAA,CAAW,MAAX,EAAgB,SAAA,EAAU,mDACxB,QAAA,EACH;AAAA;AAAA;AACF;AACF,CAAA,EACF;AAEF,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE5F,GAAAA;AAAA,EAAC4F,QAAA,CAAW,UAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,yHAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,aAAa,CAAC;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE7F,IAAAA;AAAA,EAAC6F,QAAA,CAAW,IAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,ocAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAA5F,GAAAA,CAAC,UAAK,SAAA,EAAU,+HAAA,EACd,0BAAAA,GAAAA,CAAC4F,QAAA,CAAW,eAAX,EAAyB,MAAA,kBAAQ5F,GAAAA,CAAC,MAAA,EAAA,EAAK,GACtC,QAAA,kBAAAA,GAAAA,CAACmB,OAAA,EAAM,SAAA,EAAU,+CAAA,EAAgD,CAAA,EACnE,CAAA,EACF,CAAA;AAAA,sBACAnB,GAAAA,CAAC4F,QAAA,CAAW,QAAA,EAAX,EAAoB,wBAAQ5F,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAK,QAAA,EAAS;AAAA;AAAA;AACnD;AAEF,UAAA,CAAW,WAAA,GAAc,YAAA;AAEzB,IAAM,kBAAkB,CAAC;AAAA,EACvB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC4F,QAAA,CAAW,SAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN;AAEF,eAAA,CAAgB,WAAA,GAAc,iBAAA;AChnB9B,IAAMC,aAAY,CAAC;AAAA,EACjB,SAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,YAAY,WAAA,GAAc,IAAA;AAAA,EAC1B,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE7F,GAAAA;AAAA,EAAC8F,WAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oBAAA;AAAA,MACA,WAAA,KAAgB,eAAe,gBAAA,GAAmB,gBAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEFD,UAAAA,CAAU,WAAA,GAAc,WAAA;ACOxB,SAAS,cAAc,KAAA,EAAsD;AAC3E,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,CAAA,EAAG,WAAA,CAAY,KAAK,CAAA,EAAA,CAAA;AAAA,IACrC,oBAAA,EAAsB,CAAA,EAAG,WAAA,CAAY,SAAS,CAAA,EAAA,CAAA;AAAA,IAC9C,qBAAA,EAAuB,CAAA,EAAG,WAAA,CAAY,UAAU,CAAA,EAAA,CAAA;AAAA,IAChD,mBAAA,EAAqB,CAAA,EAAG,WAAA,CAAY,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5C,mBAAA,EAAqB,CAAA,EAAG,WAAA,CAAY,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5C,wBAAA,EAA0B,CAAA,EAAG,WAAA,CAAY,YAAY,CAAA,EAAA,CAAA;AAAA,IACrD,aAAA,EAAe,CAAA,EAAG,WAAA,CAAY,GAAG,CAAA,EAAA,CAAA;AAAA,IACjC,oBAAA,EAAsB,CAAA,EAAG,WAAA,CAAY,SAAS,CAAA,EAAA,CAAA;AAAA,IAC9C,oBAAA,EAAsB,CAAA,EAAG,WAAA,CAAY,SAAS,CAAA,EAAA,CAAA;AAAA,IAC9C,gBAAA,EAAkB,CAAA,EAAG,WAAA,CAAY,MAAM,CAAA,EAAA,CAAA;AAAA,IACvC,oBAAA,EAAsB,CAAA,EAAG,WAAA,CAAY,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,IAC/C,yBAAA,EAA2B,CAAA,EAAG,WAAA,CAAY,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACxD,sBAAA,EAAwB,CAAA,EAAG,WAAA,CAAY,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IACnD,sBAAA,EAAwB,CAAA,EAAG,WAAA,CAAY,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IACnD,4BAAA,EAA8B,YAAY,OAAA,CAAQ,UAAA;AAAA,IAClD,sBAAA,EAAwB,YAAY,OAAA,CAAQ,IAAA;AAAA,IAC5C,oBAAA,EAAsB,YAAY,OAAA,CAAQ,UAAA;AAAA,IAC1C,gBAAA,EAAkB,YAAY,OAAA,CAAQ,MAAA;AAAA,IACtC,kBAAA,EAAoB,CAAA,EAAG,aAAA,CAAc,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,gBAAA,EAAkB,cAAc,MAAA,CAAO,MAAA;AAAA,IACvC,GAAG;AAAA,GACL;AACF;AAIA,SAAS,KAAA,CAAM,EAAE,KAAA,GAAQ,YAAA,EAAc,0BAA0B,IAAA,EAAM,GAAG,OAAM,EAAe;AAC7F,EAAA,uBACE7F,GAAAA;AAAA,IAAC2B,QAAAA,CAAW,IAAA;AAAA,IAAX;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,KAAA;AAAA,MACA,uBAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AAMpB,IAAM,eAAe,CAAC;AAAA,EACpB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA8E;AAC5E,EAAA,IAAI,OAAA,IAAiBoE,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACE/F,GAAAA;AAAA,MAAC2B,QAAAA,CAAW,OAAA;AAAA,MAAX;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,eAAA;AAAA,QACT,GAAG,KAAA;AAAA,QACJ,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACE3B,GAAAA,CAAC2B,QAAAA,CAAW,OAAA,EAAX,EAAmB,KAAU,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EACzD,QAAA,EACH,CAAA;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAM3B,IAAM,aAAa,CAAC;AAAA,EAClB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4E;AAC1E,EAAA,IAAI,OAAA,IAAiBoE,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,IAAA,uBACE/F,GAAAA;AAAA,MAAC2B,QAAAA,CAAW,KAAA;AAAA,MAAX;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,aAAA;AAAA,QACT,GAAG,KAAA;AAAA,QACJ,MAAA,EAAQ;AAAA;AAAA,KACV;AAAA,EAEJ;AACA,EAAA,uBACE3B,GAAAA,CAAC2B,QAAAA,CAAW,KAAA,EAAX,EAAiB,KAAU,WAAA,EAAU,aAAA,EAAe,GAAG,KAAA,EACrD,QAAA,EACH,CAAA;AAEJ;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAIzB,SAAS,YAAY,KAAA,EAAyB;AAC5C,EAAA,uBAAO3B,IAAC2B,QAAAA,CAAW,MAAA,EAAX,EAAkB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AAChE;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAI1B,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACE3B,GAAAA;AAAA,EAAC2B,QAAAA,CAAW,QAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,eAAA;AAAA,IACV,SAAA,EAAW,EAAA,CAAG,iBAAA,CAAkB,aAAA,EAAe,SAAS,CAAA;AAAA,IACxD,KAAA,EAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,UAAU,GAAG,aAAA,CAAc,KAAK,CAAA,EAAE;AAAA,IAChE,GAAG;AAAA;AACN;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,aAAA,GAAgBzB,GAAAA,CAAI,iBAAA,CAAkB,YAAA,EAAc;AAAA,EACxD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,GAAA,EAAK,4PAAA;AAAA,MACL,MAAA,EACE,6PAAA;AAAA,MACF,IAAA,EAAM,kTAAA;AAAA,MACN,KAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAkBD,IAAM,eAAe,CAAC;AAAA,EACpB,IAAA,GAAO,OAAA;AAAA,EACP,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,IAAA;AAAA,EACV,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA2E;AACzE,EAAA,MAAM,iBAAA,GAAoB,SAAS,SAAA,IAAa,IAAA;AAChD,EAAA,MAAM,mBAAA,GAAsB,WAAW,CAAC,SAAA;AAExC,EAAA,uBACEH,KAAC,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,mBAAA,mBAAsBC,GAAAA,CAAC,YAAA,EAAA,EAAa,CAAA,GAAK,IAAA;AAAA,oBAC1CD,IAAAA;AAAA,MAAC4B,QAAAA,CAAW,KAAA;AAAA,MAAX;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,eAAA;AAAA,QACV,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QAChD,KAAA,EAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,OAAO,GAAG,aAAA,CAAc,KAAK,CAAA,EAAE;AAAA,QAC7D,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,oCACC5B,IAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,EAAA;AAAA,gBACT,6MAAA;AAAA,gBACA,oJAAA;AAAA,gBACA,iBAAA,CAAkB,SAAA;AAAA,gBAClB;AAAA,eACF;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAC,GAAAA,CAACgG,KAAA,EAAA,EAAM,aAAA,EAAY,MAAA,EAAO,WAAU,qCAAA,EAAsC,CAAA;AAAA,gCAC1EhG,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA,WACjC,GACE;AAAA;AAAA;AAAA;AACN,GAAA,EACF,CAAA;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAI3B,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,cAAA;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,MACT,yLAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAc,aAAA;AAI1B,IAAM,YAAY,CAAC;AAAA,EACjB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,YAAA;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,MACT,gHAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,SAAA,CAAU,WAAA,GAAc,WAAA;AAIxB,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,cAAA;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,MACT,uKAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAc,aAAA;AAI1B,IAAM,aAAa,CAAC;AAAA,EAClB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC2B,QAAAA,CAAW,KAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,aAAA;AAAA,IACV,SAAA,EAAW,EAAA,CAAG,mDAAA,EAAqD,SAAS,CAAA;AAAA,IAC3E,GAAG;AAAA;AACN;AAEF,UAAA,CAAW,WAAA,GAAc,YAAA;AAIzB,IAAM,mBAAmB,CAAC;AAAA,EACxB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACE3B,GAAAA;AAAA,EAAC2B,QAAAA,CAAW,WAAA;AAAA,EAAX;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,mBAAA;AAAA,IACV,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,IACjE,GAAG;AAAA;AACN;AAEF,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AC5Q/B,SAAS,iBAAA,CAAkB,aAAsB,cAAA,EAAyB;AACxE,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,OAAO,cAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAA,GAAc,CAAA,EAAG;AACtD,IAAA,OAAO,QAAQ,WAAW,CAAA,KAAA,CAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,WAAA;AACT;AAEA,SAAS,kBAAA,CAAmB,OAAgC,QAAA,EAAmB;AAC7E,EAAA,MAAM,gBAAA,GAAmB,kBAAA,IAAsB,KAAA,GAAQ,KAAA,CAAM,gBAAA,GAAmB,MAAA;AAEhF,EAAA,IAAI,OAAO,qBAAqB,UAAA,EAAY;AAC1C,IAAA,gBAAA,CAAiB,QAAQ,CAAA;AACzB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,SAAA,IAAa,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,MAAA;AACrD,EAAA,OAAA,GAAU,QAAQ,CAAA;AACpB;AAEO,IAAM,WAAW,CAAC;AAAA,EACvB,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,aAAA,GAAgB,WAAA;AAAA,EAChB,cAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA,GAAgB,IAAA;AAAA,EAChB,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAuE;AACrE,EAAA,MAAM,WAAA,GAAoBsE,eAAO,QAAQ,CAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,QAAA,GAAW,aAAA,GAAgB,iBAAA,CAAkB,aAAa,cAAc,CAAA;AAEtF,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,aAAA,IAAiB,QAAA,IAAY,CAAC,WAAA,CAAY,OAAA,EAAS;AACrD,MAAA,cAAA,EAAgB,SAAS,KAAA,EAAM;AAAA,IACjC;AAEA,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EACxB,CAAA,EAAG,CAAC,QAAA,EAAU,aAAA,EAAe,cAAc,CAAC,CAAA;AAE5C,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,4BAAA,EAA8B,CAAA,EAAG,cAAA,CAAe,aAAa,CAAA,EAAA,CAAA;AAAA,IAC7D,+BAAA,EAAiC,CAAA,EAAG,cAAA,CAAe,eAAe,CAAA,EAAA,CAAA;AAAA,IAClE,2BAAA,EAA6B,CAAA,EAAG,cAAA,CAAe,YAAY,CAAA,EAAA,CAAA;AAAA,IAC3D,iBAAA,EAAmB,CAAA,EAAG,cAAA,CAAe,GAAG,CAAA,EAAA,CAAA;AAAA,IACxC,oBAAA,EAAsB,CAAA,EAAG,cAAA,CAAe,MAAM,CAAA,EAAA,CAAA;AAAA,IAC9C,uBAAA,EAAyB,CAAA,EAAG,cAAA,CAAe,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnD,sBAAA,EAAwB,CAAA,EAAG,cAAA,CAAe,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzD,oBAAA,EAAsB,eAAe,MAAA,CAAO,MAAA;AAAA,IAC5C,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,WAAA,GACJ,OAAO,gBAAA,KAAqB,UAAA,GACxB,EAAE,gBAAA,EAAiB,GACnB,EAAE,OAAA,EAAgD;AAExD,EAAA,uBACElG,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,6EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,OAAA;AAAA,MACN,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,CAAC,4BACAC,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,gBAAgB;AAAA;AAAA,SACrE;AAAA,wBAGFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oDACb,QAAA,kBAAAD,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,eAAA,EAAe,QAAA;AAAA,YACf,eAAA,EAAe,QAAA;AAAA,YACf,QAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,wIAAA;AAAA,cACA,+GAAA;AAAA,cACA,sHAAA;AAAA,cACA,oCAAA;AAAA,cACA,0IAAA;AAAA,cACA,kDAAA;AAAA,cACA,+BAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,OAAA,EAAS,MAAM,kBAAA,CAAmB,WAAA,EAAa,CAAC,QAAQ,CAAA;AAAA,YAEvD,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,8BACDC,GAAAA;AAAA,gBAAC+D,WAAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAY,MAAA;AAAA,kBACZ,SAAA,EAAW,EAAA;AAAA,oBACT,0JAAA;AAAA,oBACA,QAAA,IAAY;AAAA;AACd;AAAA;AACF;AAAA;AAAA,SACF,EACF,CAAA;AAAA,QAEC,CAAC,4BACA/D,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,gBAAgB;AAAA;AAAA;AACrE;AAAA;AAAA,GAEJ;AAEJ;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AC3GvB,SAAS,YAAY,KAAA,EAAwD;AAC3E,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,MAAA;AAChC,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,KAAA;AACpD;AAEA,SAAS,iBAAiB,KAAA,EAA8B;AACtD,EAAA,IAAI,KAAA,CAAM,MAAM,OAAO,cAAA;AACvB,EAAA,IAAI,KAAA,CAAM,SAAS,OAAO,4BAAA;AAE1B,EAAA,OAAO,4BAAA;AACT;AAMO,SAAS,SAAS,KAAA,EAAsB;AAC7C,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA,EAAM,KAAA;AAAA,IACN,OAAA,EAAS,QAAA;AAAA,IACT,OAAA,EAAS,QAAA;AAAA,IACT,QAAA,EAAU,YAAA;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,QAAA;AAAA,IACA,QAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAIJ,EAAA,MAAM,IAAA,GAAO,QAAA,KAAa,MAAA,GAAY,QAAA,GAAW,CAAC,QAAA;AAClD,EAAA,MAAM,QAAA,GAAW,YAAA,KAAiB,MAAA,GAAY,YAAA,GAAe,CAAC,gBAAA;AAI9D,EAAA,IAAI,CAAC,QAAQ,QAAA,EAAU;AACrB,IAAA,uBAAOA,GAAAA,CAAAQ,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AAAA,EACrB;AAEA,EAAA,MAAM,SAAA,GAA2B;AAAA,IAC/B,KAAA,EAAO,YAAY,KAAK,CAAA;AAAA,IACxB,MAAA,EAAQ,YAAY,MAAM,CAAA;AAAA,IAC1B,SAAA,EAAW,YAAY,SAAS;AAAA,GAClC;AAEA,EAAA,uBACER,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,aAAA,EAAY,MAAA;AAAA,MACZ,eAAa,CAAC,IAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACT,UAAA;AAAA,QACA,iBAAiB,KAAK,CAAA;AAAA,QACtB,QAAA,IAAY,0CAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACA,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,GAAG,KAAA,EAAM;AAAA,MAC/B,GAAG,IAAA;AAAA,MAIH,QAAA,EAAA,QAAA;AAAA,sBAECA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAY,KAAA,EAAK,IAAA,EAAC,aAAA,EAAY,MAAA,EAC1C,QAAA,EACH;AAAA;AAAA,GAEJ;AAEJ;AAMO,SAAS,YAAA,CAAa;AAAA,EAC3B,KAAA,GAAQ,CAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuC;AACrC,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,GAAG,KAAA,EAC7C,gBAAM,IAAA,CAAK,EAAE,QAAQ,KAAA,EAAO,EAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACrCA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAEC,MAAA,EAAQ,EAAA;AAAA,MACR,SAAA,EAAW,GAAG,CAAA,KAAM,KAAA,GAAQ,IAAI,SAAA,GAAY,CAAA,KAAM,CAAA,GAAI,QAAA,GAAW,SAAS;AAAA,KAAA;AAAA,IAFrE;AAAA,GAIR,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA,GAAO,IAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkD;AAChD,EAAA,MAAM,KAAK,IAAA,KAAS,IAAA,GAAO,EAAA,GAAK,IAAA,KAAS,OAAO,EAAA,GAAK,EAAA;AACrD,EAAA,uBAAOA,GAAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAI,IAAA,EAAC,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,SAAA,EAAuB,GAAG,KAAA,EAAO,CAAA;AAChF;AAEO,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkB;AACnE,EAAA,uBACED,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,eAAA,EAAiB,SAAS,CAAA,EAAI,GAAG,KAAA,EAClD,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,WAAU,QAAA,EAAS,CAAA;AAAA,oBAC1CD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAA,EAAQ,EAAA,EAAI,WAAU,OAAA,EAAQ,CAAA;AAAA,sBACxCA,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAA,EAAQ,EAAA,EAAI,WAAU,OAAA,EAAQ;AAAA,KAAA,EAC1C;AAAA,GAAA,EACF,CAAA;AAEJ;ACrIA,SAAS,mBAAmB,KAAA,EAA+C;AACzE,EAAA,OACE,KAAA,CAAM,SAAA,KAAc,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,IAAK,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,YAAY,CAAA;AAEjG;AAEA,SAAS,oBAAA,CAAqB,OAA+C,QAAA,EAAkB;AAC7F,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,KAAA,CAAM,CAAC,CAAA,IAAK,QAAA;AAAA,EACrB;AAEA,EAAA,OAAO,KAAA,IAAS,QAAA;AAClB;AAEA,SAAS,KAAA,CAAM,KAAA,EAAe,GAAA,EAAa,GAAA,EAAa;AACtD,EAAA,OAAO,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAC3C;AAEA,SAAS,WAAA,CAAY,KAAA,EAAe,GAAA,EAAa,GAAA,EAAa;AAC5D,EAAA,IAAI,OAAO,GAAA,EAAK;AACd,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,OAAO,OAAQ,KAAA,GAAQ,GAAA,KAAQ,MAAM,GAAA,CAAA,GAAQ,GAAA,EAAK,GAAG,GAAG,CAAA;AAC1D;AAEA,SAAS,cAAA,CAAe,UAAkB,KAAA,EAAuD;AAC/F,EAAA,OAAO;AAAA,IACL,iBAAA,EAAmB,CAAA,EAAG,YAAA,CAAa,MAAM,CAAA,EAAA,CAAA;AAAA,IACzC,uBAAA,EAAyB,CAAA,EAAG,YAAA,CAAa,WAAW,CAAA,EAAA,CAAA;AAAA,IACpD,qBAAA,EAAuB,CAAA,EAAG,YAAA,CAAa,SAAS,CAAA,EAAA,CAAA;AAAA,IAChD,iBAAA,EAAmB,CAAA,EAAG,YAAA,CAAa,MAAM,CAAA,EAAA,CAAA;AAAA,IACzC,cAAA,EAAgB,CAAA,EAAG,YAAA,CAAa,GAAG,CAAA,EAAA,CAAA;AAAA,IACnC,oBAAA,EAAsB,CAAA,EAAG,YAAA,CAAa,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC9C,0BAAA,EAA4B,CAAA,EAAG,YAAA,CAAa,aAAa,CAAA,EAAA,CAAA;AAAA,IACzD,2BAAA,EAA6B,aAAa,KAAA,CAAM,UAAA;AAAA,IAChD,qBAAA,EAAuB,aAAa,KAAA,CAAM,IAAA;AAAA,IAC1C,2BAAA,EAA6B,aAAa,KAAA,CAAM,UAAA;AAAA,IAChD,uBAAA,EAAyB,aAAa,KAAA,CAAM,MAAA;AAAA,IAC5C,mBAAA,EAAqB,CAAA,EAAG,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,iBAAA,EAAmB,aAAa,MAAA,CAAO,MAAA;AAAA,IACvC,mBAAA,EAAqB,GAAG,QAAQ,CAAA,CAAA,CAAA;AAAA,IAChC,GAAG;AAAA,GACL;AACF;AAEA,SAAS,iBAAA,CAAkB,OAAe,IAAA,EAA0B;AAClE,EAAA,OAAO,IAAA,GAAO,CAAA,EAAG,KAAK,CAAA,EAAG,IAAI,CAAA,CAAA,GAAK,KAAA;AACpC;AAEO,IAAM,SAAS,CAAC;AAAA,EACrB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAuE;AACrE,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,GAAA,GAAM,CAAA;AAAA,IACN,GAAA,GAAM,GAAA;AAAA,IACN,IAAA,GAAO,CAAA;AAAA,IACP,KAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,WAAA;AAAA,IACA,KAAA;AAAA,IACA,EAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA,EAAc,SAAA;AAAA,IACd,iBAAA,EAAmB,cAAA;AAAA,IACnB,MAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,aAAA,EAAe,cAAA;AAAA,IACf,aAAA,EAAe,cAAA;AAAA,IACf,SAAA,EAAW,UAAA;AAAA,IACX,GAAG;AAAA,GACL,GAAI,KAAA;AACJ,EAAA,MAAM,cAAoBkG,OAAA,CAAA,KAAA,EAAM;AAChC,EAAA,MAAM,WAAW,EAAA,IAAM,WAAA;AACvB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,OAAA,CAAA,QAAA;AAAA,IAAS,MACvD,oBAAA,CAAqB,YAAA,EAAc,GAAG;AAAA,GACxC;AACA,EAAA,MAAM,eAAe,KAAA,CAAM,oBAAA,CAAqB,OAAO,aAAa,CAAA,EAAG,KAAK,GAAG,CAAA;AAC/E,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,YAAA,EAAc,GAAA,EAAK,GAAG,CAAA;AACnD,EAAA,MAAM,eAAe,WAAA,GACjB,WAAA,CAAY,YAAY,CAAA,GACxB,iBAAA,CAAkB,cAAc,IAAI,CAAA;AACxC,EAAA,MAAM,iBAAA,GAAoB,OAAA,CAAQ,KAAA,IAAS,SAAA,IAAa,cAAc,CAAA;AAEtE,EAAA,SAAS,gBAAgB,SAAA,EAAmB;AAC1C,IAAA,IAAI,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC7B,MAAA,KAAA,CAAM,aAAA,GAAgB,CAAC,SAAS,CAAC,CAAA;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,gBAAgB,SAAS,CAAA;AAAA,EACjC;AAEA,EAAA,SAAS,gBAAgB,SAAA,EAAmB;AAC1C,IAAA,IAAI,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC7B,MAAA,KAAA,CAAM,aAAA,GAAgB,CAAC,SAAS,CAAC,CAAA;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,gBAAgB,SAAS,CAAA;AAAA,EACjC;AAEA,EAAA,SAAS,aAAa,KAAA,EAA4C;AAChE,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,CAAM,aAAA,CAAc,KAAK,CAAA;AAElD,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,IAC5B;AAEA,IAAA,eAAA,CAAgB,SAAS,CAAA;AAAA,EAC3B;AAEA,EAAA,SAAS,gBAAgB,KAAA,EAA6C;AACpE,IAAA,WAAA,GAAc,KAAK,CAAA;AACnB,IAAA,eAAA,CAAgB,MAAA,CAAO,KAAA,CAAM,aAAA,CAAc,KAAK,CAAC,CAAA;AAAA,EACnD;AAEA,EAAA,SAAS,YAAY,KAAA,EAA8C;AACjE,IAAA,OAAA,GAAU,KAAK,CAAA;AAEf,IAAA,IACE;AAAA,MACE,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,CAAE,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EACpB;AACA,MAAA,eAAA,CAAgB,MAAA,CAAO,KAAA,CAAM,aAAA,CAAc,KAAK,CAAC,CAAA;AAAA,IACnD;AAAA,EACF;AAEA,EAAA,uBACEnG,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,qCAAA,EAAuC,gBAAgB,CAAA;AAAA,MACrE,KAAA,EAAO,cAAA,CAAe,QAAA,EAAU,KAAK,CAAA;AAAA,MAEnC,QAAA,EAAA;AAAA,QAAA,CAAA,KAAA,IAAS,SAAA,qBACTA,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iEAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,mBACCC,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,qCAAA,EAAsC,OAAA,EAAS,QAAA,EAC7D,QAAA,EAAA,KAAA,EACH,CAAA,mBAEAA,GAAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,CAAA;AAAA,UAE1B,4BACCA,GAAAA,CAAC,UAAK,SAAA,EAAU,gFAAA,EACb,wBACH,CAAA,GACE;AAAA,SAAA,EACN,CAAA;AAAA,wBAEFA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,EAAA,EAAI,QAAA;AAAA,YACJ,IAAA,EAAK,OAAA;AAAA,YACL,GAAA;AAAA,YACA,GAAA;AAAA,YACA,IAAA;AAAA,YACA,KAAA,EAAO,YAAA;AAAA,YACP,QAAA;AAAA,YACA,YAAA,EAAY,oBAAoB,SAAA,GAAY,cAAA;AAAA,YAC5C,iBAAA,EAAiB,cAAA;AAAA,YACjB,QAAA,EAAU,YAAA;AAAA,YACV,WAAA,EAAa,eAAA;AAAA,YACb,OAAA,EAAS,WAAA;AAAA,YACT,MAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,mXAAA;AAAA,cACA,0HAAA;AAAA,cACA,qTAAA;AAAA,cACA,iVAAA;AAAA,cACA,sJAAA;AAAA,cACA,kKAAA;AAAA,cACA,+LAAA;AAAA,cACA;AAAA,aACF;AAAA,YACC,GAAG;AAAA;AAAA;AACN;AAAA;AAAA,GACF;AAEJ;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AC1MrB,SAAS,YAAY,IAAA,EAA4B;AAC/C,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,OAAO,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,EAChB;AAEA,EAAA,OAAO,CAAA,EAAG,YAAA,CAAa,IAAA,IAAQ,aAAA,CAAc,WAAW,CAAC,CAAA,EAAA,CAAA;AAC3D;AAEA,SAAS,eAAA,CAAgB,MAA4B,KAAA,EAAkC;AACrF,EAAA,OAAO;AAAA,IACL,gBAAA,EAAkB,YAAY,IAAI,CAAA;AAAA,IAClC,uBAAuB,aAAA,CAAc,QAAA;AAAA,IACrC,wBAAwB,aAAA,CAAc,SAAA;AAAA,IACtC,sBAAsB,aAAA,CAAc,OAAA;AAAA,IACpC,qBAAqB,aAAA,CAAc,MAAA;AAAA,IACnC,2BAA2B,aAAA,CAAc,YAAA;AAAA,IACzC,sBAAA,EAAwB,CAAA,EAAG,aAAA,CAAc,SAAS,CAAA,EAAA,CAAA;AAAA,IAClD,oBAAA,EAAsB,CAAA,EAAG,aAAA,CAAc,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtD,kBAAA,EAAoB,cAAc,MAAA,CAAO,MAAA;AAAA,IACzC,GAAG;AAAA,GACL;AACF;AAEA,SAAS,cAAc,KAAA,EAAe;AACpC,EAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAA,CAAQ,GAAA,GAAM,cAAc,OAAA,CAAQ,GAAA;AACpE,EAAA,MAAM,QAAA,GAAW,KAAA,IAAS,aAAA,CAAc,QAAA,GAAW,CAAA,CAAA;AAEnD,EAAA,OAAO,MAAA,CAAA,CAAQ,cAAc,OAAA,CAAQ,GAAA,GAAM,YAAY,QAAA,EAAU,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC7E;AAEA,SAAS,gBAAgB,KAAA,EAAe;AACtC,EAAA,OAAO,CAAA,OAAA,EAAU,KAAA,IAAS,GAAA,GAAM,aAAA,CAAc,QAAA,CAAS,CAAA,4CAAA,CAAA;AACzD;AAEO,SAASmG,QAAAA,CAAQ;AAAA,EACtB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,YAAA,EAAc,SAAA;AAAA,EACd,GAAG;AACL,CAAA,EAAiB;AACf,EAAA,MAAM,kBAAkB,SAAA,IAAa,KAAA;AACrC,EAAA,MAAM,YAAA,GAAe,cAAc,CAAC,eAAA;AACpC,EAAA,MAAM,kBAAA,GAAqB,YAAA,GACtB,EAAE,aAAA,EAAe,MAAK,GACtB;AAAA,IACC,YAAA,EAAc,eAAA;AAAA,IACd,WAAA,EAAa,QAAA;AAAA,IACb,IAAA,EAAM;AAAA,GACR;AAEJ,EAAA,uBACEnG,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,SAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACT,iDAAA;AAAA,QACA,oEAAA;AAAA,QACA,aAAa,IAAI,CAAA;AAAA,QACjB;AAAA,OACF;AAAA,MACA,KAAA,EAAO,eAAA,CAAgB,IAAA,EAAM,KAAK,CAAA;AAAA,MACjC,GAAG,kBAAA;AAAA,MACH,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,YACT,gCAAA;AAAA,YACA,yEAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,aAAA,CAAc,UAAS,EAAG,CAAC,CAAA,EAAG,KAAA,qBAClDA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cAEC,aAAA,EAAY,MAAA;AAAA,cACZ,SAAA,EAAW,EAAA;AAAA,gBACT,qBAAA;AAAA,gBACA,4DAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,KAAA,EAAO;AAAA,gBACL,IAAA,EAAM,qCAAA;AAAA,gBACN,OAAA,EAAS,cAAc,KAAK,CAAA;AAAA,gBAC5B,GAAA,EAAK,oCAAA;AAAA,gBACL,SAAA,EAAW,gBAAgB,KAAK;AAAA;AAClC,aAAA;AAAA,YAZK;AAAA,WAcR;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;ACpEA,IAAM,yBAAA,GAA4B;AAAA,EAChC,IAAA,EAAM,MAAA;AAAA,EACN,EAAA,EAAI,IAAA;AAAA,EACJ,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,EAAA,EAAI,IAAA;AAAA,EACJ,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,wBAAA,GAA2B;AAAA,EAC/B,IAAA,EAAM,MAAA;AAAA,EACN,EAAA,EAAI,IAAA;AAAA,EACJ,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS,IAAA;AAAA,EACT,MAAA,EAAQ,IAAA;AAAA,EACR,EAAA,EAAI,IAAA;AAAA,EACJ,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,aAAA,GAAgB;AAAA,EACpB,cAAA,EAAgB;AAAA,IACd,KAAA,EAAO,OAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO,KAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAA;AAQA,SAAS,sBAAsB,IAAA,EAA2C;AACxE,EAAA,MAAM,SAAA,GAAY,yBAAyB,IAAI,CAAA;AAE/C,EAAA,OAAO;AAAA,IACL,8BAAA,EAAgC,CAAA,EAAG,iBAAA,CAAkB,YAAA,CAAa,SAAS,CAAC,CAAA,EAAA,CAAA;AAAA,IAC5E,+BAAA,EAAiC,CAAA,EAAG,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnE,yBAAA,EAA2B,CAAA,EAAG,iBAAA,CAAkB,IAAA,CAAK,GAAG,CAAA,EAAA,CAAA;AAAA,IACxD,+BAAA,EAAiC,CAAA,EAAG,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnE,+BAAA,EAAiC,CAAA,EAAG,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnE,qCAAA,EAAuC,CAAA,EAAG,iBAAA,CAAkB,IAAA,CAAK,cAAc,CAAA,EAAA,CAAA;AAAA,IAC/E,4BAAA,EAA8B,CAAA,EAAG,iBAAA,CAAkB,IAAA,CAAK,MAAM,CAAA,EAAA,CAAA;AAAA,IAC9D,+BAAA,EAAiC,CAAA,EAAG,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnE,yBAAA,EAA2B,CAAA,EAAG,iBAAA,CAAkB,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC/D,uBAAA,EAAyB,kBAAkB,MAAA,CAAO;AAAA,GACpD;AACF;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAe,SAAA,GAAY,cAAA;AAAA,EAC3B,eAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,eAAA;AAAA,IACX,QAAA,EAAU,cAAA;AAAA,IACV,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,IAAA,GAAO,SAAA;AAAA,IACP,GAAG;AAAA,GACL,GAAI,eAAe,EAAC;AACpB,EAAA,MAAM,EAAE,SAAA,EAAW,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,OAAO,GAAG,YAAA,EAAa,GAAI,SAAA,IAAa,EAAC;AAE7F,EAAA,MAAM,UAAA,GAAa,0BAA0B,IAAI,CAAA;AACjD,EAAA,MAAM,aAAa,QAAA,IAAY,OAAA,CAAQ,cAAc,CAAA,IAAK,QAAQ,OAAO,CAAA;AACzE,EAAA,MAAM,SAAA,GAAY,sBAAsB,IAAI,CAAA;AAC5C,EAAA,MAAM,SAAA,GAAY,cAAc,SAAS,CAAA;AACzC,EAAA,MAAM,SAAA,GAAY,KAAA,IAAS,iBAAA,CAAkB,IAAA,CAAK,KAAA;AAElD,EAAA,uBACED,KAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA;AAAA,QACpD,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,GAAG,KAAA,EAAM;AAAA,QAC/B,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAC,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,0DAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,QAAA,EAAU,UAAA;AAAA,cACV,OAAA,EAAS,QAAQ,OAAO,CAAA;AAAA,cACxB,MAAA;AAAA,cACA,IAAA,EAAM,UAAA;AAAA,cACN,MAAM,QAAA,IAAY,QAAA;AAAA,cAClB,OAAA,EAAS,IAAA;AAAA,cACR,GAAG,kBAAA;AAAA,cAEH;AAAA;AAAA,WACH;AAAA,0BAEAA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,MAC1B,QAAA,kBAAAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAY,eAAA;AAAA,cACZ,SAAA,EAAW,EAAA;AAAA,gBACT,qGAAA;AAAA,gBACA,4HAAA;AAAA,gBACA,IAAA,KAAS,YACL,uCAAA,GACA;AAAA,eACN;AAAA,cACA,QAAA,EAAU,UAAA;AAAA,cACV,IAAA,EAAM,UAAA;AAAA,cACN,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,IAAA;AAAA,cAET,0BAAAA,GAAAA,CAAC+D,WAAAA,EAAA,EAAY,aAAA,EAAY,MAAA,EAAO,WAAU,qBAAA,EAAsB;AAAA;AAAA,WAClE,EACF;AAAA;AAAA;AAAA,KACF;AAAA,oBAEA/D,GAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,OAAO,SAAA,CAAU,KAAA;AAAA,QACjB,SAAA,EAAW,EAAA,CAAG,gDAAA,EAAkD,aAAa,CAAA;AAAA,QAC7E,MAAM,SAAA,CAAU,IAAA;AAAA,QAChB,UAAA,EAAY,CAAA;AAAA,QACZ,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,GAAG,SAAA,EAAU;AAAA,QACvC,GAAG,YAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,SAAA,EAAU,GAAI,iBAAiB,EAAC;AAEtD,EAAA,uBACED,IAAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,0KAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,IAAQ,wBACPC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,oIAAA;AAAA,YAET,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAEFD,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6DAAA,EACd,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCAAA,EAAwC,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC7D,eAAe,IAAA,oBACdA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wDACb,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,eAAA,EAAiB;AAAA,EACjD,QAAA,EAAU;AACZ,CAAC;AC3OD,IAAM,MAAA,GAAuC;AAAA,EAC3C,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,QAAA,GAAW;AAAA,EACf,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,GAAA,EAAK,WAAA;AAAA,EACL,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,UAAA,GAAa;AAAA,EACjB,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,GAAA,EAAK,aAAA;AAAA,EACL,OAAA,EAAS,iBAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAEO,IAAM,QAAQ,CAAC;AAAA,EACpB,IAAI,SAAA,GAAY,KAAA;AAAA,EAChB,SAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA,GAAU,OAAA;AAAA,EACV,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoE;AAClE,EAAA,OAAaoG,OAAA,CAAA,aAAA;AAAA,IACX,SAAA;AAAA,IACA;AAAA,MACE,GAAG,KAAA;AAAA,MACH,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,MAAA,CAAO,GAAG,CAAA,EAAG,QAAA,CAAS,KAAK,CAAA,EAAG,UAAA,CAAW,OAAO,CAAA,EAAG,SAAS;AAAA,KAC7F;AAAA,IACA;AAAA,GACF;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;AC5BpB,IAAM,UAAA,GAA2D;AAAA,EAC/D,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,qBAAA;AAAA,IACP,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,cAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,WAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,gBAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO,wBAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,wBAAA;AAAA,IACP,KAAA,EAAO,cAAA;AAAA,IACP,KAAA,EAAO;AAAA;AAEX,CAAA;AAEA,IAAM,kCAAgD,IAAI,GAAA,CAAI,CAAC,QAAA,EAAU,UAAU,CAAC,CAAA;AA8B7E,IAAM,SAAA,GAAY,SAASC,UAAAA,CAAU;AAAA,EAC1C,GAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA,GAAc,iBAAA;AAAA,EACd,UAAA,GAAa,KAAA;AAAA,EACb;AACF,CAAA,EAAgE;AAC9D,EAAA,MAAM,IAAA,GAAO,WAAW,KAAK,CAAA;AAC7B,EAAA,MAAM,KAAA,GAAQ,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,KAAK,KAAK,CAAA,CAAA;AAC1C,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,GAAA,CAAI,KAAK,CAAA;AAE1C,EAAA,uBACEtG,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAI,aAAa,EAAE,aAAA,EAAe,QAAO,GAAI,EAAE,cAAc,KAAA,EAAM;AAAA,MACpE,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,MAEzD,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,uCAAA;AAAA,cACA,IAAA,CAAK,KAAA;AAAA,cACL,QAAA,IAAY;AAAA;AACd;AAAA,SACF;AAAA,QACC,yBAASA,GAAAA,CAAC,UAAK,SAAA,EAAU,6CAAA,EAA+C,eAAK,KAAA,EAAM;AAAA;AAAA;AAAA,GACtF;AAEJ;AC/GA,IAAM,aAAA,GAAsBsG,sBAAyC,IAAI,CAAA;AAEzE,SAAS,gBAAA,GAAmB;AAC1B,EAAA,MAAM,OAAA,GAAgBA,YAAI,aAAa,CAAA;AAEvC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AAEA,EAAA,OAAO,OAAA;AACT;AAaA,SAAS,cAAA,CAAe,MAAkB,KAAA,EAAwC;AAChF,EAAA,MAAM,UAAA,GAAa,YAAY,IAAI,CAAA;AAEnC,EAAA,OAAO;AAAA,IACL,iBAAA,EAAmB,CAAA,EAAG,UAAA,CAAW,MAAM,CAAA,EAAA,CAAA;AAAA,IACvC,yBAAA,EAA2B,CAAA,EAAG,UAAA,CAAW,aAAa,CAAA,EAAA,CAAA;AAAA,IACtD,4BAAA,EAA8B,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,4BAAA,EAA8B,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,oBAAA,EAAsB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5C,oBAAA,EAAsB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5C,kBAAA,EAAoB,CAAA,EAAG,UAAA,CAAW,OAAO,CAAA,EAAA,CAAA;AAAA,IACzC,cAAA,EAAgB,CAAA,EAAG,YAAA,CAAa,GAAG,CAAA,EAAA,CAAA;AAAA,IACnC,iBAAA,EAAmB,CAAA,EAAG,YAAA,CAAa,MAAM,CAAA,EAAA,CAAA;AAAA,IACzC,yBAAA,EAA2B,CAAA,EAAG,YAAA,CAAa,aAAa,CAAA,EAAA,CAAA;AAAA,IACxD,mBAAA,EAAqB,CAAA,EAAG,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,iBAAA,EAAmB,aAAa,MAAA,CAAO,MAAA;AAAA,IACvC,GAAG;AAAA,GACL;AACF;AAEA,SAAS,qBAAA,CAAsB,MAAkB,KAAA,EAAwC;AACvF,EAAA,MAAM,UAAA,GAAa,YAAY,IAAI,CAAA;AAEnC,EAAA,OAAO;AAAA,IACL,yBAAA,EAA2B,CAAA,EAAG,UAAA,CAAW,aAAa,CAAA,EAAA,CAAA;AAAA,IACtD,4BAAA,EAA8B,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,4BAAA,EAA8B,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,oBAAA,EAAsB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5C,oBAAA,EAAsB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5C,GAAG;AAAA,GACL;AAQF;AAEA,IAAM,UAAA,GAAa,SAASC,WAAAA,CAAW;AAAA,EACrC,QAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,YAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkE;AAChE,EAAA,MAAM,gBAAsBD,OAAA,CAAA,KAAA,EAAM;AAClC,EAAA,MAAM,eAAe,IAAA,IAAQ,aAAA;AAC7B,EAAA,MAAM,OAAA,GAAgBA,OAAA,CAAA,OAAA;AAAA,IACpB,OAAO;AAAA,MACL,YAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA,EAAM,YAAA;AAAA,MACN,aAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,QAAA,EAAU,aAAA,EAAe,YAAA,EAAc,MAAM,KAAK;AAAA,GACnE;AAEA,EAAA,uBACEtG,GAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,SAC7B,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,QAAA;AAAA,MACV,IAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,wLAAA;AAAA,QACA,QAAA,IAAY,+BAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACA,KAAA,EAAO,cAAA,CAAe,IAAA,EAAM,KAAK,CAAA;AAAA,MAChC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH,EACF,CAAA;AAEJ,CAAA;AAeA,IAAM,aAAA,GAAgB,SAASwG,cAAAA,CAAc;AAAA,EAC3C,OAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2E;AACzE,EAAA,MAAM,UAAU,gBAAA,EAAiB;AACjC,EAAA,MAAM,YAAA,GAAe,QAAQ,OAAA,CAAQ,IAAA;AACrC,EAAA,MAAM,YAAA,GAAe,OAAA,KAAY,MAAA,IAAa,OAAA,CAAQ,KAAA,KAAU,MAAA;AAChE,EAAA,MAAM,YAAY,OAAA,KAAY,OAAA,CAAQ,UAAU,MAAA,GAAY,OAAA,CAAQ,UAAU,KAAA,GAAQ,MAAA,CAAA;AACtF,EAAA,MAAM,gBAAA,GACJ,CAAC,YAAA,KACA,cAAA,KAAmB,QAAQ,YAAA,KAAiB,MAAA,IAAa,QAAQ,YAAA,KAAiB,KAAA,CAAA,CAAA;AACrF,EAAA,MAAM,UAAA,GAAa,YAAY,OAAA,CAAQ,QAAA;AACvC,EAAA,MAAM,kBAAkB,KAAA,IAAS,KAAA;AAEjC,EAAA,SAAS,aAAa,KAAA,EAA4C;AAChE,IAAA,QAAA,GAAW,KAAK,CAAA;AAEhB,IAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,MAAA,OAAA,CAAQ,aAAA,GAAgB,KAAA,CAAM,aAAA,CAAc,KAAK,CAAA;AAAA,IACnD;AAAA,EACF;AAEA,EAAA,uBACEzG,IAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,gBAAA;AAAA,MACV,WAAA,EAAW,YAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,mIAAA;AAAA,QACA,UAAA,IAAc,oBAAA;AAAA,QACd;AAAA,OACF;AAAA,MACA,KAAA,EAAO,qBAAA,CAAsB,YAAA,EAAc,KAAK,CAAA;AAAA,MAC/C,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,OAAA;AAAA,YACL,IAAA,EAAM,QAAQ,OAAA,CAAQ,IAAA;AAAA,YACtB,KAAA;AAAA,YACA,OAAA,EAAS,eAAe,SAAA,GAAY,MAAA;AAAA,YACpC,cAAA,EAAgB,eAAe,MAAA,GAAY,gBAAA;AAAA,YAC3C,QAAA,EAAU,UAAA;AAAA,YACV,YAAA,EAAY,eAAA;AAAA,YACZ,SAAA,EAAU,cAAA;AAAA,YACV,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAa,OAAO,IAAA,GAAO,MAAA;AAAA,YAC3B,SAAA,EAAW,EAAA;AAAA,cACT,+MAAA;AAAA,cACA,oIAAA;AAAA,cACA,gFAAA;AAAA,cACA,mIAAA;AAAA,cACA,0EAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEC,QAAA,EAAA,IAAA,mBACCD,IAAAA,CAAAS,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,IAAA;AAAA,8BACDR,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAW,QAAA,EAAA,eAAA,EAAgB;AAAA,aAAA,EAC7C,CAAA,GAEA;AAAA;AAAA;AAEJ;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,UAAA,CAAW,WAAA,GAAc,QAAA;AACzB,aAAA,CAAc,WAAA,GAAc,gBAAA;AAErB,IAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY;AAAA,EAC9C,OAAA,EAAS;AACX,CAAC;ACpLD,SAAS,gBAAgB,KAAA,EAA6B;AACpD,EAAA,OAAO;AAAA,IACL,mBAAA,EAAqB,CAAA,EAAG,WAAA,CAAY,OAAA,CAAQ,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,iBAAA,EAAmB,CAAA,EAAG,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA,EAAA,CAAA;AAAA,IACjD,gBAAA,EAAkB,CAAA,EAAG,WAAA,CAAY,OAAA,CAAQ,MAAM,CAAA,EAAA,CAAA;AAAA,IAC/C,oBAAA,EAAsB,CAAA,EAAG,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA,EAAA,CAAA;AAAA,IAC/C,wBAAA,EAA0B,CAAA,EAAG,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtD,wBAAA,EAA0B,CAAA,EAAG,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAA;AAAA,IACtD,uBAAA,EAAyB,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,MAAM,CAAA,EAAA,CAAA;AAAA,IACrD,mBAAA,EAAqB,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,IAAI,CAAA,EAAA,CAAA;AAAA,IACnD,wBAAA,EAA0B,YAAY,UAAA,CAAW,aAAA;AAAA,IACjD,qBAAA,EAAuB,YAAY,UAAA,CAAW,UAAA;AAAA,IAC9C,qBAAA,EAAuB,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA,EAAA,CAAA;AAAA,IACpD,yBAAA,EAA2B,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzD,uBAAA,EAAyB,YAAY,MAAA,CAAO,MAAA;AAAA,IAC5C,GAAG;AAAA,GACL;AACF;AAEA,IAAM,YAAY,CAAC;AAAA,EACjB,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,kJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO,gBAAgB,YAAY,CAAA;AAAA,IAEnC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,4HAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QACC,GAAG;AAAA;AAAA;AACN;AACF,CAAA;AAEF,SAAA,CAAU,WAAA,GAAc,OAAA;AAExB,IAAM,gBAAgB,CAAC;AAAA,EACrB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAEMA,GAAAA,CAAC,UAAA,EAAA,EAAS,GAAA,EAAU,SAAA,EAAuB,GAAG,KAAA,EAAO;AAC3D,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,WAAW,CAAC;AAAA,EAChB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAEMA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAuB,GAAG,KAAA,EAAO;AACtD,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAEMA,GAAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAW,GAAG,wBAAA,EAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AACtF,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,YAAY,CAAC;AAAA,EACjB,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA,GAAW,KAAA;AAAA,EACX,WAAA,GAAc,KAAA;AAAA,EACd,UAAA,GAAa,KAAA;AAAA,EACb,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACED,IAAAA,CAAAS,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,kBAAAR,GAAAA,CAAC,OAAA,EAAA,EAAM,aAAA,EAAY,MAAA,EAAO,WAAU,wCAAA,EAAyC,CAAA;AAAA,kBAC7EA,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,kBAAA,EAAkB,aAAa,EAAA,GAAK,MAAA;AAAA,MACpC,SAAA,EAAW,EAAA;AAAA,QACT,8BAAA;AAAA,QACA,OAAA,IAAW,2CAAA;AAAA,QACX,QAAA,IAAY,sCAAA;AAAA,QACZ,WAAA,IACE,gFAAA;AAAA,QACF;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AACN,CAAA,EACF;AAEF,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAEMA,GAAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAW,GAAG,wBAAA,EAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AACtF,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,WAAW,CAAC;AAAA,EAChB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wOAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,YAAY,CAAC;AAAA,EACjB,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,KAAA,GAAQ,KAAA;AAAA,EACR,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iJAAA;AAAA,MACA,kFAAA;AAAA,MACA,OAAA,IAAW,mCAAA;AAAA,MACX;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,YAAY,CAAC;AAAA,EACjB,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,gFAAA;AAAA,MACA,kFAAA;AAAA,MACA,OAAA,IAAW,mCAAA;AAAA,MACX;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGEA,GAAAA,CAAC,SAAA,EAAA,EAAQ,GAAA,EAAU,SAAA,EAAW,GAAG,oCAAA,EAAsC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEhG,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,KAAA,GAAQ;AACd,KAAA,CAAM,IAAA,GAAO,SAAA;AACb,KAAA,CAAM,OAAA,GAAU,YAAA;AAChB,KAAA,CAAM,IAAA,GAAO,SAAA;AACb,KAAA,CAAM,GAAA,GAAM,QAAA;AACZ,KAAA,CAAM,QAAA,GAAW,aAAA;AACjB,KAAA,CAAM,MAAA,GAAS,WAAA;AACf,KAAA,CAAM,IAAA,GAAO,SAAA;AACb,KAAA,CAAM,MAAA,GAAS,WAAA;AACf,KAAA,CAAM,GAAA,GAAM,QAAA;AC3OZ,IAAM,QAAA,GAAW,aAAA,CAQfyG,MAAA,CAAS,IAAI,CAAA;AACf,IAAM,QAAA,GAAW,aAAA,CAMfA,MAAA,CAAS,IAAI,CAAA;AACf,IAAM,WAAA,GAAc,aAAA,CAKlBA,MAAA,CAAS,GAAG,CAAA;AACd,IAAM,WAAA,GAAc,aAAA,CAMlBA,MAAA,CAAS,KAAK,CAAA;AAChB,IAAM,aAAA,GAAgB,aAAA,CAAsBA,MAAA,CAAS,SAAS,CAAA;AA8B9D,IAAM,gBAAA,GAAmBvG,GAAAA;AAAA,EACvB,+GAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,gIAAA;AAAA,QACF,MAAA,EAAQ,6CAAA;AAAA,QACR,IAAA,EAAM,4EAAA;AAAA,QACN,SAAA,EACE;AAAA,OACJ;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAS;AAAA;AACX;AAEJ;AAEA,IAAM,mBAAA,GAAsBA,GAAAA;AAAA,EAC1B,k3BAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,qDAAA;AAAA,QACT,MAAA,EACE,0KAAA;AAAA,QACF,IAAA,EAAM,+EAAA;AAAA,QACN,SAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAEA,IAAM,qBAAA,GAAwBA,GAAAA;AAAA,EAC5B,iLAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,qEAAA;AAAA,QACT,MAAA,EAAQ,sDAAA;AAAA,QACR,IAAA,EAAM,yFAAA;AAAA,QACN,SAAA,EAAW;AAAA,OACb;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,IAAM,mBAAA,GAAsBA,GAAAA;AAAA,EAC1B,wSAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAUA,IAAM,cAAoBwG,OAAA,CAAA,aAAA,CAAgC;AAAA,EACxD,cAAA,EAAgB,QAAA;AAAA,EAChB,QAAA,EAAU,KAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAC,CAAA;AAqDD,SAAS,YAAA,CAAa,MAAgB,KAAA,EAAqD;AACzF,EAAA,MAAM,KAAA,GAAQ,UAAU,IAAI,CAAA;AAE5B,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IAChC,gBAAA,EAAkB,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,EAAA,CAAA;AAAA,IAClC,YAAA,EAAc,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,EAAA,CAAA;AAAA,IAC1B,oBAAA,EAAsB,CAAA,EAAG,KAAA,CAAM,UAAU,CAAA,EAAA,CAAA;AAAA,IACzC,0BAAA,EAA4B,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC7C,0BAAA,EAA4B,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC7C,kBAAA,EAAoB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACrC,kBAAA,EAAoB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACrC,eAAA,EAAiB,CAAA,EAAG,UAAA,CAAW,MAAM,CAAA,EAAA,CAAA;AAAA,IACrC,uBAAA,EAAyB,CAAA,EAAG,UAAA,CAAW,aAAa,CAAA,EAAA,CAAA;AAAA,IACpD,oBAAA,EAAsB,CAAA,EAAG,UAAA,CAAW,UAAU,CAAA,EAAA,CAAA;AAAA,IAC9C,uBAAA,EAAyB,CAAA,EAAG,UAAA,CAAW,aAAa,CAAA,EAAA,CAAA;AAAA,IACpD,yBAAA,EAA2B,CAAA,EAAG,UAAA,CAAW,cAAc,CAAA,EAAA,CAAA;AAAA,IACvD,0BAAA,EAA4B,CAAA,EAAG,UAAA,CAAW,eAAe,CAAA,EAAA,CAAA;AAAA,IACzD,kBAAA,EAAoB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC1C,qBAAA,EAAuB,CAAA,EAAG,UAAA,CAAW,WAAW,CAAA,EAAA,CAAA;AAAA,IAChD,wBAAA,EAA0B,CAAA,EAAG,UAAA,CAAW,aAAa,CAAA,EAAA,CAAA;AAAA,IACrD,wBAAA,EAA0B,CAAA,EAAG,UAAA,CAAW,aAAa,CAAA,EAAA,CAAA;AAAA,IACrD,iBAAA,EAAmB,CAAA,EAAG,UAAA,CAAW,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IAChD,eAAA,EAAiB,WAAW,MAAA,CAAO,MAAA;AAAA,IACnC,GAAG;AAAA,GACL;AACF;AAEA,SAAS,qBAAqB,IAAA,EAAuC;AACnE,EAAA,OAAO,MAAM,IAAA,CAAK,CAAC,QAAQ,CAAC,GAAA,CAAI,QAAQ,CAAA,EAAG,KAAA;AAC7C;AAEA,SAAS,IAAA,CAAK;AAAA,EACZ,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,GAAiB,QAAA;AAAA,EACjB,SAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,aAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,QAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAc;AACZ,EAAA,MAAM,YAAY,QAAA,IAAY,KAAA;AAC9B,EAAA,MAAM,gBAAA,GAAmB,YAAA,IAAgB,oBAAA,CAAqB,IAAI,CAAA;AAClE,EAAA,MAAM,OAAA,GAAgBA,OAAA,CAAA,OAAA;AAAA,IACpB,OAAO,EAAE,cAAA,EAAgB,QAAA,EAAU,KAAA,EAAO,MAAM,OAAA,EAAQ,CAAA;AAAA,IACxD,CAAC,cAAA,EAAgB,QAAA,EAAU,KAAA,EAAO,MAAM,OAAO;AAAA,GACjD;AAEA,EAAA,SAAS,kBAAkB,SAAA,EAAmB;AAC5C,IAAA,aAAA,GAAgB,SAAS,CAAA;AACzB,IAAA,WAAA,GAAc,SAAS,CAAA;AAAA,EACzB;AAEA,EAAA,uBACE1G,GAAAA,CAAC,WAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,SAC3B,QAAA,kBAAAA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,MAC/B,KAAA,EAAO,SAAA;AAAA,MACP,YAAA,EAAc,SAAA,KAAc,MAAA,GAAY,gBAAA,GAAmB,MAAA;AAAA,MAC3D,aAAA,EAAe,iBAAA;AAAA,MACf,WAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MACjC,KAAA,EAAO,YAAA,CAAa,IAAA,EAAM,KAAK,CAAA;AAAA,MAC9B,GAAG,KAAA;AAAA,MAEH,iCACCA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,OAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA;AAAA,OACF,GAEA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,aAAa,IAAA,CAAK,IAAA,CAAK,CAAC,GAAA,KAAQ,IAAI,OAAO,CAAA;AACjD,EAAA,MAAM,uBACJA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,cAAY,SAAA,IAAa,UAAA;AAAA,MACzB,SAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MAEC,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,qBACTA,GAAAA,CAAC,qBAAA,EAAA,EAAsC,QAAA,EAAoB,GAAA,EAAA,EAA/B,GAAA,CAAI,KAAqC,CACtE;AAAA;AAAA,GACH;AAGF,EAAA,uBACED,IAAAA,CAAAS,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,UAAA,mBAAaR,GAAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,GAAA,EAAM,gBAAK,CAAA,GAAqB,IAAA;AAAA,IAC7E,IAAA,CAAK,GAAA;AAAA,MAAI,CAAC,GAAA,KACT,GAAA,CAAI,OAAA,KAAY,SAAY,IAAA,mBAC1BA,GAAAA,CAAC,WAAA,EAAA,EAA4B,OAAO,GAAA,CAAI,KAAA,EACrC,QAAA,EAAA,GAAA,CAAI,OAAA,EAAA,EADW,IAAI,KAEtB;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,qBAAA,CAAsB,EAAE,GAAA,EAAK,QAAA,EAAS,EAAyC;AACtF,EAAA,MAAM,0BACJA,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,OAAO,GAAA,CAAI,KAAA;AAAA,MACX,QAAA,EAAU,YAAY,GAAA,CAAI,QAAA;AAAA,MAC1B,MAAM,GAAA,CAAI,IAAA;AAAA,MACV,OAAO,GAAA,CAAI,KAAA;AAAA,MAEV,QAAA,EAAA,GAAA,CAAI;AAAA;AAAA,GACP;AAGF,EAAA,IAAI,CAAC,GAAA,CAAI,OAAA,EAAS,OAAO,OAAA;AAEzB,EAAA,uBACED,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,OAAA,EAAQ,CAAA,EACzC,CAAA;AAAA,oBACAA,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,GAAA,CAAI,OAAA,EAAQ;AAAA,GAAA,EAC/B,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS;AAAA,EAChB,eAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,OAAA,GAAgB0G,YAAI,WAAW,CAAA;AACrC,EAAA,MAAM,eAAA,GAAkB,WAAW,OAAA,CAAQ,OAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,SAAS,OAAA,CAAQ,KAAA;AACvC,EAAA,MAAM,uBAAA,GAA0B,eAAA,IAAmB,OAAA,CAAQ,cAAA,KAAmB,WAAA;AAC9E,EAAA,MAAM,WAAA,GAAoBA,OAAA,CAAA,OAAA;AAAA,IACxB,OAAO,EAAE,GAAG,SAAS,KAAA,EAAO,aAAA,EAAe,SAAS,eAAA,EAAgB,CAAA;AAAA,IACpE,CAAC,OAAA,EAAS,aAAA,EAAe,eAAe;AAAA,GAC1C;AAEA,EAAA,uBACE1G,GAAAA,CAAC,WAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,aAC3B,QAAA,kBAAAD,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,eAAA,EAAiB,uBAAA;AAAA,MACjB,SAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,iBAAiB,EAAE,OAAA,EAAS,eAAA,EAAiB,KAAA,EAAO,eAAe,CAAA;AAAA,QACnE;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,WAAA,EAAU,gBAAA;AAAA,YACV,WAAW,qBAAA,CAAsB,EAAE,SAAS,eAAA,EAAiB,KAAA,EAAO,eAAe,CAAA;AAAA,YACnF,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,wBAAA;AAAA,cACN,GAAA,EAAK,eAAA,KAAoB,MAAA,GAAS,MAAA,GAAS,uBAAA;AAAA,cAC3C,MAAA,EAAQ,eAAA,KAAoB,MAAA,GAAS,GAAA,GAAM,MAAA;AAAA,cAC3C,KAAA,EAAO,yBAAA;AAAA,cACP,MAAA,EACE,eAAA,KAAoB,MAAA,GAChB,4BAAA,GACA;AAAA;AACR;AAAA,SACF;AAAA,QACC;AAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,QAAA,EAAU,WAAW,QAAA,EAAU,IAAA,EAAM,GAAG,KAAA,EAAM,EAAqB;AAC/F,EAAA,MAAM,OAAA,GAAgB0G,YAAI,WAAW,CAAA;AACrC,EAAA,MAAM,UAAA,GAAa,YAAY,OAAA,CAAQ,QAAA;AAEvC,EAAA,uBACE3G,IAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,GAAG,mBAAA,CAAoB,EAAE,SAAS,OAAA,CAAQ,OAAA,EAAS,CAAA,EAAG,SAAS,CAAA;AAAA,MACzE,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,wBACDC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,YAAY,QAAA,EAAS,CAAA;AAAA,QACpC,wBACCA,GAAAA,CAAC,UAAK,SAAA,EAAU,mMAAA,EACb,iBACH,CAAA,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,UAAA,EAAY,aAAa,OAAA,EAAS,GAAG,OAAM,EAAqB;AAChG,EAAA,uBACEA,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,aAAa,WAAA,IAAe,UAAA;AAAA,MAC5B,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MACxD,GAAG;AAAA;AAAA,GACN;AAEJ;AC7aA,IAAM,qBAAA,GAAwB,+BAAA;AAC9B,IAAM,mBAAA,GAAsB,sCAAA;AAE5B,SAAS,gBAAA,CACP,MACA,KAAA,EACiB;AACjB,EAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,KAAA,CAAM,IAAI,CAAA;AAEvC,EAAA,OAAO;AAAA,IACL,uBAAA,EAAyB,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,EAAA,CAAA;AAAA,IAC3C,sBAAA,EAAwB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzC,sBAAA,EAAwB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzC,sBAAA,EAAwB,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzC,mBAAA,EAAqB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IACpC,6BAAA,EAA+B,CAAA,EAAG,cAAA,CAAe,cAAc,CAAA,EAAA,CAAA;AAAA,IAC/D,YAAA,EAAc,wBAAA;AAAA,IACd,OAAA,EAAS,MAAA;AAAA,IACT,GAAG;AAAA,GACL;AACF;AAEA,SAAS,qBAAA,GAA8C;AACrD,EAAA,OAAO;AAAA,IACL,sBAAA,EAAwB,CAAA,EAAG,cAAA,CAAe,QAAQ,CAAA,EAAA,CAAA;AAAA,IAClD,uBAAA,EAAyB,CAAA,EAAG,cAAA,CAAe,SAAS,CAAA,EAAA;AAAA,GACtD;AACF;AAEA,SAAS2G,uBAAsB,GAAA,EAAgC;AAC7D,EAAA,OAAO,IAAI,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAC1C;AAEA,SAASC,UAAAA,CACP,OACA,WAAA,EACA;AACA,EAAA,OACE,UAAU,IAAA,IAAQ,OAAO,UAAU,QAAA,IAAY,WAAA,KAAgB,QAAQ,WAAA,KAAgB,MAAA;AAE3F;AAEA,IAAM,WAAW,CAAC;AAAA,EAChB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,EAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,kBAAA,EAAoB,eAAA;AAAA,EACpB,cAAA,EAAgB,WAAA;AAAA,EAChB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4E;AAC1E,EAAA,MAAM,SAAeC,OAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,aAAa,EAAA,KAAO,KAAA,IAAS,eAAe,OAAO,KAAA,KAAU,WAAW,MAAA,GAAS,MAAA,CAAA;AACvF,EAAA,MAAM,eAAA,GAAkBD,UAAAA,CAAU,KAAA,EAAO,WAAW,CAAA;AACpD,EAAA,MAAM,aAAA,GAAgB,WAAA,IAAe,UAAA,GAAa,CAAA,EAAG,UAAU,CAAA,YAAA,CAAA,GAAiB,MAAA;AAChF,EAAA,MAAM,UAAU,OAAO,KAAA,KAAU,YAAY,UAAA,GAAa,CAAA,EAAG,UAAU,CAAA,MAAA,CAAA,GAAW,MAAA;AAClF,EAAA,MAAM,WAAA,GAAcD,mBAAAA,CAAmB,eAAA,EAAiB,aAAA,EAAe,OAAO,CAAA;AAE9E,EAAA,MAAM,YAAA,GAAqBE,OAAA,CAAA,WAAA;AAAA,IACzB,CAAC,KAAA,KAAkD;AACjD,MAAA,aAAA,GAAgB,KAAA,CAAM,cAAc,KAAK,CAAA;AACzC,MAAA,QAAA,GAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AAAA,IACA,CAAC,UAAU,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,0BACJ7G,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,4HAAA;AAAA,QACA,iIAAA;AAAA,QACA,uHAAA;AAAA,QACA,0BAAA,CAA2B,QAAA;AAAA,QAC3B,gGAAA;AAAA,QACA,4BAAA,CAA6B,QAAA;AAAA,QAC7B;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACA,EAAA,EAAI,UAAA;AAAA,MACJ,gBAAc,eAAA,IAAmB,MAAA;AAAA,MACjC,kBAAA,EAAkB,WAAA;AAAA,MAClB,KAAA,EAAO,gBAAA,CAAiB,IAAA,EAAM,KAAK,CAAA;AAAA,MACnC,QAAA,EAAU,YAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAGF,EAAA,IAAI,CAAC,SAAS,CAAC,WAAA,IAAe,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,cAAA,EAAgB;AAC1E,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,uBACED,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,sCAAA,EAAwC,cAAc,CAAA;AAAA,MACpE,OAAO,qBAAA,EAAsB;AAAA,MAE5B,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCC,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,UAAA;AAAA,YACT,SAAA,EAAU,sEAAA;AAAA,YAET,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAGD,OAAA;AAAA,QAEA,WAAA,IAAe,CAAC,KAAA,oBACfA,GAAAA,CAAC,OAAE,EAAA,EAAI,aAAA,EAAe,SAAA,EAAW,qBAAA,EAC9B,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,QAGD,OAAO,KAAA,KAAU,QAAA,oBAChBA,GAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAW,mBAAA,EACrC,QAAA,EAAA,KAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AC7IvB,IAAM,aAAA,GAAgB;AAAA,EACpB,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,MAAM8G,aAAA,EAAQ;AAAA,EAClD,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,MAAM,GAAA,EAAI;AAAA,EAC5C,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,MAAM,IAAA;AACxC,CAAA;AAkBA,SAAS,qBAAA,CACP,MACA,KAAA,EACsB;AACtB,EAAA,MAAM,KAAA,GAAQ,mBAAmB,IAAI,CAAA;AAErC,EAAA,OAAO;AAAA,IACL,yBAAA,EAA2B,CAAA,EAAG,KAAA,CAAM,aAAa,CAAA,EAAA,CAAA;AAAA,IACjD,0BAAA,EAA4B,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,EAAA,CAAA;AAAA,IAC5C,sBAAA,EAAwB,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,EAAA,CAAA;AAAA,IACpC,mCAAA,EAAqC,CAAA,EAAG,KAAA,CAAM,cAAc,CAAA,EAAA,CAAA;AAAA,IAC5D,mCAAA,EAAqC,CAAA,EAAG,KAAA,CAAM,cAAc,CAAA,EAAA,CAAA;AAAA,IAC5D,4BAAA,EAA8B,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC/C,4BAAA,EAA8B,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC/C,yBAAA,EAA2B,CAAA,EAAG,mBAAA,CAAoB,MAAM,CAAA,EAAA,CAAA;AAAA,IACxD,gCAAA,EAAkC,CAAA,EAAG,mBAAA,CAAoB,YAAY,CAAA,EAAA,CAAA;AAAA,IACrE,4BAAA,EAA8B,CAAA,EAAG,mBAAA,CAAoB,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC7D,mCAAA,EAAqC,CAAA,EAAG,mBAAA,CAAoB,cAAc,CAAA,EAAA,CAAA;AAAA,IAC1E,oCAAA,EAAsC,CAAA,EAAG,mBAAA,CAAoB,eAAe,CAAA,EAAA,CAAA;AAAA,IAC5E,2BAAA,EAA6B,CAAA,EAAG,mBAAA,CAAoB,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACnE,yBAAA,EAA2B,oBAAoB,MAAA,CAAO,MAAA;AAAA,IACtD,GAAG;AAAA,GACL;AACF;AAEA,SAAS,qBAAqB,KAAA,EAAwD;AACpF,EAAA,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,OAAA,IAAW,KAAA,KAAU,MAAA;AAC9D;AAEO,IAAM,gBAAgB,CAAC;AAAA,EAC5B,KAAA;AAAA,EACA,YAAA,GAAe,QAAA;AAAA,EACf,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,QAAA;AAAA,EACP,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAiF;AAC/E,EAAA,MAAM,gBAAsBC,OAAA,CAAA,KAAA,EAAM;AAClC,EAAA,MAAM,YAAY,IAAA,IAAQ,aAAA;AAC1B,EAAA,MAAM,EAAE,eAAA,EAAiB,KAAA,EAAO,WAAA,EAAa,QAAA,KAAa,QAAA,EAAS;AACnE,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,iBAA6B,YAAY,CAAA;AACzF,EAAA,MAAM,aAAA,GAAgB,oBAAA,CAAqB,KAAK,CAAA,GAAI,KAAA,GAAQ,QAAA;AAC5D,EAAA,MAAM,aAAA,GAAgB,WAAA,IAAe,KAAA,KAAU,eAAA,GAAkB,aAAA,GAAgB,aAAA,CAAA;AACjF,EAAA,MAAM,UAAA,GAAa,YAAY,WAAA,KAAgB,MAAA;AAE/C,EAAA,SAAS,aAAa,SAAA,EAA+B;AACnD,IAAA,IAAI,UAAA,EAAY;AAChB,IAAA,gBAAA,CAAiB,SAAS,CAAA;AAC1B,IAAA,QAAA,CAAS,SAAS,CAAA;AAClB,IAAA,QAAA,GAAW,SAAS,CAAA;AAAA,EACtB;AAEA,EAAA,uBACEhH,IAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,eAAA,EAAe,UAAA;AAAA,MACf,SAAA,EAAW,EAAA,CAAG,mDAAA,EAAqD,SAAS,CAAA;AAAA,MAC5E,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,qBAAA,CAAsB,IAAA,EAAM,KAAK,CAAA;AAAA,MACvC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,2EAAA,EAA4E,QAAA,EAAA,yBAAA,EAE9F,CAAA;AAAA,wBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0NACZ,QAAA,EAAA,aAAA,CAAc,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,IAAA,EAAM,MAAK,KAAM;AAChE,UAAA,MAAM,UAAU,aAAA,KAAkB,WAAA;AAElC,UAAA,uBACED,IAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,EAAA;AAAA,gBACT,gbAAA;AAAA,gBACA,8PAAA;AAAA,gBACA,OAAA,IAAW,yCAAA;AAAA,gBACX,UAAA,IAAc;AAAA,eAChB;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAC,GAAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACC,YAAA,EAAY,KAAA;AAAA,oBACZ,OAAA;AAAA,oBACA,SAAA,EAAU,SAAA;AAAA,oBACV,QAAA,EAAU,UAAA;AAAA,oBACV,IAAA,EAAM,SAAA;AAAA,oBACN,QAAA,EAAU,MAAM,YAAA,CAAa,WAAW,CAAA;AAAA,oBACxC,IAAA,EAAK,OAAA;AAAA,oBACL,KAAA,EAAO;AAAA;AAAA,iBACT;AAAA,gCACAA,GAAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,WAAU,iDAAA,EAAkD,CAAA;AAAA,gCAC9EA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA,aAAA;AAAA,YAnBR;AAAA,WAoBP;AAAA,QAEJ,CAAC,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;ACpJrB,SAASgH,iBAAAA,GAA4B;AAC1C,EAAA,OAAO,kBAAuB,IAAK,KAAA;AACrC;ACgCA,IAAM,cAAA,GAAiB;AAAA,EACrB,KAAA,EAAO,uBAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAEA,IAAI,uBAAA,GAA+C,IAAA;AACnD,IAAI,sBAAA,GAA6C,IAAA;AAEjD,SAAS,mBAAA,CACP,MACA,KAAA,EACkB;AAClB,EAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,KAAA,CAAM,IAAI,CAAA;AAE1C,EAAA,OAAO;AAAA,IACL,qBAAA,EAAuB,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,EAAA,CAAA;AAAA,IACvC,0BAAA,EAA4B,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,IACzC,wBAAA,EAA0B,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,EAAA,CAAA;AAAA,IAC1C,uBAAA,EAAyB,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,EAAA,CAAA;AAAA,IACxC,yBAAA,EAA2B,CAAA,EAAG,iBAAA,CAAkB,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC/D,uBAAA,EAAyB,kBAAkB,MAAA,CAAO,MAAA;AAAA,IAClD,GAAG;AAAA,GACL;AACF;AAEA,SAAS,iBAAA,GAAsC;AAC7C,EAAA,IAAI,OAAO,QAAA,KAAa,WAAA,EAAa,OAAO,OAAA;AAC5C,EAAA,OAAO,SAAS,eAAA,CAAgB,SAAA,CAAU,QAAA,CAAS,MAAM,IAAI,MAAA,GAAS,OAAA;AACxE;AAEA,SAAS,mBAAmB,KAAA,EAAyB;AACnD,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACrC,EAAA,QAAA,CAAS,eAAA,CAAgB,SAAA,CAAU,MAAA,CAAO,MAAA,EAAQ,UAAU,MAAM,CAAA;AACpE;AAEA,SAAS,eAAA,GAAkB;AACzB,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,IAAA;AAE1C,EAAA,MAAM,uBAAA,GAA0B,MAAA,CAAO,YAAA,IAAiB,MAAA,CAAuB,kBAAA;AAE/E,EAAA,IAAI,CAAC,yBAAyB,OAAO,IAAA;AAErC,EAAA,uBAAA,KAA4B,IAAI,uBAAA,EAAwB;AAExD,EAAA,IAAI,uBAAA,CAAwB,UAAU,WAAA,EAAa;AACjD,IAAA,KAAK,wBAAwB,MAAA,EAAO;AAAA,EACtC;AAEA,EAAA,OAAO,uBAAA;AACT;AAEA,SAAS,eAAe,YAAA,EAA4B;AAClD,EAAA,IAAI,sBAAA,EAAwB,UAAA,KAAe,YAAA,CAAa,UAAA,EAAY;AAClE,IAAA,OAAO,sBAAA;AAAA,EACT;AAEA,EAAA,MAAM,aAAa,YAAA,CAAa,UAAA;AAChC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,UAAA,GAAa,IAAK,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,YAAA,CAAa,CAAA,EAAG,QAAQ,UAAU,CAAA;AAC9D,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,cAAA,CAAe,CAAC,CAAA;AAEvC,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,MAAA,EAAQ,SAAS,CAAA,EAAG;AAC9C,IAAA,MAAM,WAAW,KAAA,GAAQ,MAAA;AACzB,IAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,IAAI,IAAA,CAAK,EAAA,GAAK,OAAO,QAAQ,CAAA;AACnD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,EAAO,GAAI,CAAA,GAAI,CAAA;AAClC,IAAA,OAAA,CAAQ,KAAK,CAAA,GAAA,CAAK,IAAA,GAAO,MAAM,KAAA,GAAQ,GAAA,IAAA,CAAQ,IAAI,QAAA,KAAa,CAAA;AAAA,EAClE;AAEA,EAAA,sBAAA,GAAyB,MAAA;AACzB,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,gBAAgB,YAAA,EAA8C;AACrE,EAAA,MAAM,GAAA,GAAM,YAAY,GAAA,EAAI;AAC5B,EAAA,IAAI,GAAA,GAAM,YAAA,CAAa,OAAA,GAAU,EAAA,EAAI;AACrC,EAAA,YAAA,CAAa,OAAA,GAAU,GAAA;AAEvB,EAAA,IAAI;AACF,IAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,IAAA,IAAI,CAAC,YAAA,EAAc;AAEnB,IAAA,MAAM,MAAA,GAAS,aAAa,kBAAA,EAAmB;AAC/C,IAAA,MAAM,IAAA,GAAO,aAAa,UAAA,EAAW;AAErC,IAAA,MAAA,CAAO,MAAA,GAAS,eAAe,YAAY,CAAA;AAC3C,IAAA,IAAA,CAAK,KAAK,KAAA,GAAQ,IAAA;AAClB,IAAA,MAAA,CAAO,QAAQ,IAAI,CAAA;AACnB,IAAA,IAAA,CAAK,OAAA,CAAQ,aAAa,WAAW,CAAA;AACrC,IAAA,MAAA,CAAO,KAAA,EAAM;AAAA,EACf,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;AAEO,IAAM,cAAc,CAAC;AAAA,EAC1B,KAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,GAAQ,KAAA;AAAA,EACR,eAAA,GAAkB,KAAA;AAAA,EAClB,MAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,OAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA6E;AAC3E,EAAA,MAAM,QAAcC,OAAA,CAAA,KAAA,EAAM;AAC1B,EAAA,MAAM,SAAS,CAAA,kBAAA,EAAqB,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAC3D,EAAA,MAAM,qBAAqBD,iBAAAA,EAAiB;AAC5C,EAAA,MAAM,WAAA,GAAoBC,eAAO,CAAC,CAAA;AAClC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,OAAA,CAAA,QAAA;AAAA,IAC9C,YAAA,IAAgB;AAAA,GAClB;AAEA,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,YAAA,KAAiB,MAAA,EAAW;AACrD,MAAA,gBAAA,CAAiB,mBAAmB,CAAA;AAAA,IACtC;AACA,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,YAAA,EAAc,KAAK,CAAC,CAAA;AAExB,EAAA,MAAM,eAAe,KAAA,IAAS,aAAA;AAC9B,EAAA,MAAM,SAAS,YAAA,KAAiB,MAAA;AAChC,EAAA,MAAM,WAAA,GAAc,SACf,MAAA,EAAQ,KAAA,IAAS,eAAe,KAAA,GAChC,MAAA,EAAQ,QAAQ,cAAA,CAAe,IAAA;AACpC,EAAA,MAAM,UAAA,GACJ,sBAAsB,CAAC,OAAA,GACnB,kBAAkB,MAAA,CAAO,OAAA,GACzB,kBAAkB,MAAA,CAAO,KAAA;AAC/B,EAAA,MAAM,kBAAoC,kBAAA,GACtC,iBAAA,CAAkB,MAAA,CAAO,OAAA,GACzB,kBAAkB,MAAA,CAAO,KAAA;AAC7B,EAAA,MAAM,sBAAA,GACJ,CAAC,QAAA,IAAY,CAAC,kBAAA,GACV;AAAA,IACE,UAAA,EAAY,EAAE,KAAA,EAAO,iBAAA,CAAkB,OAAO,UAAA,EAAW;AAAA,IACzD,QAAA,EAAU,EAAE,KAAA,EAAO,iBAAA,CAAkB,OAAO,QAAA;AAAS,MAEvD,EAAC;AAEP,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,mBAAmB,OAAA,EAAS;AAC9B,MAAA,kBAAA,CAAmB,YAAY,CAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,eAAA,EAAiB,YAAA,EAAc,OAAO,CAAC,CAAA;AAE3C,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA+C;AAClE,IAAA,OAAA,GAAU,KAAK,CAAA;AAEf,IAAA,IAAI,KAAA,CAAM,oBAAoB,QAAA,EAAU;AAExC,IAAA,MAAM,SAAA,GAA8B,SAAS,OAAA,GAAU,MAAA;AAEvD,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,IAC5B;AAEA,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,kBAAA,CAAmB,SAAS,CAAA;AAAA,IAC9B;AAEA,IAAA,QAAA,GAAW,SAAS,CAAA;AAEpB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,eAAA,CAAgB,WAAW,CAAA;AAAA,IAC7B;AAAA,EACF,CAAA;AAEA,EAAA,uBACEjH,GAAAA;AAAA,IAAC,MAAA,CAAO,MAAA;AAAA,IAAP;AAAA,MACE,GAAG,KAAA;AAAA,MACH,GAAG,sBAAA;AAAA,MACJ,YAAA,EAAY,WAAA;AAAA,MACZ,cAAA,EAAc,MAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACT,uKAAA;AAAA,QACA,0HAAA;AAAA,QACA,8CAAA;AAAA,QACA,0IAAA;AAAA,QACA,kDAAA;AAAA,QACA,+BAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MAET,GAAA;AAAA,MACA,KAAA,EAAO,mBAAA,CAAoB,IAAA,EAAM,KAAK,CAAA;AAAA,MACtC,UAAA,EAAY,eAAA;AAAA,MACZ,IAAA;AAAA,MAEA,QAAA,kBAAAD,IAAAA;AAAA,QAAC,MAAA,CAAO,GAAA;AAAA,QAAP;AAAA,UACC,OAAA,EAAS,EAAE,MAAA,EAAQ,MAAA,GAAS,MAAM,CAAA,EAAE;AAAA,UACpC,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAU,uDAAA;AAAA,UACV,IAAA,EAAK,MAAA;AAAA,UACL,OAAA,EAAS,KAAA;AAAA,UACT,MAAA,EAAO,cAAA;AAAA,UACP,aAAA,EAAc,OAAA;AAAA,UACd,WAAA,EAAa,kBAAkB,IAAA,CAAK,WAAA;AAAA,UACpC,UAAA;AAAA,UACA,OAAA,EAAQ,WAAA;AAAA,UAER,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAI,MAAA,EACR,QAAA,EAAA;AAAA,8BAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,MAAA,EAAO,KAAA,EAAM,MAAA,EAAO,CAAA,EAAE,GAAA,EAAI,CAAA,EAAE,GAAA,EAAI,CAAA;AAAA,8BAC1DA,GAAAA;AAAA,gBAAC,MAAA,CAAO,MAAA;AAAA,gBAAP;AAAA,kBACC,OAAA,EAAS,EAAE,EAAA,EAAI,MAAA,GAAS,KAAK,EAAA,EAAI,EAAA,EAAI,MAAA,GAAS,CAAA,GAAI,CAAA,EAAE;AAAA,kBACpD,IAAA,EAAK,OAAA;AAAA,kBACL,OAAA,EAAS,KAAA;AAAA,kBACT,CAAA,EAAG,kBAAkB,IAAA,CAAK,UAAA;AAAA,kBAC1B;AAAA;AAAA;AACF,aAAA,EACF,CAAA;AAAA,4BAEAA,GAAAA;AAAA,cAAC,MAAA,CAAO,MAAA;AAAA,cAAP;AAAA,gBACC,OAAA,EAAS;AAAA,kBACP,GAAG,MAAA,GAAS,iBAAA,CAAkB,IAAA,CAAK,UAAA,GAAa,kBAAkB,IAAA,CAAK;AAAA,iBACzE;AAAA,gBACA,EAAA,EAAI,kBAAkB,IAAA,CAAK,MAAA;AAAA,gBAC3B,EAAA,EAAI,kBAAkB,IAAA,CAAK,MAAA;AAAA,gBAC3B,IAAA,EAAK,cAAA;AAAA,gBACL,OAAA,EAAS,KAAA;AAAA,gBACT,IAAA,EAAM,QAAQ,MAAM,CAAA,CAAA,CAAA;AAAA,gBACpB,MAAA,EAAO,MAAA;AAAA,gBACP;AAAA;AAAA,aACF;AAAA,4BAEAD,IAAAA;AAAA,cAAC,MAAA,CAAO,CAAA;AAAA,cAAP;AAAA,gBACC,OAAA,EAAS;AAAA,kBACP,OAAA,EAAS,SAAS,CAAA,GAAI,CAAA;AAAA,kBACtB,MAAA,EAAQ,SAAS,GAAA,GAAM,CAAA;AAAA,kBACvB,KAAA,EAAO,SAAS,CAAA,GAAI;AAAA,iBACtB;AAAA,gBACA,OAAA,EAAS,KAAA;AAAA,gBACT,KAAA,EAAO,EAAE,eAAA,EAAiB,WAAA,EAAY;AAAA,gBACtC,UAAA;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAC,GAAAA,CAAC,UAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,CAAA;AAAA,kCACpCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,kCACtCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,kCACpCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,kCACtCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,MAAA,EAAO,IAAG,MAAA,EAAO,EAAA,EAAG,MAAA,EAAO,EAAA,EAAG,MAAA,EAAO,CAAA;AAAA,kCAC9CA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,OAAA,EAAQ,IAAG,OAAA,EAAQ,EAAA,EAAG,MAAA,EAAO,EAAA,EAAG,MAAA,EAAO,CAAA;AAAA,kCAChDA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,MAAA,EAAO,IAAG,MAAA,EAAO,EAAA,EAAG,OAAA,EAAQ,EAAA,EAAG,OAAA,EAAQ,CAAA;AAAA,kCAChDA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,OAAA,EAAQ,IAAG,OAAA,EAAQ,EAAA,EAAG,OAAA,EAAQ,EAAA,EAAG,OAAA,EAAQ;AAAA;AAAA;AAAA;AACpD;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAEnB,IAAM,oBAAA,GAAuB;ACxPpC,IAAM,mBAAA,GAAsB,IAAA;AAC5B,IAAI,aAAA,GAAgB,CAAA;AAEpB,IAAM,iBAAA,GAAoB;AAAA,EACxB,KAAA,EACE,2IAAA;AAAA,EACF,KAAA,EACE,2GAAA;AAAA,EACF,WAAA,EACE,sGAAA;AAAA,EACF,YAAA,EACE,mKAAA;AAAA,EACF,YAAA,EACE,yJAAA;AAAA,EACF,WAAA,EACE,8KAAA;AAAA,EACF,OAAA,EAAS,mDAAA;AAAA,EACT,KAAA,EAAO,+DAAA;AAAA,EACP,OAAA,EAAS,mDAAA;AAAA,EACT,IAAA,EAAM,0CAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,gBAAgB,KAAA,EAA6B;AACpD,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,CAAA,EAAG,WAAA,CAAY,KAAK,CAAA,EAAA,CAAA;AAAA,IACrC,gBAAA,EAAkB,CAAA,EAAG,WAAA,CAAY,MAAM,CAAA,EAAA,CAAA;AAAA,IACvC,kBAAkB,WAAA,CAAY,MAAA;AAAA,IAC9B,uBAAA,EAAyB,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,MAAM,CAAA,EAAA,CAAA;AAAA,IACrD,0BAAA,EAA4B,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC1D,0BAAA,EAA4B,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC1D,oBAAA,EAAsB,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,SAAS,CAAA,EAAA,CAAA;AAAA,IACzD,0BAAA,EAA4B,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,eAAe,CAAA,EAAA,CAAA;AAAA,IACrE,qBAAA,EAAuB,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,UAAU,CAAA,EAAA,CAAA;AAAA,IAC3D,sBAAA,EAAwB,YAAY,UAAA,CAAW,WAAA;AAAA,IAC/C,yBAAA,EAA2B,CAAA,EAAG,WAAA,CAAY,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACzD,uBAAA,EAAyB,YAAY,MAAA,CAAO,MAAA;AAAA,IAC5C,GAAG;AAAA,GACL;AACF;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO,MAAA,CAAO,iBAAA;AAAA,EAChB;AAEA,EAAA,OAAO,aAAa,IAAA,GAAO,WAAA,CAAY,QAAA,CAAS,IAAA,GAAO,YAAY,QAAA,CAAS,OAAA,CAAA;AAC9E;AAEA,SAAS,gBAAgB,EAAE,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,IAAG,EAAgC;AAC7F,EAAA,MAAM,YAAA,GAA8B;AAAA,IAClC,QAAA,EAAU,eAAA,CAAgB,EAAE,QAAA,EAAU,UAAU;AAAA,GAClD;AAEA,EAAA,IAAI,OAAO,MAAA,EAAW;AACpB,IAAA,YAAA,CAAa,EAAA,GAAK,EAAA;AAAA,EACpB;AAEA,EAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,IAAA,YAAA,CAAa,WAAA,GAAc,WAAA;AAAA,EAC7B;AAEA,EAAA,OAAO,YAAA;AACT;AAEA,SAAS,kBAAkB,YAAA,EAA4C;AACrE,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,YAAY,QAAA,CAAS,OAAA;AAAA,IAC/B,GAAG,YAAA;AAAA,IACH,UAAA,EAAY;AAAA,MACV,GAAG,iBAAA;AAAA,MACH,GAAG,YAAA,EAAc;AAAA;AACnB,GACF;AACF;AAEA,SAAS,aAAA,GAAgB;AACvB,EAAA,aAAA,IAAiB,CAAA;AACjB,EAAA,OAAO,iBAAiB,aAAa,CAAA,CAAA;AACvC;AAEO,SAAS,OAAA,CAAQ;AAAA,EACtB,QAAA,GAAW,cAAA;AAAA,EACX,UAAA,GAAa,mBAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,KAAA,GAAQ,QAAA;AAAA,EACR,aAAA,GAAgB,YAAY,KAAA,CAAM,aAAA;AAAA,EAClC,GAAA,GAAM,YAAY,KAAA,CAAM,GAAA;AAAA,EACxB,MAAA,GAAS,YAAY,KAAA,CAAM,MAAA;AAAA,EAC3B,YAAA,GAAe,YAAY,KAAA,CAAM,YAAA;AAAA,EACjC,kBAAA,GAAqB,eAAA;AAAA,EACrB,YAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,GAAkB,EAAC,EAAG;AACpB,EAAA,uBACEA,GAAAA;AAAA,IAACkH,SAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,YAAA,EAAc,kBAAkB,YAAY,CAAA;AAAA,MAC5C,KAAA,EAAO,gBAAgB,KAAK,CAAA;AAAA,MAC3B,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,SAAA,GAA6B;AAC3C,EAAA,MAAM,OAAA,GAAgBC,OAAA,CAAA,WAAA;AAAA,IACpB,CAAC;AAAA,MACC,IAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,KAAoB;AAClB,MAAA,MAAM,YAAA,GAAe,YAAA,IAAgB,MAAA,GAAU,EAAA,IAAM,eAAc,GAAK,EAAA;AACxE,MAAA,MAAM,YAAA,GAA8B;AAAA,QAClC,UAAU,eAAA,CAAgB;AAAA,UACxB,QAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA,EAAM,QAAQ,YAAY;AAAA,SAC3B;AAAA,OACH;AAEA,MAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,QAAA,YAAA,CAAa,EAAA,GAAK,YAAA;AAAA,MACpB;AAEA,MAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,QAAA,YAAA,CAAa,WAAA,GAAc,WAAA;AAAA,MAC7B;AAEA,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,YAAA,CAAa,MAAA,GAAS;AAAA,UACpB,KAAA,EAAO,MAAA;AAAA,UACP,SAAS,MAAM;AACb,YAAA,YAAA,EAAa;AACb,YAAAC,KAAA,CAAY,QAAQ,YAAY,CAAA;AAAA,UAClC;AAAA,SACF;AAAA,MACF,WAAW,MAAA,EAAQ;AACjB,QAAA,YAAA,CAAa,MAAA,GAAS;AAAA,UACpB,KAAA,EAAO,MAAA;AAAA,UACP,SAAS,MAAM;AACb,YAAA,QAAA,IAAW;AACX,YAAAA,KAAA,CAAY,QAAQ,YAAY,CAAA;AAAA,UAClC;AAAA,SACF;AAAA,MACF;AAEA,MAAA,OAAOA,KAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,YAAY,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,UAAgBD,OAAA,CAAA,WAAA,CAAY,CAAC,IAAA,EAAuB,OAAA,GAAwB,EAAC,KAAM;AACvF,IAAA,OAAOC,KAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,eAAA,CAAgB,OAAO,CAAC,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAgBD,OAAA,CAAA,WAAA,CAAY,CAAC,IAAA,EAAuB,OAAA,GAAwB,EAAC,KAAM;AACvF,IAAA,OAAOC,KAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,eAAA,CAAgB,OAAO,CAAC,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAcD,OAAA,CAAA,WAAA,CAAY,CAAC,IAAA,EAAuB,OAAA,GAAwB,EAAC,KAAM;AACrF,IAAA,OAAOC,KAAA,CAAY,KAAA,CAAM,IAAA,EAAM,eAAA,CAAgB,OAAO,CAAC,CAAA;AAAA,EACzD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,OAAA,GAAgBD,oBAAY,CAAC,EAAA,KAAyBC,MAAY,OAAA,CAAQ,EAAE,CAAA,EAAG,EAAE,CAAA;AAEvF,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;ACnMA,SAAS,cAAc,KAAA,EAAoB;AACzC,EAAA,MAAM,aAAA,GACJ,KAAA,IAAS,kBAAA,GACL,kBAAA,CAAmB,KAAwC,CAAA,GAC3D,KAAA;AAEN,EAAA,OAAO,YAAA,CAAa,MAAM,aAAgD,CAAA;AAC5E;AAEA,SAAS,cAAA,CACP,IAAA,EACA,KAAA,EACA,KAAA,EACA;AACA,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA;AACzC,EAAA,MAAM,WAAA,GAAc,cAAc,KAAK,CAAA;AAEvC,EAAA,OAAO;AAAA,IACL,sBAAA,EAAwB,CAAA,EAAG,UAAA,CAAW,UAAU,CAAA,EAAA,CAAA;AAAA,IAChD,uBAAA,EAAyB,CAAA,EAAG,UAAA,CAAW,WAAW,CAAA,EAAA,CAAA;AAAA,IAClD,qBAAA,EAAuB,CAAA,EAAG,UAAA,CAAW,SAAS,CAAA,EAAA,CAAA;AAAA,IAC9C,0BAAA,EAA4B,CAAA,EAAG,UAAA,CAAW,cAAc,CAAA,EAAA,CAAA;AAAA,IACxD,oBAAA,EAAsB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5C,0BAAA,EAA4B,CAAA,EAAG,UAAA,CAAW,aAAa,CAAA,EAAA,CAAA;AAAA,IACvD,oBAAA,EAAsB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,EAAA,CAAA;AAAA,IAC5C,cAAA,EAAgB,CAAA,EAAG,UAAA,CAAW,GAAG,CAAA,EAAA,CAAA;AAAA,IACjC,iBAAA,EAAmB,CAAA,EAAG,YAAA,CAAa,MAAM,CAAA,EAAA,CAAA;AAAA,IACzC,yBAAyB,YAAA,CAAa,WAAA;AAAA,IACtC,mBAAA,EAAqB,CAAA,EAAG,YAAA,CAAa,MAAA,CAAO,QAAQ,CAAA,EAAA,CAAA;AAAA,IACpD,iBAAA,EAAmB,aAAa,MAAA,CAAO,MAAA;AAAA,IACvC,qBAAqB,WAAA,CAAY,OAAA;AAAA,IACjC,sBAAsB,WAAA,CAAY,QAAA;AAAA,IAClC,yBAAyB,WAAA,CAAY,WAAA;AAAA,IACrC,kBAAkB,WAAA,CAAY,KAAA;AAAA,IAC9B,oBAAoB,WAAA,CAAY,MAAA;AAAA,IAChC,qBAAqB,WAAA,CAAY,OAAA;AAAA,IACjC,GAAG;AAAA,GACL;AACF;AAEA,IAAM,SAAS,CAAC;AAAA,EACd,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,EAAmB,cAAA;AAAA,EACnB,OAAA,EAAS,WAAA;AAAA,EACT,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,cAAA,GAAiB,KAAA;AAAA,EACjB,SAAA,GAAY,aAAA;AAAA,EACZ,QAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,QAAA;AAAA,EACA,eAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAuE;AACrE,EAAA,MAAM,eAAe,WAAA,KAAgB,MAAA;AACrC,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAUC,iBAAS,cAAc,CAAA;AAC3E,EAAA,MAAM,cAAoBA,OAAA,CAAA,KAAA,EAAM;AAChC,EAAA,MAAM,UAAU,EAAA,IAAM,WAAA;AACtB,EAAA,MAAM,OAAA,GAAU,eAAe,WAAA,GAAc,eAAA;AAC7C,EAAA,MAAM,kBAAkB,QAAA,IAAY,IAAA;AACpC,EAAA,MAAM,eAAA,GAAkB,SAAA,KAAc,aAAA,GAAgB,aAAA,GAAgB,SAAA;AAEtE,EAAMA,kBAAU,MAAM;AACpB,IAAA,IACE,OAAA,CAAQ,IAAI,QAAA,KAAa,YAAA,IACzB,CAAC,eAAA,IACD,SAAA,KAAc,MAAA,IACd,cAAA,KAAmB,MAAA,EACnB;AACA,MAAA,UAAA,CAAW,OAAA,CAAQ,IAAA;AAAA,QACjB;AAAA,OACF;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,cAAA,EAAgB,eAAe,CAAC,CAAA;AAE/C,EAAA,SAAS,aAAa,KAAA,EAA4C;AAChE,IAAA,MAAM,WAAA,GAAc,MAAM,aAAA,CAAc,OAAA;AAExC,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,kBAAA,CAAmB,WAAW,CAAA;AAAA,IAChC;AAEA,IAAA,eAAA,GAAkB,aAAa,KAAK,CAAA;AACpC,IAAA,QAAA,GAAW,aAAa,KAAK,CAAA;AAAA,EAC/B;AAEA,EAAA,MAAM,kBAAA,GAAqB;AAAA,IACzB,GAAI,mBAAmB,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,cAAc,SAAA,EAAU;AAAA,IAChF,GAAI,cAAA,KAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,mBAAmB,cAAA;AAAe,GAC9E;AACA,EAAA,MAAM,eAAe,YAAA,GAAe,EAAE,OAAA,EAAQ,GAAI,EAAE,cAAA,EAAe;AAEnE,EAAA,MAAM,0BACJtH,IAAAA,CAAC,WAAM,SAAA,EAAU,+BAAA,EAAgC,SAAS,OAAA,EACxD,QAAA,EAAA;AAAA,oBAAAC,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAU,cAAA;AAAA,QACV,QAAA;AAAA,QACA,EAAA,EAAI,OAAA;AAAA,QACJ,QAAA,EAAU,YAAA;AAAA,QACV,IAAA,EAAK,UAAA;AAAA,QACJ,GAAG,kBAAA;AAAA,QACH,GAAG,YAAA;AAAA,QACH,GAAG;AAAA;AAAA,KACN;AAAA,oBACAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,wKAAA;AAAA,UACA,8IAAA;AAAA,UACA,0CAAA;AAAA,UACA,sHAAA;AAAA,UACA,mIAAA;AAAA,UACA,2DAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,4KAAA;AAAA,cACA,0HAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEC,QAAA,EAAA,IAAA,IAAQ,IAAA,oBACPA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,OAAA,GAAU,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,SAAA,EAAU;AAAA;AAAA;AAE3E;AAAA;AACF,GAAA,EACF,CAAA;AAGF,EAAA,MAAM,KAAA,GAAQ,kCACZA,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,mBAAA,EAAmB,WAAA;AAAA,MACnB,OAAA,EAAS,OAAA;AAAA,MACT,SAAA,EAAW,EAAA;AAAA,QACT;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH,GACE,IAAA;AAEJ,EAAA,uBACED,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,+EAAA;AAAA,QACA,WAAW,+BAAA,GAAkC,gBAAA;AAAA,QAC7C;AAAA,OACF;AAAA,MACA,KAAA,EAAO,cAAA,CAAe,IAAA,EAAM,KAAA,EAAO,KAAK,CAAA;AAAA,MAEvC,QAAA,EAAA;AAAA,QAAA,eAAA,KAAoB,aAAA,IAAiB,KAAA;AAAA,QACrC,OAAA;AAAA,QACA,oBAAoB,cAAA,IAAkB;AAAA;AAAA;AAAA,GACzC;AAEJ;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AC/Nd,IAAM,mBAAA,GAAsBG,GAAAA;AAAA,EACjC,6GAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAEO,IAAM,uBAAA,GAA0BA,GAAAA;AAAA,EACrC,seAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,UAAA;AAAA,QACT,EAAA,EAAI,UAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;ACzBA,IAAM,sBAAA,GAA+BoH,sBAAsC,IAAI,CAAA;AAC/E,IAAM,uBAAA,GAAgCA,sBAAuC,IAAI,CAAA;AACjF,IAAM,wBAAA,GAAiCA,OAAA,CAAA,aAAA;AAAA,EACrC;AACF,CAAA;AACA,IAAM,0BAAA,GAAmCA,sBAAmC,MAAS,CAAA;AACrF,IAAM,yBAAA,GAAkCA,sBAAsC,MAAS,CAAA;AACvF,IAAM,sBAAA,GAA+BA,sBAAmC,MAAS,CAAA;AAEjF,SAAS,cAAA,GAAiB;AACxB,EAAA,MAAM,IAAA,GAAaA,YAAI,sBAAsB,CAAA;AAC7C,EAAA,MAAM,KAAA,GAAcA,YAAI,uBAAuB,CAAA;AAC/C,EAAA,MAAM,aAAA,GAAsBA,YAAI,wBAAwB,CAAA;AACxD,EAAA,MAAM,QAAA,GAAiBA,YAAI,0BAA0B,CAAA;AACrD,EAAA,MAAM,OAAA,GAAgBA,YAAI,yBAAyB,CAAA;AACnD,EAAA,MAAM,IAAA,GAAaA,YAAI,sBAAsB,CAAA;AAE7C,EAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,KAAA,KAAU,IAAA,IAAQ,kBAAkB,IAAA,EAAM;AAC7D,IAAA,MAAM,IAAI,MAAM,mEAAmE,CAAA;AAAA,EACrF;AAEA,EAAA,OAAO,EAAE,QAAA,EAAU,aAAA,EAAe,IAAA,EAAM,IAAA,EAAM,OAAO,OAAA,EAAQ;AAC/D;AAaA,IAAM,cAAc,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA,EAAO,eAAA;AAAA,EACP,YAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA0E;AACxE,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAUA,OAAA,CAAA,QAAA;AAAA,IACtD,iBAAiB,MAAA,GAAY,YAAA,GAAe,IAAA,KAAS,QAAA,GAAW,KAAK;AAAC,GACxE;AAEA,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,eAAe,eAAA,GAAkB,iBAAA;AAE/C,EAAA,SAAS,uBAAuB,QAAA,EAA4B;AAC1D,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,oBAAA,CAAqB,QAAQ,CAAA;AAAA,IAC/B;AACA,IAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,EAC1B;AAEA,EAAA,uBACEtH,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,OAAA,EAAS,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAC7E,QAAA,kBAAAA,GAAAA,CAAC,sBAAA,CAAuB,QAAA,EAAvB,EAAgC,KAAA,EAAO,IAAA,EACtC,QAAA,kBAAAA,GAAAA,CAAC,uBAAA,CAAwB,QAAA,EAAxB,EAAiC,KAAA,EAChC,0BAAAA,GAAAA,CAAC,wBAAA,CAAyB,QAAA,EAAzB,EAAkC,KAAA,EAAO,sBAAA,EACxC,QAAA,kBAAAA,GAAAA,CAAC,0BAAA,CAA2B,QAAA,EAA3B,EAAoC,KAAA,EAAO,QAAA,EAC1C,QAAA,kBAAAA,GAAAA,CAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,OAAA,EACzC,QAAA,kBAAAA,GAAAA,CAAC,sBAAA,CAAuB,QAAA,EAAvB,EAAgC,KAAA,EAAO,IAAA,EACrC,QAAA,EACH,CAAA,EACF,CAAA,EACF,CAAA,EACF,CAAA,EACF,GACF,CAAA,EACF,CAAA;AAEJ;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAQ1B,IAAM,kBAAkB,CAAC;AAAA,EACvB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAiF;AAC/E,EAAA,MAAM,UAAU,cAAA,EAAe;AAC/B,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,QAAA,IAAY,KAAA,CAAM,QAAA;AAC7C,EAAA,MAAM,UAAA,GACJ,OAAA,CAAQ,IAAA,KAAS,QAAA,GACb,QAAQ,KAAA,KAAU,KAAA,GAClB,KAAA,CAAM,OAAA,CAAQ,QAAQ,KAAK,CAAA,IAAK,OAAA,CAAQ,KAAA,CAAM,SAAS,KAAK,CAAA;AAElE,EAAA,SAAS,oBAAoB,KAAA,EAA4C;AACvE,IAAA,IAAI,UAAA,EAAY;AAEhB,IAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,MAAA,OAAA,CAAQ,aAAA,CAAc,UAAA,GAAa,EAAA,GAAK,KAAK,CAAA;AAAA,IAC/C,CAAA,MAAO;AACL,MAAA,MAAM,YAAA,GAAe,MAAM,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,GAAI,OAAA,CAAQ,QAAQ,EAAC;AACrE,MAAA,OAAA,CAAQ,aAAA;AAAA,QACN,UAAA,GACI,YAAA,CAAa,MAAA,CAAO,CAAC,YAAA,KAAiB,YAAA,KAAiB,KAAK,CAAA,GAC5D,CAAC,GAAG,YAAA,EAAc,KAAK;AAAA,OAC7B;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA,EACvB;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,QAAA,EAAU,UAAA;AAAA,MACV,YAAA,EAAY,aAAa,IAAA,GAAO,KAAA;AAAA,MAChC,cAAA,EAAc,UAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACT,uBAAA,CAAwB;AAAA,UACtB,OAAA,EAAS,WAAW,OAAA,CAAQ,OAAA;AAAA,UAC5B,IAAA,EAAM,QAAQ,OAAA,CAAQ;AAAA,SACvB,CAAA;AAAA,QACD,SAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,mBAAA;AAAA,MACR,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AC5H9B,IAAM,WAAA,GAAc4D,cAA2C,MAAS,CAAA;AAExE,IAAM,UAAU,MAAM;AACpB,EAAA,MAAM,OAAA,GAAUC,IAAI,WAAW,CAAA;AAC/B,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,EACtE;AACA,EAAA,OAAO,OAAA;AACT,CAAA;AASA,IAAM,eAAA,GAAkBD,cAA+C,MAAS,CAAA;AAEhF,IAAM,cAAc,MAAM;AACxB,EAAA,MAAM,OAAA,GAAUC,IAAI,eAAe,CAAA;AACnC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,EACtE;AACA,EAAA,OAAO,OAAA;AACT,CAAA;AAgBO,IAAM,eAAe,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,qBAAqB,EAAC;AAAA,EACtB,SAAA,GAAY,IAAA;AAAA,EACZ,SAAA,GAAY,IAAA;AAAA,EACZ,UAAA,GAAa,IAAA;AAAA,EACb,WAAA,GAAc,KAAA;AAAA,EACd,WAAA;AAAA,EACA,iBAAA;AAAA,EACA,MAAA,GAAS,EAAA;AAAA,EACT,aAAA,GAAgB,IAAA;AAAA,EAChB;AACF,CAAA,KAAyB;AACvB,EAAA,MAAM,kBAAA,GAAqB,kBAAiB,IAAK,KAAA;AACjD,EAAA,MAAM,CAAC,aAAa,cAAc,CAAA,GAAI3C,SAAsB,IAAI,GAAA,CAAI,kBAAkB,CAAC,CAAA;AACvF,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,IAAIA,QAAAA,CAAmB,WAAA,IAAe,EAAE,CAAA;AAE1F,EAAA,MAAM,YAAA,GAAe,WAAA,KAAgB,MAAA,IAAa,iBAAA,KAAsB,MAAA;AACxE,EAAA,MAAM,kBAAA,GAAqB,eAAe,WAAA,GAAc,mBAAA;AAExD,EAAA,MAAM,cAAA,GAAiBqG,WAAAA,CAAY,CAAC,MAAA,KAAmB;AACrD,IAAA,cAAA,CAAe,CAAC,IAAA,KAAS;AACvB,MAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,IAAI,CAAA;AAC3B,MAAA,IAAI,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA,EAAG;AACtB,QAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,MACtB,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,IAAI,MAAM,CAAA;AAAA,MACnB;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkBA,WAAAA;AAAA,IACtB,CAAC,MAAA,EAAgB,OAAA,GAAU,KAAA,KAAU;AACnC,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,YAAA;AAEJ,MAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,QAAA,YAAA,GAAe,kBAAA,CAAmB,QAAA,CAAS,MAAM,CAAA,GAC7C,mBAAmB,MAAA,CAAO,CAAC,EAAA,KAAO,EAAA,KAAO,MAAM,CAAA,GAC/C,CAAC,GAAG,oBAAoB,MAAM,CAAA;AAAA,MACpC,CAAA,MAAO;AACL,QAAA,YAAA,GAAe,mBAAmB,QAAA,CAAS,MAAM,IAAI,EAAC,GAAI,CAAC,MAAM,CAAA;AAAA,MACnE;AAEA,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,iBAAA,GAAoB,YAAY,CAAA;AAAA,MAClC,CAAA,MAAO;AACL,QAAA,sBAAA,CAAuB,YAAY,CAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,WAAA,EAAa,kBAAA,EAAoB,cAAc,iBAAiB;AAAA,GAC/E;AAEA,EAAA,uBACEvH,GAAAA;AAAA,IAAC,WAAA,CAAY,QAAA;AAAA,IAAZ;AAAA,MACC,KAAA,EAAO;AAAA,QACL,WAAA;AAAA,QACA,WAAA,EAAa,kBAAA;AAAA,QACb,cAAA;AAAA,QACA,eAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,WAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAA;AAAA,QACA,YAAA,EAAc;AAAA,OAChB;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA,CAAO,GAAA;AAAA,QAAP;AAAA,UACC,OAAA,EAAS,kBAAA,GAAqB,EAAE,OAAA,EAAS,CAAA,KAAM,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE;AAAA,UAClE,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,UACjC,OAAA,EAAS,kBAAA,GAAqB,EAAE,OAAA,EAAS,CAAA,KAAM,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA,EAAG,EAAA,EAAG;AAAA,UACnE,UAAA,EAAY,kBAAA,GAAqB,EAAE,QAAA,EAAU,CAAA,KAAM,EAAE,QAAA,EAAU,GAAA,EAAK,IAAA,EAAM,SAAA,EAAU;AAAA,UAEnF;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAIO,IAAM,WAAW,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,OAAM,qBACvDA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA,EAAI,GAAG,OACvC,QAAA,EACH;AAWK,IAAM,WAAW,CAAC;AAAA,EACvB,MAAA,EAAQ,cAAA;AAAA,EACR,KAAA,GAAQ,CAAA;AAAA,EACR,MAAA,GAAS,KAAA;AAAA,EACT,aAAa,EAAC;AAAA,EACd,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,EAAS,QAAA;AAAA,EACT,GAAG;AACL,CAAA,KAAqB;AACnB,EAAA,MAAM,cAAcsB,KAAAA,EAAM;AAC1B,EAAA,MAAM,SAAS,cAAA,IAAkB,WAAA;AAGjC,EAAA,MAAM,cAAc,KAAA,KAAU,CAAA,GAAI,EAAC,GAAI,CAAC,GAAG,UAAU,CAAA;AACrD,EAAA,IAAI,KAAA,GAAQ,CAAA,IAAK,UAAA,CAAW,MAAA,GAAS,QAAQ,CAAA,EAAG;AAE9C,IAAA,OAAO,WAAA,CAAY,MAAA,GAAS,KAAA,GAAQ,CAAA,EAAG;AACrC,MAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAAA,IACxB;AAAA,EACF;AACA,EAAA,IAAI,QAAQ,CAAA,EAAG;AACb,IAAA,WAAA,CAAY,KAAA,GAAQ,CAAC,CAAA,GAAI,MAAA;AAAA,EAC3B;AAEA,EAAA,uBACEtB,GAAAA;AAAA,IAAC,eAAA,CAAgB,QAAA;AAAA,IAAhB;AAAA,MACC,KAAA,EAAO;AAAA,QACL,MAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA,EAAY;AAAA,OACd;AAAA,MAEA,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,eAAe,SAAS,CAAA,EAAI,GAAG,KAAA,EAC/C,QAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAIO,IAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4B;AAC1B,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,iBAAiB,MAAA,EAAQ,YAAA,KAAiB,OAAA,EAAQ;AACvF,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAM,GAAI,WAAA,EAAY;AACtC,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,QAAA,CAAS,MAAM,CAAA;AAE9C,EAAA,uBACED,IAAAA;AAAA,IAAC,MAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,sLAAA;AAAA,QACA,oBAAA;AAAA,QACA,UAAA,IAAc,cAAA;AAAA,QACd;AAAA,OACF;AAAA,MACA,OAAA,EAAS,CAAC,CAAA,KAAkC;AAC1C,QAAA,cAAA,CAAe,MAAM,CAAA;AACrB,QAAA,eAAA,CAAgB,MAAA,EAAQ,CAAA,CAAE,OAAA,IAAW,CAAA,CAAE,OAAO,CAAA;AAC9C,QAAA,OAAA,GAAU,CAAC,CAAA;AAAA,MACb,CAAA;AAAA,MACA,OAAO,EAAE,WAAA,EAAa,KAAA,IAAS,MAAA,IAAU,KAAK,CAAA,EAAE;AAAA,MAC/C,GAAI,CAAC,YAAA,GAAe,EAAE,UAAU,EAAE,KAAA,EAAO,IAAA,EAAM,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI,EAAE,KAAM,EAAC;AAAA,MACpF,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,IAAC,SAAA,EAAA,EAAU,CAAA;AAAA,QACV;AAAA;AAAA;AAAA,GACH;AAEJ;AAEO,IAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,EAAE,SAAA,EAAW,MAAA,EAAO,GAAI,OAAA,EAAQ;AACtC,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,UAAA,KAAe,WAAA,EAAY;AAElD,EAAA,IAAI,CAAC,SAAA,IAAa,KAAA,KAAU,CAAA,EAAG;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EAEZ,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,KAAA,KAAU;AAC3C,MAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,KAAK,CAAA,KAAM,IAAA;AAC7C,MAAA,IAAI,cAAA,IAAkB,KAAA,KAAU,KAAA,GAAQ,CAAA,EAAG;AACzC,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,uBACEC,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,mDAAA;AAAA,UAEV,KAAA,EAAO;AAAA,YACL,IAAA,EAAM,KAAA,IAAS,MAAA,IAAU,CAAA,CAAA,GAAK,EAAA;AAAA,YAC9B,OAAA,EAAS,iBAAiB,MAAA,GAAS;AAAA;AACrC,SAAA;AAAA,QAJK,MAAM,QAAA;AAAS,OAKtB;AAAA,IAEJ,CAAC,CAAA;AAAA,oBAGDA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,4CAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,IAAA,EAAA,CAAO,KAAA,GAAQ,CAAA,KAAM,MAAA,IAAU,CAAA,CAAA,GAAK,EAAA;AAAA,UACpC,KAAA,EAAA,CAAQ,UAAU,CAAA,IAAK,CAAA;AAAA,UACvB,SAAA,EAAW;AAAA;AACb;AAAA,KACF;AAAA,IAGC,0BACCA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,0CAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,IAAA,EAAA,CAAO,KAAA,GAAQ,CAAA,KAAM,MAAA,IAAU,CAAA,CAAA,GAAK,EAAA;AAAA,UACpC,MAAA,EAAQ;AAAA;AACV;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AAMO,IAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4B;AAC1B,EAAA,MAAM,EAAE,aAAA,EAAe,WAAA,EAAa,YAAA,KAAiB,OAAA,EAAQ;AAC7D,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,EAAY;AAC/B,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA;AAEzC,EAAA,uBACEA,IAAC,eAAA,EAAA,EAAgB,OAAA,EAAS,CAAC,YAAA,EACxB,QAAA,EAAA,WAAA,IAAe,8BACdA,GAAAA;AAAA,IAAC,MAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,OAAA,EAAS,EAAE,MAAA,EAAQ,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,MACtC,SAAA,EAAU,iBAAA;AAAA,MACV,IAAA,EAAM,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MAC9B,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACjC,UAAA,EAAY;AAAA,QACV,QAAA,EAAU,aAAA,IAAiB,CAAC,YAAA,GAAe,GAAA,GAAM,CAAA;AAAA,QACjD,IAAA,EAAM;AAAA,OACR;AAAA,MAEA,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA,CAAO,GAAA;AAAA,QAAP;AAAA,UACC,OAAA,EAAS,eAAe,EAAE,OAAA,EAAS,GAAE,GAAI,EAAE,GAAG,CAAA,EAAE;AAAA,UAChD,SAAA;AAAA,UACA,IAAA,EAAM,eAAe,EAAE,OAAA,EAAS,GAAE,GAAI,EAAE,GAAG,GAAA,EAAI;AAAA,UAC/C,OAAA,EAAS,eAAe,EAAE,OAAA,EAAS,GAAE,GAAI,EAAE,GAAG,GAAA,EAAI;AAAA,UAClD,UAAA,EAAY;AAAA,YACV,QAAA,EAAU,aAAA,IAAiB,CAAC,YAAA,GAAe,GAAA,GAAM,CAAA;AAAA,YACjD,KAAA,EAAO,aAAA,IAAiB,CAAC,YAAA,GAAe,GAAA,GAAM;AAAA,WAChD;AAAA,UACC,GAAG,KAAA;AAAA,UAEH;AAAA;AAAA;AACH;AAAA,GACF,EAEJ,CAAA;AAEJ;AAMO,IAAM,eAAe,CAAC;AAAA,EAC3B,WAAA,GAAc,KAAA;AAAA,EACd,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAyB;AACvB,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,YAAA,KAAiB,OAAA,EAAQ;AAC9D,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,EAAY;AAC/B,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA;AAEzC,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,EACvC;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,MAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,OAAA,EAAS,EAAE,MAAA,EAAQ,UAAA,GAAa,KAAK,CAAA,EAAE;AAAA,MACvC,SAAA,EAAW,EAAA,CAAG,8DAAA,EAAgE,SAAS,CAAA;AAAA,MACvF,OAAA,EAAS,CAAC,CAAA,KAAkC;AAC1C,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,cAAA,CAAe,MAAM,CAAA;AACrB,QAAA,OAAA,GAAU,CAAC,CAAA;AAAA,MACb,CAAA;AAAA,MACA,UAAA,EAAY,YAAA,GAAe,EAAE,QAAA,EAAU,CAAA,KAAM,EAAE,QAAA,EAAU,GAAA,EAAK,IAAA,EAAM,WAAA,EAAY;AAAA,MAC/E,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAACe,YAAAA,EAAA,EAAa,WAAU,+BAAA,EAAgC;AAAA;AAAA,GAC1D;AAEJ;AAOO,IAAM,QAAA,GAAW,CAAC,EAAE,IAAA,EAAM,cAAc,KAAA,EAAO,SAAA,EAAW,GAAG,KAAA,EAAM,KAAqB;AAC7F,EAAA,MAAM,EAAE,SAAA,EAAW,WAAA,EAAa,YAAA,KAAiB,OAAA,EAAQ;AACzD,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,EAAY;AAC/B,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA;AAEzC,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,cAAA,GAAiB,MACrB,WAAA,GACE,UAAA,mBACEf,GAAAA,CAAC,UAAA,EAAA,EAAW,WAAU,SAAA,EAAU,CAAA,mBAEhCA,GAAAA,CAACwH,YAAA,EAAA,EAAO,WAAU,SAAA,EAAU,CAAA,mBAG9BxH,GAAAA,CAACyH,IAAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAG9B,EAAA,uBACEzH,GAAAA;AAAA,IAAC,MAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,UAAA,EAAY,eAAe,EAAE,QAAA,EAAU,GAAE,GAAI,EAAE,UAAU,IAAA,EAAK;AAAA,MAC7D,GAAI,CAAC,YAAA,GAAe,EAAE,UAAA,EAAY,EAAE,KAAA,EAAO,GAAA,EAAI,EAAE,GAAI,EAAC;AAAA,MACtD,GAAG,KAAA;AAAA,MAEH,kBAAQ,cAAA;AAAe;AAAA,GAC1B;AAEJ;AAIO,IAAM,YAAY,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBAC9CA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,8BAAA,EAAgC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO","file":"canonical.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import type * as React from \"react\";\n\nexport type PrimitiveProps<T> = React.PropsWithChildren<T & { className?: string | undefined }>;\n\nexport type PrimitiveComponent<TElement, TProps> = React.ForwardRefExoticComponent<\n PrimitiveProps<TProps> & React.RefAttributes<TElement>\n>;\n\n/**\n * Resolve the HTMLElement type for a given intrinsic element tag.\n */\ntype ElementForTag<E extends keyof React.JSX.IntrinsicElements> = E extends \"button\"\n ? HTMLButtonElement\n : E extends \"span\"\n ? HTMLSpanElement\n : E extends \"img\"\n ? HTMLImageElement\n : E extends \"label\"\n ? HTMLLabelElement\n : E extends \"input\"\n ? HTMLInputElement\n : E extends \"a\"\n ? HTMLAnchorElement\n : E extends \"p\"\n ? HTMLParagraphElement\n : E extends \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\"\n ? HTMLHeadingElement\n : HTMLElement;\n\n/**\n * Workaround for Radix UI types not resolving HTML element props (className,\n * children, etc.) with React 19 + exactOptionalPropertyTypes.\n *\n * The optional second type parameter `Extra` allows preserving Radix-specific\n * props (e.g. `asChild`, `align`, `sideOffset`) that are not standard HTML attrs.\n *\n * Usage:\n * const Header = withHtmlProps<\"h3\">(AccordionPrimitive.Header);\n * const Trigger = withHtmlProps<\"button\", { asChild?: boolean }>(DialogPrimitive.Trigger);\n * const Content = withHtmlProps<\"div\", { align?: string; sideOffset?: number }>(PopoverPrimitive.Content);\n */\n\nexport function withHtmlProps<E extends keyof React.JSX.IntrinsicElements, Extra = object>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Component: any,\n): React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<E> & Extra & React.RefAttributes<ElementForTag<E>>\n> {\n return Component;\n}\n","\"use client\";\n\nimport { Accordion as BaseAccordion } from \"@base-ui/react/accordion\";\nimport { Plus } from \"@nebutra/icons\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { withHtmlProps } from \"../utils/primitive-props\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype AccordionSize = \"default\" | \"small\";\n\n// Radix types don't resolve HTML props (className, children) with React 19 +\n// exactOptionalPropertyTypes. Create properly-typed aliases for JSX usage.\nconst RadixItem = withHtmlProps<\"div\">(BaseAccordion.Item);\nconst RadixHeader = withHtmlProps<\"h3\">(BaseAccordion.Header);\nconst RadixTrigger = withHtmlProps<\"button\">(BaseAccordion.Trigger);\nconst RadixContent = withHtmlProps<\"div\">(BaseAccordion.Panel);\n\n// =============================================================================\n// Root\n// =============================================================================\n\nconst Accordion = BaseAccordion.Root;\n\n// =============================================================================\n// Item\n// =============================================================================\n\nconst AccordionItem = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<\"div\"> & { value: string; disabled?: boolean } & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <RadixItem\n ref={ref}\n className={cn(\"border-b border-border/70 last:border-b-0\", className)}\n {...props}\n />\n);\nAccordionItem.displayName = \"AccordionItem\";\n\n// =============================================================================\n// Trigger\n// =============================================================================\n\nconst AccordionTrigger = ({\n className,\n children,\n size = \"default\",\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<\"button\"> & {\n /** Size variant matching Geist Collapse */\n size?: AccordionSize;\n} & { ref?: React.Ref<HTMLButtonElement> | undefined }) => (\n <RadixHeader className=\"flex\">\n <RadixTrigger\n ref={ref}\n className={cn(\n \"font-medium flex flex-1 items-center justify-between transition-[color,box-shadow] duration-flow ease-out hover:text-muted-foreground focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-none [&[data-panel-open]>svg]:rotate-45\",\n size === \"small\" ? \"py-2.5 text-sm\" : \"py-4 text-[15px]\",\n className,\n )}\n {...props}\n >\n {children}\n <Plus\n className={cn(\n \"shrink-0 text-muted-foreground transition-transform duration-flow ease-out\",\n size === \"small\" ? \"size-3.5\" : \"size-4\",\n )}\n />\n </RadixTrigger>\n </RadixHeader>\n);\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\n// =============================================================================\n// Content\n// =============================================================================\n\nconst AccordionContent = ({\n className,\n children,\n size = \"default\",\n keepMounted,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<\"div\"> & {\n /** Size variant matching Geist Collapse */\n size?: AccordionSize;\n /**\n * Keep the panel content in the DOM when closed. Lets browser find-in-page\n * and search crawlers hit hidden content. Forwarded to Base UI's Panel.\n * @default false (Base UI's default)\n */\n keepMounted?: boolean;\n} & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <RadixContent\n ref={ref}\n {...(keepMounted ? { keepMounted: true } : {})}\n className=\"text-sm leading-relaxed data-[ending-style]:animate-accordion-up data-[open]:animate-accordion-down overflow-hidden text-muted-foreground transition-[height,opacity] duration-flow ease-out\"\n {...props}\n >\n <div className={cn(size === \"small\" ? \"pb-2.5 pt-0\" : \"pb-4 pt-0\", className)}>{children}</div>\n </RadixContent>\n);\nAccordionContent.displayName = \"AccordionContent\";\n\n// =============================================================================\n// Exports\n// =============================================================================\n\nexport { Accordion, AccordionContent, AccordionItem, type AccordionSize, AccordionTrigger };\n","\"use client\";\n\nimport { Cross as X } from \"@nebutra/icons\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\n\n// =============================================================================\n// Variants\n// =============================================================================\n\nconst alertVariants = cva(\"flex items-stretch w-full gap-2 group-[.toaster]:w-(--width)\", {\n variants: {\n variant: {\n secondary: \"\",\n primary: \"\",\n destructive: \"\",\n success: \"\",\n info: \"\",\n mono: \"\",\n warning: \"\",\n },\n icon: {\n primary: \"\",\n destructive: \"\",\n success: \"\",\n info: \"\",\n warning: \"\",\n },\n appearance: {\n solid: \"\",\n outline: \"\",\n light: \"\",\n stroke: \"text-foreground\",\n },\n size: {\n lg: \"rounded-[var(--radius-lg)] p-4 gap-3 text-base [&>[data-slot=alert-icon]>svg]:size-6 *:data-slot=alert-icon:mt-0.5 [&_[data-slot=alert-close]]:mt-1\",\n md: \"rounded-[var(--radius-lg)] p-3.5 gap-2.5 text-sm [&>[data-slot=alert-icon]>svg]:size-5 *:data-slot=alert-icon:mt-0 [&_[data-slot=alert-close]]:mt-0.5\",\n sm: \"rounded-[var(--radius-md)] px-3 py-2.5 gap-2 text-xs [&>[data-slot=alert-icon]>svg]:size-4 *:data-alert-icon:mt-0.5 [&_[data-slot=alert-close]]:mt-0.25 [&_[data-slot=alert-close]_svg]:size-3.5\",\n },\n },\n compoundVariants: [\n /* Solid */\n {\n variant: \"secondary\",\n appearance: \"solid\",\n className: \"bg-muted text-foreground\",\n },\n {\n variant: \"primary\",\n appearance: \"solid\",\n className: \"bg-primary text-primary-foreground\",\n },\n {\n variant: \"destructive\",\n appearance: \"solid\",\n className: \"bg-destructive text-destructive-foreground\",\n },\n {\n variant: \"success\",\n appearance: \"solid\",\n className:\n \"bg-[var(--color-success, var(--color-green-500))] text-[var(--color-success-foreground, var(--color-white))]\",\n },\n {\n variant: \"info\",\n appearance: \"solid\",\n className:\n \"bg-[var(--color-info, var(--color-violet-600))] text-[var(--color-info-foreground, var(--color-white))]\",\n },\n {\n variant: \"warning\",\n appearance: \"solid\",\n className:\n \"bg-[var(--color-warning, var(--color-yellow-500))] text-[var(--color-warning-foreground, var(--color-white))]\",\n },\n {\n variant: \"mono\",\n appearance: \"solid\",\n className:\n \"bg-muted text-muted-foreground dark:bg-muted dark:text-foreground *:data-slot-[alert=close]:text-muted-foreground\",\n } /* Outline */,\n {\n variant: \"secondary\",\n appearance: \"outline\",\n className:\n \"border border-border bg-background text-foreground [&_[data-slot=alert-close]]:text-foreground\",\n },\n {\n variant: \"primary\",\n appearance: \"outline\",\n className:\n \"border border-border bg-background text-primary [&_[data-slot=alert-close]]:text-foreground\",\n },\n {\n variant: \"destructive\",\n appearance: \"outline\",\n className:\n \"border border-border bg-background text-destructive [&_[data-slot=alert-close]]:text-foreground\",\n },\n {\n variant: \"success\",\n appearance: \"outline\",\n className:\n \"border border-border bg-background text-[var(--color-success, var(--color-green-500))] [&_[data-slot=alert-close]]:text-foreground\",\n },\n {\n variant: \"info\",\n appearance: \"outline\",\n className:\n \"border border-border bg-background text-[var(--color-info, var(--color-violet-600))] [&_[data-slot=alert-close]]:text-foreground\",\n },\n {\n variant: \"warning\",\n appearance: \"outline\",\n className:\n \"border border-border bg-background text-[var(--color-warning, var(--color-yellow-500))] [&_[data-slot=alert-close]]:text-foreground\",\n },\n {\n variant: \"mono\",\n appearance: \"outline\",\n className:\n \"border border-border bg-background text-foreground [&_[data-slot=alert-close]]:text-foreground\",\n } /* Light */,\n {\n variant: \"secondary\",\n appearance: \"light\",\n className: \"bg-muted border border-border text-foreground\",\n },\n {\n variant: \"primary\",\n appearance: \"light\",\n className:\n \"bg-[hsl(var(--primary)/0.1)] border border-[hsl(var(--primary)/0.25)] text-foreground [&_[data-slot=alert-icon]]:text-[hsl(var(--primary))]\",\n },\n {\n variant: \"destructive\",\n appearance: \"light\",\n className:\n \"bg-[hsl(var(--destructive)/0.1)] border border-[hsl(var(--destructive)/0.25)] text-foreground [&_[data-slot=alert-icon]]:text-[hsl(var(--destructive))]\",\n },\n {\n variant: \"success\",\n appearance: \"light\",\n className:\n \"bg-[hsl(var(--success)/0.1)] border border-[hsl(var(--success)/0.25)] text-foreground [&_[data-slot=alert-icon]]:text-[hsl(var(--success))]\",\n },\n {\n variant: \"info\",\n appearance: \"light\",\n className:\n \"bg-[hsl(var(--info)/0.1)] border border-[hsl(var(--info)/0.25)] text-foreground [&_[data-slot=alert-icon]]:text-[hsl(var(--info))]\",\n },\n {\n variant: \"warning\",\n appearance: \"light\",\n className:\n \"bg-[hsl(var(--warning)/0.1)] border border-[hsl(var(--warning)/0.25)] text-foreground [&_[data-slot=alert-icon]]:text-[hsl(var(--warning))]\",\n } /* Mono icon colors */,\n {\n variant: \"mono\",\n icon: \"primary\",\n className: \"[&_[data-slot=alert-icon]]:text-primary\",\n },\n {\n variant: \"mono\",\n icon: \"warning\",\n className: \"[&_[data-slot=alert-icon]]:text-[var(--color-warning, var(--color-yellow-600))]\",\n },\n {\n variant: \"mono\",\n icon: \"success\",\n className: \"[&_[data-slot=alert-icon]]:text-[var(--color-success, var(--color-green-600))]\",\n },\n {\n variant: \"mono\",\n icon: \"destructive\",\n className: \"[&_[data-slot=alert-icon]]:text-destructive\",\n },\n {\n variant: \"mono\",\n icon: \"info\",\n className: \"[&_[data-slot=alert-icon]]:text-[var(--color-info, var(--color-violet-600))]\",\n },\n ],\n defaultVariants: {\n variant: \"secondary\",\n appearance: \"solid\",\n size: \"md\",\n },\n});\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Alert variant types\n */\nexport type AlertVariant =\n | \"secondary\"\n | \"primary\"\n | \"destructive\"\n | \"success\"\n | \"info\"\n | \"mono\"\n | \"warning\";\n\n/**\n * Alert appearance types\n */\nexport type AlertAppearance = \"solid\" | \"outline\" | \"light\" | \"stroke\";\n\n/**\n * Alert size types\n */\nexport type AlertSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Props for Alert component\n *\n * @description\n * A versatile alert component with multiple variants, appearances, and sizes.\n * Supports icons, close button, and rich content.\n *\n * **UX Scenarios:**\n * - Success/error/warning notifications\n * - Form validation messages\n * - System status alerts\n * - Informational banners\n * - Toast notifications\n *\n * **Accessibility:**\n * - role=\"alert\" for screen readers\n * - Dismissible with close button\n * - Proper ARIA labeling\n */\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n /**\n * Show close button\n * @default false\n */\n close?: boolean;\n /**\n * Callback when close button is clicked\n */\n onClose?: () => void;\n}\n\nexport interface AlertIconProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {}\n\nexport type AlertTitleProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type AlertDescriptionProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type AlertContentProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type AlertToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\n// =============================================================================\n// Components\n// =============================================================================\n\n/**\n * Alert - Contextual feedback messages\n *\n * @example\n * ```tsx\n * import {\n * Alert, * AlertIcon, * AlertTitle, * AlertDescription, * AlertContent, * } from \"@nebutra/ui\";\n * import { CheckCircle as CircleCheck, Warning as CircleAlert, Warning as TriangleAlert } from \"@nebutra/icons\";\n *\n * // Basic alert\n * <Alert>\n * <AlertIcon><CircleAlert /></AlertIcon>\n * <AlertTitle>Default alert message</AlertTitle>\n * </Alert>\n *\n * // Success alert with close\n * <Alert variant=\"success\" appearance=\"light\" close onClose={() => {}}>\n * <AlertIcon><CircleCheck /></AlertIcon>\n * <AlertTitle>Operation successful!</AlertTitle>\n * </Alert>\n *\n * // Destructive alert with description\n * <Alert variant=\"destructive\" appearance=\"outline\">\n * <AlertIcon><TriangleAlert /></AlertIcon>\n * <AlertContent>\n * <AlertTitle>Error occurred</AlertTitle>\n * <AlertDescription>\n * Please try again or contact support.\n * </AlertDescription>\n * </AlertContent>\n * </Alert>\n *\n * // Different sizes\n * <Alert size=\"sm\" variant=\"info\">...</Alert>\n * <Alert size=\"md\" variant=\"warning\">...</Alert>\n * <Alert size=\"lg\" variant=\"primary\">...</Alert>\n * ```\n */\nfunction Alert({\n className,\n variant,\n size,\n icon,\n appearance,\n close = false,\n onClose,\n children,\n ...props\n}: AlertProps) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant, size, icon, appearance }), className)}\n {...props}\n >\n {children}\n {close && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Dismiss\"\n data-slot=\"alert-close\"\n className={cn(\n \"group shrink-0 size-4 inline-flex items-center justify-center rounded-[var(--radius-sm)]\",\n \"opacity-70 hover:opacity-100 transition-opacity\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n )}\n >\n <X className=\"size-4\" />\n </button>\n )}\n </div>\n );\n}\n\n/**\n * AlertTitle - Alert heading/title\n */\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return (\n <div data-slot=\"alert-title\" className={cn(\"grow tracking-tight\", className)} {...props} />\n );\n}\n\n/**\n * AlertIcon - Icon container for alert\n */\nfunction AlertIcon({ children, className, ...props }: AlertIconProps) {\n return (\n <div data-slot=\"alert-icon\" className={cn(\"shrink-0\", className)} {...props}>\n {children}\n </div>\n );\n}\n\n/**\n * AlertToolbar - Actions area for alert\n */\nfunction AlertToolbar({ children, className, ...props }: AlertToolbarProps) {\n return (\n <div data-slot=\"alert-toolbar\" className={cn(className)} {...props}>\n {children}\n </div>\n );\n}\n\n/**\n * AlertDescription - Detailed description text\n */\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\"text-sm [&_p]:leading-relaxed [&_p]:mb-2\", className)}\n {...props}\n />\n );\n}\n\n/**\n * AlertContent - Container for title and description\n */\nfunction AlertContent({ className, ...props }: AlertContentProps) {\n return (\n <div\n data-slot=\"alert-content\"\n className={cn(\"space-y-2 [&_[data-slot=alert-title]]:font-semibold\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Alert,\n AlertContent,\n AlertDescription,\n AlertIcon,\n AlertTitle,\n AlertToolbar,\n alertVariants,\n};\n","/**\n * Primitive Design Tokens — Layer 1\n *\n * Raw values only. No CSS variable references, no semantic meaning.\n * These are the \"atoms\" of the design system.\n *\n * Color source: @nebutra/brand `colors` → @nebutra/design-tokens `tokens/core.json` (SSOT).\n * Typography: Geist + Geist Mono (Vercel) with Noto Sans SC + PingFang SC + Microsoft YaHei CJK fallbacks.\n * Aligned with @nebutra/design-tokens SSOT.\n */\n\nimport { colors } from \"@nebutra/brand\";\n\n// ─── Color Palette ────────────────────────────────────────────────────────────\n\nexport const primitiveColors = {\n // Nebutra Blue (云毓蓝) — technology & trust — VI: #0033FE\n blue50: colors.primary[50],\n blue100: colors.primary[100],\n blue200: colors.primary[200],\n blue300: colors.primary[300],\n blue400: colors.primary[400],\n blue500: colors.primary[500], // brand primary\n blue600: colors.primary[600],\n blue700: colors.primary[700],\n blue800: colors.primary[800],\n blue900: colors.primary[900],\n blue950: colors.primary[950],\n\n // Nebutra Cyan (云毓青) — data flow & intelligence — VI: #0BF1C3\n cyan50: colors.accent[50],\n cyan100: colors.accent[100],\n cyan200: colors.accent[200],\n cyan300: colors.accent[300],\n cyan400: colors.accent[400],\n cyan500: colors.accent[500], // brand secondary\n cyan600: colors.accent[600],\n cyan700: colors.accent[700],\n cyan800: colors.accent[800],\n cyan900: colors.accent[900],\n cyan950: colors.accent[950],\n\n // Neutral (blue-undertone gray scale)\n neutral50: colors.neutral[50],\n neutral100: colors.neutral[100],\n neutral200: colors.neutral[200],\n neutral300: colors.neutral[300],\n neutral400: colors.neutral[400],\n neutral500: colors.neutral[500],\n neutral600: colors.neutral[600],\n neutral700: colors.neutral[700],\n neutral800: colors.neutral[800],\n neutral900: colors.neutral[900],\n neutral950: colors.neutral[950], // deepest — used as dark background\n\n // Semantic raw colors — VI §Color Specifications\n // NOTE: info = brand blue (#0033FE), not sky/teal\n red500: \"#ef4444\",\n red600: \"#dc2626\",\n green500: \"#22c55e\", // VI manual specifies this exact value for success\n green600: \"#16a34a\",\n amber500: \"#f59e0b\",\n amber600: \"#d97706\",\n\n white: colors.white,\n black: colors.black,\n} as const;\n\nexport type PrimitiveColor = keyof typeof primitiveColors;\n\n// ─── Brand Gradients — VI §Brand Gradients (first-class design assets) ────────\n\nexport const primitiveGradients = {\n /** Hero sections, primary CTA buttons, logo fills — VI signature gradient */\n primary: colors.gradient.primary,\n /** Hover states, secondary gradient elements */\n reverse: colors.gradient.primaryReverse,\n /** Vertical layout dividers, page section separators */\n vertical: colors.gradient.primaryVertical,\n /** Background halos, focus glow effects, radial emphasis */\n radial: colors.gradient.primaryRadial,\n /** Dark mode card surfaces — deep brand-blue tinted */\n darkCard: \"linear-gradient(135deg, #020617 0%, #0a1628 100%)\",\n} as const;\n\nexport type PrimitiveGradient = keyof typeof primitiveGradients;\n\n// ─── Spacing Scale (px values) ────────────────────────────────────────────────\n\nexport const primitiveSpacing = {\n 0: 0,\n 1: 4,\n 2: 8,\n 3: 12,\n 4: 16,\n 5: 20,\n 6: 24,\n 8: 32,\n 10: 40,\n 12: 48,\n 14: 56,\n 16: 64,\n 20: 80,\n 24: 96,\n} as const;\n\nexport type PrimitiveSpacing = keyof typeof primitiveSpacing;\n\n// ─── Layout Containers (px) — max-width standards ────────────────────────────\n// Use `text` for text-heavy sections (hero copy, CTA), `content` for general\n// sections, and `wide` for full-bleed feature bento grids.\n\nexport const primitiveContainer = {\n /** Text-focused: hero headlines, CTA copy, FAQ — optimized for reading */\n text: 896, // ~56rem / max-w-4xl\n /** Standard content sections: pricing, architecture, blog */\n content: 1152, // ~72rem / max-w-6xl\n /** Wide sections: feature bento, testimonials, product demos */\n wide: 1400, // ~87.5rem — Vercel/Supabase standard\n} as const;\n\nexport type PrimitiveContainer = keyof typeof primitiveContainer;\n\n// ─── Sizing Scale — component heights (px) ────────────────────────────────────\n\nexport const primitiveSizing = {\n xs: 20,\n /** Geist button-specific size (24px). Larger than xs by design. */\n tiny: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 80,\n} as const;\n\nexport type PrimitiveSizing = keyof typeof primitiveSizing;\n\n// ─── Border Radius (px) ───────────────────────────────────────────────────────\n\nexport const primitiveRadius = {\n none: 0,\n sm: 4,\n md: 6, // Geist default — slightly more rounded than 4px\n lg: 8,\n xl: 12,\n \"2xl\": 16,\n full: 9999,\n} as const;\n\nexport type PrimitiveRadius = keyof typeof primitiveRadius;\n\n// ─── Font Sizes (px) ──────────────────────────────────────────────────────────\n\nexport const primitiveFontSize = {\n xs: 12,\n sm: 14,\n base: 16,\n lg: 18,\n xl: 20,\n \"2xl\": 24,\n \"3xl\": 30,\n \"4xl\": 36,\n} as const;\n\nexport type PrimitiveFontSize = keyof typeof primitiveFontSize;\n\n// ─── Font Weights ─────────────────────────────────────────────────────────────\n\nexport const primitiveFontWeight = {\n light: 300,\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n} as const;\n\nexport type PrimitiveFontWeight = keyof typeof primitiveFontWeight;\n\n// ─── Font Families — VI §Typography ──────────────────────────────────────────\n// Aligned with @nebutra/design-tokens SSOT (tokens/core.json fontFamily.*).\n// EN primary: Geist (Vercel variable, 100–900)\n// EN mono: Geist Mono\n// CN primary: Noto Sans SC → PingFang SC → Microsoft YaHei → vivo Sans (print)\n\nexport const primitiveFontFamily = {\n /** Default body/UI stack — Geist with CJK auto-fallbacks */\n sans: '\"Geist\", \"Noto Sans SC\", \"PingFang SC\", \"Microsoft YaHei\", -apple-system, BlinkMacSystemFont, system-ui, sans-serif',\n /** Chinese body/UI stack */\n cnSans: '\"Noto Sans SC\", \"PingFang SC\", \"Microsoft YaHei\", \"vivo Sans\", sans-serif',\n /** Display / hero headlines */\n display: '\"Geist\", \"Noto Sans SC\", sans-serif',\n /** Heading (alias of display) */\n heading: '\"Geist\", \"Noto Sans SC\", sans-serif',\n /** Code / monospace — Geist Mono pairs with Geist for full family coverage */\n mono: '\"Geist Mono\", ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, monospace',\n} as const;\n\nexport type PrimitiveFontFamily = keyof typeof primitiveFontFamily;\n\n// ─── Shadows ──────────────────────────────────────────────────────────────────\n\nexport const primitiveShadow = {\n none: \"none\",\n sm: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n md: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n lg: \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n xl: \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\",\n /** Brand glow — blue tone for focus/highlight states */\n brandGlow: \"0 0 0 3px rgb(0 51 254 / 0.15)\",\n} as const;\n\nexport type PrimitiveShadow = keyof typeof primitiveShadow;\n\n// ─── Transition ───────────────────────────────────────────────────────────────\n\n/**\n * Primitive transition tokens — aligned with the four-rail motion scale\n * (SSOT: @nebutra/design-tokens core.json → duration.*).\n * Keys mirror semantic.json motion.duration.*; values are in ms.\n */\nexport const primitiveTransition = {\n duration: {\n micro: 100, // hover, focus, small state changes\n flow: 200, // standard state transitions (default)\n reveal: 300, // larger motion (accordion, modal, drawer)\n cinematic: 500, // hero entrance, big delight moments\n },\n easing: {\n default: \"ease-out\",\n spring: \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n inOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n} as const;\n\n// ─── Focus Ring ───────────────────────────────────────────────────────────────\n\nexport const primitiveFocusRing = {\n width: 2, // px\n offset: 2, // px — gap between element and ring\n} as const;\n","/**\n * Shadow Token System\n *\n * Geist-style elevation scale: xs → 2xl + brand glow variants.\n * CSS variables (--elevation-*) are defined in @nebutra/tokens/styles.css\n * with automatic light / dark mode switching.\n *\n * @see packages/design/tokens/styles.css @theme inline\n * @see apps/landing/DESIGN.md Section 10.10\n */\n\n/**\n * Ordered elevation scale — lowest → highest\n */\nexport const shadowScale = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const;\nexport const shadowBrandScale = [\"brand\", \"brand-lg\"] as const;\n\n/**\n * Tailwind shadow class references (dark-mode aware via CSS variables).\n *\n * Semantic mapping:\n * xs → hovered rows, focused input rings\n * sm → cards, tooltips\n * md → dropdowns, popovers\n * lg → sticky headers, floating panels\n * xl → modals, dialogs\n * 2xl → top-level overlays\n * brand → ring + glow using 云毓蓝 (primary)\n * brand-lg → stronger brand glow (hero CTAs, featured cards)\n *\n * @example\n * <div className={shadowClasses.md}>…</div>\n */\nexport const shadowClasses = {\n none: \"shadow-none\",\n xs: \"shadow-xs\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n \"2xl\": \"shadow-2xl\",\n brand: \"shadow-brand\",\n \"brand-lg\": \"shadow-brand-lg\",\n} as const;\n\n/**\n * CSS variable references for inline styles or JS/Framer Motion animations.\n * Values resolve automatically for the current light/dark theme.\n *\n * @example\n * style={{ boxShadow: shadowVars.md }}\n * animate={{ boxShadow: shadowVars.brand }}\n */\nexport const shadowVars = {\n none: \"none\",\n xs: \"var(--elevation-xs)\",\n sm: \"var(--elevation-sm)\",\n md: \"var(--elevation-md)\",\n lg: \"var(--elevation-lg)\",\n xl: \"var(--elevation-xl)\",\n \"2xl\": \"var(--elevation-2xl)\",\n brand: \"var(--elevation-brand)\",\n \"brand-lg\": \"var(--elevation-brand-lg)\",\n} as const;\n\nexport type ShadowLevel = (typeof shadowScale)[number];\nexport type ShadowBrand = (typeof shadowBrandScale)[number];\nexport type ShadowKey = keyof typeof shadowClasses;\n","/**\n * Overlay Component Tokens — Layer 3\n *\n * Dialog, Menu, Popover, Tooltip, and Command surfaces share one depth,\n * elevation, radius, and motion contract. Components should consume these\n * semantic class tokens instead of inlining z-index, shadow, radius, or\n * duration decisions.\n */\n\nimport { primitiveRadius, primitiveTransition } from \"../primitive\";\nimport { shadowClasses } from \"../shadows\";\n\nconst overlayFocusRingClassName =\n \"outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\";\n\nexport const overlayZIndex = {\n backdrop: 1040,\n modal: 1050,\n popover: 1060,\n tooltip: 1070,\n} as const;\n\nexport const overlayTokens = {\n radius: {\n menu: primitiveRadius.lg,\n modal: primitiveRadius.xl,\n popover: primitiveRadius.lg,\n tooltip: primitiveRadius.md,\n },\n motion: {\n duration: primitiveTransition.duration.flow,\n easing: primitiveTransition.easing.default,\n hoverOpenDelay: primitiveTransition.duration.flow,\n hoverCloseDelay: primitiveTransition.duration.micro,\n },\n zIndex: overlayZIndex,\n} as const;\n\nexport const overlayClassNames = {\n focusRing: overlayFocusRingClassName,\n backdrop:\n \"fixed inset-0 bg-black/40 backdrop-blur-sm transition-[opacity,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)] data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none\",\n modalSurface: [\n \"fixed left-1/2 top-1/2 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4\",\n \"border border-border/60 bg-background/95 p-6 text-foreground backdrop-blur-xl\",\n \"rounded-[var(--radius-xl)]\",\n shadowClasses[\"2xl\"],\n \"outline-none\",\n \"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]\",\n \"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0\",\n \"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none\",\n ].join(\" \"),\n commandSurface: [\n \"fixed left-1/2 top-[18vh] w-[calc(100vw-2rem)] max-w-xl -translate-x-1/2 overflow-hidden\",\n \"rounded-[var(--radius-lg)] border border-border/70 bg-popover text-popover-foreground\",\n shadowClasses[\"2xl\"],\n \"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]\",\n \"data-starting-style:translate-y-[-0.5rem] data-starting-style:scale-95 data-starting-style:opacity-0\",\n \"data-ending-style:translate-y-[-0.5rem] data-ending-style:scale-95 data-ending-style:opacity-0\",\n \"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none\",\n ].join(\" \"),\n menuSurface: [\n \"min-w-32 overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md\",\n shadowClasses.xl,\n \"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]\",\n \"data-[starting-style]:scale-95 data-[starting-style]:opacity-0 data-[ending-style]:scale-95 data-[ending-style]:opacity-0\",\n \"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none\",\n ].join(\" \"),\n selectSurface: [\n \"max-h-[var(--select-content-max-height)] min-w-[var(--select-content-min-width)] overflow-hidden\",\n \"rounded-[var(--select-content-radius)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md\",\n \"shadow-[var(--select-content-shadow)] outline-none\",\n \"transition-[opacity,transform,display] duration-[var(--select-duration)] ease-[var(--select-easing)]\",\n \"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0\",\n \"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none\",\n ].join(\" \"),\n navigationMenuSurface: [\n \"min-w-32 overflow-hidden rounded-[var(--radius-xl)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md\",\n shadowClasses.xl,\n \"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]\",\n \"data-[starting-style]:scale-95 data-[starting-style]:opacity-0 data-[ending-style]:scale-95 data-[ending-style]:opacity-0\",\n \"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none\",\n ].join(\" \"),\n popoverSurface: [\n \"w-72 rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-4 text-popover-foreground backdrop-blur-md\",\n shadowClasses.xl,\n \"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]\",\n \"data-[open]:opacity-100 data-[closed]:opacity-0 data-[closed]:scale-95 data-[open]:scale-100\",\n \"motion-reduce:transition-none motion-reduce:data-[closed]:transform-none motion-reduce:data-[open]:transform-none\",\n ].join(\" \"),\n tooltipSurface: [\n \"overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md\",\n shadowClasses.md,\n \"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]\",\n \"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0\",\n \"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none\",\n ].join(\" \"),\n sheetBackdrop: [\n \"fixed inset-0 bg-[var(--sheet-overlay-background)] backdrop-blur-[var(--sheet-overlay-blur)]\",\n \"transition-[opacity,backdrop-filter,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]\",\n \"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none\",\n ].join(\" \"),\n sheetSurface: [\n \"fixed flex flex-col overflow-hidden border border-border bg-[var(--sheet-background)] text-foreground shadow-[var(--sheet-shadow)]\",\n \"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]\",\n \"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none\",\n ].join(\" \"),\n closeButton: `absolute right-4 top-4 rounded-[var(--radius-sm)] opacity-70 ring-offset-background ${overlayFocusRingClassName} transition-opacity duration-[var(--motion-duration-micro)] ease-[var(--ease-out)] hover:opacity-100 disabled:pointer-events-none data-[open]:bg-accent data-[open]:text-muted-foreground motion-reduce:transition-none`,\n} as const;\n","import { cva } from \"class-variance-authority\";\n\n// Heights / weights from recipe.css (--control-height-*, --font-weight-medium).\n// Focus ring uses shared ring token.\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap\",\n \"rounded-[var(--btn-default-radius,var(--radius-md))]\",\n \"text-[length:var(--control-font-size-md,0.875rem)] font-[number:var(--font-weight-medium,500)]\",\n \"transition-colors duration-micro ease-out\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"aria-busy:cursor-wait\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n // Recipe-driven via packages/design/tokens/recipe.css (.btn-brand-default)\n default: \"btn-brand-default\",\n ink: \"bg-[var(--neutral-12)] text-[var(--neutral-1)] ring-1 ring-inset ring-[color:var(--neutral-1)]/5 hover:bg-[var(--neutral-11)] hover:-translate-y-px active:translate-y-0 transition-[transform,background-color] duration-micro\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n tertiary:\n \"border border-transparent bg-transparent text-muted-foreground hover:bg-accent hover:text-accent-foreground hover:border-input\",\n warning: \"bg-warning text-warning-foreground hover:bg-warning/90\",\n },\n size: {\n tiny: \"h-[var(--control-height-tiny,1.5rem)] rounded-[var(--radius-sm)] px-2 text-[length:var(--control-font-size-tiny,0.6875rem)]\",\n sm: \"h-[var(--control-height-sm,2rem)] rounded-[var(--radius-sm)] px-3 text-[length:var(--control-font-size-sm,0.75rem)]\",\n default:\n \"h-[var(--control-height-md,2.5rem)] px-[var(--btn-default-padding-x,1rem)] py-[var(--btn-default-padding-y,0.5rem)]\",\n lg: \"h-[var(--control-height-lg,3rem)] rounded-[var(--radius-lg)] px-5 text-[length:var(--control-font-size-lg,1rem)]\",\n icon: \"h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)]\",\n },\n shape: {\n default: \"\",\n square: \"\",\n circle: \"\",\n },\n },\n compoundVariants: [\n { shape: \"square\", size: \"tiny\", className: \"w-[var(--control-height-tiny,1.5rem)] px-0\" },\n { shape: \"square\", size: \"sm\", className: \"w-[var(--control-height-sm,2rem)] px-0\" },\n { shape: \"square\", size: \"default\", className: \"w-[var(--control-height-md,2.5rem)] px-0\" },\n { shape: \"square\", size: \"lg\", className: \"w-[var(--control-height-lg,3rem)] px-0\" },\n {\n shape: \"circle\",\n size: \"tiny\",\n className: \"w-[var(--control-height-tiny,1.5rem)] px-0 rounded-full\",\n },\n {\n shape: \"circle\",\n size: \"sm\",\n className: \"w-[var(--control-height-sm,2rem)] px-0 rounded-full\",\n },\n {\n shape: \"circle\",\n size: \"default\",\n className: \"w-[var(--control-height-md,2.5rem)] px-0 rounded-full\",\n },\n {\n shape: \"circle\",\n size: \"lg\",\n className: \"w-[var(--control-height-lg,3rem)] px-0 rounded-full\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n },\n },\n);\n","\"use client\";\n\nimport { AlertDialog as BaseAlertDialog } from \"@base-ui/react/alert-dialog\";\nimport * as React from \"react\";\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { buttonVariants } from \"./button-variants\";\n\nconst AlertDialog = BaseAlertDialog.Root;\nconst AlertDialogPortal = BaseAlertDialog.Portal;\n\nconst AlertDialogTrigger = ({\n asChild,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseAlertDialog.Trigger> & { asChild?: boolean } & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BaseAlertDialog.Trigger\n ref={ref}\n {...props}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BaseAlertDialog.Trigger ref={ref} {...props}>\n {children}\n </BaseAlertDialog.Trigger>\n );\n};\nAlertDialogTrigger.displayName = \"AlertDialogTrigger\";\n\nconst AlertDialogOverlay = ({\n className,\n style,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseAlertDialog.Backdrop> & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <BaseAlertDialog.Backdrop\n ref={ref}\n className={cn(overlayClassNames.backdrop, className)}\n style={{ zIndex: overlayZIndex.backdrop, ...style }}\n {...props}\n />\n);\nAlertDialogOverlay.displayName = \"AlertDialogOverlay\";\n\nconst AlertDialogContent = ({\n className,\n children,\n style,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseAlertDialog.Popup> & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <BaseAlertDialog.Popup\n ref={ref}\n className={cn(overlayClassNames.modalSurface, className)}\n style={{ zIndex: overlayZIndex.modal, ...style }}\n {...props}\n >\n {children}\n </BaseAlertDialog.Popup>\n </AlertDialogPortal>\n);\nAlertDialogContent.displayName = \"AlertDialogContent\";\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseAlertDialog.Title> & {\n ref?: React.Ref<HTMLHeadingElement> | undefined;\n}) => (\n <BaseAlertDialog.Title ref={ref} className={cn(\"text-lg font-semibold\", className)} {...props} />\n);\nAlertDialogTitle.displayName = \"AlertDialogTitle\";\n\nconst AlertDialogDescription = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseAlertDialog.Description> & {\n ref?: React.Ref<HTMLParagraphElement> | undefined;\n}) => (\n <BaseAlertDialog.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n);\nAlertDialogDescription.displayName = \"AlertDialogDescription\";\n\n// Base UI doesn't have an explicit 'Action' or 'Cancel' component. We render native Close triggers.\nconst AlertDialogAction = ({\n className,\n asChild,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseAlertDialog.Close> & { asChild?: boolean } & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BaseAlertDialog.Close\n ref={ref}\n {...props}\n className={cn(className)}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BaseAlertDialog.Close ref={ref} className={cn(buttonVariants(), className)} {...props}>\n {children}\n </BaseAlertDialog.Close>\n );\n};\nAlertDialogAction.displayName = \"AlertDialogAction\";\n\n// Base UI's <Close> acts exactly like a Cancel when mapped as a trigger.\nconst AlertDialogCancel = ({\n className,\n asChild,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseAlertDialog.Close> & { asChild?: boolean } & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BaseAlertDialog.Close\n ref={ref}\n {...props}\n className={cn(className)}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BaseAlertDialog.Close\n ref={ref}\n className={cn(buttonVariants({ variant: \"outline\" }), \"mt-2 sm:mt-0\", className)}\n {...props}\n >\n {children}\n </BaseAlertDialog.Close>\n );\n};\nAlertDialogCancel.displayName = \"AlertDialogCancel\";\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","/**\n * Motion Token System — four-rail duration scale (2026-05-14 governance).\n *\n * SSOT: packages/design/design-tokens/tokens/core.json → duration.*\n * Emitted to --duration-{micro,flow,reveal,cinematic} CSS vars\n * (light/dark/themes) by Style Dictionary.\n *\n * Names denote INTENT, not relative speed:\n * - micro (100ms) hover, focus, toggle, button press\n * - flow (200ms) modal, dropdown, tab — default state transition\n * - reveal (300ms) slide-in, expand, accordion, drawer\n * - cinematic (500ms) landing hero, large delight moments\n *\n * CSS usage: duration-micro / duration-flow / duration-reveal / duration-cinematic\n * JS usage: motionDurations.flow / 1000 → Framer Motion seconds\n *\n * @see packages/design/tokens/styles.css @theme inline (runtime CSS vars)\n * @see @nebutra/brand → motionDurationSec (Framer-ready seconds bridge)\n */\n\nimport type { Transition, Variants } from \"../shared/animation/motion\";\n\nexport const motionDurations = {\n /** 100ms — micro-feedback (hover, focus, toggle, button press) */\n micro: 100,\n /** 200ms — state flow (modal, dropdown, tab — default) */\n flow: 200,\n /** 300ms — content unveil (slide, expand, accordion, drawer) */\n reveal: 300,\n /** 500ms — hero-grade cinematic (landing entrance, big delight) */\n cinematic: 500,\n} as const;\n\n/**\n * Easing functions as Framer Motion cubic-bezier arrays.\n *\n * CSS usage: ease-in / ease-out / ease-in-out / ease-spring\n * JS usage: easings.easeOut → Framer Motion ease array\n */\nexport const easings = {\n linear: \"linear\",\n easeIn: [0.4, 0, 1, 1] as [number, number, number, number],\n easeOut: [0, 0, 0.2, 1] as [number, number, number, number],\n easeInOut: [0.4, 0, 0.2, 1] as [number, number, number, number],\n spring: [0.34, 1.56, 0.64, 1] as [number, number, number, number],\n bounce: [0.68, -0.6, 0.32, 1.6] as [number, number, number, number],\n} as const;\n\n/**\n * CSS variable references for inline styles.\n *\n * @example\n * style={{ transitionTimingFunction: motionVars.easeOut,\n * transitionDuration: motionVars.flow }}\n */\nexport const motionVars = {\n easeIn: \"var(--ease-in)\",\n easeOut: \"var(--ease-out)\",\n easeInOut: \"var(--ease-in-out)\",\n easeSpring: \"var(--ease-spring)\",\n micro: \"var(--duration-micro)\",\n flow: \"var(--duration-flow)\",\n reveal: \"var(--duration-reveal)\",\n cinematic: \"var(--duration-cinematic)\",\n} as const;\n\n/**\n * Standard Framer Motion transition presets — keyed by rail name.\n */\nexport const transitions: Record<string, Transition> = {\n micro: { duration: motionDurations.micro / 1000, ease: easings.easeOut },\n flow: { duration: motionDurations.flow / 1000, ease: easings.easeOut },\n reveal: { duration: motionDurations.reveal / 1000, ease: easings.easeOut },\n cinematic: { duration: motionDurations.cinematic / 1000, ease: easings.easeOut },\n spring: { type: \"spring\", stiffness: 120, damping: 18 },\n};\n\n/**\n * Generic animation variants — reusable across any component.\n */\nexport const motionVariants: Record<string, Variants> = {\n fadeInUp: {\n initial: { opacity: 0, y: 20 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 10 },\n },\n fadeInLeft: {\n initial: { opacity: 0, x: -20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: -10 },\n },\n fadeInRight: {\n initial: { opacity: 0, x: 20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 10 },\n },\n scaleIn: {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n },\n staggerContainer: {\n initial: {},\n animate: {\n transition: { staggerChildren: 0.1, delayChildren: 0.1 },\n },\n },\n staggerItem: {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0 },\n },\n};\n\n/**\n * Section-specific motion signatures for active landing page sections.\n */\nexport const sectionMotions: Record<string, Variants> = {\n // Hero: Slow reveal — establishes brand identity\n hero: {\n initial: { opacity: 0, y: 30, scale: 0.98 },\n animate: {\n opacity: 1,\n y: 0,\n scale: 1,\n transition: { duration: 1.2, ease: easings.spring },\n },\n },\n\n // FeatureCards: Stagger pop-in with spring — conveys capability\n featureStagger: {\n initial: { opacity: 0, y: 20, scale: 0.9 },\n animate: {\n opacity: 1,\n y: 0,\n scale: 1,\n transition: { type: \"spring\", stiffness: 260, damping: 20 },\n },\n },\n\n // FinalCTA: Pulse + glow loop — urgency and action\n ctaPulse: {\n initial: { scale: 1 },\n animate: {\n scale: [1, 1.02, 1],\n transition: { duration: 2, repeat: Infinity, ease: \"easeInOut\" },\n },\n },\n};\n\n/**\n * Stagger container variants with timing presets.\n */\nexport const staggerContainers: Record<\"fast\" | \"normal\" | \"slow\", Variants> = {\n fast: {\n initial: {},\n animate: { transition: { staggerChildren: 0.05, delayChildren: 0.1 } },\n },\n normal: {\n initial: {},\n animate: { transition: { staggerChildren: 0.1, delayChildren: 0.2 } },\n },\n slow: {\n initial: {},\n animate: { transition: { staggerChildren: 0.15, delayChildren: 0.3 } },\n },\n};\n\n/**\n * Interactive hover / tap micro-variants.\n */\nexport const interactiveVariants = {\n hover: { scale: 1.02 },\n tap: { scale: 0.98 },\n hoverLift: { y: -4 },\n} as const;\n\n/**\n * Viewport settings for scroll-triggered whileInView animations.\n */\nexport const viewportSettings = {\n once: { once: true, margin: \"-100px\" },\n always: { once: false, margin: \"-50px\" },\n} as const;\n\n/**\n * Helper — generate staggered delay for index-based children.\n *\n * @example\n * <MotionItem {...staggerDelay(index)}>\n */\nexport const staggerDelay = (index: number, base = 0.1) => ({\n transition: { delay: index * base },\n});\n\nexport type MotionDuration = keyof typeof motionDurations;\nexport type Easing = keyof typeof easings;\nexport type MotionVar = keyof typeof motionVars;\n","\"use client\";\n\nimport { brandSpring, emerge, flow } from \"@nebutra/brand\";\nimport type * as React from \"react\";\nimport {\n domAnimation,\n LazyMotion,\n m,\n useReducedMotion as useFramerReducedMotion,\n} from \"../shared/animation/motion\";\nimport { motionVariants, staggerContainers, viewportSettings } from \"../tokens/motion\";\n\n// ─────────────────────────────────────────────────────────────\n// Fallback variant for `fadeIn` (not present in motionVariants)\n// ─────────────────────────────────────────────────────────────\n\nconst fadeInVariant = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.3 },\n} as const;\n\n// ─────────────────────────────────────────────────────────────\n// Variant presets\n// ─────────────────────────────────────────────────────────────\n\nconst PRESETS = {\n /** 涌现 — materialize from the cloud (default) */\n emerge: {\n initial: emerge.initial,\n animate: emerge.animate,\n exit: emerge.exit,\n transition: emerge.transition,\n },\n /** 流动 — stream horizontally */\n flow: {\n initial: flow.initial,\n animate: flow.animate,\n exit: flow.exit,\n transition: flow.transition,\n },\n /** Simple fade */\n fade: fadeInVariant,\n /** Fade + rise */\n fadeUp: motionVariants.fadeInUp,\n /** Scale in */\n scale: motionVariants.scaleIn,\n} as const;\n\ntype Preset = keyof typeof PRESETS;\n\ntype MotionDivProps = React.ComponentProps<typeof m.div>;\ntype MotionInitial = NonNullable<MotionDivProps[\"initial\"]>;\ntype MotionAnimate = NonNullable<MotionDivProps[\"whileInView\"]>;\ntype MotionExit = NonNullable<MotionDivProps[\"exit\"]>;\ntype MotionTransition = NonNullable<MotionDivProps[\"transition\"]>;\n\nfunction MotionDiv(props: MotionDivProps) {\n return (\n <LazyMotion features={domAnimation}>\n <m.div {...props} />\n </LazyMotion>\n );\n}\n\n// ─────────────────────────────────────────────────────────────\n// AnimateIn\n// ─────────────────────────────────────────────────────────────\n\nexport interface AnimateInProps {\n children: React.ReactNode;\n preset?: Preset;\n delay?: number;\n duration?: number;\n /** Trigger when enters viewport instead of immediately */\n inView?: boolean;\n className?: string;\n}\n\n/**\n * AnimateIn — wraps any content in a branded entrance animation.\n *\n * Respects `prefers-reduced-motion` by fading only (no translate/blur).\n *\n * @example\n * <AnimateIn preset=\"emerge\" delay={0.1}>\n * <Card>...</Card>\n * </AnimateIn>\n */\n// NOTE: parameter-level destructuring loses optionality during dist .js emit —\n// Next.js build then mis-infers optional props as required `any`. Use the\n// `props: AnimateInProps` form and destructure inside.\nexport function AnimateIn(props: AnimateInProps) {\n const { children, preset = \"emerge\", delay = 0, duration, inView = false, className } = props;\n const shouldReduce = useFramerReducedMotion();\n const base = PRESETS[preset] || PRESETS.emerge;\n\n // Accessibility: honour prefers-reduced-motion\n const initial = (shouldReduce ? { opacity: 0 } : base.initial) as MotionInitial;\n const animate = (shouldReduce ? { opacity: 1 } : base.animate) as MotionAnimate;\n const exit = (shouldReduce ? { opacity: 0 } : \"exit\" in base ? base.exit : undefined) as\n | MotionExit\n | undefined;\n const transition = {\n ...(shouldReduce ? { duration: 0.15 } : base.transition),\n delay,\n ...(duration ? { duration } : {}),\n } as MotionTransition;\n\n if (inView) {\n return (\n <MotionDiv\n className={className}\n initial={initial}\n whileInView={animate}\n {...(exit && { exit })}\n transition={transition}\n viewport={viewportSettings.once}\n >\n {children}\n </MotionDiv>\n );\n }\n\n return (\n <MotionDiv\n className={className}\n initial={initial}\n animate={animate}\n {...(exit && { exit })}\n transition={transition}\n >\n {children}\n </MotionDiv>\n );\n}\n\n// ─────────────────────────────────────────────────────────────\n// AnimateInGroup — staggered list of children\n// ─────────────────────────────────────────────────────────────\n\nexport interface AnimateInGroupProps {\n children: React.ReactNode;\n stagger?: \"fast\" | \"normal\" | \"slow\";\n preset?: Preset;\n inView?: boolean;\n className?: string;\n}\n\n/**\n * AnimateInGroup — staggered container. Each direct child animates in sequence.\n *\n * @example\n * <AnimateInGroup stagger=\"normal\" inView>\n * {items.map(item => <AnimateIn key={item.id} preset=\"fadeUp\">{item}</AnimateIn>)}\n * </AnimateInGroup>\n */\nexport function AnimateInGroup(props: AnimateInGroupProps) {\n const { children, stagger = \"normal\", inView = false, className } = props;\n const shouldReduce = useFramerReducedMotion();\n const container = staggerContainers[stagger];\n\n if (shouldReduce) {\n return <div className={className}>{children}</div>;\n }\n\n if (inView) {\n return (\n <MotionDiv\n className={className}\n initial=\"initial\"\n whileInView=\"animate\"\n viewport={viewportSettings.once}\n variants={container}\n >\n {children}\n </MotionDiv>\n );\n }\n\n return (\n <MotionDiv className={className} initial=\"initial\" animate=\"animate\" variants={container}>\n {children}\n </MotionDiv>\n );\n}\n\n// Re-export brandSpring for consumers who need it alongside AnimateIn\nexport { brandSpring };\n","\"use client\";\n\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport interface AspectRatioProps extends React.HTMLAttributes<HTMLDivElement> {\n ratio?: number;\n}\n\nconst AspectRatio = ({\n ratio = 1,\n className,\n style,\n children,\n ref,\n ...props\n}: AspectRatioProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n className={cn(\"relative w-full\", className)}\n style={{ aspectRatio: `${ratio}`, ...style }}\n {...props}\n >\n {children}\n </div>\n);\n\nAspectRatio.displayName = \"AspectRatio\";\n\nexport { AspectRatio };\n","/**\n * Avatar Component Tokens — Layer 3\n *\n * Five-step size scale: xs=20px sm=32px md=40px lg=56px xl=80px\n * Fallback chain: image → initials → generic icon\n */\n\nimport { primitiveFontSize } from \"../primitive\";\n\nexport const avatarTokens = {\n size: {\n xs: {\n dimension: 20,\n fontSize: 8,\n iconSize: 10,\n ringWidth: 1,\n },\n sm: {\n dimension: 32,\n fontSize: primitiveFontSize.xs, // 12px\n iconSize: 14,\n ringWidth: 2,\n },\n md: {\n dimension: 40,\n fontSize: primitiveFontSize.sm, // 14px\n iconSize: 16,\n ringWidth: 2,\n },\n lg: {\n dimension: 56,\n fontSize: primitiveFontSize.xl, // 20px\n iconSize: 24,\n ringWidth: 2,\n },\n xl: {\n dimension: 80,\n fontSize: 28,\n iconSize: 32,\n ringWidth: 3,\n },\n },\n group: {\n /** Negative margin to create the overlapping stack effect */\n overlapOffset: -8, // px\n /** Size of the \"+N more\" overflow badge */\n overflowBadge: 20, // px height\n },\n} as const;\n\nexport type AvatarSize = keyof typeof avatarTokens.size;\n","\"use client\";\n\nimport { Avatar as BaseAvatar } from \"@base-ui/react/avatar\";\nimport * as React from \"react\";\nimport { type AvatarSize as AvatarPresetSize, avatarTokens } from \"../tokens/components/avatar\";\nimport { cn } from \"../utils/cn\";\n\nexport type AvatarSize = AvatarPresetSize | number;\n\nconst sizeClasses = {\n xs: { root: \"h-5 w-5\", fallback: \"text-[8px]\" },\n sm: { root: \"h-8 w-8\", fallback: \"text-xs\" },\n md: { root: \"h-10 w-10\", fallback: \"text-sm\" },\n lg: { root: \"h-14 w-14\", fallback: \"text-xl\" },\n xl: { root: \"h-20 w-20\", fallback: \"text-2xl\" },\n} as const;\n\nconst numericAvatarClass = \"h-[var(--avatar-size)] w-[var(--avatar-size)]\";\n\ntype AvatarContextValue = {\n size: AvatarSize;\n title?: string;\n};\n\nconst AvatarContext = React.createContext<AvatarContextValue | null>(null);\n\nfunction isPresetSize(size: AvatarSize): size is AvatarPresetSize {\n return typeof size === \"string\";\n}\n\nexport function getAvatarSizePx(size: AvatarSize): number {\n if (typeof size === \"number\") return size;\n return avatarTokens.size[size].dimension;\n}\n\nfunction getAvatarRootClass(size: AvatarSize): string {\n return isPresetSize(size) ? sizeClasses[size].root : numericAvatarClass;\n}\n\nfunction getAvatarFallbackClass(size: AvatarSize): string {\n return isPresetSize(size) ? sizeClasses[size].fallback : \"text-[var(--avatar-font-size)]\";\n}\n\nfunction getAvatarStyle(\n size: AvatarSize,\n style?: React.CSSProperties,\n): React.CSSProperties | undefined {\n if (typeof size !== \"number\") return style;\n return {\n \"--avatar-size\": `${size}px`,\n \"--avatar-font-size\": `${Math.max(10, Math.round(size * 0.375))}px`,\n ...style,\n } as React.CSSProperties;\n}\n\nexport function getAvatarInitials(value: string): string {\n const cleaned = value.trim();\n if (!cleaned) return \"\";\n\n const parts = cleaned.split(/[\\s._-]+/).filter(Boolean);\n if (parts.length === 1) return (parts[0] ?? \"\").slice(0, 2).toUpperCase();\n\n return parts\n .slice(0, 2)\n .map((part) => part[0] ?? \"\")\n .join(\"\")\n .toUpperCase();\n}\n\nfunction githubAvatarSrc(username: string, size: AvatarSize): string {\n return `https://github.com/${username}.png?size=${getAvatarSizePx(size) * 2}`;\n}\n\nfunction normalizeAvatarLabel({\n alt,\n title,\n username,\n}: {\n alt?: string | undefined;\n title?: string | undefined;\n username?: string | undefined;\n}): string {\n return title ?? alt ?? username ?? \"Avatar\";\n}\n\n// ─── Avatar ───────────────────────────────────────────────────────────────────\n\nexport type AvatarProps = Omit<\n React.ComponentPropsWithoutRef<typeof BaseAvatar.Root>,\n \"children\"\n> & {\n /** Size preset or explicit pixel size. */\n size?: AvatarSize;\n /** Convenience image source. For composition, use AvatarImage as a child. */\n src?: string;\n /** Image alt text. Prefer title for entity name and alt for explicit image labels. */\n alt?: string;\n /** Literal entity name used for fallback initials and accessible labels. */\n title?: string;\n /** Explicit initials fallback. Keep this to 1-2 uppercase characters. */\n letter?: string;\n /** Convenience username fallback. */\n username?: string;\n /** Loading shell. Do not use as permanent fallback. */\n placeholder?: boolean;\n /** Delay before fallback appears. */\n fallbackDelayMs?: number;\n children?: React.ReactNode;\n};\n\nconst Avatar = ({\n className,\n size = \"md\",\n src,\n alt,\n title,\n letter,\n username,\n placeholder,\n fallbackDelayMs,\n children,\n style,\n ref,\n ...props\n}: AvatarProps & { ref?: React.Ref<HTMLSpanElement> | undefined }) => {\n const label = normalizeAvatarLabel({ alt, title, username });\n const fallback = letter ?? getAvatarInitials(title ?? username ?? alt ?? \"\");\n const contextTitle = title ?? alt ?? username;\n const contextValue: AvatarContextValue =\n contextTitle === undefined ? { size } : { size, title: contextTitle };\n const shouldRenderConvenienceContent =\n children === undefined && (src !== undefined || placeholder === true || fallback.length > 0);\n\n return (\n <AvatarContext.Provider value={contextValue}>\n <BaseAvatar.Root\n ref={ref}\n className={cn(\n \"relative flex shrink-0 overflow-hidden rounded-full bg-muted\",\n getAvatarRootClass(size),\n className,\n )}\n style={getAvatarStyle(size, style)}\n {...props}\n >\n {shouldRenderConvenienceContent ? (\n <>\n {src && <AvatarImage src={src} alt={label} />}\n <AvatarFallback size={size} delay={fallbackDelayMs}>\n {placeholder ? <span className=\"sr-only\">Loading avatar</span> : fallback}\n </AvatarFallback>\n </>\n ) : (\n children\n )}\n </BaseAvatar.Root>\n </AvatarContext.Provider>\n );\n};\nAvatar.displayName = \"Avatar\";\n\n// ─── AvatarImage ──────────────────────────────────────────────────────────────\n\nconst AvatarImage = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseAvatar.Image> & {\n ref?: React.Ref<HTMLImageElement> | undefined;\n}) => (\n <BaseAvatar.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full object-cover\", className)}\n {...props}\n />\n);\nAvatarImage.displayName = \"AvatarImage\";\n\n// ─── AvatarFallback ───────────────────────────────────────────────────────────\n\nexport type AvatarFallbackProps = React.ComponentPropsWithoutRef<typeof BaseAvatar.Fallback> & {\n /** Pass the same size as the parent Avatar for correct font size */\n size?: AvatarSize;\n};\n\nconst AvatarFallback = ({\n className,\n size,\n children,\n \"aria-label\": ariaLabel,\n style,\n ref,\n ...props\n}: AvatarFallbackProps & { ref?: React.Ref<HTMLSpanElement> | undefined }) => {\n const context = React.use(AvatarContext);\n const resolvedSize = size ?? context?.size ?? \"md\";\n const fallbackLabel =\n ariaLabel ??\n (typeof children === \"string\" && children.trim().length > 0\n ? `Avatar with initials: ${children}`\n : context?.title);\n\n return (\n <BaseAvatar.Fallback\n ref={ref}\n aria-label={fallbackLabel}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted font-medium text-muted-foreground\",\n getAvatarFallbackClass(resolvedSize),\n className,\n )}\n style={getAvatarStyle(resolvedSize, style)}\n {...props}\n >\n {children}\n </BaseAvatar.Fallback>\n );\n};\nAvatarFallback.displayName = \"AvatarFallback\";\n\n// ─── AvatarGroup ──────────────────────────────────────────────────────────────\n\nexport interface AvatarGroupItem {\n src?: string;\n alt?: string;\n fallback?: string;\n title?: string;\n username?: string;\n}\n\nexport interface AvatarGroupProps {\n /** Nebutra composable API. */\n items?: AvatarGroupItem[];\n /** Geist-compatible API. */\n members?: AvatarGroupItem[];\n /** Maximum avatars to show before collapsing to \"+N\" */\n max?: number;\n /** Geist-compatible alias for max. */\n limit?: number;\n /** Size of each avatar in the group */\n size?: AvatarSize;\n className?: string;\n \"aria-label\"?: string;\n}\n\nfunction normalizeGroupItem(item: AvatarGroupItem, size: AvatarSize): Required<AvatarGroupItem> {\n const label = normalizeAvatarLabel({\n alt: item.alt,\n title: item.title,\n username: item.username,\n });\n return {\n alt: label,\n title: item.title ?? label,\n fallback: item.fallback ?? getAvatarInitials(label),\n username: item.username ?? \"\",\n src: item.src ?? (item.username ? githubAvatarSrc(item.username, size) : \"\"),\n };\n}\n\nfunction AvatarGroup({\n items,\n members,\n max,\n limit,\n size = \"sm\",\n className,\n \"aria-label\": ariaLabel,\n}: AvatarGroupProps) {\n const sourceItems = items ?? members ?? [];\n const resolvedMax = Math.max(1, max ?? limit ?? 4);\n const normalizedItems = sourceItems.map((item) => normalizeGroupItem(item, size));\n // Show max-1 real avatars; if items.length === max show last one too,\n // if items.length > max show +N badge instead of last slot.\n // Use built-in Tailwind z-index utilities (z-10..z-60) so they are\n // guaranteed to exist without arbitrary-value scanning.\n const Z = [\"z-10\", \"z-20\", \"z-30\", \"z-40\", \"z-50\", \"z-60\"] as const;\n const visibleCount =\n normalizedItems.length >= resolvedMax ? resolvedMax - 1 : normalizedItems.length;\n const visible = normalizedItems.slice(0, visibleCount);\n const lastItem = normalizedItems.length === resolvedMax ? normalizedItems[resolvedMax - 1] : null;\n const overflowCount =\n normalizedItems.length > resolvedMax ? normalizedItems.length - resolvedMax + 1 : 0;\n const lastZ = Z[Math.min(resolvedMax - 1, Z.length - 1)];\n const groupLabel =\n ariaLabel ?? `${normalizedItems.length} ${normalizedItems.length === 1 ? \"member\" : \"members\"}`;\n\n return (\n <div role=\"img\" aria-label={groupLabel} className={cn(\"flex items-center\", className)}>\n {visible.map((item, index) => (\n // relative is required for z-index to take effect on non-flex-item contexts\n <span\n key={item.alt}\n aria-hidden=\"true\"\n className={cn(\"relative inline-flex items-center\", index !== 0 && \"-ml-2\", Z[index])}\n >\n <Avatar size={size} className=\"border border-border bg-background\">\n {item.src && <AvatarImage src={item.src} alt=\"\" />}\n <AvatarFallback size={size}>{item.fallback}</AvatarFallback>\n </Avatar>\n </span>\n ))}\n\n {/* Exact limit: show the last real avatar */}\n {lastItem && (\n <span aria-hidden=\"true\" className={cn(\"relative inline-flex items-center -ml-2\", lastZ)}>\n <Avatar size={size} className=\"border border-border bg-background\">\n {lastItem.src && <AvatarImage src={lastItem.src} alt=\"\" />}\n <AvatarFallback size={size}>{lastItem.fallback}</AvatarFallback>\n </Avatar>\n </span>\n )}\n\n {/* Over limit: +N overflow badge */}\n {overflowCount > 0 && (\n <span aria-hidden=\"true\" className={cn(\"relative inline-flex items-center -ml-2\", lastZ)}>\n <Avatar size={size} className=\"border border-border\">\n <AvatarFallback\n size={size}\n className=\"bg-muted text-[0.625rem] font-semibold leading-none text-foreground\"\n >\n +{overflowCount}\n </AvatarFallback>\n </Avatar>\n </span>\n )}\n </div>\n );\n}\n\nexport { Avatar, AvatarFallback, AvatarGroup, AvatarImage };\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\n// ─── Variants ─────────────────────────────────────────────────────────────────\n\nconst badgeVariants = cva(\n \"inline-flex justify-center items-center align-middle shrink-0 rounded-full font-sans font-medium whitespace-nowrap tabular-nums transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 border border-transparent\",\n {\n variants: {\n variant: {\n // ─── Semantic / brand variants ────────────────────────────────────────\n // Recipe-driven default (solid | outline | … via --badge-default-*)\n default: \"badge-brand-default border\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"border-border text-foreground\",\n success: \"border-transparent bg-success text-success-foreground hover:bg-success/80\",\n warning: \"border-transparent bg-warning text-warning-foreground hover:bg-warning/80\",\n info: \"border-transparent bg-info text-info-foreground hover:bg-info/80\",\n error:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n // ─── Palette accents (decorative scale — not product chrome CTAs) ────\n gray: \"bg-muted text-muted-foreground fill-current\",\n \"gray-subtle\": \"bg-muted/60 text-muted-foreground fill-current border-transparent\",\n blue: \"bg-primary text-primary-foreground fill-current\",\n \"blue-subtle\": \"bg-primary/10 text-primary fill-current border-transparent\",\n purple: \"bg-secondary text-secondary-foreground fill-current\",\n \"purple-subtle\":\n \"bg-secondary/40 text-secondary-foreground fill-current border-transparent\",\n amber: \"bg-warning text-warning-foreground fill-current\",\n \"amber-subtle\": \"bg-warning/15 text-warning fill-current border-transparent\",\n red: \"bg-destructive text-destructive-foreground fill-current\",\n \"red-subtle\": \"bg-destructive/15 text-destructive fill-current border-transparent\",\n pink: \"bg-accent text-accent-foreground fill-current\",\n \"pink-subtle\": \"bg-accent/40 text-accent-foreground fill-current border-transparent\",\n green: \"bg-success text-success-foreground fill-current\",\n \"green-subtle\": \"bg-success/15 text-success fill-current border-transparent\",\n teal: \"bg-info text-info-foreground fill-current\",\n \"teal-subtle\": \"bg-info/15 text-info fill-current border-transparent\",\n inverted: \"bg-foreground text-background fill-current\",\n // Special visual treatments (intentional product design, not brand hex)\n trial:\n \"bg-gradient-to-br from-trial-start to-trial-end text-primary-foreground fill-current\",\n turbo:\n \"bg-gradient-to-br from-turbo-start to-turbo-end text-primary-foreground fill-current\",\n pill: \"bg-background text-foreground fill-foreground border-border hover:bg-muted/50 focus-visible:bg-muted/50\",\n beta: \"border-transparent bg-muted text-muted-foreground\",\n new: \"border-transparent bg-primary/10 text-primary\",\n owner: \"border-border bg-transparent text-foreground\",\n featured: \"badge-brand-default border [text-shadow:0_0_1px_hsl(var(--background)/0.2)]\",\n \"coming-soon\": \"border-transparent bg-muted/60 text-muted-foreground italic\",\n },\n size: {\n sm: \"text-[11px] h-5 px-1.5 tracking-[0.2px] gap-[3px] [&_svg]:h-[11px] [&_svg]:w-[11px]\",\n md: \"text-[12px] h-6 px-2.5 tracking-normal gap-1 [&_svg]:h-[14px] [&_svg]:w-[14px]\",\n lg: \"text-[14px] h-8 px-3 tracking-normal gap-1.5 [&_svg]:h-[16px] [&_svg]:w-[16px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst dotColorMap: Partial<Record<NonNullable<BadgeProps[\"variant\"]>, string>> = {\n success: \"bg-success-foreground\",\n warning: \"bg-warning-foreground\",\n info: \"bg-info-foreground\",\n error: \"bg-destructive-foreground\",\n destructive: \"bg-destructive-foreground\",\n \"gray-subtle\": \"bg-muted-foreground\",\n \"green-subtle\": \"bg-success\",\n \"amber-subtle\": \"bg-warning\",\n \"red-subtle\": \"bg-destructive\",\n \"blue-subtle\": \"bg-primary\",\n \"purple-subtle\": \"bg-secondary-foreground\",\n \"pink-subtle\": \"bg-accent-foreground\",\n \"teal-subtle\": \"bg-info\",\n default: \"bg-brand-mark-foreground\",\n featured: \"bg-brand-mark-foreground\",\n secondary: \"bg-secondary-foreground\",\n outline: \"bg-muted-foreground\",\n};\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof badgeVariants> {\n /** @deprecated Prefer Status Dot for dot-only indicators. Keep text labels redundant with color. */\n dot?: boolean;\n /** Icon element rendered before the label. Decorative icons are hidden from assistive tech. */\n icon?: React.ReactNode;\n /** Render as child element — use with `<a>` for link badges */\n asChild?: boolean;\n}\n\nfunction Badge({\n className,\n variant = \"default\",\n size = \"md\",\n dot,\n icon,\n asChild,\n children,\n ...props\n}: BadgeProps) {\n const badgeClassName = cn(badgeVariants({ variant, size }), className);\n const renderContent = (label: React.ReactNode) => (\n <>\n {dot && (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"h-1.5 w-1.5 shrink-0 rounded-full\",\n dotColorMap[variant ?? \"default\"] ?? \"bg-current\",\n )}\n />\n )}\n {icon && (\n <span aria-hidden=\"true\" className=\"shrink-0 flex items-center justify-center\">\n {icon}\n </span>\n )}\n {label}\n </>\n );\n\n if (asChild) {\n const childArray = React.Children.toArray(children);\n const child = childArray.length === 1 ? childArray[0] : null;\n\n if (React.isValidElement(child)) {\n const childProps = child.props as React.HTMLAttributes<HTMLElement> & {\n children?: React.ReactNode;\n };\n\n return React.cloneElement(child, {\n ...props,\n ...childProps,\n \"data-slot\": \"badge\",\n className: cn(badgeClassName, childProps.className),\n style: { ...props.style, ...childProps.style },\n children: renderContent(childProps.children),\n } as React.HTMLAttributes<HTMLElement>);\n }\n }\n\n return (\n <span data-slot=\"badge\" className={badgeClassName} {...props}>\n {renderContent(children)}\n </span>\n );\n}\n\nexport { Badge, badgeVariants };\n","\"use client\";\n\nimport * as React from \"react\";\n\nexport interface SlotProps extends React.HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Custom Slot implementation to remove @radix-ui/react-slot dependency.\n * Merges props from the Slottable parent onto the immediate child element.\n */\nexport const Slot = React.forwardRef<HTMLElement, SlotProps>(\n ({ children, className, style, ...props }, ref) => {\n // Resolve the single child without using React.Children.only — which throws\n // when children is a single-element array, fragment, or a string. Prerender\n // pipelines sometimes wrap JSX children in arrays of length 1, which passes\n // React.Children.count(=== 1) but trips React.Children.only.\n const childArray = React.Children.toArray(children);\n const child = childArray.length === 1 ? childArray[0] : null;\n\n if (child == null || !React.isValidElement(child)) {\n // 0 / 2+ / non-element child — graceful span wrapper instead of throwing.\n return (\n <span ref={ref} className={className} style={style} {...props}>\n {children}\n </span>\n );\n }\n\n const childProps = child.props as React.HTMLAttributes<HTMLElement>;\n const mergedRef = (node: HTMLElement | null) => {\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n\n // React 19 removed `element.ref` — the ref is now a regular prop, so read\n // it from the child's props (reading `child.ref` triggers the removal warning).\n const childRef = (\n childProps as React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }\n ).ref;\n if (typeof childRef === \"function\") childRef(node);\n else if (childRef && \"current\" in childRef) {\n (childRef as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n };\n // Order matters: slot's props seed → child's existing props override →\n // explicit className/style/ref take precedence over both (so the slot's\n // className/style merge with the child's, not the child's alone).\n const mergedClass = [className, childProps.className].filter(Boolean).join(\" \");\n const merged: Record<string, unknown> = {\n ...childProps,\n ...props,\n ref: mergedRef,\n className: mergedClass,\n style: { ...childProps.style, ...style },\n };\n return React.cloneElement(\n child,\n merged as React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>,\n );\n },\n);\n\nSlot.displayName = \"Slot\";\n\n/**\n * Slottable acts as a marker. In this simple implementation,\n * we just resolve it as a fragment wrapper. For deeper `asChild` composition,\n * complex logic is usually required, but most primitives just need `Slot`.\n */\nexport const Slottable: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <>{children}</>;\n};\n","\"use client\";\nimport { ChevronRight, MoreHorizontal } from \"@nebutra/icons\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Slot } from \"../utils/slot\";\n// =============================================================================\n// Types\n// =============================================================================\n/**\n * Props for Breadcrumb component\n *\n * @description\n * A navigation component showing the user's location within a site hierarchy.\n * Supports custom separators, ellipsis for collapsed items, and flexible linking.\n *\n * **UX Scenarios:**\n * - Site navigation hierarchy\n * - File/folder path display\n * - Multi-step form progress\n * - Category/subcategory navigation\n * - Dashboard section navigation\n *\n * **Accessibility:**\n * - nav element with aria-label=\"breadcrumb\"\n * - aria-current=\"page\" on current page\n * - Proper list semantics (ol/li)\n * - Screen reader support\n */\nexport interface BreadcrumbProps extends React.ComponentPropsWithoutRef<\"nav\"> {\n /**\n * Custom separator element (defaults to ChevronRight icon)\n */\n separator?: React.ReactNode;\n}\nexport type BreadcrumbListProps = React.ComponentPropsWithoutRef<\"ol\">;\nexport type BreadcrumbItemProps = React.ComponentPropsWithoutRef<\"li\">;\nexport interface BreadcrumbLinkProps extends React.ComponentPropsWithoutRef<\"a\"> {\n /**\n * Render as child component (for use with Next.js Link, etc.)\n */\n asChild?: boolean;\n}\nexport type BreadcrumbPageProps = React.ComponentPropsWithoutRef<\"span\">;\nexport type BreadcrumbSeparatorProps = React.ComponentPropsWithoutRef<\"li\">;\nexport type BreadcrumbEllipsisProps = React.ComponentPropsWithoutRef<\"span\">;\n// =============================================================================\n// Components\n// =============================================================================\n/**\n * Breadcrumb - Root navigation container\n *\n * @example\n * ```tsx\n * import {\n * Breadcrumb,\n * BreadcrumbList,\n * BreadcrumbItem,\n * BreadcrumbLink,\n * BreadcrumbPage,\n * BreadcrumbSeparator,\n * } from \"@nebutra/ui\";\n *\n * <Breadcrumb>\n * <BreadcrumbList>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/docs\">Documents</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbPage>Current Page</BreadcrumbPage>\n * </BreadcrumbItem>\n * </BreadcrumbList>\n * </Breadcrumb>\n * ```\n */\nconst Breadcrumb = ({\n ref,\n ...props\n}: BreadcrumbProps & { ref?: React.Ref<HTMLElement> | undefined }) => (\n <nav ref={ref} aria-label=\"breadcrumb\" {...props} />\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n/**\n * BreadcrumbList - Ordered list container for breadcrumb items\n */\nconst BreadcrumbList = ({\n className,\n ref,\n ...props\n}: BreadcrumbListProps & { ref?: React.Ref<HTMLOListElement> | undefined }) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n/**\n * BreadcrumbItem - Individual breadcrumb item wrapper\n */\nconst BreadcrumbItem = ({\n className,\n ref,\n ...props\n}: BreadcrumbItemProps & { ref?: React.Ref<HTMLLIElement> | undefined }) => (\n <li ref={ref} className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n/**\n * BreadcrumbLink - Clickable link within a breadcrumb item\n *\n * @example\n * ```tsx\n * // Standard anchor\n * <BreadcrumbLink href=\"/path\">Link</BreadcrumbLink>\n *\n * // With Next.js Link\n * <BreadcrumbLink asChild>\n * <Link href=\"/path\">Link</Link>\n * </BreadcrumbLink>\n *\n * // With icon\n * <BreadcrumbLink href=\"/\" className=\"flex items-center gap-2\">\n * <HomeIcon className=\"size-4\" />\n * Home\n * </BreadcrumbLink>\n * ```\n */\nconst BreadcrumbLink = ({\n asChild,\n className,\n ref,\n ...props\n}: BreadcrumbLinkProps & { ref?: React.Ref<HTMLAnchorElement> | undefined }) => {\n const Comp = asChild ? Slot : \"a\";\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n );\n};\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n/**\n * BreadcrumbPage - Current page indicator (non-interactive)\n */\nconst BreadcrumbPage = ({\n className,\n ref,\n ...props\n}: BreadcrumbPageProps & { ref?: React.Ref<HTMLSpanElement> | undefined }) => (\n // biome-ignore lint/a11y/useSemanticElements: ARIA pattern\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n/**\n * BreadcrumbSeparator - Visual separator between items\n *\n * @example\n * ```tsx\n * // Default (ChevronRight icon)\n * <BreadcrumbSeparator />\n *\n * // Custom separator\n * <BreadcrumbSeparator>/</BreadcrumbSeparator>\n * <BreadcrumbSeparator>→</BreadcrumbSeparator>\n * ```\n */\nconst BreadcrumbSeparator = ({ children, className, ...props }: BreadcrumbSeparatorProps) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n/**\n * BreadcrumbEllipsis - Collapsed items indicator\n *\n * @example\n * ```tsx\n * <BreadcrumbItem>\n * <BreadcrumbEllipsis />\n * </BreadcrumbItem>\n * ```\n */\nconst BreadcrumbEllipsis = ({ className, ...props }: BreadcrumbEllipsisProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n};\n","\"use client\";\n\nimport type { VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Slot } from \"../utils/slot\";\nimport { buttonVariants } from \"./button-variants\";\n\n// ─── Spinner ──────────────────────────────────────────────────────────────────\n// Uses @keyframes spinner from globals.css\n\nfunction Spinner({ className }: { className?: string }) {\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"block rounded-full border-2 border-current border-t-transparent animate-[spinner_0.6s_linear_infinite]\",\n className,\n )}\n />\n );\n}\n\n// ─── Icon size class mapping ──────────────────────────────────────────────────\n\nfunction getIconSizeClass(size: string | null | undefined): string {\n switch (size) {\n case \"tiny\":\n return \"[&>svg]:size-3\"; // 12px\n case \"sm\":\n return \"[&>svg]:size-3.5\"; // 14px\n case \"lg\":\n return \"[&>svg]:size-4.5\"; // 18px\n default:\n return \"[&>svg]:size-4\"; // 16px\n }\n}\n\nfunction getSpinnerSizeClass(size: string | null | undefined): string {\n switch (size) {\n case \"tiny\":\n return \"size-3\"; // 12px\n case \"sm\":\n return \"size-3.5\"; // 14px\n case \"lg\":\n return \"size-4.5\"; // 18px\n default:\n return \"size-4\"; // 16px\n }\n}\n\n// ─── Shadow class mapping ─────────────────────────────────────────────────────\n\nconst SHADOW_CLASSES: Record<string, string> = {\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-md\",\n};\n\nfunction resolveShadowClass(shadow: boolean | \"sm\" | \"md\" | \"lg\" | undefined): string | undefined {\n if (!shadow) return undefined;\n const level = shadow === true ? \"md\" : shadow;\n return SHADOW_CLASSES[level];\n}\n\n// ─── ButtonContent (shared between Button & ButtonLink) ───────────────────────\n\ninterface ButtonContentProps {\n loading: boolean;\n prefix?: React.ReactNode | undefined;\n suffix?: React.ReactNode | undefined;\n size?: string | null | undefined;\n children?: React.ReactNode | undefined;\n}\n\nfunction ButtonContent({ loading, prefix, suffix, size, children }: ButtonContentProps) {\n const iconSizeClass = getIconSizeClass(size);\n\n return (\n <>\n {loading && <Spinner className={getSpinnerSizeClass(size)} />}\n {prefix != null && (\n <span aria-hidden=\"true\" className={cn(\"shrink-0\", iconSizeClass)}>\n {prefix}\n </span>\n )}\n {children}\n {suffix != null && (\n <span aria-hidden=\"true\" className={cn(\"shrink-0\", iconSizeClass)}>\n {suffix}\n </span>\n )}\n </>\n );\n}\n\n// ─── Button ───────────────────────────────────────────────────────────────────\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"prefix\">,\n VariantProps<typeof buttonVariants> {\n /** Render as a child element (Radix Slot — polymorphic) */\n asChild?: boolean;\n /** Show loading spinner and disable interaction */\n loading?: boolean;\n /** Icon or element rendered before children */\n prefix?: React.ReactNode;\n /** Icon or element rendered after children */\n suffix?: React.ReactNode;\n /** Elevation shadow level. `true` resolves to `\"md\"` */\n shadow?: boolean | \"sm\" | \"md\" | \"lg\";\n}\n\nconst Button = ({\n className,\n variant,\n size,\n shape,\n asChild = false,\n loading = false,\n disabled,\n prefix,\n suffix,\n shadow,\n children,\n ref,\n ...props\n}: ButtonProps & { ref?: React.Ref<HTMLButtonElement> | undefined }) => {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = Boolean(disabled || loading);\n const shadowClass = resolveShadowClass(shadow);\n\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size, shape }), shadowClass, className)}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <ButtonContent loading={loading} prefix={prefix} suffix={suffix} size={size}>\n {children}\n </ButtonContent>\n )}\n </Comp>\n );\n};\nButton.displayName = \"Button\";\n\n// ─── ButtonLink ───────────────────────────────────────────────────────────────\n\nexport interface ButtonLinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"prefix\">,\n VariantProps<typeof buttonVariants> {\n /** Icon or element rendered before children */\n prefix?: React.ReactNode;\n /** Icon or element rendered after children */\n suffix?: React.ReactNode;\n /** Elevation shadow level. `true` resolves to `\"md\"` */\n shadow?: boolean | \"sm\" | \"md\" | \"lg\";\n /** Show loading spinner */\n loading?: boolean;\n}\n\nconst ButtonLink = ({\n className,\n variant,\n size,\n shape,\n prefix,\n suffix,\n shadow,\n loading = false,\n children,\n ref,\n ...props\n}: ButtonLinkProps & { ref?: React.Ref<HTMLAnchorElement> | undefined }) => {\n const shadowClass = resolveShadowClass(shadow);\n\n const loadingProps = loading\n ? {\n \"aria-busy\": \"true\" as const,\n \"aria-disabled\": \"true\" as const,\n tabIndex: -1,\n }\n : {};\n\n return (\n <a\n ref={ref}\n className={cn(\n buttonVariants({ variant, size, shape }),\n shadowClass,\n loading && \"pointer-events-none opacity-50\",\n className,\n )}\n {...loadingProps}\n {...props}\n >\n <ButtonContent loading={loading} prefix={prefix} suffix={suffix} size={size}>\n {children}\n </ButtonContent>\n </a>\n );\n};\nButtonLink.displayName = \"ButtonLink\";\n\nexport { Button, ButtonLink };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\nconst Card = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-[var(--radius-lg)] border border-border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div ref={ref} className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\n);\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = ({\n className,\n children,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLHeadingElement> & {\n ref?: React.Ref<HTMLHeadingElement> | undefined;\n}) => (\n <h3\n ref={ref}\n className={cn(\"text-2xl font-semibold leading-none tracking-tight\", className)}\n {...props}\n >\n {children}\n </h3>\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport interface CardDescriptionProps\n extends React.HTMLAttributes<HTMLParagraphElement | HTMLDivElement> {\n as?: React.ElementType;\n}\n\nconst CardDescription = ({\n className,\n as: Tag = \"p\",\n ref,\n ...props\n}: CardDescriptionProps & {\n ref?: React.Ref<HTMLParagraphElement | HTMLDivElement> | undefined;\n}) => {\n return React.createElement(Tag, {\n ref,\n className: cn(\"text-sm text-muted-foreground\", className),\n ...props,\n });\n};\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n);\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div ref={ref} className={cn(\"flex items-center p-6 pt-0\", className)} {...props} />\n);\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };\n","\"use client\";\n/**\n * Checkbox — 21st.dev Geist implementation\n * Source: https://21st.dev / Geist Design System\n *\n * Uses --ds-gray-* / --ds-background-* CSS variables (registered in globals.css)\n * mapped to Tailwind via `geist-gray-*` / `geist-background-*` theme colors.\n */\nimport React from \"react\";\nimport { cn } from \"../utils/cn\";\n// =============================================================================\n// Types\n// =============================================================================\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n children?: React.ReactNode;\n className?: string;\n id?: string;\n name?: string;\n}\nexport interface CheckboxGroupProps {\n /** Accessible group label */\n label?: string;\n /** Layout direction */\n orientation?: \"vertical\" | \"horizontal\";\n children: React.ReactNode;\n className?: string;\n}\n// =============================================================================\n// Checkbox indicator styles (Geist DS color logic)\n// =============================================================================\nconst getInputClasses = (checked: boolean, disabled: boolean, indeterminate: boolean) => {\n let className =\n \"relative border w-4 h-4 duration-200 rounded inline-flex items-center justify-center\";\n if (disabled) {\n if (!checked || indeterminate) {\n className += \" bg-geist-gray-100 border-geist-gray-500\";\n className += indeterminate\n ? \" stroke-geist-gray-500\"\n : \" fill-geist-gray-100 stroke-geist-gray-100\";\n } else {\n className +=\n \" bg-geist-gray-600 border-geist-gray-600 fill-geist-gray-600 stroke-geist-gray-100\";\n }\n } else {\n if (!checked || indeterminate) {\n className += \" bg-geist-background-100 border-geist-gray-700 group-hover:bg-geist-gray-200\";\n className += indeterminate\n ? \" stroke-geist-gray-700\"\n : \" fill-geist-background-100 stroke-geist-background-100 group-hover:stroke-geist-gray-200 group-hover:fill-geist-gray-200\";\n } else {\n className +=\n \" bg-geist-gray-1000 border-geist-gray-1000 fill-geist-gray-1000 stroke-geist-gray-100\";\n }\n }\n return className;\n};\n// =============================================================================\n// Checkbox\n// =============================================================================\nexport const Checkbox = ({\n checked: controlledChecked,\n defaultChecked = false,\n onChange,\n disabled = false,\n indeterminate = false,\n children,\n className,\n id,\n name,\n}: CheckboxProps) => {\n const [internalChecked, setInternalChecked] = React.useState(defaultChecked);\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n return (\n <label\n className={cn(\n \"flex items-center text-[13px] font-sans group\",\n disabled ? \"text-geist-gray-500 cursor-not-allowed\" : \"text-geist-gray-1000 cursor-pointer\",\n className,\n )}\n >\n <input\n id={id}\n name={name}\n disabled={disabled}\n type=\"checkbox\"\n checked={checked}\n onChange={(e) => {\n if (!indeterminate) {\n if (!isControlled) {\n setInternalChecked(e.target.checked);\n }\n if (onChange) {\n onChange(e.target.checked);\n }\n }\n }}\n aria-label={typeof children === \"string\" ? children : \"checkbox\"}\n className=\"sr-only\"\n />\n <span className={getInputClasses(checked, disabled, indeterminate)}>\n <svg aria-hidden=\"true\" className=\"shrink-0\" height=\"16\" viewBox=\"0 0 20 20\" width=\"16\">\n {indeterminate ? (\n <line\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n x1=\"5\"\n x2=\"15\"\n y1=\"10\"\n y2=\"10\"\n />\n ) : (\n <path\n d=\"M14 7L8.5 12.5L6 10\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n )}\n </svg>\n </span>\n {children && <span className=\"ml-2\">{children}</span>}\n </label>\n );\n};\n// =============================================================================\n// CheckboxGroup — simple layout wrapper\n// =============================================================================\nexport function CheckboxGroup({\n label,\n orientation = \"vertical\",\n children,\n className,\n}: CheckboxGroupProps) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: ARIA pattern\n <div\n role=\"group\"\n aria-label={label}\n className={cn(\n \"flex\",\n orientation === \"vertical\" ? \"flex-col gap-3\" : \"flex-row flex-wrap gap-4\",\n className,\n )}\n >\n {label && <span className=\"text-sm font-medium\">{label}</span>}\n {children}\n </div>\n );\n}\nCheckboxGroup.displayName = \"CheckboxGroup\";\nexport default CheckboxGroup;\n","import {\n SiBun,\n SiBunHex,\n SiC,\n SiCHex,\n SiCplusplus,\n SiCplusplusHex,\n SiCss,\n SiCssHex,\n SiDotnet,\n SiDotnetHex,\n SiGnubash,\n SiGnubashHex,\n SiGo,\n SiGoHex,\n SiGraphql,\n SiGraphqlHex,\n SiHtml5,\n SiHtml5Hex,\n SiJavascript,\n SiJavascriptHex,\n SiKotlin,\n SiKotlinHex,\n SiMarkdown,\n SiMarkdownHex,\n SiNodedotjs,\n SiNodedotjsHex,\n SiOpenjdk,\n SiOpenjdkHex,\n SiPhp,\n SiPhpHex,\n SiPython,\n SiPythonHex,\n SiReact,\n SiReactHex,\n SiRuby,\n SiRubyHex,\n SiRust,\n SiRustHex,\n SiSass,\n SiSassHex,\n SiSvelte,\n SiSvelteHex,\n SiSwift,\n SiSwiftHex,\n SiTypescript,\n SiTypescriptHex,\n SiVuedotjs,\n SiVuedotjsHex,\n SiYaml,\n SiYamlHex,\n} from \"@icons-pack/react-simple-icons\";\nimport type { ElementType, ReactElement, ReactNode, SVGProps } from \"react\";\nimport { isValidElement } from \"react\";\nimport { cn } from \"../utils\";\n\nexport type CodeBlockLanguageIconComponent = ElementType<\n SVGProps<SVGSVGElement> & {\n color?: string;\n size?: number | string;\n title?: string;\n }\n>;\n\nexport type CodeBlockLanguageIconElement = ReactElement<{\n className?: string;\n color?: string;\n size?: number | string;\n}>;\n\nexport type CodeBlockLanguageIconValue =\n | CodeBlockLanguageIconComponent\n | CodeBlockLanguageIconElement\n | false\n | null;\n\nexport type CodeBlockLanguageIconMap = Partial<\n Record<string, CodeBlockLanguageIconValue | undefined>\n>;\n\ntype LanguageIconSpec = {\n color: string;\n icon: CodeBlockLanguageIconComponent;\n label: string;\n};\n\nconst LANGUAGE_ALIASES: Record<string, string> = {\n bash: \"bash\",\n bun: \"bun\",\n c: \"c\",\n \"c++\": \"cpp\",\n \"c#\": \"csharp\",\n cpp: \"cpp\",\n cs: \"csharp\",\n csharp: \"csharp\",\n cxx: \"cpp\",\n css: \"css\",\n go: \"go\",\n gql: \"graphql\",\n graphql: \"graphql\",\n htm: \"html\",\n html: \"html\",\n java: \"java\",\n javascript: \"javascript\",\n js: \"javascript\",\n json: \"json\",\n jsx: \"react\",\n kotlin: \"kotlin\",\n kt: \"kotlin\",\n markdown: \"markdown\",\n md: \"markdown\",\n node: \"node\",\n \"node.js\": \"node\",\n nodejs: \"node\",\n php: \"php\",\n py: \"python\",\n python: \"python\",\n rb: \"ruby\",\n react: \"react\",\n rs: \"rust\",\n ruby: \"ruby\",\n rust: \"rust\",\n sass: \"sass\",\n scss: \"sass\",\n sh: \"bash\",\n svelte: \"svelte\",\n swift: \"swift\",\n ts: \"typescript\",\n tsx: \"typescript\",\n typescript: \"typescript\",\n vue: \"vue\",\n yaml: \"yaml\",\n yml: \"yaml\",\n zsh: \"bash\",\n};\n\n/**\n * A clear `{ }` braces glyph for JSON/config files — the official simple-icons\n * JSON mark renders as a single dark blob that's unrecognizable at icon sizes.\n */\ntype JsonBracesIconProps = SVGProps<SVGSVGElement> & {\n color?: string | undefined;\n size?: number | string | undefined;\n title?: string | undefined;\n};\n\nfunction JsonBracesIcon({\n className,\n color,\n size: _size,\n title,\n ...svgProps\n}: JsonBracesIconProps) {\n return (\n <svg\n {...svgProps}\n viewBox=\"0 0 24 24\"\n className={className}\n fill=\"none\"\n stroke={color ?? \"currentColor\"}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n {title ? <title>{title}</title> : null}\n <path d=\"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\" />\n <path d=\"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\" />\n </svg>\n );\n}\n\nconst LANGUAGE_ICON_REGISTRY: Record<string, LanguageIconSpec> = {\n bash: { color: SiGnubashHex, icon: SiGnubash, label: \"Bash\" },\n bun: { color: SiBunHex, icon: SiBun, label: \"Bun\" },\n c: { color: SiCHex, icon: SiC, label: \"C\" },\n csharp: { color: SiDotnetHex, icon: SiDotnet, label: \"C#\" },\n cpp: { color: SiCplusplusHex, icon: SiCplusplus, label: \"C++\" },\n css: { color: SiCssHex, icon: SiCss, label: \"CSS\" },\n go: { color: SiGoHex, icon: SiGo, label: \"Go\" },\n graphql: { color: SiGraphqlHex, icon: SiGraphql, label: \"GraphQL\" },\n html: { color: SiHtml5Hex, icon: SiHtml5, label: \"HTML\" },\n java: { color: SiOpenjdkHex, icon: SiOpenjdk, label: \"Java\" },\n javascript: { color: SiJavascriptHex, icon: SiJavascript, label: \"JavaScript\" },\n json: { color: \"currentColor\", icon: JsonBracesIcon, label: \"JSON\" },\n kotlin: { color: SiKotlinHex, icon: SiKotlin, label: \"Kotlin\" },\n markdown: { color: SiMarkdownHex, icon: SiMarkdown, label: \"Markdown\" },\n node: { color: SiNodedotjsHex, icon: SiNodedotjs, label: \"Node.js\" },\n php: { color: SiPhpHex, icon: SiPhp, label: \"PHP\" },\n python: { color: SiPythonHex, icon: SiPython, label: \"Python\" },\n react: { color: SiReactHex, icon: SiReact, label: \"React\" },\n ruby: { color: SiRubyHex, icon: SiRuby, label: \"Ruby\" },\n rust: { color: SiRustHex, icon: SiRust, label: \"Rust\" },\n sass: { color: SiSassHex, icon: SiSass, label: \"Sass\" },\n svelte: { color: SiSvelteHex, icon: SiSvelte, label: \"Svelte\" },\n swift: { color: SiSwiftHex, icon: SiSwift, label: \"Swift\" },\n typescript: { color: SiTypescriptHex, icon: SiTypescript, label: \"TypeScript\" },\n vue: { color: SiVuedotjsHex, icon: SiVuedotjs, label: \"Vue\" },\n yaml: { color: SiYamlHex, icon: SiYaml, label: \"YAML\" },\n};\n\nexport function normalizeCodeBlockLanguage(language?: string | null): string {\n const trimmed = language?.trim().toLowerCase();\n if (!trimmed) return \"\";\n\n const withoutPrefix = trimmed.replace(/^language-/, \"\");\n const extension = withoutPrefix.includes(\".\") ? withoutPrefix.split(\".\").pop() : undefined;\n const candidate = extension || withoutPrefix;\n\n return LANGUAGE_ALIASES[candidate] || candidate;\n}\n\nfunction getMapOverride(\n language: string | null | undefined,\n icons: CodeBlockLanguageIconMap | undefined,\n): CodeBlockLanguageIconValue | undefined {\n if (!icons) return undefined;\n const raw = language?.trim().toLowerCase();\n const normalized = normalizeCodeBlockLanguage(language);\n if (raw && Object.hasOwn(icons, raw)) return icons[raw];\n if (normalized && Object.hasOwn(icons, normalized)) return icons[normalized];\n return undefined;\n}\n\nexport function resolveCodeBlockLanguageIcon(\n language?: string | null,\n options: {\n icon?: CodeBlockLanguageIconValue | undefined;\n icons?: CodeBlockLanguageIconMap | undefined;\n } = {},\n) {\n const normalized = normalizeCodeBlockLanguage(language);\n const override = options.icon ?? getMapOverride(language, options.icons);\n\n if (override === false || override === null) return null;\n if (override) {\n return {\n color: undefined,\n icon: override,\n language: normalized,\n label: normalized || language || \"code\",\n };\n }\n\n const spec = LANGUAGE_ICON_REGISTRY[normalized];\n if (!spec) return null;\n\n return {\n ...spec,\n language: normalized,\n };\n}\n\nexport interface CodeBlockLanguageIconProps {\n className?: string;\n fallback?: ReactNode | undefined;\n icon?: CodeBlockLanguageIconValue | undefined;\n icons?: CodeBlockLanguageIconMap | undefined;\n language?: string | null | undefined;\n}\n\nexport function CodeBlockLanguageIcon({\n className,\n fallback,\n icon,\n icons,\n language,\n}: CodeBlockLanguageIconProps) {\n const resolved = resolveCodeBlockLanguageIcon(language, { icon, icons });\n\n if (!resolved) return fallback ?? null;\n\n const Icon = resolved.icon;\n\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\"inline-flex size-4 shrink-0 items-center justify-center\", className)}\n data-code-block-language-icon\n data-language={resolved.language}\n title={resolved.label}\n >\n {isValidElement(Icon) ? (\n Icon\n ) : (\n <Icon\n aria-hidden=\"true\"\n className=\"size-full\"\n focusable=\"false\"\n {...(resolved.color ? { color: resolved.color } : {})}\n />\n )}\n </span>\n );\n}\n","/**\n * Canonical primitive overlay classes.\n *\n * Keep overlay surface, focus, and menu item decisions here so Dialog, Popover,\n * Command, and menu-family primitives do not drift back to shadcn-style inline\n * shadow/radius/ring classes.\n */\n\nconst menuItemBaseClassName = [\n \"relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm\",\n \"outline-none transition-colors duration-micro ease-out\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-60\",\n].join(\" \");\n\nconst menuHighlightedClassName =\n \"data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground\";\n\nconst menubarFocusClassName =\n \"hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\";\n\nexport const overlayPrimitiveClassNames = {\n modalSurface:\n \"rounded-[var(--radius-md)] border-border/70 bg-popover/95 text-popover-foreground shadow-xl\",\n popoverSurface: \"rounded-[var(--radius-md)] border-border/70 bg-popover/95 shadow-md\",\n menuSurface: \"rounded-[var(--radius-md)] border-border/70 bg-popover/95 shadow-md\",\n commandFrame: \"rounded-[var(--radius-md)] bg-popover text-popover-foreground\",\n commandDialogSurface: \"overflow-hidden p-0\",\n commandItem: [\n menuItemBaseClassName,\n \"data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n ].join(\" \"),\n contextMenuItem: [\n menuItemBaseClassName,\n \"min-h-8 gap-2\",\n menuHighlightedClassName,\n \"data-[variant=destructive]:text-destructive\",\n \"data-[variant=destructive]:data-[highlighted]:bg-destructive/10\",\n \"data-[variant=destructive]:data-[highlighted]:text-destructive\",\n ].join(\" \"),\n menuItem: [menuItemBaseClassName, menuHighlightedClassName].join(\" \"),\n menuSubTrigger: [\n menuItemBaseClassName,\n \"data-[highlighted]:bg-accent data-[popup-open]:bg-accent\",\n ].join(\" \"),\n menuCheckboxItem: [menuItemBaseClassName, menuHighlightedClassName, \"pl-8\"].join(\" \"),\n menuIndicator:\n \"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center text-muted-foreground\",\n menubarRoot:\n \"flex h-10 items-center space-x-1 rounded-[var(--radius-md)] border border-border bg-background p-1 outline-none\",\n menubarTrigger: [\n \"flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-3 py-1.5 text-sm font-medium\",\n \"outline-none transition-colors duration-micro ease-out\",\n menubarFocusClassName,\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n ].join(\" \"),\n menubarSubTrigger: [\n \"flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm\",\n \"outline-none transition-colors duration-micro ease-out\",\n menubarFocusClassName,\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n ].join(\" \"),\n menubarItem: [\n \"relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] px-2 py-1.5 text-sm\",\n \"outline-none transition-colors duration-micro ease-out\",\n menubarFocusClassName,\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n ].join(\" \"),\n menubarCheckboxItem: [\n \"relative flex cursor-default select-none items-center rounded-[var(--radius-sm)] py-1.5 pl-8 pr-2 text-sm\",\n \"outline-none transition-colors duration-micro ease-out\",\n menubarFocusClassName,\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n ].join(\" \"),\n} as const;\n","\"use client\";\n\nimport { Menu as BaseMenu } from \"@base-ui/react/menu\";\nimport { Check, ChevronRight, Status as Circle } from \"@nebutra/icons\";\nimport * as React from \"react\";\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { overlayPrimitiveClassNames } from \"./overlay\";\n\ntype DropdownMenuContextValue = {\n setOpen: (open: boolean) => void;\n};\n\nconst DropdownMenuContext = React.createContext<DropdownMenuContextValue | null>(null);\n\ntype DropdownMenuProps = React.ComponentPropsWithoutRef<typeof BaseMenu.Root>;\n\nfunction DropdownMenu({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n children,\n ...props\n}: DropdownMenuProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const open = controlledOpen ?? uncontrolledOpen;\n\n function setOpen(\n nextOpen: boolean,\n eventDetails?: Parameters<NonNullable<DropdownMenuProps[\"onOpenChange\"]>>[1],\n ) {\n if (controlledOpen === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n onOpenChange?.(nextOpen, eventDetails as never);\n }\n\n const contextValue: DropdownMenuContextValue = { setOpen };\n\n return (\n <DropdownMenuContext.Provider value={contextValue}>\n <BaseMenu.Root open={open} onOpenChange={setOpen} {...props}>\n {children}\n </BaseMenu.Root>\n </DropdownMenuContext.Provider>\n );\n}\nDropdownMenu.displayName = \"DropdownMenu\";\n\ntype DropdownMenuTriggerProps = React.ComponentProps<typeof BaseMenu.Trigger> & {\n asChild?: boolean;\n};\n\nconst DropdownMenuTrigger = ({\n asChild,\n children,\n render,\n ref,\n ...props\n}: DropdownMenuTriggerProps & { ref?: React.Ref<HTMLButtonElement> | undefined }) => {\n const context = React.use(DropdownMenuContext);\n function openFromTrigger() {\n context?.setOpen(true);\n }\n\n const childRenderElement =\n asChild && React.isValidElement<Record<string, unknown>>(children)\n ? React.cloneElement(children, {\n onMouseDown: (event: React.MouseEvent<HTMLElement>) => {\n (\n children.props.onMouseDown as\n | ((event: React.MouseEvent<HTMLElement>) => void)\n | undefined\n )?.(event);\n if (!event.defaultPrevented) {\n openFromTrigger();\n }\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => {\n (\n children.props.onKeyDown as\n | ((event: React.KeyboardEvent<HTMLElement>) => void)\n | undefined\n )?.(event);\n if (!event.defaultPrevented && (event.key === \"Enter\" || event.key === \" \")) {\n openFromTrigger();\n }\n },\n })\n : null;\n\n const renderElement = childRenderElement ?? render;\n return (\n <BaseMenu.Trigger\n ref={ref}\n render={renderElement as React.ComponentProps<typeof BaseMenu.Trigger>[\"render\"]}\n {...(renderElement ? props : { ...props, children })}\n />\n );\n};\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\n\nconst DropdownMenuGroup = BaseMenu.Group;\n\nconst DropdownMenuPortal = BaseMenu.Portal;\n\nconst DropdownMenuSub = BaseMenu.SubmenuRoot;\n\nconst DropdownMenuRadioGroup = BaseMenu.RadioGroup;\n\nconst DropdownMenuSubTrigger = ({\n className,\n inset,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseMenu.SubmenuTrigger> & {\n inset?: boolean;\n} & { ref?: React.Ref<React.ElementRef<typeof BaseMenu.SubmenuTrigger>> | undefined }) => (\n <BaseMenu.SubmenuTrigger\n ref={ref}\n className={cn(overlayPrimitiveClassNames.menuSubTrigger, inset && \"pl-8\", className)}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto size-4\" />\n </BaseMenu.SubmenuTrigger>\n);\nDropdownMenuSubTrigger.displayName = \"DropdownMenuSubTrigger\";\n\nconst DropdownMenuSubContent = ({\n className,\n style,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseMenu.Popup> & {\n ref?: React.Ref<React.ElementRef<typeof BaseMenu.Popup>> | undefined;\n}) => (\n <BaseMenu.Portal>\n <BaseMenu.Positioner>\n <BaseMenu.Popup\n ref={ref}\n className={cn(\n overlayClassNames.menuSurface,\n overlayPrimitiveClassNames.menuSurface,\n className,\n )}\n style={{ zIndex: overlayZIndex.popover, ...style }}\n {...props}\n />\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n);\nDropdownMenuSubContent.displayName = \"DropdownMenuSubContent\";\n\nexport interface DropdownMenuContentProps\n extends React.ComponentPropsWithoutRef<typeof BaseMenu.Popup> {\n align?: React.ComponentProps<typeof BaseMenu.Positioner>[\"align\"];\n sideOffset?: React.ComponentProps<typeof BaseMenu.Positioner>[\"sideOffset\"];\n alignOffset?: React.ComponentProps<typeof BaseMenu.Positioner>[\"alignOffset\"];\n side?: React.ComponentProps<typeof BaseMenu.Positioner>[\"side\"];\n}\n\nconst DropdownMenuContent = ({\n className,\n style,\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n side = \"bottom\",\n ref,\n ...props\n}: DropdownMenuContentProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseMenu.Popup>> | undefined;\n}) => (\n <BaseMenu.Portal>\n <BaseMenu.Positioner\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n side={side}\n >\n <BaseMenu.Popup\n ref={ref}\n className={cn(\n overlayClassNames.menuSurface,\n overlayPrimitiveClassNames.menuSurface,\n className,\n )}\n style={{ zIndex: overlayZIndex.popover, ...style }}\n {...props}\n />\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n);\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\n\nconst DropdownMenuItem = ({\n className,\n inset,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseMenu.Item> & {\n inset?: boolean;\n} & { ref?: React.Ref<React.ElementRef<typeof BaseMenu.Item>> | undefined }) => (\n <BaseMenu.Item\n ref={ref}\n className={cn(overlayPrimitiveClassNames.menuItem, inset && \"pl-8\", className)}\n {...props}\n />\n);\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\n\nconst DropdownMenuCheckboxItem = ({\n className,\n children,\n checked,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseMenu.CheckboxItem> & {\n ref?: React.Ref<React.ElementRef<typeof BaseMenu.CheckboxItem>> | undefined;\n}) => (\n <BaseMenu.CheckboxItem\n ref={ref}\n className={cn(overlayPrimitiveClassNames.menuCheckboxItem, className)}\n {...(checked !== undefined && { checked })}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <BaseMenu.CheckboxItemIndicator>\n <Check className=\"size-4\" />\n </BaseMenu.CheckboxItemIndicator>\n </span>\n {children}\n </BaseMenu.CheckboxItem>\n);\nDropdownMenuCheckboxItem.displayName = \"DropdownMenuCheckboxItem\";\n\nconst DropdownMenuRadioItem = ({\n className,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseMenu.RadioItem> & {\n ref?: React.Ref<React.ElementRef<typeof BaseMenu.RadioItem>> | undefined;\n}) => (\n <BaseMenu.RadioItem\n ref={ref}\n className={cn(overlayPrimitiveClassNames.menuCheckboxItem, className)}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <BaseMenu.RadioItemIndicator>\n <Circle className=\"size-2 fill-current\" />\n </BaseMenu.RadioItemIndicator>\n </span>\n {children}\n </BaseMenu.RadioItem>\n);\nDropdownMenuRadioItem.displayName = \"DropdownMenuRadioItem\";\n\nconst DropdownMenuLabel = ({\n className,\n inset,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n inset?: boolean;\n} & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className)}\n {...props}\n />\n);\nDropdownMenuLabel.displayName = \"DropdownMenuLabel\";\n\nconst DropdownMenuSeparator = ({\n className,\n orientation = \"horizontal\",\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseMenu.Separator> & {\n ref?: React.Ref<React.ElementRef<typeof BaseMenu.Separator>> | undefined;\n}) => (\n <BaseMenu.Separator\n ref={ref}\n orientation={orientation}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n);\nDropdownMenuSeparator.displayName = \"DropdownMenuSeparator\";\n\nconst DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)} {...props} />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","\"use client\";\n\nimport { Check, ChevronDown, Copy, File, FileText as FileCode, FileText } from \"@nebutra/icons\";\nimport { useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { nightOwl } from \"react-syntax-highlighter/dist/esm/styles/prism\";\nimport { motion, useReducedMotion } from \"../shared/animation/motion\";\nimport { cn } from \"../utils\";\nimport {\n CodeBlockLanguageIcon,\n type CodeBlockLanguageIconMap,\n type CodeBlockLanguageIconValue,\n} from \"./code-block-language-icon\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Per-file shape (multi-file tab mode).\n *\n * Geist's `<CodeBlock>` is single-file by design — pass `children`/`filename`/\n * `language` directly on the component instead. The `files[]` array remains\n * the canonical multi-file form, which Geist does not provide.\n *\n * Geist prop-name aliases:\n * - `filename` (single-file) ↔ `title` (per file in `files[]`)\n * - `addedLinesNumbers` ↔ `addedLines`\n * - `removedLinesNumbers` ↔ `removedLines`\n */\nexport interface CodeBlockFile {\n /** File name/title displayed in tab. Geist single-file equivalent: `filename`. */\n title: string;\n /** Code content. */\n code: string;\n /** Language for syntax highlighting (auto-detected from title if omitted). */\n language?: string;\n /** Line numbers to highlight with emphasis background (1-indexed). */\n highlightedLines?: number[];\n /** Line numbers to mark as added / diff-green (1-indexed). Geist alias: `addedLinesNumbers`. */\n addedLines?: number[];\n /** Line numbers to mark as removed / diff-red (1-indexed). Geist alias: `removedLinesNumbers`. */\n removedLines?: number[];\n /** Optional per-file language logo override. Defaults from `language` / file extension. */\n icon?: CodeBlockLanguageIconValue;\n}\n\nexport interface CodeBlockSwitcherOption {\n /** Human-readable label displayed in the switcher. */\n label: string;\n /** Language value passed to the syntax highlighter. */\n value: string;\n /** Optional language logo override for this option. */\n icon?: CodeBlockLanguageIconValue;\n}\n\n/**\n * Controlled language-switcher (Geist API).\n * The single-file form accepts this directly; the multi-file form keeps the\n * legacy uncontrolled `showLanguageSwitcher` + `languages` for back-compat.\n */\nexport interface CodeBlockSwitcher {\n options: ReadonlyArray<CodeBlockSwitcherOption>;\n value: string;\n onChange: (next: string) => void;\n}\n\ninterface CommonCodeBlockProps {\n /** Additional CSS classes on the outer container. */\n className?: string;\n /** Maximum height of code area. */\n maxHeight?: string | number;\n /** Show line numbers. Geist default: visible. Alias of `hideLineNumbers` (inverted). */\n showLineNumbers?: boolean;\n /** Geist single-file convention — inverse of `showLineNumbers`. */\n hideLineNumbers?: boolean;\n /** Enable clickable line numbers that copy `#L{n}` anchors. */\n enableLineReferences?: boolean;\n /** Callback when a line reference is clicked. */\n onLineReference?: (lineNumber: number) => void;\n /** Language logo overrides keyed by language name or alias (`python`, `py`, `tsx`, etc.). */\n languageIcons?: CodeBlockLanguageIconMap;\n /** Show language logos in the header/tabs/switcher. Defaults to true. */\n showLanguageIcon?: boolean;\n /** Hide the header bar entirely (filename + copy) — for embedded read-only views. */\n hideHeader?: boolean;\n /** Accessible label for the code block. Pass via the standard `aria-label` attribute. */\n \"aria-label\"?: string;\n}\n\n/** Multi-file (legacy) shape — tabs across `files[]`. */\nexport interface CodeBlockFilesProps extends CommonCodeBlockProps {\n /** Array of code files to display as tabs. */\n files: CodeBlockFile[];\n /** Initially active file title. */\n defaultTitle?: string;\n /** Show an uncontrolled language switcher dropdown over the built-in list. */\n showLanguageSwitcher?: boolean;\n /** Languages available in the uncontrolled switcher (defaults to built-in list). */\n languages?: string[];\n // Mutually exclusive with single-file props:\n children?: never;\n filename?: never;\n language?: never;\n addedLinesNumbers?: never;\n removedLinesNumbers?: never;\n highlightedLines?: never;\n switcher?: never;\n}\n\n/** Single-file (Geist) shape — `<CodeBlock filename=\"...\" language=\"...\">{code}</CodeBlock>`. */\nexport interface CodeBlockSingleProps extends CommonCodeBlockProps {\n /** Source code as a string. */\n children: string;\n /** Language for syntax highlighting. Required by Geist guidance. */\n language: string;\n /** File name shown in the header; omit for ephemeral examples. */\n filename?: string;\n /** Line numbers to highlight with emphasis background (1-indexed). */\n highlightedLines?: number[];\n /** Geist canonical name for added lines. */\n addedLinesNumbers?: number[];\n /** Geist canonical name for removed lines. */\n removedLinesNumbers?: number[];\n /** Controlled language switcher. */\n switcher?: CodeBlockSwitcher;\n /** Optional single-file language logo override. Defaults from `language`. */\n languageIcon?: CodeBlockLanguageIconValue;\n // Mutually exclusive with multi-file props:\n files?: never;\n defaultTitle?: never;\n showLanguageSwitcher?: never;\n languages?: never;\n}\n\nexport type CodeBlockProps = CodeBlockFilesProps | CodeBlockSingleProps;\n\n// =============================================================================\n// Themes\n// =============================================================================\n\nconst CODE_FONT_FAMILY = \"var(--font-mono)\";\n\nconst lightTheme = {\n ...nightOwl,\n 'pre[class*=\"language-\"]': {\n ...nightOwl['pre[class*=\"language-\"]'],\n background: \"transparent\",\n fontFamily: CODE_FONT_FAMILY,\n },\n 'code[class*=\"language-\"]': {\n ...nightOwl['code[class*=\"language-\"]'],\n color: \"hsl(var(--foreground))\",\n fontFamily: CODE_FONT_FAMILY,\n },\n comment: {\n color: \"hsl(var(--muted-foreground))\",\n fontStyle: \"italic\",\n },\n punctuation: {\n color: \"hsl(var(--foreground))\",\n },\n property: {\n color: \"#0550FF\",\n },\n string: {\n color: \"#14532D\",\n },\n keyword: {\n color: \"#9333EA\",\n },\n function: {\n color: \"#E45C3A\",\n },\n boolean: {\n color: \"#9333EA\",\n },\n number: {\n color: \"#9333EA\",\n },\n operator: {\n color: \"hsl(var(--foreground))\",\n },\n};\n\nconst darkTheme = {\n ...nightOwl,\n 'pre[class*=\"language-\"]': {\n ...nightOwl['pre[class*=\"language-\"]'],\n background: \"transparent\",\n fontFamily: CODE_FONT_FAMILY,\n },\n 'code[class*=\"language-\"]': {\n ...nightOwl['code[class*=\"language-\"]'],\n fontFamily: CODE_FONT_FAMILY,\n },\n};\n\n// =============================================================================\n// Utilities\n// =============================================================================\n\nfunction getLanguageFromFileName(fileName: string): string {\n const ext = fileName.split(\".\").pop()?.toLowerCase();\n const languageMap: Record<string, string> = {\n js: \"javascript\",\n jsx: \"jsx\",\n ts: \"typescript\",\n tsx: \"tsx\",\n html: \"html\",\n css: \"css\",\n scss: \"scss\",\n json: \"json\",\n md: \"markdown\",\n py: \"python\",\n rb: \"ruby\",\n go: \"go\",\n rs: \"rust\",\n sh: \"bash\",\n bash: \"bash\",\n zsh: \"bash\",\n yaml: \"yaml\",\n yml: \"yaml\",\n sql: \"sql\",\n graphql: \"graphql\",\n gql: \"graphql\",\n };\n return languageMap[ext || \"\"] || \"javascript\";\n}\n\nconst SUPPORTED_LANGUAGES = [\n \"javascript\",\n \"jsx\",\n \"typescript\",\n \"tsx\",\n \"html\",\n \"css\",\n \"scss\",\n \"json\",\n \"markdown\",\n \"python\",\n \"ruby\",\n \"go\",\n \"rust\",\n \"bash\",\n \"yaml\",\n \"sql\",\n \"graphql\",\n \"java\",\n \"c\",\n \"cpp\",\n \"csharp\",\n \"php\",\n \"swift\",\n \"kotlin\",\n] as const;\n\nfunction FileIcon({ fileName }: { fileName: string }) {\n const ext = fileName.split(\".\").pop()?.toLowerCase();\n switch (ext) {\n case \"js\":\n case \"jsx\":\n case \"ts\":\n case \"tsx\":\n return <FileCode className=\"h-4 w-4\" />;\n case \"css\":\n case \"scss\":\n return <FileText className=\"h-4 w-4\" />;\n default:\n return <File className=\"h-4 w-4\" />;\n }\n}\n\nfunction HeaderIcon({\n fileName,\n icon,\n language,\n languageIcons,\n showLanguageIcon,\n}: {\n fileName: string;\n icon?: CodeBlockLanguageIconValue | undefined;\n language?: string | null | undefined;\n languageIcons?: CodeBlockLanguageIconMap | undefined;\n showLanguageIcon: boolean;\n}) {\n const fallback = <FileIcon fileName={fileName} />;\n\n if (!showLanguageIcon) return fallback;\n\n return (\n <CodeBlockLanguageIcon\n className=\"size-4\"\n fallback={fallback}\n icon={icon}\n icons={languageIcons}\n language={language || fileName}\n />\n );\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * CodeBlock — syntax-highlighted code viewer with copy + (optional) tabs.\n *\n * Two calling conventions are supported:\n *\n * @example Geist single-file (canonical for prose-embedded snippets)\n * ```tsx\n * <CodeBlock filename=\"Table.jsx\" language=\"jsx\" aria-label=\"Hello world\">\n * {code}\n * </CodeBlock>\n * ```\n *\n * @example Geist with a controlled language switcher\n * ```tsx\n * <CodeBlock\n * filename=\"example.tsx\"\n * language={lang}\n * switcher={{\n * options: [{ label: \"JS\", value: \"js\" }, { label: \"TS\", value: \"ts\" }],\n * value: lang,\n * onChange: setLang,\n * }}\n * >\n * {code}\n * </CodeBlock>\n * ```\n *\n * @example Multi-file tabs (Nebutra extension — Geist has no tabs)\n * ```tsx\n * <CodeBlock\n * files={[\n * { title: \"theme.ts\", code: themeCode },\n * { title: \"styles.css\", code: cssCode },\n * ]}\n * defaultTitle=\"theme.ts\"\n * />\n * ```\n *\n * Line number defaults:\n * - Single-file (Geist) → line numbers shown by default; opt out via `hideLineNumbers`.\n * - Multi-file (legacy) → hidden by default; opt in via `showLineNumbers`.\n */\nexport function CodeBlock(props: CodeBlockProps) {\n // Normalize single-file (Geist) and multi-file (legacy) shapes into one\n // internal representation. Single-file form is the canonical Geist surface;\n // multi-file form keeps tabs across `files[]`.\n const isSingleFile = \"children\" in props && typeof props.children === \"string\";\n\n const normalizedFiles: CodeBlockFile[] = isSingleFile\n ? (() => {\n const single = props as CodeBlockSingleProps;\n const f: CodeBlockFile = {\n title: single.filename ?? \"\",\n code: single.children,\n language: single.language,\n };\n if (single.highlightedLines !== undefined) f.highlightedLines = single.highlightedLines;\n if (single.addedLinesNumbers !== undefined) f.addedLines = single.addedLinesNumbers;\n if (single.removedLinesNumbers !== undefined) f.removedLines = single.removedLinesNumbers;\n if (single.languageIcon !== undefined) f.icon = single.languageIcon;\n return [f];\n })()\n : (props as CodeBlockFilesProps).files;\n\n const showFilenameHeader = isSingleFile\n ? Boolean((props as CodeBlockSingleProps).filename)\n : true;\n\n const {\n className,\n maxHeight = 400,\n enableLineReferences = false,\n onLineReference,\n languageIcons,\n showLanguageIcon = true,\n \"aria-label\": ariaLabel,\n } = props;\n\n // Line numbers default differs by form: Geist shows them by default\n // (`hideLineNumbers` opts out); legacy `files[]` defaults to hidden.\n const resolvedHide = props.hideLineNumbers;\n const resolvedShow = props.showLineNumbers;\n const showLineNumbers =\n resolvedShow !== undefined\n ? resolvedShow\n : resolvedHide !== undefined\n ? !resolvedHide\n : isSingleFile; // Geist default true; legacy default false\n\n // Switcher: single-file uses controlled `switcher` prop; multi-file uses\n // legacy uncontrolled `showLanguageSwitcher` + `languages`.\n const controlledSwitcher = isSingleFile ? (props as CodeBlockSingleProps).switcher : undefined;\n const showLanguageSwitcher =\n !isSingleFile && Boolean((props as CodeBlockFilesProps).showLanguageSwitcher);\n const languages = isSingleFile ? undefined : (props as CodeBlockFilesProps).languages;\n const defaultTitle = isSingleFile ? undefined : (props as CodeBlockFilesProps).defaultTitle;\n\n const [activeTitle, setActiveTitle] = useState(defaultTitle || normalizedFiles[0]?.title || \"\");\n const [copied, setCopied] = useState(false);\n const [isDark, setIsDark] = useState(false);\n const [languageOverride, setLanguageOverride] = useState<string | null>(null);\n const shouldReduceMotion = useReducedMotion();\n const scopeId = useId().replace(/:/g, \"\");\n const copyTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Centralized copy feedback with timer cleanup\n const showCopyFeedback = useCallback(() => {\n if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);\n setCopied(true);\n copyTimeoutRef.current = setTimeout(() => setCopied(false), 2000);\n }, []);\n\n // Clear timer on unmount\n useEffect(() => {\n return () => {\n if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);\n };\n }, []);\n\n // Reset language override when switching files\n useEffect(() => {\n setLanguageOverride(null);\n }, []);\n\n // Detect dark mode\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const checkDarkMode = () => {\n setIsDark(document.documentElement.classList.contains(\"dark\"));\n };\n\n checkDarkMode();\n\n const observer = new MutationObserver(checkDarkMode);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => observer.disconnect();\n }, []);\n\n const activeFile = normalizedFiles.find((file) => file.title === activeTitle);\n const code = activeFile?.code || \"\";\n const detectedLanguage = activeFile?.language || getLanguageFromFileName(activeTitle || \"\");\n // Priority: controlled switcher > local override > detected/passed language.\n const effectiveLanguage = controlledSwitcher?.value ?? languageOverride ?? detectedLanguage;\n const selectedControlledOption = controlledSwitcher?.options.find(\n (option) => option.value === controlledSwitcher.value,\n );\n const selectedControlledLabel = selectedControlledOption?.label ?? controlledSwitcher?.value;\n\n // Memoized Set lookups for O(1) per-line checks + stable useCallback deps\n const highlightedSet = useMemo(\n () => new Set(activeFile?.highlightedLines),\n [activeFile?.highlightedLines],\n );\n const addedSet = useMemo(() => new Set(activeFile?.addedLines), [activeFile?.addedLines]);\n const removedSet = useMemo(() => new Set(activeFile?.removedLines), [activeFile?.removedLines]);\n\n const hasLineFeatures =\n highlightedSet.size > 0 || addedSet.size > 0 || removedSet.size > 0 || enableLineReferences;\n\n // Line props for highlighted / diff lines\n const getLineProps = useCallback(\n (lineNumber: number): React.HTMLProps<HTMLElement> => {\n const styles: React.CSSProperties = {\n display: \"block\",\n paddingLeft: \"1rem\",\n paddingRight: \"1rem\",\n marginLeft: \"-1rem\",\n marginRight: \"-1rem\",\n };\n const dataAttrs: Record<string, string> = {};\n\n if (highlightedSet.has(lineNumber)) {\n styles.backgroundColor = isDark ? \"rgba(59, 130, 246, 0.15)\" : \"rgba(59, 130, 246, 0.08)\";\n styles.borderLeft = \"2px solid rgba(59, 130, 246, 0.6)\";\n styles.paddingLeft = \"calc(1rem - 2px)\";\n }\n\n if (addedSet.has(lineNumber)) {\n styles.backgroundColor = isDark ? \"rgba(16, 185, 129, 0.15)\" : \"rgba(16, 185, 129, 0.08)\";\n dataAttrs[\"data-diff\"] = \"+\";\n }\n\n if (removedSet.has(lineNumber)) {\n styles.backgroundColor = isDark ? \"rgba(239, 68, 68, 0.15)\" : \"rgba(239, 68, 68, 0.08)\";\n dataAttrs[\"data-diff\"] = \"-\";\n }\n\n return { style: styles, ...dataAttrs } as React.HTMLProps<HTMLElement>;\n },\n [highlightedSet, addedSet, removedSet, isDark],\n );\n\n // Line number styling for diff colors + clickable references\n const getLineNumberStyle = useCallback(\n (lineNumber: number): React.CSSProperties => {\n const style: React.CSSProperties = {};\n\n if (addedSet.has(lineNumber)) {\n style.color = \"rgb(16, 185, 129)\";\n } else if (removedSet.has(lineNumber)) {\n style.color = \"rgb(239, 68, 68)\";\n }\n\n if (enableLineReferences && showLineNumbers) {\n style.cursor = \"pointer\";\n style.userSelect = \"none\";\n }\n\n return style;\n },\n [addedSet, removedSet, enableLineReferences, showLineNumbers],\n );\n\n // Click handler for line references (event delegation)\n const handleCodeClick = useCallback(\n (e: React.MouseEvent) => {\n if (!enableLineReferences || !showLineNumbers) return;\n\n const target = e.target as HTMLElement;\n const lineNumEl = target.closest(\".react-syntax-highlighter-line-number, .linenumber\");\n if (!lineNumEl) return;\n\n const lineNumber = parseInt(lineNumEl.textContent?.trim() ?? \"\", 10);\n if (Number.isNaN(lineNumber)) return;\n\n const anchor = `#L${lineNumber}`;\n navigator.clipboard.writeText(anchor).catch(() => {});\n onLineReference?.(lineNumber);\n showCopyFeedback();\n },\n [enableLineReferences, showLineNumbers, onLineReference, showCopyFeedback],\n );\n\n const copyToClipboard = useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n showCopyFeedback();\n } catch {\n // Silently fail in environments without clipboard API\n }\n },\n [showCopyFeedback],\n );\n\n // Header is rendered only when there's something to show: tabs in multi-file\n // mode, a filename in single-file mode, a switcher, or the copy affordance.\n const hasMultipleFiles = normalizedFiles.length > 1;\n const hasSwitcher = showLanguageSwitcher || Boolean(controlledSwitcher);\n const showHeader =\n !(props as CommonCodeBlockProps).hideHeader &&\n (hasMultipleFiles || showFilenameHeader || hasSwitcher || true); // copy lives here unless hidden\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(\n \"cb-root relative rounded-[var(--radius-lg)] border bg-card text-card-foreground\",\n \"backdrop-blur-md\",\n className,\n )}\n data-scope={scopeId}\n >\n {/* Scoped styles for diff markers */}\n {(addedSet.size > 0 || removedSet.size > 0) && (\n <style>{`\n [data-scope=\"${scopeId}\"] [data-diff]::before {\n position: absolute;\n left: 0.5rem;\n font-weight: 600;\n font-size: 0.75rem;\n line-height: inherit;\n }\n [data-scope=\"${scopeId}\"] [data-diff=\"+\"]::before {\n content: \"+\";\n color: rgb(16 185 129);\n }\n [data-scope=\"${scopeId}\"] [data-diff=\"-\"]::before {\n content: \"-\";\n color: rgb(239 68 68);\n }\n `}</style>\n )}\n\n {/* Header — tabs (multi-file) or filename (single-file) + switcher + copy */}\n {showHeader && (\n <div className=\"flex items-center justify-between border-b px-4 py-2\">\n <div className=\"flex gap-1 overflow-x-auto\">\n {hasMultipleFiles ? (\n normalizedFiles.map(({ icon, language, title }) => (\n <button\n key={title}\n type=\"button\"\n onClick={() => setActiveTitle(title)}\n className={cn(\n \"inline-flex items-center gap-2 rounded-[var(--radius-md)] px-3 py-1.5 text-sm font-medium transition-colors\",\n title === activeTitle\n ? \"bg-secondary text-secondary-foreground\"\n : \"hover:bg-accent hover:text-accent-foreground\",\n )}\n >\n <HeaderIcon\n fileName={title}\n icon={icon}\n language={language || title}\n languageIcons={languageIcons}\n showLanguageIcon={showLanguageIcon}\n />\n <span className=\"hidden sm:inline\">{title}</span>\n </button>\n ))\n ) : showFilenameHeader && activeTitle ? (\n <span className=\"inline-flex items-center gap-2 px-2 py-1.5 text-muted-foreground text-sm\">\n <HeaderIcon\n fileName={activeTitle}\n icon={activeFile?.icon}\n language={effectiveLanguage}\n languageIcons={languageIcons}\n showLanguageIcon={showLanguageIcon}\n />\n <span>{activeTitle}</span>\n </span>\n ) : null}\n </div>\n\n <div className=\"flex items-center gap-1\">\n {/* Controlled switcher (Geist single-file API) */}\n {controlledSwitcher && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n aria-label={`Switch language, current: ${\n selectedControlledLabel ?? controlledSwitcher.value\n }`}\n aria-haspopup=\"menu\"\n className=\"inline-flex items-center gap-1 rounded-[var(--radius-md)] px-2 py-1 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-accent-foreground\"\n >\n <CodeBlockLanguageIcon\n className=\"size-3.5\"\n icon={selectedControlledOption?.icon}\n icons={languageIcons}\n language={controlledSwitcher.value}\n />\n <span>{selectedControlledLabel ?? controlledSwitcher.value}</span>\n <ChevronDown className=\"h-3 w-3\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"max-h-60 overflow-y-auto\">\n {controlledSwitcher.options.map((opt) => (\n <DropdownMenuItem\n key={opt.value}\n onClick={() => controlledSwitcher.onChange(opt.value)}\n className={cn(\n \"text-xs\",\n opt.value === controlledSwitcher.value && \"bg-accent font-medium\",\n )}\n >\n <CodeBlockLanguageIcon\n className=\"mr-1 size-3.5\"\n icon={opt.icon}\n icons={languageIcons}\n language={opt.value}\n />\n {opt.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {/* Uncontrolled switcher (legacy multi-file API) */}\n {showLanguageSwitcher && !controlledSwitcher && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n aria-label={`Switch language, current: ${effectiveLanguage}`}\n aria-haspopup=\"menu\"\n className=\"inline-flex items-center gap-1 rounded-[var(--radius-md)] px-2 py-1 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-accent-foreground\"\n >\n <CodeBlockLanguageIcon\n className=\"size-3.5\"\n icons={languageIcons}\n language={effectiveLanguage}\n />\n <span>{effectiveLanguage}</span>\n <ChevronDown className=\"h-3 w-3\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"max-h-60 overflow-y-auto\">\n {(languages ?? SUPPORTED_LANGUAGES).map((lang) => (\n <DropdownMenuItem\n key={lang}\n onClick={() => setLanguageOverride(lang)}\n className={cn(\n \"text-xs\",\n lang === effectiveLanguage && \"bg-accent font-medium\",\n )}\n >\n <CodeBlockLanguageIcon\n className=\"mr-1 size-3.5\"\n icons={languageIcons}\n language={lang}\n />\n {lang}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {/* Copy button */}\n <button\n type=\"button\"\n onClick={() => copyToClipboard(code)}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-[var(--radius-md)] hover:bg-accent hover:text-accent-foreground\"\n aria-label=\"Copy code\"\n >\n {copied ? (\n <motion.div\n initial={shouldReduceMotion ? { opacity: 0 } : { scale: 0 }}\n animate={shouldReduceMotion ? { opacity: 1 } : { scale: 1 }}\n exit={shouldReduceMotion ? { opacity: 0 } : { scale: 0 }}\n transition={{ duration: shouldReduceMotion ? 0 : 0.16 }}\n >\n <Check className=\"h-4 w-4\" />\n </motion.div>\n ) : (\n <Copy className=\"h-4 w-4\" />\n )}\n </button>\n </div>\n </div>\n )}\n\n {/* Code content */}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n <div\n className=\"overflow-auto\"\n style={{\n maxHeight: typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight,\n }}\n onClick={handleCodeClick}\n >\n <SyntaxHighlighter\n language={effectiveLanguage}\n style={isDark ? darkTheme : lightTheme}\n showLineNumbers={showLineNumbers}\n wrapLines={hasLineFeatures}\n lineProps={hasLineFeatures ? getLineProps : undefined}\n lineNumberStyle={showLineNumbers ? getLineNumberStyle : undefined}\n customStyle={{\n margin: 0,\n padding: \"1rem\",\n background: \"transparent\",\n fontFamily: CODE_FONT_FAMILY,\n fontSize: \"0.875rem\",\n }}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n Children,\n cloneElement,\n isValidElement,\n type ReactNode,\n type Ref,\n useId,\n useMemo,\n} from \"react\";\nimport { cn } from \"../utils/cn\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n type AccordionSize,\n AccordionTrigger,\n} from \"./accordion\";\n\n/* -------------------------------------------------------------------------- *\\\n * Collapse / CollapseGroup — Geist-style flat API on top of our Accordion.\n *\n * Surface choice:\n * Use `Collapse` for optional, advanced, or repetitive content most users\n * skip on most visits (FAQ, advanced settings, request payload preview).\n * For top-level structure every user reads, use page sections with regular\n * headings — collapsing primary content hides what the page is about.\n *\n * Standalone vs grouped:\n * A bare `<Collapse>` wraps itself in a single-item Accordion. Wrapping in\n * `<CollapseGroup>` lets siblings coordinate single-open semantics; pass\n * `multiple` when items are independent.\n *\n * Why this lives next to Accordion, not as a fork:\n * The Accordion primitive already encodes Base UI's a11y wiring, our\n * focus-visible tokens, the size variants matching Geist's \"default\" /\n * \"small\", and the open-state animations. Collapse is a thin facade that\n * rewrites Geist's `title` + `defaultExpanded` props into Accordion's\n * `value` + `defaultValue` model. Do not duplicate behavior.\n *\n * Content persistence:\n * `keepMounted` (default true) keeps the panel in the DOM when closed so\n * browser find-in-page and search crawlers can hit the content. Opt out\n * when the panel renders expensive widgets.\n\\* -------------------------------------------------------------------------- */\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport type CollapseSize = AccordionSize;\n\nexport type CollapseProps = {\n /** Panel heading. Title Case, names the topic (not the action). */\n title: ReactNode;\n /** Initial expanded state (uncontrolled). */\n defaultExpanded?: boolean;\n /** Visual variant. `small` for tight density (in-cards). */\n size?: CollapseSize;\n /**\n * Keep the panel content in the DOM when closed so browser find-in-page\n * and search crawlers still hit it. @default true\n */\n keepMounted?: boolean;\n /** Disable the trigger. */\n disabled?: boolean;\n children: ReactNode;\n className?: string;\n /** Internal — auto-set by CollapseGroup. Do not pass directly. */\n __value?: string;\n};\n\nexport type CollapseGroupProps = {\n /** Allow multiple panels open simultaneously. @default false */\n multiple?: boolean;\n /**\n * Visual variant applied to every child Collapse that doesn't set its own.\n */\n size?: CollapseSize;\n children: ReactNode;\n className?: string;\n};\n\n// ---------------------------------------------------------------------------\n// CollapseGroup\n// ---------------------------------------------------------------------------\n\nexport const CollapseGroup = function CollapseGroup({\n ref,\n multiple = false,\n size,\n children,\n className,\n}: CollapseGroupProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n // Walk children, stamp each Collapse with an auto-generated value, and\n // aggregate `defaultExpanded` flags into the Accordion's `defaultValue`.\n const groupId = useId();\n const { stampedChildren, defaultValue } = useMemo(() => {\n const stamped: ReactNode[] = [];\n const expanded: string[] = [];\n let index = 0;\n\n Children.forEach(children, (child) => {\n if (!isValidElement<CollapseProps>(child) || child.type !== Collapse) {\n stamped.push(child);\n return;\n }\n const value = `${groupId}-${index++}`;\n if (child.props.defaultExpanded) expanded.push(value);\n stamped.push(\n cloneElement(child, {\n __value: value,\n size: child.props.size ?? size,\n } as Partial<CollapseProps>),\n );\n });\n\n return { stampedChildren: stamped, defaultValue: expanded };\n }, [children, groupId, size]);\n\n // Base UI Accordion's \"single\" mode expects a string default; \"multiple\"\n // expects a string[]. Map accordingly.\n const accordionDefault: string | string[] = multiple ? defaultValue : (defaultValue[0] ?? \"\");\n\n return (\n <Accordion\n ref={ref}\n // biome-ignore lint/suspicious/noExplicitAny: Base UI's Accordion.Root types narrow defaultValue by `multiple` but TS can't follow the discriminator across our wrapper.\n multiple={multiple as any}\n defaultValue={accordionDefault as any}\n className={cn(\"w-full\", className)}\n >\n {stampedChildren}\n </Accordion>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Collapse\n// ---------------------------------------------------------------------------\n\nexport const Collapse = function Collapse({\n ref,\n title,\n defaultExpanded = false,\n size = \"default\",\n keepMounted = true,\n disabled,\n children,\n className,\n __value,\n}: CollapseProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n // Standalone mode: render our own single-item Accordion. CollapseGroup mode:\n // we receive __value and the parent owns the Accordion.\n const standaloneId = useId();\n const isStandalone = __value === undefined;\n const value = __value ?? standaloneId;\n\n const item = (\n <AccordionItem\n ref={ref}\n value={value}\n // exactOptionalPropertyTypes: only pass `disabled` when truthy so the\n // optional `boolean` prop never sees an explicit `undefined`.\n {...(disabled ? { disabled: true } : {})}\n className={cn(isStandalone && \"border-0\", className)}\n >\n <AccordionTrigger size={size}>{title}</AccordionTrigger>\n <AccordionContent size={size} keepMounted={keepMounted}>\n {children}\n </AccordionContent>\n </AccordionItem>\n );\n\n if (!isStandalone) return item;\n\n return (\n <Accordion\n // biome-ignore lint/suspicious/noExplicitAny: Base UI's Accordion.Root types narrow defaultValue by `multiple` but TS can't follow the discriminator across our wrapper.\n multiple={false as any}\n // biome-ignore lint/suspicious/noExplicitAny: see above\n defaultValue={(defaultExpanded ? value : \"\") as any}\n className=\"w-full\"\n >\n {item}\n </Accordion>\n );\n};\n","import { cn } from \"../utils/cn\";\n\nexport const commandFrameClassName = cn(\n \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium\",\n \"[&_[cmdk-group-heading]]:text-muted-foreground\",\n \"[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0\",\n \"[&_[cmdk-group]]:px-2\",\n \"[&_[data-cmdk-input-wrapper]_svg]:h-5 [&_[data-cmdk-input-wrapper]_svg]:w-5\",\n \"[&_[cmdk-input]]:h-12\",\n \"[&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-2.5\",\n \"[&_[cmdk-item]_svg]:h-4 [&_[cmdk-item]_svg]:w-4\",\n);\n\nexport const commandInputWrapperClassName = cn(\n \"flex items-center border-b border-border px-3\",\n \"transition-[border-color] duration-micro ease-out\",\n \"has-[:focus-visible]:border-ring/60\",\n);\n\nexport const commandInputClassName = cn(\n \"flex h-11 w-full appearance-none border-0 bg-transparent py-3 text-sm text-foreground shadow-none outline-none\",\n \"placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n \"outline-none focus-visible:outline-none\",\n \"[&::-webkit-search-cancel-button]:appearance-none\",\n \"[&::-webkit-search-decoration]:appearance-none\",\n \"[&::-webkit-search-results-button]:appearance-none\",\n \"[&::-webkit-search-results-decoration]:appearance-none\",\n);\n","\"use client\";\n\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { Cross as X } from \"@nebutra/icons\";\nimport * as React from \"react\";\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { overlayPrimitiveClassNames } from \"./overlay\";\n\n// We keep these standard export names so the rest of the application using Nebutra UI doesn't break.\nconst Dialog = BaseDialog.Root;\nconst DialogPortal = BaseDialog.Portal;\n\nconst DialogTrigger = ({\n asChild,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseDialog.Trigger> & { asChild?: boolean } & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BaseDialog.Trigger\n ref={ref}\n {...props}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BaseDialog.Trigger ref={ref} {...props}>\n {children}\n </BaseDialog.Trigger>\n );\n};\nDialogTrigger.displayName = \"DialogTrigger\";\n\nconst DialogClose = ({\n asChild,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseDialog.Close> & { asChild?: boolean } & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BaseDialog.Close\n ref={ref}\n {...props}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BaseDialog.Close ref={ref} {...props}>\n {children}\n </BaseDialog.Close>\n );\n};\nDialogClose.displayName = \"DialogClose\";\n\nconst DialogOverlay = ({\n className,\n style,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseDialog.Backdrop> & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <BaseDialog.Backdrop\n ref={ref}\n className={cn(overlayClassNames.backdrop, className)}\n style={{ zIndex: overlayZIndex.backdrop, ...style }}\n {...props}\n />\n);\nDialogOverlay.displayName = \"DialogOverlay\";\n\nconst DialogContent = ({\n className,\n children,\n style,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseDialog.Popup> & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <DialogPortal>\n <DialogOverlay />\n <BaseDialog.Popup\n ref={ref}\n className={cn(\n overlayClassNames.modalSurface,\n overlayPrimitiveClassNames.modalSurface,\n className,\n )}\n style={{ zIndex: overlayZIndex.modal, ...style }}\n {...props}\n >\n {children}\n <DialogClose className={overlayClassNames.closeButton}>\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogClose>\n </BaseDialog.Popup>\n </DialogPortal>\n);\nDialogContent.displayName = \"DialogContent\";\n\nconst DialogHeader = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseDialog.Title> & {\n ref?: React.Ref<HTMLHeadingElement> | undefined;\n}) => (\n <BaseDialog.Title\n ref={ref}\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n);\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseDialog.Description> & {\n ref?: React.Ref<HTMLParagraphElement> | undefined;\n}) => (\n <BaseDialog.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n);\nDialogDescription.displayName = \"DialogDescription\";\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\ntype Modifier = \"meta\" | \"shift\" | \"alt\" | \"ctrl\";\ntype Platform = \"apple\" | \"other\";\n\nexport interface KbdProps extends React.HTMLAttributes<HTMLElement> {\n /** Command on macOS/iOS; Ctrl on Windows/Linux. */\n meta?: boolean;\n /** Shift modifier. */\n shift?: boolean;\n /** Option on macOS/iOS; Alt on Windows/Linux. */\n alt?: boolean;\n /** Control modifier. */\n ctrl?: boolean;\n /** Smaller size for dense surfaces. */\n small?: boolean;\n /** One key, digit, punctuation mark, or named key. */\n children?: React.ReactNode;\n className?: string;\n}\n\nconst modifierOrder = [\"meta\", \"shift\", \"alt\", \"ctrl\"] as const satisfies ReadonlyArray<Modifier>;\n\nconst appleModifierSymbols: Record<Modifier, string> = {\n meta: \"⌘\",\n shift: \"⇧\",\n alt: \"⌥\",\n ctrl: \"⌃\",\n};\n\nconst otherModifierSymbols: Record<Modifier, string> = {\n meta: \"Ctrl\",\n shift: \"Shift\",\n alt: \"Alt\",\n ctrl: \"Ctrl\",\n};\n\nconst modifierLabels: Record<Modifier, string> = {\n meta: \"Command or Control\",\n shift: \"Shift\",\n alt: \"Option or Alt\",\n ctrl: \"Control\",\n};\n\nfunction getClientPlatform(): Platform {\n const platform = window.navigator.platform.toLowerCase();\n const userAgent = window.navigator.userAgent.toLowerCase();\n const isApple = /mac|iphone|ipad|ipod/.test(platform) || /mac|iphone|ipad|ipod/.test(userAgent);\n\n return isApple ? \"apple\" : \"other\";\n}\n\nfunction subscribePlatform(): () => void {\n return () => undefined;\n}\n\nfunction usePlatform(): Platform {\n return React.useSyncExternalStore(subscribePlatform, getClientPlatform, () => \"apple\");\n}\n\nfunction normalizeKey(children: React.ReactNode): React.ReactNode {\n if (typeof children !== \"string\") {\n return children;\n }\n\n const trimmed = children.trim();\n\n if (/^[a-z]$/.test(trimmed)) {\n return trimmed.toUpperCase();\n }\n\n return trimmed;\n}\n\nfunction getModifierSymbols(platform: Platform): Record<Modifier, string> {\n return platform === \"apple\" ? appleModifierSymbols : otherModifierSymbols;\n}\n\nconst Kbd = ({\n meta,\n shift,\n alt,\n ctrl,\n small,\n children,\n className,\n \"aria-label\": ariaLabel,\n ref,\n ...props\n}: KbdProps & { ref?: React.Ref<HTMLElement> | undefined }) => {\n const platform = usePlatform();\n const symbols = getModifierSymbols(platform);\n const activeModifiers = modifierOrder.filter((modifier) => {\n if (modifier === \"meta\") return meta;\n if (modifier === \"shift\") return shift;\n if (modifier === \"alt\") return alt;\n return ctrl;\n });\n const normalizedKey = normalizeKey(children);\n const visualParts = [\n ...activeModifiers.map((modifier) => symbols[modifier]),\n normalizedKey,\n ].filter(Boolean);\n const accessibleName =\n ariaLabel ??\n [\n ...activeModifiers.map((modifier) => modifierLabels[modifier]),\n typeof normalizedKey === \"string\" ? normalizedKey : undefined,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <kbd\n ref={ref as React.Ref<HTMLElement>}\n aria-label={accessibleName || undefined}\n className={cn(\n \"inline-flex select-none items-center justify-center gap-0.5 rounded-[var(--radius-sm)] border border-border bg-muted font-mono font-medium leading-none text-muted-foreground tabular-nums\",\n small ? \"min-h-4 min-w-4 px-1 py-0 text-xs\" : \"min-h-5 min-w-5 px-1.5 py-0.5 text-xs\",\n className,\n )}\n {...props}\n >\n {visualParts.join(\"\")}\n </kbd>\n );\n};\nKbd.displayName = \"Kbd\";\n\nexport { Kbd };\n","\"use client\";\n\nimport { MagnifyingGlass as Search } from \"@nebutra/icons\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport {\n commandFrameClassName,\n commandInputClassName,\n commandInputWrapperClassName,\n} from \"./command-styles\";\nimport { Dialog, DialogContent } from \"./dialog\";\nimport { Kbd } from \"./kbd\";\nimport { overlayPrimitiveClassNames } from \"./overlay\";\n\nexport type CommandProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive>;\n\nexport type CommandDialogProps = React.ComponentPropsWithoutRef<typeof Dialog> & {\n children?: React.ReactNode;\n};\n\nexport type CommandInputProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>;\n\nexport type CommandListProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>;\n\nexport type CommandEmptyProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>;\n\nexport type CommandGroupProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>;\n\nexport type CommandSeparatorProps = React.ComponentPropsWithoutRef<\n typeof CommandPrimitive.Separator\n>;\n\nexport type CommandItemProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>;\n\nexport interface CommandShortcutProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Render each shortcut token as a separate Kbd key. */\n keys?: ReadonlyArray<React.ReactNode>;\n /** Accessible label for compact shortcut glyphs. */\n label?: string;\n}\n\nexport interface CommandResultsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current visible result count. Pass from product state when known. */\n count?: number;\n /** Current search query, used only for the default screen-reader message. */\n search?: string;\n /** Custom screen-reader announcement. */\n label?: (count: number | undefined, search: string) => React.ReactNode;\n}\n\n/**\n * Command - A command palette / autocomplete component\n *\n * @description\n * Based on cmdk, provides a fast, composable command palette interface.\n * Can be used standalone or inside a dialog.\n *\n * @example Basic usage\n * ```tsx\n * <Command>\n * <CommandInput placeholder=\"Search...\" />\n * <CommandList>\n * <CommandEmpty>No results found.</CommandEmpty>\n * <CommandGroup heading=\"Suggestions\">\n * <CommandItem>Calendar</CommandItem>\n * <CommandItem>Search</CommandItem>\n * </CommandGroup>\n * </CommandList>\n * </Command>\n * ```\n *\n * @example In dialog\n * ```tsx\n * <CommandDialog open={open} onOpenChange={setOpen}>\n * <CommandInput placeholder=\"Type a command...\" />\n * <CommandList>\n * <CommandGroup heading=\"Actions\">\n * <CommandItem>New File</CommandItem>\n * <CommandItem>Settings</CommandItem>\n * </CommandGroup>\n * </CommandList>\n * </CommandDialog>\n * ```\n */\nconst Command = ({\n className,\n ref,\n ...props\n}: CommandProps & { ref?: React.Ref<React.ElementRef<typeof CommandPrimitive>> | undefined }) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden\",\n overlayPrimitiveClassNames.commandFrame,\n className,\n )}\n {...props}\n />\n);\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent\n className={cn(\n overlayPrimitiveClassNames.modalSurface,\n overlayPrimitiveClassNames.commandDialogSurface,\n )}\n >\n <Command className={commandFrameClassName}>{children}</Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = ({\n className,\n ref,\n ...props\n}: CommandInputProps & {\n ref?: React.Ref<React.ElementRef<typeof CommandPrimitive.Input>> | undefined;\n}) => (\n <div className={commandInputWrapperClassName} data-cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input ref={ref} className={cn(commandInputClassName, className)} {...props} />\n </div>\n);\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = ({\n className,\n ref,\n ...props\n}: CommandListProps & {\n ref?: React.Ref<React.ElementRef<typeof CommandPrimitive.List>> | undefined;\n}) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n);\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = ({\n ref,\n ...props\n}: CommandEmptyProps & {\n ref?: React.Ref<React.ElementRef<typeof CommandPrimitive.Empty>> | undefined;\n}) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />;\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = ({\n className,\n ref,\n ...props\n}: CommandGroupProps & {\n ref?: React.Ref<React.ElementRef<typeof CommandPrimitive.Group>> | undefined;\n}) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n);\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = ({\n className,\n ref,\n ...props\n}: CommandSeparatorProps & {\n ref?: React.Ref<React.ElementRef<typeof CommandPrimitive.Separator>> | undefined;\n}) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n);\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = ({\n className,\n ref,\n ...props\n}: CommandItemProps & {\n ref?: React.Ref<React.ElementRef<typeof CommandPrimitive.Item>> | undefined;\n}) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(overlayPrimitiveClassNames.commandItem, className)}\n {...props}\n />\n);\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst defaultResultsLabel = (count: number | undefined, search: string) => {\n if (typeof count !== \"number\") return \"Command results updated.\";\n if (search.trim().length === 0) return `${count} command results available.`;\n return `${count} command results available for ${search}.`;\n};\n\nconst CommandResults = ({\n className,\n count,\n search = \"\",\n label = defaultResultsLabel,\n children,\n ref,\n ...props\n}: CommandResultsProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n aria-atomic=\"true\"\n aria-live=\"polite\"\n className={cn(\"sr-only\", className)}\n {...props}\n >\n {children ?? label(count, search)}\n </div>\n);\nCommandResults.displayName = \"CommandResults\";\n\nconst shortcutKeyId = (key: React.ReactNode) => {\n if (typeof key === \"string\" || typeof key === \"number\") return String(key);\n if (React.isValidElement(key) && key.key != null) return String(key.key);\n return String(key);\n};\n\nconst CommandShortcut = ({ className, keys, label, children, ...props }: CommandShortcutProps) => {\n const shortcutKeys = keys ?? (children != null ? [children] : []);\n\n return (\n <span\n className={cn(\"ml-auto flex shrink-0 items-center gap-1 text-muted-foreground\", className)}\n {...props}\n >\n {label ? <span className=\"sr-only\">{label}</span> : null}\n {shortcutKeys.map((key) => (\n <Kbd key={shortcutKeyId(key)} aria-hidden={label ? true : undefined} small>\n {key}\n </Kbd>\n ))}\n </span>\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandResults,\n CommandSeparator,\n CommandShortcut,\n};\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement>,\n VariantProps<typeof labelVariants> {}\n\n// =============================================================================\n// Components\n// =============================================================================\n\n/**\n * Label - Accessible form label component\n *\n * @description\n * A label component built as a native HTML label element.\n * Automatically handles accessibility attributes and peer styling.\n *\n * @example Basic usage\n * ```tsx\n * <Label htmlFor=\"email\">Email</Label>\n * <Input id=\"email\" type=\"email\" />\n * ```\n *\n * @example With peer styling (disabled state)\n * ```tsx\n * <div className=\"flex items-center gap-2\">\n * <Checkbox id=\"terms\" disabled />\n * <Label htmlFor=\"terms\">Accept terms</Label>\n * </div>\n * ```\n *\n * @example Required field indicator\n * ```tsx\n * <Label htmlFor=\"name\">\n * Name <span className=\"text-destructive\">*</span>\n * </Label>\n * ```\n */\nconst Label = ({\n className,\n ref,\n ...props\n}: LabelProps & { ref?: React.Ref<HTMLLabelElement> | undefined }) => (\n <label ref={ref} className={cn(labelVariants(), className)} {...props} />\n);\nLabel.displayName = \"Label\";\n\nexport { Label, labelVariants };\n","import { Popover as PopoverPrimitive } from \"@base-ui/react/popover\";\nimport * as React from \"react\";\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { overlayPrimitiveClassNames } from \"./overlay\";\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\ntype PopoverTriggerProps = React.ComponentProps<typeof PopoverPrimitive.Trigger> & {\n asChild?: boolean;\n};\n\nfunction PopoverTrigger({ asChild, children, render, ...props }: PopoverTriggerProps) {\n const renderElement: PopoverPrimitive.Trigger.Props[\"render\"] =\n asChild && React.isValidElement(children) ? children : render;\n return (\n <PopoverPrimitive.Trigger\n data-slot=\"popover-trigger\"\n render={renderElement}\n {...(renderElement ? props : { ...props, children })}\n />\n );\n}\n\nfunction PopoverPositioner({\n sideOffset = 4,\n style,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Positioner>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n data-slot=\"popover-positioner\"\n sideOffset={sideOffset}\n style={{ zIndex: overlayZIndex.popover, ...style }}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nexport interface PopoverContentProps extends React.ComponentProps<typeof PopoverPrimitive.Popup> {\n align?: PopoverPrimitive.Positioner.Props[\"align\"];\n sideOffset?: PopoverPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: PopoverPrimitive.Positioner.Props[\"alignOffset\"];\n side?: PopoverPrimitive.Positioner.Props[\"side\"];\n showArrow?: boolean;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 8,\n alignOffset = 0,\n side = \"bottom\",\n children,\n showArrow = false,\n style,\n ...props\n}: PopoverContentProps) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n data-slot=\"popover-positioner\"\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n side={side}\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n overlayClassNames.popoverSurface,\n overlayPrimitiveClassNames.popoverSurface,\n className,\n )}\n style={{ zIndex: overlayZIndex.popover, ...style }}\n {...props}\n >\n {children}\n {showArrow && <PopoverArrow />}\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverArrow({\n className,\n style,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Arrow>) {\n return (\n <PopoverPrimitive.Arrow\n data-slot=\"popover-arrow\"\n className={cn(\n \"data-[side=bottom]:top-[-8px] data-[side=left]:right-[-13px] data-[side=left]:rotate-90 data-[side=right]:left-[-13px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-8px] data-[side=top]:rotate-180\",\n className,\n )}\n style={{ zIndex: overlayZIndex.popover, ...style }}\n {...props}\n >\n <svg aria-hidden=\"true\" width=\"20\" height=\"10\" viewBox=\"0 0 20 10\" fill=\"none\">\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V9H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n className=\"fill-popover\"\n />\n <path\n d=\"M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z\"\n className=\"fill-border\"\n />\n </svg>\n </PopoverPrimitive.Arrow>\n );\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverAnchor, PopoverContent, PopoverPositioner, PopoverTrigger };\n","\"use client\";\n\nimport { Check, ChevronUpDown as ChevronsUpDown } from \"@nebutra/icons\";\nimport { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n type CommandListProps,\n CommandSeparator,\n} from \"./command\";\nimport { Label } from \"./label\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type ComboboxSize = \"small\" | \"medium\" | \"large\";\ntype LegacyComboboxSize = \"sm\" | \"default\" | \"lg\";\ntype ComboboxValue = string | null;\ntype ComboboxWidth = number | string;\ntype ComboboxStyle = React.CSSProperties & {\n \"--combobox-width\"?: string;\n \"--combobox-trigger-height\"?: string;\n \"--combobox-trigger-padding-x\"?: string;\n \"--combobox-font-size\"?: string;\n};\n\nconst comboboxSizeMap = {\n sm: \"small\",\n default: \"medium\",\n lg: \"large\",\n small: \"small\",\n medium: \"medium\",\n large: \"large\",\n} as const satisfies Record<ComboboxSize | LegacyComboboxSize, ComboboxSize>;\n\nconst comboboxSizeTokens = {\n small: {\n \"--combobox-trigger-height\": \"2rem\",\n \"--combobox-trigger-padding-x\": \"0.625rem\",\n \"--combobox-font-size\": \"0.75rem\",\n },\n medium: {\n \"--combobox-trigger-height\": \"2.5rem\",\n \"--combobox-trigger-padding-x\": \"0.75rem\",\n \"--combobox-font-size\": \"0.875rem\",\n },\n large: {\n \"--combobox-trigger-height\": \"3rem\",\n \"--combobox-trigger-padding-x\": \"0.875rem\",\n \"--combobox-font-size\": \"1rem\",\n },\n} as const satisfies Record<ComboboxSize, ComboboxStyle>;\n\nexport interface ComboboxOption {\n /** Machine value — used for selection matching */\n value: string;\n /** Human-readable label displayed in trigger and list */\n label: string;\n /** Disable this specific option */\n disabled?: boolean;\n /** Assign to a group heading key */\n group?: string;\n}\n\ninterface ComboboxBaseProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> {\n /** Flat list of options — the component handles grouping internally via option.group */\n options?: ComboboxOption[];\n /** Disable the entire combobox */\n disabled?: boolean;\n /** Show error styling. Prefer `errored`; `error` is kept for existing consumers. */\n errored?: boolean;\n /** @deprecated Use `errored`. */\n error?: boolean;\n /** Size variant matching Nebutra form controls. Legacy `sm`/`default`/`lg` values still map through. */\n size?: ComboboxSize | LegacyComboboxSize;\n /** Custom root width. Numbers are treated as pixels; strings can be CSS lengths. */\n width?: ComboboxWidth;\n /** Custom list max width. Numbers are treated as pixels; strings can be CSS lengths. */\n listMaxWidth?: ComboboxWidth;\n /** Accessible label shown above the trigger */\n label?: string;\n /** Whether the label is visually hidden (still accessible) */\n hideLabel?: boolean;\n /** Text shown in trigger when nothing is selected */\n placeholder?: string;\n /** Text shown when no options match the search */\n emptyMessage?: string;\n /** Placeholder inside the search input */\n searchPlaceholder?: string;\n /** Composition mode — children provide their own CommandInput/List/etc. */\n children?: React.ReactNode;\n /** Loading state for async option providers. */\n loading?: boolean;\n /** Text shown while async options are loading. */\n loadingMessage?: string;\n /** Accessible name when no visible label is rendered. */\n \"aria-label\"?: string;\n}\n\ninterface ControlledComboboxProps extends ComboboxBaseProps {\n value: ComboboxValue;\n onChange: (value: ComboboxValue) => void;\n defaultValue?: never;\n}\n\ninterface UncontrolledComboboxProps extends ComboboxBaseProps {\n value?: never;\n onChange?: (value: ComboboxValue) => void;\n defaultValue?: ComboboxValue;\n}\n\nexport type ComboboxProps = ControlledComboboxProps | UncontrolledComboboxProps;\n\nexport interface ComboboxOptionProps {\n value: string;\n label?: string;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport type ComboboxInputProps = React.ComponentPropsWithoutRef<typeof CommandInput>;\n\nexport type ComboboxEmptyProps = React.ComponentPropsWithoutRef<typeof CommandEmpty>;\n\nexport type ComboboxGroupProps = React.ComponentPropsWithoutRef<typeof CommandGroup>;\n\nexport interface ComboboxListProps extends CommandListProps {\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n emptyMessage?: React.ReactNode;\n // explicit `| undefined` to accept passthrough under `exactOptionalPropertyTypes`\n maxWidth?: ComboboxWidth | undefined;\n}\n\n// =============================================================================\n// CVA Variants\n// =============================================================================\n\nexport const comboboxTriggerVariants = cva(\n [\n \"flex w-full items-center justify-between gap-2 whitespace-nowrap\",\n \"h-[var(--combobox-trigger-height)] rounded-[var(--radius-md)] border border-input bg-background px-[var(--combobox-trigger-padding-x)]\",\n \"text-[length:var(--combobox-font-size)] ring-offset-background\",\n \"transition-colors duration-micro ease-out\",\n \"placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&>span]:line-clamp-1 [&>span]:text-left\",\n ].join(\" \"),\n {\n variants: {\n size: {\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n error: {\n true: \"border-destructive focus-visible:ring-destructive\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n error: false,\n },\n },\n);\n\n// =============================================================================\n// Context\n// =============================================================================\n\ninterface ComboboxContextValue {\n selectedValue: ComboboxValue;\n onSelect: (value: string) => void;\n}\n\nconst ComboboxContext = React.createContext<ComboboxContextValue | null>(null);\n\nfunction useComboboxContext(): ComboboxContextValue {\n const ctx = React.use(ComboboxContext);\n if (!ctx) {\n throw new Error(\"Combobox sub-components must be used within <Combobox>\");\n }\n return ctx;\n}\n\n// =============================================================================\n// ComboboxOption (sub-component)\n// =============================================================================\n\nconst ComboboxOptionItem = ({\n ref,\n value,\n label,\n disabled,\n className,\n children,\n}: ComboboxOptionProps & { ref?: React.Ref<React.ElementRef<typeof CommandItem>> | undefined }) => {\n const { selectedValue, onSelect } = useComboboxContext();\n const isSelected = selectedValue === value;\n\n // Build keywords for cmdk search: prefer explicit label, fall back to string children\n const keywords = React.useMemo(() => {\n if (label) return [label];\n if (typeof children === \"string\") return [children];\n return undefined;\n }, [label, children]);\n\n return (\n <CommandItem\n ref={ref}\n value={value}\n {...(keywords ? { keywords } : {})}\n disabled={disabled ?? false}\n onSelect={onSelect}\n className={cn(\"gap-2\", className)}\n >\n <Check\n aria-hidden=\"true\"\n className={cn(\"h-4 w-4 shrink-0\", isSelected ? \"opacity-100\" : \"opacity-0\")}\n />\n {children ?? label ?? value}\n </CommandItem>\n );\n};\nComboboxOptionItem.displayName = \"Combobox.Option\";\n\n// =============================================================================\n// ComboboxInput (sub-component)\n// =============================================================================\n\nconst ComboboxInput = ({\n ref,\n ...props\n}: ComboboxInputProps & { ref?: React.Ref<React.ElementRef<typeof CommandInput>> | undefined }) => (\n <CommandInput ref={ref} {...props} />\n);\nComboboxInput.displayName = \"Combobox.Input\";\n\n// =============================================================================\n// ComboboxEmpty (sub-component)\n// =============================================================================\n\nconst ComboboxEmpty = ({\n ref,\n ...props\n}: ComboboxEmptyProps & { ref?: React.Ref<React.ElementRef<typeof CommandEmpty>> | undefined }) => (\n <CommandEmpty ref={ref} {...props} />\n);\nComboboxEmpty.displayName = \"Combobox.Empty\";\n\n// =============================================================================\n// ComboboxGroup (sub-component)\n// =============================================================================\n\nconst ComboboxGroupSub = ({\n ref,\n ...props\n}: ComboboxGroupProps & { ref?: React.Ref<React.ElementRef<typeof CommandGroup>> | undefined }) => (\n <CommandGroup ref={ref} {...props} />\n);\nComboboxGroupSub.displayName = \"Combobox.Group\";\n\n// =============================================================================\n// ComboboxSeparator (sub-component)\n// =============================================================================\n\nconst ComboboxSeparator = CommandSeparator;\n\nconst ComboboxList = ({\n children,\n className,\n emptyMessage = \"No results found.\",\n maxWidth,\n style,\n ref,\n ...props\n}: ComboboxListProps & { ref?: React.Ref<React.ElementRef<typeof CommandList>> | undefined }) => {\n const listStyle = {\n ...style,\n ...(maxWidth ? { maxWidth: toCssLength(maxWidth) } : undefined),\n } satisfies React.CSSProperties;\n\n return (\n <CommandList ref={ref} className={className} style={listStyle} {...props}>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n {children}\n </CommandList>\n );\n};\nComboboxList.displayName = \"Combobox.List\";\n\n// =============================================================================\n// ComboboxRoot\n// =============================================================================\n\nfunction toCssLength(value: ComboboxWidth): string {\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nfunction ComboboxRoot({\n options,\n value: controlledValue,\n onChange,\n defaultValue = null,\n disabled = false,\n errored,\n error = false,\n size = \"medium\",\n width,\n listMaxWidth,\n label,\n hideLabel = false,\n placeholder = \"Select...\",\n emptyMessage = \"No results found.\",\n searchPlaceholder = \"Search...\",\n loading = false,\n loadingMessage = \"Loading options...\",\n children,\n className,\n style,\n \"aria-label\": ariaLabel,\n ...props\n}: ComboboxProps) {\n // Controlled / uncontrolled value management\n const [internalValue, setInternalValue] = React.useState<ComboboxValue>(defaultValue);\n const selectedValue = controlledValue !== undefined ? controlledValue : internalValue;\n const normalizedSize = comboboxSizeMap[size];\n const isErrored = errored ?? error;\n\n // Ref to avoid stale closure in handleSelect toggle logic\n const selectedValueRef = React.useRef(selectedValue);\n selectedValueRef.current = selectedValue;\n\n const [open, setOpen] = React.useState(false);\n\n const handleSelect = React.useCallback(\n (incoming: string) => {\n const current = selectedValueRef.current;\n const next = incoming === current ? null : incoming;\n if (controlledValue === undefined) setInternalValue(next);\n onChange?.(next);\n setOpen(false);\n },\n [controlledValue, onChange],\n );\n\n // Find label for currently selected value when using options prop\n const selectedLabel = React.useMemo(() => {\n if (!selectedValue) return \"\";\n if (!options) return selectedValue;\n return options.find((o) => o.value === selectedValue)?.label ?? selectedValue;\n }, [options, selectedValue]);\n\n const labelId = React.useId();\n const triggerId = React.useId();\n const listboxId = React.useId();\n\n const contextValue = React.useMemo<ComboboxContextValue>(\n () => ({ selectedValue: selectedValue ?? null, onSelect: handleSelect }),\n [selectedValue, handleSelect],\n );\n\n // Group options by their `group` key\n const groupedOptions = React.useMemo(() => {\n if (!options) return null;\n const grouped = new Map<string | undefined, ComboboxOption[]>();\n for (const opt of options) {\n const key = opt.group;\n const group = grouped.get(key);\n if (group) {\n group.push(opt);\n } else {\n grouped.set(key, [opt]);\n }\n }\n return grouped;\n }, [options]);\n\n const renderContent = () => {\n if (groupedOptions) {\n const listProps = {\n emptyMessage: loading ? loadingMessage : emptyMessage,\n ...(listMaxWidth ? { maxWidth: listMaxWidth } : undefined),\n } satisfies ComboboxListProps;\n\n return (\n <>\n <CommandInput placeholder={searchPlaceholder} />\n <ComboboxList {...listProps}>\n {!loading &&\n Array.from(groupedOptions.entries()).map(([group, opts]) => (\n <CommandGroup key={group ?? \"__ungrouped__\"} heading={group}>\n {opts.map((opt) => (\n <ComboboxOptionItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled ?? false}\n >\n {opt.label}\n </ComboboxOptionItem>\n ))}\n </CommandGroup>\n ))}\n </ComboboxList>\n </>\n );\n }\n return children;\n };\n\n const rootStyle = {\n ...style,\n ...comboboxSizeTokens[normalizedSize],\n ...(width ? { \"--combobox-width\": toCssLength(width) } : undefined),\n } satisfies ComboboxStyle;\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <div\n className={cn(\"flex w-[var(--combobox-width,100%)] flex-col gap-1.5\", className)}\n style={rootStyle}\n {...props}\n >\n {label && (\n <Label id={labelId} htmlFor={triggerId} className={cn(hideLabel && \"sr-only\")}>\n {label}\n </Label>\n )}\n <Popover\n open={open}\n onOpenChange={(isOpen) => {\n if (!disabled) setOpen(isOpen);\n }}\n >\n <PopoverTrigger asChild>\n <button\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={listboxId}\n aria-labelledby={label ? labelId : undefined}\n aria-label={!label ? (ariaLabel ?? placeholder) : undefined}\n aria-invalid={isErrored || undefined}\n data-invalid={isErrored || undefined}\n disabled={disabled}\n className={cn(comboboxTriggerVariants({ size: normalizedSize, error: isErrored }))}\n >\n <span className={cn(!selectedValue && \"text-muted-foreground\")}>\n {selectedValue ? selectedLabel : placeholder}\n </span>\n <ChevronsUpDown aria-hidden=\"true\" className=\"h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0\"\n style={{\n width: \"var(--combobox-width, var(--radix-popover-trigger-width))\",\n maxWidth: listMaxWidth ? toCssLength(listMaxWidth) : undefined,\n }}\n >\n <Command id={listboxId}>{renderContent()}</Command>\n </PopoverContent>\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n}\nComboboxRoot.displayName = \"Combobox\";\n\n// =============================================================================\n// Compound Export\n// =============================================================================\n\n/**\n * Combobox — Geist-style searchable select with compound API.\n *\n * @example Simple mode (options prop — fully self-contained)\n * ```tsx\n * <Combobox\n * label=\"Framework\"\n * options={[\n * { value: \"next\", label: \"Next.js\" },\n * { value: \"remix\", label: \"Remix\" },\n * ]}\n * value={value}\n * onChange={setValue}\n * placeholder=\"Select framework...\"\n * />\n * ```\n *\n * @example Composition mode (manual children)\n * ```tsx\n * <Combobox value={value} onChange={setValue} placeholder=\"Search...\">\n * <Combobox.Input placeholder=\"Search frameworks...\" />\n * <Combobox.List emptyMessage=\"Nothing here.\">\n * <Combobox.Group heading=\"Frontend\">\n * <Combobox.Option value=\"next\">Next.js</Combobox.Option>\n * <Combobox.Option value=\"remix\">Remix</Combobox.Option>\n * </Combobox.Group>\n * </Combobox.List>\n * </Combobox>\n * ```\n */\nconst Combobox = Object.assign(ComboboxRoot, {\n Input: ComboboxInput,\n List: ComboboxList,\n Option: ComboboxOptionItem,\n Empty: ComboboxEmpty,\n Group: ComboboxGroupSub,\n Separator: ComboboxSeparator,\n});\n\nexport {\n Combobox,\n ComboboxEmpty,\n ComboboxGroupSub,\n ComboboxInput,\n ComboboxList,\n ComboboxOptionItem,\n ComboboxRoot,\n ComboboxSeparator,\n};\n","\"use client\";\n\nimport { ContextMenu as BaseContextMenu } from \"@base-ui/react/context-menu\";\nimport { Check, ChevronRight } from \"@nebutra/icons\";\nimport * as React from \"react\";\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { overlayPrimitiveClassNames } from \"./overlay\";\n\ntype ContextMenuItemVariant = \"default\" | \"destructive\";\n\nexport interface ContextMenuItemProps\n extends Pick<\n React.ComponentPropsWithoutRef<typeof BaseContextMenu.Item>,\n \"disabled\" | \"label\" | \"closeOnClick\"\n > {\n children?: React.ReactNode;\n onSelect?: React.ComponentPropsWithoutRef<typeof BaseContextMenu.Item>[\"onClick\"];\n href?: string;\n target?: React.HTMLAttributeAnchorTarget;\n rel?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n variant?: ContextMenuItemVariant;\n value?: string;\n className?: string;\n}\n\nexport interface ContextMenuCheckboxItemProps\n extends Pick<\n React.ComponentPropsWithoutRef<typeof BaseContextMenu.CheckboxItem>,\n \"checked\" | \"defaultChecked\" | \"disabled\" | \"label\" | \"closeOnClick\" | \"onCheckedChange\"\n > {\n children?: React.ReactNode;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n onSelect?: React.ComponentPropsWithoutRef<typeof BaseContextMenu.CheckboxItem>[\"onClick\"];\n value?: string;\n className?: string;\n}\n\nexport interface ContextMenuRadioGroupProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof BaseContextMenu.RadioGroup>,\n \"value\" | \"defaultValue\" | \"onValueChange\"\n > {\n value?: string;\n defaultValue?: string;\n onValueChange?: (\n value: string,\n eventDetails: Parameters<\n NonNullable<\n React.ComponentPropsWithoutRef<typeof BaseContextMenu.RadioGroup>[\"onValueChange\"]\n >\n >[1],\n ) => void;\n}\n\nexport interface ContextMenuRadioItemProps\n extends Pick<\n React.ComponentPropsWithoutRef<typeof BaseContextMenu.RadioItem>,\n \"disabled\" | \"label\" | \"closeOnClick\"\n > {\n children?: React.ReactNode;\n value: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n onSelect?: React.ComponentPropsWithoutRef<typeof BaseContextMenu.RadioItem>[\"onClick\"];\n className?: string;\n}\n\nexport interface ContextMenuSubTriggerProps\n extends Pick<\n React.ComponentPropsWithoutRef<typeof BaseContextMenu.SubmenuTrigger>,\n \"disabled\" | \"label\" | \"delay\" | \"closeDelay\" | \"openOnHover\"\n > {\n children?: React.ReactNode;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n onSelect?: React.ComponentPropsWithoutRef<typeof BaseContextMenu.SubmenuTrigger>[\"onClick\"];\n className?: string;\n}\n\nexport interface ContextMenuLabelProps {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface ContextMenuSeparatorProps {\n className?: string;\n}\n\nexport interface ContextMenuContentProps\n extends React.ComponentPropsWithoutRef<typeof BaseContextMenu.Popup> {\n align?: React.ComponentProps<typeof BaseContextMenu.Positioner>[\"align\"];\n sideOffset?: React.ComponentProps<typeof BaseContextMenu.Positioner>[\"sideOffset\"];\n alignOffset?: React.ComponentProps<typeof BaseContextMenu.Positioner>[\"alignOffset\"];\n side?: React.ComponentProps<typeof BaseContextMenu.Positioner>[\"side\"];\n}\n\nfunction ContextMenuItemContent({\n children,\n prefix,\n suffix,\n inset = false,\n}: {\n children?: React.ReactNode;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n inset?: boolean;\n}) {\n return (\n <>\n {prefix && <span className=\"flex shrink-0 items-center text-muted-foreground\">{prefix}</span>}\n {!prefix && inset && <span aria-hidden=\"true\" className=\"size-4 shrink-0\" />}\n <span className=\"min-w-0 flex-1 truncate\">{children}</span>\n {suffix && (\n <span className=\"ml-auto flex shrink-0 items-center text-muted-foreground\">{suffix}</span>\n )}\n </>\n );\n}\n\nexport const ContextMenuRoot = BaseContextMenu.Root;\n\nexport const ContextMenuTrigger = ({\n asChild,\n children,\n render,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseContextMenu.Trigger> & { asChild?: boolean } & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.Trigger>> | undefined;\n}) => {\n const renderElement: BaseContextMenu.Trigger.Props[\"render\"] =\n asChild && React.isValidElement(children) ? children : render;\n return (\n <BaseContextMenu.Trigger\n ref={ref}\n render={renderElement}\n {...(renderElement ? props : { ...props, children })}\n />\n );\n};\nContextMenuTrigger.displayName = \"ContextMenu.Trigger\";\n\nexport const ContextMenuContent = ({\n className,\n alignOffset = 0,\n align = \"start\",\n sideOffset = 4,\n side = \"bottom\",\n style,\n ref,\n ...props\n}: ContextMenuContentProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.Popup>> | undefined;\n}) => (\n <BaseContextMenu.Portal>\n <BaseContextMenu.Positioner\n alignOffset={alignOffset}\n align={align}\n sideOffset={sideOffset}\n side={side}\n >\n <BaseContextMenu.Popup\n ref={ref}\n className={cn(\n overlayClassNames.menuSurface,\n overlayPrimitiveClassNames.menuSurface,\n \"min-w-40 max-w-80\",\n className,\n )}\n style={{\n zIndex: overlayZIndex.popover,\n maxHeight: \"var(--context-menu-max-height, var(--available-height))\",\n ...style,\n }}\n {...props}\n />\n </BaseContextMenu.Positioner>\n </BaseContextMenu.Portal>\n);\nContextMenuContent.displayName = \"ContextMenu.Content\";\n\nexport const ContextMenuGroup = BaseContextMenu.Group;\nContextMenuGroup.displayName = \"ContextMenu.Group\";\n\nexport const ContextMenuLabel = ({\n className,\n ref,\n ...props\n}: ContextMenuLabelProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.GroupLabel>> | undefined;\n}) => (\n <BaseContextMenu.GroupLabel\n ref={ref}\n className={cn(\"px-2 py-1 text-xs font-medium text-muted-foreground\", className)}\n {...props}\n />\n);\nContextMenuLabel.displayName = \"ContextMenu.Label\";\n\nexport const ContextMenuSeparator = ({\n className,\n ref,\n ...props\n}: ContextMenuSeparatorProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.Separator>> | undefined;\n}) => (\n <BaseContextMenu.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n);\nContextMenuSeparator.displayName = \"ContextMenu.Separator\";\n\nexport const ContextMenuItem = ({\n children,\n onSelect,\n disabled,\n href,\n target,\n rel,\n prefix,\n suffix,\n variant = \"default\",\n value,\n className,\n ref,\n ...props\n}: ContextMenuItemProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.Item>> | undefined;\n}) => {\n const inner = (\n <ContextMenuItemContent prefix={prefix} suffix={suffix}>\n {children}\n </ContextMenuItemContent>\n );\n\n if (href) {\n return (\n <BaseContextMenu.LinkItem\n ref={ref}\n href={href}\n target={target}\n rel={rel}\n data-value={value}\n data-variant={variant}\n className={cn(overlayPrimitiveClassNames.contextMenuItem, className)}\n {...props}\n >\n {inner}\n </BaseContextMenu.LinkItem>\n );\n }\n\n return (\n <BaseContextMenu.Item\n ref={ref}\n data-value={value}\n data-variant={variant}\n disabled={disabled}\n onClick={onSelect}\n className={cn(overlayPrimitiveClassNames.contextMenuItem, className)}\n {...props}\n >\n {inner}\n </BaseContextMenu.Item>\n );\n};\nContextMenuItem.displayName = \"ContextMenu.Item\";\n\nexport const ContextMenuCheckboxItem = ({\n children,\n prefix,\n suffix,\n onSelect,\n value,\n className,\n checked,\n defaultChecked,\n ref,\n ...props\n}: ContextMenuCheckboxItemProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.CheckboxItem>> | undefined;\n}) => (\n <BaseContextMenu.CheckboxItem\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n data-value={value}\n onClick={onSelect}\n className={cn(overlayPrimitiveClassNames.contextMenuItem, \"pl-8\", className)}\n {...props}\n >\n <BaseContextMenu.CheckboxItemIndicator className={overlayPrimitiveClassNames.menuIndicator}>\n <Check className=\"size-4\" />\n </BaseContextMenu.CheckboxItemIndicator>\n <ContextMenuItemContent prefix={prefix} suffix={suffix}>\n {children}\n </ContextMenuItemContent>\n </BaseContextMenu.CheckboxItem>\n);\nContextMenuCheckboxItem.displayName = \"ContextMenu.CheckboxItem\";\n\nexport const ContextMenuRadioGroup = ({\n onValueChange,\n ref,\n ...props\n}: ContextMenuRadioGroupProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.RadioGroup>> | undefined;\n}) => <BaseContextMenu.RadioGroup ref={ref} onValueChange={onValueChange} {...props} />;\nContextMenuRadioGroup.displayName = \"ContextMenu.RadioGroup\";\n\nexport const ContextMenuRadioItem = ({\n children,\n prefix,\n suffix,\n onSelect,\n className,\n value,\n ref,\n ...props\n}: ContextMenuRadioItemProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.RadioItem>> | undefined;\n}) => (\n <BaseContextMenu.RadioItem\n ref={ref}\n value={value}\n onClick={onSelect}\n className={cn(overlayPrimitiveClassNames.contextMenuItem, \"pl-8\", className)}\n {...props}\n >\n <BaseContextMenu.RadioItemIndicator className={overlayPrimitiveClassNames.menuIndicator}>\n <span className=\"size-2 rounded-full bg-current\" />\n </BaseContextMenu.RadioItemIndicator>\n <ContextMenuItemContent prefix={prefix} suffix={suffix}>\n {children}\n </ContextMenuItemContent>\n </BaseContextMenu.RadioItem>\n);\nContextMenuRadioItem.displayName = \"ContextMenu.RadioItem\";\n\nexport const ContextMenuSub = BaseContextMenu.SubmenuRoot;\n\nexport const ContextMenuSubTrigger = ({\n children,\n prefix,\n suffix,\n onSelect,\n className,\n ref,\n ...props\n}: ContextMenuSubTriggerProps & {\n ref?: React.Ref<React.ElementRef<typeof BaseContextMenu.SubmenuTrigger>> | undefined;\n}) => (\n <BaseContextMenu.SubmenuTrigger\n ref={ref}\n onClick={onSelect}\n className={cn(overlayPrimitiveClassNames.contextMenuItem, className)}\n {...props}\n >\n <ContextMenuItemContent prefix={prefix} suffix={suffix ?? <ChevronRight className=\"size-4\" />}>\n {children}\n </ContextMenuItemContent>\n </BaseContextMenu.SubmenuTrigger>\n);\nContextMenuSubTrigger.displayName = \"ContextMenu.SubTrigger\";\n\nexport const ContextMenuSubContent = ContextMenuContent;\nContextMenuSubContent.displayName = \"ContextMenu.SubContent\";\n\nexport const ContextMenuShortcut = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<\"span\"> & { ref?: React.Ref<HTMLSpanElement> | undefined }) => (\n <span\n ref={ref}\n className={cn(\"ml-auto text-xs tabular-nums text-muted-foreground\", className)}\n {...props}\n />\n);\nContextMenuShortcut.displayName = \"ContextMenu.Shortcut\";\n\nexport const ContextMenu = Object.assign(ContextMenuRoot, {\n Root: ContextMenuRoot,\n Trigger: ContextMenuTrigger,\n Content: ContextMenuContent,\n Group: ContextMenuGroup,\n Item: ContextMenuItem,\n CheckboxItem: ContextMenuCheckboxItem,\n RadioGroup: ContextMenuRadioGroup,\n RadioItem: ContextMenuRadioItem,\n Label: ContextMenuLabel,\n Separator: ContextMenuSeparator,\n Shortcut: ContextMenuShortcut,\n Sub: ContextMenuSub,\n SubTrigger: ContextMenuSubTrigger,\n SubContent: ContextMenuSubContent,\n});\n","\"use client\";\n\nimport { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport * as React from \"react\";\n\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\n\n/* -------------------------------------------------------------------------- *\\\n * Tooltip — Base UI tooltip wrapper, used across the design system.\n *\n * Geist behavior contract (verified in this wrapper, document at top so\n * drift gets called out at code review):\n * - Opens on hover AND keyboard focus (Base UI default — don't override).\n * - Default entry delay ≈ 150ms so the tooltip doesn't flicker on a\n * sweeping mouse. Provider-level default set below; caller can override.\n * - Escape closes the tooltip and returns focus to the trigger (Base UI).\n *\n * Content rules (Geist):\n * - Explains *why* something exists, not *what* it is. The visible label\n * names the thing; the tooltip adds the constraint, scope, or limit.\n * - One sentence or fragment, sentence case, no terminal period for a\n * single fragment.\n * - Don't repeat the visible label (`text=\"Rate Limit\"` on a Rate Limit\n * button) and don't describe the interaction (`\"Click to override\"`).\n * - Lifecycle tooltips: `{Label}: {one-line meaning}. {Specific limit}.`\n *\n * Don'ts (caller responsibility):\n * - Don't wrap a labelled Input in a Tooltip — the trigger lands on the\n * <label>, not the field, and the body becomes a phantom second label.\n * Put help on a sibling icon button instead.\n * - Keep primary actions outside the Tooltip; touch users can't reach a\n * hover-revealed control.\n * - Icon-only triggers MUST carry their own `aria-label` naming the\n * action — the tooltip body adds context, it doesn't replace the label.\n\\* -------------------------------------------------------------------------- */\n\n// Geist-standard delay; matches the platform Best Practices.\nconst DEFAULT_TOOLTIP_DELAY_MS = 150;\n\n// We expose Base UI's native Provider to pass global `delayDuration` downwards.\n// Default landed at 150ms so isolated `<Tooltip>` usage matches Geist out of\n// the box — explicit callers can still override per provider scope.\nconst TooltipProvider = ({\n children,\n delayDuration = DEFAULT_TOOLTIP_DELAY_MS,\n}: {\n children: React.ReactNode;\n delayDuration?: number;\n}) => {\n return <BaseTooltip.Provider delay={delayDuration}>{children}</BaseTooltip.Provider>;\n};\n\nconst Tooltip = ({\n delayDuration,\n children,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseTooltip.Root> & {\n delayDuration?: number;\n children?: React.ReactNode;\n}) => {\n // Standalone `<Tooltip>` (no enclosing Provider) gets the Geist default;\n // any explicit `delayDuration` wins.\n const delay = delayDuration ?? DEFAULT_TOOLTIP_DELAY_MS;\n return (\n <BaseTooltip.Provider delay={delay}>\n <BaseTooltip.Root {...props}>{children}</BaseTooltip.Root>\n </BaseTooltip.Provider>\n );\n};\n\nconst TooltipTrigger = ({\n asChild,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseTooltip.Trigger> & { asChild?: boolean } & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BaseTooltip.Trigger\n ref={ref}\n {...props}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BaseTooltip.Trigger ref={ref} {...props}>\n {children}\n </BaseTooltip.Trigger>\n );\n};\nTooltipTrigger.displayName = \"TooltipTrigger\";\n\nconst TooltipContent = ({\n className,\n style,\n side = \"top\",\n align = \"center\",\n sideOffset = 4,\n alignOffset = 0,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseTooltip.Popup> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n} & { ref?: React.Ref<React.ElementRef<typeof BaseTooltip.Popup>> | undefined }) => (\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n style={{ zIndex: overlayZIndex.tooltip }}\n >\n <BaseTooltip.Popup\n ref={ref}\n className={cn(overlayClassNames.tooltipSurface, className)}\n style={{ zIndex: overlayZIndex.tooltip, ...style }}\n {...props}\n />\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n);\nTooltipContent.displayName = \"TooltipContent\";\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","\"use client\";\n\n/**\n * Copy Button Component\n *\n * Unified copy-to-clipboard button with visual feedback.\n *\n * Usage:\n * ```tsx\n * // Basic usage\n * <CopyButton value=\"text to copy\" />\n *\n * // With custom label\n * <CopyButton value={userId} label=\"Copy ID\" />\n *\n * // Icon only (for inline use)\n * <CopyButton value={code} variant=\"ghost\" size=\"icon\" />\n *\n * // With custom success message\n * <CopyButton value={link} successMessage=\"Link copied!\" />\n * ```\n */\n\nimport { Check, Code, Copy, Hash, Link } from \"@nebutra/icons\";\nimport * as React from \"react\";\n// Toast feedback handled by consumer\nimport { toast } from \"sonner\";\nimport { cn } from \"../utils/cn\";\nimport { Button } from \"./button\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"./tooltip\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface CopyButtonProps\n extends Omit<React.ComponentProps<typeof Button>, \"onClick\" | \"onCopy\"> {\n /** Value to copy to clipboard */\n value: string;\n /** Button label (if not icon-only) */\n label?: string;\n /** Success message for toast */\n successMessage?: string;\n /** Tooltip text */\n tooltipText?: string;\n /** Icon type */\n iconType?: \"copy\" | \"link\" | \"code\" | \"hash\";\n /** Show toast on copy */\n showToast?: boolean;\n /** Callback after successful copy */\n onCopied?: (value: string) => void;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport function CopyButton({\n value,\n label,\n successMessage = \"Copied to clipboard\",\n tooltipText = \"Copy\",\n iconType = \"copy\",\n showToast = true,\n onCopied,\n variant = \"ghost\",\n size = \"icon\",\n className,\n ...props\n}: CopyButtonProps) {\n const [copied, setCopied] = React.useState(false);\n\n const IconComponent = {\n copy: Copy,\n link: Link,\n code: Code,\n hash: Hash,\n }[iconType];\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n\n if (showToast) {\n toast.success(successMessage);\n }\n\n onCopied?.(value);\n\n // Reset after 2 seconds\n setTimeout(() => setCopied(false), 2000);\n } catch (error) {\n console.error(\"Failed to copy:\", error);\n toast.error(\"Failed to copy to clipboard\");\n }\n };\n\n const button = (\n <Button\n variant={variant}\n size={size}\n onClick={handleCopy}\n className={cn(\"transition-colors\", copied && \"text-green-600 dark:text-green-400\", className)}\n {...props}\n >\n {copied ? <Check className=\"size-4\" /> : <IconComponent className=\"size-4\" />}\n {label && <span className=\"ml-1.5\">{label}</span>}\n <span className=\"sr-only\">{tooltipText}</span>\n </Button>\n );\n\n // If it's icon-only, wrap with tooltip\n if (!label) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{copied ? \"Copied!\" : tooltipText}</p>\n </TooltipContent>\n </Tooltip>\n );\n }\n\n return button;\n}\n\n// ============================================================================\n// Specialized Variants\n// ============================================================================\n\n/**\n * Copy ID button - for copying UUIDs, IDs\n */\nexport function CopyIdButton({\n id,\n className,\n ...props\n}: {\n id: string;\n className?: string;\n} & Omit<CopyButtonProps, \"value\" | \"iconType\" | \"tooltipText\">) {\n return (\n <CopyButton\n value={id}\n iconType=\"hash\"\n tooltipText=\"Copy ID\"\n successMessage=\"ID copied\"\n className={cn(\"size-6\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Copy link button - for copying URLs\n */\nexport function CopyLinkButton({\n url,\n className,\n ...props\n}: {\n url: string;\n className?: string;\n} & Omit<CopyButtonProps, \"value\" | \"iconType\" | \"tooltipText\">) {\n return (\n <CopyButton\n value={url}\n iconType=\"link\"\n tooltipText=\"Copy link\"\n successMessage=\"Link copied\"\n className={cn(\"size-6\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Copy code button - for copying code snippets\n */\nexport function CopyCodeButton({\n code,\n className,\n ...props\n}: {\n code: string;\n className?: string;\n} & Omit<CopyButtonProps, \"value\" | \"iconType\" | \"tooltipText\">) {\n return (\n <CopyButton\n value={code}\n iconType=\"code\"\n tooltipText=\"Copy code\"\n successMessage=\"Code copied\"\n className={cn(\"size-6\", className)}\n {...props}\n />\n );\n}\n\n// ============================================================================\n// Inline Copy Field\n// ============================================================================\n\n/**\n * Copyable text field - displays value with copy button\n */\nexport interface CopyableFieldProps {\n value: string;\n label?: string;\n truncate?: boolean;\n className?: string;\n}\n\nexport function CopyableField({ value, label, truncate = true, className }: CopyableFieldProps) {\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {label && <span className=\"text-sm text-muted-foreground shrink-0\">{label}:</span>}\n <code\n className={cn(\"rounded bg-muted px-2 py-1 text-sm font-mono\", truncate && \"truncate\")}\n title={value}\n >\n {value}\n </code>\n <CopyButton value={value} showToast={false} className=\"shrink-0 size-7\" />\n </div>\n );\n}\n\n// ============================================================================\n// Hook for programmatic copy\n// ============================================================================\n\nexport interface UseCopyToClipboardOptions {\n successMessage?: string;\n showToast?: boolean;\n timeout?: number;\n}\n\nexport interface UseCopyToClipboardReturn {\n copied: boolean;\n copy: (value: string) => Promise<boolean>;\n}\n\nexport function useCopyToClipboard(\n options: UseCopyToClipboardOptions = {},\n): UseCopyToClipboardReturn {\n const { successMessage = \"Copied to clipboard\", showToast = true, timeout = 2000 } = options;\n\n const [copied, setCopied] = React.useState(false);\n\n const copy = React.useCallback(\n async (value: string): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n\n if (showToast) {\n toast.success(successMessage);\n }\n\n setTimeout(() => setCopied(false), timeout);\n return true;\n } catch (error) {\n console.error(\"Failed to copy:\", error);\n toast.error(\"Failed to copy to clipboard\");\n return false;\n }\n },\n [successMessage, showToast, timeout],\n );\n\n return { copied, copy };\n}\n","/**\n * Context Card Component Tokens — Layer 3\n *\n * Compact metadata popover tuned for dense dashboard rows.\n * Components consume these values through local CSS variables, not raw\n * primitive values in class strings.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const contextCardTokens = {\n width: {\n sm: primitiveSizing[\"2xl\"] * 3, // 240px\n md: primitiveSpacing[10] * 8, // 320px\n },\n padding: {\n x: primitiveSpacing[3], // 12px\n y: primitiveSpacing[3], // 12px\n },\n gap: {\n stack: primitiveSpacing[3], // 12px\n section: primitiveSpacing[2], // 8px\n row: primitiveSpacing[1], // 4px\n },\n borderRadius: primitiveRadius.lg, // 8px\n fontSize: {\n body: primitiveFontSize.sm, // 14px\n metadata: primitiveFontSize.xs, // 12px\n },\n motion: {\n openDelay: 150,\n closeDelay: 120,\n duration: primitiveTransition.duration.flow,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n\nexport type ContextCardWidth = keyof typeof contextCardTokens.width;\n","\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport * as React from \"react\";\nimport { type ContextCardWidth, contextCardTokens } from \"../tokens/components/context-card\";\nimport { cn } from \"../utils/cn\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type ContextCardSide = \"top\" | \"bottom\" | \"left\" | \"right\";\nexport type ContextCardAlign = \"start\" | \"center\" | \"end\";\n\ntype ContextCardCssVar =\n | \"--context-card-width\"\n | \"--context-card-padding-x\"\n | \"--context-card-padding-y\"\n | \"--context-card-stack-gap\"\n | \"--context-card-section-gap\"\n | \"--context-card-row-gap\"\n | \"--context-card-radius\"\n | \"--context-card-body-size\"\n | \"--context-card-metadata-size\"\n | \"--context-card-duration\"\n | \"--context-card-easing\";\n\nexport interface ContextCardTriggerProps {\n /** Content shown in the context card */\n content: React.ReactNode;\n /** Which side the card appears on */\n side?: ContextCardSide;\n /** Alignment relative to the trigger */\n align?: ContextCardAlign;\n /** Offset from the trigger in pixels */\n sideOffset?: number;\n /** Cross-axis offset from the trigger in pixels */\n alignOffset?: number;\n /** Width token for the panel */\n width?: ContextCardWidth;\n /** Entry delay in milliseconds. Defaults to the component motion token. */\n openDelay?: number;\n /** Exit delay in milliseconds. Defaults to the component motion token. */\n closeDelay?: number;\n /** The element that triggers the card on hover/focus */\n children: React.ReactNode;\n /** Additional CSS classes for the card */\n className?: string;\n}\n\nexport interface ContextCardMetadataItem {\n id?: string;\n label: React.ReactNode;\n value?: React.ReactNode;\n}\n\nexport interface ContextCardEntityProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: React.ReactNode;\n description?: React.ReactNode;\n metadata?: readonly ContextCardMetadataItem[];\n action?: React.ReactNode;\n}\n\nconst CONTEXT_CARD_FALLBACK = \"—\";\n\nconst contextCardCssVars = (width: ContextCardWidth) =>\n ({\n \"--context-card-width\": `${contextCardTokens.width[width]}px`,\n \"--context-card-padding-x\": `${contextCardTokens.padding.x}px`,\n \"--context-card-padding-y\": `${contextCardTokens.padding.y}px`,\n \"--context-card-stack-gap\": `${contextCardTokens.gap.stack}px`,\n \"--context-card-section-gap\": `${contextCardTokens.gap.section}px`,\n \"--context-card-row-gap\": `${contextCardTokens.gap.row}px`,\n \"--context-card-radius\": `${contextCardTokens.borderRadius}px`,\n \"--context-card-body-size\": `${contextCardTokens.fontSize.body}px`,\n \"--context-card-metadata-size\": `${contextCardTokens.fontSize.metadata}px`,\n \"--context-card-duration\": `${contextCardTokens.motion.duration}ms`,\n \"--context-card-easing\": contextCardTokens.motion.easing,\n }) satisfies React.CSSProperties & Record<ContextCardCssVar, string>;\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n for (const ref of refs) {\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }\n };\n}\n\nfunction isFocusableElement(element: Element): element is HTMLElement {\n return element instanceof HTMLElement && !element.hasAttribute(\"disabled\");\n}\n\nfunction focusFirstPanelTarget(panel: HTMLElement | null) {\n if (!panel) return;\n const target = panel.querySelector(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n );\n if (target && isFocusableElement(target)) {\n target.focus();\n return;\n }\n panel.focus();\n}\n\n// =============================================================================\n// ContextCardTrigger\n// =============================================================================\n\nconst ContextCardTrigger = ({\n ref: forwardedRef,\n content,\n side = \"top\",\n align = \"center\",\n sideOffset = 8,\n alignOffset = 0,\n width = \"md\",\n openDelay = contextCardTokens.motion.openDelay,\n closeDelay = contextCardTokens.motion.closeDelay,\n children,\n className,\n}: ContextCardTriggerProps & { ref?: React.Ref<HTMLButtonElement> | undefined }) => {\n const [open, setOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const panelRef = React.useRef<HTMLDivElement | null>(null);\n const openTimerRef = React.useRef<number | null>(null);\n const closeTimerRef = React.useRef<number | null>(null);\n\n const clearTimers = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);\n openTimerRef.current = null;\n closeTimerRef.current = null;\n }, []);\n\n const scheduleOpen = React.useCallback(() => {\n clearTimers();\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [clearTimers, openDelay]);\n\n const scheduleClose = React.useCallback(() => {\n clearTimers();\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }, [clearTimers, closeDelay]);\n\n const closeNow = React.useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers]);\n\n React.useEffect(() => clearTimers, [clearTimers]);\n\n const triggerElement = React.isValidElement(children) ? children : <span>{children}</span>;\n const renderTrigger = triggerElement as React.ReactElement<Record<string, unknown>>;\n\n return (\n <BasePopover.Root open={open} onOpenChange={setOpen}>\n <BasePopover.Trigger\n ref={composeRefs(triggerRef, forwardedRef)}\n render={renderTrigger}\n onMouseEnter={scheduleOpen}\n onMouseLeave={scheduleClose}\n onFocus={scheduleOpen}\n onBlur={scheduleClose}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n closeNow();\n triggerRef.current?.focus();\n return;\n }\n if ((event.key === \"ArrowDown\" || event.key === \"Enter\") && !open) {\n event.preventDefault();\n clearTimers();\n setOpen(true);\n window.requestAnimationFrame(() => focusFirstPanelTarget(panelRef.current));\n }\n }}\n />\n <BasePopover.Portal>\n <BasePopover.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n className=\"z-50\"\n >\n <BasePopover.Popup\n ref={panelRef}\n tabIndex={-1}\n onMouseEnter={scheduleOpen}\n onMouseLeave={scheduleClose}\n onFocus={scheduleOpen}\n onBlur={scheduleClose}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n closeNow();\n triggerRef.current?.focus();\n }\n }}\n style={contextCardCssVars(width) as React.CSSProperties}\n className={cn(\n \"z-50 flex w-[var(--context-card-width)] flex-col gap-[var(--context-card-stack-gap)] overflow-hidden\",\n \"rounded-[var(--context-card-radius)] border border-border bg-popover\",\n \"px-[var(--context-card-padding-x)] py-[var(--context-card-padding-y)]\",\n \"text-[length:var(--context-card-body-size)] text-popover-foreground shadow-md outline-none\",\n \"transition-[opacity,transform,display] duration-[var(--context-card-duration)] ease-[var(--context-card-easing)]\",\n \"data-starting-style:opacity-0 data-ending-style:opacity-0 data-starting-style:scale-[0.98] data-ending-style:scale-[0.98]\",\n \"motion-reduce:transition-none motion-reduce:data-starting-style:scale-100 motion-reduce:data-ending-style:scale-100\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"data-[side=bottom]:origin-top data-[side=left]:origin-right data-[side=right]:origin-left data-[side=top]:origin-bottom\",\n className,\n )}\n >\n {content}\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n </BasePopover.Root>\n );\n};\nContextCardTrigger.displayName = \"ContextCard.Trigger\";\n\nconst ContextCardEntity = ({\n title,\n description,\n metadata,\n action,\n className,\n ref,\n ...props\n}: ContextCardEntityProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-[var(--context-card-section-gap)]\", className)}\n {...props}\n >\n <div className=\"flex flex-col gap-[var(--context-card-row-gap)]\">\n <p className=\"truncate font-medium leading-tight text-popover-foreground\">{title}</p>\n {description ? (\n <p className=\"text-muted-foreground text-[length:var(--context-card-metadata-size)] leading-snug\">\n {description}\n </p>\n ) : null}\n </div>\n {metadata?.length ? (\n <dl className=\"grid gap-[var(--context-card-row-gap)] text-[length:var(--context-card-metadata-size)]\">\n {metadata.map((item) => (\n <div\n key={item.id ?? String(item.label)}\n className=\"grid grid-cols-[minmax(5rem,auto)_1fr] items-baseline gap-[var(--context-card-section-gap)]\"\n >\n <dt className=\"text-muted-foreground\">{item.label}</dt>\n <dd className=\"min-w-0 truncate text-right text-popover-foreground\">\n {item.value ?? CONTEXT_CARD_FALLBACK}\n </dd>\n </div>\n ))}\n </dl>\n ) : null}\n {action ? <div className=\"pt-[var(--context-card-row-gap)]\">{action}</div> : null}\n </div>\n);\nContextCardEntity.displayName = \"ContextCard.Entity\";\n\n// =============================================================================\n// Compound Export\n// =============================================================================\n\n/**\n * ContextCard — Geist-style hover card that shows rich content on hover/focus.\n *\n * @example\n * ```tsx\n * <ContextCard.Trigger\n * content={<ContextCard.Entity title=\"Nebula Console\" description=\"nebutra/production\" />}\n * side=\"top\"\n * >\n * <button type=\"button\">Nebula Console</button>\n * </ContextCard.Trigger>\n * ```\n */\nexport const ContextCard = {\n Entity: ContextCardEntity,\n Trigger: ContextCardTrigger,\n} as const;\n","\"use client\";\n\nimport { Information as Info } from \"@nebutra/icons\";\nimport type { ReactNode, Ref } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { ContextCard } from \"./context-card\";\n\n/* -------------------------------------------------------------------------- *\\\n * Description — definition-list metadata block.\n *\n * Use cases (per Geist guidance):\n * Short Title Case key paired with a single value:\n * `Last Deployed`, `Region`, `Plan`, `Build Duration`.\n * For inline help under a form field, use the input's helper-text slot\n * instead (Field / FormDescription) — not Description.\n *\n * Semantics — non-negotiable:\n * Renders as <dl><dt><dd> so screen readers announce each key/value as a\n * definition. Wrapping in extra paragraphs or stripping the <dl> breaks\n * definition-list semantics — do not \"simplify\" this without an ADR.\n *\n * Emphasis convention:\n * The value (<dd>) is the data the user cares about; the label (<dt>) is\n * supplementary. The visual weight reflects that: dt is muted/secondary,\n * dd is foreground/medium-weight.\n *\n * Title slot is text-only:\n * `title` is typed as string. Don't put interactive controls in the title\n * slot. Buttons, menus, and links belong in `content` (which accepts\n * ReactNode) or in the surrounding layout — never in the <dt>.\n\\* -------------------------------------------------------------------------- */\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface DescriptionProps {\n /** Title Case noun naming the field (`Last Deployed`, `Region`). */\n title: string;\n /**\n * Value associated with the title. Sentence case unless the value is a\n * literal identifier, ID, or timestamp that should be preserved verbatim.\n * Accepts ReactNode so links and inline timestamps render correctly.\n */\n content: ReactNode;\n /** Optional one-sentence definition shown via a hover/focus tooltip on the info glyph. Sentence case, ends with a period. */\n tooltip?: ReactNode;\n className?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * @example\n * ```tsx\n * <Description\n * title=\"Section Title\"\n * content=\"Data about this section.\"\n * tooltip=\"Additional context about what this section refers to.\"\n * />\n * ```\n */\nexport const Description = function Description({\n ref,\n title,\n content,\n tooltip,\n className,\n}: DescriptionProps & { ref?: Ref<HTMLDListElement> | undefined }) {\n return (\n <dl ref={ref} className={cn(\"font-sans\", className)}>\n <dt className=\"flex items-center gap-1 text-muted-foreground text-sm capitalize\">\n {title}\n {tooltip && (\n <ContextCard.Trigger content={tooltip} side=\"top\" sideOffset={6}>\n <Info aria-hidden=\"true\" className=\"size-3.5 shrink-0 text-muted-foreground\" />\n </ContextCard.Trigger>\n )}\n </dt>\n <dd className=\"mt-1 font-medium text-foreground text-sm\">{content}</dd>\n </dl>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { cn } from \"../utils\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type DrawerDirection = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport type DrawerHeight = number | string;\n\nexport type DrawerProps = React.ComponentProps<typeof DrawerPrimitive.Root> & {\n /** Controlled open state alias used by Geist-compatible examples. Prefer `open` for new Radix-style code. */\n show?: boolean;\n /** Called when the drawer is dismissed by escape, outside press, swipe, or close control. */\n onDismiss?: () => void;\n /** Bottom sheet height. Numbers resolve to px. */\n height?: DrawerHeight;\n /** Alias for `height` when the content needs a capped frame. */\n customHeight?: DrawerHeight;\n /** Direction the drawer slides from. Use bottom for Drawer; use Sheet for lateral desktop panels. */\n direction?: DrawerDirection;\n};\n\nexport type DrawerTriggerProps = React.ComponentProps<typeof DrawerPrimitive.Trigger>;\n\nexport type DrawerPortalProps = React.ComponentProps<typeof DrawerPrimitive.Portal>;\n\nexport type DrawerCloseProps = React.ComponentProps<typeof DrawerPrimitive.Close>;\n\nexport type DrawerOverlayProps = React.ComponentProps<typeof DrawerPrimitive.Overlay>;\n\nexport type DrawerContentProps = React.ComponentProps<typeof DrawerPrimitive.Content> & {\n /** Overrides root height for this content. Numbers resolve to px. */\n height?: DrawerHeight;\n /** Keep body scroll inside the drawer frame rather than the page behind it. */\n verticalScroll?: boolean;\n /** Show the drag handle on bottom drawers. */\n showHandle?: boolean;\n};\n\nexport type DrawerHeaderProps = React.ComponentProps<\"div\">;\n\nexport type DrawerBodyProps = React.ComponentProps<\"div\">;\n\nexport type DrawerFooterProps = React.ComponentProps<\"div\">;\n\nexport type DrawerTitleProps = React.ComponentProps<typeof DrawerPrimitive.Title>;\n\nexport type DrawerDescriptionProps = React.ComponentProps<typeof DrawerPrimitive.Description>;\n\n// =============================================================================\n// Components\n// =============================================================================\n\ntype DrawerRootContextValue = {\n height?: DrawerHeight;\n};\n\ntype DrawerContentStyle = React.CSSProperties & {\n \"--drawer-height\"?: string;\n};\n\nconst DrawerRootContext = React.createContext<DrawerRootContextValue>({});\n\nfunction formatDrawerHeight(height: DrawerHeight | undefined): string | undefined {\n if (height == null) {\n return undefined;\n }\n\n return typeof height === \"number\" ? `${height}px` : height;\n}\n\n/**\n * Drawer - Mobile bottom sheet\n *\n * @description\n * A focused mobile bottom sheet built on Vaul. Use Modal for blocking desktop\n * flows and Sheet for lateral panels.\n *\n * @example Basic usage\n * ```tsx\n * <Drawer>\n * <DrawerTrigger asChild>\n * <Button>Open Drawer</Button>\n * </DrawerTrigger>\n * <DrawerContent>\n * <DrawerHeader>\n * <DrawerTitle>Title</DrawerTitle>\n * <DrawerDescription>Description</DrawerDescription>\n * </DrawerHeader>\n * <DrawerBody>Content here</DrawerBody>\n * <DrawerFooter>\n * <DrawerClose asChild>\n * <Button variant=\"outline\">Cancel</Button>\n * </DrawerClose>\n * <Button>Save</Button>\n * </DrawerFooter>\n * </DrawerContent>\n * </Drawer>\n * ```\n *\n * @example Controlled\n * ```tsx\n * const [open, setOpen] = useState(false);\n * <Drawer open={open} onOpenChange={setOpen}>...</Drawer>\n * ```\n */\nfunction Drawer({\n show,\n onDismiss,\n height,\n customHeight,\n direction = \"bottom\",\n open,\n onOpenChange,\n modal = true,\n shouldScaleBackground = false,\n ...props\n}: DrawerProps) {\n const controlledOpen = open ?? show;\n const rootProps: React.ComponentProps<typeof DrawerPrimitive.Root> = {\n ...props,\n direction,\n modal,\n shouldScaleBackground,\n };\n\n if (controlledOpen !== undefined) {\n rootProps.open = controlledOpen;\n }\n\n if (onOpenChange !== undefined || onDismiss !== undefined) {\n rootProps.onOpenChange = (nextOpen) => {\n onOpenChange?.(nextOpen);\n\n if (!nextOpen) {\n onDismiss?.();\n }\n };\n }\n\n const contextValue = React.useMemo<DrawerRootContextValue>(() => {\n const resolvedHeight = customHeight ?? height;\n\n return resolvedHeight === undefined ? {} : { height: resolvedHeight };\n }, [customHeight, height]);\n\n return (\n <DrawerRootContext.Provider value={contextValue}>\n <DrawerPrimitive.Root data-slot=\"drawer\" {...rootProps} />\n </DrawerRootContext.Provider>\n );\n}\n\nfunction DrawerTrigger({ ...props }: DrawerTriggerProps) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({ ...props }: DrawerPortalProps) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({ ...props }: DrawerCloseProps) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({ className, ...props }: DrawerOverlayProps) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-background/70 backdrop-blur-[2px]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n height,\n verticalScroll = true,\n showHandle = true,\n style,\n ...props\n}: DrawerContentProps) {\n const rootContext = React.use(DrawerRootContext);\n const resolvedHeight = formatDrawerHeight(height ?? rootContext.height);\n const contentStyle =\n resolvedHeight === undefined\n ? style\n : ({\n \"--drawer-height\": resolvedHeight,\n ...style,\n } satisfies DrawerContentStyle);\n\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content fixed z-50 flex bg-background text-foreground shadow-lg outline-none\",\n verticalScroll && \"overflow-hidden\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:h-[var(--drawer-height,auto)] data-[vaul-drawer-direction=bottom]:max-h-[min(var(--drawer-height,80vh),calc(100dvh-1rem))] data-[vaul-drawer-direction=bottom]:flex-col data-[vaul-drawer-direction=bottom]:rounded-t-[var(--radius-xl)] data-[vaul-drawer-direction=bottom]:border-t\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:h-[var(--drawer-height,auto)] data-[vaul-drawer-direction=top]:max-h-[min(var(--drawer-height,80vh),calc(100dvh-1rem))] data-[vaul-drawer-direction=top]:flex-col data-[vaul-drawer-direction=top]:rounded-b-[var(--radius-xl)] data-[vaul-drawer-direction=top]:border-b\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-[min(24rem,calc(100vw-2rem))] data-[vaul-drawer-direction=right]:flex-col data-[vaul-drawer-direction=right]:border-l\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-[min(24rem,calc(100vw-2rem))] data-[vaul-drawer-direction=left]:flex-col data-[vaul-drawer-direction=left]:border-r\",\n className,\n )}\n style={contentStyle}\n {...props}\n >\n {showHandle ? (\n <DrawerPrimitive.Handle className=\"mx-auto mt-2 hidden h-1 w-10 shrink-0 rounded-full bg-muted-foreground/30 group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n ) : null}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({ className, ...props }: DrawerHeaderProps) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n \"grid w-full gap-1 border-b px-5 pb-4 pt-3 text-center md:mx-auto md:max-w-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerBody({ className, ...props }: DrawerBodyProps) {\n return (\n <div\n data-slot=\"drawer-body\"\n className={cn(\n \"min-h-0 w-full flex-1 overscroll-contain px-5 py-4 md:mx-auto md:max-w-md\",\n \"group-data-[vaul-drawer-direction=bottom]/drawer-content:overflow-y-auto group-data-[vaul-drawer-direction=top]/drawer-content:overflow-y-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: DrawerFooterProps) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\n \"mt-auto grid w-full gap-2 border-t bg-background/95 px-5 py-4 md:mx-auto md:max-w-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({ className, ...props }: DrawerTitleProps) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\"text-base font-semibold leading-6 text-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({ className, ...props }: DrawerDescriptionProps) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-sm leading-5 text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerBody,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n","/**\n * Empty State Component Tokens — Layer 3\n *\n * Zero-content surfaces need stable geometry across product screens. Components\n * consume these through local CSS variables instead of raw spacing/font values.\n */\n\nimport {\n primitiveFontSize,\n primitiveFontWeight,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n} from \"../primitive\";\n\nexport const emptyStateTokens = {\n root: {\n minHeight: {\n sm: primitiveSpacing[16] * 2,\n md: primitiveSpacing[24] * 2,\n lg: primitiveSpacing[16] * 4,\n },\n paddingX: {\n sm: primitiveSpacing[4],\n md: primitiveSpacing[6],\n lg: primitiveSpacing[8],\n },\n paddingY: {\n sm: primitiveSpacing[8],\n md: primitiveSpacing[10],\n lg: primitiveSpacing[14],\n },\n radius: primitiveRadius.lg,\n },\n content: {\n maxWidth: primitiveSpacing[14] * 8,\n descriptionMaxWidth: primitiveSpacing[12] * 8,\n stackGap: primitiveSpacing[4],\n copyGap: primitiveSpacing[2],\n actionsGap: primitiveSpacing[2],\n },\n icon: {\n size: primitiveSizing.lg,\n radius: primitiveRadius.lg,\n },\n typography: {\n title: {\n sm: primitiveFontSize.sm,\n md: primitiveFontSize.base,\n lg: primitiveFontSize.lg,\n },\n description: {\n sm: primitiveFontSize.xs,\n md: primitiveFontSize.sm,\n lg: primitiveFontSize.sm,\n },\n titleWeight: primitiveFontWeight.semibold,\n titleLineHeight: primitiveSpacing[6],\n descriptionLineHeight: primitiveSpacing[6],\n },\n} as const;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { emptyStateTokens } from \"../tokens/components/empty-state\";\nimport { cn } from \"../utils/cn\";\n\nexport type EmptyStateVariant =\n | \"blank-slate\"\n | \"informational\"\n | \"educational\"\n | \"guide\"\n | \"no-results\"\n | \"cleared\"\n | \"permission\"\n | \"error\";\n\nexport type EmptyStateSize = \"sm\" | \"md\" | \"lg\";\nexport type EmptyStateAlign = \"center\" | \"start\";\n\nexport interface EmptyStateRootProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"title\" | \"children\"> {\n title: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n /** Preferred CTA slot. Use real Button/Link elements. */\n children?: React.ReactNode;\n /** Compatibility alias for the primary CTA. Prefer children for new code. */\n action?: React.ReactNode;\n /** Compatibility alias for the secondary CTA. Prefer children for new code. */\n link?: React.ReactNode;\n variant?: EmptyStateVariant;\n size?: EmptyStateSize;\n align?: EmptyStateAlign;\n /** Use for empty states that appear after async filtering changes. */\n live?: boolean;\n}\n\nexport interface EmptyStateIconProps extends React.HTMLAttributes<HTMLDivElement> {\n icon: React.ReactNode;\n}\n\nconst variantClassName: Record<EmptyStateVariant, string> = {\n \"blank-slate\": \"border border-dashed border-border bg-background\",\n informational: \"border border-border bg-card\",\n educational: \"border border-border bg-card\",\n guide: \"border border-border bg-muted/30\",\n \"no-results\": \"border border-dashed border-border bg-background\",\n cleared: \"border border-dashed border-border bg-muted/20\",\n permission: \"border border-border bg-card\",\n error: \"border border-destructive/25 bg-destructive/5\",\n};\n\nconst iconToneClassName: Record<EmptyStateVariant, string> = {\n \"blank-slate\": \"text-muted-foreground\",\n informational: \"text-primary\",\n educational: \"text-primary\",\n guide: \"text-primary\",\n \"no-results\": \"text-muted-foreground\",\n cleared: \"text-muted-foreground\",\n permission: \"text-muted-foreground\",\n error: \"text-destructive\",\n};\n\ntype EmptyStateCssVar =\n | \"--empty-state-min-height\"\n | \"--empty-state-padding-x\"\n | \"--empty-state-padding-y\"\n | \"--empty-state-radius\"\n | \"--empty-state-content-max-width\"\n | \"--empty-state-description-max-width\"\n | \"--empty-state-stack-gap\"\n | \"--empty-state-copy-gap\"\n | \"--empty-state-actions-gap\"\n | \"--empty-state-icon-size\"\n | \"--empty-state-icon-radius\"\n | \"--empty-state-title-size\"\n | \"--empty-state-description-size\"\n | \"--empty-state-title-weight\"\n | \"--empty-state-title-line-height\"\n | \"--empty-state-description-line-height\";\n\nconst emptyStateCssVars = (size: EmptyStateSize) =>\n ({\n \"--empty-state-min-height\": `${emptyStateTokens.root.minHeight[size]}px`,\n \"--empty-state-padding-x\": `${emptyStateTokens.root.paddingX[size]}px`,\n \"--empty-state-padding-y\": `${emptyStateTokens.root.paddingY[size]}px`,\n \"--empty-state-radius\": `${emptyStateTokens.root.radius}px`,\n \"--empty-state-content-max-width\": `${emptyStateTokens.content.maxWidth}px`,\n \"--empty-state-description-max-width\": `${emptyStateTokens.content.descriptionMaxWidth}px`,\n \"--empty-state-stack-gap\": `${emptyStateTokens.content.stackGap}px`,\n \"--empty-state-copy-gap\": `${emptyStateTokens.content.copyGap}px`,\n \"--empty-state-actions-gap\": `${emptyStateTokens.content.actionsGap}px`,\n \"--empty-state-icon-size\": `${emptyStateTokens.icon.size}px`,\n \"--empty-state-icon-radius\": `${emptyStateTokens.icon.radius}px`,\n \"--empty-state-title-size\": `${emptyStateTokens.typography.title[size]}px`,\n \"--empty-state-description-size\": `${emptyStateTokens.typography.description[size]}px`,\n \"--empty-state-title-weight\": `${emptyStateTokens.typography.titleWeight}`,\n \"--empty-state-title-line-height\": `${emptyStateTokens.typography.titleLineHeight}px`,\n \"--empty-state-description-line-height\": `${emptyStateTokens.typography.descriptionLineHeight}px`,\n }) satisfies React.CSSProperties & Record<EmptyStateCssVar, string>;\n\nconst EmptyStateIcon = ({\n className,\n icon,\n ref,\n ...props\n}: EmptyStateIconProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(\n \"flex size-[var(--empty-state-icon-size)] shrink-0 items-center justify-center rounded-[var(--empty-state-icon-radius)] bg-muted\",\n className,\n )}\n {...props}\n >\n {icon}\n </div>\n);\nEmptyStateIcon.displayName = \"EmptyState.Icon\";\n\nconst EmptyStateRoot = ({\n className,\n title,\n description,\n icon,\n children,\n action,\n link,\n style,\n variant = \"blank-slate\",\n size = \"md\",\n align = \"center\",\n live = false,\n ref,\n ...props\n}: EmptyStateRootProps & { ref?: React.Ref<HTMLElement> | undefined }) => {\n const actions = children ?? [action, link].filter(Boolean);\n const hasActions = React.Children.toArray(actions).length > 0;\n\n return (\n <section\n ref={ref}\n aria-live={live ? \"polite\" : undefined}\n className={cn(\n \"flex min-h-[var(--empty-state-min-height)] w-full flex-col justify-center rounded-[var(--empty-state-radius)] px-[var(--empty-state-padding-x)] py-[var(--empty-state-padding-y)]\",\n variantClassName[variant],\n align === \"center\" ? \"items-center text-center\" : \"items-start text-left\",\n className,\n )}\n style={{ ...emptyStateCssVars(size), ...style }}\n {...props}\n >\n <div\n className={cn(\n \"flex max-w-[var(--empty-state-content-max-width)] flex-col gap-[var(--empty-state-stack-gap)]\",\n align === \"center\" ? \"items-center\" : \"items-start\",\n )}\n >\n {icon ? (\n <div className={cn(\"[&>div]:bg-muted\", iconToneClassName[variant])}>{icon}</div>\n ) : null}\n\n <div className=\"space-y-[var(--empty-state-copy-gap)]\">\n <h3 className=\"font-[var(--empty-state-title-weight)] text-[length:var(--empty-state-title-size)] leading-[var(--empty-state-title-line-height)] text-foreground\">\n {title}\n </h3>\n {description ? (\n <p className=\"max-w-[var(--empty-state-description-max-width)] text-[length:var(--empty-state-description-size)] leading-[var(--empty-state-description-line-height)] text-muted-foreground\">\n {description}\n </p>\n ) : null}\n </div>\n\n {hasActions ? (\n <div\n className={cn(\n \"flex flex-wrap gap-[var(--empty-state-actions-gap)]\",\n align === \"center\" ? \"justify-center\" : \"justify-start\",\n )}\n >\n {actions}\n </div>\n ) : null}\n </div>\n </section>\n );\n};\nEmptyStateRoot.displayName = \"EmptyState.Root\";\n\nexport const EmptyState = {\n Root: EmptyStateRoot,\n Icon: EmptyStateIcon,\n} as const;\n\nexport { EmptyStateIcon, EmptyStateRoot };\n","\"use client\";\n\nimport { Warning as AlertCircle, External as ExternalLink } from \"@nebutra/icons\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Button, ButtonLink } from \"./button\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface ErrorObject {\n /** Error description */\n message: string;\n /** Optional title for block error surfaces */\n title?: string;\n /** Label for the action link */\n action?: string;\n /** href for the action link */\n link?: string;\n /** Stable request, trace, deployment, or run identifier */\n id?: string;\n /** Short machine-readable code */\n code?: string;\n}\n\nexport interface ErrorMessageProps {\n /** Inline error text (alternative to `error` prop) */\n children?: React.ReactNode;\n /** Optional label prefix shown before the message (e.g. \"Email Error\") */\n label?: string;\n /** Font size variant */\n size?: \"small\" | \"medium\" | \"large\";\n /** Structured error object — `message` + optional `action`/`link` */\n error?: ErrorObject;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport type ErrorSize = \"small\" | \"medium\" | \"large\";\n\ntype LinkRecoveryAction = {\n action: string;\n link: string;\n onAction?: never;\n actionLoading?: never;\n};\n\ntype ButtonRecoveryAction = {\n action: string;\n onAction: () => void;\n link?: never;\n actionLoading?: boolean;\n};\n\ntype NoRecoveryAction = {\n action?: undefined;\n link?: undefined;\n onAction?: undefined;\n actionLoading?: never;\n};\n\nexport type ErrorRecoveryAction = LinkRecoveryAction | ButtonRecoveryAction | NoRecoveryAction;\n\nexport type ErrorProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> &\n ErrorRecoveryAction & {\n /** Error title. Name the resource that failed. */\n title?: string;\n /** Optional compact label above the message, e.g. \"Request Error\". */\n label?: string;\n /** Hide the label while preserving the message and title. */\n showLabel?: boolean;\n /** Message content. Alternative to `error.message`. */\n children?: React.ReactNode;\n /** Visual density. */\n size?: ErrorSize;\n /** Structured error data. */\n error?: ErrorObject;\n /** Stable request, trace, deployment, or run identifier. */\n errorId?: string;\n /** Label used before the stable identifier. */\n errorIdLabel?: string;\n /** Async announcement mode. Use assertive only for blocking failures. */\n live?: \"polite\" | \"assertive\" | \"off\";\n };\n\n// =============================================================================\n// Size maps\n// =============================================================================\n\nconst textSize: Record<NonNullable<ErrorMessageProps[\"size\"]>, string> = {\n small: \"text-xs\",\n medium: \"text-sm\",\n large: \"text-base\",\n};\n\nconst iconSize: Record<NonNullable<ErrorMessageProps[\"size\"]>, number> = {\n small: 12,\n medium: 14,\n large: 16,\n};\n\nconst surfaceSize: Record<ErrorSize, string> = {\n small: \"gap-2 rounded-[var(--radius-md)] p-3 text-sm\",\n medium: \"gap-3 rounded-[var(--radius-lg)] p-4 text-sm\",\n large: \"gap-3 rounded-[var(--radius-lg)] p-5 text-base\",\n};\n\nconst surfaceIconSize: Record<ErrorSize, number> = {\n small: 14,\n medium: 16,\n large: 18,\n};\n\nfunction getActionTarget(link: string | undefined): React.AnchorHTMLAttributes<HTMLAnchorElement> {\n if (link?.startsWith(\"http\")) {\n return { target: \"_blank\", rel: \"noopener noreferrer\" };\n }\n\n return {};\n}\n\n// =============================================================================\n// ErrorMessage\n// =============================================================================\n\n/**\n * ErrorMessage — inline error indicator with icon, optional label, and action link.\n *\n * @example\n * // Simple inline error\n * <ErrorMessage>This email is already in use.</ErrorMessage>\n *\n * @example\n * // With label prefix\n * <ErrorMessage label=\"Email Error\">This email is already in use.</ErrorMessage>\n *\n * @example\n * // Structured with action link\n * <ErrorMessage error={{ message: \"The request failed.\", action: \"Contact Us\", link: \"/contact\" }} />\n */\nexport const ErrorMessage = ({\n ref,\n children,\n label,\n size = \"medium\",\n error,\n className,\n}: ErrorMessageProps & { ref?: React.Ref<HTMLSpanElement> | undefined }) => {\n const sz = size;\n\n // Resolve content from either `error` prop or `children`\n const message = error?.message ?? children;\n\n return (\n <span\n ref={ref}\n role=\"alert\"\n className={cn(\"inline-flex items-center gap-1.5 text-destructive\", textSize[sz], className)}\n >\n <AlertCircle size={iconSize[sz]} aria-hidden=\"true\" className=\"shrink-0\" />\n\n <span>\n {label && <span className=\"font-medium\">{label}:&nbsp;</span>}\n {message}\n {error?.action && error.link && (\n <>\n {\" \"}\n <a\n href={error.link}\n className=\"underline underline-offset-2 hover:no-underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {error.action}\n <ExternalLink size={10} aria-hidden=\"true\" className=\"ml-0.5 inline\" />\n </a>\n </>\n )}\n </span>\n </span>\n );\n};\nErrorMessage.displayName = \"ErrorMessage\";\n\n/**\n * Error — block-level error surface for failed sections, panels, and route boundaries.\n *\n * Use `ErrorMessage` only for legacy inline text. Field validation should prefer\n * the owning form/input primitive.\n */\nconst ErrorSurface = ({\n children,\n label,\n showLabel = true,\n title,\n size = \"medium\",\n error,\n errorId,\n errorIdLabel = \"Request ID\",\n live = \"polite\",\n action,\n link,\n onAction,\n actionLoading = false,\n className,\n role,\n ref,\n ...props\n}: ErrorProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const message = error?.message ?? children;\n const resolvedTitle = title ?? error?.title;\n const resolvedAction = action ?? error?.action;\n const resolvedLink = link ?? error?.link;\n const resolvedErrorId = errorId ?? error?.id;\n const resolvedRole = role ?? (live === \"assertive\" ? \"alert\" : \"status\");\n const ariaLive = live === \"off\" ? undefined : live;\n\n return (\n <div\n ref={ref}\n role={resolvedRole}\n aria-live={ariaLive}\n className={cn(\n \"flex w-full border border-destructive/25 bg-destructive/5 text-foreground\",\n surfaceSize[size],\n className,\n )}\n {...props}\n >\n <span\n aria-hidden=\"true\"\n className=\"mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-destructive/20 bg-background text-destructive\"\n >\n <AlertCircle size={surfaceIconSize[size]} />\n </span>\n\n <div className=\"min-w-0 flex-1\">\n {label && showLabel ? (\n <p className=\"mb-1 text-xs font-medium uppercase tracking-normal text-destructive\">\n {label}\n </p>\n ) : null}\n\n {resolvedTitle ? (\n <p className=\"font-semibold leading-6 text-foreground\">{resolvedTitle}</p>\n ) : null}\n\n {message ? (\n <p className={cn(\"leading-5 text-muted-foreground\", resolvedTitle && \"mt-1\")}>\n {message}\n </p>\n ) : null}\n\n {resolvedErrorId ? (\n <details className=\"mt-3 text-xs text-muted-foreground\">\n <summary className=\"cursor-pointer select-none text-foreground\">\n Diagnostic details\n </summary>\n <code className=\"mt-2 block overflow-x-auto rounded-[var(--radius-sm)] border bg-background px-2 py-1 font-mono text-xs text-muted-foreground\">\n {errorIdLabel}: {resolvedErrorId}\n {error?.code ? ` (${error.code})` : \"\"}\n </code>\n </details>\n ) : null}\n\n {resolvedAction ? (\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {resolvedLink ? (\n <ButtonLink\n href={resolvedLink}\n size=\"sm\"\n variant=\"outline\"\n {...getActionTarget(resolvedLink)}\n >\n {resolvedAction}\n </ButtonLink>\n ) : (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n loading={actionLoading}\n onClick={onAction}\n >\n {resolvedAction}\n </Button>\n )}\n </div>\n ) : null}\n </div>\n </div>\n );\n};\nErrorSurface.displayName = \"Error\";\n\nexport { ErrorSurface as Error };\n","\"use client\";\n\nimport type * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Label } from \"./label\";\n\nexport interface FieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label: string;\n description?: string;\n error?: string;\n htmlFor?: string;\n}\n\nexport const Field = ({\n className,\n label,\n description,\n error,\n htmlFor,\n children,\n ref,\n ...props\n}: FieldProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n return (\n <div ref={ref} className={cn(\"grid gap-2\", className)} {...props}>\n <Label htmlFor={htmlFor} className={cn(error && \"text-destructive\")}>\n {label}\n </Label>\n {children}\n {description && !error && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n {error && <p className=\"text-sm font-medium text-destructive\">{error}</p>}\n </div>\n );\n};\n\nField.displayName = \"Field\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\";\nimport { cn } from \"../utils/cn\";\nimport { Slot } from \"../utils/slot\";\nimport { Label } from \"./label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.use(FormFieldContext);\n const itemContext = React.use(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\nconst FormItem = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n};\nFormItem.displayName = \"FormItem\";\n\nconst FormLabel = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof Label> & {\n ref?: React.Ref<React.ElementRef<typeof Label>> | undefined;\n}) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n};\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = ({\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof Slot> & {\n ref?: React.Ref<React.ElementRef<typeof Slot>> | undefined;\n}) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n};\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement> & {\n ref?: React.Ref<HTMLParagraphElement> | undefined;\n}) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n};\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = ({\n className,\n children,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement> & {\n ref?: React.Ref<HTMLParagraphElement> | undefined;\n}) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-sm font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n );\n};\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n","\"use client\";\n\nimport type * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\nconst gaugeSizes = {\n tiny: 20,\n small: 32,\n medium: 64,\n large: 128,\n} as const;\n\nconst gapPercentBySize = {\n tiny: 9,\n small: 6,\n medium: 5,\n large: 5,\n} as const;\n\nconst defaultGaugeColors = {\n \"0\": \"hsl(var(--success))\",\n \"80\": \"hsl(var(--warning))\",\n \"95\": \"hsl(var(--destructive))\",\n} as const;\n\nexport type GaugeSize = keyof typeof gaugeSizes;\nexport type GaugeArcPriority = \"default\" | \"equal\";\nexport type LegacyGaugeArcPriority = \"value\" | \"secondary\";\n\nexport interface GaugeColorStop {\n /** Value threshold, 0-100. The stop applies when value >= this threshold. */\n value: number;\n /** CSS color string. Prefer semantic tokens or component CSS variables. */\n color: string;\n}\n\nexport type GaugeColorMap = Record<string, string> & {\n /** Explicit primary arc color override. */\n primary?: string;\n /** Explicit secondary arc color override. */\n secondary?: string;\n};\n\nexport interface GaugeProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n | \"aria-busy\"\n | \"aria-valuemax\"\n | \"aria-valuemin\"\n | \"aria-valuenow\"\n | \"children\"\n | \"color\"\n | \"role\"\n > {\n /** Current value, clamped to 0-100. */\n value?: number;\n /** Preset size or legacy pixel diameter. */\n size?: GaugeSize | number;\n /** Custom threshold colors. Prefer semantic token strings. */\n colors?: GaugeColorMap | GaugeColorStop[];\n /** Legacy track color override. Prefer `colors.secondary`. */\n secondaryColor?: string;\n /** Show the numeric value in the center. */\n showValue?: boolean;\n /** Legacy alias for `showValue`. A ReactNode is treated as center overlay content. */\n label?: boolean | React.ReactNode;\n /** Center overlay content, reserved for icon overlays. */\n children?: React.ReactNode;\n /** Arc geometry mode. Use `equal` for true ratios. */\n arcPriority?: GaugeArcPriority | LegacyGaugeArcPriority;\n /** Loading state when the value is unknown. */\n indeterminate?: boolean;\n /** Accessible name when not using aria-labelledby. */\n \"aria-label\"?: string;\n /** ID of adjacent label text. */\n \"aria-labelledby\"?: string;\n}\n\ntype NormalizedGaugeSize = {\n key: GaugeSize;\n pixels: number;\n};\n\ntype ArcGeometry = {\n primaryLength: number;\n secondaryLength: number;\n primaryRotation: number;\n secondaryRotation: number;\n};\n\nfunction clampValue(value: number | undefined): number {\n return Math.min(100, Math.max(0, value ?? 0));\n}\n\nfunction normalizeSize(size: GaugeProps[\"size\"]): NormalizedGaugeSize {\n if (typeof size === \"number\") {\n if (size <= gaugeSizes.tiny) return { key: \"tiny\", pixels: size };\n if (size <= gaugeSizes.small) return { key: \"small\", pixels: size };\n if (size <= gaugeSizes.medium) return { key: \"medium\", pixels: size };\n return { key: \"large\", pixels: size };\n }\n\n const key = size ?? \"medium\";\n return { key, pixels: gaugeSizes[key] };\n}\n\nfunction normalizeArcPriority(arcPriority: GaugeProps[\"arcPriority\"]): GaugeArcPriority {\n if (arcPriority === \"equal\" || arcPriority === \"secondary\") {\n return \"equal\";\n }\n\n return \"default\";\n}\n\nfunction resolveThresholdColor(value: number, colors: GaugeColorMap | GaugeColorStop[]): string {\n const stops = Array.isArray(colors)\n ? colors.map((stop) => [String(stop.value), stop.color] as const)\n : Object.entries(colors).filter(([key]) => Number.isFinite(Number(key)));\n\n const sortedStops = stops\n .map(([key, color]) => ({ threshold: Number(key), color }))\n .filter((stop) => Number.isFinite(stop.threshold))\n .sort((a, b) => a.threshold - b.threshold);\n\n let resolved = sortedStops[0]?.color ?? \"currentColor\";\n\n for (const stop of sortedStops) {\n if (value >= stop.threshold) {\n resolved = stop.color;\n }\n }\n\n return resolved;\n}\n\nfunction resolvePrimaryColor(value: number, colors: GaugeProps[\"colors\"]): string {\n if (Array.isArray(colors)) {\n return resolveThresholdColor(value, colors);\n }\n\n if (colors?.primary) {\n return colors.primary;\n }\n\n return resolveThresholdColor(value, colors ?? defaultGaugeColors);\n}\n\nfunction resolveSecondaryColor(colors: GaugeProps[\"colors\"], secondaryColor?: string): string {\n if (!Array.isArray(colors) && colors?.secondary) {\n return colors.secondary;\n }\n\n return secondaryColor ?? \"hsl(var(--muted))\";\n}\n\nfunction getArcGeometry(\n value: number,\n circumference: number,\n gapPercent: number,\n arcPriority: GaugeArcPriority,\n): ArcGeometry {\n if (arcPriority === \"equal\") {\n const length = (circumference * (100 - 2 * gapPercent)) / 100 / 2;\n const halfGapDegrees = (gapPercent * 3.6) / 2;\n\n return {\n primaryLength: length,\n secondaryLength: length,\n primaryRotation: -90 + halfGapDegrees,\n secondaryRotation: 270 - halfGapDegrees,\n };\n }\n\n const gap = value === 0 ? 0 : 2 * gapPercent;\n const secondaryPercent = Math.max(100 - gap - value, 0);\n\n return {\n primaryLength: (circumference * value) / 100,\n secondaryLength: (circumference * secondaryPercent) / 100,\n primaryRotation: -90,\n secondaryRotation: 270 - gapPercent * 3.6,\n };\n}\n\nfunction getValueTextClass(size: GaugeSize): string {\n switch (size) {\n case \"small\":\n return \"text-xs font-medium\";\n case \"large\":\n return \"text-3xl font-semibold\";\n case \"medium\":\n return \"text-lg font-medium\";\n case \"tiny\":\n return \"text-xs font-medium\";\n }\n}\n\n/**\n * Gauge — circular ratio visual for fixed 0-100 comparisons.\n *\n * Use Progress for determinate task progress. Pair Gauge with adjacent text and\n * connect it via `aria-labelledby` whenever the visual is not self-evident.\n */\nexport const Gauge = ({\n value,\n size = \"medium\",\n colors,\n secondaryColor,\n showValue = false,\n label,\n children,\n arcPriority = \"default\",\n indeterminate = false,\n className,\n style,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ref,\n ...props\n}: GaugeProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const normalizedSize = normalizeSize(size);\n const normalizedPriority = normalizeArcPriority(arcPriority);\n const clampedValue = clampValue(value);\n const radius = normalizedSize.key === \"tiny\" ? 42.5 : 45;\n const circumference = 2 * Math.PI * radius;\n const geometry = getArcGeometry(\n clampedValue,\n circumference,\n gapPercentBySize[normalizedSize.key],\n normalizedPriority,\n );\n const shouldShowValue = (showValue || label === true) && normalizedSize.key !== \"tiny\";\n const centerOverlay = label !== true && label !== false ? label : children;\n const primaryColor = resolvePrimaryColor(clampedValue, colors);\n const trackColor = resolveSecondaryColor(colors, secondaryColor);\n const accessibleLabel =\n ariaLabel ?? (indeterminate ? \"Calculating value\" : `${Math.round(clampedValue)} percent`);\n\n return (\n <div\n {...props}\n ref={ref}\n role=\"progressbar\"\n aria-label={ariaLabelledBy ? undefined : accessibleLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={indeterminate ? undefined : clampedValue}\n aria-busy={indeterminate || undefined}\n className={cn(\"relative inline-flex shrink-0 items-center justify-center\", className)}\n style={{ width: normalizedSize.pixels, height: normalizedSize.pixels, ...style }}\n >\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height={normalizedSize.pixels}\n width={normalizedSize.pixels}\n viewBox=\"0 0 100 100\"\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke={trackColor}\n strokeDasharray={`${indeterminate ? circumference : geometry.secondaryLength} ${circumference}`}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"10\"\n className=\"origin-center transition-[stroke-dasharray,stroke] duration-300 ease-out motion-reduce:transition-none\"\n style={{ transform: `rotate(${geometry.secondaryRotation}deg) scaleY(-1)` }}\n />\n\n {(clampedValue > 0 || normalizedPriority === \"equal\" || indeterminate) && (\n <g\n className={cn(indeterminate && \"origin-center animate-spin motion-reduce:animate-none\")}\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke={primaryColor}\n strokeDasharray={`${indeterminate ? circumference * 0.25 : geometry.primaryLength} ${circumference}`}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"10\"\n className=\"origin-center transition-[stroke-dasharray,stroke] duration-300 ease-out motion-reduce:transition-none\"\n style={{ transform: `rotate(${geometry.primaryRotation}deg)` }}\n />\n </g>\n )}\n </svg>\n\n {shouldShowValue && !indeterminate ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"pointer-events-none absolute inset-0 flex items-center justify-center tabular-nums text-foreground\",\n getValueTextClass(normalizedSize.key),\n )}\n >\n {Math.round(clampedValue)}\n </span>\n ) : null}\n\n {centerOverlay && !shouldShowValue ? (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 flex items-center justify-center text-muted-foreground\"\n >\n {centerOverlay}\n </span>\n ) : null}\n </div>\n );\n};\n\nGauge.displayName = \"Gauge\";\n","\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport type * as React from \"react\";\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { overlayPrimitiveClassNames } from \"./overlay\";\n\nconst HoverCardContent = ({\n className,\n align = \"center\",\n sideOffset = 4,\n side = \"bottom\",\n style,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BasePopover.Popup> & {\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n} & { ref?: React.Ref<React.ElementRef<typeof BasePopover.Popup>> | undefined }) => (\n <BasePopover.Portal>\n <BasePopover.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BasePopover.Popup\n ref={ref}\n className={cn(\n overlayClassNames.popoverSurface,\n overlayPrimitiveClassNames.popoverSurface,\n \"w-64\",\n className,\n )}\n style={{ zIndex: overlayZIndex.popover, ...style }}\n {...props}\n />\n </BasePopover.Positioner>\n </BasePopover.Portal>\n);\nHoverCardContent.displayName = \"HoverCardContent\";\n\nexport { HoverCardContent };\n","\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport * as React from \"react\";\n\nconst HoverCardTrigger = ({\n asChild,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BasePopover.Trigger> & { asChild?: boolean } & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BasePopover.Trigger\n ref={ref}\n {...props}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BasePopover.Trigger ref={ref} {...props}>\n {children}\n </BasePopover.Trigger>\n );\n};\nHoverCardTrigger.displayName = \"HoverCardTrigger\";\n\nexport { HoverCardTrigger };\n","\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport * as React from \"react\";\nimport { overlayTokens } from \"../tokens/components/overlay\";\n\nexport { HoverCardContent } from \"./hover-card-content\";\nexport { HoverCardTrigger } from \"./hover-card-trigger\";\n\n// Base UI Popover currently lacks a native \"hover to open\" feature built-in,\n// so we simulate it with simple controlled state around the BasePopover.\nconst HoverCard = ({\n openDelay = overlayTokens.motion.hoverOpenDelay,\n closeDelay = overlayTokens.motion.hoverCloseDelay,\n children,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BasePopover.Root> & {\n openDelay?: number;\n closeDelay?: number;\n children: React.ReactNode;\n}) => {\n const [open, setOpen] = React.useState(false);\n const timeoutRef = React.useRef<NodeJS.Timeout>(null);\n\n function handleMouseEnter() {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setOpen(true), openDelay);\n }\n\n function handleMouseLeave() {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setOpen(false), closeDelay);\n }\n\n return (\n // biome-ignore lint/a11y/noStaticElementInteractions: hover state wrapper — interactive trigger lives inside HoverCardTrigger\n <div\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className=\"inline-block relative\"\n >\n <BasePopover.Root\n open={open}\n onOpenChange={(v) => {\n if (!v) setOpen(false); // Only allow closing via clicks outside\n }}\n {...props}\n >\n {children}\n </BasePopover.Root>\n </div>\n );\n};\nHoverCard.displayName = \"HoverCard\";\n\nexport { HoverCard };\n","/**\n * Input Component Tokens — Layer 3\n *\n * Component-level sizing and interaction constants. Input consumes semantic\n * colors at runtime and only derives dimensions from primitive tokens here.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n} from \"../primitive\";\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport const inputTokens = {\n sizes: {\n sm: {\n height: primitiveSizing.sm,\n paddingX: primitiveSpacing[2],\n fontSize: primitiveFontSize.xs,\n radius: primitiveRadius.md,\n affixInset: primitiveSpacing[2],\n affixWidth: primitiveSizing.sm,\n controlInset: primitiveSpacing[2] - primitiveSpacing[1] / 2,\n controlSize: primitiveSizing.xs,\n controlIconSize: primitiveSizing.xs - primitiveSpacing[2],\n iconSize: primitiveFontSize.sm,\n },\n md: {\n height: primitiveSizing.md,\n paddingX: primitiveSpacing[3],\n fontSize: primitiveFontSize.sm,\n radius: primitiveRadius.md,\n affixInset: primitiveSpacing[3],\n affixWidth: primitiveSizing.sm + primitiveSpacing[1],\n controlInset: primitiveSpacing[2],\n controlSize: primitiveSizing.tiny,\n controlIconSize: primitiveSizing.tiny - primitiveSpacing[2],\n iconSize: primitiveFontSize.base,\n },\n lg: {\n height: primitiveSizing.lg,\n paddingX: primitiveSpacing[4],\n fontSize: primitiveFontSize.base,\n radius: primitiveRadius.lg,\n affixInset: primitiveSpacing[4],\n affixWidth: primitiveSizing.md,\n controlInset: primitiveSpacing[3],\n controlSize: primitiveSizing.tiny,\n controlIconSize: primitiveSizing.tiny - primitiveSpacing[2],\n iconSize: primitiveFontSize.base,\n },\n },\n focusRingWidth: 3,\n fieldGap: primitiveSpacing[2] - primitiveSpacing[1] / 2,\n messageGap: primitiveSpacing[1],\n} as const;\n","/**\n * Shared form-control interaction classes.\n *\n * Contract:\n * - Native outline is always owned by the design system.\n * - Text-like controls draw their tokenized control ring on :focus so mouse\n * focus cannot leak native square outlines.\n * - Keyboard-only emphasis remains the default pattern for non-text controls.\n * - Invalid state keeps a persistent border, with ring escalation on :focus.\n */\n\ntype FormControlSlot = \"input\" | \"textarea\" | \"select\";\n\nexport const formControlFocusClassNames = {\n input:\n \"outline-none focus:border-ring focus:ring-[length:var(--input-focus-ring-width)] focus:ring-ring/30\",\n textarea:\n \"outline-none focus:border-ring focus:ring-[length:var(--textarea-focus-ring-width)] focus:ring-ring/30\",\n select:\n \"outline-none focus:border-ring focus:ring-[length:var(--select-focus-ring-width)] focus:ring-ring/30\",\n} as const satisfies Record<FormControlSlot, string>;\n\nexport const formControlInvalidClassNames = {\n input:\n \"aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20\",\n textarea:\n \"aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20\",\n select:\n \"aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20\",\n} as const satisfies Record<FormControlSlot, string>;\n","\"use client\";\n\nimport { Input as BaseInput } from \"@base-ui/react/input\";\nimport { Eye, EyeOff, LoaderCircle as Loader2, Cross as X } from \"@nebutra/icons\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { type InputSize, inputTokens } from \"../tokens/components/input\";\nimport { cn } from \"../utils/cn\";\nimport { formControlFocusClassNames, formControlInvalidClassNames } from \"./form-control\";\nimport { Kbd } from \"./kbd\";\n\ntype InputCssVars = React.CSSProperties & {\n \"--input-height\"?: string;\n \"--input-padding-x\"?: string;\n \"--input-padding-left\"?: string;\n \"--input-padding-right\"?: string;\n \"--input-font-size\"?: string;\n \"--input-radius\"?: string;\n \"--input-affix-inset\"?: string;\n \"--input-control-inset\"?: string;\n \"--input-control-size\"?: string;\n \"--input-control-icon-size\"?: string;\n \"--input-icon-size\"?: string;\n \"--input-focus-ring-width\"?: string;\n};\n\nconst inputVariants = cva(\n [\n \"flex h-[var(--input-height)] w-full rounded-[var(--input-radius)] border border-input bg-background\",\n \"px-[var(--input-padding-x)] text-[length:var(--input-font-size)] text-foreground shadow-xs\",\n \"transition-[background-color,border-color,box-shadow,color] duration-micro ease-out\",\n \"placeholder:text-muted-foreground\",\n formControlFocusClassNames.input,\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"read-only:bg-muted/70 read-only:cursor-default\",\n \"file:h-full file:border-0 file:border-e file:border-solid file:border-input file:bg-transparent\",\n \"file:me-[var(--input-padding-x)] file:pe-[var(--input-padding-x)] file:text-[length:var(--input-font-size)] file:font-medium file:text-foreground\",\n formControlInvalidClassNames.input,\n \"[&[type=search]::-webkit-search-cancel-button]:appearance-none\",\n \"[&[type=search]::-webkit-search-decoration]:appearance-none\",\n \"[&[type=search]::-webkit-search-results-button]:appearance-none\",\n \"[&[type=search]::-webkit-search-results-decoration]:appearance-none\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n affix: {\n none: \"\",\n prefix: \"pl-[var(--input-padding-left)]\",\n suffix: \"pr-[var(--input-padding-right)]\",\n both: \"pl-[var(--input-padding-left)] pr-[var(--input-padding-right)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n affix: \"none\",\n },\n },\n);\n\nconst affixVariants = cva(\n [\n \"pointer-events-none absolute top-1/2 flex -translate-y-1/2 items-center text-muted-foreground\",\n \"[&_svg:not([class*=size-])]:size-[var(--input-icon-size)]\",\n ].join(\" \"),\n {\n variants: {\n side: {\n prefix: \"left-[var(--input-affix-inset)]\",\n suffix: \"right-[var(--input-affix-inset)]\",\n },\n },\n },\n);\n\nconst inputControlButtonVariants = cva(\n [\n \"absolute right-[var(--input-control-inset)] top-1/2 flex size-[var(--input-control-size)] -translate-y-1/2 items-center justify-center\",\n \"rounded-[var(--radius-sm)] text-muted-foreground transition-colors duration-micro ease-out\",\n \"hover:bg-accent hover:text-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"[&_svg]:size-[var(--input-control-icon-size)]\",\n ].join(\" \"),\n);\n\nconst fieldMessageVariants = cva(\"text-xs\", {\n variants: {\n tone: {\n description: \"text-muted-foreground\",\n error: \"font-medium text-destructive\",\n },\n },\n});\n\ntype NativeInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, \"prefix\" | \"size\">;\n\ntype LabelledInputProps = {\n /** Visible label. Requires `id` so the label and input remain associated. */\n label: string;\n id: string;\n};\n\ntype UnlabelledInputProps = {\n label?: undefined;\n id?: string;\n};\n\ntype InputOwnProps = {\n /** Visual size variant. Uses Nebutra's compact form row scale. */\n size?: InputSize;\n /** Non-interactive adornment rendered inside the left edge. */\n prefix?: React.ReactNode;\n /** Non-interactive adornment rendered inside the right edge. Hidden by clear/shortcut controls. */\n suffix?: React.ReactNode;\n /** Show a clear button when the field has a value. */\n clearable?: boolean;\n /** Called after the clear button or Escape clears the field. */\n onClear?: () => void;\n /** Value-first change callback for consumers that do not need the native event. */\n onValueChange?: (value: string) => void;\n /** Visual shortcut hint, e.g. \"⌘K\". Dirty search fields show Esc instead. */\n shortcut?: string;\n /** Show an async spinner on the right side without disabling the field. */\n loading?: boolean;\n /** Adds a tokenized password visibility control when `type=\"password\"`. */\n revealable?: boolean;\n /** Accessible label for the password visibility control when the value is hidden. */\n revealLabel?: string;\n /** Accessible label for the password visibility control when the value is visible. */\n hideLabel?: string;\n /** Clear the current value when Escape is pressed. Defaults to true for search inputs. */\n clearOnEscape?: boolean;\n /** Helper text associated with the input through aria-describedby. */\n description?: string;\n /** Boolean marks invalid state; string also renders an inline error message. */\n error?: string | boolean;\n /** Applied to the control wrapper when affixes or control buttons are rendered. */\n wrapperClassName?: string;\n /** Applied to the label/helper/error field wrapper. */\n fieldClassName?: string;\n};\n\nexport type InputProps = NativeInputProps &\n InputOwnProps &\n (LabelledInputProps | UnlabelledInputProps) &\n VariantProps<typeof inputVariants>;\n\nfunction assignRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n\n if (ref) {\n ref.current = value;\n }\n}\n\nfunction getInputStyle(size: InputSize, style: React.CSSProperties | undefined): InputCssVars {\n const token = inputTokens.sizes[size];\n\n return {\n \"--input-height\": `${token.height}px`,\n \"--input-padding-x\": `${token.paddingX}px`,\n \"--input-padding-left\": `${token.affixWidth}px`,\n \"--input-padding-right\": `${token.affixWidth}px`,\n \"--input-font-size\": `${token.fontSize}px`,\n \"--input-radius\": `${token.radius}px`,\n \"--input-affix-inset\": `${token.affixInset}px`,\n \"--input-control-inset\": `${token.controlInset}px`,\n \"--input-control-size\": `${token.controlSize}px`,\n \"--input-control-icon-size\": `${token.controlIconSize}px`,\n \"--input-icon-size\": `${token.iconSize}px`,\n \"--input-focus-ring-width\": `${inputTokens.focusRingWidth}px`,\n borderRadius: \"var(--input-radius)\",\n outline: \"none\",\n ...style,\n };\n}\n\nfunction getAffixMode(prefix: React.ReactNode, hasRightAdornment: boolean) {\n if (prefix != null && hasRightAdornment) return \"both\";\n if (prefix != null) return \"prefix\";\n if (hasRightAdornment) return \"suffix\";\n return \"none\";\n}\n\nfunction isInvalid(\n error: string | boolean | undefined,\n ariaInvalid: NativeInputProps[\"aria-invalid\"],\n) {\n return (\n error === true || typeof error === \"string\" || ariaInvalid === true || ariaInvalid === \"true\"\n );\n}\n\nfunction isTextAffix(value: React.ReactNode): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction joinDescriptionIds(...ids: Array<string | undefined>) {\n return ids.filter(Boolean).join(\" \") || undefined;\n}\n\nconst Input = ({\n ref: forwardedRef,\n ...props\n}: InputProps & { ref?: React.Ref<HTMLInputElement> | undefined }) => {\n const {\n className,\n type = \"text\",\n size = \"md\",\n prefix,\n suffix,\n clearable,\n onClear,\n onValueChange,\n shortcut,\n loading,\n revealable,\n revealLabel = \"Show password\",\n hideLabel = \"Hide password\",\n clearOnEscape,\n wrapperClassName,\n fieldClassName,\n label,\n description,\n error,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n disabled,\n style,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n id,\n ...rest\n } = props;\n\n const isControlled = value !== undefined;\n const baseId = React.useId();\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const descriptionId = description && id ? `${id}-description` : undefined;\n const errorId = typeof error === \"string\" && id ? `${id}-error` : undefined;\n const prefixDescriptionId = isTextAffix(prefix) ? `${id ?? baseId}-prefix` : undefined;\n const suffixDescriptionId = isTextAffix(suffix) ? `${id ?? baseId}-suffix` : undefined;\n const [internalValue, setInternalValue] = React.useState(\n typeof defaultValue === \"string\" || typeof defaultValue === \"number\"\n ? String(defaultValue)\n : \"\",\n );\n const [passwordVisible, setPasswordVisible] = React.useState(false);\n\n const currentValue = isControlled ? String(value ?? \"\") : internalValue;\n const clearOnEscapeEnabled = clearOnEscape ?? type === \"search\";\n const canRevealPassword = Boolean(revealable && type === \"password\");\n const showClear = Boolean(clearable && !disabled && currentValue.length > 0 && !loading);\n const showShortcut = Boolean(shortcut && !loading && !showClear);\n const showSpinner = Boolean(loading);\n const showPasswordToggle = Boolean(canRevealPassword && !loading && !showClear && !showShortcut);\n const hasRightAdornment =\n showClear || showShortcut || showSpinner || showPasswordToggle || suffix != null;\n const hasControlWrapper = prefix != null || hasRightAdornment;\n const affix = getAffixMode(prefix, hasRightAdornment);\n const resolvedInvalid = isInvalid(error, ariaInvalid);\n const describedBy = joinDescriptionIds(\n ariaDescribedBy,\n prefixDescriptionId,\n suffixDescriptionId,\n descriptionId,\n errorId,\n );\n const valueProps: Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"defaultValue\" | \"value\"\n > = isControlled\n ? { value }\n : clearable || shortcut || clearOnEscapeEnabled\n ? { value: currentValue }\n : { defaultValue };\n\n const setInputRef = React.useCallback(\n (node: HTMLElement | null) => {\n const input = node instanceof HTMLInputElement ? node : null;\n inputRef.current = input;\n assignRef(forwardedRef, input);\n },\n [forwardedRef],\n );\n\n const emitNativeInput = React.useCallback(\n (nextValue: string) => {\n const input = inputRef.current;\n\n if (!input) {\n if (!isControlled) setInternalValue(nextValue);\n onValueChange?.(nextValue);\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\",\n )?.set;\n\n valueSetter?.call(input, nextValue);\n input.dispatchEvent(new Event(\"input\", { bubbles: true }));\n },\n [isControlled, onValueChange],\n );\n\n const syncInputValue = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInternalValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n onChange?.(event);\n },\n [isControlled, onChange, onValueChange],\n );\n\n const handleClear = React.useCallback(() => {\n emitNativeInput(\"\");\n onClear?.();\n inputRef.current?.focus();\n }, [emitNativeInput, onClear]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n\n if (\n event.defaultPrevented ||\n event.key !== \"Escape\" ||\n !clearOnEscapeEnabled ||\n currentValue.length === 0 ||\n disabled\n ) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n handleClear();\n },\n [clearOnEscapeEnabled, currentValue.length, disabled, handleClear, onKeyDown],\n );\n\n const control = (\n <BaseInput\n ref={setInputRef}\n data-slot=\"input\"\n type={canRevealPassword && passwordVisible ? \"text\" : type}\n id={id}\n disabled={disabled}\n aria-invalid={resolvedInvalid || undefined}\n aria-describedby={describedBy}\n aria-busy={loading || undefined}\n className={cn(\n inputVariants({ size, affix }),\n type === \"file\" && \"p-0 pr-[var(--input-padding-x)] text-muted-foreground\",\n className,\n )}\n style={getInputStyle(size, style)}\n onChange={syncInputValue}\n onKeyDown={handleKeyDown}\n {...rest}\n {...valueProps}\n />\n );\n\n const inputControl = hasControlWrapper ? (\n <div\n data-slot=\"input-wrapper\"\n className={cn(\"relative flex items-center\", wrapperClassName)}\n style={getInputStyle(size, undefined)}\n >\n {prefix != null && (\n <span\n id={prefixDescriptionId}\n aria-hidden={!isTextAffix(prefix)}\n className={affixVariants({ side: \"prefix\" })}\n >\n {prefix}\n </span>\n )}\n\n {control}\n\n {showSpinner && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-[var(--input-control-inset)] top-1/2 flex size-[var(--input-control-size)] -translate-y-1/2 items-center justify-center text-muted-foreground\"\n style={getInputStyle(size, undefined)}\n >\n <Loader2 className=\"size-[var(--input-control-icon-size)] animate-spin\" />\n </span>\n )}\n\n {showClear && (\n <button\n type=\"button\"\n aria-label=\"Clear input\"\n disabled={disabled}\n className={inputControlButtonVariants()}\n style={getInputStyle(size, undefined)}\n onClick={handleClear}\n >\n <X aria-hidden=\"true\" />\n </button>\n )}\n\n {showShortcut && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-[var(--input-control-inset)] top-1/2 flex -translate-y-1/2 items-center\"\n style={getInputStyle(size, undefined)}\n >\n <Kbd small>{currentValue.length > 0 ? \"Esc\" : shortcut}</Kbd>\n </span>\n )}\n\n {showPasswordToggle && (\n <button\n type=\"button\"\n aria-label={passwordVisible ? hideLabel : revealLabel}\n aria-pressed={passwordVisible}\n disabled={disabled}\n className={inputControlButtonVariants()}\n style={getInputStyle(size, undefined)}\n onClick={() => {\n setPasswordVisible((visible) => !visible);\n inputRef.current?.focus();\n }}\n >\n {passwordVisible ? <EyeOff aria-hidden=\"true\" /> : <Eye aria-hidden=\"true\" />}\n </button>\n )}\n\n {suffix != null && !showClear && !showShortcut && !showSpinner && !showPasswordToggle && (\n <span\n id={suffixDescriptionId}\n aria-hidden={!isTextAffix(suffix)}\n className={affixVariants({ side: \"suffix\" })}\n >\n {suffix}\n </span>\n )}\n </div>\n ) : (\n control\n );\n\n if (!label && !description && typeof error !== \"string\") {\n return inputControl;\n }\n\n return (\n <div\n data-slot=\"input-field\"\n className={cn(\"grid gap-[var(--input-field-gap)]\", fieldClassName)}\n style={\n {\n \"--input-field-gap\": `${inputTokens.fieldGap}px`,\n } as React.CSSProperties\n }\n >\n {label && (\n <label htmlFor={id} className=\"text-sm font-medium text-foreground\">\n {label}\n </label>\n )}\n\n {inputControl}\n\n {description && !error && (\n <p id={descriptionId} className={fieldMessageVariants({ tone: \"description\" })}>\n {description}\n </p>\n )}\n\n {typeof error === \"string\" && (\n <p id={errorId} role=\"alert\" className={fieldMessageVariants({ tone: \"error\" })}>\n {error}\n </p>\n )}\n </div>\n );\n};\nInput.displayName = \"Input\";\n\nexport { Input, inputControlButtonVariants, inputVariants };\n","\"use client\";\n\nimport { Minus } from \"@nebutra/icons\";\nimport { OTPInput, OTPInputContext, type RenderProps } from \"input-otp\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport interface InputOTPProps {\n /** Maximum number of characters */\n maxLength: number;\n /** Current value */\n value?: string;\n /** Change handler */\n onChange?: (newValue: string) => void;\n /** Complete handler */\n onComplete?: (value: string) => void;\n /** Render function for slots */\n render?: (props: RenderProps) => React.ReactNode;\n /** Children (alternative to render) */\n children?: React.ReactNode;\n /** Container class name */\n containerClassName?: string;\n /** Input class name */\n className?: string;\n /** Input pattern validation */\n pattern?: string;\n /** Text alignment */\n textAlign?: \"left\" | \"center\" | \"right\";\n /** Disabled state */\n disabled?: boolean;\n}\n\nconst InputOTP = ({\n className,\n containerClassName,\n children,\n render,\n ref,\n ...props\n}: InputOTPProps & { ref?: React.Ref<HTMLInputElement> | undefined }) => {\n // Build the OTPInput props based on whether render or children is provided\n const otpProps = render ? { render, ...props } : { children, ...props };\n\n return (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...(otpProps as React.ComponentProps<typeof OTPInput>)}\n />\n );\n};\nInputOTP.displayName = \"InputOTP\";\n\nexport type InputOTPGroupProps = React.ComponentPropsWithoutRef<\"div\">;\n\nconst InputOTPGroup = ({\n className,\n ref,\n ...props\n}: InputOTPGroupProps & { ref?: React.Ref<React.ElementRef<\"div\">> | undefined }) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n);\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\nexport interface InputOTPSlotProps extends React.ComponentPropsWithoutRef<\"div\"> {\n index: number;\n}\n\nconst InputOTPSlot = ({\n index,\n className,\n ref,\n ...props\n}: InputOTPSlotProps & { ref?: React.Ref<React.ElementRef<\"div\">> | undefined }) => {\n const inputOTPContext = React.use(OTPInputContext) as {\n slots: Array<{ char?: string; hasFakeCaret?: boolean; isActive?: boolean } | undefined>;\n };\n const slot = inputOTPContext.slots[index];\n const char = slot?.char ?? \"\";\n const hasFakeCaret = slot?.hasFakeCaret ?? false;\n const isActive = slot?.isActive ?? false;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-[background-color,border-color,box-shadow,color,opacity,transform] first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive && \"z-10 ring-2 ring-ring ring-offset-background\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n );\n};\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\nexport type InputOTPSeparatorProps = React.ComponentPropsWithoutRef<\"div\">;\n\nconst InputOTPSeparator = ({\n ref,\n ...props\n}: InputOTPSeparatorProps & { ref?: React.Ref<React.ElementRef<\"div\">> | undefined }) => (\n <div ref={ref} aria-hidden=\"true\" {...props}>\n <Minus className=\"h-4 w-4\" />\n </div>\n);\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };\n","/**\n * Layout Primitives\n *\n * Core layout utilities and patterns.\n */\n\nimport type { CSSProperties } from \"react\";\n\ntype StyleObject = Record<string, string | number | CSSProperties | (string | number)[]>;\n\n/**\n * Common flex layouts\n */\nexport const flexLayouts = {\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n },\n rowCenter: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n rowBetween: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n column: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n columnCenter: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n center: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n} as const satisfies Record<string, StyleObject>;\n\n/**\n * Grid layout helpers\n */\nexport const gridLayouts = {\n auto: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(250px, 1fr))\",\n gap: 3,\n },\n two: {\n display: \"grid\",\n gridTemplateColumns: [\"1fr\", \"1fr 1fr\"],\n gap: 3,\n },\n three: {\n display: \"grid\",\n gridTemplateColumns: [\"1fr\", \"1fr 1fr\", \"1fr 1fr 1fr\"],\n gap: 3,\n },\n four: {\n display: \"grid\",\n gridTemplateColumns: [\"1fr\", \"1fr 1fr\", \"1fr 1fr 1fr 1fr\"],\n gap: 3,\n },\n} as const satisfies Record<string, StyleObject>;\n\n/**\n * Container max-widths (matches Primer breakpoints)\n */\nexport const containerWidths = {\n sm: 544,\n md: 768,\n lg: 1012,\n xl: 1280,\n} as const;\n\n/**\n * Z-index scale for layering\n */\nexport const zIndex = {\n base: 0,\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n modalBackdrop: 1040,\n modal: 1050,\n popover: 1060,\n tooltip: 1070,\n} as const;\n","\"use client\";\n\nimport type * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface LoadingDotsProps {\n ref?: React.Ref<HTMLSpanElement> | undefined;\n /** Diameter of each dot in pixels. Default: 6 */\n size?: number;\n /** Optional content rendered before the dots (e.g. a label). */\n children?: React.ReactNode;\n className?: string;\n}\n\n// =============================================================================\n// Animation keyframe — inline <style> so the registry-distributed copy ships\n// self-contained (no tailwind.config or globals.css edit required on the\n// consumer side). Wrapped in `prefers-reduced-motion: no-preference` to honor\n// Geist's a11y rule — users with reduced motion see static dots.\n// =============================================================================\n\nconst KEYFRAMES = `\n@keyframes loading-dot {\n 0%, 100% { opacity: 0.25; transform: scale(0.75); }\n 50% { opacity: 1; transform: scale(1); }\n}\n@media (prefers-reduced-motion: reduce) {\n .nbt-loading-dot { animation: none !important; opacity: 0.6; }\n}\n`;\n\nconst loadingDotDelayMultipliers = [0, 1, 2] as const;\n\n// =============================================================================\n// LoadingDots\n// =============================================================================\n\nfunction LoadingDots({ ref, size = 6, children, className }: LoadingDotsProps) {\n return (\n <>\n <style>{KEYFRAMES}</style>\n <span\n ref={ref}\n // Geist a11y rule: announce the in-progress label politely so the\n // surrounding text (\"Saving\"/\"Building\") reaches AT users without\n // interrupting their current speech.\n aria-live=\"polite\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n >\n {children}\n <span aria-hidden=\"true\" className=\"inline-flex items-center gap-[3px]\">\n {loadingDotDelayMultipliers.map((delayMultiplier) => (\n <span\n key={delayMultiplier}\n className=\"nbt-loading-dot rounded-full bg-current\"\n style={{\n width: size,\n height: size,\n animation: \"loading-dot var(--duration-cinematic) var(--ease-in-out) infinite\",\n animationDelay: `calc(var(--duration-flow) * ${delayMultiplier})`,\n }}\n />\n ))}\n </span>\n </span>\n </>\n );\n}\n\nexport { LoadingDots };\n","\"use client\";\n\nimport { ChevronDown, LockClosed } from \"@nebutra/icons\";\nimport {\n createContext,\n type HTMLAttributes,\n isValidElement,\n type ReactElement,\n type ReactNode,\n type Ref,\n use,\n} from \"react\";\nimport { overlayClassNames } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { Button, type ButtonProps } from \"./button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n type DropdownMenuContentProps,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\";\n\n/* -------------------------------------------------------------------------- *\\\n * Menu family — Geist-flat API on top of DropdownMenu.\n *\n * Use cases (per Geist guidance):\n * Discoverable trigger that opens a list of actions on a single resource\n * (a dots menu on a row, a dropdown on a primary entity). For right-click\n * or long-press on a row use ContextMenu; for ⌘K global commands use\n * CommandMenu; for two related primary actions use a split button.\n *\n * Behavior — inherited from Base UI / DropdownMenu:\n * Open on click (not hover), Arrow/Home/End/Enter/Space navigation,\n * typeahead, close on item activation / Escape / outside-click, focus\n * returns to trigger on close, position auto-flips on window bounds.\n *\n * Why this lives next to DropdownMenu, not as a fork:\n * DropdownMenu encodes all the heavy a11y wiring. Menu* is a thin facade\n * that rewrites Geist's surface (title-cased section headers, lock icon\n * on permission-gated rows, prefix/suffix slots, error coloring) into\n * DropdownMenu primitives. Don't duplicate behavior.\n\\* -------------------------------------------------------------------------- */\n\n// ---------------------------------------------------------------------------\n// Position → side/align mapping\n// ---------------------------------------------------------------------------\n\nexport type MenuPosition =\n | \"bottom-start\"\n | \"bottom-end\"\n | \"top-start\"\n | \"top-end\"\n | \"right-start\"\n | \"right-end\"\n | \"left-start\"\n | \"left-end\";\n\ntype Side = \"top\" | \"right\" | \"bottom\" | \"left\";\ntype Align = \"start\" | \"end\";\n\nfunction splitPosition(position: MenuPosition): { side: Side; align: Align } {\n const [side, align] = position.split(\"-\") as [Side, Align];\n return { side, align };\n}\n\n// ---------------------------------------------------------------------------\n// Context — share position from MenuContainer down to Menu\n// ---------------------------------------------------------------------------\n\nconst MenuContext = createContext<MenuPosition | null>(null);\n\nfunction useMenuPosition(): MenuPosition {\n return use(MenuContext) ?? \"bottom-start\";\n}\n\n// ---------------------------------------------------------------------------\n// MenuContainer\n// ---------------------------------------------------------------------------\n\nexport interface MenuContainerProps {\n /** Anchor + alignment of the popup. @default \"bottom-start\" */\n position?: MenuPosition;\n children: ReactNode;\n}\n\nexport function MenuContainer({ position = \"bottom-start\", children }: MenuContainerProps) {\n return (\n <MenuContext.Provider value={position}>\n <DropdownMenu>{children}</DropdownMenu>\n </MenuContext.Provider>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MenuButton\n// ---------------------------------------------------------------------------\n\nexport interface MenuButtonProps extends Omit<ButtonProps, \"variant\" | \"size\" | \"shape\" | \"type\"> {\n /** Append a chevron-down glyph after the label. */\n showChevron?: boolean;\n /** Geist Button \"type\" alias. */\n type?: \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"warning\" | \"destructive\";\n /** \"unstyled\" strips chrome so an arbitrary trigger (avatar, dots) takes over. */\n variant?: \"unstyled\";\n /** Geist sizes. */\n size?: \"small\" | \"medium\" | \"large\" | \"tiny\";\n shape?: \"default\" | \"square\" | \"circle\";\n /** Trigger contains only an SVG; ensure an aria-label is set. */\n svgOnly?: boolean;\n}\n\nconst GEIST_TYPE_TO_VARIANT = {\n primary: \"default\",\n secondary: \"secondary\",\n tertiary: \"tertiary\",\n ghost: \"ghost\",\n warning: \"warning\",\n destructive: \"destructive\",\n} as const;\n\nconst GEIST_SIZE_TO_NEBUTRA = {\n tiny: \"tiny\",\n small: \"sm\",\n medium: \"default\",\n large: \"lg\",\n} as const;\n\nexport const MenuButton = function MenuButton({\n showChevron,\n type = \"primary\",\n variant,\n size = \"medium\",\n shape = \"default\",\n svgOnly,\n children,\n className,\n onClick,\n prefix,\n suffix,\n loading,\n \"aria-label\": ariaLabel,\n ref,\n ...rest\n}: MenuButtonProps & { ref?: Ref<HTMLButtonElement> | undefined }) {\n const isUnstyled = variant === \"unstyled\";\n\n // For the bare-button path, narrow to just the HTML attributes we know are\n // safe; ButtonProps's polymorphic shape doesn't compose with <button> here.\n const buttonHtmlProps = {\n ...(onClick !== undefined ? { onClick } : {}),\n ...(ariaLabel !== undefined ? { \"aria-label\": ariaLabel } : {}),\n };\n\n return (\n <DropdownMenuTrigger asChild>\n {isUnstyled ? (\n // \"unstyled\" — render a bare button so callers can wrap an avatar,\n // dots icon, etc. without inheriting Button chrome.\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n \"inline-flex items-center justify-center rounded-[var(--radius-md)]\",\n overlayClassNames.focusRing,\n className,\n )}\n {...buttonHtmlProps}\n >\n {children}\n </button>\n ) : (\n <Button\n ref={ref}\n variant={GEIST_TYPE_TO_VARIANT[type]}\n size={GEIST_SIZE_TO_NEBUTRA[size]}\n shape={shape}\n className={className}\n {...(loading !== undefined ? { loading } : {})}\n {...(prefix !== undefined ? { prefix } : {})}\n {...(suffix !== undefined ? { suffix } : {})}\n {...(ariaLabel !== undefined ? { \"aria-label\": ariaLabel } : {})}\n {...rest}\n >\n {svgOnly ? (\n children\n ) : (\n <>\n {children}\n {showChevron && <ChevronDown className=\"h-3.5 w-3.5 opacity-70\" />}\n </>\n )}\n </Button>\n )}\n </DropdownMenuTrigger>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Menu (the popup)\n// ---------------------------------------------------------------------------\n\nexport interface MenuProps extends Omit<DropdownMenuContentProps, \"side\" | \"align\"> {\n /** Fixed pixel width for the popup; otherwise it sizes to content. */\n width?: number | string;\n}\n\nexport const Menu = function Menu({\n width,\n style,\n className,\n children,\n ref,\n ...rest\n}: MenuProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n const { side, align } = splitPosition(useMenuPosition());\n const widthStyle = width !== undefined ? { width } : {};\n return (\n <DropdownMenuContent\n ref={ref}\n side={side}\n align={align}\n style={{ ...widthStyle, ...style }}\n className={cn(\"min-w-32\", className)}\n {...rest}\n >\n {children}\n </DropdownMenuContent>\n );\n};\n\n// ---------------------------------------------------------------------------\n// MenuItem\n// ---------------------------------------------------------------------------\n\ntype MenuItemKind = \"default\" | \"error\";\n\nexport interface MenuItemProps {\n onClick?: () => void;\n /** Render as an anchor; mutually exclusive with onClick semantically. */\n href?: string;\n disabled?: boolean;\n prefix?: ReactNode;\n suffix?: ReactNode;\n /** `error` renders the row in destructive red — for delete actions. */\n type?: MenuItemKind;\n /**\n * When `href` is present and you need framework-specific routing\n * (next/link, react-router), pass `as={Link}` instead of `<a>`.\n */\n as?: \"a\" | (() => ReactElement);\n className?: string;\n children: ReactNode;\n}\n\nfunction getTextFromNode(node: ReactNode): string {\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) {\n const parts: string[] = [];\n for (const child of node) {\n const text = getTextFromNode(child);\n if (text) parts.push(text);\n }\n return parts.join(\" \");\n }\n if (isValidElement<{ children?: ReactNode }>(node)) return getTextFromNode(node.props.children);\n return \"\";\n}\n\nexport const MenuItem = function MenuItem({\n ref,\n onClick,\n href,\n disabled,\n prefix,\n suffix,\n type = \"default\",\n className,\n children,\n}: MenuItemProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n const content = (\n <span className=\"flex flex-1 items-center gap-2\">\n {prefix && (\n <span aria-hidden=\"true\" className=\"inline-flex shrink-0 [&_svg]:size-4\">\n {prefix}\n </span>\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {suffix && (\n <span aria-hidden=\"true\" className=\"inline-flex shrink-0 [&_svg]:size-4\">\n {suffix}\n </span>\n )}\n </span>\n );\n\n const errorClass =\n type === \"error\"\n ? \"text-destructive data-[highlighted]:bg-destructive/10 data-[highlighted]:text-destructive\"\n : \"\";\n\n // exactOptionalPropertyTypes: only forward props that are defined.\n const passthrough: { onClick?: () => void; disabled?: boolean } = {};\n if (onClick !== undefined) passthrough.onClick = onClick;\n if (disabled !== undefined) passthrough.disabled = disabled;\n\n if (href !== undefined) {\n const anchorLabel = getTextFromNode(children);\n\n return (\n <DropdownMenuItem\n ref={ref}\n // Render the item as an anchor so middle-click + right-click both work.\n // Base UI's `render` pattern slots `content` in as the anchor's child\n // at render time, so the `<a>` is not actually empty at runtime.\n // biome-ignore lint/a11y/useAnchorContent: content is injected by Base UI's render-prop pattern at mount time.\n render={<a href={href} aria-label={anchorLabel || undefined} />}\n className={cn(errorClass, className)}\n {...passthrough}\n >\n {content}\n </DropdownMenuItem>\n );\n }\n\n return (\n <DropdownMenuItem ref={ref} className={cn(errorClass, className)} {...passthrough}>\n {content}\n </DropdownMenuItem>\n );\n};\n\n// ---------------------------------------------------------------------------\n// MenuLink — shortcut for href-only items\n// ---------------------------------------------------------------------------\n\nexport interface MenuLinkProps extends Omit<MenuItemProps, \"onClick\" | \"href\"> {\n href: string;\n}\n\nexport const MenuLink = function MenuLink({\n ref,\n ...props\n}: MenuLinkProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n return <MenuItem ref={ref} {...props} />;\n};\n\n// ---------------------------------------------------------------------------\n// MenuItemLocked — permission-gated; visually disabled + lock icon suffix\n// ---------------------------------------------------------------------------\n\nexport interface MenuItemLockedProps extends Omit<MenuItemProps, \"disabled\" | \"type\" | \"suffix\"> {\n /** Wire an onClick anyway — useful for analytics on attempted activation. */\n onClick?: () => void;\n}\n\nexport const MenuItemLocked = function MenuItemLocked({\n children,\n ref,\n ...rest\n}: MenuItemLockedProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n return (\n <MenuItem ref={ref} disabled suffix={<LockClosed aria-hidden=\"true\" />} {...rest}>\n {children}\n </MenuItem>\n );\n};\n\n// ---------------------------------------------------------------------------\n// MenuSection — labeled group of items\n// ---------------------------------------------------------------------------\n\nexport interface MenuSectionProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"children\" | \"title\"> {\n /** Title Case, 1–2 words (Workspace, Recent Projects). */\n title?: ReactNode;\n /** Render a divider above the section. @default true after the first */\n showDivider?: boolean;\n children: ReactNode;\n}\n\nexport const MenuSection = function MenuSection({\n title,\n showDivider,\n children,\n className,\n ref,\n ...rest\n}: MenuSectionProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n return (\n <>\n {showDivider && <DropdownMenuSeparator />}\n <DropdownMenuGroup ref={ref} className={className} {...rest}>\n {title && (\n <DropdownMenuLabel className=\"text-muted-foreground text-xs uppercase tracking-wide\">\n {title}\n </DropdownMenuLabel>\n )}\n {children}\n </DropdownMenuGroup>\n </>\n );\n};\n","\"use client\";\n\nimport { Check, ChevronRight, Status as Circle } from \"@nebutra/icons\";\nimport * as React from \"react\";\n\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { overlayPrimitiveClassNames } from \"./overlay\";\n\nfunction assignRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n\n if (ref) {\n ref.current = value;\n }\n}\n\nconst MenubarContext = React.createContext<{\n activeMenu: string | null;\n setActiveMenu: (menu: string | null) => void;\n}>({ activeMenu: null, setActiveMenu: () => {} });\n\nconst Menubar = ({\n className,\n children,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const [activeMenu, setActiveMenu] = React.useState<string | null>(null);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const contextValue = { activeMenu, setActiveMenu };\n\n React.useEffect(() => {\n function handlePointerDown(event: PointerEvent) {\n if (event.target instanceof Node && rootRef.current?.contains(event.target)) return;\n setActiveMenu(null);\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\n }, []);\n\n function setRootRef(node: HTMLDivElement | null) {\n rootRef.current = node;\n assignRef(ref, node);\n }\n\n return (\n <MenubarContext.Provider value={contextValue}>\n <div\n ref={setRootRef}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n }\n }}\n tabIndex={-1}\n role=\"menubar\"\n className={cn(overlayPrimitiveClassNames.menubarRoot, className)}\n {...props}\n >\n {children}\n </div>\n </MenubarContext.Provider>\n );\n};\nMenubar.displayName = \"Menubar\";\n\nconst MenubarMenuContext = React.createContext<{\n value: string;\n isOpen: boolean;\n}>({ value: \"\", isOpen: false });\n\nconst MenubarMenu = ({ children }: { children: React.ReactNode }) => {\n const { activeMenu } = React.use(MenubarContext);\n const value = React.useId();\n const isOpen = activeMenu === value;\n const contextValue = { value, isOpen };\n\n return (\n <MenubarMenuContext.Provider value={contextValue}>\n <div className=\"relative inline-block text-left\">{children}</div>\n </MenubarMenuContext.Provider>\n );\n};\n\nconst MenubarPortal = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nconst MenubarGroup = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nconst MenubarTrigger = ({\n className,\n type = \"button\",\n ref,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement> & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n const { activeMenu, setActiveMenu } = React.use(MenubarContext);\n const { value, isOpen } = React.use(MenubarMenuContext);\n\n return (\n <button\n ref={ref}\n type={type}\n role=\"menuitem\"\n tabIndex={0}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n onClick={() => setActiveMenu(isOpen ? null : value)}\n onMouseEnter={() => {\n // Open on hover only if another menu is already active\n if (activeMenu && activeMenu !== value) {\n setActiveMenu(value);\n }\n }}\n className={cn(overlayPrimitiveClassNames.menubarTrigger, className)}\n {...props}\n />\n );\n};\nMenubarTrigger.displayName = \"MenubarTrigger\";\n\nconst MenubarSubContext = React.createContext<{\n isOpen: boolean;\n setIsOpen: (o: boolean) => void;\n}>({ isOpen: false, setIsOpen: () => {} });\n\nconst MenubarSub = ({ children }: { children: React.ReactNode }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const contextValue = { isOpen, setIsOpen };\n\n return (\n <MenubarSubContext.Provider value={contextValue}>\n <div\n className=\"relative\"\n onPointerEnter={() => setIsOpen(true)}\n onPointerLeave={() => setIsOpen(false)}\n >\n {children}\n </div>\n </MenubarSubContext.Provider>\n );\n};\n\nconst MenubarSubTrigger = ({\n className,\n inset,\n children,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { inset?: boolean } & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => {\n const { isOpen } = React.use(MenubarSubContext);\n return (\n <div\n ref={ref}\n role=\"menuitem\"\n tabIndex={0}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n className={cn(overlayPrimitiveClassNames.menubarSubTrigger, inset && \"pl-8\", className)}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </div>\n );\n};\nMenubarSubTrigger.displayName = \"MenubarSubTrigger\";\n\nconst MenubarSubContent = ({\n className,\n style,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const { isOpen } = React.use(MenubarSubContext);\n\n if (!isOpen) return null;\n\n return (\n <div\n ref={ref}\n role=\"menu\"\n className={cn(\n overlayClassNames.menuSurface,\n overlayPrimitiveClassNames.menuSurface,\n \"absolute top-0 left-full ml-1 min-w-[8rem]\",\n className,\n )}\n style={{ zIndex: overlayZIndex.popover, ...style }}\n {...props}\n />\n );\n};\nMenubarSubContent.displayName = \"MenubarSubContent\";\n\nconst MenubarContent = ({\n className,\n align: _align = \"start\",\n alignOffset: _alignOffset = -4,\n sideOffset: _sideOffset = 8,\n style,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n align?: \"start\" | \"center\" | \"end\";\n alignOffset?: number;\n sideOffset?: number;\n} & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const { isOpen } = React.use(MenubarMenuContext);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const [side, setSide] = React.useState<\"top\" | \"bottom\">(\"bottom\");\n\n React.useLayoutEffect(() => {\n if (!isOpen) {\n setSide(\"bottom\");\n return;\n }\n\n const content = contentRef.current;\n if (!content) return;\n\n const viewportPadding = 8;\n const rect = content.getBoundingClientRect();\n const availableAbove = rect.top - content.offsetHeight - viewportPadding;\n const isBottomClipped = rect.bottom > window.innerHeight - viewportPadding;\n\n setSide(isBottomClipped && availableAbove >= viewportPadding ? \"top\" : \"bottom\");\n }, [isOpen]);\n\n function setContentRef(node: HTMLDivElement | null) {\n contentRef.current = node;\n assignRef(ref, node);\n }\n\n if (!isOpen) return null;\n\n return (\n <div\n ref={setContentRef}\n role=\"menu\"\n data-side={side}\n className={cn(\n overlayClassNames.menuSurface,\n overlayPrimitiveClassNames.menuSurface,\n \"absolute left-0 min-w-[12rem]\",\n side === \"top\" ? \"bottom-full mb-[8px]\" : \"top-full mt-[8px]\",\n className,\n )}\n style={{ zIndex: overlayZIndex.popover, ...style }}\n {...props}\n />\n );\n};\nMenubarContent.displayName = \"MenubarContent\";\n\nconst MenubarItem = ({\n className,\n inset,\n disabled,\n asChild,\n children,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n inset?: boolean;\n disabled?: boolean;\n asChild?: boolean;\n} & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const { setActiveMenu } = React.use(MenubarContext);\n\n const activateMenuItem = (e: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n setActiveMenu(null);\n if (props.onClick) props.onClick(e);\n };\n\n const closeMenuItem = () => {\n if (!disabled) {\n setActiveMenu(null);\n }\n };\n\n if (asChild && React.isValidElement(children)) {\n const child = children as React.ReactElement<React.ComponentProps<\"div\">>;\n return React.cloneElement(child, {\n ref,\n role: child.props.role ?? \"menuitem\",\n tabIndex: disabled ? -1 : (child.props.tabIndex ?? 0),\n \"aria-disabled\": disabled || undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n onClick: (e: React.MouseEvent<HTMLDivElement>) => {\n activateMenuItem(e);\n if (child.props.onClick) child.props.onClick(e);\n },\n className: cn(\n overlayPrimitiveClassNames.menubarItem,\n inset && \"pl-8\",\n className,\n child.props.className,\n ),\n ...props,\n } as React.ComponentProps<\"div\"> & React.RefAttributes<HTMLDivElement>);\n }\n\n return (\n <div\n ref={ref}\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? \"\" : undefined}\n onClick={activateMenuItem}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n closeMenuItem();\n }\n }}\n className={cn(overlayPrimitiveClassNames.menubarItem, inset && \"pl-8\", className)}\n {...props}\n >\n {children}\n </div>\n );\n};\nMenubarItem.displayName = \"MenubarItem\";\n\nconst MenubarCheckboxItem = ({\n className,\n children,\n checked,\n disabled,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { checked?: boolean; disabled?: boolean } & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <div\n ref={ref}\n role=\"menuitemcheckbox\"\n tabIndex={disabled ? -1 : 0}\n aria-checked={checked || false}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? \"\" : undefined}\n className={cn(overlayPrimitiveClassNames.menubarCheckboxItem, className)}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n {checked && <Check className=\"h-4 w-4\" />}\n </span>\n {children}\n </div>\n);\nMenubarCheckboxItem.displayName = \"MenubarCheckboxItem\";\n\nconst MenubarRadioItem = ({\n className,\n children,\n checked,\n disabled,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n checked?: boolean;\n value?: string;\n disabled?: boolean;\n} & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <div\n ref={ref}\n role=\"menuitemradio\"\n tabIndex={disabled ? -1 : 0}\n aria-checked={checked || false}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? \"\" : undefined}\n className={cn(overlayPrimitiveClassNames.menubarCheckboxItem, className)}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <Circle className={cn(\"h-2 w-2 fill-current\", checked ? \"opacity-100\" : \"opacity-0\")} />\n </span>\n {children}\n </div>\n);\nMenubarRadioItem.displayName = \"MenubarRadioItem\";\n\nconst MenubarRadioGroup = ({\n children,\n className,\n ...props\n}: React.FieldsetHTMLAttributes<HTMLFieldSetElement>) => (\n <fieldset className={cn(\"m-0 min-w-0 border-0 p-0\", className)} {...props}>\n {children}\n </fieldset>\n);\n\nconst MenubarLabel = ({\n className,\n inset,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { inset?: boolean } & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <div\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className)}\n {...props}\n />\n);\nMenubarLabel.displayName = \"MenubarLabel\";\n\nconst MenubarSeparator = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\n);\nMenubarSeparator.displayName = \"MenubarSeparator\";\n\nconst MenubarShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)}\n {...props}\n />\n );\n};\nMenubarShortcut.displayName = \"MenubarShortcut\";\n\nexport {\n Menubar,\n MenubarCheckboxItem,\n MenubarContent,\n MenubarGroup,\n MenubarItem,\n MenubarLabel,\n MenubarMenu,\n MenubarPortal,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSeparator,\n MenubarShortcut,\n MenubarSub,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarTrigger,\n};\n","\"use client\";\n\nimport {\n createContext,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n type RefObject,\n use,\n useEffect,\n useId,\n useMemo,\n} from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Button, type ButtonProps } from \"./button\";\nimport { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from \"./dialog\";\n\n/* -------------------------------------------------------------------------- *\\\n * Modal — Geist-flat API on top of Dialog (Base UI).\n *\n * Use cases (per Geist guidance):\n * Use a Modal when a decision must block the rest of the page. For\n * persistent associated context where the underlying page stays readable,\n * use Sheet on desktop or Drawer on mobile. Skip Modal for routine create\n * flows that have a dedicated page; route to the page instead.\n *\n * Compound surface:\n * <Modal.Modal> — root (controlled via `active`/`onClickOutside`)\n * <Modal.Body> — scrollable body\n * <Modal.Header> — header block\n * <Modal.Title> — Title Case statement, never a question\n * <Modal.Subtitle> — sentence case, 1–3 sentences\n * </Modal.Header>\n * <Modal.Inset> — bg-muted recessed panel\n * </Modal.Body>\n * <Modal.Actions> — footer action row\n * <Modal.Action> — Button wrapper (type=primary|secondary)\n * </Modal.Actions>\n * </Modal.Modal>\n *\n * Accessibility — encoded once, not at every call site:\n * - `aria-labelledby` is auto-wired to <Modal.Title> via context so screen\n * readers announce the title on open. No manual wiring required.\n * - Focus trap, Escape-to-close, return-focus-to-trigger are inherited\n * from Base UI's Dialog.\n *\n * Destructive flows (caller responsibility):\n * Default focus to Cancel on destructive modals. The pattern doesn't\n * enforce this — pass `initialFocusRef` to the Cancel action. For\n * high-stakes destructive (delete prod, rotate signing key, downgrade\n * plan), gate the primary on a typed-match input — see DestructiveActionModal.\n *\n * Sticky mode:\n * When `sticky={true}`, the body region scrolls within a max-height while\n * the actions row stays pinned at the bottom — useful for long forms or\n * legal copy. The default lets the popup size to its content.\n\\* -------------------------------------------------------------------------- */\n\n// ---------------------------------------------------------------------------\n// Context — share titleId so Modal.Title auto-links via aria-labelledby\n// ---------------------------------------------------------------------------\n\ntype ModalContextValue = {\n titleId: string;\n sticky: boolean;\n};\n\nconst ModalContext = createContext<ModalContextValue | null>(null);\n\nfunction useModalContext(): ModalContextValue {\n const ctx = use(ModalContext);\n if (!ctx) throw new Error(\"Modal.* must be used inside <Modal.Modal>\");\n return ctx;\n}\n\n// ---------------------------------------------------------------------------\n// Modal.Modal (root)\n// ---------------------------------------------------------------------------\n\nexport interface ModalRootProps {\n /** Open state — controlled. */\n active: boolean;\n /** Called when the user clicks the backdrop (or presses Escape). */\n onClickOutside?: () => void;\n /**\n * Sticky mode: body scrolls within a max-height; actions stay pinned at\n * the bottom. @default false\n */\n sticky?: boolean;\n /**\n * Focus this element after the modal opens. Default focus is the first\n * focusable element. For destructive modals, point this at Cancel.\n */\n initialFocusRef?: RefObject<HTMLElement | null>;\n children: ReactNode;\n className?: string;\n}\n\nfunction ModalRoot({\n active,\n onClickOutside,\n sticky = false,\n initialFocusRef,\n children,\n className,\n}: ModalRootProps) {\n const titleId = useId();\n const value = useMemo<ModalContextValue>(() => ({ titleId, sticky }), [titleId, sticky]);\n\n // Drive initialFocusRef once the modal opens. Base UI's Dialog has its own\n // focus-trap; we override the landing target after a tick so the trap finds\n // a target that's actually mounted.\n useEffect(() => {\n if (!active) return;\n const el = initialFocusRef?.current;\n if (!el) return;\n const id = requestAnimationFrame(() => {\n el.focus();\n });\n return () => cancelAnimationFrame(id);\n }, [active, initialFocusRef]);\n\n return (\n <ModalContext.Provider value={value}>\n <Dialog\n open={active}\n onOpenChange={(open) => {\n if (!open) onClickOutside?.();\n }}\n >\n <DialogContent\n aria-labelledby={titleId}\n className={cn(\n \"max-w-md gap-0 p-0\",\n sticky && \"max-h-[85vh] grid grid-rows-[1fr_auto]\",\n className,\n )}\n >\n {children}\n </DialogContent>\n </Dialog>\n </ModalContext.Provider>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Modal.Body\n// ---------------------------------------------------------------------------\n\nexport type ModalBodyProps = HTMLAttributes<HTMLDivElement>;\n\nconst ModalBody = function ModalBody({\n className,\n ref,\n ...rest\n}: ModalBodyProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n const { sticky } = useModalContext();\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col gap-4 px-6 pt-6 pb-4\",\n sticky && \"min-h-0 overflow-y-auto\",\n className,\n )}\n {...rest}\n />\n );\n};\n\n// ---------------------------------------------------------------------------\n// Modal.Header / Modal.Title / Modal.Subtitle\n// ---------------------------------------------------------------------------\n\nexport type ModalHeaderProps = HTMLAttributes<HTMLDivElement>;\n\nconst ModalHeader = function ModalHeader({\n className,\n children,\n ref,\n ...rest\n}: ModalHeaderProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n return (\n <DialogHeader ref={ref} className={cn(\"space-y-2 text-left\", className)} {...rest}>\n {children}\n </DialogHeader>\n );\n};\n\nexport type ModalTitleProps = HTMLAttributes<HTMLHeadingElement>;\n\nconst ModalTitle = function ModalTitle({\n className,\n ref,\n ...rest\n}: ModalTitleProps & { ref?: Ref<HTMLHeadingElement> | undefined }) {\n const { titleId } = useModalContext();\n // DialogTitle (Base UI) already renders <h2> with the right sizing. The\n // context-provided id wires aria-labelledby on the popup automatically.\n return (\n <DialogTitle\n ref={ref}\n id={titleId}\n className={cn(\"font-semibold text-foreground text-lg leading-tight\", className)}\n {...rest}\n />\n );\n};\n\nexport type ModalSubtitleProps = HTMLAttributes<HTMLParagraphElement>;\n\nconst ModalSubtitle = function ModalSubtitle({\n className,\n ref,\n ...rest\n}: ModalSubtitleProps & { ref?: Ref<HTMLParagraphElement> | undefined }) {\n return (\n <p\n ref={ref}\n className={cn(\"text-muted-foreground text-sm leading-relaxed\", className)}\n {...rest}\n />\n );\n};\n\n// ---------------------------------------------------------------------------\n// Modal.Inset\n// ---------------------------------------------------------------------------\n\nexport type ModalInsetProps = HTMLAttributes<HTMLDivElement>;\n\nconst ModalInset = function ModalInset({\n className,\n ref,\n ...rest\n}: ModalInsetProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n return (\n <div\n ref={ref}\n className={cn(\"-mx-6 my-2 border-border border-y bg-muted/40 px-6 py-4\", className)}\n {...rest}\n />\n );\n};\n\n// ---------------------------------------------------------------------------\n// Modal.Actions / Modal.Action\n// ---------------------------------------------------------------------------\n\nexport type ModalActionsProps = HTMLAttributes<HTMLDivElement>;\n\nconst ModalActions = function ModalActions({\n className,\n children,\n ref,\n ...rest\n}: ModalActionsProps & { ref?: Ref<HTMLDivElement> | undefined }) {\n const { sticky } = useModalContext();\n return (\n <DialogFooter\n ref={ref}\n className={cn(\n \"flex-row items-center justify-end gap-2 border-border border-t px-6 py-4\",\n sticky && \"bg-background/95 backdrop-blur-sm\",\n className,\n )}\n {...rest}\n >\n {children}\n </DialogFooter>\n );\n};\n\nexport interface ModalActionProps extends Omit<ButtonProps, \"variant\" | \"size\" | \"type\"> {\n /** Geist Modal.Action \"type\" — primary or secondary. @default \"primary\" */\n type?: \"primary\" | \"secondary\";\n /** Stretch to fill the actions row (used in single-button modals). */\n fullWidth?: boolean;\n /** Optional leading glyph. */\n prefix?: ReactNode;\n /** HTML button type override (for forms). */\n buttonType?: \"button\" | \"submit\" | \"reset\";\n ref?: Ref<HTMLButtonElement>;\n}\n\nconst ModalAction = function ModalAction({\n type = \"primary\",\n fullWidth,\n prefix,\n buttonType = \"button\",\n className,\n children,\n ref,\n ...rest\n}: ModalActionProps & { ref?: Ref<HTMLButtonElement> | undefined }) {\n return (\n <Button\n ref={ref}\n type={buttonType}\n variant={type === \"secondary\" ? \"secondary\" : \"default\"}\n size=\"default\"\n className={cn(fullWidth && \"w-full\", className)}\n {...rest}\n >\n {prefix && (\n <span aria-hidden=\"true\" className=\"inline-flex shrink-0 [&_svg]:size-4\">\n {prefix}\n </span>\n )}\n {children}\n </Button>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Compound export — Modal.Modal / Modal.Body / Modal.Header / Modal.Title /\n// Modal.Subtitle / Modal.Inset / Modal.Actions / Modal.Action\n// ---------------------------------------------------------------------------\n\n/**\n * @example Basic create-resource modal\n * ```tsx\n * <Modal.Modal active={open} onClickOutside={() => setOpen(false)}>\n * <Modal.Body>\n * <Modal.Header>\n * <Modal.Title>Create Token</Modal.Title>\n * <Modal.Subtitle>Enter a unique name for your token.</Modal.Subtitle>\n * </Modal.Header>\n * </Modal.Body>\n * <Modal.Actions>\n * <Modal.Action type=\"secondary\" onClick={() => setOpen(false)}>Cancel</Modal.Action>\n * <Modal.Action onClick={() => handleCreate()}>Create Token</Modal.Action>\n * </Modal.Actions>\n * </Modal.Modal>\n * ```\n *\n * @example Destructive modal — default focus on Cancel\n * ```tsx\n * const cancelRef = useRef<HTMLButtonElement>(null);\n * <Modal.Modal active={open} onClickOutside={() => setOpen(false)} initialFocusRef={cancelRef}>\n * <Modal.Body>\n * <Modal.Header>\n * <Modal.Title>Delete Project</Modal.Title>\n * <Modal.Subtitle>This cannot be undone.</Modal.Subtitle>\n * </Modal.Header>\n * </Modal.Body>\n * <Modal.Actions>\n * <Modal.Action ref={cancelRef} type=\"secondary\" onClick={() => setOpen(false)}>Cancel</Modal.Action>\n * <Modal.Action onClick={() => handleDelete()}>Delete Project</Modal.Action>\n * </Modal.Actions>\n * </Modal.Modal>\n * ```\n */\nexport const Modal = {\n Modal: ModalRoot,\n Body: ModalBody,\n Header: ModalHeader,\n Title: ModalTitle,\n Subtitle: ModalSubtitle,\n Inset: ModalInset,\n Actions: ModalActions,\n Action: ModalAction,\n} as const;\n","/**\n * MultiSelect Component Tokens — Layer 3\n *\n * Compact menu selector for dense filters and permission scopes. Runtime\n * colors stay semantic in the primitive; this file owns dimensions, shape,\n * and motion only.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport type MultiSelectWidth = \"sm\" | \"md\" | \"lg\";\n\nexport const multiSelectTokens = {\n width: {\n sm: primitiveSpacing[10] * 6,\n md: primitiveSpacing[10] * 7,\n lg: primitiveSpacing[10] * 8,\n },\n trigger: {\n height: primitiveSizing.md,\n paddingX: primitiveSpacing[3],\n gap: primitiveSpacing[2],\n radius: primitiveRadius.md,\n fontSize: primitiveFontSize.sm,\n iconSize: primitiveSpacing[4],\n },\n content: {\n padding: primitiveSpacing[1],\n radius: primitiveRadius.lg,\n maxHeight: primitiveSpacing[24] * 4,\n },\n row: {\n minHeight: primitiveSizing.md,\n paddingX: primitiveSpacing[2],\n paddingY: primitiveSpacing[1] + primitiveSpacing[1] / 2,\n gap: primitiveSpacing[2],\n radius: primitiveRadius.md,\n fontSize: primitiveFontSize.sm,\n descriptionSize: primitiveFontSize.xs,\n checkboxSize: primitiveSizing.xs,\n checkboxIconSize: primitiveFontSize.sm,\n actionMinWidth: primitiveSpacing[10] * 2 - primitiveSpacing[1],\n },\n motion: {\n duration: primitiveTransition.duration.micro,\n popoverDuration: primitiveTransition.duration.flow,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","\"use client\";\n\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport { Check, ChevronDown } from \"@nebutra/icons\";\nimport * as React from \"react\";\nimport { type MultiSelectWidth, multiSelectTokens } from \"../tokens/components/multi-select\";\nimport { cn } from \"../utils/cn\";\n\ntype MultiSelectCssVar =\n | \"--multi-select-width\"\n | \"--multi-select-trigger-height\"\n | \"--multi-select-trigger-padding-x\"\n | \"--multi-select-trigger-gap\"\n | \"--multi-select-trigger-radius\"\n | \"--multi-select-trigger-font-size\"\n | \"--multi-select-trigger-icon-size\"\n | \"--multi-select-content-padding\"\n | \"--multi-select-content-radius\"\n | \"--multi-select-content-max-height\"\n | \"--multi-select-row-min-height\"\n | \"--multi-select-row-padding-x\"\n | \"--multi-select-row-padding-y\"\n | \"--multi-select-row-gap\"\n | \"--multi-select-row-radius\"\n | \"--multi-select-row-font-size\"\n | \"--multi-select-row-description-size\"\n | \"--multi-select-checkbox-size\"\n | \"--multi-select-checkbox-icon-size\"\n | \"--multi-select-action-min-width\"\n | \"--multi-select-duration\"\n | \"--multi-select-popover-duration\"\n | \"--multi-select-easing\";\n\ntype MultiSelectCssVars = React.CSSProperties & Record<MultiSelectCssVar, string>;\n\ntype MultiSelectContextValue = {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n};\n\nconst MultiSelectContext = React.createContext<MultiSelectContextValue | null>(null);\n\nconst ROW_SELECTOR = \"[data-multi-select-row]\";\nconst CHECKBOX_SELECTOR = \"[data-multi-select-checkbox]\";\nconst ACTION_SELECTOR = \"[data-multi-select-action]\";\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nfunction useMultiSelectContext(component: string) {\n const context = React.use(MultiSelectContext);\n if (!context) {\n throw new Error(`${component} must be used inside MultiSelectRoot.`);\n }\n return context;\n}\n\nfunction composeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n for (const ref of refs) {\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }\n };\n}\n\nfunction createMultiSelectCssVars(width: MultiSelectWidth): MultiSelectCssVars {\n return {\n \"--multi-select-width\": `${multiSelectTokens.width[width]}px`,\n \"--multi-select-trigger-height\": `${multiSelectTokens.trigger.height}px`,\n \"--multi-select-trigger-padding-x\": `${multiSelectTokens.trigger.paddingX}px`,\n \"--multi-select-trigger-gap\": `${multiSelectTokens.trigger.gap}px`,\n \"--multi-select-trigger-radius\": `${multiSelectTokens.trigger.radius}px`,\n \"--multi-select-trigger-font-size\": `${multiSelectTokens.trigger.fontSize}px`,\n \"--multi-select-trigger-icon-size\": `${multiSelectTokens.trigger.iconSize}px`,\n \"--multi-select-content-padding\": `${multiSelectTokens.content.padding}px`,\n \"--multi-select-content-radius\": `${multiSelectTokens.content.radius}px`,\n \"--multi-select-content-max-height\": `${multiSelectTokens.content.maxHeight}px`,\n \"--multi-select-row-min-height\": `${multiSelectTokens.row.minHeight}px`,\n \"--multi-select-row-padding-x\": `${multiSelectTokens.row.paddingX}px`,\n \"--multi-select-row-padding-y\": `${multiSelectTokens.row.paddingY}px`,\n \"--multi-select-row-gap\": `${multiSelectTokens.row.gap}px`,\n \"--multi-select-row-radius\": `${multiSelectTokens.row.radius}px`,\n \"--multi-select-row-font-size\": `${multiSelectTokens.row.fontSize}px`,\n \"--multi-select-row-description-size\": `${multiSelectTokens.row.descriptionSize}px`,\n \"--multi-select-checkbox-size\": `${multiSelectTokens.row.checkboxSize}px`,\n \"--multi-select-checkbox-icon-size\": `${multiSelectTokens.row.checkboxIconSize}px`,\n \"--multi-select-action-min-width\": `${multiSelectTokens.row.actionMinWidth}px`,\n \"--multi-select-duration\": `${multiSelectTokens.motion.duration}ms`,\n \"--multi-select-popover-duration\": `${multiSelectTokens.motion.popoverDuration}ms`,\n \"--multi-select-easing\": multiSelectTokens.motion.easing,\n };\n}\n\nfunction getRows(content: HTMLDivElement | null): HTMLElement[] {\n if (!content) return [];\n return Array.from(content.querySelectorAll<HTMLElement>(ROW_SELECTOR));\n}\n\nfunction getFocusableElements(content: HTMLDivElement | null): HTMLElement[] {\n if (!content) return [];\n return Array.from(content.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (element) => !element.hasAttribute(\"disabled\") && element.tabIndex !== -1,\n );\n}\n\nfunction getControl(row: HTMLElement, part: \"checkbox\" | \"action\"): HTMLElement | null {\n const selector = part === \"checkbox\" ? CHECKBOX_SELECTOR : ACTION_SELECTOR;\n return row.querySelector<HTMLElement>(selector);\n}\n\nfunction getActiveRow(rows: readonly HTMLElement[]): HTMLElement | null {\n const activeElement = document.activeElement;\n if (!(activeElement instanceof HTMLElement)) return null;\n return rows.find((row) => row.contains(activeElement)) ?? null;\n}\n\nfunction getActivePart(row: HTMLElement | null): \"checkbox\" | \"action\" {\n const activeElement = document.activeElement;\n if (!(activeElement instanceof HTMLElement) || !row) return \"checkbox\";\n const action = getControl(row, \"action\");\n return action?.contains(activeElement) ? \"action\" : \"checkbox\";\n}\n\nfunction focusRowControl(row: HTMLElement | undefined, part: \"checkbox\" | \"action\") {\n if (!row) return;\n const preferred = getControl(row, part);\n const fallback = getControl(row, part === \"checkbox\" ? \"action\" : \"checkbox\");\n (preferred ?? fallback)?.focus();\n}\n\nfunction focusFirstRow(content: HTMLDivElement | null) {\n const [firstRow] = getRows(content);\n if (firstRow) {\n focusRowControl(firstRow, \"checkbox\");\n return;\n }\n getFocusableElements(content)[0]?.focus();\n}\n\ntype MultiSelectSmartActionInput = {\n checked: boolean;\n selectedCount: number;\n totalCount: number;\n onChange: () => void;\n onSelectOnly?: (() => void) | undefined;\n onSelectAll?: (() => void) | undefined;\n selectLabel?: string | undefined;\n deselectLabel?: string | undefined;\n selectOnlyLabel?: string | undefined;\n selectAllLabel?: string | undefined;\n};\n\nfunction getSmartAction({\n checked,\n selectedCount,\n totalCount,\n onChange,\n onSelectOnly,\n onSelectAll,\n selectLabel,\n deselectLabel,\n selectOnlyLabel,\n selectAllLabel,\n}: MultiSelectSmartActionInput) {\n if (checked && selectedCount > 1 && onSelectOnly) {\n return { label: selectOnlyLabel ?? \"Select Only\", handler: onSelectOnly };\n }\n if (!checked && selectedCount === totalCount - 1 && totalCount > 1 && onSelectAll) {\n return { label: selectAllLabel ?? \"Select All\", handler: onSelectAll };\n }\n return {\n label: checked ? (deselectLabel ?? \"Deselect\") : (selectLabel ?? \"Select\"),\n handler: onChange,\n };\n}\n\nexport interface MultiSelectRootProps {\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function MultiSelectRoot({\n children,\n open,\n defaultOpen = false,\n onOpenChange,\n}: MultiSelectRootProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const isControlled = open !== undefined;\n const resolvedOpen = open ?? uncontrolledOpen;\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) setUncontrolledOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const contextValue = React.useMemo<MultiSelectContextValue>(\n () => ({ open: resolvedOpen, setOpen, triggerRef, contentRef }),\n [resolvedOpen, setOpen],\n );\n\n return (\n <MultiSelectContext.Provider value={contextValue}>\n <BasePopover.Root open={resolvedOpen} onOpenChange={setOpen}>\n <div className=\"relative inline-flex\">{children}</div>\n </BasePopover.Root>\n </MultiSelectContext.Provider>\n );\n}\n\nexport interface MultiSelectTriggerProps\n extends Omit<React.ComponentPropsWithoutRef<typeof BasePopover.Trigger>, \"children\"> {\n children: React.ReactNode;\n width?: MultiSelectWidth;\n}\n\nexport const MultiSelectTrigger = ({\n children,\n className,\n style,\n width = \"md\",\n \"aria-label\": ariaLabel,\n ref,\n ...props\n}: MultiSelectTriggerProps & { ref?: React.Ref<HTMLButtonElement> | undefined }) => {\n const { open, triggerRef } = useMultiSelectContext(\"MultiSelectTrigger\");\n const cssVars = createMultiSelectCssVars(width);\n const accessibleName = ariaLabel ?? (typeof children === \"string\" ? children : \"Multi select\");\n\n return (\n <BasePopover.Trigger\n ref={composeRefs(triggerRef, ref)}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n aria-label={accessibleName}\n className={cn(\n \"inline-flex h-[var(--multi-select-trigger-height)] w-[var(--multi-select-width)] items-center justify-between\",\n \"gap-[var(--multi-select-trigger-gap)] rounded-[var(--multi-select-trigger-radius)] border border-input bg-background\",\n \"px-[var(--multi-select-trigger-padding-x)] text-left text-[length:var(--multi-select-trigger-font-size)] text-foreground shadow-xs\",\n \"transition-[background-color,border-color,box-shadow,color] duration-[var(--multi-select-duration)] ease-[var(--multi-select-easing)]\",\n \"hover:bg-accent/60 focus-visible:border-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n style={{ ...cssVars, ...style }}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n \"size-[var(--multi-select-trigger-icon-size)] shrink-0 text-muted-foreground\",\n \"transition-transform duration-[var(--multi-select-duration)] ease-[var(--multi-select-easing)]\",\n open && \"rotate-180\",\n )}\n />\n </BasePopover.Trigger>\n );\n};\nMultiSelectTrigger.displayName = \"MultiSelectTrigger\";\n\nexport interface MultiSelectContentProps\n extends Omit<React.ComponentPropsWithoutRef<typeof BasePopover.Popup>, \"children\"> {\n children: React.ReactNode;\n align?: React.ComponentProps<typeof BasePopover.Positioner>[\"align\"];\n side?: React.ComponentProps<typeof BasePopover.Positioner>[\"side\"];\n sideOffset?: React.ComponentProps<typeof BasePopover.Positioner>[\"sideOffset\"];\n alignOffset?: React.ComponentProps<typeof BasePopover.Positioner>[\"alignOffset\"];\n width?: MultiSelectWidth;\n}\n\nexport const MultiSelectContent = ({\n children,\n className,\n style,\n align = \"start\",\n side = \"bottom\",\n sideOffset = 6,\n alignOffset = 0,\n width = \"md\",\n onKeyDown,\n ref,\n ...props\n}: MultiSelectContentProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const { open, setOpen, triggerRef, contentRef } = useMultiSelectContext(\"MultiSelectContent\");\n const cssVars = createMultiSelectCssVars(width);\n\n React.useEffect(() => {\n if (!open) return;\n const frame = window.requestAnimationFrame(() => focusFirstRow(contentRef.current));\n return () => window.cancelAnimationFrame(frame);\n }, [contentRef, open]);\n\n return (\n <BasePopover.Portal>\n <BasePopover.Positioner\n align={align}\n alignOffset={alignOffset}\n className=\"z-50\"\n side={side}\n sideOffset={sideOffset}\n >\n <BasePopover.Popup\n ref={composeRefs(contentRef, ref)}\n role=\"dialog\"\n aria-label=\"Multi select options\"\n className={cn(\n \"z-50 max-h-[var(--multi-select-content-max-height)] w-[var(--multi-select-width)] overflow-y-auto\",\n \"rounded-[var(--multi-select-content-radius)] border border-border bg-popover p-[var(--multi-select-content-padding)] text-popover-foreground shadow-md outline-none\",\n \"transition-[opacity,transform,display] duration-[var(--multi-select-popover-duration)] ease-[var(--multi-select-easing)]\",\n \"data-starting-style:translate-y-1 data-starting-style:opacity-0 data-ending-style:translate-y-1 data-ending-style:opacity-0\",\n \"motion-reduce:transition-none motion-reduce:data-starting-style:translate-y-0 motion-reduce:data-ending-style:translate-y-0\",\n className,\n )}\n style={{ ...cssVars, ...style }}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n const rows = getRows(contentRef.current);\n const activeRow = getActiveRow(rows);\n const activePart = getActivePart(activeRow);\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n setOpen(false);\n triggerRef.current?.focus();\n return;\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n const currentIndex = activeRow ? rows.indexOf(activeRow) : -1;\n const nextIndex =\n event.key === \"ArrowDown\"\n ? Math.min(rows.length - 1, currentIndex + 1)\n : Math.max(0, currentIndex - 1);\n focusRowControl(rows[nextIndex] ?? rows[0], activePart);\n return;\n }\n\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n event.preventDefault();\n focusRowControl(\n activeRow ?? rows[0],\n event.key === \"ArrowLeft\" ? \"checkbox\" : \"action\",\n );\n return;\n }\n\n if (event.key === \"Tab\") {\n const focusables = getFocusableElements(contentRef.current);\n if (focusables.length === 0) return;\n const activeElement = document.activeElement;\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n if (!(activeElement instanceof HTMLElement)) {\n event.preventDefault();\n first?.focus();\n return;\n }\n if (event.shiftKey && activeElement === first) {\n event.preventDefault();\n last?.focus();\n } else if (!event.shiftKey && activeElement === last) {\n event.preventDefault();\n first?.focus();\n }\n }\n }}\n {...props}\n >\n {children}\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n );\n};\nMultiSelectContent.displayName = \"MultiSelectContent\";\n\nexport interface MultiSelectRowProps\n extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, \"disabled\" | \"onChange\"> {\n name: string;\n checked: boolean;\n onChange: () => void;\n selectedCount: number;\n totalCount: number;\n description?: React.ReactNode;\n count?: number;\n disabled?: boolean;\n onSelectOnly?: () => void;\n onSelectAll?: () => void;\n selectLabel?: string;\n deselectLabel?: string;\n selectOnlyLabel?: string;\n selectAllLabel?: string;\n}\n\nexport const MultiSelectRow = ({\n name,\n checked,\n onChange,\n selectedCount,\n totalCount,\n description,\n count,\n disabled = false,\n onSelectOnly,\n onSelectAll,\n selectLabel,\n deselectLabel,\n selectOnlyLabel,\n selectAllLabel,\n className,\n ref,\n ...props\n}: MultiSelectRowProps & { ref?: React.Ref<HTMLFieldSetElement> | undefined }) => {\n const action = getSmartAction({\n checked,\n selectedCount,\n totalCount,\n onChange,\n onSelectOnly,\n onSelectAll,\n selectLabel,\n deselectLabel,\n selectOnlyLabel,\n selectAllLabel,\n });\n\n return (\n <fieldset\n ref={ref}\n aria-label={name}\n data-multi-select-row=\"\"\n data-state={checked ? \"checked\" : \"unchecked\"}\n disabled={disabled}\n className={cn(\n \"group m-0 flex min-h-[var(--multi-select-row-min-height)] w-full min-w-0 items-center gap-[var(--multi-select-row-gap)] rounded-[var(--multi-select-row-radius)] border-0\",\n \"px-[var(--multi-select-row-padding-x)] py-[var(--multi-select-row-padding-y)] text-[length:var(--multi-select-row-font-size)]\",\n \"transition-colors duration-[var(--multi-select-duration)] ease-[var(--multi-select-easing)]\",\n \"hover:bg-accent has-[:focus-visible]:bg-accent\",\n disabled && \"opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"relative inline-flex size-[var(--multi-select-checkbox-size)] shrink-0 items-center justify-center\">\n <input\n type=\"checkbox\"\n aria-label={`Select ${name}`}\n data-multi-select-checkbox=\"\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n onChange();\n }\n }}\n className={cn(\n \"peer size-[var(--multi-select-checkbox-size)] appearance-none rounded-[var(--radius-sm)] border border-input bg-background\",\n \"transition-[background-color,border-color,box-shadow] duration-[var(--multi-select-duration)] ease-[var(--multi-select-easing)]\",\n \"hover:border-ring checked:border-primary checked:bg-primary\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n )}\n />\n <Check\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute size-[var(--multi-select-checkbox-icon-size)] text-primary-foreground opacity-0 transition-opacity duration-[var(--multi-select-duration)] peer-checked:opacity-100\"\n strokeWidth={2.25}\n />\n </span>\n\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex min-w-0 items-baseline gap-2\">\n <span className=\"min-w-0 truncate font-medium text-foreground\">{name}</span>\n {typeof count === \"number\" && (\n <span className=\"shrink-0 text-[length:var(--multi-select-row-description-size)] text-muted-foreground\">\n {count}\n </span>\n )}\n </div>\n {description && (\n <div className=\"truncate text-[length:var(--multi-select-row-description-size)] text-muted-foreground\">\n {description}\n </div>\n )}\n </div>\n\n <button\n type=\"button\"\n data-multi-select-action=\"\"\n disabled={disabled}\n onClick={action.handler}\n className={cn(\n \"min-w-[var(--multi-select-action-min-width)] shrink-0 rounded-[var(--radius-sm)] px-2 py-1 text-right text-[length:var(--multi-select-row-description-size)] font-medium text-muted-foreground\",\n \"opacity-0 transition-[background-color,color,opacity] duration-[var(--multi-select-duration)] ease-[var(--multi-select-easing)]\",\n \"hover:bg-background hover:text-foreground focus-visible:bg-background focus-visible:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"group-hover:opacity-100 group-focus-within:opacity-100\",\n )}\n >\n {action.label}\n </button>\n </fieldset>\n );\n};\nMultiSelectRow.displayName = \"MultiSelectRow\";\n","import { cva } from \"class-variance-authority\";\n\nimport { overlayClassNames } from \"../tokens/components/overlay\";\n\nexport const navigationMenuTriggerStyle = cva(\n `group inline-flex h-10 w-max items-center justify-center rounded-[var(--radius-md)] bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground ${overlayClassNames.focusRing} disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50`,\n);\n","\"use client\";\n\nimport { ChevronDown } from \"@nebutra/icons\";\nimport * as React from \"react\";\n\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { cn } from \"../utils/cn\";\nimport { navigationMenuTriggerStyle } from \"./navigation-menu-variants\";\n\nconst NavigationMenuContext = React.createContext<{\n value: string;\n onValueChange: (value: string) => void;\n}>({ value: \"\", onValueChange: () => {} });\n\nconst NavigationMenu = ({\n className,\n children,\n value: controlledValue,\n onValueChange,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n value?: string;\n onValueChange?: (value: string) => void;\n} & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(\"\");\n const value = controlledValue !== undefined ? controlledValue : uncontrolledValue;\n const setValue = onValueChange || setUncontrolledValue;\n const contextValue = { value, onValueChange: setValue };\n\n return (\n <NavigationMenuContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </div>\n </NavigationMenuContext.Provider>\n );\n};\nNavigationMenu.displayName = \"NavigationMenu\";\n\nconst NavigationMenuList = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLUListElement> & { ref?: React.Ref<HTMLUListElement> | undefined }) => (\n <ul\n ref={ref}\n className={cn(\"group flex flex-1 list-none items-center justify-center space-x-1\", className)}\n {...props}\n />\n);\nNavigationMenuList.displayName = \"NavigationMenuList\";\n\nconst NavigationMenuItemContext = React.createContext<{ value: string }>({ value: \"\" });\n\nconst NavigationMenuItem = ({\n className,\n value,\n children,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLLIElement> & { value?: string } & {\n ref?: React.Ref<HTMLLIElement> | undefined;\n}) => {\n const defaultId = React.useId();\n const itemValue = value || defaultId;\n const contextValue = { value: itemValue };\n\n return (\n <NavigationMenuItemContext.Provider value={contextValue}>\n <li ref={ref} className={cn(\"relative\", className)} {...props}>\n {children}\n </li>\n </NavigationMenuItemContext.Provider>\n );\n};\nNavigationMenuItem.displayName = \"NavigationMenuItem\";\n\nconst NavigationMenuTrigger = ({\n className,\n children,\n ref,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement> & {\n ref?: React.Ref<HTMLButtonElement> | undefined;\n}) => {\n const { value: contextValue, onValueChange } = React.use(NavigationMenuContext);\n const { value: itemValue } = React.use(NavigationMenuItemContext);\n\n const isOpen = contextValue === itemValue;\n\n return (\n <button\n type=\"button\"\n ref={ref}\n data-state={isOpen ? \"open\" : \"closed\"}\n onClick={() => onValueChange(isOpen ? \"\" : itemValue)}\n onMouseEnter={() => onValueChange(itemValue)}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition-transform duration-[var(--motion-duration-flow)] ease-[var(--ease-out)] group-data-[state=open]:rotate-180 motion-reduce:transition-none\"\n aria-hidden=\"true\"\n />\n </button>\n );\n};\nNavigationMenuTrigger.displayName = \"NavigationMenuTrigger\";\n\nconst NavigationMenuContent = ({\n className,\n children,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const { value: contextValue } = React.use(NavigationMenuContext);\n const { value: itemValue } = React.use(NavigationMenuItemContext);\n const isOpen = contextValue === itemValue;\n\n if (!isOpen) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\"absolute left-0 top-full w-full pt-1.5 md:w-auto\", className)}\n {...props}\n >\n <div\n className={overlayClassNames.navigationMenuSurface}\n style={{ zIndex: overlayZIndex.popover }}\n >\n {children}\n </div>\n </div>\n );\n};\nNavigationMenuContent.displayName = \"NavigationMenuContent\";\n\nconst NavigationMenuLink = ({\n asChild,\n active,\n className,\n children,\n href,\n onClick,\n ref,\n ...props\n}: React.AnchorHTMLAttributes<HTMLAnchorElement> & { asChild?: boolean; active?: boolean } & {\n ref?: React.Ref<HTMLAnchorElement> | undefined;\n}) => {\n const { onValueChange } = React.use(NavigationMenuContext);\n\n if (asChild && React.isValidElement(children)) {\n const child = children as React.ReactElement<React.ComponentProps<\"a\">>;\n return React.cloneElement(child, {\n ref,\n \"data-active\": active ? \"\" : undefined,\n onClick: (e: React.MouseEvent<HTMLAnchorElement>) => {\n onValueChange(\"\");\n onClick?.(e);\n if (child.props.onClick) child.props.onClick(e);\n },\n className: cn(className, child.props.className),\n ...props,\n } as React.ComponentProps<\"a\"> & React.RefAttributes<HTMLAnchorElement>);\n }\n\n return (\n <a\n ref={ref}\n href={href}\n data-active={active ? \"\" : undefined}\n onClick={(event) => {\n onValueChange(\"\");\n onClick?.(event);\n }}\n className={className}\n {...props}\n >\n {children}\n </a>\n );\n};\nNavigationMenuLink.displayName = \"NavigationMenuLink\";\n\nconst NavigationMenuViewport = ({\n ref: _ref,\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n return null; // Viewport is handled implicitly by absolute positioning in the Content component for this lightweight implementation\n};\nNavigationMenuViewport.displayName = \"NavigationMenuViewport\";\n\nconst NavigationMenuIndicator = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n className={cn(\"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\", className)}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </div>\n);\nNavigationMenuIndicator.displayName = \"NavigationMenuIndicator\";\n\nexport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n NavigationMenuViewport,\n};\n","/**\n * Button Component Tokens — Layer 3\n *\n * Strict sizing scale: sm=32px md=40px lg=48px (Geist-matching).\n * Primary fill is semantic `bg-primary` (skin surface) — not VI brand gradient.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const buttonTokens = {\n size: {\n tiny: {\n height: primitiveSizing.tiny, // 24px\n paddingX: primitiveSpacing[2], // 8px\n borderRadius: primitiveRadius.sm, // 4px\n fontSize: 11, // Geist tiny — between xs(12) and 10\n iconSize: 12,\n },\n sm: {\n height: primitiveSizing.sm, // 32px\n paddingX: primitiveSpacing[3], // 12px\n borderRadius: primitiveRadius.sm, // 4px\n fontSize: primitiveFontSize.xs, // 12px\n iconSize: 14,\n },\n md: {\n height: primitiveSizing.md, // 40px\n paddingX: primitiveSpacing[4], // 16px\n borderRadius: primitiveRadius.md, // 6px\n fontSize: primitiveFontSize.sm, // 14px\n iconSize: 16,\n },\n lg: {\n height: primitiveSizing.lg, // 48px\n paddingX: primitiveSpacing[5], // 20px\n borderRadius: primitiveRadius.lg, // 8px\n fontSize: primitiveFontSize.base, // 16px\n iconSize: 18,\n },\n icon: {\n height: primitiveSizing.md, // 40px — square\n width: primitiveSizing.md,\n borderRadius: primitiveRadius.md, // 6px\n },\n },\n /** Loading spinner icon sizes match font size */\n spinner: {\n tiny: 12,\n sm: 14,\n md: 16,\n lg: 18,\n },\n /** Transition — micro rail for snappy interactive feel */\n transitionDuration: primitiveTransition.duration.micro, // 100ms\n} as const;\n\nexport type ButtonSize = keyof typeof buttonTokens.size;\n","import {\n primitiveFontSize,\n primitiveFontWeight,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const noteSizes = [\"small\", \"medium\", \"large\"] as const;\nexport type NoteSize = (typeof noteSizes)[number];\n\nexport const noteTones = [\"default\", \"secondary\", \"success\", \"warning\", \"error\", \"cyan\"] as const;\nexport type NoteTone = (typeof noteTones)[number];\n\ntype NoteToneTokens = {\n readonly background: string;\n readonly filledBackground: string;\n readonly border: string;\n readonly foreground: string;\n readonly label: string;\n readonly icon: string;\n readonly link: string;\n};\n\nconst semanticTone = (name: \"success\" | \"warning\" | \"destructive\"): NoteToneTokens => {\n const color = `hsl(var(--${name}))`;\n\n return {\n background: `color-mix(in oklch, ${color} 7%, transparent)`,\n filledBackground: `color-mix(in oklch, ${color} 14%, transparent)`,\n border: `color-mix(in oklch, ${color} 36%, transparent)`,\n foreground: \"var(--neutral-12)\",\n label: \"var(--neutral-12)\",\n icon: color,\n link: color,\n };\n};\n\nexport const noteTokens = {\n radius: primitiveRadius.md,\n borderWidth: 1,\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n size: {\n small: {\n minHeight: primitiveSizing.sm,\n paddingX: primitiveSpacing[3],\n paddingY: primitiveSpacing[2],\n gap: primitiveSpacing[2],\n iconSize: 14,\n fontSize: primitiveFontSize.xs,\n lineHeight: 18,\n },\n medium: {\n minHeight: primitiveSizing.md,\n paddingX: primitiveSpacing[4],\n paddingY: primitiveSpacing[3],\n gap: primitiveSpacing[2],\n iconSize: 16,\n fontSize: primitiveFontSize.sm,\n lineHeight: 20,\n },\n large: {\n minHeight: primitiveSizing.lg,\n paddingX: primitiveSpacing[4],\n paddingY: primitiveSpacing[3],\n gap: primitiveSpacing[3],\n iconSize: 18,\n fontSize: primitiveFontSize.base,\n lineHeight: 24,\n },\n } satisfies Record<NoteSize, Record<string, number>>,\n label: {\n fontWeight: primitiveFontWeight.semibold,\n },\n tone: {\n default: {\n background: \"var(--neutral-1)\",\n filledBackground: \"var(--neutral-3)\",\n border: \"var(--neutral-7)\",\n foreground: \"var(--neutral-12)\",\n label: \"var(--neutral-12)\",\n icon: \"var(--neutral-10)\",\n link: \"hsl(var(--primary))\",\n },\n secondary: {\n background: \"var(--neutral-2)\",\n filledBackground: \"var(--neutral-3)\",\n border: \"var(--neutral-6)\",\n foreground: \"var(--neutral-11)\",\n label: \"var(--neutral-12)\",\n icon: \"var(--neutral-10)\",\n link: \"hsl(var(--primary))\",\n },\n success: semanticTone(\"success\"),\n warning: semanticTone(\"warning\"),\n error: semanticTone(\"destructive\"),\n cyan: {\n background: \"color-mix(in oklch, hsl(var(--primary)) 7%, transparent)\",\n filledBackground: \"color-mix(in oklch, hsl(var(--primary)) 14%, transparent)\",\n border: \"color-mix(in oklch, hsl(var(--primary)) 36%, transparent)\",\n foreground: \"var(--neutral-12)\",\n label: \"var(--neutral-12)\",\n icon: \"var(--cyan-10)\",\n link: \"var(--cyan-11)\",\n },\n } satisfies Record<NoteTone, NoteToneTokens>,\n} as const;\n","/**\n * Pagination Component Tokens — Layer 3\n *\n * Sibling-page navigation for docs/blog/onboarding flows. Dataset paging stays\n * in PaginationControl.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const paginationTokens = {\n gap: primitiveSpacing[3],\n minHeight: primitiveSizing[\"2xl\"],\n padding: {\n x: primitiveSpacing[3],\n y: primitiveSpacing[3],\n },\n radius: primitiveRadius.lg,\n iconSize: primitiveFontSize.lg,\n labelSize: primitiveFontSize.xs,\n titleSize: primitiveFontSize.sm,\n titleGap: primitiveSpacing[1],\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","import {\n primitiveFontSize,\n primitiveFontWeight,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const radioOrientations = [\"vertical\", \"horizontal\"] as const;\nexport type RadioOrientation = (typeof radioOrientations)[number];\n\nexport const radioTokens = {\n group: {\n gap: primitiveSpacing[3],\n labelGap: primitiveSpacing[2],\n },\n item: {\n gap: primitiveSpacing[2],\n minHeight: primitiveSizing.xs,\n fontSize: primitiveFontSize.sm,\n fontWeight: primitiveFontWeight.normal,\n descriptionSize: primitiveFontSize.xs,\n descriptionGap: primitiveSpacing[1],\n },\n control: {\n size: 16,\n dotSize: 6,\n borderWidth: 1,\n radius: primitiveRadius.full,\n },\n label: {\n fontSize: primitiveFontSize.sm,\n fontWeight: primitiveFontWeight.medium,\n },\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","/**\n * Scroller Component Tokens — Layer 3\n *\n * Native overflow surface for peer-item rails, feeds, snippets, and logs.\n * Carousel and virtualized data sets stay in their dedicated primitives.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveShadow,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const scrollerTokens = {\n radius: primitiveRadius.lg,\n fadeSize: primitiveSpacing[8],\n button: {\n size: primitiveSizing.sm,\n offset: primitiveSpacing[2],\n radius: primitiveRadius.full,\n iconSize: primitiveFontSize.base,\n shadow: primitiveShadow.sm,\n },\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","/**\n * Select Component Tokens — Layer 3\n *\n * Native short-list select and compound listbox trigger share the same control\n * geometry. Complex searchable selection stays in Combobox.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveShadow,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport type SelectSize = \"xsmall\" | \"small\" | \"medium\" | \"large\";\n\nexport const selectTokens = {\n sizes: {\n xsmall: {\n height: primitiveSizing.tiny,\n paddingX: primitiveSpacing[2] - primitiveSpacing[1] / 2,\n fontSize: primitiveFontSize.xs,\n radius: primitiveRadius.md,\n iconInset: primitiveSpacing[2] - primitiveSpacing[1] / 2,\n iconBoxSize: primitiveSizing.xs,\n iconSize: primitiveFontSize.sm,\n },\n small: {\n height: primitiveSizing.sm,\n paddingX: primitiveSpacing[3],\n fontSize: primitiveFontSize.sm,\n radius: primitiveRadius.md,\n iconInset: primitiveSpacing[3],\n iconBoxSize: primitiveSizing.sm,\n iconSize: primitiveFontSize.base,\n },\n medium: {\n height: primitiveSizing.md,\n paddingX: primitiveSpacing[3],\n fontSize: primitiveFontSize.sm,\n radius: primitiveRadius.md,\n iconInset: primitiveSpacing[3],\n iconBoxSize: primitiveSizing.sm,\n iconSize: primitiveFontSize.base,\n },\n large: {\n height: primitiveSizing.lg,\n paddingX: primitiveSpacing[3],\n fontSize: primitiveFontSize.base,\n radius: primitiveRadius.lg,\n iconInset: primitiveSpacing[3],\n iconBoxSize: primitiveSizing.md,\n iconSize: primitiveFontSize.base,\n },\n },\n labelSize: 13,\n focusRingWidth: 3,\n fieldGap: primitiveSpacing[2],\n messageGap: primitiveSpacing[2],\n content: {\n minWidth: primitiveSpacing[16] * 2,\n maxHeight: primitiveSpacing[24] * 4,\n radius: primitiveRadius.xl,\n padding: primitiveSpacing[1],\n sideOffset: primitiveSpacing[1],\n shadow: primitiveShadow.xl,\n fontSize: primitiveFontSize.sm,\n },\n item: {\n radius: primitiveRadius.md,\n paddingX: primitiveSpacing[2],\n paddingY: primitiveSpacing[2] - primitiveSpacing[1] / 2,\n indicatorInset: primitiveSpacing[2],\n indicatorSize: primitiveSizing.xs - primitiveSpacing[1] / 2,\n indicatorIconSize: primitiveFontSize.base,\n },\n motion: {\n duration: primitiveTransition.duration.flow,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","/**\n * Sheet Component Tokens — Layer 3\n *\n * Contextual edge panel for read-mostly detail views and short forms.\n * Drawer owns mobile bottom-sheet gestures; Dialog owns blocking decisions.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport type SheetSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport const sheetSides = [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n] as const satisfies readonly SheetSide[];\n\nexport const sheetTokens = {\n inset: primitiveSpacing[3],\n sideWidth: primitiveSizing[\"2xl\"] * 6 + primitiveSpacing[8], // 512px\n edgeHeight: primitiveSizing[\"2xl\"] * 4, // 320px\n paddingX: primitiveSpacing[6],\n paddingY: primitiveSpacing[5],\n bodyPaddingY: primitiveSpacing[4],\n gap: primitiveSpacing[4],\n headerGap: primitiveSpacing[1] + 2,\n footerGap: primitiveSpacing[2],\n radius: primitiveRadius[\"2xl\"],\n close: {\n size: primitiveSizing.sm,\n iconSize: primitiveFontSize.base,\n offset: primitiveSpacing[4],\n radius: primitiveRadius.md,\n },\n overlay: {\n background: \"hsl(var(--background) / 0.68)\",\n blur: \"blur(6px)\",\n },\n surface: {\n background: \"hsl(var(--popover))\",\n shadow: \"var(--elevation-xl)\",\n },\n motion: {\n duration: primitiveTransition.duration.reveal,\n easing: primitiveTransition.easing.inOut,\n },\n} as const;\n","/**\n * ShowMore Component Tokens — Layer 3\n *\n * Progressive disclosure is a list affordance, not a decorative divider.\n * Fixed trigger geometry avoids row-shift when the hidden count changes.\n */\n\nimport {\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const showMoreTokens = {\n triggerHeight: primitiveSizing.sm,\n triggerPaddingX: primitiveSpacing[3],\n dividerInset: primitiveSpacing[5],\n gap: primitiveSpacing[2],\n radius: primitiveRadius.full,\n iconSize: primitiveSizing.xs,\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","/**\n * Slider Component Tokens — Layer 3\n *\n * Single-value ranged numeric input. Multi-thumb ranges belong in a dedicated\n * range primitive so the value and accessibility contracts do not blur.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveShadow,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const sliderTokens = {\n height: primitiveSizing.sm,\n trackHeight: primitiveSpacing[1] + 2,\n thumbSize: primitiveSizing.xs,\n radius: primitiveRadius.full,\n gap: primitiveSpacing[2],\n labelGap: primitiveSpacing[1],\n valueFontSize: primitiveFontSize.sm,\n track: {\n background: \"hsl(var(--muted))\",\n fill: \"hsl(var(--primary))\",\n },\n thumb: {\n background: \"hsl(var(--background))\",\n shadow: primitiveShadow.md,\n },\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","/**\n * Spinner Component Tokens — Layer 3\n *\n * Indeterminate single-action loading feedback. Keep the surface deliberately\n * narrow: expressive loaders belong in marketing illustrations, not controls.\n */\n\nimport { primitiveRadius, primitiveSizing, primitiveTransition } from \"../primitive\";\n\nexport const spinnerSizes = {\n xs: 12,\n sm: 16,\n md: primitiveSizing.xs,\n lg: primitiveSizing.tiny,\n} as const;\n\nexport type SpinnerSize = keyof typeof spinnerSizes;\n\nexport const spinnerTones = {\n default: \"text-muted-foreground\",\n foreground: \"text-foreground\",\n inverse: \"text-primary-foreground\",\n} as const;\n\nexport type SpinnerTone = keyof typeof spinnerTones;\n\nexport const spinnerTokens = {\n defaultSize: \"md\",\n barCount: 12,\n barWidth: \"24%\",\n barHeight: \"8%\",\n barLeft: \"10%\",\n barTop: \"4%\",\n barTranslate: \"146%\",\n barRadius: primitiveRadius.full,\n opacity: {\n min: 0.18,\n max: 0.96,\n },\n motion: {\n duration: primitiveTransition.duration.cinematic * 2,\n easing: \"linear\",\n },\n} as const;\n","/**\n * Split Button Component Tokens — Layer 3\n *\n * Composes the Button and DropdownMenu primitives while keeping the two-button\n * seam visually exact across size variants.\n */\n\nimport { primitiveRadius, primitiveSpacing, primitiveTransition } from \"../primitive\";\nimport { buttonTokens } from \"./button\";\n\nexport const splitButtonTokens = {\n triggerWidth: {\n tiny: buttonTokens.size.tiny.height,\n sm: buttonTokens.size.sm.height,\n md: buttonTokens.size.md.height,\n lg: buttonTokens.size.lg.height,\n },\n menu: {\n width: 264,\n minWidth: 192,\n },\n item: {\n gap: primitiveSpacing[3],\n paddingX: primitiveSpacing[3],\n paddingY: primitiveSpacing[2],\n descriptionGap: primitiveSpacing[1],\n radius: primitiveRadius.md,\n iconSize: 16,\n },\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n\nexport type SplitButtonTokenSize = keyof typeof splitButtonTokens.triggerWidth;\n","/**\n * Switch Component Tokens — Layer 3\n *\n * Segmented radio selector for 2–3 mutually exclusive views of the same\n * surface. Boolean settings belong to Toggle, not this primitive.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const switchSizes = {\n small: {\n height: primitiveSizing.sm,\n controlHeight: primitiveSizing.tiny,\n padding: primitiveSpacing[1],\n paddingX: primitiveSpacing[3],\n iconSize: primitiveSizing.xs - 4,\n minWidth: 64,\n fontSize: primitiveFontSize.xs,\n },\n medium: {\n height: primitiveSizing.md,\n controlHeight: primitiveSizing.sm,\n padding: primitiveSpacing[1],\n paddingX: primitiveSpacing[3],\n iconSize: primitiveSizing.xs,\n minWidth: 72,\n fontSize: primitiveFontSize.sm,\n },\n large: {\n height: primitiveSizing.lg,\n controlHeight: primitiveSizing.md,\n padding: primitiveSpacing[1],\n paddingX: primitiveSpacing[4],\n iconSize: primitiveSizing.tiny,\n minWidth: 88,\n fontSize: primitiveFontSize.base,\n },\n} as const;\n\nexport type SwitchSize = keyof typeof switchSizes;\n\nexport const switchTokens = {\n radius: primitiveRadius.lg,\n controlRadius: primitiveRadius.md,\n gap: primitiveSpacing[1],\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","/**\n * Table Component Tokens — Layer 3\n *\n * Tables are dense comparison surfaces. These tokens lock row rhythm,\n * numeric alignment, and container geometry without letting callers reach\n * into primitive color scales.\n */\n\nimport {\n primitiveFontSize,\n primitiveFontWeight,\n primitiveRadius,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const tableTokens = {\n wrapper: {\n minWidth: 248,\n padding: primitiveSpacing[6],\n radius: primitiveRadius.lg,\n },\n row: {\n radius: primitiveRadius.sm,\n },\n cell: {\n paddingX: primitiveSpacing[2],\n paddingY: 10,\n },\n header: {\n height: primitiveSpacing[10],\n },\n typography: {\n size: primitiveFontSize.sm,\n headingWeight: primitiveFontWeight.medium,\n bodyWeight: primitiveFontWeight.normal,\n },\n spacer: {\n bodyTop: primitiveSpacing[3],\n },\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n} as const;\n","/**\n * Tabs Component Tokens — Layer 3\n *\n * Same-scope view switching for 2–7 sibling panels. Route navigation belongs\n * in menus or side navigation, while boolean settings belong in Switch/Toggle.\n */\n\nimport {\n primitiveFocusRing,\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const tabsSizes = {\n xs: {\n height: primitiveSizing.tiny,\n padding: primitiveSpacing[1],\n paddingX: primitiveSpacing[2],\n gap: primitiveSpacing[1],\n triggerGap: primitiveSpacing[1],\n iconSize: primitiveFontSize.sm,\n fontSize: primitiveFontSize.xs,\n minWidth: 56,\n },\n sm: {\n height: primitiveSizing.sm,\n padding: primitiveSpacing[1],\n paddingX: primitiveSpacing[3],\n gap: primitiveSpacing[1],\n triggerGap: primitiveSpacing[1] + primitiveSpacing[1] / 2,\n iconSize: primitiveFontSize.sm,\n fontSize: primitiveFontSize.xs,\n minWidth: 64,\n },\n md: {\n height: primitiveSizing.md,\n padding: primitiveSpacing[1],\n paddingX: primitiveSpacing[3],\n gap: primitiveSpacing[2],\n triggerGap: primitiveSpacing[1] + primitiveSpacing[1] / 2,\n iconSize: primitiveFontSize.base,\n fontSize: primitiveFontSize.sm,\n minWidth: 72,\n },\n lg: {\n height: primitiveSizing.lg,\n padding: primitiveSpacing[1],\n paddingX: primitiveSpacing[4],\n gap: primitiveSpacing[2] + primitiveSpacing[1] / 2,\n triggerGap: primitiveSpacing[2],\n iconSize: primitiveFontSize.lg,\n fontSize: primitiveFontSize.sm,\n minWidth: 88,\n },\n} as const;\n\nexport type TabsSize = keyof typeof tabsSizes;\n\nexport const tabsTokens = {\n radius: primitiveRadius.lg,\n triggerRadius: primitiveRadius.md,\n pillRadius: primitiveRadius.full,\n lineThickness: 2,\n panelGap: primitiveSpacing[3],\n badgeHeight: primitiveSpacing[5],\n badgePaddingX: primitiveSpacing[1] + primitiveSpacing[1] / 2,\n badgeFontSize: primitiveFontSize.xs,\n focusRingWidth: primitiveFocusRing.width,\n focusRingOffset: primitiveFocusRing.offset,\n motion: {\n duration: primitiveTransition.duration.flow,\n easing: primitiveTransition.easing.inOut,\n },\n} as const;\n","/**\n * Textarea Component Tokens — Layer 3\n *\n * Mirrors the Input focus and radius contract while preserving textarea-specific\n * vertical sizing.\n */\n\nimport { primitiveFontSize, primitiveRadius, primitiveSpacing } from \"../primitive\";\n\nexport type TextareaSize = \"sm\" | \"md\" | \"lg\";\n\nexport const textareaTokens = {\n sizes: {\n sm: {\n minHeight: primitiveSpacing[20],\n paddingX: primitiveSpacing[2],\n paddingY: primitiveSpacing[2],\n fontSize: primitiveFontSize.xs,\n radius: primitiveRadius.md,\n },\n md: {\n minHeight: primitiveSpacing[24],\n paddingX: primitiveSpacing[3],\n paddingY: primitiveSpacing[2],\n fontSize: primitiveFontSize.sm,\n radius: primitiveRadius.md,\n },\n lg: {\n minHeight: primitiveSpacing[24],\n paddingX: primitiveSpacing[4],\n paddingY: primitiveSpacing[3],\n fontSize: primitiveFontSize.base,\n radius: primitiveRadius.lg,\n },\n },\n labelSize: primitiveFontSize.sm,\n focusRingWidth: 3,\n fieldGap: primitiveSpacing[2] - primitiveSpacing[1] / 2,\n messageGap: primitiveSpacing[1],\n} as const;\n","/**\n * ThemeSwitcher Component Tokens — Layer 3\n *\n * Canonical Light / System / Dark selector. It is an app-level preference\n * control, not a local visual toy; state belongs to @nebutra/tokens.\n */\n\nimport {\n primitiveFocusRing,\n primitiveFontSize,\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const themeSwitcherSizes = {\n small: {\n controlHeight: primitiveSizing.sm,\n optionMinWidth: 64,\n optionPaddingX: primitiveSpacing[2],\n iconSize: primitiveFontSize.base,\n fontSize: primitiveFontSize.xs,\n gap: primitiveSpacing[1],\n padding: primitiveSpacing[1],\n },\n medium: {\n controlHeight: primitiveSizing.md,\n optionMinWidth: 80,\n optionPaddingX: primitiveSpacing[3],\n iconSize: primitiveFontSize.lg,\n fontSize: primitiveFontSize.sm,\n gap: primitiveSpacing[1],\n padding: primitiveSpacing[1],\n },\n} as const;\n\nexport type ThemeSwitcherSize = keyof typeof themeSwitcherSizes;\n\nexport const themeSwitcherTokens = {\n radius: primitiveRadius.lg,\n optionRadius: primitiveRadius.md,\n labelGap: primitiveSpacing[2],\n focusRingWidth: primitiveFocusRing.width,\n focusRingOffset: primitiveFocusRing.offset,\n motion: {\n duration: primitiveTransition.duration.flow,\n easing: primitiveTransition.easing.inOut,\n },\n} as const;\n","/**\n * ThemeToggle Component Tokens — Layer 3\n *\n * Binary theme toggles are compact toolbar controls. Geometry is fixed so the\n * sun/moon morph never shifts surrounding navigation content.\n */\n\nimport type { Transition } from \"../../shared/animation/motion\";\nimport {\n primitiveRadius,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const themeToggleTokens = {\n sizes: {\n sm: {\n control: primitiveSizing.sm,\n icon: primitiveSpacing[4],\n padding: primitiveSpacing[1],\n radius: primitiveRadius.md,\n },\n md: {\n control: primitiveSizing.md,\n icon: primitiveSpacing[5],\n padding: primitiveSpacing[2],\n radius: primitiveRadius.md,\n },\n lg: {\n control: primitiveSizing.lg,\n icon: primitiveSpacing[6],\n padding: primitiveSpacing[3],\n radius: primitiveRadius.lg,\n },\n },\n icon: {\n center: 12,\n sunRadius: 5,\n moonRadius: 9,\n maskRadius: 9,\n strokeWidth: 2,\n },\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n hoverScale: 1.06,\n tapScale: 0.92,\n morph: { type: \"spring\", stiffness: 380, damping: 30 } satisfies Transition,\n press: { type: \"spring\", stiffness: 420, damping: 28 } satisfies Transition,\n instant: { duration: 0 } satisfies Transition,\n },\n} as const;\n\nexport type ThemeToggleSize = keyof typeof themeToggleTokens.sizes;\n","/**\n * Toast Component Tokens — Layer 3\n *\n * Toast is a transient acknowledgement surface. Timing, stack density,\n * and action geometry are component semantics, while color remains on\n * semantic tokens exposed by the theme.\n */\n\nimport {\n primitiveFontSize,\n primitiveFontWeight,\n primitiveRadius,\n primitiveShadow,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const toastTokens = {\n width: 420,\n radius: primitiveRadius.xl,\n shadow: primitiveShadow.lg,\n stack: {\n visibleToasts: 3,\n gap: primitiveSpacing[2],\n offset: primitiveSpacing[4],\n mobileOffset: primitiveSpacing[4],\n },\n duration: {\n default: 3000,\n undo: 7000,\n },\n action: {\n radius: primitiveRadius.md,\n paddingX: primitiveSpacing[3],\n paddingY: primitiveSpacing[1],\n },\n typography: {\n titleSize: primitiveFontSize.sm,\n descriptionSize: primitiveFontSize.xs,\n lineHeight: 21,\n titleWeight: primitiveFontWeight.medium,\n },\n motion: {\n duration: primitiveTransition.duration.reveal,\n easing: \"cubic-bezier(.25,.75,.6,.98)\",\n },\n} as const;\n","/**\n * Toggle Component Tokens — Layer 3\n *\n * Boolean setting switch. It consumes semantic status colors only; decorative\n * hue families without semantic ownership should not be added here.\n */\n\nimport {\n primitiveFontSize,\n primitiveRadius,\n primitiveShadow,\n primitiveSizing,\n primitiveSpacing,\n primitiveTransition,\n} from \"../primitive\";\n\nexport const toggleSizes = [\"small\", \"normal\", \"large\"] as const;\nexport type ToggleSize = (typeof toggleSizes)[number];\n\nexport const toggleColors = [\n \"default\",\n \"blue\",\n \"cyan\",\n \"success\",\n \"warning\",\n \"error\",\n \"neutral\",\n \"green\",\n \"amber\",\n \"red\",\n \"teal\",\n \"gray\",\n] as const;\nexport type ToggleColor = (typeof toggleColors)[number];\n\ntype ToggleColorTokens = {\n readonly trackOn: string;\n readonly trackOff: string;\n readonly trackBorder: string;\n readonly thumb: string;\n readonly iconOn: string;\n readonly iconOff: string;\n};\n\nconst semanticColor = (\n name: \"primary\" | \"success\" | \"warning\" | \"destructive\",\n): ToggleColorTokens => {\n const color = `hsl(var(--${name}))`;\n\n return {\n trackOn: color,\n trackOff: \"var(--neutral-3)\",\n trackBorder: `color-mix(in oklch, ${color} 34%, var(--neutral-7))`,\n thumb: \"var(--neutral-1)\",\n iconOn: color,\n iconOff: \"var(--neutral-10)\",\n };\n};\n\nexport const toggleTokens = {\n size: {\n small: {\n trackWidth: 28,\n trackHeight: 14,\n thumbSize: 12,\n thumbTranslate: 14,\n iconSize: 10,\n labelFontSize: primitiveFontSize.xs,\n paddingY: 3,\n gap: primitiveSpacing[2],\n },\n normal: {\n trackWidth: 32,\n trackHeight: 18,\n thumbSize: 16,\n thumbTranslate: 14,\n iconSize: 12,\n labelFontSize: primitiveFontSize.sm,\n paddingY: 3,\n gap: primitiveSpacing[2],\n },\n large: {\n trackWidth: 40,\n trackHeight: 24,\n thumbSize: primitiveSizing.xs + 2,\n thumbTranslate: 16,\n iconSize: 14,\n labelFontSize: primitiveFontSize.sm,\n paddingY: 3,\n gap: primitiveSpacing[3],\n },\n } satisfies Record<ToggleSize, Record<string, number>>,\n radius: primitiveRadius.full,\n thumbShadow: primitiveShadow.sm,\n motion: {\n duration: primitiveTransition.duration.micro,\n easing: primitiveTransition.easing.default,\n },\n color: {\n default: semanticColor(\"success\"),\n blue: semanticColor(\"primary\"),\n cyan: {\n trackOn: \"hsl(var(--primary))\",\n trackOff: \"var(--neutral-3)\",\n trackBorder: \"color-mix(in oklch, hsl(var(--primary)) 34%, var(--neutral-7))\",\n thumb: \"var(--neutral-1)\",\n iconOn: \"var(--cyan-11)\",\n iconOff: \"var(--neutral-10)\",\n },\n success: semanticColor(\"success\"),\n warning: semanticColor(\"warning\"),\n error: semanticColor(\"destructive\"),\n neutral: {\n trackOn: \"var(--neutral-10)\",\n trackOff: \"var(--neutral-3)\",\n trackBorder: \"var(--neutral-7)\",\n thumb: \"var(--neutral-1)\",\n iconOn: \"var(--neutral-12)\",\n iconOff: \"var(--neutral-10)\",\n },\n } satisfies Record<\n Exclude<ToggleColor, \"green\" | \"amber\" | \"red\" | \"teal\" | \"gray\">,\n ToggleColorTokens\n >,\n} as const;\n\nexport const toggleColorAliases = {\n green: \"success\",\n amber: \"warning\",\n red: \"error\",\n teal: \"cyan\",\n gray: \"neutral\",\n} as const satisfies Record<\n Extract<ToggleColor, \"green\" | \"amber\" | \"red\" | \"teal\" | \"gray\">,\n keyof typeof toggleTokens.color\n>;\n","\"use client\";\n\nimport { CheckCircle, type IconProps, Information, Warning as WarningIcon } from \"@nebutra/icons\";\nimport type * as React from \"react\";\nimport { type NoteSize, type NoteTone, noteTokens } from \"../tokens/components\";\nimport { cn } from \"../utils/cn\";\n\ntype NoteToneProps =\n | {\n /** Semantic tone. Prefer this over the Geist-compatible `type` alias. */\n tone?: NoteTone;\n type?: never;\n }\n | {\n /** Geist-compatible alias for `tone`; do not pass both. */\n type?: NoteTone;\n tone?: never;\n };\n\ntype NoteCssVariable =\n | \"--note-bg\"\n | \"--note-border\"\n | \"--note-fg\"\n | \"--note-label\"\n | \"--note-icon\"\n | \"--note-link\"\n | \"--note-radius\"\n | \"--note-min-height\"\n | \"--note-px\"\n | \"--note-py\"\n | \"--note-gap\"\n | \"--note-icon-size\"\n | \"--note-font-size\"\n | \"--note-line-height\"\n | \"--note-label-font-weight\"\n | \"--note-motion-duration\"\n | \"--note-motion-easing\";\n\ntype NoteStyle = React.CSSProperties & Record<NoteCssVariable, string | number>;\n\ntype NoteIconComponent = React.ComponentType<IconProps>;\n\nexport interface NoteBaseProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\" | \"role\"> {\n /** Inline contextual message body. Keep it to one sentence when possible. */\n children: React.ReactNode;\n /** @default \"medium\" */\n size?: NoteSize;\n /** Filled variants use a stronger background, not a new semantic meaning. */\n fill?: boolean;\n /** Prefix label. Pass `false` for icon-only tone, or a short Title Case label. */\n label?: string | false;\n /** Optional single inline action. Disabled notes make this subtree inert. */\n action?: React.ReactNode;\n /** Custom leading icon. Pass `false` to remove the default tone icon. */\n icon?: React.ReactNode | false;\n /** Disabled notes communicate unavailable contextual information. */\n disabled?: boolean;\n /** `error` defaults to alert; every other tone defaults to note. */\n role?: \"note\" | \"alert\" | \"status\";\n ref?: React.Ref<HTMLDivElement> | undefined;\n}\n\nexport type NoteProps = NoteBaseProps & NoteToneProps;\n\nconst defaultLabels = {\n default: false,\n secondary: \"Info\",\n success: \"Success\",\n warning: \"Warning\",\n error: \"Error\",\n cyan: \"Signal\",\n} as const satisfies Record<NoteTone, string | false>;\n\nconst toneIcons = {\n default: Information,\n secondary: Information,\n success: CheckCircle,\n warning: WarningIcon,\n error: WarningIcon,\n cyan: Information,\n} as const satisfies Record<NoteTone, NoteIconComponent>;\n\nfunction resolveTone(tone?: NoteTone, type?: NoteTone): NoteTone {\n return tone ?? type ?? \"default\";\n}\n\nfunction resolveLabel(label: NoteProps[\"label\"], tone: NoteTone): string | false {\n return label === undefined ? defaultLabels[tone] : label;\n}\n\nfunction getNoteStyle(size: NoteSize, tone: NoteTone, fill: boolean): NoteStyle {\n const sizeTokens = noteTokens.size[size];\n const toneTokens = noteTokens.tone[tone];\n\n return {\n \"--note-bg\": fill ? toneTokens.filledBackground : toneTokens.background,\n \"--note-border\": toneTokens.border,\n \"--note-fg\": toneTokens.foreground,\n \"--note-label\": toneTokens.label,\n \"--note-icon\": toneTokens.icon,\n \"--note-link\": toneTokens.link,\n \"--note-radius\": `${noteTokens.radius}px`,\n \"--note-min-height\": `${sizeTokens.minHeight}px`,\n \"--note-px\": `${sizeTokens.paddingX}px`,\n \"--note-py\": `${sizeTokens.paddingY}px`,\n \"--note-gap\": `${sizeTokens.gap}px`,\n \"--note-icon-size\": `${sizeTokens.iconSize}px`,\n \"--note-font-size\": `${sizeTokens.fontSize}px`,\n \"--note-line-height\": `${sizeTokens.lineHeight}px`,\n \"--note-label-font-weight\": noteTokens.label.fontWeight,\n \"--note-motion-duration\": `${noteTokens.motion.duration}ms`,\n \"--note-motion-easing\": noteTokens.motion.easing,\n };\n}\n\nexport function Note({\n action,\n children,\n className,\n disabled = false,\n fill = false,\n icon,\n label,\n ref,\n role,\n size = \"medium\",\n style,\n tone,\n type,\n ...props\n}: NoteProps) {\n const resolvedTone = resolveTone(tone, type);\n const Label = resolveLabel(label, resolvedTone);\n const Icon = toneIcons[resolvedTone];\n const resolvedRole = role ?? (resolvedTone === \"error\" ? \"alert\" : \"note\");\n\n return (\n <div\n {...props}\n ref={ref}\n role={resolvedRole}\n aria-disabled={disabled || undefined}\n data-disabled={disabled || undefined}\n data-fill={fill || undefined}\n data-size={size}\n data-slot=\"note\"\n data-tone={resolvedTone}\n style={{ ...getNoteStyle(size, resolvedTone, fill), ...style }}\n className={cn(\n \"flex min-h-[var(--note-min-height)] w-full items-start gap-[var(--note-gap)] rounded-[var(--note-radius)] border border-[color:var(--note-border)] bg-[var(--note-bg)] px-[var(--note-px)] py-[var(--note-py)] font-sans text-[length:var(--note-font-size)] leading-[var(--note-line-height)] text-[color:var(--note-fg)] transition-[background-color,border-color,color,opacity] duration-[var(--note-motion-duration)] ease-[var(--note-motion-easing)]\",\n \"[&_a]:font-medium [&_a]:text-[color:var(--note-link)] [&_a]:underline [&_a]:underline-offset-4\",\n \"data-[disabled=true]:opacity-60\",\n className,\n )}\n >\n {icon !== false && (\n <span\n aria-hidden=\"true\"\n data-slot=\"note-icon\"\n className=\"mt-[calc((var(--note-line-height)-var(--note-icon-size))/2)] flex size-[var(--note-icon-size)] shrink-0 items-center justify-center text-[color:var(--note-icon)]\"\n >\n {icon ?? <Icon size=\"var(--note-icon-size)\" />}\n </span>\n )}\n\n <div data-slot=\"note-copy\" className=\"min-w-0 flex-1\">\n {Label && (\n <span\n data-slot=\"note-label\"\n className=\"mr-1.5 inline font-[var(--note-label-font-weight)] text-[color:var(--note-label)]\"\n >\n {Label}:\n </span>\n )}\n <span data-slot=\"note-content\">{children}</span>\n </div>\n\n {action && (\n <div\n data-slot=\"note-action\"\n inert={disabled || undefined}\n className=\"ml-auto shrink-0 self-start data-[disabled=true]:pointer-events-none\"\n data-disabled={disabled || undefined}\n >\n {action}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { ChevronLeft, ChevronRight } from \"@nebutra/icons\";\nimport type * as React from \"react\";\nimport { paginationTokens } from \"../tokens/components/pagination\";\nimport { cn } from \"../utils/cn\";\n\ntype PaginationCssVar =\n | \"--pagination-gap\"\n | \"--pagination-min-height\"\n | \"--pagination-padding-x\"\n | \"--pagination-padding-y\"\n | \"--pagination-radius\"\n | \"--pagination-icon-size\"\n | \"--pagination-label-size\"\n | \"--pagination-title-size\"\n | \"--pagination-title-gap\"\n | \"--pagination-duration\"\n | \"--pagination-easing\";\n\ntype PaginationCssVars = React.CSSProperties & Record<PaginationCssVar, string>;\n\nexport interface PaginationDestination {\n title: string;\n href: string;\n}\n\nexport interface PaginationProps extends Omit<React.ComponentPropsWithoutRef<\"nav\">, \"children\"> {\n previous?: PaginationDestination;\n next?: PaginationDestination;\n previousLabel?: string;\n nextLabel?: string;\n}\n\nfunction paginationCssVars(style: React.CSSProperties | undefined): PaginationCssVars {\n return {\n \"--pagination-gap\": `${paginationTokens.gap}px`,\n \"--pagination-min-height\": `${paginationTokens.minHeight}px`,\n \"--pagination-padding-x\": `${paginationTokens.padding.x}px`,\n \"--pagination-padding-y\": `${paginationTokens.padding.y}px`,\n \"--pagination-radius\": `${paginationTokens.radius}px`,\n \"--pagination-icon-size\": `${paginationTokens.iconSize}px`,\n \"--pagination-label-size\": `${paginationTokens.labelSize}px`,\n \"--pagination-title-size\": `${paginationTokens.titleSize}px`,\n \"--pagination-title-gap\": `${paginationTokens.titleGap}px`,\n \"--pagination-duration\": `${paginationTokens.motion.duration}ms`,\n \"--pagination-easing\": paginationTokens.motion.easing,\n ...style,\n };\n}\n\nfunction PaginationRail({\n destination,\n direction,\n label,\n}: {\n destination: PaginationDestination | undefined;\n direction: \"previous\" | \"next\";\n label: string;\n}) {\n if (!destination) {\n return <div aria-hidden=\"true\" className=\"hidden sm:block\" />;\n }\n\n const isPrevious = direction === \"previous\";\n const Icon = isPrevious ? ChevronLeft : ChevronRight;\n\n return (\n <a\n href={destination.href}\n rel={direction === \"previous\" ? \"prev\" : \"next\"}\n aria-label={`Go to ${direction} page: ${destination.title}`}\n className={cn(\n \"group flex min-h-[var(--pagination-min-height)] min-w-0 items-center gap-[var(--pagination-gap)] rounded-[var(--pagination-radius)] border border-border bg-background\",\n \"px-[var(--pagination-padding-x)] py-[var(--pagination-padding-y)] text-foreground shadow-xs\",\n \"transition-[background-color,border-color,box-shadow,color,transform] duration-[var(--pagination-duration)] ease-[var(--pagination-easing)]\",\n \"hover:border-ring hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"motion-reduce:transition-none\",\n isPrevious ? \"justify-start text-left\" : \"justify-end text-right\",\n )}\n >\n {isPrevious && (\n <Icon\n aria-hidden=\"true\"\n className=\"size-[var(--pagination-icon-size)] shrink-0 text-muted-foreground transition-transform duration-[var(--pagination-duration)] group-hover:-translate-x-0.5 motion-reduce:transition-none\"\n />\n )}\n <span className=\"flex min-w-0 flex-col gap-[var(--pagination-title-gap)]\">\n <span className=\"text-[length:var(--pagination-label-size)] font-medium uppercase tracking-normal text-muted-foreground\">\n {label}\n </span>\n <span className=\"truncate text-[length:var(--pagination-title-size)] font-medium text-foreground\">\n {destination.title}\n </span>\n </span>\n {!isPrevious && (\n <Icon\n aria-hidden=\"true\"\n className=\"size-[var(--pagination-icon-size)] shrink-0 text-muted-foreground transition-transform duration-[var(--pagination-duration)] group-hover:translate-x-0.5 motion-reduce:transition-none\"\n />\n )}\n </a>\n );\n}\n\nexport function Pagination({\n previous,\n next,\n previousLabel = \"Previous\",\n nextLabel = \"Next\",\n className,\n style,\n \"aria-label\": ariaLabel = \"Page navigation\",\n ...props\n}: PaginationProps) {\n return (\n <nav\n aria-label={ariaLabel}\n className={cn(\n \"grid w-full grid-cols-1 gap-[var(--pagination-gap)] sm:grid-cols-2\",\n className,\n )}\n style={paginationCssVars(style)}\n {...props}\n >\n <PaginationRail destination={previous} direction=\"previous\" label={previousLabel} />\n <PaginationRail destination={next} direction=\"next\" label={nextLabel} />\n </nav>\n );\n}\n\nPagination.displayName = \"Pagination\";\n","\"use client\";\n\nimport { Progress as BaseProgress } from \"@base-ui/react/progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { useDebounceValue } from \"usehooks-ts\";\nimport { motion } from \"../shared/animation/motion\";\nimport { easings, motionDurations } from \"../tokens/motion\";\nimport { cn } from \"../utils/cn\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\";\n\n/* -------------------------------------------------------------------------- *\\\n * Progress — determinate (or indeterminate) progress bar.\n *\n * Use cases (per Geist guidance):\n * File uploads, multi-step setup, build steps, batch deletions — anywhere\n * the total is knowable. For ~1–3s indeterminate waits use Spinner; for\n * inline copy like \"Saving\" use LoadingDots; for quota/ratio use Gauge.\n *\n * Geist-vs-legacy props:\n * - `max` is the real ceiling; the bar computes `value / max %` internally\n * (Geist convention). Don't pre-divide and pass a percentage.\n * - `type` is the Geist alias for severity: `success | warning | error |\n * secondary`. The legacy `variant` prop still works for back-compat.\n * - `colors={{ 0, 25, 50, 75, 100 }}` picks the threshold-band color for\n * the bar's current % (highest key ≤ pct). Mirror the same breakpoints\n * used elsewhere (warning at the same threshold a quota note fires).\n * - `stops` renders dot markers at the given % values with tooltips —\n * use for genuine multi-stage work (label the stage next to the bar).\n *\n * A11y:\n * Base UI sets `role=\"progressbar\"` + `aria-valuemin/max/now` on Root.\n * We throttle `aria-valuenow` updates to ~1s so screen readers don't\n * announce every tick of a fast upload.\n\\* -------------------------------------------------------------------------- */\n\n// ---------------------------------------------------------------------------\n// Variants\n// ---------------------------------------------------------------------------\n\nconst progressVariants = cva(\"relative overflow-hidden rounded-full\", {\n variants: {\n variant: {\n default: \"bg-primary/20\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n destructive: \"bg-destructive/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n outline: \"border border-border bg-transparent\",\n },\n size: {\n sm: \"h-1.5\",\n default: \"h-2.5\",\n lg: \"h-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n});\n\nconst progressIndicatorVariants = cva(\n \"h-full w-full flex-1 rounded-full transition-[background-color,transform] duration-cinematic ease-out motion-reduce:transition-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary\",\n primary: \"bg-primary\",\n secondary: \"bg-foreground\",\n destructive: \"bg-destructive\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n outline: \"bg-primary\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\n// Geist `type` → cva `variant` alias\nconst GEIST_TYPE_TO_VARIANT = {\n success: \"success\",\n warning: \"warning\",\n error: \"destructive\",\n secondary: \"secondary\",\n} as const;\n\n// ---------------------------------------------------------------------------\n// Stops + threshold colors\n// ---------------------------------------------------------------------------\n\nexport interface ProgressStop {\n /** 0–100 percent (or value in `max` units when `valueIsPercent={false}`). */\n value: number;\n tooltip?: React.ReactNode;\n ariaLabel?: string;\n}\n\nexport type ProgressColorMap = Record<number, string>;\n\nfunction pickThresholdColor(colors: ProgressColorMap, pct: number): string | undefined {\n // Highest key ≤ pct wins. Keys are sorted ascending so we can iterate.\n const keys = Object.keys(colors)\n .map((k) => Number(k))\n .filter((n) => Number.isFinite(n))\n .sort((a, b) => a - b);\n let pick: string | undefined;\n for (const k of keys) {\n if (k <= pct) pick = colors[k];\n else break;\n }\n return pick;\n}\n\n// ---------------------------------------------------------------------------\n// Throttled aria-valuenow\n// ---------------------------------------------------------------------------\n\n/**\n * Throttle a value to ~1Hz so assistive tech is not spammed with\n * `aria-valuenow` updates on fast-moving progress bars.\n *\n * Implemented via `usehooks-ts` `useDebounceValue` with `maxWait === delay`,\n * which is the lodash-canonical way to express a throttle: it emits on the\n * leading edge and is guaranteed to flush a trailing value within `ms`.\n */\nfunction useThrottled<T>(value: T, ms = 1000): T {\n const [throttled] = useDebounceValue(value, ms, {\n leading: true,\n trailing: true,\n maxWait: ms,\n });\n return throttled;\n}\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport type ProgressProps = Omit<\n React.ComponentPropsWithoutRef<typeof BaseProgress.Root>,\n \"value\" | \"max\"\n> &\n VariantProps<typeof progressVariants> & {\n /** Current value (in `max` units). Pass `null`/omit for indeterminate. */\n value?: number | null;\n /** Real ceiling. @default 100 */\n max?: number;\n /** Geist severity alias — maps to `variant`. */\n type?: \"success\" | \"warning\" | \"error\" | \"secondary\";\n /** Optional threshold color map keyed by % (e.g. `{ 0, 50, 100 }`). */\n colors?: ProgressColorMap;\n /** Genuine multi-stage stop markers (dots at given % + Tooltip). */\n stops?: ProgressStop[];\n /** Show a numeric `xx%` label below the bar. */\n showValue?: boolean;\n /** Animate fill transitions. @default true */\n animated?: boolean;\n /** Optional caption above the bar. */\n label?: string;\n };\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst Progress = function Progress({\n className,\n value = 0,\n max = 100,\n variant,\n type,\n colors,\n stops,\n size,\n showValue = false,\n animated = true,\n label,\n ref,\n ...props\n}: ProgressProps & { ref?: React.Ref<React.ElementRef<typeof BaseProgress.Root>> | undefined }) {\n const isIndeterminate = value === undefined || value === null;\n const rawPct = isIndeterminate ? 0 : ((value as number) / max) * 100;\n const pct = Math.min(Math.max(rawPct, 0), 100);\n const throttledPct = useThrottled(pct);\n\n // Geist `type` wins over legacy `variant` if both passed.\n const resolvedVariant: VariantProps<typeof progressVariants>[\"variant\"] = type\n ? GEIST_TYPE_TO_VARIANT[type]\n : (variant ?? \"default\");\n\n const thresholdColor = colors ? pickThresholdColor(colors, pct) : undefined;\n\n return (\n <div className=\"w-full space-y-2\">\n {label && <div className=\"text-left font-medium text-foreground text-sm\">{label}</div>}\n <div className=\"relative\">\n <BaseProgress.Root\n {...props}\n ref={ref}\n value={isIndeterminate ? null : (value as number)}\n max={max}\n // Throttled aria-valuenow — Base UI reads from valueProp; we\n // override the DOM attr on the same node so AT updates ~1Hz.\n aria-valuenow={isIndeterminate ? undefined : Math.round(throttledPct)}\n className={cn(progressVariants({ variant: resolvedVariant, size }), className)}\n >\n <BaseProgress.Indicator\n className={cn(\n progressIndicatorVariants({\n variant: resolvedVariant === \"outline\" ? \"default\" : resolvedVariant,\n }),\n isIndeterminate && \"animate-pulse\",\n )}\n style={thresholdColor ? { backgroundColor: thresholdColor } : undefined}\n render={\n <motion.div\n initial={{ scaleX: 0 }}\n animate={{ scaleX: pct / 100 }}\n style={{ transformOrigin: \"left center\" }}\n transition={{\n duration: animated ? motionDurations.cinematic / 1000 : 0,\n ease: easings.easeInOut,\n }}\n />\n }\n />\n </BaseProgress.Root>\n\n {/* Stops — dot markers at given % values, each with an optional tooltip */}\n {stops && stops.length > 0 && (\n <TooltipProvider delayDuration={150}>\n <div className=\"pointer-events-none absolute inset-0\">\n {stops.map((stop) => {\n const stopPct = Math.min(Math.max(stop.value, 0), 100);\n const reached = pct >= stopPct;\n return (\n <Tooltip key={`${stopPct}-${stop.ariaLabel ?? \"marker\"}`}>\n <TooltipTrigger asChild>\n <span\n aria-hidden={!stop.ariaLabel ? \"true\" : undefined}\n className={cn(\n \"pointer-events-auto -translate-x-1/2 -translate-y-1/2 absolute top-1/2 inline-block h-1.5 w-1.5 rounded-full border border-background transition-colors\",\n reached ? \"bg-foreground\" : \"bg-muted-foreground/60\",\n )}\n style={{ left: `${stopPct}%` }}\n >\n {stop.ariaLabel && <span className=\"sr-only\">{stop.ariaLabel}</span>}\n </span>\n </TooltipTrigger>\n {stop.tooltip && (\n <TooltipContent side=\"top\" className=\"text-xs\">\n {stop.tooltip}\n </TooltipContent>\n )}\n </Tooltip>\n );\n })}\n </div>\n </TooltipProvider>\n )}\n </div>\n\n {showValue && !isIndeterminate && (\n <motion.div\n className=\"text-right font-semibold text-muted-foreground text-xs tabular-nums\"\n initial={{ opacity: 0, y: -5 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{\n delay: animated ? motionDurations.reveal / 1000 : 0,\n duration: motionDurations.flow / 1000,\n ease: easings.easeOut,\n }}\n >\n {Math.round(pct)}%\n </motion.div>\n )}\n </div>\n );\n};\n\nexport { Progress, progressIndicatorVariants, progressVariants };\n","\"use client\";\n\nimport type { ReactNode, Ref } from \"react\";\nimport { cn } from \"../utils/cn\";\n\n/* -------------------------------------------------------------------------- *\\\n * ProjectBanner — full-width, non-dismissible banner for project-wide states\n * that require resolution (billing overdue, rollback in progress, attack\n * mitigation, expiring trial).\n *\n * Pick the right surface:\n * - ProjectBanner → project-wide state needing a resolver action\n * - Note → inline contextual message tied to one field or card\n * - Toast → transient acknowledgement\n * - Modal → blocking confirmation\n *\n * Behavior rules (these are intentional — do not \"add a close button\"):\n * - Non-dismissible. If it can be dismissed without resolving the state,\n * it isn't banner-worthy. Move to a Note.\n * - One banner at a time. Stacking drowns the most urgent state.\n * - `callToAction` is required for an actionable variant — a banner\n * without a route is a dead end.\n *\n * Categorical color tokens:\n * Variant maps directly to a categorical palette (blue / amber / red /\n * neutral). These are NOT brand tokens; they signal severity, not chrome.\n * The Folder / FileCard precedent applies: raw Tailwind palette is correct.\n *\n * Layout note:\n * `-translate-y-px` overlaps the top border with adjacent chrome above\n * the banner (toolbar, navbar). Without it a hairline gap appears on\n * pixel-grid screens.\n\\* -------------------------------------------------------------------------- */\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport type ProjectBannerVariant = \"success\" | \"warning\" | \"error\" | \"info\";\n\n/** Discriminated CTA — either a link or a button, never both. */\nexport type ProjectBannerCallToAction =\n | { label: string; href: string; onClick?: never }\n | { label: string; onClick: () => void; href?: never };\n\nexport type ProjectBannerProps = {\n /** @default \"info\" */\n variant?: ProjectBannerVariant;\n /** One-sentence impact statement, sentence case. */\n label: ReactNode;\n /** Optional leading glyph. Caller controls sizing; the banner just slots it. */\n icon?: ReactNode;\n /** Required-by-convention resolver action. */\n callToAction?: ProjectBannerCallToAction;\n /**\n * ARIA live-region role. Defaults to `\"alert\"` for `error`, `\"status\"` for\n * all others. Pass explicitly if you need to override (e.g. a polite error).\n */\n role?: \"alert\" | \"status\";\n ref?: Ref<HTMLElement>;\n className?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Variant palette\n// ---------------------------------------------------------------------------\n\ntype VariantTokens = {\n container: string;\n cta: string;\n};\n\nconst variantMap: Readonly<Record<ProjectBannerVariant, VariantTokens>> = {\n success: {\n container: \"border-success/40 bg-success/10 text-success fill-success\",\n cta: \"text-success decoration-success/50 hover:text-success hover:decoration-success\",\n },\n warning: {\n container: \"border-warning/40 bg-warning/10 text-warning fill-warning\",\n cta: \"text-warning decoration-warning/50 hover:text-warning hover:decoration-warning\",\n },\n error: {\n container: \"border-destructive/40 bg-destructive/10 text-destructive fill-destructive\",\n cta: \"text-destructive decoration-destructive/50 hover:text-destructive hover:decoration-destructive\",\n },\n info: {\n container: \"border-border bg-muted text-foreground fill-foreground\",\n cta: \"text-foreground decoration-border hover:text-foreground hover:decoration-foreground\",\n },\n};\n\nconst ctaBase = \"font-medium underline underline-offset-[5px] transition-colors duration-100\";\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function ProjectBanner({\n variant = \"info\",\n label,\n icon,\n callToAction,\n role,\n ref,\n className,\n}: ProjectBannerProps) {\n const tokens = variantMap[variant];\n const resolvedRole = role ?? (variant === \"error\" ? \"alert\" : \"status\");\n\n return (\n <aside\n ref={ref}\n role={resolvedRole}\n // -translate-y-px overlaps the top border with adjacent chrome above.\n className={cn(\n \"z-30 flex min-h-10 -translate-y-px items-center justify-center gap-x-2 border-y py-2 font-sans text-sm\",\n tokens.container,\n className,\n )}\n >\n <div className=\"flex w-full flex-col gap-2 px-6 md:flex-row md:items-center md:justify-center\">\n <div className=\"flex items-center gap-2\">\n {icon && <span className=\"flex size-4 shrink-0 items-center justify-center\">{icon}</span>}\n <span>{label}</span>\n </div>\n {callToAction && (\n <div className=\"ml-6 md:ml-0\">\n {callToAction.href !== undefined ? (\n <a className={cn(ctaBase, tokens.cta)} href={callToAction.href}>\n {callToAction.label}\n </a>\n ) : (\n <button\n type=\"button\"\n className={cn(ctaBase, tokens.cta, \"cursor-pointer\")}\n onClick={callToAction.onClick}\n >\n {callToAction.label}\n </button>\n )}\n </div>\n )}\n </div>\n </aside>\n );\n}\n","\"use client\";\n\nimport {\n type CSSProperties,\n createContext,\n type FieldsetHTMLAttributes,\n type InputHTMLAttributes,\n type LabelHTMLAttributes,\n type ReactNode,\n use,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { type RadioOrientation, radioTokens } from \"../tokens/components/radio\";\nimport { cn } from \"../utils/cn\";\n\ntype RadioValue = string;\n\ntype RadioGroupContextValue = {\n readonly name: string;\n readonly value: RadioValue;\n readonly disabled: boolean;\n readonly required: boolean;\n readonly setValue: (value: RadioValue) => void;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\ntype RadioGroupStyle = CSSProperties & {\n \"--radio-group-gap\": string;\n \"--radio-label-gap\": string;\n \"--radio-label-size\": string;\n \"--radio-label-weight\": number;\n};\n\ntype RadioItemStyle = CSSProperties & {\n \"--radio-item-gap\": string;\n \"--radio-item-min-height\": string;\n \"--radio-item-size\": string;\n \"--radio-item-weight\": number;\n \"--radio-description-size\": string;\n \"--radio-description-gap\": string;\n \"--radio-control-size\": string;\n \"--radio-dot-size\": string;\n \"--radio-border-width\": string;\n \"--radio-motion-duration\": string;\n \"--radio-motion-easing\": string;\n};\n\ntype RadioGroupBaseProps = Omit<\n FieldsetHTMLAttributes<HTMLFieldSetElement>,\n \"children\" | \"defaultValue\" | \"disabled\" | \"onChange\" | \"value\"\n>;\n\nexport type RadioGroupProps = RadioGroupBaseProps & {\n children: ReactNode;\n /** Visible group label rendered as a native legend. */\n label?: ReactNode;\n /** Form field name shared by all radios. Generated when omitted. */\n name?: string;\n /** Controlled selected value. */\n value?: RadioValue;\n /** Uncontrolled initial selected value. */\n defaultValue?: RadioValue;\n /** Geist-compatible change callback. */\n onChange?: (value: RadioValue) => void;\n /** Base UI / Radix-compatible change callback. */\n onValueChange?: (value: RadioValue) => void;\n disabled?: boolean;\n required?: boolean;\n orientation?: RadioOrientation;\n /** Applies to the options container. */\n className?: string;\n /** Applies to the fieldset root. */\n rootClassName?: string;\n};\n\nexport type RadioProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"children\" | \"className\" | \"type\"\n> &\n (\n | { \"aria-label\": string; \"aria-labelledby\"?: string | undefined; id?: string | undefined }\n | { \"aria-labelledby\": string; \"aria-label\"?: string | undefined; id?: string | undefined }\n | { id: string; \"aria-label\"?: string | undefined; \"aria-labelledby\"?: string | undefined }\n ) & {\n className?: string | undefined;\n indicatorClassName?: string | undefined;\n inputClassName?: string | undefined;\n };\n\nexport type RadioGroupItemProps = Omit<\n LabelHTMLAttributes<HTMLLabelElement>,\n \"children\" | \"onChange\"\n> & {\n value: RadioValue;\n defaultChecked?: boolean;\n children?: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n disabledReason?: string;\n controlClassName?: string;\n inputClassName?: string;\n};\n\nexport type UseRadioProps = {\n value: RadioValue;\n disabled?: boolean;\n disabledReason?: string;\n id?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\nconst itemStyle: RadioItemStyle = {\n \"--radio-item-gap\": `${radioTokens.item.gap}px`,\n \"--radio-item-min-height\": `${radioTokens.item.minHeight}px`,\n \"--radio-item-size\": `${radioTokens.item.fontSize}px`,\n \"--radio-item-weight\": radioTokens.item.fontWeight,\n \"--radio-description-size\": `${radioTokens.item.descriptionSize}px`,\n \"--radio-description-gap\": `${radioTokens.item.descriptionGap}px`,\n \"--radio-control-size\": `${radioTokens.control.size}px`,\n \"--radio-dot-size\": `${radioTokens.control.dotSize}px`,\n \"--radio-border-width\": `${radioTokens.control.borderWidth}px`,\n \"--radio-motion-duration\": `${radioTokens.motion.duration}ms`,\n \"--radio-motion-easing\": radioTokens.motion.easing,\n};\n\nconst radioControlClassName = cn(\n \"relative inline-flex shrink-0 items-center justify-center rounded-[var(--radius-full)] border-[length:var(--radio-border-width)] border-border bg-background text-foreground\",\n \"size-[var(--radio-control-size)]\",\n \"transition-[background-color,border-color,box-shadow] duration-[var(--radio-motion-duration)] ease-[var(--radio-motion-easing)]\",\n \"after:size-[var(--radio-dot-size)] after:scale-0 after:rounded-[var(--radius-full)] after:bg-current after:opacity-0 after:transition-[opacity,transform] after:duration-[var(--radio-motion-duration)] after:ease-[var(--radio-motion-easing)] after:content-['']\",\n \"peer-checked:border-[var(--neutral-12)] peer-checked:after:scale-100 peer-checked:after:opacity-100\",\n \"peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2\",\n \"peer-disabled:border-[var(--neutral-5)] peer-disabled:bg-muted peer-disabled:text-[var(--neutral-8)]\",\n);\n\nfunction useRadioGroupContext() {\n return use(RadioGroupContext);\n}\n\nfunction RadioRoot({ className, indicatorClassName, inputClassName, ...props }: RadioProps) {\n return (\n <span className={cn(\"inline-flex items-center\", className)}>\n <input type=\"radio\" className={cn(\"peer sr-only\", inputClassName)} {...props} />\n <span aria-hidden=\"true\" className={cn(radioControlClassName, indicatorClassName)} />\n </span>\n );\n}\n\nRadioRoot.displayName = \"Radio\";\n\nfunction RadioGroupItemRoot({\n children,\n className,\n controlClassName,\n description,\n disabled,\n disabledReason,\n id,\n inputClassName,\n style,\n value,\n ...props\n}: RadioGroupItemProps) {\n const generatedId = useId();\n const inputId = id ?? `radio-${generatedId.replace(/:/g, \"\")}`;\n const reasonId = disabledReason ? `${inputId}-reason` : undefined;\n const descriptionId = description ? `${inputId}-description` : undefined;\n const context = useRadioGroupContext();\n const isDisabled = Boolean(disabled || context?.disabled);\n const isChecked = context ? context.value === value : undefined;\n const required = context?.required;\n const name = context?.name;\n const describedBy = [descriptionId, reasonId].filter(Boolean).join(\" \");\n\n const radio = (\n <RadioRoot\n id={inputId}\n value={value}\n disabled={isDisabled}\n indicatorClassName={controlClassName}\n inputClassName={inputClassName}\n onChange={(event) => {\n if (event.currentTarget.checked) {\n context?.setValue(value);\n }\n }}\n {...(name ? { name } : {})}\n {...(isChecked === undefined ? {} : { checked: isChecked })}\n {...(context || props.defaultChecked === undefined\n ? {}\n : { defaultChecked: props.defaultChecked })}\n {...(required ? { required } : {})}\n {...(describedBy ? { \"aria-describedby\": describedBy } : {})}\n {...(!children && props[\"aria-label\"] ? { \"aria-label\": props[\"aria-label\"] } : {})}\n {...(props[\"aria-labelledby\"] ? { \"aria-labelledby\": props[\"aria-labelledby\"] } : {})}\n />\n );\n\n const mergedStyle = { ...itemStyle, ...style };\n\n if (!children && !description) {\n return (\n <span\n className={cn(\n \"inline-flex min-h-[var(--radio-item-min-height)] items-center gap-[var(--radio-item-gap)]\",\n isDisabled && \"cursor-not-allowed opacity-60\",\n className,\n )}\n style={mergedStyle}\n title={isDisabled ? disabledReason : undefined}\n >\n {radio}\n {disabledReason ? (\n <span id={reasonId} className=\"sr-only\">\n {disabledReason}\n </span>\n ) : null}\n </span>\n );\n }\n\n return (\n <label\n htmlFor={inputId}\n className={cn(\n \"group inline-flex min-h-[var(--radio-item-min-height)] items-start gap-[var(--radio-item-gap)] text-[length:var(--radio-item-size)] text-foreground leading-5\",\n isDisabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\",\n className,\n )}\n style={mergedStyle}\n title={isDisabled ? disabledReason : undefined}\n {...props}\n >\n <span className=\"pt-0.5\">{radio}</span>\n <span className=\"min-w-0\">\n <span style={{ fontWeight: \"var(--radio-item-weight)\" }}>{children}</span>\n {description ? (\n <span\n id={descriptionId}\n className=\"mt-[var(--radio-description-gap)] block text-[length:var(--radio-description-size)] text-muted-foreground leading-4\"\n >\n {description}\n </span>\n ) : null}\n {disabledReason ? (\n <span id={reasonId} className=\"sr-only\">\n {disabledReason}\n </span>\n ) : null}\n </span>\n </label>\n );\n}\n\nRadioGroupItemRoot.displayName = \"RadioGroupItem\";\n\nfunction RadioGroupRoot({\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n children,\n className,\n defaultValue = \"\",\n disabled = false,\n label,\n name,\n onChange,\n onValueChange,\n orientation = \"vertical\",\n required = false,\n rootClassName,\n style,\n value,\n ...props\n}: RadioGroupProps) {\n const generatedName = useId();\n const initialDefaultValue = useRef(defaultValue);\n const [internalValue, setInternalValue] = useState(initialDefaultValue.current);\n const isControlled = value !== undefined;\n const selectedValue = isControlled ? value : internalValue;\n const legendId = useId();\n\n const groupStyle: RadioGroupStyle = {\n \"--radio-group-gap\": `${radioTokens.group.gap}px`,\n \"--radio-label-gap\": `${radioTokens.group.labelGap}px`,\n \"--radio-label-size\": `${radioTokens.label.fontSize}px`,\n \"--radio-label-weight\": radioTokens.label.fontWeight,\n ...style,\n };\n\n const contextValue = useMemo<RadioGroupContextValue>(\n () => ({\n name: name ?? `radio-group-${generatedName.replace(/:/g, \"\")}`,\n value: selectedValue,\n disabled,\n required,\n setValue: (nextValue) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onChange?.(nextValue);\n onValueChange?.(nextValue);\n },\n }),\n [disabled, generatedName, isControlled, name, onChange, onValueChange, required, selectedValue],\n );\n\n return (\n <fieldset\n disabled={disabled}\n aria-label={label ? undefined : ariaLabel}\n aria-labelledby={label ? legendId : ariaLabelledBy}\n className={cn(\"m-0 min-w-0 border-0 p-0\", rootClassName)}\n style={groupStyle}\n {...props}\n >\n {label ? (\n <legend\n id={legendId}\n className=\"mb-[var(--radio-label-gap)] text-[length:var(--radio-label-size)] text-foreground\"\n style={{ fontWeight: \"var(--radio-label-weight)\" }}\n >\n {label}\n </legend>\n ) : null}\n <RadioGroupContext.Provider value={contextValue}>\n <div\n className={cn(\n \"flex gap-[var(--radio-group-gap)]\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className,\n )}\n data-orientation={orientation}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n </fieldset>\n );\n}\n\nRadioGroupRoot.displayName = \"RadioGroup\";\n\nexport function useRadio({\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n disabled,\n disabledReason,\n id,\n value,\n}: UseRadioProps) {\n const context = useRadioGroupContext();\n const generatedId = useId();\n const inputId = id ?? `radio-${generatedId.replace(/:/g, \"\")}`;\n const reasonId = disabledReason ? `${inputId}-reason` : undefined;\n const isDisabled = Boolean(disabled || context?.disabled);\n const checked = context ? context.value === value : false;\n\n const inputProps = {\n id: inputId,\n value,\n checked,\n disabled: isDisabled,\n onChange: () => context?.setValue(value),\n ...(context?.name ? { name: context.name } : {}),\n ...(context?.required ? { required: context.required } : {}),\n ...(reasonId ? { \"aria-describedby\": reasonId } : {}),\n ...(ariaLabel ? { \"aria-label\": ariaLabel } : {}),\n ...(ariaLabelledBy ? { \"aria-labelledby\": ariaLabelledBy } : {}),\n } satisfies RadioProps;\n\n return {\n checked,\n disabled: isDisabled,\n inputProps,\n component: (\n <>\n <RadioRoot {...inputProps} id={inputId} />\n {disabledReason ? (\n <span id={reasonId} className=\"sr-only\">\n {disabledReason}\n </span>\n ) : null}\n </>\n ),\n };\n}\n\nexport const Radio = RadioRoot;\nexport const RadioGroupItem = RadioGroupItemRoot;\nexport const RadioGroup = Object.assign(RadioGroupRoot, {\n Item: RadioGroupItemRoot,\n});\n","\"use client\";\n\nimport { MoreVertical as GripVertical } from \"@nebutra/icons\";\nimport type * as React from \"react\";\nimport { Group, Panel, Separator } from \"react-resizable-panels\";\nimport { cn } from \"../utils/cn\";\n\nfunction ResizablePanelGroup({\n className,\n direction,\n orientation,\n ...props\n}: React.ComponentProps<typeof Group> & {\n /** @deprecated Use `orientation` instead */\n direction?: \"horizontal\" | \"vertical\";\n}) {\n return (\n <Group\n orientation={orientation ?? direction ?? \"horizontal\"}\n className={cn(\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\", className)}\n {...props}\n />\n );\n}\n\nconst ResizablePanel = Panel;\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof Separator> & {\n withHandle?: boolean;\n}) => (\n <Separator\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-[var(--radius-sm)] border bg-border\">\n <GripVertical className=\"size-2.5\" />\n </div>\n )}\n </Separator>\n);\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n","\"use client\";\n\nimport { ChevronDown, ChevronLeft, ChevronRight, ChevronUp } from \"@nebutra/icons\";\nimport * as React from \"react\";\nimport { scrollerTokens } from \"../tokens/components/scroller\";\nimport { cn } from \"../utils/cn\";\n\nexport type ScrollerOverflow = \"x\" | \"y\" | \"both\";\nexport type ScrollerButtonAxis = \"x\" | \"y\";\nexport type ScrollerEdgeAffordance = \"fade\" | \"none\";\nexport type ScrollerSize = number | string;\n\ntype ScrollerCssVar =\n | \"--scroller-width\"\n | \"--scroller-height\"\n | \"--scroller-radius\"\n | \"--scroller-fade-size\"\n | \"--scroller-button-size\"\n | \"--scroller-button-offset\"\n | \"--scroller-button-radius\"\n | \"--scroller-button-icon-size\"\n | \"--scroller-button-shadow\"\n | \"--scroller-duration\"\n | \"--scroller-easing\";\n\ntype ScrollerCssVars = React.CSSProperties & Record<ScrollerCssVar, string>;\n\ntype EdgeState = {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n};\n\nexport interface ScrollerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\" | \"style\"> {\n children?: React.ReactNode;\n /** Scroll axis. Use \"both\" only when content genuinely overflows in two dimensions. */\n overflow?: ScrollerOverflow;\n /** Outer width. Numbers resolve to px. */\n width?: ScrollerSize;\n /** Outer height. Numbers resolve to px. */\n height?: ScrollerSize;\n /** Class applied to the direct-child container inside the scroll viewport. */\n childrenContainerClassName?: string;\n /** Render directional buttons that scroll to the next direct child. */\n withButtons?: boolean;\n /** Axis used by directional buttons. Defaults to x for horizontal, y otherwise. */\n buttonAxis?: ScrollerButtonAxis;\n /** Accessible noun used by the viewport and generated button labels. */\n contentLabel?: string;\n previousButtonLabel?: string;\n nextButtonLabel?: string;\n edgeAffordance?: ScrollerEdgeAffordance;\n scrollBehavior?: ScrollBehavior;\n style?: React.CSSProperties;\n}\n\nfunction toCssLength(value: ScrollerSize | undefined, fallback: string) {\n if (value === undefined) return fallback;\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nfunction createScrollerCssVars({\n width,\n height,\n style,\n}: {\n width: ScrollerSize | undefined;\n height: ScrollerSize | undefined;\n style: React.CSSProperties | undefined;\n}): ScrollerCssVars {\n return {\n \"--scroller-width\": toCssLength(width, \"100%\"),\n \"--scroller-height\": toCssLength(height, \"auto\"),\n \"--scroller-radius\": `${scrollerTokens.radius}px`,\n \"--scroller-fade-size\": `${scrollerTokens.fadeSize}px`,\n \"--scroller-button-size\": `${scrollerTokens.button.size}px`,\n \"--scroller-button-offset\": `${scrollerTokens.button.offset}px`,\n \"--scroller-button-radius\": `${scrollerTokens.button.radius}px`,\n \"--scroller-button-icon-size\": `${scrollerTokens.button.iconSize}px`,\n \"--scroller-button-shadow\": scrollerTokens.button.shadow,\n \"--scroller-duration\": `${scrollerTokens.motion.duration}ms`,\n \"--scroller-easing\": scrollerTokens.motion.easing,\n ...style,\n };\n}\n\nfunction resolveButtonAxis(overflow: ScrollerOverflow, buttonAxis: ScrollerButtonAxis | undefined) {\n return buttonAxis ?? (overflow === \"x\" ? \"x\" : \"y\");\n}\n\nfunction resolveScrollClasses(overflow: ScrollerOverflow) {\n if (overflow === \"x\") return \"overflow-x-auto overflow-y-hidden\";\n if (overflow === \"y\") return \"overflow-y-auto overflow-x-hidden\";\n return \"overflow-auto\";\n}\n\nfunction resolveContainerClasses(overflow: ScrollerOverflow) {\n if (overflow === \"x\") return \"flex min-w-max flex-row\";\n if (overflow === \"y\") return \"flex flex-col\";\n return \"min-w-max\";\n}\n\nfunction getDirectChildElements(container: HTMLDivElement | null): HTMLElement[] {\n if (!container) return [];\n return Array.from(container.children).filter(\n (child): child is HTMLElement => child instanceof HTMLElement,\n );\n}\n\nfunction getChildPosition(child: HTMLElement, axis: ScrollerButtonAxis) {\n return axis === \"x\" ? child.offsetLeft : child.offsetTop;\n}\n\nfunction getScrollPosition(viewport: HTMLDivElement, axis: ScrollerButtonAxis) {\n return axis === \"x\" ? viewport.scrollLeft : viewport.scrollTop;\n}\n\nfunction getEdgeState(viewport: HTMLDivElement): EdgeState {\n const threshold = 1;\n const maxX = viewport.scrollWidth - viewport.clientWidth;\n const maxY = viewport.scrollHeight - viewport.clientHeight;\n\n return {\n left: viewport.scrollLeft > threshold,\n right: viewport.scrollLeft < maxX - threshold,\n top: viewport.scrollTop > threshold,\n bottom: viewport.scrollTop < maxY - threshold,\n };\n}\n\nfunction findTargetChild(\n children: readonly HTMLElement[],\n viewport: HTMLDivElement,\n axis: ScrollerButtonAxis,\n direction: \"previous\" | \"next\",\n) {\n if (children.length === 0) return undefined;\n\n const threshold = 2;\n const currentPosition = getScrollPosition(viewport, axis);\n const sortedChildren = [...children].sort(\n (a, b) => getChildPosition(a, axis) - getChildPosition(b, axis),\n );\n\n if (direction === \"next\") {\n return (\n sortedChildren.find((child) => getChildPosition(child, axis) > currentPosition + threshold) ??\n sortedChildren.at(-1)\n );\n }\n\n for (let index = sortedChildren.length - 1; index >= 0; index -= 1) {\n const child = sortedChildren[index];\n if (child && getChildPosition(child, axis) < currentPosition - threshold) {\n return child;\n }\n }\n\n return sortedChildren[0];\n}\n\nfunction scrollToChild({\n child,\n viewport,\n axis,\n behavior,\n}: {\n child: HTMLElement;\n viewport: HTMLDivElement;\n axis: ScrollerButtonAxis;\n behavior: ScrollBehavior;\n}) {\n const position = getChildPosition(child, axis);\n viewport.scrollTo({\n left: axis === \"x\" ? position : viewport.scrollLeft,\n top: axis === \"y\" ? position : viewport.scrollTop,\n behavior,\n });\n}\n\nfunction edgeClasses(overflow: ScrollerOverflow, edgeState: EdgeState) {\n return [\n (overflow === \"x\" || overflow === \"both\") &&\n edgeState.left &&\n \"before:absolute before:inset-y-0 before:left-0 before:z-10 before:w-[var(--scroller-fade-size)] before:pointer-events-none before:bg-gradient-to-r before:from-background before:to-transparent\",\n (overflow === \"x\" || overflow === \"both\") &&\n edgeState.right &&\n \"after:absolute after:inset-y-0 after:right-0 after:z-10 after:w-[var(--scroller-fade-size)] after:pointer-events-none after:bg-gradient-to-l after:from-background after:to-transparent\",\n ];\n}\n\nfunction VerticalEdges({\n edgeState,\n overflow,\n}: {\n edgeState: EdgeState;\n overflow: ScrollerOverflow;\n}) {\n if (overflow === \"x\") return null;\n\n return (\n <>\n {edgeState.top && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-x-0 top-0 z-10 h-[var(--scroller-fade-size)] bg-gradient-to-b from-background to-transparent\"\n />\n )}\n {edgeState.bottom && (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-x-0 bottom-0 z-10 h-[var(--scroller-fade-size)] bg-gradient-to-t from-background to-transparent\"\n />\n )}\n </>\n );\n}\n\nfunction ScrollerButton({\n axis,\n direction,\n disabled,\n label,\n onClick,\n}: {\n axis: ScrollerButtonAxis;\n direction: \"previous\" | \"next\";\n disabled: boolean;\n label: string;\n onClick: () => void;\n}) {\n const Icon =\n axis === \"x\"\n ? direction === \"previous\"\n ? ChevronLeft\n : ChevronRight\n : direction === \"previous\"\n ? ChevronUp\n : ChevronDown;\n\n return (\n <button\n type=\"button\"\n aria-label={label}\n disabled={disabled}\n onClick={onClick}\n className={cn(\n \"absolute z-20 grid size-[var(--scroller-button-size)] place-items-center rounded-[var(--scroller-button-radius)]\",\n \"border border-border bg-background text-muted-foreground shadow-[var(--scroller-button-shadow)]\",\n \"transition-[background-color,border-color,color,opacity,transform] duration-[var(--scroller-duration)] ease-[var(--scroller-easing)]\",\n \"hover:border-ring hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-0 motion-reduce:transition-none\",\n axis === \"x\" &&\n direction === \"previous\" &&\n \"left-[var(--scroller-button-offset)] top-1/2 -translate-y-1/2\",\n axis === \"x\" &&\n direction === \"next\" &&\n \"right-[var(--scroller-button-offset)] top-1/2 -translate-y-1/2\",\n axis === \"y\" &&\n direction === \"previous\" &&\n \"left-1/2 top-[var(--scroller-button-offset)] -translate-x-1/2\",\n axis === \"y\" &&\n direction === \"next\" &&\n \"bottom-[var(--scroller-button-offset)] left-1/2 -translate-x-1/2\",\n )}\n >\n <Icon aria-hidden=\"true\" className=\"size-[var(--scroller-button-icon-size)]\" />\n </button>\n );\n}\n\nexport function Scroller({\n children,\n overflow = \"y\",\n width,\n height,\n childrenContainerClassName,\n withButtons = false,\n buttonAxis,\n contentLabel = \"content\",\n previousButtonLabel,\n nextButtonLabel,\n edgeAffordance = \"fade\",\n scrollBehavior = \"smooth\",\n className,\n style,\n ...props\n}: ScrollerProps) {\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const childrenContainerRef = React.useRef<HTMLDivElement | null>(null);\n const [edgeState, setEdgeState] = React.useState<EdgeState>({\n left: false,\n right: false,\n top: false,\n bottom: false,\n });\n const resolvedButtonAxis = resolveButtonAxis(overflow, buttonAxis);\n\n const updateEdgeState = React.useCallback(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n setEdgeState(getEdgeState(viewport));\n }, []);\n\n React.useEffect(() => {\n updateEdgeState();\n\n const viewport = viewportRef.current;\n const childrenContainer = childrenContainerRef.current;\n if (!viewport) return;\n\n const resizeObserver =\n typeof ResizeObserver === \"undefined\" ? undefined : new ResizeObserver(updateEdgeState);\n resizeObserver?.observe(viewport);\n if (childrenContainer) resizeObserver?.observe(childrenContainer);\n\n window.addEventListener(\"resize\", updateEdgeState);\n\n return () => {\n resizeObserver?.disconnect();\n window.removeEventListener(\"resize\", updateEdgeState);\n };\n }, [updateEdgeState]);\n\n const scrollToSibling = React.useCallback(\n (direction: \"previous\" | \"next\") => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n\n const directChildren = getDirectChildElements(childrenContainerRef.current);\n const targetChild = findTargetChild(directChildren, viewport, resolvedButtonAxis, direction);\n if (!targetChild) return;\n\n scrollToChild({\n child: targetChild,\n viewport,\n axis: resolvedButtonAxis,\n behavior: scrollBehavior,\n });\n },\n [resolvedButtonAxis, scrollBehavior],\n );\n\n const hasPrevious = resolvedButtonAxis === \"x\" ? edgeState.left : edgeState.top;\n const hasNext = resolvedButtonAxis === \"x\" ? edgeState.right : edgeState.bottom;\n const previousLabel =\n previousButtonLabel ?? `Scroll ${contentLabel} ${resolvedButtonAxis === \"x\" ? \"left\" : \"up\"}`;\n const nextLabel =\n nextButtonLabel ?? `Scroll ${contentLabel} ${resolvedButtonAxis === \"x\" ? \"right\" : \"down\"}`;\n\n return (\n <div\n className={cn(\n \"relative isolate w-[var(--scroller-width)]\",\n edgeAffordance === \"fade\" && edgeClasses(overflow, edgeState),\n className,\n )}\n style={createScrollerCssVars({ width, height, style })}\n {...props}\n >\n <section\n ref={viewportRef}\n aria-label={contentLabel}\n onScroll={updateEdgeState}\n className={cn(\n \"h-[var(--scroller-height)] rounded-[var(--scroller-radius)] outline-none\",\n \"scroll-smooth overscroll-contain focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-reduce:scroll-auto\",\n resolveScrollClasses(overflow),\n )}\n >\n <div\n ref={childrenContainerRef}\n className={cn(resolveContainerClasses(overflow), childrenContainerClassName)}\n >\n {children}\n </div>\n </section>\n {edgeAffordance === \"fade\" && <VerticalEdges edgeState={edgeState} overflow={overflow} />}\n {withButtons && (\n <>\n <ScrollerButton\n axis={resolvedButtonAxis}\n direction=\"previous\"\n disabled={!hasPrevious}\n label={previousLabel}\n onClick={() => scrollToSibling(\"previous\")}\n />\n <ScrollerButton\n axis={resolvedButtonAxis}\n direction=\"next\"\n disabled={!hasNext}\n label={nextLabel}\n onClick={() => scrollToSibling(\"next\")}\n />\n </>\n )}\n </div>\n );\n}\n\nScroller.displayName = \"Scroller\";\n","\"use client\";\n\nimport { Select as BaseSelect, type SelectRoot } from \"@base-ui/react/select\";\nimport { Check, ChevronDown } from \"@nebutra/icons\";\nimport * as React from \"react\";\n\nimport { overlayClassNames, overlayZIndex } from \"../tokens/components/overlay\";\nimport { type SelectSize, selectTokens } from \"../tokens/components/select\";\nimport { cn } from \"../utils/cn\";\nimport { ErrorMessage } from \"./error-message\";\nimport { formControlFocusClassNames, formControlInvalidClassNames } from \"./form-control\";\nimport { Label } from \"./label\";\n\ntype SelectTriggerCssVars = React.CSSProperties & {\n \"--select-height\"?: string;\n \"--select-padding-x\"?: string;\n \"--select-font-size\"?: string;\n \"--select-radius\"?: string;\n \"--select-focus-ring-width\"?: string;\n};\n\nfunction getSelectTriggerStyle(\n size: SelectSize,\n style: React.CSSProperties | undefined,\n): SelectTriggerCssVars {\n const token = selectTokens.sizes[size];\n\n return {\n \"--select-height\": `${token.height}px`,\n \"--select-padding-x\": `${token.paddingX}px`,\n \"--select-font-size\": `${token.fontSize}px`,\n \"--select-radius\": `${token.radius}px`,\n \"--select-focus-ring-width\": `${selectTokens.focusRingWidth}px`,\n borderRadius: \"var(--select-radius)\",\n outline: \"none\",\n ...style,\n };\n}\n\ntype NativeSelectCssVar =\n | \"--select-height\"\n | \"--select-padding-x\"\n | \"--select-font-size\"\n | \"--select-radius\"\n | \"--select-icon-inset\"\n | \"--select-icon-box-size\"\n | \"--select-icon-size\"\n | \"--select-label-size\"\n | \"--select-focus-ring-width\"\n | \"--select-field-gap\"\n | \"--select-message-gap\"\n | \"--select-duration\"\n | \"--select-easing\";\n\ntype NativeSelectCssVars = React.CSSProperties & Record<NativeSelectCssVar, string>;\n\ntype SelectContentCssVars = React.CSSProperties & {\n \"--select-content-max-height\"?: string;\n \"--select-content-min-width\"?: string;\n \"--select-content-padding\"?: string;\n \"--select-content-radius\"?: string;\n \"--select-content-shadow\"?: string;\n \"--select-font-size\"?: string;\n \"--select-duration\"?: string;\n \"--select-easing\"?: string;\n \"--select-item-radius\"?: string;\n \"--select-item-padding-x\"?: string;\n \"--select-item-padding-y\"?: string;\n \"--select-item-indicator-inset\"?: string;\n \"--select-item-indicator-size\"?: string;\n \"--select-item-indicator-icon-size\"?: string;\n};\n\nexport type SelectVariant = \"default\" | \"ghost\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface OptionsSelectProps\n extends Omit<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n \"children\" | \"size\" | \"prefix\" | \"onChange\"\n > {\n /**\n * Explicit OS-native `<select>`. Prefer the default listbox.\n * Only use when a true native control is required (rare).\n */\n native?: boolean;\n variant?: SelectVariant;\n options?: readonly SelectOption[];\n label?: string;\n placeholder?: string;\n size?: SelectSize;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n error?: string;\n children?: React.ReactNode;\n wrapperClassName?: string;\n /** HTML-select-compatible change handler (value on event.target.value). */\n onChange?: (event: { target: { value: string; name?: string } }) => void;\n /** Listbox value change (preferred). */\n onValueChange?: (value: string | null) => void;\n}\n\n/** @deprecated Use OptionsSelectProps — native is opt-in only. */\nexport type NativeSelectProps = OptionsSelectProps & { native?: true };\n\nexport type CompoundSelectProps = SelectRoot.Props<string, false> & {\n native?: false;\n};\n\nexport type SelectProps = OptionsSelectProps | CompoundSelectProps;\n\nfunction getNativeSelectStyle(\n size: SelectSize,\n style: React.CSSProperties | undefined,\n): NativeSelectCssVars {\n const token = selectTokens.sizes[size];\n\n return {\n \"--select-height\": `${token.height}px`,\n \"--select-padding-x\": `${token.paddingX}px`,\n \"--select-font-size\": `${token.fontSize}px`,\n \"--select-radius\": `${token.radius}px`,\n \"--select-icon-inset\": `${token.iconInset}px`,\n \"--select-icon-box-size\": `${token.iconBoxSize}px`,\n \"--select-icon-size\": `${token.iconSize}px`,\n \"--select-label-size\": `${selectTokens.labelSize}px`,\n \"--select-focus-ring-width\": `${selectTokens.focusRingWidth}px`,\n \"--select-field-gap\": `${selectTokens.fieldGap}px`,\n \"--select-message-gap\": `${selectTokens.messageGap}px`,\n \"--select-duration\": `${selectTokens.motion.duration}ms`,\n \"--select-easing\": selectTokens.motion.easing,\n ...style,\n };\n}\n\nfunction getSelectContentStyle(style: React.CSSProperties | undefined): SelectContentCssVars {\n return {\n \"--select-content-max-height\": `${selectTokens.content.maxHeight}px`,\n \"--select-content-min-width\": `${selectTokens.content.minWidth}px`,\n \"--select-content-padding\": `${selectTokens.content.padding}px`,\n \"--select-content-radius\": `${selectTokens.content.radius}px`,\n \"--select-content-shadow\": selectTokens.content.shadow,\n \"--select-font-size\": `${selectTokens.content.fontSize}px`,\n \"--select-duration\": `${selectTokens.motion.duration}ms`,\n \"--select-easing\": selectTokens.motion.easing,\n \"--select-item-radius\": `${selectTokens.item.radius}px`,\n \"--select-item-padding-x\": `${selectTokens.item.paddingX}px`,\n \"--select-item-padding-y\": `${selectTokens.item.paddingY}px`,\n \"--select-item-indicator-inset\": `${selectTokens.item.indicatorInset}px`,\n \"--select-item-indicator-size\": `${selectTokens.item.indicatorSize}px`,\n \"--select-item-indicator-icon-size\": `${selectTokens.item.indicatorIconSize}px`,\n zIndex: overlayZIndex.popover,\n ...style,\n };\n}\n\nfunction textOf(node: React.ReactNode): string {\n if (node == null || typeof node === \"boolean\") return \"\";\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(textOf).join(\"\");\n if (React.isValidElement(node)) {\n const props = node.props as { children?: React.ReactNode };\n return textOf(props.children);\n }\n return \"\";\n}\n\nfunction optionsFromChildren(children: React.ReactNode): SelectOption[] {\n const options: SelectOption[] = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n if (child.type !== \"option\") return;\n const props = child.props as {\n value?: string | number;\n disabled?: boolean;\n children?: React.ReactNode;\n };\n const value = String(props.value ?? \"\");\n const label = textOf(props.children) || value;\n options.push(props.disabled === true ? { value, label, disabled: true } : { value, label });\n });\n return options;\n}\n\nfunction hasNativeOptionChildren(children: React.ReactNode) {\n let hasNativeChildren = false;\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n if (child.type === \"option\" || child.type === \"optgroup\") {\n hasNativeChildren = true;\n }\n });\n return hasNativeChildren;\n}\n\n/** Convenience surface (options / label / HTML onChange) — not compound Trigger children. */\nfunction isOptionsSelectApi(props: SelectProps): props is OptionsSelectProps {\n if (props.native === true) return false;\n if (\"options\" in props && props.options !== undefined) return true;\n if (\"label\" in props && props.label !== undefined) return true;\n if (\"placeholder\" in props && props.placeholder !== undefined) return true;\n if (\"error\" in props && props.error !== undefined) return true;\n if (\"prefix\" in props && props.prefix !== undefined) return true;\n if (\"suffix\" in props && props.suffix !== undefined) return true;\n if (\"onChange\" in props && typeof (props as OptionsSelectProps).onChange === \"function\") {\n return true;\n }\n if (\"children\" in props && hasNativeOptionChildren(props.children)) return true;\n return false;\n}\n\n/** OS-native path — opt-in only via native={true}. */\nfunction NativeSelect({\n id,\n variant = \"default\",\n options,\n label,\n placeholder,\n size = \"medium\",\n prefix,\n suffix,\n disabled = false,\n error,\n className,\n wrapperClassName,\n children,\n style,\n value,\n defaultValue,\n onChange,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}: OptionsSelectProps) {\n const generatedId = React.useId();\n const selectId = id ?? generatedId;\n const errorId = error ? `${selectId}-error` : undefined;\n const describedBy = [ariaDescribedBy, errorId].filter(Boolean).join(\" \") || undefined;\n const fallbackDefaultValue =\n placeholder && value === undefined && defaultValue === undefined ? \"\" : defaultValue;\n const hasAffix = Boolean(prefix || suffix);\n const nativeSelectStyle = getNativeSelectStyle(size, style);\n\n return (\n <div\n className={cn(\"grid gap-[var(--select-field-gap)]\", wrapperClassName)}\n style={nativeSelectStyle}\n >\n {label && (\n <Label\n htmlFor={selectId}\n className=\"text-[length:var(--select-label-size)] font-medium text-foreground capitalize\"\n >\n {label}\n </Label>\n )}\n <div\n className={cn(\n \"relative flex items-center text-muted-foreground\",\n !disabled && \"hover:text-foreground\",\n )}\n >\n <select\n id={selectId}\n disabled={disabled}\n value={value}\n defaultValue={fallbackDefaultValue}\n aria-invalid={error ? true : undefined}\n aria-describedby={describedBy}\n style={{ borderRadius: \"var(--select-radius)\" }}\n className={cn(\n \"h-[var(--select-height)] w-full appearance-none rounded-[var(--select-radius)] border font-sans\",\n \"bg-background text-[length:var(--select-font-size)] text-foreground shadow-xs outline-none\",\n \"transition-[background-color,border-color,box-shadow,color] duration-[var(--select-duration)] ease-[var(--select-easing)]\",\n formControlFocusClassNames.select,\n \"disabled:cursor-not-allowed disabled:bg-muted disabled:text-muted-foreground\",\n formControlInvalidClassNames.select,\n variant === \"ghost\" ? \"border-transparent bg-transparent shadow-none\" : \"border-input\",\n prefix\n ? \"pl-[calc(var(--select-icon-inset)+var(--select-icon-box-size))]\"\n : \"pl-[var(--select-padding-x)]\",\n hasAffix\n ? \"pr-[calc(var(--select-icon-inset)+var(--select-icon-box-size))]\"\n : \"pr-[var(--select-padding-x)]\",\n className,\n )}\n onChange={(event) => onChange?.(event)}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options?.map((option) => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n {children}\n </select>\n {prefix && (\n <span className=\"pointer-events-none absolute left-[var(--select-icon-inset)] inline-flex size-[var(--select-icon-box-size)] items-center justify-center\">\n {prefix}\n </span>\n )}\n <span className=\"pointer-events-none absolute right-[var(--select-icon-inset)] inline-flex size-[var(--select-icon-box-size)] items-center justify-center\">\n {suffix ?? <ChevronDown aria-hidden=\"true\" className=\"size-[var(--select-icon-size)]\" />}\n </span>\n </div>\n {error && (\n <span id={errorId} className=\"mt-[var(--select-message-gap)]\">\n <ErrorMessage size={size === \"large\" ? \"medium\" : \"small\"}>{error}</ErrorMessage>\n </span>\n )}\n </div>\n );\n}\n\n/**\n * Default convenience Select: DS listbox (styled popup), not OS chrome.\n * Accepts options / label / placeholder / HTML-compatible onChange.\n */\nfunction OptionsListboxSelect({\n id,\n variant = \"default\",\n options: optionsProp,\n label,\n placeholder,\n size = \"medium\",\n prefix,\n suffix,\n disabled = false,\n error,\n className,\n wrapperClassName,\n children,\n style,\n value,\n defaultValue,\n name,\n onChange,\n onValueChange,\n \"aria-describedby\": ariaDescribedBy,\n \"data-testid\": dataTestId,\n}: OptionsSelectProps & { \"data-testid\"?: string }) {\n const generatedId = React.useId();\n const selectId = id ?? generatedId;\n const errorId = error ? `${selectId}-error` : undefined;\n const describedBy = [ariaDescribedBy, errorId].filter(Boolean).join(\" \") || undefined;\n const labelId = label ? `${selectId}-label` : undefined;\n\n const options = React.useMemo(() => {\n const fromProp = optionsProp?.map((o) => ({\n value: String(o.value),\n label: o.label,\n ...(o.disabled === true ? { disabled: true as const } : {}),\n }));\n if (fromProp?.length) return fromProp;\n return optionsFromChildren(children);\n }, [optionsProp, children]);\n\n const items = React.useMemo(\n () => Object.fromEntries(options.map((o) => [o.value, o.label])),\n [options],\n );\n\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = React.useState(() =>\n defaultValue !== undefined ? String(defaultValue) : \"\",\n );\n const current = isControlled ? String(value ?? \"\") : uncontrolled;\n const selectedLabel = (current && items[current]) || current || \"\";\n\n const handleValueChange = (next: string | null) => {\n const resolved = next ?? \"\";\n if (!isControlled) setUncontrolled(resolved);\n onValueChange?.(next);\n onChange?.({\n target: name === undefined ? { value: resolved } : { value: resolved, name },\n });\n };\n\n const fieldStyle = getNativeSelectStyle(size, style);\n\n return (\n <div className={cn(\"grid gap-[var(--select-field-gap)]\", wrapperClassName)} style={fieldStyle}>\n {label && (\n <Label\n id={labelId}\n htmlFor={selectId}\n className=\"text-[length:var(--select-label-size)] font-medium text-foreground capitalize\"\n >\n {label}\n </Label>\n )}\n {name ? <input type=\"hidden\" name={name} value={current} data-allow-native /> : null}\n <div\n className={cn(\n \"relative flex items-center text-muted-foreground\",\n !disabled && \"hover:text-foreground\",\n )}\n >\n {prefix && (\n <span className=\"pointer-events-none absolute left-[var(--select-icon-inset)] z-10 inline-flex size-[var(--select-icon-box-size)] items-center justify-center\">\n {prefix}\n </span>\n )}\n <BaseSelect.Root\n value={current || null}\n onValueChange={handleValueChange}\n disabled={disabled}\n items={items}\n >\n <SelectTrigger\n id={selectId}\n size={size}\n data-testid={dataTestId}\n aria-invalid={error ? true : undefined}\n aria-describedby={describedBy}\n aria-labelledby={labelId}\n className={cn(\n variant === \"ghost\" && \"border-transparent bg-transparent shadow-none\",\n prefix && \"pl-[calc(var(--select-icon-inset)+var(--select-icon-box-size))]\",\n className,\n )}\n >\n <SelectValue placeholder={placeholder ?? \"Select…\"}>\n {() => selectedLabel || placeholder || \"Select…\"}\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </BaseSelect.Root>\n {suffix && (\n <span className=\"pointer-events-none absolute right-[var(--select-icon-inset)] z-10 inline-flex size-[var(--select-icon-box-size)] items-center justify-center\">\n {suffix}\n </span>\n )}\n </div>\n {error && (\n <span id={errorId} className=\"mt-[var(--select-message-gap)]\">\n <ErrorMessage size={size === \"large\" ? \"medium\" : \"small\"}>{error}</ErrorMessage>\n </span>\n )}\n </div>\n );\n}\n\nfunction Select(props: OptionsSelectProps): React.JSX.Element;\nfunction Select(props: CompoundSelectProps): React.JSX.Element;\nfunction Select(props: SelectProps): React.JSX.Element {\n if (props.native === true) {\n return <NativeSelect {...(props as OptionsSelectProps)} />;\n }\n\n if (isOptionsSelectApi(props)) {\n return <OptionsListboxSelect {...(props as OptionsSelectProps)} />;\n }\n\n const { native: _native, ...rootProps } = props as CompoundSelectProps;\n return <BaseSelect.Root {...rootProps} />;\n}\n\nSelect.displayName = \"Select\";\n\nconst SelectGroup = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseSelect.Group> & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => <BaseSelect.Group ref={ref} className={cn(\"p-1\", className)} {...props} />;\nSelectGroup.displayName = \"SelectGroup\";\n\nconst SelectValue = ({\n className,\n placeholder,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseSelect.Value> & { placeholder?: React.ReactNode } & {\n ref?: React.Ref<HTMLSpanElement> | undefined;\n}) => {\n return (\n <BaseSelect.Value ref={ref} className={cn(\"truncate\", className)} {...props}>\n {children ||\n ((value: string | string[] | null) => {\n if (Array.isArray(value)) return value.length ? value.join(\", \") : placeholder;\n return value || placeholder;\n })}\n </BaseSelect.Value>\n );\n};\nSelectValue.displayName = \"SelectValue\";\n\nconst SelectTrigger = ({\n className,\n children,\n size = \"medium\",\n style,\n ref,\n ...props\n}: Omit<React.ComponentPropsWithoutRef<typeof BaseSelect.Trigger>, \"size\"> & {\n size?: SelectSize;\n} & { ref?: React.Ref<HTMLButtonElement> | undefined }) => (\n <BaseSelect.Trigger\n ref={ref}\n className={cn(\n \"flex h-[var(--select-height)] w-full items-center justify-between whitespace-nowrap rounded-[var(--select-radius)] border border-input bg-background\",\n \"px-[var(--select-padding-x)] text-[length:var(--select-font-size)] text-foreground shadow-xs\",\n \"transition-[background-color,border-color,box-shadow,color] duration-micro ease-out placeholder:text-muted-foreground\",\n formControlFocusClassNames.select,\n \"disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n formControlInvalidClassNames.select,\n className,\n )}\n style={getSelectTriggerStyle(size, style)}\n {...props}\n >\n {children}\n <BaseSelect.Icon render={<span />}>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n);\nSelectTrigger.displayName = \"SelectTrigger\";\n\nconst SelectScrollUpButton = ({\n ref: _ref,\n}: React.ComponentPropsWithoutRef<\"div\"> & { ref?: React.Ref<HTMLDivElement> | undefined }) => null;\nSelectScrollUpButton.displayName = \"SelectScrollUpButton\";\n\nconst SelectScrollDownButton = ({\n ref: _ref,\n}: React.ComponentPropsWithoutRef<\"div\"> & { ref?: React.Ref<HTMLDivElement> | undefined }) => null;\nSelectScrollDownButton.displayName = \"SelectScrollDownButton\";\n\nconst SelectContent = ({\n className,\n children,\n position = \"popper\",\n style,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseSelect.Popup> & {\n position?: \"item-aligned\" | \"popper\";\n} & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <BaseSelect.Portal>\n <BaseSelect.Positioner\n alignItemWithTrigger={position === \"item-aligned\"}\n sideOffset={selectTokens.content.sideOffset}\n >\n <BaseSelect.Popup\n ref={ref}\n className={cn(\"relative\", overlayClassNames.selectSurface, className)}\n style={getSelectContentStyle(style)}\n {...props}\n >\n <BaseSelect.List className=\"h-full w-full p-[var(--select-content-padding)]\">\n {children}\n </BaseSelect.List>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n);\nSelectContent.displayName = \"SelectContent\";\n\nconst SelectLabel = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseSelect.GroupLabel> & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <BaseSelect.GroupLabel\n ref={ref}\n className={cn(\n \"px-[var(--select-item-padding-x)] py-[var(--select-item-padding-y)] text-[length:var(--select-font-size)] font-semibold\",\n className,\n )}\n {...props}\n />\n);\nSelectLabel.displayName = \"SelectLabel\";\n\nconst SelectItem = ({\n className,\n children,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseSelect.Item> & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <BaseSelect.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-pointer select-none items-center rounded-[var(--select-item-radius)] py-[var(--select-item-padding-y)] pl-[var(--select-item-padding-x)] pr-[calc(var(--select-item-indicator-inset)+var(--select-item-indicator-size)+var(--select-item-padding-x))] text-[length:var(--select-font-size)] outline-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-[var(--select-item-indicator-inset)] flex size-[var(--select-item-indicator-size)] items-center justify-center\">\n <BaseSelect.ItemIndicator render={<span />}>\n <Check className=\"size-[var(--select-item-indicator-icon-size)]\" />\n </BaseSelect.ItemIndicator>\n </span>\n <BaseSelect.ItemText render={<span />}>{children}</BaseSelect.ItemText>\n </BaseSelect.Item>\n);\nSelectItem.displayName = \"SelectItem\";\n\nconst SelectSeparator = ({\n className,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<\"div\"> & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <BaseSelect.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n);\nSelectSeparator.displayName = \"SelectSeparator\";\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport { Separator as BaseSeparator } from \"@base-ui/react/separator\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\n// Base UI natively supports exactOptionalPropertyTypes and doesn't need withHtmlProps.\n\nconst Separator = ({\n className,\n orientation = \"horizontal\",\n decorative: _decorative = true,\n ref,\n ...props\n}: React.ComponentPropsWithoutRef<typeof BaseSeparator> & { decorative?: boolean } & {\n ref?: React.Ref<HTMLDivElement> | undefined;\n}) => (\n <BaseSeparator\n ref={ref}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className,\n )}\n {...props}\n />\n);\nSeparator.displayName = \"Separator\";\n\nexport { Separator };\n","\"use client\";\n\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { Cross as XIcon } from \"@nebutra/icons\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { overlayClassNames, overlayTokens, overlayZIndex } from \"../tokens/components/overlay\";\nimport { sheetTokens } from \"../tokens/components/sheet\";\nimport { cn } from \"../utils/cn\";\n\ntype SheetCssVar =\n | \"--sheet-inset\"\n | \"--sheet-side-width\"\n | \"--sheet-edge-height\"\n | \"--sheet-padding-x\"\n | \"--sheet-padding-y\"\n | \"--sheet-body-padding-y\"\n | \"--sheet-gap\"\n | \"--sheet-header-gap\"\n | \"--sheet-footer-gap\"\n | \"--sheet-radius\"\n | \"--sheet-close-size\"\n | \"--sheet-close-icon-size\"\n | \"--sheet-close-offset\"\n | \"--sheet-close-radius\"\n | \"--sheet-overlay-background\"\n | \"--sheet-overlay-blur\"\n | \"--sheet-background\"\n | \"--sheet-shadow\"\n | \"--sheet-duration\"\n | \"--sheet-easing\";\n\ntype SheetCssVars = React.CSSProperties & Record<SheetCssVar, string>;\n\nfunction getSheetStyle(style: React.CSSProperties | undefined): SheetCssVars {\n return {\n \"--sheet-inset\": `${sheetTokens.inset}px`,\n \"--sheet-side-width\": `${sheetTokens.sideWidth}px`,\n \"--sheet-edge-height\": `${sheetTokens.edgeHeight}px`,\n \"--sheet-padding-x\": `${sheetTokens.paddingX}px`,\n \"--sheet-padding-y\": `${sheetTokens.paddingY}px`,\n \"--sheet-body-padding-y\": `${sheetTokens.bodyPaddingY}px`,\n \"--sheet-gap\": `${sheetTokens.gap}px`,\n \"--sheet-header-gap\": `${sheetTokens.headerGap}px`,\n \"--sheet-footer-gap\": `${sheetTokens.footerGap}px`,\n \"--sheet-radius\": `${sheetTokens.radius}px`,\n \"--sheet-close-size\": `${sheetTokens.close.size}px`,\n \"--sheet-close-icon-size\": `${sheetTokens.close.iconSize}px`,\n \"--sheet-close-offset\": `${sheetTokens.close.offset}px`,\n \"--sheet-close-radius\": `${sheetTokens.close.radius}px`,\n \"--sheet-overlay-background\": sheetTokens.overlay.background,\n \"--sheet-overlay-blur\": sheetTokens.overlay.blur,\n \"--sheet-background\": sheetTokens.surface.background,\n \"--sheet-shadow\": sheetTokens.surface.shadow,\n \"--sheet-duration\": `${overlayTokens.motion.duration}ms`,\n \"--sheet-easing\": overlayTokens.motion.easing,\n ...style,\n };\n}\n\nexport type SheetProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Root>;\n\nfunction Sheet({ modal = \"trap-focus\", disablePointerDismissal = true, ...props }: SheetProps) {\n return (\n <BaseDialog.Root\n data-slot=\"sheet\"\n modal={modal}\n disablePointerDismissal={disablePointerDismissal}\n {...props}\n />\n );\n}\nSheet.displayName = \"Sheet\";\n\nexport type SheetTriggerProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Trigger> & {\n asChild?: boolean;\n};\n\nconst SheetTrigger = ({\n asChild,\n children,\n ref,\n ...props\n}: SheetTriggerProps & { ref?: React.Ref<HTMLButtonElement> | undefined }) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BaseDialog.Trigger\n ref={ref}\n data-slot=\"sheet-trigger\"\n {...props}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BaseDialog.Trigger ref={ref} data-slot=\"sheet-trigger\" {...props}>\n {children}\n </BaseDialog.Trigger>\n );\n};\nSheetTrigger.displayName = \"SheetTrigger\";\n\nexport type SheetCloseProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Close> & {\n asChild?: boolean;\n};\n\nconst SheetClose = ({\n asChild,\n children,\n ref,\n ...props\n}: SheetCloseProps & { ref?: React.Ref<HTMLButtonElement> | undefined }) => {\n if (asChild && React.isValidElement(children)) {\n return (\n <BaseDialog.Close\n ref={ref}\n data-slot=\"sheet-close\"\n {...props}\n render={children as React.ReactElement<Record<string, unknown>>}\n />\n );\n }\n return (\n <BaseDialog.Close ref={ref} data-slot=\"sheet-close\" {...props}>\n {children}\n </BaseDialog.Close>\n );\n};\nSheetClose.displayName = \"SheetClose\";\n\nexport type SheetPortalProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Portal>;\n\nfunction SheetPortal(props: SheetPortalProps) {\n return <BaseDialog.Portal data-slot=\"sheet-portal\" {...props} />;\n}\nSheetPortal.displayName = \"SheetPortal\";\n\nexport type SheetOverlayProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Backdrop>;\n\nconst SheetOverlay = ({\n className,\n style,\n ref,\n ...props\n}: SheetOverlayProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <BaseDialog.Backdrop\n ref={ref}\n data-slot=\"sheet-overlay\"\n className={cn(overlayClassNames.sheetBackdrop, className)}\n style={{ zIndex: overlayZIndex.backdrop, ...getSheetStyle(style) }}\n {...props}\n />\n);\nSheetOverlay.displayName = \"SheetOverlay\";\n\nconst sheetVariants = cva(overlayClassNames.sheetSurface, {\n variants: {\n side: {\n top: \"inset-x-[var(--sheet-inset)] top-[var(--sheet-inset)] max-h-[min(var(--sheet-edge-height),calc(100dvh_-_var(--sheet-inset)_-_var(--sheet-inset)))] rounded-[var(--sheet-radius)] data-ending-style:-translate-y-full data-starting-style:-translate-y-full\",\n bottom:\n \"inset-x-[var(--sheet-inset)] bottom-[var(--sheet-inset)] max-h-[min(var(--sheet-edge-height),calc(100dvh_-_var(--sheet-inset)_-_var(--sheet-inset)))] rounded-[var(--sheet-radius)] data-ending-style:translate-y-full data-starting-style:translate-y-full\",\n left: \"inset-y-[var(--sheet-inset)] left-[var(--sheet-inset)] h-[calc(100dvh_-_var(--sheet-inset)_-_var(--sheet-inset))] w-[min(var(--sheet-side-width),calc(100vw_-_var(--sheet-inset)_-_var(--sheet-inset)))] rounded-[var(--sheet-radius)] data-ending-style:-translate-x-full data-starting-style:-translate-x-full\",\n right:\n \"inset-y-[var(--sheet-inset)] right-[var(--sheet-inset)] h-[calc(100dvh_-_var(--sheet-inset)_-_var(--sheet-inset))] w-[min(var(--sheet-side-width),calc(100vw_-_var(--sheet-inset)_-_var(--sheet-inset)))] rounded-[var(--sheet-radius)] data-ending-style:translate-x-full data-starting-style:translate-x-full\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n});\n\nexport interface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof BaseDialog.Popup>,\n VariantProps<typeof sheetVariants> {\n /**\n * Render the backdrop. Prefer `noOverlay` in docs because it names the visual\n * removal directly; `overlay` remains available for boolean composition.\n */\n overlay?: boolean;\n /** Hide the backdrop while keeping the sheet surface and focus behavior. */\n noOverlay?: boolean;\n /** Render the built-in close icon button. */\n showClose?: boolean;\n /** Alias for `showClose`, matching newer generated examples. */\n close?: boolean;\n}\n\nconst SheetContent = ({\n side = \"right\",\n className,\n children,\n overlay = true,\n noOverlay = false,\n showClose,\n close,\n style,\n ref,\n ...props\n}: SheetContentProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const shouldRenderClose = close ?? showClose ?? true;\n const shouldRenderOverlay = overlay && !noOverlay;\n\n return (\n <SheetPortal>\n {shouldRenderOverlay ? <SheetOverlay /> : null}\n <BaseDialog.Popup\n ref={ref}\n data-slot=\"sheet-content\"\n className={cn(sheetVariants({ side }), className)}\n style={{ zIndex: overlayZIndex.modal, ...getSheetStyle(style) }}\n {...props}\n >\n {children}\n {shouldRenderClose ? (\n <SheetClose\n aria-label=\"Close\"\n className={cn(\n \"absolute right-[var(--sheet-close-offset)] top-[var(--sheet-close-offset)] inline-flex size-[var(--sheet-close-size)] items-center justify-center rounded-[var(--sheet-close-radius)] text-muted-foreground\",\n \"transition-[background-color,color,box-shadow] duration-[var(--motion-duration-micro)] ease-[var(--ease-out)] hover:bg-muted hover:text-foreground\",\n overlayClassNames.focusRing,\n \"disabled:pointer-events-none motion-reduce:transition-none\",\n )}\n >\n <XIcon aria-hidden=\"true\" className=\"size-[var(--sheet-close-icon-size)]\" />\n <span className=\"sr-only\">Close</span>\n </SheetClose>\n ) : null}\n </BaseDialog.Popup>\n </SheetPortal>\n );\n};\nSheetContent.displayName = \"SheetContent\";\n\nexport type SheetHeaderProps = React.ComponentPropsWithoutRef<\"div\">;\n\nconst SheetHeader = ({\n className,\n ref,\n ...props\n}: SheetHeaderProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n data-slot=\"sheet-header\"\n className={cn(\n \"grid gap-[var(--sheet-header-gap)] border-b border-border px-[var(--sheet-padding-x)] py-[var(--sheet-padding-y)] pr-[calc(var(--sheet-padding-x)_+_var(--sheet-close-size))] text-left\",\n className,\n )}\n {...props}\n />\n);\nSheetHeader.displayName = \"SheetHeader\";\n\nexport type SheetBodyProps = React.ComponentPropsWithoutRef<\"div\">;\n\nconst SheetBody = ({\n className,\n ref,\n ...props\n}: SheetBodyProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n data-slot=\"sheet-body\"\n className={cn(\n \"min-h-0 flex-1 overflow-y-auto overscroll-contain px-[var(--sheet-padding-x)] py-[var(--sheet-body-padding-y)]\",\n className,\n )}\n {...props}\n />\n);\nSheetBody.displayName = \"SheetBody\";\n\nexport type SheetFooterProps = React.ComponentPropsWithoutRef<\"div\">;\n\nconst SheetFooter = ({\n className,\n ref,\n ...props\n}: SheetFooterProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => (\n <div\n ref={ref}\n data-slot=\"sheet-footer\"\n className={cn(\n \"mt-auto flex flex-col-reverse gap-[var(--sheet-footer-gap)] border-t border-border px-[var(--sheet-padding-x)] py-[var(--sheet-padding-y)] sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n);\nSheetFooter.displayName = \"SheetFooter\";\n\nexport type SheetTitleProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Title>;\n\nconst SheetTitle = ({\n className,\n ref,\n ...props\n}: SheetTitleProps & { ref?: React.Ref<HTMLHeadingElement> | undefined }) => (\n <BaseDialog.Title\n ref={ref}\n data-slot=\"sheet-title\"\n className={cn(\"font-semibold text-base leading-6 text-foreground\", className)}\n {...props}\n />\n);\nSheetTitle.displayName = \"SheetTitle\";\n\nexport type SheetDescriptionProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Description>;\n\nconst SheetDescription = ({\n className,\n ref,\n ...props\n}: SheetDescriptionProps & { ref?: React.Ref<HTMLParagraphElement> | undefined }) => (\n <BaseDialog.Description\n ref={ref}\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm leading-5\", className)}\n {...props}\n />\n);\nSheetDescription.displayName = \"SheetDescription\";\n\nexport {\n Sheet,\n SheetBody,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n};\n","\"use client\";\n\nimport { ChevronDown } from \"@nebutra/icons\";\nimport * as React from \"react\";\nimport { showMoreTokens } from \"../tokens/components/show-more\";\nimport { cn } from \"../utils/cn\";\n\ntype ShowMoreCssVar =\n | \"--show-more-trigger-height\"\n | \"--show-more-trigger-padding-x\"\n | \"--show-more-divider-inset\"\n | \"--show-more-gap\"\n | \"--show-more-radius\"\n | \"--show-more-icon-size\"\n | \"--show-more-duration\"\n | \"--show-more-easing\";\n\ntype ShowMoreBaseProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"onClick\"> & {\n /** Current disclosure state. */\n expanded: boolean;\n /** ID of the list/block whose hidden rows are controlled by the trigger. */\n controls: string;\n /** Number of rows/items hidden while collapsed. Used in the collapsed label. */\n hiddenCount?: number;\n /** Removes the divider rails while preserving the trigger affordance. */\n noBorder?: boolean;\n /** Label shown after expansion. */\n expandedLabel?: string;\n /** Label shown before expansion when `hiddenCount` is omitted. */\n collapsedLabel?: string;\n /** Focus target for the first newly revealed row. */\n focusTargetRef?: React.RefObject<HTMLElement | null>;\n /** Move focus to `focusTargetRef` after expansion. */\n focusOnExpand?: boolean;\n disabled?: boolean;\n buttonClassName?: string;\n dividerClassName?: string;\n};\n\ntype ShowMoreControlledProps =\n | {\n onExpandedChange: (expanded: boolean) => void;\n /** Use `onExpandedChange`; this legacy callback shape is intentionally exclusive. */\n onClick?: never;\n }\n | {\n /** Legacy Geist-compatible callback. Prefer `onExpandedChange`. */\n onClick: (expanded: boolean) => void;\n onExpandedChange?: never;\n };\n\nexport type ShowMoreProps = ShowMoreBaseProps & ShowMoreControlledProps;\n\nfunction getCollapsedLabel(hiddenCount?: number, collapsedLabel?: string) {\n if (collapsedLabel) {\n return collapsedLabel;\n }\n\n if (typeof hiddenCount === \"number\" && hiddenCount > 0) {\n return `Show ${hiddenCount} More`;\n }\n\n return \"Show More\";\n}\n\nfunction callExpandedChange(props: ShowMoreControlledProps, expanded: boolean) {\n const onExpandedChange = \"onExpandedChange\" in props ? props.onExpandedChange : undefined;\n\n if (typeof onExpandedChange === \"function\") {\n onExpandedChange(expanded);\n return;\n }\n\n const onClick = \"onClick\" in props ? props.onClick : undefined;\n onClick?.(expanded);\n}\n\nexport const ShowMore = ({\n expanded,\n controls,\n hiddenCount,\n noBorder = false,\n expandedLabel = \"Show Less\",\n collapsedLabel,\n focusTargetRef,\n focusOnExpand = true,\n disabled = false,\n className,\n buttonClassName,\n dividerClassName,\n onExpandedChange,\n onClick,\n style,\n ref,\n ...props\n}: ShowMoreProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const wasExpanded = React.useRef(expanded);\n const label = expanded ? expandedLabel : getCollapsedLabel(hiddenCount, collapsedLabel);\n\n React.useEffect(() => {\n if (focusOnExpand && expanded && !wasExpanded.current) {\n focusTargetRef?.current?.focus();\n }\n\n wasExpanded.current = expanded;\n }, [expanded, focusOnExpand, focusTargetRef]);\n\n const cssVars = {\n \"--show-more-trigger-height\": `${showMoreTokens.triggerHeight}px`,\n \"--show-more-trigger-padding-x\": `${showMoreTokens.triggerPaddingX}px`,\n \"--show-more-divider-inset\": `${showMoreTokens.dividerInset}px`,\n \"--show-more-gap\": `${showMoreTokens.gap}px`,\n \"--show-more-radius\": `${showMoreTokens.radius}px`,\n \"--show-more-icon-size\": `${showMoreTokens.iconSize}px`,\n \"--show-more-duration\": `${showMoreTokens.motion.duration}ms`,\n \"--show-more-easing\": showMoreTokens.motion.easing,\n ...style,\n } satisfies React.CSSProperties & Record<ShowMoreCssVar, string | number>;\n\n const actionProps: ShowMoreControlledProps =\n typeof onExpandedChange === \"function\"\n ? { onExpandedChange }\n : { onClick: onClick as (expanded: boolean) => void };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full items-center justify-center px-[var(--show-more-divider-inset)]\",\n className,\n )}\n style={cssVars}\n {...props}\n >\n {!noBorder && (\n <div\n aria-hidden=\"true\"\n className={cn(\"h-px flex-1 bg-[var(--neutral-7)]\", dividerClassName)}\n />\n )}\n\n <div className=\"shrink-0 bg-background px-[var(--show-more-gap)]\">\n <button\n type=\"button\"\n aria-controls={controls}\n aria-expanded={expanded}\n disabled={disabled}\n className={cn(\n \"inline-flex items-center justify-center gap-1 whitespace-nowrap border border-border bg-background text-foreground font-medium text-sm\",\n \"h-[var(--show-more-trigger-height)] rounded-[var(--show-more-radius)] px-[var(--show-more-trigger-padding-x)]\",\n \"transition-[background-color,border-color,color] duration-[var(--show-more-duration)] ease-[var(--show-more-easing)]\",\n \"hover:border-border hover:bg-muted\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"motion-reduce:transition-none\",\n buttonClassName,\n )}\n onClick={() => callExpandedChange(actionProps, !expanded)}\n >\n {label}\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n \"size-[var(--show-more-icon-size)] transition-transform duration-[var(--show-more-duration)] ease-[var(--show-more-easing)] motion-reduce:transition-none\",\n expanded && \"rotate-180\",\n )}\n />\n </button>\n </div>\n\n {!noBorder && (\n <div\n aria-hidden=\"true\"\n className={cn(\"h-px flex-1 bg-[var(--neutral-7)]\", dividerClassName)}\n />\n )}\n </div>\n );\n};\nShowMore.displayName = \"ShowMore\";\n","\"use client\";\n\nimport type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\n\n/* -------------------------------------------------------------------------- *\\\n * Skeleton — loading placeholder.\n *\n * Use cases (per Geist guidance):\n * Async data that fills a known layout: table rows, card grids, profile\n * blocks, sidebars. For a single in-flight action use Spinner; for an\n * indeterminate inline wait use LoadingDots; for known progress use\n * Progress. Skeleton is NOT a permanent decoration or empty-state filler.\n *\n * API surface:\n * Two control axes:\n * - Sizing: `width` / `height` / `boxHeight` (px or CSS length). When\n * children are passed and no sizing props are set, the skeleton sizes\n * itself to wrap children (invisible) — the layout stays stable\n * across the loading→loaded swap.\n * - Shape: `pill` (fully rounded) / `rounded` (radius-md) / `squared`\n * (radius-sm). Pick to mirror the eventual element's shape.\n *\n * Visibility — `show` vs `isLoaded`:\n * `show={false}` renders children unwrapped (the loaded state). The legacy\n * `isLoaded` prop still works but is deprecated. Don't pass both.\n *\n * A11y:\n * - While visible: `aria-busy=\"true\"` + `aria-hidden=\"true\"` on the\n * placeholder, so the loading region announces busy without leaking\n * placeholder geometry to screen readers.\n * - Children passed for shape stay in the DOM as `invisible` + `inert`\n * + `aria-hidden` so focusable controls don't leak via Tab.\n * - `motion-reduce:animate-none` honors prefers-reduced-motion.\n\\* -------------------------------------------------------------------------- */\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface SkeletonProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Width in px (number) or any CSS length (string). */\n width?: number | string;\n /** Height in px (number) or any CSS length (string). */\n height?: number | string;\n /** Outer wrapper height — keeps surrounding layout from reflowing. */\n boxHeight?: number | string;\n /** Pill shape — fully rounded. Mutually exclusive with `rounded`/`squared`. */\n pill?: boolean;\n /** Rounded shape — radius-md. */\n rounded?: boolean;\n /** Squared shape — radius-sm. */\n squared?: boolean;\n /** Animate the shimmer. @default true */\n animated?: boolean;\n /**\n * Show the placeholder. When `false` and children are passed, the children\n * render unwrapped (loaded state). @default true\n */\n show?: boolean;\n /** Optional children — when present, the skeleton sizes itself to wrap them. */\n children?: ReactNode;\n /** @deprecated Use `show={!isLoaded}` instead. */\n isLoaded?: boolean;\n /** @deprecated Use `animated={false}` instead. */\n disableAnimation?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction asCssLength(value: number | string | undefined): string | undefined {\n if (value === undefined) return undefined;\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nfunction shapeRadiusClass(props: SkeletonProps): string {\n if (props.pill) return \"rounded-full\";\n if (props.squared) return \"rounded-[var(--radius-sm)]\";\n // `rounded` and the default both render the canonical Skeleton radius.\n return \"rounded-[var(--radius-md)]\";\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function Skeleton(props: SkeletonProps) {\n const {\n width,\n height,\n boxHeight,\n pill: _pill,\n rounded: _rounded,\n squared: _squared,\n animated: animatedProp,\n show: showProp,\n children,\n isLoaded,\n disableAnimation,\n className,\n style,\n ...rest\n } = props;\n\n // Resolve deprecated aliases. `show` wins if explicitly set; otherwise\n // derive from legacy `isLoaded`.\n const show = showProp !== undefined ? showProp : !isLoaded;\n const animated = animatedProp !== undefined ? animatedProp : !disableAnimation;\n\n // Loaded path: render children unwrapped. Geist's rule is \"Don't use\n // Skeleton as permanent decoration\" — once data lands, get out of the way.\n if (!show && children) {\n return <>{children}</>;\n }\n\n const sizeStyle: CSSProperties = {\n width: asCssLength(width),\n height: asCssLength(height),\n minHeight: asCssLength(boxHeight),\n };\n\n return (\n <div\n aria-busy=\"true\"\n aria-hidden=\"true\"\n data-loaded={!show}\n className={cn(\n \"bg-muted\",\n shapeRadiusClass(props),\n animated && \"animate-pulse motion-reduce:animate-none\",\n className,\n )}\n style={{ ...sizeStyle, ...style }}\n {...rest}\n >\n {/* Children passed for shape — kept invisible + inert so focusable\n controls don't leak via Tab and don't get announced. */}\n {children && (\n // biome-ignore lint/a11y/useSemanticElements: this <div> isn't a landmark; `inert` is the relevant a11y signal.\n <div className=\"invisible\" inert aria-hidden=\"true\">\n {children}\n </div>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Pre-built variants — common layouts to avoid copy-paste arithmetic\n// ---------------------------------------------------------------------------\n\nexport function SkeletonText({\n lines = 3,\n className,\n ...props\n}: SkeletonProps & { lines?: number }) {\n return (\n <div className={cn(\"space-y-2\", className)} {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <Skeleton\n key={i}\n height={16}\n className={cn(i === lines - 1 ? \"w-[60%]\" : i === 0 ? \"w-full\" : \"w-[80%]\")}\n />\n ))}\n </div>\n );\n}\n\nexport function SkeletonAvatar({\n size = \"md\",\n className,\n ...props\n}: SkeletonProps & { size?: \"sm\" | \"md\" | \"lg\" }) {\n const px = size === \"sm\" ? 32 : size === \"lg\" ? 48 : 40;\n return <Skeleton pill width={px} height={px} className={className} {...props} />;\n}\n\nexport function SkeletonCard({ className, ...props }: SkeletonProps) {\n return (\n <div className={cn(\"space-y-4 p-4\", className)} {...props}>\n <Skeleton height={128} className=\"w-full\" />\n <div className=\"space-y-2\">\n <Skeleton height={16} className=\"w-3/4\" />\n <Skeleton height={16} className=\"w-1/2\" />\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { sliderTokens } from \"../tokens/components/slider\";\nimport { cn } from \"../utils\";\n\ntype SliderCssVar =\n | \"--slider-height\"\n | \"--slider-track-height\"\n | \"--slider-thumb-size\"\n | \"--slider-radius\"\n | \"--slider-gap\"\n | \"--slider-label-gap\"\n | \"--slider-value-font-size\"\n | \"--slider-track-background\"\n | \"--slider-track-fill\"\n | \"--slider-thumb-background\"\n | \"--slider-thumb-shadow\"\n | \"--slider-duration\"\n | \"--slider-easing\"\n | \"--slider-progress\";\n\ntype SliderCssVars = React.CSSProperties & Record<SliderCssVar, string>;\n\ntype BaseSliderProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"children\" | \"defaultValue\" | \"max\" | \"min\" | \"onChange\" | \"step\" | \"type\" | \"value\"\n> & {\n min?: number;\n max?: number;\n step?: number;\n label?: string;\n unit?: string;\n showValue?: boolean;\n formatValue?: (value: number) => React.ReactNode;\n wrapperClassName?: string;\n};\n\ntype NumberSliderProps = BaseSliderProps & {\n valueMode?: \"number\";\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n onValueCommit?: (value: number) => void;\n};\n\ntype ArraySliderProps = BaseSliderProps & {\n valueMode?: \"array\";\n value?: readonly number[];\n defaultValue?: readonly number[];\n onValueChange?: (value: number[]) => void;\n onValueCommit?: (value: number[]) => void;\n};\n\nexport type SliderProps = NumberSliderProps | ArraySliderProps;\n\nfunction isArraySliderProps(props: SliderProps): props is ArraySliderProps {\n return (\n props.valueMode === \"array\" || Array.isArray(props.value) || Array.isArray(props.defaultValue)\n );\n}\n\nfunction normalizeSliderValue(value: number | readonly number[] | undefined, fallback: number) {\n if (Array.isArray(value)) {\n return value[0] ?? fallback;\n }\n\n return value ?? fallback;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction getProgress(value: number, min: number, max: number) {\n if (max <= min) {\n return 0;\n }\n\n return clamp(((value - min) / (max - min)) * 100, 0, 100);\n}\n\nfunction getSliderStyle(progress: number, style: React.CSSProperties | undefined): SliderCssVars {\n return {\n \"--slider-height\": `${sliderTokens.height}px`,\n \"--slider-track-height\": `${sliderTokens.trackHeight}px`,\n \"--slider-thumb-size\": `${sliderTokens.thumbSize}px`,\n \"--slider-radius\": `${sliderTokens.radius}px`,\n \"--slider-gap\": `${sliderTokens.gap}px`,\n \"--slider-label-gap\": `${sliderTokens.labelGap}px`,\n \"--slider-value-font-size\": `${sliderTokens.valueFontSize}px`,\n \"--slider-track-background\": sliderTokens.track.background,\n \"--slider-track-fill\": sliderTokens.track.fill,\n \"--slider-thumb-background\": sliderTokens.thumb.background,\n \"--slider-thumb-shadow\": sliderTokens.thumb.shadow,\n \"--slider-duration\": `${sliderTokens.motion.duration}ms`,\n \"--slider-easing\": sliderTokens.motion.easing,\n \"--slider-progress\": `${progress}%`,\n ...style,\n };\n}\n\nfunction formatSliderValue(value: number, unit: string | undefined) {\n return unit ? `${value}${unit}` : value;\n}\n\nexport const Slider = ({\n ref,\n ...props\n}: SliderProps & { ref?: React.Ref<HTMLInputElement> | undefined }) => {\n const {\n className,\n wrapperClassName,\n min = 0,\n max = 100,\n step = 1,\n label,\n unit,\n showValue = true,\n formatValue,\n style,\n id,\n value,\n defaultValue,\n disabled,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n onBlur,\n onPointerUp,\n onKeyUp,\n // Slider's own callbacks + discriminant — pull them out so they are NOT\n // spread onto the native <input> below (React warns \"Unknown event handler\n // property onValueChange\"). The emit helpers still read props.onValueChange.\n onValueChange: _onValueChange,\n onValueCommit: _onValueCommit,\n valueMode: _valueMode,\n ...inputProps\n } = props;\n const generatedId = React.useId();\n const sliderId = id ?? generatedId;\n const [internalValue, setInternalValue] = React.useState(() =>\n normalizeSliderValue(defaultValue, min),\n );\n const currentValue = clamp(normalizeSliderValue(value, internalValue), min, max);\n const progress = getProgress(currentValue, min, max);\n const valueContent = formatValue\n ? formatValue(currentValue)\n : formatSliderValue(currentValue, unit);\n const hasAccessibleName = Boolean(label || ariaLabel || ariaLabelledBy);\n\n function emitValueChange(nextValue: number) {\n if (isArraySliderProps(props)) {\n props.onValueChange?.([nextValue]);\n return;\n }\n\n props.onValueChange?.(nextValue);\n }\n\n function emitValueCommit(nextValue: number) {\n if (isArraySliderProps(props)) {\n props.onValueCommit?.([nextValue]);\n return;\n }\n\n props.onValueCommit?.(nextValue);\n }\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n const nextValue = Number(event.currentTarget.value);\n\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n\n emitValueChange(nextValue);\n }\n\n function handlePointerUp(event: React.PointerEvent<HTMLInputElement>) {\n onPointerUp?.(event);\n emitValueCommit(Number(event.currentTarget.value));\n }\n\n function handleKeyUp(event: React.KeyboardEvent<HTMLInputElement>) {\n onKeyUp?.(event);\n\n if (\n [\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"End\",\n \"Home\",\n \"PageDown\",\n \"PageUp\",\n ].includes(event.key)\n ) {\n emitValueCommit(Number(event.currentTarget.value));\n }\n }\n\n return (\n <div\n className={cn(\"grid w-full gap-[var(--slider-gap)]\", wrapperClassName)}\n style={getSliderStyle(progress, style)}\n >\n {(label || showValue) && (\n <div className=\"flex items-center justify-between gap-[var(--slider-label-gap)]\">\n {label ? (\n <label className=\"font-medium text-foreground text-sm\" htmlFor={sliderId}>\n {label}\n </label>\n ) : (\n <span aria-hidden=\"true\" />\n )}\n {showValue ? (\n <span className=\"text-[length:var(--slider-value-font-size)] text-muted-foreground tabular-nums\">\n {valueContent}\n </span>\n ) : null}\n </div>\n )}\n <input\n ref={ref}\n id={sliderId}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={currentValue}\n disabled={disabled}\n aria-label={hasAccessibleName ? ariaLabel : \"Slider value\"}\n aria-labelledby={ariaLabelledBy}\n onChange={handleChange}\n onPointerUp={handlePointerUp}\n onKeyUp={handleKeyUp}\n onBlur={onBlur}\n className={cn(\n \"h-[var(--slider-height)] w-full cursor-pointer appearance-none rounded-[var(--slider-radius)] bg-[linear-gradient(to_right,var(--slider-track-fill)_0,var(--slider-track-fill)_var(--slider-progress),var(--slider-track-background)_var(--slider-progress),var(--slider-track-background)_100%)] bg-[length:100%_var(--slider-track-height)] bg-center bg-no-repeat outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&::-moz-range-thumb]:size-[var(--slider-thumb-size)] [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border [&::-moz-range-thumb]:border-border [&::-moz-range-thumb]:bg-[var(--slider-thumb-background)] [&::-moz-range-thumb]:shadow-[var(--slider-thumb-shadow)]\",\n \"[&::-webkit-slider-thumb]:size-[var(--slider-thumb-size)] [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border [&::-webkit-slider-thumb]:border-border [&::-webkit-slider-thumb]:bg-[var(--slider-thumb-background)] [&::-webkit-slider-thumb]:shadow-[var(--slider-thumb-shadow)]\",\n \"[&::-moz-range-thumb]:transition-transform [&::-moz-range-thumb]:duration-[var(--slider-duration)] [&::-moz-range-thumb]:ease-[var(--slider-easing)]\",\n \"[&::-webkit-slider-thumb]:transition-transform [&::-webkit-slider-thumb]:duration-[var(--slider-duration)] [&::-webkit-slider-thumb]:ease-[var(--slider-easing)]\",\n \"active:[&::-moz-range-thumb]:scale-110 active:[&::-webkit-slider-thumb]:scale-110 motion-reduce:[&::-moz-range-thumb]:transition-none motion-reduce:[&::-webkit-slider-thumb]:transition-none\",\n className,\n )}\n {...inputProps}\n />\n </div>\n );\n};\n\nSlider.displayName = \"Slider\";\nexport default Slider;\n","\"use client\";\n\nimport type { ComponentProps, CSSProperties } from \"react\";\n\nimport {\n type SpinnerSize,\n type SpinnerTone,\n spinnerSizes,\n spinnerTokens,\n spinnerTones,\n} from \"../tokens/components/spinner\";\nimport { cn } from \"../utils/cn\";\n\nexport type SpinnerVariant =\n | \"default\"\n | \"circle\"\n | \"pinwheel\"\n | \"circle-filled\"\n | \"ellipsis\"\n | \"ring\"\n | \"bars\"\n | \"infinite\";\n\ntype SpinnerCssVar =\n | \"--spinner-size\"\n | \"--spinner-bar-width\"\n | \"--spinner-bar-height\"\n | \"--spinner-bar-left\"\n | \"--spinner-bar-top\"\n | \"--spinner-bar-translate\"\n | \"--spinner-bar-radius\"\n | \"--spinner-duration\"\n | \"--spinner-easing\";\n\ntype SpinnerCssVars = CSSProperties & Record<SpinnerCssVar, string>;\n\nexport interface SpinnerProps extends Omit<ComponentProps<\"span\">, \"children\" | \"color\" | \"role\"> {\n /** Size token or explicit pixel size. Prefer tokens inside primitives. */\n size?: SpinnerSize | number;\n /** Semantic color tone. Use className only for local composition overrides. */\n tone?: SpinnerTone;\n /** Accessible status label. Omit when the parent already exposes aria-busy. */\n label?: string;\n /** Force decorative mode even when a label would otherwise announce status. */\n decorative?: boolean;\n /**\n * @deprecated Spinner is intentionally a single canonical loading indicator.\n * Legacy variants are accepted for source compatibility and render the same\n * tokenized spinner.\n */\n variant?: SpinnerVariant;\n}\n\nfunction resolveSize(size: SpinnerProps[\"size\"]) {\n if (typeof size === \"number\") {\n return `${size}px`;\n }\n\n return `${spinnerSizes[size ?? spinnerTokens.defaultSize]}px`;\n}\n\nfunction getSpinnerStyle(size: SpinnerProps[\"size\"], style: CSSProperties | undefined) {\n return {\n \"--spinner-size\": resolveSize(size),\n \"--spinner-bar-width\": spinnerTokens.barWidth,\n \"--spinner-bar-height\": spinnerTokens.barHeight,\n \"--spinner-bar-left\": spinnerTokens.barLeft,\n \"--spinner-bar-top\": spinnerTokens.barTop,\n \"--spinner-bar-translate\": spinnerTokens.barTranslate,\n \"--spinner-bar-radius\": `${spinnerTokens.barRadius}px`,\n \"--spinner-duration\": `${spinnerTokens.motion.duration}ms`,\n \"--spinner-easing\": spinnerTokens.motion.easing,\n ...style,\n } satisfies SpinnerCssVars;\n}\n\nfunction getBarOpacity(index: number) {\n const fadeRange = spinnerTokens.opacity.max - spinnerTokens.opacity.min;\n const progress = index / (spinnerTokens.barCount - 1);\n\n return Number((spinnerTokens.opacity.min + fadeRange * progress).toFixed(2));\n}\n\nfunction getBarTransform(index: number) {\n return `rotate(${index * (360 / spinnerTokens.barCount)}deg) translate(var(--spinner-bar-translate))`;\n}\n\nexport function Spinner({\n className,\n style,\n size,\n tone = \"default\",\n label,\n decorative,\n variant = \"default\",\n \"aria-label\": ariaLabel,\n ...props\n}: SpinnerProps) {\n const accessibleLabel = ariaLabel ?? label;\n const isDecorative = decorative ?? !accessibleLabel;\n const accessibilityProps = isDecorative\n ? ({ \"aria-hidden\": true } as const)\n : ({\n \"aria-label\": accessibleLabel,\n \"aria-live\": \"polite\",\n role: \"status\",\n } as const);\n\n return (\n <span\n data-slot=\"spinner\"\n data-variant={variant}\n className={cn(\n \"relative inline-block shrink-0 align-[-0.125em]\",\n \"[block-size:var(--spinner-size)] [inline-size:var(--spinner-size)]\",\n spinnerTones[tone],\n className,\n )}\n style={getSpinnerStyle(size, style)}\n {...accessibilityProps}\n {...props}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute inset-0 origin-center\",\n \"[animation:spin_var(--spinner-duration)_var(--spinner-easing)_infinite]\",\n \"motion-reduce:animate-none\",\n )}\n >\n {Array.from({ length: spinnerTokens.barCount }, (_, index) => (\n <span\n key={index}\n aria-hidden=\"true\"\n className={cn(\n \"absolute bg-current\",\n \"h-[var(--spinner-bar-height)] w-[var(--spinner-bar-width)]\",\n \"rounded-[var(--spinner-bar-radius)]\",\n )}\n style={{\n left: \"calc(50% - var(--spinner-bar-left))\",\n opacity: getBarOpacity(index),\n top: \"calc(50% - var(--spinner-bar-top))\",\n transform: getBarTransform(index),\n }}\n />\n ))}\n </span>\n </span>\n );\n}\n","\"use client\";\n\nimport { ChevronDown } from \"@nebutra/icons\";\nimport type * as React from \"react\";\nimport { splitButtonTokens } from \"../tokens/components/split-button\";\nimport { cn } from \"../utils/cn\";\nimport { Button, type ButtonProps } from \"./button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n type DropdownMenuContentProps,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\";\n\nexport type SplitButtonType = \"default\" | \"secondary\";\nexport type SplitButtonMenuAlignment = \"bottom-start\" | \"bottom-end\";\n\ntype ButtonSizeProp = Extract<ButtonProps[\"size\"], string>;\ntype SplitButtonNativeSize = Exclude<ButtonSizeProp, \"icon\">;\n\nexport type SplitButtonSize = SplitButtonNativeSize | \"small\" | \"medium\" | \"large\";\n\nexport interface SplitButtonPrimaryProps\n extends Omit<\n ButtonProps,\n | \"children\"\n | \"className\"\n | \"loading\"\n | \"prefix\"\n | \"shape\"\n | \"size\"\n | \"suffix\"\n | \"type\"\n | \"variant\"\n > {\n /** Geist-compatible visual type. Intentionally limited to non-destructive variants. */\n type?: SplitButtonType;\n /** Native button type. Defaults to `button` to avoid accidental form submit. */\n htmlType?: ButtonProps[\"type\"];\n size?: SplitButtonSize;\n className?: string;\n loading?: boolean;\n prefix?: React.ReactNode;\n}\n\nexport interface SplitButtonMenuContentProps\n extends Omit<DropdownMenuContentProps, \"align\" | \"side\"> {\n width?: number | string;\n}\n\nexport interface SplitButtonProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\" | \"onChange\"> {\n children: React.ReactNode;\n buttonProps?: SplitButtonPrimaryProps;\n disabled?: boolean;\n menuAlignment?: SplitButtonMenuAlignment;\n menuButtonLabel: string;\n menuItems: React.ReactNode;\n menuProps?: SplitButtonMenuContentProps;\n}\n\nexport interface SplitButtonMenuItemProps {\n title: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n menuItemProps?: Omit<React.ComponentPropsWithoutRef<typeof DropdownMenuItem>, \"children\">;\n}\n\ntype SplitButtonCssVars = React.CSSProperties & {\n \"--split-button-trigger-width\": string;\n \"--split-button-menu-min-width\": string;\n \"--split-button-item-gap\": string;\n \"--split-button-item-padding-x\": string;\n \"--split-button-item-padding-y\": string;\n \"--split-button-item-description-gap\": string;\n \"--split-button-item-radius\": string;\n \"--split-button-item-icon-size\": string;\n \"--split-button-duration\": string;\n \"--split-button-easing\": string;\n};\n\nconst SPLIT_SIZE_TO_BUTTON_SIZE = {\n tiny: \"tiny\",\n sm: \"sm\",\n small: \"sm\",\n default: \"default\",\n medium: \"default\",\n lg: \"lg\",\n large: \"lg\",\n} as const satisfies Record<SplitButtonSize, SplitButtonNativeSize>;\n\nconst SPLIT_SIZE_TO_TOKEN_SIZE = {\n tiny: \"tiny\",\n sm: \"sm\",\n small: \"sm\",\n default: \"md\",\n medium: \"md\",\n lg: \"lg\",\n large: \"lg\",\n} as const satisfies Record<SplitButtonSize, keyof typeof splitButtonTokens.triggerWidth>;\n\nconst menuAlignment = {\n \"bottom-start\": {\n align: \"start\",\n side: \"bottom\",\n },\n \"bottom-end\": {\n align: \"end\",\n side: \"bottom\",\n },\n} as const satisfies Record<\n SplitButtonMenuAlignment,\n {\n align: NonNullable<DropdownMenuContentProps[\"align\"]>;\n side: NonNullable<DropdownMenuContentProps[\"side\"]>;\n }\n>;\n\nfunction createSplitButtonVars(size: SplitButtonSize): SplitButtonCssVars {\n const tokenSize = SPLIT_SIZE_TO_TOKEN_SIZE[size];\n\n return {\n \"--split-button-trigger-width\": `${splitButtonTokens.triggerWidth[tokenSize]}px`,\n \"--split-button-menu-min-width\": `${splitButtonTokens.menu.minWidth}px`,\n \"--split-button-item-gap\": `${splitButtonTokens.item.gap}px`,\n \"--split-button-item-padding-x\": `${splitButtonTokens.item.paddingX}px`,\n \"--split-button-item-padding-y\": `${splitButtonTokens.item.paddingY}px`,\n \"--split-button-item-description-gap\": `${splitButtonTokens.item.descriptionGap}px`,\n \"--split-button-item-radius\": `${splitButtonTokens.item.radius}px`,\n \"--split-button-item-icon-size\": `${splitButtonTokens.item.iconSize}px`,\n \"--split-button-duration\": `${splitButtonTokens.motion.duration}ms`,\n \"--split-button-easing\": splitButtonTokens.motion.easing,\n };\n}\n\nfunction SplitButtonRoot({\n children,\n className,\n disabled,\n menuAlignment: alignment = \"bottom-start\",\n menuButtonLabel,\n menuItems,\n menuProps,\n buttonProps,\n style,\n ...props\n}: SplitButtonProps) {\n const {\n className: buttonClassName,\n disabled: buttonDisabled,\n htmlType,\n loading,\n prefix,\n size = \"medium\",\n type = \"default\",\n ...primaryButtonProps\n } = buttonProps ?? {};\n const { className: menuClassName, style: menuStyle, width, ...contentProps } = menuProps ?? {};\n\n const buttonSize = SPLIT_SIZE_TO_BUTTON_SIZE[size];\n const isDisabled = disabled || Boolean(buttonDisabled) || Boolean(loading);\n const splitVars = createSplitButtonVars(size);\n const placement = menuAlignment[alignment];\n const menuWidth = width ?? splitButtonTokens.menu.width;\n\n return (\n <DropdownMenu>\n <div\n className={cn(\"inline-flex items-stretch\", className)}\n style={{ ...splitVars, ...style }}\n {...props}\n >\n <Button\n className={cn(\n \"rounded-r-none focus-visible:relative focus-visible:z-10\",\n buttonClassName,\n )}\n disabled={isDisabled}\n loading={Boolean(loading)}\n prefix={prefix}\n size={buttonSize}\n type={htmlType ?? \"button\"}\n variant={type}\n {...primaryButtonProps}\n >\n {children}\n </Button>\n\n <DropdownMenuTrigger asChild>\n <Button\n aria-label={menuButtonLabel}\n className={cn(\n \"w-[var(--split-button-trigger-width)] rounded-l-none px-0 focus-visible:relative focus-visible:z-10\",\n \"transition-[background-color,border-color,color] duration-[var(--split-button-duration)] ease-[var(--split-button-easing)]\",\n type === \"default\"\n ? \"border-l border-primary-foreground/20\"\n : \"border-l border-border/80\",\n )}\n disabled={isDisabled}\n size={buttonSize}\n type=\"button\"\n variant={type}\n >\n <ChevronDown aria-hidden=\"true\" className=\"size-3.5 opacity-80\" />\n </Button>\n </DropdownMenuTrigger>\n </div>\n\n <DropdownMenuContent\n align={placement.align}\n className={cn(\"min-w-[var(--split-button-menu-min-width)] p-1\", menuClassName)}\n side={placement.side}\n sideOffset={6}\n style={{ width: menuWidth, ...menuStyle }}\n {...contentProps}\n >\n {menuItems}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction SplitButtonMenuItem({\n title,\n description,\n icon,\n menuItemProps,\n}: SplitButtonMenuItemProps) {\n const { className, ...itemProps } = menuItemProps ?? {};\n\n return (\n <DropdownMenuItem\n className={cn(\n \"items-start gap-[var(--split-button-item-gap)] rounded-[var(--split-button-item-radius)] px-[var(--split-button-item-padding-x)] py-[var(--split-button-item-padding-y)]\",\n className,\n )}\n {...itemProps}\n >\n {icon != null && (\n <span\n aria-hidden=\"true\"\n className=\"mt-0.5 flex size-[var(--split-button-item-icon-size)] shrink-0 items-center justify-center text-muted-foreground [&>svg]:size-full\"\n >\n {icon}\n </span>\n )}\n <span className=\"grid min-w-0 gap-[var(--split-button-item-description-gap)]\">\n <span className=\"truncate font-medium text-foreground\">{title}</span>\n {description != null && (\n <span className=\"line-clamp-2 text-muted-foreground text-xs leading-5\">\n {description}\n </span>\n )}\n </span>\n </DropdownMenuItem>\n );\n}\n\nconst SplitButton = Object.assign(SplitButtonRoot, {\n MenuItem: SplitButtonMenuItem,\n});\n\nexport { SplitButton, SplitButtonMenuItem };\n","\"use client\";\n\nimport * as React from \"react\";\nimport type { SpacingScale } from \"../tokens/spacing\";\nimport { cn } from \"../utils/cn\";\n\n/**\n * Stack - Vertical layout primitive\n *\n * Arranges children in a vertical stack with consistent spacing.\n *\n * @see apps/landing/DESIGN.md Section 10.1\n */\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Render as a different element */\n as?: React.ElementType;\n /** Gap between children */\n gap?: SpacingScale;\n /** Horizontal alignment */\n align?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** Justify content */\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\";\n children?: React.ReactNode;\n}\n\nconst gapMap: Record<SpacingScale, string> = {\n 0: \"gap-0\",\n 1: \"gap-1\",\n 2: \"gap-2\",\n 3: \"gap-3\",\n 4: \"gap-4\",\n 5: \"gap-5\",\n 6: \"gap-6\",\n 8: \"gap-8\",\n 10: \"gap-10\",\n 12: \"gap-12\",\n 16: \"gap-16\",\n 20: \"gap-20\",\n 24: \"gap-24\",\n 32: \"gap-32\",\n};\n\nconst alignMap = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nconst justifyMap = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n};\n\nexport const Stack = ({\n as: Component = \"div\",\n className,\n gap = 4,\n align = \"stretch\",\n justify = \"start\",\n children,\n ref,\n ...props\n}: StackProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n return React.createElement(\n Component,\n {\n ...props,\n ref,\n className: cn(\"flex flex-col\", gapMap[gap], alignMap[align], justifyMap[justify], className),\n },\n children,\n );\n};\n\nStack.displayName = \"Stack\";\n","\"use client\";\n\nimport type { Ref } from \"react\";\nimport { cn } from \"../utils/cn\";\n\n/* -------------------------------------------------------------------------- *\\\n * StatusDot — deployment-lifecycle indicator.\n *\n * Surface scope (per Geist guidance):\n * Deployment lifecycle ONLY: QUEUED | BUILDING | READY | ERROR | CANCELED\n * | DELETED. For non-deployment statuses (Workflow runs, Queue messages,\n * Sandbox runs, Cron jobs) use a Badge with the canonical state\n * vocabulary — don't repurpose the dot.\n *\n * Behavior:\n * - QUEUED + BUILDING animate (pulse); all terminal states stay static.\n * Don't render an additional Spinner alongside.\n * - The Best Practices say \"don't flash colors through every transitional\n * state on a polling tick\" — that's a caller concern (only re-render\n * when readyState actually changes upstream).\n * - Pair with RelativeTimeCard when duration matters; the dot alone does\n * not convey time.\n *\n * Color isn't the only signal:\n * Every state ships with a distinct `title` (full sentence) and `label`\n * (single-word sentence-cased), so colorblind users get the same info.\n *\n * A11y:\n * - Default: composes `aria-label` from `titlePrefix` + the state message.\n * Don't override with a generic `aria-label=\"status\"` — that loses the\n * state name.\n * - When the dot sits next to text that already names the state, pass\n * `decorative` so the dot becomes `aria-hidden` and screen readers\n * don't announce the state twice.\n\\* -------------------------------------------------------------------------- */\n\n// ---------------------------------------------------------------------------\n// State catalog — token / title / sentence-cased label per Geist state\n// ---------------------------------------------------------------------------\n\nexport type DeploymentState = \"QUEUED\" | \"BUILDING\" | \"READY\" | \"ERROR\" | \"CANCELED\" | \"DELETED\";\n\ntype StateMeta = {\n /** Tailwind background utility for the dot. Uses semantic tokens. */\n dotBg: string;\n /** Full-sentence title for `title` + base `aria-label`. */\n title: string;\n /** Single-word sentence-cased label rendered when `label={true}`. */\n label: string;\n};\n\nconst STATE_META: Readonly<Record<DeploymentState, StateMeta>> = {\n QUEUED: {\n dotBg: \"bg-muted-foreground\",\n title: \"is queued.\",\n label: \"Queued\",\n },\n BUILDING: {\n dotBg: \"bg-warning\",\n title: \"is building.\",\n label: \"Building\",\n },\n READY: {\n dotBg: \"bg-success\",\n title: \"is ready.\",\n label: \"Ready\",\n },\n ERROR: {\n dotBg: \"bg-destructive\",\n title: \"had an error.\",\n label: \"Error\",\n },\n CANCELED: {\n dotBg: \"bg-muted-foreground/60\",\n title: \"was canceled.\",\n label: \"Canceled\",\n },\n DELETED: {\n dotBg: \"bg-muted-foreground/40\",\n title: \"was deleted.\",\n label: \"Deleted\",\n },\n};\n\nconst ANIMATED_STATES: ReadonlySet<DeploymentState> = new Set([\"QUEUED\", \"BUILDING\"]);\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface StatusDotProps {\n /** Deployment lifecycle state. */\n state: DeploymentState;\n /** Render the sentence-cased state name next to the dot. */\n label?: boolean;\n /**\n * Noun phrase identifying the entity. Default `\"This deployment\"`. In lists\n * pass the entity (e.g. `\"vercel-site production\"`). Don't end with a verb\n * or punctuation — the title sentence is composed from this + the state.\n */\n titlePrefix?: string;\n /**\n * Mark the dot decorative when the surrounding text already names the state.\n * The dot becomes `aria-hidden` so screen readers don't announce twice.\n * @default false\n */\n decorative?: boolean;\n className?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport const StatusDot = function StatusDot({\n ref,\n state,\n label,\n titlePrefix = \"This deployment\",\n decorative = false,\n className,\n}: StatusDotProps & { ref?: Ref<HTMLSpanElement> | undefined }) {\n const meta = STATE_META[state];\n const title = `${titlePrefix} ${meta.title}`;\n const animated = ANIMATED_STATES.has(state);\n\n return (\n <span\n ref={ref}\n title={title}\n {...(decorative ? { \"aria-hidden\": \"true\" } : { \"aria-label\": title })}\n className={cn(\"inline-flex items-center gap-2\", className)}\n >\n <span\n className={cn(\n \"inline-block h-2.5 w-2.5 rounded-full\",\n meta.dotBg,\n animated && \"animate-pulse motion-reduce:animate-none\",\n )}\n />\n {label && <span className=\"font-sans text-foreground text-sm leading-4\">{meta.label}</span>}\n </span>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { type SwitchSize, switchSizes, switchTokens } from \"../tokens/components/switch\";\nimport { cn } from \"../utils/cn\";\n\ntype SwitchCssVar =\n | \"--switch-height\"\n | \"--switch-control-height\"\n | \"--switch-control-min-width\"\n | \"--switch-control-padding-x\"\n | \"--switch-icon-size\"\n | \"--switch-font-size\"\n | \"--switch-padding\"\n | \"--switch-gap\"\n | \"--switch-radius\"\n | \"--switch-control-radius\"\n | \"--switch-duration\"\n | \"--switch-easing\";\n\ntype SwitchCssVars = React.CSSProperties & Record<SwitchCssVar, string>;\n\ntype SwitchContextValue = {\n defaultValue: string | undefined;\n disabled: boolean | undefined;\n name: string;\n onValueChange: ((value: string) => void) | undefined;\n size: SwitchSize;\n value: string | undefined;\n};\n\nconst SwitchContext = React.createContext<SwitchContextValue | null>(null);\n\nfunction useSwitchContext() {\n const context = React.use(SwitchContext);\n\n if (!context) {\n throw new Error(\"Switch.Control must be rendered inside Switch.\");\n }\n\n return context;\n}\n\nexport interface SwitchProps\n extends Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\" | \"defaultValue\" | \"onChange\"> {\n children?: React.ReactNode;\n defaultValue?: string;\n disabled?: boolean;\n name?: string;\n onValueChange?: (value: string) => void;\n size?: SwitchSize;\n value?: string;\n}\n\nfunction getSwitchStyle(size: SwitchSize, style: React.CSSProperties | undefined) {\n const sizeTokens = switchSizes[size];\n\n return {\n \"--switch-height\": `${sizeTokens.height}px`,\n \"--switch-control-height\": `${sizeTokens.controlHeight}px`,\n \"--switch-control-min-width\": `${sizeTokens.minWidth}px`,\n \"--switch-control-padding-x\": `${sizeTokens.paddingX}px`,\n \"--switch-icon-size\": `${sizeTokens.iconSize}px`,\n \"--switch-font-size\": `${sizeTokens.fontSize}px`,\n \"--switch-padding\": `${sizeTokens.padding}px`,\n \"--switch-gap\": `${switchTokens.gap}px`,\n \"--switch-radius\": `${switchTokens.radius}px`,\n \"--switch-control-radius\": `${switchTokens.controlRadius}px`,\n \"--switch-duration\": `${switchTokens.motion.duration}ms`,\n \"--switch-easing\": switchTokens.motion.easing,\n ...style,\n } satisfies SwitchCssVars;\n}\n\nfunction getSwitchControlStyle(size: SwitchSize, style: React.CSSProperties | undefined) {\n const sizeTokens = switchSizes[size];\n\n return {\n \"--switch-control-height\": `${sizeTokens.controlHeight}px`,\n \"--switch-control-min-width\": `${sizeTokens.minWidth}px`,\n \"--switch-control-padding-x\": `${sizeTokens.paddingX}px`,\n \"--switch-icon-size\": `${sizeTokens.iconSize}px`,\n \"--switch-font-size\": `${sizeTokens.fontSize}px`,\n ...style,\n } satisfies Pick<\n SwitchCssVars,\n | \"--switch-control-height\"\n | \"--switch-control-min-width\"\n | \"--switch-control-padding-x\"\n | \"--switch-icon-size\"\n | \"--switch-font-size\"\n >;\n}\n\nconst SwitchRoot = function SwitchRoot({\n children,\n name,\n size = \"medium\",\n defaultValue,\n value,\n disabled,\n onValueChange,\n style,\n className,\n ref,\n ...props\n}: SwitchProps & { ref?: React.Ref<HTMLDivElement> | undefined }) {\n const generatedName = React.useId();\n const resolvedName = name ?? generatedName;\n const context = React.useMemo<SwitchContextValue>(\n () => ({\n defaultValue,\n disabled,\n name: resolvedName,\n onValueChange,\n size,\n value,\n }),\n [defaultValue, disabled, onValueChange, resolvedName, size, value],\n );\n\n return (\n <SwitchContext.Provider value={context}>\n <div\n ref={ref}\n data-slot=\"switch\"\n role=\"radiogroup\"\n className={cn(\n \"inline-flex h-[var(--switch-height)] items-center gap-[var(--switch-gap)] rounded-[var(--switch-radius)] border border-border bg-muted p-[var(--switch-padding)] text-muted-foreground\",\n disabled && \"cursor-not-allowed opacity-60\",\n className,\n )}\n style={getSwitchStyle(size, style)}\n {...props}\n >\n {children}\n </div>\n </SwitchContext.Provider>\n );\n};\n\nexport interface SwitchControlProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"children\" | \"onChange\"> {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n icon?: React.ReactNode;\n label?: string;\n name?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n size?: SwitchSize;\n value: string;\n}\n\nconst SwitchControl = function SwitchControl({\n checked,\n className,\n defaultChecked,\n disabled,\n icon,\n label,\n name,\n onChange,\n size,\n style,\n value,\n ref,\n ...props\n}: SwitchControlProps & { ref?: React.Ref<HTMLLabelElement> | undefined }) {\n const context = useSwitchContext();\n const resolvedSize = size ?? context.size;\n const isControlled = checked !== undefined || context.value !== undefined;\n const isChecked = checked ?? (context.value !== undefined ? context.value === value : undefined);\n const isDefaultChecked =\n !isControlled &&\n (defaultChecked ?? (context.defaultValue !== undefined && context.defaultValue === value));\n const isDisabled = disabled ?? context.disabled;\n const accessibleLabel = label ?? value;\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n onChange?.(event);\n\n if (!event.defaultPrevented) {\n context.onValueChange?.(event.currentTarget.value);\n }\n }\n\n return (\n <label\n ref={ref}\n data-slot=\"switch-control\"\n data-size={resolvedSize}\n className={cn(\n \"relative isolate flex h-[var(--switch-control-height)] min-w-[var(--switch-control-min-width)] flex-1 cursor-pointer items-center\",\n isDisabled && \"cursor-not-allowed\",\n className,\n )}\n style={getSwitchControlStyle(resolvedSize, style)}\n {...props}\n >\n <input\n type=\"radio\"\n name={name ?? context.name}\n value={value}\n checked={isControlled ? isChecked : undefined}\n defaultChecked={isControlled ? undefined : isDefaultChecked}\n disabled={isDisabled}\n aria-label={accessibleLabel}\n className=\"peer sr-only\"\n onChange={handleChange}\n />\n <span\n aria-hidden={icon ? true : undefined}\n className={cn(\n \"inline-flex h-full w-full items-center justify-center gap-1.5 whitespace-nowrap rounded-[var(--switch-control-radius)] px-[var(--switch-control-padding-x)] font-medium text-[length:var(--switch-font-size)]\",\n \"text-muted-foreground transition-[background-color,box-shadow,color] duration-[var(--switch-duration)] ease-[var(--switch-easing)]\",\n \"peer-checked:bg-background peer-checked:text-foreground peer-checked:shadow-sm\",\n \"peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-background\",\n \"peer-disabled:pointer-events-none peer-disabled:text-muted-foreground/60\",\n \"[&_svg]:size-[var(--switch-icon-size)]\",\n )}\n >\n {icon ? (\n <>\n {icon}\n <span className=\"sr-only\">{accessibleLabel}</span>\n </>\n ) : (\n accessibleLabel\n )}\n </span>\n </label>\n );\n};\n\nSwitchRoot.displayName = \"Switch\";\nSwitchControl.displayName = \"Switch.Control\";\n\nexport const Switch = Object.assign(SwitchRoot, {\n Control: SwitchControl,\n});\n","import type * as React from \"react\";\nimport { tableTokens } from \"../tokens/components/table\";\nimport { cn } from \"../utils\";\n\ntype TableCssVar =\n | \"--table-min-width\"\n | \"--table-padding\"\n | \"--table-radius\"\n | \"--table-row-radius\"\n | \"--table-cell-padding-x\"\n | \"--table-cell-padding-y\"\n | \"--table-header-height\"\n | \"--table-font-size\"\n | \"--table-heading-weight\"\n | \"--table-body-weight\"\n | \"--table-body-spacer\"\n | \"--table-motion-duration\"\n | \"--table-motion-easing\";\n\nexport type TableProps = React.TableHTMLAttributes<HTMLTableElement> & {\n /** Class applied to the scroll container around the native table. */\n wrapperClassName?: string;\n /** Style applied to the scroll container around the native table. */\n wrapperStyle?: React.CSSProperties;\n};\n\nexport type TableBodyProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n /** Alternates row background for scan-heavy datasets. */\n striped?: boolean;\n /** Adds row separators inside the body. */\n bordered?: boolean;\n /** Adds hover state for rows that open details or respond to click. */\n interactive?: boolean;\n /** Marks a truncated/virtualized body without changing native table semantics. */\n virtualize?: boolean;\n};\n\nexport type TableHeadProps = React.ThHTMLAttributes<HTMLTableCellElement> & {\n /** Aligns numeric headings and applies tabular numbers. */\n numeric?: boolean;\n};\n\nexport type TableCellProps = React.TdHTMLAttributes<HTMLTableCellElement> & {\n /** Aligns numeric values and applies tabular numbers. */\n numeric?: boolean;\n};\n\ntype TableComponent = React.ComponentType<\n TableProps & { ref?: React.Ref<HTMLTableElement> | undefined }\n> & {\n Body: typeof TableBody;\n Caption: typeof TableCaption;\n Cell: typeof TableCell;\n Col: typeof TableCol;\n Colgroup: typeof TableColgroup;\n Footer: typeof TableFooter;\n Head: typeof TableHead;\n Header: typeof TableHeader;\n Row: typeof TableRow;\n};\n\nfunction createTableVars(style?: React.CSSProperties) {\n return {\n \"--table-min-width\": `${tableTokens.wrapper.minWidth}px`,\n \"--table-padding\": `${tableTokens.wrapper.padding}px`,\n \"--table-radius\": `${tableTokens.wrapper.radius}px`,\n \"--table-row-radius\": `${tableTokens.row.radius}px`,\n \"--table-cell-padding-x\": `${tableTokens.cell.paddingX}px`,\n \"--table-cell-padding-y\": `${tableTokens.cell.paddingY}px`,\n \"--table-header-height\": `${tableTokens.header.height}px`,\n \"--table-font-size\": `${tableTokens.typography.size}px`,\n \"--table-heading-weight\": tableTokens.typography.headingWeight,\n \"--table-body-weight\": tableTokens.typography.bodyWeight,\n \"--table-body-spacer\": `${tableTokens.spacer.bodyTop}px`,\n \"--table-motion-duration\": `${tableTokens.motion.duration}ms`,\n \"--table-motion-easing\": tableTokens.motion.easing,\n ...style,\n } satisfies React.CSSProperties & Record<TableCssVar, string | number>;\n}\n\nconst TableRoot = ({\n className,\n wrapperClassName,\n wrapperStyle,\n style,\n ref,\n ...props\n}: TableProps & { ref?: React.Ref<HTMLTableElement> | undefined }) => (\n <div\n className={cn(\n \"relative w-full min-w-[var(--table-min-width)] overflow-auto rounded-[var(--table-radius)] border border-border bg-card p-[var(--table-padding)]\",\n wrapperClassName,\n )}\n style={createTableVars(wrapperStyle)}\n >\n <table\n ref={ref}\n className={cn(\n \"w-full border-collapse caption-bottom text-[length:var(--table-font-size)] font-[var(--table-body-weight)] text-foreground\",\n className,\n )}\n style={style}\n {...props}\n />\n </div>\n);\nTableRoot.displayName = \"Table\";\n\nconst TableColgroup = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLTableColElement> & {\n ref?: React.Ref<HTMLTableColElement> | undefined;\n}) => <colgroup ref={ref} className={className} {...props} />;\nTableColgroup.displayName = \"TableColgroup\";\n\nconst TableCol = ({\n className,\n ref,\n ...props\n}: React.ColHTMLAttributes<HTMLTableColElement> & {\n ref?: React.Ref<HTMLTableColElement> | undefined;\n}) => <col ref={ref} className={className} {...props} />;\nTableCol.displayName = \"TableCol\";\n\nconst TableHeader = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLTableSectionElement> & {\n ref?: React.Ref<HTMLTableSectionElement> | undefined;\n}) => <thead ref={ref} className={cn(\"border-b border-border\", className)} {...props} />;\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = ({\n className,\n striped = false,\n bordered = false,\n interactive = false,\n virtualize = false,\n ref,\n ...props\n}: TableBodyProps & { ref?: React.Ref<HTMLTableSectionElement> | undefined }) => (\n <>\n <tbody aria-hidden=\"true\" className=\"table-row h-[var(--table-body-spacer)]\" />\n <tbody\n ref={ref}\n data-virtualized={virtualize ? \"\" : undefined}\n className={cn(\n \"[&_tr:last-child]:border-b-0\",\n striped && \"[&_tr:where(:nth-child(odd))]:bg-muted/45\",\n bordered && \"[&_tr]:border-b [&_tr]:border-border\",\n interactive &&\n \"[&_tr]:cursor-default [&_tr:hover]:bg-muted/70 [&_tr:focus-within]:bg-muted/70\",\n className,\n )}\n {...props}\n />\n </>\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLTableSectionElement> & {\n ref?: React.Ref<HTMLTableSectionElement> | undefined;\n}) => <tfoot ref={ref} className={cn(\"border-t border-border\", className)} {...props} />;\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLTableRowElement> & {\n ref?: React.Ref<HTMLTableRowElement> | undefined;\n}) => (\n <tr\n ref={ref}\n className={cn(\n \"[&_td:first-child]:rounded-l-[var(--table-row-radius)] [&_td:last-child]:rounded-r-[var(--table-row-radius)] transition-colors duration-[var(--table-motion-duration)] ease-[var(--table-motion-easing)] motion-reduce:transition-none\",\n className,\n )}\n {...props}\n />\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = ({\n className,\n numeric = false,\n scope = \"col\",\n ref,\n ...props\n}: TableHeadProps & { ref?: React.Ref<HTMLTableCellElement> | undefined }) => (\n <th\n ref={ref}\n scope={scope}\n className={cn(\n \"h-[var(--table-header-height)] px-[var(--table-cell-padding-x)] text-left align-middle font-[var(--table-heading-weight)] text-muted-foreground\",\n \"last:text-right [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-px\",\n numeric && \"text-right font-mono tabular-nums\",\n className,\n )}\n {...props}\n />\n);\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = ({\n className,\n numeric = false,\n ref,\n ...props\n}: TableCellProps & { ref?: React.Ref<HTMLTableCellElement> | undefined }) => (\n <td\n ref={ref}\n className={cn(\n \"px-[var(--table-cell-padding-x)] py-[var(--table-cell-padding-y)] align-middle\",\n \"last:text-right [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-px\",\n numeric && \"text-right font-mono tabular-nums\",\n className,\n )}\n {...props}\n />\n);\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = ({\n className,\n ref,\n ...props\n}: React.HTMLAttributes<HTMLTableCaptionElement> & {\n ref?: React.Ref<HTMLTableCaptionElement> | undefined;\n}) => (\n <caption ref={ref} className={cn(\"mt-4 text-sm text-muted-foreground\", className)} {...props} />\n);\nTableCaption.displayName = \"TableCaption\";\n\nconst Table = TableRoot as TableComponent;\nTable.Body = TableBody;\nTable.Caption = TableCaption;\nTable.Cell = TableCell;\nTable.Col = TableCol;\nTable.Colgroup = TableColgroup;\nTable.Footer = TableFooter;\nTable.Head = TableHead;\nTable.Header = TableHeader;\nTable.Row = TableRow;\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableCol,\n TableColgroup,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n};\n","\"use client\";\n\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { type TabsSize, tabsSizes, tabsTokens } from \"../tokens/components/tabs\";\nimport { cn } from \"../utils\";\nimport { withHtmlProps } from \"../utils/primitive-props\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\";\n\ntype BaseTabsRootChangeDetails = {\n activationDirection: \"left\" | \"right\" | \"up\" | \"down\" | \"none\";\n};\n\nconst BaseRoot = withHtmlProps<\n \"div\",\n {\n defaultValue?: string | null | undefined;\n onValueChange?: ((value: string, eventDetails: BaseTabsRootChangeDetails) => void) | undefined;\n orientation?: \"horizontal\" | \"vertical\" | undefined;\n value?: string | null | undefined;\n }\n>(BaseTabs.Root);\nconst BaseList = withHtmlProps<\n \"div\",\n {\n activateOnFocus?: boolean | undefined;\n loopFocus?: boolean | undefined;\n }\n>(BaseTabs.List);\nconst BaseTrigger = withHtmlProps<\n \"button\",\n {\n value: string;\n }\n>(BaseTabs.Tab);\nconst BaseContent = withHtmlProps<\n \"div\",\n {\n keepMounted?: boolean | undefined;\n value: string;\n }\n>(BaseTabs.Panel);\nconst BaseIndicator = withHtmlProps<\"span\">(BaseTabs.Indicator);\n\nexport type TabsVariant = \"default\" | \"button\" | \"line\" | \"secondary\";\nexport type TabsShape = \"default\" | \"pill\";\nexport type TabsActivationMode = \"automatic\" | \"manual\";\n\ntype TabsCssVar =\n | \"--tabs-height\"\n | \"--tabs-padding\"\n | \"--tabs-gap\"\n | \"--tabs-trigger-gap\"\n | \"--tabs-trigger-padding-x\"\n | \"--tabs-trigger-min-width\"\n | \"--tabs-icon-size\"\n | \"--tabs-font-size\"\n | \"--tabs-radius\"\n | \"--tabs-trigger-radius\"\n | \"--tabs-pill-radius\"\n | \"--tabs-line-thickness\"\n | \"--tabs-focus-ring-width\"\n | \"--tabs-focus-ring-offset\"\n | \"--tabs-panel-gap\"\n | \"--tabs-badge-height\"\n | \"--tabs-badge-padding-x\"\n | \"--tabs-badge-font-size\"\n | \"--tabs-duration\"\n | \"--tabs-easing\";\n\ntype TabsCssVars = React.CSSProperties & Record<TabsCssVar, string>;\n\nconst tabsListVariants = cva(\n \"relative z-0 inline-flex max-w-full shrink-0 items-center overflow-x-auto overscroll-x-contain scrollbar-none\",\n {\n variants: {\n variant: {\n default:\n \"gap-[var(--tabs-gap)] rounded-[var(--tabs-radius)] border border-border bg-muted p-[var(--tabs-padding)] text-muted-foreground\",\n button: \"gap-[var(--tabs-gap)] text-muted-foreground\",\n line: \"gap-[calc(var(--tabs-gap)*3)] border-b border-border text-muted-foreground\",\n secondary:\n \"gap-[var(--tabs-gap)] rounded-[var(--tabs-radius)] bg-transparent text-muted-foreground\",\n },\n shape: {\n default: \"\",\n pill: \"[&_[role=tab]]:rounded-[var(--tabs-pill-radius)]\",\n },\n },\n compoundVariants: [\n {\n variant: \"default\",\n shape: \"pill\",\n className: \"rounded-[var(--tabs-pill-radius)]\",\n },\n {\n variant: \"button\",\n shape: \"pill\",\n className: \"[&_[role=tab]]:rounded-[var(--tabs-pill-radius)]\",\n },\n {\n variant: \"secondary\",\n shape: \"pill\",\n className: \"rounded-[var(--tabs-pill-radius)]\",\n },\n ],\n defaultVariants: {\n shape: \"default\",\n variant: \"default\",\n },\n },\n);\n\nconst tabsTriggerVariants = cva(\n \"relative inline-flex h-[calc(var(--tabs-height)-var(--tabs-padding)*2)] min-w-[var(--tabs-trigger-min-width)] shrink-0 cursor-pointer items-center justify-center gap-[var(--tabs-trigger-gap)] whitespace-nowrap rounded-[var(--tabs-trigger-radius)] px-[var(--tabs-trigger-padding-x)] font-medium text-[length:var(--tabs-font-size)] outline-none transition-[background-color,border-color,box-shadow,color,opacity] duration-[var(--tabs-duration)] ease-[var(--tabs-easing)] focus-visible:ring-[length:var(--tabs-focus-ring-width)] focus-visible:ring-ring focus-visible:ring-offset-[length:var(--tabs-focus-ring-offset)] focus-visible:ring-offset-background disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 [&_svg]:size-[var(--tabs-icon-size)] [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:text-foreground data-[active]:text-foreground\",\n button:\n \"border border-border bg-background text-muted-foreground shadow-xs hover:border-ring/40 hover:text-foreground data-[active]:border-ring/40 data-[active]:text-foreground\",\n line: \"min-w-0 rounded-none px-0 hover:text-foreground data-[active]:text-foreground\",\n secondary:\n \"hover:bg-muted hover:text-foreground data-[active]:bg-muted data-[active]:text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst tabsIndicatorVariants = cva(\n \"pointer-events-none absolute transition-[left,top,width,height,bottom,background-color] duration-[var(--tabs-duration)] ease-[var(--tabs-easing)] motion-reduce:transition-none\",\n {\n variants: {\n variant: {\n default: \"z-[-1] rounded-[var(--tabs-trigger-radius)] bg-background shadow-xs\",\n button: \"z-[-1] rounded-[var(--tabs-trigger-radius)] bg-muted\",\n line: \"bottom-0 h-[var(--tabs-line-thickness)] rounded-[var(--tabs-pill-radius)] bg-foreground\",\n secondary: \"z-[-1] rounded-[var(--tabs-trigger-radius)] bg-muted\",\n },\n shape: {\n default: \"\",\n pill: \"rounded-[var(--tabs-pill-radius)]\",\n },\n },\n defaultVariants: {\n shape: \"default\",\n variant: \"default\",\n },\n },\n);\n\nconst tabsContentVariants = cva(\n \"mt-[var(--tabs-panel-gap)] text-[length:var(--tabs-font-size)] text-muted-foreground focus-visible:outline-none focus-visible:ring-[length:var(--tabs-focus-ring-width)] focus-visible:ring-ring focus-visible:ring-offset-[length:var(--tabs-focus-ring-offset)] focus-visible:ring-offset-background\",\n {\n variants: {\n variant: {\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ntype TabsContextValue = {\n activationMode: TabsActivationMode;\n disabled: boolean;\n shape: TabsShape;\n size: TabsSize;\n variant: TabsVariant;\n};\n\nconst TabsContext = React.createContext<TabsContextValue>({\n activationMode: \"manual\",\n disabled: false,\n shape: \"default\",\n size: \"md\",\n variant: \"default\",\n});\n\nexport interface TabsItem {\n badge?: React.ReactNode;\n content?: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactNode;\n title: React.ReactNode;\n tooltip?: React.ReactNode;\n value: string;\n}\n\nexport interface TabsProps\n extends Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\" | \"defaultValue\" | \"onChange\"> {\n activationMode?: TabsActivationMode;\n defaultValue?: string;\n disabled?: boolean;\n listClassName?: string;\n onValueChange?: (value: string) => void;\n orientation?: \"horizontal\" | \"vertical\";\n selected?: string;\n setSelected?: (value: string) => void;\n shape?: TabsShape;\n size?: TabsSize;\n tabs?: readonly TabsItem[];\n value?: string;\n variant?: TabsVariant;\n children?: React.ReactNode;\n}\n\nexport interface TabsListProps\n extends React.ComponentPropsWithoutRef<\"div\">,\n VariantProps<typeof tabsListVariants> {\n activateOnFocus?: boolean;\n loop?: boolean;\n}\n\nexport interface TabsTriggerProps\n extends Omit<React.ComponentPropsWithoutRef<\"button\">, \"children\"> {\n badge?: React.ReactNode;\n icon?: React.ReactNode;\n value: string;\n children?: React.ReactNode;\n}\n\nexport interface TabsContentProps\n extends React.ComponentPropsWithoutRef<\"div\">,\n VariantProps<typeof tabsContentVariants> {\n forceMount?: true;\n keepMounted?: boolean;\n value: string;\n}\n\nfunction getTabsStyle(size: TabsSize, style: React.CSSProperties | undefined): TabsCssVars {\n const token = tabsSizes[size];\n\n return {\n \"--tabs-height\": `${token.height}px`,\n \"--tabs-padding\": `${token.padding}px`,\n \"--tabs-gap\": `${token.gap}px`,\n \"--tabs-trigger-gap\": `${token.triggerGap}px`,\n \"--tabs-trigger-padding-x\": `${token.paddingX}px`,\n \"--tabs-trigger-min-width\": `${token.minWidth}px`,\n \"--tabs-icon-size\": `${token.iconSize}px`,\n \"--tabs-font-size\": `${token.fontSize}px`,\n \"--tabs-radius\": `${tabsTokens.radius}px`,\n \"--tabs-trigger-radius\": `${tabsTokens.triggerRadius}px`,\n \"--tabs-pill-radius\": `${tabsTokens.pillRadius}px`,\n \"--tabs-line-thickness\": `${tabsTokens.lineThickness}px`,\n \"--tabs-focus-ring-width\": `${tabsTokens.focusRingWidth}px`,\n \"--tabs-focus-ring-offset\": `${tabsTokens.focusRingOffset}px`,\n \"--tabs-panel-gap\": `${tabsTokens.panelGap}px`,\n \"--tabs-badge-height\": `${tabsTokens.badgeHeight}px`,\n \"--tabs-badge-padding-x\": `${tabsTokens.badgePaddingX}px`,\n \"--tabs-badge-font-size\": `${tabsTokens.badgeFontSize}px`,\n \"--tabs-duration\": `${tabsTokens.motion.duration}ms`,\n \"--tabs-easing\": tabsTokens.motion.easing,\n ...style,\n };\n}\n\nfunction getFirstEnabledValue(tabs: readonly TabsItem[] | undefined) {\n return tabs?.find((tab) => !tab.disabled)?.value;\n}\n\nfunction Tabs({\n \"aria-label\": ariaLabel,\n activationMode = \"manual\",\n className,\n defaultValue,\n disabled = false,\n listClassName,\n onValueChange,\n orientation = \"horizontal\",\n selected,\n setSelected,\n shape = \"default\",\n size = \"md\",\n style,\n tabs,\n value,\n variant = \"default\",\n children,\n ...props\n}: TabsProps) {\n const rootValue = selected ?? value;\n const rootDefaultValue = defaultValue ?? getFirstEnabledValue(tabs);\n const context = React.useMemo<TabsContextValue>(\n () => ({ activationMode, disabled, shape, size, variant }),\n [activationMode, disabled, shape, size, variant],\n );\n\n function handleValueChange(nextValue: string) {\n onValueChange?.(nextValue);\n setSelected?.(nextValue);\n }\n\n return (\n <TabsContext.Provider value={context}>\n <BaseRoot\n data-slot=\"tabs\"\n data-disabled={disabled ? \"\" : undefined}\n value={rootValue}\n defaultValue={rootValue === undefined ? rootDefaultValue : undefined}\n onValueChange={handleValueChange}\n orientation={orientation}\n className={cn(\"w-full\", className)}\n style={getTabsStyle(size, style)}\n {...props}\n >\n {tabs ? (\n <TabsCollection\n tabs={tabs}\n ariaLabel={ariaLabel}\n className={listClassName}\n variant={variant}\n shape={shape}\n disabled={disabled}\n />\n ) : (\n children\n )}\n </BaseRoot>\n </TabsContext.Provider>\n );\n}\n\nfunction TabsCollection({\n ariaLabel,\n tabs,\n className,\n variant,\n shape,\n disabled,\n}: {\n ariaLabel?: string | undefined;\n className?: string | undefined;\n disabled: boolean;\n shape: TabsShape;\n tabs: readonly TabsItem[];\n variant: TabsVariant;\n}) {\n const hasTooltip = tabs.some((tab) => tab.tooltip);\n const list = (\n <TabsList\n aria-label={ariaLabel ?? \"Sections\"}\n className={className}\n variant={variant}\n shape={shape}\n >\n {tabs.map((tab) => (\n <TabsCollectionTrigger key={tab.value} disabled={disabled} tab={tab} />\n ))}\n </TabsList>\n );\n\n return (\n <>\n {hasTooltip ? <TooltipProvider delayDuration={150}>{list}</TooltipProvider> : list}\n {tabs.map((tab) =>\n tab.content === undefined ? null : (\n <TabsContent key={tab.value} value={tab.value}>\n {tab.content}\n </TabsContent>\n ),\n )}\n </>\n );\n}\n\nfunction TabsCollectionTrigger({ tab, disabled }: { disabled: boolean; tab: TabsItem }) {\n const trigger = (\n <TabsTrigger\n value={tab.value}\n disabled={disabled || tab.disabled}\n icon={tab.icon}\n badge={tab.badge}\n >\n {tab.title}\n </TabsTrigger>\n );\n\n if (!tab.tooltip) return trigger;\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex\">{trigger}</span>\n </TooltipTrigger>\n <TooltipContent>{tab.tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n\nfunction TabsList({\n activateOnFocus,\n className,\n loop = true,\n shape,\n variant,\n children,\n ...props\n}: TabsListProps) {\n const context = React.use(TabsContext);\n const resolvedVariant = variant ?? context.variant;\n const resolvedShape = shape ?? context.shape;\n const resolvedActivateOnFocus = activateOnFocus ?? context.activationMode === \"automatic\";\n const listContext = React.useMemo<TabsContextValue>(\n () => ({ ...context, shape: resolvedShape, variant: resolvedVariant }),\n [context, resolvedShape, resolvedVariant],\n );\n\n return (\n <TabsContext.Provider value={listContext}>\n <BaseList\n data-slot=\"tabs-list\"\n activateOnFocus={resolvedActivateOnFocus}\n loopFocus={loop}\n className={cn(\n tabsListVariants({ variant: resolvedVariant, shape: resolvedShape }),\n className,\n )}\n {...props}\n >\n <BaseIndicator\n aria-hidden=\"true\"\n data-slot=\"tabs-indicator\"\n className={tabsIndicatorVariants({ variant: resolvedVariant, shape: resolvedShape })}\n style={{\n left: \"var(--active-tab-left)\",\n top: resolvedVariant === \"line\" ? \"auto\" : \"var(--active-tab-top)\",\n bottom: resolvedVariant === \"line\" ? \"0\" : \"auto\",\n width: \"var(--active-tab-width)\",\n height:\n resolvedVariant === \"line\"\n ? \"var(--tabs-line-thickness)\"\n : \"var(--active-tab-height)\",\n }}\n />\n {children}\n </BaseList>\n </TabsContext.Provider>\n );\n}\n\nfunction TabsTrigger({ badge, children, className, disabled, icon, ...props }: TabsTriggerProps) {\n const context = React.use(TabsContext);\n const isDisabled = disabled ?? context.disabled;\n\n return (\n <BaseTrigger\n data-slot=\"tabs-trigger\"\n disabled={isDisabled}\n className={cn(tabsTriggerVariants({ variant: context.variant }), className)}\n {...props}\n >\n {icon}\n <span className=\"truncate\">{children}</span>\n {badge ? (\n <span className=\"inline-flex h-[var(--tabs-badge-height)] items-center rounded-[var(--tabs-pill-radius)] bg-muted px-[var(--tabs-badge-padding-x)] text-[length:var(--tabs-badge-font-size)] text-muted-foreground\">\n {badge}\n </span>\n ) : null}\n </BaseTrigger>\n );\n}\n\nfunction TabsContent({ className, forceMount, keepMounted, variant, ...props }: TabsContentProps) {\n return (\n <BaseContent\n data-slot=\"tabs-content\"\n keepMounted={keepMounted ?? forceMount}\n className={cn(tabsContentVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n tabsContentVariants,\n tabsIndicatorVariants,\n tabsListVariants,\n tabsTriggerVariants,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { type TextareaSize, textareaTokens } from \"../tokens/components/textarea\";\nimport { cn } from \"../utils/cn\";\nimport { formControlFocusClassNames, formControlInvalidClassNames } from \"./form-control\";\n\ntype NativeTextareaProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">;\n\ntype LabelledTextareaProps = {\n /** Visible label. Type-level nudge keeps labelled fields explicitly addressable. */\n label: string;\n id: string;\n};\n\ntype UnlabelledTextareaProps = {\n label?: undefined;\n id?: string;\n};\n\ntype TextareaOwnProps = {\n /** Visual size variant. Uses the same compact form scale as Input. */\n size?: TextareaSize;\n /** Helper text associated through aria-describedby. Replaced by string errors. */\n description?: string;\n /** Boolean marks invalid state; string also renders an inline field error. */\n error?: string | boolean;\n /** Value-first change callback for consumers that do not need the native event. */\n onValueChange?: (value: string) => void;\n /** Applied to the label/helper/error field wrapper. */\n fieldClassName?: string;\n};\n\nexport type TextareaProps = NativeTextareaProps &\n TextareaOwnProps &\n (LabelledTextareaProps | UnlabelledTextareaProps);\n\ntype TextareaCssVars = React.CSSProperties & {\n \"--textarea-min-height\"?: string;\n \"--textarea-padding-x\"?: string;\n \"--textarea-padding-y\"?: string;\n \"--textarea-font-size\"?: string;\n \"--textarea-radius\"?: string;\n \"--textarea-focus-ring-width\"?: string;\n};\n\ntype TextareaFieldCssVars = React.CSSProperties & {\n \"--textarea-field-gap\"?: string;\n \"--textarea-label-size\"?: string;\n};\n\nconst fieldMessageClassName = \"text-xs text-muted-foreground\";\nconst fieldErrorClassName = \"text-xs font-medium text-destructive\";\n\nfunction getTextareaStyle(\n size: TextareaSize,\n style: React.CSSProperties | undefined,\n): TextareaCssVars {\n const token = textareaTokens.sizes[size];\n\n return {\n \"--textarea-min-height\": `${token.minHeight}px`,\n \"--textarea-padding-x\": `${token.paddingX}px`,\n \"--textarea-padding-y\": `${token.paddingY}px`,\n \"--textarea-font-size\": `${token.fontSize}px`,\n \"--textarea-radius\": `${token.radius}px`,\n \"--textarea-focus-ring-width\": `${textareaTokens.focusRingWidth}px`,\n borderRadius: \"var(--textarea-radius)\",\n outline: \"none\",\n ...style,\n };\n}\n\nfunction getTextareaFieldStyle(): TextareaFieldCssVars {\n return {\n \"--textarea-field-gap\": `${textareaTokens.fieldGap}px`,\n \"--textarea-label-size\": `${textareaTokens.labelSize}px`,\n };\n}\n\nfunction joinDescriptionIds(...ids: Array<string | undefined>) {\n return ids.filter(Boolean).join(\" \") || undefined;\n}\n\nfunction isInvalid(\n error: string | boolean | undefined,\n ariaInvalid: NativeTextareaProps[\"aria-invalid\"],\n) {\n return (\n error === true || typeof error === \"string\" || ariaInvalid === true || ariaInvalid === \"true\"\n );\n}\n\nconst Textarea = ({\n className,\n style,\n size = \"md\",\n label,\n description,\n error,\n fieldClassName,\n id,\n onChange,\n onValueChange,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n ref,\n ...props\n}: TextareaProps & { ref?: React.Ref<HTMLTextAreaElement> | undefined }) => {\n const baseId = React.useId();\n const textareaId = id ?? (label || description || typeof error === \"string\" ? baseId : undefined);\n const resolvedInvalid = isInvalid(error, ariaInvalid);\n const descriptionId = description && textareaId ? `${textareaId}-description` : undefined;\n const errorId = typeof error === \"string\" && textareaId ? `${textareaId}-error` : undefined;\n const describedBy = joinDescriptionIds(ariaDescribedBy, descriptionId, errorId);\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onValueChange?.(event.currentTarget.value);\n onChange?.(event);\n },\n [onChange, onValueChange],\n );\n\n const control = (\n <textarea\n className={cn(\n \"flex min-h-[var(--textarea-min-height)] w-full resize-y rounded-[var(--textarea-radius)] border border-input bg-background\",\n \"px-[var(--textarea-padding-x)] py-[var(--textarea-padding-y)] text-[length:var(--textarea-font-size)] text-foreground shadow-xs\",\n \"transition-[background-color,border-color,box-shadow,color] duration-micro ease-out placeholder:text-muted-foreground\",\n formControlFocusClassNames.textarea,\n \"disabled:cursor-not-allowed disabled:opacity-50 read-only:cursor-default read-only:bg-muted/70\",\n formControlInvalidClassNames.textarea,\n className,\n )}\n ref={ref}\n id={textareaId}\n aria-invalid={resolvedInvalid || undefined}\n aria-describedby={describedBy}\n style={getTextareaStyle(size, style)}\n onChange={handleChange}\n {...props}\n />\n );\n\n if (!label && !description && typeof error !== \"string\" && !fieldClassName) {\n return control;\n }\n\n return (\n <div\n data-slot=\"textarea-field\"\n className={cn(\"grid gap-[var(--textarea-field-gap)]\", fieldClassName)}\n style={getTextareaFieldStyle()}\n >\n {label && (\n <label\n htmlFor={textareaId}\n className=\"text-[length:var(--textarea-label-size)] font-medium text-foreground\"\n >\n {label}\n </label>\n )}\n\n {control}\n\n {description && !error && (\n <p id={descriptionId} className={fieldMessageClassName}>\n {description}\n </p>\n )}\n\n {typeof error === \"string\" && (\n <p id={errorId} role=\"alert\" className={fieldErrorClassName}>\n {error}\n </p>\n )}\n </div>\n );\n};\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","\"use client\";\n\nimport { DeviceDesktop as Monitor, Moon, Sun } from \"@nebutra/icons\";\nimport { useTheme } from \"@nebutra/tokens\";\nimport * as React from \"react\";\n\nimport {\n type ThemeSwitcherSize,\n themeSwitcherSizes,\n themeSwitcherTokens,\n} from \"../tokens/components/theme-switcher\";\nimport { cn } from \"../utils/cn\";\n\nexport type ThemeSwitcherValue = \"system\" | \"light\" | \"dark\";\n\ntype ThemeSwitcherCssVar =\n | \"--theme-switcher-height\"\n | \"--theme-switcher-padding\"\n | \"--theme-switcher-gap\"\n | \"--theme-switcher-option-min-width\"\n | \"--theme-switcher-option-padding-x\"\n | \"--theme-switcher-icon-size\"\n | \"--theme-switcher-font-size\"\n | \"--theme-switcher-radius\"\n | \"--theme-switcher-option-radius\"\n | \"--theme-switcher-label-gap\"\n | \"--theme-switcher-focus-ring-width\"\n | \"--theme-switcher-focus-ring-offset\"\n | \"--theme-switcher-duration\"\n | \"--theme-switcher-easing\";\n\ntype ThemeSwitcherCssVars = React.CSSProperties & Record<ThemeSwitcherCssVar, string>;\n\ntype ThemeSwitcherOption = {\n icon: React.ComponentType<{ \"aria-hidden\"?: boolean; className?: string }>;\n label: ThemeSwitcherValue;\n value: ThemeSwitcherValue;\n};\n\nconst THEME_OPTIONS = [\n { value: \"system\", label: \"system\", icon: Monitor },\n { value: \"light\", label: \"light\", icon: Sun },\n { value: \"dark\", label: \"dark\", icon: Moon },\n] as const satisfies readonly ThemeSwitcherOption[];\n\nexport interface ThemeSwitcherProps\n extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, \"defaultValue\" | \"onChange\"> {\n /** Controlled compatibility value. Prefer the app-level ThemeProvider state. */\n value?: ThemeSwitcherValue;\n /** Initial fallback when rendered outside ThemeProvider. */\n defaultValue?: ThemeSwitcherValue;\n /** Compatibility callback for tests or migrations. ThemeProvider remains the source of truth. */\n onChange?: (theme: ThemeSwitcherValue) => void;\n /** Read-only preview state. Provider `forcedTheme` also disables the control. */\n disabled?: boolean;\n /** Compact size for dense chrome. */\n size?: ThemeSwitcherSize;\n /** Form control name when participating in a native form. */\n name?: string;\n}\n\nfunction getThemeSwitcherStyle(\n size: ThemeSwitcherSize,\n style: React.CSSProperties | undefined,\n): ThemeSwitcherCssVars {\n const token = themeSwitcherSizes[size];\n\n return {\n \"--theme-switcher-height\": `${token.controlHeight}px`,\n \"--theme-switcher-padding\": `${token.padding}px`,\n \"--theme-switcher-gap\": `${token.gap}px`,\n \"--theme-switcher-option-min-width\": `${token.optionMinWidth}px`,\n \"--theme-switcher-option-padding-x\": `${token.optionPaddingX}px`,\n \"--theme-switcher-icon-size\": `${token.iconSize}px`,\n \"--theme-switcher-font-size\": `${token.fontSize}px`,\n \"--theme-switcher-radius\": `${themeSwitcherTokens.radius}px`,\n \"--theme-switcher-option-radius\": `${themeSwitcherTokens.optionRadius}px`,\n \"--theme-switcher-label-gap\": `${themeSwitcherTokens.labelGap}px`,\n \"--theme-switcher-focus-ring-width\": `${themeSwitcherTokens.focusRingWidth}px`,\n \"--theme-switcher-focus-ring-offset\": `${themeSwitcherTokens.focusRingOffset}px`,\n \"--theme-switcher-duration\": `${themeSwitcherTokens.motion.duration}ms`,\n \"--theme-switcher-easing\": themeSwitcherTokens.motion.easing,\n ...style,\n };\n}\n\nfunction isThemeSwitcherValue(value: string | undefined): value is ThemeSwitcherValue {\n return value === \"system\" || value === \"light\" || value === \"dark\";\n}\n\nexport const ThemeSwitcher = ({\n value,\n defaultValue = \"system\",\n onChange,\n disabled = false,\n size = \"medium\",\n name,\n className,\n style,\n ref,\n ...props\n}: ThemeSwitcherProps & { ref?: React.Ref<HTMLFieldSetElement> | undefined }) => {\n const generatedName = React.useId();\n const radioName = name ?? generatedName;\n const { isProviderBound, theme, forcedTheme, setTheme } = useTheme();\n const [fallbackValue, setFallbackValue] = React.useState<ThemeSwitcherValue>(defaultValue);\n const providerTheme = isThemeSwitcherValue(theme) ? theme : \"system\";\n const selectedTheme = forcedTheme ?? value ?? (isProviderBound ? providerTheme : fallbackValue);\n const isReadOnly = disabled || forcedTheme !== undefined;\n\n function handleChange(nextTheme: ThemeSwitcherValue) {\n if (isReadOnly) return;\n setFallbackValue(nextTheme);\n setTheme(nextTheme);\n onChange?.(nextTheme);\n }\n\n return (\n <fieldset\n ref={ref}\n aria-disabled={isReadOnly}\n className={cn(\"inline-grid gap-[var(--theme-switcher-label-gap)]\", className)}\n disabled={isReadOnly}\n style={getThemeSwitcherStyle(size, style)}\n {...props}\n >\n <legend className=\"text-[length:var(--theme-switcher-font-size)] font-medium text-foreground\">\n Select a display theme:\n </legend>\n <div className=\"inline-flex h-[var(--theme-switcher-height)] items-center gap-[var(--theme-switcher-gap)] rounded-[var(--theme-switcher-radius)] border border-border bg-muted p-[var(--theme-switcher-padding)] text-muted-foreground\">\n {THEME_OPTIONS.map(({ value: optionValue, label, icon: Icon }) => {\n const checked = selectedTheme === optionValue;\n\n return (\n <label\n key={optionValue}\n className={cn(\n \"relative inline-flex h-full min-w-[var(--theme-switcher-option-min-width)] cursor-pointer items-center justify-center gap-[var(--theme-switcher-gap)] rounded-[var(--theme-switcher-option-radius)] px-[var(--theme-switcher-option-padding-x)] text-[length:var(--theme-switcher-font-size)] font-medium transition-[background-color,box-shadow,color,opacity] duration-[var(--theme-switcher-duration)] ease-[var(--theme-switcher-easing)]\",\n \"hover:text-foreground has-[:focus-visible]:ring-[length:var(--theme-switcher-focus-ring-width)] has-[:focus-visible]:ring-ring has-[:focus-visible]:ring-offset-[length:var(--theme-switcher-focus-ring-offset)] has-[:focus-visible]:ring-offset-background\",\n checked && \"bg-background text-foreground shadow-xs\",\n isReadOnly && \"cursor-not-allowed opacity-60\",\n )}\n >\n <input\n aria-label={label}\n checked={checked}\n className=\"sr-only\"\n disabled={isReadOnly}\n name={radioName}\n onChange={() => handleChange(optionValue)}\n type=\"radio\"\n value={optionValue}\n />\n <Icon aria-hidden className=\"size-[var(--theme-switcher-icon-size)] shrink-0\" />\n <span>{label}</span>\n </label>\n );\n })}\n </div>\n </fieldset>\n );\n};\n\nThemeSwitcher.displayName = \"ThemeSwitcher\";\n","\"use client\";\n\nimport { useReducedMotion as useSharedReducedMotion } from \"../shared/animation/motion\";\n\n/**\n * Returns true if the user has enabled prefers-reduced-motion.\n * Use this to disable animations, skip transitions, or simplify motion.\n *\n * Wraps framer-motion's `useReducedMotion` so callers don't need framer-motion\n * as a direct import just for accessibility checks.\n *\n * @example\n * const shouldReduce = useReducedMotion();\n * const transition = shouldReduce ? { duration: 0 } : brandSpring.default;\n */\nexport function useReducedMotion(): boolean {\n return useSharedReducedMotion() ?? false;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useReducedMotion } from \"../hooks/use-reduced-motion\";\nimport { motion } from \"../shared/animation/motion\";\nimport { type ThemeToggleSize, themeToggleTokens } from \"../tokens/components/theme-toggle\";\nimport { cn } from \"../utils/cn\";\n\ntype MotionButtonProps = React.ComponentProps<typeof motion.button>;\ntype MotionStyle = NonNullable<MotionButtonProps[\"style\"]>;\ntype MotionTransition = NonNullable<MotionButtonProps[\"transition\"]>;\n\nexport type ThemeToggleValue = \"light\" | \"dark\";\n\ntype ThemeToggleStyle = MotionStyle & {\n \"--theme-toggle-size\"?: string;\n \"--theme-toggle-icon-size\"?: string;\n \"--theme-toggle-padding\"?: string;\n \"--theme-toggle-radius\"?: string;\n \"--theme-toggle-duration\"?: string;\n \"--theme-toggle-easing\"?: string;\n};\n\ntype AudioWindow = Window & {\n webkitAudioContext?: typeof AudioContext;\n};\n\ntype NativeButtonProps = Omit<\n React.ComponentPropsWithoutRef<typeof motion.button>,\n \"children\" | \"defaultValue\" | \"onChange\" | \"value\"\n>;\n\nexport interface ThemeToggleProps extends NativeButtonProps {\n /** Controlled binary theme value. Use `ThemeSwitcher` when `system` is required. */\n value?: ThemeToggleValue;\n /** Initial binary theme value for uncontrolled usage. Reads the document class on mount when omitted. */\n defaultValue?: ThemeToggleValue;\n /** Fired with the next binary theme value. Integrate with `@nebutra/tokens` or `next-themes`. */\n onChange?: (value: ThemeToggleValue) => void;\n /** Compact icon-button size. */\n size?: ThemeToggleSize;\n /** Optional user-gesture sound. Disabled by default to avoid unexpected audio in SaaS surfaces. */\n sound?: boolean;\n /** Apply `.dark` to `document.documentElement` for standalone demos or non-provider apps. */\n applyToDocument?: boolean;\n /** Action labels. `dark` is announced while the control is in light mode, and vice versa. */\n labels?: Partial<Record<ThemeToggleValue, string>>;\n}\n\nconst DEFAULT_LABELS = {\n light: \"Switch to light theme\",\n dark: \"Switch to dark theme\",\n} as const satisfies Record<ThemeToggleValue, string>;\n\nlet themeToggleAudioContext: AudioContext | null = null;\nlet themeToggleAudioBuffer: AudioBuffer | null = null;\n\nfunction getThemeToggleStyle(\n size: ThemeToggleSize,\n style: MotionStyle | undefined,\n): ThemeToggleStyle {\n const token = themeToggleTokens.sizes[size];\n\n return {\n \"--theme-toggle-size\": `${token.control}px`,\n \"--theme-toggle-icon-size\": `${token.icon}px`,\n \"--theme-toggle-padding\": `${token.padding}px`,\n \"--theme-toggle-radius\": `${token.radius}px`,\n \"--theme-toggle-duration\": `${themeToggleTokens.motion.duration}ms`,\n \"--theme-toggle-easing\": themeToggleTokens.motion.easing,\n ...style,\n };\n}\n\nfunction readDocumentTheme(): ThemeToggleValue {\n if (typeof document === \"undefined\") return \"light\";\n return document.documentElement.classList.contains(\"dark\") ? \"dark\" : \"light\";\n}\n\nfunction applyDocumentTheme(theme: ThemeToggleValue) {\n if (typeof document === \"undefined\") return;\n document.documentElement.classList.toggle(\"dark\", theme === \"dark\");\n}\n\nfunction getAudioContext() {\n if (typeof window === \"undefined\") return null;\n\n const AudioContextConstructor = window.AudioContext ?? (window as AudioWindow).webkitAudioContext;\n\n if (!AudioContextConstructor) return null;\n\n themeToggleAudioContext ??= new AudioContextConstructor();\n\n if (themeToggleAudioContext.state === \"suspended\") {\n void themeToggleAudioContext.resume();\n }\n\n return themeToggleAudioContext;\n}\n\nfunction getAudioBuffer(audioContext: AudioContext) {\n if (themeToggleAudioBuffer?.sampleRate === audioContext.sampleRate) {\n return themeToggleAudioBuffer;\n }\n\n const sampleRate = audioContext.sampleRate;\n const length = Math.floor(sampleRate * 0.006);\n const buffer = audioContext.createBuffer(1, length, sampleRate);\n const channel = buffer.getChannelData(0);\n\n for (let index = 0; index < length; index += 1) {\n const progress = index / length;\n const sine = Math.sin(2 * Math.PI * 3400 * progress);\n const noise = Math.random() * 2 - 1;\n channel[index] = (sine * 0.6 + noise * 0.4) * (1 - progress) ** 3;\n }\n\n themeToggleAudioBuffer = buffer;\n return buffer;\n}\n\nfunction playToggleSound(lastPlayedAt: React.MutableRefObject<number>) {\n const now = performance.now();\n if (now - lastPlayedAt.current < 80) return;\n lastPlayedAt.current = now;\n\n try {\n const audioContext = getAudioContext();\n if (!audioContext) return;\n\n const source = audioContext.createBufferSource();\n const gain = audioContext.createGain();\n\n source.buffer = getAudioBuffer(audioContext);\n gain.gain.value = 0.08;\n source.connect(gain);\n gain.connect(audioContext.destination);\n source.start();\n } catch {\n // Audio is decorative. Browser/user policy failures must not block theme changes.\n }\n}\n\nexport const ThemeToggle = ({\n value,\n defaultValue,\n onChange,\n size = \"md\",\n sound = false,\n applyToDocument = false,\n labels,\n className,\n style,\n disabled,\n type = \"button\",\n onClick,\n ref,\n ...props\n}: ThemeToggleProps & { ref?: React.Ref<HTMLButtonElement> | undefined }) => {\n const rawId = React.useId();\n const maskId = `theme-toggle-mask-${rawId.replace(/:/g, \"\")}`;\n const shouldReduceMotion = useReducedMotion();\n const lastSoundAt = React.useRef(0);\n const [mounted, setMounted] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState<ThemeToggleValue>(\n defaultValue ?? \"light\",\n );\n\n React.useEffect(() => {\n if (value === undefined && defaultValue === undefined) {\n setInternalValue(readDocumentTheme());\n }\n setMounted(true);\n }, [defaultValue, value]);\n\n const currentValue = value ?? internalValue;\n const isDark = currentValue === \"dark\";\n const actionLabel = isDark\n ? (labels?.light ?? DEFAULT_LABELS.light)\n : (labels?.dark ?? DEFAULT_LABELS.dark);\n const transition: MotionTransition =\n shouldReduceMotion || !mounted\n ? themeToggleTokens.motion.instant\n : themeToggleTokens.motion.morph;\n const pressTransition: MotionTransition = shouldReduceMotion\n ? themeToggleTokens.motion.instant\n : themeToggleTokens.motion.press;\n const interactionMotionProps =\n !disabled && !shouldReduceMotion\n ? {\n whileHover: { scale: themeToggleTokens.motion.hoverScale },\n whileTap: { scale: themeToggleTokens.motion.tapScale },\n }\n : {};\n\n React.useEffect(() => {\n if (applyToDocument && mounted) {\n applyDocumentTheme(currentValue);\n }\n }, [applyToDocument, currentValue, mounted]);\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (event.defaultPrevented || disabled) return;\n\n const nextValue: ThemeToggleValue = isDark ? \"light\" : \"dark\";\n\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n\n if (applyToDocument) {\n applyDocumentTheme(nextValue);\n }\n\n onChange?.(nextValue);\n\n if (sound) {\n playToggleSound(lastSoundAt);\n }\n };\n\n return (\n <motion.button\n {...props}\n {...interactionMotionProps}\n aria-label={actionLabel}\n aria-pressed={isDark}\n className={cn(\n \"inline-flex size-[var(--theme-toggle-size)] shrink-0 items-center justify-center rounded-[var(--theme-toggle-radius)] p-[var(--theme-toggle-padding)] text-foreground\",\n \"transition-[background-color,color,box-shadow] duration-[var(--theme-toggle-duration)] ease-[var(--theme-toggle-easing)]\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"motion-reduce:transition-none\",\n className,\n )}\n disabled={disabled}\n onClick={handleClick}\n // Double-cast bridges framer-motion's bundled React types vs @types/react.\n ref={ref as any}\n style={getThemeToggleStyle(size, style)}\n transition={pressTransition}\n type={type}\n >\n <motion.svg\n animate={{ rotate: isDark ? 270 : 0 }}\n aria-hidden=\"true\"\n className=\"size-[var(--theme-toggle-icon-size)] overflow-visible\"\n fill=\"none\"\n initial={false}\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={themeToggleTokens.icon.strokeWidth}\n transition={transition}\n viewBox=\"0 0 24 24\"\n >\n <mask id={maskId}>\n <rect fill=\"white\" height=\"100%\" width=\"100%\" x=\"0\" y=\"0\" />\n <motion.circle\n animate={{ cx: isDark ? 17 : 33, cy: isDark ? 8 : 0 }}\n fill=\"black\"\n initial={false}\n r={themeToggleTokens.icon.maskRadius}\n transition={transition}\n />\n </mask>\n\n <motion.circle\n animate={{\n r: isDark ? themeToggleTokens.icon.moonRadius : themeToggleTokens.icon.sunRadius,\n }}\n cx={themeToggleTokens.icon.center}\n cy={themeToggleTokens.icon.center}\n fill=\"currentColor\"\n initial={false}\n mask={`url(#${maskId})`}\n stroke=\"none\"\n transition={transition}\n />\n\n <motion.g\n animate={{\n opacity: isDark ? 0 : 1,\n rotate: isDark ? -30 : 0,\n scale: isDark ? 0 : 1,\n }}\n initial={false}\n style={{ transformOrigin: \"12px 12px\" }}\n transition={transition}\n >\n <line x1=\"12\" x2=\"12\" y1=\"1\" y2=\"3\" />\n <line x1=\"12\" x2=\"12\" y1=\"21\" y2=\"23\" />\n <line x1=\"1\" x2=\"3\" y1=\"12\" y2=\"12\" />\n <line x1=\"21\" x2=\"23\" y1=\"12\" y2=\"12\" />\n <line x1=\"5.64\" x2=\"4.22\" y1=\"5.64\" y2=\"4.22\" />\n <line x1=\"18.36\" x2=\"19.78\" y1=\"5.64\" y2=\"4.22\" />\n <line x1=\"5.64\" x2=\"4.22\" y1=\"18.36\" y2=\"19.78\" />\n <line x1=\"18.36\" x2=\"19.78\" y1=\"18.36\" y2=\"19.78\" />\n </motion.g>\n </motion.svg>\n </motion.button>\n );\n};\n\nThemeToggle.displayName = \"ThemeToggle\";\n\nexport const AnimatedThemeToggler = ThemeToggle;\nexport type AnimatedThemeTogglerProps = ThemeToggleProps;\n","\"use client\";\n\n/**\n * Toast — Nebutra notification facade on top of Sonner.\n *\n * Sonner owns the proven rendering, swipe, pause, keyboard, and live-region\n * behavior. This module owns the design-system contract: naming, defaults,\n * tokenized styling, and the Geist-compatible `useToasts` API.\n */\n\nimport * as React from \"react\";\nimport type { ExternalToast, ToastClassnames, ToasterProps } from \"sonner\";\nimport { Toaster as SonnerToaster, toast as sonnerToast } from \"sonner\";\nimport { toastTokens } from \"../tokens/components/toast\";\n\nexport type { ExternalToast, ToasterProps };\nexport { sonnerToast as toast };\n\ntype ToastCssVar =\n | \"--toast-width\"\n | \"--toast-radius\"\n | \"--toast-shadow\"\n | \"--toast-action-radius\"\n | \"--toast-action-padding-x\"\n | \"--toast-action-padding-y\"\n | \"--toast-title-size\"\n | \"--toast-description-size\"\n | \"--toast-line-height\"\n | \"--toast-title-weight\"\n | \"--toast-motion-duration\"\n | \"--toast-motion-easing\";\n\nexport type ToastTone = \"message\" | \"success\" | \"warning\" | \"error\";\n\nexport interface ToastMessage {\n text: React.ReactNode;\n preserve?: boolean;\n action?: React.ReactNode;\n onAction?: () => void;\n onUndoAction?: () => void;\n description?: React.ReactNode;\n duration?: number;\n id?: string | number;\n}\n\nexport interface ToastOptions {\n preserve?: boolean;\n description?: React.ReactNode;\n duration?: number;\n id?: string | number;\n}\n\nexport interface UseToastsReturn {\n message: (message: ToastMessage) => string | number;\n success: (text: React.ReactNode, options?: ToastOptions) => string | number;\n warning: (text: React.ReactNode, options?: ToastOptions) => string | number;\n error: (text: React.ReactNode, options?: ToastOptions) => string | number;\n dismiss: (id?: string | number) => string | number;\n}\n\nconst DEFAULT_RICH_COLORS = true;\nlet toastSequence = 0;\n\nconst defaultClassNames = {\n toast:\n \"group w-[var(--toast-width)] rounded-[var(--toast-radius)] border border-border bg-card text-card-foreground shadow-[var(--toast-shadow)]\",\n title:\n \"text-[length:var(--toast-title-size)] font-[var(--toast-title-weight)] leading-[var(--toast-line-height)]\",\n description:\n \"text-[length:var(--toast-description-size)] leading-[var(--toast-line-height)] text-muted-foreground\",\n actionButton:\n \"rounded-[var(--toast-action-radius)] bg-primary px-[var(--toast-action-padding-x)] py-[var(--toast-action-padding-y)] text-xs font-medium text-primary-foreground\",\n cancelButton:\n \"rounded-[var(--toast-action-radius)] bg-muted px-[var(--toast-action-padding-x)] py-[var(--toast-action-padding-y)] text-xs font-medium text-foreground\",\n closeButton:\n \"border-border bg-card text-muted-foreground transition-colors duration-[var(--toast-motion-duration)] ease-[var(--toast-motion-easing)] hover:bg-muted hover:text-foreground\",\n success: \"border-success bg-success text-success-foreground\",\n error: \"border-destructive bg-destructive text-destructive-foreground\",\n warning: \"border-warning bg-warning text-warning-foreground\",\n info: \"border-info bg-info text-info-foreground\",\n default: \"border-border bg-card text-card-foreground\",\n} satisfies ToastClassnames;\n\nfunction createToastVars(style?: React.CSSProperties) {\n return {\n \"--toast-width\": `${toastTokens.width}px`,\n \"--toast-radius\": `${toastTokens.radius}px`,\n \"--toast-shadow\": toastTokens.shadow,\n \"--toast-action-radius\": `${toastTokens.action.radius}px`,\n \"--toast-action-padding-x\": `${toastTokens.action.paddingX}px`,\n \"--toast-action-padding-y\": `${toastTokens.action.paddingY}px`,\n \"--toast-title-size\": `${toastTokens.typography.titleSize}px`,\n \"--toast-description-size\": `${toastTokens.typography.descriptionSize}px`,\n \"--toast-line-height\": `${toastTokens.typography.lineHeight}px`,\n \"--toast-title-weight\": toastTokens.typography.titleWeight,\n \"--toast-motion-duration\": `${toastTokens.motion.duration}ms`,\n \"--toast-motion-easing\": toastTokens.motion.easing,\n ...style,\n } satisfies React.CSSProperties & Record<ToastCssVar, string | number>;\n}\n\nfunction resolveDuration({\n preserve,\n duration,\n undo,\n}: {\n preserve: boolean | undefined;\n duration: number | undefined;\n undo?: boolean | undefined;\n}) {\n if (preserve) {\n return Number.POSITIVE_INFINITY;\n }\n\n return duration ?? (undo ? toastTokens.duration.undo : toastTokens.duration.default);\n}\n\nfunction toExternalToast({ preserve, description, duration, id }: ToastOptions): ExternalToast {\n const toastOptions: ExternalToast = {\n duration: resolveDuration({ preserve, duration }),\n };\n\n if (id !== undefined) {\n toastOptions.id = id;\n }\n\n if (description !== undefined) {\n toastOptions.description = description;\n }\n\n return toastOptions;\n}\n\nfunction mergeToastOptions(toastOptions: ToasterProps[\"toastOptions\"]) {\n return {\n duration: toastTokens.duration.default,\n ...toastOptions,\n classNames: {\n ...defaultClassNames,\n ...toastOptions?.classNames,\n },\n } satisfies ToasterProps[\"toastOptions\"];\n}\n\nfunction createToastId() {\n toastSequence += 1;\n return `nebutra-toast-${toastSequence}`;\n}\n\nexport function Toaster({\n position = \"bottom-right\",\n richColors = DEFAULT_RICH_COLORS,\n closeButton = true,\n theme = \"system\",\n visibleToasts = toastTokens.stack.visibleToasts,\n gap = toastTokens.stack.gap,\n offset = toastTokens.stack.offset,\n mobileOffset = toastTokens.stack.mobileOffset,\n containerAriaLabel = \"Notifications\",\n toastOptions,\n style,\n ...props\n}: ToasterProps = {}) {\n return (\n <SonnerToaster\n position={position}\n richColors={richColors}\n closeButton={closeButton}\n theme={theme}\n visibleToasts={visibleToasts}\n gap={gap}\n offset={offset}\n mobileOffset={mobileOffset}\n containerAriaLabel={containerAriaLabel}\n toastOptions={mergeToastOptions(toastOptions)}\n style={createToastVars(style)}\n {...props}\n />\n );\n}\n\nexport function useToasts(): UseToastsReturn {\n const message = React.useCallback(\n ({\n text,\n preserve,\n action,\n onAction,\n onUndoAction,\n description,\n duration,\n id,\n }: ToastMessage) => {\n const controlledId = onUndoAction || action ? (id ?? createToastId()) : id;\n const toastOptions: ExternalToast = {\n duration: resolveDuration({\n preserve,\n duration,\n undo: Boolean(onUndoAction),\n }),\n };\n\n if (controlledId !== undefined) {\n toastOptions.id = controlledId;\n }\n\n if (description !== undefined) {\n toastOptions.description = description;\n }\n\n if (onUndoAction) {\n toastOptions.action = {\n label: \"Undo\",\n onClick: () => {\n onUndoAction();\n sonnerToast.dismiss(controlledId);\n },\n };\n } else if (action) {\n toastOptions.action = {\n label: action,\n onClick: () => {\n onAction?.();\n sonnerToast.dismiss(controlledId);\n },\n };\n }\n\n return sonnerToast.message(text, toastOptions);\n },\n [],\n );\n\n const success = React.useCallback((text: React.ReactNode, options: ToastOptions = {}) => {\n return sonnerToast.success(text, toExternalToast(options));\n }, []);\n\n const warning = React.useCallback((text: React.ReactNode, options: ToastOptions = {}) => {\n return sonnerToast.warning(text, toExternalToast(options));\n }, []);\n\n const error = React.useCallback((text: React.ReactNode, options: ToastOptions = {}) => {\n return sonnerToast.error(text, toExternalToast(options));\n }, []);\n\n const dismiss = React.useCallback((id?: string | number) => sonnerToast.dismiss(id), []);\n\n return {\n dismiss,\n error,\n message,\n success,\n warning,\n };\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n type ToggleColor,\n type ToggleSize,\n toggleColorAliases,\n toggleTokens,\n} from \"../tokens/components/toggle\";\nimport { cn } from \"../utils\";\n\nexport type ToggleDirection = \"label-first\" | \"switch-first\" | \"switch-last\";\nexport type ToggleLabelCasing = \"title\" | \"normal\";\nexport type ToggleChangeHandler = (\n checked: boolean,\n event: React.ChangeEvent<HTMLInputElement>,\n) => void;\n\ntype ToggleCssVar =\n | \"--toggle-track-width\"\n | \"--toggle-track-height\"\n | \"--toggle-thumb-size\"\n | \"--toggle-thumb-translate\"\n | \"--toggle-icon-size\"\n | \"--toggle-label-font-size\"\n | \"--toggle-padding-y\"\n | \"--toggle-gap\"\n | \"--toggle-radius\"\n | \"--toggle-thumb-shadow\"\n | \"--toggle-duration\"\n | \"--toggle-easing\"\n | \"--toggle-track-on\"\n | \"--toggle-track-off\"\n | \"--toggle-track-border\"\n | \"--toggle-thumb\"\n | \"--toggle-icon-on\"\n | \"--toggle-icon-off\";\n\ntype ToggleCssVars = React.CSSProperties & Record<ToggleCssVar, string>;\n\nexport interface ToggleProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"children\" | \"color\" | \"onChange\" | \"size\" | \"type\"\n > {\n children?: React.ReactNode;\n className?: string;\n color?: ToggleColor;\n direction?: ToggleDirection;\n icon?: {\n checked?: React.ReactNode;\n unchecked?: React.ReactNode;\n };\n labelCasing?: ToggleLabelCasing;\n onChange?: ToggleChangeHandler;\n onCheckedChange?: ToggleChangeHandler;\n size?: ToggleSize;\n}\n\nfunction getColorToken(color: ToggleColor) {\n const resolvedColor =\n color in toggleColorAliases\n ? toggleColorAliases[color as keyof typeof toggleColorAliases]\n : color;\n\n return toggleTokens.color[resolvedColor as keyof typeof toggleTokens.color];\n}\n\nfunction getToggleStyle(\n size: ToggleSize,\n color: ToggleColor,\n style: React.CSSProperties | undefined,\n) {\n const sizeTokens = toggleTokens.size[size];\n const colorTokens = getColorToken(color);\n\n return {\n \"--toggle-track-width\": `${sizeTokens.trackWidth}px`,\n \"--toggle-track-height\": `${sizeTokens.trackHeight}px`,\n \"--toggle-thumb-size\": `${sizeTokens.thumbSize}px`,\n \"--toggle-thumb-translate\": `${sizeTokens.thumbTranslate}px`,\n \"--toggle-icon-size\": `${sizeTokens.iconSize}px`,\n \"--toggle-label-font-size\": `${sizeTokens.labelFontSize}px`,\n \"--toggle-padding-y\": `${sizeTokens.paddingY}px`,\n \"--toggle-gap\": `${sizeTokens.gap}px`,\n \"--toggle-radius\": `${toggleTokens.radius}px`,\n \"--toggle-thumb-shadow\": toggleTokens.thumbShadow,\n \"--toggle-duration\": `${toggleTokens.motion.duration}ms`,\n \"--toggle-easing\": toggleTokens.motion.easing,\n \"--toggle-track-on\": colorTokens.trackOn,\n \"--toggle-track-off\": colorTokens.trackOff,\n \"--toggle-track-border\": colorTokens.trackBorder,\n \"--toggle-thumb\": colorTokens.thumb,\n \"--toggle-icon-on\": colorTokens.iconOn,\n \"--toggle-icon-off\": colorTokens.iconOff,\n ...style,\n } satisfies ToggleCssVars;\n}\n\nconst Toggle = ({\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n checked: checkedProp,\n children,\n className,\n color = \"default\",\n defaultChecked = false,\n direction = \"label-first\",\n disabled,\n icon,\n id,\n labelCasing = \"title\",\n onChange,\n onCheckedChange,\n size = \"small\",\n style,\n ref,\n ...inputProps\n}: ToggleProps & { ref?: React.Ref<HTMLInputElement> | undefined }) => {\n const isControlled = checkedProp !== undefined;\n const [internalChecked, setInternalChecked] = React.useState(defaultChecked);\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const checked = isControlled ? checkedProp : internalChecked;\n const hasVisibleLabel = children != null;\n const visualDirection = direction === \"switch-last\" ? \"label-first\" : direction;\n\n React.useEffect(() => {\n if (\n process.env.NODE_ENV !== \"production\" &&\n !hasVisibleLabel &&\n ariaLabel === undefined &&\n ariaLabelledBy === undefined\n ) {\n globalThis.console.warn(\n \"Toggle requires an accessible name. Pass children, aria-label, or aria-labelledby.\",\n );\n }\n }, [ariaLabel, ariaLabelledBy, hasVisibleLabel]);\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n const nextChecked = event.currentTarget.checked;\n\n if (!isControlled) {\n setInternalChecked(nextChecked);\n }\n\n onCheckedChange?.(nextChecked, event);\n onChange?.(nextChecked, event);\n }\n\n const accessibilityProps = {\n ...(hasVisibleLabel || ariaLabel === undefined ? {} : { \"aria-label\": ariaLabel }),\n ...(ariaLabelledBy === undefined ? {} : { \"aria-labelledby\": ariaLabelledBy }),\n };\n const checkedProps = isControlled ? { checked } : { defaultChecked };\n\n const control = (\n <label className=\"relative inline-flex shrink-0\" htmlFor={inputId}>\n <input\n ref={ref}\n className=\"peer sr-only\"\n disabled={disabled}\n id={inputId}\n onChange={handleChange}\n type=\"checkbox\"\n {...accessibilityProps}\n {...checkedProps}\n {...inputProps}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n \"relative inline-flex h-[var(--toggle-track-height)] w-[var(--toggle-track-width)] items-center rounded-[var(--toggle-radius)] border bg-[var(--toggle-track-off)] p-px\",\n \"border-[var(--toggle-track-border)] transition-[background-color,border-color] duration-[var(--toggle-duration)] ease-[var(--toggle-easing)]\",\n \"peer-checked:bg-[var(--toggle-track-on)]\",\n \"peer-checked:[&>span]:translate-x-[var(--toggle-thumb-translate)] peer-checked:[&>span]:text-[var(--toggle-icon-on)]\",\n \"peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-background\",\n \"peer-disabled:cursor-not-allowed peer-disabled:opacity-60\",\n \"motion-reduce:transition-none\",\n )}\n >\n <span\n className={cn(\n \"flex size-[var(--toggle-thumb-size)] translate-x-0 items-center justify-center rounded-[var(--toggle-radius)] bg-[var(--toggle-thumb)] shadow-[var(--toggle-thumb-shadow)]\",\n \"text-[var(--toggle-icon-off)] transition-[color,transform] duration-[var(--toggle-duration)] ease-[var(--toggle-easing)]\",\n \"motion-reduce:transition-none [&_svg]:size-[var(--toggle-icon-size)]\",\n )}\n >\n {icon != null && (\n <span className=\"inline-flex\">{checked ? icon.checked : icon.unchecked}</span>\n )}\n </span>\n </span>\n </label>\n );\n\n const label = hasVisibleLabel ? (\n <label\n data-label-casing={labelCasing}\n htmlFor={inputId}\n className={cn(\n \"select-none font-medium text-[length:var(--toggle-label-font-size)] text-muted-foreground leading-none\",\n )}\n >\n {children}\n </label>\n ) : null;\n\n return (\n <span\n className={cn(\n \"inline-flex items-center gap-[var(--toggle-gap)] py-[var(--toggle-padding-y)]\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\",\n className,\n )}\n style={getToggleStyle(size, color, style)}\n >\n {visualDirection === \"label-first\" && label}\n {control}\n {visualDirection === \"switch-first\" && label}\n </span>\n );\n};\n\nToggle.displayName = \"Toggle\";\n\nexport { Toggle };\n","import { cva } from \"class-variance-authority\";\n\nexport const toggleGroupVariants = cva(\n \"inline-flex items-center justify-center gap-1 rounded-[var(--radius-lg)] bg-muted p-1 text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"bg-transparent border\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport const toggleGroupItemVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--radius-md)] px-3 py-1.5 text-sm font-medium ring-offset-background transition-[background-color,box-shadow,color,opacity] duration-flow ease-out motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-background data-[state=on]:text-foreground data-[state=on]:shadow-sm\",\n {\n variants: {\n variant: {\n default: \"\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-3\",\n sm: \"h-8 px-2\",\n lg: \"h-10 px-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n","\"use client\";\n\nimport type { VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { toggleGroupItemVariants, toggleGroupVariants } from \"./toggle-group-variants\";\n\ntype ToggleGroupType = \"single\" | \"multiple\";\ntype ToggleGroupValue = string | string[];\ntype ToggleGroupItemVariant = VariantProps<typeof toggleGroupItemVariants>[\"variant\"];\ntype ToggleGroupItemSize = VariantProps<typeof toggleGroupItemVariants>[\"size\"];\n\nconst ToggleGroupTypeContext = React.createContext<ToggleGroupType | null>(null);\nconst ToggleGroupValueContext = React.createContext<ToggleGroupValue | null>(null);\nconst ToggleGroupChangeContext = React.createContext<((value: ToggleGroupValue) => void) | null>(\n null,\n);\nconst ToggleGroupDisabledContext = React.createContext<boolean | undefined>(undefined);\nconst ToggleGroupVariantContext = React.createContext<ToggleGroupItemVariant>(undefined);\nconst ToggleGroupSizeContext = React.createContext<ToggleGroupItemSize>(undefined);\n\nfunction useToggleGroup() {\n const type = React.use(ToggleGroupTypeContext);\n const value = React.use(ToggleGroupValueContext);\n const onValueChange = React.use(ToggleGroupChangeContext);\n const disabled = React.use(ToggleGroupDisabledContext);\n const variant = React.use(ToggleGroupVariantContext);\n const size = React.use(ToggleGroupSizeContext);\n\n if (type === null || value === null || onValueChange === null) {\n throw new Error(\"ToggleGroup internal components must be used within a ToggleGroup\");\n }\n\n return { disabled, onValueChange, size, type, value, variant };\n}\n\nexport interface ToggleGroupProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof toggleGroupVariants>,\n VariantProps<typeof toggleGroupItemVariants> {\n type?: ToggleGroupType;\n value?: ToggleGroupValue;\n defaultValue?: ToggleGroupValue;\n onValueChange?: (value: ToggleGroupValue) => void;\n disabled?: boolean;\n}\n\nconst ToggleGroup = ({\n className,\n variant,\n size,\n type = \"single\",\n value: controlledValue,\n defaultValue,\n onValueChange,\n disabled,\n children,\n ref,\n ...props\n}: ToggleGroupProps & { ref?: React.Ref<HTMLDivElement> | undefined }) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<ToggleGroupValue>(\n defaultValue !== undefined ? defaultValue : type === \"single\" ? \"\" : [],\n );\n\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n function changeToggleGroupValue(newValue: ToggleGroupValue) {\n if (!isControlled) {\n setUncontrolledValue(newValue);\n }\n onValueChange?.(newValue);\n }\n\n return (\n <div ref={ref} className={cn(toggleGroupVariants({ variant }), className)} {...props}>\n <ToggleGroupTypeContext.Provider value={type}>\n <ToggleGroupValueContext.Provider value={value}>\n <ToggleGroupChangeContext.Provider value={changeToggleGroupValue}>\n <ToggleGroupDisabledContext.Provider value={disabled}>\n <ToggleGroupVariantContext.Provider value={variant}>\n <ToggleGroupSizeContext.Provider value={size}>\n {children}\n </ToggleGroupSizeContext.Provider>\n </ToggleGroupVariantContext.Provider>\n </ToggleGroupDisabledContext.Provider>\n </ToggleGroupChangeContext.Provider>\n </ToggleGroupValueContext.Provider>\n </ToggleGroupTypeContext.Provider>\n </div>\n );\n};\nToggleGroup.displayName = \"ToggleGroup\";\n\nexport interface ToggleGroupItemProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"value\" | \"type\">,\n VariantProps<typeof toggleGroupItemVariants> {\n value: string;\n}\n\nconst ToggleGroupItem = ({\n className,\n variant,\n size,\n value,\n children,\n ref,\n ...props\n}: ToggleGroupItemProps & { ref?: React.Ref<HTMLButtonElement> | undefined }) => {\n const context = useToggleGroup();\n const isDisabled = context.disabled || props.disabled;\n const isSelected =\n context.type === \"single\"\n ? context.value === value\n : Array.isArray(context.value) && context.value.includes(value);\n\n function toggleItemSelection(event: React.MouseEvent<HTMLButtonElement>) {\n if (isDisabled) return;\n\n if (context.type === \"single\") {\n context.onValueChange(isSelected ? \"\" : value);\n } else {\n const currentArray = Array.isArray(context.value) ? context.value : [];\n context.onValueChange(\n isSelected\n ? currentArray.filter((currentValue) => currentValue !== value)\n : [...currentArray, value],\n );\n }\n\n props.onClick?.(event);\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={isDisabled}\n data-state={isSelected ? \"on\" : \"off\"}\n aria-pressed={isSelected}\n className={cn(\n toggleGroupItemVariants({\n variant: variant ?? context.variant,\n size: size ?? context.size,\n }),\n className,\n \"focus-visible:z-10\",\n )}\n onClick={toggleItemSelection}\n {...props}\n >\n {children}\n </button>\n );\n};\nToggleGroupItem.displayName = \"ToggleGroupItem\";\n\nexport { ToggleGroup, ToggleGroupItem };\n","\"use client\";\n\nimport { ChevronRight, File, FolderClosed as Folder, FolderOpen } from \"@nebutra/icons\";\nimport {\n type ComponentProps,\n createContext,\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n use,\n useCallback,\n useId,\n useState,\n} from \"react\";\nimport { AnimatePresence, motion, useReducedMotion } from \"../shared/animation/motion\";\nimport { cn } from \"../utils/cn\";\n\ntype TreeContextType = {\n expandedIds: Set<string>;\n selectedIds: string[];\n toggleExpanded: (nodeId: string) => void;\n handleSelection: (nodeId: string, ctrlKey: boolean) => void;\n showLines?: boolean;\n showIcons?: boolean;\n selectable?: boolean;\n multiSelect?: boolean;\n indent?: number;\n animateExpand?: boolean;\n reduceMotion?: boolean;\n};\n\nconst TreeContext = createContext<TreeContextType | undefined>(undefined);\n\nconst useTree = () => {\n const context = use(TreeContext);\n if (!context) {\n throw new Error(\"Tree components must be used within a TreeProvider\");\n }\n return context;\n};\n\ntype TreeNodeContextType = {\n nodeId: string;\n level: number;\n isLast: boolean;\n parentPath: boolean[];\n};\n\nconst TreeNodeContext = createContext<TreeNodeContextType | undefined>(undefined);\n\nconst useTreeNode = () => {\n const context = use(TreeNodeContext);\n if (!context) {\n throw new Error(\"TreeNode components must be used within a TreeNode\");\n }\n return context;\n};\n\nexport type TreeProviderProps = {\n children: ReactNode;\n defaultExpandedIds?: string[];\n showLines?: boolean;\n showIcons?: boolean;\n selectable?: boolean;\n multiSelect?: boolean;\n selectedIds?: string[];\n onSelectionChange?: (selectedIds: string[]) => void;\n indent?: number;\n animateExpand?: boolean;\n className?: string;\n};\n\nexport const TreeProvider = ({\n children,\n defaultExpandedIds = [],\n showLines = true,\n showIcons = true,\n selectable = true,\n multiSelect = false,\n selectedIds,\n onSelectionChange,\n indent = 20,\n animateExpand = true,\n className,\n}: TreeProviderProps) => {\n const shouldReduceMotion = useReducedMotion() ?? false;\n const [expandedIds, setExpandedIds] = useState<Set<string>>(new Set(defaultExpandedIds));\n const [internalSelectedIds, setInternalSelectedIds] = useState<string[]>(selectedIds ?? []);\n\n const isControlled = selectedIds !== undefined && onSelectionChange !== undefined;\n const currentSelectedIds = isControlled ? selectedIds : internalSelectedIds;\n\n const toggleExpanded = useCallback((nodeId: string) => {\n setExpandedIds((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(nodeId)) {\n newSet.delete(nodeId);\n } else {\n newSet.add(nodeId);\n }\n return newSet;\n });\n }, []);\n\n const handleSelection = useCallback(\n (nodeId: string, ctrlKey = false) => {\n if (!selectable) {\n return;\n }\n\n let newSelection: string[];\n\n if (multiSelect && ctrlKey) {\n newSelection = currentSelectedIds.includes(nodeId)\n ? currentSelectedIds.filter((id) => id !== nodeId)\n : [...currentSelectedIds, nodeId];\n } else {\n newSelection = currentSelectedIds.includes(nodeId) ? [] : [nodeId];\n }\n\n if (isControlled) {\n onSelectionChange?.(newSelection);\n } else {\n setInternalSelectedIds(newSelection);\n }\n },\n [selectable, multiSelect, currentSelectedIds, isControlled, onSelectionChange],\n );\n\n return (\n <TreeContext.Provider\n value={{\n expandedIds,\n selectedIds: currentSelectedIds,\n toggleExpanded,\n handleSelection,\n showLines,\n showIcons,\n selectable,\n multiSelect,\n indent,\n animateExpand,\n reduceMotion: shouldReduceMotion,\n }}\n >\n <motion.div\n animate={shouldReduceMotion ? { opacity: 1 } : { opacity: 1, y: 0 }}\n className={cn(\"w-full\", className)}\n initial={shouldReduceMotion ? { opacity: 0 } : { opacity: 0, y: 10 }}\n transition={shouldReduceMotion ? { duration: 0 } : { duration: 0.3, ease: \"easeOut\" }}\n >\n {children}\n </motion.div>\n </TreeContext.Provider>\n );\n};\n\nexport type TreeViewProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TreeView = ({ className, children, ...props }: TreeViewProps) => (\n <div className={cn(\"p-2\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type TreeNodeProps = HTMLAttributes<HTMLDivElement> & {\n nodeId?: string;\n level?: number;\n isLast?: boolean;\n parentPath?: boolean[];\n children?: ReactNode;\n};\n\nexport const TreeNode = ({\n nodeId: providedNodeId,\n level = 0,\n isLast = false,\n parentPath = [],\n children,\n className,\n onClick: _onClick,\n ...props\n}: TreeNodeProps) => {\n const generatedId = useId();\n const nodeId = providedNodeId ?? generatedId;\n\n // Build the parent path - mark positions where the parent was the last child\n const currentPath = level === 0 ? [] : [...parentPath];\n if (level > 0 && parentPath.length < level - 1) {\n // Fill in missing levels with false (not last)\n while (currentPath.length < level - 1) {\n currentPath.push(false);\n }\n }\n if (level > 0) {\n currentPath[level - 1] = isLast;\n }\n\n return (\n <TreeNodeContext.Provider\n value={{\n nodeId,\n level,\n isLast,\n parentPath: currentPath,\n }}\n >\n <div className={cn(\"select-none\", className)} {...props}>\n {children}\n </div>\n </TreeNodeContext.Provider>\n );\n};\n\nexport type TreeNodeTriggerProps = ComponentProps<typeof motion.div>;\n\nexport const TreeNodeTrigger = ({\n children,\n className,\n onClick,\n ...props\n}: TreeNodeTriggerProps) => {\n const { selectedIds, toggleExpanded, handleSelection, indent, reduceMotion } = useTree();\n const { nodeId, level } = useTreeNode();\n const isSelected = selectedIds.includes(nodeId);\n\n return (\n <motion.div\n className={cn(\n \"group relative mx-1 flex cursor-pointer items-center rounded-[var(--radius-md)] px-3 py-2 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-200\",\n \"hover:bg-accent/50\",\n isSelected && \"bg-accent/80\",\n className,\n )}\n onClick={(e: MouseEvent<HTMLDivElement>) => {\n toggleExpanded(nodeId);\n handleSelection(nodeId, e.ctrlKey || e.metaKey);\n onClick?.(e);\n }}\n style={{ paddingLeft: level * (indent ?? 0) + 8 }}\n {...(!reduceMotion ? { whileTap: { scale: 0.98, transition: { duration: 0.1 } } } : {})}\n {...props}\n >\n <TreeLines />\n {children as ReactNode}\n </motion.div>\n );\n};\n\nexport const TreeLines = () => {\n const { showLines, indent } = useTree();\n const { level, isLast, parentPath } = useTreeNode();\n\n if (!showLines || level === 0) {\n return null;\n }\n\n return (\n <div className=\"pointer-events-none absolute top-0 bottom-0 left-0\">\n {/* Render vertical lines for all parent levels */}\n {Array.from({ length: level }, (_, index) => {\n const shouldHideLine = parentPath[index] === true;\n if (shouldHideLine && index === level - 1) {\n return null;\n }\n\n return (\n <div\n className=\"absolute top-0 bottom-0 border-border/40 border-l\"\n key={index.toString()}\n style={{\n left: index * (indent ?? 0) + 12,\n display: shouldHideLine ? \"none\" : \"block\",\n }}\n />\n );\n })}\n\n {/* Horizontal connector line */}\n <div\n className=\"absolute top-1/2 border-border/40 border-t\"\n style={{\n left: (level - 1) * (indent ?? 0) + 12,\n width: (indent ?? 0) - 4,\n transform: \"translateY(-1px)\",\n }}\n />\n\n {/* Vertical line to midpoint for last items */}\n {isLast && (\n <div\n className=\"absolute top-0 border-border/40 border-l\"\n style={{\n left: (level - 1) * (indent ?? 0) + 12,\n height: \"50%\",\n }}\n />\n )}\n </div>\n );\n};\n\nexport type TreeNodeContentProps = ComponentProps<typeof motion.div> & {\n hasChildren?: boolean;\n};\n\nexport const TreeNodeContent = ({\n children,\n hasChildren = false,\n className,\n ...props\n}: TreeNodeContentProps) => {\n const { animateExpand, expandedIds, reduceMotion } = useTree();\n const { nodeId } = useTreeNode();\n const isExpanded = expandedIds.has(nodeId);\n\n return (\n <AnimatePresence initial={!reduceMotion}>\n {hasChildren && isExpanded && (\n <motion.div\n animate={{ height: \"auto\", opacity: 1 }}\n className=\"overflow-hidden\"\n exit={{ height: 0, opacity: 0 }}\n initial={{ height: 0, opacity: 0 }}\n transition={{\n duration: animateExpand && !reduceMotion ? 0.3 : 0,\n ease: \"easeInOut\",\n }}\n >\n <motion.div\n animate={reduceMotion ? { opacity: 1 } : { y: 0 }}\n className={className}\n exit={reduceMotion ? { opacity: 0 } : { y: -10 }}\n initial={reduceMotion ? { opacity: 0 } : { y: -10 }}\n transition={{\n duration: animateExpand && !reduceMotion ? 0.2 : 0,\n delay: animateExpand && !reduceMotion ? 0.1 : 0,\n }}\n {...props}\n >\n {children}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport type TreeExpanderProps = ComponentProps<typeof motion.div> & {\n hasChildren?: boolean;\n};\n\nexport const TreeExpander = ({\n hasChildren = false,\n className,\n onClick,\n ...props\n}: TreeExpanderProps) => {\n const { expandedIds, toggleExpanded, reduceMotion } = useTree();\n const { nodeId } = useTreeNode();\n const isExpanded = expandedIds.has(nodeId);\n\n if (!hasChildren) {\n return <div className=\"mr-1 h-4 w-4\" />;\n }\n\n return (\n <motion.div\n animate={{ rotate: isExpanded ? 90 : 0 }}\n className={cn(\"mr-1 flex h-4 w-4 cursor-pointer items-center justify-center\", className)}\n onClick={(e: MouseEvent<HTMLDivElement>) => {\n e.stopPropagation();\n toggleExpanded(nodeId);\n onClick?.(e);\n }}\n transition={reduceMotion ? { duration: 0 } : { duration: 0.2, ease: \"easeInOut\" }}\n {...props}\n >\n <ChevronRight className=\"h-3 w-3 text-muted-foreground\" />\n </motion.div>\n );\n};\n\nexport type TreeIconProps = ComponentProps<typeof motion.div> & {\n icon?: ReactNode;\n hasChildren?: boolean;\n};\n\nexport const TreeIcon = ({ icon, hasChildren = false, className, ...props }: TreeIconProps) => {\n const { showIcons, expandedIds, reduceMotion } = useTree();\n const { nodeId } = useTreeNode();\n const isExpanded = expandedIds.has(nodeId);\n\n if (!showIcons) {\n return null;\n }\n\n const getDefaultIcon = () =>\n hasChildren ? (\n isExpanded ? (\n <FolderOpen className=\"h-4 w-4\" />\n ) : (\n <Folder className=\"h-4 w-4\" />\n )\n ) : (\n <File className=\"h-4 w-4\" />\n );\n\n return (\n <motion.div\n className={cn(\n \"mr-2 flex h-4 w-4 items-center justify-center text-muted-foreground\",\n className,\n )}\n transition={reduceMotion ? { duration: 0 } : { duration: 0.15 }}\n {...(!reduceMotion ? { whileHover: { scale: 1.1 } } : {})}\n {...props}\n >\n {icon || getDefaultIcon()}\n </motion.div>\n );\n};\n\nexport type TreeLabelProps = HTMLAttributes<HTMLSpanElement>;\n\nexport const TreeLabel = ({ className, ...props }: TreeLabelProps) => (\n <span className={cn(\"font flex-1 truncate text-sm\", className)} {...props} />\n);\n"]}