{"version":3,"file":"BreadcrumbsCode.CRhPyVXU.mjs","names":["useId","useMemo","useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/CwuUkUk8PbksSKplj700/J7xtOfsSyPapSmirKVCb/BreadcrumbsCode.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,useLocaleInfo}from\"framer\";import{AnimatePresence,LayoutGroup,motion,useReducedMotion}from\"framer-motion\";import{createPortal}from\"react-dom\";import{useCallback,useEffect,useId,useLayoutEffect,useMemo,useRef,useState}from\"react\";// The site serves locales under URL prefixes, so a crumb link like \"/customers\" must become\n// \"/nl/customers\" on the Dutch site or the breadcrumb sends visitors back to English.\nconst LOCALE_SEGMENTS=[\"nl\",\"de\",\"fr\",\"es\",\"it\",\"uk\",\"us\"];const LOCALE_CODE_TO_PREFIX={nl:\"/nl\",de:\"/de\",fr:\"/fr\",es:\"/es\",it:\"/it\",\"en-gb\":\"/uk\",\"en-us\":\"/us\",uk:\"/uk\",us:\"/us\"};function currentLocalePrefix(localeCode){const code=(localeCode||\"\").toLowerCase();if(code&&LOCALE_CODE_TO_PREFIX[code])return LOCALE_CODE_TO_PREFIX[code];if(code)return\"\";if(typeof window!==\"undefined\"){const segment=(window.location.pathname.split(\"/\")[1]||\"\").toLowerCase();if(LOCALE_SEGMENTS.includes(segment))return\"/\"+segment;}return\"\";}function localizeLink(link,prefix){if(!prefix||!link||!link.startsWith(\"/\"))return link;const segment=(link.split(\"/\")[1]||\"\").toLowerCase();if(LOCALE_SEGMENTS.includes(segment))return link;return link===\"/\"?prefix+\"/\":prefix+link;}/** A Link control arrives as a string or as an object carrying the value; take the base value. */function readLink(input){if(typeof input===\"string\")return input;if(!input||typeof input!==\"object\")return\"\";const candidate=input;return readLink(candidate.value)||readLink(candidate.url)||readLink(candidate.href);}const LEVEL_COUNT=4;// Sample crumbs so the component stays visible on the canvas; the published site renders\n// nothing when no crumb is filled in. A wrong breadcrumb is worse than none.\nconst CANVAS_SAMPLE=[{title:\"Monday Merch\",link:\"/\"},{title:\"Customers\",link:\"/customers\"},{title:\"Stories\",link:\"/customers/stories\"}];function trailFromProps(props,isCanvas){const crumbs=[];for(let level=1;level<=LEVEL_COUNT;level++){const title=String(props[`level${level}Title`]??\"\").trim();if(title)crumbs.push({title,link:readLink(props[`level${level}Link`])});}const cmsTitle=String(props.cmsTitle??\"\").trim();if(cmsTitle)crumbs.push({title:cmsTitle,link:readLink(props.cmsLink)});return crumbs.length?crumbs:isCanvas?CANVAS_SAMPLE:[];}function collapseRungs(count){const parent=count-2;if(parent<0)return[[]];const range=(from,to)=>from>to?[]:Array.from({length:to-from+1},(_,offset)=>from+offset);const rungs=[[],range(1,parent),range(0,parent)];return rungs.filter((rung,index)=>index===0||rung.length>rungs[index-1].length);}function rowWidth(metrics,hidden,ancestorWidth){const currentIndex=metrics.crumbWidths.length-1;const folded=new Set(hidden);let items=folded.size>0?1:0;let width=folded.size>0?metrics.ellipsisWidth:0;metrics.crumbWidths.forEach((natural,index)=>{if(folded.has(index))return;items+=1;width+=index===currentIndex?natural:ancestorWidth(index);});const separators=Math.max(0,items-1);return width+separators*metrics.separatorWidth+Math.max(0,items+separators-1)*metrics.gap;}/** Most items the row may show: crumbs plus the ellipsis when there is one. */const MAX_VISIBLE_ITEMS=3;const visibleItems=(count,hidden)=>count-hidden.length+(hidden.length?1:0);// A trail of four or more crumbs never shows in full, however wide the row: it starts at\n// \"root / … / current\" and folds further only when that does not fit either.\nfunction fitBreadcrumbs(metrics,available){if(!(available>0)||metrics.crumbWidths.length<2)return[];const count=metrics.crumbWidths.length;const rungs=collapseRungs(count).filter(rung=>visibleItems(count,rung)<=MAX_VISIBLE_ITEMS);const natural=index=>metrics.crumbWidths[index];const truncated=index=>Math.min(metrics.crumbWidths[index],metrics.ancestorFloor);for(const rung of rungs){if(rowWidth(metrics,rung,natural)<=available)return rung;if(rung.length>0&&rowWidth(metrics,rung,truncated)<=available)return rung;}return rungs[rungs.length-1];}const sameIndexes=(left,right)=>left.length===right.length&&left.every((value,index)=>value===right[index]);/* ----- design tokens, identical to the shop ----- */const FONT=\"Inter, -apple-system, BlinkMacSystemFont, sans-serif\";const EASE=\"cubic-bezier(0.22, 1, 0.36, 1)\";const EASE_ARRAY=[.22,1,.36,1];const ANCESTOR_FLOOR_REM=5;const ROW_GAP=8;const CSS=`\n.mm-crumbs { position: relative; width: max-content; max-width: 100%; min-width: 0; user-select: none; view-transition-name: breadcrumb; font-family: ${FONT}; font-size: 14px; line-height: 1; }\n.mm-crumbs__frame { position: relative; width: 100%; }\n.mm-crumbs__row { display: flex; flex-wrap: nowrap; align-items: center; gap: ${ROW_GAP}px; min-height: 24px; width: 100%; min-width: 0; margin: 0; padding: 0; list-style: none; overflow-x: clip; }\n.mm-crumbs__row--center { justify-content: center; } .mm-crumbs__row--right { justify-content: flex-end; }\n.mm-crumbs__item { min-width: 0; flex: 0 1 auto; }\n.mm-crumbs__item--fixed { flex: none; white-space: nowrap; }\n.mm-crumbs__link { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #6e6e73; text-decoration: none; text-underline-offset: 4px; transition: color 150ms ${EASE}; }\n.mm-crumbs__link:hover, .mm-crumbs__link:focus-visible { color: #1d1d1f; text-decoration: underline; }\n.mm-crumbs__current { color: #1d1d1f; }\n.mm-crumbs__separator { color: #86868b; }\n.mm-crumbs__toggle { position: relative; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 4px; background: none; font: inherit; color: #6e6e73; cursor: pointer; transition: color 150ms ${EASE}, transform 150ms ${EASE}; }\n.mm-crumbs__toggle::after { content: \"\"; position: absolute; inset: -10px; }\n.mm-crumbs__toggle:hover, .mm-crumbs__toggle:focus-visible { color: #1d1d1f; }\n.mm-crumbs__toggle:active { transform: scale(0.9); }\n.mm-crumbs__panel { position: absolute; z-index: 2147483000; margin: 0; padding: 6px; list-style: none; transform-origin: top left; border: 1px solid #e8e8eb; border-radius: 8px; background: #fff; box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); font-family: ${FONT}; font-size: 14px; line-height: 1; user-select: none; }\n.mm-crumbs__panel-link { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 6px 8px; border-radius: 4px; line-height: 1.25; color: #6e6e73; text-decoration: none; text-underline-offset: 4px; transition: color 150ms ${EASE}; }\n.mm-crumbs__panel-link:hover, .mm-crumbs__panel-link:focus-visible { color: #1d1d1f; text-decoration: underline; }\n.mm-crumbs__measure { height: 0; overflow: hidden; visibility: hidden; pointer-events: none; }\n.mm-crumbs__measure ol { display: flex; flex-wrap: nowrap; align-items: center; gap: ${ROW_GAP}px; width: max-content; margin: 0; padding: 0; list-style: none; white-space: nowrap; }\n.mm-crumbs[data-theme=\"dark\"] .mm-crumbs__link, .mm-crumbs[data-theme=\"dark\"] .mm-crumbs__toggle { color: rgba(255,255,255,.8); }\n.mm-crumbs[data-theme=\"dark\"] .mm-crumbs__current, .mm-crumbs[data-theme=\"dark\"] .mm-crumbs__link:hover, .mm-crumbs[data-theme=\"dark\"] .mm-crumbs__link:focus-visible, .mm-crumbs[data-theme=\"dark\"] .mm-crumbs__toggle:hover, .mm-crumbs[data-theme=\"dark\"] .mm-crumbs__toggle:focus-visible { color: #fff; }\n.mm-crumbs[data-theme=\"dark\"] .mm-crumbs__separator { color: rgba(255,255,255,.6); }\n.mm-crumbs[data-theme=\"dark\"] .mm-crumbs__link:focus-visible, .mm-crumbs[data-theme=\"dark\"] .mm-crumbs__toggle:focus-visible { outline: 2px solid #fff; outline-offset: -2px; }\n.mm-crumbs__panel[data-theme=\"dark\"] { background: #1d1d1f; border-color: #424245; color-scheme: dark; }\n.mm-crumbs__panel[data-theme=\"dark\"] .mm-crumbs__panel-link { color: #e8e8ed; }\n.mm-crumbs__panel[data-theme=\"dark\"] .mm-crumbs__panel-link:hover, .mm-crumbs__panel[data-theme=\"dark\"] .mm-crumbs__panel-link:focus-visible { color: #fff; background: #333336; }\n.mm-crumbs__panel[data-theme=\"dark\"] .mm-crumbs__panel-link:focus-visible { outline: 2px solid #fff; outline-offset: -2px; }\n@media (prefers-reduced-motion: reduce) { .mm-crumbs__toggle:active { transform: none; } }\n`;function rowItemsFor(crumbs,hidden){const folded=new Set(hidden);const row=[];const add=item=>{if(row.length)row.push({kind:\"separator\",key:`after-${row[row.length-1].key}`});row.push(item);};crumbs.forEach((crumb,index)=>{if(folded.has(index)){if(row[row.length-1]?.kind!==\"ellipsis\")add({kind:\"ellipsis\",key:\"ellipsis\"});return;}const key=`${index}-${crumb.title}`;const isCurrent=index===crumbs.length-1;add(isCurrent?{kind:\"current\",key,crumb}:{kind:\"ancestor\",key,index,crumb});});return row;}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function BreadcrumbsCode(props){const{align=\"left\",darkMode=false,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const reduceMotion=useReducedMotion()??false;const localeInfo=typeof useLocaleInfo===\"function\"?useLocaleInfo():null;const localePrefix=currentLocalePrefix(localeInfo?.activeLocale?.code||\"\");const panelId=`mm-crumbs-panel-${useId().replace(/:/g,\"\")}`;const crumbs=useMemo(()=>trailFromProps(props,isCanvas),[props,isCanvas]);const trailKey=crumbs.map(crumb=>`${crumb.link} ${crumb.title}`).join(\"\\n\");const navRef=useRef(null);const frameRef=useRef(null);const measureRef=useRef(null);const[metrics,setMetrics]=useState(null);const[hidden,setHidden]=useState([]);const[available,setAvailable]=useState(null);const[open,setOpen]=useState(false);// Where the disclosure sits in the document: under the ellipsis, never past the trail's edge.\n// It is rendered into <body>, because in Framer every stack clips its overflow and the\n// trail's own stack is exactly one row tall, so a panel inside it would never be seen.\nconst[anchor,setAnchor]=useState(null);const panelRef=useRef(null);// Row motion runs only between fits the visitor can see, never during the first paint.\nconst[motionReady,setMotionReady]=useState(false);/** The layer the instance sits in: past Framer's content-sized container around the nav. */const columnElement=()=>navRef.current?.parentElement?.parentElement??null;/** The room the trail has: the column's content width, or the nav's own when there is none. */const availableWidth=useCallback(()=>{const column=columnElement();if(column){const computed=getComputedStyle(column);const padding=Number.parseFloat(computed.paddingLeft)+Number.parseFloat(computed.paddingRight);const width=column.clientWidth-(Number.isFinite(padding)?padding:0);if(width>0)return width;}return navRef.current?.getBoundingClientRect().width??0;},[]);const refit=useCallback(current=>{if(!current)return;const room=availableWidth();setAvailable(room||null);const next=fitBreadcrumbs(current,room);setHidden(previous=>sameIndexes(previous,next)?previous:next);},[availableWidth]);const measureAndFit=useCallback(()=>{const row=measureRef.current;if(!row||typeof window===\"undefined\")return;const rem=Number.parseFloat(getComputedStyle(document.documentElement).fontSize)||16;const width=element=>element?element.getBoundingClientRect().width:0;const next={crumbWidths:Array.from(row.querySelectorAll(\"[data-measure='label']\")).map(label=>Math.ceil(width(label))),separatorWidth:width(row.querySelector(\"[data-measure='separator']\")),ellipsisWidth:width(row.querySelector(\"[data-measure='ellipsis']\")),gap:ROW_GAP,ancestorFloor:ANCESTOR_FLOOR_REM*rem};setMetrics(next);refit(next);},[refit]);// Measure on mount and whenever the trail changes, holding motion until the fit has\n// painted; measure again once web fonts land, because they change every label's width.\nuseLayoutEffect(()=>{setMotionReady(false);setOpen(false);measureAndFit();const frame=requestAnimationFrame(()=>setMotionReady(true));return()=>cancelAnimationFrame(frame);},[trailKey,measureAndFit]);useEffect(()=>{if(typeof document===\"undefined\"||!document.fonts?.ready)return;let cancelled=false;void document.fonts.ready.then(()=>{if(!cancelled)measureAndFit();});return()=>{cancelled=true;};},[measureAndFit]);useEffect(()=>{const target=columnElement()??navRef.current;if(!target||typeof ResizeObserver===\"undefined\")return;const observer=new ResizeObserver(()=>refit(metrics));observer.observe(target);return()=>observer.disconnect();},[metrics,refit]);useEffect(()=>{if(typeof document===\"undefined\")return;const onPointerDown=event=>{if(!withinDisclosure(event.target))setOpen(false);};document.addEventListener(\"pointerdown\",onPointerDown);return()=>document.removeEventListener(\"pointerdown\",onPointerDown);},[]);const foldedCrumbs=hidden.map(index=>crumbs[index]).filter(Boolean);useEffect(()=>{if(!foldedCrumbs.length)setOpen(false);},[foldedCrumbs.length]);const withinDisclosure=node=>Boolean(navRef.current?.contains(node)||panelRef.current?.contains(node));// The panel hangs under the ellipsis, its labels flush with the dots: the button's left,\n// less the panel and link padding. It never runs past the trail's right edge.\nconst PANEL_TEXT_INSET=14;const anchorToTrail=()=>{const nav=navRef.current;const button=nav?.querySelector(\".mm-crumbs__toggle\");if(!nav||!button)return;const trail=nav.getBoundingClientRect();const dots=button.getBoundingClientRect();const left=Math.max(trail.left,dots.left-PANEL_TEXT_INSET);setAnchor({left:left+window.scrollX,top:trail.bottom+window.scrollY+8,maxWidth:Math.max(trail.right-left,160)});};const toggleOpen=()=>{anchorToTrail();setOpen(value=>!value);};// A mouse opens the disclosure by resting on the ellipsis; touch and keyboard use the\n// click. Leaving the trail or the panel closes it after a beat, long enough to cross the\n// gap between the two.\nconst canHover=()=>typeof window!==\"undefined\"&&window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;const hoverCloseTimer=useRef(null);const cancelHoverClose=()=>{if(hoverCloseTimer.current)clearTimeout(hoverCloseTimer.current);hoverCloseTimer.current=null;};const openOnHover=event=>{if(event.pointerType!==\"mouse\"||!canHover())return;cancelHoverClose();anchorToTrail();setOpen(true);};const scheduleHoverClose=()=>{if(!canHover())return;cancelHoverClose();hoverCloseTimer.current=setTimeout(()=>setOpen(false),150);};useEffect(()=>cancelHoverClose,[]);const closeAndRefocus=()=>{setOpen(false);navRef.current?.querySelector(\".mm-crumbs__toggle\")?.focus();};const onKeyDown=event=>{if(event.key===\"Escape\"&&open)closeAndRefocus();};const onBlur=event=>{if(!withinDisclosure(event.relatedTarget))setOpen(false);};// The panel is not a descendant of the nav, so it closes on resize and scroll rather\n// than chasing the trail around the page.\nuseEffect(()=>{if(!open||typeof window===\"undefined\")return;const close=()=>setOpen(false);window.addEventListener(\"resize\",close);window.addEventListener(\"scroll\",close,{passive:true});return()=>{window.removeEventListener(\"resize\",close);window.removeEventListener(\"scroll\",close);};},[open]);if(crumbs.length<2)return null;const rowItems=rowItemsFor(crumbs,hidden);const ancestorStyle=index=>{const natural=metrics?.crumbWidths[index];if(natural===undefined||!metrics)return undefined;return{minWidth:Math.min(natural,metrics.ancestorFloor)};};const href=link=>localizeLink(link,localePrefix)||\"#\";const rowClass=`mm-crumbs__row${align===\"left\"?\"\":` mm-crumbs__row--${align}`}`;// Folding is a move, not a cut: crumbs that stay slide to their new place, the ones\n// that leave fade where they stood. Under reduced motion only the fades remain.\nconst animateLayout=motionReady&&!reduceMotion;// While motion is held, leaving items are removed at once instead of fading out.\nconst fade={initial:motionReady?{opacity:0}:false,animate:{opacity:1},exit:motionReady?{opacity:0}:undefined};return /*#__PURE__*/_jsxs(\"nav\",{ref:navRef,\"aria-label\":\"Breadcrumb\",className:\"mm-crumbs\",\"data-theme\":darkMode?\"dark\":\"light\",style:{...style,maxWidth:available??undefined},onKeyDown:onKeyDown,onBlur:onBlur,onPointerEnter:cancelHoverClose,onPointerLeave:scheduleHoverClose,children:[/*#__PURE__*/_jsx(\"style\",{children:CSS}),/*#__PURE__*/_jsx(\"div\",{ref:frameRef,className:\"mm-crumbs__frame\",children:/*#__PURE__*/_jsx(LayoutGroup,{id:`${panelId}-row`,children:/*#__PURE__*/_jsx(\"ol\",{className:rowClass,children:/*#__PURE__*/_jsx(AnimatePresence,{initial:false,children:rowItems.map(item=>{const layoutProps={layout:animateLayout?\"position\":false,transition:{layout:{duration:.3,ease:EASE_ARRAY},opacity:{duration:item.kind===\"separator\"?.15:.2,ease:EASE_ARRAY}},...fade};if(item.kind===\"separator\"){return /*#__PURE__*/_jsx(motion.li,{...layoutProps,className:\"mm-crumbs__item mm-crumbs__item--fixed mm-crumbs__separator\",\"aria-hidden\":\"true\",children:\"/\"},item.key);}if(item.kind===\"current\"){return /*#__PURE__*/_jsx(motion.li,{...layoutProps,className:\"mm-crumbs__item mm-crumbs__item--fixed mm-crumbs__current\",\"aria-current\":\"page\",children:item.crumb.title},item.key);}if(item.kind===\"ancestor\"){return /*#__PURE__*/_jsx(motion.li,{...layoutProps,className:\"mm-crumbs__item\",style:ancestorStyle(item.index),children:/*#__PURE__*/_jsx(\"a\",{className:\"mm-crumbs__link\",href:href(item.crumb.link),children:item.crumb.title})},item.key);}return /*#__PURE__*/_jsx(motion.li,{...layoutProps,className:\"mm-crumbs__item mm-crumbs__item--fixed\",children:/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"mm-crumbs__toggle\",\"aria-label\":open?\"Hide levels\":\"Show hidden levels\",\"aria-expanded\":open,\"aria-controls\":panelId,onClick:toggleOpen,onPointerEnter:openOnHover,children:\"…\"})},item.key);})})})})}),typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(AnimatePresence,{children:open&&anchor&&/*#__PURE__*/_jsx(motion.ul,{ref:panelRef,id:panelId,className:\"mm-crumbs__panel\",\"data-theme\":darkMode?\"dark\":\"light\",style:{left:anchor.left,top:anchor.top,maxWidth:anchor.maxWidth},initial:reduceMotion?{opacity:0}:{opacity:0,y:-4,scale:.95},animate:{opacity:1,y:0,scale:1},exit:reduceMotion?{opacity:0}:{opacity:0,y:-4,scale:.95},transition:{duration:open?.2:.15,ease:EASE_ARRAY},onKeyDown:onKeyDown,onBlur:onBlur,onPointerEnter:cancelHoverClose,onPointerLeave:scheduleHoverClose,children:foldedCrumbs.map(crumb=>/*#__PURE__*/_jsx(\"li\",{children:/*#__PURE__*/_jsx(\"a\",{className:\"mm-crumbs__panel-link\",href:href(crumb.link),children:crumb.title})},`${crumb.link}-${crumb.title}`))})}),document.body),/*#__PURE__*/_jsx(\"div\",{className:\"mm-crumbs__measure\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsxs(\"ol\",{ref:measureRef,children:[crumbs.map((crumb,index)=>/*#__PURE__*/_jsx(\"li\",{\"data-measure\":\"label\",children:crumb.title},`${index}-${crumb.title}`)),/*#__PURE__*/_jsx(\"li\",{\"data-measure\":\"separator\",children:\"/\"}),/*#__PURE__*/_jsx(\"li\",{\"data-measure\":\"ellipsis\",style:{width:24},children:\"…\"})]})})]});}addPropertyControls(BreadcrumbsCode,{darkMode:{type:ControlType.Boolean,title:\"Dark mode\",defaultValue:false},level1Title:{type:ControlType.String,title:\"Level 1 Title\",defaultValue:\"\",placeholder:\"Leave empty to skip\"},level1Link:{type:ControlType.Link,title:\"Level 1 Link\"},level2Title:{type:ControlType.String,title:\"Level 2 Title\",defaultValue:\"\",placeholder:\"Leave empty to skip\"},level2Link:{type:ControlType.Link,title:\"Level 2 Link\"},level3Title:{type:ControlType.String,title:\"Level 3 Title\",defaultValue:\"\",placeholder:\"Leave empty to skip\"},level3Link:{type:ControlType.Link,title:\"Level 3 Link\"},level4Title:{type:ControlType.String,title:\"Level 4 Title\",defaultValue:\"\",placeholder:\"Leave empty to skip\"},level4Link:{type:ControlType.Link,title:\"Level 4 Link\"},cmsTitle:{type:ControlType.String,title:\"CMS Title\",defaultValue:\"\",placeholder:\"Bind to CMS title\"},cmsLink:{type:ControlType.Link,title:\"CMS Link\"},align:{type:ControlType.Enum,title:\"Align\",defaultValue:\"left\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],displaySegmentedControl:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BreadcrumbsCode\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BreadcrumbsCode.map"],"mappings":"8UAEoL,SAAS,GAAoB,EAAW,CAAC,IAAM,GAAM,GAAY,GAAA,CAAI,YAAY,EAAE,GAAG,GAAM,EAAsB,GAAM,OAAO,EAAsB,GAAM,GAAG,EAAK,MAAM,GAAG,GAAU,IAAS,OAAY,CAAC,IAAM,GAAS,EAAO,SAAS,SAAS,MAAM,GAAG,CAAC,CAAC,IAAI,GAAA,CAAI,YAAY,EAAE,GAAG,EAAgB,SAAS,CAAO,EAAE,MAAM,IAAI,CAAQ,CAAC,MAAM,EAAG,CAAC,SAAS,GAAa,EAAK,EAAO,CAAC,GAAG,CAAC,GAAQ,CAAC,GAAM,CAAC,EAAK,WAAW,GAAG,EAAE,OAAO,EAAK,IAAM,GAAS,EAAK,MAAM,GAAG,CAAC,CAAC,IAAI,GAAA,CAAI,YAAY,EAAmD,OAA9C,EAAgB,SAAS,CAAO,EAAS,EAAY,IAAO,IAAI,EAAO,IAAI,EAAO,CAAK,CAAmG,SAAS,EAAS,EAAM,CAAC,GAAG,OAAO,GAAQ,SAAS,OAAO,EAAM,GAAG,CAAC,GAAO,OAAO,GAAQ,SAAS,MAAM,GAAG,IAAM,EAAU,EAAM,OAAO,EAAS,EAAU,KAAK,GAAG,EAAS,EAAU,GAAG,GAAG,EAAS,EAAU,IAAI,CAAE,CAEp6B,SAAS,GAAe,EAAM,EAAS,CAAC,IAAM,EAAO,CAAC,EAAE,IAAI,IAAI,EAAM,EAAE,GAAO,EAAY,IAAQ,CAAC,IAAM,EAAM,OAAO,EAAM,QAAQ,EAAM,SAAS,EAAE,CAAC,CAAC,KAAK,EAAK,GAAM,EAAO,KAAK,CAAC,QAAM,KAAK,EAAS,EAAM,QAAQ,EAAM,MAAM,CAAC,CAAC,CAAE,CAAC,IAAM,EAAS,OAAO,EAAM,UAAU,EAAE,CAAC,CAAC,KAAK,EAAyE,OAApE,GAAS,EAAO,KAAK,CAAC,MAAM,EAAS,KAAK,EAAS,EAAM,OAAO,CAAC,CAAC,EAAS,EAAO,OAAO,EAAO,EAAS,EAAc,CAAC,CAAE,CAAC,SAAS,EAAc,EAAM,CAAC,IAAM,EAAO,EAAM,EAAE,GAAG,EAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAM,GAAO,EAAK,IAAK,EAAK,EAAG,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,EAAG,EAAK,CAAC,GAAG,EAAE,IAAS,EAAK,CAAM,EAAQ,EAAM,CAAC,CAAC,EAAE,EAAM,EAAE,CAAM,EAAE,EAAM,EAAE,CAAM,CAAC,EAAE,OAAO,EAAM,QAAQ,EAAK,IAAQ,IAAQ,GAAG,EAAK,OAAO,EAAM,EAAM,EAAE,CAAC,MAAM,CAAE,CAAC,SAAS,EAAS,EAAQ,EAAO,EAAc,CAAC,IAAM,EAAa,EAAQ,YAAY,OAAO,EAAQ,EAAO,IAAI,IAAI,CAAM,EAAM,EAAM,IAAO,KAAK,GAAU,EAAM,EAAO,KAAK,EAAE,EAAQ,cAAc,EAAE,EAAQ,YAAY,SAAS,EAAQ,IAAQ,CAAI,EAAO,IAAI,CAAK,IAAS,GAAO,EAAE,GAAO,IAAQ,EAAa,EAAQ,EAAc,CAAK,EAAE,CAAC,EAAE,IAAM,EAAW,KAAK,IAAI,EAAE,EAAM,CAAC,EAAE,OAAO,EAAM,EAAW,EAAQ,eAAe,KAAK,IAAI,EAAE,EAAM,EAAW,CAAC,EAAE,EAAQ,GAAI,CAE3xC,SAAS,GAAe,EAAQ,EAAU,CAAC,GAAG,EAAE,EAAU,IAAI,EAAQ,YAAY,OAAO,EAAE,MAAM,CAAC,EAAE,IAAM,EAAM,EAAQ,YAAY,OAAa,EAAM,EAAc,CAAK,CAAC,CAAC,OAAO,GAAM,EAAa,EAAM,CAAI,GAAG,CAAiB,EAAQ,EAAQ,GAAO,EAAQ,YAAY,GAAa,EAAU,GAAO,KAAK,IAAI,EAAQ,YAAY,GAAO,EAAQ,aAAa,EAAE,IAAI,IAAM,KAAQ,EAAgE,GAAtD,EAAS,EAAQ,EAAK,CAAO,GAAG,GAAyB,EAAK,OAAO,GAAG,EAAS,EAAQ,EAAK,CAAS,GAAG,EAAU,OAAO,EAAM,OAAO,EAAM,EAAM,OAAO,EAAG,CA6BhiB,SAAS,GAAY,EAAO,EAAO,CAAC,IAAM,EAAO,IAAI,IAAI,CAAM,EAAQ,EAAI,CAAC,EAAQ,EAAI,GAAM,CAAI,EAAI,QAAO,EAAI,KAAK,CAAC,KAAK,YAAY,IAAI,SAAS,EAAI,EAAI,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,EAAI,KAAK,CAAI,CAAE,EAAwS,OAAtS,EAAO,SAAS,EAAM,IAAQ,CAAC,GAAG,EAAO,IAAI,CAAK,EAAE,CAAI,EAAI,EAAI,OAAO,EAAE,EAAE,OAAO,YAAW,EAAI,CAAC,KAAK,WAAW,IAAI,UAAU,CAAC,EAAE,MAAO,CAAC,IAAM,EAAI,GAAG,EAAM,GAAG,EAAM,QAAc,EAAU,IAAQ,EAAO,OAAO,EAAE,EAAI,EAAU,CAAC,KAAK,UAAU,MAAI,OAAK,EAAE,CAAC,KAAK,WAAW,MAAI,QAAM,OAAK,CAAC,CAAE,CAAC,EAAS,CAAI,CAGhf,SAAwB,EAAgB,EAAM,CAAC,GAAK,CAAC,QAAM,OAAO,WAAS,GAAM,SAAO,EAAY,EAAS,EAAa,QAAQ,IAAI,EAAa,OAAa,EAAa,GAAiB,GAAG,GAAoF,GAAa,IAA1E,OAAO,GAAgB,WAAW,EAAc,EAAE,KAAA,EAAwD,cAAc,MAAM,EAAE,EAAQ,EAAQ,mBAAmBA,GAAM,CAAC,CAAC,QAAQ,KAAK,EAAE,IAAU,EAAOC,MAAY,GAAe,EAAM,CAAQ,EAAE,CAAC,EAAM,CAAQ,CAAC,EAAQ,EAAS,EAAO,IAAI,GAAO,GAAG,EAAM,KAAK,GAAG,EAAM,OAAO,CAAC,CAAC,KAAK;CAAI,EAAQ,EAAOC,EAAO,IAAI,EAAQ,EAASA,EAAO,IAAI,EAAQ,EAAWA,EAAO,IAAI,EAAO,CAAC,EAAQ,GAAYC,EAAS,IAAI,EAAO,CAAC,EAAO,GAAWA,EAAS,CAAC,CAAC,EAAO,CAAC,EAAU,GAAcA,EAAS,IAAI,EAAO,CAAC,EAAK,GAASA,EAAS,EAAK,EAG3xB,CAAC,EAAO,IAAWA,EAAS,IAAI,EAAQ,EAASD,EAAO,IAAI,EAC5D,CAAC,EAAY,GAAgBC,EAAS,EAAK,EAAoG,MAAkB,EAAO,SAAS,eAAe,eAAe,KAA0G,EAAeC,MAAgB,CAAC,IAAM,EAAO,EAAc,EAAE,GAAG,EAAO,CAAC,IAAM,EAAS,iBAAiB,CAAM,EAAQ,EAAQ,OAAO,WAAW,EAAS,WAAW,EAAE,OAAO,WAAW,EAAS,YAAY,EAAQ,EAAM,EAAO,aAAa,OAAO,SAAS,CAAO,EAAE,EAAQ,GAAG,GAAG,EAAM,EAAE,OAAO,CAAM,CAAC,OAAO,EAAO,SAAS,sBAAsB,CAAC,CAAC,OAAO,CAAE,EAAE,CAAC,CAAC,EAAQ,EAAMA,EAAY,GAAS,CAAC,GAAG,CAAC,EAAQ,OAAO,IAAM,EAAK,EAAe,EAAE,EAAa,GAAM,IAAI,EAAE,IAAM,EAAK,GAAe,EAAQ,CAAI,EAAE,EAAU,GAAU,EAAY,EAAS,CAAI,EAAE,EAAS,CAAI,CAAE,EAAE,CAAC,CAAc,CAAC,EAAQ,EAAcA,MAAgB,CAAC,IAAM,EAAI,EAAW,QAAQ,GAAG,CAAC,GAAY,IAAS,OAAY,OAAO,IAAM,EAAI,OAAO,WAAW,iBAAiB,SAAS,eAAe,CAAC,CAAC,QAAQ,GAAG,GAAS,EAAM,GAAS,EAAQ,EAAQ,sBAAsB,CAAC,CAAC,MAAM,EAAQ,EAAK,CAAC,YAAY,MAAM,KAAK,EAAI,iBAAiB,wBAAwB,CAAC,CAAC,CAAC,IAAI,GAAO,KAAK,KAAK,EAAM,CAAK,CAAC,CAAC,EAAE,eAAe,EAAM,EAAI,cAAc,4BAA4B,CAAC,EAAE,cAAc,EAAM,EAAI,cAAc,2BAA2B,CAAC,EAAE,IAAI,EAAQ,cAAc,EAAmB,CAAG,EAAE,EAAW,CAAI,EAAE,EAAM,CAAI,CAAE,EAAE,CAAC,CAAK,CAAC,EAE7+C,MAAoB,CAAC,EAAe,EAAK,EAAE,EAAQ,EAAK,EAAE,EAAc,EAAE,IAAM,EAAM,0BAA0B,EAAe,EAAI,CAAC,EAAE,UAAU,qBAAqB,CAAK,CAAE,EAAE,CAAC,EAAS,CAAa,CAAC,EAAE,MAAc,CAAC,GAAG,OAAO,SAAW,KAAa,CAAC,SAAS,OAAO,MAAM,OAAO,IAAI,EAAU,GAA2E,OAArE,SAAc,MAAM,MAAM,SAAS,CAAK,GAAU,EAAc,CAAE,CAAC,MAAY,CAAC,EAAU,EAAK,CAAE,EAAE,CAAC,CAAa,CAAC,EAAE,MAAc,CAAC,IAAM,EAAO,EAAc,GAAG,EAAO,QAAQ,GAAG,CAAC,GAAQ,OAAO,eAAiB,IAAY,OAAO,IAAM,EAAS,IAAI,mBAAmB,EAAM,CAAO,CAAC,EAA2B,OAAzB,EAAS,QAAQ,CAAM,MAAY,EAAS,WAAW,CAAE,EAAE,CAAC,EAAQ,CAAK,CAAC,EAAE,MAAc,CAAC,GAAG,OAAO,SAAW,IAAY,OAAO,IAAM,EAAc,GAAO,CAAK,EAAiB,EAAM,MAAM,GAAE,EAAQ,EAAK,CAAE,EAAyD,OAAvD,SAAS,iBAAiB,cAAc,CAAa,MAAY,SAAS,oBAAoB,cAAc,CAAa,CAAE,EAAE,CAAC,CAAC,EAAE,IAAM,EAAa,EAAO,IAAI,GAAO,EAAO,EAAM,CAAC,CAAC,OAAO,OAAO,EAAE,MAAc,CAAK,EAAa,QAAO,EAAQ,EAAK,CAAE,EAAE,CAAC,EAAa,MAAM,CAAC,EAAE,IAAM,EAAiB,GAAM,GAAQ,EAAO,SAAS,SAAS,CAAI,GAAG,EAAS,SAAS,SAAS,CAAI,GAEnnC,MAAkB,CAAC,IAAM,EAAI,EAAO,QAAc,EAAO,GAAK,cAAc,oBAAoB,EAAE,GAAG,CAAC,GAAK,CAAC,EAAO,OAAO,IAAM,EAAM,EAAI,sBAAsB,EAAQ,EAAK,EAAO,sBAAsB,EAAQ,EAAK,KAAK,IAAI,EAAM,KAAK,EAAK,KAAK,EAAgB,EAAE,GAAU,CAAC,KAAK,EAAK,EAAO,QAAQ,IAAI,EAAM,OAAO,EAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,EAAM,MAAM,EAAK,GAAG,CAAC,CAAC,CAAE,EAAQ,OAAe,CAAC,EAAc,EAAE,EAAQ,GAAO,CAAC,CAAK,CAAE,EAGhd,MAAoB,IAAS,QAAa,EAAO,WAAW,oCAAoC,CAAC,CAAC,QAAc,EAAgBF,EAAO,IAAI,EAAQ,MAAqB,CAAI,EAAgB,SAAQ,aAAa,EAAgB,OAAO,EAAE,EAAgB,QAAQ,IAAK,EAAQ,GAAY,GAAO,CAAI,EAAM,cAAc,SAAS,CAAC,EAAS,IAAS,EAAiB,EAAE,EAAc,EAAE,EAAQ,EAAI,EAAE,EAAQ,MAAuB,CAAK,EAAS,IAAS,EAAiB,EAAE,EAAgB,QAAQ,eAAe,EAAQ,EAAK,EAAE,GAAG,EAAE,EAAE,MAAc,EAAiB,CAAC,CAAC,EAAE,IAAM,OAAoB,CAAC,EAAQ,EAAK,EAAE,EAAO,SAAS,cAAc,oBAAoB,CAAC,EAAE,MAAM,CAAE,EAAQ,GAAU,GAAO,CAAI,EAAM,MAAM,UAAU,GAAK,GAAgB,CAAE,EAAQ,GAAO,GAAO,CAAK,EAAiB,EAAM,aAAa,GAAE,EAAQ,EAAK,CAAE,EAEhhB,GAAvS,MAAc,CAAC,GAAG,CAAC,GAAa,IAAS,OAAY,OAAO,IAAM,MAAU,EAAQ,EAAK,EAAiG,OAA/F,EAAO,iBAAiB,SAAS,CAAK,EAAE,EAAO,iBAAiB,SAAS,EAAM,CAAC,QAAQ,EAAI,CAAC,MAAY,CAAC,EAAO,oBAAoB,SAAS,CAAK,EAAE,EAAO,oBAAoB,SAAS,CAAK,CAAE,CAAE,EAAE,CAAC,CAAI,CAAC,EAAK,EAAO,OAAO,EAAE,OAAO,KAAK,IAAM,GAAS,GAAY,EAAO,CAAM,EAAQ,GAAc,GAAO,CAAC,IAAM,EAAQ,GAAS,YAAY,GAAU,SAAU,IAAA,IAAW,CAAC,GAAyB,MAAM,CAAC,SAAS,KAAK,IAAI,EAAQ,EAAQ,aAAa,CAAC,CAAE,EAAQ,EAAK,GAAM,GAAa,EAAK,EAAY,GAAG,IAAU,GAAS,iBAAiB,IAAQ,OAAO,GAAG,oBAAoB,MAEzpB,GAAc,GAAa,CAAC,EAC5B,GAAK,CAAC,QAAQ,EAAY,CAAC,QAAQ,CAAC,EAAE,GAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAY,CAAC,QAAQ,CAAC,EAAE,IAAA,EAAS,EAAE,OAAoB,EAAM,MAAM,CAAC,IAAI,EAAO,aAAa,aAAa,UAAU,YAAY,aAAa,EAAS,OAAO,QAAQ,MAAM,CAAC,GAAG,EAAM,SAAS,GAAW,IAAA,EAAS,EAAY,aAAiB,UAAO,eAAe,EAAiB,eAAe,EAAmB,SAAS,CAAc,EAAK,QAAQ,CAAC,SAAS,CAAG,CAAC,EAAe,EAAK,MAAM,CAAC,IAAI,EAAS,UAAU,mBAAmB,SAAsB,EAAK,GAAY,CAAC,GAAG,GAAG,EAAQ,MAAM,SAAsB,EAAK,KAAK,CAAC,UAAU,GAAS,SAAsB,EAAK,EAAgB,CAAC,QAAQ,GAAM,SAAS,GAAS,IAAI,GAAM,CAAC,IAAM,EAAY,CAAC,OAAO,GAAc,WAAW,GAAM,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAU,EAAE,QAAQ,CAAC,SAAS,EAAK,OAAO,YAAY,IAAI,GAAG,KAAK,CAAU,CAAC,EAAE,GAAG,EAAI,EAA+pB,OAA1pB,EAAK,OAAO,YAAiC,EAAK,EAAO,GAAG,CAAC,GAAG,EAAY,UAAU,8DAA8D,cAAc,OAAO,SAAS,GAAG,EAAE,EAAK,GAAG,EAAM,EAAK,OAAO,UAA+B,EAAK,EAAO,GAAG,CAAC,GAAG,EAAY,UAAU,4DAA4D,eAAe,OAAO,SAAS,EAAK,MAAM,KAAK,EAAE,EAAK,GAAG,EAAM,EAAK,OAAO,WAAgC,EAAK,EAAO,GAAG,CAAC,GAAG,EAAY,UAAU,kBAAkB,MAAM,GAAc,EAAK,KAAK,EAAE,SAAsB,EAAK,IAAI,CAAC,UAAU,kBAAkB,KAAK,EAAK,EAAK,MAAM,IAAI,EAAE,SAAS,EAAK,MAAM,KAAK,CAAC,CAAC,EAAE,EAAK,GAAG,EAAuB,EAAK,EAAO,GAAG,CAAC,GAAG,EAAY,UAAU,yCAAyC,SAAsB,EAAK,SAAS,CAAC,KAAK,SAAS,UAAU,oBAAoB,aAAa,EAAK,cAAc,qBAAqB,gBAAgB,EAAK,gBAAgB,EAAQ,QAAQ,GAAW,eAAe,GAAY,SAAS,GAAG,CAAC,CAAC,EAAE,EAAK,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,SAAW,KAA0B,GAA0B,EAAK,EAAgB,CAAC,SAAS,GAAM,GAAqB,EAAK,EAAO,GAAG,CAAC,IAAI,EAAS,GAAG,EAAQ,UAAU,mBAAmB,aAAa,EAAS,OAAO,QAAQ,MAAM,CAAC,KAAK,EAAO,KAAK,IAAI,EAAO,IAAI,SAAS,EAAO,QAAQ,EAAE,QAAQ,EAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,EAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,GAAG,EAAE,WAAW,CAAC,SAAS,EAAK,GAAG,IAAI,KAAK,CAAU,EAAY,aAAiB,UAAO,eAAe,EAAiB,eAAe,EAAmB,SAAS,EAAa,IAAI,GAAoB,EAAK,KAAK,CAAC,SAAsB,EAAK,IAAI,CAAC,UAAU,wBAAwB,KAAK,EAAK,EAAM,IAAI,EAAE,SAAS,EAAM,KAAK,CAAC,CAAC,EAAE,GAAG,EAAM,KAAK,GAAG,EAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAe,EAAK,MAAM,CAAC,UAAU,qBAAqB,cAAc,OAAO,SAAsB,EAAM,KAAK,CAAC,IAAI,EAAW,SAAS,CAAC,EAAO,KAAK,EAAM,IAAqB,EAAK,KAAK,CAAC,eAAe,QAAQ,SAAS,EAAM,KAAK,EAAE,GAAG,EAAM,GAAG,EAAM,OAAO,CAAC,EAAe,EAAK,KAAK,CAAC,eAAe,YAAY,SAAS,GAAG,CAAC,EAAe,EAAK,KAAK,CAAC,eAAe,WAAW,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,+CAtDzhG,KAA+E,IAA+E,IAAoC,IAAuF,EAE3U,EAAgB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAQ,EAAsB,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,GAAG,MAAM,GAAG,KAAK,EAAi4B,EAAY,EAEzjC,EAAc,CAAC,CAAC,MAAM,eAAe,KAAK,GAAG,EAAE,CAAC,MAAM,YAAY,KAAK,YAAY,EAAE,CAAC,MAAM,UAAU,KAAK,oBAAoB,CAAC,EAA2uC,EAAkB,EAAQ,GAAc,EAAM,IAAS,EAAM,EAAO,QAAQ,KAAO,OAE35B,GAAa,EAAK,IAAQ,EAAK,SAAS,EAAM,QAAQ,EAAK,OAAO,EAAM,IAAQ,IAAQ,EAAM,EAAM,EAA8D,EAAK,uDAA6D,EAAK,iCAAuC,EAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAQ,EAAmB,EAAQ,EAAQ,EAAQ,EAAI;wJAC/uB,EAAK;;gFAE7E,EAAQ;;;;8MAIsH,EAAK;;;;wQAIqD,EAAK,oBAAoB,EAAK;;;;oSAIF,EAAK;+PAC1C,EAAK;;;uFAG7K,EAAQ;;;;;;;;;;EA6Bm/F,EAAoB,EAAgB,CAAC,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,YAAY,aAAa,EAAK,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,mBAAmB,EAAE,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,EAAE,MAAM,CAAC,KAAK,EAAY,KAAK,MAAM,QAAQ,aAAa,OAAO,QAAQ,CAAC,OAAO,SAAS,OAAO,EAAE,aAAa,CAAC,OAAO,SAAS,OAAO,EAAE,wBAAwB,EAAI,CAAC,CAAC"}