{"version":3,"file":"static/chunks/697-1b7e617c1c84ea28.js","mappings":"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","sources":["webpack://_N_E/./node_modules/uuid/dist/esm-browser/native.js","webpack://_N_E/./node_modules/uuid/dist/esm-browser/rng.js","webpack://_N_E/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://_N_E/./node_modules/uuid/dist/esm-browser/v4.js","webpack://_N_E/./node_modules/@chakra-ui/button/dist/chunk-J37R6SZE.mjs","webpack://_N_E/./node_modules/@chakra-ui/button/dist/chunk-T6ZDZOLO.mjs","webpack://_N_E/./node_modules/@chakra-ui/button/dist/chunk-3RENZ2UO.mjs","webpack://_N_E/./node_modules/@chakra-ui/button/dist/chunk-QB2Y5VKH.mjs","webpack://_N_E/./node_modules/@chakra-ui/react-use-merge-refs/dist/index.mjs","webpack://_N_E/./node_modules/@chakra-ui/button/dist/chunk-UVUR7MCU.mjs","webpack://_N_E/./node_modules/@headlessui/react/dist/utils/start-transition.js","webpack://_N_E/./node_modules/@headlessui/react/dist/components/disclosure/disclosure.js","webpack://_N_E/./node_modules/@tanstack/query-core/build/modern/queriesObserver.js","webpack://_N_E/./node_modules/@tanstack/react-query/build/modern/useQueries.js","webpack://_N_E/./node_modules/viem/_esm/actions/ens/getEnsAddress.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/actions/getEnsAddress.js","webpack://_N_E/./node_modules/viem/_esm/actions/public/simulateContract.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/actions/simulateContract.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/actions/writeContract.js","webpack://_N_E/./node_modules/@adraffy/ens-normalize/dist/index.mjs","webpack://_N_E/./node_modules/viem/_esm/utils/ens/normalize.js","webpack://_N_E/./node_modules/viem/_esm/utils/unit/parseEther.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/query/getBalance.js","webpack://_N_E/./node_modules/wagmi/dist/esm/hooks/useBalance.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/query/readContract.js","webpack://_N_E/./node_modules/wagmi/dist/esm/hooks/useReadContract.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/query/readContracts.js","webpack://_N_E/./node_modules/wagmi/dist/esm/hooks/useReadContracts.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/query/switchChain.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/actions/getChains.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/actions/watchChains.js","webpack://_N_E/./node_modules/wagmi/dist/esm/hooks/useChains.js","webpack://_N_E/./node_modules/wagmi/dist/esm/hooks/useSwitchChain.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/query/waitForTransactionReceipt.js","webpack://_N_E/./node_modules/wagmi/dist/esm/hooks/useWaitForTransactionReceipt.js","webpack://_N_E/./node_modules/@wagmi/core/dist/esm/query/writeContract.js","webpack://_N_E/./node_modules/wagmi/dist/esm/hooks/useWriteContract.js","webpack://_N_E/"],"sourcesContent":["const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","'use client'\n\n// src/use-button-type.tsx\nimport { useCallback, useState } from \"react\";\nfunction useButtonType(value) {\n const [isButton, setIsButton] = useState(!value);\n const refCallback = useCallback((node) => {\n if (!node)\n return;\n setIsButton(node.tagName === \"BUTTON\");\n }, []);\n const type = isButton ? \"button\" : void 0;\n return { ref: refCallback, type };\n}\n\nexport {\n useButtonType\n};\n//# sourceMappingURL=chunk-J37R6SZE.mjs.map","'use client'\n\n// src/button-context.ts\nimport { createContext } from \"@chakra-ui/react-context\";\nvar [ButtonGroupProvider, useButtonGroup] = createContext({\n strict: false,\n name: \"ButtonGroupContext\"\n});\n\nexport {\n ButtonGroupProvider,\n useButtonGroup\n};\n//# sourceMappingURL=chunk-T6ZDZOLO.mjs.map","'use client'\n\n// src/button-icon.tsx\nimport { chakra } from \"@chakra-ui/system\";\nimport { cx } from \"@chakra-ui/shared-utils\";\nimport { cloneElement, isValidElement } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction ButtonIcon(props) {\n const { children, className, ...rest } = props;\n const _children = isValidElement(children) ? cloneElement(children, {\n \"aria-hidden\": true,\n focusable: false\n }) : children;\n const _className = cx(\"chakra-button__icon\", className);\n return /* @__PURE__ */ jsx(\n chakra.span,\n {\n display: \"inline-flex\",\n alignSelf: \"center\",\n flexShrink: 0,\n ...rest,\n className: _className,\n children: _children\n }\n );\n}\nButtonIcon.displayName = \"ButtonIcon\";\n\nexport {\n ButtonIcon\n};\n//# sourceMappingURL=chunk-3RENZ2UO.mjs.map","'use client'\n\n// src/button-spinner.tsx\nimport { Spinner } from \"@chakra-ui/spinner\";\nimport { chakra } from \"@chakra-ui/system\";\nimport { cx } from \"@chakra-ui/shared-utils\";\nimport { useMemo } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction ButtonSpinner(props) {\n const {\n label,\n placement,\n spacing = \"0.5rem\",\n children = /* @__PURE__ */ jsx(Spinner, { color: \"currentColor\", width: \"1em\", height: \"1em\" }),\n className,\n __css,\n ...rest\n } = props;\n const _className = cx(\"chakra-button__spinner\", className);\n const marginProp = placement === \"start\" ? \"marginEnd\" : \"marginStart\";\n const spinnerStyles = useMemo(\n () => ({\n display: \"flex\",\n alignItems: \"center\",\n position: label ? \"relative\" : \"absolute\",\n [marginProp]: label ? spacing : 0,\n fontSize: \"1em\",\n lineHeight: \"normal\",\n ...__css\n }),\n [__css, label, marginProp, spacing]\n );\n return /* @__PURE__ */ jsx(chakra.div, { className: _className, ...rest, __css: spinnerStyles, children });\n}\nButtonSpinner.displayName = \"ButtonSpinner\";\n\nexport {\n ButtonSpinner\n};\n//# sourceMappingURL=chunk-QB2Y5VKH.mjs.map","'use client'\n\n// src/index.ts\nimport { useMemo } from \"react\";\nfunction assignRef(ref, value) {\n if (ref == null)\n return;\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`);\n }\n}\nfunction mergeRefs(...refs) {\n return (node) => {\n refs.forEach((ref) => {\n assignRef(ref, node);\n });\n };\n}\nfunction useMergeRefs(...refs) {\n return useMemo(() => mergeRefs(...refs), refs);\n}\nexport {\n assignRef,\n mergeRefs,\n useMergeRefs\n};\n//# sourceMappingURL=index.mjs.map","'use client'\nimport {\n useButtonType\n} from \"./chunk-J37R6SZE.mjs\";\nimport {\n useButtonGroup\n} from \"./chunk-T6ZDZOLO.mjs\";\nimport {\n ButtonIcon\n} from \"./chunk-3RENZ2UO.mjs\";\nimport {\n ButtonSpinner\n} from \"./chunk-QB2Y5VKH.mjs\";\n\n// src/button.tsx\nimport { useMergeRefs } from \"@chakra-ui/react-use-merge-refs\";\nimport {\n chakra,\n forwardRef,\n omitThemingProps,\n useStyleConfig\n} from \"@chakra-ui/system\";\nimport { cx, dataAttr } from \"@chakra-ui/shared-utils\";\nimport { useMemo } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar Button = forwardRef((props, ref) => {\n const group = useButtonGroup();\n const styles = useStyleConfig(\"Button\", { ...group, ...props });\n const {\n isDisabled = group == null ? void 0 : group.isDisabled,\n isLoading,\n isActive,\n children,\n leftIcon,\n rightIcon,\n loadingText,\n iconSpacing = \"0.5rem\",\n type,\n spinner,\n spinnerPlacement = \"start\",\n className,\n as,\n ...rest\n } = omitThemingProps(props);\n const buttonStyles = useMemo(() => {\n const _focus = { ...styles == null ? void 0 : styles[\"_focus\"], zIndex: 1 };\n return {\n display: \"inline-flex\",\n appearance: \"none\",\n alignItems: \"center\",\n justifyContent: \"center\",\n userSelect: \"none\",\n position: \"relative\",\n whiteSpace: \"nowrap\",\n verticalAlign: \"middle\",\n outline: \"none\",\n ...styles,\n ...!!group && { _focus }\n };\n }, [styles, group]);\n const { ref: _ref, type: defaultType } = useButtonType(as);\n const contentProps = { rightIcon, leftIcon, iconSpacing, children };\n return /* @__PURE__ */ jsxs(\n chakra.button,\n {\n ref: useMergeRefs(ref, _ref),\n as,\n type: type != null ? type : defaultType,\n \"data-active\": dataAttr(isActive),\n \"data-loading\": dataAttr(isLoading),\n __css: buttonStyles,\n className: cx(\"chakra-button\", className),\n ...rest,\n disabled: isDisabled || isLoading,\n children: [\n isLoading && spinnerPlacement === \"start\" && /* @__PURE__ */ jsx(\n ButtonSpinner,\n {\n className: \"chakra-button__spinner--start\",\n label: loadingText,\n placement: \"start\",\n spacing: iconSpacing,\n children: spinner\n }\n ),\n isLoading ? loadingText || /* @__PURE__ */ jsx(chakra.span, { opacity: 0, children: /* @__PURE__ */ jsx(ButtonContent, { ...contentProps }) }) : /* @__PURE__ */ jsx(ButtonContent, { ...contentProps }),\n isLoading && spinnerPlacement === \"end\" && /* @__PURE__ */ jsx(\n ButtonSpinner,\n {\n className: \"chakra-button__spinner--end\",\n label: loadingText,\n placement: \"end\",\n spacing: iconSpacing,\n children: spinner\n }\n )\n ]\n }\n );\n});\nButton.displayName = \"Button\";\nfunction ButtonContent(props) {\n const { leftIcon, rightIcon, children, iconSpacing } = props;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n leftIcon && /* @__PURE__ */ jsx(ButtonIcon, { marginEnd: iconSpacing, children: leftIcon }),\n children,\n rightIcon && /* @__PURE__ */ jsx(ButtonIcon, { marginStart: iconSpacing, children: rightIcon })\n ] });\n}\n\nexport {\n Button\n};\n//# sourceMappingURL=chunk-UVUR7MCU.mjs.map","var t;import r from\"react\";let a=(t=r.startTransition)!=null?t:function(i){i()};export{a as startTransition};\n","import E,{createContext as I,Fragment as H,useContext as x,useEffect as h,useMemo as S,useReducer as G,useRef as R}from\"react\";import{useEvent as A}from'../../hooks/use-event.js';import{useId as U}from'../../hooks/use-id.js';import{useResolveButtonType as j}from'../../hooks/use-resolve-button-type.js';import{optionalRef as W,useSyncRefs as L}from'../../hooks/use-sync-refs.js';import{OpenClosedProvider as $,State as b,useOpenClosed as J}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as X}from'../../utils/bugs.js';import{match as O}from'../../utils/match.js';import{getOwnerDocument as q}from'../../utils/owner.js';import{Features as w,forwardRefWithAs as B,render as k,useMergeRefsFn as N}from'../../utils/render.js';import{startTransition as z}from'../../utils/start-transition.js';import{Keys as g}from'../keyboard.js';var Q=(o=>(o[o.Open=0]=\"Open\",o[o.Closed=1]=\"Closed\",o))(Q||{}),V=(t=>(t[t.ToggleDisclosure=0]=\"ToggleDisclosure\",t[t.CloseDisclosure=1]=\"CloseDisclosure\",t[t.SetButtonId=2]=\"SetButtonId\",t[t.SetPanelId=3]=\"SetPanelId\",t[t.LinkPanel=4]=\"LinkPanel\",t[t.UnlinkPanel=5]=\"UnlinkPanel\",t))(V||{});let Y={[0]:e=>({...e,disclosureState:O(e.disclosureState,{[0]:1,[1]:0})}),[1]:e=>e.disclosureState===1?e:{...e,disclosureState:1},[4](e){return e.linkedPanel===!0?e:{...e,linkedPanel:!0}},[5](e){return e.linkedPanel===!1?e:{...e,linkedPanel:!1}},[2](e,n){return e.buttonId===n.buttonId?e:{...e,buttonId:n.buttonId}},[3](e,n){return e.panelId===n.panelId?e:{...e,panelId:n.panelId}}},M=I(null);M.displayName=\"DisclosureContext\";function _(e){let n=x(M);if(n===null){let o=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,_),o}return n}let v=I(null);v.displayName=\"DisclosureAPIContext\";function K(e){let n=x(v);if(n===null){let o=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,K),o}return n}let F=I(null);F.displayName=\"DisclosurePanelContext\";function Z(){return x(F)}function ee(e,n){return O(n.type,Y,e,n)}let te=H;function ne(e,n){let{defaultOpen:o=!1,...i}=e,f=R(null),l=L(n,W(u=>{f.current=u},e.as===void 0||e.as===H)),t=R(null),d=R(null),s=G(ee,{disclosureState:o?0:1,linkedPanel:!1,buttonRef:d,panelRef:t,buttonId:null,panelId:null}),[{disclosureState:c,buttonId:a},D]=s,p=A(u=>{D({type:1});let y=q(f);if(!y||!a)return;let r=(()=>u?u instanceof HTMLElement?u:u.current instanceof HTMLElement?u.current:y.getElementById(a):y.getElementById(a))();r==null||r.focus()}),P=S(()=>({close:p}),[p]),T=S(()=>({open:c===0,close:p}),[c,p]),C={ref:l};return E.createElement(M.Provider,{value:s},E.createElement(v.Provider,{value:P},E.createElement($,{value:O(c,{[0]:b.Open,[1]:b.Closed})},k({ourProps:C,theirProps:i,slot:T,defaultTag:te,name:\"Disclosure\"}))))}let le=\"button\";function oe(e,n){let o=U(),{id:i=`headlessui-disclosure-button-${o}`,...f}=e,[l,t]=_(\"Disclosure.Button\"),d=Z(),s=d===null?!1:d===l.panelId,c=R(null),a=L(c,n,s?null:l.buttonRef),D=N();h(()=>{if(!s)return t({type:2,buttonId:i}),()=>{t({type:2,buttonId:null})}},[i,t,s]);let p=A(r=>{var m;if(s){if(l.disclosureState===1)return;switch(r.key){case g.Space:case g.Enter:r.preventDefault(),r.stopPropagation(),t({type:0}),(m=l.buttonRef.current)==null||m.focus();break}}else switch(r.key){case g.Space:case g.Enter:r.preventDefault(),r.stopPropagation(),t({type:0});break}}),P=A(r=>{switch(r.key){case g.Space:r.preventDefault();break}}),T=A(r=>{var m;X(r.currentTarget)||e.disabled||(s?(t({type:0}),(m=l.buttonRef.current)==null||m.focus()):t({type:0}))}),C=S(()=>({open:l.disclosureState===0}),[l]),u=j(e,c),y=s?{ref:a,type:u,onKeyDown:p,onClick:T}:{ref:a,id:i,type:u,\"aria-expanded\":l.disclosureState===0,\"aria-controls\":l.linkedPanel?l.panelId:void 0,onKeyDown:p,onKeyUp:P,onClick:T};return k({mergeRefs:D,ourProps:y,theirProps:f,slot:C,defaultTag:le,name:\"Disclosure.Button\"})}let re=\"div\",se=w.RenderStrategy|w.Static;function ue(e,n){let o=U(),{id:i=`headlessui-disclosure-panel-${o}`,...f}=e,[l,t]=_(\"Disclosure.Panel\"),{close:d}=K(\"Disclosure.Panel\"),s=N(),c=L(n,l.panelRef,T=>{z(()=>t({type:T?4:5}))});h(()=>(t({type:3,panelId:i}),()=>{t({type:3,panelId:null})}),[i,t]);let a=J(),D=(()=>a!==null?(a&b.Open)===b.Open:l.disclosureState===0)(),p=S(()=>({open:l.disclosureState===0,close:d}),[l,d]),P={ref:c,id:i};return E.createElement(F.Provider,{value:l.panelId},k({mergeRefs:s,ourProps:P,theirProps:f,slot:p,defaultTag:re,features:se,visible:D,name:\"Disclosure.Panel\"}))}let ie=B(ne),ae=B(oe),pe=B(ue),Ae=Object.assign(ie,{Button:ae,Panel:pe});export{Ae as Disclosure};\n","// src/queriesObserver.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { QueryObserver } from \"./queryObserver.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { replaceEqualDeep } from \"./utils.js\";\nfunction difference(array1, array2) {\n return array1.filter((x) => !array2.includes(x));\n}\nfunction replaceAt(array, index, value) {\n const copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nvar QueriesObserver = class extends Subscribable {\n #client;\n #result;\n #queries;\n #observers;\n #combinedResult;\n #lastCombine;\n #lastResult;\n constructor(client, queries, _options) {\n super();\n this.#client = client;\n this.#queries = [];\n this.#observers = [];\n this.#result = [];\n this.setQueries(queries);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result);\n });\n });\n }\n }\n onUnsubscribe() {\n if (!this.listeners.size) {\n this.destroy();\n }\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#observers.forEach((observer) => {\n observer.destroy();\n });\n }\n setQueries(queries, _options, notifyOptions) {\n this.#queries = queries;\n notifyManager.batch(() => {\n const prevObservers = this.#observers;\n const newObserverMatches = this.#findMatchingObservers(this.#queries);\n newObserverMatches.forEach(\n (match) => match.observer.setOptions(match.defaultedQueryOptions, notifyOptions)\n );\n const newObservers = newObserverMatches.map((match) => match.observer);\n const newResult = newObservers.map(\n (observer) => observer.getCurrentResult()\n );\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index]\n );\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return;\n }\n this.#observers = newObservers;\n this.#result = newResult;\n if (!this.hasListeners()) {\n return;\n }\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy();\n });\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result);\n });\n });\n this.#notify();\n });\n }\n getCurrentResult() {\n return this.#result;\n }\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery());\n }\n getObservers() {\n return this.#observers;\n }\n getOptimisticResult(queries, combine) {\n const matches = this.#findMatchingObservers(queries);\n const result = matches.map(\n (match) => match.observer.getOptimisticResult(match.defaultedQueryOptions)\n );\n return [\n result,\n (r) => {\n return this.#combineResult(r ?? result, combine);\n },\n () => {\n return matches.map((match, index) => {\n const observerResult = result[index];\n return !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult, (accessedProp) => {\n matches.forEach((m) => {\n m.observer.trackProp(accessedProp);\n });\n }) : observerResult;\n });\n }\n ];\n }\n #combineResult(input, combine) {\n if (combine) {\n if (!this.#combinedResult || this.#result !== this.#lastResult || combine !== this.#lastCombine) {\n this.#lastCombine = combine;\n this.#lastResult = this.#result;\n this.#combinedResult = replaceEqualDeep(\n this.#combinedResult,\n combine(input)\n );\n }\n return this.#combinedResult;\n }\n return input;\n }\n #findMatchingObservers(queries) {\n const prevObservers = this.#observers;\n const prevObserversMap = new Map(\n prevObservers.map((observer) => [observer.options.queryHash, observer])\n );\n const defaultedQueryOptions = queries.map(\n (options) => this.#client.defaultQueryOptions(options)\n );\n const matchingObservers = defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObserversMap.get(defaultedOptions.queryHash);\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }];\n }\n return [];\n });\n const matchedQueryHashes = new Set(\n matchingObservers.map((match) => match.defaultedQueryOptions.queryHash)\n );\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) => !matchedQueryHashes.has(defaultedOptions.queryHash)\n );\n const getObserver = (options) => {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const currentObserver = this.#observers.find(\n (o) => o.options.queryHash === defaultedOptions.queryHash\n );\n return currentObserver ?? new QueryObserver(this.#client, defaultedOptions);\n };\n const newOrReusedObservers = unmatchedQueries.map((options) => {\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options)\n };\n });\n const sortMatchesByOrderOfQueries = (a, b) => defaultedQueryOptions.indexOf(a.defaultedQueryOptions) - defaultedQueryOptions.indexOf(b.defaultedQueryOptions);\n return matchingObservers.concat(newOrReusedObservers).sort(sortMatchesByOrderOfQueries);\n }\n #onUpdate(observer, result) {\n const index = this.#observers.indexOf(observer);\n if (index !== -1) {\n this.#result = replaceAt(this.#result, index, result);\n this.#notify();\n }\n }\n #notify() {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result);\n });\n });\n }\n};\nexport {\n QueriesObserver\n};\n//# sourceMappingURL=queriesObserver.js.map","\"use client\";\n\n// src/useQueries.ts\nimport * as React from \"react\";\nimport {\n QueriesObserver,\n QueryObserver,\n notifyManager\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./isRestoring.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport {\n ensureStaleTime,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nfunction useQueries({\n queries,\n ...options\n}, queryClient) {\n const client = useQueryClient(queryClient);\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedQueries = React.useMemo(\n () => queries.map((opts) => {\n const defaultedOptions = client.defaultQueryOptions(\n opts\n );\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n return defaultedOptions;\n }),\n [queries, client, isRestoring]\n );\n defaultedQueries.forEach((query) => {\n ensureStaleTime(query);\n ensurePreventErrorBoundaryRetry(query, errorResetBoundary);\n });\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(\n () => new QueriesObserver(\n client,\n defaultedQueries,\n options\n )\n );\n const [optimisticResult, getCombinedResult, trackResult] = observer.getOptimisticResult(\n defaultedQueries,\n options.combine\n );\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => isRestoring ? () => void 0 : observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer, isRestoring]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setQueries(\n defaultedQueries,\n options,\n {\n listeners: false\n }\n );\n }, [defaultedQueries, options, observer]);\n const shouldAtLeastOneSuspend = optimisticResult.some(\n (result, index) => shouldSuspend(defaultedQueries[index], result)\n );\n const suspensePromises = shouldAtLeastOneSuspend ? optimisticResult.flatMap((result, index) => {\n const opts = defaultedQueries[index];\n if (opts) {\n const queryObserver = new QueryObserver(client, opts);\n if (shouldSuspend(opts, result)) {\n return fetchOptimistic(opts, queryObserver, errorResetBoundary);\n } else if (willFetch(result, isRestoring)) {\n void fetchOptimistic(opts, queryObserver, errorResetBoundary);\n }\n }\n return [];\n }) : [];\n if (suspensePromises.length > 0) {\n throw Promise.all(suspensePromises);\n }\n const firstSingleResultWhichShouldThrow = optimisticResult.find(\n (result, index) => {\n const query = defaultedQueries[index];\n return query && getHasError({\n result,\n errorResetBoundary,\n throwOnError: query.throwOnError,\n query: client.getQueryCache().get(query.queryHash)\n });\n }\n );\n if (firstSingleResultWhichShouldThrow?.error) {\n throw firstSingleResultWhichShouldThrow.error;\n }\n return getCombinedResult(trackResult());\n}\nexport {\n useQueries\n};\n//# sourceMappingURL=useQueries.js.map","import { addressResolverAbi, universalResolverResolveAbi, } from '../../constants/abis.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { trim } from '../../utils/data/trim.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { namehash } from '../../utils/ens/namehash.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets address for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAddress\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAddressParameters}\n * @returns Address for ENS name or `null` if not found. {@link GetEnsAddressReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAddress, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAddress = await getEnsAddress(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress(client, { blockNumber, blockTag, coinType, name, gatewayUrls, strict, universalResolverAddress: universalResolverAddress_, }) {\n let universalResolverAddress = universalResolverAddress_;\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n });\n }\n try {\n const functionData = encodeFunctionData({\n abi: addressResolverAbi,\n functionName: 'addr',\n ...(coinType != null\n ? { args: [namehash(name), BigInt(coinType)] }\n : { args: [namehash(name)] }),\n });\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n functionName: 'resolve',\n args: [toHex(packetToBytes(name)), functionData],\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const res = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters);\n if (res[0] === '0x')\n return null;\n const address = decodeFunctionResult({\n abi: addressResolverAbi,\n args: coinType != null ? [namehash(name), BigInt(coinType)] : undefined,\n functionName: 'addr',\n data: res[0],\n });\n if (address === '0x')\n return null;\n if (trim(address) === '0x00')\n return null;\n return address;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err, 'resolve'))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsAddress.js.map","import { getEnsAddress as viem_getEnsAddress, } from 'viem/actions';\nimport {} from '../createConfig.js';\nimport {} from '../types/properties.js';\nimport {} from '../types/utils.js';\nimport { getAction } from '../utils/getAction.js';\n/** https://wagmi.sh/core/api/actions/getEnsAddress */\nexport function getEnsAddress(config, parameters) {\n const { chainId, ...rest } = parameters;\n const client = config.getClient({ chainId });\n const action = getAction(client, viem_getEnsAddress, 'getEnsAddress');\n return action(rest);\n}\n//# sourceMappingURL=getEnsAddress.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { call } from './call.js';\n/**\n * Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions.\n *\n * - Docs: https://viem.sh/docs/contract/simulateContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts\n *\n * This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link SimulateContractParameters}\n * @returns The simulation result and write request. {@link SimulateContractReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { simulateContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await simulateContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32) view returns (uint32)']),\n * functionName: 'mint',\n * args: ['69420'],\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function simulateContract(client, parameters) {\n const { abi, address, args, dataSuffix, functionName, ...callRequest } = parameters;\n const account = callRequest.account\n ? parseAccount(callRequest.account)\n : client.account;\n const calldata = encodeFunctionData({ abi, args, functionName });\n try {\n const { data } = await getAction(client, call, 'call')({\n batch: false,\n data: `${calldata}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,\n to: address,\n ...callRequest,\n account,\n });\n const result = decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n });\n const minimizedAbi = abi.filter((abiItem) => 'name' in abiItem && abiItem.name === parameters.functionName);\n return {\n result,\n request: {\n abi: minimizedAbi,\n address,\n args,\n dataSuffix,\n functionName,\n ...callRequest,\n account,\n },\n };\n }\n catch (error) {\n throw getContractError(error, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/simulateContract',\n functionName,\n sender: account?.address,\n });\n }\n}\n//# sourceMappingURL=simulateContract.js.map","import { simulateContract as viem_simulateContract, } from 'viem/actions';\nimport {} from '../createConfig.js';\nimport {} from '../errors/base.js';\nimport {} from '../types/chain.js';\nimport {} from '../types/properties.js';\nimport { getAction } from '../utils/getAction.js';\nimport { getConnectorClient, } from './getConnectorClient.js';\n/** https://wagmi.sh/core/api/actions/simulateContract */\nexport async function simulateContract(config, parameters) {\n const { abi, chainId, connector, ...rest } = parameters;\n let account;\n if (parameters.account)\n account = parameters.account;\n else {\n const connectorClient = await getConnectorClient(config, {\n chainId,\n connector,\n });\n account = connectorClient.account;\n }\n const client = config.getClient({ chainId });\n const action = getAction(client, viem_simulateContract, 'simulateContract');\n const { result, request } = await action({ ...rest, abi, account });\n return {\n chainId: client.chain.id,\n result,\n request: { __mode: 'prepared', ...request, chainId },\n };\n}\n//# sourceMappingURL=simulateContract.js.map","import { writeContract as viem_writeContract, } from 'viem/actions';\nimport {} from '../createConfig.js';\nimport {} from '../errors/base.js';\nimport {} from '../types/chain.js';\nimport {} from '../types/properties.js';\nimport { getAction } from '../utils/getAction.js';\nimport { getAccount } from './getAccount.js';\nimport { getConnectorClient, } from './getConnectorClient.js';\nimport { simulateContract, } from './simulateContract.js';\n/** https://wagmi.sh/core/api/actions/writeContract */\nexport async function writeContract(config, parameters) {\n const { account, chainId, connector, __mode, ...rest } = parameters;\n let client;\n if (typeof account === 'object' && account.type === 'local')\n client = config.getClient({ chainId });\n else\n client = await getConnectorClient(config, { account, chainId, connector });\n const { connector: activeConnector } = getAccount(config);\n let request;\n if (__mode === 'prepared' || activeConnector?.supportsSimulation)\n request = rest;\n else {\n const { request: simulateRequest } = await simulateContract(config, {\n ...rest,\n account,\n chainId,\n });\n request = simulateRequest;\n }\n const action = getAction(client, viem_writeContract, 'writeContract');\n const hash = await action({\n ...request,\n ...(account ? { account } : {}),\n chain: chainId ? { id: chainId } : null,\n });\n return hash;\n}\n//# sourceMappingURL=writeContract.js.map","// created 2023-09-12T22:05:14.211Z\n// compressed base64-encoded blob for include-ens data\n// source: https://github.com/adraffy/ens-normalize.js/blob/main/src/make.js\n// see: https://github.com/adraffy/ens-normalize.js#security\n// SHA-256: 0565ed049b9cf1614bb9e11ba7d8ac6a6fb96c893253d890f7e2b2884b9ded32\nvar COMPRESSED$1 = 'AEEUdwmgDS8BxQKKAP4BOgDjATAAngDUAIMAoABoAOAAagCOAEQAhABMAHIAOwA9ACsANgAmAGIAHgAuACgAJwAXAC0AGgAjAB8ALwAUACkAEgAeAAkAGwARABkAFgA5ACgALQArADcAFQApABAAHgAiABAAGgAeABMAGAUhBe8BFxREN8sF2wC5AK5HAW8ArQkDzQCuhzc3NzcBP68NEfMABQdHBuw5BV8FYAA9MzkI9r4ZBg7QyQAWA9CeOwLNCjcCjqkChuA/lm+RAsXTAoP6ASfnEQDytQFJAjWVCkeXAOsA6godAB/cwdAUE0WlBCN/AQUCQRjFD/MRBjHxDQSJbw0jBzUAswBxme+tnIcAYwabAysG8QAjAEMMmxcDqgPKQyDXCMMxA7kUQwD3NXOrAKmFIAAfBC0D3x4BJQDBGdUFAhEgVD8JnwmQJiNWYUzrg0oAGwAUAB0AFnNcACkAFgBP9h3gPfsDOWDKneY2ChglX1UDYD30ABsAFAAdABZzIGRAnwDD8wAjAEEMzRbDqgMB2sAFYwXqAtCnAsS4AwpUJKRtFHsadUz9AMMVbwLpABM1NJEX0ZkCgYMBEyMAxRVvAukAEzUBUFAtmUwSAy4DBTER33EftQHfSwB5MxJ/AjkWKQLzL8E/cwBB6QH9LQDPDtO9ASNriQC5DQANAwCK21EFI91zHwCoL9kBqQcHBwcHKzUDowBvAQohPvU3fAQgHwCyAc8CKQMA5zMSezr7ULgFmDp/LzVQBgEGAi8FYQVgt8AFcTtlQhpCWEmfe5tmZ6IAExsDzQ8t+X8rBKtTAltbAn0jsy8Bl6utPWMDTR8Ei2kRANkDBrNHNysDBzECQWUAcwFpJ3kAiyUhAJ0BUb8AL3EfAbfNAz81KUsFWwF3YQZtAm0A+VEfAzEJDQBRSQCzAQBlAHsAM70GD/v3IZWHBwARKQAxALsjTwHZAeMPEzmXgIHwABIAGQA8AEUAQDt3gdvIEGcQZAkGTRFMdEIVEwK0D64L7REdDNkq09PgADSxB/MDWwfzA1sDWwfzB/MDWwfzA1sDWwNbA1scEvAi28gQZw9QBHUFlgWTBN4IiyZREYkHMAjaVBV0JhxPA00BBCMtSSQ7mzMTJUpMFE0LCAQ2SmyvfUADTzGzVP2QqgPTMlc5dAkGHnkSqAAyD3skNb1OhnpPcagKU0+2tYdJak5vAsY6sEAACikJm2/Dd1YGRRAfJ6kQ+ww3AbkBPw3xS9wE9QY/BM0fgRkdD9GVoAipLeEM8SbnLqWAXiP5KocF8Uv4POELUVFsD10LaQnnOmeBUgMlAREijwrhDT0IcRD3Cs1vDekRSQc9A9lJngCpBwULFR05FbkmFGKwCw05ewb/GvoLkyazEy17AAXXGiUGUQEtGwMA0y7rhbRaNVwgT2MGBwspI8sUrFAkDSlAu3hMGh8HGSWtApVDdEqLUToelyH6PEENai4XUYAH+TwJGVMLhTyiRq9FEhHWPpE9TCJNTDAEOYMsMyePCdMPiQy9fHYBXQklCbUMdRM1ERs3yQg9Bx0xlygnGQglRplgngT7owP3E9UDDwVDCUUHFwO5HDETMhUtBRGBKNsC9zbZLrcCk1aEARsFzw8pH+MQVEfkDu0InwJpA4cl7wAxFSUAGyKfCEdnAGOP3FMJLs8Iy2pwI3gDaxTrZRF3B5UOWwerHDcVwxzlcMxeD4YMKKezCV8BeQmdAWME5wgNNV+MpCBFZ1eLXBifIGVBQ14AAjUMaRWjRMGHfAKPD28SHwE5AXcHPQ0FAnsR8RFvEJkI74YINbkz/DopBFMhhyAVCisDU2zSCysm/Qz8bQGnEmYDEDRBd/Jnr2C6KBgBBx0yyUFkIfULlk/RDKAaxRhGVDIZ6AfDA/ca9yfuQVsGAwOnBxc6UTPyBMELbQiPCUMATQ6nGwfbGG4KdYzUATWPAbudA1uVhwJzkwY7Bw8Aaw+LBX3pACECqwinAAkA0wNbAD0CsQehAB0AiUUBQQMrMwEl6QKTA5cINc8BmTMB9y0EH8cMGQD7O25OAsO1AoBuZqYF4VwCkgJNOQFRKQQJUktVA7N15QDfAE8GF+NLARmvTs8e50cB43MvAMsA/wAJOQcJRQHRAfdxALsBYws1Caa3uQFR7S0AhwAZbwHbAo0A4QA5AIP1AVcAUQVd/QXXAlNNARU1HC9bZQG/AyMBNwERAH0Gz5GpzQsjBHEH1wIQHxXlAu8yB7kFAyLjE9FCyQK94lkAMhoKPAqrCqpgX2Q3CjV2PVQAEh+sPss/UgVVO1c7XDtXO1w7VztcO1c7XDtXO1wDm8Pmw+YKcF9JYe8Mqg3YRMw6TRPfYFVgNhPMLbsUxRXSJVoZQRrAJwkl6FUNDwgt12Y0CDA0eRfAAEMpbINFY4oeNApPHOtTlVT8LR8AtUumM7MNsBsZREQFS3XxYi4WEgomAmSFAmJGX1GzAV83JAKh+wJonAJmDQKfiDgfDwJmPwJmKgRyBIMDfxcDfpY5Cjl7GzmGOicnAmwhAjI6OA4CbcsCbbLzjgM3a0kvAWsA4gDlAE4JB5wMkQECD8YAEbkCdzMCdqZDAnlPRwJ4viFg30WyRvcCfEMCeswCfQ0CfPRIBEiBZygALxlJXEpfGRtK0ALRBQLQ0EsrA4hTA4fqRMmRNgLypV0HAwOyS9JMMSkH001QTbMCi0MCitzFHwshR2sJuwKOOwKOYESbhQKO3QKOYHxRuFM5AQ5S2FSJApP/ApMQAO0AIFUiVbNV1AosHymZijLleGpFPz0Cl6MC77ZYJawAXSkClpMCloCgAK1ZsFoNhVEAPwKWuQKWUlxIXNUCmc8CmWhczl0LHQKcnznGOqECnBoCn58CnryOACETNS4TAp31Ap6WALlBYThh8wKe1wKgcgGtAp6jIwKeUqljzGQrKS8CJ7MCJoICoP8CoFDbAqYzAqXSAqgDAIECp/ZogGi1AAdNaiBq1QKs5wKssgKtawKtBgJXIQJV4AKx5dsDH1JsmwKywRECsuwbbORtZ21MYwMl0QK2YD9DbpQDKUkCuGICuUsZArkue3A6cOUCvR0DLbYDMhUCvoxyBgMzdQK+HnMmc1MCw88CwwhzhnRPOUl05AM8qwEDPJ4DPcMCxYACxksCxhSNAshtVQLISALJUwLJMgJkoQLd1nh9ZXiyeSlL1AMYp2cGAmH4GfeVKHsPXpZevxUCz28Cz3AzT1fW9xejAMqxAs93AS3uA04Wfk8JAtwrAtuOAtJTA1JgA1NjAQUDVZCAjUMEzxrxZEl5A4LSg5EC2ssC2eKEFIRNp0ADhqkAMwNkEoZ1Xf0AWQLfaQLevHd7AuIz7RgB8zQrAfSfAfLWiwLr9wLpdH0DAur9AuroAP1LAb0C7o0C66CWrpcHAu5DA4XkmH1w5HGlAvMHAG0DjhqZlwL3FwORcgOSiwL3nAL53QL4apogmq+/O5siA52HAv7+AR8APZ8gAZ+3AwWRA6ZuA6bdANXJAwZuoYyiCQ0DDE0BEwEjB3EGZb1rCQC/BG/DFY8etxEAG3k9ACcDNxJRA42DAWcrJQCM8wAlAOanC6OVCLsGI6fJBgCvBRnDBvElRUYFFoAFcD9GSDNCKUK8X3kZX8QAls0FOgCQVCGbwTsuYDoZutcONxjOGJHJ/gVfBWAFXwVgBWsFYAVfBWAFXwVgBV8FYAVfBWBOHQjfjW8KCgoKbF7xMwTRA7kGN8PDAMMEr8MA70gxFroFTj5xPnhCR0K+X30/X/AAWBkzswCNBsxzzASm70aCRS4rDDMeLz49fnXfcsH5GcoscQFz13Y4HwVnBXLJycnACNdRYwgICAqEXoWTxgA7P4kACxbZBu21Kw0AjMsTAwkVAOVtJUUsJ1JCuULESUArXy9gPi9AKwnJRQYKTD9LPoA+iT54PnkCkULEUUpDX9NWV3JVEjQAc1w3A3IBE3YnX+g7QiMJb6MKaiszRCUuQrNCxDPMCcwEX9EWJzYREBEEBwIHKn6l33JCNVIfybPJtAltydPUCmhBZw/tEKsZAJOVJU1CLRuxbUHOQAo7P0s+eEJHHA8SJVRPdGM0NVrpvBoKhfUlM0JHHGUQUhEWO1xLSj8MO0ucNAqJIzVCRxv9EFsqKyA4OQgNj2nwZgp5ZNFgE2A1K3YHS2AhQQojJmC7DgpzGG1WYFUZCQYHZO9gHWCdYIVgu2BTYJlwFh8GvRbcXbG8YgtDHrMBwzPVyQonHQgkCyYBgQJ0Ajc4nVqIAwGSCsBPIgDsK3SWEtIVBa5N8gGjAo+kVwVIZwD/AEUSCDweX4ITrRQsJ8K3TwBXFDwEAB0TvzVcAtoTS20RIwDgVgZ9BBImYgA5AL4Coi8LFnezOkCnIQFjAY4KBAPh9RcGsgZSBsEAJctdsWIRu2kTkQstRw7DAcMBKgpPBGIGMDAwKCYnKTQaLg4AKRSVAFwCdl+YUZ0JdicFD3lPAdt1F9ZZKCGxuE3yBxkFVGcA/wBFEgiCBwAOLHQSjxOtQDg1z7deFRMAZ8QTAGtKb1ApIiPHADkAvgKiLy1DFtYCmBiDAlDDWNB0eo7fpaMO/aEVRRv0ATEQZBIODyMEAc8JQhCbDRgzFD4TAEMAu9YBCgCsAOkAm5I3ABwAYxvONnR+MhXJAxgKQyxL2+kkJhMbhQKDBMkSsvF0AD9BNQ6uQC7WqSQHwxEAEEIu1hkhAH2z4iQPwyJPHNWpdyYBRSpnJALzoBAEVPPsH20MxA0CCEQKRgAFyAtFAlMNwwjEDUQJRArELtapMg7DDZgJIw+TGukEIwvDFkMAqAtDEMMMBhioe+QAO3MMRAACrgnEBSPY9Q0FDnbSBoMAB8MSYxkSxAEJAPIJAAB8FWMOFtMc/HcXwxhDAC7DAvOowwAewwJdKDKHAAHDAALrFUQVwwAbwyvzpWMWv8wA/ABpAy++bcYDUKPD0KhDCwKmJ1MAAmMA5+UZwxAagwipBRL/eADfw6fDGOMCGsOjk3l6BwOpo4sAEsMOGxMAA5sAbcMOAAvDp0MJGkMDwgipnNIPAwfIqUMGAOGDAAPzABXDAAcDAAnDAGmTABrDAA7DChjDjnEWAwABYwAOcwAuUyYABsMAF8MIKQANUgC6wy4AA8MADqMq8wCyYgAcIwAB8wqpAAXOCx0V4wAHowBCwwEKAGnDAAuDAB3DAAjDCakABdIAbqcZ3QCZCCkABdIAAAFDAAfjAB2jCCkABqIACYMAGzMAbSMA5sOIAAhjAAhDABTDBAkpAAbSAOOTAAlDC6kOzPtnAAdDAG6kQFAATwAKwwwAA0MACbUDPwAHIwAZgwACE6cDAAojAApDAAoDp/MGwwAJIwADEwAQQwgAFEMAEXMAD5MADfMADcMAGRMOFiMAFUMAbqMWuwHDAMIAE0MLAGkzEgDhUwACQwAEWgAXgwUjAAbYABjDBSYBgzBaAEFNALcQBxUMegAwMngBrA0IZgJ0KxQHBREPd1N0ZzKRJwaIHAZqNT4DqQq8BwngAB4DAwt2AX56T1ocKQNXAh1GATQGC3tOxYNagkgAMQA5CQADAQEAWxLjAIOYNAEzAH7tFRk6TglSAF8NAAlYAQ+S1ACAQwQorQBiAN4dAJ1wPyeTANVzuQDX3AIeEMp9eyMgXiUAEdkBkJizKltbVVAaRMqRAAEAhyQ/SDEz6BmfVwB6ATEsOClKIRcDOF0E/832AFNt5AByAnkCRxGCOs94NjXdAwINGBonDBwPALW2AwICAgAAAAAAAAYDBQMDARrUAwAtAAAAAgEGBgYGBgYFBQUFBQUEBQYHCAkEBQUFBQQAAAICAAAAIgCNAJAAlT0A6gC7ANwApEQAwgCyAK0AqADuAKYA2gCjAOcBCAEDAMcAgQBiANIA1AEDAN4A8gCQAKkBMQDqAN8A3AsBCQ8yO9ra2tq8xuLT1tRJOB0BUgFcNU0BWgFpAWgBWwFMUUlLbhMBUxsNEAs6PhMOACcUKy0vMj5AQENDQ0RFFEYGJFdXV1dZWVhZL1pbXVxcI2NnZ2ZoZypsbnZ1eHh4eHh4enp6enp6enp6enp8fH18e2IARPIASQCaAHgAMgBm+ACOAFcAVwA3AnbvAIsABfj4AGQAk/IAnwBPAGIAZP//sACFAIUAaQBWALEAJAC2AIMCQAJDAPwA5wD+AP4A6AD/AOkA6QDoAOYALwJ7AVEBQAE+AVQBPgE+AT4BOQE4ATgBOAEcAVgXADEQCAEAUx8SHgsdHhYAjgCWAKYAUQBqIAIxAHYAbwCXAxUDJzIDIUlGTzEAkQJPAMcCVwKkAMAClgKWApYClgKWApYCiwKWApYClgKWApYClgKVApUCmAKgApcClgKWApQClAKUApQCkgKVAnUB1AKXAp8ClgKWApUeAIETBQD+DQOfAmECOh8BVBg9AuIZEjMbAU4/G1WZAXusRAFpYQEFA0FPAQYAmTEeIJdyADFoAHEANgCRA5zMk/C2jGINwjMWygIZCaXdfDILBCs5dAE7YnQBugDlhoiHhoiGiYqKhouOjIaNkI6Ij4qQipGGkoaThpSSlYaWhpeKmIaZhpqGm4aci52QnoqfhuIC4XTpAt90AIp0LHSoAIsAdHQEQwRABEIERQRDBEkERgRBBEcESQRIBEQERgRJAJ5udACrA490ALxuAQ10ANFZdHQA13QCFHQA/mJ0AP4BIQD+APwA/AD9APwDhGZ03ASMK23HAP4A/AD8AP0A/CR0dACRYnQA/gCRASEA/gCRAvQA/gCRA4RmdNwEjCttxyR0AP9idAEhAP4A/gD8APwA/QD8AP8A/AD8AP0A/AOEZnTcBIwrbcckdHQAkWJ0ASEA/gCRAP4AkQL0AP4AkQOEZnTcBIwrbcckdAJLAT50AlIBQXQCU8l0dAJfdHQDpgL0A6YDpgOnA6cDpwOnA4RmdNwEjCttxyR0dACRYnQBIQOmAJEDpgCRAvQDpgCRA4RmdNwEjCttxyR0BDh0AJEEOQCRDpU5dSgCADR03gV2CwArdAEFAM5iCnR0AF1iAAYcOgp0dACRCnQAXAEIwWZ0CnRmdHQAkWZ0CnRmdEXgAFF03gp0dEY0tlT2u3SOAQTwscwhjZZKrhYcBSfFp9XNbKiVDOD2b+cpe4/Z17mQnbtzzhaeQtE2GGj0IDNTjRUSyTxxw/RPHW/+vS7d1NfRt9z9QPZg4X7QFfhCnkvgNPIItOsC2eV6hPannZNHlZ9xrwZXIMOlu3jSoQSq78WEjwLjw1ELSlF1aBvfzwk5ZX7AUvQzjPQKbDuQ+sm4wNOp4A6AdVuRS0t1y/DZpg4R6m7FNjM9HgvW7Bi88zaMjOo6lM8wtBBdj8LP4ylv3zCXPhebMKJc066o9sF71oFW/8JXu86HJbwDID5lzw5GWLR/LhT0Qqnp2JQxNZNfcbLIzPy+YypqRm/lBmGmex+82+PisxUumSeJkALIT6rJezxMH+CTJmQtt5uwTVbL3ptmjDUQzlSIvWi8Tl7ng1NpuRn1Ng4n14Qc+3Iil7OwkvNWogLSPkn3pihIFytyIGmMhOe3n1tWsuMy9BdKyqF4Z3v2SgggTL9KVvMXPnCbRe+oOuFFP3HejBG/w9gvmfNYvg6JuWia2lcSSN1uIjBktzoIazOHPJZ7kKHPz8mRWVdW3lA8WGF9dQF6Bm673boov3BUWDU2JNcahR23GtfHKLOz/viZ+rYnZFaIznXO67CYEJ1fXuTRpZhYZkKe54xeoagkNGLs+NTZHE0rX45/XvQ2RGADX6vcAvdxIUBV27wxGm2zjZo4X3ILgAlrOFheuZ6wtsvaIj4yLY7qqawlliaIcrz2G+c3vscAnCkCuMzMmZvMfu9lLwTvfX+3cVSyPdN9ZwgDZhfjRgNJcLiJ67b9xx8JHswprbiE3v9UphotAPIgnXVIN5KmMc0piXhc6cChPnN+MRhG9adtdttQTTwSIpl8I4/j//d3sz1326qTBTpPRM/Hgh3kzqEXs8ZAk4ErQhNO8hzrQ0DLkWMA/N+91tn2MdOJnWC2FCZehkQrwzwbKOjhvZsbM95QoeL9skYyMf4srVPVJSgg7pOLUtr/n9eT99oe9nLtFRpjA9okV2Kj8h9k5HaC0oivRD8VyXkJ81tcd4fHNXPCfloIQasxsuO18/46dR2jgul/UIet2G0kRvnyONMKhHs6J26FEoqSqd+rfYjeEGwHWVDpX1fh1jBBcKGMqRepju9Y00mDVHC+Xdij/j44rKfvfjGinNs1jO/0F3jB83XCDINN/HB84axlP+3E/klktRo+vl3U/aiyMJbIodE1XSsDn6UAzIoMtUObY2+k/4gY/l+AkZJ5Sj2vQrkyLm3FoxjhDX+31UXBFf9XrAH31fFqoBmDEZvhvvpnZ87N+oZEu7U9O/nnk+QWj3x8uyoRbEnf+O5UMr9i0nHP38IF5AvzrBW8YWBUR0mIAzIvndQq9N3v/Jto3aPjPXUPl8ASdPPyAp7jENf8bk7VMM9ol9XGmlBmeDMuGqt+WzuL6CXAxXjIhCPM5vACchgMJ/8XBGLO/D1isVvGhwwHHr1DLaI5mn2Jr/b1pUD90uciDaS8cXNDzCWvNmT/PhQe5e8nTnnnkt8Ds/SIjibcum/fqDhKopxAY8AkSrPn+IGDEKOO+U3XOP6djFs2H5N9+orhOahiQk5KnEUWa+CzkVzhp8bMHRbg81qhjjXuIKbHjSLSIBKWqockGtKinY+z4/RdBUF6pcc3JmnlxVcNgrI4SEzKUZSwcD2QCyxzKve+gAmg6ZuSRkpPFa6mfThu7LJNu3H5K42uCpNvPAsoedolKV/LHe/eJ+BbaG5MG0NaSGVPRUmNFMFFSSpXEcXwbVh7UETOZZtoVNRGOIbbkig3McEtR68cG0RZAoJevWYo7Dg/lZ1CQzblWeUvVHmr8fY4Nqd9JJiH/zEX24mJviH60fAyFr0A3c4bC1j3yZU60VgJxXn8JgJXLUIsiBnmKmMYz+7yBQFBvqb2eYnuW59joZBf56/wXvWIR4R8wTmV80i1mZy+S4+BUES+hzjk0uXpC///z/IlqHZ1monzlXp8aCfhGKMti73FI1KbL1q6IKO4fuBuZ59gagjn5xU79muMpHXg6S+e+gDM/U9BKLHbl9l6o8czQKl4RUkJJiqftQG2i3BMg/TQlUYFkJDYBOOvAugYuzYSDnZbDDd/aSd9x0Oe6F+bJcHfl9+gp6L5/TgA+BdFFovbfCrQ40s5vMPw8866pNX8zyFGeFWdxIpPVp9Rg1UPOVFbFZrvaFq/YAzHQgqMWpahMYfqHpmwXfHL1/kpYmGuHFwT55mQu0dylfNuq2Oq0hTMCPwqfxnuBIPLXfci4Y1ANy+1CUipQxld/izVh16WyG2Q0CQQ9NqtAnx1HCHwDj7sYxOSB0wopZSnOzxQOcExmxrVTF2BkOthVpGfuhaGECfCJpJKpjnihY+xOT2QJxN61+9K6QSqtv2Shr82I3jgJrqBg0wELFZPjvHpvzTtaJnLK6Vb97Yn933koO/saN7fsjwNKzp4l2lJVx2orjCGzC/4ZL4zCver6aQYtC5sdoychuFE6ufOiog+VWi5UDkbmvmtah/3aArEBIi39s5ILUnlFLgilcGuz9CQshEY7fw2ouoILAYPVT/gyAIq3TFAIwVsl+ktkRz/qGfnCDGrm5gsl/l9QdvCWGsjPz3dU7XuqKfdUrr/6XIgjp4rey6AJBmCmUJMjITHVdFb5m1p+dLMCL8t55zD42cmftmLEJC0Da04YiRCVUBLLa8D071/N5UBNBXDh0LFsmhV/5B5ExOB4j3WVG/S3lfK5o+V6ELHvy6RR9n4ac+VsK4VE4yphPvV+kG9FegTBH4ZRXL2HytUHCduJazB/KykjfetYxOXTLws267aGOd+I+JhKP//+VnXmS90OD/jvLcVu0asyqcuYN1mSb6XTlCkqv1vigZPIYwNF/zpWcT1GR/6aEIRjkh0yhg4LXJfaGobYJTY4JI58KiAKgmmgAKWdl5nYCeLqavRJGQNuYuZtZFGx+IkI4w4NS2xwbetNMunOjBu/hmKCI/w7tfiiyUd//4rbTeWt4izBY8YvGIN6vyKYmP/8X8wHKCeN+WRcKM70+tXKNGyevU9H2Dg5BsljnTf8YbsJ1TmMs74Ce2XlHisleguhyeg44rQOHZuw/6HTkhnnurK2d62q6yS7210SsAIaR+jXMQA+svkrLpsUY+F30Uw89uOdGAR6vo4FIME0EfVVeHTu6eKicfhSqOeXJhbftcd08sWEnNUL1C9fnprTgd83IMut8onVUF0hvqzZfHduPjbjwEXIcoYmy+P6tcJZHmeOv6VrvEdkHDJecjHuHeWANe79VG662qTjA/HCvumVv3qL+LrOcpqGps2ZGwQdFJ7PU4iuyRlBrwfO+xnPyr47s2cXVbWzAyznDiBGjCM3ksxjjqM62GE9C8f5U38kB3VjtabKp/nRdvMESPGDG90bWRLAt1Qk5DyLuazRR1YzdC1c+hZXvAWV8xA72S4A8B67vjVhbba3MMop293FeEXpe7zItMWrJG/LOH9ByOXmYnNJfjmfuX9KbrpgLOba4nZ+fl8Gbdv/ihv+6wFGKHCYrVwmhFC0J3V2bn2tIB1wCc1CST3d3X2OyxhguXcs4sm679UngzofuSeBewMFJboIQHbUh/m2JhW2hG9DIvG2t7yZIzKBTz9wBtnNC+2pCRYhSIuQ1j8xsz5VvqnyUIthvuoyyu7fNIrg/KQUVmGQaqkqZk/Vx5b33/gsEs8yX7SC1J+NV4icz6bvIE7C5G6McBaI8rVg56q5QBJWxn/87Q1sPK4+sQa8fLU5gXo4paaq4cOcQ4wR0VBHPGjKh+UlPCbA1nLXyEUX45qZ8J7/Ln4FPJE2TdzD0Z8MLSNQiykMMmSyOCiFfy84Rq60emYB2vD09KjYwsoIpeDcBDTElBbXxND72yhd9pC/1CMid/5HUMvAL27OtcIJDzNKpRPNqPOpyt2aPGz9QWIs9hQ9LiX5s8m9hjTUu/f7MyIatjjd+tSfQ3ufZxPpmJhTaBtZtKLUcfOCUqADuO+QoH8B9v6U+P0HV1GLQmtoNFTb3s74ivZgjES0qfK+8RdGgBbcCMSy8eBvh98+et1KIFqSe1KQPyXULBMTsIYnysIwiZBJYdI20vseV+wuJkcqGemehKjaAb9L57xZm3g2zX0bZ2xk/fU+bCo7TlnbW7JuF1YdURo/2Gw7VclDG1W7LOtas2LX4upifZ/23rzpsnY/ALfRgrcWP5hYmV9VxVOQA1fZvp9F2UNU+7d7xRyVm5wiLp3/0dlV7vdw1PMiZrbDAYzIVqEjRY2YU03sJhPnlwIPcZUG5ltL6S8XCxU1eYS5cjr34veBmXAvy7yN4ZjArIG0dfD/5UpBNlX1ZPoxJOwyqRi3wQWtOzd4oNKh0LkoTm8cwqgIfKhqqGOhwo71I+zXnMemTv2B2AUzABWyFztGgGULjDDzWYwJUVBTjKCn5K2QGMK1CQT7SzziOjo+BhAmqBjzuc3xYym2eedGeOIRJVyTwDw37iCMe4g5Vbnsb5ZBdxOAnMT7HU4DHpxWGuQ7GeiY30Cpbvzss55+5Km1YsbD5ea3NI9QNYIXol5apgSu9dZ8f8xS5dtHpido5BclDuLWY4lhik0tbJa07yJhH0BOyEut/GRbYTS6RfiTYWGMCkNpfSHi7HvdiTglEVHKZXaVhezH4kkXiIvKopYAlPusftpE4a5IZwvw1x/eLvoDIh/zpo9FiQInsTb2SAkKHV42XYBjpJDg4374XiVb3ws4qM0s9eSQ5HzsMU4OZJKuopFjBM+dAZEl8RUMx5uU2N486Kr141tVsGQfGjORYMCJAMsxELeNT4RmWjRcpdTGBwcx6XN9drWqPmJzcrGrH4+DRc7+n1w3kPZwu0BkNr6hQrqgo7JTB9A5kdJ/H7P4cWBMwsmuixAzJB3yrQpnGIq90lxAXLzDCdn1LPibsRt7rHNjgQBklRgPZ8vTbjXdgXrTWQsK5MdrXXQVPp0Rinq3frzZKJ0qD6Qhc40VzAraUXlob1gvkhK3vpmHgI6FRlQZNx6eRqkp0zy4AQlX813fAPtL3jMRaitGFFjo0zmErloC+h+YYdVQ6k4F/epxAoF0BmqEoKNTt6j4vQZNQ2BoqF9Vj53TOIoNmDiu9Xp15RkIgQIGcoLpfoIbenzpGUAtqFJp5W+LLnx38jHeECTJ/navKY1NWfN0sY1T8/pB8kIH3DU3DX+u6W3YwpypBMYOhbSxGjq84RZ84fWJow8pyHqn4S/9J15EcCMsXqrfwyd9mhiu3+rEo9pPpoJkdZqHjra4NvzFwuThNKy6hao/SlLw3ZADUcUp3w3SRVfW2rhl80zOgTYnKE0Hs2qp1J6H3xqPqIkvUDRMFDYyRbsFI3M9MEyovPk8rlw7/0a81cDVLmBsR2ze2pBuKb23fbeZC0uXoIvDppfTwIDxk1Oq2dGesGc+oJXWJLGkOha3CX+DUnzgAp9HGH9RsPZN63Hn4RMA5eSVhPHO+9RcRb/IOgtW31V1Q5IPGtoxPjC+MEJbVlIMYADd9aHYWUIQKopuPOHmoqSkubnAKnzgKHqgIOfW5RdAgotN6BN+O2ZYHkuemLnvQ8U9THVrS1RtLmKbcC7PeeDsYznvqzeg6VCNwmr0Yyx1wnLjyT84BZz3EJyCptD3yeueAyDWIs0L2qs/VQ3HUyqfrja0V1LdDzqAikeWuV4sc7RLIB69jEIBjCkyZedoUHqCrOvShVzyd73OdrJW0hPOuQv2qOoHDc9xVb6Yu6uq3Xqp2ZaH46A7lzevbxQEmfrzvAYSJuZ4WDk1Hz3QX1LVdiUK0EvlAGAYlG3Md30r7dcPN63yqBCIj25prpvZP0nI4+EgWoFG95V596CurXpKRBGRjQlHCvy5Ib/iW8nZJWwrET3mgd6mEhfP4KCuaLjopWs7h+MdXFdIv8dHQJgg1xi1eYqB0uDYjxwVmri0Sv5XKut/onqapC+FQiC2C1lvYJ9MVco6yDYsS3AANUfMtvtbYI2hfwZatiSsnoUeMZd34GVjkMMKA+XnjJpXgRW2SHTZplVowPmJsvXy6w3cfO1AK2dvtZEKTkC/TY9LFiKHCG0DnrMQdGm2lzlBHM9iEYynH2UcVMhUEjsc0oDBTgo2ZSQ1gzkAHeWeBXYFjYLuuf8yzTCy7/RFR81WDjXMbq2BOH5dURnxo6oivmxL3cKzKInlZkD31nvpHB9Kk7GfcfE1t+1V64b9LtgeJGlpRFxQCAqWJ5DoY77ski8gsOEOr2uywZaoO/NGa0X0y1pNQHBi3b2SUGNpcZxDT7rLbBf1FSnQ8guxGW3W+36BW0gBje4DOz6Ba6SVk0xiKgt+q2JOFyr4SYfnu+Ic1QZYIuwHBrgzr6UvOcSCzPTOo7D6IC4ISeS7zkl4h+2VoeHpnG/uWR3+ysNgPcOIXQbv0n4mr3BwQcdKJxgPSeyuP/z1Jjg4e9nUvoXegqQVIE30EHx5GHv+FAVUNTowYDJgyFhf5IvlYmEqRif6+WN1MkEJmDcQITx9FX23a4mxy1AQRsOHO/+eImX9l8EMJI3oPWzVXxSOeHU1dUWYr2uAA7AMb+vAEZSbU3qob9ibCyXeypEMpZ6863o6QPqlqGHZkuWABSTVNd4cOh9hv3qEpSx2Zy/DJMP6cItEmiBJ5PFqQnDEIt3NrA3COlOSgz43D7gpNFNJ5MBh4oFzhDPiglC2ypsNU4ISywY2erkyb1NC3Qh/IfWj0eDgZI4/ln8WPfBsT3meTjq1Uqt1E7Zl/qftqkx6aM9KueMCekSnMrcHj1CqTWWzEzPsZGcDe3Ue4Ws+XFYVxNbOFF8ezkvQGR6ZOtOLU2lQEnMBStx47vE6Pb7AYMBRj2OOfZXfisjJnpTfSNjo6sZ6qSvNxZNmDeS7Gk3yYyCk1HtKN2UnhMIjOXUzAqDv90lx9O/q/AT1ZMnit5XQe9wmQxnE/WSH0CqZ9/2Hy+Sfmpeg8RwsHI5Z8kC8H293m/LHVVM/BA7HaTJYg5Enk7M/xWpq0192ACfBai2LA/qrCjCr6Dh1BIMzMXINBmX96MJ5Hn2nxln/RXPFhwHxUmSV0EV2V0jm86/dxxuYSU1W7sVkEbN9EzkG0QFwPhyHKyb3t+Fj5WoUUTErcazE/N6EW6Lvp0d//SDPj7EV9UdJN+Amnf3Wwk3A0SlJ9Z00yvXZ7n3z70G47Hfsow8Wq1JXcfwnA+Yxa5mFsgV464KKP4T31wqIgzFPd3eCe3j5ory5fBF2hgCFyVFrLzI9eetNXvM7oQqyFgDo4CTp/hDV9NMX9JDHQ/nyHTLvZLNLF6ftn2OxjGm8+PqOwhxnPHWipkE/8wbtyri80Sr7pMNkQGMfo4ZYK9OcCC4ESVFFbLMIvlxSoRqWie0wxqnLfcLSXMSpMMQEJYDVObYsXIQNv4TGNwjq1kvT1UOkicTrG3IaBZ3XdScS3u8sgeZPVpOLkbiF940FjbCeNRINNvDbd01EPBrTCPpm12m43ze1bBB59Ia6Ovhnur/Nvx3IxwSWol+3H2qfCJR8df6aQf4v6WiONxkK+IqT4pKQrZK/LplgDI/PJZbOep8dtbV7oCr6CgfpWa8NczOkPx81iSHbsNhVSJBOtrLIMrL31LK9TqHqAbAHe0RLmmV806kRLDLNEhUEJfm9u0sxpkL93Zgd6rw+tqBfTMi59xqXHLXSHwSbSBl0EK0+loECOPtrl+/nsaFe197di4yUgoe4jKoAJDXc6DGDjrQOoFDWZJ9HXwt8xDrQP+7aRwWKWI1GF8s8O4KzxWBBcwnl3vnl1Oez3oh6Ea1vjR7/z7DDTrFtqU2W/KAEzAuXDNZ7MY73MF216dzdSbWmUp4lcm7keJfWaMHgut9x5C9mj66Z0lJ+yhsjVvyiWrfk1lzPOTdhG15Y7gQlXtacvI7qv/XNSscDwqkgwHT/gUsD5yB7LdRRvJxQGYINn9hTpodKFVSTPrtGvyQw+HlRFXIkodErAGu9Iy1YpfSPc3jkFh5CX3lPxv7aqjE/JAfTIpEjGb/H7MO0e2vsViSW1qa/Lmi4/n4DEI3g7lYrcanspDfEpKkdV1OjSLOy0BCUqVoECaB55vs06rXl4jqmLsPsFM/7vYJ0vrBhDCm/00A/H81l1uekJ/6Lml3Hb9+NKiLqATJmDpyzfYZFHumEjC662L0Bwkxi7E9U4cQA0XMVDuMYAIeLMPgQaMVOd8fmt5SflFIfuBoszeAw7ow5gXPE2Y/yBc/7jExARUf/BxIHQBF5Sn3i61w4z5xJdCyO1F1X3+3ax+JSvMeZ7S6QSKp1Fp/sjYz6Z+VgCZzibGeEoujryfMulH7Rai5kAft9ebcW50DyJr2uo2z97mTWIu45YsSnNSMrrNUuG1XsYBtD9TDYzQffKB87vWbkM4EbPAFgoBV4GQS+vtFDUqOFAoi1nTtmIOvg38N4hT2Sn8r8clmBCXspBlMBYTnrqFJGBT3wZOzAyJDre9dHH7+x7qaaKDOB4UQALD5ecS0DE4obubQEiuJZ0EpBVpLuYcce8Aa4PYd/V4DLDAJBYKQPCWTcrEaZ5HYbJi11Gd6hjGom1ii18VHYnG28NKpkz2UKVPxlhYSp8uZr367iOmoy7zsxehW9wzcy2zG0a80PBMCRQMb32hnaHeOR8fnNDzZhaNYhkOdDsBUZ3loDMa1YP0uS0cjUP3b/6DBlqmZOeNABDsLl5BI5QJups8uxAuWJdkUB/pO6Zax6tsg7fN5mjjDgMGngO+DPcKqiHIDbFIGudxtPTIyDi9SFMKBDcfdGQRv41q1AqmxgkVfJMnP8w/Bc7N9/TR6C7mGObFqFkIEom8sKi2xYqJLTCHK7cxzaZvqODo22c3wisBCP4HeAgcRbNPAsBkNRhSmD48dHupdBRw4mIvtS5oeF6zeT1KMCyhMnmhpkFAGWnGscoNkwvQ8ZM5lE/vgTHFYL99OuNxdFBxTEDd5v2qLR8y9WkXsWgG6kZNndFG+pO/UAkOCipqIhL3hq7cRSdrCq7YhUsTocEcnaFa6nVkhnSeRYUA1YO0z5itF9Sly3VlxYDw239TJJH6f3EUfYO5lb7bcFcz8Bp7Oo8QmnsUHOz/fagVUBtKEw1iT88j+aKkv8cscKNkMxjYr8344D1kFoZ7/td1W6LCNYN594301tUGRmFjAzeRg5vyoM1F6+bJZ/Q54jN/k8SFd3DxPTYaAUsivsBfgTn7Mx8H2SpPt4GOdYRnEJOH6jHM2p6SgB0gzIRq6fHxGMmSmqaPCmlfwxiuloaVIitLGN8wie2CDWhkzLoCJcODh7KIOAqbHEvXdUxaS4TTTs07Clzj/6GmVs9kiZDerMxEnhUB6QQPlcfqkG9882RqHoLiHGBoHfQuXIsAG8GTAtao2KVwRnvvam8jo1e312GQAKWEa4sUVEAMG4G6ckcONDwRcg1e2D3+ohXgY4UAWF8wHKQMrSnzCgfFpsxh+aHXMGtPQroQasRY4U6UdG0rz1Vjbka0MekOGRZQEvqQFlxseFor8zWFgHek3v29+WqN6gaK5gZOTOMZzpQIC1201LkMCXild3vWXSc5UX9xcFYfbRPzGFa1FDcPfPB/jUEq/FeGt419CI3YmBlVoHsa4KdcwQP5ZSwHHhFJ7/Ph/Rap/4vmG91eDwPP0lDfCDRCLszTqfzM71xpmiKi2HwS4WlqvGNwtvwF5Dqpn6KTq8ax00UMPkxDcZrEEEsIvHiUXXEphdb4GB4FymlPwBz4Gperqq5pW7TQ6/yNRhW8VT5NhuP0udlxo4gILq5ZxAZk8ZGh3g4CqxJlPKY7AQxupfUcVpWT5VItp1+30UqoyP4wWsRo3olRRgkWZZ2ZN6VC3OZFeXB8NbnUrSdikNptD1QiGuKkr8EmSR/AK9Rw+FF3s5uwuPbvHGiPeFOViltMK7AUaOsq9+x9cndk3iJEE5LKZRlWJbKOZweROzmPNVPkjE3K/TyA57Rs68TkZ3MR8akKpm7cFjnjPd/DdkWjgYoKHSr5Wu5ssoBYU4acRs5g2DHxUmdq8VXOXRbunD8QN0LhgkssgahcdoYsNvuXGUK/KXD/7oFb+VGdhqIn02veuM5bLudJOc2Ky0GMaG4W/xWBxIJcL7yliJOXOpx0AkBqUgzlDczmLT4iILXDxxtRR1oZa2JWFgiAb43obrJnG/TZC2KSK2wqOzRZTXavZZFMb1f3bXvVaNaK828w9TO610gk8JNf3gMfETzXXsbcvRGCG9JWQZ6+cDPqc4466Yo2RcKH+PILeKOqtnlbInR3MmBeGG3FH10yzkybuqEC2HSQwpA0An7d9+73BkDUTm30bZmoP/RGbgFN+GrCOfADgqr0WbI1a1okpFms8iHYw9hm0zUvlEMivBRxModrbJJ+9/p3jUdQQ9BCtQdxnOGrT5dzRUmw0593/mbRSdBg0nRvRZM5/E16m7ZHmDEtWhwvfdZCZ8J8M12W0yRMszXamWfQTwIZ4ayYktrnscQuWr8idp3PjT2eF/jmtdhIfcpMnb+IfZY2FebW6UY/AK3jP4u3Tu4zE4qlnQgLFbM19EBIsNf7KhjdbqQ/D6yiDb+NlEi2SKD+ivXVUK8ib0oBo366gXkR8ZxGjpJIDcEgZPa9TcYe0TIbiPl/rPUQDu3XBJ9X/GNq3FAUsKsll57DzaGMrjcT+gctp+9MLYXCq+sqP81eVQ0r9lt+gcQfZbACRbEjvlMskztZG8gbC8Qn9tt26Q7y7nDrbZq/LEz7kR6Jc6pg3N9rVX8Y5MJrGlML9p9lU4jbTkKqCveeZUJjHB03m2KRKR2TytoFkTXOLg7keU1s1lrPMQJpoOKLuAAC+y1HlJucU6ysB5hsXhvSPPLq5J7JtnqHKZ4vYjC4Vy8153QY+6780xDuGARsGbOs1WqzH0QS765rnSKEbbKlkO8oI/VDwUd0is13tKpqILu1mDJFNy/iJAWcvDgjxvusIT+PGz3ST/J9r9Mtfd0jpaGeiLYIqXc7DiHSS8TcjFVksi66PEkxW1z6ujbLLUGNNYnzOWpH8BZGK4bCK7iR+MbIv8ncDAz1u4StN3vTTzewr9IQjk9wxFxn+6N1ddKs0vffJiS08N3a4G1SVrlZ97Q/M+8G9fe5AP6d9/Qq4WRnORVhofPIKEdCr3llspUfE0oKIIYoByBRPh+bX1HLS3JWGJRhIvE1aW4NTd8ePi4Z+kXb+Z8snYfSNcqijhAgVsx4RCM54cXUiYkjeBmmC4ajOHrChoELscJJC7+9jjMjw5BagZKlgRMiSNYz7h7vvZIoQqbtQmspc0cUk1G/73iXtSpROl5wtLgQi0mW2Ex8i3WULhcggx6E1LMVHUsdc9GHI1PH3U2Ko0PyGdn9KdVOLm7FPBui0i9a0HpA60MsewVE4z8CAt5d401Gv6zXlIT5Ybit1VIA0FCs7wtvYreru1fUyW3oLAZ/+aTnZrOcYRNVA8spoRtlRoWflsRClFcgzkqiHOrf0/SVw+EpVaFlJ0g4Kxq1MMOmiQdpMNpte8lMMQqm6cIFXlnGbfJllysKDi+0JJMotkqgIxOSQgU9dn/lWkeVf8nUm3iwX2Nl3WDw9i6AUK3vBAbZZrcJpDQ/N64AVwjT07Jef30GSSmtNu2WlW7YoyW2FlWfZFQUwk867EdLYKk9VG6JgEnBiBxkY7LMo4YLQJJlAo9l/oTvJkSARDF/XtyAzM8O2t3eT/iXa6wDN3WewNmQHdPfsxChU/KtLG2Mn8i4ZqKdSlIaBZadxJmRzVS/o4yA65RTSViq60oa395Lqw0pzY4SipwE0SXXsKV+GZraGSkr/RW08wPRvqvSUkYBMA9lPx4m24az+IHmCbXA+0faxTRE9wuGeO06DIXa6QlKJ3puIyiuAVfPr736vzo2pBirS+Vxel3TMm3JKhz9o2ZoRvaFVpIkykb0Hcm4oHFBMcNSNj7/4GJt43ogonY2Vg4nsDQIWxAcorpXACzgBqQPjYsE/VUpXpwNManEru4NwMCFPkXvMoqvoeLN3qyu/N1eWEHttMD65v19l/0kH2mR35iv/FI+yjoHJ9gPMz67af3Mq/BoWXqu3rphiWMXVkmnPSEkpGpUI2h1MThideGFEOK6YZHPwYzMBvpNC7+ZHxPb7epfefGyIB4JzO9DTNEYnDLVVHdQyvOEVefrk6Uv5kTQYVYWWdqrdcIl7yljwwIWdfQ/y+2QB3eR/qxYObuYyB4gTbo2in4PzarU1sO9nETkmj9/AoxDA+JM3GMqQtJR4jtduHtnoCLxd1gQUscHRB/MoRYIEsP2pDZ9KvHgtlk1iTbWWbHhohwFEYX7y51fUV2nuUmnoUcqnWIQAAgl9LTVX+Bc0QGNEhChxHR4YjfE51PUdGfsSFE6ck7BL3/hTf9jLq4G1IafINxOLKeAtO7quulYvH5YOBc+zX7CrMgWnW47/jfRsWnJjYYoE7xMfWV2HN2iyIqLI';\nconst FENCED = new Map([[8217,\"apostrophe\"],[8260,\"fraction slash\"],[12539,\"middle dot\"]]);\nconst NSM_MAX = 4;\n\nfunction decode_arithmetic(bytes) {\r\n\tlet pos = 0;\r\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\r\n\t\r\n\t// decode the frequency table\r\n\tlet symbol_count = u16();\r\n\tlet total = 1;\r\n\tlet acc = [0, 1]; // first symbol has frequency 1\r\n\tfor (let i = 1; i < symbol_count; i++) {\r\n\t\tacc.push(total += u16());\r\n\t}\r\n\r\n\t// skip the sized-payload that the last 3 symbols index into\r\n\tlet skip = u16();\r\n\tlet pos_payload = pos;\r\n\tpos += skip;\r\n\r\n\tlet read_width = 0;\r\n\tlet read_buffer = 0; \r\n\tfunction read_bit() {\r\n\t\tif (read_width == 0) {\r\n\t\t\t// this will read beyond end of buffer\r\n\t\t\t// but (undefined|0) => zero pad\r\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\r\n\t\t\tread_width = 8;\r\n\t\t}\r\n\t\treturn (read_buffer >> --read_width) & 1;\r\n\t}\r\n\r\n\tconst N = 31;\r\n\tconst FULL = 2**N;\r\n\tconst HALF = FULL >>> 1;\r\n\tconst QRTR = HALF >> 1;\r\n\tconst MASK = FULL - 1;\r\n\r\n\t// fill register\r\n\tlet register = 0;\r\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\r\n\r\n\tlet symbols = [];\r\n\tlet low = 0;\r\n\tlet range = FULL; // treat like a float\r\n\twhile (true) {\r\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\r\n\t\tlet start = 0;\r\n\t\tlet end = symbol_count;\r\n\t\twhile (end - start > 1) { // binary search\r\n\t\t\tlet mid = (start + end) >>> 1;\r\n\t\t\tif (value < acc[mid]) {\r\n\t\t\t\tend = mid;\r\n\t\t\t} else {\r\n\t\t\t\tstart = mid;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (start == 0) break; // first symbol is end mark\r\n\t\tsymbols.push(start);\r\n\t\tlet a = low + Math.floor(range * acc[start] / total);\r\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1;\r\n\t\twhile (((a ^ b) & HALF) == 0) {\r\n\t\t\tregister = (register << 1) & MASK | read_bit();\r\n\t\t\ta = (a << 1) & MASK;\r\n\t\t\tb = (b << 1) & MASK | 1;\r\n\t\t}\r\n\t\twhile (a & ~b & QRTR) {\r\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\r\n\t\t\ta = (a << 1) ^ HALF;\r\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\r\n\t\t}\r\n\t\tlow = a;\r\n\t\trange = 1 + b - a;\r\n\t}\r\n\tlet offset = symbol_count - 4;\r\n\treturn symbols.map(x => { // index into payload\r\n\t\tswitch (x - offset) {\r\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\r\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\r\n\t\t\tcase 1: return offset + bytes[pos_payload++];\r\n\t\t\tdefault: return x - 1;\r\n\t\t}\r\n\t});\r\n}\t\r\n\r\n// returns an iterator which returns the next symbol\r\nfunction read_payload(v) {\r\n\tlet pos = 0;\r\n\treturn () => v[pos++];\r\n}\r\nfunction read_compressed_payload(s) {\r\n\treturn read_payload(decode_arithmetic(unsafe_atob(s)));\r\n}\r\n\r\n// unsafe in the sense:\r\n// expected well-formed Base64 w/o padding \r\n// 20220922: added for https://github.com/adraffy/ens-normalize.js/issues/4\r\nfunction unsafe_atob(s) {\r\n\tlet lookup = [];\r\n\t[...'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'].forEach((c, i) => lookup[c.charCodeAt(0)] = i);\r\n\tlet n = s.length;\r\n\tlet ret = new Uint8Array((6 * n) >> 3);\r\n\tfor (let i = 0, pos = 0, width = 0, carry = 0; i < n; i++) {\r\n\t\tcarry = (carry << 6) | lookup[s.charCodeAt(i)];\r\n\t\twidth += 6;\r\n\t\tif (width >= 8) {\r\n\t\t\tret[pos++] = (carry >> (width -= 8));\r\n\t\t}\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\r\nfunction signed(i) { \r\n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\r\n}\r\n\r\nfunction read_deltas(n, next) {\r\n\tlet v = Array(n);\r\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\r\n\treturn v;\r\n}\r\n\r\n// [123][5] => [0 3] [1 1] [0 0]\r\nfunction read_sorted(next, prev = 0) {\r\n\tlet ret = [];\r\n\twhile (true) {\r\n\t\tlet x = next();\r\n\t\tlet n = next();\r\n\t\tif (!n) break;\r\n\t\tprev += x;\r\n\t\tfor (let i = 0; i < n; i++) {\r\n\t\t\tret.push(prev + i);\r\n\t\t}\r\n\t\tprev += n + 1;\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction read_sorted_arrays(next) {\r\n\treturn read_array_while(() => { \r\n\t\tlet v = read_sorted(next);\r\n\t\tif (v.length) return v;\r\n\t});\r\n}\r\n\r\n// returns map of x => ys\r\nfunction read_mapped(next) {\r\n\tlet ret = [];\r\n\twhile (true) {\r\n\t\tlet w = next();\r\n\t\tif (w == 0) break;\r\n\t\tret.push(read_linear_table(w, next));\r\n\t}\r\n\twhile (true) {\r\n\t\tlet w = next() - 1;\r\n\t\tif (w < 0) break;\r\n\t\tret.push(read_replacement_table(w, next));\r\n\t}\r\n\treturn ret.flat();\r\n}\r\n\r\n// read until next is falsy\r\n// return array of read values\r\nfunction read_array_while(next) {\r\n\tlet v = [];\r\n\twhile (true) {\r\n\t\tlet x = next(v.length);\r\n\t\tif (!x) break;\r\n\t\tv.push(x);\r\n\t}\r\n\treturn v;\r\n}\r\n\r\n// read w columns of length n\r\n// return as n rows of length w\r\nfunction read_transposed(n, w, next) {\r\n\tlet m = Array(n).fill().map(() => []);\r\n\tfor (let i = 0; i < w; i++) {\r\n\t\tread_deltas(n, next).forEach((x, j) => m[j].push(x));\r\n\t}\r\n\treturn m;\r\n}\r\n \r\n// returns [[x, ys], [x+dx, ys+dy], [x+2*dx, ys+2*dy], ...]\r\n// where dx/dy = steps, n = run size, w = length of y\r\nfunction read_linear_table(w, next) {\r\n\tlet dx = 1 + next();\r\n\tlet dy = next();\r\n\tlet vN = read_array_while(next);\r\n\tlet m = read_transposed(vN.length, 1+w, next);\r\n\treturn m.flatMap((v, i) => {\r\n\t\tlet [x, ...ys] = v;\r\n\t\treturn Array(vN[i]).fill().map((_, j) => {\r\n\t\t\tlet j_dy = j * dy;\r\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\r\n\t\t});\r\n\t});\r\n}\r\n\r\n// return [[x, ys...], ...]\r\n// where w = length of y\r\nfunction read_replacement_table(w, next) { \r\n\tlet n = 1 + next();\r\n\tlet m = read_transposed(n, 1+w, next);\r\n\treturn m.map(v => [v[0], v.slice(1)]);\r\n}\r\n\r\n\r\nfunction read_trie(next) {\r\n\tlet ret = [];\r\n\tlet sorted = read_sorted(next); \r\n\texpand(decode([]), []);\r\n\treturn ret; // not sorted\r\n\tfunction decode(Q) { // characters that lead into this node\r\n\t\tlet S = next(); // state: valid, save, check\r\n\t\tlet B = read_array_while(() => { // buckets leading to new nodes\r\n\t\t\tlet cps = read_sorted(next).map(i => sorted[i]);\r\n\t\t\tif (cps.length) return decode(cps);\r\n\t\t});\r\n\t\treturn {S, B, Q};\r\n\t}\r\n\tfunction expand({S, B}, cps, saved) {\r\n\t\tif (S & 4 && saved === cps[cps.length-1]) return;\r\n\t\tif (S & 2) saved = cps[cps.length-1];\r\n\t\tif (S & 1) ret.push(cps); \r\n\t\tfor (let br of B) {\r\n\t\t\tfor (let cp of br.Q) {\r\n\t\t\t\texpand(br, [...cps, cp], saved);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\n\nfunction hex_cp(cp) {\r\n\treturn cp.toString(16).toUpperCase().padStart(2, '0');\r\n}\r\n\r\nfunction quote_cp(cp) {\r\n\treturn `{${hex_cp(cp)}}`; // raffy convention: like \"\\u{X}\" w/o the \"\\u\"\r\n}\r\n\r\n/*\r\nexport function explode_cp(s) {\r\n\treturn [...s].map(c => c.codePointAt(0));\r\n}\r\n*/\r\nfunction explode_cp(s) { // this is about 2x faster\r\n\tlet cps = [];\r\n\tfor (let pos = 0, len = s.length; pos < len; ) {\r\n\t\tlet cp = s.codePointAt(pos);\r\n\t\tpos += cp < 0x10000 ? 1 : 2;\r\n\t\tcps.push(cp);\r\n\t}\r\n\treturn cps;\r\n}\r\n\r\nfunction str_from_cps(cps) {\r\n\tconst chunk = 4096;\r\n\tlet len = cps.length;\r\n\tif (len < chunk) return String.fromCodePoint(...cps);\r\n\tlet buf = [];\r\n\tfor (let i = 0; i < len; ) {\r\n\t\tbuf.push(String.fromCodePoint(...cps.slice(i, i += chunk)));\r\n\t}\r\n\treturn buf.join('');\r\n}\r\n\r\nfunction compare_arrays(a, b) {\r\n\tlet n = a.length;\r\n\tlet c = n - b.length;\r\n\tfor (let i = 0; c == 0 && i < n; i++) c = a[i] - b[i];\r\n\treturn c;\r\n}\n\n// created 2023-09-12T22:05:14.211Z\n// compressed base64-encoded blob for include-nf data\n// source: https://github.com/adraffy/ens-normalize.js/blob/main/src/make.js\n// see: https://github.com/adraffy/ens-normalize.js#security\n// SHA-256: a974b6f8541fc29d919bc85118af0a44015851fab5343f8679cb31be2bdb209e\nvar COMPRESSED = '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';\n\n// https://unicode.org/reports/tr15/\r\n// for reference implementation\r\n// see: /derive/nf.js\r\n\r\n\r\n// algorithmic hangul\r\n// https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf (page 144)\r\nconst S0 = 0xAC00;\r\nconst L0 = 0x1100;\r\nconst V0 = 0x1161;\r\nconst T0 = 0x11A7;\r\nconst L_COUNT = 19;\r\nconst V_COUNT = 21;\r\nconst T_COUNT = 28;\r\nconst N_COUNT = V_COUNT * T_COUNT;\r\nconst S_COUNT = L_COUNT * N_COUNT;\r\nconst S1 = S0 + S_COUNT;\r\nconst L1 = L0 + L_COUNT;\r\nconst V1 = V0 + V_COUNT;\r\nconst T1 = T0 + T_COUNT;\r\n\r\nfunction unpack_cc(packed) {\r\n\treturn (packed >> 24) & 0xFF;\r\n}\r\nfunction unpack_cp(packed) {\r\n\treturn packed & 0xFFFFFF;\r\n}\r\n\r\nlet SHIFTED_RANK, EXCLUSIONS, DECOMP, RECOMP;\r\n\r\nfunction init$1() {\r\n\t//console.time('nf');\r\n\tlet r = read_compressed_payload(COMPRESSED);\r\n\tSHIFTED_RANK = new Map(read_sorted_arrays(r).flatMap((v, i) => v.map(x => [x, (i+1) << 24]))); // pre-shifted\r\n\tEXCLUSIONS = new Set(read_sorted(r));\r\n\tDECOMP = new Map();\r\n\tRECOMP = new Map();\r\n\tfor (let [cp, cps] of read_mapped(r)) {\r\n\t\tif (!EXCLUSIONS.has(cp) && cps.length == 2) {\r\n\t\t\tlet [a, b] = cps;\r\n\t\t\tlet bucket = RECOMP.get(a);\r\n\t\t\tif (!bucket) {\r\n\t\t\t\tbucket = new Map();\r\n\t\t\t\tRECOMP.set(a, bucket);\r\n\t\t\t}\r\n\t\t\tbucket.set(b, cp);\r\n\t\t}\r\n\t\tDECOMP.set(cp, cps.reverse()); // stored reversed\r\n\t}\r\n\t//console.timeEnd('nf');\r\n\t// 20230905: 11ms\r\n}\r\n\r\nfunction is_hangul(cp) {\r\n\treturn cp >= S0 && cp < S1;\r\n}\r\n\r\nfunction compose_pair(a, b) {\r\n\tif (a >= L0 && a < L1 && b >= V0 && b < V1) {\r\n\t\treturn S0 + (a - L0) * N_COUNT + (b - V0) * T_COUNT;\r\n\t} else if (is_hangul(a) && b > T0 && b < T1 && (a - S0) % T_COUNT == 0) {\r\n\t\treturn a + (b - T0);\r\n\t} else {\r\n\t\tlet recomp = RECOMP.get(a);\r\n\t\tif (recomp) {\r\n\t\t\trecomp = recomp.get(b);\r\n\t\t\tif (recomp) {\r\n\t\t\t\treturn recomp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t}\r\n}\r\n\r\nfunction decomposed(cps) {\r\n\tif (!SHIFTED_RANK) init$1();\r\n\tlet ret = [];\r\n\tlet buf = [];\r\n\tlet check_order = false;\r\n\tfunction add(cp) {\r\n\t\tlet cc = SHIFTED_RANK.get(cp);\r\n\t\tif (cc) {\r\n\t\t\tcheck_order = true;\r\n\t\t\tcp |= cc;\r\n\t\t}\r\n\t\tret.push(cp);\r\n\t}\r\n\tfor (let cp of cps) {\r\n\t\twhile (true) {\r\n\t\t\tif (cp < 0x80) {\r\n\t\t\t\tret.push(cp);\r\n\t\t\t} else if (is_hangul(cp)) {\r\n\t\t\t\tlet s_index = cp - S0;\r\n\t\t\t\tlet l_index = s_index / N_COUNT | 0;\r\n\t\t\t\tlet v_index = (s_index % N_COUNT) / T_COUNT | 0;\r\n\t\t\t\tlet t_index = s_index % T_COUNT;\r\n\t\t\t\tadd(L0 + l_index);\r\n\t\t\t\tadd(V0 + v_index);\r\n\t\t\t\tif (t_index > 0) add(T0 + t_index);\r\n\t\t\t} else {\r\n\t\t\t\tlet mapped = DECOMP.get(cp);\r\n\t\t\t\tif (mapped) {\r\n\t\t\t\t\tbuf.push(...mapped);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tadd(cp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!buf.length) break;\r\n\t\t\tcp = buf.pop();\r\n\t\t}\r\n\t}\r\n\tif (check_order && ret.length > 1) {\r\n\t\tlet prev_cc = unpack_cc(ret[0]);\r\n\t\tfor (let i = 1; i < ret.length; i++) {\r\n\t\t\tlet cc = unpack_cc(ret[i]);\r\n\t\t\tif (cc == 0 || prev_cc <= cc) {\r\n\t\t\t\tprev_cc = cc;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tlet j = i-1;\r\n\t\t\twhile (true) {\r\n\t\t\t\tlet tmp = ret[j+1];\r\n\t\t\t\tret[j+1] = ret[j];\r\n\t\t\t\tret[j] = tmp;\r\n\t\t\t\tif (!j) break;\r\n\t\t\t\tprev_cc = unpack_cc(ret[--j]);\r\n\t\t\t\tif (prev_cc <= cc) break;\r\n\t\t\t}\r\n\t\t\tprev_cc = unpack_cc(ret[i]);\r\n\t\t}\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction composed_from_decomposed(v) {\r\n\tlet ret = [];\r\n\tlet stack = [];\r\n\tlet prev_cp = -1;\r\n\tlet prev_cc = 0;\r\n\tfor (let packed of v) {\r\n\t\tlet cc = unpack_cc(packed);\r\n\t\tlet cp = unpack_cp(packed);\r\n\t\tif (prev_cp == -1) {\r\n\t\t\tif (cc == 0) {\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tret.push(cp);\r\n\t\t\t}\r\n\t\t} else if (prev_cc > 0 && prev_cc >= cc) {\r\n\t\t\tif (cc == 0) {\r\n\t\t\t\tret.push(prev_cp, ...stack);\r\n\t\t\t\tstack.length = 0;\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tstack.push(cp);\r\n\t\t\t}\r\n\t\t\tprev_cc = cc;\r\n\t\t} else {\r\n\t\t\tlet composed = compose_pair(prev_cp, cp);\r\n\t\t\tif (composed >= 0) {\r\n\t\t\t\tprev_cp = composed;\r\n\t\t\t} else if (prev_cc == 0 && cc == 0) {\r\n\t\t\t\tret.push(prev_cp);\r\n\t\t\t\tprev_cp = cp;\r\n\t\t\t} else {\r\n\t\t\t\tstack.push(cp);\r\n\t\t\t\tprev_cc = cc;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (prev_cp >= 0) {\r\n\t\tret.push(prev_cp, ...stack);\t\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\n// note: cps can be iterable\r\nfunction nfd(cps) {\r\n\treturn decomposed(cps).map(unpack_cp);\r\n}\r\nfunction nfc(cps) {\r\n\treturn composed_from_decomposed(decomposed(cps));\r\n}\n\nconst HYPHEN = 0x2D;\r\nconst STOP = 0x2E;\r\nconst STOP_CH = '.';\r\nconst FE0F = 0xFE0F;\r\nconst UNIQUE_PH = 1;\r\n\r\n// 20230913: replace [...v] with Array_from(v) to avoid large spreads\r\nconst Array_from = x => Array.from(x); // Array.from.bind(Array);\r\n\r\nfunction group_has_cp(g, cp) {\r\n\t// 20230913: keep primary and secondary distinct instead of creating valid union\r\n\treturn g.P.has(cp) || g.Q.has(cp);\r\n}\r\n\r\nclass Emoji extends Array {\r\n\tget is_emoji() { return true; } // free tagging system\r\n}\r\n\r\nlet MAPPED, IGNORED, CM, NSM, ESCAPE, NFC_CHECK, GROUPS, WHOLE_VALID, WHOLE_MAP, VALID, EMOJI_LIST, EMOJI_ROOT;\r\n\r\nfunction init() {\r\n\tif (MAPPED) return;\r\n\t\r\n\tlet r = read_compressed_payload(COMPRESSED$1);\r\n\tconst read_sorted_array = () => read_sorted(r);\r\n\tconst read_sorted_set = () => new Set(read_sorted_array());\r\n\r\n\tMAPPED = new Map(read_mapped(r)); \r\n\tIGNORED = read_sorted_set(); // ignored characters are not valid, so just read raw codepoints\r\n\r\n\t/*\r\n\t// direct include from payload is smaller than the decompression code\r\n\tconst FENCED = new Map(read_array_while(() => {\r\n\t\tlet cp = r();\r\n\t\tif (cp) return [cp, read_str(r())];\r\n\t}));\r\n\t*/\r\n\t// 20230217: we still need all CM for proper error formatting\r\n\t// but norm only needs NSM subset that are potentially-valid\r\n\tCM = read_sorted_array();\r\n\tNSM = new Set(read_sorted_array().map(i => CM[i]));\r\n\tCM = new Set(CM);\r\n\t\r\n\tESCAPE = read_sorted_set(); // characters that should not be printed\r\n\tNFC_CHECK = read_sorted_set(); // only needed to illustrate ens_tokenize() transformations\r\n\r\n\tlet chunks = read_sorted_arrays(r);\r\n\tlet unrestricted = r();\r\n\tconst read_chunked = () => new Set(read_sorted_array().flatMap(i => chunks[i]).concat(read_sorted_array()));\r\n\tGROUPS = read_array_while(i => {\r\n\t\t// minifier property mangling seems unsafe\r\n\t\t// so these are manually renamed to single chars\r\n\t\tlet N = read_array_while(r).map(x => x+0x60);\r\n\t\tif (N.length) {\r\n\t\t\tlet R = i >= unrestricted; // first arent restricted\r\n\t\t\tN[0] -= 32; // capitalize\r\n\t\t\tN = str_from_cps(N);\r\n\t\t\tif (R) N=`Restricted[${N}]`;\r\n\t\t\tlet P = read_chunked(); // primary\r\n\t\t\tlet Q = read_chunked(); // secondary\r\n\t\t\tlet M = !r(); // not-whitelisted, check for NSM\r\n\t\t\t// *** this code currently isn't needed ***\r\n\t\t\t/*\r\n\t\t\tlet V = [...P, ...Q].sort((a, b) => a-b); // derive: sorted valid\r\n\t\t\tlet M = r()-1; // number of combining mark\r\n\t\t\tif (M < 0) { // whitelisted\r\n\t\t\t\tM = new Map(read_array_while(() => {\r\n\t\t\t\t\tlet i = r();\r\n\t\t\t\t\tif (i) return [V[i-1], read_array_while(() => {\r\n\t\t\t\t\t\tlet v = read_array_while(r);\r\n\t\t\t\t\t\tif (v.length) return v.map(x => x-1);\r\n\t\t\t\t\t})];\r\n\t\t\t\t}));\r\n\t\t\t}*/\r\n\t\t\treturn {N, P, Q, M, R};\r\n\t\t}\r\n\t});\r\n\r\n\t// decode compressed wholes\r\n\tWHOLE_VALID = read_sorted_set();\r\n\tWHOLE_MAP = new Map();\r\n\tlet wholes = read_sorted_array().concat(Array_from(WHOLE_VALID)).sort((a, b) => a-b); // must be sorted\r\n\twholes.forEach((cp, i) => {\r\n\t\tlet d = r(); \r\n\t\tlet w = wholes[i] = d ? wholes[i-d] : {V: [], M: new Map()};\r\n\t\tw.V.push(cp); // add to member set\r\n\t\tif (!WHOLE_VALID.has(cp)) {\r\n\t\t\tWHOLE_MAP.set(cp, w); // register with whole map\r\n\t\t}\r\n\t});\r\n\r\n\t// compute confusable-extent complements\r\n\tfor (let {V, M} of new Set(WHOLE_MAP.values())) {\r\n\t\t// connect all groups that have each whole character\r\n\t\tlet recs = [];\r\n\t\tfor (let cp of V) {\r\n\t\t\tlet gs = GROUPS.filter(g => group_has_cp(g, cp));\r\n\t\t\tlet rec = recs.find(({G}) => gs.some(g => G.has(g)));\r\n\t\t\tif (!rec) {\r\n\t\t\t\trec = {G: new Set(), V: []};\r\n\t\t\t\trecs.push(rec);\r\n\t\t\t}\r\n\t\t\trec.V.push(cp);\r\n\t\t\tgs.forEach(g => rec.G.add(g));\r\n\t\t}\r\n\t\t// per character cache groups which are not a member of the extent\r\n\t\tlet union = recs.flatMap(x => Array_from(x.G));\r\n\t\tfor (let {G, V} of recs) {\r\n\t\t\tlet complement = new Set(union.filter(g => !G.has(g)));\r\n\t\t\tfor (let cp of V) {\r\n\t\t\t\tM.set(cp, complement);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// compute valid set\r\n\tlet union = new Set(); // exists in 1+ groups\r\n\tlet multi = new Set(); // exists in 2+ groups\r\n\tconst add_to_union = cp => union.has(cp) ? multi.add(cp) : union.add(cp);\r\n\tfor (let g of GROUPS) {\r\n\t\tfor (let cp of g.P) add_to_union(cp);\r\n\t\tfor (let cp of g.Q) add_to_union(cp);\r\n\t}\r\n\t// dual purpose WHOLE_MAP: return placeholder if unique non-confusable\r\n\tfor (let cp of union) {\r\n\t\tif (!WHOLE_MAP.has(cp) && !multi.has(cp)) {\r\n\t\t\tWHOLE_MAP.set(cp, UNIQUE_PH);\r\n\t\t}\r\n\t}\r\n\tVALID = new Set(Array_from(union).concat(Array_from(nfd(union)))); // possibly valid\r\n\r\n\t// decode emoji\r\n\t// 20230719: emoji are now fully-expanded to avoid quirk logic \r\n\tEMOJI_LIST = read_trie(r).map(v => Emoji.from(v)).sort(compare_arrays);\r\n\tEMOJI_ROOT = new Map(); // this has approx 7K nodes (2+ per emoji)\r\n\tfor (let cps of EMOJI_LIST) {\r\n\t\t// 20230719: change to *slightly* stricter algorithm which disallows \r\n\t\t// insertion of misplaced FE0F in emoji sequences (matching ENSIP-15)\r\n\t\t// example: beautified [A B] (eg. flag emoji) \r\n\t\t// before: allow: [A FE0F B], error: [A FE0F FE0F B] \r\n\t\t// after: error: both\r\n\t\t// note: this code now matches ENSNormalize.{cs,java} logic\r\n\t\tlet prev = [EMOJI_ROOT];\r\n\t\tfor (let cp of cps) {\r\n\t\t\tlet next = prev.map(node => {\r\n\t\t\t\tlet child = node.get(cp);\r\n\t\t\t\tif (!child) {\r\n\t\t\t\t\t// should this be object? \r\n\t\t\t\t\t// (most have 1-2 items, few have many)\r\n\t\t\t\t\t// 20230719: no, v8 default map is 4?\r\n\t\t\t\t\tchild = new Map();\r\n\t\t\t\t\tnode.set(cp, child);\r\n\t\t\t\t}\r\n\t\t\t\treturn child;\r\n\t\t\t});\r\n\t\t\tif (cp === FE0F) {\r\n\t\t\t\tprev.push(...next); // less than 20 elements\r\n\t\t\t} else {\r\n\t\t\t\tprev = next;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (let x of prev) {\r\n\t\t\tx.V = cps;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// if escaped: {HEX}\r\n// else: \"x\" {HEX}\r\nfunction quoted_cp(cp) {\r\n\treturn (should_escape(cp) ? '' : `${bidi_qq(safe_str_from_cps([cp]))} `) + quote_cp(cp);\r\n}\r\n\r\n// 20230211: some messages can be mixed-directional and result in spillover\r\n// use 200E after a quoted string to force the remainder of a string from \r\n// acquring the direction of the quote\r\n// https://www.w3.org/International/questions/qa-bidi-unicode-controls#exceptions\r\nfunction bidi_qq(s) {\r\n\treturn `\"${s}\"\\u200E`; // strong LTR\r\n}\r\n\r\nfunction check_label_extension(cps) {\r\n\tif (cps.length >= 4 && cps[2] == HYPHEN && cps[3] == HYPHEN) {\r\n\t\tthrow new Error(`invalid label extension: \"${str_from_cps(cps.slice(0, 4))}\"`);\r\n\t}\r\n}\r\nfunction check_leading_underscore(cps) {\r\n\tconst UNDERSCORE = 0x5F;\r\n\tfor (let i = cps.lastIndexOf(UNDERSCORE); i > 0; ) {\r\n\t\tif (cps[--i] !== UNDERSCORE) {\r\n\t\t\tthrow new Error('underscore allowed only at start');\r\n\t\t}\r\n\t}\r\n}\r\n// check that a fenced cp is not leading, trailing, or touching another fenced cp\r\nfunction check_fenced(cps) {\r\n\tlet cp = cps[0];\r\n\tlet prev = FENCED.get(cp);\r\n\tif (prev) throw error_placement(`leading ${prev}`);\r\n\tlet n = cps.length;\r\n\tlet last = -1; // prevents trailing from throwing\r\n\tfor (let i = 1; i < n; i++) {\r\n\t\tcp = cps[i];\r\n\t\tlet match = FENCED.get(cp);\r\n\t\tif (match) {\r\n\t\t\t// since cps[0] isn't fenced, cps[1] cannot throw\r\n\t\t\tif (last == i) throw error_placement(`${prev} + ${match}`);\r\n\t\t\tlast = i + 1;\r\n\t\t\tprev = match;\r\n\t\t}\r\n\t}\r\n\tif (last == n) throw error_placement(`trailing ${prev}`);\r\n}\r\n\r\n// create a safe to print string \r\n// invisibles are escaped\r\n// leading cm uses placeholder\r\n// quoter(cp) => string, eg. 3000 => \"{3000}\"\r\n// note: in html, you'd call this function then replace [<>&] with entities\r\nfunction safe_str_from_cps(cps, quoter = quote_cp) {\r\n\t//if (Number.isInteger(cps)) cps = [cps];\r\n\t//if (!Array.isArray(cps)) throw new TypeError(`expected codepoints`);\r\n\tlet buf = [];\r\n\tif (is_combining_mark(cps[0])) buf.push('◌');\r\n\tlet prev = 0;\r\n\tlet n = cps.length;\r\n\tfor (let i = 0; i < n; i++) {\r\n\t\tlet cp = cps[i];\r\n\t\tif (should_escape(cp)) {\r\n\t\t\tbuf.push(str_from_cps(cps.slice(prev, i)));\r\n\t\t\tbuf.push(quoter(cp));\r\n\t\t\tprev = i + 1;\r\n\t\t}\r\n\t}\r\n\tbuf.push(str_from_cps(cps.slice(prev, n)));\r\n\treturn buf.join('');\r\n}\r\n\r\n// note: set(s) cannot be exposed because they can be modified\r\n// note: Object.freeze() doesn't work\r\nfunction is_combining_mark(cp) {\r\n\tinit();\r\n\treturn CM.has(cp);\r\n}\r\nfunction should_escape(cp) {\r\n\tinit();\r\n\treturn ESCAPE.has(cp);\r\n}\r\n\r\n// return all supported emoji as fully-qualified emoji \r\n// ordered by length then lexicographic \r\nfunction ens_emoji() {\r\n\tinit();\r\n\treturn EMOJI_LIST.map(x => x.slice()); // emoji are exposed so copy\r\n}\r\n\r\nfunction ens_normalize_fragment(frag, decompose) {\r\n\tinit();\r\n\tlet nf = decompose ? nfd : nfc;\r\n\treturn frag.split(STOP_CH).map(label => str_from_cps(tokens_from_str(explode_cp(label), nf, filter_fe0f).flat())).join(STOP_CH);\r\n}\r\n\r\nfunction ens_normalize(name) {\r\n\treturn flatten(split(name, nfc, filter_fe0f));\r\n}\r\n\r\nfunction ens_beautify(name) {\r\n\tlet labels = split(name, nfc, x => x); // emoji not exposed\r\n\tfor (let {type, output, error} of labels) {\r\n\t\tif (error) break; // flatten will throw\r\n\r\n\t\t// replace leading/trailing hyphen\r\n\t\t// 20230121: consider beautifing all or leading/trailing hyphen to unicode variant\r\n\t\t// not exactly the same in every font, but very similar: \"-\" vs \"‐\"\r\n\t\t/*\r\n\t\tconst UNICODE_HYPHEN = 0x2010;\r\n\t\t// maybe this should replace all for visual consistancy?\r\n\t\t// `node tools/reg-count.js regex ^-\\{2,\\}` => 592\r\n\t\t//for (let i = 0; i < output.length; i++) if (output[i] == 0x2D) output[i] = 0x2010;\r\n\t\tif (output[0] == HYPHEN) output[0] = UNICODE_HYPHEN;\r\n\t\tlet end = output.length-1;\r\n\t\tif (output[end] == HYPHEN) output[end] = UNICODE_HYPHEN;\r\n\t\t*/\r\n\t\t// 20230123: WHATWG URL uses \"CheckHyphens\" false\r\n\t\t// https://url.spec.whatwg.org/#idna\r\n\r\n\t\t// update ethereum symbol\r\n\t\t// ξ => Ξ if not greek\r\n\t\tif (type !== 'Greek') { \r\n\t\t\tlet prev = 0;\r\n\t\t\twhile (true) {\r\n\t\t\t\tlet next = output.indexOf(0x3BE, prev);\r\n\t\t\t\tif (next < 0) break;\r\n\t\t\t\toutput[next] = 0x39E; \r\n\t\t\t\tprev = next + 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// 20221213: fixes bidi subdomain issue, but breaks invariant (200E is disallowed)\r\n\t\t// could be fixed with special case for: 2D (.) + 200E (LTR)\r\n\t\t// https://discuss.ens.domains/t/bidi-label-ordering-spoof/15824\r\n\t\t//output.splice(0, 0, 0x200E);\r\n\t}\r\n\treturn flatten(labels);\r\n}\r\n\r\nfunction ens_split(name, preserve_emoji) {\r\n\treturn split(name, nfc, preserve_emoji ? x => x.slice() : filter_fe0f); // emoji are exposed so copy\r\n}\r\n\r\nfunction split(name, nf, ef) {\r\n\tif (!name) return []; // 20230719: empty name allowance\r\n\tinit();\r\n\tlet offset = 0;\r\n\t// https://unicode.org/reports/tr46/#Validity_Criteria\r\n\t// 4.) \"The label must not contain a U+002E ( . ) FULL STOP.\"\r\n\treturn name.split(STOP_CH).map(label => {\r\n\t\tlet input = explode_cp(label);\r\n\t\tlet info = {\r\n\t\t\tinput,\r\n\t\t\toffset, // codepoint, not substring!\r\n\t\t};\r\n\t\toffset += input.length + 1; // + stop\r\n\t\ttry {\r\n\t\t\t// 1.) \"The label must be in Unicode Normalization Form NFC\"\r\n\t\t\tlet tokens = info.tokens = tokens_from_str(input, nf, ef);\r\n\t\t\tlet token_count = tokens.length;\r\n\t\t\tlet type;\r\n\t\t\tif (!token_count) { // the label was effectively empty (could of had ignored characters)\r\n\t\t\t\t//norm = [];\r\n\t\t\t\t//type = 'None'; // use this instead of next match, \"ASCII\"\r\n\t\t\t\t// 20230120: change to strict\r\n\t\t\t\t// https://discuss.ens.domains/t/ens-name-normalization-2nd/14564/59\r\n\t\t\t\tthrow new Error(`empty label`);\r\n\t\t\t} \r\n\t\t\tlet norm = info.output = tokens.flat();\r\n\t\t\tcheck_leading_underscore(norm);\r\n\t\t\tlet emoji = info.emoji = token_count > 1 || tokens[0].is_emoji; // same as: tokens.some(x => x.is_emoji);\r\n\t\t\tif (!emoji && norm.every(cp => cp < 0x80)) { // special case for ascii\r\n\t\t\t\t// 20230123: matches matches WHATWG, see note 3.3\r\n\t\t\t\tcheck_label_extension(norm); // only needed for ascii\r\n\t\t\t\t// cant have fenced\r\n\t\t\t\t// cant have cm\r\n\t\t\t\t// cant have wholes\r\n\t\t\t\t// see derive: \"Fastpath ASCII\"\r\n\t\t\t\ttype = 'ASCII';\r\n\t\t\t} else {\r\n\t\t\t\tlet chars = tokens.flatMap(x => x.is_emoji ? [] : x); // all of the nfc tokens concat together\r\n\t\t\t\tif (!chars.length) { // theres no text, just emoji\r\n\t\t\t\t\ttype = 'Emoji';\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// 5.) \"The label must not begin with a combining mark, that is: General_Category=Mark.\"\r\n\t\t\t\t\tif (CM.has(norm[0])) throw error_placement('leading combining mark');\r\n\t\t\t\t\tfor (let i = 1; i < token_count; i++) { // we've already checked the first token\r\n\t\t\t\t\t\tlet cps = tokens[i];\r\n\t\t\t\t\t\tif (!cps.is_emoji && CM.has(cps[0])) { // every text token has emoji neighbors, eg. EtEEEtEt...\r\n\t\t\t\t\t\t\t// bidi_qq() not needed since emoji is LTR and cps is a CM\r\n\t\t\t\t\t\t\tthrow error_placement(`emoji + combining mark: \"${str_from_cps(tokens[i-1])} + ${safe_str_from_cps([cps[0]])}\"`); \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcheck_fenced(norm);\r\n\t\t\t\t\tlet unique = Array_from(new Set(chars));\r\n\t\t\t\t\tlet [g] = determine_group(unique); // take the first match\r\n\t\t\t\t\t// see derive: \"Matching Groups have Same CM Style\"\r\n\t\t\t\t\t// alternative: could form a hybrid type: Latin/Japanese/...\t\r\n\t\t\t\t\tcheck_group(g, chars); // need text in order\r\n\t\t\t\t\tcheck_whole(g, unique); // only need unique text (order would be required for multiple-char confusables)\r\n\t\t\t\t\ttype = g.N;\r\n\t\t\t\t\t// 20230121: consider exposing restricted flag\r\n\t\t\t\t\t// it's simpler to just check for 'Restricted'\r\n\t\t\t\t\t// or even better: type.endsWith(']')\r\n\t\t\t\t\t//if (g.R) info.restricted = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tinfo.type = type;\r\n\t\t} catch (err) {\r\n\t\t\tinfo.error = err; // use full error object\r\n\t\t}\r\n\t\treturn info;\r\n\t});\r\n}\r\n\r\nfunction check_whole(group, unique) {\r\n\tlet maker;\r\n\tlet shared = [];\r\n\tfor (let cp of unique) {\r\n\t\tlet whole = WHOLE_MAP.get(cp);\r\n\t\tif (whole === UNIQUE_PH) return; // unique, non-confusable\r\n\t\tif (whole) {\r\n\t\t\tlet set = whole.M.get(cp); // groups which have a character that look-like this character\r\n\t\t\tmaker = maker ? maker.filter(g => set.has(g)) : Array_from(set);\r\n\t\t\tif (!maker.length) return; // confusable intersection is empty\r\n\t\t} else {\r\n\t\t\tshared.push(cp); \r\n\t\t}\r\n\t}\r\n\tif (maker) {\r\n\t\t// we have 1+ confusable\r\n\t\t// check if any of the remaining groups\r\n\t\t// contain the shared characters too\r\n\t\tfor (let g of maker) {\r\n\t\t\tif (shared.every(cp => group_has_cp(g, cp))) {\r\n\t\t\t\tthrow new Error(`whole-script confusable: ${group.N}/${g.N}`);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// assumption: unique.size > 0\r\n// returns list of matching groups\r\nfunction determine_group(unique) {\r\n\tlet groups = GROUPS;\r\n\tfor (let cp of unique) {\r\n\t\t// note: we need to dodge CM that are whitelisted\r\n\t\t// but that code isn't currently necessary\r\n\t\tlet gs = groups.filter(g => group_has_cp(g, cp));\r\n\t\tif (!gs.length) {\r\n\t\t\tif (!GROUPS.some(g => group_has_cp(g, cp))) { \r\n\t\t\t\t// the character was composed of valid parts\r\n\t\t\t\t// but it's NFC form is invalid\r\n\t\t\t\t// 20230716: change to more exact statement, see: ENSNormalize.{cs,java}\r\n\t\t\t\t// note: this doesn't have to be a composition\r\n\t\t\t\t// 20230720: change to full check\r\n\t\t\t\tthrow error_disallowed(cp); // this should be rare\r\n\t\t\t} else {\r\n\t\t\t\t// there is no group that contains all these characters\r\n\t\t\t\t// throw using the highest priority group that matched\r\n\t\t\t\t// https://www.unicode.org/reports/tr39/#mixed_script_confusables\r\n\t\t\t\tthrow error_group_member(groups[0], cp);\r\n\t\t\t}\r\n\t\t}\r\n\t\tgroups = gs;\r\n\t\tif (gs.length == 1) break; // there is only one group left\r\n\t}\r\n\t// there are at least 1 group(s) with all of these characters\r\n\treturn groups;\r\n}\r\n\r\n// throw on first error\r\nfunction flatten(split) {\r\n\treturn split.map(({input, error, output}) => {\r\n\t\tif (error) {\r\n\t\t\t// don't print label again if just a single label\r\n\t\t\tlet msg = error.message;\r\n\t\t\t// bidi_qq() only necessary if msg is digits\r\n\t\t\tthrow new Error(split.length == 1 ? msg : `Invalid label ${bidi_qq(safe_str_from_cps(input))}: ${msg}`); \r\n\t\t}\r\n\t\treturn str_from_cps(output);\r\n\t}).join(STOP_CH);\r\n}\r\n\r\nfunction error_disallowed(cp) {\r\n\t// TODO: add cp to error?\r\n\treturn new Error(`disallowed character: ${quoted_cp(cp)}`); \r\n}\r\nfunction error_group_member(g, cp) {\r\n\tlet quoted = quoted_cp(cp);\r\n\tlet gg = GROUPS.find(g => g.P.has(cp)); // only check primary\r\n\tif (gg) {\r\n\t\tquoted = `${gg.N} ${quoted}`;\r\n\t}\r\n\treturn new Error(`illegal mixture: ${g.N} + ${quoted}`);\r\n}\r\nfunction error_placement(where) {\r\n\treturn new Error(`illegal placement: ${where}`);\r\n}\r\n\r\n// assumption: cps.length > 0\r\n// assumption: cps[0] isn't a CM\r\n// assumption: the previous character isn't an emoji\r\nfunction check_group(g, cps) {\r\n\tfor (let cp of cps) {\r\n\t\tif (!group_has_cp(g, cp)) {\r\n\t\t\t// for whitelisted scripts, this will throw illegal mixture on invalid cm, eg. \"e{300}{300}\"\r\n\t\t\t// at the moment, it's unnecessary to introduce an extra error type\r\n\t\t\t// until there exists a whitelisted multi-character\r\n\t\t\t// eg. if (M < 0 && is_combining_mark(cp)) { ... }\r\n\t\t\t// there are 3 cases:\r\n\t\t\t// 1. illegal cm for wrong group => mixture error\r\n\t\t\t// 2. illegal cm for same group => cm error\r\n\t\t\t// requires set of whitelist cm per group: \r\n\t\t\t// eg. new Set([...g.P, ...g.Q].flatMap(nfc).filter(cp => CM.has(cp)))\r\n\t\t\t// 3. wrong group => mixture error\r\n\t\t\tthrow error_group_member(g, cp);\r\n\t\t}\r\n\t}\r\n\t//if (M >= 0) { // we have a known fixed cm count\r\n\tif (g.M) { // we need to check for NSM\r\n\t\tlet decomposed = nfd(cps);\r\n\t\tfor (let i = 1, e = decomposed.length; i < e; i++) { // see: assumption\r\n\t\t\t// 20230210: bugfix: using cps instead of decomposed h/t Carbon225\r\n\t\t\t/*\r\n\t\t\tif (CM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\twhile (j < e && CM.has(decomposed[j])) j++;\r\n\t\t\t\tif (j - i > M) {\r\n\t\t\t\t\tthrow new Error(`too many combining marks: ${g.N} ${bidi_qq(str_from_cps(decomposed.slice(i-1, j)))} (${j-i}/${M})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t\t// 20230217: switch to NSM counting\r\n\t\t\t// https://www.unicode.org/reports/tr39/#Optional_Detection\r\n\t\t\tif (NSM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\tfor (let cp; j < e && NSM.has(cp = decomposed[j]); j++) {\r\n\t\t\t\t\t// a. Forbid sequences of the same nonspacing mark.\r\n\t\t\t\t\tfor (let k = i; k < j; k++) { // O(n^2) but n < 100\r\n\t\t\t\t\t\tif (decomposed[k] == cp) {\r\n\t\t\t\t\t\t\tthrow new Error(`duplicate non-spacing marks: ${quoted_cp(cp)}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// parse to end so we have full nsm count\r\n\t\t\t\t// b. Forbid sequences of more than 4 nonspacing marks (gc=Mn or gc=Me).\r\n\t\t\t\tif (j - i > NSM_MAX) {\r\n\t\t\t\t\t// note: this slice starts with a base char or spacing-mark cm\r\n\t\t\t\t\tthrow new Error(`excessive non-spacing marks: ${bidi_qq(safe_str_from_cps(decomposed.slice(i-1, j)))} (${j-i}/${NSM_MAX})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// *** this code currently isn't needed ***\r\n\t/*\r\n\tlet cm_whitelist = M instanceof Map;\r\n\tfor (let i = 0, e = cps.length; i < e; ) {\r\n\t\tlet cp = cps[i++];\r\n\t\tlet seqs = cm_whitelist && M.get(cp);\r\n\t\tif (seqs) { \r\n\t\t\t// list of codepoints that can follow\r\n\t\t\t// if this exists, this will always be 1+\r\n\t\t\tlet j = i;\r\n\t\t\twhile (j < e && CM.has(cps[j])) j++;\r\n\t\t\tlet cms = cps.slice(i, j);\r\n\t\t\tlet match = seqs.find(seq => !compare_arrays(seq, cms));\r\n\t\t\tif (!match) throw new Error(`disallowed combining mark sequence: \"${safe_str_from_cps([cp, ...cms])}\"`);\r\n\t\t\ti = j;\r\n\t\t} else if (!V.has(cp)) {\r\n\t\t\t// https://www.unicode.org/reports/tr39/#mixed_script_confusables\r\n\t\t\tlet quoted = quoted_cp(cp);\r\n\t\t\tfor (let cp of cps) {\r\n\t\t\t\tlet u = UNIQUE.get(cp);\r\n\t\t\t\tif (u && u !== g) {\r\n\t\t\t\t\t// if both scripts are restricted this error is confusing\r\n\t\t\t\t\t// because we don't differentiate RestrictedA from RestrictedB \r\n\t\t\t\t\tif (!u.R) quoted = `${quoted} is ${u.N}`;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthrow new Error(`disallowed ${g.N} character: ${quoted}`);\r\n\t\t\t//throw new Error(`disallowed character: ${quoted} (expected ${g.N})`);\r\n\t\t\t//throw new Error(`${g.N} does not allow: ${quoted}`);\r\n\t\t}\r\n\t}\r\n\tif (!cm_whitelist) {\r\n\t\tlet decomposed = nfd(cps);\r\n\t\tfor (let i = 1, e = decomposed.length; i < e; i++) { // we know it can't be cm leading\r\n\t\t\tif (CM.has(decomposed[i])) {\r\n\t\t\t\tlet j = i + 1;\r\n\t\t\t\twhile (j < e && CM.has(decomposed[j])) j++;\r\n\t\t\t\tif (j - i > M) {\r\n\t\t\t\t\tthrow new Error(`too many combining marks: \"${str_from_cps(decomposed.slice(i-1, j))}\" (${j-i}/${M})`);\r\n\t\t\t\t}\r\n\t\t\t\ti = j;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t*/\r\n}\r\n\r\n// given a list of codepoints\r\n// returns a list of lists, where emoji are a fully-qualified (as Array subclass)\r\n// eg. explode_cp(\"abc💩d\") => [[61, 62, 63], Emoji[1F4A9, FE0F], [64]]\r\n// 20230818: rename for 'process' name collision h/t Javarome\r\n// https://github.com/adraffy/ens-normalize.js/issues/23\r\nfunction tokens_from_str(input, nf, ef) {\r\n\tlet ret = [];\r\n\tlet chars = [];\r\n\tinput = input.slice().reverse(); // flip so we can pop\r\n\twhile (input.length) {\r\n\t\tlet emoji = consume_emoji_reversed(input);\r\n\t\tif (emoji) {\r\n\t\t\tif (chars.length) {\r\n\t\t\t\tret.push(nf(chars));\r\n\t\t\t\tchars = [];\r\n\t\t\t}\r\n\t\t\tret.push(ef(emoji));\r\n\t\t} else {\r\n\t\t\tlet cp = input.pop();\r\n\t\t\tif (VALID.has(cp)) {\r\n\t\t\t\tchars.push(cp);\r\n\t\t\t} else {\r\n\t\t\t\tlet cps = MAPPED.get(cp);\r\n\t\t\t\tif (cps) {\r\n\t\t\t\t\tchars.push(...cps); // less than 10 elements\r\n\t\t\t\t} else if (!IGNORED.has(cp)) {\r\n\t\t\t\t\t// 20230912: unicode 15.1 changed the order of processing such that\r\n\t\t\t\t\t// disallowed parts are only rejected after NFC\r\n\t\t\t\t\t// https://unicode.org/reports/tr46/#Validity_Criteria\r\n\t\t\t\t\t// this doesn't impact normalization as of today\r\n\t\t\t\t\t// technically, this error can be removed as the group logic will apply similar logic\r\n\t\t\t\t\t// however the error type might be less clear\r\n\t\t\t\t\tthrow error_disallowed(cp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (chars.length) {\r\n\t\tret.push(nf(chars));\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction filter_fe0f(cps) {\r\n\treturn cps.filter(cp => cp != FE0F);\r\n}\r\n\r\n// given array of codepoints\r\n// returns the longest valid emoji sequence (or undefined if no match)\r\n// *MUTATES* the supplied array\r\n// disallows interleaved ignored characters\r\n// fills (optional) eaten array with matched codepoints\r\nfunction consume_emoji_reversed(cps, eaten) {\r\n\tlet node = EMOJI_ROOT;\r\n\tlet emoji;\r\n\tlet pos = cps.length;\r\n\twhile (pos) {\r\n\t\tnode = node.get(cps[--pos]);\r\n\t\tif (!node) break;\r\n\t\tlet {V} = node;\r\n\t\tif (V) { // this is a valid emoji (so far)\r\n\t\t\temoji = V;\r\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // (optional) copy input, used for ens_tokenize()\r\n\t\t\tcps.length = pos; // truncate\r\n\t\t}\r\n\t}\r\n\treturn emoji;\r\n}\r\n\r\n// ************************************************************\r\n// tokenizer \r\n\r\nconst TY_VALID = 'valid';\r\nconst TY_MAPPED = 'mapped';\r\nconst TY_IGNORED = 'ignored';\r\nconst TY_DISALLOWED = 'disallowed';\r\nconst TY_EMOJI = 'emoji';\r\nconst TY_NFC = 'nfc';\r\nconst TY_STOP = 'stop';\r\n\r\nfunction ens_tokenize(name, {\r\n\tnf = true, // collapse unnormalized runs into a single token\r\n} = {}) {\r\n\tinit();\r\n\tlet input = explode_cp(name).reverse();\r\n\tlet eaten = [];\r\n\tlet tokens = [];\r\n\twhile (input.length) {\r\n\t\tlet emoji = consume_emoji_reversed(input, eaten);\r\n\t\tif (emoji) {\r\n\t\t\ttokens.push({\r\n\t\t\t\ttype: TY_EMOJI,\r\n\t\t\t\temoji: emoji.slice(), // copy emoji\r\n\t\t\t\tinput: eaten,\r\n\t\t\t\tcps: filter_fe0f(emoji)\r\n\t\t\t});\r\n\t\t\teaten = []; // reset buffer\r\n\t\t} else {\r\n\t\t\tlet cp = input.pop();\r\n\t\t\tif (cp == STOP) {\r\n\t\t\t\ttokens.push({type: TY_STOP, cp});\r\n\t\t\t} else if (VALID.has(cp)) {\r\n\t\t\t\ttokens.push({type: TY_VALID, cps: [cp]});\r\n\t\t\t} else if (IGNORED.has(cp)) {\r\n\t\t\t\ttokens.push({type: TY_IGNORED, cp});\r\n\t\t\t} else {\r\n\t\t\t\tlet cps = MAPPED.get(cp);\r\n\t\t\t\tif (cps) {\r\n\t\t\t\t\ttokens.push({type: TY_MAPPED, cp, cps: cps.slice()});\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttokens.push({type: TY_DISALLOWED, cp});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (nf) {\r\n\t\tfor (let i = 0, start = -1; i < tokens.length; i++) {\r\n\t\t\tlet token = tokens[i];\r\n\t\t\tif (is_valid_or_mapped(token.type)) {\r\n\t\t\t\tif (requires_check(token.cps)) { // normalization might be needed\r\n\t\t\t\t\tlet end = i + 1;\r\n\t\t\t\t\tfor (let pos = end; pos < tokens.length; pos++) { // find adjacent text\r\n\t\t\t\t\t\tlet {type, cps} = tokens[pos];\r\n\t\t\t\t\t\tif (is_valid_or_mapped(type)) {\r\n\t\t\t\t\t\t\tif (!requires_check(cps)) break;\r\n\t\t\t\t\t\t\tend = pos + 1;\r\n\t\t\t\t\t\t} else if (type !== TY_IGNORED) { // || type !== TY_DISALLOWED) { \r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (start < 0) start = i;\r\n\t\t\t\t\tlet slice = tokens.slice(start, end);\r\n\t\t\t\t\tlet cps0 = slice.flatMap(x => is_valid_or_mapped(x.type) ? x.cps : []); // strip junk tokens\r\n\t\t\t\t\tlet cps = nfc(cps0);\r\n\t\t\t\t\tif (compare_arrays(cps, cps0)) { // bundle into an nfc token\r\n\t\t\t\t\t\ttokens.splice(start, end - start, {\r\n\t\t\t\t\t\t\ttype: TY_NFC, \r\n\t\t\t\t\t\t\tinput: cps0, // there are 3 states: tokens0 ==(process)=> input ==(nfc)=> tokens/cps\r\n\t\t\t\t\t\t\tcps, \r\n\t\t\t\t\t\t\ttokens0: collapse_valid_tokens(slice),\r\n\t\t\t\t\t\t\ttokens: ens_tokenize(str_from_cps(cps), {nf: false})\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\ti = start;\r\n\t\t\t\t\t} else { \r\n\t\t\t\t\t\ti = end - 1; // skip to end of slice\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart = -1; // reset\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstart = i; // remember last\r\n\t\t\t\t}\r\n\t\t\t} else if (token.type !== TY_IGNORED) { // 20221024: is this correct?\r\n\t\t\t\tstart = -1; // reset\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn collapse_valid_tokens(tokens);\r\n}\r\n\r\nfunction is_valid_or_mapped(type) {\r\n\treturn type == TY_VALID || type == TY_MAPPED;\r\n}\r\n\r\nfunction requires_check(cps) {\r\n\treturn cps.some(cp => NFC_CHECK.has(cp));\r\n}\r\n\r\nfunction collapse_valid_tokens(tokens) {\r\n\tfor (let i = 0; i < tokens.length; i++) {\r\n\t\tif (tokens[i].type == TY_VALID) {\r\n\t\t\tlet j = i + 1;\r\n\t\t\twhile (j < tokens.length && tokens[j].type == TY_VALID) j++;\r\n\t\t\ttokens.splice(i, j - i, {type: TY_VALID, cps: tokens.slice(i, j).flatMap(x => x.cps)});\r\n\t\t}\r\n\t}\r\n\treturn tokens;\r\n}\n\nexport { ens_beautify, ens_emoji, ens_normalize, ens_normalize_fragment, ens_split, ens_tokenize, is_combining_mark, nfc, nfd, safe_str_from_cps, should_escape };\n","import { ens_normalize } from '@adraffy/ens-normalize';\n/**\n * @description Normalizes ENS name according to ENSIP-15.\n *\n * @example\n * normalize('wevm.eth')\n * 'wevm.eth'\n *\n * @see https://docs.ens.domains/contract-api-reference/name-processing#normalising-names\n * @see https://github.com/ensdomains/docs/blob/9edf9443de4333a0ea7ec658a870672d5d180d53/ens-improvement-proposals/ensip-15-normalization-standard.md\n */\nexport function normalize(name) {\n return ens_normalize(name);\n}\n//# sourceMappingURL=normalize.js.map","import { etherUnits } from '../../constants/unit.js';\nimport { parseUnits } from './parseUnits.js';\n/**\n * Converts a string representation of ether to numerical wei.\n *\n * - Docs: https://viem.sh/docs/utilities/parseEther\n *\n * @example\n * import { parseEther } from 'viem'\n *\n * parseEther('420')\n * // 420000000000000000000n\n */\nexport function parseEther(ether, unit = 'wei') {\n return parseUnits(ether, etherUnits[unit]);\n}\n//# sourceMappingURL=parseEther.js.map","import {} from '@tanstack/query-core';\nimport { getBalance, } from '../actions/getBalance.js';\nimport {} from '../createConfig.js';\nimport { filterQueryOptions } from './utils.js';\nexport function getBalanceQueryOptions(config, options = {}) {\n return {\n async queryFn({ queryKey }) {\n const { address, scopeKey: _, ...parameters } = queryKey[1];\n if (!address)\n throw new Error('address is required');\n const balance = await getBalance(config, {\n ...parameters,\n address,\n });\n return balance ?? null;\n },\n queryKey: getBalanceQueryKey(options),\n };\n}\nexport function getBalanceQueryKey(options = {}) {\n return ['balance', filterQueryOptions(options)];\n}\n//# sourceMappingURL=getBalance.js.map","'use client';\nimport {} from '@wagmi/core';\nimport { getBalanceQueryOptions, } from '@wagmi/core/query';\nimport { useQuery } from '../utils/query.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useBalance */\nexport function useBalance(parameters = {}) {\n const { address, query = {} } = parameters;\n const config = useConfig(parameters);\n const chainId = useChainId({ config });\n const options = getBalanceQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n const enabled = Boolean(address && (query.enabled ?? true));\n return useQuery({ ...query, ...options, enabled });\n}\n//# sourceMappingURL=useBalance.js.map","import {} from '@tanstack/query-core';\nimport {} from 'viem';\nimport { readContract, } from '../actions/readContract.js';\nimport {} from '../createConfig.js';\nimport {} from '../types/properties.js';\nimport {} from '../types/utils.js';\nimport { filterQueryOptions } from './utils.js';\nexport function readContractQueryOptions(config, options = {}) {\n return {\n // TODO: Support `signal` once Viem actions allow passthrough\n // https://tkdodo.eu/blog/why-you-want-react-query#bonus-cancellation\n async queryFn({ queryKey }) {\n const abi = options.abi;\n if (!abi)\n throw new Error('abi is required');\n const { address, functionName, scopeKey: _, ...parameters } = queryKey[1];\n if (!address)\n throw new Error('address is required');\n if (!functionName)\n throw new Error('functionName is required');\n const args = parameters.args;\n return readContract(config, {\n abi,\n address,\n functionName,\n args,\n ...parameters,\n });\n },\n queryKey: readContractQueryKey(options),\n };\n}\nexport function readContractQueryKey(options = {}) {\n const { abi: _, ...rest } = options;\n return ['readContract', filterQueryOptions(rest)];\n}\n//# sourceMappingURL=readContract.js.map","'use client';\nimport {} from '@wagmi/core';\nimport {} from '@wagmi/core/internal';\nimport { readContractQueryOptions, } from '@wagmi/core/query';\nimport {} from 'viem';\nimport { structuralSharing, useQuery, } from '../utils/query.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useReadContract */\nexport function useReadContract(parameters = {}) {\n const { abi, address, functionName, query = {} } = parameters;\n const config = useConfig(parameters);\n const chainId = useChainId({ config });\n const options = readContractQueryOptions(config, { ...parameters, chainId: parameters.chainId ?? chainId });\n const enabled = Boolean(address && abi && functionName && (query.enabled ?? true));\n return useQuery({\n ...query,\n ...options,\n enabled,\n structuralSharing: query.structuralSharing ?? structuralSharing,\n });\n}\n//# sourceMappingURL=useReadContract.js.map","import {} from '@tanstack/query-core';\nimport {} from 'viem';\nimport { readContracts, } from '../actions/readContracts.js';\nimport {} from '../createConfig.js';\nimport {} from '../types/properties.js';\nimport { filterQueryOptions } from './utils.js';\nexport function readContractsQueryOptions(config, options = {}) {\n return {\n async queryFn({ queryKey }) {\n const contracts = [];\n const length = queryKey[1].contracts.length;\n for (let i = 0; i < length; i++) {\n const contract = queryKey[1].contracts[i];\n const abi = (options.contracts?.[i]).abi;\n contracts.push({ ...contract, abi });\n }\n const { scopeKey: _, ...parameters } = queryKey[1];\n return readContracts(config, {\n ...parameters,\n contracts,\n });\n },\n queryKey: readContractsQueryKey(options),\n };\n}\nexport function readContractsQueryKey(options = {}) {\n const contracts = [];\n for (const contract of (options.contracts ??\n [])) {\n const { abi: _, ...rest } = contract;\n contracts.push({ ...rest, chainId: rest.chainId ?? options.chainId });\n }\n return [\n 'readContracts',\n filterQueryOptions({ ...options, contracts }),\n ];\n}\n//# sourceMappingURL=readContracts.js.map","'use client';\nimport {} from '@wagmi/core';\nimport {} from '@wagmi/core/internal';\nimport { readContractsQueryOptions, } from '@wagmi/core/query';\nimport { useMemo } from 'react';\nimport {} from 'viem';\nimport {} from '../types/properties.js';\nimport { structuralSharing, useQuery, } from '../utils/query.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useReadContracts */\nexport function useReadContracts(parameters = {}) {\n const { contracts = [], query = {} } = parameters;\n const config = useConfig(parameters);\n const chainId = useChainId({ config });\n const options = readContractsQueryOptions(config, { ...parameters, chainId });\n const enabled = useMemo(() => {\n let isContractsValid = false;\n for (const contract of contracts) {\n const { abi, address, functionName } = contract;\n if (!abi || !address || !functionName) {\n isContractsValid = false;\n break;\n }\n isContractsValid = true;\n }\n return Boolean(isContractsValid && (query.enabled ?? true));\n }, [contracts, query.enabled]);\n return useQuery({\n ...options,\n ...query,\n enabled,\n structuralSharing: query.structuralSharing ?? structuralSharing,\n });\n}\n//# sourceMappingURL=useReadContracts.js.map","import {} from '@tanstack/query-core';\nimport { switchChain, } from '../actions/switchChain.js';\nimport {} from '../createConfig.js';\nimport {} from '../types/utils.js';\nexport function switchChainMutationOptions(config) {\n return {\n mutationFn(variables) {\n return switchChain(config, variables);\n },\n mutationKey: ['switchChain'],\n };\n}\n//# sourceMappingURL=switchChain.js.map","import {} from 'viem';\nimport {} from '../createConfig.js';\nimport { deepEqual } from '../utils/deepEqual.js';\nlet previousChains = [];\n/** https://wagmi.sh/core/api/actions/getChains */\nexport function getChains(config) {\n const chains = config.chains;\n if (deepEqual(previousChains, chains))\n return previousChains;\n previousChains = chains;\n return chains;\n}\n//# sourceMappingURL=getChains.js.map","import {} from '../createConfig.js';\nimport {} from './getChains.js';\n/**\n * @internal\n * We don't expose this because as far as consumers know, you can't chainge (lol) `config.chains` at runtime.\n * Setting `config.chains` via `config._internal.chains.setState(...)` is an extremely advanced use case that's not worth documenting or supporting in the public API at this time.\n */\nexport function watchChains(config, parameters) {\n const { onChange } = parameters;\n return config._internal.chains.subscribe((chains, prevChains) => {\n onChange(chains, prevChains);\n });\n}\n//# sourceMappingURL=watchChains.js.map","'use client';\nimport { getChains, } from '@wagmi/core';\nimport { watchChains } from '@wagmi/core/internal';\nimport { useSyncExternalStore } from 'react';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useChains */\nexport function useChains(parameters = {}) {\n const config = useConfig(parameters);\n return useSyncExternalStore((onChange) => watchChains(config, { onChange }), () => getChains(config), () => getChains(config));\n}\n//# sourceMappingURL=useChains.js.map","'use client';\nimport { useMutation } from '@tanstack/react-query';\nimport {} from '@wagmi/core';\nimport {} from '@wagmi/core/internal';\nimport { switchChainMutationOptions, } from '@wagmi/core/query';\nimport {} from '../types/properties.js';\nimport {} from '../utils/query.js';\nimport { useChains } from './useChains.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useSwitchChain */\nexport function useSwitchChain(parameters = {}) {\n const { mutation } = parameters;\n const config = useConfig(parameters);\n const mutationOptions = switchChainMutationOptions(config);\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n });\n return {\n ...result,\n chains: useChains({ config }),\n switchChain: mutate,\n switchChainAsync: mutateAsync,\n };\n}\n//# sourceMappingURL=useSwitchChain.js.map","import {} from '@tanstack/query-core';\nimport { waitForTransactionReceipt, } from '../actions/waitForTransactionReceipt.js';\nimport {} from '../createConfig.js';\nimport {} from '../types/properties.js';\nimport {} from '../types/utils.js';\nimport { filterQueryOptions } from './utils.js';\nexport function waitForTransactionReceiptQueryOptions(config, options = {}) {\n return {\n async queryFn({ queryKey }) {\n const { hash, ...parameters } = queryKey[1];\n if (!hash)\n throw new Error('hash is required');\n return waitForTransactionReceipt(config, {\n ...parameters,\n onReplaced: options.onReplaced,\n hash,\n });\n },\n queryKey: waitForTransactionReceiptQueryKey(options),\n };\n}\nexport function waitForTransactionReceiptQueryKey(options = {}) {\n const { onReplaced: _, ...rest } = options;\n return ['waitForTransactionReceipt', filterQueryOptions(rest)];\n}\n//# sourceMappingURL=waitForTransactionReceipt.js.map","'use client';\nimport {} from '@wagmi/core/internal';\nimport { waitForTransactionReceiptQueryOptions, } from '@wagmi/core/query';\nimport { useQuery } from '../utils/query.js';\nimport { useChainId } from './useChainId.js';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useWaitForTransactionReceipt */\nexport function useWaitForTransactionReceipt(parameters = {}) {\n const { hash, query = {} } = parameters;\n const config = useConfig(parameters);\n const chainId = useChainId({ config });\n const options = waitForTransactionReceiptQueryOptions(config, {\n ...parameters,\n chainId: parameters.chainId ?? chainId,\n });\n const enabled = Boolean(hash && (query.enabled ?? true));\n return useQuery({\n ...query,\n ...options,\n enabled,\n });\n}\n//# sourceMappingURL=useWaitForTransactionReceipt.js.map","import {} from '@tanstack/query-core';\nimport {} from 'viem';\nimport { writeContract, } from '../actions/writeContract.js';\nimport {} from '../createConfig.js';\nimport {} from '../types/utils.js';\nexport function writeContractMutationOptions(config) {\n return {\n mutationFn(variables) {\n return writeContract(config, variables);\n },\n mutationKey: ['writeContract'],\n };\n}\n//# sourceMappingURL=writeContract.js.map","'use client';\nimport { useMutation } from '@tanstack/react-query';\nimport { writeContractMutationOptions, } from '@wagmi/core/query';\nimport { useConfig } from './useConfig.js';\n/** https://wagmi.sh/react/api/hooks/useWriteContract */\nexport function useWriteContract(parameters = {}) {\n const { mutation } = parameters;\n const config = useConfig(parameters);\n const mutationOptions = writeContractMutationOptions(config);\n const { mutate, mutateAsync, ...result } = useMutation({\n ...mutation,\n ...mutationOptions,\n });\n return {\n ...result,\n writeContract: mutate,\n writeContractAsync: mutateAsync,\n };\n}\n//# sourceMappingURL=useWriteContract.js.map"],"names":["getRandomValues","esm_browser_native","randomUUID","crypto","bind","rnds8","Uint8Array","byteToHex","i","push","toString","slice","esm_browser_v4","options","buf","offset","rnds","random","rng","unsafeStringify","arr","ButtonGroupProvider","useButtonGroup","dist","k","strict","name","ButtonIcon","props","children","className","rest","_children","react","isValidElement","cloneElement","focusable","_className","shared_utils_dist","cx","jsx_runtime","jsx","chunk_ZHQNHOQS","m","span","display","alignSelf","flexShrink","displayName","ButtonSpinner","label","placement","spacing","chunk_5PH6ULNP","$","color","width","height","__css","marginProp","spinnerStyles","useMemo","alignItems","position","fontSize","lineHeight","div","Button","chunk_ZJJGQIVY","G","ref","group","styles","chunk_DMO4EI7P","mq","isDisabled","isLoading","isActive","leftIcon","rightIcon","loadingText","iconSpacing","type","spinner","spinnerPlacement","as","styled_system_dist","Lr","buttonStyles","_focus","zIndex","appearance","justifyContent","userSelect","whiteSpace","verticalAlign","outline","_ref","defaultType","useButtonType","value","isButton","setIsButton","useState","useCallback","node","tagName","contentProps","jsxs","button","useMergeRefs","refs","mergeRefs","forEach","assignRef","current","error","PB","disabled","opacity","ButtonContent","Fragment","marginEnd","marginStart","o","t","start_transition_a","startTransition","Q","Open","Closed","V","ToggleDisclosure","CloseDisclosure","SetButtonId","SetPanelId","LinkPanel","UnlinkPanel","Y","e","disclosureState","match","E","linkedPanel","n","buttonId","panelId","M","createContext","_","useContext","Error","captureStackTrace","v","F","ee","te","se","render","AN","RenderStrategy","Static","Ae","Object","assign","yV","defaultOpen","f","useRef","l","use_sync_refs","T","h","u","d","s","useReducer","buttonRef","panelRef","c","a","D","p","use_event","z","y","owner","r","HTMLElement","getElementById","focus","P","close","open","createElement","Provider","open_closed","up","ZM","sY","ourProps","theirProps","slot","defaultTag","use_id","id","Y2","useEffect","key","keyboard","R","Space","Enter","preventDefault","stopPropagation","bugs","currentTarget","C","use_resolve_button_type","onKeyDown","onClick","onKeyUp","Panel","K","oJ","features","visible","difference","array1","array2","filter","includes","x","QueriesObserver","subscribable","client","result","queries","observers","combinedResult","lastCombine","lastResult","_options","setQueries","onSubscribe","listeners","size","observer","subscribe","onUpdate","onUnsubscribe","destroy","Set","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","findMatchingObservers","setOptions","defaultedQueryOptions","newObservers","map","newResult","getCurrentResult","hasIndexChange","some","index","length","hasListeners","notify","getQueries","getCurrentQuery","getObservers","getOptimisticResult","combine","matches","combineResult","observerResult","notifyOnChangeProps","trackResult","trackProp","accessedProp","input","utils","Q$","prevObserversMap","Map","queryHash","defaultQueryOptions","matchingObservers","flatMap","get","defaultedOptions","matchedQueryHashes","unmatchedQueries","has","getObserver","currentObserver","find","modern_queryObserver","newOrReusedObservers","concat","sort","b","indexOf","replaceAt","array","copy","listener","useQueries","queryClient","QueryClientProvider","NL","isRestoring","modern_isRestoring","S","errorResetBoundary","QueryErrorResetBoundary","defaultedQueries","opts","_optimisticResults","suspense","Fb","query","errorBoundaryUtils","pf","JN","optimisticResult","getCombinedResult","useSyncExternalStore","batchCalls","onStoreChange","suspensePromises","shouldAtLeastOneSuspend","SB","queryObserver","j8","Z$","Promise","all","firstSingleResultWhichShouldThrow","KJ","throwOnError","getQueryCache","getEnsAddress","blockNumber","blockTag","coinType","gatewayUrls","universalResolverAddress","universalResolverAddress_","chain","getChainContractAddress","L","contract","functionData","encodeFunctionData","abi","abis","X$","functionName","args","namehash","BigInt","readContractParameters","address","k3","toHex","NC","packetToBytes","readContractAction","getAction","readContract","res","decodeFunctionResult","undefined","data","trim","err","errors","getEnsAddress_getEnsAddress","config","parameters","chainId","getClient","action","utils_getAction","simulateContract","dataSuffix","callRequest","account","parseAccount","calldata","call","RE","replace","to","minimizedAbi","abiItem","request","getContractError","docsPath","sender","simulateContract_simulateContract","connector","connectorClient","getConnectorClient","__mode","writeContract_writeContract","activeConnector","getAccount","supportsSimulation","simulateRequest","writeContract","SHIFTED_RANK","EXCLUSIONS","DECOMP","RECOMP","MAPPED","IGNORED","CM","NSM","ESCAPE","GROUPS","WHOLE_VALID","WHOLE_MAP","VALID","EMOJI_LIST","EMOJI_ROOT","FENCED","read_compressed_payload","pos","decode_arithmetic","bytes","u16","symbol_count","total","acc","skip","pos_payload","read_width","read_buffer","read_bit","MASK","FULL","register","symbols","low","range","Math","floor","start","end","mid","HALF","unsafe_atob","lookup","charCodeAt","ret","carry","read_sorted","next","prev","read_sorted_arrays","read_array_while","read_mapped","w","read_linear_table","dx","dy","vN","ys","Array","fill","j","j_dy","flat","read_transposed","read_deltas","quote_cp","cp","toUpperCase","padStart","str_from_cps","cps","len","String","fromCodePoint","join","compare_arrays","unpack_cc","packed","unpack_cp","is_hangul","S0","decomposed","init$1","bucket","set","reverse","check_order","add","cc","s_index","l_index","V_COUNT","v_index","t_index","L0","V0","T0","mapped","pop","prev_cc","tmp","nfc","composed_from_decomposed","stack","prev_cp","composed","compose_pair","recomp","Array_from","from","group_has_cp","g","Emoji","is_emoji","init","sorted","read_sorted_array","read_sorted_set","chunks","unrestricted","read_chunked","N","wholes","values","recs","gs","rec","union","complement","multi","add_to_union","read_trie","expand","B","saved","br","decode","child","quoted_cp","should_escape","bidi_qq","safe_str_from_cps","quoter","error_disallowed","error_group_member","quoted","gg","error_placement","where","filter_fe0f","normalize","split","nf","ef","explode_cp","codePointAt","info","tokens","tokens_from_str","chars","emoji","consume_emoji_reversed","eaten","token_count","norm","output","check_leading_underscore","lastIndexOf","every","check_label_extension","check_fenced","last","unique","determine_group","groups","check_group","check_whole","maker","shared","whole","msg","message","parseEther","ether","unit","_parseUnits_js__WEBPACK_IMPORTED_MODULE_0__","_constants_unit_js__WEBPACK_IMPORTED_MODULE_1__","ez","useBalance","useConfig","Z","useChainId","getBalanceQueryOptions","queryFn","queryKey","scopeKey","balance","getBalance","getBalanceQueryKey","O","enabled","Boolean","utils_query","aM","useReadContract","readContractQueryOptions","readContractQueryKey","structuralSharing","useReadContracts","contracts","readContractsQueryOptions","readContracts","J","readContractsQueryKey","isContractsValid","previousChains","getChains","chains","deepEqual","useSwitchChain","mutation","mutate","mutateAsync","useMutation","mutationFn","switchChain","variables","mutationKey","useChains","watchChains","onChange","_internal","prevChains","switchChainAsync","useWaitForTransactionReceipt","hash","waitForTransactionReceiptQueryOptions","waitForTransactionReceipt","onReplaced","waitForTransactionReceiptQueryKey","useWriteContract","mutationOptions","writeContractAsync"],"sourceRoot":""}