{"version":3,"file":"Navbar_bottom.BiVRDddK.mjs","names":["useState","useId","useReducer","_Fragment"],"sources":["https:/framerusercontent.com/modules/T94zqbWtqYS1aCIEyGgN/mVFdZ2yVUYMSQQqH89Ei/Navbar_bottom.js"],"sourcesContent":["// NavBar — Liquid Glass nav with REAL refraction for Framer.\n//\n// Design:\n//   A single horizontal capsule docked at the bottom of the viewport.\n//   Each item is a radio circle (filled when active, outlined when not)\n//   followed by its text label. No icons. Matches the reference design.\n//\n// Liquid Glass material:\n//   Uses an SVG <filter> with <feTurbulence> + <feDisplacementMap>,\n//   applied via CSS `backdrop-filter: url(#filterId)`. This actually\n//   warps the backdrop pixels behind the nav — not just blurs them —\n//   giving a real refractive feel rather than a flat frosted plane.\n//\n//   Browser support for `backdrop-filter: url()`:\n//     • Safari 18.4+ (desktop + iOS): full support — real refraction\n//     • Chrome 142+: partial support / behind flag in some configs\n//     • Firefox: no support\n//   The component detects support at runtime via CSS.supports() and\n//   falls back to plain `backdrop-filter: blur()` where url() isn't\n//   supported. Visually, fallback browsers get a clean frosted-glass\n//   capsule; supported browsers additionally get backdrop warping.\n//\n// Multi-page behaviour:\n//   Detects current URL on mount and highlights the matching item.\n//   Clicking navigates via window.location.assign(). The from-path is\n//   stashed in sessionStorage so future iterations can transition.\n/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useLayoutEffect,useReducer,useState,useId}from\"react\";import{createPortal}from\"react-dom\";// ---------- Constants ----------\nconst NB_CLASS=\"framer-liquid-navbar\";const NAV_FROM_PATH_KEY=\"framer-liquid-navbar-from-path\";const EASE_OUT=\"cubic-bezier(0.23, 1, 0.32, 1)\";// ---------- Helpers ----------\nfunction applyOpacity(color,alpha){if(!color)return`rgba(28, 28, 30, ${alpha})`;const trimmed=color.trim();if(trimmed.startsWith(\"#\")){let hex=trimmed.slice(1);if(hex.length===3){hex=hex.split(\"\").map(c=>c+c).join(\"\");}if(hex.length>=6){const r=parseInt(hex.slice(0,2),16);const g=parseInt(hex.slice(2,4),16);const b=parseInt(hex.slice(4,6),16);return`rgba(${r}, ${g}, ${b}, ${alpha})`;}}const m=trimmed.match(/rgba?\\(\\s*(\\d+)[,\\s]+(\\d+)[,\\s]+(\\d+)/);if(m)return`rgba(${m[1]}, ${m[2]}, ${m[3]}, ${alpha})`;return trimmed;}// Path normalization for tolerant URL comparison.\nfunction normalize(s){if(!s)return\"\";let v=s.trim().replace(/^https?:\\/\\/[^/]+/i,\"\");v=v.replace(/\\/+$/,\"\");v=v.toLowerCase();if(v&&!/^[a-z][a-z0-9+.-]*:/.test(v)&&!v.startsWith(\"#\")&&!v.startsWith(\"/\")){v=\"/\"+v;}return v||\"/\";}// ---------- Radio circle ----------\nfunction RadioCircle({filled,ringColor,fillColor,size,strokeWidth}){return /*#__PURE__*/_jsxs(\"svg\",{width:size,height:size,viewBox:\"0 0 14 14\",\"aria-hidden\":\"true\",style:{flex:\"0 0 auto\",display:\"block\"},children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"7\",cy:\"7\",r:7-strokeWidth/2,fill:\"none\",stroke:ringColor,strokeWidth:strokeWidth}),/*#__PURE__*/_jsx(\"circle\",{cx:\"7\",cy:\"7\",r:\"3.4\",fill:fillColor,style:{transform:filled?\"scale(1)\":\"scale(0)\",transformOrigin:\"50% 50%\",transition:`transform 260ms ${EASE_OUT}`}})]});}// ---------- Component ----------\nexport default function NavBar(props){const{items,fallbackActiveIndex,bottomOffset,activeTextColor,inactiveTextColor,fontSize,fontWeight,letterSpacing,fontFamily,ringColor,ringFillColor,ringStrokeWidth,glassTint,glassOpacity,glassBlur,glassSaturation,edgeHighlight,shadowStrength,refractionEnabled,refractionScale,refractionFrequency,refractionOctaves,cornerRadius,itemGap,paddingX,paddingY,zIndex}=props;// SSR guard — Framer renders on the server; window/CSS.supports/\n// location aren't available there. Render nothing until mount, then\n// flip the flag and render the real tree.\nconst[hasMounted,setHasMounted]=useState(false);useEffect(()=>{setHasMounted(true);},[]);// Per-instance filter ID so multiple NavBar instances on a page\n// don't collide on a global SVG filter ID.\nconst rawId=useId();const filterId=`lg-${rawId.replace(/[^a-z0-9-]/gi,\"\")}`;// Detect support for SVG filters in backdrop-filter.\n// Safari 18.4+ supports `backdrop-filter: url(#svg)` and renders the\n// refraction. Chrome support is partial; Firefox is none. When not\n// supported we fall back to a plain blur-based backdrop-filter,\n// which renders as clean frosted glass without the refraction.\nconst[supportsBackdropUrl,setSupportsBackdropUrl]=useState(false);useEffect(()=>{if(typeof window===\"undefined\"||!window.CSS)return;const probe=`url(\"#__lg_probe__\")`;const supported=window.CSS.supports(\"backdrop-filter\",probe)||window.CSS.supports(\"-webkit-backdrop-filter\",probe);setSupportsBackdropUrl(supported);},[]);// Force-render hook for URL changes (Framer's SPA router uses\n// history.pushState which doesn't fire popstate — we poll instead).\nconst[,forceRender]=useReducer(n=>n+1,0);// Active index from URL\nconst computeActiveIndex=()=>{if(typeof window===\"undefined\")return fallbackActiveIndex;if(!hasMounted)return fallbackActiveIndex;const path=normalize(window.location.pathname);const hash=window.location.hash.toLowerCase();let i=items.findIndex(it=>{const lk=normalize(it.link);return!!lk&&(lk===path||lk===hash);});if(i>=0)return i;i=items.findIndex(it=>{const lk=normalize(it.link);if(!lk||lk===\"/\")return false;return path.endsWith(lk)||hash.endsWith(lk);});if(i>=0)return i;i=items.findIndex(it=>normalize(it.link)===\"/\");if(i>=0&&(path===\"/\"||path===\"\"))return i;return fallbackActiveIndex;};const activeIndex=computeActiveIndex();// URL change subscription — 100ms poll catches programmatic\n// navigations, plus listeners for popstate/hashchange.\nuseEffect(()=>{let lastUrl=window.location.pathname+window.location.hash;const checkUrl=()=>{const currentUrl=window.location.pathname+window.location.hash;if(currentUrl!==lastUrl){lastUrl=currentUrl;forceRender();}};const pollId=window.setInterval(checkUrl,100);window.addEventListener(\"popstate\",forceRender);window.addEventListener(\"hashchange\",forceRender);return()=>{window.clearInterval(pollId);window.removeEventListener(\"popstate\",forceRender);window.removeEventListener(\"hashchange\",forceRender);};},[]);// Click handler — stores from-path then navigates.\nconst onLinkClick=(e,link)=>{if(!link){e.preventDefault();return;}if(/^(mailto:|tel:)/i.test(link))return;if(e.metaKey||e.ctrlKey||e.shiftKey||e.button!==0)return;e.preventDefault();try{sessionStorage.setItem(NAV_FROM_PATH_KEY,window.location.pathname);}catch{/* sessionStorage may be blocked */}window.location.assign(link);};// Portal to document.documentElement so Framer's body transforms\n// don't affect the nav's fixed positioning.\nconst[portalEl]=useState(()=>{if(typeof document===\"undefined\")return null;return document.createElement(\"div\");});useLayoutEffect(()=>{if(!portalEl||typeof document===\"undefined\")return;portalEl.setAttribute(\"data-framer-navbar-portal\",\"\");portalEl.style.position=\"fixed\";portalEl.style.top=\"0\";portalEl.style.left=\"0\";portalEl.style.right=\"0\";portalEl.style.bottom=\"0\";portalEl.style.width=\"100%\";portalEl.style.height=\"100%\";portalEl.style.pointerEvents=\"none\";portalEl.style.transform=\"none\";portalEl.style.zIndex=String(zIndex);document.documentElement.appendChild(portalEl);return()=>{if(portalEl.parentNode)portalEl.parentNode.removeChild(portalEl);};},[portalEl,zIndex]);if(!hasMounted)return null;// Backdrop filter — refraction via SVG filter where supported,\n// plain blur fallback elsewhere. Both branches include saturation\n// boost to match iOS UIBlurEffect's color amplification.\nconst useRefraction=refractionEnabled&&supportsBackdropUrl;const backdropFilterCss=useRefraction?`url(#${filterId}) saturate(${glassSaturation}%)`:`blur(${glassBlur}px) saturate(${glassSaturation}%)`;// SVG filter definitions — rendered as a zero-sized invisible svg\n// alongside the nav. The filter chain:\n//   1. feTurbulence — generate organic noise (the \"liquid\" pattern)\n//   2. feDisplacementMap — warp the backdrop using the noise as a\n//      vector field. R channel drives X displacement, G drives Y.\n//   3. feGaussianBlur — soften the warped result for the frost finish.\nconst filterDefs=/*#__PURE__*/_jsx(\"svg\",{width:\"0\",height:\"0\",\"aria-hidden\":\"true\",style:{position:\"absolute\",width:0,height:0,overflow:\"hidden\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsxs(\"filter\",{id:filterId,x:\"-10%\",y:\"-10%\",width:\"120%\",height:\"120%\",colorInterpolationFilters:\"sRGB\",children:[/*#__PURE__*/_jsx(\"feTurbulence\",{type:\"fractalNoise\",baseFrequency:refractionFrequency,numOctaves:refractionOctaves,seed:7,result:\"noise\"}),/*#__PURE__*/_jsx(\"feDisplacementMap\",{in:\"SourceGraphic\",in2:\"noise\",scale:refractionScale,xChannelSelector:\"R\",yChannelSelector:\"G\"}),/*#__PURE__*/_jsx(\"feGaussianBlur\",{stdDeviation:Math.max(2,glassBlur*.3)})]})})});// Edge + shadow stack — same restrained Apple-on-white treatment\n// as the previous iteration: one bright top crescent, one soft\n// luminous rim, a hairline anchor, and a refined three-tier drop\n// shadow. Restraint reads more like physical glass than a layered\n// construction.\nconst navStyle={position:\"absolute\",bottom:bottomOffset,left:\"50%\",transform:\"translateX(-50%)\",display:\"inline-flex\",flexDirection:\"row\",alignItems:\"center\",gap:itemGap,padding:`${paddingY}px ${paddingX}px`,borderRadius:cornerRadius,background:applyOpacity(glassTint,glassOpacity),backdropFilter:backdropFilterCss,WebkitBackdropFilter:backdropFilterCss,boxShadow:[`inset 0 1px 0 rgba(255, 255, 255, ${Math.min(1,edgeHighlight)})`,`inset 0 0 0 0.5px rgba(255, 255, 255, ${edgeHighlight*.35})`,`inset 0 0 0 1px rgba(0, 0, 0, 0.05)`,`0 1px 1px rgba(0, 0, 0, ${shadowStrength*.2})`,`0 10px 24px -8px rgba(0, 0, 0, ${shadowStrength*.95})`,`0 28px 48px -20px rgba(0, 0, 0, ${shadowStrength*.5})`].join(\", \"),pointerEvents:\"auto\",fontFamily,isolation:\"isolate\"};const navTree=/*#__PURE__*/_jsx(\"nav\",{className:NB_CLASS,\"aria-label\":\"Navigation\",style:navStyle,children:items.map((item,i)=>{const isActive=i===activeIndex;return /*#__PURE__*/_jsxs(\"a\",{href:item.link||\"#\",onClick:e=>onLinkClick(e,item.link),\"aria-label\":item.label,\"aria-current\":isActive?\"page\":undefined,\"data-active\":isActive?\"true\":\"false\",style:{position:\"relative\",display:\"inline-flex\",flexDirection:\"row\",alignItems:\"center\",gap:6,color:isActive?activeTextColor:inactiveTextColor,textDecoration:\"none\",cursor:\"pointer\",fontSize,fontWeight,letterSpacing,lineHeight:1,whiteSpace:\"nowrap\",transition:`color 220ms ${EASE_OUT}`},children:[/*#__PURE__*/_jsx(RadioCircle,{filled:isActive,ringColor:ringColor,fillColor:ringFillColor,size:Math.round(fontSize*1.15),strokeWidth:ringStrokeWidth}),/*#__PURE__*/_jsx(\"span\",{children:item.label})]},i);})});const content=/*#__PURE__*/_jsxs(_Fragment,{children:[filterDefs,navTree]});return portalEl?/*#__PURE__*/createPortal(content,portalEl):content;}// ---------- Property Controls ----------\naddPropertyControls(NavBar,{items:{type:ControlType.Array,title:\"Items\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,defaultValue:\"Home\"},link:{type:ControlType.String,title:\"Link\",placeholder:\"/about or mailto:...\",defaultValue:\"\",description:\"Path or URL. Examples: /, /about, mailto:you@email.com\"}}},defaultValue:[{label:\"Home\",link:\"/\"},{label:\"About\",link:\"/about\"},{label:\"Playground\",link:\"/playground\"},{label:\"Contact\",link:\"mailto:thomasmccluskey561@gmail.com\"}]},fallbackActiveIndex:{type:ControlType.Number,title:\"Fallback Active\",defaultValue:0,min:0,step:1,description:\"Used when no item link matches the current URL.\"},// ---- Position ----\nbottomOffset:{type:ControlType.Number,title:\"Bottom Offset\",defaultValue:36,min:0,max:200,step:1,unit:\"px\",description:\"Distance from the bottom edge of the viewport. The nav docks at the bottom center.\"},// ---- Text ----\nactiveTextColor:{type:ControlType.Color,title:\"Active Text\",defaultValue:\"#E8E5E3\",description:\"Text color of the active item. Slightly brighter than inactive so the active state has subtle text emphasis alongside the radio fill. Pure white feels harsh against the dim grey inactive — a soft warm off-white reads more refined.\"},inactiveTextColor:{type:ControlType.Color,title:\"Inactive Text\",defaultValue:\"#94908F\",description:\"Text color of inactive items. Warm medium grey reads as 'secondary' on the dark glass capsule.\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:12,min:10,max:24,step:.5,unit:\"px\"},fontWeight:{type:ControlType.Number,title:\"Font Weight\",defaultValue:600,min:100,max:900,step:100},letterSpacing:{type:ControlType.Number,title:\"Letter Spacing\",defaultValue:-.2,min:-2,max:2,step:.1,unit:\"px\"},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"Inter, system-ui, -apple-system, sans-serif\"},// ---- Radio circle ----\nringColor:{type:ControlType.Color,title:\"Ring Color\",defaultValue:\"#94908F\",description:\"Outline color of the radio circle. Matches inactive text by default so the ring reads as part of the same secondary layer.\"},ringFillColor:{type:ControlType.Color,title:\"Ring Fill\",defaultValue:\"#FFFFFF\",description:\"Fill color of the active radio's inner dot. Animates in via a scale transition when the item becomes active. This is the primary active-state indicator.\"},ringStrokeWidth:{type:ControlType.Number,title:\"Ring Stroke\",defaultValue:1,min:.5,max:3,step:.1,unit:\"px\"},// ---- Glass material ----\nglassTint:{type:ControlType.Color,title:\"Glass Tint\",defaultValue:\"#4A4744\",description:\"Glass material hue. Warm dark grey reads as the soft medium-grey capsule from the reference. Switch to a lighter tint if you prefer dark text on light glass.\"},glassOpacity:{type:ControlType.Number,title:\"Glass Opacity\",defaultValue:.5,min:0,max:1,step:.02,description:\"Alpha of the glass tint. 0.50 gives the warm dark capsule enough presence on white pages while still letting the backdrop show through on photos.\"},glassBlur:{type:ControlType.Number,title:\"Glass Blur\",defaultValue:28,min:0,max:80,step:1,unit:\"px\",description:\"Backdrop blur amount. Used by the fallback path in browsers that don't support SVG-filter backdrop-filter. Also influences the Gaussian smoothing inside the refraction filter.\"},glassSaturation:{type:ControlType.Number,title:\"Saturation\",defaultValue:180,min:50,max:250,step:5,unit:\"%\",description:\"Color pop behind the glass. 180% matches iOS UIBlurEffect — pulls color from surrounding content.\"},edgeHighlight:{type:ControlType.Number,title:\"Edge Highlight\",defaultValue:.3,min:0,max:1,step:.05,description:\"Brightness of the top specular edge and the luminous rim. 0.30 keeps the top edge soft instead of reading as a hard bright outline — bump up for more pronounced lit-glass feel, drop further to ~0.15 for an even more restrained look.\"},shadowStrength:{type:ControlType.Number,title:\"Shadow Strength\",defaultValue:.22,min:0,max:.6,step:.01,description:\"Outer drop-shadow alpha. The nav floats with a soft three-tier shadow (close contact, mid bloom, soft ambient).\"},// ---- Refraction (SVG filter) ----\nrefractionEnabled:{type:ControlType.Boolean,title:\"Refraction\",defaultValue:true,description:\"Enable SVG-based backdrop refraction (warps backdrop pixels, not just blurs). Active in Safari 18.4+; Chrome partial; Firefox falls back to plain blur. Turn off to force the blur fallback everywhere.\"},refractionScale:{type:ControlType.Number,title:\"Refraction Scale\",defaultValue:18,min:0,max:60,step:1,unit:\"px\",description:\"Maximum displacement of backdrop pixels. ~15–22 reads as gentle Liquid Glass refraction; >30 starts to look like distortion artifacts. Only visible on backdrops with color/contrast — uniform backdrops have nothing to warp.\"},refractionFrequency:{type:ControlType.Number,title:\"Refraction Frequency\",defaultValue:.012,min:.002,max:.05,step:.001,description:\"Spatial frequency of the turbulence pattern that drives refraction. Lower values (~0.005–0.015) give large, slow 'waves'; higher values give tighter, busier distortion.\"},refractionOctaves:{type:ControlType.Number,title:\"Refraction Octaves\",defaultValue:2,min:1,max:4,step:1,description:\"Number of noise layers in the turbulence pattern. Higher = more organic complexity but more expensive to render.\"},// ---- Layout ----\ncornerRadius:{type:ControlType.Number,title:\"Corner Radius\",defaultValue:24,min:0,max:999,step:1,unit:\"px\",description:\"Capsule corner radius. 24 gives a softly rounded rect (matches the reference). Set to 999 for a fully rounded pill / capsule.\"},itemGap:{type:ControlType.Number,title:\"Item Gap\",defaultValue:16,min:8,max:64,step:1,unit:\"px\",description:\"Horizontal spacing between items. Tighter (~14–18) reads as a refined modern nav; wider (~24+) starts to feel like a chunky dock.\"},paddingX:{type:ControlType.Number,title:\"Padding X\",defaultValue:16,min:8,max:60,step:1,unit:\"px\"},paddingY:{type:ControlType.Number,title:\"Padding Y\",defaultValue:8,min:4,max:32,step:1,unit:\"px\"},// ---- Misc ----\nzIndex:{type:ControlType.Number,title:\"Z-Index\",defaultValue:9999,min:0,max:999999,step:1,description:\"Stacking layer. Keep high so the nav floats above page content.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NavBar\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Navbar_bottom.map"],"mappings":"gPA+BA,SAAS,EAAa,EAAM,EAAM,CAAC,GAAG,CAAC,EAAM,MAAM,oBAAoB,EAAM,GAAG,IAAM,EAAQ,EAAM,MAAM,CAAC,GAAG,EAAQ,WAAW,IAAI,CAAC,CAAC,IAAI,EAAI,EAAQ,MAAM,EAAE,CAA4D,GAAxD,EAAI,SAAS,IAAG,EAAI,EAAI,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAK,EAAI,QAAQ,EAA+G,MAAM,QAA1G,SAAS,EAAI,MAAM,EAAE,EAAE,CAAC,GAAG,CAAyF,IAAhF,SAAS,EAAI,MAAM,EAAE,EAAE,CAAC,GAAG,CAA2D,IAAlD,SAAS,EAAI,MAAM,EAAE,EAAE,CAAC,GAAG,CAA6B,IAAI,EAAM,GAAK,IAAM,EAAE,EAAQ,MAAM,wCAAwC,CAAwD,OAApD,EAAQ,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAM,GAAU,EACjgB,SAAS,EAAU,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,qBAAqB,GAAG,CAAiI,MAAhI,GAAE,EAAE,QAAQ,OAAO,GAAG,CAAC,EAAE,EAAE,aAAa,CAAI,GAAG,CAAC,sBAAsB,KAAK,EAAE,EAAE,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,WAAW,IAAI,GAAE,EAAE,IAAI,GAAU,GAAG,IAC/N,SAAS,EAAY,CAAC,SAAO,YAAU,YAAU,OAAK,eAAa,CAAC,OAAoB,EAAM,MAAM,CAAC,MAAM,EAAK,OAAO,EAAK,QAAQ,YAAY,cAAc,OAAO,MAAM,CAAC,KAAK,WAAW,QAAQ,QAAQ,CAAC,SAAS,CAAc,EAAK,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAY,EAAE,KAAK,OAAO,OAAO,EAAsB,cAAY,CAAC,CAAc,EAAK,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,MAAM,KAAK,EAAU,MAAM,CAAC,UAAU,EAAO,WAAW,WAAW,gBAAgB,UAAU,WAAW,mBAAmB,IAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CACjgB,SAAwB,EAAO,EAAM,CAAC,GAAK,CAAC,QAAM,sBAAoB,eAAa,kBAAgB,oBAAkB,WAAS,aAAW,gBAAc,aAAW,YAAU,gBAAc,kBAAgB,YAAU,gBAAa,YAAU,kBAAgB,gBAAc,iBAAe,oBAAkB,kBAAgB,sBAAoB,oBAAkB,eAAa,UAAQ,WAAS,WAAS,UAAQ,EAG1Y,CAAC,EAAW,GAAeA,EAAS,GAAM,CAAC,MAAc,CAAC,EAAc,GAAK,EAAG,EAAE,CAAC,CAEpE,IAAM,EAAS,MAAvBC,GAAO,CAA4B,QAAQ,eAAe,GAAG,GAKpE,CAAC,EAAoB,GAAwBD,EAAS,GAAM,CAAC,MAAc,CAAC,GAAU,IAAS,QAAa,CAAC,EAAO,IAAI,OAAO,IAAM,EAAM,uBAA0I,EAAnG,EAAO,IAAI,SAAS,kBAAkB,EAAM,EAAE,EAAO,IAAI,SAAS,0BAA0B,EAAM,CAAkC,EAAG,EAAE,CAAC,CAEjU,GAAK,EAAE,GAAaE,EAAW,GAAG,EAAE,EAAE,EAAE,CACmjB,OAA9jB,CAA2D,GAAhD,IAAS,QAA0C,CAAC,EAAW,OAAO,EAAoB,IAAM,EAAK,EAAU,EAAO,SAAS,SAAS,CAAO,EAAK,EAAO,SAAS,KAAK,aAAa,CAAK,EAAE,EAAM,UAAU,GAAI,CAAC,IAAM,EAAG,EAAU,EAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAK,IAAK,GAAM,IAAK,IAAQ,CAA6P,OAAzP,GAAG,IAAW,EAAE,EAAM,UAAU,GAAI,CAAC,IAAM,EAAG,EAAU,EAAG,KAAK,CAA+B,MAA3B,CAAC,GAAI,IAAK,IAAW,GAAa,EAAK,SAAS,EAAG,EAAE,EAAK,SAAS,EAAG,EAAG,CAAI,GAAG,KAAW,EAAE,EAAM,UAAU,GAAI,EAAU,EAAG,KAAK,GAAG,IAAI,CAAI,GAAG,IAAI,IAAO,KAAK,IAAO,KAAW,EAAS,KAA4D,CAE3nB,MAAc,CAAC,IAAI,EAAQ,EAAO,SAAS,SAAS,EAAO,SAAS,KAA2J,EAAO,EAAO,gBAAjJ,CAAC,IAAM,EAAW,EAAO,SAAS,SAAS,EAAO,SAAS,KAAQ,IAAa,IAAS,EAAQ,EAAW,GAAa,GAA6C,IAAI,CAAmG,OAAlG,EAAO,iBAAiB,WAAW,EAAY,CAAC,EAAO,iBAAiB,aAAa,EAAY,KAAW,CAAC,EAAO,cAAc,EAAO,CAAC,EAAO,oBAAoB,WAAW,EAAY,CAAC,EAAO,oBAAoB,aAAa,EAAY,GAAK,EAAE,CAAC,CAChgB,IAAM,GAAa,EAAE,IAAO,CAAC,GAAG,CAAC,EAAK,CAAC,EAAE,gBAAgB,CAAC,OAAW,uBAAmB,KAAK,EAAK,EAAW,IAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,GAAS,GAAE,gBAAgB,CAAC,GAAG,CAAC,eAAe,QAAQ,EAAkB,EAAO,SAAS,SAAS,MAAO,EAAqC,EAAO,SAAS,OAAO,EAAK,GAE/T,CAAC,GAAUF,MAAiB,OAAO,SAAW,IAAmB,KAAY,SAAS,cAAc,MAAM,CAAG,CAAqjB,GAApjB,MAAoB,CAAI,MAAC,GAAU,OAAO,SAAW,KAA4Z,OAAzY,EAAS,aAAa,4BAA4B,GAAG,CAAC,EAAS,MAAM,SAAS,QAAQ,EAAS,MAAM,IAAI,IAAI,EAAS,MAAM,KAAK,IAAI,EAAS,MAAM,MAAM,IAAI,EAAS,MAAM,OAAO,IAAI,EAAS,MAAM,MAAM,OAAO,EAAS,MAAM,OAAO,OAAO,EAAS,MAAM,cAAc,OAAO,EAAS,MAAM,UAAU,OAAO,EAAS,MAAM,OAAO,OAAO,EAAO,CAAC,SAAS,gBAAgB,YAAY,EAAS,KAAW,CAAI,EAAS,YAAW,EAAS,WAAW,YAAY,EAAS,GAAK,CAAC,EAAS,EAAO,CAAC,CAAI,CAAC,EAAW,OAAO,KAGloB,IAAM,EAA7C,GAAmB,EAA0D,QAAQ,EAAS,aAAa,EAAgB,IAAI,QAAQ,EAAU,eAAe,EAAgB,IAM9L,GAAwB,EAAK,MAAM,CAAC,MAAM,IAAI,OAAO,IAAI,cAAc,OAAO,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,OAAO,EAAE,SAAS,SAAS,cAAc,OAAO,CAAC,SAAsB,EAAK,OAAO,CAAC,SAAsB,EAAM,SAAS,CAAC,GAAG,EAAS,EAAE,OAAO,EAAE,OAAO,MAAM,OAAO,OAAO,OAAO,0BAA0B,OAAO,SAAS,CAAc,EAAK,eAAe,CAAC,KAAK,eAAe,cAAc,EAAoB,WAAW,EAAkB,KAAK,EAAE,OAAO,QAAQ,CAAC,CAAc,EAAK,oBAAoB,CAAC,GAAG,gBAAgB,IAAI,QAAQ,MAAM,EAAgB,iBAAiB,IAAI,iBAAiB,IAAI,CAAC,CAAc,EAAK,iBAAiB,CAAC,aAAa,KAAK,IAAI,EAAE,EAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAKtrB,GAAS,CAAC,SAAS,WAAW,OAAO,EAAa,KAAK,MAAM,UAAU,mBAAmB,QAAQ,cAAc,cAAc,MAAM,WAAW,SAAS,IAAI,EAAQ,QAAQ,GAAG,EAAS,KAAK,EAAS,IAAI,aAAa,EAAa,WAAW,EAAa,EAAU,GAAa,CAAC,eAAe,EAAkB,qBAAqB,EAAkB,UAAU,CAAC,qCAAqC,KAAK,IAAI,EAAE,EAAc,CAAC,GAAG,yCAAyC,EAAc,IAAI,GAAG,sCAAsC,2BAA2B,EAAe,GAAG,GAAG,kCAAkC,EAAe,IAAI,GAAG,mCAAmC,EAAe,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,cAAc,OAAO,aAAW,UAAU,UAAU,CAAi2B,EAAqB,EAAMG,EAAU,CAAC,SAAS,CAAC,GAAr3B,EAAK,MAAM,CAAC,UAAU,EAAS,aAAa,aAAa,MAAM,GAAS,SAAS,EAAM,KAAK,EAAK,IAAI,CAAC,IAAM,EAAS,IAAI,EAAY,OAAoB,EAAM,IAAI,CAAC,KAAK,EAAK,MAAM,IAAI,QAAQ,GAAG,EAAY,EAAE,EAAK,KAAK,CAAC,aAAa,EAAK,MAAM,eAAe,EAAS,OAAO,IAAA,GAAU,cAAc,EAAS,OAAO,QAAQ,MAAM,CAAC,SAAS,WAAW,QAAQ,cAAc,cAAc,MAAM,WAAW,SAAS,IAAI,EAAE,MAAM,EAAS,EAAgB,EAAkB,eAAe,OAAO,OAAO,UAAU,WAAS,aAAW,gBAAc,WAAW,EAAE,WAAW,SAAS,WAAW,eAAe,IAAW,CAAC,SAAS,CAAc,EAAK,EAAY,CAAC,OAAO,EAAmB,YAAU,UAAU,EAAc,KAAK,KAAK,MAAM,EAAS,KAAK,CAAC,YAAY,EAAgB,CAAC,CAAc,EAAK,OAAO,CAAC,SAAS,EAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAG,CAAC,CAAC,CAA0E,CAAC,CAAC,CAAC,OAAO,EAAsB,EAAa,EAAQ,EAAS,CAAC,6BArCpoD,IAAoD,IAAuE,IAAoC,CAC3O,EAAS,uBAA6B,EAAkB,iCAAuC,EAAS,iCAqC9G,EAAoB,EAAO,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,QAAQ,CAAC,KAAK,EAAY,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,aAAa,OAAO,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,YAAY,uBAAuB,aAAa,GAAG,YAAY,yDAAyD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC,MAAM,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,aAAa,KAAK,cAAc,CAAC,CAAC,MAAM,UAAU,KAAK,sCAAsC,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAY,OAAO,MAAM,kBAAkB,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,kDAAkD,CACvpB,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,KAAK,YAAY,qFAAqF,CAC5M,gBAAgB,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,aAAa,UAAU,YAAY,yOAAyO,CAAC,kBAAkB,CAAC,KAAK,EAAY,MAAM,MAAM,gBAAgB,aAAa,UAAU,YAAY,iGAAiG,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,KAAK,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,iBAAiB,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,8CAA8C,CACx7B,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,YAAY,6HAA6H,CAAC,cAAc,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,aAAa,UAAU,YAAY,2JAA2J,CAAC,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,KAAK,CACxjB,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,YAAY,gKAAgK,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY,oJAAoJ,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,YAAY,kLAAkL,CAAC,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,YAAY,oGAAoG,CAAC,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,iBAAiB,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY,2OAA2O,CAAC,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,kBAAkB,aAAa,IAAI,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,YAAY,kHAAkH,CAC3jD,kBAAkB,CAAC,KAAK,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAK,YAAY,0MAA0M,CAAC,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,YAAY,iOAAiO,CAAC,oBAAoB,CAAC,KAAK,EAAY,OAAO,MAAM,uBAAuB,aAAa,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,YAAY,2KAA2K,CAAC,kBAAkB,CAAC,KAAK,EAAY,OAAO,MAAM,qBAAqB,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,mHAAmH,CAC5pC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,KAAK,YAAY,gIAAgI,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,YAAY,oIAAoI,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,CAC7qB,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,aAAa,KAAK,IAAI,EAAE,IAAI,OAAO,KAAK,EAAE,YAAY,kEAAkE,CAAC,CAAC"}