{"version":3,"file":"FadeGrid.DdyODpgY.mjs","names":["useMemo","useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/zILhWb4q1fidr22vwQ0G/ACgb4m2GgmlRpfs6PlKv/FadeGrid.js"],"sourcesContent":["/**\n *  46\n * #46 Dot Grid\n * Decorative dotted grid background with\n * center vignette fade, appear animation, and mouse proximity effect.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 700\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback,useMemo,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// ─── Helpers ────────────────────────────────────────────────\n/**\n * Resolve any CSS color to a canvas-compatible hex/rgb string.\n * Canvas 2D's fillStyle silently rejects modern formats (oklch, lab, color-mix,\n * CSS variables, etc.). We use a temporary DOM element + getComputedStyle to let\n * the browser resolve the color, then feed the result to canvas.\n */let _colorProbe=null;const _colorCache=new Map;function resolveColorForCanvas(cssColor,fallback){if(!cssColor)return fallback;const cached=_colorCache.get(cssColor);if(cached)return cached;// Fast path — canvas context can validate simple formats instantly\nif(/^#[0-9a-f]{3,8}$/i.test(cssColor)||/^rgba?\\(/i.test(cssColor)){_colorCache.set(cssColor,cssColor);return cssColor;}// Slow path — use a DOM element to resolve any CSS color to rgb()\nif(typeof document!==\"undefined\"){if(!_colorProbe){_colorProbe=document.createElement(\"div\");_colorProbe.style.display=\"none\";document.body.appendChild(_colorProbe);}_colorProbe.style.color=\"\";_colorProbe.style.color=cssColor;const resolved=getComputedStyle(_colorProbe).color;if(resolved&&resolved!==\"\"){_colorCache.set(cssColor,resolved);return resolved;}}_colorCache.set(cssColor,fallback);return fallback;}/** Compute normalized stagger value (0–1) for a dot based on appear direction */function computeAppearIndex(row,col,rows,cols,direction,randomSeed){const totalDots=cols*rows;switch(direction){case\"top-left\":return(row*cols+col)/totalDots;case\"top-right\":return(row*cols+(cols-1-col))/totalDots;case\"bottom-left\":return((rows-1-row)*cols+col)/totalDots;case\"bottom-right\":return((rows-1-row)*cols+(cols-1-col))/totalDots;case\"center-out\":{const cx=(cols-1)/2;const cy=(rows-1)/2;const maxDist=Math.sqrt(cx*cx+cy*cy)||1;const dx=col-cx;const dy=row-cy;return Math.sqrt(dx*dx+dy*dy)/maxDist;}case\"edges-in\":{const cx=(cols-1)/2;const cy=(rows-1)/2;const maxDist=Math.sqrt(cx*cx+cy*cy)||1;const dx=col-cx;const dy=row-cy;return 1-Math.sqrt(dx*dx+dy*dy)/maxDist;}case\"random\":{const idx=row*cols+col;return idx<randomSeed.length?randomSeed[idx]:Math.random();}default:return(row*cols+col)/totalDots;}}/** Draw a dot shape into the canvas context at (x, y) with given radius */function drawDot(ctx,shape,x,y,r){switch(shape){case\"square\":ctx.rect(x-r,y-r,r*2,r*2);break;case\"diamond\":ctx.moveTo(x,y-r);ctx.lineTo(x+r,y);ctx.lineTo(x,y+r);ctx.lineTo(x-r,y);ctx.closePath();break;case\"triangle\":ctx.moveTo(x,y-r);ctx.lineTo(x+r*.866,y+r*.5);ctx.lineTo(x-r*.866,y+r*.5);ctx.closePath();break;case\"star\":{const spikes=5;const outerR=r;const innerR=r*.4;for(let i=0;i<spikes*2;i++){const rad=i*Math.PI/spikes-Math.PI/2;const sr=i%2===0?outerR:innerR;if(i===0)ctx.moveTo(x+sr*Math.cos(rad),y+sr*Math.sin(rad));else ctx.lineTo(x+sr*Math.cos(rad),y+sr*Math.sin(rad));}ctx.closePath();break;}case\"plus\":{const arm=r*.35;ctx.moveTo(x-arm,y-r);ctx.lineTo(x+arm,y-r);ctx.lineTo(x+arm,y-arm);ctx.lineTo(x+r,y-arm);ctx.lineTo(x+r,y+arm);ctx.lineTo(x+arm,y+arm);ctx.lineTo(x+arm,y+r);ctx.lineTo(x-arm,y+r);ctx.lineTo(x-arm,y+arm);ctx.lineTo(x-r,y+arm);ctx.lineTo(x-r,y-arm);ctx.lineTo(x-arm,y-arm);ctx.closePath();break;}case\"ring\":ctx.arc(x,y,r,0,Math.PI*2);ctx.moveTo(x+r*.55,y);ctx.arc(x,y,r*.55,0,Math.PI*2,true);break;default:ctx.arc(x,y,r,0,Math.PI*2);break;}}/** SVG path data for a dot shape centered at (cx, cy) with radius r */function dotShapeSVGPath(shape,cx,cy,r){switch(shape){case\"square\":return`M ${cx-r},${cy-r} h ${r*2} v ${r*2} h ${-r*2} Z`;case\"diamond\":return`M ${cx},${cy-r} L ${cx+r},${cy} L ${cx},${cy+r} L ${cx-r},${cy} Z`;case\"triangle\":return`M ${cx},${cy-r} L ${cx+r*.866},${cy+r*.5} L ${cx-r*.866},${cy+r*.5} Z`;case\"star\":{let p=\"\";for(let i=0;i<10;i++){const a=i*Math.PI/5-Math.PI/2;const sr=i%2===0?r:r*.4;p+=`${i===0?\"M\":\"L\"} ${cx+sr*Math.cos(a)},${cy+sr*Math.sin(a)} `;}return p+\"Z\";}case\"plus\":{const a=r*.35;return`M ${cx-a},${cy-r} L ${cx+a},${cy-r} L ${cx+a},${cy-a} L ${cx+r},${cy-a} L ${cx+r},${cy+a} L ${cx+a},${cy+a} L ${cx+a},${cy+r} L ${cx-a},${cy+r} L ${cx-a},${cy+a} L ${cx-r},${cy+a} L ${cx-r},${cy-a} L ${cx-a},${cy-a} Z`;}case\"ring\":return`M ${cx+r},${cy} A ${r},${r} 0 1,1 ${cx-r},${cy} A ${r},${r} 0 1,1 ${cx+r},${cy} Z M ${cx+r*.55},${cy} A ${r*.55},${r*.55} 0 1,0 ${cx-r*.55},${cy} A ${r*.55},${r*.55} 0 1,0 ${cx+r*.55},${cy} Z`;default:return`M ${cx+r},${cy} A ${r},${r} 0 1,1 ${cx-r},${cy} A ${r},${r} 0 1,1 ${cx+r},${cy} Z`;}}/** Apply easing to a 0–1 progress value */function applyEasing(t,easing){switch(easing){case\"linear\":return t;case\"ease-in-out\":return t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2;case\"spring\":return 1-Math.pow(Math.E,-6*t)*Math.cos(6*t);case\"bounce\":{if(t<1/2.75)return 7.5625*t*t;if(t<2/2.75){const t2=t-1.5/2.75;return 7.5625*t2*t2+.75;}if(t<2.5/2.75){const t2=t-2.25/2.75;return 7.5625*t2*t2+.9375;}const t2=t-2.625/2.75;return 7.5625*t2*t2+.984375;}default:return 1-Math.pow(1-t,3);}}/** Resolve fade preset to center position (normalized 0-1) and axis mode */function resolveFadePreset(preset,customX,customY){switch(preset){case\"center\":return{cx:.5,cy:.5,axis:\"radial\"};case\"top\":return{cx:.5,cy:0,axis:\"horizontal\"};case\"bottom\":return{cx:.5,cy:1,axis:\"horizontal\"};case\"left\":return{cx:0,cy:.5,axis:\"vertical\"};case\"right\":return{cx:1,cy:.5,axis:\"vertical\"};case\"custom\":return{cx:customX/100,cy:customY/100,axis:\"radial\"};default:return{cx:.5,cy:.5,axis:\"radial\"};}}/** Compute fade distance for a dot at normalized position (nx, ny) */function computeFadeDistance(nx,ny,cx,cy,axis,r){if(axis===\"horizontal\"){return Math.abs(ny-cy)/r;}if(axis===\"vertical\"){return Math.abs(nx-cx)/r;}const dx=nx-cx;const dy=ny-cy;return Math.sqrt(dx*dx+dy*dy)/r;}/** Resolve pulse preset to speed + intensity values */function resolvePulsePreset(preset){switch(preset){case\"gentle\":return{speed:.4,intensity:.5};case\"heartbeat\":return{speed:1.2,intensity:1.5};case\"ocean\":return{speed:.6,intensity:2};case\"fireflies\":return{speed:3,intensity:.8};case\"dramatic\":return{speed:.3,intensity:2.5};case\"nervous\":return{speed:4.5,intensity:.4};default:return null// \"custom\" — use manual values\n;}}// ─── Component ──────────────────────────────────────────────\n/**\n * @framerDisableUnlink\n */export default function DotGrid(props){const{grid={},color:rawColor,backgroundColor:rawBg,fade={},mouse={},animation={},pulse={},interaction={},style}=props;// Null-guard colors — JS default values only cover undefined, not null.\n// Framer can pass null during color picker transitions or undo.\nconst color=rawColor??\"#F97316\";const backgroundColor=rawBg??\"#FAF5F0\";const{dotShape=\"circle\",dotSize=10,gap=28}=grid;const{preset:fadePreset=\"center\",size:fadeSize=.35,softness:fadeSoftness=.4,invert:fadeInvert=false,x:fadeCustomX=50,y:fadeCustomY=50}=fade;const fadeEnabled=fadePreset!==\"none\";const fadeResolved=useMemo(()=>resolveFadePreset(fadePreset,fadeCustomX,fadeCustomY),[fadePreset,fadeCustomX,fadeCustomY]);const{radius:mouseRadius=120,growth:mouseGrowth=1.8}=mouse;const{trigger:appearTrigger=\"mount\",easing:appearEasing=\"ease-out\",duration:appearDuration=1.2,stagger:appearStagger=.6,direction:appearDirection=\"top-left\"}=animation;const{enabled:pulseEnabled=true,preset:pulsePreset=\"custom\",speed:pulseSpeedRaw=1,intensity:pulseIntensityRaw=1}=pulse;const pulseResolved=resolvePulsePreset(pulsePreset);const pulseSpeed=pulseResolved?.speed??pulseSpeedRaw;const pulseIntensity=pulseResolved?.intensity??pulseIntensityRaw;const{style:interactionStyle=\"none\",radius:interactionRadius=200,duration:interactionDuration=.6}=interaction;const canvasRef=useRef(null);const containerRef=useRef(null);const mouseRef=useRef({x:-9999,y:-9999});const mouseActiveRef=useRef(false);const settleFramesRef=useRef(0);const animProgress=useRef(0);const rafRef=useRef(0);const startTimeRef=useRef(0);const mouseScalesRef=useRef(new Float32Array(0));const pulseStartRef=useRef(0);const[isClient,setIsClient]=useState(false);const isStatic=useIsStaticRenderer();const isInViewRef=useRef(appearTrigger===\"mount\");const interactionRef=useRef([]);const pulseSeedRef=useRef(new Float32Array(0));const drawRef=useRef(()=>{});useEffect(()=>{startTransition(()=>setIsClient(true));return()=>{};},[]);// IntersectionObserver for \"inView\" trigger\nuseEffect(()=>{if(appearTrigger!==\"inView\"||!isClient)return()=>{};const container=containerRef.current;if(!container)return()=>{};const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){isInViewRef.current=true;startTimeRef.current=performance.now();observer.disconnect();}},{threshold:.1});observer.observe(container);return()=>observer.disconnect();},[isClient,appearTrigger]);// Reduced motion: disable mouse grow effect\nconst reducedMotionRef=useRef(false);useEffect(()=>{if(typeof window===\"undefined\")return()=>{};const mq=window.matchMedia(\"(prefers-reduced-motion: reduce)\");reducedMotionRef.current=mq.matches;const handler=e=>{reducedMotionRef.current=e.matches;};mq.addEventListener(\"change\",handler);return()=>mq.removeEventListener(\"change\",handler);},[]);// Stable random seed for \"random\" appear direction\nconst randomSeedRef=useRef(new Float32Array(0));const draw=useCallback(()=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const dpr=window.devicePixelRatio||1;// Use offsetWidth/Height — getBoundingClientRect() is affected by\n// ancestor CSS transforms (Framer's canvas zoom), causing dots to\n// render smaller than the actual layout size.\nconst w=canvas.offsetWidth;const h=canvas.offsetHeight;if(canvas.width!==w*dpr||canvas.height!==h*dpr){canvas.width=w*dpr;canvas.height=h*dpr;}ctx.setTransform(dpr,0,0,dpr,0,0);// Clear canvas — background is handled by the container div's CSS\n// backgroundColor, which supports all color formats (oklch, hsl, etc.).\n// Canvas 2D's fillStyle silently rejects modern CSS colors and retains\n// the previous value, causing the wrong color to appear.\nctx.clearRect(0,0,w,h);const spacing=dotSize+gap;const r=dotSize/2;const availW=w-2*r;const availH=h-2*r;const cols=Math.max(1,Math.floor(availW/spacing)+1);const rows=Math.max(1,Math.floor(availH/spacing)+1);const offsetX=r+(availW-(cols-1)*spacing)/2;const offsetY=r+(availH-(rows-1)*spacing)/2;const mx=mouseRef.current.x;const my=mouseRef.current.y;const totalDots=cols*rows;const progress=animProgress.current;const motionReduced=reducedMotionRef.current;const pulseActive=pulseEnabled&&!motionReduced;const pulseElapsed=pulseActive?(performance.now()-pulseStartRef.current)/1e3:0;// Ensure random seed is large enough\nif(appearDirection===\"random\"&&randomSeedRef.current.length<totalDots){const seed=new Float32Array(totalDots);for(let i=0;i<totalDots;i++)seed[i]=Math.random();randomSeedRef.current=seed;}// Ensure per-dot mouse scale array is large enough\nif(mouseScalesRef.current.length<totalDots){const old=mouseScalesRef.current;const arr=new Float32Array(totalDots);// Fill with 1 (no scale), copy existing values\narr.fill(1);arr.set(old.subarray(0,Math.min(old.length,totalDots)));mouseScalesRef.current=arr;}const mouseScales=mouseScalesRef.current;// Resolve dot color to a canvas-compatible format — Framer can send\n// oklch, hsl, color-mix, etc. which canvas 2D silently rejects.\nctx.fillStyle=resolveColorForCanvas(color,\"#000000\");for(let row=0;row<rows;row++){for(let col=0;col<cols;col++){const x=offsetX+col*spacing;const y=offsetY+row*spacing;const dotIdx=row*cols+col;// Normalized position (0-1)\nconst nx=cols>1?col/(cols-1):.5;const ny=rows>1?row/(rows-1):.5;// Vignette fade\nlet alpha=fadeEnabled?0:1;if(fadeEnabled){const d=computeFadeDistance(nx,ny,fadeResolved.cx,fadeResolved.cy,fadeResolved.axis,fadeSize+.001);const spread=.1+fadeSoftness*1.4;const edge=1-spread;const t=Math.max(0,Math.min(1,(d-edge)/(spread+.001)));const vignette=t*t*(3-2*t);alpha=fadeInvert?1-vignette:vignette;}// Appear animation with directional wave + opacity\nconst appearActive=isInViewRef.current;let scale=1;let appearAlpha=1;if(appearActive){const normalizedIndex=computeAppearIndex(row,col,rows,cols,appearDirection,randomSeedRef.current);const staggerDelay=normalizedIndex*appearStagger;const dotProgress=Math.max(0,Math.min(1,(progress-staggerDelay)/(1-appearStagger+.001)));scale=applyEasing(dotProgress,appearEasing);// Opacity leads scale for a softer entrance\nconst opacityT=Math.min(1,dotProgress*1.5);appearAlpha=opacityT*opacityT*(3-2*opacityT);}else{scale=0;appearAlpha=0;}// Mouse proximity growth (disabled for reduced motion)\nlet targetMouseScale=1;if(!motionReduced&&mx>-999){const mdx=x-mx;const mdy=y-my;const mDist=Math.sqrt(mdx*mdx+mdy*mdy);if(mDist<mouseRadius){const t=1-mDist/mouseRadius;const proximity=t*t*(3-2*t)// smoothstep\n;targetMouseScale=1+proximity*(mouseGrowth-1);}}// Adaptive lerp — snappier approach, gentler return\nconst current=mouseScales[dotIdx];const diff=targetMouseScale-current;const lerpSpeed=Math.abs(diff)<.01?1:diff>0?.16:.09;mouseScales[dotIdx]=current+diff*lerpSpeed;// Click/tap interaction effects\nlet interactionScale=0;const interactions=interactionRef.current;const now=performance.now();for(let k=0;k<interactions.length;k++){const ev=interactions[k];const elapsed=(now-ev.time)/1e3;if(elapsed>interactionDuration)continue;const wave=elapsed/interactionDuration;// Ease-out wave expansion for more natural spread\nconst easedWave=1-(1-wave)*(1-wave);const waveRadius=interactionRadius*easedWave;const dx=x-ev.x;const dy=y-ev.y;const dist=Math.sqrt(dx*dx+dy*dy);const thickness=interactionRadius*.35;const rawProximity=1-Math.min(1,Math.abs(dist-waveRadius)/thickness);// Smoothstep the proximity for softer edges\nconst proximity=rawProximity*rawProximity*(3-2*rawProximity);if(proximity>0){// Cubic fade-out for graceful dissipation\nconst fade=(1-wave)*(1-wave);if(interactionStyle===\"ripple\"){interactionScale+=proximity*fade*2;}else if(interactionStyle===\"repel\"){interactionScale-=proximity*fade*1;}}}// Pulse — preset-specific wave shapes\nlet pulseScale=1;let pulseAlpha=1;if(pulseActive){const t=pulseElapsed;const idx=dotIdx;switch(pulsePreset){case\"gentle\":{// Smooth radial breathing wave from center\nconst dist=Math.sqrt((nx-.5)*(nx-.5)+(ny-.5)*(ny-.5));const wave=Math.sin(t*pulseSpeed*1.5-dist*6);pulseScale=1+wave*.12*pulseIntensity;pulseAlpha=.7+wave*.3*pulseIntensity;break;}case\"heartbeat\":{// Double-beat (lub-dub) pattern\nconst cycle=t*pulseSpeed*.8%1;let beat=0;if(cycle<.12)beat=Math.sin(cycle/.12*Math.PI);else if(cycle>.18&&cycle<.3)beat=Math.sin((cycle-.18)/.12*Math.PI)*.6;// Radial delay from center\nconst dist=Math.sqrt((nx-.5)*(nx-.5)+(ny-.5)*(ny-.5));const delayed=Math.max(0,beat-dist*.8);pulseScale=1+delayed*.35*pulseIntensity;pulseAlpha=.6+delayed*.4*pulseIntensity;break;}case\"ocean\":{// Directional rolling waves (left to right + depth)\nconst wave1=Math.sin(t*pulseSpeed*1.2-nx*8);const wave2=Math.sin(t*pulseSpeed*.7-ny*5+1.3);const combined=wave1*.7+wave2*.3;pulseScale=1+combined*.15*pulseIntensity;pulseAlpha=.5+(combined*.5+.5)*.5*pulseIntensity;break;}case\"fireflies\":{// Random independent twinkle per dot\nif(pulseSeedRef.current.length<totalDots){const seed=new Float32Array(totalDots);for(let i=0;i<totalDots;i++)seed[i]=Math.random();pulseSeedRef.current=seed;}const offset=pulseSeedRef.current[idx]*6.28;const freq=.8+pulseSeedRef.current[idx]*2.2;const raw=Math.sin(t*pulseSpeed*freq+offset);// Sharpen into brief flashes\nconst flash=Math.max(0,raw)**3;pulseScale=1+flash*.5*pulseIntensity;pulseAlpha=.3+flash*.7*pulseIntensity;break;}case\"dramatic\":{// Slow powerful radial expansion from center\nconst dist=Math.sqrt((nx-.5)*(nx-.5)+(ny-.5)*(ny-.5));const wave=Math.sin(t*pulseSpeed*.8-dist*10);const envelope=Math.max(0,wave);pulseScale=1+envelope*.4*pulseIntensity;pulseAlpha=.3+envelope*.7*pulseIntensity;break;}case\"nervous\":{// Fast jittery per-dot noise\nif(pulseSeedRef.current.length<totalDots){const seed=new Float32Array(totalDots);for(let i=0;i<totalDots;i++)seed[i]=Math.random();pulseSeedRef.current=seed;}const s=pulseSeedRef.current[idx];const jitter1=Math.sin(t*pulseSpeed*7+s*50);const jitter2=Math.sin(t*pulseSpeed*11+s*30);const jitter=jitter1*.6+jitter2*.4;pulseScale=1+jitter*.15*pulseIntensity;pulseAlpha=.6+jitter*.25*pulseIntensity;break;}default:{// Custom — layered sine waves for organic feel\nconst phase1=nx*4+ny*3;const phase2=nx*2.3-ny*5.1;const wave1=Math.sin(t*pulseSpeed*2+phase1);const wave2=Math.sin(t*pulseSpeed*1.3+phase2)*.5;const combined=(wave1+wave2)/1.5;pulseScale=1+combined*.18*pulseIntensity;pulseAlpha=.5+(combined*.5+.5)*.5*pulseIntensity;break;}}// Clamp final values\npulseScale=Math.max(.4,Math.min(2.5,pulseScale));pulseAlpha=Math.max(.15,Math.min(1,pulseAlpha));}const finalScale=Math.max(0,scale*mouseScales[dotIdx]*pulseScale+interactionScale);const radius=dotSize/2*finalScale;if(radius<.3)continue;// Combine vignette fade with appear opacity and pulse\nconst finalAlpha=alpha*appearAlpha*pulseAlpha;ctx.globalAlpha=finalAlpha;ctx.beginPath();drawDot(ctx,dotShape,x,y,radius);ctx.fill();}}ctx.globalAlpha=1;},[dotShape,dotSize,gap,color,fadeEnabled,fadeResolved,fadeSize,fadeSoftness,fadeInvert,mouseRadius,mouseGrowth,appearEasing,appearStagger,appearDirection,pulseEnabled,pulsePreset,pulseSpeed,pulseIntensity,interactionStyle,interactionRadius,interactionDuration]);// Keep ref in sync so loops always call the latest draw without re-triggering effects\ndrawRef.current=draw;// Start/restart RAF loop — called on mount and on mouse enter\nconst startLoop=useCallback(()=>{if(rafRef.current)return;settleFramesRef.current=0;const loop=()=>{// Clean up expired interactions\nconst now=performance.now();const ints=interactionRef.current;while(ints.length>0&&(now-ints[0].time)/1e3>interactionDuration+.1){ints.shift();}drawRef.current();const hasActiveInteractions=ints.length>0;if(pulseEnabled||animProgress.current<1||mouseActiveRef.current||hasActiveInteractions){settleFramesRef.current=0;rafRef.current=requestAnimationFrame(loop);}else{// After mouse leaves, run ~25 frames for scales to settle smoothly\nsettleFramesRef.current++;if(settleFramesRef.current<25){rafRef.current=requestAnimationFrame(loop);}else{rafRef.current=0;}}};rafRef.current=requestAnimationFrame(loop);},[interactionDuration,pulseEnabled]);// Animation loop — only runs the appear animation once\nuseEffect(()=>{if(!isClient)return()=>{};// Animation already completed — just redraw, don't replay\nif(animProgress.current>=1){if(!pulseStartRef.current)pulseStartRef.current=performance.now();drawRef.current();startLoop();return()=>{cancelAnimationFrame(rafRef.current);rafRef.current=0;};}if(appearTrigger===\"mount\"){startTimeRef.current=performance.now();isInViewRef.current=true;}pulseStartRef.current=performance.now();const duration=appearDuration*1e3;const appearLoop=()=>{if(!isInViewRef.current){rafRef.current=requestAnimationFrame(appearLoop);return;}const elapsed=performance.now()-startTimeRef.current;animProgress.current=Math.min(1,elapsed/duration);drawRef.current();if(animProgress.current<1){rafRef.current=requestAnimationFrame(appearLoop);}else{// Appear done — switch to idle-aware loop\nrafRef.current=0;startLoop();}};rafRef.current=requestAnimationFrame(appearLoop);return()=>{cancelAnimationFrame(rafRef.current);rafRef.current=0;};},[isClient,appearDuration,appearTrigger,startLoop]);// Redraw when props change while animation loop is idle\nuseEffect(()=>{if(!isClient)return()=>{};if(animProgress.current>=1&&rafRef.current===0){drawRef.current();}return()=>{};},[isClient,draw]);// Mouse tracking\nuseEffect(()=>{if(!isClient)return()=>{};const container=containerRef.current;if(!container)return()=>{};const onMove=e=>{const rect=container.getBoundingClientRect();// Scale from visual (transformed) coords to layout coords\nconst scaleX=container.offsetWidth/rect.width;const scaleY=container.offsetHeight/rect.height;mouseRef.current.x=(e.clientX-rect.left)*scaleX;mouseRef.current.y=(e.clientY-rect.top)*scaleY;if(!mouseActiveRef.current){mouseActiveRef.current=true;startLoop();}};const onLeave=()=>{mouseRef.current.x=-9999;mouseRef.current.y=-9999;mouseActiveRef.current=false;// Loop will self-stop after mouse scales settle\n};const onClick=e=>{if(interactionStyle===\"none\")return;const rect=container.getBoundingClientRect();const scaleX=container.offsetWidth/rect.width;const scaleY=container.offsetHeight/rect.height;interactionRef.current.push({x:(e.clientX-rect.left)*scaleX,y:(e.clientY-rect.top)*scaleY,time:performance.now()});startLoop();};container.addEventListener(\"mousemove\",onMove);container.addEventListener(\"mouseleave\",onLeave);container.addEventListener(\"click\",onClick);return()=>{container.removeEventListener(\"mousemove\",onMove);container.removeEventListener(\"mouseleave\",onLeave);container.removeEventListener(\"click\",onClick);};},[isClient,interactionStyle,startLoop]);// Static / SSR fallback — individual SVG dots with fade,\n// matching the canvas draw() logic exactly.\nif(isStatic||!isClient){const spacing=dotSize+gap;const r=dotSize/2;// Use actual component dimensions from Framer's style prop so dot\n// sizes match the canvas renderer instead of scaling with a fixed viewBox.\nconst vw=typeof style?.width===\"number\"?style.width:1200;const vh=typeof style?.height===\"number\"?style.height:700;const availW=vw-2*r;const availH=vh-2*r;const cols=Math.max(1,Math.floor(availW/spacing)+1);const rows=Math.max(1,Math.floor(availH/spacing)+1);const offsetX=r+(availW-(cols-1)*spacing)/2;const offsetY=r+(availH-(rows-1)*spacing)/2;const dots=[];for(let row=0;row<rows;row++){for(let col=0;col<cols;col++){const x=offsetX+col*spacing;const y=offsetY+row*spacing;const nx=cols>1?col/(cols-1):.5;const ny=rows>1?row/(rows-1):.5;// Fade alpha (same math as canvas draw)\nlet alpha=fadeEnabled?0:1;if(fadeEnabled){const d=computeFadeDistance(nx,ny,fadeResolved.cx,fadeResolved.cy,fadeResolved.axis,fadeSize+.001);const spread=.1+fadeSoftness*1.4;const edge=1-spread;const t=Math.max(0,Math.min(1,(d-edge)/(spread+.001)));const vignette=t*t*(3-2*t);alpha=fadeInvert?1-vignette:vignette;}if(alpha<.01)continue;dots.push(/*#__PURE__*/_jsx(\"path\",{d:dotShapeSVGPath(dotShape,x,y,r),fill:color,fillOpacity:alpha},`${row}-${col}`));}}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,width:\"100%\",height:\"100%\",minWidth:200,minHeight:200,backgroundColor,position:\"relative\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"svg\",{style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\"},viewBox:`0 0 ${vw} ${vh}`,preserveAspectRatio:\"xMidYMid slice\",children:dots})});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,width:\"100%\",height:\"100%\",minWidth:200,minHeight:200,position:\"relative\",overflow:\"hidden\",backgroundColor},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{display:\"block\",width:\"100%\",height:\"100%\"}})});}DotGrid.displayName=\"Dot Grid\";DotGrid.defaultProps={grid:{dotShape:\"circle\",dotSize:10,gap:28},color:\"#F97316\",backgroundColor:\"#FAF5F0\",fade:{preset:\"center\",size:.35,softness:.4,invert:false,x:50,y:50},mouse:{radius:120,growth:1.8},animation:{trigger:\"mount\",easing:\"ease-out\",duration:1.2,stagger:.6,direction:\"top-left\"},pulse:{enabled:true,preset:\"custom\",speed:1,intensity:1},interaction:{style:\"none\",radius:200,duration:.6}};addPropertyControls(DotGrid,{grid:{type:ControlType.Object,title:\"Grid\",controls:{dotShape:{type:ControlType.Enum,title:\"Shape\",options:[\"circle\",\"square\",\"diamond\",\"triangle\",\"star\",\"plus\",\"ring\"],optionTitles:[\"Circle\",\"Square\",\"Diamond\",\"Triangle\",\"Star\",\"Plus\",\"Ring\"],defaultValue:\"circle\"},dotSize:{type:ControlType.Number,title:\"Dot Size\",min:2,max:30,step:1,unit:\"px\",defaultValue:10},gap:{type:ControlType.Number,title:\"Gap\",min:4,max:60,step:1,unit:\"px\",defaultValue:28}}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#F97316\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FAF5F0\"},fade:{type:ControlType.Object,title:\"Fade\",controls:{preset:{type:ControlType.Enum,title:\"Preset\",options:[\"none\",\"center\",\"top\",\"bottom\",\"left\",\"right\",\"custom\"],optionTitles:[\"None\",\"Center\",\"Top\",\"Bottom\",\"Left\",\"Right\",\"Custom\"],defaultValue:\"center\"},size:{type:ControlType.Number,title:\"Size\",min:.05,max:.7,step:.01,defaultValue:.35,hidden:props=>props.fade?.preset===\"none\",description:\"Clear area size (smaller = more dots hidden)\"},softness:{type:ControlType.Number,title:\"Softness\",min:0,max:1,step:.05,defaultValue:.4,hidden:props=>props.fade?.preset===\"none\"},invert:{type:ControlType.Boolean,title:\"Invert\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden:props=>props.fade?.preset===\"none\"},x:{type:ControlType.Number,title:\"X Position\",min:0,max:100,step:1,unit:\"%\",defaultValue:50,hidden:props=>props.fade?.preset!==\"custom\"},y:{type:ControlType.Number,title:\"Y Position\",min:0,max:100,step:1,unit:\"%\",defaultValue:50,hidden:props=>props.fade?.preset!==\"custom\"}}},mouse:{type:ControlType.Object,title:\"Mouse Effect\",controls:{radius:{type:ControlType.Number,title:\"Radius\",min:30,max:400,step:10,unit:\"px\",defaultValue:120,description:\"Area of effect around cursor\"},growth:{type:ControlType.Number,title:\"Growth\",min:1,max:4,step:.1,defaultValue:1.8,description:\"Max scale multiplier for dots near cursor\"}}},animation:{type:ControlType.Object,title:\"Appear Animation\",controls:{trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"mount\",\"inView\"],optionTitles:[\"On Mount\",\"In View\"],defaultValue:\"mount\"},easing:{type:ControlType.Enum,title:\"Easing\",options:[\"ease-out\",\"ease-in-out\",\"linear\",\"spring\",\"bounce\"],optionTitles:[\"Ease Out\",\"Ease In-Out\",\"Linear\",\"Spring\",\"Bounce\"],defaultValue:\"ease-out\"},duration:{type:ControlType.Number,title:\"Duration\",min:.2,max:4,step:.1,unit:\"s\",defaultValue:1.2},stagger:{type:ControlType.Number,title:\"Stagger\",min:0,max:.9,step:.05,defaultValue:.6,description:\"How much the wave is spread across dots (0 = all at once)\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\",\"center-out\",\"edges-in\",\"random\"],optionTitles:[\"Top Left\",\"Top Right\",\"Bottom Left\",\"Bottom Right\",\"Center Out\",\"Edges In\",\"Random\"],defaultValue:\"top-left\"}}},pulse:{type:ControlType.Object,title:\"Pulse Animation\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},preset:{type:ControlType.Enum,title:\"Preset\",options:[\"custom\",\"gentle\",\"heartbeat\",\"ocean\",\"fireflies\",\"dramatic\",\"nervous\"],optionTitles:[\"Custom\",\"Gentle Breathe\",\"Heartbeat\",\"Ocean Waves\",\"Fireflies\",\"Dramatic\",\"Nervous Energy\"],defaultValue:\"custom\",hidden:props=>!props.pulse?.enabled},speed:{type:ControlType.Number,title:\"Speed\",min:.1,max:5,step:.1,defaultValue:1,hidden:props=>!props.pulse?.enabled||props.pulse?.preset!==\"custom\"},intensity:{type:ControlType.Number,title:\"Intensity\",min:.1,max:3,step:.1,defaultValue:1,hidden:props=>!props.pulse?.enabled||props.pulse?.preset!==\"custom\",description:\"Strength of the scale throb and opacity ripple\"}}},interaction:{type:ControlType.Object,title:\"Click Effect\",controls:{style:{type:ControlType.Enum,title:\"Style\",options:[\"none\",\"ripple\",\"repel\"],optionTitles:[\"None\",\"Ripple\",\"Repel\"],defaultValue:\"none\"},radius:{type:ControlType.Number,title:\"Radius\",min:50,max:500,step:10,unit:\"px\",defaultValue:200,hidden:props=>props.interaction?.style===\"none\",description:\"Size of the ripple/repel wave\"},duration:{type:ControlType.Number,title:\"Duration\",min:.2,max:2,step:.1,unit:\"s\",defaultValue:.6,hidden:props=>props.interaction?.style===\"none\",description:\"How long the effect lasts\"}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DotGrid\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FadeGrid.map"],"mappings":"mOAgBkD,SAAS,GAAsB,EAAS,EAAS,CAAC,GAAG,CAAC,EAAS,OAAO,EAAS,IAAM,EAAO,EAAY,IAAI,CAAQ,EAAE,GAAG,EAAO,OAAO,EACzL,GAAG,oBAAoB,KAAK,CAAQ,GAAG,YAAY,KAAK,CAAQ,EAAsC,OAAnC,EAAY,IAAI,EAAS,CAAQ,EAAS,EAC7G,GAAG,OAAO,SAAW,IAAY,CAAK,IAAa,EAAY,SAAS,cAAc,KAAK,EAAE,EAAY,MAAM,QAAQ,OAAO,SAAS,KAAK,YAAY,CAAW,GAAG,EAAY,MAAM,MAAM,GAAG,EAAY,MAAM,MAAM,EAAS,IAAM,EAAS,iBAAiB,CAAW,CAAC,CAAC,MAAM,GAAG,GAAU,IAAW,GAAuC,OAAnC,EAAY,IAAI,EAAS,CAAQ,EAAS,CAAU,CAAoC,OAAnC,EAAY,IAAI,EAAS,CAAQ,EAAS,CAAS,CAAkF,SAAS,GAAmB,EAAI,EAAI,EAAK,EAAK,EAAU,EAAW,CAAC,IAAM,EAAU,EAAK,EAAK,OAAO,EAAP,CAAkB,IAAI,WAAW,OAAO,EAAI,EAAK,GAAK,EAAU,IAAI,YAAY,OAAO,EAAI,GAAM,EAAK,EAAE,IAAM,EAAU,IAAI,cAAc,QAAQ,EAAK,EAAE,GAAK,EAAK,GAAK,EAAU,IAAI,eAAe,QAAQ,EAAK,EAAE,GAAK,GAAM,EAAK,EAAE,IAAM,EAAU,IAAI,aAAa,CAAC,IAAM,GAAI,EAAK,GAAG,EAAQ,GAAI,EAAK,GAAG,EAAQ,EAAQ,KAAK,KAAK,EAAG,EAAG,EAAG,CAAE,GAAG,EAAQ,EAAG,EAAI,EAAS,EAAG,EAAI,EAAG,OAAO,KAAK,KAAK,EAAG,EAAG,EAAG,CAAE,EAAE,CAAQ,CAAC,IAAI,WAAW,CAAC,IAAM,GAAI,EAAK,GAAG,EAAQ,GAAI,EAAK,GAAG,EAAQ,EAAQ,KAAK,KAAK,EAAG,EAAG,EAAG,CAAE,GAAG,EAAQ,EAAG,EAAI,EAAS,EAAG,EAAI,EAAG,MAAO,GAAE,KAAK,KAAK,EAAG,EAAG,EAAG,CAAE,EAAE,CAAQ,CAAC,IAAI,SAAS,CAAC,IAAM,EAAI,EAAI,EAAK,EAAI,OAAO,EAAI,EAAW,OAAO,EAAW,GAAK,KAAK,OAAO,CAAE,CAAC,QAAQ,OAAO,EAAI,EAAK,GAAK,CAAU,CAAC,CAA4E,SAAS,GAAQ,EAAI,EAAM,EAAE,EAAE,EAAE,CAAC,OAAO,EAAP,CAAc,IAAI,SAAS,EAAI,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,UAAU,EAAI,OAAO,EAAE,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAE,CAAC,EAAE,EAAI,UAAU,EAAE,MAAM,IAAI,WAAW,EAAI,OAAO,EAAE,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAI,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAI,UAAU,EAAE,MAAM,IAAI,OAAO,CAAC,IAAqB,EAAO,EAAQ,EAAO,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,GAAS,IAAI,CAAC,IAAM,EAAI,EAAE,KAAK,GAAG,EAAO,KAAK,GAAG,EAAQ,EAAG,EAAE,GAAI,EAAE,EAAO,EAAU,IAAI,EAAE,EAAI,OAAO,EAAE,EAAG,KAAK,IAAI,CAAG,EAAE,EAAE,EAAG,KAAK,IAAI,CAAG,CAAC,EAAO,EAAI,OAAO,EAAE,EAAG,KAAK,IAAI,CAAG,EAAE,EAAE,EAAG,KAAK,IAAI,CAAG,CAAC,CAAE,CAAC,EAAI,UAAU,EAAE,KAAM,CAAC,IAAI,OAAO,CAAC,IAAM,EAAI,EAAE,IAAI,EAAI,OAAO,EAAE,EAAI,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAI,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAI,EAAE,CAAG,EAAE,EAAI,OAAO,EAAE,EAAE,EAAE,CAAG,EAAE,EAAI,OAAO,EAAE,EAAE,EAAE,CAAG,EAAE,EAAI,OAAO,EAAE,EAAI,EAAE,CAAG,EAAE,EAAI,OAAO,EAAE,EAAI,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAI,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAI,EAAE,CAAG,EAAE,EAAI,OAAO,EAAE,EAAE,EAAE,CAAG,EAAE,EAAI,OAAO,EAAE,EAAE,EAAE,CAAG,EAAE,EAAI,OAAO,EAAE,EAAI,EAAE,CAAG,EAAE,EAAI,UAAU,EAAE,KAAM,CAAC,IAAI,OAAO,EAAI,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,EAAI,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,EAAI,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAI,EAAE,MAAM,QAAQ,EAAI,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,KAAM,CAAC,CAAwE,SAAS,EAAgB,EAAM,EAAG,EAAG,EAAE,CAAC,OAAO,EAAP,CAAc,IAAI,SAAS,MAAM,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,IAAI,UAAU,MAAM,KAAK,EAAG,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,KAAK,EAAG,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,IAAI,IAAI,WAAW,MAAM,KAAK,EAAG,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,KAAK,GAAG,EAAG,EAAE,GAAG,KAAK,EAAG,EAAE,KAAK,GAAG,EAAG,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAM,EAAE,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAQ,EAAG,EAAE,GAAI,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,EAAG,EAAG,KAAK,IAAI,CAAC,EAAE,GAAG,EAAG,EAAG,KAAK,IAAI,CAAC,EAAE,EAAG,CAAC,OAAO,EAAE,GAAI,CAAC,IAAI,OAAO,CAAC,IAAM,EAAE,EAAE,IAAI,MAAM,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,KAAK,EAAG,EAAE,GAAG,EAAG,EAAE,GAAI,CAAC,IAAI,OAAO,MAAM,KAAK,EAAG,EAAE,GAAG,EAAG,KAAK,EAAE,GAAG,EAAE,SAAS,EAAG,EAAE,GAAG,EAAG,KAAK,EAAE,GAAG,EAAE,SAAS,EAAG,EAAE,GAAG,EAAG,OAAO,EAAG,EAAE,IAAI,GAAG,EAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,SAAS,EAAG,EAAE,IAAI,GAAG,EAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,SAAS,EAAG,EAAE,IAAI,GAAG,EAAG,IAAI,QAAQ,MAAM,KAAK,EAAG,EAAE,GAAG,EAAG,KAAK,EAAE,GAAG,EAAE,SAAS,EAAG,EAAE,GAAG,EAAG,KAAK,EAAE,GAAG,EAAE,SAAS,EAAG,EAAE,GAAG,EAAG,GAAI,CAAC,CAA4C,SAAS,GAAY,EAAE,EAAO,CAAC,OAAO,EAAP,CAAe,IAAI,SAAS,OAAO,EAAE,IAAI,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAW,GAAG,EAAE,IAAE,EAAG,EAAE,IAAI,SAAS,MAAO,GAAW,KAAK,IAAE,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,MAAO,QAAO,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,IAAM,EAAG,EAAE,IAAI,KAAK,MAAO,QAAO,EAAG,EAAG,GAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,IAAM,EAAG,EAAE,KAAK,KAAK,MAAO,QAAO,EAAG,EAAG,KAAM,CAAC,IAAM,EAAG,EAAE,MAAM,KAAK,MAAO,QAAO,EAAG,EAAG,OAAQ,CAAC,QAAQ,MAAO,IAAW,EAAE,IAAE,CAAG,CAAC,CAA6E,SAAS,GAAkB,EAAO,EAAQ,EAAQ,CAAC,OAAO,EAAP,CAAe,IAAI,SAAS,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,QAAQ,EAAE,IAAI,MAAM,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,YAAY,EAAE,IAAI,SAAS,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,YAAY,EAAE,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,UAAU,EAAE,IAAI,QAAQ,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,UAAU,EAAE,IAAI,SAAS,MAAM,CAAC,GAAG,EAAQ,IAAI,GAAG,EAAQ,IAAI,KAAK,QAAQ,EAAE,QAAQ,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,QAAQ,CAAE,CAAC,CAAuE,SAAS,GAAoB,EAAG,EAAG,EAAG,EAAG,EAAK,EAAE,CAAC,GAAG,IAAO,aAAc,OAAO,KAAK,IAAI,EAAG,CAAE,EAAE,EAAG,GAAG,IAAO,WAAY,OAAO,KAAK,IAAI,EAAG,CAAE,EAAE,EAAG,IAAM,EAAG,EAAG,EAAS,EAAG,EAAG,EAAG,OAAO,KAAK,KAAK,EAAG,EAAG,EAAG,CAAE,EAAE,CAAE,CAAwD,SAAS,EAAmB,EAAO,CAAC,OAAO,EAAP,CAAe,IAAI,SAAS,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,EAAE,IAAI,YAAY,MAAM,CAAC,MAAM,IAAI,UAAU,GAAG,EAAE,IAAI,QAAQ,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,IAAI,YAAY,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,WAAW,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,IAAI,UAAU,MAAM,CAAC,MAAM,IAAI,UAAU,EAAE,EAAE,QAAQ,OAAO,IACvlK,CAAC,CAGC,SAAwB,EAAQ,EAAM,CAAC,GAAK,CAAC,OAAK,CAAC,EAAE,MAAM,EAAS,gBAAgB,EAAM,OAAK,CAAC,EAAE,QAAM,CAAC,EAAE,YAAU,CAAC,EAAE,QAAM,CAAC,EAAE,cAAY,CAAC,EAAE,SAAO,EAEpJ,EAAM,GAAU,UAAgB,EAAgB,GAAO,UAAe,CAAC,YAAS,SAAS,UAAQ,GAAG,MAAI,IAAI,EAAU,CAAC,OAAO,EAAW,SAAS,KAAK,GAAS,IAAI,SAAS,GAAa,GAAG,OAAO,GAAW,GAAM,EAAE,EAAY,GAAG,EAAE,EAAY,IAAI,EAAW,EAAY,IAAa,OAAa,EAAaA,MAAY,GAAkB,EAAW,EAAY,CAAW,EAAE,CAAC,EAAW,EAAY,CAAW,CAAC,EAAO,CAAC,OAAO,GAAY,IAAI,OAAO,GAAY,KAAK,EAAW,CAAC,QAAQ,EAAc,QAAQ,OAAO,GAAa,WAAW,SAAS,EAAe,IAAI,QAAQ,EAAc,GAAG,UAAU,EAAgB,YAAY,EAAe,CAAC,QAAQ,EAAa,GAAK,OAAO,GAAY,SAAS,MAAM,EAAc,EAAE,UAAU,GAAkB,GAAG,EAAY,EAAc,EAAmB,EAAW,EAAQ,EAAW,GAAe,OAAO,EAAoB,EAAe,GAAe,WAAW,GAAuB,CAAC,MAAM,EAAiB,OAAO,OAAO,GAAkB,IAAI,SAAS,EAAoB,IAAI,EAAkB,GAAUC,EAAO,IAAI,EAAQ,EAAaA,EAAO,IAAI,EAAQ,EAASA,EAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAQ,EAAeA,EAAO,EAAK,EAAQ,EAAgBA,EAAO,CAAC,EAAQ,EAAaA,EAAO,CAAC,EAAQ,EAAOA,EAAO,CAAC,EAAQ,EAAaA,EAAO,CAAC,EAAQ,EAAeA,EAAO,IAAI,YAAe,EAAQ,GAAcA,EAAO,CAAC,EAAO,CAAC,EAAS,IAAaC,EAAS,EAAK,EAAQ,GAAS,EAAoB,EAAQ,EAAYD,EAAO,IAAgB,OAAO,EAAQ,GAAeA,EAAO,CAAC,CAAC,EAAQ,EAAaA,EAAO,IAAI,YAAe,EAAQ,EAAQA,MAAW,CAAC,CAAC,EAAE,OAAe,MAAoB,GAAY,EAAI,CAAC,MAAY,CAAC,GAAI,CAAC,CAAC,EACrpD,MAAc,CAAC,GAAG,IAAgB,UAAU,CAAC,EAAS,UAAU,CAAC,EAAE,IAAM,EAAU,EAAa,QAAQ,GAAG,CAAC,EAAU,UAAU,CAAC,EAAE,IAAM,EAAS,IAAI,sBAAsB,CAAC,KAAS,CAAI,EAAM,iBAAgB,EAAY,QAAQ,GAAK,EAAa,QAAQ,YAAY,IAAI,EAAE,EAAS,WAAW,EAAG,EAAE,CAAC,UAAU,EAAE,CAAC,EAA8B,OAA5B,EAAS,QAAQ,CAAS,MAAY,EAAS,WAAW,CAAE,EAAE,CAAC,EAAS,CAAa,CAAC,EAC/Y,IAAM,GAAiBA,EAAO,EAAK,EAAE,MAAc,CAAC,GAAU,IAAS,OAAY,UAAU,CAAC,EAAE,IAAM,EAAG,EAAO,WAAW,kCAAkC,EAAE,GAAiB,QAAQ,EAAG,QAAQ,IAAM,EAAQ,GAAG,CAAC,GAAiB,QAAQ,EAAE,OAAQ,EAAwC,OAAtC,EAAG,iBAAiB,SAAS,CAAO,MAAY,EAAG,oBAAoB,SAAS,CAAO,CAAE,EAAE,CAAC,CAAC,EACvV,IAAM,GAAcA,EAAO,IAAI,YAAe,EAAQ,GAAKE,MAAgB,CAAC,IAAM,EAAO,GAAU,QAAQ,GAAG,CAAC,EAAO,OAAO,IAAM,EAAI,EAAO,WAAW,IAAI,EAAE,GAAG,CAAC,EAAI,OAAO,IAAM,EAAI,EAAO,kBAAkB,EAG3M,EAAE,EAAO,YAAkB,EAAE,EAAO,cAAgB,EAAO,QAAQ,EAAE,GAAK,EAAO,SAAS,EAAE,KAAK,EAAO,MAAM,EAAE,EAAI,EAAO,OAAO,EAAE,GAAK,EAAI,aAAa,EAAI,EAAE,EAAE,EAAI,EAAE,CAAC,EAI/K,EAAI,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,IAAM,EAAQ,EAAQ,EAAU,EAAE,EAAQ,EAAQ,EAAO,EAAE,EAAE,EAAQ,EAAO,EAAE,EAAE,EAAQ,EAAK,KAAK,IAAI,EAAE,KAAK,MAAM,EAAO,CAAO,EAAE,CAAC,EAAQ,EAAK,KAAK,IAAI,EAAE,KAAK,MAAM,EAAO,CAAO,EAAE,CAAC,EAAQ,EAAQ,GAAG,GAAQ,EAAK,GAAG,GAAS,EAAQ,EAAQ,GAAG,GAAQ,EAAK,GAAG,GAAS,EAAQ,EAAG,EAAS,QAAQ,EAAQ,EAAG,EAAS,QAAQ,EAAQ,EAAU,EAAK,EAAW,GAAS,EAAa,QAAc,EAAc,GAAiB,QAAc,EAAY,GAAc,CAAC,EAAoB,EAAa,GAAa,YAAY,IAAI,EAAE,GAAc,SAAS,IAAI,EACxkB,GAAG,IAAkB,UAAU,GAAc,QAAQ,OAAO,EAAU,CAAC,IAAM,EAAK,IAAI,aAAa,CAAS,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAU,IAAI,EAAK,GAAG,KAAK,OAAO,EAAE,GAAc,QAAQ,CAAK,CAC3L,GAAG,EAAe,QAAQ,OAAO,EAAU,CAAC,IAAM,EAAI,EAAe,QAAc,EAAI,IAAI,aAAa,CAAS,EACjH,EAAI,KAAK,CAAC,EAAE,EAAI,IAAI,EAAI,SAAS,EAAE,KAAK,IAAI,EAAI,OAAO,CAAS,CAAC,CAAC,EAAE,EAAe,QAAQ,CAAI,CAAC,IAAM,EAAY,EAAe,QAEjI,EAAI,UAAU,GAAsB,EAAM,SAAS,EAAE,IAAI,IAAI,EAAI,EAAE,EAAI,EAAK,IAAO,IAAI,IAAI,EAAI,EAAE,EAAI,EAAK,IAAM,CAAC,IAAM,EAAE,EAAQ,EAAI,EAAc,EAAE,EAAQ,EAAI,EAAc,EAAO,EAAI,EAAK,EACzL,EAAG,EAAK,EAAE,GAAK,EAAK,GAAG,GAAS,EAAG,EAAK,EAAE,GAAK,EAAK,GAAG,GACzD,EAAM,IAAgB,GAAG,EAAY,CAAC,IAAM,EAAE,GAAoB,EAAG,EAAG,EAAa,GAAG,EAAa,GAAG,EAAa,KAAK,GAAS,IAAI,EAAQ,EAAO,GAAG,GAAa,IAAU,EAAK,EAAE,EAAa,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,IAAO,EAAO,KAAK,CAAC,EAAQ,EAAS,EAAE,GAAG,EAAE,EAAE,GAAG,EAAM,GAAW,EAAE,EAAS,CAAS,CACzT,IAAM,GAAa,EAAY,QAAY,EAAM,EAAM,EAAY,EAAE,GAAG,GAAa,CAAmG,IAAM,EAAlF,GAAmB,EAAI,EAAI,EAAK,EAAK,EAAgB,GAAc,OAA0C,EAAE,EAAoB,EAAY,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,GAAS,IAAe,EAAE,EAAc,KAAK,CAAC,EAAE,EAAM,GAAY,EAAY,EAAY,EAC5W,IAAM,EAAS,KAAK,IAAI,EAAE,EAAY,GAAG,EAAE,EAAY,EAAS,GAAU,EAAE,EAAE,EAAU,KAAM,GAAM,EAAE,EAAY,EAClH,IAAI,EAAiB,EAAE,GAAG,CAAC,GAAe,EAAG,KAAK,CAAC,IAAM,EAAI,EAAE,EAAS,EAAI,EAAE,EAAS,EAAM,KAAK,KAAK,EAAI,EAAI,EAAI,CAAG,EAAE,GAAG,EAAM,GAAY,CAAC,IAAM,EAAE,EAAE,EAAM,GAC7J,EAAiB,EADwK,EAAE,GAAG,EAAE,EAAE,IACpK,GAAY,EAAG,CAAC,CAC/C,IAAM,EAAQ,EAAY,GAAc,EAAK,EAAiB,EAA4D,EAAY,GAAQ,EAAQ,GAAhE,KAAK,IAAI,CAAI,EAAE,IAAI,EAAE,EAAK,EAAE,IAAI,KACtH,IAAI,EAAiB,EAAQ,EAAa,GAAe,QAAc,EAAI,YAAY,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAa,OAAO,IAAI,CAAC,IAAM,EAAG,EAAa,GAAS,GAAS,EAAI,EAAG,MAAM,IAAI,GAAG,EAAQ,EAAoB,SAAS,IAAM,EAAK,EAAQ,EAClP,EAAU,GAAG,EAAE,IAAO,EAAE,GAAY,EAAW,GAAkB,EAAgB,EAAG,EAAE,EAAG,EAAQ,EAAG,EAAE,EAAG,EAAQ,EAAK,KAAK,KAAK,EAAG,EAAG,EAAG,CAAE,EAAQ,EAAU,GAAkB,IAAU,EAAa,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAK,CAAU,EAAE,CAAS,EACtP,EAAU,EAAa,GAAc,EAAE,EAAE,GAAc,GAAG,EAAU,EAAE,CAC5E,IAAM,GAAM,EAAE,IAAO,EAAE,GAAS,IAAmB,SAAU,GAAkB,EAAU,EAAK,EAAW,IAAmB,UAAS,GAAkB,EAAU,EAAK,EAAG,CAAC,CAC1K,IAAI,EAAW,EAAM,EAAW,EAAE,GAAG,EAAY,CAAC,IAAM,EAAE,EAAmB,EAAI,EAAO,OAAO,GAAP,CAAoB,IAAI,SAAS,CACzH,IAAM,EAAK,KAAK,MAAM,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,GAAG,EAAQ,EAAK,KAAK,IAAI,EAAE,EAAW,IAAI,EAAK,CAAC,EAAE,EAAW,EAAE,EAAK,IAAI,EAAe,EAAW,GAAG,EAAK,GAAG,EAAe,KAAM,CAAC,IAAI,YAAY,CACpM,IAAM,EAAM,EAAE,EAAW,GAAG,EAAM,EAAK,EAAK,EAAM,IAAI,EAAK,KAAK,IAAI,EAAM,IAAI,KAAK,EAAE,EAAU,EAAM,KAAK,EAAM,KAAG,EAAK,KAAK,KAAK,EAAM,KAAK,IAAI,KAAK,EAAE,EAAE,IAC1J,IAAM,EAAK,KAAK,MAAM,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,GAAG,EAAQ,EAAQ,KAAK,IAAI,EAAE,EAAK,EAAK,EAAE,EAAE,EAAW,EAAE,EAAQ,IAAI,EAAe,EAAW,GAAG,EAAQ,GAAG,EAAe,KAAM,CAAC,IAAI,QAAQ,CAChM,IAAM,EAAM,KAAK,IAAI,EAAE,EAAW,IAAI,EAAG,CAAC,EAAQ,EAAM,KAAK,IAAI,EAAE,EAAW,GAAG,EAAG,EAAE,GAAG,EAAQ,EAAS,EAAM,GAAG,EAAM,GAAG,EAAW,EAAE,EAAS,IAAI,EAAe,EAAW,IAAI,EAAS,GAAG,IAAI,GAAG,EAAe,KAAM,CAAC,IAAI,YAAY,CAC7O,GAAG,EAAa,QAAQ,OAAO,EAAU,CAAC,IAAM,EAAK,IAAI,aAAa,CAAS,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAU,IAAI,EAAK,GAAG,KAAK,OAAO,EAAE,EAAa,QAAQ,CAAK,CAAC,IAAM,EAAO,EAAa,QAAQ,GAAK,KAAW,EAAK,GAAG,EAAa,QAAQ,GAAK,IAAU,EAAI,KAAK,IAAI,EAAE,EAAW,EAAK,CAAM,EAC3R,EAAM,KAAK,IAAI,EAAE,CAAG,GAAG,EAAE,EAAW,EAAE,EAAM,GAAG,EAAe,EAAW,GAAG,EAAM,GAAG,EAAe,KAAM,CAAC,IAAI,WAAW,CAChI,IAAM,EAAK,KAAK,MAAM,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,GAAG,EAAQ,EAAK,KAAK,IAAI,EAAE,EAAW,GAAG,EAAK,EAAE,EAAQ,EAAS,KAAK,IAAI,EAAE,CAAI,EAAE,EAAW,EAAE,EAAS,GAAG,EAAe,EAAW,GAAG,EAAS,GAAG,EAAe,KAAM,CAAC,IAAI,UAAU,CACzO,GAAG,EAAa,QAAQ,OAAO,EAAU,CAAC,IAAM,EAAK,IAAI,aAAa,CAAS,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAU,IAAI,EAAK,GAAG,KAAK,OAAO,EAAE,EAAa,QAAQ,CAAK,CAAC,IAAM,EAAE,EAAa,QAAQ,GAAW,EAAQ,KAAK,IAAI,EAAE,EAAW,EAAE,EAAE,EAAE,EAAQ,EAAQ,KAAK,IAAI,EAAE,EAAW,GAAG,EAAE,EAAE,EAAQ,EAAO,EAAQ,GAAG,EAAQ,GAAG,EAAW,EAAE,EAAO,IAAI,EAAe,EAAW,GAAG,EAAO,IAAI,EAAe,KAAM,CAAC,QAAQ,CAC1Z,IAAM,EAAO,EAAG,EAAE,EAAG,EAAQ,EAAO,EAAG,IAAI,EAAG,IAAuG,GAAvF,KAAK,IAAI,EAAE,EAAW,EAAE,CAA6E,EAAzD,KAAK,IAAI,EAAE,EAAW,IAAI,CAAM,EAAE,IAAgC,IAAI,EAAW,EAAE,EAAS,IAAI,EAAe,EAAW,IAAI,EAAS,GAAG,IAAI,GAAG,EAAe,KAAM,CAAC,CACjR,EAAW,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,CAAU,CAAC,EAAE,EAAW,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,CAAU,CAAC,CAAE,CAAC,IAAM,GAAW,KAAK,IAAI,EAAE,EAAM,EAAY,GAAQ,EAAW,CAAgB,EAAQ,EAAO,EAAQ,EAAE,GAAc,EAAO,KACnL,EAAI,YAAjC,EAAM,EAAY,EAAsC,EAAI,UAAU,EAAE,GAAQ,EAAI,GAAS,EAAE,EAAE,CAAM,EAAE,EAAI,KAAK,EAAE,CAAE,EAAI,YAAY,CAAE,EAAE,CAAC,GAAS,EAAQ,EAAI,EAAM,EAAY,EAAa,GAAS,GAAa,GAAW,GAAY,GAAY,GAAa,EAAc,EAAgB,EAAa,GAAY,EAAW,EAAe,EAAiB,GAAkB,CAAmB,CAAC,EAC9Z,EAAQ,QAAQ,GAChB,IAAM,EAAUA,MAAgB,CAAC,GAAG,EAAO,QAAQ,OAAO,EAAgB,QAAQ,EAAE,IAAM,MAAS,CACnG,IAAM,EAAI,YAAY,IAAI,EAAQ,EAAK,GAAe,QAAQ,KAAM,EAAK,OAAO,IAAI,EAAI,EAAK,EAAE,CAAC,MAAM,IAAI,EAAoB,IAAI,EAAK,MAAM,EAAG,EAAQ,QAAQ,EAAE,IAAM,EAAsB,EAAK,OAAO,EAAK,GAAc,EAAa,QAAQ,GAAG,EAAe,SAAS,GAAuB,EAAgB,QAAQ,EAAE,EAAO,QAAQ,sBAAsB,CAAI,IACvW,EAAgB,UAAa,EAAgB,QAAQ,GAAI,EAAO,QAAQ,sBAAsB,CAAI,EAAQ,EAAO,QAAQ,EAAI,EAAE,EAAO,QAAQ,sBAAsB,CAAI,CAAE,EAAE,CAAC,EAAoB,CAAY,CAAC,EAS9M,GARA,MAAc,CAAC,GAAG,CAAC,EAAS,UAAU,CAAC,EACvC,GAAG,EAAa,SAAS,EAAmG,MAAhG,CAA0B,GAAc,UAAQ,YAAY,IAAI,EAAE,EAAQ,QAAQ,EAAE,EAAU,MAAY,CAAC,qBAAqB,EAAO,OAAO,EAAE,EAAO,QAAQ,CAAE,EAAM,IAAgB,UAAS,EAAa,QAAQ,YAAY,IAAI,EAAE,EAAY,QAAQ,IAAM,GAAc,QAAQ,YAAY,IAAI,EAAE,IAAM,EAAS,EAAe,IAAU,MAAe,CAAC,GAAG,CAAC,EAAY,QAAQ,CAAC,EAAO,QAAQ,sBAAsB,CAAU,EAAE,MAAO,CAAC,IAAM,EAAQ,YAAY,IAAI,EAAE,EAAa,QAAQ,EAAa,QAAQ,KAAK,IAAI,EAAE,EAAQ,CAAQ,EAAE,EAAQ,QAAQ,EAAK,EAAa,QAAQ,EAAG,EAAO,QAAQ,sBAAsB,CAAU,GAClpB,EAAO,QAAQ,EAAE,EAAU,EAAG,EAAmD,MAAjD,GAAO,QAAQ,sBAAsB,CAAU,MAAY,CAAC,qBAAqB,EAAO,OAAO,EAAE,EAAO,QAAQ,CAAE,CAAE,EAAE,CAAC,EAAS,EAAe,EAAc,CAAS,CAAC,EACvM,OAAmB,GAAyB,EAAa,SAAS,GAAG,EAAO,UAAU,GAAG,EAAQ,QAAQ,MAAnE,CAAC,GAAoF,CAAC,EAAS,EAAI,CAAC,EAC1I,MAAc,CAAC,GAAG,CAAC,EAAS,UAAU,CAAC,EAAE,IAAM,EAAU,EAAa,QAAQ,GAAG,CAAC,EAAU,UAAU,CAAC,EAAE,IAAM,EAAO,GAAG,CAAC,IAAM,EAAK,EAAU,sBAAsB,EAC/J,EAAO,EAAU,YAAY,EAAK,MAAY,EAAO,EAAU,aAAa,EAAK,OAAO,EAAS,QAAQ,GAAG,EAAE,QAAQ,EAAK,MAAM,EAAO,EAAS,QAAQ,GAAG,EAAE,QAAQ,EAAK,KAAK,EAAW,EAAe,UAAS,EAAe,QAAQ,GAAK,EAAU,EAAG,EAAQ,MAAY,CAAC,EAAS,QAAQ,EAAE,MAAM,EAAS,QAAQ,EAAE,MAAM,EAAe,QAAQ,EAChW,EAAQ,EAAQ,GAAG,CAAC,GAAG,IAAmB,OAAO,OAAO,IAAM,EAAK,EAAU,sBAAsB,EAAQ,EAAO,EAAU,YAAY,EAAK,MAAY,EAAO,EAAU,aAAa,EAAK,OAAO,GAAe,QAAQ,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAK,MAAM,EAAO,GAAG,EAAE,QAAQ,EAAK,KAAK,EAAO,KAAK,YAAY,IAAI,CAAC,CAAC,EAAE,EAAU,CAAE,EAA8I,OAA5I,EAAU,iBAAiB,YAAY,CAAM,EAAE,EAAU,iBAAiB,aAAa,CAAO,EAAE,EAAU,iBAAiB,QAAQ,CAAO,MAAY,CAAC,EAAU,oBAAoB,YAAY,CAAM,EAAE,EAAU,oBAAoB,aAAa,CAAO,EAAE,EAAU,oBAAoB,QAAQ,CAAO,CAAE,CAAE,EAAE,CAAC,EAAS,EAAiB,CAAS,CAAC,EAEtpB,IAAU,CAAC,EAAS,CAAC,IAAM,EAAQ,EAAQ,EAAU,EAAE,EAAQ,EAE5D,EAAG,OAAO,GAAO,OAAQ,SAAS,EAAM,MAAM,KAAW,EAAG,OAAO,GAAO,QAAS,SAAS,EAAM,OAAO,IAAU,EAAO,EAAG,EAAE,EAAQ,EAAO,EAAG,EAAE,EAAQ,EAAK,KAAK,IAAI,EAAE,KAAK,MAAM,EAAO,CAAO,EAAE,CAAC,EAAQ,EAAK,KAAK,IAAI,EAAE,KAAK,MAAM,EAAO,CAAO,EAAE,CAAC,EAAQ,EAAQ,GAAG,GAAQ,EAAK,GAAG,GAAS,EAAQ,EAAQ,GAAG,GAAQ,EAAK,GAAG,GAAS,EAAQ,EAAK,CAAC,EAAE,IAAI,IAAI,EAAI,EAAE,EAAI,EAAK,IAAO,IAAI,IAAI,EAAI,EAAE,EAAI,EAAK,IAAM,CAAC,IAAM,EAAE,EAAQ,EAAI,EAAc,EAAE,EAAQ,EAAI,EAAc,EAAG,EAAK,EAAE,GAAK,EAAK,GAAG,GAAS,EAAG,EAAK,EAAE,GAAK,EAAK,GAAG,GACthB,EAAM,IAAgB,GAAG,EAAY,CAAC,IAAM,EAAE,GAAoB,EAAG,EAAG,EAAa,GAAG,EAAa,GAAG,EAAa,KAAK,GAAS,IAAI,EAAQ,EAAO,GAAG,GAAa,IAAU,EAAK,EAAE,EAAa,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,IAAO,EAAO,KAAK,CAAC,EAAQ,EAAS,EAAE,GAAG,EAAE,EAAE,GAAG,EAAM,GAAW,EAAE,EAAS,CAAS,CAAI,EAAM,KAAa,EAAK,KAAkB,EAAK,OAAO,CAAC,EAAE,EAAgB,GAAS,EAAE,EAAE,CAAC,EAAE,KAAK,EAAM,YAAY,CAAK,EAAE,GAAG,EAAI,GAAG,GAAK,CAAC,CAAE,CAAE,OAAoB,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,GAAG,EAAM,MAAM,OAAO,OAAO,OAAO,SAAS,IAAI,UAAU,IAAI,kBAAgB,SAAS,WAAW,SAAS,QAAQ,EAAE,SAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,MAAM,OAAO,OAAO,MAAM,EAAE,QAAQ,OAAO,EAAG,GAAG,IAAK,oBAAoB,iBAAiB,SAAS,CAAI,CAAC,CAAC,CAAC,CAAE,CAAC,OAAoB,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,GAAG,EAAM,MAAM,OAAO,OAAO,OAAO,SAAS,IAAI,UAAU,IAAI,SAAS,WAAW,SAAS,SAAS,iBAAe,EAAE,SAAsB,EAAK,SAAS,CAAC,IAAI,GAAU,MAAM,CAAC,QAAQ,QAAQ,MAAM,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,yBApEphC,IAAiF,IAAwE,EAM/L,EAAY,KAAW,EAAY,IAAI,IA8DohC,EAAQ,YAAY,WAAW,EAAQ,aAAa,CAAC,KAAK,CAAC,SAAS,SAAS,QAAQ,GAAG,IAAI,EAAE,EAAE,MAAM,UAAU,gBAAgB,UAAU,KAAK,CAAC,OAAO,SAAS,KAAK,IAAI,SAAS,GAAG,OAAO,GAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,GAAG,EAAE,UAAU,CAAC,QAAQ,QAAQ,OAAO,WAAW,SAAS,IAAI,QAAQ,GAAG,UAAU,UAAU,EAAE,MAAM,CAAC,QAAQ,GAAK,OAAO,SAAS,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,MAAM,OAAO,OAAO,IAAI,SAAS,EAAE,CAAC,EAAE,EAAoB,EAAQ,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,EAAY,KAAK,MAAM,QAAQ,QAAQ,CAAC,SAAS,SAAS,UAAU,WAAW,OAAO,OAAO,MAAM,EAAE,aAAa,CAAC,SAAS,SAAS,UAAU,WAAW,OAAO,OAAO,MAAM,EAAE,aAAa,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,aAAa,EAAE,EAAE,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,MAAM,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,SAAS,EAAE,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,OAAO,SAAS,MAAM,SAAS,OAAO,QAAQ,QAAQ,EAAE,aAAa,CAAC,OAAO,SAAS,MAAM,SAAS,OAAO,QAAQ,QAAQ,EAAE,aAAa,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,aAAa,IAAI,OAAO,GAAO,EAAM,MAAM,SAAS,OAAO,YAAY,8CAA8C,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,aAAa,GAAG,OAAO,GAAO,EAAM,MAAM,SAAS,MAAM,EAAE,OAAO,CAAC,KAAK,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAM,aAAa,MAAM,cAAc,KAAK,OAAO,GAAO,EAAM,MAAM,SAAS,MAAM,EAAE,EAAE,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,aAAa,GAAG,OAAO,GAAO,EAAM,MAAM,SAAS,QAAQ,EAAE,EAAE,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,aAAa,GAAG,OAAO,GAAO,EAAM,MAAM,SAAS,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,SAAS,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,aAAa,IAAI,YAAY,8BAA8B,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,aAAa,IAAI,YAAY,2CAA2C,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,QAAQ,QAAQ,EAAE,aAAa,CAAC,WAAW,SAAS,EAAE,aAAa,OAAO,EAAE,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,WAAW,cAAc,SAAS,SAAS,QAAQ,EAAE,aAAa,CAAC,WAAW,cAAc,SAAS,SAAS,QAAQ,EAAE,aAAa,UAAU,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,aAAa,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,aAAa,GAAG,YAAY,2DAA2D,EAAE,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,YAAY,QAAQ,CAAC,WAAW,YAAY,cAAc,eAAe,aAAa,WAAW,QAAQ,EAAE,aAAa,CAAC,WAAW,YAAY,cAAc,eAAe,aAAa,WAAW,QAAQ,EAAE,aAAa,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,kBAAkB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EAAE,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,SAAS,SAAS,YAAY,QAAQ,YAAY,WAAW,SAAS,EAAE,aAAa,CAAC,SAAS,iBAAiB,YAAY,cAAc,YAAY,WAAW,gBAAgB,EAAE,aAAa,SAAS,OAAO,GAAO,CAAC,EAAM,OAAO,OAAO,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,aAAa,EAAE,OAAO,GAAO,CAAC,EAAM,OAAO,SAAS,EAAM,OAAO,SAAS,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,aAAa,EAAE,OAAO,GAAO,CAAC,EAAM,OAAO,SAAS,EAAM,OAAO,SAAS,SAAS,YAAY,gDAAgD,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,KAAK,MAAM,QAAQ,QAAQ,CAAC,OAAO,SAAS,OAAO,EAAE,aAAa,CAAC,OAAO,SAAS,OAAO,EAAE,aAAa,MAAM,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,aAAa,IAAI,OAAO,GAAO,EAAM,aAAa,QAAQ,OAAO,YAAY,+BAA+B,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,aAAa,GAAG,OAAO,GAAO,EAAM,aAAa,QAAQ,OAAO,YAAY,2BAA2B,CAAC,CAAC,CAAC,CAAC"}