{"version":3,"file":"ProjectHoverDim.C8t04dAW.mjs","names":[],"sources":["https:/framerusercontent.com/modules/zKV1aOma5YT0rbAFRPgy/kRXTeqpxuCYb0G9jsrzS/ProjectHoverDim.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";// @ts-ignore — the \"framer\" module is always available at runtime in Framer\n// code files; this file's typechecker just fails to resolve its types.\nimport{RenderTarget,addPropertyControls,ControlType}from\"framer\";/**\n * ProjectHoverDim (v11)\n *\n * - Does NOTHING on the Framer canvas (runtime/preview/published only).\n * - DIM (stack-scoped): hovering a row dims ONLY the other rows in that\n *   same stack to the \"Dim To\" opacity.\n * - NAV: now found directly by its layer name \"Nav\" (previously relied on\n *   row names, which broke when rows were renamed). Full-band hover/click;\n *   clicking swaps the right-side PROJECTS/WRITING stacks and updates the\n *   URL hash; back/forward/refresh restore the section.\n * - ACTIVE STATE: a circle dot sits next to the active nav item and\n *   slides between items when the active item changes. Dot appears ONLY on\n *   the active item, never on hover. Active item text color and weight are\n *   controllable via props.\n * - SCROLL SPY (new in v11): each nav row's link hash (e.g. /#projects,\n *   /#experiments) is resolved to its on-page section. As the user scrolls\n *   (window OR any inner scroll container — scroll is listened to in the\n *   capture phase so nested scrollers work), the nav item whose section is\n *   currently in view becomes active automatically. Clicking a nav item\n *   briefly locks the spy so the smooth-scroll doesn't fight the click.\n */// ---- fixed tuning ----\nconst DIM_MS=300;const BAND_PAD_X=12;const VIEW_FADE_MS=450;const NAV_MAX_LABEL=30;const SPY_LINE=.35// section is \"active\" once its top crosses 35% of viewport height\n;const SPY_CLICK_LOCK_MS=900;export default function ProjectHoverDim(props){const{dim=.3,dotSize=6,dotColor=\"#0F0F10\",dotGap=14,activeColor=\"#0F0F10\",activeWeight=600,slideMs=450}=props;React.useEffect(()=>{// Never touch the canvas. Runtime (preview/published) only.\nif(RenderTarget.current()===RenderTarget.canvas)return;const cleanups=[];let tries=0;const ease=\"cubic-bezier(0.25, 0.1, 0.25, 1)\";const slideEase=\"cubic-bezier(0.3, 1.15, 0.3, 1)\";// sweep any injected elements left over from previous versions\ndocument.querySelectorAll(\"[data-hh-frame]\").forEach(el=>el.remove());const isBreakpointRoot=el=>{const n=el.getAttribute(\"data-framer-name\")||\"\";return/^(desktop|tablet|phone)$/i.test(n);};const slotOf=c=>{let n=c;while(n.parentElement&&n.parentElement!==document.body&&n.parentElement.children.length===1&&!isBreakpointRoot(n.parentElement)){n=n.parentElement;}return n;};// LIVE row query — never cached\nconst rowsOf=container=>Array.from(container.children).filter(el=>el instanceof HTMLElement&&!el.hasAttribute(\"data-hh-skip\")&&!el.hasAttribute(\"data-hh-frame\"));const isTextNav=container=>{const rows=rowsOf(container);if(rows.length<2)return false;return rows.every(r=>{const t=(r.textContent||\"\").trim();return t.length>0&&t.length<=NAV_MAX_LABEL;});};const insideNav=el=>!!el.closest('[data-framer-name=\"nav\" i]');const findLayout=()=>{// View containers can be named \"projects\" OR \"writing\"; nav rows\n// may share those names, so anything inside a \"Nav\" frame is\n// excluded here (the nav is wired separately by name).\nconst named=Array.from(document.querySelectorAll('[data-framer-name=\"projects\" i], [data-framer-name=\"writing\" i]')).filter(c=>!insideNav(c));const byParent=new Map;named.forEach(c=>{const slot=slotOf(c);const p=slot.parentElement;if(!p)return;const arr=byParent.get(p)||[];arr.push(c);byParent.set(p,arr);});const viewParents=[];const rest=[];byParent.forEach((arr,p)=>{if(arr.length>=2)viewParents.push(p);else rest.push(arr[0]);});const navContainers=rest.filter(isTextNav);const otherContainers=rest.filter(c=>!isTextNav(c));return{containers:named,viewParents,navContainers,otherContainers};};// ---------- stack-scoped dim ----------\nconst dimStack=(container,hoveredIdx)=>{rowsOf(container).forEach((row,j)=>{row.style.transition=`opacity ${DIM_MS}ms ${ease}`;row.style.opacity=j===hoveredIdx?\"\":String(dim);});};const clearStack=container=>{rowsOf(container).forEach(row=>{row.style.opacity=\"\";});};// ---------- view switching ----------\nlet viewParents=[];const paintView=(el,isActive,instant)=>{const store=el;if(store.__hhRaf)cancelAnimationFrame(store.__hhRaf);if(store.__hhTimer)clearTimeout(store.__hhTimer);if(!el.dataset.hhDisplay){const d=getComputedStyle(el).display;el.dataset.hhDisplay=d===\"none\"?\"flex\":d;}if(!isActive){el.style.opacity=\"0\";el.style.display=\"none\";el.style.pointerEvents=\"none\";return;}el.style.display=el.dataset.hhDisplay||\"flex\";el.style.pointerEvents=\"\";el.style.transition=\"none\";if(instant||VIEW_FADE_MS<=0){el.style.opacity=\"1\";return;}el.getAnimations?.().forEach(a=>a.cancel());el.style.opacity=\"0\";const start=typeof performance!==\"undefined\"?performance.now():Date.now();const tick=now=>{const p=Math.min(1,(now-start)/VIEW_FADE_MS);const eased=p<.5?2*p*p:1-Math.pow(-2*p+2,2)/2;el.style.opacity=String(eased);if(p<1)store.__hhRaf=requestAnimationFrame(tick);else store.__hhRaf=null;};store.__hhRaf=requestAnimationFrame(tick);store.__hhTimer=setTimeout(()=>{el.style.opacity=\"1\";store.__hhTimer=null;},VIEW_FADE_MS+60);};const findViewsFor=navEl=>{let node=navEl.parentElement;while(node){const vp=viewParents.find(p=>p.isConnected&&node.contains(p));if(vp)return rowsOf(vp);node=node.parentElement;}return[];};const applyViews=(navEl,index,instant)=>{const views=findViewsFor(navEl);if(views.length<2)return;views.forEach((el,i)=>paintView(el,i===index,instant));};// ---------- crayon lines (live, idempotent setup) ----------\nconst lineOf=row=>{const inner=row.querySelector(\"[data-crayon-line]\");if(!inner)return null;const wrapper=inner.parentElement&&inner.parentElement!==row?inner.parentElement:inner;if(!wrapper.dataset.hhLineSetup){wrapper.dataset.hhLineSetup=\"1\";row.style.position=\"relative\";wrapper.style.position=\"absolute\";wrapper.style.left=\"-20px\";wrapper.style.right=\"auto\";wrapper.style.top=\"0px\";wrapper.style.bottom=\"auto\";wrapper.style.width=\"8px\";wrapper.style.height=\"100%\";wrapper.style.transform=\"none\";wrapper.style.pointerEvents=\"none\";wrapper.style.clipPath=\"inset(100% 0% 0% 0%)\";wrapper.style.transition=`clip-path 0.45s ${ease}`;}return wrapper;};const setLines=(container,activeIdx)=>{rowsOf(container).forEach((row,j)=>{const line=lineOf(row);if(!line)return;line.style.clipPath=j===activeIdx?\"inset(0% 0% 0% 0%)\":\"inset(100% 0% 0% 0%)\";});};const groups=[];const wiredNavs=new Set;const rowIndexAt=(g,x,y)=>{if(!g.container.isConnected)return-1;const cRect=g.container.getBoundingClientRect();if(cRect.width===0||cRect.height===0)return-1;const rows=rowsOf(g.container);for(let i=0;i<rows.length;i++){const r=rows[i].getBoundingClientRect();if(r.height===0)continue;if(y<r.top||y>r.bottom)continue;if(g.bandHit){if(x>=cRect.left-g.padX&&x<=cRect.right+g.padX)return i;}else if(r.width>0&&x>=r.left&&x<=r.right){return i;}}return-1;};function wireDimGroup(container,opts){if(rowsOf(container).length===0)return;const isNav=!!opts.isNav;groups.push({container,bandHit:opts.bandHit,padX:opts.padX,hoverIndex:-1,enter:i=>{dimStack(container,i);setLines(container,i);if(isNav)container.style.cursor=\"pointer\";},leave:()=>{clearStack(container);setLines(container,-1);if(isNav)container.style.cursor=\"\";}});}// ---------- nav: dim + active dot + click + scroll spy ----------\nfunction wireNav(container){if(wiredNavs.has(container))return;if(!isTextNav(container))return;wiredNavs.add(container);wireDimGroup(container,{padX:BAND_PAD_X,bandHit:true,isNav:true});const group=groups[groups.length-1];// --- active dot (appears ONLY on active item, slides between) ---\nconst prevPos=container.style.position;if(getComputedStyle(container).position===\"static\")container.style.position=\"relative\";container.style.overflow=\"visible\";const dot=document.createElement(\"div\");dot.setAttribute(\"data-hh-frame\",\"\");Object.assign(dot.style,{position:\"absolute\",width:`${dotSize}px`,height:`${dotSize}px`,borderRadius:\"50%\",background:dotColor,opacity:\"0\",pointerEvents:\"none\",zIndex:\"10\",left:\"0px\",top:\"0px\"});container.appendChild(dot);cleanups.push(()=>{dot.remove();container.style.position=prevPos;});const textElOf=row=>row.querySelector('p, h1, h2, h3, h4, h5, h6, [data-framer-component-type=\"RichTextContainer\"]')||row;const styleActive=idx=>{rowsOf(container).forEach((row,j)=>{const on=j===idx;if(on)row.style.setProperty(\"--framer-text-color\",activeColor);else row.style.removeProperty(\"--framer-text-color\");row.querySelectorAll(\"p, h1, h2, h3, h4, h5, h6, span, a\").forEach(el=>{el.style.transition=`color ${DIM_MS}ms ${ease}`;if(on){el.style.setProperty(\"color\",activeColor,\"important\");el.style.setProperty(\"font-weight\",String(activeWeight),\"important\");}else{el.style.removeProperty(\"color\");el.style.removeProperty(\"font-weight\");}});});};cleanups.push(()=>styleActive(-1));let dotShown=false;const positionDot=(idx,animate)=>{const rows=rowsOf(container);const row=rows[idx];if(!row){dot.style.opacity=\"0\";dotShown=false;return;}const target=textElOf(row);const cr=container.getBoundingClientRect();const r=target.getBoundingClientRect();const x=r.left-cr.left-dotGap-dotSize;const y=r.top-cr.top+r.height/2-dotSize/2;dot.style.transition=animate&&dotShown?`left ${slideMs}ms ${slideEase}, top ${slideMs}ms ${slideEase}`:\"none\";dot.style.left=`${x}px`;dot.style.top=`${y}px`;dot.style.opacity=\"1\";dotShown=true;};const slugsNow=()=>rowsOf(container).map((row,i)=>(row.textContent||\"\").trim().toLowerCase().replace(/\\s+/g,\"-\")||String(i));const indexFromHash=()=>{const h=window.location.hash.replace(\"#\",\"\");const idx=slugsNow().indexOf(h);return idx>=0?idx:0;};let activeIndex=indexFromHash();const setActive=(i,instant,push)=>{activeIndex=i;applyViews(container,i,instant);styleActive(i);positionDot(i,!instant);if(push){const slugs=slugsNow();const url=i===0?window.location.pathname+window.location.search:\"#\"+slugs[i];window.history.pushState({section:i},\"\",url);}};// ---------- scroll spy: active item follows visible section ----------\n// Each nav row is (or contains) a link like \"/#projects\". Resolve\n// that hash to the actual section element on the page, then track\n// which section is in view as ANY scroller scrolls (window or the\n// inner overflow:auto stack — scroll is captured on window).\nconst hashOfRow=row=>{const a=row.matches?.(\"a[href]\")?row:row.querySelector(\"a[href]\");const href=a?.getAttribute(\"href\")||\"\";const m=href.match(/#([^#?/]+)/);return m?m[1].toLowerCase():null;};const sectionFor=name=>{if(!name)return null;const byId=document.getElementById(name);if(byId&&!container.contains(byId))return byId;const candidates=Array.from(document.querySelectorAll(`[data-framer-name=\"${name}\" i]`));return candidates.find(el=>!insideNav(el)&&!container.contains(el)&&el.getBoundingClientRect().height>0)||null;};const spyTargets=()=>rowsOf(container).map(row=>sectionFor(hashOfRow(row)));const scrollerOf=el=>{let n=el.parentElement;while(n&&n!==document.body){const s=getComputedStyle(n);if(/(auto|scroll)/.test(s.overflowY)&&n.scrollHeight>n.clientHeight+1)return n;n=n.parentElement;}return null;};let spyRaf=0;let spyLocked=false;let spyLockTimer=null;const lockSpy=()=>{spyLocked=true;if(spyLockTimer)clearTimeout(spyLockTimer);spyLockTimer=setTimeout(()=>{spyLocked=false;scheduleSpy();},SPY_CLICK_LOCK_MS);};const spyEval=()=>{spyRaf=0;if(spyLocked)return;const targets=spyTargets();const first=targets.find(t=>!!t);if(!first)return;const line=window.innerHeight*SPY_LINE;let idx=-1;targets.forEach((t,i)=>{if(t&&t.getBoundingClientRect().top<=line)idx=i;});if(idx<0)idx=targets.indexOf(first);// pinned to the very bottom → last section wins\nconst scroller=scrollerOf(first);if(scroller&&scroller.scrollTop+scroller.clientHeight>=scroller.scrollHeight-2){for(let i=targets.length-1;i>=0;i--){if(targets[i]){idx=i;break;}}}if(idx>=0&&idx!==activeIndex)setActive(idx,false,false);};const scheduleSpy=()=>{if(!spyRaf)spyRaf=requestAnimationFrame(spyEval);};// capture:true so scrolls inside nested overflow containers\n// (which don't bubble) still reach us\nwindow.addEventListener(\"scroll\",scheduleSpy,{passive:true,capture:true});window.addEventListener(\"resize\",scheduleSpy);const spyT1=setTimeout(scheduleSpy,600);const spyT2=setTimeout(scheduleSpy,1500);cleanups.push(()=>{window.removeEventListener(\"scroll\",scheduleSpy,{capture:true});window.removeEventListener(\"resize\",scheduleSpy);clearTimeout(spyT1);clearTimeout(spyT2);if(spyLockTimer)clearTimeout(spyLockTimer);if(spyRaf)cancelAnimationFrame(spyRaf);});const onClick=e=>{const i=rowIndexAt(group,e.clientX,e.clientY);if(i>=0){lockSpy();setActive(i,false,true);}};document.addEventListener(\"click\",onClick);cleanups.push(()=>document.removeEventListener(\"click\",onClick));// initial paint (no slide on first appearance)\napplyViews(container,activeIndex,true);styleActive(activeIndex);positionDot(activeIndex,false);scheduleSpy();// re-measure after fonts/layout settle and on resize\nconst reflow=()=>positionDot(activeIndex,false);window.addEventListener(\"resize\",reflow);const t1=setTimeout(reflow,400);const t2=setTimeout(reflow,1200);document.fonts?.ready?.then?.(reflow);cleanups.push(()=>{window.removeEventListener(\"resize\",reflow);clearTimeout(t1);clearTimeout(t2);});const onPop=()=>{const i=indexFromHash();if(i!==activeIndex)setActive(i,false,false);};window.addEventListener(\"popstate\",onPop);window.addEventListener(\"hashchange\",onPop);cleanups.push(()=>{window.removeEventListener(\"popstate\",onPop);window.removeEventListener(\"hashchange\",onPop);});}// ---------- central pointer tracking ----------\nlet px=-1;let py=-1;let evalRaf=0;const evaluate=()=>{evalRaf=0;groups.forEach(g=>{const idx=px>=0?rowIndexAt(g,px,py):-1;if(idx!==g.hoverIndex){g.hoverIndex=idx;if(idx>=0)g.enter(idx);else g.leave();}});};const scheduleEval=()=>{if(!evalRaf)evalRaf=requestAnimationFrame(evaluate);};const onMove=e=>{px=e.clientX;py=e.clientY;scheduleEval();};const onGone=()=>{px=-1;py=-1;scheduleEval();};window.addEventListener(\"pointermove\",onMove,{passive:true});window.addEventListener(\"scroll\",scheduleEval,{passive:true,capture:true});document.documentElement.addEventListener(\"pointerleave\",onGone);window.addEventListener(\"blur\",onGone);cleanups.push(()=>{window.removeEventListener(\"pointermove\",onMove);window.removeEventListener(\"scroll\",scheduleEval,{capture:true});document.documentElement.removeEventListener(\"pointerleave\",onGone);window.removeEventListener(\"blur\",onGone);if(evalRaf)cancelAnimationFrame(evalRaf);groups.forEach(g=>clearStack(g.container));});// ---------- attach ----------\nfunction attach(){const{containers,viewParents:vps,navContainers,otherContainers}=findLayout();// the nav is found directly by its layer name, so renaming its\n// rows can never break it again\nconst onScreen=el=>{const r=el.getBoundingClientRect();return el.getClientRects().length>0&&r.width>0;};const navs=Array.from(document.querySelectorAll('[data-framer-name=\"nav\" i]')).filter(onScreen);if(containers.length===0&&navs.length===0){if(tries++<40)setTimeout(attach,250);return;}viewParents=vps;vps.forEach(p=>{rowsOf(p).forEach(c=>{wireDimGroup(c,{padX:BAND_PAD_X,bandHit:true});});});navs.forEach(c=>wireNav(c));navContainers.forEach(c=>wireNav(c));otherContainers.forEach(c=>wireDimGroup(c,{padX:BAND_PAD_X,bandHit:true}));document.querySelectorAll('[data-framer-name=\"links\" i]').forEach(c=>wireDimGroup(c,{padX:8,bandHit:false}));}attach();return()=>cleanups.forEach(fn=>fn());},[dim,dotSize,dotColor,dotGap,activeColor,activeWeight,slideMs]);return /*#__PURE__*/_jsx(\"div\",{style:{width:1,height:1,pointerEvents:\"none\"}});}addPropertyControls(ProjectHoverDim,{dim:{type:ControlType.Number,title:\"Dim To\",defaultValue:.3,min:0,max:1,step:.05},dotSize:{type:ControlType.Number,title:\"Dot Size\",defaultValue:6,min:2,max:24,step:1,unit:\"px\"},dotColor:{type:ControlType.Color,title:\"Dot Color\",defaultValue:\"#0F0F10\"},dotGap:{type:ControlType.Number,title:\"Dot Gap\",defaultValue:14,min:0,max:48,step:1,unit:\"px\"},activeColor:{type:ControlType.Color,title:\"Active Text\",defaultValue:\"#0F0F10\"},activeWeight:{type:ControlType.Number,title:\"Active Weight\",defaultValue:600,min:100,max:900,step:100,displayStepper:true},slideMs:{type:ControlType.Number,title:\"Slide Time\",defaultValue:450,min:100,max:1200,step:50,unit:\"ms\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProjectHoverDim\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProjectHoverDim.map"],"mappings":"0LAwB6B,SAAwB,EAAgB,EAAM,CAAC,GAAK,CAAC,MAAI,GAAG,UAAQ,EAAE,WAAS,UAAU,SAAO,GAAG,cAAY,UAAU,eAAa,IAAI,UAAQ,KAAK,EAyBikB,OAzB3jB,MAAoB,CAC9M,GAAG,EAAa,QAAQ,IAAI,EAAa,OAAO,OAAO,IAAM,EAAS,CAAC,EAAM,EAAM,EAAQ,EAAK,mCAAyC,EAAU,kCACnJ,SAAS,iBAAiB,iBAAiB,CAAC,CAAC,QAAQ,GAAI,EAAG,OAAO,CAAC,EAAE,IAAM,EAAiB,GAAI,CAAC,IAAM,EAAE,EAAG,aAAa,kBAAkB,GAAG,GAAG,MAAM,4BAA4B,KAAK,CAAC,CAAE,EAAQ,EAAO,GAAG,CAAC,IAAI,EAAE,EAAE,KAAM,EAAE,eAAe,EAAE,gBAAgB,SAAS,MAAM,EAAE,cAAc,SAAS,SAAS,GAAG,CAAC,EAAiB,EAAE,aAAa,GAAG,EAAE,EAAE,cAAe,OAAO,CAAE,EAC9W,EAAO,GAAW,MAAM,KAAK,EAAU,QAAQ,CAAC,CAAC,OAAO,GAAI,aAAc,aAAa,CAAC,EAAG,aAAa,cAAc,GAAG,CAAC,EAAG,aAAa,eAAe,CAAC,EAAQ,EAAU,GAAW,CAAC,IAAM,EAAK,EAAO,CAAS,EAAgC,OAA3B,EAAK,OAAO,EAAS,GAAa,EAAK,MAAM,GAAG,CAAC,IAAM,GAAG,EAAE,aAAa,GAAA,CAAI,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAc,CAAC,CAAE,EAAQ,EAAU,GAAI,CAAC,CAAC,EAAG,QAAQ,4BAA4B,EAAQ,MAAe,CAGtb,IAAM,EAAM,MAAM,KAAK,SAAS,iBAAiB,iEAAiE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAU,CAAC,CAAC,EAAQ,EAAS,IAAI,IAAI,EAAM,QAAQ,GAAG,CAAsB,IAAM,EAAhB,EAAO,CAAc,CAAC,CAAC,cAAc,GAAG,CAAC,EAAE,OAAO,IAAM,EAAI,EAAS,IAAI,CAAC,GAAG,CAAC,EAAE,EAAI,KAAK,CAAC,EAAE,EAAS,IAAI,EAAE,CAAG,CAAE,CAAC,EAAE,IAAM,EAAY,CAAC,EAAQ,EAAK,CAAC,EAA2L,OAAzL,EAAS,SAAS,EAAI,IAAI,CAAI,EAAI,QAAQ,EAAE,EAAY,KAAK,CAAC,EAAO,EAAK,KAAK,EAAI,EAAE,CAAE,CAAC,EAAuG,CAAC,WAAW,EAAM,cAAY,cAA/G,EAAK,OAAO,CAA+G,EAAE,gBAAhF,EAAK,OAAO,GAAG,CAAC,EAAU,CAAC,CAAmE,CAAC,CAAE,EAC9kB,GAAU,EAAU,IAAa,CAAC,EAAO,CAAS,CAAC,CAAC,SAAS,EAAI,IAAI,CAAC,EAAI,MAAM,WAAW,WAAW,EAAO,KAAK,IAAO,EAAI,MAAM,QAAQ,IAAI,EAAW,GAAG,OAAO,CAAG,CAAE,CAAC,CAAE,EAAQ,EAAW,GAAW,CAAC,EAAO,CAAS,CAAC,CAAC,QAAQ,GAAK,CAAC,EAAI,MAAM,QAAQ,EAAG,CAAC,CAAE,EACrQ,EAAY,CAAC,EAAQ,GAAW,EAAG,EAAS,IAAU,CAAC,IAAM,EAAM,EAAyG,GAAnG,EAAM,SAAQ,qBAAqB,EAAM,OAAO,EAAK,EAAM,WAAU,aAAa,EAAM,SAAS,EAAK,CAAC,EAAG,QAAQ,UAAU,CAAC,IAAM,EAAE,iBAAiB,CAAE,CAAC,CAAC,QAAQ,EAAG,QAAQ,UAAU,IAAI,OAAO,OAAO,CAAE,CAAC,GAAG,CAAC,EAAS,CAAC,EAAG,MAAM,QAAQ,IAAI,EAAG,MAAM,QAAQ,OAAO,EAAG,MAAM,cAAc,OAAO,MAAO,CAAoG,GAAnG,EAAG,MAAM,QAAQ,EAAG,QAAQ,WAAW,OAAO,EAAG,MAAM,cAAc,GAAG,EAAG,MAAM,WAAW,OAAU,EAAyB,CAAC,EAAG,MAAM,QAAQ,IAAI,MAAO,CAAC,EAAG,gBAAgB,CAAC,CAAC,QAAQ,GAAG,EAAE,OAAO,CAAC,EAAE,EAAG,MAAM,QAAQ,IAAI,IAAM,EAAM,OAAO,YAAc,IAAY,YAAY,IAAI,EAAE,KAAK,IAAI,EAAQ,EAAK,GAAK,CAAC,IAAM,EAAE,KAAK,IAAI,GAAG,EAAI,GAAO,CAAY,EAAQ,EAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAW,GAAG,EAAE,IAAE,EAAG,EAAE,EAAG,MAAM,QAAQ,OAAO,CAAK,EAAK,EAAE,EAAE,EAAM,QAAQ,sBAAsB,CAAI,EAAO,EAAM,QAAQ,IAAK,EAAE,EAAM,QAAQ,sBAAsB,CAAI,EAAE,EAAM,UAAU,eAAe,CAAC,EAAG,MAAM,QAAQ,IAAI,EAAM,UAAU,IAAK,EAAE,GAAe,CAAE,EAAQ,EAAa,GAAO,CAAC,IAAI,EAAK,EAAM,cAAc,KAAM,GAAK,CAAC,IAAM,EAAG,EAAY,KAAK,GAAG,EAAE,aAAa,EAAK,SAAS,CAAC,CAAC,EAAE,GAAG,EAAG,OAAO,EAAO,CAAE,EAAE,EAAK,EAAK,aAAc,CAAC,MAAM,CAAC,CAAE,EAAQ,GAAY,EAAM,EAAM,IAAU,CAAC,IAAM,EAAM,EAAa,CAAK,EAAK,EAAM,OAAO,GAAS,EAAM,SAAS,EAAG,IAAI,EAAU,EAAG,IAAI,EAAM,CAAO,CAAC,CAAE,EACl1C,EAAO,GAAK,CAAC,IAAM,EAAM,EAAI,cAAc,oBAAoB,EAAE,GAAG,CAAC,EAAM,OAAO,KAAK,IAAM,EAAQ,EAAM,eAAe,EAAM,gBAAgB,EAAI,EAAM,cAAc,EAA2c,OAAjc,EAAQ,QAAQ,cAAa,EAAQ,QAAQ,YAAY,IAAI,EAAI,MAAM,SAAS,WAAW,EAAQ,MAAM,SAAS,WAAW,EAAQ,MAAM,KAAK,QAAQ,EAAQ,MAAM,MAAM,OAAO,EAAQ,MAAM,IAAI,MAAM,EAAQ,MAAM,OAAO,OAAO,EAAQ,MAAM,MAAM,MAAM,EAAQ,MAAM,OAAO,OAAO,EAAQ,MAAM,UAAU,OAAO,EAAQ,MAAM,cAAc,OAAO,EAAQ,MAAM,SAAS,uBAAuB,EAAQ,MAAM,WAAW,mBAAmB,KAAe,CAAQ,EAAQ,GAAU,EAAU,IAAY,CAAC,EAAO,CAAS,CAAC,CAAC,SAAS,EAAI,IAAI,CAAC,IAAM,EAAK,EAAO,CAAG,EAAM,IAAY,EAAK,MAAM,SAAS,IAAI,EAAU,qBAAqB,uBAAuB,CAAC,CAAE,EAAQ,EAAO,CAAC,EAAQ,EAAU,IAAI,IAAU,GAAY,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,YAAY,MAAM,GAAG,IAAM,EAAM,EAAE,UAAU,sBAAsB,EAAE,GAAG,EAAM,QAAQ,GAAG,EAAM,SAAS,EAAE,MAAM,GAAG,IAAM,EAAK,EAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAI,CAAC,IAAM,EAAE,EAAK,EAAE,CAAC,sBAAsB,EAAK,KAAE,SAAS,GAAc,IAAE,EAAE,KAAK,EAAE,EAAE,QAAgB,IAAG,EAAE,YAAY,GAAG,EAAM,KAAK,EAAE,MAAM,GAAG,EAAM,MAAM,EAAE,KAAK,OAAO,CAAA,MAAQ,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,MAAO,OAAO,CAAA,CAAG,CAAC,MAAM,EAAG,EAAE,SAAS,EAAa,EAAU,EAAK,CAAC,GAAG,EAAO,CAAS,CAAC,CAAC,SAAS,EAAE,OAAO,IAAM,EAAM,CAAC,CAAC,EAAK,MAAM,EAAO,KAAK,CAAC,YAAU,QAAQ,EAAK,QAAQ,KAAK,EAAK,KAAK,WAAW,GAAG,MAAM,GAAG,CAAC,EAAS,EAAU,CAAC,EAAE,EAAS,EAAU,CAAC,EAAK,IAAM,EAAU,MAAM,OAAO,UAAU,EAAE,UAAU,CAAC,EAAW,CAAS,EAAE,EAAS,EAAU,EAAE,EAAK,IAAM,EAAU,MAAM,OAAO,GAAG,CAAC,CAAC,CAAE,CAC3qD,SAAS,EAAQ,EAAU,CAAoC,GAAhC,EAAU,IAAI,CAAS,GAAY,CAAC,EAAU,CAAS,EAAE,OAAO,EAAU,IAAI,CAAS,EAAE,EAAa,EAAU,CAAC,KAAK,EAAW,QAAQ,GAAK,MAAM,EAAI,CAAC,EAAE,IAAM,EAAM,EAAO,EAAO,OAAO,GACrN,EAAQ,EAAU,MAAM,SAAY,iBAAiB,CAAS,CAAC,CAAC,WAAW,WAAS,EAAU,MAAM,SAAS,YAAW,EAAU,MAAM,SAAS,UAAU,IAAM,EAAI,SAAS,cAAc,KAAK,EAAE,EAAI,aAAa,gBAAgB,EAAE,EAAE,OAAO,OAAO,EAAI,MAAM,CAAC,SAAS,WAAW,MAAM,GAAG,EAAQ,IAAI,OAAO,GAAG,EAAQ,IAAI,aAAa,MAAM,WAAW,EAAS,QAAQ,IAAI,cAAc,OAAO,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,EAAE,EAAU,YAAY,CAAG,EAAE,EAAS,SAAS,CAAC,EAAI,OAAO,EAAE,EAAU,MAAM,SAAS,CAAQ,CAAC,EAAE,IAAM,EAAS,GAAK,EAAI,cAAc,6EAA6E,GAAG,EAAU,EAAY,GAAK,CAAC,EAAO,CAAS,CAAC,CAAC,SAAS,EAAI,IAAI,CAAC,IAAM,EAAG,IAAI,EAAO,EAAG,EAAI,MAAM,YAAY,sBAAsB,CAAW,EAAO,EAAI,MAAM,eAAe,qBAAqB,EAAE,EAAI,iBAAiB,oCAAoC,CAAC,CAAC,QAAQ,GAAI,CAAC,EAAG,MAAM,WAAW,SAAS,EAAO,KAAK,IAAU,GAAI,EAAG,MAAM,YAAY,QAAQ,EAAY,WAAW,EAAE,EAAG,MAAM,YAAY,cAAc,OAAO,CAAY,EAAE,WAAW,IAAQ,EAAG,MAAM,eAAe,OAAO,EAAE,EAAG,MAAM,eAAe,aAAa,EAAG,CAAC,CAAE,CAAC,CAAE,EAAE,EAAS,SAAS,EAAY,EAAE,CAAC,EAAE,IAAI,EAAS,GAAY,GAAa,EAAI,IAAU,CAA8B,IAAM,EAAxB,EAAO,CAAwB,CAAC,CAAC,GAAK,GAAG,CAAC,EAAI,CAAC,EAAI,MAAM,QAAQ,IAAI,EAAS,GAAM,MAAO,CAAC,IAAM,EAAO,EAAS,CAAG,EAAQ,EAAG,EAAU,sBAAsB,EAAQ,EAAE,EAAO,sBAAsB,EAAQ,EAAE,EAAE,KAAK,EAAG,KAAK,EAAO,EAAc,EAAE,EAAE,IAAI,EAAG,IAAI,EAAE,OAAO,EAAE,EAAQ,EAAE,EAAI,MAAM,WAAW,GAAS,EAAS,QAAQ,EAAQ,KAAK,EAAU,QAAQ,EAAQ,KAAK,IAAY,OAAO,EAAI,MAAM,KAAK,GAAG,EAAE,IAAI,EAAI,MAAM,IAAI,GAAG,EAAE,IAAI,EAAI,MAAM,QAAQ,IAAI,EAAS,EAAK,EAAQ,MAAa,EAAO,CAAS,CAAC,CAAC,KAAK,EAAI,KAAK,EAAI,aAAa,GAAA,CAAI,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,OAAO,GAAG,GAAG,OAAO,CAAC,CAAC,EAAQ,MAAkB,CAAC,IAAM,EAAE,EAAO,SAAS,KAAK,QAAQ,IAAI,EAAE,EAAQ,EAAI,EAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAK,EAAE,EAAI,CAAE,EAAM,EAAY,EAAc,EAAQ,GAAW,EAAE,EAAQ,IAAO,CAAsF,GAArF,EAAY,EAAE,EAAW,EAAU,EAAE,CAAO,EAAE,EAAY,CAAC,EAAE,EAAY,EAAE,CAAC,CAAO,EAAK,EAAK,CAAC,IAAM,EAAM,EAAS,EAAQ,EAAI,IAAI,EAAE,EAAO,SAAS,SAAS,EAAO,SAAS,OAAO,IAAI,EAAM,GAAG,EAAO,QAAQ,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAG,CAAE,CAAC,EAKjwE,EAAU,GAAK,CAA0G,IAAM,IAAvG,EAAI,UAAU,SAAS,EAAE,EAAI,EAAI,cAAc,SAAS,EAAA,EAAgB,aAAa,MAAM,GAAG,GAAA,CAAgB,MAAM,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,YAAY,EAAE,IAAK,EAAQ,EAAW,GAAM,CAAC,GAAG,CAAC,EAAK,OAAO,KAAK,IAAM,EAAK,SAAS,eAAe,CAAI,EAA0I,OAArI,GAAM,CAAC,EAAU,SAAS,CAAI,EAAS,EAAsB,MAAM,KAAK,SAAS,iBAAiB,sBAAsB,EAAK,KAAK,CAAmB,CAAC,CAAC,KAAK,GAAI,CAAC,EAAU,CAAE,GAAG,CAAC,EAAU,SAAS,CAAE,GAAG,EAAG,sBAAsB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAK,EAAQ,MAAe,EAAO,CAAS,CAAC,CAAC,IAAI,GAAK,EAAW,EAAU,CAAG,CAAC,CAAC,EAAQ,EAAW,GAAI,CAAC,IAAI,EAAE,EAAG,cAAc,KAAM,GAAG,IAAI,SAAS,MAAK,CAAC,IAAM,EAAE,iBAAiB,CAAC,EAAE,GAAG,gBAAgB,KAAK,EAAE,SAAS,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,aAAc,CAAC,OAAO,IAAK,EAAM,EAAO,EAAM,EAAU,GAAU,EAAa,KAAW,MAAY,CAAC,EAAU,GAAQ,GAAa,aAAa,CAAY,EAAE,EAAa,eAAe,CAAC,EAAU,GAAM,EAAY,CAAE,EAAE,CAAiB,CAAE,EAAQ,MAAY,CAAU,GAAT,EAAO,EAAK,EAAU,OAAO,IAAM,EAAQ,EAAW,EAAQ,EAAM,EAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAM,OAAO,IAAM,EAAK,EAAO,YAAY,EAAa,EAAI,GAAG,EAAQ,SAAS,EAAE,IAAI,CAAI,GAAG,EAAE,sBAAsB,CAAC,CAAC,KAAK,IAAK,EAAI,EAAE,CAAC,EAAK,EAAI,IAAE,EAAI,EAAQ,QAAQ,CAAK,GACryC,IAAM,EAAS,EAAW,CAAK,EAAE,GAAG,GAAU,EAAS,UAAU,EAAS,cAAc,EAAS,aAAa,OAAO,IAAI,EAAE,EAAQ,OAAO,EAAE,GAAG,EAAE,IAAK,GAAG,EAAQ,GAAG,CAAC,EAAI,EAAE,KAAM,EAAM,GAAK,GAAG,IAAM,GAAY,EAAU,EAAI,GAAM,EAAK,CAAE,EAAQ,MAAgB,CAAC,AAAW,IAAO,sBAAsB,CAAO,CAAE,EAEtT,EAAO,iBAAiB,SAAS,EAAY,CAAC,QAAQ,GAAK,QAAQ,EAAI,CAAC,EAAE,EAAO,iBAAiB,SAAS,CAAW,EAAE,IAAM,EAAM,WAAW,EAAY,GAAG,EAAQ,EAAM,WAAW,EAAY,IAAI,EAAE,EAAS,SAAS,CAAC,EAAO,oBAAoB,SAAS,EAAY,CAAC,QAAQ,EAAI,CAAC,EAAE,EAAO,oBAAoB,SAAS,CAAW,EAAE,aAAa,CAAK,EAAE,aAAa,CAAK,EAAK,GAAa,aAAa,CAAY,EAAK,GAAO,qBAAqB,CAAM,CAAE,CAAC,EAAE,IAAM,EAAQ,GAAG,CAAC,IAAM,EAAE,EAAW,EAAM,EAAE,QAAQ,EAAE,OAAO,EAAK,GAAG,IAAG,EAAQ,EAAE,EAAU,EAAE,GAAM,EAAI,EAAG,EAAE,SAAS,iBAAiB,QAAQ,CAAO,EAAE,EAAS,SAAS,SAAS,oBAAoB,QAAQ,CAAO,CAAC,EAClqB,EAAW,EAAU,EAAY,EAAI,EAAE,EAAY,CAAW,EAAE,EAAY,EAAY,EAAK,EAAE,EAAY,EAC3G,IAAM,MAAW,EAAY,EAAY,EAAK,EAAE,EAAO,iBAAiB,SAAS,CAAM,EAAE,IAAM,EAAG,WAAW,EAAO,GAAG,EAAQ,EAAG,WAAW,EAAO,IAAI,EAAE,SAAS,OAAO,OAAO,OAAO,CAAM,EAAE,EAAS,SAAS,CAAC,EAAO,oBAAoB,SAAS,CAAM,EAAE,aAAa,CAAE,EAAE,aAAa,CAAE,CAAE,CAAC,EAAE,IAAM,MAAU,CAAC,IAAM,EAAE,EAAc,EAAK,IAAI,GAAY,EAAU,EAAE,GAAM,EAAK,CAAE,EAAE,EAAO,iBAAiB,WAAW,CAAK,EAAE,EAAO,iBAAiB,aAAa,CAAK,EAAE,EAAS,SAAS,CAAC,EAAO,oBAAoB,WAAW,CAAK,EAAE,EAAO,oBAAoB,aAAa,CAAK,CAAE,CAAC,CAAE,CACnkB,IAAI,EAAG,GAAO,EAAG,GAAO,EAAQ,EAAQ,MAAa,CAAC,EAAQ,EAAE,EAAO,QAAQ,GAAG,CAAC,IAAM,EAAI,GAAI,EAAE,EAAW,EAAE,EAAG,CAAE,EAAE,GAAM,IAAM,EAAE,aAAY,EAAE,WAAW,EAAO,GAAK,EAAE,EAAE,MAAM,CAAG,EAAO,EAAE,MAAM,EAAG,CAAC,CAAE,EAAQ,MAAiB,CAAC,AAAY,IAAQ,sBAAsB,CAAQ,CAAE,EAAQ,EAAO,GAAG,CAAC,EAAG,EAAE,QAAQ,EAAG,EAAE,QAAQ,EAAa,CAAE,EAAQ,MAAW,CAAC,EAAG,GAAG,EAAG,GAAG,EAAa,CAAE,EAAE,EAAO,iBAAiB,cAAc,EAAO,CAAC,QAAQ,EAAI,CAAC,EAAE,EAAO,iBAAiB,SAAS,EAAa,CAAC,QAAQ,GAAK,QAAQ,EAAI,CAAC,EAAE,SAAS,gBAAgB,iBAAiB,eAAe,CAAM,EAAE,EAAO,iBAAiB,OAAO,CAAM,EAAE,EAAS,SAAS,CAAC,EAAO,oBAAoB,cAAc,CAAM,EAAE,EAAO,oBAAoB,SAAS,EAAa,CAAC,QAAQ,EAAI,CAAC,EAAE,SAAS,gBAAgB,oBAAoB,eAAe,CAAM,EAAE,EAAO,oBAAoB,OAAO,CAAM,EAAK,GAAQ,qBAAqB,CAAO,EAAE,EAAO,QAAQ,GAAG,EAAW,EAAE,SAAS,CAAC,CAAE,CAAC,EAC/7B,SAAS,GAAQ,CAAC,GAAK,CAAC,aAAW,YAAY,EAAI,gBAAc,mBAAiB,EAAW,EAEiB,EAAK,MAAM,KAAK,SAAS,iBAAiB,4BAA4B,CAAC,CAAC,CAAC,OAAxK,GAAI,CAAC,IAAM,EAAE,EAAG,sBAAsB,EAAE,OAAO,EAAG,eAAe,CAAC,CAAC,OAAO,GAAG,EAAE,MAAM,CAAE,CAAgG,EAAE,GAAG,EAAW,SAAS,GAAG,EAAK,SAAS,EAAE,CAAI,IAAQ,IAAG,WAAW,EAAO,GAAG,EAAE,MAAO,CAAC,EAAY,EAAI,EAAI,QAAQ,GAAG,CAAC,EAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAa,EAAE,CAAC,KAAK,EAAW,QAAQ,EAAI,CAAC,CAAE,CAAC,CAAE,CAAC,EAAE,EAAK,QAAQ,GAAG,EAAQ,CAAC,CAAC,EAAE,EAAc,QAAQ,GAAG,EAAQ,CAAC,CAAC,EAAE,EAAgB,QAAQ,GAAG,EAAa,EAAE,CAAC,KAAK,EAAW,QAAQ,EAAI,CAAC,CAAC,EAAE,SAAS,iBAAiB,8BAA8B,CAAC,CAAC,QAAQ,GAAG,EAAa,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAK,CAAC,CAAC,CAAE,CAAU,OAAT,EAAO,MAAY,EAAS,QAAQ,GAAI,EAAG,CAAC,CAAE,EAAE,CAAC,EAAI,EAAQ,EAAS,EAAO,EAAY,EAAa,CAAO,CAAC,EAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,MAAM,CAAC,CAAC,CAAE,iCAjD3xB,IAA4B,IAEN,EAqB1D,EAAO,IAAU,EAAW,GAAS,EAAa,IAAU,EAAc,GAAS,EAAS,IAC3F,EAAkB,IAyB6yB,EAAoB,EAAgB,CAAC,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,aAAa,SAAS,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,IAAI,EAAE,YAAY,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,aAAa,SAAS,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,eAAe,EAAI,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC"}