{"version":3,"file":"shared-lib.D2KCUGs0.mjs","names":["useMemo","useMemo","useState","useMemo","vertexShaderSource","p","q","useRef","useMemo","ShaderMount","ShaderMountVanilla"],"sources":["https:/framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js","https:/framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js","https:/framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js","https:/framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js","https:/framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js","https:/framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js","https:/framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js","https:/framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js","https:/framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js","https:/framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js","https:/framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js","https:/framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js","https:/framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js","https:/framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js","https:/framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js","https:/framer.com/m/framer/default-utils.js@^0.45.0","https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js","https:/framerusercontent.com/modules/NLpw4UPElXpirDfZ8gK3/pnnblFdmCm84r7TGjG3U/shader_mount.js","https:/framerusercontent.com/modules/zIDOp1iaNFIXSAIx7ljo/VX06XYWdAlD95B9usTKm/warp.js","https:/framerusercontent.com/modules/r591zLdRh7n2CKaaHRG7/PCYxubr6wk68eTxKLhEH/get_shader_color_from_string.js","https:/framerusercontent.com/modules/q3nWgGXMhG0Ina6vgRVz/PVl4bshKvCOZO36e3vK1/index.js","https:/framer.com/m/index-uMsj.js@PVl4bshKvCOZO36e3vK1","https:/framerusercontent.com/modules/xx99X8dO7V1Egbc8GwnH/ghH1aHLmGZ0iE7qXDFVk/AnimatedLiquidBackground_Prod.js","https:/framerusercontent.com/modules/9QMt1oizRcsmkMrFZJI7/7FyXd7jUQ0y5UBN2OR6N/siteMetadata.js"],"sourcesContent":["import { ControlType } from \"framer\";\nexport const fontStack = `\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nexport const containerStyles = {\n    position: \"relative\",\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nexport const emptyStateStyle = {\n    ...containerStyles,\n    borderRadius: 6,\n    background: \"rgba(136, 85, 255, 0.3)\",\n    color: \"#85F\",\n    border: \"1px dashed #85F\",\n    flexDirection: \"column\"\n};\nexport const defaultEvents = {\n    onClick: {\n        type: ControlType.EventHandler\n    },\n    onMouseEnter: {\n        type: ControlType.EventHandler\n    },\n    onMouseLeave: {\n        type: ControlType.EventHandler\n    }\n};\nexport const fontSizeOptions = {\n    type: ControlType.Number,\n    title: \"Font Size\",\n    min: 2,\n    max: 200,\n    step: 1,\n    displayStepper: true\n};\nexport const fontControls = {\n    font: {\n        type: ControlType.Boolean,\n        title: \"Font\",\n        defaultValue: false,\n        disabledTitle: \"Default\",\n        enabledTitle: \"Custom\"\n    },\n    fontFamily: {\n        type: ControlType.String,\n        title: \"Family\",\n        placeholder: \"Inter\",\n        hidden: ({ font  })=>!font\n    },\n    fontWeight: {\n        type: ControlType.Enum,\n        title: \"Weight\",\n        options: [\n            100,\n            200,\n            300,\n            400,\n            500,\n            600,\n            700,\n            800,\n            900\n        ],\n        optionTitles: [\n            \"Thin\",\n            \"Extra-light\",\n            \"Light\",\n            \"Regular\",\n            \"Medium\",\n            \"Semi-bold\",\n            \"Bold\",\n            \"Extra-bold\",\n            \"Black\", \n        ],\n        hidden: ({ font  })=>!font\n    }\n};\n// @TODO check if we're missing anything here — there doesn't seem to be a reliable browser API for this\nexport const localeOptions = {\n    af: \"Afrikaans\",\n    sq: \"Albanian\",\n    an: \"Aragonese\",\n    ar: \"Arabic (Standard)\",\n    \"ar-dz\": \"Arabic (Algeria)\",\n    \"ar-bh\": \"Arabic (Bahrain)\",\n    \"ar-eg\": \"Arabic (Egypt)\",\n    \"ar-iq\": \"Arabic (Iraq)\",\n    \"ar-jo\": \"Arabic (Jordan)\",\n    \"ar-kw\": \"Arabic (Kuwait)\",\n    \"ar-lb\": \"Arabic (Lebanon)\",\n    \"ar-ly\": \"Arabic (Libya)\",\n    \"ar-ma\": \"Arabic (Morocco)\",\n    \"ar-om\": \"Arabic (Oman)\",\n    \"ar-qa\": \"Arabic (Qatar)\",\n    \"ar-sa\": \"Arabic (Saudi Arabia)\",\n    \"ar-sy\": \"Arabic (Syria)\",\n    \"ar-tn\": \"Arabic (Tunisia)\",\n    \"ar-ae\": \"Arabic (U.A.E.)\",\n    \"ar-ye\": \"Arabic (Yemen)\",\n    hy: \"Armenian\",\n    as: \"Assamese\",\n    ast: \"Asturian\",\n    az: \"Azerbaijani\",\n    eu: \"Basque\",\n    bg: \"Bulgarian\",\n    be: \"Belarusian\",\n    bn: \"Bengali\",\n    bs: \"Bosnian\",\n    br: \"Breton\",\n    my: \"Burmese\",\n    ca: \"Catalan\",\n    ch: \"Chamorro\",\n    ce: \"Chechen\",\n    zh: \"Chinese\",\n    \"zh-hk\": \"Chinese (Hong Kong)\",\n    \"zh-cn\": \"Chinese (PRC)\",\n    \"zh-sg\": \"Chinese (Singapore)\",\n    \"zh-tw\": \"Chinese (Taiwan)\",\n    cv: \"Chuvash\",\n    co: \"Corsican\",\n    cr: \"Cree\",\n    hr: \"Croatian\",\n    cs: \"Czech\",\n    da: \"Danish\",\n    nl: \"Dutch (Standard)\",\n    \"nl-be\": \"Dutch (Belgian)\",\n    en: \"English\",\n    \"en-au\": \"English (Australia)\",\n    \"en-bz\": \"English (Belize)\",\n    \"en-ca\": \"English (Canada)\",\n    \"en-ie\": \"English (Ireland)\",\n    \"en-jm\": \"English (Jamaica)\",\n    \"en-nz\": \"English (New Zealand)\",\n    \"en-ph\": \"English (Philippines)\",\n    \"en-za\": \"English (South Africa)\",\n    \"en-tt\": \"English (Trinidad & Tobago)\",\n    \"en-gb\": \"English (United Kingdom)\",\n    \"en-us\": \"English (United States)\",\n    \"en-zw\": \"English (Zimbabwe)\",\n    eo: \"Esperanto\",\n    et: \"Estonian\",\n    fo: \"Faeroese\",\n    fa: \"Farsi\",\n    fj: \"Fijian\",\n    fi: \"Finnish\",\n    fr: \"French (Standard)\",\n    \"fr-be\": \"French (Belgium)\",\n    \"fr-ca\": \"French (Canada)\",\n    \"fr-fr\": \"French (France)\",\n    \"fr-lu\": \"French (Luxembourg)\",\n    \"fr-mc\": \"French (Monaco)\",\n    \"fr-ch\": \"French (Switzerland)\",\n    fy: \"Frisian\",\n    fur: \"Friulian\",\n    gd: \"Gaelic (Scots)\",\n    \"gd-ie\": \"Gaelic (Irish)\",\n    gl: \"Galacian\",\n    ka: \"Georgian\",\n    de: \"German (Standard)\",\n    \"de-at\": \"German (Austria)\",\n    \"de-de\": \"German (Germany)\",\n    \"de-li\": \"German (Liechtenstein)\",\n    \"de-lu\": \"German (Luxembourg)\",\n    \"de-ch\": \"German (Switzerland)\",\n    el: \"Greek\",\n    gu: \"Gujurati\",\n    ht: \"Haitian\",\n    he: \"Hebrew\",\n    hi: \"Hindi\",\n    hu: \"Hungarian\",\n    is: \"Icelandic\",\n    id: \"Indonesian\",\n    iu: \"Inuktitut\",\n    ga: \"Irish\",\n    it: \"Italian (Standard)\",\n    \"it-ch\": \"Italian (Switzerland)\",\n    ja: \"Japanese\",\n    kn: \"Kannada\",\n    ks: \"Kashmiri\",\n    kk: \"Kazakh\",\n    km: \"Khmer\",\n    ky: \"Kirghiz\",\n    tlh: \"Klingon\",\n    ko: \"Korean\",\n    \"ko-kp\": \"Korean (North Korea)\",\n    \"ko-kr\": \"Korean (South Korea)\",\n    la: \"Latin\",\n    lv: \"Latvian\",\n    lt: \"Lithuanian\",\n    lb: \"Luxembourgish\",\n    mk: \"FYRO Macedonian\",\n    ms: \"Malay\",\n    ml: \"Malayalam\",\n    mt: \"Maltese\",\n    mi: \"Maori\",\n    mr: \"Marathi\",\n    mo: \"Moldavian\",\n    nv: \"Navajo\",\n    ng: \"Ndonga\",\n    ne: \"Nepali\",\n    no: \"Norwegian\",\n    nb: \"Norwegian (Bokmal)\",\n    nn: \"Norwegian (Nynorsk)\",\n    oc: \"Occitan\",\n    or: \"Oriya\",\n    om: \"Oromo\",\n    \"fa-ir\": \"Persian/Iran\",\n    pl: \"Polish\",\n    pt: \"Portuguese\",\n    \"pt-br\": \"Portuguese (Brazil)\",\n    pa: \"Punjabi\",\n    \"pa-in\": \"Punjabi (India)\",\n    \"pa-pk\": \"Punjabi (Pakistan)\",\n    qu: \"Quechua\",\n    rm: \"Rhaeto-Romanic\",\n    ro: \"Romanian\",\n    \"ro-mo\": \"Romanian (Moldavia)\",\n    ru: \"Russian\",\n    \"ru-mo\": \"Russian (Moldavia)\",\n    sz: \"Sami (Lappish)\",\n    sg: \"Sango\",\n    sa: \"Sanskrit\",\n    sc: \"Sardinian\",\n    sd: \"Sindhi\",\n    si: \"Singhalese\",\n    sr: \"Serbian\",\n    sk: \"Slovak\",\n    sl: \"Slovenian\",\n    so: \"Somani\",\n    sb: \"Sorbian\",\n    es: \"Spanish\",\n    \"es-ar\": \"Spanish (Argentina)\",\n    \"es-bo\": \"Spanish (Bolivia)\",\n    \"es-cl\": \"Spanish (Chile)\",\n    \"es-co\": \"Spanish (Colombia)\",\n    \"es-cr\": \"Spanish (Costa Rica)\",\n    \"es-do\": \"Spanish (Dominican Republic)\",\n    \"es-ec\": \"Spanish (Ecuador)\",\n    \"es-sv\": \"Spanish (El Salvador)\",\n    \"es-gt\": \"Spanish (Guatemala)\",\n    \"es-hn\": \"Spanish (Honduras)\",\n    \"es-mx\": \"Spanish (Mexico)\",\n    \"es-ni\": \"Spanish (Nicaragua)\",\n    \"es-pa\": \"Spanish (Panama)\",\n    \"es-py\": \"Spanish (Paraguay)\",\n    \"es-pe\": \"Spanish (Peru)\",\n    \"es-pr\": \"Spanish (Puerto Rico)\",\n    \"es-es\": \"Spanish (Spain)\",\n    \"es-uy\": \"Spanish (Uruguay)\",\n    \"es-ve\": \"Spanish (Venezuela)\",\n    sx: \"Sutu\",\n    sw: \"Swahili\",\n    sv: \"Swedish\",\n    \"sv-fi\": \"Swedish (Finland)\",\n    \"sv-sv\": \"Swedish (Sweden)\",\n    ta: \"Tamil\",\n    tt: \"Tatar\",\n    te: \"Teluga\",\n    th: \"Thai\",\n    tig: \"Tigre\",\n    ts: \"Tsonga\",\n    tn: \"Tswana\",\n    tr: \"Turkish\",\n    tk: \"Turkmen\",\n    uk: \"Ukrainian\",\n    hsb: \"Upper Sorbian\",\n    ur: \"Urdu\",\n    ve: \"Venda\",\n    vi: \"Vietnamese\",\n    vo: \"Volapuk\",\n    wa: \"Walloon\",\n    cy: \"Welsh\",\n    xh: \"Xhosa\",\n    ji: \"Yiddish\",\n    zu: \"Zulu\"\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./constants.map","import { useIsInCurrentNavigationTarget } from \"framer\";\nimport { useEffect } from \"react\";\nexport function useOnEnter(onEnter, enabled) {\n    return useOnSpecificTargetChange(true, onEnter, enabled);\n}\nexport function useOnExit(onExit, enabled) {\n    return useOnSpecificTargetChange(false, onExit, enabled);\n}\nfunction useOnSpecificTargetChange(goal, callback, enabled = true) {\n    const isInTarget = useIsInCurrentNavigationTarget();\n    useEffect(()=>{\n        if (enabled && isInTarget === goal) callback();\n    }, [\n        isInTarget\n    ]);\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useOnEnter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnNavigationTargetChange.map","import { useRef } from \"react\";\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */ export function useConstant(init) {\n    const ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useConstant.map","import { Color } from \"framer\";\nexport function colorFromToken(color) {\n    if (color.startsWith(\"var(--token-\")) return \"rgb\" + color.split(\") /*\")[0].split(\", rgb\")[1];\n    return color;\n}\nexport function colorTokentoValue(color) {\n    return Color(colorFromToken(color)).toValue();\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"colorFromToken\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./colorFromToken.map","import { MotionValue } from \"framer\";\nexport const isMotionValue = (v)=>v instanceof MotionValue\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isMotionValue.map","import * as React from \"react\";\nconst letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nconst l = ()=>letters[Math.floor(Math.random() * letters.length)]\n;\nexport const randomID = ()=>l() + l() + l() + l() + l() + l() + l() + l() + l()\n;\nfunction createUniqueClass(suffix) {\n    return `framer-${suffix}-${randomID()}`;\n}\nexport function useUniqueClassName(suffix, deps) {\n    const [className, setClassName] = React.useState(createUniqueClass(suffix));\n    React.useEffect(()=>{\n        setClassName(createUniqueClass(suffix));\n    }, [\n        suffix,\n        ...deps\n    ]);\n    return className;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useUniqueClassName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useUniqueClassName.map","import { ControlType } from \"framer\";\n// I realize this only applies to select right now\n// but we can work on it in here\nexport function getVariantControls(Component, variant, additionalControls = {\n}) {\n    return {\n        [`${variant}TextColor`]: {\n            type: ControlType.Color,\n            title: \"Text Color\",\n            defaultValue: Component.defaultProps[`${variant}TextColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}IconColor`]: {\n            type: ControlType.Color,\n            title: \"Icon Color\",\n            defaultValue: Component.defaultProps[`${variant}IconColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BackgroundColor`]: {\n            type: ControlType.Color,\n            title: \"Bg Color\",\n            defaultValue: Component.defaultProps[`${variant}BackgroundColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderColor`]: {\n            type: ControlType.Color,\n            title: \"Border Color\",\n            defaultValue: Component.defaultProps[`${variant}BorderColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderWidth`]: {\n            type: ControlType.Number,\n            title: \" \",\n            min: 0,\n            max: 5,\n            displayStepper: true,\n            defaultValue: Component.defaultProps[`${variant}BorderWidth`],\n            hidden: (props)=>props.variant !== variant\n        },\n        ...additionalControls\n    };\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"getVariantControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./variantUtils.map","import { useMemo } from \"react\";\nexport const isBrowserSafari = ()=>{\n    if (typeof navigator !== `undefined`) {\n        const userAgent = navigator.userAgent.toLowerCase();\n        const isSafari = (userAgent.indexOf(\"safari\") > -1 || userAgent.indexOf(\"framermobile\") > -1 || userAgent.indexOf(\"framerx\") > -1) && userAgent.indexOf(\"chrome\") < 0;\n        return isSafari;\n    } else return false;\n};\nexport const useIsBrowserSafari = ()=>useMemo(()=>isBrowserSafari()\n    , [])\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isBrowser.map","import { useEffect } from \"react\";\n//@ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\nexport function useOnChange(value, callback) {\n    useEffect(()=>// @ts-ignore this should be detected as a MV :shrug:\n        isMotionValue(value) ? value.onChange(callback) : undefined\n    );\n}\nexport function useMultiOnChange(values, handler) {\n    useEffect(()=>{\n        const subscriptions = values.map((value)=>value.onChange(handler)\n        );\n        return ()=>subscriptions.forEach((unsubscribe)=>unsubscribe()\n            )\n        ;\n    });\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"Subscriber\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnChange.map","import { useCallback, useEffect, useRef } from \"react\";\nimport { motionValue, animate, RenderTarget } from \"framer\";\n// @ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\n// @ts-ignore\nimport { useConstant } from \"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";\nexport function useAutoMotionValue(inputValue, options) {\n    var ref;\n    // Put options on a local ref\n    // Might wanna just memo instead but it works for now\n    const optionsRef = useRef(options);\n    const animation = useRef();\n    const didInitialMount = useRef(false);\n    const isOnCanvas = RenderTarget.current() === RenderTarget.canvas;\n    // in-progress - trying to figure out effect hooks\n    const onChangeDeps = (options === null || options === void 0 ? void 0 : options.onChangeDeps) ? options.onChangeDeps : [];\n    // Memoize the onChange handler\n    const onChange = useCallback(options === null || options === void 0 ? void 0 : options.onChange, [\n        ...onChangeDeps, \n    ]);\n    // Optionally scale the value from props\n    const transformer = useCallback((value)=>((ref = optionsRef.current) === null || ref === void 0 ? void 0 : ref.transform) ? optionsRef.current.transform(value) : value\n    , []);\n    // Create new MotionValue from inputValue\n    const value = useConstant(()=>isMotionValue(inputValue) ? inputValue : motionValue(transformer(inputValue))\n    );\n    // Setting value from prop change\n    useEffect(()=>{\n        if (!isMotionValue(inputValue) && didInitialMount.current) {\n            var ref1, ref2;\n            const newValue = transformer(inputValue);\n            (ref1 = animation.current) === null || ref1 === void 0 ? void 0 : ref1.stop();\n            // Call change callback\n            if (onChange) onChange(newValue, value);\n            // Trigger animation to new value\n            if (((ref2 = optionsRef.current) === null || ref2 === void 0 ? void 0 : ref2.animate) && !isOnCanvas) {\n                var ref3;\n                // @ts-ignore\n                animation.current = animate(value, newValue, (ref3 = optionsRef.current) === null || ref3 === void 0 ? void 0 : ref3.transition);\n            } else {\n                value.set(newValue);\n            }\n        }\n        didInitialMount.current = true;\n    }, [\n        inputValue,\n        ...onChangeDeps\n    ]);\n    return value;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useAutoMotionValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","// @ts-ignore\nimport{fontStore}from\"framer\";import{useEffect}from\"react\";import{fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";const fontWeights={100:\"Thin\",200:\"Extra-light\",300:\"Light\",400:\"Regular\",500:\"Medium\",600:\"Semi-bold\",700:\"Bold\",800:\"Extra-bold\",900:\"Black\"};export function useFontControls(props){const{fontFamily=\"Inter\",fontSize=16,fontWeight=400,font=false}=props;const fontWeightName=fontWeights[fontWeight];const customFontStack=`\"${fontFamily} ${fontWeightName}\", \"${fontFamily}\", ${fontStack}`;const fontFamilyStyle=fontFamily?{fontSize,fontWeight,fontFamily:customFontStack}:{fontSize,fontWeight};const fetchCustomFonts=async()=>{await fontStore.loadWebFontsFromSelectors([`CUSTOM;${fontFamily}`,`CUSTOM;${fontFamily} ${fontWeightName}`,`GF;${fontFamily}-${fontWeightName.toLowerCase()}`,]).catch(e=>console.error(e));};useEffect(()=>{if(font)fetchCustomFonts();},[font,fontFamily,fontWeight]);return fontFamilyStyle;}\nexport const __FramerMetadata__ = {\"exports\":{\"useFontControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useFontControls.map","import { useMemo } from \"react\";\nimport { RenderTarget } from \"framer\";\nexport function useRenderTarget() {\n    const currentRenderTarget = useMemo(()=>RenderTarget.current()\n    , []);\n    return currentRenderTarget;\n}\nexport function useIsInPreview() {\n    const inPreview = useMemo(()=>RenderTarget.current() === RenderTarget.preview\n    , []);\n    return inPreview;\n}\nexport function useIsOnCanvas() {\n    const onCanvas = useMemo(()=>RenderTarget.current() === RenderTarget.canvas\n    , []);\n    return onCanvas;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsInPreview\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useRenderTarget.map","import * as React from \"react\";\nexport function useControlledState(value) {\n    const [controlledValue, setValue] = React.useState(value);\n    React.useEffect(()=>{\n        setValue(value);\n    }, [\n        value\n    ]);\n    return [\n        controlledValue,\n        setValue\n    ];\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useControlledState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useControlledState.map","import { useMemo } from \"react\";\nimport { ControlType } from \"framer\";\nexport function useRadius(props) {\n    const { borderRadius , isMixedBorderRadius , topLeftRadius , topRightRadius , bottomRightRadius , bottomLeftRadius ,  } = props;\n    const radiusValue = useMemo(()=>isMixedBorderRadius ? `${topLeftRadius}px ${topRightRadius}px ${bottomRightRadius}px ${bottomLeftRadius}px` : `${borderRadius}px`\n    , [\n        borderRadius,\n        isMixedBorderRadius,\n        topLeftRadius,\n        topRightRadius,\n        bottomRightRadius,\n        bottomLeftRadius, \n    ]);\n    return radiusValue;\n}\nexport const borderRadiusControl = {\n    borderRadius: {\n        title: \"Radius\",\n        type: ControlType.FusedNumber,\n        toggleKey: \"isMixedBorderRadius\",\n        toggleTitles: [\n            \"Radius\",\n            \"Radius per corner\"\n        ],\n        valueKeys: [\n            \"topLeftRadius\",\n            \"topRightRadius\",\n            \"bottomRightRadius\",\n            \"bottomLeftRadius\", \n        ],\n        valueLabels: [\n            \"TL\",\n            \"TR\",\n            \"BR\",\n            \"BL\"\n        ],\n        min: 0\n    }\n};\nexport function usePadding(props) {\n    const { padding , paddingPerSide , paddingTop , paddingRight , paddingBottom , paddingLeft ,  } = props;\n    const paddingValue = useMemo(()=>paddingPerSide ? `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px` : padding\n    , [\n        padding,\n        paddingPerSide,\n        paddingTop,\n        paddingRight,\n        paddingBottom,\n        paddingLeft, \n    ]);\n    return paddingValue;\n}\nexport const paddingControl = {\n    padding: {\n        type: ControlType.FusedNumber,\n        toggleKey: \"paddingPerSide\",\n        toggleTitles: [\n            \"Padding\",\n            \"Padding per side\"\n        ],\n        valueKeys: [\n            \"paddingTop\",\n            \"paddingRight\",\n            \"paddingBottom\",\n            \"paddingLeft\", \n        ],\n        valueLabels: [\n            \"T\",\n            \"R\",\n            \"B\",\n            \"L\"\n        ],\n        min: 0,\n        title: \"Padding\"\n    }\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RadiusProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaddingProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./propUtils.map","import{defaultEvents,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";import{useOnEnter,useOnExit}from\"https://framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js\";import{useConstant}from\"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";import{colorTokentoValue,colorFromToken}from\"https://framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js\";import{isMotionValue}from\"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";import{useUniqueClassName,randomID}from\"https://framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js\";import{getVariantControls}from\"https://framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js\";import{useIsBrowserSafari}from\"https://framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js\";import{useMultiOnChange,useOnChange}from\"https://framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js\";import{mstoMinAndSec,secondsToMinutes}from\"https://framerusercontent.com/modules/4zHZnO5JojN1PrIbu2jm/revv9QCWpkh8lPzi2jje/time.js\";import{useAutoMotionValue}from\"https://framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js\";import{useFontControls}from\"https://framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js\";import{useRenderTarget,useIsInPreview,useIsOnCanvas}from\"https://framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js\";import{useControlledState}from\"https://framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js\";import{usePadding,useRadius,paddingControl,borderRadiusControl}from\"https://framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js\";import{detectAutoSizingAxis}from\"https://framerusercontent.com/modules/8CkHAZatUz1UR8jNTcfD/HwbnIAZlUmQ2oTpcLkaH/detectAutoSizingAxis.js\";export{useOnEnter,useOnExit,defaultEvents,isMotionValue,colorFromToken,colorTokentoValue,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack,useUniqueClassName,getVariantControls,useIsBrowserSafari,randomID,useConstant,useMultiOnChange,useOnChange,usePadding,useRadius,paddingControl,borderRadiusControl,mstoMinAndSec,useFontControls,secondsToMinutes,useAutoMotionValue,useRenderTarget,useIsInPreview,useControlledState,detectAutoSizingAxis,useIsOnCanvas,};\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useUniqueClassName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getVariantControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorFromToken\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useControlledState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useAutoMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsInPreview\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"detectAutoSizingAxis\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mstoMinAndSec\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnEnter\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"secondsToMinutes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","/*\n * index (framer/default-utils@0.45.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js\"\n","import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}export function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useDarkMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}export class ShaderMount{constructor(canvas,fragmentShader,uniforms={},webGlContextAttributes,/** The speed of the animation, or 0 to stop it. Supports negative values to play in reverse. */speed=1,/** Pass a seed to offset the starting u_time value and give deterministic results*/seed=0){_define_property(this,\"canvas\",void 0);_define_property(this,\"gl\",void 0);_define_property(this,\"program\",null);_define_property(this,\"uniformLocations\",{});/** The fragment shader that we are using */_define_property(this,\"fragmentShader\",void 0);/** Stores the RAF for the render loop */_define_property(this,\"rafId\",null);/** Time of the last rendered frame */_define_property(this,\"lastFrameTime\",0);/** Total time that we have played any animation, passed as a uniform to the shader for time-based VFX */_define_property(this,\"totalAnimationTime\",0);/** The current speed that we progress through animation time (multiplies by delta time every update). Allows negatives to play in reverse. If set to 0, rAF will stop entirely so static shaders have no recurring performance costs */_define_property(this,\"speed\",1);/** Uniforms that are provided by the user for the specific shader being mounted (not including uniforms that this Mount adds, like time and resolution) */_define_property(this,\"providedUniforms\",void 0);/** Just a sanity check to make sure frames don't run after we're disposed */_define_property(this,\"hasBeenDisposed\",false);/** If the resolution of the canvas has changed since the last render */_define_property(this,\"resolutionChanged\",true);_define_property(this,\"initWebGL\",()=>{const program=createProgram(this.gl,vertexShaderSource,this.fragmentShader);if(!program)return;this.program=program;this.setupPositionAttribute();this.setupUniforms();});_define_property(this,\"setupPositionAttribute\",()=>{const positionAttributeLocation=this.gl.getAttribLocation(this.program,\"a_position\");const positionBuffer=this.gl.createBuffer();this.gl.bindBuffer(this.gl.ARRAY_BUFFER,positionBuffer);const positions=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1];this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(positions),this.gl.STATIC_DRAW);this.gl.enableVertexAttribArray(positionAttributeLocation);this.gl.vertexAttribPointer(positionAttributeLocation,2,this.gl.FLOAT,false,0,0);});_define_property(this,\"setupUniforms\",()=>{this.uniformLocations={u_time:this.gl.getUniformLocation(this.program,\"u_time\"),u_pixelRatio:this.gl.getUniformLocation(this.program,\"u_pixelRatio\"),u_resolution:this.gl.getUniformLocation(this.program,\"u_resolution\"),...Object.fromEntries(Object.keys(this.providedUniforms).map(key=>[key,this.gl.getUniformLocation(this.program,key)]))};});_define_property(this,\"resizeObserver\",null);_define_property(this,\"setupResizeObserver\",()=>{this.resizeObserver=new ResizeObserver(()=>this.handleResize());this.resizeObserver.observe(this.canvas);this.handleResize();});_define_property(this,\"handleResize\",()=>{const pixelRatio=window.devicePixelRatio;const newWidth=this.canvas.clientWidth*pixelRatio;const newHeight=this.canvas.clientHeight*pixelRatio;if(this.canvas.width!==newWidth||this.canvas.height!==newHeight){this.canvas.width=newWidth;this.canvas.height=newHeight;this.resolutionChanged=true;this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height);this.render(performance.now())// this is necessary to avoid flashes while resizing (the next scheduled render will set uniforms)\n;}});_define_property(this,\"render\",currentTime=>{if(this.hasBeenDisposed)return;// Calculate the delta time\nconst dt=currentTime-this.lastFrameTime;this.lastFrameTime=currentTime;// Increase the total animation time by dt * animationSpeed\nif(this.speed!==0){this.totalAnimationTime+=dt*this.speed;}// Clear the canvas\nthis.gl.clear(this.gl.COLOR_BUFFER_BIT);// Update uniforms\nthis.gl.useProgram(this.program);// Update the time uniform\nthis.gl.uniform1f(this.uniformLocations.u_time,this.totalAnimationTime*.001);// If the resolution has changed, we need to update the uniform\nif(this.resolutionChanged){this.gl.uniform2f(this.uniformLocations.u_resolution,this.gl.canvas.width,this.gl.canvas.height);this.gl.uniform1f(this.uniformLocations.u_pixelRatio,window.devicePixelRatio);this.resolutionChanged=false;}this.gl.drawArrays(this.gl.TRIANGLES,0,6);// Loop if we're animating\nif(this.speed!==0){this.requestRender();}else{this.rafId=null;}});_define_property(this,\"requestRender\",()=>{if(this.rafId!==null){cancelAnimationFrame(this.rafId);}this.rafId=requestAnimationFrame(this.render);});_define_property(this,\"updateProvidedUniforms\",()=>{this.gl.useProgram(this.program);Object.entries(this.providedUniforms).forEach(([key,value])=>{const location=this.uniformLocations[key];if(location){if(Array.isArray(value)){switch(value.length){case 2:this.gl.uniform2fv(location,value);break;case 3:this.gl.uniform3fv(location,value);break;case 4:this.gl.uniform4fv(location,value);break;default:if(value.length===9){this.gl.uniformMatrix3fv(location,false,value);}else if(value.length===16){this.gl.uniformMatrix4fv(location,false,value);}else{console.warn(`Unsupported uniform array length: ${value.length}`);}}}else if(typeof value===\"number\"){this.gl.uniform1f(location,value);}else if(typeof value===\"boolean\"){this.gl.uniform1i(location,value?1:0);}else{console.warn(`Unsupported uniform type for ${key}: ${typeof value}`);}}});});/** Set a seed to get a deterministic result */_define_property(this,\"setSeed\",newSeed=>{const oneFrameAt120Fps=1e3/120;this.totalAnimationTime=newSeed*oneFrameAt120Fps;this.lastFrameTime=performance.now();this.render(performance.now());});/** Set an animation speed (or 0 to stop animation) */_define_property(this,\"setSpeed\",(newSpeed=1)=>{// Set the new animation speed\nthis.speed=newSpeed;if(this.rafId===null&&newSpeed!==0){// Moving from 0 to animating, kick off a new rAF loop\nthis.lastFrameTime=performance.now();this.rafId=requestAnimationFrame(this.render);}if(this.rafId!==null&&newSpeed===0){// Moving from animating to not animating, cancel the rAF loop\ncancelAnimationFrame(this.rafId);this.rafId=null;}});/** Update the uniforms that are provided by the outside shader */_define_property(this,\"setUniforms\",newUniforms=>{this.providedUniforms={...this.providedUniforms,...newUniforms};// If we need to allow users to add uniforms after the shader has been created, we can do that here\n// But right now we're expecting the uniform list to be predictable and static\n// this.setupUniforms();\nthis.updateProvidedUniforms();this.render(performance.now());});/** Dispose of the shader mount, cleaning up all of the WebGL resources */_define_property(this,\"dispose\",()=>{// Immediately mark as disposed to prevent future renders from leaking in\nthis.hasBeenDisposed=true;// Cancel the rAF loop\nif(this.rafId!==null){cancelAnimationFrame(this.rafId);this.rafId=null;}if(this.gl&&this.program){this.gl.deleteProgram(this.program);this.program=null;// Reset the WebGL context\nthis.gl.bindBuffer(this.gl.ARRAY_BUFFER,null);this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,null);this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,null);this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,null);// Clear any errors\nthis.gl.getError();}if(this.resizeObserver){this.resizeObserver.disconnect();this.resizeObserver=null;}this.uniformLocations={};});this.canvas=canvas;this.fragmentShader=fragmentShader;this.providedUniforms=uniforms;// Base our starting animation time on the provided seed value\nthis.totalAnimationTime=seed;const gl=canvas.getContext(\"webgl2\",webGlContextAttributes);if(!gl){throw new Error(\"WebGL not supported\");}this.gl=gl;this.initWebGL();this.setupResizeObserver();// Set the animation speed after everything is ready to go\nthis.setSpeed(speed);// Mark canvas as paper shader mount\nthis.canvas.setAttribute(\"data-paper-shaders\",\"true\");}}/** Vertex shader for the shader mount */const vertexShaderSource=`#version 300 es\nlayout(location = 0) in vec4 a_position;\n\nvoid main() {\n  gl_Position = a_position;\n}\n`;function createShader(gl,type,source){const shader=gl.createShader(type);if(!shader)return null;gl.shaderSource(shader,source);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){console.error(\"An error occurred compiling the shaders: \"+gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;}function createProgram(gl,vertexShaderSource,fragmentShaderSource){const vertexShader=createShader(gl,gl.VERTEX_SHADER,vertexShaderSource);const fragmentShader=createShader(gl,gl.FRAGMENT_SHADER,fragmentShaderSource);if(!vertexShader||!fragmentShader)return null;const program=gl.createProgram();if(!program)return null;gl.attachShader(program,vertexShader);gl.attachShader(program,fragmentShader);gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){console.error(\"Unable to initialize the shader program: \"+gl.getProgramInfoLog(program));gl.deleteProgram(program);gl.deleteShader(vertexShader);gl.deleteShader(fragmentShader);return null;}// Clean up shaders after successful linking\ngl.detachShader(program,vertexShader);gl.detachShader(program,fragmentShader);gl.deleteShader(vertexShader);gl.deleteShader(fragmentShader);return program;}\nexport const __FramerMetadata__ = {\"exports\":{\"ShaderMount\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./shader_mount.map","export const PatternShapes={Checks:0,Stripes:1,Edge:2};/**\n * 3d Perlin noise with exposed parameters\n *\n * Uniforms include:\n * u_scale - the scale applied to user space\n * u_rotation - the rotation applied to user space\n * u_color1 - the first pattern color\n * u_color2 - the second pattern color\n * u_color3 - the third pattern color\n * u_proportion (0 .. 1) - the proportion between colors (on 0.5 colors are equally distributed)\n * u_softness (0 .. 1) - the color blur (0 for pronounced edges, 1 for gradient)\n * u_shape (0 ... 2) - the color pattern to be distorted with noise & swirl\n *    - u_shape = 0 is checks\n *    - u_shape = 1 is stripes\n *    - u_shape = 2 is 2 halves of canvas (mapping the canvas height regardless of resolution)\n * u_shapeScale - the scale of color pattern (appies over the global scaling)\n * u_distortion - the noisy distortion over the UV coordinate (applied before the overlapping swirl)\n * u_swirl - the power of swirly distortion\n * u_swirlIterations - the number of swirl iterations (layering curves effect)\n *\n */export const warpFragmentShader=`#version 300 es\nprecision highp float;\n\nuniform float u_time;\nuniform float u_pixelRatio;\nuniform vec2 u_resolution;\n\nuniform float u_scale;\nuniform float u_rotation;\nuniform vec4 u_color1;\nuniform vec4 u_color2;\nuniform vec4 u_color3;\nuniform float u_proportion;\nuniform float u_softness;\nuniform float u_shape;\nuniform float u_shapeScale;\nuniform float u_distortion;\nuniform float u_swirl;\nuniform float u_swirlIterations;\n\n\nout vec4 fragColor;\n\n#define TWO_PI 6.28318530718\n#define PI 3.14159265358979323846\n\nvec2 rotate(vec2 uv, float th) {\n  return mat2(cos(th), sin(th), -sin(th), cos(th)) * uv;\n}\n\nfloat random(vec2 st) {\n  return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123);\n}\nfloat noise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = random(i);\n  float b = random(i + vec2(1.0, 0.0));\n  float c = random(i + vec2(0.0, 1.0));\n  float d = random(i + vec2(1.0, 1.0));\n\n  // Smoothstep for interpolation\n  vec2 u = f * f * (3.0 - 2.0 * f);\n\n  // Do the interpolation as two nested mix operations\n  // If you try to do this in one big operation, there's enough precision loss to be off by 1px at cell boundaries\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n\n}\n\nvec4 blend_colors(vec4 c1, vec4 c2, vec4 c3, float mixer, float edgesWidth, float edge_blur) {\n    vec3 color1 = c1.rgb * c1.a;\n    vec3 color2 = c2.rgb * c2.a;\n    vec3 color3 = c3.rgb * c3.a;\n\n    float r1 = smoothstep(.0 + .35 * edgesWidth, .7 - .35 * edgesWidth + .5 * edge_blur, mixer);\n    float r2 = smoothstep(.3 + .35 * edgesWidth, 1. - .35 * edgesWidth + edge_blur, mixer);\n\n    vec3 blended_color_2 = mix(color1, color2, r1);\n    float blended_opacity_2 = mix(c1.a, c2.a, r1);\n\n    vec3 c = mix(blended_color_2, color3, r2);\n    float o = mix(blended_opacity_2, c3.a, r2);\n    return vec4(c, o);\n}\n\nvoid main() {\n    vec2 uv = gl_FragCoord.xy / u_resolution.xy;\n    vec2 uv_original = uv;\n\n    float t = .5 * u_time;\n\n    float noise_scale = .0005 + .006 * u_scale;\n\n    uv -= .5;\n    uv *= (noise_scale * u_resolution);\n    uv = rotate(uv, u_rotation * .5 * PI);\n    uv /= u_pixelRatio;\n    uv += .5;\n\n    float n1 = noise(uv * 1. + t);\n    float n2 = noise(uv * 2. - t);\n    float angle = n1 * TWO_PI;\n    uv.x += 4. * u_distortion * n2 * cos(angle);\n    uv.y += 4. * u_distortion * n2 * sin(angle);\n\n    float iterations_number = ceil(clamp(u_swirlIterations, 1., 30.));\n    for (float i = 1.; i <= iterations_number; i++) {\n        uv.x += clamp(u_swirl, 0., 2.) / i * cos(t + i * 1.5 * uv.y);\n        uv.y += clamp(u_swirl, 0., 2.) / i * cos(t + i * 1. * uv.x);\n    }\n\n    float proportion = clamp(u_proportion, 0., 1.);\n\n    float shape = 0.;\n    float mixer = 0.;\n    if (u_shape < .5) {\n      vec2 checks_shape_uv = uv * (.5 + 3.5 * u_shapeScale);\n      shape = .5 + .5 * sin(checks_shape_uv.x) * cos(checks_shape_uv.y);\n      mixer = shape + .48 * sign(proportion - .5) * pow(abs(proportion - .5), .5);\n    } else if (u_shape < 1.5) {\n      vec2 stripes_shape_uv = uv * (.25 + 3. * u_shapeScale);\n      float f = fract(stripes_shape_uv.y);\n      shape = smoothstep(.0, .55, f) * smoothstep(1., .45, f);\n      mixer = shape + .48 * sign(proportion - .5) * pow(abs(proportion - .5), .5);\n    } else {\n      float sh = 1. - uv.y;\n      sh -= .5;\n      sh /= (noise_scale * u_resolution.y);\n      sh += .5;\n      float shape_scaling = .2 * (1. - u_shapeScale);\n      shape = smoothstep(.45 - shape_scaling, .55 + shape_scaling, sh + .3 * (proportion - .5));\n      mixer = shape;\n    }\n\n    vec4 color_mix = blend_colors(u_color1, u_color2, u_color3, mixer, 1. - clamp(u_softness, 0., 1.), .01 + .01 * u_scale);\n\n    fragColor = vec4(color_mix.rgb, color_mix.a);\n}\n`;\nexport const __FramerMetadata__ = {\"exports\":{\"WarpUniforms\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"warpFragmentShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PatternShapes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PatternShape\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./warp.map","/**  Convert color string from HSL, RGB, or hex to 0-to-1-range-RGBA array */export function getShaderColorFromString(colorString,fallback=[0,0,0,1]){// If the color string is already an array of 3 or 4 numbers, return it (with alpha=1 if needed)\nif(Array.isArray(colorString)){if(colorString.length===4)return colorString;if(colorString.length===3)return[...colorString,1];return getShaderColorFromString(fallback);}// If the color string is not a string, return the fallback\nif(typeof colorString!==\"string\"){return getShaderColorFromString(fallback);}let r,g,b,a=1;if(colorString.startsWith(\"#\")){[r,g,b,a]=hexToRgba(colorString);}else if(colorString.startsWith(\"rgb\")){[r,g,b,a]=parseRgba(colorString);}else if(colorString.startsWith(\"hsl\")){[r,g,b,a]=hslaToRgba(parseHsla(colorString));}else{console.error(\"Unsupported color format\",colorString);return getShaderColorFromString(fallback);}return[clamp(r,0,1),clamp(g,0,1),clamp(b,0,1),clamp(a,0,1)];}/** Convert hex to RGBA (0 to 1 range) */function hexToRgba(hex){// Remove # if present\nhex=hex.replace(/^#/,\"\");// Expand three-letter hex to six-letter\nif(hex.length===3){hex=hex.split(\"\").map(char=>char+char).join(\"\");}// Expand six-letter hex to eight-letter (add full opacity if no alpha)\nif(hex.length===6){hex=hex+\"ff\";}// Parse the components\nconst r=parseInt(hex.slice(0,2),16)/255;const g=parseInt(hex.slice(2,4),16)/255;const b=parseInt(hex.slice(4,6),16)/255;const a=parseInt(hex.slice(6,8),16)/255;return[r,g,b,a];}/** Parse RGBA string to RGBA (0 to 1 range) */function parseRgba(rgba){// Match both rgb and rgba patterns\nconst match=rgba.match(/^rgba?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+))?\\s*\\)$/i);if(!match)return[0,0,0,1];return[parseInt(match[1]??\"0\")/255,parseInt(match[2]??\"0\")/255,parseInt(match[3]??\"0\")/255,match[4]===undefined?1:parseFloat(match[4])];}/** Parse HSLA string */function parseHsla(hsla){const match=hsla.match(/^hsla?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(?:,\\s*([0-9.]+))?\\s*\\)$/i);if(!match)return[0,0,0,1];return[parseInt(match[1]??\"0\"),parseInt(match[2]??\"0\"),parseInt(match[3]??\"0\"),match[4]===undefined?1:parseFloat(match[4])];}/** Convert HSLA to RGBA (0 to 1 range) */function hslaToRgba(hsla){const[h,s,l,a]=hsla;const hDecimal=h/360;const sDecimal=s/100;const lDecimal=l/100;let r,g,b;if(s===0){r=g=b=lDecimal// achromatic\n;}else{const hue2rgb=(p,q,t)=>{if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p;};const q=lDecimal<.5?lDecimal*(1+sDecimal):lDecimal+sDecimal-lDecimal*sDecimal;const p=2*lDecimal-q;r=hue2rgb(p,q,hDecimal+1/3);g=hue2rgb(p,q,hDecimal);b=hue2rgb(p,q,hDecimal-1/3);}return[r,g,b,a];}export const clamp=(n,min,max)=>Math.min(Math.max(n,min),max);\nexport const __FramerMetadata__ = {\"exports\":{\"clamp\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getShaderColorFromString\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./get_shader_color_from_string.map","/** The core Shader Mounting class. Pass it a canvas element and a fragment shader to get started. */import{jsx as _jsx}from\"react/jsx-runtime\";export{ShaderMount}from\"https://framerusercontent.com/modules/NLpw4UPElXpirDfZ8gK3/pnnblFdmCm84r7TGjG3U/shader_mount.js\";// ----- Warping Distortion ----- //\n/** Warp: distortion + swirl + underlying shapes */export{warpFragmentShader,PatternShapes}from\"https://framerusercontent.com/modules/zIDOp1iaNFIXSAIx7ljo/VX06XYWdAlD95B9usTKm/warp.js\";// ----- Uniform conversion utils ----- //\nexport{getShaderColorFromString}from\"https://framerusercontent.com/modules/r591zLdRh7n2CKaaHRG7/PCYxubr6wk68eTxKLhEH/get_shader_color_from_string.js\";export default function A(props){return /*#__PURE__*/_jsx(\"div\",{});}\nexport const __FramerMetadata__ = {\"exports\":{\"PatternShapes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PatternShape\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShaderMount\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getShaderColorFromString\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"A\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"warpFragmentShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"WarpUniforms\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./index.map","/*\n * index\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/q3nWgGXMhG0Ina6vgRVz/PVl4bshKvCOZO36e3vK1/index.js\"\nexport { default } from \"https://framerusercontent.com/modules/q3nWgGXMhG0Ina6vgRVz/PVl4bshKvCOZO36e3vK1/index.js\"\n","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";import{useEffect,useRef,useMemo}from\"react\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";import{getShaderColorFromString,warpFragmentShader,PatternShapes,ShaderMount as ShaderMountVanilla}from\"https://framer.com/m/index-uMsj.js@PVl4bshKvCOZO36e3vK1\";import{cubicBezier,useInView}from\"framer-motion\";const speedEase=cubicBezier(.65,0,.88,.77);const templates={Prism:{color1:\"#050505\",color2:\"#66B3FF\",color3:\"#FFFFFF\",rotation:-50,proportion:1,scale:.01,speed:30,distortion:0,swirl:50,swirlIterations:16,softness:47,offset:-299,shape:\"Checks\",shapeSize:45},Lava:{color1:\"#FF9F21\",color2:\"#FF0303\",color3:\"#000000\",rotation:114,proportion:100,scale:.52,speed:30,distortion:7,swirl:18,swirlIterations:20,softness:100,offset:717,shape:\"Edge\",shapeSize:12},Plasma:{color1:\"#B566FF\",color2:\"#000000\",color3:\"#000000\",rotation:0,proportion:63,scale:.75,speed:30,distortion:5,swirl:61,swirlIterations:5,softness:100,offset:-168,shape:\"Checks\",shapeSize:28},Pulse:{color1:\"#66FF85\",color2:\"#000000\",color3:\"#000000\",rotation:-167,proportion:92,scale:0,speed:20,distortion:54,swirl:75,swirlIterations:3,softness:28,offset:-813,shape:\"Checks\",shapeSize:79},Vortex:{color1:\"#000000\",color2:\"#FFFFFF\",color3:\"#000000\",rotation:50,proportion:41,scale:.4,speed:20,distortion:0,swirl:100,swirlIterations:3,softness:5,offset:-744,shape:\"Stripes\",shapeSize:80},Mist:{color1:\"#050505\",color2:\"#FF66B8\",color3:\"#050505\",rotation:0,proportion:33,scale:.48,speed:39,distortion:4,swirl:65,swirlIterations:5,softness:100,offset:-235,shape:\"Edge\",shapeSize:48}};/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n */export default function AnimatedGradientBackground(props){const isStaticRenderer=useIsStaticRenderer();const isCanvas=RenderTarget.current()===RenderTarget.canvas;const useCustomColors=props.preset===\"custom\"||props.colorMode===\"custom\";const values=props.preset===\"custom\"?props:templates[props.preset]||Object.values(templates)[0];const[color1,color2,color3]=useColors(props.color1,props.color2,props.color3);const ref=useRef(null);const isInView=useInView(ref,{once:false,amount:.1});const currentSpeed=useMemo(()=>{if(isCanvas&&props.preview)return speedEase(props.speed/100)*5;if(!isStaticRenderer&&isInView)return speedEase(props.speed/100)*5;return 0;},[isInView,isStaticRenderer,props.speed,props.preview,isCanvas]);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{borderRadius:props.radius,overflow:\"hidden\",position:\"relative\",...props.style},children:[/*#__PURE__*/_jsx(Warp,{color1:useCustomColors?color1:values.color1,color2:useCustomColors?color2:values.color2,color3:useCustomColors?color3:values.color3,scale:values.scale,proportion:values.proportion/100,distortion:values.distortion/50,swirl:values.swirl/100,swirlIterations:values.swirl===0?0:values.swirlIterations,rotation:values.rotation*Math.PI/180,speed:currentSpeed,seed:values.offset*10,shape:PatternShapes[values.shape],shapeScale:values.shapeSize/100,softness:values.softness/100,style:props.style}),props.noise&&props.noise.opacity>0&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,backgroundImage:`url(\"https://framerusercontent.com/images/g0QcWrxr87K0ufOxIUFBakwYA8.png\")`,backgroundSize:props.noise.scale*200,backgroundRepeat:\"repeat\",opacity:props.noise.opacity/2}})]});}addPropertyControls(AnimatedGradientBackground,{preset:{type:ControlType.Enum,defaultValue:Object.keys(templates)[0],options:[...Object.keys(templates),\"custom\"],optionTitles:[...Object.keys(templates),\"Custom\"]},preview:{type:ControlType.Boolean,defaultValue:false},colorMode:{type:ControlType.Enum,defaultValue:\"preset\",options:[\"preset\",\"custom\"],optionTitles:[\"Preset\",\"Custom\"],displaySegmentedControl:true,title:\"Colors\",hidden:props=>props.preset===\"custom\"},color1:{type:ControlType.Color,defaultValue:\"#262626\",hidden:props=>props.preset!==\"custom\"&&props.colorMode===\"preset\"},color2:{type:ControlType.Color,defaultValue:\"#75c1f0\",hidden:props=>props.preset!==\"custom\"&&props.colorMode===\"preset\"},color3:{type:ControlType.Color,defaultValue:\"#ffffff\",hidden:props=>props.preset!==\"custom\"&&props.colorMode===\"preset\"},noise:{type:ControlType.Object,optional:true,icon:\"effect\",controls:{opacity:{type:ControlType.Number,defaultValue:.5,min:0,max:1,step:.01},scale:{type:ControlType.Number,defaultValue:1,min:.2,max:2,step:.1}}},rotation:{type:ControlType.Number,defaultValue:0,min:-360,max:360,step:1,unit:\"\\xb0\",hidden:props=>props.preset!==\"custom\"},proportion:{type:ControlType.Number,defaultValue:35,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},scale:{type:ControlType.Number,defaultValue:1,min:0,max:10,step:.01,hidden:props=>props.preset!==\"custom\"},speed:{type:ControlType.Number,defaultValue:25,step:1,min:0,max:100},distortion:{type:ControlType.Number,defaultValue:12,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},swirl:{type:ControlType.Number,defaultValue:80,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},swirlIterations:{type:ControlType.Number,defaultValue:10,min:0,max:20,step:1,title:\"Iterations\",hidden:props=>props.swirl===0||props.preset!==\"custom\"},softness:{type:ControlType.Number,defaultValue:100,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},offset:{type:ControlType.Number,defaultValue:0,min:-1e3,max:1e3,step:1,hidden:props=>props.preset!==\"custom\"},shape:{type:ControlType.Enum,defaultValue:\"Checks\",options:Object.keys(PatternShapes),hidden:props=>props.preset!==\"custom\"},shapeSize:{type:ControlType.Number,defaultValue:10,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},radius:{type:ControlType.BorderRadius,defaultValue:\"0px\"}});//////////////////////////////\nconst defaultPreset={name:\"Default\",params:{scale:1,rotation:0,speed:20,seed:0,color1:\"hsla(0, 0%, 15%, 1)\",color2:\"hsla(203, 80%, 70%, 1)\",color3:\"hsla(0, 0%, 100%, 1)\",proportion:.35,softness:1,distortion:.25,swirl:.8,swirlIterations:10,shapeScale:.1,shape:PatternShapes.Checks}};// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\nconst Warp=props=>{const uniforms=useMemo(()=>{return{u_scale:props.scale??defaultPreset.params.scale,u_rotation:props.rotation??defaultPreset.params.rotation,u_color1:getShaderColorFromString(props.color1,defaultPreset.params.color1),u_color2:getShaderColorFromString(props.color2,defaultPreset.params.color2),u_color3:getShaderColorFromString(props.color3,defaultPreset.params.color2),u_proportion:props.proportion??defaultPreset.params.proportion,u_softness:props.softness??defaultPreset.params.softness,u_distortion:props.distortion??defaultPreset.params.distortion,u_swirl:props.swirl??defaultPreset.params.swirl,u_swirlIterations:props.swirlIterations??defaultPreset.params.swirlIterations,u_shapeScale:props.shapeScale??defaultPreset.params.shapeScale,u_shape:props.shape??defaultPreset.params.shape};},[props.scale,props.rotation,props.color1,props.color2,props.color3,props.proportion,props.softness,props.distortion,props.swirl,props.swirlIterations,props.shapeScale,props.shape,props.speed]);return /*#__PURE__*/_jsx(ShaderMount,{...props,fragmentShader:warpFragmentShader,uniforms:uniforms});};const ShaderMount=({ref,fragmentShader,style,uniforms={},webGlContextAttributes,speed=1,seed=0})=>{const canvasRef=ref??useRef(null);const shaderMountRef=useRef(null);useEffect(()=>{if(canvasRef.current){shaderMountRef.current=new ShaderMountVanilla(canvasRef.current,fragmentShader,uniforms,webGlContextAttributes,speed,seed);}return()=>{shaderMountRef.current?.dispose();};},[fragmentShader,webGlContextAttributes]);useEffect(()=>{shaderMountRef.current?.setUniforms(uniforms);},[uniforms]);useEffect(()=>{shaderMountRef.current?.setSpeed(speed);},[speed]);useEffect(()=>{shaderMountRef.current?.setSeed(seed);},[seed]);return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:style});};function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}AnimatedGradientBackground.displayName=\"Animated Gradient Background\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedGradientBackground\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicHeight\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedLiquidBackground_Prod.map","// Generated by Framer (c0d7099)\nexport default function metadata(params,activeLocale){return{description:\"Board-certified orthopedic specialists providing expert diagnosis and treatment for elbow pain, injuries, and surgical care.\",favicon:\"https://framerusercontent.com/assets/W7C9kWNcH4Z2ReNFdf9bszSpw.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/h9ACjovpl0qxcDmZacDenBHnk.png\",title:\"The Elbow Docs\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"0SAAqC,CAExB,EAAkB,CAC3B,SAAU,WACV,MAAO,OACP,OAAQ,OACR,QAAS,OACT,eAAgB,SAChB,WAAY,SACf,CACY,EAAkB,CAC3B,GAAG,EACH,aAAc,EACd,WAAY,0BACZ,MAAO,OACP,OAAQ,kBACR,cAAe,SAClB,CACY,EAAgB,CACzB,QAAS,CACL,KAAM,EAAY,aACrB,CACD,aAAc,CACV,KAAM,EAAY,aACrB,CACD,aAAc,CACV,KAAM,EAAY,aACrB,CACJ,CAES,EAAY,OASR,EAAY,QAOZ,EAAY,OAMZ,EAAY,qBCpD8B,IACtB,iBCDH,iBCAA,iBCAM,iBCAN,iBCAM,qBCAL,iBCAE,IAE+F,iBCF1E,IACK,IAEqE,IAEJ,kBCJ/F,IAA6B,IAAoH,ICW/K,SAAgB,IAAgB,CAG5B,OAFiBA,MAAY,EAAa,SAAS,GAAK,EAAa,OACnE,EAAE,CAAC,mBAduB,IACM,iBCDP,ICE/B,SAAgB,GAAU,EAAO,CAC7B,GAAM,CAAE,eAAe,sBAAsB,gBAAgB,iBAAiB,oBAAoB,oBAAwB,EAU1H,OAToBC,MAAY,EAAsB,GAAG,EAAc,KAAK,EAAe,KAAK,EAAkB,KAAK,EAAiB,IAAM,GAAG,EAAa,IAC5J,CACE,EACA,EACA,EACA,EACA,EACA,EACH,CAAC,oBAZ0B,IACK,CAcxB,EAAsB,CAC/B,aAAc,CACV,MAAO,SACP,KAAM,EAAY,YAClB,UAAW,sBACX,aAAc,CACV,SACA,oBACH,CACD,UAAW,CACP,gBACA,iBACA,oBACA,mBACH,CACD,YAAa,CACT,KACA,KACA,KACA,KACH,CACD,IAAK,EACR,CACJ,CAgBa,EAAY,4BCtDmL,IAAiJ,IAAwH,IAAgJ,IAA4H,IAA+I,IAAgI,IAA6H,IAAyI,IAA0Q,KAAgI,KAA6J,IAAsI,IAAkK,sBEA/4D,SAAgB,GAAU,GAAG,EAAO,CAAC,IAAM,EAAS,EAAa,SAAS,GAAG,EAAa,OAAa,EAAoB,IAAS,OAAkB,EAAS,IAAa,CAAM,CAAC,EAAY,GAAgBC,MAAa,EAAmB,EAAO,IAAI,EAAuB,CAAC,CAAC,CAAC,MAAc,CAAC,GAAG,CAAC,EAAS,OAAO,IAAM,EAAI,SAAS,KAAK,cAAc,aAAa,CAAC,GAAG,CAAC,EAAI,OAAO,IAAM,EAAS,IAAI,qBAAqB,CAAC,EAAe,EAAmB,EAAO,IAAI,EAAuB,CAAC,CAAC,EAAG,CAAmE,OAAlE,EAAS,QAAQ,EAAI,CAAC,WAAW,GAAK,gBAAgB,CAAC,QAAQ,CAAC,CAAC,KAAW,EAAS,YAAY,EAAG,EAAO,CAAC,IAAM,EAAcC,MAAY,EAAO,IAAI,EAAuB,CAAC,CAAC,EAAO,CAAC,CAAC,GAAG,EAAc,OAAO,EAAO,IAAI,GAAO,GAAoB,EAAM,CAAC,CAAE,IAAI,EAAO,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAO,OAAO,IAAI,CAAC,IAAM,EAAM,EAAO,GACt+B,GAAG,OAAO,GAAQ,SAAS,CAAC,EAAO,KAAK,EAAM,CAAC,SAAU,IAAM,EAAa,EAAc,GAAS,EAAY,EAAY,GAAiB,GAAc,EAAa,EAAO,KAAK,EAAS,EAAY,MAAM,EAAY,OAAO,EAAM,EAAY,OAAO,EAAM,CAAO,EAAO,KAAK,EAAM,CAAG,OAAO,EACnS,SAAS,EAAmB,EAAc,CAAC,IAAM,EAAS,EAAa,SAAS,GAAG,EAAa,OAAa,EAAO,EAAE,CAAK,EAAU,EAAE,CAAK,EAAS,EAAE,CAAC,GAAG,GAAU,OAAO,SAAW,IAAY,CAAC,IAAM,EAAI,SAAS,KAAK,cAAc,aAAa,CAAC,GAAG,EAAI,CAAC,IAAM,EAAM,EAAI,aAAa,QAAQ,CAAC,GAAG,EAAM,CAAC,IAAM,EAAK,EAAe,EAAM,CAAC,EAAU,EAAK,EAAS,QAAY,CAAC,GAAK,CAAC,QAAM,QAAM,IAAoB,CAAC,EAAU,EAAe,EAAM,CAAC,EAAS,EAAe,EAAK,CAC/R,OAAzK,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,EAAU,CAAC,GAAG,OAAO,KAAK,EAAS,CAAC,CAAC,CAAa,QAAQ,GAAS,CAAC,EAAO,GAAS,CAAC,MAAM,EAAU,IAAU,GAAG,KAAK,EAAS,IAAU,GAAG,EAAG,CAAQ,EAAQ,SAAS,IAAoB,CAAC,IAAI,EAAa,GAAO,EAAY,GAAG,GAAG,OAAO,SAAW,IAAY,CAAC,IAAM,EAAO,SAAS,KAAK,iBAAiB,0FAA0F,CAAC,IAAI,IAAM,KAAS,EAAO,CAAC,IAAM,EAAM,EAAM,OAAO,SAAS,GAAG,CAAC,EAAM,SAAS,IAAM,EAAW,EAAE,CAAC,IAAI,IAAM,KAAQ,EAAO,GAAG,aAAgB,aAAc,EAAW,KAAK,CAAC,EAAK,GAAM,CAAC,SAAU,aAAgB,cAAiB,EAAK,gBAAgB,mCAAoC,IAAM,KAAW,EAAK,SAAa,aAAmB,cAAc,EAAW,KAAK,CAAC,EAAQ,GAAK,CAAC,CAAM,IAAI,GAAK,CAAC,EAAK,KAAe,EAAW,CAAC,IAAM,EAAI,EAAK,QAA+C,GAAG,CAA5B,EAAI,SAAS,WAAW,CAAa,SAAS,IAAM,EAAO,EAAY,EAAK,eAAe,OAAO,EAAK,eAAe,iCAAuC,EAAQ,CAAC,GAAa,EAAK,eAAe,OAAU,MAAC,GAAQ,CAAC,KAAoB,EAAyB,IAAY,EAAI,UAAU,EAAI,QAAQ,IAAI,CAAC,EAAE,EAAI,YAAY,IAAI,CAAC,CAAC,MAAM,CAA0B,IAAa,EAAI,UAAU,EAAI,QAAQ,IAAI,CAAC,EAAE,EAAI,YAAY,IAAI,CAAC,CAAC,MAAM,CAAM,GAAa,GAAa,MAAO,GAAG,GAAa,EAAa,OAAQ,MAAM,CAAC,MAAM,EAAa,KAAK,EAAY,CAAE,SAAgB,IAAa,CAAC,IAAM,EAAiB,IAAS,QAAa,EAAO,SAAS,OAAO,SAAS,mBAAmB,CAAM,CAAC,EAAW,GAAeD,MAAwB,IAAS,OAAoB,GAAe,GAAW,OAAO,SAAW,IAAoB,SAAS,KAAK,aAAa,oBAAoB,GAAG,OAAoB,EAAO,WAAW,+BAA+B,CAAC,QAAW,CACtqD,OADuqD,MAAc,CAAC,GAAG,EAAU,CAAC,IAAM,EAAS,IAAI,iBAAiB,GAAW,CAAC,EAAU,QAAQ,GAAU,CAAI,EAAS,gBAAgB,qBAAiF,EAAhD,SAAS,KAAK,aAAa,oBAAoB,GAAuB,OAAO,EAAI,EAAG,CAAyF,OAAxF,EAAS,QAAQ,SAAS,KAAK,CAAC,WAAW,GAAK,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,KAAW,EAAS,YAAY,KAAM,CAAC,IAAM,EAAW,EAAO,WAAW,+BAA+B,CAAO,EAAa,GAAG,CAAC,EAAc,EAAE,QAAQ,EACrtE,OAAzG,EAAW,UAAU,GAAY,EAAc,EAAW,QAAQ,CAAE,EAAW,YAAY,EAAa,KAAW,EAAW,eAAe,EAAa,GAAI,CAAC,EAAU,CAAC,CAAQ,EAAY,SAAS,EAAuB,EAAU,CAAC,GAAG,CAAC,GAAW,CAAC,EAAU,WAAW,OAAO,CAAE,MAAM,GAAI,IAAM,EAAM,EAAiB,KAAK,EAAU,CAAgE,OAA5D,GAA0B,EAAM,IAAkC,GAAI,SAAS,EAAe,EAAQ,CAAC,IAAM,EAAK,EAAE,CAAiN,OAA5M,GAAuC,EAAQ,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAc,QAAQ,GAAa,CAAC,GAAK,CAAC,EAAK,GAAO,EAAY,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,CAAI,GAAM,IAAO,EAAK,GAAM,IAAS,CAA5L,EAA0M,SAAS,GAAoB,EAAO,CAC1sB,GAAG,CAAC,GAAQ,CAAC,EAAO,WAAW,OAAO,CAAE,OAAO,EAG/C,IAAM,EADQ,EAAO,MAAM,EAAE,GAAG,CACZ,MAAM,IAAI,CAG9B,OAFG,EAAM,OAAO,EACT,EAAM,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,CAChC,2BAX2B,IAA8C,CAAM,EAAiB,oFCAtG,SAAS,EAAiB,EAAI,EAAI,EAAM,CAAmI,OAA/H,KAAO,EAAK,OAAO,eAAe,EAAI,EAAI,CAAO,QAAM,WAAW,GAAK,aAAa,GAAK,SAAS,GAAK,CAAC,CAAO,EAAI,GAAK,EAAc,EA2BhL,SAAS,EAAa,EAAG,EAAK,EAAO,CAAC,IAAM,EAAO,EAAG,aAAa,EAAK,CAAiQ,OAA5P,GAAmB,EAAG,aAAa,EAAO,EAAO,CAAC,EAAG,cAAc,EAAO,CAAK,EAAG,mBAAmB,EAAO,EAAG,eAAe,CAAqI,GAAnI,QAAQ,MAAM,4CAA4C,EAAG,iBAAiB,EAAO,CAAC,CAAC,EAAG,aAAa,EAAO,CAAQ,OAAxO,KAA6P,SAAS,GAAc,EAAG,EAAmB,EAAqB,CAAC,IAAM,EAAa,EAAa,EAAG,EAAG,cAAcE,EAAmB,CAAO,EAAe,EAAa,EAAG,EAAG,gBAAgB,EAAqB,CAAC,GAAG,CAAC,GAAc,CAAC,EAAe,OAAO,KAAK,IAAM,EAAQ,EAAG,eAAe,CACrf,OAD0f,GAAoB,EAAG,aAAa,EAAQ,EAAa,CAAC,EAAG,aAAa,EAAQ,EAAe,CAAC,EAAG,YAAY,EAAQ,CAAK,EAAG,oBAAoB,EAAQ,EAAG,YAAY,EAClzB,EAAG,aAAa,EAAQ,EAAa,CAAC,EAAG,aAAa,EAAQ,EAAe,CAAC,EAAG,aAAa,EAAa,CAAC,EAAG,aAAa,EAAe,CAAQ,IADiqB,QAAQ,MAAM,4CAA4C,EAAG,kBAAkB,EAAQ,CAAC,CAAC,EAAG,cAAc,EAAQ,CAAC,EAAG,aAAa,EAAa,CAAC,EAAG,aAAa,EAAe,CAAQ,OAAvV,4BA3Bjd,EAAb,KAAwB,CAAC,YAAY,EAAO,EAAe,EAAS,EAAE,CAAC,EAAuH,EAAM,EAAsF,EAAK,EAAE,CAAC,EAAiB,KAAK,SAAS,IAAK,GAAE,CAAC,EAAiB,KAAK,KAAK,IAAK,GAAE,CAAC,EAAiB,KAAK,UAAU,KAAK,CAAC,EAAiB,KAAK,mBAAmB,EAAE,CAAC,CAA6C,EAAiB,KAAK,iBAAiB,IAAK,GAAE,CAA0C,EAAiB,KAAK,QAAQ,KAAK,CAAuC,EAAiB,KAAK,gBAAgB,EAAE,CAA0G,EAAiB,KAAK,qBAAqB,EAAE,CAAyO,EAAiB,KAAK,QAAQ,EAAE,CAA4J,EAAiB,KAAK,mBAAmB,IAAK,GAAE,CAA8E,EAAiB,KAAK,kBAAkB,GAAM,CAAyE,EAAiB,KAAK,oBAAoB,GAAK,CAAC,EAAiB,KAAK,gBAAgB,CAAC,IAAM,EAAQ,GAAc,KAAK,GAAG,EAAmB,KAAK,eAAe,CAAK,IAAe,KAAK,QAAQ,EAAQ,KAAK,wBAAwB,CAAC,KAAK,eAAe,GAAG,CAAC,EAAiB,KAAK,6BAA6B,CAAC,IAAM,EAA0B,KAAK,GAAG,kBAAkB,KAAK,QAAQ,aAAa,CAAO,EAAe,KAAK,GAAG,cAAc,CAAC,KAAK,GAAG,WAAW,KAAK,GAAG,aAAa,EAAe,CAAiD,KAAK,GAAG,WAAW,KAAK,GAAG,aAAa,IAAI,aAA5E,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAoE,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,wBAAwB,EAA0B,CAAC,KAAK,GAAG,oBAAoB,EAA0B,EAAE,KAAK,GAAG,MAAM,GAAM,EAAE,EAAE,EAAG,CAAC,EAAiB,KAAK,oBAAoB,CAAC,KAAK,iBAAiB,CAAC,OAAO,KAAK,GAAG,mBAAmB,KAAK,QAAQ,SAAS,CAAC,aAAa,KAAK,GAAG,mBAAmB,KAAK,QAAQ,eAAe,CAAC,aAAa,KAAK,GAAG,mBAAmB,KAAK,QAAQ,eAAe,CAAC,GAAG,OAAO,YAAY,OAAO,KAAK,KAAK,iBAAiB,CAAC,IAAI,GAAK,CAAC,EAAI,KAAK,GAAG,mBAAmB,KAAK,QAAQ,EAAI,CAAC,CAAC,CAAC,CAAC,EAAG,CAAC,EAAiB,KAAK,iBAAiB,KAAK,CAAC,EAAiB,KAAK,0BAA0B,CAAC,KAAK,eAAe,IAAI,mBAAmB,KAAK,cAAc,CAAC,CAAC,KAAK,eAAe,QAAQ,KAAK,OAAO,CAAC,KAAK,cAAc,EAAG,CAAC,EAAiB,KAAK,mBAAmB,CAAC,IAAM,EAAW,EAAO,iBAAuB,EAAS,KAAK,OAAO,YAAY,EAAiB,EAAU,KAAK,OAAO,aAAa,GAAc,KAAK,OAAO,QAAQ,GAAU,KAAK,OAAO,SAAS,KAAW,KAAK,OAAO,MAAM,EAAS,KAAK,OAAO,OAAO,EAAU,KAAK,kBAAkB,GAAK,KAAK,GAAG,SAAS,EAAE,EAAE,KAAK,GAAG,OAAO,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,OAAO,YAAY,KAAK,CAAC,GAC16G,CAAC,EAAiB,KAAK,SAAS,GAAa,CAAC,GAAG,KAAK,gBAAgB,OAC1E,IAAM,EAAG,EAAY,KAAK,cAAc,KAAK,cAAc,EACxD,KAAK,QAAQ,IAAG,KAAK,oBAAoB,EAAG,KAAK,OACpD,KAAK,GAAG,MAAM,KAAK,GAAG,iBAAiB,CACvC,KAAK,GAAG,WAAW,KAAK,QAAQ,CAChC,KAAK,GAAG,UAAU,KAAK,iBAAiB,OAAO,KAAK,mBAAmB,KAAK,CAC5E,AAA0M,KAAK,qBAApL,KAAK,GAAG,UAAU,KAAK,iBAAiB,aAAa,KAAK,GAAG,OAAO,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,GAAG,UAAU,KAAK,iBAAiB,aAAa,EAAO,iBAAiB,CAAwB,IAAO,KAAK,GAAG,WAAW,KAAK,GAAG,UAAU,EAAE,EAAE,CAC9Q,KAAK,QAAQ,EAA8B,KAAK,MAAM,KAAtC,KAAK,eAAe,EAA0B,CAAC,EAAiB,KAAK,oBAAoB,CAAI,KAAK,QAAQ,MAAM,qBAAqB,KAAK,MAAM,CAAE,KAAK,MAAM,sBAAsB,KAAK,OAAO,EAAG,CAAC,EAAiB,KAAK,6BAA6B,CAAC,KAAK,GAAG,WAAW,KAAK,QAAQ,CAAC,OAAO,QAAQ,KAAK,iBAAiB,CAAC,SAAS,CAAC,EAAI,KAAS,CAAC,IAAM,EAAS,KAAK,iBAAiB,GAAK,GAAG,EAAU,GAAG,MAAM,QAAQ,EAAM,CAAE,OAAO,EAAM,OAAb,CAAqB,IAAK,GAAE,KAAK,GAAG,WAAW,EAAS,EAAM,CAAC,MAAM,IAAK,GAAE,KAAK,GAAG,WAAW,EAAS,EAAM,CAAC,MAAM,IAAK,GAAE,KAAK,GAAG,WAAW,EAAS,EAAM,CAAC,MAAM,QAAW,EAAM,SAAS,EAAG,KAAK,GAAG,iBAAiB,EAAS,GAAM,EAAM,CAAU,EAAM,SAAS,GAAI,KAAK,GAAG,iBAAiB,EAAS,GAAM,EAAM,CAAO,QAAQ,KAAK,qCAAqC,EAAM,SAAS,MAAY,OAAO,GAAQ,SAAU,KAAK,GAAG,UAAU,EAAS,EAAM,CAAU,OAAO,GAAQ,UAAW,KAAK,GAAG,UAAU,EAAS,EAAM,EAAE,EAAE,CAAO,QAAQ,KAAK,gCAAgC,EAAI,IAAI,OAAO,IAAQ,EAAK,EAAG,CAAgD,EAAiB,KAAK,UAAU,GAAS,CAAgC,KAAK,mBAAb,IAAI,IAA4B,EAAyB,KAAK,cAAc,YAAY,KAAK,CAAC,KAAK,OAAO,YAAY,KAAK,CAAC,EAAG,CAAuD,EAAiB,KAAK,YAAY,EAAS,IAAI,CACp3C,KAAK,MAAM,EAAY,KAAK,QAAQ,MAAM,IAAW,IACrD,KAAK,cAAc,YAAY,KAAK,CAAC,KAAK,MAAM,sBAAsB,KAAK,OAAO,EAAK,KAAK,QAAQ,MAAM,IAAW,IACrH,qBAAqB,KAAK,MAAM,CAAC,KAAK,MAAM,OAAQ,CAAmE,EAAiB,KAAK,cAAc,GAAa,CAAC,KAAK,iBAAiB,CAAC,GAAG,KAAK,iBAAiB,GAAG,EAAY,CAGxO,KAAK,wBAAwB,CAAC,KAAK,OAAO,YAAY,KAAK,CAAC,EAAG,CAA2E,EAAiB,KAAK,cAAc,CAC9K,KAAK,gBAAgB,GAClB,KAAK,QAAQ,OAAM,qBAAqB,KAAK,MAAM,CAAC,KAAK,MAAM,MAAS,KAAK,IAAI,KAAK,UAAS,KAAK,GAAG,cAAc,KAAK,QAAQ,CAAC,KAAK,QAAQ,KACnJ,KAAK,GAAG,WAAW,KAAK,GAAG,aAAa,KAAK,CAAC,KAAK,GAAG,WAAW,KAAK,GAAG,qBAAqB,KAAK,CAAC,KAAK,GAAG,iBAAiB,KAAK,GAAG,aAAa,KAAK,CAAC,KAAK,GAAG,gBAAgB,KAAK,GAAG,YAAY,KAAK,CACzM,KAAK,GAAG,UAAU,EAAE,AAAyD,KAAK,kBAAtC,KAAK,eAAe,YAAY,CAAqB,MAAM,KAAK,iBAAiB,EAAE,EAAG,CAAC,KAAK,OAAO,EAAO,KAAK,eAAe,EAAe,KAAK,iBAAiB,EAC/M,KAAK,mBAAmB,EAAK,IAAM,EAAG,EAAO,WAAW,SAAS,EAAuB,CAAC,GAAG,CAAC,EAAI,MAAU,MAAM,sBAAsB,CAAE,KAAK,GAAG,EAAG,KAAK,WAAW,CAAC,KAAK,qBAAqB,CAC/L,KAAK,SAAS,EAAM,CACpB,KAAK,OAAO,aAAa,qBAAqB,OAAO,GAAkD,EAAmB;;;;;;oBCrB7G,EAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAoBtC,EAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KCpB0C,SAAgB,EAAyB,EAAY,EAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CACrJ,GAAG,MAAM,QAAQ,EAAY,CAAkG,OAA7F,EAAY,SAAS,EAAS,EAAe,EAAY,SAAS,EAAQ,CAAC,GAAG,EAAY,EAAE,CAAQ,EAAyB,EAAS,CACxK,GAAG,OAAO,GAAc,SAAU,OAAO,EAAyB,EAAS,CAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAY,WAAW,IAAI,CAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAU,EAAY,SAAU,EAAY,WAAW,MAAM,CAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAU,EAAY,SAAU,EAAY,WAAW,MAAM,CAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAW,GAAU,EAAY,CAAC,MAA6D,OAAtD,QAAQ,MAAM,2BAA2B,EAAY,CAAQ,EAAyB,EAAS,CAAE,MAAM,CAAC,EAAM,EAAE,EAAE,EAAE,CAAC,EAAM,EAAE,EAAE,EAAE,CAAC,EAAM,EAAE,EAAE,EAAE,CAAC,EAAM,EAAE,EAAE,EAAE,CAAC,CAA2C,SAAS,GAAU,EAAI,CAI9X,MAHhK,GAAI,EAAI,QAAQ,KAAK,GAAG,CACrB,EAAI,SAAS,IAAG,EAAI,EAAI,MAAM,GAAG,CAAC,IAAI,GAAM,EAAK,EAAK,CAAC,KAAK,GAAG,EAC/D,EAAI,SAAS,IAAG,GAAQ,MAC2I,CAA9J,SAAS,EAAI,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAY,SAAS,EAAI,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAY,SAAS,EAAI,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAY,SAAS,EAAI,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAmB,CAAiD,SAAS,GAAU,EAAK,CACxP,IAAM,EAAM,EAAK,MAAM,0EAA0E,CAA2B,OAAtB,EAA4B,CAAC,SAAS,EAAM,IAAI,IAAI,CAAC,IAAI,SAAS,EAAM,IAAI,IAAI,CAAC,IAAI,SAAS,EAAM,IAAI,IAAI,CAAC,IAAI,EAAM,KAAK,IAAA,GAAU,EAAE,WAAW,EAAM,GAAG,CAAC,CAAjJ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAkK,SAAS,GAAU,EAAK,CAAC,IAAM,EAAM,EAAK,MAAM,4EAA4E,CAA2B,OAAtB,EAA4B,CAAC,SAAS,EAAM,IAAI,IAAI,CAAC,SAAS,EAAM,IAAI,IAAI,CAAC,SAAS,EAAM,IAAI,IAAI,CAAC,EAAM,KAAK,IAAA,GAAU,EAAE,WAAW,EAAM,GAAG,CAAC,CAArI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAwK,SAAS,GAAW,EAAK,CAAC,GAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAW,EAAS,EAAE,IAAU,EAAS,EAAE,IAAU,EAAS,EAAE,IAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,EAAG,EAAE,EAAE,EAAE,MAC5tB,CAAC,IAAM,GAAS,EAAE,EAAE,KAAQ,EAAE,IAAE,GAAG,GAAK,EAAE,GAAE,IAAQ,EAAE,EAAE,EAASC,GAAGC,EAAED,GAAG,EAAE,EAAK,EAAE,EAAE,EAASC,EAAK,EAAE,EAAE,EAASD,GAAGC,EAAED,IAAI,EAAE,EAAE,GAAG,EAASA,GAAU,EAAE,EAAS,GAAG,GAAU,EAAE,GAAU,EAAS,EAAS,EAAS,EAAeA,EAAE,EAAE,EAAS,EAAE,EAAE,EAAQA,EAAE,EAAE,EAAS,EAAE,EAAE,CAAC,EAAE,EAAQA,EAAE,EAAE,EAAS,CAAC,EAAE,EAAQA,EAAE,EAAE,EAAS,EAAE,EAAE,CAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,kBAAe,GAAO,EAAE,EAAI,IAAM,KAAK,IAAI,KAAK,IAAI,EAAE,EAAI,CAAC,EAAI,iBCRpQ,KAAyH,KAChF,KACnC,qBCKpC,ICC/G,SAAwB,EAA2B,EAAM,CAAC,IAAM,EAAiB,IAAqB,CAAO,EAAS,EAAa,SAAS,GAAG,EAAa,OAAa,EAAgB,EAAM,SAAS,UAAU,EAAM,YAAY,SAAe,EAAO,EAAM,SAAS,SAAS,EAAM,EAAU,EAAM,SAAS,OAAO,OAAO,EAAU,CAAC,GAAQ,CAAC,EAAO,EAAO,GAAQ,GAAU,EAAM,OAAO,EAAM,OAAO,EAAM,OAAO,CAAO,EAAIE,EAAO,KAAK,CAAO,EAAS,EAAU,EAAI,CAAC,KAAK,GAAM,OAAO,GAAG,CAAC,CAAO,EAAaC,MAAgB,GAAU,EAAM,SAA+C,CAAC,GAAkB,EAAgB,EAAU,EAAM,MAAM,IAAI,CAAC,EAAS,EAAI,CAAC,EAAS,EAAiB,EAAM,MAAM,EAAM,QAAQ,EAAS,CAAC,CAAC,OAAoB,EAAM,MAAM,CAAK,MAAI,MAAM,CAAC,aAAa,EAAM,OAAO,SAAS,SAAS,SAAS,WAAW,GAAG,EAAM,MAAM,CAAC,SAAS,CAAc,EAAK,EAAK,CAAC,OAAO,EAAgB,EAAO,EAAO,OAAO,OAAO,EAAgB,EAAO,EAAO,OAAO,OAAO,EAAgB,EAAO,EAAO,OAAO,MAAM,EAAO,MAAM,WAAW,EAAO,WAAW,IAAI,WAAW,EAAO,WAAW,GAAG,MAAM,EAAO,MAAM,IAAI,gBAAgB,EAAO,QAAQ,EAAE,EAAE,EAAO,gBAAgB,SAAS,EAAO,SAAS,KAAK,GAAG,IAAI,MAAM,EAAa,KAAK,EAAO,OAAO,GAAG,MAAM,EAAc,EAAO,OAAO,WAAW,EAAO,UAAU,IAAI,SAAS,EAAO,SAAS,IAAI,MAAM,EAAM,MAAM,CAAC,CAAC,EAAM,OAAO,EAAM,MAAM,QAAQ,GAAgB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,gBAAgB,6EAA6E,eAAe,EAAM,MAAM,MAAM,IAAI,iBAAiB,SAAS,QAAQ,EAAM,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,6BARzkD,IAAqF,IAA4C,KAAoH,IAAiK,IAAiD,CAAM,EAAU,EAAY,IAAI,EAAE,IAAI,IAAI,CAAO,EAAU,CAAC,MAAM,CAAC,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,IAAI,WAAW,EAAE,MAAM,IAAI,MAAM,GAAG,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,GAAG,OAAO,KAAK,MAAM,SAAS,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,IAAI,WAAW,IAAI,MAAM,IAAI,MAAM,GAAG,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,IAAI,OAAO,IAAI,MAAM,OAAO,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,EAAE,WAAW,GAAG,MAAM,IAAI,MAAM,GAAG,WAAW,EAAE,MAAM,GAAG,gBAAgB,EAAE,SAAS,IAAI,OAAO,KAAK,MAAM,SAAS,UAAU,GAAG,CAAC,MAAM,CAAC,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,KAAK,WAAW,GAAG,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,gBAAgB,EAAE,SAAS,GAAG,OAAO,KAAK,MAAM,SAAS,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,MAAM,IAAI,gBAAgB,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,UAAU,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,EAAE,WAAW,GAAG,MAAM,IAAI,MAAM,GAAG,WAAW,EAAE,MAAM,GAAG,gBAAgB,EAAE,SAAS,IAAI,OAAO,KAAK,MAAM,OAAO,UAAU,GAAG,CAAC,CAQjF,GAAoB,EAA2B,CAAC,OAAO,CAAC,KAAK,EAAY,KAAK,aAAa,OAAO,KAAK,EAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,OAAO,KAAK,EAAU,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,OAAO,KAAK,EAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,aAAa,GAAM,CAAC,UAAU,CAAC,KAAK,EAAY,KAAK,aAAa,SAAS,QAAQ,CAAC,SAAS,SAAS,CAAC,aAAa,CAAC,SAAS,SAAS,CAAC,wBAAwB,GAAK,MAAM,SAAS,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,aAAa,UAAU,OAAO,GAAO,EAAM,SAAS,UAAU,EAAM,YAAY,SAAS,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,aAAa,UAAU,OAAO,GAAO,EAAM,SAAS,UAAU,EAAM,YAAY,SAAS,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,aAAa,UAAU,OAAO,GAAO,EAAM,SAAS,UAAU,EAAM,YAAY,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,SAAS,GAAK,KAAK,SAAS,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,KAAK,IAAO,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,MAAM,aAAa,OAAO,GAAO,EAAM,QAAQ,GAAG,EAAM,SAAS,SAAS,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,KAAK,aAAa,SAAS,QAAQ,OAAO,KAAK,EAAc,CAAC,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,OAAO,GAAO,EAAM,SAAS,SAAS,CAAC,OAAO,CAAC,KAAK,EAAY,aAAa,aAAa,MAAM,CAAC,CAAC,CACh6H,EAAc,CAAC,KAAK,UAAU,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,sBAAsB,OAAO,yBAAyB,OAAO,uBAAuB,WAAW,IAAI,SAAS,EAAE,WAAW,IAAI,MAAM,GAAG,gBAAgB,GAAG,WAAW,GAAG,MAAM,EAAc,OAAO,CAAC,CAGnR,EAAK,GAAO,CAAC,IAAM,EAASA,OAAmB,CAAC,QAAQ,EAAM,OAAO,EAAc,OAAO,MAAM,WAAW,EAAM,UAAU,EAAc,OAAO,SAAS,SAAS,EAAyB,EAAM,OAAO,EAAc,OAAO,OAAO,CAAC,SAAS,EAAyB,EAAM,OAAO,EAAc,OAAO,OAAO,CAAC,SAAS,EAAyB,EAAM,OAAO,EAAc,OAAO,OAAO,CAAC,aAAa,EAAM,YAAY,EAAc,OAAO,WAAW,WAAW,EAAM,UAAU,EAAc,OAAO,SAAS,aAAa,EAAM,YAAY,EAAc,OAAO,WAAW,QAAQ,EAAM,OAAO,EAAc,OAAO,MAAM,kBAAkB,EAAM,iBAAiB,EAAc,OAAO,gBAAgB,aAAa,EAAM,YAAY,EAAc,OAAO,WAAW,QAAQ,EAAM,OAAO,EAAc,OAAO,MAAM,EAAG,CAAC,EAAM,MAAM,EAAM,SAAS,EAAM,OAAO,EAAM,OAAO,EAAM,OAAO,EAAM,WAAW,EAAM,SAAS,EAAM,WAAW,EAAM,MAAM,EAAM,gBAAgB,EAAM,WAAW,EAAM,MAAM,EAAM,MAAM,CAAC,CAAC,OAAoB,EAAKC,EAAY,CAAC,GAAG,EAAM,eAAe,EAA4B,WAAS,CAAC,EAASA,GAAa,CAAC,MAAI,iBAAe,QAAM,WAAS,EAAE,CAAC,yBAAuB,QAAM,EAAE,OAAK,KAAK,CAAC,IAAM,EAAU,GAAKF,EAAO,KAAK,CAAO,EAAeA,EAAO,KAAK,CAAwc,OAAvc,OAAkB,EAAU,UAAS,EAAe,QAAQ,IAAIG,EAAmB,EAAU,QAAQ,EAAe,EAAS,EAAuB,EAAM,EAAK,MAAY,CAAC,EAAe,SAAS,SAAS,GAAK,CAAC,EAAe,EAAuB,CAAC,CAAC,MAAc,CAAC,EAAe,SAAS,YAAY,EAAS,EAAG,CAAC,EAAS,CAAC,CAAC,MAAc,CAAC,EAAe,SAAS,SAAS,EAAM,EAAG,CAAC,EAAM,CAAC,CAAC,MAAc,CAAC,EAAe,SAAS,QAAQ,EAAK,EAAG,CAAC,EAAK,CAAC,CAAqB,EAAK,SAAS,CAAC,IAAI,EAAgB,QAAM,CAAC,EAA2L,EAA2B,YAAY,kCCXh+D,SAAwB,GAAS,EAAO,EAAa,CAAC,MAAM,CAAC,YAAY,+HAA+H,QAAQ,qEAAqE,OAAO,0BAA0B,YAAY,qEAAqE,MAAM,iBAAiB"}