{"version":3,"file":"TextShuffle.C2Gn6bv7.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/r5gUiac3IGWQAWYBeGii/tO4F2UZUvu4gitBP1TJP/TextShuffle.js"],"sourcesContent":["// Text shuffle effect with character shuffling in cursor area while hovering\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useRef,useEffect,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";const CHARS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*\";/**\n * Text Shuffle Effect\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 100\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function TextShuffle(props){const{text=\"Hover over me\",enabled=true,variant=\"continuous\",font,color,cursorVariant=\"default\",cursorRadius=80,shuffleSpeed=50,shuffleIterations=5,glitchIntensity=.6,glitchColor=\"#00FFFF\",oncePadding=\"0px 6px\"}=props;const[shuffledText,setShuffledText]=useState(text);const[isHovering,setIsHovering]=useState(false);const[mousePos,setMousePos]=useState({x:0,y:0});const[glitchPosition,setGlitchPosition]=useState({x:0,y:0});const[glitchChars,setGlitchChars]=useState(new Set);const containerRef=useRef(null);const charRefs=useRef([]);const prevMousePosRef=useRef({x:0,y:0});const restoreTimeoutRef=useRef(null);const glitchTimeoutRef=useRef(null);const onceTimeoutsRef=useRef([]);const onceRanRef=useRef(false);useEffect(()=>{startTransition(()=>{setShuffledText(text);});},[text]);useEffect(()=>{onceRanRef.current=false;if(onceTimeoutsRef.current.length){onceTimeoutsRef.current.forEach(id=>clearTimeout(id));onceTimeoutsRef.current=[];}},[text,variant]);const runOnceAnimation=()=>{if(onceRanRef.current)return;onceRanRef.current=true;if(onceTimeoutsRef.current.length){onceTimeoutsRef.current.forEach(id=>clearTimeout(id));onceTimeoutsRef.current=[];}const original=text;const chars=original.split(\"\");const iterations=Math.max(1,Math.floor(shuffleIterations));const stepMs=Math.max(1,Math.floor(shuffleSpeed/2));chars.forEach((ch,index)=>{const startId=window.setTimeout(()=>{if(ch===\" \")return;for(let i=0;i<iterations;i++){const updateId=window.setTimeout(()=>{startTransition(()=>{setGlitchChars(new Set([index]));setShuffledText(prev=>{const arr=prev.split(\"\");arr[index]=CHARS[Math.floor(Math.random()*CHARS.length)];return arr.join(\"\");});});},i*stepMs);onceTimeoutsRef.current.push(updateId);}const endId=window.setTimeout(()=>{startTransition(()=>{setGlitchChars(new Set);setShuffledText(prev=>{const arr=prev.split(\"\");arr[index]=original[index]??\"\";return arr.join(\"\");});});},iterations*stepMs);onceTimeoutsRef.current.push(endId);},Math.max(0,index*Math.max(1,shuffleSpeed)));onceTimeoutsRef.current.push(startId);});};const handleMouseMove=e=>{if(!enabled)return;if(variant===\"once\")return;if(!containerRef.current)return;const rect=containerRef.current.getBoundingClientRect();const x=e.clientX-rect.left;const y=e.clientY-rect.top;// Only shuffle if mouse actually moved\nif(x!==prevMousePosRef.current.x||y!==prevMousePosRef.current.y){prevMousePosRef.current={x,y};// Clear any existing restore timeout\nif(restoreTimeoutRef.current!==null){clearTimeout(restoreTimeoutRef.current);}// Create glitch effect\nif(Math.random()<glitchIntensity){// Clear previous glitch timeout\nif(glitchTimeoutRef.current!==null){clearTimeout(glitchTimeoutRef.current);}// Remove glitch after animation\nglitchTimeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setGlitchChars(new Set);});},300);}const newText=text.split(\"\").map((char,index)=>{if(char===\" \")return\" \";const charElement=charRefs.current[index];if(!charElement)return char;const charRect=charElement.getBoundingClientRect();const containerRect=containerRef.current?.getBoundingClientRect();if(!containerRect)return char;const charX=charRect.left+charRect.width/2-containerRect.left;const charY=charRect.top+charRect.height/2-containerRect.top;const distance=Math.sqrt(Math.pow(charX-x,2)+Math.pow(charY-y,2));if(distance<cursorRadius){return CHARS[Math.floor(Math.random()*CHARS.length)];}return char;}).join(\"\");// Determine which characters should have glitch effect\nconst affectedChars=new Set;text.split(\"\").forEach((char,index)=>{if(char===\" \")return;const charElement=charRefs.current[index];if(!charElement)return;const charRect=charElement.getBoundingClientRect();const containerRect=containerRef.current?.getBoundingClientRect();if(!containerRect)return;const charX=charRect.left+charRect.width/2-containerRect.left;const charY=charRect.top+charRect.height/2-containerRect.top;const distance=Math.sqrt(Math.pow(charX-x,2)+Math.pow(charY-y,2));if(distance<cursorRadius&&Math.random()<glitchIntensity){affectedChars.add(index);}});startTransition(()=>{setShuffledText(newText);setGlitchChars(affectedChars);});// Set timeout to restore original text when cursor stops moving\nrestoreTimeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setShuffledText(text);});},100);}startTransition(()=>{setMousePos({x,y});});};const handleMouseEnter=()=>{if(!enabled)return;startTransition(()=>{setIsHovering(true);});if(variant===\"once\"){runOnceAnimation();}};const handleMouseLeave=()=>{if(!enabled)return;// Clear restore timeout on mouse leave\nif(restoreTimeoutRef.current!==null){clearTimeout(restoreTimeoutRef.current);}// Clear glitch timeout on mouse leave\nif(glitchTimeoutRef.current!==null){clearTimeout(glitchTimeoutRef.current);}if(onceTimeoutsRef.current.length){onceTimeoutsRef.current.forEach(id=>clearTimeout(id));onceTimeoutsRef.current=[];}startTransition(()=>{setIsHovering(false);setShuffledText(text);setGlitchChars(new Set);});prevMousePosRef.current={x:0,y:0};onceRanRef.current=false;};// Cleanup timeout on unmount\nuseEffect(()=>{return()=>{if(restoreTimeoutRef.current!==null){clearTimeout(restoreTimeoutRef.current);}if(glitchTimeoutRef.current!==null){clearTimeout(glitchTimeoutRef.current);}if(onceTimeoutsRef.current.length){onceTimeoutsRef.current.forEach(id=>clearTimeout(id));onceTimeoutsRef.current=[];}};},[]);const isFixedWidth=props?.style&&props.style.width===\"100%\";const isFixedHeight=props?.style&&props.style.height===\"100%\";return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,onMouseMove:handleMouseMove,onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,style:{...props.style,position:\"relative\",display:isFixedWidth||isFixedHeight?\"block\":\"inline-block\",cursor:enabled&&isHovering?cursorVariant===\"pointer\"?\"pointer\":\"default\":\"default\",userSelect:\"none\",...variant===\"once\"?{padding:oncePadding}:null,...!isFixedWidth&&{width:\"max-content\"},...!isFixedHeight&&{height:\"max-content\"}},children:[/*#__PURE__*/_jsx(\"span\",{style:{...font,color,whiteSpace:\"pre-wrap\",wordBreak:\"break-word\",position:\"relative\",zIndex:1},children:shuffledText.split(\"\").map((char,index)=>/*#__PURE__*/_jsxs(\"span\",{ref:el=>{charRefs.current[index]=el;},style:{display:\"inline-block\",minWidth:char===\" \"?\"0.25em\":undefined,position:\"relative\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{visibility:\"hidden\"},children:text[index]??char}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",top:0,left:0},children:char}),glitchChars.has(index)&&/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",top:0,left:0,display:\"inline-block\",background:`linear-gradient(90deg, transparent, ${glitchColor}, transparent)`,WebkitBackgroundClip:\"text\",backgroundClip:\"text\",WebkitTextFillColor:\"transparent\",color:\"transparent\",pointerEvents:\"none\",animation:\"glitchPulse 0.3s ease-out forwards\",filter:\"blur(1px)\"},children:char})]},index))}),/*#__PURE__*/_jsx(\"style\",{children:`\n                @keyframes glitchPulse {\n                    0% {\n                        opacity: 0.8;\n                        filter: blur(2px);\n                    }\n                    50% {\n                        opacity: 1;\n                        filter: blur(0px);\n                    }\n                    100% {\n                        opacity: 0;\n                        filter: blur(3px);\n                    }\n                }\n            `})]});}addPropertyControls(TextShuffle,{enabled:{type:ControlType.Boolean,title:\"Effect\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},text:{type:ControlType.String,title:\"Text\",defaultValue:\"Hover over me\",displayTextArea:true},variant:{type:ControlType.Enum,title:\"Variant\",options:[\"continuous\",\"once\"],optionTitles:[\"Continuous\",\"Once\"],defaultValue:\"continuous\",displaySegmentedControl:true},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},cursorVariant:{type:ControlType.Enum,title:\"Cursor\",options:[\"default\",\"pointer\"],optionTitles:[\"Default\",\"Pointer\"],defaultValue:\"default\",displaySegmentedControl:true},cursorRadius:{type:ControlType.Number,title:\"Cursor Radius\",defaultValue:80,min:1,max:200,step:10,unit:\"px\"},shuffleSpeed:{type:ControlType.Number,title:\"Shuffle Speed\",defaultValue:50,min:10,max:200,step:10,unit:\"ms\"},shuffleIterations:{type:ControlType.Number,title:\"Shuffle Iterations\",defaultValue:5,min:1,max:20,step:1,hidden:({variant})=>variant!==\"once\"},glitchIntensity:{type:ControlType.Number,title:\"Glitch Intensity\",defaultValue:.6,min:0,max:1,step:.1},glitchColor:{type:ControlType.Color,title:\"Glitch Color\",defaultValue:\"#00FFFF\"},oncePadding:{type:ControlType.Padding,title:\"Once Padding\",defaultValue:\"0px 6px\",hidden:({variant})=>variant!==\"once\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextShuffle\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicWidth\":\"400\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"100\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextShuffle.map"],"mappings":"+MASG,SAAwB,EAAY,EAAM,CAAC,GAAK,CAAC,OAAK,gBAAgB,UAAQ,GAAK,UAAQ,aAAa,OAAK,QAAM,gBAAc,UAAU,eAAa,GAAG,eAAa,GAAG,oBAAkB,EAAE,kBAAgB,GAAG,cAAY,UAAU,cAAY,WAAW,EAAW,CAAC,EAAa,GAAiBA,EAAS,EAAK,CAAM,CAAC,EAAW,GAAeA,EAAS,GAAM,CAAM,CAAC,EAAS,GAAaA,EAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAM,CAAC,EAAe,GAAmBA,EAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAM,CAAC,EAAY,GAAgBA,EAAS,IAAI,IAAI,CAAO,EAAaC,EAAO,KAAK,CAAO,EAASA,EAAO,EAAE,CAAC,CAAO,EAAgBA,EAAO,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAO,EAAkBA,EAAO,KAAK,CAAO,EAAiBA,EAAO,KAAK,CAAO,EAAgBA,EAAO,EAAE,CAAC,CAAO,EAAWA,EAAO,GAAM,CAAC,MAAc,CAAC,MAAoB,CAAC,EAAgB,EAAK,EAAG,EAAG,CAAC,EAAK,CAAC,CAAC,MAAc,CAAC,EAAW,QAAQ,GAAS,EAAgB,QAAQ,SAAQ,EAAgB,QAAQ,QAAQ,GAAI,aAAa,EAAG,CAAC,CAAC,EAAgB,QAAQ,EAAE,GAAI,CAAC,EAAK,EAAQ,CAAC,CAAC,IAAM,MAAqB,CAAC,GAAG,EAAW,QAAQ,OAAO,EAAW,QAAQ,GAAQ,EAAgB,QAAQ,SAAQ,EAAgB,QAAQ,QAAQ,GAAI,aAAa,EAAG,CAAC,CAAC,EAAgB,QAAQ,EAAE,EAAE,IAAM,EAAS,EAAW,EAAM,EAAS,MAAM,GAAG,CAAO,EAAW,KAAK,IAAI,EAAE,KAAK,MAAM,EAAkB,CAAC,CAAO,EAAO,KAAK,IAAI,EAAE,KAAK,MAAM,EAAa,EAAE,CAAC,CAAC,EAAM,SAAS,EAAG,IAAQ,CAAC,IAAM,EAAQ,EAAO,eAAe,CAAC,GAAG,IAAK,IAAI,OAAO,IAAI,IAAI,EAAE,EAAE,EAAE,EAAW,IAAI,CAAC,IAAM,EAAS,EAAO,eAAe,CAAC,MAAoB,CAAC,EAAe,IAAI,IAAI,CAAC,EAAM,CAAC,CAAC,CAAC,EAAgB,GAAM,CAAC,IAAM,EAAI,EAAK,MAAM,GAAG,CAA0D,MAAzD,GAAI,GAAO,EAAM,KAAK,MAAM,KAAK,QAAQ,CAAC,GAAa,EAAS,EAAI,KAAK,GAAG,EAAG,EAAG,EAAG,EAAE,EAAO,CAAC,EAAgB,QAAQ,KAAK,EAAS,CAAE,IAAM,EAAM,EAAO,eAAe,CAAC,MAAoB,CAAC,EAAe,IAAI,IAAI,CAAC,EAAgB,GAAM,CAAC,IAAM,EAAI,EAAK,MAAM,GAAG,CAAgC,MAA/B,GAAI,GAAO,EAAS,IAAQ,GAAU,EAAI,KAAK,GAAG,EAAG,EAAG,EAAG,EAAW,EAAO,CAAC,EAAgB,QAAQ,KAAK,EAAM,EAAG,KAAK,IAAI,EAAE,EAAM,KAAK,IAAI,EAAE,EAAa,CAAC,CAAC,CAAC,EAAgB,QAAQ,KAAK,EAAQ,EAAG,EAAS,EAAgB,GAAG,CAA+C,GAA3C,CAAC,GAAkB,IAAU,QAAiB,CAAC,EAAa,QAAQ,OAAO,IAAM,EAAK,EAAa,QAAQ,uBAAuB,CAAO,EAAE,EAAE,QAAQ,EAAK,KAAW,EAAE,EAAE,QAAQ,EAAK,IACtvE,GAAG,IAAI,EAAgB,QAAQ,GAAG,IAAI,EAAgB,QAAQ,EAAE,CAAC,EAAgB,QAAQ,CAAC,IAAE,IAAE,CAC3F,EAAkB,UAAU,MAAM,aAAa,EAAkB,QAAQ,CACzE,KAAK,QAAQ,CAAC,IACd,EAAiB,UAAU,MAAM,aAAa,EAAiB,QAAQ,CAC1E,EAAiB,QAAQ,EAAO,eAAe,CAAC,MAAoB,CAAC,EAAe,IAAI,IAAI,EAAG,EAAG,IAAI,EAAE,IAAM,EAAQ,EAAK,MAAM,GAAG,CAAC,KAAK,EAAK,IAAQ,CAAC,GAAG,IAAO,IAAI,MAAM,IAAI,IAAM,EAAY,EAAS,QAAQ,GAAO,GAAG,CAAC,EAAY,OAAO,EAAK,IAAM,EAAS,EAAY,uBAAuB,CAAO,EAAc,EAAa,SAAS,uBAAuB,CAAC,GAAG,CAAC,EAAc,OAAO,EAAK,IAAM,EAAM,EAAS,KAAK,EAAS,MAAM,EAAE,EAAc,KAAW,EAAM,EAAS,IAAI,EAAS,OAAO,EAAE,EAAc,IAAsJ,OAAnI,KAAK,MAAc,EAAM,IAAE,GAAY,EAAM,IAAE,EAAG,CAAa,EAAqB,EAAM,KAAK,MAAM,KAAK,QAAQ,CAAC,GAAa,EAAU,GAAO,CAAC,KAAK,GAAG,CACvqB,EAAc,IAAI,IAAI,EAAK,MAAM,GAAG,CAAC,SAAS,EAAK,IAAQ,CAAC,GAAG,IAAO,IAAI,OAAO,IAAM,EAAY,EAAS,QAAQ,GAAO,GAAG,CAAC,EAAY,OAAO,IAAM,EAAS,EAAY,uBAAuB,CAAO,EAAc,EAAa,SAAS,uBAAuB,CAAC,GAAG,CAAC,EAAc,OAAO,IAAM,EAAM,EAAS,KAAK,EAAS,MAAM,EAAE,EAAc,KAAW,EAAM,EAAS,IAAI,EAAS,OAAO,EAAE,EAAc,IAAmB,KAAK,MAAc,EAAM,IAAE,GAAY,EAAM,IAAE,EAAG,CAAa,GAAc,KAAK,QAAQ,CAAC,GAAiB,EAAc,IAAI,EAAM,EAAI,CAAC,MAAoB,CAAC,EAAgB,EAAQ,CAAC,EAAe,EAAc,EAAG,CACvoB,EAAkB,QAAQ,EAAO,eAAe,CAAC,MAAoB,CAAC,EAAgB,EAAK,EAAG,EAAG,IAAI,CAAE,MAAoB,CAAC,EAAY,CAAC,IAAE,IAAE,CAAC,EAAG,EAAS,MAAqB,CAAK,IAAe,MAAoB,CAAC,EAAc,GAAK,EAAG,CAAI,IAAU,QAAQ,GAAkB,GAAU,MAAqB,CAAK,IACvT,EAAkB,UAAU,MAAM,aAAa,EAAkB,QAAQ,CACzE,EAAiB,UAAU,MAAM,aAAa,EAAiB,QAAQ,CAAK,EAAgB,QAAQ,SAAQ,EAAgB,QAAQ,QAAQ,GAAI,aAAa,EAAG,CAAC,CAAC,EAAgB,QAAQ,EAAE,EAAE,MAAoB,CAAC,EAAc,GAAM,CAAC,EAAgB,EAAK,CAAC,EAAe,IAAI,IAAI,EAAG,CAAC,EAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAW,QAAQ,KACjV,UAAyB,CAAI,EAAkB,UAAU,MAAM,aAAa,EAAkB,QAAQ,CAAK,EAAiB,UAAU,MAAM,aAAa,EAAiB,QAAQ,CAAK,EAAgB,QAAQ,SAAQ,EAAgB,QAAQ,QAAQ,GAAI,aAAa,EAAG,CAAC,CAAC,EAAgB,QAAQ,EAAE,GAAM,EAAE,CAAC,CAAC,IAAM,EAAa,GAAO,OAAO,EAAM,MAAM,QAAQ,OAAa,EAAc,GAAO,OAAO,EAAM,MAAM,SAAS,OAAO,OAAoB,EAAM,MAAM,CAAC,IAAI,EAAa,YAAY,EAAgB,aAAa,EAAiB,aAAa,EAAiB,MAAM,CAAC,GAAG,EAAM,MAAM,SAAS,WAAW,QAAQ,GAAc,EAAc,QAAQ,eAAe,OAAO,GAAS,GAAW,IAAgB,UAAU,UAAU,UAAoB,WAAW,OAAO,GAAG,IAAU,OAAO,CAAC,QAAQ,EAAY,CAAC,KAAK,GAAG,CAAC,GAAc,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,GAAe,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,CAAc,EAAK,OAAO,CAAC,MAAM,CAAC,GAAG,EAAK,QAAM,WAAW,WAAW,UAAU,aAAa,SAAS,WAAW,OAAO,EAAE,CAAC,SAAS,EAAa,MAAM,GAAG,CAAC,KAAK,EAAK,IAAqB,EAAM,OAAO,CAAC,IAAI,GAAI,CAAC,EAAS,QAAQ,GAAO,GAAK,MAAM,CAAC,QAAQ,eAAe,SAAS,IAAO,IAAI,SAAS,IAAA,GAAU,SAAS,WAAW,CAAC,SAAS,CAAc,EAAK,OAAO,CAAC,MAAM,CAAC,WAAW,SAAS,CAAC,SAAS,EAAK,IAAQ,EAAK,CAAC,CAAc,EAAK,OAAO,CAAC,MAAM,CAAC,SAAS,WAAW,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,EAAK,CAAC,CAAC,EAAY,IAAI,EAAM,EAAe,EAAK,OAAO,CAAC,MAAM,CAAC,SAAS,WAAW,IAAI,EAAE,KAAK,EAAE,QAAQ,eAAe,WAAW,uCAAuC,EAAY,gBAAgB,qBAAqB,OAAO,eAAe,OAAO,oBAAoB,cAAc,MAAM,cAAc,cAAc,OAAO,UAAU,qCAAqC,OAAO,YAAY,CAAC,SAAS,EAAK,CAAC,CAAC,CAAC,CAAC,EAAM,CAAC,CAAC,CAAC,CAAc,EAAK,QAAQ,CAAC,SAAS;;;;;;;;;;;;;;;cAenzD,CAAC,CAAC,CAAC,CAAC,wBAjCuC,IAA6D,IAAoD,CAAM,EAAM,yEAiClK,EAAoB,EAAY,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,gBAAgB,gBAAgB,GAAK,CAAC,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,aAAa,OAAO,CAAC,aAAa,CAAC,aAAa,OAAO,CAAC,aAAa,aAAa,wBAAwB,GAAK,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,aAAa,aAAa,CAAC,SAAS,OAAO,QAAQ,OAAO,cAAc,UAAU,WAAW,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,CAAC,cAAc,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,UAAU,UAAU,CAAC,aAAa,CAAC,UAAU,UAAU,CAAC,aAAa,UAAU,wBAAwB,GAAK,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAY,OAAO,MAAM,qBAAqB,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,QAAQ,CAAC,aAAW,IAAU,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,YAAY,CAAC,KAAK,EAAY,MAAM,MAAM,eAAe,aAAa,UAAU,CAAC,YAAY,CAAC,KAAK,EAAY,QAAQ,MAAM,eAAe,aAAa,UAAU,QAAQ,CAAC,aAAW,IAAU,OAAO,CAAC,CAAC"}