@emblemvault/auth-sdk 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,15 +1,2 @@
1
- !function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).EmblemAuth={})}(this,function(n){"use strict";class e{constructor(n={}){this.session=null,this.timer=null,this.events={},this.onRefresh=n.onRefresh,this.refreshSkewMs=n.refreshSkewMs??6e4}setSession(n){this.session=n,this.schedule(),this.emit("session",n)}getSession(){return this.session}clear(){this.session=null,this.cancel(),this.emit("session",null)}on(n,e){this.events[n]||(this.events[n]=[]),this.events[n].push(e)}off(n,e){const t=this.events[n];if(t){const n=t.indexOf(e);-1!==n&&t.splice(n,1)}}destroy(){this.cancel(),this.session=null,Object.keys(this.events).forEach(n=>{delete this.events[n]})}emit(n,e){const t=this.events[n];if(t)for(const n of t)try{n(e)}catch(n){}}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=null)}schedule(){this.cancel();const n=this.session;if(!n?.expiresAt)return;const e=Date.now(),t=n.expiresAt-e;if(t<=0)return void this.emit("sessionExpired",n);const r=Math.max(0,t-this.refreshSkewMs);this.emit("sessionWillRefresh",{inMs:r,ttl:t}),this.timer=setTimeout(async()=>{if(this.onRefresh)try{const e=await this.onRefresh(n);e?.expiresAt&&e.authToken?(this.setSession(e),this.emit("sessionRefreshed",e)):Date.now()>=n.expiresAt&&this.emit("sessionExpired",n)}catch(e){Date.now()>=n.expiresAt&&this.emit("sessionExpired",n)}else Date.now()>=n.expiresAt&&this.emit("sessionExpired",n)},r)}}class t{constructor(n){if(this.session=null,this.pendingNonce=null,this.overlayEl=null,this._iframeEl=null,this.overlayCleanup=null,this.events={},this._cachedVaultInfo=null,!n?.appId)throw new Error("appId is required");if(this.config={...n,authUrl:n.authUrl??"https://auth.emblemvault.ai",apiUrl:n.apiUrl??"https://api.emblemvault.ai",persistSession:n.persistSession??!0},this.storageKey=`emblem_session_${n.appId}`,this.messageHandler=this.onMessage.bind(this),window.addEventListener("message",this.messageHandler),this.sessionMgr=new e({onRefresh:async n=>{try{return await this.refreshSession()||n}catch{return n}}}),this.sessionMgr.on("sessionExpired",n=>this.emit("sessionExpired",n)),this.sessionMgr.on("sessionRefreshed",n=>this.emit("sessionRefreshed",n)),this.sessionMgr.on("sessionWillRefresh",n=>this.emit("sessionWillRefresh",n)),this.config.persistSession){const n=this.loadPersistedSession();n&&this.hydrateSession(n)}}async authenticateWallet(n){const{network:e,message:t,signature:r,publicKey:a,address:o}=n;if(!this.config.apiUrl)throw new Error("apiUrl is required for authenticateWallet");if(!e||!t||!r)throw new Error("network, message, signature are required");const i=`${this.config.apiUrl.replace(/\/$/,"")}/api/auth/wallet/verify-external`,s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:this.config.appId,network:e,message:t,signature:r,publicKey:a,address:o})});if(!s.ok){const n=await this.safeJson(s),e=new Error(n?.error||`wallet_verify_${s.status}`);throw e.status=s.status,e.payload=n,e}const c=await s.json(),l=c?.session;return l&&(this.session=l,this.persistSession(l),this.sessionMgr.setSession(l),this.config.onSuccess?.(l),this.emit("session",l)),l}async openAuthModal(){const n=window.location.origin;let e=null,t=null;try{e=await this.getAuthInit({origin:n})}catch(n){t=n}const r=e?.nonce||this.randomId();this.pendingNonce=r;let a=this.resolveModalUrl({nonce:r,origin:n,state:e?.state});if("origin_not_allowed"===t?.payload?.error)try{const e=new URL("/connect",this.config.authUrl);e.searchParams.set("error","origin_not_allowed"),e.searchParams.set("appId",this.config.appId),e.searchParams.set("origin",n),a=e.toString()}catch{}const o=this.config.modalMode||"auto";let i=!1;if("iframe"===o||"auto"===o)try{i=this.openIframeModal(a)}catch(n){}if(!i){const n=this.popupFeatures();if(!window.open(a,"emblem-auth",n)){const n=new Error("Popup blocked. Please allow popups for this site.");this.emitError(n)}}}getSession(){return this.session}async refreshSession(){try{if(!this.session)return null;const n=this.tryGetOriginFromConfig();if(!n)return this.session;const e=`${n}/api/auth/refresh`,t=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({}),credentials:"include"});if(!t.ok)return this.session;const r=await t.json(),a=r?.session;return a&&(this.session=a,this.persistSession(a),this.sessionMgr.setSession(a),this.emit("session",a)),this.session}catch{return this.session}}async getVaultInfo(){if(this._cachedVaultInfo)return this._cachedVaultInfo;const n=this.getSession();if(!n?.authToken)throw new Error("No session");if(!this.config.apiUrl)throw new Error("apiUrl is required");const e=this.config.apiUrl.replace(/\/$/,""),t=await fetch(`${e}/vault/info`,{method:"POST",headers:{Authorization:`Bearer ${n.authToken}`,"Content-Type":"application/json"},body:"{}"});if(!t.ok)throw new Error("Failed to fetch vault info");const r=await t.json();return this._cachedVaultInfo=r,r}async getVaultApiKey(){if(!this.config.apiUrl)throw new Error("apiUrl is required");const n=this.getSession();if(!n?.authToken)throw new Error("No active session");const e=this.config.apiUrl.replace(/\/$/,""),t=n.authToken,r=n.user?.vaultId;let a=null;try{const n=await fetch(`${e}/vault/info-complete`,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(n.ok){const e=await n.json();a=e?.raw?.pkp?.api_key_hash||e?.raw?.pkp?.apiKeyHash||null}}catch{}if(!a)try{const t=n.appId,o=n.user?.identifier||"",i=t?`${t}:${o}`:o;if(i){const n=await fetch(`${e}/api/vaults/${encodeURIComponent(i)}`);if(n.ok){const e=await n.json(),t=Array.isArray(e)?e.find(n=>String(n.tokenId||n.token_id)===String(r))||e[0]:null;a=t?.api_key_hash||t?.apiKeyHash||null}}}catch{}if(!a){const n=await fetch(`${e}/api/vaults/${encodeURIComponent(r)}/api-key`,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!n.ok)throw new Error(`gen_key_${n.status}`);const a=await n.json(),o=a?.apiKey||a?.key||null;if(!o)throw new Error("missing_apiKey");return o}const o=await fetch(`${e}/decrypt`,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({tokenId:r,dataToEncryptHash:a})});if(!o.ok)throw new Error(`decrypt_${o.status}`);const i=await o.json(),s=i?.decryptedString||null;if(!s)throw new Error("missing_decrypted");return s}hydrateSession(n){n?.authToken&&(this.session=n,this.persistSession(n),this._cachedVaultInfo=null,this.sessionMgr.setSession(n),this.emit("session",n))}logout(){this.session=null,this.persistSession(null),this._cachedVaultInfo=null,this.sessionMgr.clear(),this.emit("session",null)}on(n,e){this.events[n]||(this.events[n]=[]),this.events[n].push(e)}off(n,e){const t=this.events[n];if(t){const n=t.indexOf(e);-1!==n&&t.splice(n,1)}}async getSignerContext(){const n=this.getSession();if(!n?.authToken)throw new Error("No active session. Call openAuthModal() or authenticateWallet() first.");const e=await this.getVaultInfo();return{config:{baseUrl:this.config.apiUrl,getJwt:()=>this.getSession()?.authToken},vaultInfo:{vaultId:e.vaultId,evmAddress:e.evmAddress||"0x",address:e.solanaAddress||e.address||"",tokenId:e.tokenId,created_by:e.created_by}}}async toViemAccount(){const{toViemAccount:n}=await Promise.resolve().then(function(){return l}),{config:e,vaultInfo:t}=await this.getSignerContext();return n(e,t)}async toEthersWallet(n){const{toEthersWallet:e}=await Promise.resolve().then(function(){return h}),{config:t,vaultInfo:r}=await this.getSignerContext();return e(t,n,r)}async toWeb3Adapter(){const{toWeb3Adapter:n}=await Promise.resolve().then(function(){return m}),{config:e,vaultInfo:t}=await this.getSignerContext();return n(e,t)}async toSolanaWeb3Signer(){const{toSolanaWeb3Signer:n}=await Promise.resolve().then(function(){return y}),{config:e,vaultInfo:t}=await this.getSignerContext();return n(e,t)}async toSolanaKitSigner(){const{toSolanaKitSigner:n}=await Promise.resolve().then(function(){return y}),{config:e,vaultInfo:t}=await this.getSignerContext();return n(e,t)}destroy(){window.removeEventListener("message",this.messageHandler),this.sessionMgr.destroy(),this.closeOverlay(),Object.keys(this.events).forEach(n=>{delete this.events[n]})}resolveModalUrl(n){const e=`${this.config.authUrl.replace(/\/$/,"")}/connect`,t=new URL(e,window.location.href);return t.searchParams.set("appId",this.config.appId),t.searchParams.set("origin",n.origin),t.searchParams.set("nonce",n.nonce),n.state&&t.searchParams.set("state",n.state),t.toString()}onMessage(n){try{if(!new Set([window.location.origin,this.tryGetOriginFromConfig()].filter(Boolean)).has(n.origin))return;const e=n.data;if("emblem-auth-success"!==e?.type)return;if(!this.pendingNonce||e.nonce!==this.pendingNonce)return;this.pendingNonce=null;const t=e.session;this.session=t,this.persistSession(t),this.sessionMgr.setSession(t),t&&this.config.onSuccess&&this.config.onSuccess(t),this.emit("session",t),this.closeOverlay()}catch(n){this.emitError(n)}}emit(n,e){const t=this.events[n];if(t)for(const n of t)try{n(e)}catch(n){}}emitError(n){this.config.onError?.(n),this.emit("authError",n)}popupFeatures(){const n=Math.max(0,(window.outerHeight-600)/2);return`popup=yes,width=420,height=600,left=${Math.max(0,(window.outerWidth-420)/2)},top=${n}`}randomId(){const n=new Uint8Array(16);if(window.crypto?.getRandomValues)window.crypto.getRandomValues(n);else for(let e=0;e<n.length;e++)n[e]=Math.floor(256*Math.random());return Array.from(n,n=>n.toString(16).padStart(2,"0")).join("")}tryGetOriginFromConfig(){try{if(!this.config.authUrl)return null;return new URL(this.config.authUrl,window.location.href).origin}catch{return null}}async getAuthInit(n){const e=await fetch(`${this.config.authUrl.replace(/\/$/,"")}/api/auth/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:this.config.appId,origin:n.origin})}),t=await e.json().catch(()=>null);if(!e.ok){const n=new Error(`init ${e.status}`);throw n.status=e.status,n.payload=t||{},n}return t}openIframeModal(n){this.overlayEl&&this.closeOverlay();const e=document.createElement("div");e.setAttribute("data-emblem-overlay",""),e.style.position="fixed",e.style.inset="0",e.style.background="rgba(0,0,0,0.5)",e.style.zIndex="999999",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center";const t=document.createElement("div");t.style.width="min(420px, 95vw)",t.style.height="min(600px, 90vh)",t.style.background="#12161b",t.style.border="1px solid #222b35",t.style.borderRadius="12px",t.style.boxShadow="0 12px 48px rgba(0,0,0,0.7)",t.style.overflow="hidden",t.style.position="relative";const r=document.createElement("button");r.textContent="×",r.setAttribute("aria-label","Close"),r.style.position="absolute",r.style.top="6px",r.style.right="8px",r.style.zIndex="2",r.style.background="transparent",r.style.color="#e6eef8",r.style.border="none",r.style.fontSize="20px",r.style.cursor="pointer",r.onclick=()=>this.closeOverlay();const a=document.createElement("iframe");a.src=n,a.style.width="100%",a.style.height="100%",a.style.border="0",a.referrerPolicy="no-referrer",a.allow="clipboard-read; clipboard-write;",t.appendChild(r),t.appendChild(a),e.appendChild(t),document.body.appendChild(e);const o=n=>{"Escape"===n.key&&this.closeOverlay()};return document.addEventListener("keydown",o,{capture:!0}),this.overlayEl=e,this._iframeEl=a,this.overlayCleanup=()=>{document.removeEventListener("keydown",o,{capture:!0})},!0}closeOverlay(){try{this.overlayCleanup?.()}catch{}this.overlayCleanup=null,this.overlayEl?.parentNode&&this.overlayEl.parentNode.removeChild(this.overlayEl),this.overlayEl=null,this._iframeEl=null}async safeJson(n){try{return await n.json()}catch{return null}}loadPersistedSession(){try{if("undefined"==typeof localStorage)return null;const n=localStorage.getItem(this.storageKey);if(!n)return null;const e=JSON.parse(n);return e?.authToken&&e?.expiresAt?Date.now()>=e.expiresAt?(localStorage.removeItem(this.storageKey),null):e:null}catch{return null}}persistSession(n){try{if("undefined"==typeof localStorage)return;n&&this.config.persistSession?localStorage.setItem(this.storageKey,JSON.stringify(n)):localStorage.removeItem(this.storageKey)}catch{}}}async function r(n,e,t){const r=t.baseUrl??"https://api.emblemvault.ai",a=await async function(n){if("function"==typeof n.getAuthHeaders){const e=await n.getAuthHeaders();if(e&&"object"==typeof e)return e}const e=n.jwt??("function"==typeof n.getJwt?await n.getJwt():void 0)??n.sdk?.getSession()?.authToken??void 0;if(e)return{Authorization:`Bearer ${e}`};if(n.apiKey)return{"x-api-key":n.apiKey};throw new Error("No authentication available: provide jwt, getJwt(), getAuthHeaders(), sdk, or apiKey")}(t),o=await fetch(`${r}${n}`,{method:"POST",headers:{"content-type":"application/json",...a},body:JSON.stringify(e,(n,e)=>"bigint"==typeof e?e.toString():e)});if(!o.ok){const n=await o.text().catch(()=>"");throw new Error(function(n,e){let t=`Emblem signer error ${n}`;return n>=500?t+=": Internal server error":401===n||403===n?t+=": Authentication failed":404===n?t+=": Resource not found":405===n?t+=": Method not allowed":e&&(t+=`: ${e.substring(0,200)}`),t}(o.status,n))}return o.json()}function a(n,e){const t=Number(n);if(!Number.isSafeInteger(t))throw new Error(`${e} value ${n} exceeds safe integer range (max: ${Number.MAX_SAFE_INTEGER})`);return t}function o(n){return"bigint"==typeof n?"0x"+n.toString(16):n}function i(n){const e={...n};return void 0!==e.value&&(e.value=o(e.value)),void 0!==e.gas&&(e.gasLimit=o(e.gas),delete e.gas),void 0!==e.gasLimit&&(e.gasLimit=o(e.gasLimit)),void 0!==e.gasPrice&&(e.gasPrice=o(e.gasPrice)),void 0!==e.maxFeePerGas&&(e.maxFeePerGas=o(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=o(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(e.nonce=a(e.nonce,"nonce")),void 0!==e.chainId&&(e.chainId=a(e.chainId,"chainId")),void 0===e.maxFeePerGas&&void 0===e.maxPriorityFeePerGas||(void 0===e.gasPrice&&void 0!==e.maxFeePerGas&&(e.gasPrice=e.maxFeePerGas),delete e.maxFeePerGas,delete e.maxPriorityFeePerGas),delete e.type,delete e.accessList,delete e.account,delete e.chain,delete e.from,e}function s(n){let e="0x";for(let t=0;t<n.length;t++)e+=n[t].toString(16).padStart(2,"0");return e}async function c(n){const e=await r("/vault/info",{},n);if(!e||!e.vaultId||!e.evmAddress)throw new Error("Invalid vault info response: missing required fields");if(!String(e.evmAddress).startsWith("0x"))throw new Error("Invalid evmAddress format in response");return{vaultId:e.vaultId,tokenId:e.vaultId,address:e.address||"",evmAddress:e.evmAddress,created_by:e.created_by}}var l=Object.freeze({__proto__:null,toViemAccount:async function(n,e){const t=e??await c(n),{evmAddress:a,vaultId:o}=t,{toAccount:l}=await Promise.resolve().then(function(){return Ko});return l({address:a,async signMessage({message:e}){let t,a=!1;if("string"==typeof e)t=e,a=!1;else if(e&&void 0!==e.raw){const n=e.raw;t="string"==typeof n?n:s(n),a=!0}else if(e instanceof Uint8Array)t=s(e),a=!1;else{if("string"!=typeof(i=e)||!/^0x[0-9a-fA-F]*$/.test(i))throw new Error(`Unsupported message type: ${typeof e}. Expected string, Uint8Array, or hex string.`);t=e,a=!1}var i;return(await r("/sign-eth-message",{vaultId:o,message:t,raw:a},n)).signature},async signTypedData(e){const{domain:t,types:a,message:i}=e;return(await r("/sign-typed-message",{vaultId:o,domain:t,types:a,message:i},n)).signature},async signTransaction(e,t){const a=i(e);return(await r("/sign-eth-tx",{vaultId:o,transaction:a},n)).signedTransaction}})}});var u,d,h=Object.freeze({__proto__:null,toEthersWallet:async function(n,e,t){let a;try{a=await Promise.resolve().then(function(){return nw})}catch{throw new Error("ethers is required for toEthersWallet(). Install it with: npm install ethers")}const{AbstractSigner:o,resolveAddress:l}=a,u=t??await c(n);class d extends o{constructor(n,e,t){super(e??null),this._address=null,this._vaultId=null,this._chainId=1,this._config=n,t?.address&&(this._address=t.address),t?.vaultId&&(this._vaultId=t.vaultId),t?.chainId&&(this._chainId=t.chainId)}async initialize(){return this._initPromise||(this._initPromise=c(this._config).then(n=>{this._address=n.evmAddress,this._vaultId=n.vaultId}).catch(n=>{throw this._initPromise=void 0,n})),this._initPromise}async getAddress(){return this._address||await this.initialize(),this._address}getVaultId(){if(!this._vaultId)throw new Error("Wallet not initialized. Call initialize() first.");return this._vaultId}setChainId(n){this._chainId=n}getChainId(){return this._chainId}connect(n){if(!n)throw new Error("Provider cannot be null");return new d(this._config,n,{address:this._address??void 0,vaultId:this._vaultId??void 0,chainId:this._chainId})}async signMessage(n){this._vaultId||await this.initialize();const e="string"==typeof n?n:s(n);return(await r("/sign-eth-message",{vaultId:this._vaultId,message:e},this._config)).signature}async signTypedData(n,e,t){this._vaultId||await this.initialize();const a={...e};a&&a.EIP712Domain&&delete a.EIP712Domain;return(await r("/sign-typed-message",{vaultId:this._vaultId,domain:n,types:a,message:t},this._config)).signature}async _signTypedData(n,e,t){return this.signTypedData(n,e,t)}async signTransaction(n){this._vaultId||await this.initialize();const e=n.from,t=await this.getAddress();if(e&&e.toLowerCase()!==t.toLowerCase())throw new Error("transaction from does not match signer address");const a=this.provider?{...await this.populateTransaction(n)}:{...n};if(a.from&&delete a.from,!("to"in a)||!a.to)throw new Error("Transaction must have a 'to' address");if(void 0===a.nonce||null===a.nonce)throw new Error("Transaction must have a nonce");const o=i(a);return(await r("/sign-eth-tx",{vaultId:this._vaultId,transaction:o,options:{chainId:this._chainId}},this._config)).signedTransaction}async sendTransaction(n){if(!this.provider)throw new Error("Provider required to send transaction");const e=await this.signTransaction(n);return await this.provider.broadcastTransaction(e)}async populateTransaction(n){const e={...n};if(!this.provider)throw new Error("Provider required to populate transaction");const t=e.from?await l(e.from,this.provider):await this.getAddress();let r;if(e.chainId)r=BigInt(e.chainId),this._chainId=Number(e.chainId);else{const n=await this.provider.getNetwork();r=n.chainId,this._chainId=Number(n.chainId)}const a=null!=e.nonce?Number(e.nonce):await this.provider.getTransactionCount(t,"pending"),o=e.to?await l(e.to,this.provider):null,i=e.value?BigInt(e.value.toString()):0n;let s;if(e.gasLimit)s=BigInt(e.gasLimit.toString());else try{s=await this.provider.estimateGas({...e,from:t})}catch{s=21000n}let c=null;if(e.gasPrice||2===e.type)e.gasPrice&&(c=BigInt(e.gasPrice.toString()));else{c=(await this.provider.getFeeData()).gasPrice??null}const u={from:t,to:o,value:i,nonce:a,gasLimit:s,data:e.data,chainId:r,type:e.type||void 0};return null!==c&&(u.gasPrice=c),e.maxFeePerGas&&(u.maxFeePerGas=BigInt(e.maxFeePerGas.toString())),e.maxPriorityFeePerGas&&(u.maxPriorityFeePerGas=BigInt(e.maxPriorityFeePerGas.toString())),u}async signAndBroadcast(n,e=!1){if(!this.provider)throw new Error("Provider required to send transaction");const t=await this.signTransaction(n),r=(await this.provider.broadcastTransaction(t)).hash;return e&&await this.provider.waitForTransaction(r),r}}return new d(n,e,{address:u.evmAddress,vaultId:u.vaultId})}});function p(n,e,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(n):r?r.value:e.get(n)}function f(n,e,t,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(n,t):a?a.value=t:e.set(n,t),t}"function"==typeof SuppressedError&&SuppressedError;class g{constructor(n,e,t){u.set(this,void 0),d.set(this,void 0),this.address=n,f(this,u,e,"f"),f(this,d,t,"f")}async signMessage(n){const e="string"==typeof n?n:s(n);return(await r("/sign-eth-message",{vaultId:p(this,u,"f"),message:e},p(this,d,"f"))).signature}async signTypedData(n,e,t){return(await r("/sign-typed-message",{vaultId:p(this,u,"f"),domain:n,types:e,message:t},p(this,d,"f"))).signature}async signTransaction(n){const e=i(n);return{rawTransaction:(await r("/sign-eth-tx",{vaultId:p(this,u,"f"),transaction:e},p(this,d,"f"))).signedTransaction}}}u=new WeakMap,d=new WeakMap;var m=Object.freeze({__proto__:null,EmblemWeb3Adapter:g,toWeb3Adapter:async function(n,e){const t=e??await c(n);return new g(t.evmAddress,t.vaultId,n)}});class b{constructor(n,e){this.publicKey=e.address,this.config=n,this.vaultId=e.vaultId}async signMessage(n){const e="string"==typeof n?(new TextEncoder).encode(n):n,t=btoa(String.fromCharCode(...e)),a=await r("/sign-solana-message",{vaultId:this.vaultId,message:t},this.config);try{const n="undefined"!=typeof window?window:void 0;if(n?.bs58)return n.bs58.decode(a.signature);return Uint8Array.from(atob(a.signature),n=>n.charCodeAt(0))}catch(n){if(a.signature.startsWith("0x")){const n=a.signature.slice(2),e=new Uint8Array(n.length/2);for(let t=0;t<n.length;t+=2)e[t/2]=parseInt(n.substr(t,2),16);return e}throw new Error(`Unable to decode signature format: ${n}`)}}async signTransaction(n){const e=this.serializeTransaction(n),t=await r("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:e,broadcast:!1,versionedTransaction:!0},this.config),a=t.serializedSignedTransaction||t.signedTransaction;if(!a)throw new Error("No signed transaction data received from server");return this.deserializeTransaction(a)}serializeTransaction(n){if(n&&"object"==typeof n){if(n.serialize){const e=n.serialize();return btoa(String.fromCharCode(...e))}if(n.instructions||n.recentBlockhash)throw new Error("Cannot serialize unsigned transaction objects. Please use VersionedTransaction.")}return n}deserializeTransaction(n){if("object"==typeof n&&n&&n.serializedSignedTransaction&&(n=n.serializedSignedTransaction),"string"==typeof n)try{const e=atob(n);return new Uint8Array(e.split("").map(n=>n.charCodeAt(0)))}catch(n){throw new Error(`Unable to deserialize transaction response: ${n}`)}return n}getVaultId(){return this.vaultId}async signAllTransactions(n){const e=[];for(const t of n)e.push(await this.signTransaction(t));return e}canSign(n){return n===this.publicKey}async signAndBroadcast(n,e=!0){const t=this.serializeTransaction(n),a=await r("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:t,broadcast:e,versionedTransaction:!0},this.config);if(e){if(!a.transactionSignature)throw new Error("No transaction signature received from broadcast");return a.transactionSignature}if(!a.serializedSignedTransaction)throw new Error("No signed transaction data received from server");return a.serializedSignedTransaction}}var y=Object.freeze({__proto__:null,EmblemSolanaSigner:b,toSolanaWeb3Signer:async function(n,e){const t=e??await c(n);return new b(n,t)},toSolanaKitSigner:async function(n,e){const t=e??await c(n);return new b(n,t)}});const v="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;function w(n){if(!Number.isSafeInteger(n)||n<0)throw new Error("positive integer expected, got "+n)}function k(n,...e){if(!((t=n)instanceof Uint8Array||ArrayBuffer.isView(t)&&"Uint8Array"===t.constructor.name))throw new Error("Uint8Array expected");var t;if(e.length>0&&!e.includes(n.length))throw new Error("Uint8Array expected of length "+e+", got length="+n.length)}function A(n){if("function"!=typeof n||"function"!=typeof n.create)throw new Error("Hash should be wrapped by utils.createHasher");w(n.outputLen),w(n.blockLen)}function E(n,e=!0){if(n.destroyed)throw new Error("Hash instance has been destroyed");if(e&&n.finished)throw new Error("Hash#digest() has already been called")}function x(n,e){k(n);const t=e.outputLen;if(n.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function P(...n){for(let e=0;e<n.length;e++)n[e].fill(0)}function I(n){return new DataView(n.buffer,n.byteOffset,n.byteLength)}function N(n,e){return n<<32-e|n>>>e}function z(n,e){return n<<e|n>>>32-e>>>0}function R(n){return n<<24&4278190080|n<<8&16711680|n>>>8&65280|n>>>24&255}const S=(()=>68===new Uint8Array(new Uint32Array([287454020]).buffer)[0])()?n=>n:function(n){for(let e=0;e<n.length;e++)n[e]=R(n[e]);return n},T=(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)(),B=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));const C=48,O=57,U=65,F=70,j=97,L=102;function D(n){return n>=C&&n<=O?n-C:n>=U&&n<=F?n-(U-10):n>=j&&n<=L?n-(j-10):void 0}function M(n){if("string"!=typeof n)throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(n))}function G(n){return"string"==typeof n&&(n=M(n)),k(n),n}function q(n){return"string"==typeof n&&(n=M(n)),k(n),n}function H(...n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];k(r),e+=r.length}const t=new Uint8Array(e);for(let e=0,r=0;e<n.length;e++){const a=n[e];t.set(a,r),r+=a.length}return t}class K{}function _(n){const e=e=>n().update(G(e)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function V(n=32){if(v&&"function"==typeof v.getRandomValues)return v.getRandomValues(new Uint8Array(n));if(v&&"function"==typeof v.randomBytes)return Uint8Array.from(v.randomBytes(n));throw new Error("crypto.getRandomValues must be defined")}
2
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Q=BigInt(0),J=BigInt(1);function $(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name}function W(n){if(!$(n))throw new Error("Uint8Array expected")}function Z(n,e){if("boolean"!=typeof e)throw new Error(n+" boolean expected, got "+e)}function Y(n){const e=n.toString(16);return 1&e.length?"0"+e:e}function X(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);return""===n?Q:BigInt("0x"+n)}const nn="function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex,en=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function tn(n){if(W(n),nn)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=en[n[t]];return e}const rn=48,an=57,on=65,sn=70,cn=97,ln=102;function un(n){return n>=rn&&n<=an?n-rn:n>=on&&n<=sn?n-(on-10):n>=cn&&n<=ln?n-(cn-10):void 0}function dn(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);if(nn)return Uint8Array.fromHex(n);const e=n.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(t);for(let e=0,a=0;e<t;e++,a+=2){const t=un(n.charCodeAt(a)),o=un(n.charCodeAt(a+1));if(void 0===t||void 0===o){const e=n[a]+n[a+1];throw new Error('hex string expected, got non-hex character "'+e+'" at index '+a)}r[e]=16*t+o}return r}function hn(n){return X(tn(n))}function pn(n){return W(n),X(tn(Uint8Array.from(n).reverse()))}function fn(n,e){return dn(n.toString(16).padStart(2*e,"0"))}function gn(n,e){return fn(n,e).reverse()}function mn(n,e,t){let r;if("string"==typeof e)try{r=dn(e)}catch(e){throw new Error(n+" must be hex string or Uint8Array, cause: "+e)}else{if(!$(e))throw new Error(n+" must be hex string or Uint8Array");r=Uint8Array.from(e)}const a=r.length;if("number"==typeof t&&a!==t)throw new Error(n+" of length "+t+" expected, got "+a);return r}function bn(...n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];W(r),e+=r.length}const t=new Uint8Array(e);for(let e=0,r=0;e<n.length;e++){const a=n[e];t.set(a,r),r+=a.length}return t}const yn=n=>"bigint"==typeof n&&Q<=n;function vn(n,e,t){return yn(n)&&yn(e)&&yn(t)&&e<=n&&n<t}function wn(n,e,t,r){if(!vn(e,t,r))throw new Error("expected valid "+n+": "+t+" <= n < "+r+", got "+e)}const kn=n=>(J<<BigInt(n))-J,An=n=>new Uint8Array(n),En=n=>Uint8Array.from(n);const xn={bigint:n=>"bigint"==typeof n,function:n=>"function"==typeof n,boolean:n=>"boolean"==typeof n,string:n=>"string"==typeof n,stringOrUint8Array:n=>"string"==typeof n||$(n),isSafeInteger:n=>Number.isSafeInteger(n),array:n=>Array.isArray(n),field:(n,e)=>e.Fp.isValid(n),hash:n=>"function"==typeof n&&Number.isSafeInteger(n.outputLen)};function Pn(n,e,t={}){const r=(e,t,r)=>{const a=xn[t];if("function"!=typeof a)throw new Error("invalid validator function");const o=n[e];if(!(r&&void 0===o||a(o,n)))throw new Error("param "+String(e)+" is invalid. Expected "+t+", got "+o)};for(const[n,t]of Object.entries(e))r(n,t,!1);for(const[n,e]of Object.entries(t))r(n,e,!0);return n}function In(n){const e=new WeakMap;return(t,...r)=>{const a=e.get(t);if(void 0!==a)return a;const o=n(t,...r);return e.set(t,o),o}}const Nn=BigInt(0),zn=BigInt(1),Rn=BigInt(2),Sn=BigInt(3),Tn=BigInt(4),Bn=BigInt(5),Cn=BigInt(8);function On(n,e){const t=n%e;return t>=Nn?t:e+t}function Un(n,e,t){let r=n;for(;e-- >Nn;)r*=r,r%=t;return r}function Fn(n,e){if(n===Nn)throw new Error("invert: expected non-zero number");if(e<=Nn)throw new Error("invert: expected positive modulus, got "+e);let t=On(n,e),r=e,a=Nn,o=zn;for(;t!==Nn;){const n=r%t,e=a-o*(r/t);r=t,t=n,a=o,o=e}if(r!==zn)throw new Error("invert: does not exist");return On(a,e)}function jn(n,e){const t=(n.ORDER+zn)/Tn,r=n.pow(e,t);if(!n.eql(n.sqr(r),e))throw new Error("Cannot find square root");return r}function Ln(n,e){const t=(n.ORDER-Bn)/Cn,r=n.mul(e,Rn),a=n.pow(r,t),o=n.mul(e,a),i=n.mul(n.mul(o,Rn),a),s=n.mul(o,n.sub(i,n.ONE));if(!n.eql(n.sqr(s),e))throw new Error("Cannot find square root");return s}function Dn(n){return n%Tn===Sn?jn:n%Cn===Bn?Ln:function(n){if(n<BigInt(3))throw new Error("sqrt is not defined for small field");let e=n-zn,t=0;for(;e%Rn===Nn;)e/=Rn,t++;let r=Rn;const a=Kn(n);for(;1===qn(a,r);)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(1===t)return jn;let o=a.pow(r,e);const i=(e+zn)/Rn;return function(n,r){if(n.is0(r))return r;if(1!==qn(n,r))throw new Error("Cannot find square root");let a=t,s=n.mul(n.ONE,o),c=n.pow(r,e),l=n.pow(r,i);for(;!n.eql(c,n.ONE);){if(n.is0(c))return n.ZERO;let e=1,t=n.sqr(c);for(;!n.eql(t,n.ONE);)if(e++,t=n.sqr(t),e===a)throw new Error("Cannot find square root");const r=zn<<BigInt(a-e-1),o=n.pow(s,r);a=e,s=n.sqr(o),c=n.mul(c,s),l=n.mul(l,o)}return l}}(n)}const Mn=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Gn(n,e,t=!1){const r=new Array(e.length).fill(t?n.ZERO:void 0),a=e.reduce((e,t,a)=>n.is0(t)?e:(r[a]=e,n.mul(e,t)),n.ONE),o=n.inv(a);return e.reduceRight((e,t,a)=>n.is0(t)?e:(r[a]=n.mul(e,r[a]),n.mul(e,t)),o),r}function qn(n,e){const t=(n.ORDER-zn)/Rn,r=n.pow(e,t),a=n.eql(r,n.ONE),o=n.eql(r,n.ZERO),i=n.eql(r,n.neg(n.ONE));if(!a&&!o&&!i)throw new Error("invalid Legendre symbol result");return a?1:o?0:-1}function Hn(n,e){void 0!==e&&w(e);const t=void 0!==e?e:n.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}function Kn(n,e,t=!1,r={}){if(n<=Nn)throw new Error("invalid field: expected ORDER > 0, got "+n);const{nBitLength:a,nByteLength:o}=Hn(n,e);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let i;const s=Object.freeze({ORDER:n,isLE:t,BITS:a,BYTES:o,MASK:kn(a),ZERO:Nn,ONE:zn,create:e=>On(e,n),isValid:e=>{if("bigint"!=typeof e)throw new Error("invalid field element: expected bigint, got "+typeof e);return Nn<=e&&e<n},is0:n=>n===Nn,isOdd:n=>(n&zn)===zn,neg:e=>On(-e,n),eql:(n,e)=>n===e,sqr:e=>On(e*e,n),add:(e,t)=>On(e+t,n),sub:(e,t)=>On(e-t,n),mul:(e,t)=>On(e*t,n),pow:(n,e)=>function(n,e,t){if(t<Nn)throw new Error("invalid exponent, negatives unsupported");if(t===Nn)return n.ONE;if(t===zn)return e;let r=n.ONE,a=e;for(;t>Nn;)t&zn&&(r=n.mul(r,a)),a=n.sqr(a),t>>=zn;return r}(s,n,e),div:(e,t)=>On(e*Fn(t,n),n),sqrN:n=>n*n,addN:(n,e)=>n+e,subN:(n,e)=>n-e,mulN:(n,e)=>n*e,inv:e=>Fn(e,n),sqrt:r.sqrt||(e=>(i||(i=Dn(n)),i(s,e))),toBytes:n=>t?gn(n,o):fn(n,o),fromBytes:n=>{if(n.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+n.length);return t?pn(n):hn(n)},invertBatch:n=>Gn(s,n),cmov:(n,e,t)=>t?e:n});return Object.freeze(s)}function _n(n){if("bigint"!=typeof n)throw new Error("field order must be bigint");const e=n.toString(2).length;return Math.ceil(e/8)}function Vn(n){const e=_n(n);return e+Math.ceil(e/2)}function Qn(n,e,t){return n&e^~n&t}function Jn(n,e,t){return n&e^n&t^e&t}class $n extends K{constructor(n,e,t,r){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=n,this.outputLen=e,this.padOffset=t,this.isLE=r,this.buffer=new Uint8Array(n),this.view=I(this.buffer)}update(n){E(this),k(n=G(n));const{view:e,buffer:t,blockLen:r}=this,a=n.length;for(let o=0;o<a;){const i=Math.min(r-this.pos,a-o);if(i===r){const e=I(n);for(;r<=a-o;o+=r)this.process(e,o);continue}t.set(n.subarray(o,o+i),this.pos),this.pos+=i,o+=i,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=n.length,this.roundClean(),this}digestInto(n){E(this),x(n,this),this.finished=!0;const{buffer:e,view:t,blockLen:r,isLE:a}=this;let{pos:o}=this;e[o++]=128,P(this.buffer.subarray(o)),this.padOffset>r-o&&(this.process(t,0),o=0);for(let n=o;n<r;n++)e[n]=0;!function(n,e,t,r){if("function"==typeof n.setBigUint64)return n.setBigUint64(e,t,r);const a=BigInt(32),o=BigInt(4294967295),i=Number(t>>a&o),s=Number(t&o),c=r?4:0,l=r?0:4;n.setUint32(e+c,i,r),n.setUint32(e+l,s,r)}(t,r-8,BigInt(8*this.length),a),this.process(t,0);const i=I(n),s=this.outputLen;if(s%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const c=s/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let n=0;n<c;n++)i.setUint32(4*n,l[n],a)}digest(){const{buffer:n,outputLen:e}=this;this.digestInto(n);const t=n.slice(0,e);return this.destroy(),t}_cloneInto(n){n||(n=new this.constructor),n.set(...this.get());const{blockLen:e,buffer:t,length:r,finished:a,destroyed:o,pos:i}=this;return n.destroyed=o,n.finished=a,n.length=r,n.pos=i,r%e&&n.buffer.set(t),n}clone(){return this._cloneInto()}}const Wn=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Zn=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Yn=BigInt(2**32-1),Xn=BigInt(32);function ne(n,e=!1){return e?{h:Number(n&Yn),l:Number(n>>Xn&Yn)}:{h:0|Number(n>>Xn&Yn),l:0|Number(n&Yn)}}function ee(n,e=!1){const t=n.length;let r=new Uint32Array(t),a=new Uint32Array(t);for(let o=0;o<t;o++){const{h:t,l:i}=ne(n[o],e);[r[o],a[o]]=[t,i]}return[r,a]}const te=(n,e,t)=>n>>>t,re=(n,e,t)=>n<<32-t|e>>>t,ae=(n,e,t)=>n>>>t|e<<32-t,oe=(n,e,t)=>n<<32-t|e>>>t,ie=(n,e,t)=>n<<64-t|e>>>t-32,se=(n,e,t)=>n>>>t-32|e<<64-t;function ce(n,e,t,r){const a=(e>>>0)+(r>>>0);return{h:n+t+(a/2**32|0)|0,l:0|a}}const le=(n,e,t)=>(n>>>0)+(e>>>0)+(t>>>0),ue=(n,e,t,r)=>e+t+r+(n/2**32|0)|0,de=(n,e,t,r)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0),he=(n,e,t,r,a)=>e+t+r+a+(n/2**32|0)|0,pe=(n,e,t,r,a)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0)+(a>>>0),fe=(n,e,t,r,a,o)=>e+t+r+a+o+(n/2**32|0)|0,ge=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),me=new Uint32Array(64);class be extends $n{constructor(n=32){super(64,n,8,!1),this.A=0|Wn[0],this.B=0|Wn[1],this.C=0|Wn[2],this.D=0|Wn[3],this.E=0|Wn[4],this.F=0|Wn[5],this.G=0|Wn[6],this.H=0|Wn[7]}get(){const{A:n,B:e,C:t,D:r,E:a,F:o,G:i,H:s}=this;return[n,e,t,r,a,o,i,s]}set(n,e,t,r,a,o,i,s){this.A=0|n,this.B=0|e,this.C=0|t,this.D=0|r,this.E=0|a,this.F=0|o,this.G=0|i,this.H=0|s}process(n,e){for(let t=0;t<16;t++,e+=4)me[t]=n.getUint32(e,!1);for(let n=16;n<64;n++){const e=me[n-15],t=me[n-2],r=N(e,7)^N(e,18)^e>>>3,a=N(t,17)^N(t,19)^t>>>10;me[n]=a+me[n-7]+r+me[n-16]|0}let{A:t,B:r,C:a,D:o,E:i,F:s,G:c,H:l}=this;for(let n=0;n<64;n++){const e=l+(N(i,6)^N(i,11)^N(i,25))+Qn(i,s,c)+ge[n]+me[n]|0,u=(N(t,2)^N(t,13)^N(t,22))+Jn(t,r,a)|0;l=c,c=s,s=i,i=o+e|0,o=a,a=r,r=t,t=e+u|0}t=t+this.A|0,r=r+this.B|0,a=a+this.C|0,o=o+this.D|0,i=i+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(t,r,a,o,i,s,c,l)}roundClean(){P(me)}destroy(){this.set(0,0,0,0,0,0,0,0),P(this.buffer)}}const ye=(()=>ee(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(n=>BigInt(n))))(),ve=(()=>ye[0])(),we=(()=>ye[1])(),ke=new Uint32Array(80),Ae=new Uint32Array(80);class Ee extends $n{constructor(n=64){super(128,n,16,!1),this.Ah=0|Zn[0],this.Al=0|Zn[1],this.Bh=0|Zn[2],this.Bl=0|Zn[3],this.Ch=0|Zn[4],this.Cl=0|Zn[5],this.Dh=0|Zn[6],this.Dl=0|Zn[7],this.Eh=0|Zn[8],this.El=0|Zn[9],this.Fh=0|Zn[10],this.Fl=0|Zn[11],this.Gh=0|Zn[12],this.Gl=0|Zn[13],this.Hh=0|Zn[14],this.Hl=0|Zn[15]}get(){const{Ah:n,Al:e,Bh:t,Bl:r,Ch:a,Cl:o,Dh:i,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:h,Gl:p,Hh:f,Hl:g}=this;return[n,e,t,r,a,o,i,s,c,l,u,d,h,p,f,g]}set(n,e,t,r,a,o,i,s,c,l,u,d,h,p,f,g){this.Ah=0|n,this.Al=0|e,this.Bh=0|t,this.Bl=0|r,this.Ch=0|a,this.Cl=0|o,this.Dh=0|i,this.Dl=0|s,this.Eh=0|c,this.El=0|l,this.Fh=0|u,this.Fl=0|d,this.Gh=0|h,this.Gl=0|p,this.Hh=0|f,this.Hl=0|g}process(n,e){for(let t=0;t<16;t++,e+=4)ke[t]=n.getUint32(e),Ae[t]=n.getUint32(e+=4);for(let n=16;n<80;n++){const e=0|ke[n-15],t=0|Ae[n-15],r=ae(e,t,1)^ae(e,t,8)^te(e,0,7),a=oe(e,t,1)^oe(e,t,8)^re(e,t,7),o=0|ke[n-2],i=0|Ae[n-2],s=ae(o,i,19)^ie(o,i,61)^te(o,0,6),c=oe(o,i,19)^se(o,i,61)^re(o,i,6),l=de(a,c,Ae[n-7],Ae[n-16]),u=he(l,r,s,ke[n-7],ke[n-16]);ke[n]=0|u,Ae[n]=0|l}let{Ah:t,Al:r,Bh:a,Bl:o,Ch:i,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:h,Fl:p,Gh:f,Gl:g,Hh:m,Hl:b}=this;for(let n=0;n<80;n++){const e=ae(u,d,14)^ae(u,d,18)^ie(u,d,41),y=oe(u,d,14)^oe(u,d,18)^se(u,d,41),v=u&h^~u&f,w=pe(b,y,d&p^~d&g,we[n],Ae[n]),k=fe(w,m,e,v,ve[n],ke[n]),A=0|w,E=ae(t,r,28)^ie(t,r,34)^ie(t,r,39),x=oe(t,r,28)^se(t,r,34)^se(t,r,39),P=t&a^t&i^a&i,I=r&o^r&s^o&s;m=0|f,b=0|g,f=0|h,g=0|p,h=0|u,p=0|d,({h:u,l:d}=ce(0|c,0|l,0|k,0|A)),c=0|i,l=0|s,i=0|a,s=0|o,a=0|t,o=0|r;const N=le(A,x,I);t=ue(N,k,E,P),r=0|N}({h:t,l:r}=ce(0|this.Ah,0|this.Al,0|t,0|r)),({h:a,l:o}=ce(0|this.Bh,0|this.Bl,0|a,0|o)),({h:i,l:s}=ce(0|this.Ch,0|this.Cl,0|i,0|s)),({h:c,l:l}=ce(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:d}=ce(0|this.Eh,0|this.El,0|u,0|d)),({h:h,l:p}=ce(0|this.Fh,0|this.Fl,0|h,0|p)),({h:f,l:g}=ce(0|this.Gh,0|this.Gl,0|f,0|g)),({h:m,l:b}=ce(0|this.Hh,0|this.Hl,0|m,0|b)),this.set(t,r,a,o,i,s,c,l,u,d,h,p,f,g,m,b)}roundClean(){P(ke,Ae)}destroy(){P(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const xe=_(()=>new be),Pe=_(()=>new Ee);class Ie extends K{constructor(n,e){super(),this.finished=!1,this.destroyed=!1,A(n);const t=G(e);if(this.iHash=n.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,a=new Uint8Array(r);a.set(t.length>r?n.create().update(t).digest():t);for(let n=0;n<a.length;n++)a[n]^=54;this.iHash.update(a),this.oHash=n.create();for(let n=0;n<a.length;n++)a[n]^=106;this.oHash.update(a),P(a)}update(n){return E(this),this.iHash.update(n),this}digestInto(n){E(this),k(n,this.outputLen),this.finished=!0,this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const n=new Uint8Array(this.oHash.outputLen);return this.digestInto(n),n}_cloneInto(n){n||(n=Object.create(Object.getPrototypeOf(this),{}));const{oHash:e,iHash:t,finished:r,destroyed:a,blockLen:o,outputLen:i}=this;return n.finished=r,n.destroyed=a,n.blockLen=o,n.outputLen=i,n.oHash=e._cloneInto(n.oHash),n.iHash=t._cloneInto(n.iHash),n}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ne=(n,e,t)=>new Ie(n,e).update(t).digest();Ne.create=(n,e)=>new Ie(n,e);const ze=BigInt(0),Re=BigInt(1);function Se(n,e){const t=e.negate();return n?t:e}function Te(n,e){if(!Number.isSafeInteger(n)||n<=0||n>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+n)}function Be(n,e){Te(n,e);const t=2**n;return{windows:Math.ceil(e/n)+1,windowSize:2**(n-1),mask:kn(n),maxNumber:t,shiftBy:BigInt(n)}}function Ce(n,e,t){const{windowSize:r,mask:a,maxNumber:o,shiftBy:i}=t;let s=Number(n&a),c=n>>i;s>r&&(s-=o,c+=Re);const l=e*r;return{nextN:c,offset:l+Math.abs(s)-1,isZero:0===s,isNeg:s<0,isNegF:e%2!=0,offsetF:l}}const Oe=new WeakMap,Ue=new WeakMap;function Fe(n){return Ue.get(n)||1}function je(n,e,t,r){!function(n,e){if(!Array.isArray(n))throw new Error("array expected");n.forEach((n,t)=>{if(!(n instanceof e))throw new Error("invalid point at index "+t)})}(t,n),function(n,e){if(!Array.isArray(n))throw new Error("array of scalars expected");n.forEach((n,t)=>{if(!e.isValid(n))throw new Error("invalid scalar at index "+t)})}(r,e);const a=t.length,o=r.length;if(a!==o)throw new Error("arrays of points and scalars must have equal length");const i=n.ZERO,s=function(n){let e;for(e=0;n>Q;n>>=J,e+=1);return e}(BigInt(a));let c=1;s>12?c=s-3:s>4?c=s-2:s>0&&(c=2);const l=kn(c),u=new Array(Number(l)+1).fill(i);let d=i;for(let n=Math.floor((e.BITS-1)/c)*c;n>=0;n-=c){u.fill(i);for(let e=0;e<o;e++){const a=r[e],o=Number(a>>BigInt(n)&l);u[o]=u[o].add(t[e])}let e=i;for(let n=u.length-1,t=i;n>0;n--)t=t.add(u[n]),e=e.add(t);if(d=d.add(e),0!==n)for(let n=0;n<c;n++)d=d.double()}return d}function Le(n){return Pn(n.Fp,Mn.reduce((n,e)=>(n[e]="function",n),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),Pn(n,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Hn(n.n,n.nBitLength),...n,p:n.Fp.ORDER})}function De(n){void 0!==n.lowS&&Z("lowS",n.lowS),void 0!==n.prehash&&Z("prehash",n.prehash)}class Me extends Error{constructor(n=""){super(n)}}const Ge={Err:Me,_tlv:{encode:(n,e)=>{const{Err:t}=Ge;if(n<0||n>256)throw new t("tlv.encode: wrong tag");if(1&e.length)throw new t("tlv.encode: unpadded data");const r=e.length/2,a=Y(r);if(a.length/2&128)throw new t("tlv.encode: long form length too big");const o=r>127?Y(a.length/2|128):"";return Y(n)+o+a+e},decode(n,e){const{Err:t}=Ge;let r=0;if(n<0||n>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[r++]!==n)throw new t("tlv.decode: wrong tlv");const a=e[r++];let o=0;if(!!(128&a)){const n=127&a;if(!n)throw new t("tlv.decode(long): indefinite length not supported");if(n>4)throw new t("tlv.decode(long): byte length is too big");const i=e.subarray(r,r+n);if(i.length!==n)throw new t("tlv.decode: length bytes not complete");if(0===i[0])throw new t("tlv.decode(long): zero leftmost byte");for(const n of i)o=o<<8|n;if(r+=n,o<128)throw new t("tlv.decode(long): not minimal encoding")}else o=a;const i=e.subarray(r,r+o);if(i.length!==o)throw new t("tlv.decode: wrong value length");return{v:i,l:e.subarray(r+o)}}},_int:{encode(n){const{Err:e}=Ge;if(n<He)throw new e("integer: negative integers are not allowed");let t=Y(n);if(8&Number.parseInt(t[0],16)&&(t="00"+t),1&t.length)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(n){const{Err:e}=Ge;if(128&n[0])throw new e("invalid signature integer: negative");if(0===n[0]&&!(128&n[1]))throw new e("invalid signature integer: unnecessary leading zero");return hn(n)}},toSig(n){const{Err:e,_int:t,_tlv:r}=Ge,a=mn("signature",n),{v:o,l:i}=r.decode(48,a);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:s,l:c}=r.decode(2,o),{v:l,l:u}=r.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(s),s:t.decode(l)}},hexFromSig(n){const{_tlv:e,_int:t}=Ge,r=e.encode(2,t.encode(n.r))+e.encode(2,t.encode(n.s));return e.encode(48,r)}};function qe(n,e){return tn(fn(n,e))}const He=BigInt(0),Ke=BigInt(1);BigInt(2);const _e=BigInt(3),Ve=BigInt(4);function Qe(n){const e=function(n){const e=Le(n);Pn(e,{a:"field",b:"field"},{allowInfinityPoint:"boolean",allowedPrivateKeyLengths:"array",clearCofactor:"function",fromBytes:"function",isTorsionFree:"function",toBytes:"function",wrapPrivateKey:"boolean"});const{endo:t,Fp:r,a:a}=e;if(t){if(!r.eql(a,r.ZERO))throw new Error("invalid endo: CURVE.a must be 0");if("object"!=typeof t||"bigint"!=typeof t.beta||"function"!=typeof t.splitScalar)throw new Error('invalid endo: expected "beta": bigint and "splitScalar": function')}return Object.freeze({...e})}(n),{Fp:t}=e,r=Kn(e.n,e.nBitLength),a=e.toBytes||((n,e,r)=>{const a=e.toAffine();return bn(Uint8Array.from([4]),t.toBytes(a.x),t.toBytes(a.y))}),o=e.fromBytes||(n=>{const e=n.subarray(1);return{x:t.fromBytes(e.subarray(0,t.BYTES)),y:t.fromBytes(e.subarray(t.BYTES,2*t.BYTES))}});function i(n){const{a:r,b:a}=e,o=t.sqr(n),i=t.mul(o,n);return t.add(t.add(i,t.mul(n,r)),a)}function s(n,e){const r=t.sqr(e),a=i(n);return t.eql(r,a)}if(!s(e.Gx,e.Gy))throw new Error("bad curve params: generator point");const c=t.mul(t.pow(e.a,_e),Ve),l=t.mul(t.sqr(e.b),BigInt(27));if(t.is0(t.add(c,l)))throw new Error("bad curve params: a or b");function u(n){const{allowedPrivateKeyLengths:t,nByteLength:r,wrapPrivateKey:a,n:o}=e;if(t&&"bigint"!=typeof n){if($(n)&&(n=tn(n)),"string"!=typeof n||!t.includes(n.length))throw new Error("invalid private key");n=n.padStart(2*r,"0")}let i;try{i="bigint"==typeof n?n:hn(mn("private key",n,r))}catch(e){throw new Error("invalid private key, expected hex or "+r+" bytes, got "+typeof n)}return a&&(i=On(i,o)),wn("private key",i,Ke,o),i}function d(n){if(!(n instanceof f))throw new Error("ProjectivePoint expected")}const h=In((n,e)=>{const{px:r,py:a,pz:o}=n;if(t.eql(o,t.ONE))return{x:r,y:a};const i=n.is0();null==e&&(e=i?t.ONE:t.inv(o));const s=t.mul(r,e),c=t.mul(a,e),l=t.mul(o,e);if(i)return{x:t.ZERO,y:t.ZERO};if(!t.eql(l,t.ONE))throw new Error("invZ was invalid");return{x:s,y:c}}),p=In(n=>{if(n.is0()){if(e.allowInfinityPoint&&!t.is0(n.py))return;throw new Error("bad point: ZERO")}const{x:r,y:a}=n.toAffine();if(!t.isValid(r)||!t.isValid(a))throw new Error("bad point: x or y not FE");if(!s(r,a))throw new Error("bad point: equation left != right");if(!n.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class f{constructor(n,e,r){if(null==n||!t.isValid(n))throw new Error("x required");if(null==e||!t.isValid(e)||t.is0(e))throw new Error("y required");if(null==r||!t.isValid(r))throw new Error("z required");this.px=n,this.py=e,this.pz=r,Object.freeze(this)}static fromAffine(n){const{x:e,y:r}=n||{};if(!n||!t.isValid(e)||!t.isValid(r))throw new Error("invalid affine point");if(n instanceof f)throw new Error("projective point not allowed");const a=n=>t.eql(n,t.ZERO);return a(e)&&a(r)?f.ZERO:new f(e,r,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(n){const e=Gn(t,n.map(n=>n.pz));return n.map((n,t)=>n.toAffine(e[t])).map(f.fromAffine)}static fromHex(n){const e=f.fromAffine(o(mn("pointHex",n)));return e.assertValidity(),e}static fromPrivateKey(n){return f.BASE.multiply(u(n))}static msm(n,e){return je(f,r,n,e)}_setWindowSize(n){b.setWindowSize(this,n)}assertValidity(){p(this)}hasEvenY(){const{y:n}=this.toAffine();if(t.isOdd)return!t.isOdd(n);throw new Error("Field doesn't support isOdd")}equals(n){d(n);const{px:e,py:r,pz:a}=this,{px:o,py:i,pz:s}=n,c=t.eql(t.mul(e,s),t.mul(o,a)),l=t.eql(t.mul(r,s),t.mul(i,a));return c&&l}negate(){return new f(this.px,t.neg(this.py),this.pz)}double(){const{a:n,b:r}=e,a=t.mul(r,_e),{px:o,py:i,pz:s}=this;let c=t.ZERO,l=t.ZERO,u=t.ZERO,d=t.mul(o,o),h=t.mul(i,i),p=t.mul(s,s),g=t.mul(o,i);return g=t.add(g,g),u=t.mul(o,s),u=t.add(u,u),c=t.mul(n,u),l=t.mul(a,p),l=t.add(c,l),c=t.sub(h,l),l=t.add(h,l),l=t.mul(c,l),c=t.mul(g,c),u=t.mul(a,u),p=t.mul(n,p),g=t.sub(d,p),g=t.mul(n,g),g=t.add(g,u),u=t.add(d,d),d=t.add(u,d),d=t.add(d,p),d=t.mul(d,g),l=t.add(l,d),p=t.mul(i,s),p=t.add(p,p),d=t.mul(p,g),c=t.sub(c,d),u=t.mul(p,h),u=t.add(u,u),u=t.add(u,u),new f(c,l,u)}add(n){d(n);const{px:r,py:a,pz:o}=this,{px:i,py:s,pz:c}=n;let l=t.ZERO,u=t.ZERO,h=t.ZERO;const p=e.a,g=t.mul(e.b,_e);let m=t.mul(r,i),b=t.mul(a,s),y=t.mul(o,c),v=t.add(r,a),w=t.add(i,s);v=t.mul(v,w),w=t.add(m,b),v=t.sub(v,w),w=t.add(r,o);let k=t.add(i,c);return w=t.mul(w,k),k=t.add(m,y),w=t.sub(w,k),k=t.add(a,o),l=t.add(s,c),k=t.mul(k,l),l=t.add(b,y),k=t.sub(k,l),h=t.mul(p,w),l=t.mul(g,y),h=t.add(l,h),l=t.sub(b,h),h=t.add(b,h),u=t.mul(l,h),b=t.add(m,m),b=t.add(b,m),y=t.mul(p,y),w=t.mul(g,w),b=t.add(b,y),y=t.sub(m,y),y=t.mul(p,y),w=t.add(w,y),m=t.mul(b,w),u=t.add(u,m),m=t.mul(k,w),l=t.mul(v,l),l=t.sub(l,m),m=t.mul(v,b),h=t.mul(k,h),h=t.add(h,m),new f(l,u,h)}subtract(n){return this.add(n.negate())}is0(){return this.equals(f.ZERO)}wNAF(n){return b.wNAFCached(this,n,f.normalizeZ)}multiplyUnsafe(n){const{endo:r,n:a}=e;wn("scalar",n,He,a);const o=f.ZERO;if(n===He)return o;if(this.is0()||n===Ke)return this;if(!r||b.hasPrecomputes(this))return b.wNAFCachedUnsafe(this,n,f.normalizeZ);let{k1neg:i,k1:s,k2neg:c,k2:l}=r.splitScalar(n),u=o,d=o,h=this;for(;s>He||l>He;)s&Ke&&(u=u.add(h)),l&Ke&&(d=d.add(h)),h=h.double(),s>>=Ke,l>>=Ke;return i&&(u=u.negate()),c&&(d=d.negate()),d=new f(t.mul(d.px,r.beta),d.py,d.pz),u.add(d)}multiply(n){const{endo:r,n:a}=e;let o,i;if(wn("scalar",n,Ke,a),r){const{k1neg:e,k1:a,k2neg:s,k2:c}=r.splitScalar(n);let{p:l,f:u}=this.wNAF(a),{p:d,f:h}=this.wNAF(c);l=b.constTimeNegate(e,l),d=b.constTimeNegate(s,d),d=new f(t.mul(d.px,r.beta),d.py,d.pz),o=l.add(d),i=u.add(h)}else{const{p:e,f:t}=this.wNAF(n);o=e,i=t}return f.normalizeZ([o,i])[0]}multiplyAndAddUnsafe(n,e,t){const r=f.BASE,a=(n,e)=>e!==He&&e!==Ke&&n.equals(r)?n.multiply(e):n.multiplyUnsafe(e),o=a(this,e).add(a(n,t));return o.is0()?void 0:o}toAffine(n){return h(this,n)}isTorsionFree(){const{h:n,isTorsionFree:t}=e;if(n===Ke)return!0;if(t)return t(f,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:n,clearCofactor:t}=e;return n===Ke?this:t?t(f,this):this.multiplyUnsafe(e.h)}toRawBytes(n=!0){return Z("isCompressed",n),this.assertValidity(),a(f,this,n)}toHex(n=!0){return Z("isCompressed",n),tn(this.toRawBytes(n))}}f.BASE=new f(e.Gx,e.Gy,t.ONE),f.ZERO=new f(t.ZERO,t.ONE,t.ZERO);const{endo:g,nBitLength:m}=e,b=(y=f,v=g?Math.ceil(m/2):m,{constTimeNegate:Se,hasPrecomputes:n=>1!==Fe(n),unsafeLadder(n,e,t=y.ZERO){let r=n;for(;e>ze;)e&Re&&(t=t.add(r)),r=r.double(),e>>=Re;return t},precomputeWindow(n,e){const{windows:t,windowSize:r}=Be(e,v),a=[];let o=n,i=o;for(let n=0;n<t;n++){i=o,a.push(i);for(let n=1;n<r;n++)i=i.add(o),a.push(i);o=i.double()}return a},wNAF(n,e,t){let r=y.ZERO,a=y.BASE;const o=Be(n,v);for(let n=0;n<o.windows;n++){const{nextN:i,offset:s,isZero:c,isNeg:l,isNegF:u,offsetF:d}=Ce(t,n,o);t=i,c?a=a.add(Se(u,e[d])):r=r.add(Se(l,e[s]))}return{p:r,f:a}},wNAFUnsafe(n,e,t,r=y.ZERO){const a=Be(n,v);for(let n=0;n<a.windows&&t!==ze;n++){const{nextN:o,offset:i,isZero:s,isNeg:c}=Ce(t,n,a);if(t=o,!s){const n=e[i];r=r.add(c?n.negate():n)}}return r},getPrecomputes(n,e,t){let r=Oe.get(e);return r||(r=this.precomputeWindow(e,n),1!==n&&Oe.set(e,t(r))),r},wNAFCached(n,e,t){const r=Fe(n);return this.wNAF(r,this.getPrecomputes(r,n,t),e)},wNAFCachedUnsafe(n,e,t,r){const a=Fe(n);return 1===a?this.unsafeLadder(n,e,r):this.wNAFUnsafe(a,this.getPrecomputes(a,n,t),e,r)},setWindowSize(n,e){Te(e,v),Ue.set(n,e),Oe.delete(n)}});var y,v;return{CURVE:e,ProjectivePoint:f,normPrivateKeyToScalar:u,weierstrassEquation:i,isWithinCurveOrder:function(n){return vn(n,Ke,e.n)}}}function Je(n){const e=function(n){const e=Le(n);return Pn(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}(n),{Fp:t,n:r,nByteLength:a,nBitLength:o}=e,i=t.BYTES+1,s=2*t.BYTES+1;function c(n){return On(n,r)}function l(n){return Fn(n,r)}const{ProjectivePoint:u,normPrivateKeyToScalar:d,weierstrassEquation:h,isWithinCurveOrder:p}=Qe({...e,toBytes(n,e,r){const a=e.toAffine(),o=t.toBytes(a.x),i=bn;return Z("isCompressed",r),r?i(Uint8Array.from([e.hasEvenY()?2:3]),o):i(Uint8Array.from([4]),o,t.toBytes(a.y))},fromBytes(n){const e=n.length,r=n[0],a=n.subarray(1);if(e!==i||2!==r&&3!==r){if(e===s&&4===r){return{x:t.fromBytes(a.subarray(0,t.BYTES)),y:t.fromBytes(a.subarray(t.BYTES,2*t.BYTES))}}throw new Error("invalid Point, expected length of "+i+", or uncompressed "+s+", got "+e)}{const n=hn(a);if(!vn(n,Ke,t.ORDER))throw new Error("Point is not on curve");const e=h(n);let o;try{o=t.sqrt(e)}catch(n){const e=n instanceof Error?": "+n.message:"";throw new Error("Point is not on curve"+e)}return!(1&~r)!==((o&Ke)===Ke)&&(o=t.neg(o)),{x:n,y:o}}}});function f(n){return n>r>>Ke}const g=(n,e,t)=>hn(n.slice(e,t));class m{constructor(n,e,t){wn("r",n,Ke,r),wn("s",e,Ke,r),this.r=n,this.s=e,null!=t&&(this.recovery=t),Object.freeze(this)}static fromCompact(n){const e=a;return n=mn("compactSignature",n,2*e),new m(g(n,0,e),g(n,e,2*e))}static fromDER(n){const{r:e,s:t}=Ge.toSig(mn("DER",n));return new m(e,t)}assertValidity(){}addRecoveryBit(n){return new m(this.r,this.s,n)}recoverPublicKey(n){const{r:r,s:a,recovery:o}=this,i=w(mn("msgHash",n));if(null==o||![0,1,2,3].includes(o))throw new Error("recovery id invalid");const s=2===o||3===o?r+e.n:r;if(s>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");const d=1&o?"03":"02",h=u.fromHex(d+qe(s,t.BYTES)),p=l(s),f=c(-i*p),g=c(a*p),m=u.BASE.multiplyAndAddUnsafe(h,f,g);if(!m)throw new Error("point at infinify");return m.assertValidity(),m}hasHighS(){return f(this.s)}normalizeS(){return this.hasHighS()?new m(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return dn(this.toDERHex())}toDERHex(){return Ge.hexFromSig(this)}toCompactRawBytes(){return dn(this.toCompactHex())}toCompactHex(){const n=a;return qe(this.r,n)+qe(this.s,n)}}const b={isValidPrivateKey(n){try{return d(n),!0}catch(n){return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{const n=Vn(e.n);return function(n,e,t=!1){const r=n.length,a=_n(e),o=Vn(e);if(r<16||r<o||r>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+r);const i=On(t?pn(n):hn(n),e-zn)+zn;return t?gn(i,a):fn(i,a)}(e.randomBytes(n),e.n)},precompute:(n=8,e=u.BASE)=>(e._setWindowSize(n),e.multiply(BigInt(3)),e)};function y(n){if("bigint"==typeof n)return!1;if(n instanceof u)return!0;const r=mn("key",n).length,o=t.BYTES,i=o+1,s=2*o+1;return e.allowedPrivateKeyLengths||a===i?void 0:r===i||r===s}const v=e.bits2int||function(n){if(n.length>8192)throw new Error("input is too large");const e=hn(n),t=8*n.length-o;return t>0?e>>BigInt(t):e},w=e.bits2int_modN||function(n){return c(v(n))},k=kn(o);function A(n){return wn("num < 2^"+o,n,He,k),fn(n,a)}function E(n,r,a=x){if(["recovered","canonical"].some(n=>n in a))throw new Error("sign() legacy options not supported");const{hash:o,randomBytes:i}=e;let{lowS:s,prehash:h,extraEntropy:g}=a;null==s&&(s=!0),n=mn("msgHash",n),De(a),h&&(n=mn("prehashed msgHash",o(n)));const b=w(n),y=d(r),k=[A(y),A(b)];if(null!=g&&!1!==g){const n=!0===g?i(t.BYTES):g;k.push(mn("extraEntropy",n))}const E=bn(...k),P=b;return{seed:E,k2sig:function(n){const e=v(n);if(!p(e))return;const t=l(e),r=u.BASE.multiply(e).toAffine(),a=c(r.x);if(a===He)return;const o=c(t*c(P+a*y));if(o===He)return;let i=(r.x===a?0:2)|Number(r.y&Ke),d=o;return s&&f(o)&&(d=function(n){return f(n)?c(-n):n}(o),i^=1),new m(a,d,i)}}}const x={lowS:e.lowS,prehash:!1},P={lowS:e.lowS,prehash:!1};return u.BASE._setWindowSize(8),{CURVE:e,getPublicKey:function(n,e=!0){return u.fromPrivateKey(n).toRawBytes(e)},getSharedSecret:function(n,e,t=!0){if(!0===y(n))throw new Error("first arg must be private key");if(!1===y(e))throw new Error("second arg must be public key");return u.fromHex(e).multiply(d(n)).toRawBytes(t)},sign:function(n,t,r=x){const{seed:a,k2sig:o}=E(n,t,r),i=e,s=function(n,e,t){if("number"!=typeof n||n<2)throw new Error("hashLen must be a number");if("number"!=typeof e||e<2)throw new Error("qByteLen must be a number");if("function"!=typeof t)throw new Error("hmacFn must be a function");let r=An(n),a=An(n),o=0;const i=()=>{r.fill(1),a.fill(0),o=0},s=(...n)=>t(a,r,...n),c=(n=An(0))=>{a=s(En([0]),n),r=s(),0!==n.length&&(a=s(En([1]),n),r=s())},l=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let n=0;const t=[];for(;n<e;){r=s();const e=r.slice();t.push(e),n+=r.length}return bn(...t)};return(n,e)=>{let t;for(i(),c(n);!(t=e(l()));)c();return i(),t}}(i.hash.outputLen,i.nByteLength,i.hmac);return s(a,o)},verify:function(n,t,r,a=P){const o=n;t=mn("msgHash",t),r=mn("publicKey",r);const{lowS:i,prehash:s,format:d}=a;if(De(a),"strict"in a)throw new Error("options.strict was renamed to lowS");if(void 0!==d&&"compact"!==d&&"der"!==d)throw new Error("format must be compact or der");const h="string"==typeof o||$(o),p=!h&&!d&&"object"==typeof o&&null!==o&&"bigint"==typeof o.r&&"bigint"==typeof o.s;if(!h&&!p)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let f,g;try{if(p&&(f=new m(o.r,o.s)),h){try{"compact"!==d&&(f=m.fromDER(o))}catch(n){if(!(n instanceof Ge.Err))throw n}f||"der"===d||(f=m.fromCompact(o))}g=u.fromHex(r)}catch(n){return!1}if(!f)return!1;if(i&&f.hasHighS())return!1;s&&(t=e.hash(t));const{r:b,s:y}=f,v=w(t),k=l(y),A=c(v*k),E=c(b*k),x=u.BASE.multiplyAndAddUnsafe(g,A,E)?.toAffine();return!!x&&c(x.x)===b},ProjectivePoint:u,Signature:m,utils:b}}function $e(n){return{hash:n,hmac:(e,...t)=>Ne(n,e,H(...t)),randomBytes:V}}const We=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Ze=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Ye=BigInt(0),Xe=BigInt(1),nt=BigInt(2),et=(n,e)=>(n+e/nt)/e;const tt=Kn(We,void 0,void 0,{sqrt:function(n){const e=We,t=BigInt(3),r=BigInt(6),a=BigInt(11),o=BigInt(22),i=BigInt(23),s=BigInt(44),c=BigInt(88),l=n*n*n%e,u=l*l*n%e,d=Un(u,t,e)*u%e,h=Un(d,t,e)*u%e,p=Un(h,nt,e)*l%e,f=Un(p,a,e)*p%e,g=Un(f,o,e)*f%e,m=Un(g,s,e)*g%e,b=Un(m,c,e)*m%e,y=Un(b,s,e)*g%e,v=Un(y,t,e)*u%e,w=Un(v,i,e)*f%e,k=Un(w,r,e)*l%e,A=Un(k,nt,e);if(!tt.eql(tt.sqr(A),n))throw new Error("Cannot find square root");return A}}),rt=function(n,e){const t=e=>Je({...n,...$e(e)});return{...t(e),create:t}}({a:Ye,b:BigInt(7),Fp:tt,n:Ze,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=Ze,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-Xe*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),s=et(o*n,e),c=et(-r*n,e);let l=On(n-s*t-c*a,e),u=On(-s*r-c*o,e);const d=l>i,h=u>i;if(d&&(l=e-l),h&&(u=e-u),l>i||u>i)throw new Error("splitScalar: Endomorphism failed, k="+n);return{k1neg:d,k1:l,k2neg:h,k2:u}}}},xe),at=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),ot=(()=>Uint8Array.from(new Array(16).fill(0).map((n,e)=>e)))(),it=(()=>ot.map(n=>(9*n+5)%16))(),st=(()=>{const n=[[ot],[it]];for(let e=0;e<4;e++)for(let t of n)t.push(t[e].map(n=>at[n]));return n})(),ct=(()=>st[0])(),lt=(()=>st[1])(),ut=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(n=>Uint8Array.from(n)),dt=ct.map((n,e)=>n.map(n=>ut[e][n])),ht=lt.map((n,e)=>n.map(n=>ut[e][n])),pt=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),ft=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);function gt(n,e,t,r){return 0===n?e^t^r:1===n?e&t|~e&r:2===n?(e|~t)^r:3===n?e&r|t&~r:e^(t|~r)}const mt=new Uint32Array(16);class bt extends $n{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:n,h1:e,h2:t,h3:r,h4:a}=this;return[n,e,t,r,a]}set(n,e,t,r,a){this.h0=0|n,this.h1=0|e,this.h2=0|t,this.h3=0|r,this.h4=0|a}process(n,e){for(let t=0;t<16;t++,e+=4)mt[t]=n.getUint32(e,!0);let t=0|this.h0,r=t,a=0|this.h1,o=a,i=0|this.h2,s=i,c=0|this.h3,l=c,u=0|this.h4,d=u;for(let n=0;n<5;n++){const e=4-n,h=pt[n],p=ft[n],f=ct[n],g=lt[n],m=dt[n],b=ht[n];for(let e=0;e<16;e++){const r=z(t+gt(n,a,i,c)+mt[f[e]]+h,m[e])+u|0;t=u,u=c,c=0|z(i,10),i=a,a=r}for(let n=0;n<16;n++){const t=z(r+gt(e,o,s,l)+mt[g[n]]+p,b[n])+d|0;r=d,d=l,l=0|z(s,10),s=o,o=t}}this.set(this.h1+i+l|0,this.h2+c+d|0,this.h3+u+r|0,this.h4+t+o|0,this.h0+a+s|0)}roundClean(){P(mt)}destroy(){this.destroyed=!0,P(this.buffer),this.set(0,0,0,0,0)}}const yt=_(()=>new bt);
3
- /*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function vt(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name}function wt(n,e){return!!Array.isArray(e)&&(0===e.length||(n?e.every(n=>"string"==typeof n):e.every(n=>Number.isSafeInteger(n))))}function kt(n){if("function"!=typeof n)throw new Error("function expected");return!0}function At(n,e){if("string"!=typeof e)throw new Error(`${n}: string expected`);return!0}function Et(n){if(!Number.isSafeInteger(n))throw new Error(`invalid integer: ${n}`)}function xt(n){if(!Array.isArray(n))throw new Error("array expected")}function Pt(n,e){if(!wt(!0,e))throw new Error(`${n}: array of strings expected`)}function It(n,e){if(!wt(!1,e))throw new Error(`${n}: array of numbers expected`)}function Nt(...n){const e=n=>n,t=(n,e)=>t=>n(e(t));return{encode:n.map(n=>n.encode).reduceRight(t,e),decode:n.map(n=>n.decode).reduce(t,e)}}function zt(n){const e="string"==typeof n?n.split(""):n,t=e.length;Pt("alphabet",e);const r=new Map(e.map((n,e)=>[n,e]));return{encode:r=>(xt(r),r.map(r=>{if(!Number.isSafeInteger(r)||r<0||r>=t)throw new Error(`alphabet.encode: digit index outside alphabet "${r}". Allowed: ${n}`);return e[r]})),decode:e=>(xt(e),e.map(e=>{At("alphabet.decode",e);const t=r.get(e);if(void 0===t)throw new Error(`Unknown letter: "${e}". Allowed: ${n}`);return t}))}}function Rt(n=""){return At("join",n),{encode:e=>(Pt("join.decode",e),e.join(n)),decode:e=>(At("join.decode",e),e.split(n))}}function St(n,e="="){return Et(n),At("padding",e),{encode(t){for(Pt("padding.encode",t);t.length*n%8;)t.push(e);return t},decode(t){Pt("padding.decode",t);let r=t.length;if(r*n%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;r>0&&t[r-1]===e;r--){if((r-1)*n%8==0)throw new Error("padding: invalid, string has too much padding")}return t.slice(0,r)}}}function Tt(n){return kt(n),{encode:n=>n,decode:e=>n(e)}}function Bt(n,e,t){if(e<2)throw new Error(`convertRadix: invalid from=${e}, base cannot be less than 2`);if(t<2)throw new Error(`convertRadix: invalid to=${t}, base cannot be less than 2`);if(xt(n),!n.length)return[];let r=0;const a=[],o=Array.from(n,n=>{if(Et(n),n<0||n>=e)throw new Error(`invalid integer: ${n}`);return n}),i=o.length;for(;;){let n=0,s=!0;for(let a=r;a<i;a++){const i=o[a],c=e*n,l=c+i;if(!Number.isSafeInteger(l)||c/e!==n||l-i!==c)throw new Error("convertRadix: carry overflow");const u=l/t;n=l%t;const d=Math.floor(u);if(o[a]=d,!Number.isSafeInteger(d)||d*t+n!==l)throw new Error("convertRadix: carry overflow");s&&(d?s=!1:r=a)}if(a.push(n),s)break}for(let e=0;e<n.length-1&&0===n[e];e++)a.push(0);return a.reverse()}const Ct=(n,e)=>0===e?n:Ct(e,n%e),Ot=(n,e)=>n+(e-Ct(n,e)),Ut=(()=>{let n=[];for(let e=0;e<40;e++)n.push(2**e);return n})();function Ft(n,e,t,r){if(xt(n),e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(t<=0||t>32)throw new Error(`convertRadix2: wrong to=${t}`);if(Ot(e,t)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${t} carryBits=${Ot(e,t)}`);let a=0,o=0;const i=Ut[e],s=Ut[t]-1,c=[];for(const r of n){if(Et(r),r>=i)throw new Error(`convertRadix2: invalid data word=${r} from=${e}`);if(a=a<<e|r,o+e>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${e}`);for(o+=e;o>=t;o-=t)c.push((a>>o-t&s)>>>0);const n=Ut[o];if(void 0===n)throw new Error("invalid carry");a&=n-1}if(a=a<<t-o&s,!r&&o>=e)throw new Error("Excess padding");if(!r&&a>0)throw new Error(`Non-zero padding: ${a}`);return r&&o>0&&c.push(a>>>0),c}function jt(n){Et(n);return{encode:e=>{if(!vt(e))throw new Error("radix.encode input should be Uint8Array");return Bt(Array.from(e),256,n)},decode:e=>(It("radix.decode",e),Uint8Array.from(Bt(e,n,256)))}}function Lt(n,e=!1){if(Et(n),n<=0||n>32)throw new Error("radix2: bits should be in (0..32]");if(Ot(8,n)>32||Ot(n,8)>32)throw new Error("radix2: carry overflow");return{encode:t=>{if(!vt(t))throw new Error("radix2.encode input should be Uint8Array");return Ft(Array.from(t),8,n,!e)},decode:t=>(It("radix2.decode",t),Uint8Array.from(Ft(t,n,8,e)))}}function Dt(n){return kt(n),function(...e){try{return n.apply(null,e)}catch(n){}}}function Mt(n,e){return Et(n),kt(e),{encode(t){if(!vt(t))throw new Error("checksum.encode: input should be Uint8Array");const r=e(t).slice(0,n),a=new Uint8Array(t.length+n);return a.set(t),a.set(r,t.length),a},decode(t){if(!vt(t))throw new Error("checksum.decode: input should be Uint8Array");const r=t.slice(0,-n),a=t.slice(-n),o=e(r).slice(0,n);for(let e=0;e<n;e++)if(o[e]!==a[e])throw new Error("Invalid checksum");return r}}}const Gt={alphabet:zt,chain:Nt,checksum:Mt,convertRadix:Bt,convertRadix2:Ft,radix:jt,radix2:Lt,join:Rt,padding:St};Nt(Lt(4),zt("0123456789ABCDEF"),Rt("")),Nt(Lt(5),zt("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),St(5),Rt("")),Nt(Lt(5),zt("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),Rt("")),Nt(Lt(5),zt("0123456789ABCDEFGHIJKLMNOPQRSTUV"),St(5),Rt("")),Nt(Lt(5),zt("0123456789ABCDEFGHIJKLMNOPQRSTUV"),Rt("")),Nt(Lt(5),zt("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),Rt(""),Tt(n=>n.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1")));const qt=(()=>"function"==typeof Uint8Array.from([]).toBase64&&"function"==typeof Uint8Array.fromBase64)();qt||Nt(Lt(6),zt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),St(6),Rt("")),Nt(Lt(6),zt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Rt("")),qt||Nt(Lt(6),zt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),St(6),Rt("")),Nt(Lt(6),zt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),Rt(""));const Ht=n=>Nt(jt(58),zt(n),Rt("")),Kt=Ht("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");Ht("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"),Ht("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");const _t=Nt(zt("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),Rt("")),Vt=[996825010,642813549,513874426,1027748829,705979059];function Qt(n){const e=n>>25;let t=(33554431&n)<<5;for(let n=0;n<Vt.length;n++)1==(e>>n&1)&&(t^=Vt[n]);return t}function Jt(n,e,t=1){const r=n.length;let a=1;for(let e=0;e<r;e++){const t=n.charCodeAt(e);if(t<33||t>126)throw new Error(`Invalid prefix (${n})`);a=Qt(a)^t>>5}a=Qt(a);for(let e=0;e<r;e++)a=Qt(a)^31&n.charCodeAt(e);for(let n of e)a=Qt(a)^n;for(let n=0;n<6;n++)a=Qt(a);return a^=t,_t.encode(Ft([a%Ut[30]],30,5,!1))}function $t(n){const e="bech32"===n?1:734539939,t=Lt(5),r=t.decode,a=t.encode,o=Dt(r);function i(n,t,r=90){At("bech32.encode prefix",n),vt(t)&&(t=Array.from(t)),It("bech32.encode",t);const a=n.length;if(0===a)throw new TypeError(`Invalid prefix length ${a}`);const o=a+7+t.length;if(!1!==r&&o>r)throw new TypeError(`Length ${o} exceeds limit ${r}`);const i=n.toLowerCase(),s=Jt(i,t,e);return`${i}1${_t.encode(t)}${s}`}function s(n,t=90){At("bech32.decode input",n);const r=n.length;if(r<8||!1!==t&&r>t)throw new TypeError(`invalid string length: ${r} (${n}). Expected (8..${t})`);const a=n.toLowerCase();if(n!==a&&n!==n.toUpperCase())throw new Error("String must be lowercase or uppercase");const o=a.lastIndexOf("1");if(0===o||-1===o)throw new Error('Letter "1" must be present between prefix and data only');const i=a.slice(0,o),s=a.slice(o+1);if(s.length<6)throw new Error("Data must be at least 6 characters long");const c=_t.decode(s).slice(0,-6),l=Jt(i,c,e);if(!s.endsWith(l))throw new Error(`Invalid checksum in ${n}: expected "${l}"`);return{prefix:i,words:c}}return{encode:i,decode:s,encodeFromBytes:function(n,e){return i(n,a(e))},decodeToBytes:function(n){const{prefix:e,words:t}=s(n,!1);return{prefix:e,words:t,bytes:r(t)}},decodeUnsafe:Dt(s),fromWords:r,fromWordsUnsafe:o,toWords:a}}$t("bech32"),$t("bech32m");(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)()||Nt(Lt(4),zt("0123456789abcdef"),Rt(""),Tt(n=>{if("string"!=typeof n||n.length%2!=0)throw new TypeError(`hex.decode: expected string, got ${typeof n} with length ${n.length}`);return n.toLowerCase()}));const Wt=rt.ProjectivePoint,Zt=(n=>Nt(Mt(4,e=>n(n(e))),Kt))(xe);function Yt(n){k(n);const e=0===n.length?"0":function(n){if(k(n),T)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=B[n[t]];return e}(n);return BigInt("0x"+e)}function Xt(n){if("bigint"!=typeof n)throw new Error("bigint expected");return function(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);if(T)return Uint8Array.fromHex(n);const e=n.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(t);for(let e=0,a=0;e<t;e++,a+=2){const t=D(n.charCodeAt(a)),o=D(n.charCodeAt(a+1));if(void 0===t||void 0===o){const e=n[a]+n[a+1];throw new Error('hex string expected, got non-hex character "'+e+'" at index '+a)}r[e]=16*t+o}return r}(n.toString(16).padStart(64,"0"))}const nr=M("Bitcoin seed"),er={private:76066276,public:76067358},tr=2147483648,rr=n=>{if(!Number.isSafeInteger(n)||n<0||n>2**32-1)throw new Error("invalid number, should be from 0 to 2**32-1, got "+n);const e=new Uint8Array(4);return I(e).setUint32(0,n,!1),e};class ar{get fingerprint(){if(!this.pubHash)throw new Error("No publicKey set!");return I(this.pubHash).getUint32(0,!1)}get identifier(){return this.pubHash}get pubKeyHash(){return this.pubHash}get privateKey(){return this.privKeyBytes||null}get publicKey(){return this.pubKey||null}get privateExtendedKey(){const n=this.privateKey;if(!n)throw new Error("No private key");return Zt.encode(this.serialize(this.versions.private,H(new Uint8Array([0]),n)))}get publicExtendedKey(){if(!this.pubKey)throw new Error("No public key");return Zt.encode(this.serialize(this.versions.public,this.pubKey))}static fromMasterSeed(n,e=er){if(k(n),8*n.length<128||8*n.length>512)throw new Error("HDKey: seed length must be between 128 and 512 bits; 256 bits is advised, got "+n.length);const t=Ne(Pe,nr,n);return new ar({versions:e,chainCode:t.slice(32),privateKey:t.slice(0,32)})}static fromExtendedKey(n,e=er){const t=Zt.decode(n),r=I(t),a=r.getUint32(0,!1),o={versions:e,depth:t[4],parentFingerprint:r.getUint32(5,!1),index:r.getUint32(9,!1),chainCode:t.slice(13,45)},i=t.slice(45),s=0===i[0];if(a!==e[s?"private":"public"])throw new Error("Version mismatch");return new ar(s?{...o,privateKey:i.slice(1)}:{...o,publicKey:i})}static fromJSON(n){return ar.fromExtendedKey(n.xpriv)}constructor(n){if(this.depth=0,this.index=0,this.chainCode=null,this.parentFingerprint=0,!n||"object"!=typeof n)throw new Error("HDKey.constructor must not be called directly");if(this.versions=n.versions||er,this.depth=n.depth||0,this.chainCode=n.chainCode||null,this.index=n.index||0,this.parentFingerprint=n.parentFingerprint||0,!this.depth&&(this.parentFingerprint||this.index))throw new Error("HDKey: zero depth with non-zero index/parent fingerprint");if(n.publicKey&&n.privateKey)throw new Error("HDKey: publicKey and privateKey at same time.");if(n.privateKey){if(!rt.utils.isValidPrivateKey(n.privateKey))throw new Error("Invalid private key");this.privKey="bigint"==typeof n.privateKey?n.privateKey:Yt(n.privateKey),this.privKeyBytes=Xt(this.privKey),this.pubKey=rt.getPublicKey(n.privateKey,!0)}else{if(!n.publicKey)throw new Error("HDKey: no public or private key provided");this.pubKey=Wt.fromHex(n.publicKey).toRawBytes(!0)}var e;this.pubHash=(e=this.pubKey,yt(xe(e)))}derive(n){if(!/^[mM]'?/.test(n))throw new Error('Path must start with "m" or "M"');if(/^[mM]'?$/.test(n))return this;const e=n.replace(/^[mM]'?\//,"").split("/");let t=this;for(const n of e){const e=/^(\d+)('?)$/.exec(n),r=e&&e[1];if(!e||3!==e.length||"string"!=typeof r)throw new Error("invalid child index: "+n);let a=+r;if(!Number.isSafeInteger(a)||a>=tr)throw new Error("Invalid index");"'"===e[2]&&(a+=tr),t=t.deriveChild(a)}return t}deriveChild(n){if(!this.pubKey||!this.chainCode)throw new Error("No publicKey or chainCode set");let e=rr(n);if(n>=tr){const n=this.privateKey;if(!n)throw new Error("Could not derive hardened child key");e=H(new Uint8Array([0]),n,e)}else e=H(this.pubKey,e);const t=Ne(Pe,this.chainCode,e),r=Yt(t.slice(0,32)),a=t.slice(32);if(!rt.utils.isValidPrivateKey(r))throw new Error("Tweak bigger than curve order");const o={versions:this.versions,chainCode:a,depth:this.depth+1,parentFingerprint:this.fingerprint,index:n};try{if(this.privateKey){const n=On(this.privKey+r,rt.CURVE.n);if(!rt.utils.isValidPrivateKey(n))throw new Error("The tweak was out of range or the resulted private key is invalid");o.privateKey=n}else{const n=Wt.fromHex(this.pubKey).add(Wt.fromPrivateKey(r));if(n.equals(Wt.ZERO))throw new Error("The tweak was equal to negative P, which made the result key invalid");o.publicKey=n.toRawBytes(!0)}return new ar(o)}catch(e){return this.deriveChild(n+1)}}sign(n){if(!this.privateKey)throw new Error("No privateKey set!");return k(n,32),rt.sign(n,this.privKey).toCompactRawBytes()}verify(n,e){if(k(n,32),k(e,64),!this.publicKey)throw new Error("No publicKey set!");let t;try{t=rt.Signature.fromCompact(e)}catch(n){return!1}return rt.verify(t,n,this.publicKey)}wipePrivateData(){return this.privKey=void 0,this.privKeyBytes&&(this.privKeyBytes.fill(0),this.privKeyBytes=void 0),this}toJSON(){return{xpriv:this.privateExtendedKey,xpub:this.publicExtendedKey}}serialize(n,e){if(!this.chainCode)throw new Error("No chainCode set");return k(e,33),H(rr(n),new Uint8Array([this.depth]),rr(this.parentFingerprint),rr(this.index),this.chainCode,e)}}const or="2.43.4";let ir=({docsBaseUrl:n,docsPath:e="",docsSlug:t})=>e?`${n??"https://viem.sh"}${e}${t?`#${t}`:""}`:void 0,sr=`viem@${or}`;class cr extends Error{constructor(n,e={}){const t=e.cause instanceof cr?e.cause.details:e.cause?.message?e.cause.message:e.details,r=e.cause instanceof cr&&e.cause.docsPath||e.docsPath,a=ir?.({...e,docsPath:r});super([n||"An error occurred.","",...e.metaMessages?[...e.metaMessages,""]:[],...a?[`Docs: ${a}`]:[],...t?[`Details: ${t}`]:[],...sr?[`Version: ${sr}`]:[]].join("\n"),e.cause?{cause:e.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=t,this.docsPath=r,this.metaMessages=e.metaMessages,this.name=e.name??this.name,this.shortMessage=n,this.version=or}walk(n){return lr(this,n)}}function lr(n,e){return e?.(n)?n:n&&"object"==typeof n&&"cause"in n&&void 0!==n.cause?lr(n.cause,e):e?null:n}class ur extends cr{constructor({max:n,min:e,signed:t,size:r,value:a}){super(`Number "${a}" is not in safe ${r?`${8*r}-bit ${t?"signed":"unsigned"} `:""}integer range ${n?`(${e} to ${n})`:`(above ${e})`}`,{name:"IntegerOutOfRangeError"})}}class dr extends cr{constructor({givenSize:n,maxSize:e}){super(`Size cannot exceed ${e} bytes. Given size: ${n} bytes.`,{name:"SizeOverflowError"})}}function hr(n,{strict:e=!0}={}){return!!n&&("string"==typeof n&&(e?/^0x[0-9a-fA-F]*$/.test(n):n.startsWith("0x")))}function pr(n){return hr(n,{strict:!1})?Math.ceil((n.length-2)/2):n.length}function fr(n,{dir:e="left"}={}){let t="string"==typeof n?n.replace("0x",""):n,r=0;for(let n=0;n<t.length-1&&"0"===t["left"===e?n:t.length-n-1].toString();n++)r++;return t="left"===e?t.slice(r):t.slice(0,t.length-r),"string"==typeof n?(1===t.length&&"right"===e&&(t=`${t}0`),`0x${t.length%2==1?`0${t}`:t}`):t}class gr extends cr{constructor({offset:n,position:e,size:t}){super(`Slice ${"start"===e?"starting":"ending"} at offset "${n}" is out-of-bounds (size: ${t}).`,{name:"SliceOffsetOutOfBoundsError"})}}class mr extends cr{constructor({size:n,targetSize:e,type:t}){super(`${t.charAt(0).toUpperCase()}${t.slice(1).toLowerCase()} size (${n}) exceeds padding size (${e}).`,{name:"SizeExceedsPaddingSizeError"})}}function br(n,{dir:e,size:t=32}={}){return"string"==typeof n?yr(n,{dir:e,size:t}):function(n,{dir:e,size:t=32}={}){if(null===t)return n;if(n.length>t)throw new mr({size:n.length,targetSize:t,type:"bytes"});const r=new Uint8Array(t);for(let a=0;a<t;a++){const o="right"===e;r[o?a:t-a-1]=n[o?a:n.length-a-1]}return r}(n,{dir:e,size:t})}function yr(n,{dir:e,size:t=32}={}){if(null===t)return n;const r=n.replace("0x","");if(r.length>2*t)throw new mr({size:Math.ceil(r.length/2),targetSize:t,type:"hex"});return`0x${r["right"===e?"padEnd":"padStart"](2*t,"0")}`}const vr=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function wr(n,e={}){return"number"==typeof n||"bigint"==typeof n?Er(n,e):"string"==typeof n?Pr(n,e):"boolean"==typeof n?kr(n,e):Ar(n,e)}function kr(n,e={}){const t=`0x${Number(n)}`;return"number"==typeof e.size?(Br(t,{size:e.size}),br(t,{size:e.size})):t}function Ar(n,e={}){let t="";for(let e=0;e<n.length;e++)t+=vr[n[e]];const r=`0x${t}`;return"number"==typeof e.size?(Br(r,{size:e.size}),br(r,{dir:"right",size:e.size})):r}function Er(n,e={}){const{signed:t,size:r}=e,a=BigInt(n);let o;r?o=t?(1n<<8n*BigInt(r)-1n)-1n:2n**(8n*BigInt(r))-1n:"number"==typeof n&&(o=BigInt(Number.MAX_SAFE_INTEGER));const i="bigint"==typeof o&&t?-o-1n:0;if(o&&a>o||a<i){const e="bigint"==typeof n?"n":"";throw new ur({max:o?`${o}${e}`:void 0,min:`${i}${e}`,signed:t,size:r,value:`${n}${e}`})}const s=`0x${(t&&a<0?(1n<<BigInt(8*r))+BigInt(a):a).toString(16)}`;return r?br(s,{size:r}):s}const xr=new TextEncoder;function Pr(n,e={}){return Ar(xr.encode(n),e)}const Ir=new TextEncoder;function Nr(n,e={}){return"number"==typeof n||"bigint"==typeof n?function(n,e){const t=Er(n,e);return Sr(t)}(n,e):"boolean"==typeof n?function(n,e={}){const t=new Uint8Array(1);if(t[0]=Number(n),"number"==typeof e.size)return Br(t,{size:e.size}),br(t,{size:e.size});return t}(n,e):hr(n)?Sr(n,e):Tr(n,e)}const zr={zero:48,nine:57,A:65,F:70,a:97,f:102};function Rr(n){return n>=zr.zero&&n<=zr.nine?n-zr.zero:n>=zr.A&&n<=zr.F?n-(zr.A-10):n>=zr.a&&n<=zr.f?n-(zr.a-10):void 0}function Sr(n,e={}){let t=n;e.size&&(Br(t,{size:e.size}),t=br(t,{dir:"right",size:e.size}));let r=t.slice(2);r.length%2&&(r=`0${r}`);const a=r.length/2,o=new Uint8Array(a);for(let n=0,e=0;n<a;n++){const t=Rr(r.charCodeAt(e++)),a=Rr(r.charCodeAt(e++));if(void 0===t||void 0===a)throw new cr(`Invalid byte sequence ("${r[e-2]}${r[e-1]}" in "${r}").`);o[n]=16*t+a}return o}function Tr(n,e={}){const t=Ir.encode(n);return"number"==typeof e.size?(Br(t,{size:e.size}),br(t,{dir:"right",size:e.size})):t}function Br(n,{size:e}){if(pr(n)>e)throw new dr({givenSize:pr(n),maxSize:e})}function Cr(n,e={}){const{signed:t}=e;e.size&&Br(n,{size:e.size});const r=BigInt(n);if(!t)return r;const a=(n.length-2)/2;return r<=(1n<<8n*BigInt(a)-1n)-1n?r:r-BigInt(`0x${"f".padStart(2*a,"f")}`)-1n}function Or(n,e={}){return Number(Cr(n,e))}class Ur extends Map{constructor(n){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=n}get(n){const e=super.get(n);return super.has(n)&&void 0!==e&&(this.delete(n),super.set(n,e)),e}set(n,e){if(super.set(n,e),this.maxSize&&this.size>this.maxSize){const n=this.keys().next().value;n&&this.delete(n)}return this}}function Fr(n){const{source:e}=n,t=new Map,r=new Ur(8192),a=new Map,o=({address:n,chainId:e})=>`${n}.${e}`;return{async consume({address:n,chainId:t,client:a}){const i=o({address:n,chainId:t}),s=this.get({address:n,chainId:t,client:a});this.increment({address:n,chainId:t});const c=await s;return await e.set({address:n,chainId:t},c),r.set(i,c),c},async increment({address:n,chainId:e}){const r=o({address:n,chainId:e}),a=t.get(r)??0;t.set(r,a+1)},async get({address:n,chainId:i,client:s}){const c=o({address:n,chainId:i});let l=a.get(c);l||(l=(async()=>{try{const t=await e.get({address:n,chainId:i,client:s}),a=r.get(c)??0;return a>0&&t<=a?a+1:(r.delete(c),t)}finally{this.reset({address:n,chainId:i})}})(),a.set(c,l));return(t.get(c)??0)+await l},reset({address:n,chainId:e}){const r=o({address:n,chainId:e});t.delete(r),a.delete(r)}}}const jr=Fr({source:{async get(n){const{address:e,client:t}=n;return async function(n,{address:e,blockTag:t="latest",blockNumber:r}){return Or(await n.request({method:"eth_getTransactionCount",params:[e,"bigint"==typeof r?Er(r):t]},{dedupe:Boolean(r)}))}(t,{address:e,blockTag:"pending"})},set(){}}});function Lr({r:n,s:e,to:t="hex",v:r,yParity:a}){const o=(()=>{if(0===a||1===a)return a;if(r&&(27n===r||28n===r||r>=35n))return r%2n==0n?1:0;throw new Error("Invalid `v` or `yParity` value")})(),i=`0x${new rt.Signature(Cr(n),Cr(e)).toCompactHex()}${0===o?"1b":"1c"}`;return"hex"===t?i:Sr(i)}function Dr(n,e,t,r){A(n);const a=function(n,e){if(void 0!==e&&"[object Object]"!=={}.toString.call(e))throw new Error("options should be object or undefined");return Object.assign(n,e)}({dkLen:32,asyncTick:10},r),{c:o,dkLen:i,asyncTick:s}=a;if(w(o),w(i),w(s),o<1)throw new Error("iterations (c) should be >= 1");const c=q(e),l=q(t),u=new Uint8Array(i),d=Ne.create(n,c),h=d._cloneInto().update(l);return{c:o,dkLen:i,asyncTick:s,DK:u,PRF:d,PRFSalt:h}}function Mr(n,e,t,r){const{c:a,dkLen:o,DK:i,PRF:s,PRFSalt:c}=Dr(n,e,t,r);let l;const u=new Uint8Array(4),d=I(u),h=new Uint8Array(s.outputLen);for(let n=1,e=0;e<o;n++,e+=s.outputLen){const t=i.subarray(e,e+s.outputLen);d.setInt32(0,n,!1),(l=c._cloneInto(l)).update(u).digestInto(h),t.set(h.subarray(0,t.length));for(let n=1;n<a;n++){s._cloneInto(l).update(h).digestInto(h);for(let n=0;n<t.length;n++)t[n]^=h[n]}}return function(n,e,t,r,a){return n.destroy(),e.destroy(),r&&r.destroy(),P(a),t}(s,c,i,l,h)}function Gr(n){if("string"!=typeof n)throw new TypeError("invalid mnemonic type: "+typeof n);return n.normalize("NFKD")}function qr(n,e=128){if(w(e),e%32!=0||e>256)throw new TypeError("Invalid entropy");return function(n,e){t=n,k(t,16,20,24,28,32);var t;const r=function(n){if(!Array.isArray(n)||2048!==n.length||"string"!=typeof n[0])throw new Error("Wordlist: expected array of 2048 strings");return n.forEach(n=>{if("string"!=typeof n)throw new Error("wordlist: non-string element: "+n)}),Gt.chain(Gt.checksum(1,Hr),Gt.radix2(11,!0),Gt.alphabet(n))}(e).encode(n);return r.join((n=>"あいこくしん"===n[0])(e)?" ":" ")}(V(e/8),n)}const Hr=n=>{const e=8-n.length/4;return new Uint8Array([xe(n)[0]>>e<<e])};function Kr(n,e=""){return Mr(Pe,function(n){const e=Gr(n),t=e.split(" ");if(![12,15,18,21,24].includes(t.length))throw new Error("Invalid mnemonic");return{nfkd:e,words:t}}(n).nfkd,(n=>Gr("mnemonic"+n))(e),{c:2048,dkLen:64})}class _r extends cr{constructor({address:n}){super(`Address "${n}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}const Vr=BigInt(0),Qr=BigInt(1),Jr=BigInt(2),$r=BigInt(7),Wr=BigInt(256),Zr=BigInt(113),Yr=[],Xr=[],na=[];for(let n=0,e=Qr,t=1,r=0;n<24;n++){[t,r]=[r,(2*t+3*r)%5],Yr.push(2*(5*r+t)),Xr.push((n+1)*(n+2)/2%64);let a=Vr;for(let n=0;n<7;n++)e=(e<<Qr^(e>>$r)*Zr)%Wr,e&Jr&&(a^=Qr<<(Qr<<BigInt(n))-Qr);na.push(a)}const ea=ee(na,!0),ta=ea[0],ra=ea[1],aa=(n,e,t)=>t>32?((n,e,t)=>e<<t-32|n>>>64-t)(n,e,t):((n,e,t)=>n<<t|e>>>32-t)(n,e,t),oa=(n,e,t)=>t>32?((n,e,t)=>n<<t-32|e>>>64-t)(n,e,t):((n,e,t)=>e<<t|n>>>32-t)(n,e,t);class ia extends K{constructor(n,e,t,r=!1,a=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=n,this.suffix=e,this.outputLen=t,this.enableXOF=r,this.rounds=a,w(t),!(0<n&&n<200))throw new Error("only keccak-f1600 function is supported");var o;this.state=new Uint8Array(200),this.state32=(o=this.state,new Uint32Array(o.buffer,o.byteOffset,Math.floor(o.byteLength/4)))}clone(){return this._cloneInto()}keccak(){S(this.state32),function(n,e=24){const t=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let e=0;e<10;e++)t[e]=n[e]^n[e+10]^n[e+20]^n[e+30]^n[e+40];for(let e=0;e<10;e+=2){const r=(e+8)%10,a=(e+2)%10,o=t[a],i=t[a+1],s=aa(o,i,1)^t[r],c=oa(o,i,1)^t[r+1];for(let t=0;t<50;t+=10)n[e+t]^=s,n[e+t+1]^=c}let e=n[2],a=n[3];for(let t=0;t<24;t++){const r=Xr[t],o=aa(e,a,r),i=oa(e,a,r),s=Yr[t];e=n[s],a=n[s+1],n[s]=o,n[s+1]=i}for(let e=0;e<50;e+=10){for(let r=0;r<10;r++)t[r]=n[e+r];for(let r=0;r<10;r++)n[e+r]^=~t[(r+2)%10]&t[(r+4)%10]}n[0]^=ta[r],n[1]^=ra[r]}P(t)}(this.state32,this.rounds),S(this.state32),this.posOut=0,this.pos=0}update(n){E(this),k(n=G(n));const{blockLen:e,state:t}=this,r=n.length;for(let a=0;a<r;){const o=Math.min(e-this.pos,r-a);for(let e=0;e<o;e++)t[this.pos++]^=n[a++];this.pos===e&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:n,suffix:e,pos:t,blockLen:r}=this;n[t]^=e,128&e&&t===r-1&&this.keccak(),n[r-1]^=128,this.keccak()}writeInto(n){E(this,!1),k(n),this.finish();const e=this.state,{blockLen:t}=this;for(let r=0,a=n.length;r<a;){this.posOut>=t&&this.keccak();const o=Math.min(t-this.posOut,a-r);n.set(e.subarray(this.posOut,this.posOut+o),r),this.posOut+=o,r+=o}return n}xofInto(n){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(n)}xof(n){return w(n),this.xofInto(new Uint8Array(n))}digestInto(n){if(x(n,this),this.finished)throw new Error("digest() was already called");return this.writeInto(n),this.destroy(),n}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,P(this.state)}_cloneInto(n){const{blockLen:e,suffix:t,outputLen:r,rounds:a,enableXOF:o}=this;return n||(n=new ia(e,t,r,o,a)),n.state32.set(this.state32),n.pos=this.pos,n.posOut=this.posOut,n.finished=this.finished,n.rounds=a,n.suffix=t,n.outputLen=r,n.enableXOF=o,n.destroyed=this.destroyed,n}}const sa=(()=>{return n=1,e=136,t=32,_(()=>new ia(e,n,t));var n,e,t})();function ca(n,e){const t=e||"hex",r=sa(hr(n,{strict:!1})?Nr(n):n);return"bytes"===t?r:wr(r)}const la=new Ur(8192);function ua(n,e){if(la.has(`${n}.${e}`))return la.get(`${n}.${e}`);const t=e?`${e}${n.toLowerCase()}`:n.substring(2).toLowerCase(),r=ca(Tr(t),"bytes"),a=(e?t.substring(`${e}0x`.length):t).split("");for(let n=0;n<40;n+=2)r[n>>1]>>4>=8&&a[n]&&(a[n]=a[n].toUpperCase()),(15&r[n>>1])>=8&&a[n+1]&&(a[n+1]=a[n+1].toUpperCase());const o=`0x${a.join("")}`;return la.set(`${n}.${e}`,o),o}const da=/^0x[a-fA-F0-9]{40}$/,ha=new Ur(8192);function pa(n,e){const{strict:t=!0}=e??{},r=`${n}.${t}`;if(ha.has(r))return ha.get(r);const a=!(!da.test(n)||n.toLowerCase()!==n&&t&&ua(n)!==n);return ha.set(r,a),a}function fa(n){if("string"==typeof n){if(!pa(n,{strict:!1}))throw new _r({address:n});return{address:n,type:"json-rpc"}}if(!pa(n.address,{strict:!1}))throw new _r({address:n.address});return{address:n.address,nonceManager:n.nonceManager,sign:n.sign,signAuthorization:n.signAuthorization,signMessage:n.signMessage,signTransaction:n.signTransaction,signTypedData:n.signTypedData,source:"custom",type:"local"}}function ga(n){return ua(`0x${ca(`0x${n.substring(4)}`).substring(26)}`)}let ma=!1;async function ba({hash:n,privateKey:e,to:t="object"}){const{r:r,s:a,recovery:o}=rt.sign(n.slice(2),e.slice(2),{lowS:!0,extraEntropy:hr(ma,{strict:!1})?Sr(ma):ma}),i={r:Er(r,{size:32}),s:Er(a,{size:32}),v:o?28n:27n,yParity:o};return"bytes"===t||"hex"===t?Lr({...i,to:t}):i}function ya(n){return"string"==typeof n[0]?va(n):function(n){let e=0;for(const t of n)e+=t.length;const t=new Uint8Array(e);let r=0;for(const e of n)t.set(e,r),r+=e.length;return t}(n)}function va(n){return`0x${n.reduce((n,e)=>n+e.replace("0x",""),"")}`}class wa extends cr{constructor({offset:n}){super(`Offset \`${n}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class ka extends cr{constructor({length:n,position:e}){super(`Position \`${e}\` is out of bounds (\`0 < position < ${n}\`).`,{name:"PositionOutOfBoundsError"})}}class Aa extends cr{constructor({count:n,limit:e}){super(`Recursive read limit of \`${e}\` exceeded (recursive read count: \`${n}\`).`,{name:"RecursiveReadLimitExceededError"})}}const Ea={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new Aa({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(n){if(n<0||n>this.bytes.length-1)throw new ka({length:this.bytes.length,position:n})},decrementPosition(n){if(n<0)throw new wa({offset:n});const e=this.position-n;this.assertPosition(e),this.position=e},getReadCount(n){return this.positionReadCount.get(n||this.position)||0},incrementPosition(n){if(n<0)throw new wa({offset:n});const e=this.position+n;this.assertPosition(e),this.position=e},inspectByte(n){const e=n??this.position;return this.assertPosition(e),this.bytes[e]},inspectBytes(n,e){const t=e??this.position;return this.assertPosition(t+n-1),this.bytes.subarray(t,t+n)},inspectUint8(n){const e=n??this.position;return this.assertPosition(e),this.bytes[e]},inspectUint16(n){const e=n??this.position;return this.assertPosition(e+1),this.dataView.getUint16(e)},inspectUint24(n){const e=n??this.position;return this.assertPosition(e+2),(this.dataView.getUint16(e)<<8)+this.dataView.getUint8(e+2)},inspectUint32(n){const e=n??this.position;return this.assertPosition(e+3),this.dataView.getUint32(e)},pushByte(n){this.assertPosition(this.position),this.bytes[this.position]=n,this.position++},pushBytes(n){this.assertPosition(this.position+n.length-1),this.bytes.set(n,this.position),this.position+=n.length},pushUint8(n){this.assertPosition(this.position),this.bytes[this.position]=n,this.position++},pushUint16(n){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,n),this.position+=2},pushUint24(n){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,n>>8),this.dataView.setUint8(this.position+2,255&n),this.position+=3},pushUint32(n){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,n),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const n=this.inspectByte();return this.position++,n},readBytes(n,e){this.assertReadLimit(),this._touch();const t=this.inspectBytes(n);return this.position+=e??n,t},readUint8(){this.assertReadLimit(),this._touch();const n=this.inspectUint8();return this.position+=1,n},readUint16(){this.assertReadLimit(),this._touch();const n=this.inspectUint16();return this.position+=2,n},readUint24(){this.assertReadLimit(),this._touch();const n=this.inspectUint24();return this.position+=3,n},readUint32(){this.assertReadLimit(),this._touch();const n=this.inspectUint32();return this.position+=4,n},get remaining(){return this.bytes.length-this.position},setPosition(n){const e=this.position;return this.assertPosition(n),this.position=n,()=>this.position=e},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const n=this.getReadCount();this.positionReadCount.set(this.position,n+1),n>0&&this.recursiveReadCount++}};function xa(n,{recursiveReadLimit:e=8192}={}){const t=Object.create(Ea);return t.bytes=n,t.dataView=new DataView(n.buffer??n,n.byteOffset,n.byteLength),t.positionReadCount=new Map,t.recursiveReadLimit=e,t}function Pa(n,e="hex"){const t=Ia(n),r=xa(new Uint8Array(t.length));return t.encode(r),"hex"===e?Ar(r.bytes):r.bytes}function Ia(n){return Array.isArray(n)?function(n){const e=n.reduce((n,e)=>n+e.length,0),t=Na(e);return{length:e<=55?1+e:1+t+e,encode(r){e<=55?r.pushByte(192+e):(r.pushByte(247+t),1===t?r.pushUint8(e):2===t?r.pushUint16(e):3===t?r.pushUint24(e):r.pushUint32(e));for(const{encode:e}of n)e(r)}}}(n.map(n=>Ia(n))):function(n){const e="string"==typeof n?Sr(n):n,t=Na(e.length),r=1===e.length&&e[0]<128?1:e.length<=55?1+e.length:1+t+e.length;return{length:r,encode(n){1===e.length&&e[0]<128?n.pushBytes(e):e.length<=55?(n.pushByte(128+e.length),n.pushBytes(e)):(n.pushByte(183+t),1===t?n.pushUint8(e.length):2===t?n.pushUint16(e.length):3===t?n.pushUint24(e.length):n.pushUint32(e.length),n.pushBytes(e))}}}(n)}function Na(n){if(n<256)return 1;if(n<65536)return 2;if(n<2**24)return 3;if(n<2**32)return 4;throw new cr("Length is too large.")}function za(n){const{chainId:e,nonce:t,to:r}=n,a=n.contractAddress??n.address,o=ca(va(["0x05",Pa([e?Er(e):"0x",a,t?Er(t):"0x"])]));return"bytes"===r?Sr(o):o}async function Ra(n){const{chainId:e,nonce:t,privateKey:r,to:a="object"}=n,o=n.contractAddress??n.address,i=await ba({hash:za({address:o,chainId:e,nonce:t}),privateKey:r,to:a});return"object"===a?{address:o,chainId:e,nonce:t,...i}:i}function Sa(n,e){return ca(function(n){const e="string"==typeof n?Pr(n):"string"==typeof n.raw?n.raw:Ar(n.raw);return ya([Pr(`Ethereum Signed Message:\n${pr(e)}`),e])}(n),e)}async function Ta({message:n,privateKey:e}){return await ba({hash:Sa(n),privateKey:e,to:"hex"})}const Ba={ether:-9,wei:9};function Ca(n,e="wei"){return function(n,e){let t=n.toString();const r=t.startsWith("-");r&&(t=t.slice(1)),t=t.padStart(e,"0");let[a,o]=[t.slice(0,t.length-e),t.slice(t.length-e)];return o=o.replace(/(0+)$/,""),`${r?"-":""}${a||"0"}${o?`.${o}`:""}`}(n,Ba[e])}function Oa(n){const e=Object.entries(n).map(([n,e])=>void 0===e||!1===e?null:[n,e]).filter(Boolean),t=e.reduce((n,[e])=>Math.max(n,e.length),0);return e.map(([n,e])=>` ${`${n}:`.padEnd(t+1)} ${e}`).join("\n")}class Ua extends cr{constructor({v:n}){super(`Invalid \`v\` value "${n}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class Fa extends cr{constructor({transaction:n}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",Oa(n),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class ja extends cr{constructor({storageKey:n}){super(`Size for storage key "${n}" is invalid. Expected 32 bytes. Got ${Math.floor((n.length-2)/2)} bytes.`,{name:"InvalidStorageKeySizeError"})}}function La(n){const{kzg:e}=n,t=n.to??("string"==typeof n.blobs[0]?"hex":"bytes"),r="string"==typeof n.blobs[0]?n.blobs.map(n=>Sr(n)):n.blobs,a=[];for(const n of r)a.push(Uint8Array.from(e.blobToKzgCommitment(n)));return"bytes"===t?a:a.map(n=>Ar(n))}function Da(n){const{kzg:e}=n,t=n.to??("string"==typeof n.blobs[0]?"hex":"bytes"),r="string"==typeof n.blobs[0]?n.blobs.map(n=>Sr(n)):n.blobs,a="string"==typeof n.commitments[0]?n.commitments.map(n=>Sr(n)):n.commitments,o=[];for(let n=0;n<r.length;n++){const t=r[n],i=a[n];o.push(Uint8Array.from(e.computeBlobKzgProof(t,i)))}return"bytes"===t?o:o.map(n=>Ar(n))}const Ma=xe;function Ga(n){const{commitment:e,version:t=1}=n,r=n.to??("string"==typeof e?"hex":"bytes"),a=function(n,e){const t=e||"hex",r=Ma(hr(n,{strict:!1})?Nr(n):n);return"bytes"===t?r:wr(r)}(e,"bytes");return a.set([t],0),"bytes"===r?a:Ar(a)}const qa=4096,Ha=131072,Ka=761855;class _a extends cr{constructor({maxSize:n,size:e}){super("Blob size is too large.",{metaMessages:[`Max: ${n} bytes`,`Given: ${e} bytes`],name:"BlobSizeTooLargeError"})}}class Va extends cr{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class Qa extends cr{constructor({hash:n,size:e}){super(`Versioned hash "${n}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${e}`],name:"InvalidVersionedHashSizeError"})}}class Ja extends cr{constructor({hash:n,version:e}){super(`Versioned hash "${n}" version is invalid.`,{metaMessages:["Expected: 1",`Received: ${e}`],name:"InvalidVersionedHashVersionError"})}}function $a(n){const{data:e,kzg:t,to:r}=n,a=n.blobs??function(n){const e=n.to??("string"==typeof n.data?"hex":"bytes"),t="string"==typeof n.data?Sr(n.data):n.data,r=pr(t);if(!r)throw new Va;if(r>Ka)throw new _a({maxSize:Ka,size:r});const a=[];let o=!0,i=0;for(;o;){const n=xa(new Uint8Array(Ha));let e=0;for(;e<qa;){const r=t.slice(i,i+31);if(n.pushByte(0),n.pushBytes(r),r.length<31){n.pushByte(128),o=!1;break}e++,i+=31}a.push(n)}return"bytes"===e?a.map(n=>n.bytes):a.map(n=>Ar(n.bytes))}({data:e,to:r}),o=n.commitments??La({blobs:a,kzg:t,to:r}),i=n.proofs??Da({blobs:a,commitments:o,kzg:t,to:r}),s=[];for(let n=0;n<a.length;n++)s.push({blob:a[n],commitment:o[n],proof:i[n]});return s}const Wa=2n**256n-1n;class Za extends cr{constructor({chainId:n}){super("number"==typeof n?`Chain ID "${n}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class Ya extends cr{constructor({cause:n,maxFeePerGas:e}={}){super(`The fee cap (\`maxFeePerGas\`${e?` = ${Ca(e)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:n,name:"FeeCapTooHighError"})}}Object.defineProperty(Ya,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class Xa extends cr{constructor({cause:n,maxPriorityFeePerGas:e,maxFeePerGas:t}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${e?` = ${Ca(e)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${t?` = ${Ca(t)} gwei`:""}).`].join("\n"),{cause:n,name:"TipAboveFeeCapError"})}}function no(n,e,t,{strict:r}={}){return hr(n,{strict:!1})?function(n,e,t,{strict:r}={}){eo(n,e);const a=`0x${n.replace("0x","").slice(2*(e??0),2*(t??n.length))}`;r&&to(a,e,t);return a}(n,e,t,{strict:r}):function(n,e,t,{strict:r}={}){eo(n,e);const a=n.slice(e,t);r&&to(a,e,t);return a}(n,e,t,{strict:r})}function eo(n,e){if("number"==typeof e&&e>0&&e>pr(n)-1)throw new gr({offset:e,position:"start",size:pr(n)})}function to(n,e,t){if("number"==typeof e&&"number"==typeof t&&pr(n)!==t-e)throw new gr({offset:t,position:"end",size:pr(n)})}function ro(n){const{chainId:e,maxPriorityFeePerGas:t,maxFeePerGas:r,to:a}=n;if(e<=0)throw new Za({chainId:e});if(a&&!pa(a))throw new _r({address:a});if(r&&r>Wa)throw new Ya({maxFeePerGas:r});if(t&&r&&t>r)throw new Xa({maxFeePerGas:r,maxPriorityFeePerGas:t})}function ao(n){if(!n||0===n.length)return[];const e=[];for(let t=0;t<n.length;t++){const{address:r,storageKeys:a}=n[t];for(let n=0;n<a.length;n++)if(a[n].length-2!=64)throw new ja({storageKey:a[n]});if(!pa(r,{strict:!1}))throw new _r({address:r});e.push([r,a])}return e}function oo(n,e){const t=function(n){if(n.type)return n.type;if(void 0!==n.authorizationList)return"eip7702";if(void 0!==n.blobs||void 0!==n.blobVersionedHashes||void 0!==n.maxFeePerBlobGas||void 0!==n.sidecars)return"eip4844";if(void 0!==n.maxFeePerGas||void 0!==n.maxPriorityFeePerGas)return"eip1559";if(void 0!==n.gasPrice)return void 0!==n.accessList?"eip2930":"legacy";throw new Fa({transaction:n})}(n);return"eip1559"===t?function(n,e){const{chainId:t,gas:r,nonce:a,to:o,value:i,maxFeePerGas:s,maxPriorityFeePerGas:c,accessList:l,data:u}=n;ro(n);const d=ao(l),h=[Er(t),a?Er(a):"0x",c?Er(c):"0x",s?Er(s):"0x",r?Er(r):"0x",o??"0x",i?Er(i):"0x",u??"0x",d,...io(n,e)];return va(["0x02",Pa(h)])}(n,e):"eip2930"===t?function(n,e){const{chainId:t,gas:r,data:a,nonce:o,to:i,value:s,accessList:c,gasPrice:l}=n;!function(n){const{chainId:e,maxPriorityFeePerGas:t,gasPrice:r,maxFeePerGas:a,to:o}=n;if(e<=0)throw new Za({chainId:e});if(o&&!pa(o))throw new _r({address:o});if(t||a)throw new cr("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(r&&r>Wa)throw new Ya({maxFeePerGas:r})}(n);const u=ao(c),d=[Er(t),o?Er(o):"0x",l?Er(l):"0x",r?Er(r):"0x",i??"0x",s?Er(s):"0x",a??"0x",u,...io(n,e)];return va(["0x01",Pa(d)])}(n,e):"eip4844"===t?function(n,e){const{chainId:t,gas:r,nonce:a,to:o,value:i,maxFeePerBlobGas:s,maxFeePerGas:c,maxPriorityFeePerGas:l,accessList:u,data:d}=n;!function(n){const{blobVersionedHashes:e}=n;if(e){if(0===e.length)throw new Va;for(const n of e){const e=pr(n),t=Or(no(n,0,1));if(32!==e)throw new Qa({hash:n,size:e});if(1!==t)throw new Ja({hash:n,version:t})}}ro(n)}(n);let h=n.blobVersionedHashes,p=n.sidecars;if(n.blobs&&(void 0===h||void 0===p)){const e="string"==typeof n.blobs[0]?n.blobs:n.blobs.map(n=>Ar(n)),t=n.kzg,r=La({blobs:e,kzg:t});if(void 0===h&&(h=function(n){const{commitments:e,version:t}=n,r=n.to??("string"==typeof e[0]?"hex":"bytes"),a=[];for(const n of e)a.push(Ga({commitment:n,to:r,version:t}));return a}({commitments:r})),void 0===p){p=$a({blobs:e,commitments:r,proofs:Da({blobs:e,commitments:r,kzg:t})})}}const f=ao(u),g=[Er(t),a?Er(a):"0x",l?Er(l):"0x",c?Er(c):"0x",r?Er(r):"0x",o??"0x",i?Er(i):"0x",d??"0x",f,s?Er(s):"0x",h??[],...io(n,e)],m=[],b=[],y=[];if(p)for(let n=0;n<p.length;n++){const{blob:e,commitment:t,proof:r}=p[n];m.push(e),b.push(t),y.push(r)}return va(["0x03",Pa(p?[g,m,b,y]:g)])}(n,e):"eip7702"===t?function(n,e){const{authorizationList:t,chainId:r,gas:a,nonce:o,to:i,value:s,maxFeePerGas:c,maxPriorityFeePerGas:l,accessList:u,data:d}=n;!function(n){const{authorizationList:e}=n;if(e)for(const n of e){const{chainId:e}=n,t=n.address;if(!pa(t))throw new _r({address:t});if(e<0)throw new Za({chainId:e})}ro(n)}(n);const h=ao(u),p=function(n){if(!n||0===n.length)return[];const e=[];for(const t of n){const{chainId:n,nonce:r,...a}=t,o=t.address;e.push([n?wr(n):"0x",o,r?wr(r):"0x",...io({},a)])}return e}(t);return va(["0x04",Pa([Er(r),o?Er(o):"0x",l?Er(l):"0x",c?Er(c):"0x",a?Er(a):"0x",i??"0x",s?Er(s):"0x",d??"0x",h,p,...io(n,e)])])}(n,e):function(n,e){const{chainId:t=0,gas:r,data:a,nonce:o,to:i,value:s,gasPrice:c}=n;!function(n){const{chainId:e,maxPriorityFeePerGas:t,gasPrice:r,maxFeePerGas:a,to:o}=n;if(o&&!pa(o))throw new _r({address:o});if(void 0!==e&&e<=0)throw new Za({chainId:e});if(t||a)throw new cr("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(r&&r>Wa)throw new Ya({maxFeePerGas:r})}(n);let l=[o?Er(o):"0x",c?Er(c):"0x",r?Er(r):"0x",i??"0x",s?Er(s):"0x",a??"0x"];if(e){const n=(()=>{if(e.v>=35n){return(e.v-35n)/2n>0?e.v:27n+(35n===e.v?0n:1n)}if(t>0)return BigInt(2*t)+BigInt(35n+e.v-27n);const n=27n+(27n===e.v?0n:1n);if(e.v!==n)throw new Ua({v:e.v});return n})(),r=fr(e.r),a=fr(e.s);l=[...l,Er(n),"0x00"===r?"0x":r,"0x00"===a?"0x":a]}else t>0&&(l=[...l,Er(t),"0x","0x"]);return Pa(l)}(n,e)}function io(n,e){const t=e??n,{v:r,yParity:a}=t;if(void 0===t.r)return[];if(void 0===t.s)return[];if(void 0===r&&void 0===a)return[];const o=fr(t.r),i=fr(t.s);return["number"==typeof a?a?Er(1):"0x":0n===r?"0x":1n===r?Er(1):27n===r?"0x":Er(1),"0x00"===o?"0x":o,"0x00"===i?"0x":i]}async function so(n){const{privateKey:e,transaction:t,serializer:r=oo}=n,a="eip4844"===t.type?{...t,sidecars:!1}:t,o=await ba({hash:ca(await r(a)),privateKey:e});return await r(t,o)}Object.defineProperty(Xa,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class co extends cr{constructor({expectedLength:n,givenLength:e,type:t}){super([`ABI encoding array length mismatch for type ${t}.`,`Expected length: ${n}`,`Given length: ${e}`].join("\n"),{name:"AbiEncodingArrayLengthMismatchError"})}}class lo extends cr{constructor({expectedSize:n,value:e}){super(`Size of bytes "${e}" (bytes${pr(e)}) does not match expected size (bytes${n}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class uo extends cr{constructor({expectedLength:n,givenLength:e}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${n}`,`Given length (values): ${e}`].join("\n"),{name:"AbiEncodingLengthMismatchError"})}}class ho extends cr{constructor({expectedSize:n,givenSize:e}){super(`Expected bytes${n}, got bytes${e}.`,{name:"BytesSizeMismatchError"})}}class po extends cr{constructor(n,{docsPath:e}){super([`Type "${n}" is not a valid encoding type.`,"Please provide a valid ABI type."].join("\n"),{docsPath:e,name:"InvalidAbiEncodingType"})}}class fo extends cr{constructor(n){super([`Value "${n}" is not a valid array.`].join("\n"),{name:"InvalidArrayError"})}}const go=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,mo=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;function bo(n,e){if(n.length!==e.length)throw new uo({expectedLength:n.length,givenLength:e.length});const t=function({params:n,values:e}){const t=[];for(let r=0;r<n.length;r++)t.push(yo({param:n[r],value:e[r]}));return t}({params:n,values:e}),r=vo(t);return 0===r.length?"0x":r}function yo({param:n,value:e}){const t=function(n){const e=n.match(/^(.*)\[(\d+)?\]$/);return e?[e[2]?Number(e[2]):null,e[1]]:void 0}(n.type);if(t){const[r,a]=t;return function(n,{length:e,param:t}){const r=null===e;if(!Array.isArray(n))throw new fo(n);if(!r&&n.length!==e)throw new co({expectedLength:e,givenLength:n.length,type:`${t.type}[${e}]`});let a=!1;const o=[];for(let e=0;e<n.length;e++){const r=yo({param:t,value:n[e]});r.dynamic&&(a=!0),o.push(r)}if(r||a){const n=vo(o);if(r){const e=Er(o.length,{size:32});return{dynamic:!0,encoded:o.length>0?ya([e,n]):e}}if(a)return{dynamic:!0,encoded:n}}return{dynamic:!1,encoded:ya(o.map(({encoded:n})=>n))}}(e,{length:r,param:{...n,type:a}})}if("tuple"===n.type)return function(n,{param:e}){let t=!1;const r=[];for(let a=0;a<e.components.length;a++){const o=e.components[a],i=yo({param:o,value:n[Array.isArray(n)?a:o.name]});r.push(i),i.dynamic&&(t=!0)}return{dynamic:t,encoded:t?vo(r):ya(r.map(({encoded:n})=>n))}}(e,{param:n});if("address"===n.type)return function(n){if(!pa(n))throw new _r({address:n});return{dynamic:!1,encoded:yr(n.toLowerCase())}}(e);if("bool"===n.type)return function(n){if("boolean"!=typeof n)throw new cr(`Invalid boolean value: "${n}" (type: ${typeof n}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:yr(kr(n))}}(e);if(n.type.startsWith("uint")||n.type.startsWith("int")){const t=n.type.startsWith("int"),[,,r="256"]=mo.exec(n.type)??[];return function(n,{signed:e,size:t=256}){if("number"==typeof t){const r=2n**(BigInt(t)-(e?1n:0n))-1n,a=e?-r-1n:0n;if(n>r||n<a)throw new ur({max:r.toString(),min:a.toString(),signed:e,size:t/8,value:n.toString()})}return{dynamic:!1,encoded:Er(n,{size:32,signed:e})}}(e,{signed:t,size:Number(r)})}if(n.type.startsWith("bytes"))return function(n,{param:e}){const[,t]=e.type.split("bytes"),r=pr(n);if(!t){let e=n;return r%32!=0&&(e=yr(e,{dir:"right",size:32*Math.ceil((n.length-2)/2/32)})),{dynamic:!0,encoded:ya([yr(Er(r,{size:32})),e])}}if(r!==Number.parseInt(t,10))throw new lo({expectedSize:Number.parseInt(t,10),value:n});return{dynamic:!1,encoded:yr(n,{dir:"right"})}}(e,{param:n});if("string"===n.type)return function(n){const e=Pr(n),t=Math.ceil(pr(e)/32),r=[];for(let n=0;n<t;n++)r.push(yr(no(e,32*n,32*(n+1)),{dir:"right"}));return{dynamic:!0,encoded:ya([yr(Er(pr(e),{size:32})),...r])}}(e);throw new po(n.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function vo(n){let e=0;for(let t=0;t<n.length;t++){const{dynamic:r,encoded:a}=n[t];e+=r?32:pr(a)}const t=[],r=[];let a=0;for(let o=0;o<n.length;o++){const{dynamic:i,encoded:s}=n[o];i?(t.push(Er(e+a,{size:32})),r.push(s),a+=pr(s)):t.push(s)}return ya([...t,...r])}class wo extends cr{constructor({domain:n}){var e,t,r;super(`Invalid domain "${e=n,JSON.stringify(e,(n,e)=>{const r="bigint"==typeof e?e.toString():e;return"function"==typeof t?t(n,r):r},r)}".`,{metaMessages:["Must be a valid EIP-712 domain."]})}}class ko extends cr{constructor({primaryType:n,types:e}){super(`Invalid primary type \`${n}\` must be one of \`${JSON.stringify(Object.keys(e))}\`.`,{docsPath:"/api/glossary/Errors#typeddatainvalidprimarytypeerror",metaMessages:["Check that the primary type is a key in `types`."]})}}class Ao extends cr{constructor({type:n}){super(`Struct type "${n}" is invalid.`,{metaMessages:["Struct type must not be a Solidity type."],name:"InvalidStructTypeError"})}}function Eo({domain:n}){return["string"==typeof n?.name&&{name:"name",type:"string"},n?.version&&{name:"version",type:"string"},("number"==typeof n?.chainId||"bigint"==typeof n?.chainId)&&{name:"chainId",type:"uint256"},n?.verifyingContract&&{name:"verifyingContract",type:"address"},n?.salt&&{name:"salt",type:"bytes32"}].filter(Boolean)}function xo(n){if("address"===n||"bool"===n||"string"===n||n.startsWith("bytes")||n.startsWith("uint")||n.startsWith("int"))throw new Ao({type:n})}function Po(n){const{domain:e={},message:t,primaryType:r}=n,a={EIP712Domain:Eo({domain:e}),...n.types};!function(n){const{domain:e,message:t,primaryType:r,types:a}=n,o=(n,e)=>{for(const t of n){const{name:n,type:r}=t,i=e[n],s=r.match(mo);if(s&&("number"==typeof i||"bigint"==typeof i)){const[n,e,t]=s;Er(i,{signed:"int"===e,size:Number.parseInt(t,10)/8})}if("address"===r&&"string"==typeof i&&!pa(i))throw new _r({address:i});const c=r.match(go);if(c){const[n,e]=c;if(e&&pr(i)!==Number.parseInt(e,10))throw new ho({expectedSize:Number.parseInt(e,10),givenSize:pr(i)})}const l=a[r];l&&(xo(r),o(l,i))}};if(a.EIP712Domain&&e){if("object"!=typeof e)throw new wo({domain:e});o(a.EIP712Domain,e)}if("EIP712Domain"!==r){if(!a[r])throw new ko({primaryType:r,types:a});o(a[r],t)}}({domain:e,message:t,primaryType:r,types:a});const o=["0x1901"];return e&&o.push(function({domain:n,types:e}){return Io({data:n,primaryType:"EIP712Domain",types:e})}({domain:e,types:a})),"EIP712Domain"!==r&&o.push(Io({data:t,primaryType:r,types:a})),ca(ya(o))}function Io({data:n,primaryType:e,types:t}){return ca(No({data:n,primaryType:e,types:t}))}function No({data:n,primaryType:e,types:t}){const r=[{type:"bytes32"}],a=[zo({primaryType:e,types:t})];for(const o of t[e]){const[e,i]=So({types:t,name:o.name,type:o.type,value:n[o.name]});r.push(e),a.push(i)}return bo(r,a)}function zo({primaryType:n,types:e}){const t=wr(function({primaryType:n,types:e}){let t="";const r=Ro({primaryType:n,types:e});r.delete(n);const a=[n,...Array.from(r).sort()];for(const n of a)t+=`${n}(${e[n].map(({name:n,type:e})=>`${e} ${n}`).join(",")})`;return t}({primaryType:n,types:e}));return ca(t)}function Ro({primaryType:n,types:e},t=new Set){const r=n.match(/^\w*/u),a=r?.[0];if(t.has(a)||void 0===e[a])return t;t.add(a);for(const n of e[a])Ro({primaryType:n.type,types:e},t);return t}function So({types:n,name:e,type:t,value:r}){if(void 0!==n[t])return[{type:"bytes32"},ca(No({data:r,primaryType:t,types:n}))];if("bytes"===t)return[{type:"bytes32"},ca(r)];if("string"===t)return[{type:"bytes32"},ca(wr(r))];if(t.lastIndexOf("]")===t.length-1){const a=t.slice(0,t.lastIndexOf("[")),o=r.map(t=>So({name:e,type:a,types:n,value:t}));return[{type:"bytes32"},ca(bo(o.map(([n])=>n),o.map(([,n])=>n)))]}return[{type:t},r]}async function To(n){const{privateKey:e,...t}=n;return await ba({hash:Po(t),privateKey:e,to:"hex"})}function Bo(n,e={}){const{nonceManager:t}=e,r=wr(rt.getPublicKey(n.slice(2),!1)),a=fa({address:ga(r),nonceManager:t,sign:async({hash:e})=>ba({hash:e,privateKey:n,to:"hex"}),signAuthorization:async e=>Ra({...e,privateKey:n}),signMessage:async({message:e})=>Ta({message:e,privateKey:n}),signTransaction:async(e,{serializer:t}={})=>so({privateKey:n,transaction:e,serializer:t}),signTypedData:async e=>To({...e,privateKey:n})});return{...a,publicKey:r,source:"privateKey"}}function Co(n,{accountIndex:e=0,addressIndex:t=0,changeIndex:r=0,path:a,...o}={}){const i=n.derive(a||`m/44'/60'/${e}'/${r}/${t}`);return{...Bo(wr(i.privateKey),o),getHdKey:()=>i,source:"hd"}}const Oo="abdikace\nabeceda\nadresa\nagrese\nakce\naktovka\nalej\nalkohol\namputace\nananas\nandulka\nanekdota\nanketa\nantika\nanulovat\narcha\narogance\nasfalt\nasistent\naspirace\nastma\nastronom\natlas\natletika\natol\nautobus\nazyl\nbabka\nbachor\nbacil\nbaculka\nbadatel\nbageta\nbagr\nbahno\nbakterie\nbalada\nbaletka\nbalkon\nbalonek\nbalvan\nbalza\nbambus\nbankomat\nbarbar\nbaret\nbarman\nbaroko\nbarva\nbaterka\nbatoh\nbavlna\nbazalka\nbazilika\nbazuka\nbedna\nberan\nbeseda\nbestie\nbeton\nbezinka\nbezmoc\nbeztak\nbicykl\nbidlo\nbiftek\nbikiny\nbilance\nbiograf\nbiolog\nbitva\nbizon\nblahobyt\nblatouch\nblecha\nbledule\nblesk\nblikat\nblizna\nblokovat\nbloudit\nblud\nbobek\nbobr\nbodlina\nbodnout\nbohatost\nbojkot\nbojovat\nbokorys\nbolest\nborec\nborovice\nbota\nboubel\nbouchat\nbouda\nboule\nbourat\nboxer\nbradavka\nbrambora\nbranka\nbratr\nbrepta\nbriketa\nbrko\nbrloh\nbronz\nbroskev\nbrunetka\nbrusinka\nbrzda\nbrzy\nbublina\nbubnovat\nbuchta\nbuditel\nbudka\nbudova\nbufet\nbujarost\nbukvice\nbuldok\nbulva\nbunda\nbunkr\nburza\nbutik\nbuvol\nbuzola\nbydlet\nbylina\nbytovka\nbzukot\ncapart\ncarevna\ncedr\ncedule\ncejch\ncejn\ncela\nceler\ncelkem\ncelnice\ncenina\ncennost\ncenovka\ncentrum\ncenzor\ncestopis\ncetka\nchalupa\nchapadlo\ncharita\nchata\nchechtat\nchemie\nchichot\nchirurg\nchlad\nchleba\nchlubit\nchmel\nchmura\nchobot\nchochol\nchodba\ncholera\nchomout\nchopit\nchoroba\nchov\nchrapot\nchrlit\nchrt\nchrup\nchtivost\nchudina\nchutnat\nchvat\nchvilka\nchvost\nchyba\nchystat\nchytit\ncibule\ncigareta\ncihelna\ncihla\ncinkot\ncirkus\ncisterna\ncitace\ncitrus\ncizinec\ncizost\nclona\ncokoliv\ncouvat\nctitel\nctnost\ncudnost\ncuketa\ncukr\ncupot\ncvaknout\ncval\ncvik\ncvrkot\ncyklista\ndaleko\ndareba\ndatel\ndatum\ndcera\ndebata\ndechovka\ndecibel\ndeficit\ndeflace\ndekl\ndekret\ndemokrat\ndeprese\nderby\ndeska\ndetektiv\ndikobraz\ndiktovat\ndioda\ndiplom\ndisk\ndisplej\ndivadlo\ndivoch\ndlaha\ndlouho\ndluhopis\ndnes\ndobro\ndobytek\ndocent\ndochutit\ndodnes\ndohled\ndohoda\ndohra\ndojem\ndojnice\ndoklad\ndokola\ndoktor\ndokument\ndolar\ndoleva\ndolina\ndoma\ndominant\ndomluvit\ndomov\ndonutit\ndopad\ndopis\ndoplnit\ndoposud\ndoprovod\ndopustit\ndorazit\ndorost\ndort\ndosah\ndoslov\ndostatek\ndosud\ndosyta\ndotaz\ndotek\ndotknout\ndoufat\ndoutnat\ndovozce\ndozadu\ndoznat\ndozorce\ndrahota\ndrak\ndramatik\ndravec\ndraze\ndrdol\ndrobnost\ndrogerie\ndrozd\ndrsnost\ndrtit\ndrzost\nduben\nduchovno\ndudek\nduha\nduhovka\ndusit\ndusno\ndutost\ndvojice\ndvorec\ndynamit\nekolog\nekonomie\nelektron\nelipsa\nemail\nemise\nemoce\nempatie\nepizoda\nepocha\nepopej\nepos\nesej\nesence\neskorta\neskymo\netiketa\neuforie\nevoluce\nexekuce\nexkurze\nexpedice\nexploze\nexport\nextrakt\nfacka\nfajfka\nfakulta\nfanatik\nfantazie\nfarmacie\nfavorit\nfazole\nfederace\nfejeton\nfenka\nfialka\nfigurant\nfilozof\nfiltr\nfinance\nfinta\nfixace\nfjord\nflanel\nflirt\nflotila\nfond\nfosfor\nfotbal\nfotka\nfoton\nfrakce\nfreska\nfronta\nfukar\nfunkce\nfyzika\ngaleje\ngarant\ngenetika\ngeolog\ngilotina\nglazura\nglejt\ngolem\ngolfista\ngotika\ngraf\ngramofon\ngranule\ngrep\ngril\ngrog\ngroteska\nguma\nhadice\nhadr\nhala\nhalenka\nhanba\nhanopis\nharfa\nharpuna\nhavran\nhebkost\nhejkal\nhejno\nhejtman\nhektar\nhelma\nhematom\nherec\nherna\nheslo\nhezky\nhistorik\nhladovka\nhlasivky\nhlava\nhledat\nhlen\nhlodavec\nhloh\nhloupost\nhltat\nhlubina\nhluchota\nhmat\nhmota\nhmyz\nhnis\nhnojivo\nhnout\nhoblina\nhoboj\nhoch\nhodiny\nhodlat\nhodnota\nhodovat\nhojnost\nhokej\nholinka\nholka\nholub\nhomole\nhonitba\nhonorace\nhoral\nhorda\nhorizont\nhorko\nhorlivec\nhormon\nhornina\nhoroskop\nhorstvo\nhospoda\nhostina\nhotovost\nhouba\nhouf\nhoupat\nhouska\nhovor\nhradba\nhranice\nhravost\nhrazda\nhrbolek\nhrdina\nhrdlo\nhrdost\nhrnek\nhrobka\nhromada\nhrot\nhrouda\nhrozen\nhrstka\nhrubost\nhryzat\nhubenost\nhubnout\nhudba\nhukot\nhumr\nhusita\nhustota\nhvozd\nhybnost\nhydrant\nhygiena\nhymna\nhysterik\nidylka\nihned\nikona\niluze\nimunita\ninfekce\ninflace\ninkaso\ninovace\ninspekce\ninternet\ninvalida\ninvestor\ninzerce\nironie\njablko\njachta\njahoda\njakmile\njakost\njalovec\njantar\njarmark\njaro\njasan\njasno\njatka\njavor\njazyk\njedinec\njedle\njednatel\njehlan\njekot\njelen\njelito\njemnost\njenom\njepice\njeseter\njevit\njezdec\njezero\njinak\njindy\njinoch\njiskra\njistota\njitrnice\njizva\njmenovat\njogurt\njurta\nkabaret\nkabel\nkabinet\nkachna\nkadet\nkadidlo\nkahan\nkajak\nkajuta\nkakao\nkaktus\nkalamita\nkalhoty\nkalibr\nkalnost\nkamera\nkamkoliv\nkamna\nkanibal\nkanoe\nkantor\nkapalina\nkapela\nkapitola\nkapka\nkaple\nkapota\nkapr\nkapusta\nkapybara\nkaramel\nkarotka\nkarton\nkasa\nkatalog\nkatedra\nkauce\nkauza\nkavalec\nkazajka\nkazeta\nkazivost\nkdekoliv\nkdesi\nkedluben\nkemp\nkeramika\nkino\nklacek\nkladivo\nklam\nklapot\nklasika\nklaun\nklec\nklenba\nklepat\nklesnout\nklid\nklima\nklisna\nklobouk\nklokan\nklopa\nkloub\nklubovna\nklusat\nkluzkost\nkmen\nkmitat\nkmotr\nkniha\nknot\nkoalice\nkoberec\nkobka\nkobliha\nkobyla\nkocour\nkohout\nkojenec\nkokos\nkoktejl\nkolaps\nkoleda\nkolize\nkolo\nkomando\nkometa\nkomik\nkomnata\nkomora\nkompas\nkomunita\nkonat\nkoncept\nkondice\nkonec\nkonfese\nkongres\nkonina\nkonkurs\nkontakt\nkonzerva\nkopanec\nkopie\nkopnout\nkoprovka\nkorbel\nkorektor\nkormidlo\nkoroptev\nkorpus\nkoruna\nkoryto\nkorzet\nkosatec\nkostka\nkotel\nkotleta\nkotoul\nkoukat\nkoupelna\nkousek\nkouzlo\nkovboj\nkoza\nkozoroh\nkrabice\nkrach\nkrajina\nkralovat\nkrasopis\nkravata\nkredit\nkrejcar\nkresba\nkreveta\nkriket\nkritik\nkrize\nkrkavec\nkrmelec\nkrmivo\nkrocan\nkrok\nkronika\nkropit\nkroupa\nkrovka\nkrtek\nkruhadlo\nkrupice\nkrutost\nkrvinka\nkrychle\nkrypta\nkrystal\nkryt\nkudlanka\nkufr\nkujnost\nkukla\nkulajda\nkulich\nkulka\nkulomet\nkultura\nkuna\nkupodivu\nkurt\nkurzor\nkutil\nkvalita\nkvasinka\nkvestor\nkynolog\nkyselina\nkytara\nkytice\nkytka\nkytovec\nkyvadlo\nlabrador\nlachtan\nladnost\nlaik\nlakomec\nlamela\nlampa\nlanovka\nlasice\nlaso\nlastura\nlatinka\nlavina\nlebka\nleckdy\nleden\nlednice\nledovka\nledvina\nlegenda\nlegie\nlegrace\nlehce\nlehkost\nlehnout\nlektvar\nlenochod\nlentilka\nlepenka\nlepidlo\nletadlo\nletec\nletmo\nletokruh\nlevhart\nlevitace\nlevobok\nlibra\nlichotka\nlidojed\nlidskost\nlihovina\nlijavec\nlilek\nlimetka\nlinie\nlinka\nlinoleum\nlistopad\nlitina\nlitovat\nlobista\nlodivod\nlogika\nlogoped\nlokalita\nloket\nlomcovat\nlopata\nlopuch\nlord\nlosos\nlotr\nloudal\nlouh\nlouka\nlouskat\nlovec\nlstivost\nlucerna\nlucifer\nlump\nlusk\nlustrace\nlvice\nlyra\nlyrika\nlysina\nmadam\nmadlo\nmagistr\nmahagon\nmajetek\nmajitel\nmajorita\nmakak\nmakovice\nmakrela\nmalba\nmalina\nmalovat\nmalvice\nmaminka\nmandle\nmanko\nmarnost\nmasakr\nmaskot\nmasopust\nmatice\nmatrika\nmaturita\nmazanec\nmazivo\nmazlit\nmazurka\nmdloba\nmechanik\nmeditace\nmedovina\nmelasa\nmeloun\nmentolka\nmetla\nmetoda\nmetr\nmezera\nmigrace\nmihnout\nmihule\nmikina\nmikrofon\nmilenec\nmilimetr\nmilost\nmimika\nmincovna\nminibar\nminomet\nminulost\nmiska\nmistr\nmixovat\nmladost\nmlha\nmlhovina\nmlok\nmlsat\nmluvit\nmnich\nmnohem\nmobil\nmocnost\nmodelka\nmodlitba\nmohyla\nmokro\nmolekula\nmomentka\nmonarcha\nmonokl\nmonstrum\nmontovat\nmonzun\nmosaz\nmoskyt\nmost\nmotivace\nmotorka\nmotyka\nmoucha\nmoudrost\nmozaika\nmozek\nmozol\nmramor\nmravenec\nmrkev\nmrtvola\nmrzet\nmrzutost\nmstitel\nmudrc\nmuflon\nmulat\nmumie\nmunice\nmuset\nmutace\nmuzeum\nmuzikant\nmyslivec\nmzda\nnabourat\nnachytat\nnadace\nnadbytek\nnadhoz\nnadobro\nnadpis\nnahlas\nnahnat\nnahodile\nnahradit\nnaivita\nnajednou\nnajisto\nnajmout\nnaklonit\nnakonec\nnakrmit\nnalevo\nnamazat\nnamluvit\nnanometr\nnaoko\nnaopak\nnaostro\nnapadat\nnapevno\nnaplnit\nnapnout\nnaposled\nnaprosto\nnarodit\nnaruby\nnarychlo\nnasadit\nnasekat\nnaslepo\nnastat\nnatolik\nnavenek\nnavrch\nnavzdory\nnazvat\nnebe\nnechat\nnecky\nnedaleko\nnedbat\nneduh\nnegace\nnehet\nnehoda\nnejen\nnejprve\nneklid\nnelibost\nnemilost\nnemoc\nneochota\nneonka\nnepokoj\nnerost\nnerv\nnesmysl\nnesoulad\nnetvor\nneuron\nnevina\nnezvykle\nnicota\nnijak\nnikam\nnikdy\nnikl\nnikterak\nnitro\nnocleh\nnohavice\nnominace\nnora\nnorek\nnositel\nnosnost\nnouze\nnoviny\nnovota\nnozdra\nnuda\nnudle\nnuget\nnutit\nnutnost\nnutrie\nnymfa\nobal\nobarvit\nobava\nobdiv\nobec\nobehnat\nobejmout\nobezita\nobhajoba\nobilnice\nobjasnit\nobjekt\nobklopit\noblast\noblek\nobliba\nobloha\nobluda\nobnos\nobohatit\nobojek\nobout\nobrazec\nobrna\nobruba\nobrys\nobsah\nobsluha\nobstarat\nobuv\nobvaz\nobvinit\nobvod\nobvykle\nobyvatel\nobzor\nocas\nocel\nocenit\nochladit\nochota\nochrana\nocitnout\nodboj\nodbyt\nodchod\nodcizit\nodebrat\nodeslat\nodevzdat\nodezva\nodhadce\nodhodit\nodjet\nodjinud\nodkaz\nodkoupit\nodliv\nodluka\nodmlka\nodolnost\nodpad\nodpis\nodplout\nodpor\nodpustit\nodpykat\nodrazka\nodsoudit\nodstup\nodsun\nodtok\nodtud\nodvaha\nodveta\nodvolat\nodvracet\nodznak\nofina\nofsajd\nohlas\nohnisko\nohrada\nohrozit\nohryzek\nokap\nokenice\noklika\nokno\nokouzlit\nokovy\nokrasa\nokres\nokrsek\nokruh\nokupant\nokurka\nokusit\nolejnina\nolizovat\nomak\nomeleta\nomezit\nomladina\nomlouvat\nomluva\nomyl\nonehdy\nopakovat\nopasek\noperace\nopice\nopilost\nopisovat\nopora\nopozice\nopravdu\noproti\norbital\norchestr\norgie\norlice\norloj\nortel\nosada\noschnout\nosika\nosivo\noslava\noslepit\noslnit\noslovit\nosnova\nosoba\nosolit\nospalec\nosten\nostraha\nostuda\nostych\nosvojit\noteplit\notisk\notop\notrhat\notrlost\notrok\notruby\notvor\novanout\novar\noves\novlivnit\novoce\noxid\nozdoba\npachatel\npacient\npadouch\npahorek\npakt\npalanda\npalec\npalivo\npaluba\npamflet\npamlsek\npanenka\npanika\npanna\npanovat\npanstvo\npantofle\npaprika\nparketa\nparodie\nparta\nparuka\nparyba\npaseka\npasivita\npastelka\npatent\npatrona\npavouk\npazneht\npazourek\npecka\npedagog\npejsek\npeklo\npeloton\npenalta\npendrek\npenze\nperiskop\npero\npestrost\npetarda\npetice\npetrolej\npevnina\npexeso\npianista\npiha\npijavice\npikle\npiknik\npilina\npilnost\npilulka\npinzeta\npipeta\npisatel\npistole\npitevna\npivnice\npivovar\nplacenta\nplakat\nplamen\nplaneta\nplastika\nplatit\nplavidlo\nplaz\nplech\nplemeno\nplenta\nples\npletivo\nplevel\nplivat\nplnit\nplno\nplocha\nplodina\nplomba\nplout\npluk\nplyn\npobavit\npobyt\npochod\npocit\npoctivec\npodat\npodcenit\npodepsat\npodhled\npodivit\npodklad\npodmanit\npodnik\npodoba\npodpora\npodraz\npodstata\npodvod\npodzim\npoezie\npohanka\npohnutka\npohovor\npohroma\npohyb\npointa\npojistka\npojmout\npokazit\npokles\npokoj\npokrok\npokuta\npokyn\npoledne\npolibek\npolknout\npoloha\npolynom\npomalu\npominout\npomlka\npomoc\npomsta\npomyslet\nponechat\nponorka\nponurost\npopadat\npopel\npopisek\npoplach\npoprosit\npopsat\npopud\nporadce\nporce\nporod\nporucha\nporyv\nposadit\nposed\nposila\nposkok\nposlanec\nposoudit\npospolu\npostava\nposudek\nposyp\npotah\npotkan\npotlesk\npotomek\npotrava\npotupa\npotvora\npoukaz\npouto\npouzdro\npovaha\npovidla\npovlak\npovoz\npovrch\npovstat\npovyk\npovzdech\npozdrav\npozemek\npoznatek\npozor\npozvat\npracovat\nprahory\npraktika\nprales\npraotec\npraporek\nprase\npravda\nprincip\nprkno\nprobudit\nprocento\nprodej\nprofese\nprohra\nprojekt\nprolomit\npromile\npronikat\npropad\nprorok\nprosba\nproton\nproutek\nprovaz\nprskavka\nprsten\nprudkost\nprut\nprvek\nprvohory\npsanec\npsovod\npstruh\nptactvo\npuberta\npuch\npudl\npukavec\npuklina\npukrle\npult\npumpa\npunc\npupen\npusa\npusinka\npustina\nputovat\nputyka\npyramida\npysk\npytel\nracek\nrachot\nradiace\nradnice\nradon\nraft\nragby\nraketa\nrakovina\nrameno\nrampouch\nrande\nrarach\nrarita\nrasovna\nrastr\nratolest\nrazance\nrazidlo\nreagovat\nreakce\nrecept\nredaktor\nreferent\nreflex\nrejnok\nreklama\nrekord\nrekrut\nrektor\nreputace\nrevize\nrevma\nrevolver\nrezerva\nriskovat\nriziko\nrobotika\nrodokmen\nrohovka\nrokle\nrokoko\nromaneto\nropovod\nropucha\nrorejs\nrosol\nrostlina\nrotmistr\nrotoped\nrotunda\nroubenka\nroucho\nroup\nroura\nrovina\nrovnice\nrozbor\nrozchod\nrozdat\nrozeznat\nrozhodce\nrozinka\nrozjezd\nrozkaz\nrozloha\nrozmar\nrozpad\nrozruch\nrozsah\nroztok\nrozum\nrozvod\nrubrika\nruchadlo\nrukavice\nrukopis\nryba\nrybolov\nrychlost\nrydlo\nrypadlo\nrytina\nryzost\nsadista\nsahat\nsako\nsamec\nsamizdat\nsamota\nsanitka\nsardinka\nsasanka\nsatelit\nsazba\nsazenice\nsbor\nschovat\nsebranka\nsecese\nsedadlo\nsediment\nsedlo\nsehnat\nsejmout\nsekera\nsekta\nsekunda\nsekvoje\nsemeno\nseno\nservis\nsesadit\nseshora\nseskok\nseslat\nsestra\nsesuv\nsesypat\nsetba\nsetina\nsetkat\nsetnout\nsetrvat\nsever\nseznam\nshoda\nshrnout\nsifon\nsilnice\nsirka\nsirotek\nsirup\nsituace\nskafandr\nskalisko\nskanzen\nskaut\nskeptik\nskica\nskladba\nsklenice\nsklo\nskluz\nskoba\nskokan\nskoro\nskripta\nskrz\nskupina\nskvost\nskvrna\nslabika\nsladidlo\nslanina\nslast\nslavnost\nsledovat\nslepec\nsleva\nslezina\nslib\nslina\nsliznice\nslon\nsloupek\nslovo\nsluch\nsluha\nslunce\nslupka\nslza\nsmaragd\nsmetana\nsmilstvo\nsmlouva\nsmog\nsmrad\nsmrk\nsmrtka\nsmutek\nsmysl\nsnad\nsnaha\nsnob\nsobota\nsocha\nsodovka\nsokol\nsopka\nsotva\nsouboj\nsoucit\nsoudce\nsouhlas\nsoulad\nsoumrak\nsouprava\nsoused\nsoutok\nsouviset\nspalovna\nspasitel\nspis\nsplav\nspodek\nspojenec\nspolu\nsponzor\nspornost\nspousta\nsprcha\nspustit\nsranda\nsraz\nsrdce\nsrna\nsrnec\nsrovnat\nsrpen\nsrst\nsrub\nstanice\nstarosta\nstatika\nstavba\nstehno\nstezka\nstodola\nstolek\nstopa\nstorno\nstoupat\nstrach\nstres\nstrhnout\nstrom\nstruna\nstudna\nstupnice\nstvol\nstyk\nsubjekt\nsubtropy\nsuchar\nsudost\nsukno\nsundat\nsunout\nsurikata\nsurovina\nsvah\nsvalstvo\nsvetr\nsvatba\nsvazek\nsvisle\nsvitek\nsvoboda\nsvodidlo\nsvorka\nsvrab\nsykavka\nsykot\nsynek\nsynovec\nsypat\nsypkost\nsyrovost\nsysel\nsytost\ntabletka\ntabule\ntahoun\ntajemno\ntajfun\ntajga\ntajit\ntajnost\ntaktika\ntamhle\ntampon\ntancovat\ntanec\ntanker\ntapeta\ntavenina\ntazatel\ntechnika\ntehdy\ntekutina\ntelefon\ntemnota\ntendence\ntenista\ntenor\nteplota\ntepna\nteprve\nterapie\ntermoska\ntextil\nticho\ntiskopis\ntitulek\ntkadlec\ntkanina\ntlapka\ntleskat\ntlukot\ntlupa\ntmel\ntoaleta\ntopinka\ntopol\ntorzo\ntouha\ntoulec\ntradice\ntraktor\ntramp\ntrasa\ntraverza\ntrefit\ntrest\ntrezor\ntrhavina\ntrhlina\ntrochu\ntrojice\ntroska\ntrouba\ntrpce\ntrpitel\ntrpkost\ntrubec\ntruchlit\ntruhlice\ntrus\ntrvat\ntudy\ntuhnout\ntuhost\ntundra\nturista\nturnaj\ntuzemsko\ntvaroh\ntvorba\ntvrdost\ntvrz\ntygr\ntykev\nubohost\nuboze\nubrat\nubrousek\nubrus\nubytovna\nucho\nuctivost\nudivit\nuhradit\nujednat\nujistit\nujmout\nukazatel\nuklidnit\nuklonit\nukotvit\nukrojit\nulice\nulita\nulovit\numyvadlo\nunavit\nuniforma\nuniknout\nupadnout\nuplatnit\nuplynout\nupoutat\nupravit\nuran\nurazit\nusednout\nusilovat\nusmrtit\nusnadnit\nusnout\nusoudit\nustlat\nustrnout\nutahovat\nutkat\nutlumit\nutonout\nutopenec\nutrousit\nuvalit\nuvolnit\nuvozovka\nuzdravit\nuzel\nuzenina\nuzlina\nuznat\nvagon\nvalcha\nvaloun\nvana\nvandal\nvanilka\nvaran\nvarhany\nvarovat\nvcelku\nvchod\nvdova\nvedro\nvegetace\nvejce\nvelbloud\nveletrh\nvelitel\nvelmoc\nvelryba\nvenkov\nveranda\nverze\nveselka\nveskrze\nvesnice\nvespodu\nvesta\nveterina\nveverka\nvibrace\nvichr\nvideohra\nvidina\nvidle\nvila\nvinice\nviset\nvitalita\nvize\nvizitka\nvjezd\nvklad\nvkus\nvlajka\nvlak\nvlasec\nvlevo\nvlhkost\nvliv\nvlnovka\nvloupat\nvnucovat\nvnuk\nvoda\nvodivost\nvodoznak\nvodstvo\nvojensky\nvojna\nvojsko\nvolant\nvolba\nvolit\nvolno\nvoskovka\nvozidlo\nvozovna\nvpravo\nvrabec\nvracet\nvrah\nvrata\nvrba\nvrcholek\nvrhat\nvrstva\nvrtule\nvsadit\nvstoupit\nvstup\nvtip\nvybavit\nvybrat\nvychovat\nvydat\nvydra\nvyfotit\nvyhledat\nvyhnout\nvyhodit\nvyhradit\nvyhubit\nvyjasnit\nvyjet\nvyjmout\nvyklopit\nvykonat\nvylekat\nvymazat\nvymezit\nvymizet\nvymyslet\nvynechat\nvynikat\nvynutit\nvypadat\nvyplatit\nvypravit\nvypustit\nvyrazit\nvyrovnat\nvyrvat\nvyslovit\nvysoko\nvystavit\nvysunout\nvysypat\nvytasit\nvytesat\nvytratit\nvyvinout\nvyvolat\nvyvrhel\nvyzdobit\nvyznat\nvzadu\nvzbudit\nvzchopit\nvzdor\nvzduch\nvzdychat\nvzestup\nvzhledem\nvzkaz\nvzlykat\nvznik\nvzorek\nvzpoura\nvztah\nvztek\nxylofon\nzabrat\nzabydlet\nzachovat\nzadarmo\nzadusit\nzafoukat\nzahltit\nzahodit\nzahrada\nzahynout\nzajatec\nzajet\nzajistit\nzaklepat\nzakoupit\nzalepit\nzamezit\nzamotat\nzamyslet\nzanechat\nzanikat\nzaplatit\nzapojit\nzapsat\nzarazit\nzastavit\nzasunout\nzatajit\nzatemnit\nzatknout\nzaujmout\nzavalit\nzavelet\nzavinit\nzavolat\nzavrtat\nzazvonit\nzbavit\nzbrusu\nzbudovat\nzbytek\nzdaleka\nzdarma\nzdatnost\nzdivo\nzdobit\nzdroj\nzdvih\nzdymadlo\nzelenina\nzeman\nzemina\nzeptat\nzezadu\nzezdola\nzhatit\nzhltnout\nzhluboka\nzhotovit\nzhruba\nzima\nzimnice\nzjemnit\nzklamat\nzkoumat\nzkratka\nzkumavka\nzlato\nzlehka\nzloba\nzlom\nzlost\nzlozvyk\nzmapovat\nzmar\nzmatek\nzmije\nzmizet\nzmocnit\nzmodrat\nzmrzlina\nzmutovat\nznak\nznalost\nznamenat\nznovu\nzobrazit\nzotavit\nzoubek\nzoufale\nzplodit\nzpomalit\nzprava\nzprostit\nzprudka\nzprvu\nzrada\nzranit\nzrcadlo\nzrnitost\nzrno\nzrovna\nzrychlit\nzrzavost\nzticha\nztratit\nzubovina\nzubr\nzvednout\nzvenku\nzvesela\nzvon\nzvrat\nzvukovod\nzvyk".split("\n"),Uo="abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo".split("\n"),Fo="abaisser\nabandon\nabdiquer\nabeille\nabolir\naborder\naboutir\naboyer\nabrasif\nabreuver\nabriter\nabroger\nabrupt\nabsence\nabsolu\nabsurde\nabusif\nabyssal\nacadémie\nacajou\nacarien\naccabler\naccepter\nacclamer\naccolade\naccroche\naccuser\nacerbe\nachat\nacheter\naciduler\nacier\nacompte\nacquérir\nacronyme\nacteur\nactif\nactuel\nadepte\nadéquat\nadhésif\nadjectif\nadjuger\nadmettre\nadmirer\nadopter\nadorer\nadoucir\nadresse\nadroit\nadulte\nadverbe\naérer\naéronef\naffaire\naffecter\naffiche\naffreux\naffubler\nagacer\nagencer\nagile\nagiter\nagrafer\nagréable\nagrume\naider\naiguille\nailier\naimable\naisance\najouter\najuster\nalarmer\nalchimie\nalerte\nalgèbre\nalgue\naliéner\naliment\nalléger\nalliage\nallouer\nallumer\nalourdir\nalpaga\naltesse\nalvéole\namateur\nambigu\nambre\naménager\namertume\namidon\namiral\namorcer\namour\namovible\namphibie\nampleur\namusant\nanalyse\nanaphore\nanarchie\nanatomie\nancien\nanéantir\nangle\nangoisse\nanguleux\nanimal\nannexer\nannonce\nannuel\nanodin\nanomalie\nanonyme\nanormal\nantenne\nantidote\nanxieux\napaiser\napéritif\naplanir\napologie\nappareil\nappeler\napporter\nappuyer\naquarium\naqueduc\narbitre\narbuste\nardeur\nardoise\nargent\narlequin\narmature\narmement\narmoire\narmure\narpenter\narracher\narriver\narroser\narsenic\nartériel\narticle\naspect\nasphalte\naspirer\nassaut\nasservir\nassiette\nassocier\nassurer\nasticot\nastre\nastuce\natelier\natome\natrium\natroce\nattaque\nattentif\nattirer\nattraper\naubaine\nauberge\naudace\naudible\naugurer\naurore\nautomne\nautruche\navaler\navancer\navarice\navenir\naverse\naveugle\naviateur\navide\navion\naviser\navoine\navouer\navril\naxial\naxiome\nbadge\nbafouer\nbagage\nbaguette\nbaignade\nbalancer\nbalcon\nbaleine\nbalisage\nbambin\nbancaire\nbandage\nbanlieue\nbannière\nbanquier\nbarbier\nbaril\nbaron\nbarque\nbarrage\nbassin\nbastion\nbataille\nbateau\nbatterie\nbaudrier\nbavarder\nbelette\nbélier\nbelote\nbénéfice\nberceau\nberger\nberline\nbermuda\nbesace\nbesogne\nbétail\nbeurre\nbiberon\nbicycle\nbidule\nbijou\nbilan\nbilingue\nbillard\nbinaire\nbiologie\nbiopsie\nbiotype\nbiscuit\nbison\nbistouri\nbitume\nbizarre\nblafard\nblague\nblanchir\nblessant\nblinder\nblond\nbloquer\nblouson\nbobard\nbobine\nboire\nboiser\nbolide\nbonbon\nbondir\nbonheur\nbonifier\nbonus\nbordure\nborne\nbotte\nboucle\nboueux\nbougie\nboulon\nbouquin\nbourse\nboussole\nboutique\nboxeur\nbranche\nbrasier\nbrave\nbrebis\nbrèche\nbreuvage\nbricoler\nbrigade\nbrillant\nbrioche\nbrique\nbrochure\nbroder\nbronzer\nbrousse\nbroyeur\nbrume\nbrusque\nbrutal\nbruyant\nbuffle\nbuisson\nbulletin\nbureau\nburin\nbustier\nbutiner\nbutoir\nbuvable\nbuvette\ncabanon\ncabine\ncachette\ncadeau\ncadre\ncaféine\ncaillou\ncaisson\ncalculer\ncalepin\ncalibre\ncalmer\ncalomnie\ncalvaire\ncamarade\ncaméra\ncamion\ncampagne\ncanal\ncaneton\ncanon\ncantine\ncanular\ncapable\ncaporal\ncaprice\ncapsule\ncapter\ncapuche\ncarabine\ncarbone\ncaresser\ncaribou\ncarnage\ncarotte\ncarreau\ncarton\ncascade\ncasier\ncasque\ncassure\ncauser\ncaution\ncavalier\ncaverne\ncaviar\ncédille\nceinture\ncéleste\ncellule\ncendrier\ncensurer\ncentral\ncercle\ncérébral\ncerise\ncerner\ncerveau\ncesser\nchagrin\nchaise\nchaleur\nchambre\nchance\nchapitre\ncharbon\nchasseur\nchaton\nchausson\nchavirer\nchemise\nchenille\nchéquier\nchercher\ncheval\nchien\nchiffre\nchignon\nchimère\nchiot\nchlorure\nchocolat\nchoisir\nchose\nchouette\nchrome\nchute\ncigare\ncigogne\ncimenter\ncinéma\ncintrer\ncirculer\ncirer\ncirque\nciterne\ncitoyen\ncitron\ncivil\nclairon\nclameur\nclaquer\nclasse\nclavier\nclient\ncligner\nclimat\nclivage\ncloche\nclonage\ncloporte\ncobalt\ncobra\ncocasse\ncocotier\ncoder\ncodifier\ncoffre\ncogner\ncohésion\ncoiffer\ncoincer\ncolère\ncolibri\ncolline\ncolmater\ncolonel\ncombat\ncomédie\ncommande\ncompact\nconcert\nconduire\nconfier\ncongeler\nconnoter\nconsonne\ncontact\nconvexe\ncopain\ncopie\ncorail\ncorbeau\ncordage\ncorniche\ncorpus\ncorrect\ncortège\ncosmique\ncostume\ncoton\ncoude\ncoupure\ncourage\ncouteau\ncouvrir\ncoyote\ncrabe\ncrainte\ncravate\ncrayon\ncréature\ncréditer\ncrémeux\ncreuser\ncrevette\ncribler\ncrier\ncristal\ncritère\ncroire\ncroquer\ncrotale\ncrucial\ncruel\ncrypter\ncubique\ncueillir\ncuillère\ncuisine\ncuivre\nculminer\ncultiver\ncumuler\ncupide\ncuratif\ncurseur\ncyanure\ncycle\ncylindre\ncynique\ndaigner\ndamier\ndanger\ndanseur\ndauphin\ndébattre\ndébiter\ndéborder\ndébrider\ndébutant\ndécaler\ndécembre\ndéchirer\ndécider\ndéclarer\ndécorer\ndécrire\ndécupler\ndédale\ndéductif\ndéesse\ndéfensif\ndéfiler\ndéfrayer\ndégager\ndégivrer\ndéglutir\ndégrafer\ndéjeuner\ndélice\ndéloger\ndemander\ndemeurer\ndémolir\ndénicher\ndénouer\ndentelle\ndénuder\ndépart\ndépenser\ndéphaser\ndéplacer\ndéposer\ndéranger\ndérober\ndésastre\ndescente\ndésert\ndésigner\ndésobéir\ndessiner\ndestrier\ndétacher\ndétester\ndétourer\ndétresse\ndevancer\ndevenir\ndeviner\ndevoir\ndiable\ndialogue\ndiamant\ndicter\ndifférer\ndigérer\ndigital\ndigne\ndiluer\ndimanche\ndiminuer\ndioxyde\ndirectif\ndiriger\ndiscuter\ndisposer\ndissiper\ndistance\ndivertir\ndiviser\ndocile\ndocteur\ndogme\ndoigt\ndomaine\ndomicile\ndompter\ndonateur\ndonjon\ndonner\ndopamine\ndortoir\ndorure\ndosage\ndoseur\ndossier\ndotation\ndouanier\ndouble\ndouceur\ndouter\ndoyen\ndragon\ndraper\ndresser\ndribbler\ndroiture\nduperie\nduplexe\ndurable\ndurcir\ndynastie\néblouir\nécarter\nécharpe\néchelle\néclairer\néclipse\néclore\nécluse\nécole\néconomie\nécorce\nécouter\nécraser\nécrémer\nécrivain\nécrou\nécume\nécureuil\nédifier\néduquer\neffacer\neffectif\neffigie\neffort\neffrayer\neffusion\négaliser\négarer\néjecter\nélaborer\nélargir\nélectron\nélégant\néléphant\nélève\néligible\nélitisme\néloge\nélucider\néluder\nemballer\nembellir\nembryon\némeraude\némission\nemmener\némotion\némouvoir\nempereur\nemployer\nemporter\nemprise\némulsion\nencadrer\nenchère\nenclave\nencoche\nendiguer\nendosser\nendroit\nenduire\nénergie\nenfance\nenfermer\nenfouir\nengager\nengin\nenglober\nénigme\nenjamber\nenjeu\nenlever\nennemi\nennuyeux\nenrichir\nenrobage\nenseigne\nentasser\nentendre\nentier\nentourer\nentraver\nénumérer\nenvahir\nenviable\nenvoyer\nenzyme\néolien\népaissir\népargne\népatant\népaule\népicerie\népidémie\népier\népilogue\népine\népisode\népitaphe\népoque\népreuve\néprouver\népuisant\néquerre\néquipe\nériger\nérosion\nerreur\néruption\nescalier\nespadon\nespèce\nespiègle\nespoir\nesprit\nesquiver\nessayer\nessence\nessieu\nessorer\nestime\nestomac\nestrade\nétagère\nétaler\nétanche\nétatique\néteindre\nétendoir\néternel\néthanol\néthique\nethnie\nétirer\nétoffer\nétoile\nétonnant\nétourdir\nétrange\nétroit\nétude\neuphorie\névaluer\névasion\néventail\névidence\néviter\névolutif\névoquer\nexact\nexagérer\nexaucer\nexceller\nexcitant\nexclusif\nexcuse\nexécuter\nexemple\nexercer\nexhaler\nexhorter\nexigence\nexiler\nexister\nexotique\nexpédier\nexplorer\nexposer\nexprimer\nexquis\nextensif\nextraire\nexulter\nfable\nfabuleux\nfacette\nfacile\nfacture\nfaiblir\nfalaise\nfameux\nfamille\nfarceur\nfarfelu\nfarine\nfarouche\nfasciner\nfatal\nfatigue\nfaucon\nfautif\nfaveur\nfavori\nfébrile\nféconder\nfédérer\nfélin\nfemme\nfémur\nfendoir\nféodal\nfermer\nféroce\nferveur\nfestival\nfeuille\nfeutre\nfévrier\nfiasco\nficeler\nfictif\nfidèle\nfigure\nfilature\nfiletage\nfilière\nfilleul\nfilmer\nfilou\nfiltrer\nfinancer\nfinir\nfiole\nfirme\nfissure\nfixer\nflairer\nflamme\nflasque\nflatteur\nfléau\nflèche\nfleur\nflexion\nflocon\nflore\nfluctuer\nfluide\nfluvial\nfolie\nfonderie\nfongible\nfontaine\nforcer\nforgeron\nformuler\nfortune\nfossile\nfoudre\nfougère\nfouiller\nfoulure\nfourmi\nfragile\nfraise\nfranchir\nfrapper\nfrayeur\nfrégate\nfreiner\nfrelon\nfrémir\nfrénésie\nfrère\nfriable\nfriction\nfrisson\nfrivole\nfroid\nfromage\nfrontal\nfrotter\nfruit\nfugitif\nfuite\nfureur\nfurieux\nfurtif\nfusion\nfutur\ngagner\ngalaxie\ngalerie\ngambader\ngarantir\ngardien\ngarnir\ngarrigue\ngazelle\ngazon\ngéant\ngélatine\ngélule\ngendarme\ngénéral\ngénie\ngenou\ngentil\ngéologie\ngéomètre\ngéranium\ngerme\ngestuel\ngeyser\ngibier\ngicler\ngirafe\ngivre\nglace\nglaive\nglisser\nglobe\ngloire\nglorieux\ngolfeur\ngomme\ngonfler\ngorge\ngorille\ngoudron\ngouffre\ngoulot\ngoupille\ngourmand\ngoutte\ngraduel\ngraffiti\ngraine\ngrand\ngrappin\ngratuit\ngravir\ngrenat\ngriffure\ngriller\ngrimper\ngrogner\ngronder\ngrotte\ngroupe\ngruger\ngrutier\ngruyère\nguépard\nguerrier\nguide\nguimauve\nguitare\ngustatif\ngymnaste\ngyrostat\nhabitude\nhachoir\nhalte\nhameau\nhangar\nhanneton\nharicot\nharmonie\nharpon\nhasard\nhélium\nhématome\nherbe\nhérisson\nhermine\nhéron\nhésiter\nheureux\nhiberner\nhibou\nhilarant\nhistoire\nhiver\nhomard\nhommage\nhomogène\nhonneur\nhonorer\nhonteux\nhorde\nhorizon\nhorloge\nhormone\nhorrible\nhouleux\nhousse\nhublot\nhuileux\nhumain\nhumble\nhumide\nhumour\nhurler\nhydromel\nhygiène\nhymne\nhypnose\nidylle\nignorer\niguane\nillicite\nillusion\nimage\nimbiber\nimiter\nimmense\nimmobile\nimmuable\nimpact\nimpérial\nimplorer\nimposer\nimprimer\nimputer\nincarner\nincendie\nincident\nincliner\nincolore\nindexer\nindice\ninductif\ninédit\nineptie\ninexact\ninfini\ninfliger\ninformer\ninfusion\ningérer\ninhaler\ninhiber\ninjecter\ninjure\ninnocent\ninoculer\ninonder\ninscrire\ninsecte\ninsigne\ninsolite\ninspirer\ninstinct\ninsulter\nintact\nintense\nintime\nintrigue\nintuitif\ninutile\ninvasion\ninventer\ninviter\ninvoquer\nironique\nirradier\nirréel\nirriter\nisoler\nivoire\nivresse\njaguar\njaillir\njambe\njanvier\njardin\njauger\njaune\njavelot\njetable\njeton\njeudi\njeunesse\njoindre\njoncher\njongler\njoueur\njouissif\njournal\njovial\njoyau\njoyeux\njubiler\njugement\njunior\njupon\njuriste\njustice\njuteux\njuvénile\nkayak\nkimono\nkiosque\nlabel\nlabial\nlabourer\nlacérer\nlactose\nlagune\nlaine\nlaisser\nlaitier\nlambeau\nlamelle\nlampe\nlanceur\nlangage\nlanterne\nlapin\nlargeur\nlarme\nlaurier\nlavabo\nlavoir\nlecture\nlégal\nléger\nlégume\nlessive\nlettre\nlevier\nlexique\nlézard\nliasse\nlibérer\nlibre\nlicence\nlicorne\nliège\nlièvre\nligature\nligoter\nligue\nlimer\nlimite\nlimonade\nlimpide\nlinéaire\nlingot\nlionceau\nliquide\nlisière\nlister\nlithium\nlitige\nlittoral\nlivreur\nlogique\nlointain\nloisir\nlombric\nloterie\nlouer\nlourd\nloutre\nlouve\nloyal\nlubie\nlucide\nlucratif\nlueur\nlugubre\nluisant\nlumière\nlunaire\nlundi\nluron\nlutter\nluxueux\nmachine\nmagasin\nmagenta\nmagique\nmaigre\nmaillon\nmaintien\nmairie\nmaison\nmajorer\nmalaxer\nmaléfice\nmalheur\nmalice\nmallette\nmammouth\nmandater\nmaniable\nmanquant\nmanteau\nmanuel\nmarathon\nmarbre\nmarchand\nmardi\nmaritime\nmarqueur\nmarron\nmarteler\nmascotte\nmassif\nmatériel\nmatière\nmatraque\nmaudire\nmaussade\nmauve\nmaximal\nméchant\nméconnu\nmédaille\nmédecin\nméditer\nméduse\nmeilleur\nmélange\nmélodie\nmembre\nmémoire\nmenacer\nmener\nmenhir\nmensonge\nmentor\nmercredi\nmérite\nmerle\nmessager\nmesure\nmétal\nmétéore\nméthode\nmétier\nmeuble\nmiauler\nmicrobe\nmiette\nmignon\nmigrer\nmilieu\nmillion\nmimique\nmince\nminéral\nminimal\nminorer\nminute\nmiracle\nmiroiter\nmissile\nmixte\nmobile\nmoderne\nmoelleux\nmondial\nmoniteur\nmonnaie\nmonotone\nmonstre\nmontagne\nmonument\nmoqueur\nmorceau\nmorsure\nmortier\nmoteur\nmotif\nmouche\nmoufle\nmoulin\nmousson\nmouton\nmouvant\nmultiple\nmunition\nmuraille\nmurène\nmurmure\nmuscle\nmuséum\nmusicien\nmutation\nmuter\nmutuel\nmyriade\nmyrtille\nmystère\nmythique\nnageur\nnappe\nnarquois\nnarrer\nnatation\nnation\nnature\nnaufrage\nnautique\nnavire\nnébuleux\nnectar\nnéfaste\nnégation\nnégliger\nnégocier\nneige\nnerveux\nnettoyer\nneurone\nneutron\nneveu\nniche\nnickel\nnitrate\nniveau\nnoble\nnocif\nnocturne\nnoirceur\nnoisette\nnomade\nnombreux\nnommer\nnormatif\nnotable\nnotifier\nnotoire\nnourrir\nnouveau\nnovateur\nnovembre\nnovice\nnuage\nnuancer\nnuire\nnuisible\nnuméro\nnuptial\nnuque\nnutritif\nobéir\nobjectif\nobliger\nobscur\nobserver\nobstacle\nobtenir\nobturer\noccasion\noccuper\nocéan\noctobre\noctroyer\noctupler\noculaire\nodeur\nodorant\noffenser\nofficier\noffrir\nogive\noiseau\noisillon\nolfactif\nolivier\nombrage\nomettre\nonctueux\nonduler\nonéreux\nonirique\nopale\nopaque\nopérer\nopinion\nopportun\nopprimer\nopter\noptique\norageux\norange\norbite\nordonner\noreille\norgane\norgueil\norifice\nornement\norque\nortie\nosciller\nosmose\nossature\notarie\nouragan\nourson\noutil\noutrager\nouvrage\novation\noxyde\noxygène\nozone\npaisible\npalace\npalmarès\npalourde\npalper\npanache\npanda\npangolin\npaniquer\npanneau\npanorama\npantalon\npapaye\npapier\npapoter\npapyrus\nparadoxe\nparcelle\nparesse\nparfumer\nparler\nparole\nparrain\nparsemer\npartager\nparure\nparvenir\npassion\npastèque\npaternel\npatience\npatron\npavillon\npavoiser\npayer\npaysage\npeigne\npeintre\npelage\npélican\npelle\npelouse\npeluche\npendule\npénétrer\npénible\npensif\npénurie\npépite\npéplum\nperdrix\nperforer\npériode\npermuter\nperplexe\npersil\nperte\npeser\npétale\npetit\npétrir\npeuple\npharaon\nphobie\nphoque\nphoton\nphrase\nphysique\npiano\npictural\npièce\npierre\npieuvre\npilote\npinceau\npipette\npiquer\npirogue\npiscine\npiston\npivoter\npixel\npizza\nplacard\nplafond\nplaisir\nplaner\nplaque\nplastron\nplateau\npleurer\nplexus\npliage\nplomb\nplonger\npluie\nplumage\npochette\npoésie\npoète\npointe\npoirier\npoisson\npoivre\npolaire\npolicier\npollen\npolygone\npommade\npompier\nponctuel\npondérer\nponey\nportique\nposition\nposséder\nposture\npotager\npoteau\npotion\npouce\npoulain\npoumon\npourpre\npoussin\npouvoir\nprairie\npratique\nprécieux\nprédire\npréfixe\nprélude\nprénom\nprésence\nprétexte\nprévoir\nprimitif\nprince\nprison\npriver\nproblème\nprocéder\nprodige\nprofond\nprogrès\nproie\nprojeter\nprologue\npromener\npropre\nprospère\nprotéger\nprouesse\nproverbe\nprudence\npruneau\npsychose\npublic\npuceron\npuiser\npulpe\npulsar\npunaise\npunitif\npupitre\npurifier\npuzzle\npyramide\nquasar\nquerelle\nquestion\nquiétude\nquitter\nquotient\nracine\nraconter\nradieux\nragondin\nraideur\nraisin\nralentir\nrallonge\nramasser\nrapide\nrasage\nratisser\nravager\nravin\nrayonner\nréactif\nréagir\nréaliser\nréanimer\nrecevoir\nréciter\nréclamer\nrécolter\nrecruter\nreculer\nrecycler\nrédiger\nredouter\nrefaire\nréflexe\nréformer\nrefrain\nrefuge\nrégalien\nrégion\nréglage\nrégulier\nréitérer\nrejeter\nrejouer\nrelatif\nrelever\nrelief\nremarque\nremède\nremise\nremonter\nremplir\nremuer\nrenard\nrenfort\nrenifler\nrenoncer\nrentrer\nrenvoi\nreplier\nreporter\nreprise\nreptile\nrequin\nréserve\nrésineux\nrésoudre\nrespect\nrester\nrésultat\nrétablir\nretenir\nréticule\nretomber\nretracer\nréunion\nréussir\nrevanche\nrevivre\nrévolte\nrévulsif\nrichesse\nrideau\nrieur\nrigide\nrigoler\nrincer\nriposter\nrisible\nrisque\nrituel\nrival\nrivière\nrocheux\nromance\nrompre\nronce\nrondin\nroseau\nrosier\nrotatif\nrotor\nrotule\nrouge\nrouille\nrouleau\nroutine\nroyaume\nruban\nrubis\nruche\nruelle\nrugueux\nruiner\nruisseau\nruser\nrustique\nrythme\nsabler\nsaboter\nsabre\nsacoche\nsafari\nsagesse\nsaisir\nsalade\nsalive\nsalon\nsaluer\nsamedi\nsanction\nsanglier\nsarcasme\nsardine\nsaturer\nsaugrenu\nsaumon\nsauter\nsauvage\nsavant\nsavonner\nscalpel\nscandale\nscélérat\nscénario\nsceptre\nschéma\nscience\nscinder\nscore\nscrutin\nsculpter\nséance\nsécable\nsécher\nsecouer\nsécréter\nsédatif\nséduire\nseigneur\nséjour\nsélectif\nsemaine\nsembler\nsemence\nséminal\nsénateur\nsensible\nsentence\nséparer\nséquence\nserein\nsergent\nsérieux\nserrure\nsérum\nservice\nsésame\nsévir\nsevrage\nsextuple\nsidéral\nsiècle\nsiéger\nsiffler\nsigle\nsignal\nsilence\nsilicium\nsimple\nsincère\nsinistre\nsiphon\nsirop\nsismique\nsituer\nskier\nsocial\nsocle\nsodium\nsoigneux\nsoldat\nsoleil\nsolitude\nsoluble\nsombre\nsommeil\nsomnoler\nsonde\nsongeur\nsonnette\nsonore\nsorcier\nsortir\nsosie\nsottise\nsoucieux\nsoudure\nsouffle\nsoulever\nsoupape\nsource\nsoutirer\nsouvenir\nspacieux\nspatial\nspécial\nsphère\nspiral\nstable\nstation\nsternum\nstimulus\nstipuler\nstrict\nstudieux\nstupeur\nstyliste\nsublime\nsubstrat\nsubtil\nsubvenir\nsuccès\nsucre\nsuffixe\nsuggérer\nsuiveur\nsulfate\nsuperbe\nsupplier\nsurface\nsuricate\nsurmener\nsurprise\nsursaut\nsurvie\nsuspect\nsyllabe\nsymbole\nsymétrie\nsynapse\nsyntaxe\nsystème\ntabac\ntablier\ntactile\ntailler\ntalent\ntalisman\ntalonner\ntambour\ntamiser\ntangible\ntapis\ntaquiner\ntarder\ntarif\ntartine\ntasse\ntatami\ntatouage\ntaupe\ntaureau\ntaxer\ntémoin\ntemporel\ntenaille\ntendre\nteneur\ntenir\ntension\nterminer\nterne\nterrible\ntétine\ntexte\nthème\nthéorie\nthérapie\nthorax\ntibia\ntiède\ntimide\ntirelire\ntiroir\ntissu\ntitane\ntitre\ntituber\ntoboggan\ntolérant\ntomate\ntonique\ntonneau\ntoponyme\ntorche\ntordre\ntornade\ntorpille\ntorrent\ntorse\ntortue\ntotem\ntoucher\ntournage\ntousser\ntoxine\ntraction\ntrafic\ntragique\ntrahir\ntrain\ntrancher\ntravail\ntrèfle\ntremper\ntrésor\ntreuil\ntriage\ntribunal\ntricoter\ntrilogie\ntriomphe\ntripler\ntriturer\ntrivial\ntrombone\ntronc\ntropical\ntroupeau\ntuile\ntulipe\ntumulte\ntunnel\nturbine\ntuteur\ntutoyer\ntuyau\ntympan\ntyphon\ntypique\ntyran\nubuesque\nultime\nultrason\nunanime\nunifier\nunion\nunique\nunitaire\nunivers\nuranium\nurbain\nurticant\nusage\nusine\nusuel\nusure\nutile\nutopie\nvacarme\nvaccin\nvagabond\nvague\nvaillant\nvaincre\nvaisseau\nvalable\nvalise\nvallon\nvalve\nvampire\nvanille\nvapeur\nvarier\nvaseux\nvassal\nvaste\nvecteur\nvedette\nvégétal\nvéhicule\nveinard\nvéloce\nvendredi\nvénérer\nvenger\nvenimeux\nventouse\nverdure\nvérin\nvernir\nverrou\nverser\nvertu\nveston\nvétéran\nvétuste\nvexant\nvexer\nviaduc\nviande\nvictoire\nvidange\nvidéo\nvignette\nvigueur\nvilain\nvillage\nvinaigre\nviolon\nvipère\nvirement\nvirtuose\nvirus\nvisage\nviseur\nvision\nvisqueux\nvisuel\nvital\nvitesse\nviticole\nvitrine\nvivace\nvivipare\nvocation\nvoguer\nvoile\nvoisin\nvoiture\nvolaille\nvolcan\nvoltiger\nvolume\nvorace\nvortex\nvoter\nvouloir\nvoyage\nvoyelle\nwagon\nxénon\nyacht\nzèbre\nzénith\nzeste\nzoologie".split("\n"),jo="abaco\nabbaglio\nabbinato\nabete\nabisso\nabolire\nabrasivo\nabrogato\naccadere\naccenno\naccusato\nacetone\nachille\nacido\nacqua\nacre\nacrilico\nacrobata\nacuto\nadagio\naddebito\naddome\nadeguato\naderire\nadipe\nadottare\nadulare\naffabile\naffetto\naffisso\naffranto\naforisma\nafoso\nafricano\nagave\nagente\nagevole\naggancio\nagire\nagitare\nagonismo\nagricolo\nagrumeto\naguzzo\nalabarda\nalato\nalbatro\nalberato\nalbo\nalbume\nalce\nalcolico\nalettone\nalfa\nalgebra\naliante\nalibi\nalimento\nallagato\nallegro\nallievo\nallodola\nallusivo\nalmeno\nalogeno\nalpaca\nalpestre\naltalena\nalterno\nalticcio\naltrove\nalunno\nalveolo\nalzare\namalgama\namanita\namarena\nambito\nambrato\nameba\namerica\nametista\namico\nammasso\nammenda\nammirare\nammonito\namore\nampio\nampliare\namuleto\nanacardo\nanagrafe\nanalista\nanarchia\nanatra\nanca\nancella\nancora\nandare\nandrea\nanello\nangelo\nangolare\nangusto\nanima\nannegare\nannidato\nanno\nannuncio\nanonimo\nanticipo\nanzi\napatico\napertura\napode\napparire\nappetito\nappoggio\napprodo\nappunto\naprile\narabica\narachide\naragosta\naraldica\narancio\naratura\narazzo\narbitro\narchivio\nardito\narenile\nargento\nargine\narguto\naria\narmonia\narnese\narredato\narringa\narrosto\narsenico\narso\nartefice\narzillo\nasciutto\nascolto\nasepsi\nasettico\nasfalto\nasino\nasola\naspirato\naspro\nassaggio\nasse\nassoluto\nassurdo\nasta\nastenuto\nastice\nastratto\natavico\nateismo\natomico\natono\nattesa\nattivare\nattorno\nattrito\nattuale\nausilio\naustria\nautista\nautonomo\nautunno\navanzato\navere\navvenire\navviso\navvolgere\nazione\nazoto\nazzimo\nazzurro\nbabele\nbaccano\nbacino\nbaco\nbadessa\nbadilata\nbagnato\nbaita\nbalcone\nbaldo\nbalena\nballata\nbalzano\nbambino\nbandire\nbaraonda\nbarbaro\nbarca\nbaritono\nbarlume\nbarocco\nbasilico\nbasso\nbatosta\nbattuto\nbaule\nbava\nbavosa\nbecco\nbeffa\nbelgio\nbelva\nbenda\nbenevole\nbenigno\nbenzina\nbere\nberlina\nbeta\nbibita\nbici\nbidone\nbifido\nbiga\nbilancia\nbimbo\nbinocolo\nbiologo\nbipede\nbipolare\nbirbante\nbirra\nbiscotto\nbisesto\nbisnonno\nbisonte\nbisturi\nbizzarro\nblando\nblatta\nbollito\nbonifico\nbordo\nbosco\nbotanico\nbottino\nbozzolo\nbraccio\nbradipo\nbrama\nbranca\nbravura\nbretella\nbrevetto\nbrezza\nbriglia\nbrillante\nbrindare\nbroccolo\nbrodo\nbronzina\nbrullo\nbruno\nbubbone\nbuca\nbudino\nbuffone\nbuio\nbulbo\nbuono\nburlone\nburrasca\nbussola\nbusta\ncadetto\ncaduco\ncalamaro\ncalcolo\ncalesse\ncalibro\ncalmo\ncaloria\ncambusa\ncamerata\ncamicia\ncammino\ncamola\ncampale\ncanapa\ncandela\ncane\ncanino\ncanotto\ncantina\ncapace\ncapello\ncapitolo\ncapogiro\ncappero\ncapra\ncapsula\ncarapace\ncarcassa\ncardo\ncarisma\ncarovana\ncarretto\ncartolina\ncasaccio\ncascata\ncaserma\ncaso\ncassone\ncastello\ncasuale\ncatasta\ncatena\ncatrame\ncauto\ncavillo\ncedibile\ncedrata\ncefalo\ncelebre\ncellulare\ncena\ncenone\ncentesimo\nceramica\ncercare\ncerto\ncerume\ncervello\ncesoia\ncespo\nceto\nchela\nchiaro\nchicca\nchiedere\nchimera\nchina\nchirurgo\nchitarra\nciao\nciclismo\ncifrare\ncigno\ncilindro\nciottolo\ncirca\ncirrosi\ncitrico\ncittadino\nciuffo\ncivetta\ncivile\nclassico\nclinica\ncloro\ncocco\ncodardo\ncodice\ncoerente\ncognome\ncollare\ncolmato\ncolore\ncolposo\ncoltivato\ncolza\ncoma\ncometa\ncommando\ncomodo\ncomputer\ncomune\nconciso\ncondurre\nconferma\ncongelare\nconiuge\nconnesso\nconoscere\nconsumo\ncontinuo\nconvegno\ncoperto\ncopione\ncoppia\ncopricapo\ncorazza\ncordata\ncoricato\ncornice\ncorolla\ncorpo\ncorredo\ncorsia\ncortese\ncosmico\ncostante\ncottura\ncovato\ncratere\ncravatta\ncreato\ncredere\ncremoso\ncrescita\ncreta\ncriceto\ncrinale\ncrisi\ncritico\ncroce\ncronaca\ncrostata\ncruciale\ncrusca\ncucire\ncuculo\ncugino\ncullato\ncupola\ncuratore\ncursore\ncurvo\ncuscino\ncustode\ndado\ndaino\ndalmata\ndamerino\ndaniela\ndannoso\ndanzare\ndatato\ndavanti\ndavvero\ndebutto\ndecennio\ndeciso\ndeclino\ndecollo\ndecreto\ndedicato\ndefinito\ndeforme\ndegno\ndelegare\ndelfino\ndelirio\ndelta\ndemenza\ndenotato\ndentro\ndeposito\nderapata\nderivare\nderoga\ndescritto\ndeserto\ndesiderio\ndesumere\ndetersivo\ndevoto\ndiametro\ndicembre\ndiedro\ndifeso\ndiffuso\ndigerire\ndigitale\ndiluvio\ndinamico\ndinnanzi\ndipinto\ndiploma\ndipolo\ndiradare\ndire\ndirotto\ndirupo\ndisagio\ndiscreto\ndisfare\ndisgelo\ndisposto\ndistanza\ndisumano\ndito\ndivano\ndivelto\ndividere\ndivorato\ndoblone\ndocente\ndoganale\ndogma\ndolce\ndomato\ndomenica\ndominare\ndondolo\ndono\ndormire\ndote\ndottore\ndovuto\ndozzina\ndrago\ndruido\ndubbio\ndubitare\nducale\nduna\nduomo\nduplice\nduraturo\nebano\neccesso\necco\neclissi\neconomia\nedera\nedicola\nedile\neditoria\neducare\negemonia\negli\negoismo\negregio\nelaborato\nelargire\nelegante\nelencato\neletto\nelevare\nelfico\nelica\nelmo\nelsa\neluso\nemanato\nemblema\nemesso\nemiro\nemotivo\nemozione\nempirico\nemulo\nendemico\nenduro\nenergia\nenfasi\nenoteca\nentrare\nenzima\nepatite\nepilogo\nepisodio\nepocale\neppure\nequatore\nerario\nerba\nerboso\nerede\neremita\nerigere\nermetico\neroe\nerosivo\nerrante\nesagono\nesame\nesanime\nesaudire\nesca\nesempio\nesercito\nesibito\nesigente\nesistere\nesito\nesofago\nesortato\nesoso\nespanso\nespresso\nessenza\nesso\nesteso\nestimare\nestonia\nestroso\nesultare\netilico\netnico\netrusco\netto\neuclideo\neuropa\nevaso\nevidenza\nevitato\nevoluto\nevviva\nfabbrica\nfaccenda\nfachiro\nfalco\nfamiglia\nfanale\nfanfara\nfango\nfantasma\nfare\nfarfalla\nfarinoso\nfarmaco\nfascia\nfastoso\nfasullo\nfaticare\nfato\nfavoloso\nfebbre\nfecola\nfede\nfegato\nfelpa\nfeltro\nfemmina\nfendere\nfenomeno\nfermento\nferro\nfertile\nfessura\nfestivo\nfetta\nfeudo\nfiaba\nfiducia\nfifa\nfigurato\nfilo\nfinanza\nfinestra\nfinire\nfiore\nfiscale\nfisico\nfiume\nflacone\nflamenco\nflebo\nflemma\nflorido\nfluente\nfluoro\nfobico\nfocaccia\nfocoso\nfoderato\nfoglio\nfolata\nfolclore\nfolgore\nfondente\nfonetico\nfonia\nfontana\nforbito\nforchetta\nforesta\nformica\nfornaio\nforo\nfortezza\nforzare\nfosfato\nfosso\nfracasso\nfrana\nfrassino\nfratello\nfreccetta\nfrenata\nfresco\nfrigo\nfrollino\nfronde\nfrugale\nfrutta\nfucilata\nfucsia\nfuggente\nfulmine\nfulvo\nfumante\nfumetto\nfumoso\nfune\nfunzione\nfuoco\nfurbo\nfurgone\nfurore\nfuso\nfutile\ngabbiano\ngaffe\ngalateo\ngallina\ngaloppo\ngambero\ngamma\ngaranzia\ngarbo\ngarofano\ngarzone\ngasdotto\ngasolio\ngastrico\ngatto\ngaudio\ngazebo\ngazzella\ngeco\ngelatina\ngelso\ngemello\ngemmato\ngene\ngenitore\ngennaio\ngenotipo\ngergo\nghepardo\nghiaccio\nghisa\ngiallo\ngilda\nginepro\ngiocare\ngioiello\ngiorno\ngiove\ngirato\ngirone\ngittata\ngiudizio\ngiurato\ngiusto\nglobulo\nglutine\ngnomo\ngobba\ngolf\ngomito\ngommone\ngonfio\ngonna\ngoverno\ngracile\ngrado\ngrafico\ngrammo\ngrande\ngrattare\ngravoso\ngrazia\ngreca\ngregge\ngrifone\ngrigio\ngrinza\ngrotta\ngruppo\nguadagno\nguaio\nguanto\nguardare\ngufo\nguidare\nibernato\nicona\nidentico\nidillio\nidolo\nidra\nidrico\nidrogeno\nigiene\nignaro\nignorato\nilare\nilleso\nillogico\nilludere\nimballo\nimbevuto\nimbocco\nimbuto\nimmane\nimmerso\nimmolato\nimpacco\nimpeto\nimpiego\nimporto\nimpronta\ninalare\ninarcare\ninattivo\nincanto\nincendio\ninchino\nincisivo\nincluso\nincontro\nincrocio\nincubo\nindagine\nindia\nindole\ninedito\ninfatti\ninfilare\ninflitto\ningaggio\ningegno\ninglese\ningordo\ningrosso\ninnesco\ninodore\ninoltrare\ninondato\ninsano\ninsetto\ninsieme\ninsonnia\ninsulina\nintasato\nintero\nintonaco\nintuito\ninumidire\ninvalido\ninvece\ninvito\niperbole\nipnotico\nipotesi\nippica\niride\nirlanda\nironico\nirrigato\nirrorare\nisolato\nisotopo\nisterico\nistituto\nistrice\nitalia\niterare\nlabbro\nlabirinto\nlacca\nlacerato\nlacrima\nlacuna\nladdove\nlago\nlampo\nlancetta\nlanterna\nlardoso\nlarga\nlaringe\nlastra\nlatenza\nlatino\nlattuga\nlavagna\nlavoro\nlegale\nleggero\nlembo\nlentezza\nlenza\nleone\nlepre\nlesivo\nlessato\nlesto\nletterale\nleva\nlevigato\nlibero\nlido\nlievito\nlilla\nlimatura\nlimitare\nlimpido\nlineare\nlingua\nliquido\nlira\nlirica\nlisca\nlite\nlitigio\nlivrea\nlocanda\nlode\nlogica\nlombare\nlondra\nlongevo\nloquace\nlorenzo\nloto\nlotteria\nluce\nlucidato\nlumaca\nluminoso\nlungo\nlupo\nluppolo\nlusinga\nlusso\nlutto\nmacabro\nmacchina\nmacero\nmacinato\nmadama\nmagico\nmaglia\nmagnete\nmagro\nmaiolica\nmalafede\nmalgrado\nmalinteso\nmalsano\nmalto\nmalumore\nmana\nmancia\nmandorla\nmangiare\nmanifesto\nmannaro\nmanovra\nmansarda\nmantide\nmanubrio\nmappa\nmaratona\nmarcire\nmaretta\nmarmo\nmarsupio\nmaschera\nmassaia\nmastino\nmaterasso\nmatricola\nmattone\nmaturo\nmazurca\nmeandro\nmeccanico\nmecenate\nmedesimo\nmeditare\nmega\nmelassa\nmelis\nmelodia\nmeninge\nmeno\nmensola\nmercurio\nmerenda\nmerlo\nmeschino\nmese\nmessere\nmestolo\nmetallo\nmetodo\nmettere\nmiagolare\nmica\nmicelio\nmichele\nmicrobo\nmidollo\nmiele\nmigliore\nmilano\nmilite\nmimosa\nminerale\nmini\nminore\nmirino\nmirtillo\nmiscela\nmissiva\nmisto\nmisurare\nmitezza\nmitigare\nmitra\nmittente\nmnemonico\nmodello\nmodifica\nmodulo\nmogano\nmogio\nmole\nmolosso\nmonastero\nmonco\nmondina\nmonetario\nmonile\nmonotono\nmonsone\nmontato\nmonviso\nmora\nmordere\nmorsicato\nmostro\nmotivato\nmotosega\nmotto\nmovenza\nmovimento\nmozzo\nmucca\nmucosa\nmuffa\nmughetto\nmugnaio\nmulatto\nmulinello\nmultiplo\nmummia\nmunto\nmuovere\nmurale\nmusa\nmuscolo\nmusica\nmutevole\nmuto\nnababbo\nnafta\nnanometro\nnarciso\nnarice\nnarrato\nnascere\nnastrare\nnaturale\nnautica\nnaviglio\nnebulosa\nnecrosi\nnegativo\nnegozio\nnemmeno\nneofita\nneretto\nnervo\nnessuno\nnettuno\nneutrale\nneve\nnevrotico\nnicchia\nninfa\nnitido\nnobile\nnocivo\nnodo\nnome\nnomina\nnordico\nnormale\nnorvegese\nnostrano\nnotare\nnotizia\nnotturno\nnovella\nnucleo\nnulla\nnumero\nnuovo\nnutrire\nnuvola\nnuziale\noasi\nobbedire\nobbligo\nobelisco\noblio\nobolo\nobsoleto\noccasione\nocchio\noccidente\noccorrere\noccultare\nocra\noculato\nodierno\nodorare\nofferta\noffrire\noffuscato\noggetto\noggi\nognuno\nolandese\nolfatto\noliato\noliva\nologramma\noltre\nomaggio\nombelico\nombra\nomega\nomissione\nondoso\nonere\nonice\nonnivoro\nonorevole\nonta\noperato\nopinione\nopposto\noracolo\norafo\nordine\norecchino\norefice\norfano\norganico\norigine\norizzonte\norma\normeggio\nornativo\norologio\norrendo\norribile\nortensia\nortica\norzata\norzo\nosare\noscurare\nosmosi\nospedale\nospite\nossa\nossidare\nostacolo\noste\notite\notre\nottagono\nottimo\nottobre\novale\novest\novino\noviparo\novocito\novunque\novviare\nozio\npacchetto\npace\npacifico\npadella\npadrone\npaese\npaga\npagina\npalazzina\npalesare\npallido\npalo\npalude\npandoro\npannello\npaolo\npaonazzo\npaprica\nparabola\nparcella\nparere\npargolo\npari\nparlato\nparola\npartire\nparvenza\nparziale\npassivo\npasticca\npatacca\npatologia\npattume\npavone\npeccato\npedalare\npedonale\npeggio\npeloso\npenare\npendice\npenisola\npennuto\npenombra\npensare\npentola\npepe\npepita\nperbene\npercorso\nperdonato\nperforare\npergamena\nperiodo\npermesso\nperno\nperplesso\npersuaso\npertugio\npervaso\npesatore\npesista\npeso\npestifero\npetalo\npettine\npetulante\npezzo\npiacere\npianta\npiattino\npiccino\npicozza\npiega\npietra\npiffero\npigiama\npigolio\npigro\npila\npilifero\npillola\npilota\npimpante\npineta\npinna\npinolo\npioggia\npiombo\npiramide\npiretico\npirite\npirolisi\npitone\npizzico\nplacebo\nplanare\nplasma\nplatano\nplenario\npochezza\npoderoso\npodismo\npoesia\npoggiare\npolenta\npoligono\npollice\npolmonite\npolpetta\npolso\npoltrona\npolvere\npomice\npomodoro\nponte\npopoloso\nporfido\nporoso\nporpora\nporre\nportata\nposa\npositivo\npossesso\npostulato\npotassio\npotere\npranzo\nprassi\npratica\nprecluso\npredica\nprefisso\npregiato\nprelievo\npremere\nprenotare\npreparato\npresenza\npretesto\nprevalso\nprima\nprincipe\nprivato\nproblema\nprocura\nprodurre\nprofumo\nprogetto\nprolunga\npromessa\npronome\nproposta\nproroga\nproteso\nprova\nprudente\nprugna\nprurito\npsiche\npubblico\npudica\npugilato\npugno\npulce\npulito\npulsante\npuntare\npupazzo\npupilla\npuro\nquadro\nqualcosa\nquasi\nquerela\nquota\nraccolto\nraddoppio\nradicale\nradunato\nraffica\nragazzo\nragione\nragno\nramarro\nramingo\nramo\nrandagio\nrantolare\nrapato\nrapina\nrappreso\nrasatura\nraschiato\nrasente\nrassegna\nrastrello\nrata\nravveduto\nreale\nrecepire\nrecinto\nrecluta\nrecondito\nrecupero\nreddito\nredimere\nregalato\nregistro\nregola\nregresso\nrelazione\nremare\nremoto\nrenna\nreplica\nreprimere\nreputare\nresa\nresidente\nresponso\nrestauro\nrete\nretina\nretorica\nrettifica\nrevocato\nriassunto\nribadire\nribelle\nribrezzo\nricarica\nricco\nricevere\nriciclato\nricordo\nricreduto\nridicolo\nridurre\nrifasare\nriflesso\nriforma\nrifugio\nrigare\nrigettato\nrighello\nrilassato\nrilevato\nrimanere\nrimbalzo\nrimedio\nrimorchio\nrinascita\nrincaro\nrinforzo\nrinnovo\nrinomato\nrinsavito\nrintocco\nrinuncia\nrinvenire\nriparato\nripetuto\nripieno\nriportare\nripresa\nripulire\nrisata\nrischio\nriserva\nrisibile\nriso\nrispetto\nristoro\nrisultato\nrisvolto\nritardo\nritegno\nritmico\nritrovo\nriunione\nriva\nriverso\nrivincita\nrivolto\nrizoma\nroba\nrobotico\nrobusto\nroccia\nroco\nrodaggio\nrodere\nroditore\nrogito\nrollio\nromantico\nrompere\nronzio\nrosolare\nrospo\nrotante\nrotondo\nrotula\nrovescio\nrubizzo\nrubrica\nruga\nrullino\nrumine\nrumoroso\nruolo\nrupe\nrussare\nrustico\nsabato\nsabbiare\nsabotato\nsagoma\nsalasso\nsaldatura\nsalgemma\nsalivare\nsalmone\nsalone\nsaltare\nsaluto\nsalvo\nsapere\nsapido\nsaporito\nsaraceno\nsarcasmo\nsarto\nsassoso\nsatellite\nsatira\nsatollo\nsaturno\nsavana\nsavio\nsaziato\nsbadiglio\nsbalzo\nsbancato\nsbarra\nsbattere\nsbavare\nsbendare\nsbirciare\nsbloccato\nsbocciato\nsbrinare\nsbruffone\nsbuffare\nscabroso\nscadenza\nscala\nscambiare\nscandalo\nscapola\nscarso\nscatenare\nscavato\nscelto\nscenico\nscettro\nscheda\nschiena\nsciarpa\nscienza\nscindere\nscippo\nsciroppo\nscivolo\nsclerare\nscodella\nscolpito\nscomparto\nsconforto\nscoprire\nscorta\nscossone\nscozzese\nscriba\nscrollare\nscrutinio\nscuderia\nscultore\nscuola\nscuro\nscusare\nsdebitare\nsdoganare\nseccatura\nsecondo\nsedano\nseggiola\nsegnalato\nsegregato\nseguito\nselciato\nselettivo\nsella\nselvaggio\nsemaforo\nsembrare\nseme\nseminato\nsempre\nsenso\nsentire\nsepolto\nsequenza\nserata\nserbato\nsereno\nserio\nserpente\nserraglio\nservire\nsestina\nsetola\nsettimana\nsfacelo\nsfaldare\nsfamato\nsfarzoso\nsfaticato\nsfera\nsfida\nsfilato\nsfinge\nsfocato\nsfoderare\nsfogo\nsfoltire\nsforzato\nsfratto\nsfruttato\nsfuggito\nsfumare\nsfuso\nsgabello\nsgarbato\nsgonfiare\nsgorbio\nsgrassato\nsguardo\nsibilo\nsiccome\nsierra\nsigla\nsignore\nsilenzio\nsillaba\nsimbolo\nsimpatico\nsimulato\nsinfonia\nsingolo\nsinistro\nsino\nsintesi\nsinusoide\nsipario\nsisma\nsistole\nsituato\nslitta\nslogatura\nsloveno\nsmarrito\nsmemorato\nsmentito\nsmeraldo\nsmilzo\nsmontare\nsmottato\nsmussato\nsnellire\nsnervato\nsnodo\nsobbalzo\nsobrio\nsoccorso\nsociale\nsodale\nsoffitto\nsogno\nsoldato\nsolenne\nsolido\nsollazzo\nsolo\nsolubile\nsolvente\nsomatico\nsomma\nsonda\nsonetto\nsonnifero\nsopire\nsoppeso\nsopra\nsorgere\nsorpasso\nsorriso\nsorso\nsorteggio\nsorvolato\nsospiro\nsosta\nsottile\nspada\nspalla\nspargere\nspatola\nspavento\nspazzola\nspecie\nspedire\nspegnere\nspelatura\nsperanza\nspessore\nspettrale\nspezzato\nspia\nspigoloso\nspillato\nspinoso\nspirale\nsplendido\nsportivo\nsposo\nspranga\nsprecare\nspronato\nspruzzo\nspuntino\nsquillo\nsradicare\nsrotolato\nstabile\nstacco\nstaffa\nstagnare\nstampato\nstantio\nstarnuto\nstasera\nstatuto\nstelo\nsteppa\nsterzo\nstiletto\nstima\nstirpe\nstivale\nstizzoso\nstonato\nstorico\nstrappo\nstregato\nstridulo\nstrozzare\nstrutto\nstuccare\nstufo\nstupendo\nsubentro\nsuccoso\nsudore\nsuggerito\nsugo\nsultano\nsuonare\nsuperbo\nsupporto\nsurgelato\nsurrogato\nsussurro\nsutura\nsvagare\nsvedese\nsveglio\nsvelare\nsvenuto\nsvezia\nsviluppo\nsvista\nsvizzera\nsvolta\nsvuotare\ntabacco\ntabulato\ntacciare\ntaciturno\ntale\ntalismano\ntampone\ntannino\ntara\ntardivo\ntargato\ntariffa\ntarpare\ntartaruga\ntasto\ntattico\ntaverna\ntavolata\ntazza\nteca\ntecnico\ntelefono\ntemerario\ntempo\ntemuto\ntendone\ntenero\ntensione\ntentacolo\nteorema\nterme\nterrazzo\nterzetto\ntesi\ntesserato\ntestato\ntetro\ntettoia\ntifare\ntigella\ntimbro\ntinto\ntipico\ntipografo\ntiraggio\ntiro\ntitanio\ntitolo\ntitubante\ntizio\ntizzone\ntoccare\ntollerare\ntolto\ntombola\ntomo\ntonfo\ntonsilla\ntopazio\ntopologia\ntoppa\ntorba\ntornare\ntorrone\ntortora\ntoscano\ntossire\ntostatura\ntotano\ntrabocco\ntrachea\ntrafila\ntragedia\ntralcio\ntramonto\ntransito\ntrapano\ntrarre\ntrasloco\ntrattato\ntrave\ntreccia\ntremolio\ntrespolo\ntributo\ntricheco\ntrifoglio\ntrillo\ntrincea\ntrio\ntristezza\ntriturato\ntrivella\ntromba\ntrono\ntroppo\ntrottola\ntrovare\ntruccato\ntubatura\ntuffato\ntulipano\ntumulto\ntunisia\nturbare\nturchino\ntuta\ntutela\nubicato\nuccello\nuccisore\nudire\nuditivo\nuffa\nufficio\nuguale\nulisse\nultimato\numano\numile\numorismo\nuncinetto\nungere\nungherese\nunicorno\nunificato\nunisono\nunitario\nunte\nuovo\nupupa\nuragano\nurgenza\nurlo\nusanza\nusato\nuscito\nusignolo\nusuraio\nutensile\nutilizzo\nutopia\nvacante\nvaccinato\nvagabondo\nvagliato\nvalanga\nvalgo\nvalico\nvalletta\nvaloroso\nvalutare\nvalvola\nvampata\nvangare\nvanitoso\nvano\nvantaggio\nvanvera\nvapore\nvarano\nvarcato\nvariante\nvasca\nvedetta\nvedova\nveduto\nvegetale\nveicolo\nvelcro\nvelina\nvelluto\nveloce\nvenato\nvendemmia\nvento\nverace\nverbale\nvergogna\nverifica\nvero\nverruca\nverticale\nvescica\nvessillo\nvestale\nveterano\nvetrina\nvetusto\nviandante\nvibrante\nvicenda\nvichingo\nvicinanza\nvidimare\nvigilia\nvigneto\nvigore\nvile\nvillano\nvimini\nvincitore\nviola\nvipera\nvirgola\nvirologo\nvirulento\nviscoso\nvisione\nvispo\nvissuto\nvisura\nvita\nvitello\nvittima\nvivanda\nvivido\nviziare\nvoce\nvoga\nvolatile\nvolere\nvolpe\nvoragine\nvulcano\nzampogna\nzanna\nzappato\nzattera\nzavorra\nzefiro\nzelante\nzelo\nzenzero\nzerbino\nzibetto\nzinco\nzircone\nzitto\nzolla\nzotico\nzucchero\nzufolo\nzulu\nzuppa".split("\n"),Lo="あいこくしん\nあいさつ\nあいだ\nあおぞら\nあかちゃん\nあきる\nあけがた\nあける\nあこがれる\nあさい\nあさひ\nあしあと\nあじわう\nあずかる\nあずき\nあそぶ\nあたえる\nあたためる\nあたりまえ\nあたる\nあつい\nあつかう\nあっしゅく\nあつまり\nあつめる\nあてな\nあてはまる\nあひる\nあぶら\nあぶる\nあふれる\nあまい\nあまど\nあまやかす\nあまり\nあみもの\nあめりか\nあやまる\nあゆむ\nあらいぐま\nあらし\nあらすじ\nあらためる\nあらゆる\nあらわす\nありがとう\nあわせる\nあわてる\nあんい\nあんがい\nあんこ\nあんぜん\nあんてい\nあんない\nあんまり\nいいだす\nいおん\nいがい\nいがく\nいきおい\nいきなり\nいきもの\nいきる\nいくじ\nいくぶん\nいけばな\nいけん\nいこう\nいこく\nいこつ\nいさましい\nいさん\nいしき\nいじゅう\nいじょう\nいじわる\nいずみ\nいずれ\nいせい\nいせえび\nいせかい\nいせき\nいぜん\nいそうろう\nいそがしい\nいだい\nいだく\nいたずら\nいたみ\nいたりあ\nいちおう\nいちじ\nいちど\nいちば\nいちぶ\nいちりゅう\nいつか\nいっしゅん\nいっせい\nいっそう\nいったん\nいっち\nいってい\nいっぽう\nいてざ\nいてん\nいどう\nいとこ\nいない\nいなか\nいねむり\nいのち\nいのる\nいはつ\nいばる\nいはん\nいびき\nいひん\nいふく\nいへん\nいほう\nいみん\nいもうと\nいもたれ\nいもり\nいやがる\nいやす\nいよかん\nいよく\nいらい\nいらすと\nいりぐち\nいりょう\nいれい\nいれもの\nいれる\nいろえんぴつ\nいわい\nいわう\nいわかん\nいわば\nいわゆる\nいんげんまめ\nいんさつ\nいんしょう\nいんよう\nうえき\nうえる\nうおざ\nうがい\nうかぶ\nうかべる\nうきわ\nうくらいな\nうくれれ\nうけたまわる\nうけつけ\nうけとる\nうけもつ\nうける\nうごかす\nうごく\nうこん\nうさぎ\nうしなう\nうしろがみ\nうすい\nうすぎ\nうすぐらい\nうすめる\nうせつ\nうちあわせ\nうちがわ\nうちき\nうちゅう\nうっかり\nうつくしい\nうったえる\nうつる\nうどん\nうなぎ\nうなじ\nうなずく\nうなる\nうねる\nうのう\nうぶげ\nうぶごえ\nうまれる\nうめる\nうもう\nうやまう\nうよく\nうらがえす\nうらぐち\nうらない\nうりあげ\nうりきれ\nうるさい\nうれしい\nうれゆき\nうれる\nうろこ\nうわき\nうわさ\nうんこう\nうんちん\nうんてん\nうんどう\nえいえん\nえいが\nえいきょう\nえいご\nえいせい\nえいぶん\nえいよう\nえいわ\nえおり\nえがお\nえがく\nえきたい\nえくせる\nえしゃく\nえすて\nえつらん\nえのぐ\nえほうまき\nえほん\nえまき\nえもじ\nえもの\nえらい\nえらぶ\nえりあ\nえんえん\nえんかい\nえんぎ\nえんげき\nえんしゅう\nえんぜつ\nえんそく\nえんちょう\nえんとつ\nおいかける\nおいこす\nおいしい\nおいつく\nおうえん\nおうさま\nおうじ\nおうせつ\nおうたい\nおうふく\nおうべい\nおうよう\nおえる\nおおい\nおおう\nおおどおり\nおおや\nおおよそ\nおかえり\nおかず\nおがむ\nおかわり\nおぎなう\nおきる\nおくさま\nおくじょう\nおくりがな\nおくる\nおくれる\nおこす\nおこなう\nおこる\nおさえる\nおさない\nおさめる\nおしいれ\nおしえる\nおじぎ\nおじさん\nおしゃれ\nおそらく\nおそわる\nおたがい\nおたく\nおだやか\nおちつく\nおっと\nおつり\nおでかけ\nおとしもの\nおとなしい\nおどり\nおどろかす\nおばさん\nおまいり\nおめでとう\nおもいで\nおもう\nおもたい\nおもちゃ\nおやつ\nおやゆび\nおよぼす\nおらんだ\nおろす\nおんがく\nおんけい\nおんしゃ\nおんせん\nおんだん\nおんちゅう\nおんどけい\nかあつ\nかいが\nがいき\nがいけん\nがいこう\nかいさつ\nかいしゃ\nかいすいよく\nかいぜん\nかいぞうど\nかいつう\nかいてん\nかいとう\nかいふく\nがいへき\nかいほう\nかいよう\nがいらい\nかいわ\nかえる\nかおり\nかかえる\nかがく\nかがし\nかがみ\nかくご\nかくとく\nかざる\nがぞう\nかたい\nかたち\nがちょう\nがっきゅう\nがっこう\nがっさん\nがっしょう\nかなざわし\nかのう\nがはく\nかぶか\nかほう\nかほご\nかまう\nかまぼこ\nかめれおん\nかゆい\nかようび\nからい\nかるい\nかろう\nかわく\nかわら\nがんか\nかんけい\nかんこう\nかんしゃ\nかんそう\nかんたん\nかんち\nがんばる\nきあい\nきあつ\nきいろ\nぎいん\nきうい\nきうん\nきえる\nきおう\nきおく\nきおち\nきおん\nきかい\nきかく\nきかんしゃ\nききて\nきくばり\nきくらげ\nきけんせい\nきこう\nきこえる\nきこく\nきさい\nきさく\nきさま\nきさらぎ\nぎじかがく\nぎしき\nぎじたいけん\nぎじにってい\nぎじゅつしゃ\nきすう\nきせい\nきせき\nきせつ\nきそう\nきぞく\nきぞん\nきたえる\nきちょう\nきつえん\nぎっちり\nきつつき\nきつね\nきてい\nきどう\nきどく\nきない\nきなが\nきなこ\nきぬごし\nきねん\nきのう\nきのした\nきはく\nきびしい\nきひん\nきふく\nきぶん\nきぼう\nきほん\nきまる\nきみつ\nきむずかしい\nきめる\nきもだめし\nきもち\nきもの\nきゃく\nきやく\nぎゅうにく\nきよう\nきょうりゅう\nきらい\nきらく\nきりん\nきれい\nきれつ\nきろく\nぎろん\nきわめる\nぎんいろ\nきんかくじ\nきんじょ\nきんようび\nぐあい\nくいず\nくうかん\nくうき\nくうぐん\nくうこう\nぐうせい\nくうそう\nぐうたら\nくうふく\nくうぼ\nくかん\nくきょう\nくげん\nぐこう\nくさい\nくさき\nくさばな\nくさる\nくしゃみ\nくしょう\nくすのき\nくすりゆび\nくせげ\nくせん\nぐたいてき\nくださる\nくたびれる\nくちこみ\nくちさき\nくつした\nぐっすり\nくつろぐ\nくとうてん\nくどく\nくなん\nくねくね\nくのう\nくふう\nくみあわせ\nくみたてる\nくめる\nくやくしょ\nくらす\nくらべる\nくるま\nくれる\nくろう\nくわしい\nぐんかん\nぐんしょく\nぐんたい\nぐんて\nけあな\nけいかく\nけいけん\nけいこ\nけいさつ\nげいじゅつ\nけいたい\nげいのうじん\nけいれき\nけいろ\nけおとす\nけおりもの\nげきか\nげきげん\nげきだん\nげきちん\nげきとつ\nげきは\nげきやく\nげこう\nげこくじょう\nげざい\nけさき\nげざん\nけしき\nけしごむ\nけしょう\nげすと\nけたば\nけちゃっぷ\nけちらす\nけつあつ\nけつい\nけつえき\nけっこん\nけつじょ\nけっせき\nけってい\nけつまつ\nげつようび\nげつれい\nけつろん\nげどく\nけとばす\nけとる\nけなげ\nけなす\nけなみ\nけぬき\nげねつ\nけねん\nけはい\nげひん\nけぶかい\nげぼく\nけまり\nけみかる\nけむし\nけむり\nけもの\nけらい\nけろけろ\nけわしい\nけんい\nけんえつ\nけんお\nけんか\nげんき\nけんげん\nけんこう\nけんさく\nけんしゅう\nけんすう\nげんそう\nけんちく\nけんてい\nけんとう\nけんない\nけんにん\nげんぶつ\nけんま\nけんみん\nけんめい\nけんらん\nけんり\nこあくま\nこいぬ\nこいびと\nごうい\nこうえん\nこうおん\nこうかん\nごうきゅう\nごうけい\nこうこう\nこうさい\nこうじ\nこうすい\nごうせい\nこうそく\nこうたい\nこうちゃ\nこうつう\nこうてい\nこうどう\nこうない\nこうはい\nごうほう\nごうまん\nこうもく\nこうりつ\nこえる\nこおり\nごかい\nごがつ\nごかん\nこくご\nこくさい\nこくとう\nこくない\nこくはく\nこぐま\nこけい\nこける\nここのか\nこころ\nこさめ\nこしつ\nこすう\nこせい\nこせき\nこぜん\nこそだて\nこたい\nこたえる\nこたつ\nこちょう\nこっか\nこつこつ\nこつばん\nこつぶ\nこてい\nこてん\nことがら\nことし\nことば\nことり\nこなごな\nこねこね\nこのまま\nこのみ\nこのよ\nごはん\nこひつじ\nこふう\nこふん\nこぼれる\nごまあぶら\nこまかい\nごますり\nこまつな\nこまる\nこむぎこ\nこもじ\nこもち\nこもの\nこもん\nこやく\nこやま\nこゆう\nこゆび\nこよい\nこよう\nこりる\nこれくしょん\nころっけ\nこわもて\nこわれる\nこんいん\nこんかい\nこんき\nこんしゅう\nこんすい\nこんだて\nこんとん\nこんなん\nこんびに\nこんぽん\nこんまけ\nこんや\nこんれい\nこんわく\nざいえき\nさいかい\nさいきん\nざいげん\nざいこ\nさいしょ\nさいせい\nざいたく\nざいちゅう\nさいてき\nざいりょう\nさうな\nさかいし\nさがす\nさかな\nさかみち\nさがる\nさぎょう\nさくし\nさくひん\nさくら\nさこく\nさこつ\nさずかる\nざせき\nさたん\nさつえい\nざつおん\nざっか\nざつがく\nさっきょく\nざっし\nさつじん\nざっそう\nさつたば\nさつまいも\nさてい\nさといも\nさとう\nさとおや\nさとし\nさとる\nさのう\nさばく\nさびしい\nさべつ\nさほう\nさほど\nさます\nさみしい\nさみだれ\nさむけ\nさめる\nさやえんどう\nさゆう\nさよう\nさよく\nさらだ\nざるそば\nさわやか\nさわる\nさんいん\nさんか\nさんきゃく\nさんこう\nさんさい\nざんしょ\nさんすう\nさんせい\nさんそ\nさんち\nさんま\nさんみ\nさんらん\nしあい\nしあげ\nしあさって\nしあわせ\nしいく\nしいん\nしうち\nしえい\nしおけ\nしかい\nしかく\nじかん\nしごと\nしすう\nじだい\nしたうけ\nしたぎ\nしたて\nしたみ\nしちょう\nしちりん\nしっかり\nしつじ\nしつもん\nしてい\nしてき\nしてつ\nじてん\nじどう\nしなぎれ\nしなもの\nしなん\nしねま\nしねん\nしのぐ\nしのぶ\nしはい\nしばかり\nしはつ\nしはらい\nしはん\nしひょう\nしふく\nじぶん\nしへい\nしほう\nしほん\nしまう\nしまる\nしみん\nしむける\nじむしょ\nしめい\nしめる\nしもん\nしゃいん\nしゃうん\nしゃおん\nじゃがいも\nしやくしょ\nしゃくほう\nしゃけん\nしゃこ\nしゃざい\nしゃしん\nしゃせん\nしゃそう\nしゃたい\nしゃちょう\nしゃっきん\nじゃま\nしゃりん\nしゃれい\nじゆう\nじゅうしょ\nしゅくはく\nじゅしん\nしゅっせき\nしゅみ\nしゅらば\nじゅんばん\nしょうかい\nしょくたく\nしょっけん\nしょどう\nしょもつ\nしらせる\nしらべる\nしんか\nしんこう\nじんじゃ\nしんせいじ\nしんちく\nしんりん\nすあげ\nすあし\nすあな\nずあん\nすいえい\nすいか\nすいとう\nずいぶん\nすいようび\nすうがく\nすうじつ\nすうせん\nすおどり\nすきま\nすくう\nすくない\nすける\nすごい\nすこし\nずさん\nすずしい\nすすむ\nすすめる\nすっかり\nずっしり\nずっと\nすてき\nすてる\nすねる\nすのこ\nすはだ\nすばらしい\nずひょう\nずぶぬれ\nすぶり\nすふれ\nすべて\nすべる\nずほう\nすぼん\nすまい\nすめし\nすもう\nすやき\nすらすら\nするめ\nすれちがう\nすろっと\nすわる\nすんぜん\nすんぽう\nせあぶら\nせいかつ\nせいげん\nせいじ\nせいよう\nせおう\nせかいかん\nせきにん\nせきむ\nせきゆ\nせきらんうん\nせけん\nせこう\nせすじ\nせたい\nせたけ\nせっかく\nせっきゃく\nぜっく\nせっけん\nせっこつ\nせっさたくま\nせつぞく\nせつだん\nせつでん\nせっぱん\nせつび\nせつぶん\nせつめい\nせつりつ\nせなか\nせのび\nせはば\nせびろ\nせぼね\nせまい\nせまる\nせめる\nせもたれ\nせりふ\nぜんあく\nせんい\nせんえい\nせんか\nせんきょ\nせんく\nせんげん\nぜんご\nせんさい\nせんしゅ\nせんすい\nせんせい\nせんぞ\nせんたく\nせんちょう\nせんてい\nせんとう\nせんぬき\nせんねん\nせんぱい\nぜんぶ\nぜんぽう\nせんむ\nせんめんじょ\nせんもん\nせんやく\nせんゆう\nせんよう\nぜんら\nぜんりゃく\nせんれい\nせんろ\nそあく\nそいとげる\nそいね\nそうがんきょう\nそうき\nそうご\nそうしん\nそうだん\nそうなん\nそうび\nそうめん\nそうり\nそえもの\nそえん\nそがい\nそげき\nそこう\nそこそこ\nそざい\nそしな\nそせい\nそせん\nそそぐ\nそだてる\nそつう\nそつえん\nそっかん\nそつぎょう\nそっけつ\nそっこう\nそっせん\nそっと\nそとがわ\nそとづら\nそなえる\nそなた\nそふぼ\nそぼく\nそぼろ\nそまつ\nそまる\nそむく\nそむりえ\nそめる\nそもそも\nそよかぜ\nそらまめ\nそろう\nそんかい\nそんけい\nそんざい\nそんしつ\nそんぞく\nそんちょう\nぞんび\nぞんぶん\nそんみん\nたあい\nたいいん\nたいうん\nたいえき\nたいおう\nだいがく\nたいき\nたいぐう\nたいけん\nたいこ\nたいざい\nだいじょうぶ\nだいすき\nたいせつ\nたいそう\nだいたい\nたいちょう\nたいてい\nだいどころ\nたいない\nたいねつ\nたいのう\nたいはん\nだいひょう\nたいふう\nたいへん\nたいほ\nたいまつばな\nたいみんぐ\nたいむ\nたいめん\nたいやき\nたいよう\nたいら\nたいりょく\nたいる\nたいわん\nたうえ\nたえる\nたおす\nたおる\nたおれる\nたかい\nたかね\nたきび\nたくさん\nたこく\nたこやき\nたさい\nたしざん\nだじゃれ\nたすける\nたずさわる\nたそがれ\nたたかう\nたたく\nただしい\nたたみ\nたちばな\nだっかい\nだっきゃく\nだっこ\nだっしゅつ\nだったい\nたてる\nたとえる\nたなばた\nたにん\nたぬき\nたのしみ\nたはつ\nたぶん\nたべる\nたぼう\nたまご\nたまる\nだむる\nためいき\nためす\nためる\nたもつ\nたやすい\nたよる\nたらす\nたりきほんがん\nたりょう\nたりる\nたると\nたれる\nたれんと\nたろっと\nたわむれる\nだんあつ\nたんい\nたんおん\nたんか\nたんき\nたんけん\nたんご\nたんさん\nたんじょうび\nだんせい\nたんそく\nたんたい\nだんち\nたんてい\nたんとう\nだんな\nたんにん\nだんねつ\nたんのう\nたんぴん\nだんぼう\nたんまつ\nたんめい\nだんれつ\nだんろ\nだんわ\nちあい\nちあん\nちいき\nちいさい\nちえん\nちかい\nちから\nちきゅう\nちきん\nちけいず\nちけん\nちこく\nちさい\nちしき\nちしりょう\nちせい\nちそう\nちたい\nちたん\nちちおや\nちつじょ\nちてき\nちてん\nちぬき\nちぬり\nちのう\nちひょう\nちへいせん\nちほう\nちまた\nちみつ\nちみどろ\nちめいど\nちゃんこなべ\nちゅうい\nちゆりょく\nちょうし\nちょさくけん\nちらし\nちらみ\nちりがみ\nちりょう\nちるど\nちわわ\nちんたい\nちんもく\nついか\nついたち\nつうか\nつうじょう\nつうはん\nつうわ\nつかう\nつかれる\nつくね\nつくる\nつけね\nつける\nつごう\nつたえる\nつづく\nつつじ\nつつむ\nつとめる\nつながる\nつなみ\nつねづね\nつのる\nつぶす\nつまらない\nつまる\nつみき\nつめたい\nつもり\nつもる\nつよい\nつるぼ\nつるみく\nつわもの\nつわり\nてあし\nてあて\nてあみ\nていおん\nていか\nていき\nていけい\nていこく\nていさつ\nていし\nていせい\nていたい\nていど\nていねい\nていひょう\nていへん\nていぼう\nてうち\nておくれ\nてきとう\nてくび\nでこぼこ\nてさぎょう\nてさげ\nてすり\nてそう\nてちがい\nてちょう\nてつがく\nてつづき\nでっぱ\nてつぼう\nてつや\nでぬかえ\nてぬき\nてぬぐい\nてのひら\nてはい\nてぶくろ\nてふだ\nてほどき\nてほん\nてまえ\nてまきずし\nてみじか\nてみやげ\nてらす\nてれび\nてわけ\nてわたし\nでんあつ\nてんいん\nてんかい\nてんき\nてんぐ\nてんけん\nてんごく\nてんさい\nてんし\nてんすう\nでんち\nてんてき\nてんとう\nてんない\nてんぷら\nてんぼうだい\nてんめつ\nてんらんかい\nでんりょく\nでんわ\nどあい\nといれ\nどうかん\nとうきゅう\nどうぐ\nとうし\nとうむぎ\nとおい\nとおか\nとおく\nとおす\nとおる\nとかい\nとかす\nときおり\nときどき\nとくい\nとくしゅう\nとくてん\nとくに\nとくべつ\nとけい\nとける\nとこや\nとさか\nとしょかん\nとそう\nとたん\nとちゅう\nとっきゅう\nとっくん\nとつぜん\nとつにゅう\nとどける\nととのえる\nとない\nとなえる\nとなり\nとのさま\nとばす\nどぶがわ\nとほう\nとまる\nとめる\nともだち\nともる\nどようび\nとらえる\nとんかつ\nどんぶり\nないかく\nないこう\nないしょ\nないす\nないせん\nないそう\nなおす\nながい\nなくす\nなげる\nなこうど\nなさけ\nなたでここ\nなっとう\nなつやすみ\nななおし\nなにごと\nなにもの\nなにわ\nなのか\nなふだ\nなまいき\nなまえ\nなまみ\nなみだ\nなめらか\nなめる\nなやむ\nならう\nならび\nならぶ\nなれる\nなわとび\nなわばり\nにあう\nにいがた\nにうけ\nにおい\nにかい\nにがて\nにきび\nにくしみ\nにくまん\nにげる\nにさんかたんそ\nにしき\nにせもの\nにちじょう\nにちようび\nにっか\nにっき\nにっけい\nにっこう\nにっさん\nにっしょく\nにっすう\nにっせき\nにってい\nになう\nにほん\nにまめ\nにもつ\nにやり\nにゅういん\nにりんしゃ\nにわとり\nにんい\nにんか\nにんき\nにんげん\nにんしき\nにんずう\nにんそう\nにんたい\nにんち\nにんてい\nにんにく\nにんぷ\nにんまり\nにんむ\nにんめい\nにんよう\nぬいくぎ\nぬかす\nぬぐいとる\nぬぐう\nぬくもり\nぬすむ\nぬまえび\nぬめり\nぬらす\nぬんちゃく\nねあげ\nねいき\nねいる\nねいろ\nねぐせ\nねくたい\nねくら\nねこぜ\nねこむ\nねさげ\nねすごす\nねそべる\nねだん\nねつい\nねっしん\nねつぞう\nねったいぎょ\nねぶそく\nねふだ\nねぼう\nねほりはほり\nねまき\nねまわし\nねみみ\nねむい\nねむたい\nねもと\nねらう\nねわざ\nねんいり\nねんおし\nねんかん\nねんきん\nねんぐ\nねんざ\nねんし\nねんちゃく\nねんど\nねんぴ\nねんぶつ\nねんまつ\nねんりょう\nねんれい\nのいず\nのおづま\nのがす\nのきなみ\nのこぎり\nのこす\nのこる\nのせる\nのぞく\nのぞむ\nのたまう\nのちほど\nのっく\nのばす\nのはら\nのべる\nのぼる\nのみもの\nのやま\nのらいぬ\nのらねこ\nのりもの\nのりゆき\nのれん\nのんき\nばあい\nはあく\nばあさん\nばいか\nばいく\nはいけん\nはいご\nはいしん\nはいすい\nはいせん\nはいそう\nはいち\nばいばい\nはいれつ\nはえる\nはおる\nはかい\nばかり\nはかる\nはくしゅ\nはけん\nはこぶ\nはさみ\nはさん\nはしご\nばしょ\nはしる\nはせる\nぱそこん\nはそん\nはたん\nはちみつ\nはつおん\nはっかく\nはづき\nはっきり\nはっくつ\nはっけん\nはっこう\nはっさん\nはっしん\nはったつ\nはっちゅう\nはってん\nはっぴょう\nはっぽう\nはなす\nはなび\nはにかむ\nはぶらし\nはみがき\nはむかう\nはめつ\nはやい\nはやし\nはらう\nはろうぃん\nはわい\nはんい\nはんえい\nはんおん\nはんかく\nはんきょう\nばんぐみ\nはんこ\nはんしゃ\nはんすう\nはんだん\nぱんち\nぱんつ\nはんてい\nはんとし\nはんのう\nはんぱ\nはんぶん\nはんぺん\nはんぼうき\nはんめい\nはんらん\nはんろん\nひいき\nひうん\nひえる\nひかく\nひかり\nひかる\nひかん\nひくい\nひけつ\nひこうき\nひこく\nひさい\nひさしぶり\nひさん\nびじゅつかん\nひしょ\nひそか\nひそむ\nひたむき\nひだり\nひたる\nひつぎ\nひっこし\nひっし\nひつじゅひん\nひっす\nひつぜん\nぴったり\nぴっちり\nひつよう\nひてい\nひとごみ\nひなまつり\nひなん\nひねる\nひはん\nひびく\nひひょう\nひほう\nひまわり\nひまん\nひみつ\nひめい\nひめじし\nひやけ\nひやす\nひよう\nびょうき\nひらがな\nひらく\nひりつ\nひりょう\nひるま\nひるやすみ\nひれい\nひろい\nひろう\nひろき\nひろゆき\nひんかく\nひんけつ\nひんこん\nひんしゅ\nひんそう\nぴんち\nひんぱん\nびんぼう\nふあん\nふいうち\nふうけい\nふうせん\nぷうたろう\nふうとう\nふうふ\nふえる\nふおん\nふかい\nふきん\nふくざつ\nふくぶくろ\nふこう\nふさい\nふしぎ\nふじみ\nふすま\nふせい\nふせぐ\nふそく\nぶたにく\nふたん\nふちょう\nふつう\nふつか\nふっかつ\nふっき\nふっこく\nぶどう\nふとる\nふとん\nふのう\nふはい\nふひょう\nふへん\nふまん\nふみん\nふめつ\nふめん\nふよう\nふりこ\nふりる\nふるい\nふんいき\nぶんがく\nぶんぐ\nふんしつ\nぶんせき\nふんそう\nぶんぽう\nへいあん\nへいおん\nへいがい\nへいき\nへいげん\nへいこう\nへいさ\nへいしゃ\nへいせつ\nへいそ\nへいたく\nへいてん\nへいねつ\nへいわ\nへきが\nへこむ\nべにいろ\nべにしょうが\nへらす\nへんかん\nべんきょう\nべんごし\nへんさい\nへんたい\nべんり\nほあん\nほいく\nぼうぎょ\nほうこく\nほうそう\nほうほう\nほうもん\nほうりつ\nほえる\nほおん\nほかん\nほきょう\nぼきん\nほくろ\nほけつ\nほけん\nほこう\nほこる\nほしい\nほしつ\nほしゅ\nほしょう\nほせい\nほそい\nほそく\nほたて\nほたる\nぽちぶくろ\nほっきょく\nほっさ\nほったん\nほとんど\nほめる\nほんい\nほんき\nほんけ\nほんしつ\nほんやく\nまいにち\nまかい\nまかせる\nまがる\nまける\nまこと\nまさつ\nまじめ\nますく\nまぜる\nまつり\nまとめ\nまなぶ\nまぬけ\nまねく\nまほう\nまもる\nまゆげ\nまよう\nまろやか\nまわす\nまわり\nまわる\nまんが\nまんきつ\nまんぞく\nまんなか\nみいら\nみうち\nみえる\nみがく\nみかた\nみかん\nみけん\nみこん\nみじかい\nみすい\nみすえる\nみせる\nみっか\nみつかる\nみつける\nみてい\nみとめる\nみなと\nみなみかさい\nみねらる\nみのう\nみのがす\nみほん\nみもと\nみやげ\nみらい\nみりょく\nみわく\nみんか\nみんぞく\nむいか\nむえき\nむえん\nむかい\nむかう\nむかえ\nむかし\nむぎちゃ\nむける\nむげん\nむさぼる\nむしあつい\nむしば\nむじゅん\nむしろ\nむすう\nむすこ\nむすぶ\nむすめ\nむせる\nむせん\nむちゅう\nむなしい\nむのう\nむやみ\nむよう\nむらさき\nむりょう\nむろん\nめいあん\nめいうん\nめいえん\nめいかく\nめいきょく\nめいさい\nめいし\nめいそう\nめいぶつ\nめいれい\nめいわく\nめぐまれる\nめざす\nめした\nめずらしい\nめだつ\nめまい\nめやす\nめんきょ\nめんせき\nめんどう\nもうしあげる\nもうどうけん\nもえる\nもくし\nもくてき\nもくようび\nもちろん\nもどる\nもらう\nもんく\nもんだい\nやおや\nやける\nやさい\nやさしい\nやすい\nやすたろう\nやすみ\nやせる\nやそう\nやたい\nやちん\nやっと\nやっぱり\nやぶる\nやめる\nややこしい\nやよい\nやわらかい\nゆうき\nゆうびんきょく\nゆうべ\nゆうめい\nゆけつ\nゆしゅつ\nゆせん\nゆそう\nゆたか\nゆちゃく\nゆでる\nゆにゅう\nゆびわ\nゆらい\nゆれる\nようい\nようか\nようきゅう\nようじ\nようす\nようちえん\nよかぜ\nよかん\nよきん\nよくせい\nよくぼう\nよけい\nよごれる\nよさん\nよしゅう\nよそう\nよそく\nよっか\nよてい\nよどがわく\nよねつ\nよやく\nよゆう\nよろこぶ\nよろしい\nらいう\nらくがき\nらくご\nらくさつ\nらくだ\nらしんばん\nらせん\nらぞく\nらたい\nらっか\nられつ\nりえき\nりかい\nりきさく\nりきせつ\nりくぐん\nりくつ\nりけん\nりこう\nりせい\nりそう\nりそく\nりてん\nりねん\nりゆう\nりゅうがく\nりよう\nりょうり\nりょかん\nりょくちゃ\nりょこう\nりりく\nりれき\nりろん\nりんご\nるいけい\nるいさい\nるいじ\nるいせき\nるすばん\nるりがわら\nれいかん\nれいぎ\nれいせい\nれいぞうこ\nれいとう\nれいぼう\nれきし\nれきだい\nれんあい\nれんけい\nれんこん\nれんさい\nれんしゅう\nれんぞく\nれんらく\nろうか\nろうご\nろうじん\nろうそく\nろくが\nろこつ\nろじうら\nろしゅつ\nろせん\nろてん\nろめん\nろれつ\nろんぎ\nろんぱ\nろんぶん\nろんり\nわかす\nわかめ\nわかやま\nわかれる\nわしつ\nわじまし\nわすれもの\nわらう\nわれる".split("\n"),Do="가격\n가끔\n가난\n가능\n가득\n가르침\n가뭄\n가방\n가상\n가슴\n가운데\n가을\n가이드\n가입\n가장\n가정\n가족\n가죽\n각오\n각자\n간격\n간부\n간섭\n간장\n간접\n간판\n갈등\n갈비\n갈색\n갈증\n감각\n감기\n감소\n감수성\n감자\n감정\n갑자기\n강남\n강당\n강도\n강력히\n강변\n강북\n강사\n강수량\n강아지\n강원도\n강의\n강제\n강조\n같이\n개구리\n개나리\n개방\n개별\n개선\n개성\n개인\n객관적\n거실\n거액\n거울\n거짓\n거품\n걱정\n건강\n건물\n건설\n건조\n건축\n걸음\n검사\n검토\n게시판\n게임\n겨울\n견해\n결과\n결국\n결론\n결석\n결승\n결심\n결정\n결혼\n경계\n경고\n경기\n경력\n경복궁\n경비\n경상도\n경영\n경우\n경쟁\n경제\n경주\n경찰\n경치\n경향\n경험\n계곡\n계단\n계란\n계산\n계속\n계약\n계절\n계층\n계획\n고객\n고구려\n고궁\n고급\n고등학생\n고무신\n고민\n고양이\n고장\n고전\n고집\n고춧가루\n고통\n고향\n곡식\n골목\n골짜기\n골프\n공간\n공개\n공격\n공군\n공급\n공기\n공동\n공무원\n공부\n공사\n공식\n공업\n공연\n공원\n공장\n공짜\n공책\n공통\n공포\n공항\n공휴일\n과목\n과일\n과장\n과정\n과학\n관객\n관계\n관광\n관념\n관람\n관련\n관리\n관습\n관심\n관점\n관찰\n광경\n광고\n광장\n광주\n괴로움\n굉장히\n교과서\n교문\n교복\n교실\n교양\n교육\n교장\n교직\n교통\n교환\n교훈\n구경\n구름\n구멍\n구별\n구분\n구석\n구성\n구속\n구역\n구입\n구청\n구체적\n국가\n국기\n국내\n국립\n국물\n국민\n국수\n국어\n국왕\n국적\n국제\n국회\n군대\n군사\n군인\n궁극적\n권리\n권위\n권투\n귀국\n귀신\n규정\n규칙\n균형\n그날\n그냥\n그늘\n그러나\n그룹\n그릇\n그림\n그제서야\n그토록\n극복\n극히\n근거\n근교\n근래\n근로\n근무\n근본\n근원\n근육\n근처\n글씨\n글자\n금강산\n금고\n금년\n금메달\n금액\n금연\n금요일\n금지\n긍정적\n기간\n기관\n기념\n기능\n기독교\n기둥\n기록\n기름\n기법\n기본\n기분\n기쁨\n기숙사\n기술\n기억\n기업\n기온\n기운\n기원\n기적\n기준\n기침\n기혼\n기획\n긴급\n긴장\n길이\n김밥\n김치\n김포공항\n깍두기\n깜빡\n깨달음\n깨소금\n껍질\n꼭대기\n꽃잎\n나들이\n나란히\n나머지\n나물\n나침반\n나흘\n낙엽\n난방\n날개\n날씨\n날짜\n남녀\n남대문\n남매\n남산\n남자\n남편\n남학생\n낭비\n낱말\n내년\n내용\n내일\n냄비\n냄새\n냇물\n냉동\n냉면\n냉방\n냉장고\n넥타이\n넷째\n노동\n노란색\n노력\n노인\n녹음\n녹차\n녹화\n논리\n논문\n논쟁\n놀이\n농구\n농담\n농민\n농부\n농업\n농장\n농촌\n높이\n눈동자\n눈물\n눈썹\n뉴욕\n느낌\n늑대\n능동적\n능력\n다방\n다양성\n다음\n다이어트\n다행\n단계\n단골\n단독\n단맛\n단순\n단어\n단위\n단점\n단체\n단추\n단편\n단풍\n달걀\n달러\n달력\n달리\n닭고기\n담당\n담배\n담요\n담임\n답변\n답장\n당근\n당분간\n당연히\n당장\n대규모\n대낮\n대단히\n대답\n대도시\n대략\n대량\n대륙\n대문\n대부분\n대신\n대응\n대장\n대전\n대접\n대중\n대책\n대출\n대충\n대통령\n대학\n대한민국\n대합실\n대형\n덩어리\n데이트\n도대체\n도덕\n도둑\n도망\n도서관\n도심\n도움\n도입\n도자기\n도저히\n도전\n도중\n도착\n독감\n독립\n독서\n독일\n독창적\n동화책\n뒷모습\n뒷산\n딸아이\n마누라\n마늘\n마당\n마라톤\n마련\n마무리\n마사지\n마약\n마요네즈\n마을\n마음\n마이크\n마중\n마지막\n마찬가지\n마찰\n마흔\n막걸리\n막내\n막상\n만남\n만두\n만세\n만약\n만일\n만점\n만족\n만화\n많이\n말기\n말씀\n말투\n맘대로\n망원경\n매년\n매달\n매력\n매번\n매스컴\n매일\n매장\n맥주\n먹이\n먼저\n먼지\n멀리\n메일\n며느리\n며칠\n면담\n멸치\n명단\n명령\n명예\n명의\n명절\n명칭\n명함\n모금\n모니터\n모델\n모든\n모범\n모습\n모양\n모임\n모조리\n모집\n모퉁이\n목걸이\n목록\n목사\n목소리\n목숨\n목적\n목표\n몰래\n몸매\n몸무게\n몸살\n몸속\n몸짓\n몸통\n몹시\n무관심\n무궁화\n무더위\n무덤\n무릎\n무슨\n무엇\n무역\n무용\n무조건\n무지개\n무척\n문구\n문득\n문법\n문서\n문제\n문학\n문화\n물가\n물건\n물결\n물고기\n물론\n물리학\n물음\n물질\n물체\n미국\n미디어\n미사일\n미술\n미역\n미용실\n미움\n미인\n미팅\n미혼\n민간\n민족\n민주\n믿음\n밀가루\n밀리미터\n밑바닥\n바가지\n바구니\n바나나\n바늘\n바닥\n바닷가\n바람\n바이러스\n바탕\n박물관\n박사\n박수\n반대\n반드시\n반말\n반발\n반성\n반응\n반장\n반죽\n반지\n반찬\n받침\n발가락\n발걸음\n발견\n발달\n발레\n발목\n발바닥\n발생\n발음\n발자국\n발전\n발톱\n발표\n밤하늘\n밥그릇\n밥맛\n밥상\n밥솥\n방금\n방면\n방문\n방바닥\n방법\n방송\n방식\n방안\n방울\n방지\n방학\n방해\n방향\n배경\n배꼽\n배달\n배드민턴\n백두산\n백색\n백성\n백인\n백제\n백화점\n버릇\n버섯\n버튼\n번개\n번역\n번지\n번호\n벌금\n벌레\n벌써\n범위\n범인\n범죄\n법률\n법원\n법적\n법칙\n베이징\n벨트\n변경\n변동\n변명\n변신\n변호사\n변화\n별도\n별명\n별일\n병실\n병아리\n병원\n보관\n보너스\n보라색\n보람\n보름\n보상\n보안\n보자기\n보장\n보전\n보존\n보통\n보편적\n보험\n복도\n복사\n복숭아\n복습\n볶음\n본격적\n본래\n본부\n본사\n본성\n본인\n본질\n볼펜\n봉사\n봉지\n봉투\n부근\n부끄러움\n부담\n부동산\n부문\n부분\n부산\n부상\n부엌\n부인\n부작용\n부장\n부정\n부족\n부지런히\n부친\n부탁\n부품\n부회장\n북부\n북한\n분노\n분량\n분리\n분명\n분석\n분야\n분위기\n분필\n분홍색\n불고기\n불과\n불교\n불꽃\n불만\n불법\n불빛\n불안\n불이익\n불행\n브랜드\n비극\n비난\n비닐\n비둘기\n비디오\n비로소\n비만\n비명\n비밀\n비바람\n비빔밥\n비상\n비용\n비율\n비중\n비타민\n비판\n빌딩\n빗물\n빗방울\n빗줄기\n빛깔\n빨간색\n빨래\n빨리\n사건\n사계절\n사나이\n사냥\n사람\n사랑\n사립\n사모님\n사물\n사방\n사상\n사생활\n사설\n사슴\n사실\n사업\n사용\n사월\n사장\n사전\n사진\n사촌\n사춘기\n사탕\n사투리\n사흘\n산길\n산부인과\n산업\n산책\n살림\n살인\n살짝\n삼계탕\n삼국\n삼십\n삼월\n삼촌\n상관\n상금\n상대\n상류\n상반기\n상상\n상식\n상업\n상인\n상자\n상점\n상처\n상추\n상태\n상표\n상품\n상황\n새벽\n색깔\n색연필\n생각\n생명\n생물\n생방송\n생산\n생선\n생신\n생일\n생활\n서랍\n서른\n서명\n서민\n서비스\n서양\n서울\n서적\n서점\n서쪽\n서클\n석사\n석유\n선거\n선물\n선배\n선생\n선수\n선원\n선장\n선전\n선택\n선풍기\n설거지\n설날\n설렁탕\n설명\n설문\n설사\n설악산\n설치\n설탕\n섭씨\n성공\n성당\n성명\n성별\n성인\n성장\n성적\n성질\n성함\n세금\n세미나\n세상\n세월\n세종대왕\n세탁\n센터\n센티미터\n셋째\n소규모\n소극적\n소금\n소나기\n소년\n소득\n소망\n소문\n소설\n소속\n소아과\n소용\n소원\n소음\n소중히\n소지품\n소질\n소풍\n소형\n속담\n속도\n속옷\n손가락\n손길\n손녀\n손님\n손등\n손목\n손뼉\n손실\n손질\n손톱\n손해\n솔직히\n솜씨\n송아지\n송이\n송편\n쇠고기\n쇼핑\n수건\n수년\n수단\n수돗물\n수동적\n수면\n수명\n수박\n수상\n수석\n수술\n수시로\n수업\n수염\n수영\n수입\n수준\n수집\n수출\n수컷\n수필\n수학\n수험생\n수화기\n숙녀\n숙소\n숙제\n순간\n순서\n순수\n순식간\n순위\n숟가락\n술병\n술집\n숫자\n스님\n스물\n스스로\n스승\n스웨터\n스위치\n스케이트\n스튜디오\n스트레스\n스포츠\n슬쩍\n슬픔\n습관\n습기\n승객\n승리\n승부\n승용차\n승진\n시각\n시간\n시골\n시금치\n시나리오\n시댁\n시리즈\n시멘트\n시민\n시부모\n시선\n시설\n시스템\n시아버지\n시어머니\n시월\n시인\n시일\n시작\n시장\n시절\n시점\n시중\n시즌\n시집\n시청\n시합\n시험\n식구\n식기\n식당\n식량\n식료품\n식물\n식빵\n식사\n식생활\n식초\n식탁\n식품\n신고\n신규\n신념\n신문\n신발\n신비\n신사\n신세\n신용\n신제품\n신청\n신체\n신화\n실감\n실내\n실력\n실례\n실망\n실수\n실습\n실시\n실장\n실정\n실질적\n실천\n실체\n실컷\n실태\n실패\n실험\n실현\n심리\n심부름\n심사\n심장\n심정\n심판\n쌍둥이\n씨름\n씨앗\n아가씨\n아나운서\n아드님\n아들\n아쉬움\n아스팔트\n아시아\n아울러\n아저씨\n아줌마\n아직\n아침\n아파트\n아프리카\n아픔\n아홉\n아흔\n악기\n악몽\n악수\n안개\n안경\n안과\n안내\n안녕\n안동\n안방\n안부\n안주\n알루미늄\n알코올\n암시\n암컷\n압력\n앞날\n앞문\n애인\n애정\n액수\n앨범\n야간\n야단\n야옹\n약간\n약국\n약속\n약수\n약점\n약품\n약혼녀\n양념\n양력\n양말\n양배추\n양주\n양파\n어둠\n어려움\n어른\n어젯밤\n어쨌든\n어쩌다가\n어쩐지\n언니\n언덕\n언론\n언어\n얼굴\n얼른\n얼음\n얼핏\n엄마\n업무\n업종\n업체\n엉덩이\n엉망\n엉터리\n엊그제\n에너지\n에어컨\n엔진\n여건\n여고생\n여관\n여군\n여권\n여대생\n여덟\n여동생\n여든\n여론\n여름\n여섯\n여성\n여왕\n여인\n여전히\n여직원\n여학생\n여행\n역사\n역시\n역할\n연결\n연구\n연극\n연기\n연락\n연설\n연세\n연속\n연습\n연애\n연예인\n연인\n연장\n연주\n연출\n연필\n연합\n연휴\n열기\n열매\n열쇠\n열심히\n열정\n열차\n열흘\n염려\n엽서\n영국\n영남\n영상\n영양\n영역\n영웅\n영원히\n영하\n영향\n영혼\n영화\n옆구리\n옆방\n옆집\n예감\n예금\n예방\n예산\n예상\n예선\n예술\n예습\n예식장\n예약\n예전\n예절\n예정\n예컨대\n옛날\n오늘\n오락\n오랫동안\n오렌지\n오로지\n오른발\n오븐\n오십\n오염\n오월\n오전\n오직\n오징어\n오페라\n오피스텔\n오히려\n옥상\n옥수수\n온갖\n온라인\n온몸\n온종일\n온통\n올가을\n올림픽\n올해\n옷차림\n와이셔츠\n와인\n완성\n완전\n왕비\n왕자\n왜냐하면\n왠지\n외갓집\n외국\n외로움\n외삼촌\n외출\n외침\n외할머니\n왼발\n왼손\n왼쪽\n요금\n요일\n요즘\n요청\n용기\n용서\n용어\n우산\n우선\n우승\n우연히\n우정\n우체국\n우편\n운동\n운명\n운반\n운전\n운행\n울산\n울음\n움직임\n웃어른\n웃음\n워낙\n원고\n원래\n원서\n원숭이\n원인\n원장\n원피스\n월급\n월드컵\n월세\n월요일\n웨이터\n위반\n위법\n위성\n위원\n위험\n위협\n윗사람\n유난히\n유럽\n유명\n유물\n유산\n유적\n유치원\n유학\n유행\n유형\n육군\n육상\n육십\n육체\n은행\n음력\n음료\n음반\n음성\n음식\n음악\n음주\n의견\n의논\n의문\n의복\n의식\n의심\n의외로\n의욕\n의원\n의학\n이것\n이곳\n이념\n이놈\n이달\n이대로\n이동\n이렇게\n이력서\n이론적\n이름\n이민\n이발소\n이별\n이불\n이빨\n이상\n이성\n이슬\n이야기\n이용\n이웃\n이월\n이윽고\n이익\n이전\n이중\n이튿날\n이틀\n이혼\n인간\n인격\n인공\n인구\n인근\n인기\n인도\n인류\n인물\n인생\n인쇄\n인연\n인원\n인재\n인종\n인천\n인체\n인터넷\n인하\n인형\n일곱\n일기\n일단\n일대\n일등\n일반\n일본\n일부\n일상\n일생\n일손\n일요일\n일월\n일정\n일종\n일주일\n일찍\n일체\n일치\n일행\n일회용\n임금\n임무\n입대\n입력\n입맛\n입사\n입술\n입시\n입원\n입장\n입학\n자가용\n자격\n자극\n자동\n자랑\n자부심\n자식\n자신\n자연\n자원\n자율\n자전거\n자정\n자존심\n자판\n작가\n작년\n작성\n작업\n작용\n작은딸\n작품\n잔디\n잔뜩\n잔치\n잘못\n잠깐\n잠수함\n잠시\n잠옷\n잠자리\n잡지\n장관\n장군\n장기간\n장래\n장례\n장르\n장마\n장면\n장모\n장미\n장비\n장사\n장소\n장식\n장애인\n장인\n장점\n장차\n장학금\n재능\n재빨리\n재산\n재생\n재작년\n재정\n재채기\n재판\n재학\n재활용\n저것\n저고리\n저곳\n저녁\n저런\n저렇게\n저번\n저울\n저절로\n저축\n적극\n적당히\n적성\n적용\n적응\n전개\n전공\n전기\n전달\n전라도\n전망\n전문\n전반\n전부\n전세\n전시\n전용\n전자\n전쟁\n전주\n전철\n전체\n전통\n전혀\n전후\n절대\n절망\n절반\n절약\n절차\n점검\n점수\n점심\n점원\n점점\n점차\n접근\n접시\n접촉\n젓가락\n정거장\n정도\n정류장\n정리\n정말\n정면\n정문\n정반대\n정보\n정부\n정비\n정상\n정성\n정오\n정원\n정장\n정지\n정치\n정확히\n제공\n제과점\n제대로\n제목\n제발\n제법\n제삿날\n제안\n제일\n제작\n제주도\n제출\n제품\n제한\n조각\n조건\n조금\n조깅\n조명\n조미료\n조상\n조선\n조용히\n조절\n조정\n조직\n존댓말\n존재\n졸업\n졸음\n종교\n종로\n종류\n종소리\n종업원\n종종\n종합\n좌석\n죄인\n주관적\n주름\n주말\n주머니\n주먹\n주문\n주민\n주방\n주변\n주식\n주인\n주일\n주장\n주전자\n주택\n준비\n줄거리\n줄기\n줄무늬\n중간\n중계방송\n중국\n중년\n중단\n중독\n중반\n중부\n중세\n중소기업\n중순\n중앙\n중요\n중학교\n즉석\n즉시\n즐거움\n증가\n증거\n증권\n증상\n증세\n지각\n지갑\n지경\n지극히\n지금\n지급\n지능\n지름길\n지리산\n지방\n지붕\n지식\n지역\n지우개\n지원\n지적\n지점\n지진\n지출\n직선\n직업\n직원\n직장\n진급\n진동\n진로\n진료\n진리\n진짜\n진찰\n진출\n진통\n진행\n질문\n질병\n질서\n짐작\n집단\n집안\n집중\n짜증\n찌꺼기\n차남\n차라리\n차량\n차림\n차별\n차선\n차츰\n착각\n찬물\n찬성\n참가\n참기름\n참새\n참석\n참여\n참외\n참조\n찻잔\n창가\n창고\n창구\n창문\n창밖\n창작\n창조\n채널\n채점\n책가방\n책방\n책상\n책임\n챔피언\n처벌\n처음\n천국\n천둥\n천장\n천재\n천천히\n철도\n철저히\n철학\n첫날\n첫째\n청년\n청바지\n청소\n청춘\n체계\n체력\n체온\n체육\n체중\n체험\n초등학생\n초반\n초밥\n초상화\n초순\n초여름\n초원\n초저녁\n초점\n초청\n초콜릿\n촛불\n총각\n총리\n총장\n촬영\n최근\n최상\n최선\n최신\n최악\n최종\n추석\n추억\n추진\n추천\n추측\n축구\n축소\n축제\n축하\n출근\n출발\n출산\n출신\n출연\n출입\n출장\n출판\n충격\n충고\n충돌\n충분히\n충청도\n취업\n취직\n취향\n치약\n친구\n친척\n칠십\n칠월\n칠판\n침대\n침묵\n침실\n칫솔\n칭찬\n카메라\n카운터\n칼국수\n캐릭터\n캠퍼스\n캠페인\n커튼\n컨디션\n컬러\n컴퓨터\n코끼리\n코미디\n콘서트\n콜라\n콤플렉스\n콩나물\n쾌감\n쿠데타\n크림\n큰길\n큰딸\n큰소리\n큰아들\n큰어머니\n큰일\n큰절\n클래식\n클럽\n킬로\n타입\n타자기\n탁구\n탁자\n탄생\n태권도\n태양\n태풍\n택시\n탤런트\n터널\n터미널\n테니스\n테스트\n테이블\n텔레비전\n토론\n토마토\n토요일\n통계\n통과\n통로\n통신\n통역\n통일\n통장\n통제\n통증\n통합\n통화\n퇴근\n퇴원\n퇴직금\n튀김\n트럭\n특급\n특별\n특성\n특수\n특징\n특히\n튼튼히\n티셔츠\n파란색\n파일\n파출소\n판결\n판단\n판매\n판사\n팔십\n팔월\n팝송\n패션\n팩스\n팩시밀리\n팬티\n퍼센트\n페인트\n편견\n편의\n편지\n편히\n평가\n평균\n평생\n평소\n평양\n평일\n평화\n포스터\n포인트\n포장\n포함\n표면\n표정\n표준\n표현\n품목\n품질\n풍경\n풍속\n풍습\n프랑스\n프린터\n플라스틱\n피곤\n피망\n피아노\n필름\n필수\n필요\n필자\n필통\n핑계\n하느님\n하늘\n하드웨어\n하룻밤\n하반기\n하숙집\n하순\n하여튼\n하지만\n하천\n하품\n하필\n학과\n학교\n학급\n학기\n학년\n학력\n학번\n학부모\n학비\n학생\n학술\n학습\n학용품\n학원\n학위\n학자\n학점\n한계\n한글\n한꺼번에\n한낮\n한눈\n한동안\n한때\n한라산\n한마디\n한문\n한번\n한복\n한식\n한여름\n한쪽\n할머니\n할아버지\n할인\n함께\n함부로\n합격\n합리적\n항공\n항구\n항상\n항의\n해결\n해군\n해답\n해당\n해물\n해석\n해설\n해수욕장\n해안\n핵심\n핸드백\n햄버거\n햇볕\n햇살\n행동\n행복\n행사\n행운\n행위\n향기\n향상\n향수\n허락\n허용\n헬기\n현관\n현금\n현대\n현상\n현실\n현장\n현재\n현지\n혈액\n협력\n형부\n형사\n형수\n형식\n형제\n형태\n형편\n혜택\n호기심\n호남\n호랑이\n호박\n호텔\n호흡\n혹시\n홀로\n홈페이지\n홍보\n홍수\n홍차\n화면\n화분\n화살\n화요일\n화장\n화학\n확보\n확인\n확장\n확정\n환갑\n환경\n환영\n환율\n환자\n활기\n활동\n활발히\n활용\n활짝\n회견\n회관\n회복\n회색\n회원\n회장\n회전\n횟수\n횡단보도\n효율적\n후반\n후춧가루\n훈련\n훨씬\n휴식\n휴일\n흉내\n흐름\n흑백\n흑인\n흔적\n흔히\n흥미\n흥분\n희곡\n희망\n희생\n흰색\n힘껏".split("\n"),Mo="abacate\nabaixo\nabalar\nabater\nabduzir\nabelha\naberto\nabismo\nabotoar\nabranger\nabreviar\nabrigar\nabrupto\nabsinto\nabsoluto\nabsurdo\nabutre\nacabado\nacalmar\nacampar\nacanhar\nacaso\naceitar\nacelerar\nacenar\nacervo\nacessar\nacetona\nachatar\nacidez\nacima\nacionado\nacirrar\naclamar\naclive\nacolhida\nacomodar\nacoplar\nacordar\nacumular\nacusador\nadaptar\nadega\nadentro\nadepto\nadequar\naderente\nadesivo\nadeus\nadiante\naditivo\nadjetivo\nadjunto\nadmirar\nadorar\nadquirir\nadubo\nadverso\nadvogado\naeronave\nafastar\naferir\nafetivo\nafinador\nafivelar\naflito\nafluente\nafrontar\nagachar\nagarrar\nagasalho\nagenciar\nagilizar\nagiota\nagitado\nagora\nagradar\nagreste\nagrupar\naguardar\nagulha\najoelhar\najudar\najustar\nalameda\nalarme\nalastrar\nalavanca\nalbergue\nalbino\nalcatra\naldeia\nalecrim\nalegria\nalertar\nalface\nalfinete\nalgum\nalheio\naliar\nalicate\nalienar\nalinhar\naliviar\nalmofada\nalocar\nalpiste\nalterar\naltitude\nalucinar\nalugar\naluno\nalusivo\nalvo\namaciar\namador\namarelo\namassar\nambas\nambiente\nameixa\namenizar\namido\namistoso\namizade\namolador\namontoar\namoroso\namostra\namparar\nampliar\nampola\nanagrama\nanalisar\nanarquia\nanatomia\nandaime\nanel\nanexo\nangular\nanimar\nanjo\nanomalia\nanotado\nansioso\nanterior\nanuidade\nanunciar\nanzol\napagador\napalpar\napanhado\napego\napelido\napertada\napesar\napetite\napito\naplauso\naplicada\napoio\napontar\naposta\naprendiz\naprovar\naquecer\narame\naranha\narara\narcada\nardente\nareia\narejar\narenito\naresta\nargiloso\nargola\narma\narquivo\narraial\narrebate\narriscar\narroba\narrumar\narsenal\narterial\nartigo\narvoredo\nasfaltar\nasilado\naspirar\nassador\nassinar\nassoalho\nassunto\nastral\natacado\natadura\natalho\natarefar\natear\natender\naterro\nateu\natingir\natirador\nativo\natoleiro\natracar\natrevido\natriz\natual\natum\nauditor\naumentar\naura\naurora\nautismo\nautoria\nautuar\navaliar\navante\navaria\navental\navesso\naviador\navisar\navulso\naxila\nazarar\nazedo\nazeite\nazulejo\nbabar\nbabosa\nbacalhau\nbacharel\nbacia\nbagagem\nbaiano\nbailar\nbaioneta\nbairro\nbaixista\nbajular\nbaleia\nbaliza\nbalsa\nbanal\nbandeira\nbanho\nbanir\nbanquete\nbarato\nbarbado\nbaronesa\nbarraca\nbarulho\nbaseado\nbastante\nbatata\nbatedor\nbatida\nbatom\nbatucar\nbaunilha\nbeber\nbeijo\nbeirada\nbeisebol\nbeldade\nbeleza\nbelga\nbeliscar\nbendito\nbengala\nbenzer\nberimbau\nberlinda\nberro\nbesouro\nbexiga\nbezerro\nbico\nbicudo\nbienal\nbifocal\nbifurcar\nbigorna\nbilhete\nbimestre\nbimotor\nbiologia\nbiombo\nbiosfera\nbipolar\nbirrento\nbiscoito\nbisneto\nbispo\nbissexto\nbitola\nbizarro\nblindado\nbloco\nbloquear\nboato\nbobagem\nbocado\nbocejo\nbochecha\nboicotar\nbolada\nboletim\nbolha\nbolo\nbombeiro\nbonde\nboneco\nbonita\nborbulha\nborda\nboreal\nborracha\nbovino\nboxeador\nbranco\nbrasa\nbraveza\nbreu\nbriga\nbrilho\nbrincar\nbroa\nbrochura\nbronzear\nbroto\nbruxo\nbucha\nbudismo\nbufar\nbule\nburaco\nbusca\nbusto\nbuzina\ncabana\ncabelo\ncabide\ncabo\ncabrito\ncacau\ncacetada\ncachorro\ncacique\ncadastro\ncadeado\ncafezal\ncaiaque\ncaipira\ncaixote\ncajado\ncaju\ncalafrio\ncalcular\ncaldeira\ncalibrar\ncalmante\ncalota\ncamada\ncambista\ncamisa\ncamomila\ncampanha\ncamuflar\ncanavial\ncancelar\ncaneta\ncanguru\ncanhoto\ncanivete\ncanoa\ncansado\ncantar\ncanudo\ncapacho\ncapela\ncapinar\ncapotar\ncapricho\ncaptador\ncapuz\ncaracol\ncarbono\ncardeal\ncareca\ncarimbar\ncarneiro\ncarpete\ncarreira\ncartaz\ncarvalho\ncasaco\ncasca\ncasebre\ncastelo\ncasulo\ncatarata\ncativar\ncaule\ncausador\ncautelar\ncavalo\ncaverna\ncebola\ncedilha\ncegonha\ncelebrar\ncelular\ncenoura\ncenso\ncenteio\ncercar\ncerrado\ncerteiro\ncerveja\ncetim\ncevada\nchacota\nchaleira\nchamado\nchapada\ncharme\nchatice\nchave\nchefe\nchegada\ncheiro\ncheque\nchicote\nchifre\nchinelo\nchocalho\nchover\nchumbo\nchutar\nchuva\ncicatriz\nciclone\ncidade\ncidreira\nciente\ncigana\ncimento\ncinto\ncinza\nciranda\ncircuito\ncirurgia\ncitar\nclareza\nclero\nclicar\nclone\nclube\ncoado\ncoagir\ncobaia\ncobertor\ncobrar\ncocada\ncoelho\ncoentro\ncoeso\ncogumelo\ncoibir\ncoifa\ncoiote\ncolar\ncoleira\ncolher\ncolidir\ncolmeia\ncolono\ncoluna\ncomando\ncombinar\ncomentar\ncomitiva\ncomover\ncomplexo\ncomum\nconcha\ncondor\nconectar\nconfuso\ncongelar\nconhecer\nconjugar\nconsumir\ncontrato\nconvite\ncooperar\ncopeiro\ncopiador\ncopo\ncoquetel\ncoragem\ncordial\ncorneta\ncoronha\ncorporal\ncorreio\ncortejo\ncoruja\ncorvo\ncosseno\ncostela\ncotonete\ncouro\ncouve\ncovil\ncozinha\ncratera\ncravo\ncreche\ncredor\ncreme\ncrer\ncrespo\ncriada\ncriminal\ncrioulo\ncrise\ncriticar\ncrosta\ncrua\ncruzeiro\ncubano\ncueca\ncuidado\ncujo\nculatra\nculminar\nculpar\ncultura\ncumprir\ncunhado\ncupido\ncurativo\ncurral\ncursar\ncurto\ncuspir\ncustear\ncutelo\ndamasco\ndatar\ndebater\ndebitar\ndeboche\ndebulhar\ndecalque\ndecimal\ndeclive\ndecote\ndecretar\ndedal\ndedicado\ndeduzir\ndefesa\ndefumar\ndegelo\ndegrau\ndegustar\ndeitado\ndeixar\ndelator\ndelegado\ndelinear\ndelonga\ndemanda\ndemitir\ndemolido\ndentista\ndepenado\ndepilar\ndepois\ndepressa\ndepurar\nderiva\nderramar\ndesafio\ndesbotar\ndescanso\ndesenho\ndesfiado\ndesgaste\ndesigual\ndeslize\ndesmamar\ndesova\ndespesa\ndestaque\ndesviar\ndetalhar\ndetentor\ndetonar\ndetrito\ndeusa\ndever\ndevido\ndevotado\ndezena\ndiagrama\ndialeto\ndidata\ndifuso\ndigitar\ndilatado\ndiluente\ndiminuir\ndinastia\ndinheiro\ndiocese\ndireto\ndiscreta\ndisfarce\ndisparo\ndisquete\ndissipar\ndistante\nditador\ndiurno\ndiverso\ndivisor\ndivulgar\ndizer\ndobrador\ndolorido\ndomador\ndominado\ndonativo\ndonzela\ndormente\ndorsal\ndosagem\ndourado\ndoutor\ndrenagem\ndrible\ndrogaria\nduelar\nduende\ndueto\nduplo\nduquesa\ndurante\nduvidoso\neclodir\necoar\necologia\nedificar\nedital\neducado\nefeito\nefetivar\nejetar\nelaborar\neleger\neleitor\nelenco\nelevador\neliminar\nelogiar\nembargo\nembolado\nembrulho\nembutido\nemenda\nemergir\nemissor\nempatia\nempenho\nempinado\nempolgar\nemprego\nempurrar\nemulador\nencaixe\nencenado\nenchente\nencontro\nendeusar\nendossar\nenfaixar\nenfeite\nenfim\nengajado\nengenho\nenglobar\nengomado\nengraxar\nenguia\nenjoar\nenlatar\nenquanto\nenraizar\nenrolado\nenrugar\nensaio\nenseada\nensino\nensopado\nentanto\nenteado\nentidade\nentortar\nentrada\nentulho\nenvergar\nenviado\nenvolver\nenxame\nenxerto\nenxofre\nenxuto\nepiderme\nequipar\nereto\nerguido\nerrata\nerva\nervilha\nesbanjar\nesbelto\nescama\nescola\nescrita\nescuta\nesfinge\nesfolar\nesfregar\nesfumado\nesgrima\nesmalte\nespanto\nespelho\nespiga\nesponja\nespreita\nespumar\nesquerda\nestaca\nesteira\nesticar\nestofado\nestrela\nestudo\nesvaziar\netanol\netiqueta\neuforia\neuropeu\nevacuar\nevaporar\nevasivo\neventual\nevidente\nevoluir\nexagero\nexalar\nexaminar\nexato\nexausto\nexcesso\nexcitar\nexclamar\nexecutar\nexemplo\nexibir\nexigente\nexonerar\nexpandir\nexpelir\nexpirar\nexplanar\nexposto\nexpresso\nexpulsar\nexterno\nextinto\nextrato\nfabricar\nfabuloso\nfaceta\nfacial\nfada\nfadiga\nfaixa\nfalar\nfalta\nfamiliar\nfandango\nfanfarra\nfantoche\nfardado\nfarelo\nfarinha\nfarofa\nfarpa\nfartura\nfatia\nfator\nfavorita\nfaxina\nfazenda\nfechado\nfeijoada\nfeirante\nfelino\nfeminino\nfenda\nfeno\nfera\nferiado\nferrugem\nferver\nfestejar\nfetal\nfeudal\nfiapo\nfibrose\nficar\nficheiro\nfigurado\nfileira\nfilho\nfilme\nfiltrar\nfirmeza\nfisgada\nfissura\nfita\nfivela\nfixador\nfixo\nflacidez\nflamingo\nflanela\nflechada\nflora\nflutuar\nfluxo\nfocal\nfocinho\nfofocar\nfogo\nfoguete\nfoice\nfolgado\nfolheto\nforjar\nformiga\nforno\nforte\nfosco\nfossa\nfragata\nfralda\nfrango\nfrasco\nfraterno\nfreira\nfrente\nfretar\nfrieza\nfriso\nfritura\nfronha\nfrustrar\nfruteira\nfugir\nfulano\nfuligem\nfundar\nfungo\nfunil\nfurador\nfurioso\nfutebol\ngabarito\ngabinete\ngado\ngaiato\ngaiola\ngaivota\ngalega\ngalho\ngalinha\ngalocha\nganhar\ngaragem\ngarfo\ngargalo\ngarimpo\ngaroupa\ngarrafa\ngasoduto\ngasto\ngata\ngatilho\ngaveta\ngazela\ngelado\ngeleia\ngelo\ngemada\ngemer\ngemido\ngeneroso\ngengiva\ngenial\ngenoma\ngenro\ngeologia\ngerador\ngerminar\ngesso\ngestor\nginasta\ngincana\ngingado\ngirafa\ngirino\nglacial\nglicose\nglobal\nglorioso\ngoela\ngoiaba\ngolfe\ngolpear\ngordura\ngorjeta\ngorro\ngostoso\ngoteira\ngovernar\ngracejo\ngradual\ngrafite\ngralha\ngrampo\ngranada\ngratuito\ngraveto\ngraxa\ngrego\ngrelhar\ngreve\ngrilo\ngrisalho\ngritaria\ngrosso\ngrotesco\ngrudado\ngrunhido\ngruta\nguache\nguarani\nguaxinim\nguerrear\nguiar\nguincho\nguisado\ngula\nguloso\nguru\nhabitar\nharmonia\nhaste\nhaver\nhectare\nherdar\nheresia\nhesitar\nhiato\nhibernar\nhidratar\nhiena\nhino\nhipismo\nhipnose\nhipoteca\nhoje\nholofote\nhomem\nhonesto\nhonrado\nhormonal\nhospedar\nhumorado\niate\nideia\nidoso\nignorado\nigreja\niguana\nileso\nilha\niludido\niluminar\nilustrar\nimagem\nimediato\nimenso\nimersivo\niminente\nimitador\nimortal\nimpacto\nimpedir\nimplante\nimpor\nimprensa\nimpune\nimunizar\ninalador\ninapto\ninativo\nincenso\ninchar\nincidir\nincluir\nincolor\nindeciso\nindireto\nindutor\nineficaz\ninerente\ninfantil\ninfestar\ninfinito\ninflamar\ninformal\ninfrator\ningerir\ninibido\ninicial\ninimigo\ninjetar\ninocente\ninodoro\ninovador\ninox\ninquieto\ninscrito\ninseto\ninsistir\ninspetor\ninstalar\ninsulto\nintacto\nintegral\nintimar\nintocado\nintriga\ninvasor\ninverno\ninvicto\ninvocar\niogurte\niraniano\nironizar\nirreal\nirritado\nisca\nisento\nisolado\nisqueiro\nitaliano\njaneiro\njangada\njanta\njararaca\njardim\njarro\njasmim\njato\njavali\njazida\njejum\njoaninha\njoelhada\njogador\njoia\njornal\njorrar\njovem\njuba\njudeu\njudoca\njuiz\njulgador\njulho\njurado\njurista\njuro\njusta\nlabareda\nlaboral\nlacre\nlactante\nladrilho\nlagarta\nlagoa\nlaje\nlamber\nlamentar\nlaminar\nlampejo\nlanche\nlapidar\nlapso\nlaranja\nlareira\nlargura\nlasanha\nlastro\nlateral\nlatido\nlavanda\nlavoura\nlavrador\nlaxante\nlazer\nlealdade\nlebre\nlegado\nlegendar\nlegista\nleigo\nleiloar\nleitura\nlembrete\nleme\nlenhador\nlentilha\nleoa\nlesma\nleste\nletivo\nletreiro\nlevar\nleveza\nlevitar\nliberal\nlibido\nliderar\nligar\nligeiro\nlimitar\nlimoeiro\nlimpador\nlinda\nlinear\nlinhagem\nliquidez\nlistagem\nlisura\nlitoral\nlivro\nlixa\nlixeira\nlocador\nlocutor\nlojista\nlombo\nlona\nlonge\nlontra\nlorde\nlotado\nloteria\nloucura\nlousa\nlouvar\nluar\nlucidez\nlucro\nluneta\nlustre\nlutador\nluva\nmacaco\nmacete\nmachado\nmacio\nmadeira\nmadrinha\nmagnata\nmagreza\nmaior\nmais\nmalandro\nmalha\nmalote\nmaluco\nmamilo\nmamoeiro\nmamute\nmanada\nmancha\nmandato\nmanequim\nmanhoso\nmanivela\nmanobrar\nmansa\nmanter\nmanusear\nmapeado\nmaquinar\nmarcador\nmaresia\nmarfim\nmargem\nmarinho\nmarmita\nmaroto\nmarquise\nmarreco\nmartelo\nmarujo\nmascote\nmasmorra\nmassagem\nmastigar\nmatagal\nmaterno\nmatinal\nmatutar\nmaxilar\nmedalha\nmedida\nmedusa\nmegafone\nmeiga\nmelancia\nmelhor\nmembro\nmemorial\nmenino\nmenos\nmensagem\nmental\nmerecer\nmergulho\nmesada\nmesclar\nmesmo\nmesquita\nmestre\nmetade\nmeteoro\nmetragem\nmexer\nmexicano\nmicro\nmigalha\nmigrar\nmilagre\nmilenar\nmilhar\nmimado\nminerar\nminhoca\nministro\nminoria\nmiolo\nmirante\nmirtilo\nmisturar\nmocidade\nmoderno\nmodular\nmoeda\nmoer\nmoinho\nmoita\nmoldura\nmoleza\nmolho\nmolinete\nmolusco\nmontanha\nmoqueca\nmorango\nmorcego\nmordomo\nmorena\nmosaico\nmosquete\nmostarda\nmotel\nmotim\nmoto\nmotriz\nmuda\nmuito\nmulata\nmulher\nmultar\nmundial\nmunido\nmuralha\nmurcho\nmuscular\nmuseu\nmusical\nnacional\nnadador\nnaja\nnamoro\nnarina\nnarrado\nnascer\nnativa\nnatureza\nnavalha\nnavegar\nnavio\nneblina\nnebuloso\nnegativa\nnegociar\nnegrito\nnervoso\nneta\nneural\nnevasca\nnevoeiro\nninar\nninho\nnitidez\nnivelar\nnobreza\nnoite\nnoiva\nnomear\nnominal\nnordeste\nnortear\nnotar\nnoticiar\nnoturno\nnovelo\nnovilho\nnovo\nnublado\nnudez\nnumeral\nnupcial\nnutrir\nnuvem\nobcecado\nobedecer\nobjetivo\nobrigado\nobscuro\nobstetra\nobter\nobturar\nocidente\nocioso\nocorrer\noculista\nocupado\nofegante\nofensiva\noferenda\noficina\nofuscado\nogiva\nolaria\noleoso\nolhar\noliveira\nombro\nomelete\nomisso\nomitir\nondulado\noneroso\nontem\nopcional\noperador\noponente\noportuno\noposto\norar\norbitar\nordem\nordinal\norfanato\norgasmo\norgulho\noriental\norigem\noriundo\norla\nortodoxo\norvalho\noscilar\nossada\nosso\nostentar\notimismo\nousadia\noutono\noutubro\nouvido\novelha\novular\noxidar\noxigenar\npacato\npaciente\npacote\npactuar\npadaria\npadrinho\npagar\npagode\npainel\npairar\npaisagem\npalavra\npalestra\npalheta\npalito\npalmada\npalpitar\npancada\npanela\npanfleto\npanqueca\npantanal\npapagaio\npapelada\npapiro\nparafina\nparcial\npardal\nparede\npartida\npasmo\npassado\npastel\npatamar\npatente\npatinar\npatrono\npaulada\npausar\npeculiar\npedalar\npedestre\npediatra\npedra\npegada\npeitoral\npeixe\npele\npelicano\npenca\npendurar\npeneira\npenhasco\npensador\npente\nperceber\nperfeito\npergunta\nperito\npermitir\nperna\nperplexo\npersiana\npertence\nperuca\npescado\npesquisa\npessoa\npetiscar\npiada\npicado\npiedade\npigmento\npilastra\npilhado\npilotar\npimenta\npincel\npinguim\npinha\npinote\npintar\npioneiro\npipoca\npiquete\npiranha\npires\npirueta\npiscar\npistola\npitanga\npivete\nplanta\nplaqueta\nplatina\nplebeu\nplumagem\npluvial\npneu\npoda\npoeira\npoetisa\npolegada\npoliciar\npoluente\npolvilho\npomar\npomba\nponderar\npontaria\npopuloso\nporta\npossuir\npostal\npote\npoupar\npouso\npovoar\npraia\nprancha\nprato\npraxe\nprece\npredador\nprefeito\npremiar\nprensar\npreparar\npresilha\npretexto\nprevenir\nprezar\nprimata\nprincesa\nprisma\nprivado\nprocesso\nproduto\nprofeta\nproibido\nprojeto\nprometer\npropagar\nprosa\nprotetor\nprovador\npublicar\npudim\npular\npulmonar\npulseira\npunhal\npunir\npupilo\npureza\npuxador\nquadra\nquantia\nquarto\nquase\nquebrar\nqueda\nqueijo\nquente\nquerido\nquimono\nquina\nquiosque\nrabanada\nrabisco\nrachar\nracionar\nradial\nraiar\nrainha\nraio\nraiva\nrajada\nralado\nramal\nranger\nranhura\nrapadura\nrapel\nrapidez\nraposa\nraquete\nraridade\nrasante\nrascunho\nrasgar\nraspador\nrasteira\nrasurar\nratazana\nratoeira\nrealeza\nreanimar\nreaver\nrebaixar\nrebelde\nrebolar\nrecado\nrecente\nrecheio\nrecibo\nrecordar\nrecrutar\nrecuar\nrede\nredimir\nredonda\nreduzida\nreenvio\nrefinar\nrefletir\nrefogar\nrefresco\nrefugiar\nregalia\nregime\nregra\nreinado\nreitor\nrejeitar\nrelativo\nremador\nremendo\nremorso\nrenovado\nreparo\nrepelir\nrepleto\nrepolho\nrepresa\nrepudiar\nrequerer\nresenha\nresfriar\nresgatar\nresidir\nresolver\nrespeito\nressaca\nrestante\nresumir\nretalho\nreter\nretirar\nretomada\nretratar\nrevelar\nrevisor\nrevolta\nriacho\nrica\nrigidez\nrigoroso\nrimar\nringue\nrisada\nrisco\nrisonho\nrobalo\nrochedo\nrodada\nrodeio\nrodovia\nroedor\nroleta\nromano\nroncar\nrosado\nroseira\nrosto\nrota\nroteiro\nrotina\nrotular\nrouco\nroupa\nroxo\nrubro\nrugido\nrugoso\nruivo\nrumo\nrupestre\nrusso\nsabor\nsaciar\nsacola\nsacudir\nsadio\nsafira\nsaga\nsagrada\nsaibro\nsalada\nsaleiro\nsalgado\nsaliva\nsalpicar\nsalsicha\nsaltar\nsalvador\nsambar\nsamurai\nsanar\nsanfona\nsangue\nsanidade\nsapato\nsarda\nsargento\nsarjeta\nsaturar\nsaudade\nsaxofone\nsazonal\nsecar\nsecular\nseda\nsedento\nsediado\nsedoso\nsedutor\nsegmento\nsegredo\nsegundo\nseiva\nseleto\nselvagem\nsemanal\nsemente\nsenador\nsenhor\nsensual\nsentado\nseparado\nsereia\nseringa\nserra\nservo\nsetembro\nsetor\nsigilo\nsilhueta\nsilicone\nsimetria\nsimpatia\nsimular\nsinal\nsincero\nsingular\nsinopse\nsintonia\nsirene\nsiri\nsituado\nsoberano\nsobra\nsocorro\nsogro\nsoja\nsolda\nsoletrar\nsolteiro\nsombrio\nsonata\nsondar\nsonegar\nsonhador\nsono\nsoprano\nsoquete\nsorrir\nsorteio\nsossego\nsotaque\nsoterrar\nsovado\nsozinho\nsuavizar\nsubida\nsubmerso\nsubsolo\nsubtrair\nsucata\nsucesso\nsuco\nsudeste\nsufixo\nsugador\nsugerir\nsujeito\nsulfato\nsumir\nsuor\nsuperior\nsuplicar\nsuposto\nsuprimir\nsurdina\nsurfista\nsurpresa\nsurreal\nsurtir\nsuspiro\nsustento\ntabela\ntablete\ntabuada\ntacho\ntagarela\ntalher\ntalo\ntalvez\ntamanho\ntamborim\ntampa\ntangente\ntanto\ntapar\ntapioca\ntardio\ntarefa\ntarja\ntarraxa\ntatuagem\ntaurino\ntaxativo\ntaxista\nteatral\ntecer\ntecido\nteclado\ntedioso\nteia\nteimar\ntelefone\ntelhado\ntempero\ntenente\ntensor\ntentar\ntermal\nterno\nterreno\ntese\ntesoura\ntestado\nteto\ntextura\ntexugo\ntiara\ntigela\ntijolo\ntimbrar\ntimidez\ntingido\ntinteiro\ntiragem\ntitular\ntoalha\ntocha\ntolerar\ntolice\ntomada\ntomilho\ntonel\ntontura\ntopete\ntora\ntorcido\ntorneio\ntorque\ntorrada\ntorto\ntostar\ntouca\ntoupeira\ntoxina\ntrabalho\ntracejar\ntradutor\ntrafegar\ntrajeto\ntrama\ntrancar\ntrapo\ntraseiro\ntratador\ntravar\ntreino\ntremer\ntrepidar\ntrevo\ntriagem\ntribo\ntriciclo\ntridente\ntrilogia\ntrindade\ntriplo\ntriturar\ntriunfal\ntrocar\ntrombeta\ntrova\ntrunfo\ntruque\ntubular\ntucano\ntudo\ntulipa\ntupi\nturbo\nturma\nturquesa\ntutelar\ntutorial\nuivar\numbigo\nunha\nunidade\nuniforme\nurologia\nurso\nurtiga\nurubu\nusado\nusina\nusufruir\nvacina\nvadiar\nvagaroso\nvaidoso\nvala\nvalente\nvalidade\nvalores\nvantagem\nvaqueiro\nvaranda\nvareta\nvarrer\nvascular\nvasilha\nvassoura\nvazar\nvazio\nveado\nvedar\nvegetar\nveicular\nveleiro\nvelhice\nveludo\nvencedor\nvendaval\nvenerar\nventre\nverbal\nverdade\nvereador\nvergonha\nvermelho\nverniz\nversar\nvertente\nvespa\nvestido\nvetorial\nviaduto\nviagem\nviajar\nviatura\nvibrador\nvideira\nvidraria\nviela\nviga\nvigente\nvigiar\nvigorar\nvilarejo\nvinco\nvinheta\nvinil\nvioleta\nvirada\nvirtude\nvisitar\nvisto\nvitral\nviveiro\nvizinho\nvoador\nvoar\nvogal\nvolante\nvoleibol\nvoltagem\nvolumoso\nvontade\nvulto\nvuvuzela\nxadrez\nxarope\nxeque\nxeretar\nxerife\nxingar\nzangado\nzarpar\nzebu\nzelador\nzombar\nzoologia\nzumbido".split("\n"),Go="的\n一\n是\n在\n不\n了\n有\n和\n人\n这\n中\n大\n为\n上\n个\n国\n我\n以\n要\n他\n时\n来\n用\n们\n生\n到\n作\n地\n于\n出\n就\n分\n对\n成\n会\n可\n主\n发\n年\n动\n同\n工\n也\n能\n下\n过\n子\n说\n产\n种\n面\n而\n方\n后\n多\n定\n行\n学\n法\n所\n民\n得\n经\n十\n三\n之\n进\n着\n等\n部\n度\n家\n电\n力\n里\n如\n水\n化\n高\n自\n二\n理\n起\n小\n物\n现\n实\n加\n量\n都\n两\n体\n制\n机\n当\n使\n点\n从\n业\n本\n去\n把\n性\n好\n应\n开\n它\n合\n还\n因\n由\n其\n些\n然\n前\n外\n天\n政\n四\n日\n那\n社\n义\n事\n平\n形\n相\n全\n表\n间\n样\n与\n关\n各\n重\n新\n线\n内\n数\n正\n心\n反\n你\n明\n看\n原\n又\n么\n利\n比\n或\n但\n质\n气\n第\n向\n道\n命\n此\n变\n条\n只\n没\n结\n解\n问\n意\n建\n月\n公\n无\n系\n军\n很\n情\n者\n最\n立\n代\n想\n已\n通\n并\n提\n直\n题\n党\n程\n展\n五\n果\n料\n象\n员\n革\n位\n入\n常\n文\n总\n次\n品\n式\n活\n设\n及\n管\n特\n件\n长\n求\n老\n头\n基\n资\n边\n流\n路\n级\n少\n图\n山\n统\n接\n知\n较\n将\n组\n见\n计\n别\n她\n手\n角\n期\n根\n论\n运\n农\n指\n几\n九\n区\n强\n放\n决\n西\n被\n干\n做\n必\n战\n先\n回\n则\n任\n取\n据\n处\n队\n南\n给\n色\n光\n门\n即\n保\n治\n北\n造\n百\n规\n热\n领\n七\n海\n口\n东\n导\n器\n压\n志\n世\n金\n增\n争\n济\n阶\n油\n思\n术\n极\n交\n受\n联\n什\n认\n六\n共\n权\n收\n证\n改\n清\n美\n再\n采\n转\n更\n单\n风\n切\n打\n白\n教\n速\n花\n带\n安\n场\n身\n车\n例\n真\n务\n具\n万\n每\n目\n至\n达\n走\n积\n示\n议\n声\n报\n斗\n完\n类\n八\n离\n华\n名\n确\n才\n科\n张\n信\n马\n节\n话\n米\n整\n空\n元\n况\n今\n集\n温\n传\n土\n许\n步\n群\n广\n石\n记\n需\n段\n研\n界\n拉\n林\n律\n叫\n且\n究\n观\n越\n织\n装\n影\n算\n低\n持\n音\n众\n书\n布\n复\n容\n儿\n须\n际\n商\n非\n验\n连\n断\n深\n难\n近\n矿\n千\n周\n委\n素\n技\n备\n半\n办\n青\n省\n列\n习\n响\n约\n支\n般\n史\n感\n劳\n便\n团\n往\n酸\n历\n市\n克\n何\n除\n消\n构\n府\n称\n太\n准\n精\n值\n号\n率\n族\n维\n划\n选\n标\n写\n存\n候\n毛\n亲\n快\n效\n斯\n院\n查\n江\n型\n眼\n王\n按\n格\n养\n易\n置\n派\n层\n片\n始\n却\n专\n状\n育\n厂\n京\n识\n适\n属\n圆\n包\n火\n住\n调\n满\n县\n局\n照\n参\n红\n细\n引\n听\n该\n铁\n价\n严\n首\n底\n液\n官\n德\n随\n病\n苏\n失\n尔\n死\n讲\n配\n女\n黄\n推\n显\n谈\n罪\n神\n艺\n呢\n席\n含\n企\n望\n密\n批\n营\n项\n防\n举\n球\n英\n氧\n势\n告\n李\n台\n落\n木\n帮\n轮\n破\n亚\n师\n围\n注\n远\n字\n材\n排\n供\n河\n态\n封\n另\n施\n减\n树\n溶\n怎\n止\n案\n言\n士\n均\n武\n固\n叶\n鱼\n波\n视\n仅\n费\n紧\n爱\n左\n章\n早\n朝\n害\n续\n轻\n服\n试\n食\n充\n兵\n源\n判\n护\n司\n足\n某\n练\n差\n致\n板\n田\n降\n黑\n犯\n负\n击\n范\n继\n兴\n似\n余\n坚\n曲\n输\n修\n故\n城\n夫\n够\n送\n笔\n船\n占\n右\n财\n吃\n富\n春\n职\n觉\n汉\n画\n功\n巴\n跟\n虽\n杂\n飞\n检\n吸\n助\n升\n阳\n互\n初\n创\n抗\n考\n投\n坏\n策\n古\n径\n换\n未\n跑\n留\n钢\n曾\n端\n责\n站\n简\n述\n钱\n副\n尽\n帝\n射\n草\n冲\n承\n独\n令\n限\n阿\n宣\n环\n双\n请\n超\n微\n让\n控\n州\n良\n轴\n找\n否\n纪\n益\n依\n优\n顶\n础\n载\n倒\n房\n突\n坐\n粉\n敌\n略\n客\n袁\n冷\n胜\n绝\n析\n块\n剂\n测\n丝\n协\n诉\n念\n陈\n仍\n罗\n盐\n友\n洋\n错\n苦\n夜\n刑\n移\n频\n逐\n靠\n混\n母\n短\n皮\n终\n聚\n汽\n村\n云\n哪\n既\n距\n卫\n停\n烈\n央\n察\n烧\n迅\n境\n若\n印\n洲\n刻\n括\n激\n孔\n搞\n甚\n室\n待\n核\n校\n散\n侵\n吧\n甲\n游\n久\n菜\n味\n旧\n模\n湖\n货\n损\n预\n阻\n毫\n普\n稳\n乙\n妈\n植\n息\n扩\n银\n语\n挥\n酒\n守\n拿\n序\n纸\n医\n缺\n雨\n吗\n针\n刘\n啊\n急\n唱\n误\n训\n愿\n审\n附\n获\n茶\n鲜\n粮\n斤\n孩\n脱\n硫\n肥\n善\n龙\n演\n父\n渐\n血\n欢\n械\n掌\n歌\n沙\n刚\n攻\n谓\n盾\n讨\n晚\n粒\n乱\n燃\n矛\n乎\n杀\n药\n宁\n鲁\n贵\n钟\n煤\n读\n班\n伯\n香\n介\n迫\n句\n丰\n培\n握\n兰\n担\n弦\n蛋\n沉\n假\n穿\n执\n答\n乐\n谁\n顺\n烟\n缩\n征\n脸\n喜\n松\n脚\n困\n异\n免\n背\n星\n福\n买\n染\n井\n概\n慢\n怕\n磁\n倍\n祖\n皇\n促\n静\n补\n评\n翻\n肉\n践\n尼\n衣\n宽\n扬\n棉\n希\n伤\n操\n垂\n秋\n宜\n氢\n套\n督\n振\n架\n亮\n末\n宪\n庆\n编\n牛\n触\n映\n雷\n销\n诗\n座\n居\n抓\n裂\n胞\n呼\n娘\n景\n威\n绿\n晶\n厚\n盟\n衡\n鸡\n孙\n延\n危\n胶\n屋\n乡\n临\n陆\n顾\n掉\n呀\n灯\n岁\n措\n束\n耐\n剧\n玉\n赵\n跳\n哥\n季\n课\n凯\n胡\n额\n款\n绍\n卷\n齐\n伟\n蒸\n殖\n永\n宗\n苗\n川\n炉\n岩\n弱\n零\n杨\n奏\n沿\n露\n杆\n探\n滑\n镇\n饭\n浓\n航\n怀\n赶\n库\n夺\n伊\n灵\n税\n途\n灭\n赛\n归\n召\n鼓\n播\n盘\n裁\n险\n康\n唯\n录\n菌\n纯\n借\n糖\n盖\n横\n符\n私\n努\n堂\n域\n枪\n润\n幅\n哈\n竟\n熟\n虫\n泽\n脑\n壤\n碳\n欧\n遍\n侧\n寨\n敢\n彻\n虑\n斜\n薄\n庭\n纳\n弹\n饲\n伸\n折\n麦\n湿\n暗\n荷\n瓦\n塞\n床\n筑\n恶\n户\n访\n塔\n奇\n透\n梁\n刀\n旋\n迹\n卡\n氯\n遇\n份\n毒\n泥\n退\n洗\n摆\n灰\n彩\n卖\n耗\n夏\n择\n忙\n铜\n献\n硬\n予\n繁\n圈\n雪\n函\n亦\n抽\n篇\n阵\n阴\n丁\n尺\n追\n堆\n雄\n迎\n泛\n爸\n楼\n避\n谋\n吨\n野\n猪\n旗\n累\n偏\n典\n馆\n索\n秦\n脂\n潮\n爷\n豆\n忽\n托\n惊\n塑\n遗\n愈\n朱\n替\n纤\n粗\n倾\n尚\n痛\n楚\n谢\n奋\n购\n磨\n君\n池\n旁\n碎\n骨\n监\n捕\n弟\n暴\n割\n贯\n殊\n释\n词\n亡\n壁\n顿\n宝\n午\n尘\n闻\n揭\n炮\n残\n冬\n桥\n妇\n警\n综\n招\n吴\n付\n浮\n遭\n徐\n您\n摇\n谷\n赞\n箱\n隔\n订\n男\n吹\n园\n纷\n唐\n败\n宋\n玻\n巨\n耕\n坦\n荣\n闭\n湾\n键\n凡\n驻\n锅\n救\n恩\n剥\n凝\n碱\n齿\n截\n炼\n麻\n纺\n禁\n废\n盛\n版\n缓\n净\n睛\n昌\n婚\n涉\n筒\n嘴\n插\n岸\n朗\n庄\n街\n藏\n姑\n贸\n腐\n奴\n啦\n惯\n乘\n伙\n恢\n匀\n纱\n扎\n辩\n耳\n彪\n臣\n亿\n璃\n抵\n脉\n秀\n萨\n俄\n网\n舞\n店\n喷\n纵\n寸\n汗\n挂\n洪\n贺\n闪\n柬\n爆\n烯\n津\n稻\n墙\n软\n勇\n像\n滚\n厘\n蒙\n芳\n肯\n坡\n柱\n荡\n腿\n仪\n旅\n尾\n轧\n冰\n贡\n登\n黎\n削\n钻\n勒\n逃\n障\n氨\n郭\n峰\n币\n港\n伏\n轨\n亩\n毕\n擦\n莫\n刺\n浪\n秘\n援\n株\n健\n售\n股\n岛\n甘\n泡\n睡\n童\n铸\n汤\n阀\n休\n汇\n舍\n牧\n绕\n炸\n哲\n磷\n绩\n朋\n淡\n尖\n启\n陷\n柴\n呈\n徒\n颜\n泪\n稍\n忘\n泵\n蓝\n拖\n洞\n授\n镜\n辛\n壮\n锋\n贫\n虚\n弯\n摩\n泰\n幼\n廷\n尊\n窗\n纲\n弄\n隶\n疑\n氏\n宫\n姐\n震\n瑞\n怪\n尤\n琴\n循\n描\n膜\n违\n夹\n腰\n缘\n珠\n穷\n森\n枝\n竹\n沟\n催\n绳\n忆\n邦\n剩\n幸\n浆\n栏\n拥\n牙\n贮\n礼\n滤\n钠\n纹\n罢\n拍\n咱\n喊\n袖\n埃\n勤\n罚\n焦\n潜\n伍\n墨\n欲\n缝\n姓\n刊\n饱\n仿\n奖\n铝\n鬼\n丽\n跨\n默\n挖\n链\n扫\n喝\n袋\n炭\n污\n幕\n诸\n弧\n励\n梅\n奶\n洁\n灾\n舟\n鉴\n苯\n讼\n抱\n毁\n懂\n寒\n智\n埔\n寄\n届\n跃\n渡\n挑\n丹\n艰\n贝\n碰\n拔\n爹\n戴\n码\n梦\n芽\n熔\n赤\n渔\n哭\n敬\n颗\n奔\n铅\n仲\n虎\n稀\n妹\n乏\n珍\n申\n桌\n遵\n允\n隆\n螺\n仓\n魏\n锐\n晓\n氮\n兼\n隐\n碍\n赫\n拨\n忠\n肃\n缸\n牵\n抢\n博\n巧\n壳\n兄\n杜\n讯\n诚\n碧\n祥\n柯\n页\n巡\n矩\n悲\n灌\n龄\n伦\n票\n寻\n桂\n铺\n圣\n恐\n恰\n郑\n趣\n抬\n荒\n腾\n贴\n柔\n滴\n猛\n阔\n辆\n妻\n填\n撤\n储\n签\n闹\n扰\n紫\n砂\n递\n戏\n吊\n陶\n伐\n喂\n疗\n瓶\n婆\n抚\n臂\n摸\n忍\n虾\n蜡\n邻\n胸\n巩\n挤\n偶\n弃\n槽\n劲\n乳\n邓\n吉\n仁\n烂\n砖\n租\n乌\n舰\n伴\n瓜\n浅\n丙\n暂\n燥\n橡\n柳\n迷\n暖\n牌\n秧\n胆\n详\n簧\n踏\n瓷\n谱\n呆\n宾\n糊\n洛\n辉\n愤\n竞\n隙\n怒\n粘\n乃\n绪\n肩\n籍\n敏\n涂\n熙\n皆\n侦\n悬\n掘\n享\n纠\n醒\n狂\n锁\n淀\n恨\n牲\n霸\n爬\n赏\n逆\n玩\n陵\n祝\n秒\n浙\n貌\n役\n彼\n悉\n鸭\n趋\n凤\n晨\n畜\n辈\n秩\n卵\n署\n梯\n炎\n滩\n棋\n驱\n筛\n峡\n冒\n啥\n寿\n译\n浸\n泉\n帽\n迟\n硅\n疆\n贷\n漏\n稿\n冠\n嫩\n胁\n芯\n牢\n叛\n蚀\n奥\n鸣\n岭\n羊\n凭\n串\n塘\n绘\n酵\n融\n盆\n锡\n庙\n筹\n冻\n辅\n摄\n袭\n筋\n拒\n僚\n旱\n钾\n鸟\n漆\n沈\n眉\n疏\n添\n棒\n穗\n硝\n韩\n逼\n扭\n侨\n凉\n挺\n碗\n栽\n炒\n杯\n患\n馏\n劝\n豪\n辽\n勃\n鸿\n旦\n吏\n拜\n狗\n埋\n辊\n掩\n饮\n搬\n骂\n辞\n勾\n扣\n估\n蒋\n绒\n雾\n丈\n朵\n姆\n拟\n宇\n辑\n陕\n雕\n偿\n蓄\n崇\n剪\n倡\n厅\n咬\n驶\n薯\n刷\n斥\n番\n赋\n奉\n佛\n浇\n漫\n曼\n扇\n钙\n桃\n扶\n仔\n返\n俗\n亏\n腔\n鞋\n棱\n覆\n框\n悄\n叔\n撞\n骗\n勘\n旺\n沸\n孤\n吐\n孟\n渠\n屈\n疾\n妙\n惜\n仰\n狠\n胀\n谐\n抛\n霉\n桑\n岗\n嘛\n衰\n盗\n渗\n脏\n赖\n涌\n甜\n曹\n阅\n肌\n哩\n厉\n烃\n纬\n毅\n昨\n伪\n症\n煮\n叹\n钉\n搭\n茎\n笼\n酷\n偷\n弓\n锥\n恒\n杰\n坑\n鼻\n翼\n纶\n叙\n狱\n逮\n罐\n络\n棚\n抑\n膨\n蔬\n寺\n骤\n穆\n冶\n枯\n册\n尸\n凸\n绅\n坯\n牺\n焰\n轰\n欣\n晋\n瘦\n御\n锭\n锦\n丧\n旬\n锻\n垄\n搜\n扑\n邀\n亭\n酯\n迈\n舒\n脆\n酶\n闲\n忧\n酚\n顽\n羽\n涨\n卸\n仗\n陪\n辟\n惩\n杭\n姚\n肚\n捉\n飘\n漂\n昆\n欺\n吾\n郎\n烷\n汁\n呵\n饰\n萧\n雅\n邮\n迁\n燕\n撒\n姻\n赴\n宴\n烦\n债\n帐\n斑\n铃\n旨\n醇\n董\n饼\n雏\n姿\n拌\n傅\n腹\n妥\n揉\n贤\n拆\n歪\n葡\n胺\n丢\n浩\n徽\n昂\n垫\n挡\n览\n贪\n慰\n缴\n汪\n慌\n冯\n诺\n姜\n谊\n凶\n劣\n诬\n耀\n昏\n躺\n盈\n骑\n乔\n溪\n丛\n卢\n抹\n闷\n咨\n刮\n驾\n缆\n悟\n摘\n铒\n掷\n颇\n幻\n柄\n惠\n惨\n佳\n仇\n腊\n窝\n涤\n剑\n瞧\n堡\n泼\n葱\n罩\n霍\n捞\n胎\n苍\n滨\n俩\n捅\n湘\n砍\n霞\n邵\n萄\n疯\n淮\n遂\n熊\n粪\n烘\n宿\n档\n戈\n驳\n嫂\n裕\n徙\n箭\n捐\n肠\n撑\n晒\n辨\n殿\n莲\n摊\n搅\n酱\n屏\n疫\n哀\n蔡\n堵\n沫\n皱\n畅\n叠\n阁\n莱\n敲\n辖\n钩\n痕\n坝\n巷\n饿\n祸\n丘\n玄\n溜\n曰\n逻\n彭\n尝\n卿\n妨\n艇\n吞\n韦\n怨\n矮\n歇".split("\n"),qo="ábaco\nabdomen\nabeja\nabierto\nabogado\nabono\naborto\nabrazo\nabrir\nabuelo\nabuso\nacabar\nacademia\nacceso\nacción\naceite\nacelga\nacento\naceptar\nácido\naclarar\nacné\nacoger\nacoso\nactivo\nacto\nactriz\nactuar\nacudir\nacuerdo\nacusar\nadicto\nadmitir\nadoptar\nadorno\naduana\nadulto\naéreo\nafectar\nafición\nafinar\nafirmar\nágil\nagitar\nagonía\nagosto\nagotar\nagregar\nagrio\nagua\nagudo\náguila\naguja\nahogo\nahorro\naire\naislar\najedrez\najeno\najuste\nalacrán\nalambre\nalarma\nalba\nálbum\nalcalde\naldea\nalegre\nalejar\nalerta\naleta\nalfiler\nalga\nalgodón\naliado\naliento\nalivio\nalma\nalmeja\nalmíbar\naltar\nalteza\naltivo\nalto\naltura\nalumno\nalzar\namable\namante\namapola\namargo\namasar\námbar\námbito\nameno\namigo\namistad\namor\namparo\namplio\nancho\nanciano\nancla\nandar\nandén\nanemia\nángulo\nanillo\nánimo\nanís\nanotar\nantena\nantiguo\nantojo\nanual\nanular\nanuncio\nañadir\nañejo\naño\napagar\naparato\napetito\napio\naplicar\napodo\naporte\napoyo\naprender\naprobar\napuesta\napuro\narado\naraña\narar\nárbitro\nárbol\narbusto\narchivo\narco\narder\nardilla\narduo\nárea\nárido\naries\narmonía\narnés\naroma\narpa\narpón\narreglo\narroz\narruga\narte\nartista\nasa\nasado\nasalto\nascenso\nasegurar\naseo\nasesor\nasiento\nasilo\nasistir\nasno\nasombro\náspero\nastilla\nastro\nastuto\nasumir\nasunto\natajo\nataque\natar\natento\nateo\nático\natleta\nátomo\natraer\natroz\natún\naudaz\naudio\nauge\naula\naumento\nausente\nautor\naval\navance\navaro\nave\navellana\navena\navestruz\navión\naviso\nayer\nayuda\nayuno\nazafrán\nazar\nazote\nazúcar\nazufre\nazul\nbaba\nbabor\nbache\nbahía\nbaile\nbajar\nbalanza\nbalcón\nbalde\nbambú\nbanco\nbanda\nbaño\nbarba\nbarco\nbarniz\nbarro\nbáscula\nbastón\nbasura\nbatalla\nbatería\nbatir\nbatuta\nbaúl\nbazar\nbebé\nbebida\nbello\nbesar\nbeso\nbestia\nbicho\nbien\nbingo\nblanco\nbloque\nblusa\nboa\nbobina\nbobo\nboca\nbocina\nboda\nbodega\nboina\nbola\nbolero\nbolsa\nbomba\nbondad\nbonito\nbono\nbonsái\nborde\nborrar\nbosque\nbote\nbotín\nbóveda\nbozal\nbravo\nbrazo\nbrecha\nbreve\nbrillo\nbrinco\nbrisa\nbroca\nbroma\nbronce\nbrote\nbruja\nbrusco\nbruto\nbuceo\nbucle\nbueno\nbuey\nbufanda\nbufón\nbúho\nbuitre\nbulto\nburbuja\nburla\nburro\nbuscar\nbutaca\nbuzón\ncaballo\ncabeza\ncabina\ncabra\ncacao\ncadáver\ncadena\ncaer\ncafé\ncaída\ncaimán\ncaja\ncajón\ncal\ncalamar\ncalcio\ncaldo\ncalidad\ncalle\ncalma\ncalor\ncalvo\ncama\ncambio\ncamello\ncamino\ncampo\ncáncer\ncandil\ncanela\ncanguro\ncanica\ncanto\ncaña\ncañón\ncaoba\ncaos\ncapaz\ncapitán\ncapote\ncaptar\ncapucha\ncara\ncarbón\ncárcel\ncareta\ncarga\ncariño\ncarne\ncarpeta\ncarro\ncarta\ncasa\ncasco\ncasero\ncaspa\ncastor\ncatorce\ncatre\ncaudal\ncausa\ncazo\ncebolla\nceder\ncedro\ncelda\ncélebre\nceloso\ncélula\ncemento\nceniza\ncentro\ncerca\ncerdo\ncereza\ncero\ncerrar\ncerteza\ncésped\ncetro\nchacal\nchaleco\nchampú\nchancla\nchapa\ncharla\nchico\nchiste\nchivo\nchoque\nchoza\nchuleta\nchupar\nciclón\nciego\ncielo\ncien\ncierto\ncifra\ncigarro\ncima\ncinco\ncine\ncinta\nciprés\ncirco\nciruela\ncisne\ncita\nciudad\nclamor\nclan\nclaro\nclase\nclave\ncliente\nclima\nclínica\ncobre\ncocción\ncochino\ncocina\ncoco\ncódigo\ncodo\ncofre\ncoger\ncohete\ncojín\ncojo\ncola\ncolcha\ncolegio\ncolgar\ncolina\ncollar\ncolmo\ncolumna\ncombate\ncomer\ncomida\ncómodo\ncompra\nconde\nconejo\nconga\nconocer\nconsejo\ncontar\ncopa\ncopia\ncorazón\ncorbata\ncorcho\ncordón\ncorona\ncorrer\ncoser\ncosmos\ncosta\ncráneo\ncráter\ncrear\ncrecer\ncreído\ncrema\ncría\ncrimen\ncripta\ncrisis\ncromo\ncrónica\ncroqueta\ncrudo\ncruz\ncuadro\ncuarto\ncuatro\ncubo\ncubrir\ncuchara\ncuello\ncuento\ncuerda\ncuesta\ncueva\ncuidar\nculebra\nculpa\nculto\ncumbre\ncumplir\ncuna\ncuneta\ncuota\ncupón\ncúpula\ncurar\ncurioso\ncurso\ncurva\ncutis\ndama\ndanza\ndar\ndardo\ndátil\ndeber\ndébil\ndécada\ndecir\ndedo\ndefensa\ndefinir\ndejar\ndelfín\ndelgado\ndelito\ndemora\ndenso\ndental\ndeporte\nderecho\nderrota\ndesayuno\ndeseo\ndesfile\ndesnudo\ndestino\ndesvío\ndetalle\ndetener\ndeuda\ndía\ndiablo\ndiadema\ndiamante\ndiana\ndiario\ndibujo\ndictar\ndiente\ndieta\ndiez\ndifícil\ndigno\ndilema\ndiluir\ndinero\ndirecto\ndirigir\ndisco\ndiseño\ndisfraz\ndiva\ndivino\ndoble\ndoce\ndolor\ndomingo\ndon\ndonar\ndorado\ndormir\ndorso\ndos\ndosis\ndragón\ndroga\nducha\nduda\nduelo\ndueño\ndulce\ndúo\nduque\ndurar\ndureza\nduro\nébano\nebrio\nechar\neco\necuador\nedad\nedición\nedificio\neditor\neducar\nefecto\neficaz\neje\nejemplo\nelefante\nelegir\nelemento\nelevar\nelipse\nélite\nelixir\nelogio\neludir\nembudo\nemitir\nemoción\nempate\nempeño\nempleo\nempresa\nenano\nencargo\nenchufe\nencía\nenemigo\nenero\nenfado\nenfermo\nengaño\nenigma\nenlace\nenorme\nenredo\nensayo\nenseñar\nentero\nentrar\nenvase\nenvío\népoca\nequipo\nerizo\nescala\nescena\nescolar\nescribir\nescudo\nesencia\nesfera\nesfuerzo\nespada\nespejo\nespía\nesposa\nespuma\nesquí\nestar\neste\nestilo\nestufa\netapa\neterno\nética\netnia\nevadir\nevaluar\nevento\nevitar\nexacto\nexamen\nexceso\nexcusa\nexento\nexigir\nexilio\nexistir\néxito\nexperto\nexplicar\nexponer\nextremo\nfábrica\nfábula\nfachada\nfácil\nfactor\nfaena\nfaja\nfalda\nfallo\nfalso\nfaltar\nfama\nfamilia\nfamoso\nfaraón\nfarmacia\nfarol\nfarsa\nfase\nfatiga\nfauna\nfavor\nfax\nfebrero\nfecha\nfeliz\nfeo\nferia\nferoz\nfértil\nfervor\nfestín\nfiable\nfianza\nfiar\nfibra\nficción\nficha\nfideo\nfiebre\nfiel\nfiera\nfiesta\nfigura\nfijar\nfijo\nfila\nfilete\nfilial\nfiltro\nfin\nfinca\nfingir\nfinito\nfirma\nflaco\nflauta\nflecha\nflor\nflota\nfluir\nflujo\nflúor\nfobia\nfoca\nfogata\nfogón\nfolio\nfolleto\nfondo\nforma\nforro\nfortuna\nforzar\nfosa\nfoto\nfracaso\nfrágil\nfranja\nfrase\nfraude\nfreír\nfreno\nfresa\nfrío\nfrito\nfruta\nfuego\nfuente\nfuerza\nfuga\nfumar\nfunción\nfunda\nfurgón\nfuria\nfusil\nfútbol\nfuturo\ngacela\ngafas\ngaita\ngajo\ngala\ngalería\ngallo\ngamba\nganar\ngancho\nganga\nganso\ngaraje\ngarza\ngasolina\ngastar\ngato\ngavilán\ngemelo\ngemir\ngen\ngénero\ngenio\ngente\ngeranio\ngerente\ngermen\ngesto\ngigante\ngimnasio\ngirar\ngiro\nglaciar\nglobo\ngloria\ngol\ngolfo\ngoloso\ngolpe\ngoma\ngordo\ngorila\ngorra\ngota\ngoteo\ngozar\ngrada\ngráfico\ngrano\ngrasa\ngratis\ngrave\ngrieta\ngrillo\ngripe\ngris\ngrito\ngrosor\ngrúa\ngrueso\ngrumo\ngrupo\nguante\nguapo\nguardia\nguerra\nguía\nguiño\nguion\nguiso\nguitarra\ngusano\ngustar\nhaber\nhábil\nhablar\nhacer\nhacha\nhada\nhallar\nhamaca\nharina\nhaz\nhazaña\nhebilla\nhebra\nhecho\nhelado\nhelio\nhembra\nherir\nhermano\nhéroe\nhervir\nhielo\nhierro\nhígado\nhigiene\nhijo\nhimno\nhistoria\nhocico\nhogar\nhoguera\nhoja\nhombre\nhongo\nhonor\nhonra\nhora\nhormiga\nhorno\nhostil\nhoyo\nhueco\nhuelga\nhuerta\nhueso\nhuevo\nhuida\nhuir\nhumano\nhúmedo\nhumilde\nhumo\nhundir\nhuracán\nhurto\nicono\nideal\nidioma\nídolo\niglesia\niglú\nigual\nilegal\nilusión\nimagen\nimán\nimitar\nimpar\nimperio\nimponer\nimpulso\nincapaz\níndice\ninerte\ninfiel\ninforme\ningenio\ninicio\ninmenso\ninmune\ninnato\ninsecto\ninstante\ninterés\níntimo\nintuir\ninútil\ninvierno\nira\niris\nironía\nisla\nislote\njabalí\njabón\njamón\njarabe\njardín\njarra\njaula\njazmín\njefe\njeringa\njinete\njornada\njoroba\njoven\njoya\njuerga\njueves\njuez\njugador\njugo\njuguete\njuicio\njunco\njungla\njunio\njuntar\njúpiter\njurar\njusto\njuvenil\njuzgar\nkilo\nkoala\nlabio\nlacio\nlacra\nlado\nladrón\nlagarto\nlágrima\nlaguna\nlaico\nlamer\nlámina\nlámpara\nlana\nlancha\nlangosta\nlanza\nlápiz\nlargo\nlarva\nlástima\nlata\nlátex\nlatir\nlaurel\nlavar\nlazo\nleal\nlección\nleche\nlector\nleer\nlegión\nlegumbre\nlejano\nlengua\nlento\nleña\nleón\nleopardo\nlesión\nletal\nletra\nleve\nleyenda\nlibertad\nlibro\nlicor\nlíder\nlidiar\nlienzo\nliga\nligero\nlima\nlímite\nlimón\nlimpio\nlince\nlindo\nlínea\nlingote\nlino\nlinterna\nlíquido\nliso\nlista\nlitera\nlitio\nlitro\nllaga\nllama\nllanto\nllave\nllegar\nllenar\nllevar\nllorar\nllover\nlluvia\nlobo\nloción\nloco\nlocura\nlógica\nlogro\nlombriz\nlomo\nlonja\nlote\nlucha\nlucir\nlugar\nlujo\nluna\nlunes\nlupa\nlustro\nluto\nluz\nmaceta\nmacho\nmadera\nmadre\nmaduro\nmaestro\nmafia\nmagia\nmago\nmaíz\nmaldad\nmaleta\nmalla\nmalo\nmamá\nmambo\nmamut\nmanco\nmando\nmanejar\nmanga\nmaniquí\nmanjar\nmano\nmanso\nmanta\nmañana\nmapa\nmáquina\nmar\nmarco\nmarea\nmarfil\nmargen\nmarido\nmármol\nmarrón\nmartes\nmarzo\nmasa\nmáscara\nmasivo\nmatar\nmateria\nmatiz\nmatriz\nmáximo\nmayor\nmazorca\nmecha\nmedalla\nmedio\nmédula\nmejilla\nmejor\nmelena\nmelón\nmemoria\nmenor\nmensaje\nmente\nmenú\nmercado\nmerengue\nmérito\nmes\nmesón\nmeta\nmeter\nmétodo\nmetro\nmezcla\nmiedo\nmiel\nmiembro\nmiga\nmil\nmilagro\nmilitar\nmillón\nmimo\nmina\nminero\nmínimo\nminuto\nmiope\nmirar\nmisa\nmiseria\nmisil\nmismo\nmitad\nmito\nmochila\nmoción\nmoda\nmodelo\nmoho\nmojar\nmolde\nmoler\nmolino\nmomento\nmomia\nmonarca\nmoneda\nmonja\nmonto\nmoño\nmorada\nmorder\nmoreno\nmorir\nmorro\nmorsa\nmortal\nmosca\nmostrar\nmotivo\nmover\nmóvil\nmozo\nmucho\nmudar\nmueble\nmuela\nmuerte\nmuestra\nmugre\nmujer\nmula\nmuleta\nmulta\nmundo\nmuñeca\nmural\nmuro\nmúsculo\nmuseo\nmusgo\nmúsica\nmuslo\nnácar\nnación\nnadar\nnaipe\nnaranja\nnariz\nnarrar\nnasal\nnatal\nnativo\nnatural\nnáusea\nnaval\nnave\nnavidad\nnecio\nnéctar\nnegar\nnegocio\nnegro\nneón\nnervio\nneto\nneutro\nnevar\nnevera\nnicho\nnido\nniebla\nnieto\nniñez\nniño\nnítido\nnivel\nnobleza\nnoche\nnómina\nnoria\nnorma\nnorte\nnota\nnoticia\nnovato\nnovela\nnovio\nnube\nnuca\nnúcleo\nnudillo\nnudo\nnuera\nnueve\nnuez\nnulo\nnúmero\nnutria\noasis\nobeso\nobispo\nobjeto\nobra\nobrero\nobservar\nobtener\nobvio\noca\nocaso\nocéano\nochenta\nocho\nocio\nocre\noctavo\noctubre\noculto\nocupar\nocurrir\nodiar\nodio\nodisea\noeste\nofensa\noferta\noficio\nofrecer\nogro\noído\noír\nojo\nola\noleada\nolfato\nolivo\nolla\nolmo\nolor\nolvido\nombligo\nonda\nonza\nopaco\nopción\nópera\nopinar\noponer\noptar\nóptica\nopuesto\noración\norador\noral\nórbita\norca\norden\noreja\nórgano\norgía\norgullo\noriente\norigen\norilla\noro\norquesta\noruga\nosadía\noscuro\nosezno\noso\nostra\notoño\notro\noveja\nóvulo\nóxido\noxígeno\noyente\nozono\npacto\npadre\npaella\npágina\npago\npaís\npájaro\npalabra\npalco\npaleta\npálido\npalma\npaloma\npalpar\npan\npanal\npánico\npantera\npañuelo\npapá\npapel\npapilla\npaquete\nparar\nparcela\npared\nparir\nparo\npárpado\nparque\npárrafo\nparte\npasar\npaseo\npasión\npaso\npasta\npata\npatio\npatria\npausa\npauta\npavo\npayaso\npeatón\npecado\npecera\npecho\npedal\npedir\npegar\npeine\npelar\npeldaño\npelea\npeligro\npellejo\npelo\npeluca\npena\npensar\npeñón\npeón\npeor\npepino\npequeño\npera\npercha\nperder\npereza\nperfil\nperico\nperla\npermiso\nperro\npersona\npesa\npesca\npésimo\npestaña\npétalo\npetróleo\npez\npezuña\npicar\npichón\npie\npiedra\npierna\npieza\npijama\npilar\npiloto\npimienta\npino\npintor\npinza\npiña\npiojo\npipa\npirata\npisar\npiscina\npiso\npista\npitón\npizca\nplaca\nplan\nplata\nplaya\nplaza\npleito\npleno\nplomo\npluma\nplural\npobre\npoco\npoder\npodio\npoema\npoesía\npoeta\npolen\npolicía\npollo\npolvo\npomada\npomelo\npomo\npompa\nponer\nporción\nportal\nposada\nposeer\nposible\nposte\npotencia\npotro\npozo\nprado\nprecoz\npregunta\npremio\nprensa\npreso\nprevio\nprimo\npríncipe\nprisión\nprivar\nproa\nprobar\nproceso\nproducto\nproeza\nprofesor\nprograma\nprole\npromesa\npronto\npropio\npróximo\nprueba\npúblico\npuchero\npudor\npueblo\npuerta\npuesto\npulga\npulir\npulmón\npulpo\npulso\npuma\npunto\npuñal\npuño\npupa\npupila\npuré\nquedar\nqueja\nquemar\nquerer\nqueso\nquieto\nquímica\nquince\nquitar\nrábano\nrabia\nrabo\nración\nradical\nraíz\nrama\nrampa\nrancho\nrango\nrapaz\nrápido\nrapto\nrasgo\nraspa\nrato\nrayo\nraza\nrazón\nreacción\nrealidad\nrebaño\nrebote\nrecaer\nreceta\nrechazo\nrecoger\nrecreo\nrecto\nrecurso\nred\nredondo\nreducir\nreflejo\nreforma\nrefrán\nrefugio\nregalo\nregir\nregla\nregreso\nrehén\nreino\nreír\nreja\nrelato\nrelevo\nrelieve\nrelleno\nreloj\nremar\nremedio\nremo\nrencor\nrendir\nrenta\nreparto\nrepetir\nreposo\nreptil\nres\nrescate\nresina\nrespeto\nresto\nresumen\nretiro\nretorno\nretrato\nreunir\nrevés\nrevista\nrey\nrezar\nrico\nriego\nrienda\nriesgo\nrifa\nrígido\nrigor\nrincón\nriñón\nrío\nriqueza\nrisa\nritmo\nrito\nrizo\nroble\nroce\nrociar\nrodar\nrodeo\nrodilla\nroer\nrojizo\nrojo\nromero\nromper\nron\nronco\nronda\nropa\nropero\nrosa\nrosca\nrostro\nrotar\nrubí\nrubor\nrudo\nrueda\nrugir\nruido\nruina\nruleta\nrulo\nrumbo\nrumor\nruptura\nruta\nrutina\nsábado\nsaber\nsabio\nsable\nsacar\nsagaz\nsagrado\nsala\nsaldo\nsalero\nsalir\nsalmón\nsalón\nsalsa\nsalto\nsalud\nsalvar\nsamba\nsanción\nsandía\nsanear\nsangre\nsanidad\nsano\nsanto\nsapo\nsaque\nsardina\nsartén\nsastre\nsatán\nsauna\nsaxofón\nsección\nseco\nsecreto\nsecta\nsed\nseguir\nseis\nsello\nselva\nsemana\nsemilla\nsenda\nsensor\nseñal\nseñor\nseparar\nsepia\nsequía\nser\nserie\nsermón\nservir\nsesenta\nsesión\nseta\nsetenta\nsevero\nsexo\nsexto\nsidra\nsiesta\nsiete\nsiglo\nsigno\nsílaba\nsilbar\nsilencio\nsilla\nsímbolo\nsimio\nsirena\nsistema\nsitio\nsituar\nsobre\nsocio\nsodio\nsol\nsolapa\nsoldado\nsoledad\nsólido\nsoltar\nsolución\nsombra\nsondeo\nsonido\nsonoro\nsonrisa\nsopa\nsoplar\nsoporte\nsordo\nsorpresa\nsorteo\nsostén\nsótano\nsuave\nsubir\nsuceso\nsudor\nsuegra\nsuelo\nsueño\nsuerte\nsufrir\nsujeto\nsultán\nsumar\nsuperar\nsuplir\nsuponer\nsupremo\nsur\nsurco\nsureño\nsurgir\nsusto\nsutil\ntabaco\ntabique\ntabla\ntabú\ntaco\ntacto\ntajo\ntalar\ntalco\ntalento\ntalla\ntalón\ntamaño\ntambor\ntango\ntanque\ntapa\ntapete\ntapia\ntapón\ntaquilla\ntarde\ntarea\ntarifa\ntarjeta\ntarot\ntarro\ntarta\ntatuaje\ntauro\ntaza\ntazón\nteatro\ntecho\ntecla\ntécnica\ntejado\ntejer\ntejido\ntela\nteléfono\ntema\ntemor\ntemplo\ntenaz\ntender\ntener\ntenis\ntenso\nteoría\nterapia\nterco\ntérmino\nternura\nterror\ntesis\ntesoro\ntestigo\ntetera\ntexto\ntez\ntibio\ntiburón\ntiempo\ntienda\ntierra\ntieso\ntigre\ntijera\ntilde\ntimbre\ntímido\ntimo\ntinta\ntío\ntípico\ntipo\ntira\ntirón\ntitán\ntítere\ntítulo\ntiza\ntoalla\ntobillo\ntocar\ntocino\ntodo\ntoga\ntoldo\ntomar\ntono\ntonto\ntopar\ntope\ntoque\ntórax\ntorero\ntormenta\ntorneo\ntoro\ntorpedo\ntorre\ntorso\ntortuga\ntos\ntosco\ntoser\ntóxico\ntrabajo\ntractor\ntraer\ntráfico\ntrago\ntraje\ntramo\ntrance\ntrato\ntrauma\ntrazar\ntrébol\ntregua\ntreinta\ntren\ntrepar\ntres\ntribu\ntrigo\ntripa\ntriste\ntriunfo\ntrofeo\ntrompa\ntronco\ntropa\ntrote\ntrozo\ntruco\ntrueno\ntrufa\ntubería\ntubo\ntuerto\ntumba\ntumor\ntúnel\ntúnica\nturbina\nturismo\nturno\ntutor\nubicar\núlcera\numbral\nunidad\nunir\nuniverso\nuno\nuntar\nuña\nurbano\nurbe\nurgente\nurna\nusar\nusuario\nútil\nutopía\nuva\nvaca\nvacío\nvacuna\nvagar\nvago\nvaina\nvajilla\nvale\nválido\nvalle\nvalor\nválvula\nvampiro\nvara\nvariar\nvarón\nvaso\nvecino\nvector\nvehículo\nveinte\nvejez\nvela\nvelero\nveloz\nvena\nvencer\nvenda\nveneno\nvengar\nvenir\nventa\nvenus\nver\nverano\nverbo\nverde\nvereda\nverja\nverso\nverter\nvía\nviaje\nvibrar\nvicio\nvíctima\nvida\nvídeo\nvidrio\nviejo\nviernes\nvigor\nvil\nvilla\nvinagre\nvino\nviñedo\nviolín\nviral\nvirgo\nvirtud\nvisor\nvíspera\nvista\nvitamina\nviudo\nvivaz\nvivero\nvivir\nvivo\nvolcán\nvolumen\nvolver\nvoraz\nvotar\nvoto\nvoz\nvuelo\nvulgar\nyacer\nyate\nyegua\nyema\nyerno\nyeso\nyodo\nyoga\nyogur\nzafiro\nzanja\nzapato\nzarza\nzona\nzorro\nzumo\nzurdo".split("\n"),Ho="的\n一\n是\n在\n不\n了\n有\n和\n人\n這\n中\n大\n為\n上\n個\n國\n我\n以\n要\n他\n時\n來\n用\n們\n生\n到\n作\n地\n於\n出\n就\n分\n對\n成\n會\n可\n主\n發\n年\n動\n同\n工\n也\n能\n下\n過\n子\n說\n產\n種\n面\n而\n方\n後\n多\n定\n行\n學\n法\n所\n民\n得\n經\n十\n三\n之\n進\n著\n等\n部\n度\n家\n電\n力\n裡\n如\n水\n化\n高\n自\n二\n理\n起\n小\n物\n現\n實\n加\n量\n都\n兩\n體\n制\n機\n當\n使\n點\n從\n業\n本\n去\n把\n性\n好\n應\n開\n它\n合\n還\n因\n由\n其\n些\n然\n前\n外\n天\n政\n四\n日\n那\n社\n義\n事\n平\n形\n相\n全\n表\n間\n樣\n與\n關\n各\n重\n新\n線\n內\n數\n正\n心\n反\n你\n明\n看\n原\n又\n麼\n利\n比\n或\n但\n質\n氣\n第\n向\n道\n命\n此\n變\n條\n只\n沒\n結\n解\n問\n意\n建\n月\n公\n無\n系\n軍\n很\n情\n者\n最\n立\n代\n想\n已\n通\n並\n提\n直\n題\n黨\n程\n展\n五\n果\n料\n象\n員\n革\n位\n入\n常\n文\n總\n次\n品\n式\n活\n設\n及\n管\n特\n件\n長\n求\n老\n頭\n基\n資\n邊\n流\n路\n級\n少\n圖\n山\n統\n接\n知\n較\n將\n組\n見\n計\n別\n她\n手\n角\n期\n根\n論\n運\n農\n指\n幾\n九\n區\n強\n放\n決\n西\n被\n幹\n做\n必\n戰\n先\n回\n則\n任\n取\n據\n處\n隊\n南\n給\n色\n光\n門\n即\n保\n治\n北\n造\n百\n規\n熱\n領\n七\n海\n口\n東\n導\n器\n壓\n志\n世\n金\n增\n爭\n濟\n階\n油\n思\n術\n極\n交\n受\n聯\n什\n認\n六\n共\n權\n收\n證\n改\n清\n美\n再\n採\n轉\n更\n單\n風\n切\n打\n白\n教\n速\n花\n帶\n安\n場\n身\n車\n例\n真\n務\n具\n萬\n每\n目\n至\n達\n走\n積\n示\n議\n聲\n報\n鬥\n完\n類\n八\n離\n華\n名\n確\n才\n科\n張\n信\n馬\n節\n話\n米\n整\n空\n元\n況\n今\n集\n溫\n傳\n土\n許\n步\n群\n廣\n石\n記\n需\n段\n研\n界\n拉\n林\n律\n叫\n且\n究\n觀\n越\n織\n裝\n影\n算\n低\n持\n音\n眾\n書\n布\n复\n容\n兒\n須\n際\n商\n非\n驗\n連\n斷\n深\n難\n近\n礦\n千\n週\n委\n素\n技\n備\n半\n辦\n青\n省\n列\n習\n響\n約\n支\n般\n史\n感\n勞\n便\n團\n往\n酸\n歷\n市\n克\n何\n除\n消\n構\n府\n稱\n太\n準\n精\n值\n號\n率\n族\n維\n劃\n選\n標\n寫\n存\n候\n毛\n親\n快\n效\n斯\n院\n查\n江\n型\n眼\n王\n按\n格\n養\n易\n置\n派\n層\n片\n始\n卻\n專\n狀\n育\n廠\n京\n識\n適\n屬\n圓\n包\n火\n住\n調\n滿\n縣\n局\n照\n參\n紅\n細\n引\n聽\n該\n鐵\n價\n嚴\n首\n底\n液\n官\n德\n隨\n病\n蘇\n失\n爾\n死\n講\n配\n女\n黃\n推\n顯\n談\n罪\n神\n藝\n呢\n席\n含\n企\n望\n密\n批\n營\n項\n防\n舉\n球\n英\n氧\n勢\n告\n李\n台\n落\n木\n幫\n輪\n破\n亞\n師\n圍\n注\n遠\n字\n材\n排\n供\n河\n態\n封\n另\n施\n減\n樹\n溶\n怎\n止\n案\n言\n士\n均\n武\n固\n葉\n魚\n波\n視\n僅\n費\n緊\n愛\n左\n章\n早\n朝\n害\n續\n輕\n服\n試\n食\n充\n兵\n源\n判\n護\n司\n足\n某\n練\n差\n致\n板\n田\n降\n黑\n犯\n負\n擊\n范\n繼\n興\n似\n餘\n堅\n曲\n輸\n修\n故\n城\n夫\n夠\n送\n筆\n船\n佔\n右\n財\n吃\n富\n春\n職\n覺\n漢\n畫\n功\n巴\n跟\n雖\n雜\n飛\n檢\n吸\n助\n昇\n陽\n互\n初\n創\n抗\n考\n投\n壞\n策\n古\n徑\n換\n未\n跑\n留\n鋼\n曾\n端\n責\n站\n簡\n述\n錢\n副\n盡\n帝\n射\n草\n衝\n承\n獨\n令\n限\n阿\n宣\n環\n雙\n請\n超\n微\n讓\n控\n州\n良\n軸\n找\n否\n紀\n益\n依\n優\n頂\n礎\n載\n倒\n房\n突\n坐\n粉\n敵\n略\n客\n袁\n冷\n勝\n絕\n析\n塊\n劑\n測\n絲\n協\n訴\n念\n陳\n仍\n羅\n鹽\n友\n洋\n錯\n苦\n夜\n刑\n移\n頻\n逐\n靠\n混\n母\n短\n皮\n終\n聚\n汽\n村\n雲\n哪\n既\n距\n衛\n停\n烈\n央\n察\n燒\n迅\n境\n若\n印\n洲\n刻\n括\n激\n孔\n搞\n甚\n室\n待\n核\n校\n散\n侵\n吧\n甲\n遊\n久\n菜\n味\n舊\n模\n湖\n貨\n損\n預\n阻\n毫\n普\n穩\n乙\n媽\n植\n息\n擴\n銀\n語\n揮\n酒\n守\n拿\n序\n紙\n醫\n缺\n雨\n嗎\n針\n劉\n啊\n急\n唱\n誤\n訓\n願\n審\n附\n獲\n茶\n鮮\n糧\n斤\n孩\n脫\n硫\n肥\n善\n龍\n演\n父\n漸\n血\n歡\n械\n掌\n歌\n沙\n剛\n攻\n謂\n盾\n討\n晚\n粒\n亂\n燃\n矛\n乎\n殺\n藥\n寧\n魯\n貴\n鐘\n煤\n讀\n班\n伯\n香\n介\n迫\n句\n豐\n培\n握\n蘭\n擔\n弦\n蛋\n沉\n假\n穿\n執\n答\n樂\n誰\n順\n煙\n縮\n徵\n臉\n喜\n松\n腳\n困\n異\n免\n背\n星\n福\n買\n染\n井\n概\n慢\n怕\n磁\n倍\n祖\n皇\n促\n靜\n補\n評\n翻\n肉\n踐\n尼\n衣\n寬\n揚\n棉\n希\n傷\n操\n垂\n秋\n宜\n氫\n套\n督\n振\n架\n亮\n末\n憲\n慶\n編\n牛\n觸\n映\n雷\n銷\n詩\n座\n居\n抓\n裂\n胞\n呼\n娘\n景\n威\n綠\n晶\n厚\n盟\n衡\n雞\n孫\n延\n危\n膠\n屋\n鄉\n臨\n陸\n顧\n掉\n呀\n燈\n歲\n措\n束\n耐\n劇\n玉\n趙\n跳\n哥\n季\n課\n凱\n胡\n額\n款\n紹\n卷\n齊\n偉\n蒸\n殖\n永\n宗\n苗\n川\n爐\n岩\n弱\n零\n楊\n奏\n沿\n露\n桿\n探\n滑\n鎮\n飯\n濃\n航\n懷\n趕\n庫\n奪\n伊\n靈\n稅\n途\n滅\n賽\n歸\n召\n鼓\n播\n盤\n裁\n險\n康\n唯\n錄\n菌\n純\n借\n糖\n蓋\n橫\n符\n私\n努\n堂\n域\n槍\n潤\n幅\n哈\n竟\n熟\n蟲\n澤\n腦\n壤\n碳\n歐\n遍\n側\n寨\n敢\n徹\n慮\n斜\n薄\n庭\n納\n彈\n飼\n伸\n折\n麥\n濕\n暗\n荷\n瓦\n塞\n床\n築\n惡\n戶\n訪\n塔\n奇\n透\n梁\n刀\n旋\n跡\n卡\n氯\n遇\n份\n毒\n泥\n退\n洗\n擺\n灰\n彩\n賣\n耗\n夏\n擇\n忙\n銅\n獻\n硬\n予\n繁\n圈\n雪\n函\n亦\n抽\n篇\n陣\n陰\n丁\n尺\n追\n堆\n雄\n迎\n泛\n爸\n樓\n避\n謀\n噸\n野\n豬\n旗\n累\n偏\n典\n館\n索\n秦\n脂\n潮\n爺\n豆\n忽\n托\n驚\n塑\n遺\n愈\n朱\n替\n纖\n粗\n傾\n尚\n痛\n楚\n謝\n奮\n購\n磨\n君\n池\n旁\n碎\n骨\n監\n捕\n弟\n暴\n割\n貫\n殊\n釋\n詞\n亡\n壁\n頓\n寶\n午\n塵\n聞\n揭\n炮\n殘\n冬\n橋\n婦\n警\n綜\n招\n吳\n付\n浮\n遭\n徐\n您\n搖\n谷\n贊\n箱\n隔\n訂\n男\n吹\n園\n紛\n唐\n敗\n宋\n玻\n巨\n耕\n坦\n榮\n閉\n灣\n鍵\n凡\n駐\n鍋\n救\n恩\n剝\n凝\n鹼\n齒\n截\n煉\n麻\n紡\n禁\n廢\n盛\n版\n緩\n淨\n睛\n昌\n婚\n涉\n筒\n嘴\n插\n岸\n朗\n莊\n街\n藏\n姑\n貿\n腐\n奴\n啦\n慣\n乘\n夥\n恢\n勻\n紗\n扎\n辯\n耳\n彪\n臣\n億\n璃\n抵\n脈\n秀\n薩\n俄\n網\n舞\n店\n噴\n縱\n寸\n汗\n掛\n洪\n賀\n閃\n柬\n爆\n烯\n津\n稻\n牆\n軟\n勇\n像\n滾\n厘\n蒙\n芳\n肯\n坡\n柱\n盪\n腿\n儀\n旅\n尾\n軋\n冰\n貢\n登\n黎\n削\n鑽\n勒\n逃\n障\n氨\n郭\n峰\n幣\n港\n伏\n軌\n畝\n畢\n擦\n莫\n刺\n浪\n秘\n援\n株\n健\n售\n股\n島\n甘\n泡\n睡\n童\n鑄\n湯\n閥\n休\n匯\n舍\n牧\n繞\n炸\n哲\n磷\n績\n朋\n淡\n尖\n啟\n陷\n柴\n呈\n徒\n顏\n淚\n稍\n忘\n泵\n藍\n拖\n洞\n授\n鏡\n辛\n壯\n鋒\n貧\n虛\n彎\n摩\n泰\n幼\n廷\n尊\n窗\n綱\n弄\n隸\n疑\n氏\n宮\n姐\n震\n瑞\n怪\n尤\n琴\n循\n描\n膜\n違\n夾\n腰\n緣\n珠\n窮\n森\n枝\n竹\n溝\n催\n繩\n憶\n邦\n剩\n幸\n漿\n欄\n擁\n牙\n貯\n禮\n濾\n鈉\n紋\n罷\n拍\n咱\n喊\n袖\n埃\n勤\n罰\n焦\n潛\n伍\n墨\n欲\n縫\n姓\n刊\n飽\n仿\n獎\n鋁\n鬼\n麗\n跨\n默\n挖\n鏈\n掃\n喝\n袋\n炭\n污\n幕\n諸\n弧\n勵\n梅\n奶\n潔\n災\n舟\n鑑\n苯\n訟\n抱\n毀\n懂\n寒\n智\n埔\n寄\n屆\n躍\n渡\n挑\n丹\n艱\n貝\n碰\n拔\n爹\n戴\n碼\n夢\n芽\n熔\n赤\n漁\n哭\n敬\n顆\n奔\n鉛\n仲\n虎\n稀\n妹\n乏\n珍\n申\n桌\n遵\n允\n隆\n螺\n倉\n魏\n銳\n曉\n氮\n兼\n隱\n礙\n赫\n撥\n忠\n肅\n缸\n牽\n搶\n博\n巧\n殼\n兄\n杜\n訊\n誠\n碧\n祥\n柯\n頁\n巡\n矩\n悲\n灌\n齡\n倫\n票\n尋\n桂\n鋪\n聖\n恐\n恰\n鄭\n趣\n抬\n荒\n騰\n貼\n柔\n滴\n猛\n闊\n輛\n妻\n填\n撤\n儲\n簽\n鬧\n擾\n紫\n砂\n遞\n戲\n吊\n陶\n伐\n餵\n療\n瓶\n婆\n撫\n臂\n摸\n忍\n蝦\n蠟\n鄰\n胸\n鞏\n擠\n偶\n棄\n槽\n勁\n乳\n鄧\n吉\n仁\n爛\n磚\n租\n烏\n艦\n伴\n瓜\n淺\n丙\n暫\n燥\n橡\n柳\n迷\n暖\n牌\n秧\n膽\n詳\n簧\n踏\n瓷\n譜\n呆\n賓\n糊\n洛\n輝\n憤\n競\n隙\n怒\n粘\n乃\n緒\n肩\n籍\n敏\n塗\n熙\n皆\n偵\n懸\n掘\n享\n糾\n醒\n狂\n鎖\n淀\n恨\n牲\n霸\n爬\n賞\n逆\n玩\n陵\n祝\n秒\n浙\n貌\n役\n彼\n悉\n鴨\n趨\n鳳\n晨\n畜\n輩\n秩\n卵\n署\n梯\n炎\n灘\n棋\n驅\n篩\n峽\n冒\n啥\n壽\n譯\n浸\n泉\n帽\n遲\n矽\n疆\n貸\n漏\n稿\n冠\n嫩\n脅\n芯\n牢\n叛\n蝕\n奧\n鳴\n嶺\n羊\n憑\n串\n塘\n繪\n酵\n融\n盆\n錫\n廟\n籌\n凍\n輔\n攝\n襲\n筋\n拒\n僚\n旱\n鉀\n鳥\n漆\n沈\n眉\n疏\n添\n棒\n穗\n硝\n韓\n逼\n扭\n僑\n涼\n挺\n碗\n栽\n炒\n杯\n患\n餾\n勸\n豪\n遼\n勃\n鴻\n旦\n吏\n拜\n狗\n埋\n輥\n掩\n飲\n搬\n罵\n辭\n勾\n扣\n估\n蔣\n絨\n霧\n丈\n朵\n姆\n擬\n宇\n輯\n陝\n雕\n償\n蓄\n崇\n剪\n倡\n廳\n咬\n駛\n薯\n刷\n斥\n番\n賦\n奉\n佛\n澆\n漫\n曼\n扇\n鈣\n桃\n扶\n仔\n返\n俗\n虧\n腔\n鞋\n棱\n覆\n框\n悄\n叔\n撞\n騙\n勘\n旺\n沸\n孤\n吐\n孟\n渠\n屈\n疾\n妙\n惜\n仰\n狠\n脹\n諧\n拋\n黴\n桑\n崗\n嘛\n衰\n盜\n滲\n臟\n賴\n湧\n甜\n曹\n閱\n肌\n哩\n厲\n烴\n緯\n毅\n昨\n偽\n症\n煮\n嘆\n釘\n搭\n莖\n籠\n酷\n偷\n弓\n錐\n恆\n傑\n坑\n鼻\n翼\n綸\n敘\n獄\n逮\n罐\n絡\n棚\n抑\n膨\n蔬\n寺\n驟\n穆\n冶\n枯\n冊\n屍\n凸\n紳\n坯\n犧\n焰\n轟\n欣\n晉\n瘦\n禦\n錠\n錦\n喪\n旬\n鍛\n壟\n搜\n撲\n邀\n亭\n酯\n邁\n舒\n脆\n酶\n閒\n憂\n酚\n頑\n羽\n漲\n卸\n仗\n陪\n闢\n懲\n杭\n姚\n肚\n捉\n飄\n漂\n昆\n欺\n吾\n郎\n烷\n汁\n呵\n飾\n蕭\n雅\n郵\n遷\n燕\n撒\n姻\n赴\n宴\n煩\n債\n帳\n斑\n鈴\n旨\n醇\n董\n餅\n雛\n姿\n拌\n傅\n腹\n妥\n揉\n賢\n拆\n歪\n葡\n胺\n丟\n浩\n徽\n昂\n墊\n擋\n覽\n貪\n慰\n繳\n汪\n慌\n馮\n諾\n姜\n誼\n兇\n劣\n誣\n耀\n昏\n躺\n盈\n騎\n喬\n溪\n叢\n盧\n抹\n悶\n諮\n刮\n駕\n纜\n悟\n摘\n鉺\n擲\n頗\n幻\n柄\n惠\n慘\n佳\n仇\n臘\n窩\n滌\n劍\n瞧\n堡\n潑\n蔥\n罩\n霍\n撈\n胎\n蒼\n濱\n倆\n捅\n湘\n砍\n霞\n邵\n萄\n瘋\n淮\n遂\n熊\n糞\n烘\n宿\n檔\n戈\n駁\n嫂\n裕\n徙\n箭\n捐\n腸\n撐\n曬\n辨\n殿\n蓮\n攤\n攪\n醬\n屏\n疫\n哀\n蔡\n堵\n沫\n皺\n暢\n疊\n閣\n萊\n敲\n轄\n鉤\n痕\n壩\n巷\n餓\n禍\n丘\n玄\n溜\n曰\n邏\n彭\n嘗\n卿\n妨\n艇\n吞\n韋\n怨\n矮\n歇".split("\n");var Ko=Object.freeze({__proto__:null,HDKey:ar,createNonceManager:Fr,nonceManager:jr,signatureToHex:Lr,serializeSignature:Lr,generateMnemonic:function(n,e){return qr(n,e)},generatePrivateKey:function(){return wr(rt.utils.randomPrivateKey())},hdKeyToAccount:Co,mnemonicToAccount:function(n,{passphrase:e,...t}={}){const r=Kr(n,e);return Co(ar.fromMasterSeed(r),t)},privateKeyToAccount:Bo,toAccount:fa,parseAccount:function(n){return"string"==typeof n?{address:n,type:"json-rpc"}:n},privateKeyToAddress:function(n){return ga(Ar(rt.getPublicKey(n.slice(2),!1)))},publicKeyToAddress:ga,setSignEntropy:function(n){if(!n)throw new Error("must be a `true` or a hex value.");ma=n},sign:ba,signAuthorization:Ra,signMessage:Ta,signTransaction:so,signTypedData:To,czech:Oo,english:Uo,french:Fo,italian:jo,japanese:Lo,korean:Do,portuguese:Mo,simplifiedChinese:Go,spanish:qo,traditionalChinese:Ho});const _o="6.16.0";function Vo(n,e,t){const r=e.split("|").map(n=>n.trim());for(let t=0;t<r.length;t++)switch(e){case"any":return;case"bigint":case"boolean":case"number":case"string":if(typeof n===e)return}const a=new Error(`invalid value for type ${e}`);throw a.code="INVALID_ARGUMENT",a.argument=`value.${t}`,a.value=n,a}async function Qo(n){const e=Object.keys(n);return(await Promise.all(e.map(e=>Promise.resolve(n[e])))).reduce((n,t,r)=>(n[e[r]]=t,n),{})}function Jo(n,e,t){for(let r in e){let a=e[r];const o=t?t[r]:null;o&&Vo(a,o,r),Object.defineProperty(n,r,{enumerable:!0,value:a,writable:!1})}}function $o(n,e){if(null==n)return"null";if(null==e&&(e=new Set),"object"==typeof n){if(e.has(n))return"[Circular]";e.add(n)}if(Array.isArray(n))return"[ "+n.map(n=>$o(n,e)).join(", ")+" ]";if(n instanceof Uint8Array){const e="0123456789abcdef";let t="0x";for(let r=0;r<n.length;r++)t+=e[n[r]>>4],t+=e[15&n[r]];return t}if("object"==typeof n&&"function"==typeof n.toJSON)return $o(n.toJSON(),e);switch(typeof n){case"boolean":case"number":case"symbol":return n.toString();case"bigint":return BigInt(n).toString();case"string":return JSON.stringify(n);case"object":{const t=Object.keys(n);return t.sort(),"{ "+t.map(t=>`${$o(t,e)}: ${$o(n[t],e)}`).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function Wo(n,e){return n&&n.code===e}function Zo(n){return Wo(n,"CALL_EXCEPTION")}function Yo(n,e,t){let r,a=n;{const r=[];if(t){if("message"in t||"code"in t||"name"in t)throw new Error(`value will overwrite populated values: ${$o(t)}`);for(const n in t){if("shortMessage"===n)continue;const e=t[n];r.push(n+"="+$o(e))}}r.push(`code=${e}`),r.push(`version=${_o}`),r.length&&(n+=" ("+r.join(", ")+")")}switch(e){case"INVALID_ARGUMENT":r=new TypeError(n);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":r=new RangeError(n);break;default:r=new Error(n)}return Jo(r,{code:e}),t&&Object.assign(r,t),null==r.shortMessage&&Jo(r,{shortMessage:a}),r}function Xo(n,e,t,r){if(!n)throw Yo(e,t,r)}function ni(n,e,t,r){Xo(n,e,"INVALID_ARGUMENT",{argument:t,value:r})}function ei(n,e,t){null==t&&(t=""),t&&(t=": "+t),Xo(n>=e,"missing argument"+t,"MISSING_ARGUMENT",{count:n,expectedCount:e}),Xo(n<=e,"too many arguments"+t,"UNEXPECTED_ARGUMENT",{count:n,expectedCount:e})}const ti=["NFD","NFC","NFKD","NFKC"].reduce((n,e)=>{try{if("test"!=="test".normalize(e))throw new Error("bad");if("NFD"===e){const n=String.fromCharCode(233).normalize("NFD");if(n!==String.fromCharCode(101,769))throw new Error("broken")}n.push(e)}catch(n){}return n},[]);function ri(n){Xo(ti.indexOf(n)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:n}})}function ai(n,e,t){if(null==t&&(t=""),n!==e){let n=t,e="new";t&&(n+=".",e+=" "+t),Xo(!1,`private constructor; use ${n}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}function oi(n,e,t){if(n instanceof Uint8Array)return t?new Uint8Array(n):n;if("string"==typeof n&&n.length%2==0&&n.match(/^0x[0-9a-f]*$/i)){const e=new Uint8Array((n.length-2)/2);let t=2;for(let r=0;r<e.length;r++)e[r]=parseInt(n.substring(t,t+2),16),t+=2;return e}ni(!1,"invalid BytesLike value",e||"value",n)}function ii(n,e){return oi(n,e,!1)}function si(n,e){return oi(n,e,!0)}function ci(n,e){return!("string"!=typeof n||!n.match(/^0x[0-9A-Fa-f]*$/))&&(("number"!=typeof e||n.length===2+2*e)&&(!0!==e||n.length%2==0))}function li(n){return ci(n,!0)||n instanceof Uint8Array}const ui="0123456789abcdef";function di(n){const e=ii(n);let t="0x";for(let n=0;n<e.length;n++){const r=e[n];t+=ui[(240&r)>>4]+ui[15&r]}return t}function hi(n){return"0x"+n.map(n=>di(n).substring(2)).join("")}function pi(n){return ci(n,!0)?(n.length-2)/2:ii(n).length}function fi(n,e,t){const r=ii(n);return null!=t&&t>r.length&&Xo(!1,"cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:r,length:r.length,offset:t}),di(r.slice(null==e?0:e,null==t?r.length:t))}function gi(n){let e=di(n).substring(2);for(;e.startsWith("00");)e=e.substring(2);return"0x"+e}function mi(n,e,t){const r=ii(n);Xo(e>=r.length,"padding exceeds data length","BUFFER_OVERRUN",{buffer:new Uint8Array(r),length:e,offset:e+1});const a=new Uint8Array(e);return a.fill(0),t?a.set(r,e-r.length):a.set(r,0),di(a)}function bi(n,e){return mi(n,e,!0)}function yi(n,e){return mi(n,e,!1)}const vi=BigInt(0),wi=BigInt(1),ki=9007199254740991;function Ai(n,e){const t=Ii(n,"value"),r=BigInt(Ri(e,"width"));if(Xo(t>>r===vi,"overflow","NUMERIC_FAULT",{operation:"fromTwos",fault:"overflow",value:n}),t>>r-wi){return-((~t&(wi<<r)-wi)+wi)}return t}function Ei(n,e){let t=Pi(n,"value");const r=BigInt(Ri(e,"width")),a=wi<<r-wi;if(t<vi){t=-t,Xo(t<=a,"too low","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:n});return(~t&(wi<<r)-wi)+wi}return Xo(t<a,"too high","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:n}),t}function xi(n,e){const t=Ii(n,"value"),r=BigInt(Ri(e,"bits"));return t&(wi<<r)-wi}function Pi(n,e){switch(typeof n){case"bigint":return n;case"number":return ni(Number.isInteger(n),"underflow",e||"value",n),ni(n>=-ki&&n<=ki,"overflow",e||"value",n),BigInt(n);case"string":try{if(""===n)throw new Error("empty string");return"-"===n[0]&&"-"!==n[1]?-BigInt(n.substring(1)):BigInt(n)}catch(t){ni(!1,`invalid BigNumberish string: ${t.message}`,e||"value",n)}}ni(!1,"invalid BigNumberish value",e||"value",n)}function Ii(n,e){const t=Pi(n,e);return Xo(t>=vi,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:n}),t}const Ni="0123456789abcdef";function zi(n){if(n instanceof Uint8Array){let e="0x0";for(const t of n)e+=Ni[t>>4],e+=Ni[15&t];return BigInt(e)}return Pi(n)}function Ri(n,e){switch(typeof n){case"bigint":return ni(n>=-ki&&n<=ki,"overflow",e||"value",n),Number(n);case"number":return ni(Number.isInteger(n),"underflow",e||"value",n),ni(n>=-ki&&n<=ki,"overflow",e||"value",n),n;case"string":try{if(""===n)throw new Error("empty string");return Ri(BigInt(n),e)}catch(t){ni(!1,`invalid numeric string: ${t.message}`,e||"value",n)}}ni(!1,"invalid numeric value",e||"value",n)}function Si(n){return Ri(zi(n))}function Ti(n,e){const t=Ii(n,"value");let r=t.toString(16);if(null==e)r.length%2&&(r="0"+r);else{const a=Ri(e,"width");if(0===a&&t===vi)return"0x";for(Xo(2*a>=r.length,`value exceeds width (${a} bytes)`,"NUMERIC_FAULT",{operation:"toBeHex",fault:"overflow",value:n});r.length<2*a;)r="0"+r}return"0x"+r}function Bi(n,e){const t=Ii(n,"value");if(t===vi){const n=null!=e?Ri(e,"width"):0;return new Uint8Array(n)}let r=t.toString(16);if(r.length%2&&(r="0"+r),null!=e){const t=Ri(e,"width");for(;r.length<2*t;)r="00"+r;Xo(2*t===r.length,`value exceeds width (${t} bytes)`,"NUMERIC_FAULT",{operation:"toBeArray",fault:"overflow",value:n})}const a=new Uint8Array(r.length/2);for(let n=0;n<a.length;n++){const e=2*n;a[n]=parseInt(r.substring(e,e+2),16)}return a}function Ci(n){let e=di(li(n)?n:Bi(n)).substring(2);for(;e.startsWith("0");)e=e.substring(1);return""===e&&(e="0"),"0x"+e}const Oi="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let Ui=null;function Fi(n){if(null==Ui){Ui={};for(let n=0;n<58;n++)Ui[Oi[n]]=BigInt(n)}const e=Ui[n];return ni(null!=e,"invalid base58 value","letter",n),e}const ji=BigInt(0),Li=BigInt(58);function Di(n){const e=ii(n);let t=zi(e),r="";for(;t;)r=Oi[Number(t%Li)]+r,t/=Li;for(let n=0;n<e.length&&!e[n];n++)r=Oi[0]+r;return r}function Mi(n){let e=ji;for(let t=0;t<n.length;t++)e*=Li,e+=Fi(n[t]);return e}function Gi(n){n=atob(n);const e=new Uint8Array(n.length);for(let t=0;t<n.length;t++)e[t]=n.charCodeAt(t);return ii(e)}function qi(n){const e=ii(n);let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}class Hi{filter;emitter;#n;constructor(n,e,t){this.#n=e,Jo(this,{emitter:n,filter:t})}async removeListener(){null!=this.#n&&await this.emitter.off(this.filter,this.#n)}}function Ki(n,e,t,r,a){if("BAD_PREFIX"===n||"UNEXPECTED_CONTINUE"===n){let n=0;for(let r=e+1;r<t.length&&t[r]>>6==2;r++)n++;return n}return"OVERRUN"===n?t.length-e-1:0}const _i=Object.freeze({error:function(n,e,t,r,a){ni(!1,`invalid codepoint at offset ${e}; ${n}`,"bytes",t)},ignore:Ki,replace:function(n,e,t,r,a){return"OVERLONG"===n?(ni("number"==typeof a,"invalid bad code point for replacement","badCodepoint",a),r.push(a),0):(r.push(65533),Ki(n,e,t))}});function Vi(n,e){null==e&&(e=_i.error);const t=ii(n,"bytes"),r=[];let a=0;for(;a<t.length;){const n=t[a++];if(!(n>>7)){r.push(n);continue}let o=null,i=null;if(192==(224&n))o=1,i=127;else if(224==(240&n))o=2,i=2047;else{if(240!=(248&n)){a+=e(128==(192&n)?"UNEXPECTED_CONTINUE":"BAD_PREFIX",a-1,t,r);continue}o=3,i=65535}if(a-1+o>=t.length){a+=e("OVERRUN",a-1,t,r);continue}let s=n&(1<<8-o-1)-1;for(let n=0;n<o;n++){let n=t[a];if(128!=(192&n)){a+=e("MISSING_CONTINUE",a,t,r),s=null;break}s=s<<6|63&n,a++}null!==s&&(s>1114111?a+=e("OUT_OF_RANGE",a-1-o,t,r,s):s>=55296&&s<=57343?a+=e("UTF16_SURROGATE",a-1-o,t,r,s):s<=i?a+=e("OVERLONG",a-1-o,t,r,s):r.push(s))}return r}function Qi(n,e){ni("string"==typeof n,"invalid string value","str",n),null!=e&&(ri(e),n=n.normalize(e));let t=[];for(let e=0;e<n.length;e++){const r=n.charCodeAt(e);if(r<128)t.push(r);else if(r<2048)t.push(r>>6|192),t.push(63&r|128);else if(55296==(64512&r)){e++;const a=n.charCodeAt(e);ni(e<n.length&&56320==(64512&a),"invalid surrogate pair","str",n);const o=65536+((1023&r)<<10)+(1023&a);t.push(o>>18|240),t.push(o>>12&63|128),t.push(o>>6&63|128),t.push(63&o|128)}else t.push(r>>12|224),t.push(r>>6&63|128),t.push(63&r|128)}return new Uint8Array(t)}function Ji(n,e){return Vi(n,e).map(n=>n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode(55296+(n>>10&1023),56320+(1023&n)))).join("")}function $i(n,e){return Vi(Qi(n,e))}function Wi(n){return async function(e,t){Xo(null==t||!t.cancelled,"request cancelled before sending","CANCELLED");const r=e.url.split(":")[0].toLowerCase();Xo("http"===r||"https"===r,`unsupported protocol ${r}`,"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),Xo("https"===r||!e.credentials||e.allowInsecureAuthentication,"insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});let a=null;const o=new AbortController,i=setTimeout(()=>{a=Yo("request timeout","TIMEOUT"),o.abort()},e.timeout);t&&t.addListener(()=>{a=Yo("request cancelled","CANCELLED"),o.abort()});const s=Object.assign({},n,{method:e.method,headers:new Headers(Array.from(e)),body:e.body||void 0,signal:o.signal});let c;try{c=await fetch(e.url,s)}catch(n){if(clearTimeout(i),a)throw a;throw n}clearTimeout(i);const l={};c.headers.forEach((n,e)=>{l[e.toLowerCase()]=n});const u=await c.arrayBuffer(),d=null==u?null:new Uint8Array(u);return{statusCode:c.status,statusMessage:c.statusText,headers:l,body:d}}}let Zi=Wi();const Yi=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),Xi=new RegExp("^ipfs://(ipfs/)?(.*)$","i");let ns=!1;async function es(n,e){try{const e=n.match(Yi);if(!e)throw new Error("invalid data");return new cs(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?Gi(e[3]):Qi(e[3].replace(/%([0-9a-f][0-9a-f])/gi,(n,e)=>String.fromCharCode(parseInt(e,16)))))}catch(e){return new cs(599,"BAD REQUEST (invalid data: URI)",{},null,new ss(n))}}function ts(n){return async function(e,t){try{const t=e.match(Xi);if(!t)throw new Error("invalid link");return new ss(`${n}${t[2]}`)}catch(n){return new cs(599,"BAD REQUEST (invalid IPFS URI)",{},null,new ss(e))}}}const rs={data:es,ipfs:ts("https://gateway.ipfs.io/ipfs/")},as=new WeakMap;class os{#e;#t;constructor(n){this.#e=[],this.#t=!1,as.set(n,()=>{if(!this.#t){this.#t=!0;for(const n of this.#e)setTimeout(()=>{n()},0);this.#e=[]}})}addListener(n){Xo(!this.#t,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#e.push(n)}get cancelled(){return this.#t}checkSignal(){Xo(!this.cancelled,"cancelled","CANCELLED",{})}}function is(n){if(null==n)throw new Error("missing signal; should not happen");return n.checkSignal(),n}class ss{#r;#a;#o;#i;#s;#c;#l;#u;#d;#h;#p;#f;#g;#m;#b;get url(){return this.#c}set url(n){this.#c=String(n)}get body(){return null==this.#l?null:new Uint8Array(this.#l)}set body(n){if(null==n)this.#l=void 0,this.#u=void 0;else if("string"==typeof n)this.#l=Qi(n),this.#u="text/plain";else if(n instanceof Uint8Array)this.#l=n,this.#u="application/octet-stream";else{if("object"!=typeof n)throw new Error("invalid body");this.#l=Qi(JSON.stringify(n)),this.#u="application/json"}}hasBody(){return null!=this.#l}get method(){return this.#i?this.#i:this.hasBody()?"POST":"GET"}set method(n){null==n&&(n=""),this.#i=String(n).toUpperCase()}get headers(){const n=Object.assign({},this.#o);return this.#d&&(n.authorization=`Basic ${qi(Qi(this.#d))}`),this.allowGzip&&(n["accept-encoding"]="gzip"),null==n["content-type"]&&this.#u&&(n["content-type"]=this.#u),this.body&&(n["content-length"]=String(this.body.length)),n}getHeader(n){return this.headers[n.toLowerCase()]}setHeader(n,e){this.#o[String(n).toLowerCase()]=String(e)}clearHeaders(){this.#o={}}[Symbol.iterator](){const n=this.headers,e=Object.keys(n);let t=0;return{next:()=>{if(t<e.length){const r=e[t++];return{value:[r,n[r]],done:!1}}return{value:void 0,done:!0}}}}get credentials(){return this.#d||null}setCredentials(n,e){ni(!n.match(/:/),"invalid basic authentication username","username","[REDACTED]"),this.#d=`${n}:${e}`}get allowGzip(){return this.#a}set allowGzip(n){this.#a=!!n}get allowInsecureAuthentication(){return!!this.#r}set allowInsecureAuthentication(n){this.#r=!!n}get timeout(){return this.#s}set timeout(n){ni(n>=0,"timeout must be non-zero","timeout",n),this.#s=n}get preflightFunc(){return this.#h||null}set preflightFunc(n){this.#h=n}get processFunc(){return this.#p||null}set processFunc(n){this.#p=n}get retryFunc(){return this.#f||null}set retryFunc(n){this.#f=n}get getUrlFunc(){return this.#b||Zi}set getUrlFunc(n){this.#b=n}constructor(n){this.#c=String(n),this.#r=!1,this.#a=!0,this.#o={},this.#i="",this.#s=3e5,this.#m={slotInterval:250,maxAttempts:12},this.#b=null}toString(){return`<FetchRequest method=${JSON.stringify(this.method)} url=${JSON.stringify(this.url)} headers=${JSON.stringify(this.headers)} body=${this.#l?di(this.#l):"null"}>`}setThrottleParams(n){null!=n.slotInterval&&(this.#m.slotInterval=n.slotInterval),null!=n.maxAttempts&&(this.#m.maxAttempts=n.maxAttempts)}async#y(n,e,t,r,a){if(n>=this.#m.maxAttempts)return a.makeServerError("exceeded maximum retry limit");Xo(ls()<=e,"timeout","TIMEOUT",{operation:"request.send",reason:"timeout",request:r}),t>0&&await function(n){return new Promise(e=>setTimeout(e,n))}(t);let o=this.clone();const i=(o.url.split(":")[0]||"").toLowerCase();if(i in rs){const n=await rs[i](o.url,is(r.#g));if(n instanceof cs){let e=n;if(this.processFunc){is(r.#g);try{e=await this.processFunc(o,e)}catch(n){null!=n.throttle&&"number"==typeof n.stall||e.makeServerError("error in post-processing function",n).assertOk()}}return e}o=n}this.preflightFunc&&(o=await this.preflightFunc(o));const s=await this.getUrlFunc(o,is(r.#g));let c=new cs(s.statusCode,s.statusMessage,s.headers,s.body,r);if(301===c.statusCode||302===c.statusCode){try{const t=c.headers.location||"";return o.redirect(t).#y(n+1,e,0,r,c)}catch(n){}return c}if(429===c.statusCode&&(null==this.retryFunc||await this.retryFunc(o,c,n))){const t=c.headers["retry-after"];let a=this.#m.slotInterval*Math.trunc(Math.random()*Math.pow(2,n));return"string"==typeof t&&t.match(/^[1-9][0-9]*$/)&&(a=parseInt(t)),o.clone().#y(n+1,e,a,r,c)}if(this.processFunc){is(r.#g);try{c=await this.processFunc(o,c)}catch(t){null!=t.throttle&&"number"==typeof t.stall||c.makeServerError("error in post-processing function",t).assertOk();let a=this.#m.slotInterval*Math.trunc(Math.random()*Math.pow(2,n));return t.stall>=0&&(a=t.stall),o.clone().#y(n+1,e,a,r,c)}}return c}send(){return Xo(null==this.#g,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#g=new os(this),this.#y(0,ls()+this.timeout,0,this,new cs(0,"",{},null,this))}cancel(){Xo(null!=this.#g,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});const n=as.get(this);if(!n)throw new Error("missing signal; should not happen");n()}redirect(n){const e=this.url.split(":")[0].toLowerCase(),t=n.split(":")[0].toLowerCase();Xo("GET"===this.method&&("https"!==e||"http"!==t)&&n.match(/^https?:/),"unsupported redirect","UNSUPPORTED_OPERATION",{operation:`redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(n)})`});const r=new ss(n);return r.method="GET",r.allowGzip=this.allowGzip,r.timeout=this.timeout,r.#o=Object.assign({},this.#o),this.#l&&(r.#l=new Uint8Array(this.#l)),r.#u=this.#u,r}clone(){const n=new ss(this.url);return n.#i=this.#i,this.#l&&(n.#l=this.#l),n.#u=this.#u,n.#o=Object.assign({},this.#o),n.#d=this.#d,this.allowGzip&&(n.allowGzip=!0),n.timeout=this.timeout,this.allowInsecureAuthentication&&(n.allowInsecureAuthentication=!0),n.#h=this.#h,n.#p=this.#p,n.#f=this.#f,n.#m=Object.assign({},this.#m),n.#b=this.#b,n}static lockConfig(){ns=!0}static getGateway(n){return rs[n.toLowerCase()]||null}static registerGateway(n,e){if("http"===(n=n.toLowerCase())||"https"===n)throw new Error(`cannot intercept ${n}; use registerGetUrl`);if(ns)throw new Error("gateways locked");rs[n]=e}static registerGetUrl(n){if(ns)throw new Error("gateways locked");Zi=n}static createGetUrlFunc(n){return Wi(n)}static createDataGateway(){return es}static createIpfsGatewayFunc(n){return ts(n)}}class cs{#v;#w;#o;#l;#k;#A;toString(){return`<FetchResponse status=${this.statusCode} body=${this.#l?di(this.#l):"null"}>`}get statusCode(){return this.#v}get statusMessage(){return this.#w}get headers(){return Object.assign({},this.#o)}get body(){return null==this.#l?null:new Uint8Array(this.#l)}get bodyText(){try{return null==this.#l?"":Ji(this.#l)}catch(n){Xo(!1,"response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch(n){Xo(!1,"response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[Symbol.iterator](){const n=this.headers,e=Object.keys(n);let t=0;return{next:()=>{if(t<e.length){const r=e[t++];return{value:[r,n[r]],done:!1}}return{value:void 0,done:!0}}}}constructor(n,e,t,r,a){this.#v=n,this.#w=e,this.#o=Object.keys(t).reduce((n,e)=>(n[e.toLowerCase()]=String(t[e]),n),{}),this.#l=null==r?null:new Uint8Array(r),this.#k=a||null,this.#A={message:""}}makeServerError(n,e){let t;t=n?`CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${n})`:`CLIENT ESCALATED SERVER ERROR (${n=`${this.statusCode} ${this.statusMessage}`})`;const r=new cs(599,t,this.headers,this.body,this.#k||void 0);return r.#A={message:n,error:e},r}throwThrottleError(n,e){null==e?e=-1:ni(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);const t=new Error(n||"throttling requests");throw Jo(t,{stall:e,throttle:!0}),t}getHeader(n){return this.headers[n.toLowerCase()]}hasBody(){return null!=this.#l}get request(){return this.#k}ok(){return""===this.#A.message&&this.statusCode>=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:n,error:e}=this.#A;""===n&&(n=`server response ${this.statusCode} ${this.statusMessage}`);let t=null;this.request&&(t=this.request.url);let r=null;try{this.#l&&(r=Ji(this.#l))}catch(n){}Xo(!1,n,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:t,responseBody:r,responseStatus:`${this.statusCode} ${this.statusMessage}`}})}}function ls(){return(new Date).getTime()}const us=BigInt(-1),ds=BigInt(0),hs=BigInt(1),ps=BigInt(5),fs={};let gs="0000";for(;gs.length<80;)gs+=gs;function ms(n){let e=gs;for(;e.length<n;)e+=e;return BigInt("1"+e.substring(0,n))}function bs(n,e,t){const r=BigInt(e.width);if(e.signed){const e=hs<<r-hs;Xo(null==t||n>=-e&&n<e,"overflow","NUMERIC_FAULT",{operation:t,fault:"overflow",value:n}),n=n>ds?Ai(xi(n,r),r):-Ai(xi(-n,r),r)}else{const e=hs<<r;Xo(null==t||n>=0&&n<e,"overflow","NUMERIC_FAULT",{operation:t,fault:"overflow",value:n}),n=(n%e+e)%e&e-hs}return n}function ys(n){"number"==typeof n&&(n=`fixed128x${n}`);let e=!0,t=128,r=18;if("string"==typeof n)if("fixed"===n);else if("ufixed"===n)e=!1;else{const a=n.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);ni(a,"invalid fixed format","format",n),e="u"!==a[1],t=parseInt(a[2]),r=parseInt(a[3])}else if(n){const a=n,o=(n,e,t)=>null==a[n]?t:(ni(typeof a[n]===e,"invalid fixed format ("+n+" not "+e+")","format."+n,a[n]),a[n]);e=o("signed","boolean",e),t=o("width","number",t),r=o("decimals","number",r)}ni(t%8==0,"invalid FixedNumber width (not byte aligned)","format.width",t),ni(r<=80,"invalid FixedNumber decimals (too large)","format.decimals",r);return{signed:e,width:t,decimals:r,name:(e?"":"u")+"fixed"+String(t)+"x"+String(r)}}class vs{format;#E;#x;#P;_value;constructor(n,e,t){ai(n,fs,"FixedNumber"),this.#x=e,this.#E=t;const r=function(n,e){let t="";n<ds&&(t="-",n*=us);let r=n.toString();if(0===e)return t+r;for(;r.length<=e;)r=gs+r;const a=r.length-e;for(r=r.substring(0,a)+"."+r.substring(a);"0"===r[0]&&"."!==r[1];)r=r.substring(1);for(;"0"===r[r.length-1]&&"."!==r[r.length-2];)r=r.substring(0,r.length-1);return t+r}(e,t.decimals);Jo(this,{format:t.name,_value:r}),this.#P=ms(t.decimals)}get signed(){return this.#E.signed}get width(){return this.#E.width}get decimals(){return this.#E.decimals}get value(){return this.#x}#I(n){ni(this.format===n.format,"incompatible format; use fixedNumber.toFormat","other",n)}#N(n,e){return n=bs(n,this.#E,e),new vs(fs,n,this.#E)}#z(n,e){return this.#I(n),this.#N(this.#x+n.#x,e)}addUnsafe(n){return this.#z(n)}add(n){return this.#z(n,"add")}#R(n,e){return this.#I(n),this.#N(this.#x-n.#x,e)}subUnsafe(n){return this.#R(n)}sub(n){return this.#R(n,"sub")}#S(n,e){return this.#I(n),this.#N(this.#x*n.#x/this.#P,e)}mulUnsafe(n){return this.#S(n)}mul(n){return this.#S(n,"mul")}mulSignal(n){this.#I(n);const e=this.#x*n.#x;return Xo(e%this.#P===ds,"precision lost during signalling mul","NUMERIC_FAULT",{operation:"mulSignal",fault:"underflow",value:this}),this.#N(e/this.#P,"mulSignal")}#T(n,e){return Xo(n.#x!==ds,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#I(n),this.#N(this.#x*this.#P/n.#x,e)}divUnsafe(n){return this.#T(n)}div(n){return this.#T(n,"div")}divSignal(n){Xo(n.#x!==ds,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#I(n);const e=this.#x*this.#P;return Xo(e%n.#x===ds,"precision lost during signalling div","NUMERIC_FAULT",{operation:"divSignal",fault:"underflow",value:this}),this.#N(e/n.#x,"divSignal")}cmp(n){let e=this.value,t=n.value;const r=this.decimals-n.decimals;return r>0?t*=ms(r):r<0&&(e*=ms(-r)),e<t?-1:e>t?1:0}eq(n){return 0===this.cmp(n)}lt(n){return this.cmp(n)<0}lte(n){return this.cmp(n)<=0}gt(n){return this.cmp(n)>0}gte(n){return this.cmp(n)>=0}floor(){let n=this.#x;return this.#x<ds&&(n-=this.#P-hs),n=this.#x/this.#P*this.#P,this.#N(n,"floor")}ceiling(){let n=this.#x;return this.#x>ds&&(n+=this.#P-hs),n=this.#x/this.#P*this.#P,this.#N(n,"ceiling")}round(n){if(null==n&&(n=0),n>=this.decimals)return this;const e=this.decimals-n,t=ps*ms(e-1);let r=this.value+t;const a=ms(e);return r=r/a*a,bs(r,this.#E,"round"),new vs(fs,r,this.#E)}isZero(){return this.#x===ds}isNegative(){return this.#x<ds}toString(){return this._value}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(n){return vs.fromString(this.toString(),n)}static fromValue(n,e,t){const r=null==e?0:Ri(e),a=ys(t);let o=Pi(n,"value");const i=r-a.decimals;if(i>0){const e=ms(i);Xo(o%e===ds,"value loses precision for format","NUMERIC_FAULT",{operation:"fromValue",fault:"underflow",value:n}),o/=e}else i<0&&(o*=ms(-i));return bs(o,a,"fromValue"),new vs(fs,o,a)}static fromString(n,e){const t=n.match(/^(-?)([0-9]*)\.?([0-9]*)$/);ni(t&&t[2].length+t[3].length>0,"invalid FixedNumber string value","value",n);const r=ys(e);let a=t[2]||"0",o=t[3]||"";for(;o.length<r.decimals;)o+=gs;Xo(o.substring(r.decimals).match(/^0*$/),"too many decimals for format","NUMERIC_FAULT",{operation:"fromString",fault:"underflow",value:n}),o=o.substring(0,r.decimals);const i=BigInt(t[1]+a+o);return bs(i,r,"fromString"),new vs(fs,i,r)}static fromBytes(n,e){let t=zi(ii(n,"value"));const r=ys(e);return r.signed&&(t=Ai(t,r.width)),bs(t,r,"fromBytes"),new vs(fs,t,r)}}function ws(n){let e=n.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function ks(n,e,t){let r=0;for(let a=0;a<t;a++)r=256*r+n[e+a];return r}function As(n,e,t,r){const a=[];for(;t<e+1+r;){const o=Es(n,t);a.push(o.result),Xo((t+=o.consumed)<=e+1+r,"child data too short","BUFFER_OVERRUN",{buffer:n,length:r,offset:e})}return{consumed:1+r,result:a}}function Es(n,e){Xo(0!==n.length,"data too short","BUFFER_OVERRUN",{buffer:n,length:0,offset:1});const t=e=>{Xo(e<=n.length,"data short segment too short","BUFFER_OVERRUN",{buffer:n,length:n.length,offset:e})};if(n[e]>=248){const r=n[e]-247;t(e+1+r);const a=ks(n,e+1,r);return t(e+1+r+a),As(n,e,e+1+r,r+a)}if(n[e]>=192){const r=n[e]-192;return t(e+1+r),As(n,e,e+1,r)}if(n[e]>=184){const r=n[e]-183;t(e+1+r);const a=ks(n,e+1,r);t(e+1+r+a);return{consumed:1+r+a,result:di(n.slice(e+1+r,e+1+r+a))}}if(n[e]>=128){const r=n[e]-128;t(e+1+r);return{consumed:1+r,result:di(n.slice(e+1,e+1+r))}}return{consumed:1,result:ws(n[e])}}function xs(n){const e=ii(n,"data"),t=Es(e,0);return ni(t.consumed===e.length,"unexpected junk after rlp payload","data",n),t.result}function Ps(n){const e=[];for(;n;)e.unshift(255&n),n>>=8;return e}function Is(n){if(Array.isArray(n)){let e=[];if(n.forEach(function(n){e=e.concat(Is(n))}),e.length<=55)return e.unshift(192+e.length),e;const t=Ps(e.length);return t.unshift(247+t.length),t.concat(e)}const e=Array.prototype.slice.call(ii(n,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const t=Ps(e.length);return t.unshift(183+t.length),t.concat(e)}const Ns="0123456789abcdef";function zs(n){let e="0x";for(const t of Is(n))e+=Ns[t>>4],e+=Ns[15&t];return e}const Rs=["wei","kwei","mwei","gwei","szabo","finney","ether"];function Ss(n,e){let t=18;if("string"==typeof e){const n=Rs.indexOf(e);ni(n>=0,"invalid unit","unit",e),t=3*n}else null!=e&&(t=Ri(e,"unit"));return vs.fromValue(n,t,{decimals:t,width:512}).toString()}function Ts(n,e){ni("string"==typeof n,"value must be a string","value",n);let t=18;if("string"==typeof e){const n=Rs.indexOf(e);ni(n>=0,"invalid unit","unit",e),t=3*n}else null!=e&&(t=Ri(e,"unit"));return vs.fromString(n,{decimals:t,width:512}).value}function Bs(n){return Ss(n,18)}function Cs(n){return Ts(n,18)}function Os(n){const e=ii(n,"randomBytes");e[6]=15&e[6]|64,e[8]=63&e[8]|128;const t=di(e);return[t.substring(2,10),t.substring(10,14),t.substring(14,18),t.substring(18,22),t.substring(22,34)].join("-")}const Us=32,Fs=new Uint8Array(Us),js=["then"],Ls={},Ds=new WeakMap;function Ms(n){return Ds.get(n)}function Gs(n,e){Ds.set(n,e)}function qs(n,e){const t=new Error(`deferred error during ABI decoding triggered accessing ${n}`);throw t.error=e,t}function Hs(n,e,t){return n.indexOf(null)>=0?e.map((n,e)=>n instanceof Ks?Hs(Ms(n),n,t):n):n.reduce((n,r,a)=>{let o=e.getValue(r);return r in n||(t&&o instanceof Ks&&(o=Hs(Ms(o),o,t)),n[r]=o),n},{})}class Ks extends Array{#B;constructor(...n){const e=n[0];let t=n[1],r=(n[2]||[]).slice(),a=!0;e!==Ls&&(t=n,r=[],a=!1),super(t.length),t.forEach((n,e)=>{this[e]=n});const o=r.reduce((n,e)=>("string"==typeof e&&n.set(e,(n.get(e)||0)+1),n),new Map);if(Gs(this,Object.freeze(t.map((n,e)=>{const t=r[e];return null!=t&&1===o.get(t)?t:null}))),this.#B=[],null==this.#B&&this.#B,!a)return;Object.freeze(this);const i=new Proxy(this,{get:(n,e,t)=>{if("string"==typeof e){if(e.match(/^[0-9]+$/)){const t=Ri(e,"%index");if(t<0||t>=this.length)throw new RangeError("out of result range");const r=n[t];return r instanceof Error&&qs(`index ${t}`,r),r}if(js.indexOf(e)>=0)return Reflect.get(n,e,t);const r=n[e];if(r instanceof Function)return function(...e){return r.apply(this===t?n:this,e)};if(!(e in n))return n.getValue.apply(this===t?n:this,[e])}return Reflect.get(n,e,t)}});return Gs(i,Ms(this)),i}toArray(n){const e=[];return this.forEach((t,r)=>{t instanceof Error&&qs(`index ${r}`,t),n&&t instanceof Ks&&(t=t.toArray(n)),e.push(t)}),e}toObject(n){const e=Ms(this);return e.reduce((t,r,a)=>(Xo(null!=r,`value at index ${a} unnamed`,"UNSUPPORTED_OPERATION",{operation:"toObject()"}),Hs(e,this,n)),{})}slice(n,e){null==n&&(n=0),n<0&&(n+=this.length)<0&&(n=0),null==e&&(e=this.length),e<0&&(e+=this.length)<0&&(e=0),e>this.length&&(e=this.length);const t=Ms(this),r=[],a=[];for(let o=n;o<e;o++)r.push(this[o]),a.push(t[o]);return new Ks(Ls,r,a)}filter(n,e){const t=Ms(this),r=[],a=[];for(let o=0;o<this.length;o++){const i=this[o];i instanceof Error&&qs(`index ${o}`,i),n.call(e,i,o,this)&&(r.push(i),a.push(t[o]))}return new Ks(Ls,r,a)}map(n,e){const t=[];for(let r=0;r<this.length;r++){const a=this[r];a instanceof Error&&qs(`index ${r}`,a),t.push(n.call(e,a,r,this))}return t}getValue(n){const e=Ms(this).indexOf(n);if(-1===e)return;const t=this[e];return t instanceof Error&&qs(`property ${JSON.stringify(n)}`,t.error),t}static fromItems(n,e){return new Ks(Ls,n,e)}}function _s(n){const e=[],t=function(n,r){if(Array.isArray(r))for(let a in r){const o=n.slice();o.push(a);try{t(o,r[a])}catch(n){e.push({path:o,error:n})}}};return t([],n),e}function Vs(n){let e=Bi(n);return Xo(e.length<=Us,"value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:Us,offset:e.length}),e.length!==Us&&(e=si(hi([Fs.slice(e.length%Us),e]))),e}class Qs{name;type;localName;dynamic;constructor(n,e,t,r){Jo(this,{name:n,type:e,localName:t,dynamic:r},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(n,e){ni(!1,n,this.localName,e)}}class Js{#C;#O;constructor(){this.#C=[],this.#O=0}get data(){return hi(this.#C)}get length(){return this.#O}#U(n){return this.#C.push(n),this.#O+=n.length,n.length}appendWriter(n){return this.#U(si(n.data))}writeBytes(n){let e=si(n);const t=e.length%Us;return t&&(e=si(hi([e,Fs.slice(t)]))),this.#U(e)}writeValue(n){return this.#U(Vs(n))}writeUpdatableValue(){const n=this.#C.length;return this.#C.push(Fs),this.#O+=Us,e=>{this.#C[n]=Vs(e)}}}class $s{allowLoose;#C;#F;#j;#L;#D;constructor(n,e,t){Jo(this,{allowLoose:!!e}),this.#C=si(n),this.#j=0,this.#L=null,this.#D=null!=t?t:1024,this.#F=0}get data(){return di(this.#C)}get dataLength(){return this.#C.length}get consumed(){return this.#F}get bytes(){return new Uint8Array(this.#C)}#M(n){if(this.#L)return this.#L.#M(n);this.#j+=n,Xo(this.#D<1||this.#j<=this.#D*this.dataLength,`compressed ABI data exceeds inflation ratio of ${this.#D} ( see: https://github.com/ethers-io/ethers.js/issues/4537 )`,"BUFFER_OVERRUN",{buffer:si(this.#C),offset:this.#F,length:n,info:{bytesRead:this.#j,dataLength:this.dataLength}})}#G(n,e,t){let r=Math.ceil(e/Us)*Us;return this.#F+r>this.#C.length&&(this.allowLoose&&t&&this.#F+e<=this.#C.length?r=e:Xo(!1,"data out-of-bounds","BUFFER_OVERRUN",{buffer:si(this.#C),length:this.#C.length,offset:this.#F+r})),this.#C.slice(this.#F,this.#F+r)}subReader(n){const e=new $s(this.#C.slice(this.#F+n),this.allowLoose,this.#D);return e.#L=this,e}readBytes(n,e){let t=this.#G(0,n,!!e);return this.#M(n),this.#F+=t.length,t.slice(0,n)}readValue(){return zi(this.readBytes(Us))}readIndex(){return Si(this.readBytes(Us))}}function Ws(n){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Wrong positive integer: ${n}`)}function Zs(n,...e){if(!(n instanceof Uint8Array))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(n.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${n.length}`)}function Ys(n){if("function"!=typeof n||"function"!=typeof n.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");Ws(n.outputLen),Ws(n.blockLen)}function Xs(n,e=!0){if(n.destroyed)throw new Error("Hash instance has been destroyed");if(e&&n.finished)throw new Error("Hash#digest() has already been called")}function nc(n,e){Zs(n);const t=e.outputLen;if(n.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}const ec="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,tc=n=>n instanceof Uint8Array,rc=n=>new Uint32Array(n.buffer,n.byteOffset,Math.floor(n.byteLength/4)),ac=n=>new DataView(n.buffer,n.byteOffset,n.byteLength),oc=(n,e)=>n<<32-e|n>>>e;
4
- /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");const ic=async()=>{};async function sc(n,e,t){let r=Date.now();for(let a=0;a<n;a++){t(a);const n=Date.now()-r;n>=0&&n<e||(await ic(),r+=n)}}function cc(n){if("string"==typeof n&&(n=function(n){if("string"!=typeof n)throw new Error("utf8ToBytes expected string, got "+typeof n);return new Uint8Array((new TextEncoder).encode(n))}(n)),!tc(n))throw new Error("expected Uint8Array, got "+typeof n);return n}class lc{clone(){return this._cloneInto()}}const uc={}.toString;function dc(n,e){if(void 0!==e&&"[object Object]"!==uc.call(e))throw new Error("Options should be object or undefined");return Object.assign(n,e)}function hc(n){const e=e=>n().update(cc(e)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function pc(n=32){if(ec&&"function"==typeof ec.getRandomValues)return ec.getRandomValues(new Uint8Array(n));throw new Error("crypto.getRandomValues must be defined")}class fc extends lc{constructor(n,e){super(),this.finished=!1,this.destroyed=!1,Ys(n);const t=cc(e);if(this.iHash=n.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,a=new Uint8Array(r);a.set(t.length>r?n.create().update(t).digest():t);for(let n=0;n<a.length;n++)a[n]^=54;this.iHash.update(a),this.oHash=n.create();for(let n=0;n<a.length;n++)a[n]^=106;this.oHash.update(a),a.fill(0)}update(n){return Xs(this),this.iHash.update(n),this}digestInto(n){Xs(this),Zs(n,this.outputLen),this.finished=!0,this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const n=new Uint8Array(this.oHash.outputLen);return this.digestInto(n),n}_cloneInto(n){n||(n=Object.create(Object.getPrototypeOf(this),{}));const{oHash:e,iHash:t,finished:r,destroyed:a,blockLen:o,outputLen:i}=this;return n.finished=r,n.destroyed=a,n.blockLen=o,n.outputLen=i,n.oHash=e._cloneInto(n.oHash),n.iHash=t._cloneInto(n.iHash),n}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const gc=(n,e,t)=>new fc(n,e).update(t).digest();function mc(n,e,t,r){Ys(n);const a=dc({dkLen:32,asyncTick:10},r),{c:o,dkLen:i,asyncTick:s}=a;if(Ws(o),Ws(i),Ws(s),o<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const c=cc(e),l=cc(t),u=new Uint8Array(i),d=gc.create(n,c),h=d._cloneInto().update(l);return{c:o,dkLen:i,asyncTick:s,DK:u,PRF:d,PRFSalt:h}}function bc(n,e,t,r){const{c:a,dkLen:o,DK:i,PRF:s,PRFSalt:c}=mc(n,e,t,r);let l;const u=new Uint8Array(4),d=ac(u),h=new Uint8Array(s.outputLen);for(let n=1,e=0;e<o;n++,e+=s.outputLen){const t=i.subarray(e,e+s.outputLen);d.setInt32(0,n,!1),(l=c._cloneInto(l)).update(u).digestInto(h),t.set(h.subarray(0,t.length));for(let n=1;n<a;n++){s._cloneInto(l).update(h).digestInto(h);for(let n=0;n<t.length;n++)t[n]^=h[n]}}return function(n,e,t,r,a){return n.destroy(),e.destroy(),r&&r.destroy(),a.fill(0),t}(s,c,i,l,h)}gc.create=(n,e)=>new fc(n,e);class yc extends lc{constructor(n,e,t,r){super(),this.blockLen=n,this.outputLen=e,this.padOffset=t,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(n),this.view=ac(this.buffer)}update(n){Xs(this);const{view:e,buffer:t,blockLen:r}=this,a=(n=cc(n)).length;for(let o=0;o<a;){const i=Math.min(r-this.pos,a-o);if(i===r){const e=ac(n);for(;r<=a-o;o+=r)this.process(e,o);continue}t.set(n.subarray(o,o+i),this.pos),this.pos+=i,o+=i,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=n.length,this.roundClean(),this}digestInto(n){Xs(this),nc(n,this),this.finished=!0;const{buffer:e,view:t,blockLen:r,isLE:a}=this;let{pos:o}=this;e[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>r-o&&(this.process(t,0),o=0);for(let n=o;n<r;n++)e[n]=0;!function(n,e,t,r){if("function"==typeof n.setBigUint64)return n.setBigUint64(e,t,r);const a=BigInt(32),o=BigInt(4294967295),i=Number(t>>a&o),s=Number(t&o),c=r?4:0,l=r?0:4;n.setUint32(e+c,i,r),n.setUint32(e+l,s,r)}(t,r-8,BigInt(8*this.length),a),this.process(t,0);const i=ac(n),s=this.outputLen;if(s%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const c=s/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let n=0;n<c;n++)i.setUint32(4*n,l[n],a)}digest(){const{buffer:n,outputLen:e}=this;this.digestInto(n);const t=n.slice(0,e);return this.destroy(),t}_cloneInto(n){n||(n=new this.constructor),n.set(...this.get());const{blockLen:e,buffer:t,length:r,finished:a,destroyed:o,pos:i}=this;return n.length=r,n.pos=i,n.finished=a,n.destroyed=o,r%e&&n.buffer.set(t),n}}const vc=(n,e,t)=>n&e^~n&t,wc=(n,e,t)=>n&e^n&t^e&t,kc=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ac=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ec=new Uint32Array(64);class xc extends yc{constructor(){super(64,32,8,!1),this.A=0|Ac[0],this.B=0|Ac[1],this.C=0|Ac[2],this.D=0|Ac[3],this.E=0|Ac[4],this.F=0|Ac[5],this.G=0|Ac[6],this.H=0|Ac[7]}get(){const{A:n,B:e,C:t,D:r,E:a,F:o,G:i,H:s}=this;return[n,e,t,r,a,o,i,s]}set(n,e,t,r,a,o,i,s){this.A=0|n,this.B=0|e,this.C=0|t,this.D=0|r,this.E=0|a,this.F=0|o,this.G=0|i,this.H=0|s}process(n,e){for(let t=0;t<16;t++,e+=4)Ec[t]=n.getUint32(e,!1);for(let n=16;n<64;n++){const e=Ec[n-15],t=Ec[n-2],r=oc(e,7)^oc(e,18)^e>>>3,a=oc(t,17)^oc(t,19)^t>>>10;Ec[n]=a+Ec[n-7]+r+Ec[n-16]|0}let{A:t,B:r,C:a,D:o,E:i,F:s,G:c,H:l}=this;for(let n=0;n<64;n++){const e=l+(oc(i,6)^oc(i,11)^oc(i,25))+vc(i,s,c)+kc[n]+Ec[n]|0,u=(oc(t,2)^oc(t,13)^oc(t,22))+wc(t,r,a)|0;l=c,c=s,s=i,i=o+e|0,o=a,a=r,r=t,t=e+u|0}t=t+this.A|0,r=r+this.B|0,a=a+this.C|0,o=o+this.D|0,i=i+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(t,r,a,o,i,s,c,l)}roundClean(){Ec.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Pc=hc(()=>new xc),Ic=BigInt(2**32-1),Nc=BigInt(32);function zc(n,e=!1){return e?{h:Number(n&Ic),l:Number(n>>Nc&Ic)}:{h:0|Number(n>>Nc&Ic),l:0|Number(n&Ic)}}function Rc(n,e=!1){let t=new Uint32Array(n.length),r=new Uint32Array(n.length);for(let a=0;a<n.length;a++){const{h:o,l:i}=zc(n[a],e);[t[a],r[a]]=[o,i]}return[t,r]}const Sc=(n,e,t)=>n<<t|e>>>32-t,Tc=(n,e,t)=>e<<t|n>>>32-t,Bc=(n,e,t)=>e<<t-32|n>>>64-t,Cc=(n,e,t)=>n<<t-32|e>>>64-t;var Oc={fromBig:zc,split:Rc,toBig:(n,e)=>BigInt(n>>>0)<<Nc|BigInt(e>>>0),shrSH:(n,e,t)=>n>>>t,shrSL:(n,e,t)=>n<<32-t|e>>>t,rotrSH:(n,e,t)=>n>>>t|e<<32-t,rotrSL:(n,e,t)=>n<<32-t|e>>>t,rotrBH:(n,e,t)=>n<<64-t|e>>>t-32,rotrBL:(n,e,t)=>n>>>t-32|e<<64-t,rotr32H:(n,e)=>e,rotr32L:(n,e)=>n,rotlSH:Sc,rotlSL:Tc,rotlBH:Bc,rotlBL:Cc,add:function(n,e,t,r){const a=(e>>>0)+(r>>>0);return{h:n+t+(a/2**32|0)|0,l:0|a}},add3L:(n,e,t)=>(n>>>0)+(e>>>0)+(t>>>0),add3H:(n,e,t,r)=>e+t+r+(n/2**32|0)|0,add4L:(n,e,t,r)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0),add4H:(n,e,t,r,a)=>e+t+r+a+(n/2**32|0)|0,add5H:(n,e,t,r,a,o)=>e+t+r+a+o+(n/2**32|0)|0,add5L:(n,e,t,r,a)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0)+(a>>>0)};const[Uc,Fc]=(()=>Oc.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(n=>BigInt(n))))(),jc=new Uint32Array(80),Lc=new Uint32Array(80);class Dc extends yc{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:n,Al:e,Bh:t,Bl:r,Ch:a,Cl:o,Dh:i,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:h,Gl:p,Hh:f,Hl:g}=this;return[n,e,t,r,a,o,i,s,c,l,u,d,h,p,f,g]}set(n,e,t,r,a,o,i,s,c,l,u,d,h,p,f,g){this.Ah=0|n,this.Al=0|e,this.Bh=0|t,this.Bl=0|r,this.Ch=0|a,this.Cl=0|o,this.Dh=0|i,this.Dl=0|s,this.Eh=0|c,this.El=0|l,this.Fh=0|u,this.Fl=0|d,this.Gh=0|h,this.Gl=0|p,this.Hh=0|f,this.Hl=0|g}process(n,e){for(let t=0;t<16;t++,e+=4)jc[t]=n.getUint32(e),Lc[t]=n.getUint32(e+=4);for(let n=16;n<80;n++){const e=0|jc[n-15],t=0|Lc[n-15],r=Oc.rotrSH(e,t,1)^Oc.rotrSH(e,t,8)^Oc.shrSH(e,t,7),a=Oc.rotrSL(e,t,1)^Oc.rotrSL(e,t,8)^Oc.shrSL(e,t,7),o=0|jc[n-2],i=0|Lc[n-2],s=Oc.rotrSH(o,i,19)^Oc.rotrBH(o,i,61)^Oc.shrSH(o,i,6),c=Oc.rotrSL(o,i,19)^Oc.rotrBL(o,i,61)^Oc.shrSL(o,i,6),l=Oc.add4L(a,c,Lc[n-7],Lc[n-16]),u=Oc.add4H(l,r,s,jc[n-7],jc[n-16]);jc[n]=0|u,Lc[n]=0|l}let{Ah:t,Al:r,Bh:a,Bl:o,Ch:i,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:h,Fl:p,Gh:f,Gl:g,Hh:m,Hl:b}=this;for(let n=0;n<80;n++){const e=Oc.rotrSH(u,d,14)^Oc.rotrSH(u,d,18)^Oc.rotrBH(u,d,41),y=Oc.rotrSL(u,d,14)^Oc.rotrSL(u,d,18)^Oc.rotrBL(u,d,41),v=u&h^~u&f,w=d&p^~d&g,k=Oc.add5L(b,y,w,Fc[n],Lc[n]),A=Oc.add5H(k,m,e,v,Uc[n],jc[n]),E=0|k,x=Oc.rotrSH(t,r,28)^Oc.rotrBH(t,r,34)^Oc.rotrBH(t,r,39),P=Oc.rotrSL(t,r,28)^Oc.rotrBL(t,r,34)^Oc.rotrBL(t,r,39),I=t&a^t&i^a&i,N=r&o^r&s^o&s;m=0|f,b=0|g,f=0|h,g=0|p,h=0|u,p=0|d,({h:u,l:d}=Oc.add(0|c,0|l,0|A,0|E)),c=0|i,l=0|s,i=0|a,s=0|o,a=0|t,o=0|r;const z=Oc.add3L(E,P,N);t=Oc.add3H(z,A,x,I),r=0|z}({h:t,l:r}=Oc.add(0|this.Ah,0|this.Al,0|t,0|r)),({h:a,l:o}=Oc.add(0|this.Bh,0|this.Bl,0|a,0|o)),({h:i,l:s}=Oc.add(0|this.Ch,0|this.Cl,0|i,0|s)),({h:c,l:l}=Oc.add(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:d}=Oc.add(0|this.Eh,0|this.El,0|u,0|d)),({h:h,l:p}=Oc.add(0|this.Fh,0|this.Fl,0|h,0|p)),({h:f,l:g}=Oc.add(0|this.Gh,0|this.Gl,0|f,0|g)),({h:m,l:b}=Oc.add(0|this.Hh,0|this.Hl,0|m,0|b)),this.set(t,r,a,o,i,s,c,l,u,d,h,p,f,g,m,b)}roundClean(){jc.fill(0),Lc.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Mc=hc(()=>new Dc);const Gc=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}(),qc=Gc.crypto||Gc.msCrypto;function Hc(n){switch(n){case"sha256":return Pc.create();case"sha512":return Mc.create()}ni(!1,"invalid hashing algorithm name","algorithm",n)}let Kc=!1;const _c=function(n,e,t){return function(n,e){const t={sha256:Pc,sha512:Mc}[n];return ni(null!=t,"invalid hmac algorithm","algorithm",n),gc.create(t,e)}(n,e).update(t).digest()};let Vc=_c;function Qc(n,e,t){const r=ii(e,"key"),a=ii(t,"data");return di(Vc(n,r,a))}Qc._=_c,Qc.lock=function(){Kc=!0},Qc.register=function(n){if(Kc)throw new Error("computeHmac is locked");Vc=n},Object.freeze(Qc);const[Jc,$c,Wc]=[[],[],[]],Zc=BigInt(0),Yc=BigInt(1),Xc=BigInt(2),nl=BigInt(7),el=BigInt(256),tl=BigInt(113);for(let n=0,e=Yc,t=1,r=0;n<24;n++){[t,r]=[r,(2*t+3*r)%5],Jc.push(2*(5*r+t)),$c.push((n+1)*(n+2)/2%64);let a=Zc;for(let n=0;n<7;n++)e=(e<<Yc^(e>>nl)*tl)%el,e&Xc&&(a^=Yc<<(Yc<<BigInt(n))-Yc);Wc.push(a)}const[rl,al]=Rc(Wc,!0),ol=(n,e,t)=>t>32?Bc(n,e,t):Sc(n,e,t),il=(n,e,t)=>t>32?Cc(n,e,t):Tc(n,e,t);class sl extends lc{constructor(n,e,t,r=!1,a=24){if(super(),this.blockLen=n,this.suffix=e,this.outputLen=t,this.enableXOF=r,this.rounds=a,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,Ws(t),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=rc(this.state)}keccak(){!function(n,e=24){const t=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let e=0;e<10;e++)t[e]=n[e]^n[e+10]^n[e+20]^n[e+30]^n[e+40];for(let e=0;e<10;e+=2){const r=(e+8)%10,a=(e+2)%10,o=t[a],i=t[a+1],s=ol(o,i,1)^t[r],c=il(o,i,1)^t[r+1];for(let t=0;t<50;t+=10)n[e+t]^=s,n[e+t+1]^=c}let e=n[2],a=n[3];for(let t=0;t<24;t++){const r=$c[t],o=ol(e,a,r),i=il(e,a,r),s=Jc[t];e=n[s],a=n[s+1],n[s]=o,n[s+1]=i}for(let e=0;e<50;e+=10){for(let r=0;r<10;r++)t[r]=n[e+r];for(let r=0;r<10;r++)n[e+r]^=~t[(r+2)%10]&t[(r+4)%10]}n[0]^=rl[r],n[1]^=al[r]}t.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(n){Xs(this);const{blockLen:e,state:t}=this,r=(n=cc(n)).length;for(let a=0;a<r;){const o=Math.min(e-this.pos,r-a);for(let e=0;e<o;e++)t[this.pos++]^=n[a++];this.pos===e&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:n,suffix:e,pos:t,blockLen:r}=this;n[t]^=e,128&e&&t===r-1&&this.keccak(),n[r-1]^=128,this.keccak()}writeInto(n){Xs(this,!1),Zs(n),this.finish();const e=this.state,{blockLen:t}=this;for(let r=0,a=n.length;r<a;){this.posOut>=t&&this.keccak();const o=Math.min(t-this.posOut,a-r);n.set(e.subarray(this.posOut,this.posOut+o),r),this.posOut+=o,r+=o}return n}xofInto(n){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(n)}xof(n){return Ws(n),this.xofInto(new Uint8Array(n))}digestInto(n){if(nc(n,this),this.finished)throw new Error("digest() was already called");return this.writeInto(n),this.destroy(),n}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(n){const{blockLen:e,suffix:t,outputLen:r,rounds:a,enableXOF:o}=this;return n||(n=new sl(e,t,r,o,a)),n.state32.set(this.state32),n.pos=this.pos,n.posOut=this.posOut,n.finished=this.finished,n.rounds=a,n.suffix=t,n.outputLen=r,n.enableXOF=o,n.destroyed=this.destroyed,n}}const cl=((n,e,t)=>hc(()=>new sl(e,n,t)))(1,136,32);let ll=!1;const ul=function(n){return cl(n)};let dl=ul;function hl(n){const e=ii(n,"data");return di(dl(e))}hl._=ul,hl.lock=function(){ll=!0},hl.register=function(n){if(ll)throw new TypeError("keccak256 is locked");dl=n},Object.freeze(hl);const pl=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),fl=Uint8Array.from({length:16},(n,e)=>e);let gl=[fl],ml=[fl.map(n=>(9*n+5)%16)];for(let n=0;n<4;n++)for(let e of[gl,ml])e.push(e[n].map(n=>pl[n]));const bl=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(n=>new Uint8Array(n)),yl=gl.map((n,e)=>n.map(n=>bl[e][n])),vl=ml.map((n,e)=>n.map(n=>bl[e][n])),wl=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),kl=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),Al=(n,e)=>n<<e|n>>>32-e;function El(n,e,t,r){return 0===n?e^t^r:1===n?e&t|~e&r:2===n?(e|~t)^r:3===n?e&r|t&~r:e^(t|~r)}const xl=new Uint32Array(16);class Pl extends yc{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:n,h1:e,h2:t,h3:r,h4:a}=this;return[n,e,t,r,a]}set(n,e,t,r,a){this.h0=0|n,this.h1=0|e,this.h2=0|t,this.h3=0|r,this.h4=0|a}process(n,e){for(let t=0;t<16;t++,e+=4)xl[t]=n.getUint32(e,!0);let t=0|this.h0,r=t,a=0|this.h1,o=a,i=0|this.h2,s=i,c=0|this.h3,l=c,u=0|this.h4,d=u;for(let n=0;n<5;n++){const e=4-n,h=wl[n],p=kl[n],f=gl[n],g=ml[n],m=yl[n],b=vl[n];for(let e=0;e<16;e++){const r=Al(t+El(n,a,i,c)+xl[f[e]]+h,m[e])+u|0;t=u,u=c,c=0|Al(i,10),i=a,a=r}for(let n=0;n<16;n++){const t=Al(r+El(e,o,s,l)+xl[g[n]]+p,b[n])+d|0;r=d,d=l,l=0|Al(s,10),s=o,o=t}}this.set(this.h1+i+l|0,this.h2+c+d|0,this.h3+u+r|0,this.h4+t+o|0,this.h0+a+s|0)}roundClean(){xl.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const Il=hc(()=>new Pl);let Nl=!1;const zl=function(n){return Il(n)};let Rl=zl;function Sl(n){const e=ii(n,"data");return di(Rl(e))}Sl._=zl,Sl.lock=function(){Nl=!0},Sl.register=function(n){if(Nl)throw new TypeError("ripemd160 is locked");Rl=n},Object.freeze(Sl);let Tl=!1;const Bl=function(n,e,t,r,a){return function(n,e,t,r,a){const o={sha256:Pc,sha512:Mc}[a];return ni(null!=o,"invalid pbkdf2 algorithm","algorithm",a),bc(o,n,e,{c:t,dkLen:r})}(n,e,t,r,a)};let Cl=Bl;function Ol(n,e,t,r,a){const o=ii(n,"password"),i=ii(e,"salt");return di(Cl(o,i,t,r,a))}Ol._=Bl,Ol.lock=function(){Tl=!0},Ol.register=function(n){if(Tl)throw new Error("pbkdf2 is locked");Cl=n},Object.freeze(Ol);let Ul=!1;const Fl=function(n){return new Uint8Array(function(n){Xo(null!=qc,"platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"}),ni(Number.isInteger(n)&&n>0&&n<=1024,"invalid length","length",n);const e=new Uint8Array(n);return qc.getRandomValues(e),e}(n))};let jl=Fl;function Ll(n){return jl(n)}Ll._=Fl,Ll.lock=function(){Ul=!0},Ll.register=function(n){if(Ul)throw new Error("randomBytes is locked");jl=n},Object.freeze(Ll);const Dl=(n,e)=>n<<e|n>>>32-e;function Ml(n,e,t,r,a,o){let i=n[e++]^t[r++],s=n[e++]^t[r++],c=n[e++]^t[r++],l=n[e++]^t[r++],u=n[e++]^t[r++],d=n[e++]^t[r++],h=n[e++]^t[r++],p=n[e++]^t[r++],f=n[e++]^t[r++],g=n[e++]^t[r++],m=n[e++]^t[r++],b=n[e++]^t[r++],y=n[e++]^t[r++],v=n[e++]^t[r++],w=n[e++]^t[r++],k=n[e++]^t[r++],A=i,E=s,x=c,P=l,I=u,N=d,z=h,R=p,S=f,T=g,B=m,C=b,O=y,U=v,F=w,j=k;for(let n=0;n<8;n+=2)I^=Dl(A+O|0,7),S^=Dl(I+A|0,9),O^=Dl(S+I|0,13),A^=Dl(O+S|0,18),T^=Dl(N+E|0,7),U^=Dl(T+N|0,9),E^=Dl(U+T|0,13),N^=Dl(E+U|0,18),F^=Dl(B+z|0,7),x^=Dl(F+B|0,9),z^=Dl(x+F|0,13),B^=Dl(z+x|0,18),P^=Dl(j+C|0,7),R^=Dl(P+j|0,9),C^=Dl(R+P|0,13),j^=Dl(C+R|0,18),E^=Dl(A+P|0,7),x^=Dl(E+A|0,9),P^=Dl(x+E|0,13),A^=Dl(P+x|0,18),z^=Dl(N+I|0,7),R^=Dl(z+N|0,9),I^=Dl(R+z|0,13),N^=Dl(I+R|0,18),C^=Dl(B+T|0,7),S^=Dl(C+B|0,9),T^=Dl(S+C|0,13),B^=Dl(T+S|0,18),O^=Dl(j+F|0,7),U^=Dl(O+j|0,9),F^=Dl(U+O|0,13),j^=Dl(F+U|0,18);a[o++]=i+A|0,a[o++]=s+E|0,a[o++]=c+x|0,a[o++]=l+P|0,a[o++]=u+I|0,a[o++]=d+N|0,a[o++]=h+z|0,a[o++]=p+R|0,a[o++]=f+S|0,a[o++]=g+T|0,a[o++]=m+B|0,a[o++]=b+C|0,a[o++]=y+O|0,a[o++]=v+U|0,a[o++]=w+F|0,a[o++]=k+j|0}function Gl(n,e,t,r,a){let o=r+0,i=r+16*a;for(let r=0;r<16;r++)t[i+r]=n[e+16*(2*a-1)+r];for(let r=0;r<a;r++,o+=16,e+=16)Ml(t,i,n,e,t,o),r>0&&(i+=16),Ml(t,o,n,e+=16,t,i)}function ql(n,e,t){const r=dc({dkLen:32,asyncTick:10,maxmem:1073742848},t),{N:a,r:o,p:i,dkLen:s,asyncTick:c,maxmem:l,onProgress:u}=r;if(Ws(a),Ws(o),Ws(i),Ws(s),Ws(c),Ws(l),void 0!==u&&"function"!=typeof u)throw new Error("progressCb should be function");const d=128*o,h=d/4;if(a<=1||a&a-1||a>=2**(d/8)||a>2**32)throw new Error("Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32");if(i<0||i>137438953440/d)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(s<0||s>137438953440)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const p=d*(a+i);if(p>l)throw new Error(`Scrypt: parameters too large, ${p} (128 * r * (N + p)) > ${l} (maxmem)`);const f=bc(Pc,n,e,{c:1,dkLen:d*i}),g=rc(f),m=rc(new Uint8Array(d*a)),b=rc(new Uint8Array(d));let y=()=>{};if(u){const n=2*a*i,e=Math.max(Math.floor(n/1e4),1);let t=0;y=()=>{t++,!u||t%e&&t!==n||u(t/n)}}return{N:a,r:o,p:i,dkLen:s,blockSize32:h,V:m,B32:g,B:f,tmp:b,blockMixCb:y,asyncTick:c}}function Hl(n,e,t,r,a){const o=bc(Pc,n,t,{c:1,dkLen:e});return t.fill(0),r.fill(0),a.fill(0),o}let Kl=!1,_l=!1;const Vl=async function(n,e,t,r,a,o,i){return await async function(n,e,t){const{N:r,r:a,p:o,dkLen:i,blockSize32:s,V:c,B32:l,B:u,tmp:d,blockMixCb:h,asyncTick:p}=ql(n,e,t);for(let n=0;n<o;n++){const e=s*n;for(let n=0;n<s;n++)c[n]=l[e+n];let t=0;await sc(r-1,p,()=>{Gl(c,t,c,t+=s,a),h()}),Gl(c,(r-1)*s,l,e,a),h(),await sc(r,p,()=>{const n=l[e+s-16]%r;for(let t=0;t<s;t++)d[t]=l[e+t]^c[n*s+t];Gl(d,0,l,e,a),h()})}return Hl(n,i,u,c,d)}(n,e,{N:t,r:r,p:a,dkLen:o,onProgress:i})},Ql=function(n,e,t,r,a,o){return function(n,e,t){const{N:r,r:a,p:o,dkLen:i,blockSize32:s,V:c,B32:l,B:u,tmp:d,blockMixCb:h}=ql(n,e,t);for(let n=0;n<o;n++){const e=s*n;for(let n=0;n<s;n++)c[n]=l[e+n];for(let n=0,e=0;n<r-1;n++)Gl(c,e,c,e+=s,a),h();Gl(c,(r-1)*s,l,e,a),h();for(let n=0;n<r;n++){const n=l[e+s-16]%r;for(let t=0;t<s;t++)d[t]=l[e+t]^c[n*s+t];Gl(d,0,l,e,a),h()}}return Hl(n,i,u,c,d)}(n,e,{N:t,r:r,p:a,dkLen:o})};let Jl=Vl,$l=Ql;async function Wl(n,e,t,r,a,o,i){const s=ii(n,"passwd"),c=ii(e,"salt");return di(await Jl(s,c,t,r,a,o,i))}function Zl(n,e,t,r,a,o){const i=ii(n,"passwd"),s=ii(e,"salt");return di($l(i,s,t,r,a,o))}Wl._=Vl,Wl.lock=function(){_l=!0},Wl.register=function(n){if(_l)throw new Error("scrypt is locked");Jl=n},Object.freeze(Wl),Zl._=Ql,Zl.lock=function(){Kl=!0},Zl.register=function(n){if(Kl)throw new Error("scryptSync is locked");$l=n},Object.freeze(Zl);const Yl=function(n){return Hc("sha256").update(n).digest()},Xl=function(n){return Hc("sha512").update(n).digest()};let nu=Yl,eu=Xl,tu=!1,ru=!1;function au(n){const e=ii(n,"data");return di(nu(e))}function ou(n){const e=ii(n,"data");return di(eu(e))}au._=Yl,au.lock=function(){tu=!0},au.register=function(n){if(tu)throw new Error("sha256 is locked");nu=n},Object.freeze(au),ou._=Xl,ou.lock=function(){ru=!0},ou.register=function(n){if(ru)throw new Error("sha512 is locked");eu=n},Object.freeze(au);
5
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
6
- const iu=BigInt(0),su=BigInt(1),cu=BigInt(2),lu=n=>n instanceof Uint8Array,uu=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function du(n){if(!lu(n))throw new Error("Uint8Array expected");let e="";for(let t=0;t<n.length;t++)e+=uu[n[t]];return e}function hu(n){const e=n.toString(16);return 1&e.length?`0${e}`:e}function pu(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);return BigInt(""===n?"0":`0x${n}`)}function fu(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);const e=n.length;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const t=new Uint8Array(e/2);for(let e=0;e<t.length;e++){const r=2*e,a=n.slice(r,r+2),o=Number.parseInt(a,16);if(Number.isNaN(o)||o<0)throw new Error("Invalid byte sequence");t[e]=o}return t}function gu(n){return pu(du(n))}function mu(n){if(!lu(n))throw new Error("Uint8Array expected");return pu(du(Uint8Array.from(n).reverse()))}function bu(n,e){return fu(n.toString(16).padStart(2*e,"0"))}function yu(n,e){return bu(n,e).reverse()}function vu(n,e,t){let r;if("string"==typeof e)try{r=fu(e)}catch(t){throw new Error(`${n} must be valid hex string, got "${e}". Cause: ${t}`)}else{if(!lu(e))throw new Error(`${n} must be hex string or Uint8Array`);r=Uint8Array.from(e)}const a=r.length;if("number"==typeof t&&a!==t)throw new Error(`${n} expected ${t} bytes, got ${a}`);return r}function wu(...n){const e=new Uint8Array(n.reduce((n,e)=>n+e.length,0));let t=0;return n.forEach(n=>{if(!lu(n))throw new Error("Uint8Array expected");e.set(n,t),t+=n.length}),e}const ku=n=>(cu<<BigInt(n-1))-su,Au=n=>new Uint8Array(n),Eu=n=>Uint8Array.from(n);function xu(n,e,t){if("number"!=typeof n||n<2)throw new Error("hashLen must be a number");if("number"!=typeof e||e<2)throw new Error("qByteLen must be a number");if("function"!=typeof t)throw new Error("hmacFn must be a function");let r=Au(n),a=Au(n),o=0;const i=()=>{r.fill(1),a.fill(0),o=0},s=(...n)=>t(a,r,...n),c=(n=Au())=>{a=s(Eu([0]),n),r=s(),0!==n.length&&(a=s(Eu([1]),n),r=s())},l=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let n=0;const t=[];for(;n<e;){r=s();const e=r.slice();t.push(e),n+=r.length}return wu(...t)};return(n,e)=>{let t;for(i(),c(n);!(t=e(l()));)c();return i(),t}}const Pu={bigint:n=>"bigint"==typeof n,function:n=>"function"==typeof n,boolean:n=>"boolean"==typeof n,string:n=>"string"==typeof n,stringOrUint8Array:n=>"string"==typeof n||n instanceof Uint8Array,isSafeInteger:n=>Number.isSafeInteger(n),array:n=>Array.isArray(n),field:(n,e)=>e.Fp.isValid(n),hash:n=>"function"==typeof n&&Number.isSafeInteger(n.outputLen)};function Iu(n,e,t={}){const r=(e,t,r)=>{const a=Pu[t];if("function"!=typeof a)throw new Error(`Invalid validator "${t}", expected function`);const o=n[e];if(!(r&&void 0===o||a(o,n)))throw new Error(`Invalid param ${String(e)}=${o} (${typeof o}), expected ${t}`)};for(const[n,t]of Object.entries(e))r(n,t,!1);for(const[n,e]of Object.entries(t))r(n,e,!0);return n}var Nu=Object.freeze({__proto__:null,bytesToHex:du,numberToHexUnpadded:hu,hexToNumber:pu,hexToBytes:fu,bytesToNumberBE:gu,bytesToNumberLE:mu,numberToBytesBE:bu,numberToBytesLE:yu,numberToVarBytesBE:function(n){return fu(hu(n))},ensureBytes:vu,concatBytes:wu,equalBytes:function(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0},utf8ToBytes:function(n){if("string"!=typeof n)throw new Error("utf8ToBytes expected string, got "+typeof n);return new Uint8Array((new TextEncoder).encode(n))},bitLen:function(n){let e;for(e=0;n>iu;n>>=su,e+=1);return e},bitGet:function(n,e){return n>>BigInt(e)&su},bitSet:(n,e,t)=>n|(t?su:iu)<<BigInt(e),bitMask:ku,createHmacDrbg:xu,validateObject:Iu});
7
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const zu=BigInt(0),Ru=BigInt(1),Su=BigInt(2),Tu=BigInt(3),Bu=BigInt(4),Cu=BigInt(5),Ou=BigInt(8);function Uu(n,e){const t=n%e;return t>=zu?t:e+t}function Fu(n,e,t){if(t<=zu||e<zu)throw new Error("Expected power/modulo > 0");if(t===Ru)return zu;let r=Ru;for(;e>zu;)e&Ru&&(r=r*n%t),n=n*n%t,e>>=Ru;return r}function ju(n,e,t){let r=n;for(;e-- >zu;)r*=r,r%=t;return r}function Lu(n,e){if(n===zu||e<=zu)throw new Error(`invert: expected positive integers, got n=${n} mod=${e}`);let t=Uu(n,e),r=e,a=zu,o=Ru;for(;t!==zu;){const n=r%t,e=a-o*(r/t);r=t,t=n,a=o,o=e}if(r!==Ru)throw new Error("invert: does not exist");return Uu(a,e)}function Du(n){if(n%Bu===Tu){const e=(n+Ru)/Bu;return function(n,t){const r=n.pow(t,e);if(!n.eql(n.sqr(r),t))throw new Error("Cannot find square root");return r}}if(n%Ou===Cu){const e=(n-Cu)/Ou;return function(n,t){const r=n.mul(t,Su),a=n.pow(r,e),o=n.mul(t,a),i=n.mul(n.mul(o,Su),a),s=n.mul(o,n.sub(i,n.ONE));if(!n.eql(n.sqr(s),t))throw new Error("Cannot find square root");return s}}return function(n){const e=(n-Ru)/Su;let t,r,a;for(t=n-Ru,r=0;t%Su===zu;t/=Su,r++);for(a=Su;a<n&&Fu(a,e,n)!==n-Ru;a++);if(1===r){const e=(n+Ru)/Bu;return function(n,t){const r=n.pow(t,e);if(!n.eql(n.sqr(r),t))throw new Error("Cannot find square root");return r}}const o=(t+Ru)/Su;return function(n,i){if(n.pow(i,e)===n.neg(n.ONE))throw new Error("Cannot find square root");let s=r,c=n.pow(n.mul(n.ONE,a),t),l=n.pow(i,o),u=n.pow(i,t);for(;!n.eql(u,n.ONE);){if(n.eql(u,n.ZERO))return n.ZERO;let e=1;for(let t=n.sqr(u);e<s&&!n.eql(t,n.ONE);e++)t=n.sqr(t);const t=n.pow(c,Ru<<BigInt(s-e-1));c=n.sqr(t),l=n.mul(l,t),u=n.mul(u,c),s=e}return l}}(n)}BigInt(9),BigInt(16);const Mu=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Gu(n,e){const t=void 0!==e?e:n.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}function qu(n){if("bigint"!=typeof n)throw new Error("field order must be bigint");const e=n.toString(2).length;return Math.ceil(e/8)}function Hu(n){const e=qu(n);return e+Math.ceil(e/2)}
8
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
9
- const Ku=BigInt(0),_u=BigInt(1);function Vu(n){return Iu(n.Fp,Mu.reduce((n,e)=>(n[e]="function",n),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),Iu(n,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Gu(n.n,n.nBitLength),...n,p:n.Fp.ORDER})}
10
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const{bytesToNumberBE:Qu,hexToBytes:Ju}=Nu,$u={Err:class extends Error{constructor(n=""){super(n)}},_parseInt(n){const{Err:e}=$u;if(n.length<2||2!==n[0])throw new e("Invalid signature integer tag");const t=n[1],r=n.subarray(2,t+2);if(!t||r.length!==t)throw new e("Invalid signature integer: wrong length");if(128&r[0])throw new e("Invalid signature integer: negative");if(0===r[0]&&!(128&r[1]))throw new e("Invalid signature integer: unnecessary leading zero");return{d:Qu(r),l:n.subarray(t+2)}},toSig(n){const{Err:e}=$u,t="string"==typeof n?Ju(n):n;if(!(t instanceof Uint8Array))throw new Error("ui8a expected");let r=t.length;if(r<2||48!=t[0])throw new e("Invalid signature tag");if(t[1]!==r-2)throw new e("Invalid signature: incorrect length");const{d:a,l:o}=$u._parseInt(t.subarray(2)),{d:i,l:s}=$u._parseInt(o);if(s.length)throw new e("Invalid signature: left bytes after parsing");return{r:a,s:i}},hexFromSig(n){const e=n=>8&Number.parseInt(n[0],16)?"00"+n:n,t=n=>{const e=n.toString(16);return 1&e.length?`0${e}`:e},r=e(t(n.s)),a=e(t(n.r)),o=r.length/2,i=a.length/2,s=t(o),c=t(i);return`30${t(i+o+4)}02${c}${a}02${s}${r}`}},Wu=BigInt(0),Zu=BigInt(1);BigInt(2);const Yu=BigInt(3);function Xu(n){const e=function(n){const e=Vu(n);Iu(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:t,Fp:r,a:a}=e;if(t){if(!r.eql(a,r.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if("object"!=typeof t||"bigint"!=typeof t.beta||"function"!=typeof t.splitScalar)throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}(n),{Fp:t}=e,r=e.toBytes||((n,e,r)=>{const a=e.toAffine();return wu(Uint8Array.from([4]),t.toBytes(a.x),t.toBytes(a.y))}),a=e.fromBytes||(n=>{const e=n.subarray(1);return{x:t.fromBytes(e.subarray(0,t.BYTES)),y:t.fromBytes(e.subarray(t.BYTES,2*t.BYTES))}});function o(n){const{a:r,b:a}=e,o=t.sqr(n),i=t.mul(o,n);return t.add(t.add(i,t.mul(n,r)),a)}if(!t.eql(t.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function i(n){return"bigint"==typeof n&&Wu<n&&n<e.n}function s(n){if(!i(n))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(n){const{allowedPrivateKeyLengths:t,nByteLength:r,wrapPrivateKey:a,n:o}=e;if(t&&"bigint"!=typeof n){if(n instanceof Uint8Array&&(n=du(n)),"string"!=typeof n||!t.includes(n.length))throw new Error("Invalid key");n=n.padStart(2*r,"0")}let i;try{i="bigint"==typeof n?n:gu(vu("private key",n,r))}catch(e){throw new Error(`private key must be ${r} bytes, hex or bigint, not ${typeof n}`)}return a&&(i=Uu(i,o)),s(i),i}const l=new Map;function u(n){if(!(n instanceof d))throw new Error("ProjectivePoint expected")}class d{constructor(n,e,r){if(this.px=n,this.py=e,this.pz=r,null==n||!t.isValid(n))throw new Error("x required");if(null==e||!t.isValid(e))throw new Error("y required");if(null==r||!t.isValid(r))throw new Error("z required")}static fromAffine(n){const{x:e,y:r}=n||{};if(!n||!t.isValid(e)||!t.isValid(r))throw new Error("invalid affine point");if(n instanceof d)throw new Error("projective point not allowed");const a=n=>t.eql(n,t.ZERO);return a(e)&&a(r)?d.ZERO:new d(e,r,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(n){const e=t.invertBatch(n.map(n=>n.pz));return n.map((n,t)=>n.toAffine(e[t])).map(d.fromAffine)}static fromHex(n){const e=d.fromAffine(a(vu("pointHex",n)));return e.assertValidity(),e}static fromPrivateKey(n){return d.BASE.multiply(c(n))}_setWindowSize(n){this._WINDOW_SIZE=n,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}const{x:n,y:r}=this.toAffine();if(!t.isValid(n)||!t.isValid(r))throw new Error("bad point: x or y not FE");const a=t.sqr(r),i=o(n);if(!t.eql(a,i))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){const{y:n}=this.toAffine();if(t.isOdd)return!t.isOdd(n);throw new Error("Field doesn't support isOdd")}equals(n){u(n);const{px:e,py:r,pz:a}=this,{px:o,py:i,pz:s}=n,c=t.eql(t.mul(e,s),t.mul(o,a)),l=t.eql(t.mul(r,s),t.mul(i,a));return c&&l}negate(){return new d(this.px,t.neg(this.py),this.pz)}double(){const{a:n,b:r}=e,a=t.mul(r,Yu),{px:o,py:i,pz:s}=this;let c=t.ZERO,l=t.ZERO,u=t.ZERO,h=t.mul(o,o),p=t.mul(i,i),f=t.mul(s,s),g=t.mul(o,i);return g=t.add(g,g),u=t.mul(o,s),u=t.add(u,u),c=t.mul(n,u),l=t.mul(a,f),l=t.add(c,l),c=t.sub(p,l),l=t.add(p,l),l=t.mul(c,l),c=t.mul(g,c),u=t.mul(a,u),f=t.mul(n,f),g=t.sub(h,f),g=t.mul(n,g),g=t.add(g,u),u=t.add(h,h),h=t.add(u,h),h=t.add(h,f),h=t.mul(h,g),l=t.add(l,h),f=t.mul(i,s),f=t.add(f,f),h=t.mul(f,g),c=t.sub(c,h),u=t.mul(f,p),u=t.add(u,u),u=t.add(u,u),new d(c,l,u)}add(n){u(n);const{px:r,py:a,pz:o}=this,{px:i,py:s,pz:c}=n;let l=t.ZERO,h=t.ZERO,p=t.ZERO;const f=e.a,g=t.mul(e.b,Yu);let m=t.mul(r,i),b=t.mul(a,s),y=t.mul(o,c),v=t.add(r,a),w=t.add(i,s);v=t.mul(v,w),w=t.add(m,b),v=t.sub(v,w),w=t.add(r,o);let k=t.add(i,c);return w=t.mul(w,k),k=t.add(m,y),w=t.sub(w,k),k=t.add(a,o),l=t.add(s,c),k=t.mul(k,l),l=t.add(b,y),k=t.sub(k,l),p=t.mul(f,w),l=t.mul(g,y),p=t.add(l,p),l=t.sub(b,p),p=t.add(b,p),h=t.mul(l,p),b=t.add(m,m),b=t.add(b,m),y=t.mul(f,y),w=t.mul(g,w),b=t.add(b,y),y=t.sub(m,y),y=t.mul(f,y),w=t.add(w,y),m=t.mul(b,w),h=t.add(h,m),m=t.mul(k,w),l=t.mul(v,l),l=t.sub(l,m),m=t.mul(v,b),p=t.mul(k,p),p=t.add(p,m),new d(l,h,p)}subtract(n){return this.add(n.negate())}is0(){return this.equals(d.ZERO)}wNAF(n){return p.wNAFCached(this,l,n,n=>{const e=t.invertBatch(n.map(n=>n.pz));return n.map((n,t)=>n.toAffine(e[t])).map(d.fromAffine)})}multiplyUnsafe(n){const r=d.ZERO;if(n===Wu)return r;if(s(n),n===Zu)return this;const{endo:a}=e;if(!a)return p.unsafeLadder(this,n);let{k1neg:o,k1:i,k2neg:c,k2:l}=a.splitScalar(n),u=r,h=r,f=this;for(;i>Wu||l>Wu;)i&Zu&&(u=u.add(f)),l&Zu&&(h=h.add(f)),f=f.double(),i>>=Zu,l>>=Zu;return o&&(u=u.negate()),c&&(h=h.negate()),h=new d(t.mul(h.px,a.beta),h.py,h.pz),u.add(h)}multiply(n){s(n);let r,a,o=n;const{endo:i}=e;if(i){const{k1neg:n,k1:e,k2neg:s,k2:c}=i.splitScalar(o);let{p:l,f:u}=this.wNAF(e),{p:h,f:f}=this.wNAF(c);l=p.constTimeNegate(n,l),h=p.constTimeNegate(s,h),h=new d(t.mul(h.px,i.beta),h.py,h.pz),r=l.add(h),a=u.add(f)}else{const{p:n,f:e}=this.wNAF(o);r=n,a=e}return d.normalizeZ([r,a])[0]}multiplyAndAddUnsafe(n,e,t){const r=d.BASE,a=(n,e)=>e!==Wu&&e!==Zu&&n.equals(r)?n.multiply(e):n.multiplyUnsafe(e),o=a(this,e).add(a(n,t));return o.is0()?void 0:o}toAffine(n){const{px:e,py:r,pz:a}=this,o=this.is0();null==n&&(n=o?t.ONE:t.inv(a));const i=t.mul(e,n),s=t.mul(r,n),c=t.mul(a,n);if(o)return{x:t.ZERO,y:t.ZERO};if(!t.eql(c,t.ONE))throw new Error("invZ was invalid");return{x:i,y:s}}isTorsionFree(){const{h:n,isTorsionFree:t}=e;if(n===Zu)return!0;if(t)return t(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:n,clearCofactor:t}=e;return n===Zu?this:t?t(d,this):this.multiplyUnsafe(e.h)}toRawBytes(n=!0){return this.assertValidity(),r(d,this,n)}toHex(n=!0){return du(this.toRawBytes(n))}}d.BASE=new d(e.Gx,e.Gy,t.ONE),d.ZERO=new d(t.ZERO,t.ONE,t.ZERO);const h=e.nBitLength,p=function(n,e){const t=(n,e)=>{const t=e.negate();return n?t:e},r=n=>({windows:Math.ceil(e/n)+1,windowSize:2**(n-1)});return{constTimeNegate:t,unsafeLadder(e,t){let r=n.ZERO,a=e;for(;t>Ku;)t&_u&&(r=r.add(a)),a=a.double(),t>>=_u;return r},precomputeWindow(n,e){const{windows:t,windowSize:a}=r(e),o=[];let i=n,s=i;for(let n=0;n<t;n++){s=i,o.push(s);for(let n=1;n<a;n++)s=s.add(i),o.push(s);i=s.double()}return o},wNAF(e,a,o){const{windows:i,windowSize:s}=r(e);let c=n.ZERO,l=n.BASE;const u=BigInt(2**e-1),d=2**e,h=BigInt(e);for(let n=0;n<i;n++){const e=n*s;let r=Number(o&u);o>>=h,r>s&&(r-=d,o+=_u);const i=e,p=e+Math.abs(r)-1,f=n%2!=0,g=r<0;0===r?l=l.add(t(f,a[i])):c=c.add(t(g,a[p]))}return{p:c,f:l}},wNAFCached(n,e,t,r){const a=n._WINDOW_SIZE||1;let o=e.get(n);return o||(o=this.precomputeWindow(n,a),1!==a&&e.set(n,r(o))),this.wNAF(a,o,t)}}}(d,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:d,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:i}}function nd(n){const e=function(n){const e=Vu(n);return Iu(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}(n),{Fp:t,n:r}=e,a=t.BYTES+1,o=2*t.BYTES+1;function i(n){return Uu(n,r)}function s(n){return Lu(n,r)}const{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:d}=Xu({...e,toBytes(n,e,r){const a=e.toAffine(),o=t.toBytes(a.x),i=wu;return r?i(Uint8Array.from([e.hasEvenY()?2:3]),o):i(Uint8Array.from([4]),o,t.toBytes(a.y))},fromBytes(n){const e=n.length,r=n[0],i=n.subarray(1);if(e!==a||2!==r&&3!==r){if(e===o&&4===r){return{x:t.fromBytes(i.subarray(0,t.BYTES)),y:t.fromBytes(i.subarray(t.BYTES,2*t.BYTES))}}throw new Error(`Point of length ${e} was invalid. Expected ${a} compressed bytes or ${o} uncompressed bytes`)}{const n=gu(i);if(!(Wu<(s=n)&&s<t.ORDER))throw new Error("Point is not on curve");const e=u(n);let a=t.sqrt(e);return!(1&~r)!==((a&Zu)===Zu)&&(a=t.neg(a)),{x:n,y:a}}var s}}),h=n=>du(bu(n,e.nByteLength));function p(n){return n>r>>Zu}const f=(n,e,t)=>gu(n.slice(e,t));class g{constructor(n,e,t){this.r=n,this.s=e,this.recovery=t,this.assertValidity()}static fromCompact(n){const t=e.nByteLength;return n=vu("compactSignature",n,2*t),new g(f(n,0,t),f(n,t,2*t))}static fromDER(n){const{r:e,s:t}=$u.toSig(vu("DER",n));return new g(e,t)}assertValidity(){if(!d(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!d(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(n){return new g(this.r,this.s,n)}recoverPublicKey(n){const{r:r,s:a,recovery:o}=this,l=v(vu("msgHash",n));if(null==o||![0,1,2,3].includes(o))throw new Error("recovery id invalid");const u=2===o||3===o?r+e.n:r;if(u>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");const d=1&o?"03":"02",p=c.fromHex(d+h(u)),f=s(u),g=i(-l*f),m=i(a*f),b=c.BASE.multiplyAndAddUnsafe(p,g,m);if(!b)throw new Error("point at infinify");return b.assertValidity(),b}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,i(-this.s),this.recovery):this}toDERRawBytes(){return fu(this.toDERHex())}toDERHex(){return $u.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return fu(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}const m={isValidPrivateKey(n){try{return l(n),!0}catch(n){return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{const n=Hu(e.n);return function(n,e,t=!1){const r=n.length,a=qu(e),o=Hu(e);if(r<16||r<o||r>1024)throw new Error(`expected ${o}-1024 bytes of input, got ${r}`);const i=Uu(t?gu(n):mu(n),e-Ru)+Ru;return t?yu(i,a):bu(i,a)}(e.randomBytes(n),e.n)},precompute:(n=8,e=c.BASE)=>(e._setWindowSize(n),e.multiply(BigInt(3)),e)};function b(n){const e=n instanceof Uint8Array,t="string"==typeof n,r=(e||t)&&n.length;return e?r===a||r===o:t?r===2*a||r===2*o:n instanceof c}const y=e.bits2int||function(n){const t=gu(n),r=8*n.length-e.nBitLength;return r>0?t>>BigInt(r):t},v=e.bits2int_modN||function(n){return i(y(n))},w=ku(e.nBitLength);function k(n){if("bigint"!=typeof n)throw new Error("bigint expected");if(!(Wu<=n&&n<w))throw new Error(`bigint expected < 2^${e.nBitLength}`);return bu(n,e.nByteLength)}function A(n,r,a=E){if(["recovered","canonical"].some(n=>n in a))throw new Error("sign() legacy options not supported");const{hash:o,randomBytes:u}=e;let{lowS:h,prehash:f,extraEntropy:m}=a;null==h&&(h=!0),n=vu("msgHash",n),f&&(n=vu("prehashed msgHash",o(n)));const b=v(n),w=l(r),A=[k(w),k(b)];if(null!=m){const n=!0===m?u(t.BYTES):m;A.push(vu("extraEntropy",n))}const x=wu(...A),P=b;return{seed:x,k2sig:function(n){const e=y(n);if(!d(e))return;const t=s(e),r=c.BASE.multiply(e).toAffine(),a=i(r.x);if(a===Wu)return;const o=i(t*i(P+a*w));if(o===Wu)return;let l=(r.x===a?0:2)|Number(r.y&Zu),u=o;return h&&p(o)&&(u=function(n){return p(n)?i(-n):n}(o),l^=1),new g(a,u,l)}}}const E={lowS:e.lowS,prehash:!1},x={lowS:e.lowS,prehash:!1};return c.BASE._setWindowSize(8),{CURVE:e,getPublicKey:function(n,e=!0){return c.fromPrivateKey(n).toRawBytes(e)},getSharedSecret:function(n,e,t=!0){if(b(n))throw new Error("first arg must be private key");if(!b(e))throw new Error("second arg must be public key");return c.fromHex(e).multiply(l(n)).toRawBytes(t)},sign:function(n,t,r=E){const{seed:a,k2sig:o}=A(n,t,r),i=e;return xu(i.hash.outputLen,i.nByteLength,i.hmac)(a,o)},verify:function(n,t,r,a=x){const o=n;if(t=vu("msgHash",t),r=vu("publicKey",r),"strict"in a)throw new Error("options.strict was renamed to lowS");const{lowS:l,prehash:u}=a;let d,h;try{if("string"==typeof o||o instanceof Uint8Array)try{d=g.fromDER(o)}catch(n){if(!(n instanceof $u.Err))throw n;d=g.fromCompact(o)}else{if("object"!=typeof o||"bigint"!=typeof o.r||"bigint"!=typeof o.s)throw new Error("PARSE");{const{r:n,s:e}=o;d=new g(n,e)}}h=c.fromHex(r)}catch(n){if("PARSE"===n.message)throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(l&&d.hasHighS())return!1;u&&(t=e.hash(t));const{r:p,s:f}=d,m=v(t),b=s(f),y=i(m*b),w=i(p*b),k=c.BASE.multiplyAndAddUnsafe(h,y,w)?.toAffine();return!!k&&i(k.x)===p},ProjectivePoint:c,Signature:g,utils:m}}
11
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function ed(n){return{hash:n,hmac:(e,...t)=>gc(n,e,function(...n){const e=new Uint8Array(n.reduce((n,e)=>n+e.length,0));let t=0;return n.forEach(n=>{if(!tc(n))throw new Error("Uint8Array expected");e.set(n,t),t+=n.length}),e}(...t)),randomBytes:pc}}BigInt(4);
12
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
13
- const td=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),rd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),ad=BigInt(1),od=BigInt(2),id=(n,e)=>(n+e/od)/e;const sd=function(n,e,t=!1,r={}){if(n<=zu)throw new Error(`Expected Field ORDER > 0, got ${n}`);const{nBitLength:a,nByteLength:o}=Gu(n,e);if(o>2048)throw new Error("Field lengths over 2048 bytes are not supported");const i=Du(n),s=Object.freeze({ORDER:n,BITS:a,BYTES:o,MASK:ku(a),ZERO:zu,ONE:Ru,create:e=>Uu(e,n),isValid:e=>{if("bigint"!=typeof e)throw new Error("Invalid field element: expected bigint, got "+typeof e);return zu<=e&&e<n},is0:n=>n===zu,isOdd:n=>(n&Ru)===Ru,neg:e=>Uu(-e,n),eql:(n,e)=>n===e,sqr:e=>Uu(e*e,n),add:(e,t)=>Uu(e+t,n),sub:(e,t)=>Uu(e-t,n),mul:(e,t)=>Uu(e*t,n),pow:(n,e)=>function(n,e,t){if(t<zu)throw new Error("Expected power > 0");if(t===zu)return n.ONE;if(t===Ru)return e;let r=n.ONE,a=e;for(;t>zu;)t&Ru&&(r=n.mul(r,a)),a=n.sqr(a),t>>=Ru;return r}(s,n,e),div:(e,t)=>Uu(e*Lu(t,n),n),sqrN:n=>n*n,addN:(n,e)=>n+e,subN:(n,e)=>n-e,mulN:(n,e)=>n*e,inv:e=>Lu(e,n),sqrt:r.sqrt||(n=>i(s,n)),invertBatch:n=>function(n,e){const t=new Array(e.length),r=e.reduce((e,r,a)=>n.is0(r)?e:(t[a]=e,n.mul(e,r)),n.ONE),a=n.inv(r);return e.reduceRight((e,r,a)=>n.is0(r)?e:(t[a]=n.mul(e,t[a]),n.mul(e,r)),a),t}(s,n),cmov:(n,e,t)=>t?e:n,toBytes:n=>t?yu(n,o):bu(n,o),fromBytes:n=>{if(n.length!==o)throw new Error(`Fp.fromBytes: expected ${o}, got ${n.length}`);return t?mu(n):gu(n)}});return Object.freeze(s)}(td,void 0,void 0,{sqrt:function(n){const e=td,t=BigInt(3),r=BigInt(6),a=BigInt(11),o=BigInt(22),i=BigInt(23),s=BigInt(44),c=BigInt(88),l=n*n*n%e,u=l*l*n%e,d=ju(u,t,e)*u%e,h=ju(d,t,e)*u%e,p=ju(h,od,e)*l%e,f=ju(p,a,e)*p%e,g=ju(f,o,e)*f%e,m=ju(g,s,e)*g%e,b=ju(m,c,e)*m%e,y=ju(b,s,e)*g%e,v=ju(y,t,e)*u%e,w=ju(v,i,e)*f%e,k=ju(w,r,e)*l%e,A=ju(k,od,e);if(!sd.eql(sd.sqr(A),n))throw new Error("Cannot find square root");return A}}),cd=function(n,e){const t=e=>nd({...n,...ed(e)});return Object.freeze({...t(e),create:t})}({a:BigInt(0),b:BigInt(7),Fp:sd,n:rd,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=rd,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-ad*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),s=id(o*n,e),c=id(-r*n,e);let l=Uu(n-s*t-c*a,e),u=Uu(-s*r-c*o,e);const d=l>i,h=u>i;if(d&&(l=e-l),h&&(u=e-u),l>i||u>i)throw new Error("splitScalar: Endomorphism failed, k="+n);return{k1neg:d,k1:l,k2neg:h,k2:u}}}},Pc);BigInt(0),cd.ProjectivePoint;const ld="0x0000000000000000000000000000000000000000",ud="0x0000000000000000000000000000000000000000000000000000000000000000",dd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),hd=BigInt("1000000000000000000"),pd=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),fd=BigInt("0x8000000000000000000000000000000000000000000000000000000000000000")*BigInt(-1),gd=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),md="Ethereum Signed Message:\n",bd=BigInt(0),yd=BigInt(1),vd=BigInt(2),wd=BigInt(27),kd=BigInt(28),Ad=BigInt(35),Ed=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),xd=Ed/vd,Pd=Symbol.for("nodejs.util.inspect.custom"),Id={};function Nd(n){return bi(Bi(n),32)}class zd{#q;#H;#K;#_;get r(){return this.#q}set r(n){ni(32===pi(n),"invalid r","value",n),this.#q=di(n)}get s(){return ni(parseInt(this.#H.substring(0,3))<8,"non-canonical s; use ._s","s",this.#H),this.#H}set s(n){ni(32===pi(n),"invalid s","value",n),this.#H=di(n)}get _s(){return this.#H}isValid(){return BigInt(this.#H)<=xd}get v(){return this.#K}set v(n){const e=Ri(n,"value");ni(27===e||28===e,"invalid v","v",n),this.#K=e}get networkV(){return this.#_}get legacyChainId(){const n=this.networkV;return null==n?null:zd.getChainId(n)}get yParity(){return 27===this.v?0:1}get yParityAndS(){const n=ii(this.s);return this.yParity&&(n[0]|=128),di(n)}get compactSerialized(){return hi([this.r,this.yParityAndS])}get serialized(){return hi([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(n,e,t,r){ai(n,Id,"Signature"),this.#q=e,this.#H=t,this.#K=r,this.#_=null}getCanonical(){if(this.isValid())return this;const n=Ed-BigInt(this._s),e=55-this.v,t=new zd(Id,this.r,Nd(n),e);return this.networkV&&(t.#_=this.networkV),t}clone(){const n=new zd(Id,this.r,this._s,this.v);return this.networkV&&(n.#_=this.networkV),n}toJSON(){const n=this.networkV;return{_type:"signature",networkV:null!=n?n.toString():null,r:this.r,s:this._s,v:this.v}}[Pd](){return this.toString()}toString(){return this.isValid()?`Signature { r: ${this.r}, s: ${this._s}, v: ${this.v} }`:`Signature { r: ${this.r}, s: ${this._s}, v: ${this.v}, valid: false }`}static getChainId(n){const e=Pi(n,"v");return e==wd||e==kd?bd:(ni(e>=Ad,"invalid EIP-155 v","v",n),(e-Ad)/vd)}static getChainIdV(n,e){return Pi(n)*vd+BigInt(35+e-27)}static getNormalizedV(n){const e=Pi(n);return e===bd||e===wd?27:e===yd||e===kd?28:(ni(e>=Ad,"invalid v","v",n),e&yd?27:28)}static from(n){function e(e,t){ni(e,t,"signature",n)}if(null==n)return new zd(Id,ud,ud,27);if("string"==typeof n){const t=ii(n,"signature");if(64===t.length){const n=di(t.slice(0,32)),e=t.slice(32,64),r=128&e[0]?28:27;return e[0]&=127,new zd(Id,n,di(e),r)}if(65===t.length){const n=di(t.slice(0,32)),e=di(t.slice(32,64)),r=zd.getNormalizedV(t[64]);return new zd(Id,n,e,r)}e(!1,"invalid raw signature length")}if(n instanceof zd)return n.clone();const t=n.r;e(null!=t,"missing r");const r=Nd(t),a=function(n,t){if(null!=n)return Nd(n);if(null!=t){e(ci(t,32),"invalid yParityAndS");const n=ii(t);return n[0]&=127,di(n)}e(!1,"missing s")}(n.s,n.yParityAndS),{networkV:o,v:i}=function(n,t,r){if(null!=n){const e=Pi(n);return{networkV:e>=Ad?e:void 0,v:zd.getNormalizedV(e)}}if(null!=t)return e(ci(t,32),"invalid yParityAndS"),{v:128&ii(t)[0]?28:27};if(null!=r){switch(Ri(r,"sig.yParity")){case 0:return{v:27};case 1:return{v:28}}e(!1,"invalid yParity")}e(!1,"missing v")}(n.v,n.yParityAndS,n.yParity),s=new zd(Id,r,a,i);return o&&(s.#_=o),e(null==n.yParity||Ri(n.yParity,"sig.yParity")===s.yParity,"yParity mismatch"),e(null==n.yParityAndS||n.yParityAndS===s.yParityAndS,"yParityAndS mismatch"),s}}class Rd{#V;constructor(n){ni(32===pi(n),"invalid private key","privateKey","[REDACTED]"),this.#V=di(n)}get privateKey(){return this.#V}get publicKey(){return Rd.computePublicKey(this.#V)}get compressedPublicKey(){return Rd.computePublicKey(this.#V,!0)}sign(n){ni(32===pi(n),"invalid digest length","digest",n);const e=cd.sign(si(n),si(this.#V),{lowS:!0});return zd.from({r:Ti(e.r,32),s:Ti(e.s,32),v:e.recovery?28:27})}computeSharedSecret(n){const e=Rd.computePublicKey(n);return di(cd.getSharedSecret(si(this.#V),ii(e),!1))}static computePublicKey(n,e){let t=ii(n,"key");if(32===t.length){return di(cd.getPublicKey(t,!!e))}if(64===t.length){const n=new Uint8Array(65);n[0]=4,n.set(t,1),t=n}return di(cd.ProjectivePoint.fromHex(t).toRawBytes(e))}static recoverPublicKey(n,e){ni(32===pi(n),"invalid digest length","digest",n);const t=zd.from(e);let r=cd.Signature.fromCompact(si(hi([t.r,t.s])));r=r.addRecoveryBit(t.yParity);const a=r.recoverPublicKey(si(n));return ni(null!=a,"invalid signature for digest","signature",e),"0x"+a.toHex(!1)}static addPoints(n,e,t){const r=cd.ProjectivePoint.fromHex(Rd.computePublicKey(n).substring(2)),a=cd.ProjectivePoint.fromHex(Rd.computePublicKey(e).substring(2));return"0x"+r.add(a).toHex(!!t)}}function Sd(){Qc.lock(),hl.lock(),Ol.lock(),Ll.lock(),Sl.lock(),Wl.lock(),Zl.lock(),au.lock(),ou.lock(),Ll.lock()}const Td=BigInt(0),Bd=BigInt(36);function Cd(n){const e=(n=n.toLowerCase()).substring(2).split(""),t=new Uint8Array(40);for(let n=0;n<40;n++)t[n]=e[n].charCodeAt(0);const r=ii(hl(t));for(let n=0;n<40;n+=2)r[n>>1]>>4>=8&&(e[n]=e[n].toUpperCase()),(15&r[n>>1])>=8&&(e[n+1]=e[n+1].toUpperCase());return"0x"+e.join("")}const Od={};for(let n=0;n<10;n++)Od[String(n)]=String(n);for(let n=0;n<26;n++)Od[String.fromCharCode(65+n)]=String(10+n);function Ud(n){let e=(n=(n=n.toUpperCase()).substring(4)+n.substring(0,2)+"00").split("").map(n=>Od[n]).join("");for(;e.length>=15;){let n=e.substring(0,15);e=parseInt(n,10)%97+e.substring(n.length)}let t=String(98-parseInt(e,10)%97);for(;t.length<2;)t="0"+t;return t}const Fd=function(){const n={};for(let e=0;e<36;e++){n["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return n}();function jd(n){if(ni("string"==typeof n,"invalid address","address",n),n.match(/^(0x)?[0-9a-fA-F]{40}$/)){n.startsWith("0x")||(n="0x"+n);const e=Cd(n);return ni(!n.match(/([A-F].*[a-f])|([a-f].*[A-F])/)||e===n,"bad address checksum","address",n),e}if(n.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){ni(n.substring(2,4)===Ud(n),"bad icap checksum","address",n);let e=function(n){n=n.toLowerCase();let e=Td;for(let t=0;t<n.length;t++)e=e*Bd+Fd[n[t]];return e}(n.substring(4)).toString(16);for(;e.length<40;)e="0"+e;return Cd("0x"+e)}ni(!1,"invalid address","address",n)}function Ld(n){let e=BigInt(jd(n)).toString(36).toUpperCase();for(;e.length<30;)e="0"+e;return"XE"+Ud("XE00"+e)+e}function Dd(n){const e=jd(n.from);let t=Pi(n.nonce,"tx.nonce").toString(16);return t="0"===t?"0x":t.length%2?"0x0"+t:"0x"+t,jd(fi(hl(zs([e,t])),12))}function Md(n,e,t){const r=jd(n),a=ii(e,"salt"),o=ii(t,"initCodeHash");return ni(32===a.length,"salt must be 32 bytes","salt",e),ni(32===o.length,"initCodeHash must be 32 bytes","initCodeHash",t),jd(fi(hl(hi(["0xff",r,a,o])),12))}function Gd(n){return n&&"function"==typeof n.getAddress}function qd(n){try{return jd(n),!0}catch(n){}return!1}async function Hd(n,e){const t=await e;return null!=t&&"0x0000000000000000000000000000000000000000"!==t||(Xo("string"!=typeof n,"unconfigured name","UNCONFIGURED_NAME",{value:n}),ni(!1,"invalid AddressLike value; did not resolve to a value address","target",n)),jd(t)}function Kd(n,e){return"string"==typeof n?n.match(/^0x[0-9a-f]{40}$/i)?jd(n):(Xo(null!=e,"ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"}),Hd(n,e.resolveName(n))):Gd(n)?Hd(n,n.getAddress()):n&&"function"==typeof n.then?Hd(n,n):void ni(!1,"unsupported addressable value","target",n)}const _d={};function Vd(n,e){let t=!1;return e<0&&(t=!0,e*=-1),new $d(_d,`${t?"":"u"}int${e}`,n,{signed:t,width:e})}function Qd(n,e){return new $d(_d,`bytes${e||""}`,n,{size:e})}const Jd=Symbol.for("_ethers_typed");class $d{type;value;#Q;_typedSymbol;constructor(n,e,t,r){null==r&&(r=null),ai(_d,n,"Typed"),Jo(this,{_typedSymbol:Jd,type:e,value:t}),this.#Q=r,this.format()}format(){if("array"===this.type)throw new Error("");if("dynamicArray"===this.type)throw new Error("");return"tuple"===this.type?`tuple(${this.value.map(n=>n.format()).join(",")})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return this.type.startsWith("bytes")}isString(){return"string"===this.type}get tupleName(){if("tuple"!==this.type)throw TypeError("not a tuple");return this.#Q}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===this.#Q?-1:!1===this.#Q?this.value.length:null}static from(n,e){return new $d(_d,n,e)}static uint8(n){return Vd(n,8)}static uint16(n){return Vd(n,16)}static uint24(n){return Vd(n,24)}static uint32(n){return Vd(n,32)}static uint40(n){return Vd(n,40)}static uint48(n){return Vd(n,48)}static uint56(n){return Vd(n,56)}static uint64(n){return Vd(n,64)}static uint72(n){return Vd(n,72)}static uint80(n){return Vd(n,80)}static uint88(n){return Vd(n,88)}static uint96(n){return Vd(n,96)}static uint104(n){return Vd(n,104)}static uint112(n){return Vd(n,112)}static uint120(n){return Vd(n,120)}static uint128(n){return Vd(n,128)}static uint136(n){return Vd(n,136)}static uint144(n){return Vd(n,144)}static uint152(n){return Vd(n,152)}static uint160(n){return Vd(n,160)}static uint168(n){return Vd(n,168)}static uint176(n){return Vd(n,176)}static uint184(n){return Vd(n,184)}static uint192(n){return Vd(n,192)}static uint200(n){return Vd(n,200)}static uint208(n){return Vd(n,208)}static uint216(n){return Vd(n,216)}static uint224(n){return Vd(n,224)}static uint232(n){return Vd(n,232)}static uint240(n){return Vd(n,240)}static uint248(n){return Vd(n,248)}static uint256(n){return Vd(n,256)}static uint(n){return Vd(n,256)}static int8(n){return Vd(n,-8)}static int16(n){return Vd(n,-16)}static int24(n){return Vd(n,-24)}static int32(n){return Vd(n,-32)}static int40(n){return Vd(n,-40)}static int48(n){return Vd(n,-48)}static int56(n){return Vd(n,-56)}static int64(n){return Vd(n,-64)}static int72(n){return Vd(n,-72)}static int80(n){return Vd(n,-80)}static int88(n){return Vd(n,-88)}static int96(n){return Vd(n,-96)}static int104(n){return Vd(n,-104)}static int112(n){return Vd(n,-112)}static int120(n){return Vd(n,-120)}static int128(n){return Vd(n,-128)}static int136(n){return Vd(n,-136)}static int144(n){return Vd(n,-144)}static int152(n){return Vd(n,-152)}static int160(n){return Vd(n,-160)}static int168(n){return Vd(n,-168)}static int176(n){return Vd(n,-176)}static int184(n){return Vd(n,-184)}static int192(n){return Vd(n,-192)}static int200(n){return Vd(n,-200)}static int208(n){return Vd(n,-208)}static int216(n){return Vd(n,-216)}static int224(n){return Vd(n,-224)}static int232(n){return Vd(n,-232)}static int240(n){return Vd(n,-240)}static int248(n){return Vd(n,-248)}static int256(n){return Vd(n,-256)}static int(n){return Vd(n,-256)}static bytes1(n){return Qd(n,1)}static bytes2(n){return Qd(n,2)}static bytes3(n){return Qd(n,3)}static bytes4(n){return Qd(n,4)}static bytes5(n){return Qd(n,5)}static bytes6(n){return Qd(n,6)}static bytes7(n){return Qd(n,7)}static bytes8(n){return Qd(n,8)}static bytes9(n){return Qd(n,9)}static bytes10(n){return Qd(n,10)}static bytes11(n){return Qd(n,11)}static bytes12(n){return Qd(n,12)}static bytes13(n){return Qd(n,13)}static bytes14(n){return Qd(n,14)}static bytes15(n){return Qd(n,15)}static bytes16(n){return Qd(n,16)}static bytes17(n){return Qd(n,17)}static bytes18(n){return Qd(n,18)}static bytes19(n){return Qd(n,19)}static bytes20(n){return Qd(n,20)}static bytes21(n){return Qd(n,21)}static bytes22(n){return Qd(n,22)}static bytes23(n){return Qd(n,23)}static bytes24(n){return Qd(n,24)}static bytes25(n){return Qd(n,25)}static bytes26(n){return Qd(n,26)}static bytes27(n){return Qd(n,27)}static bytes28(n){return Qd(n,28)}static bytes29(n){return Qd(n,29)}static bytes30(n){return Qd(n,30)}static bytes31(n){return Qd(n,31)}static bytes32(n){return Qd(n,32)}static address(n){return new $d(_d,"address",n)}static bool(n){return new $d(_d,"bool",!!n)}static bytes(n){return new $d(_d,"bytes",n)}static string(n){return new $d(_d,"string",n)}static array(n,e){throw new Error("not implemented yet")}static tuple(n,e){throw new Error("not implemented yet")}static overrides(n){return new $d(_d,"overrides",Object.assign({},n))}static isTyped(n){return n&&"object"==typeof n&&"_typedSymbol"in n&&n._typedSymbol===Jd}static dereference(n,e){if($d.isTyped(n)){if(n.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${n.type}`);return n.value}return n}}class Wd extends Qs{constructor(n){super("address","address",n,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(n,e){let t=$d.dereference(e,"string");try{t=jd(t)}catch(n){return this._throwError(n.message,e)}return n.writeValue(t)}decode(n){return jd(Ti(n.readValue(),20))}}class Zd extends Qs{coder;constructor(n){super(n.name,n.type,"_",n.dynamic),this.coder=n}defaultValue(){return this.coder.defaultValue()}encode(n,e){return this.coder.encode(n,e)}decode(n){return this.coder.decode(n)}}function Yd(n,e,t){let r=[];if(Array.isArray(t))r=t;else if(t&&"object"==typeof t){let n={};r=e.map(e=>{const r=e.localName;return Xo(r,"cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:t}),Xo(!n[r],"cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:t}),n[r]=!0,t[r]})}else ni(!1,"invalid tuple value","tuple",t);ni(e.length===r.length,"types/value length mismatch","tuple",t);let a=new Js,o=new Js,i=[];e.forEach((n,e)=>{let t=r[e];if(n.dynamic){let e=o.length;n.encode(o,t);let r=a.writeUpdatableValue();i.push(n=>{r(n+e)})}else n.encode(a,t)}),i.forEach(n=>{n(a.length)});let s=n.appendWriter(a);return s+=n.appendWriter(o),s}function Xd(n,e){let t=[],r=[],a=n.subReader(0);return e.forEach(e=>{let o=null;if(e.dynamic){let t=n.readIndex(),r=a.subReader(t);try{o=e.decode(r)}catch(n){if(Wo(n,"BUFFER_OVERRUN"))throw n;o=n,o.baseType=e.name,o.name=e.localName,o.type=e.type}}else try{o=e.decode(n)}catch(n){if(Wo(n,"BUFFER_OVERRUN"))throw n;o=n,o.baseType=e.name,o.name=e.localName,o.type=e.type}if(null==o)throw new Error("investigate");t.push(o),r.push(e.localName||null)}),Ks.fromItems(t,r)}class nh extends Qs{coder;length;constructor(n,e,t){super("array",n.type+"["+(e>=0?e:"")+"]",t,-1===e||n.dynamic),Jo(this,{coder:n,length:e})}defaultValue(){const n=this.coder.defaultValue(),e=[];for(let t=0;t<this.length;t++)e.push(n);return e}encode(n,e){const t=$d.dereference(e,"array");Array.isArray(t)||this._throwError("expected array value",t);let r=this.length;-1===r&&(r=t.length,n.writeValue(t.length)),ei(t.length,r,"coder array"+(this.localName?" "+this.localName:""));let a=[];for(let n=0;n<t.length;n++)a.push(this.coder);return Yd(n,a,t)}decode(n){let e=this.length;-1===e&&(e=n.readIndex(),Xo(e*Us<=n.dataLength,"insufficient data length","BUFFER_OVERRUN",{buffer:n.bytes,offset:e*Us,length:n.dataLength}));let t=[];for(let n=0;n<e;n++)t.push(new Zd(this.coder));return Xd(n,t)}}class eh extends Qs{constructor(n){super("bool","bool",n,!1)}defaultValue(){return!1}encode(n,e){const t=$d.dereference(e,"bool");return n.writeValue(t?1:0)}decode(n){return!!n.readValue()}}class th extends Qs{constructor(n,e){super(n,n,e,!0)}defaultValue(){return"0x"}encode(n,e){e=si(e);let t=n.writeValue(e.length);return t+=n.writeBytes(e),t}decode(n){return n.readBytes(n.readIndex(),!0)}}class rh extends th{constructor(n){super("bytes",n)}decode(n){return di(super.decode(n))}}class ah extends Qs{size;constructor(n,e){let t="bytes"+String(n);super(t,t,e,!1),Jo(this,{size:n},{size:"number"})}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(n,e){let t=si($d.dereference(e,this.type));return t.length!==this.size&&this._throwError("incorrect data length",e),n.writeBytes(t)}decode(n){return di(n.readBytes(this.size))}}const oh=new Uint8Array([]);class ih extends Qs{constructor(n){super("null","",n,!1)}defaultValue(){return null}encode(n,e){return null!=e&&this._throwError("not null",e),n.writeBytes(oh)}decode(n){return n.readBytes(0),null}}const sh=BigInt(0),ch=BigInt(1),lh=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class uh extends Qs{size;signed;constructor(n,e,t){const r=(e?"int":"uint")+8*n;super(r,r,t,!1),Jo(this,{size:n,signed:e},{size:"number",signed:"boolean"})}defaultValue(){return 0}encode(n,e){let t=Pi($d.dereference(e,this.type)),r=xi(lh,256);if(this.signed){let n=xi(r,8*this.size-1);(t>n||t<-(n+ch))&&this._throwError("value out-of-bounds",e),t=Ei(t,256)}else(t<sh||t>xi(r,8*this.size))&&this._throwError("value out-of-bounds",e);return n.writeValue(t)}decode(n){let e=xi(n.readValue(),8*this.size);return this.signed&&(e=Ai(e,8*this.size)),e}}class dh extends th{constructor(n){super("string",n)}defaultValue(){return""}encode(n,e){return super.encode(n,Qi($d.dereference(e,"string")))}decode(n){return Ji(super.decode(n))}}class hh extends Qs{coders;constructor(n,e){let t=!1;const r=[];n.forEach(n=>{n.dynamic&&(t=!0),r.push(n.type)});super("tuple","tuple("+r.join(",")+")",e,t),Jo(this,{coders:Object.freeze(n.slice())})}defaultValue(){const n=[];this.coders.forEach(e=>{n.push(e.defaultValue())});const e=this.coders.reduce((n,e)=>{const t=e.localName;return t&&(n[t]||(n[t]=0),n[t]++),n},{});return this.coders.forEach((t,r)=>{let a=t.localName;a&&1===e[a]&&("length"===a&&(a="_length"),null==n[a]&&(n[a]=n[r]))}),Object.freeze(n)}encode(n,e){const t=$d.dereference(e,"tuple");return Yd(n,this.coders,t)}decode(n){return Xd(n,this.coders)}}function ph(n,e){return{address:jd(n),storageKeys:e.map((n,e)=>(ni(ci(n,32),"invalid slot",`storageKeys[${e}]`,n),n.toLowerCase()))}}function fh(n){if(Array.isArray(n))return n.map((e,t)=>Array.isArray(e)?(ni(2===e.length,"invalid slot set",`value[${t}]`,e),ph(e[0],e[1])):(ni(null!=e&&"object"==typeof e,"invalid address-slot set","value",n),ph(e.address,e.storageKeys)));ni(null!=n&&"object"==typeof n,"invalid access list","value",n);const e=Object.keys(n).map(e=>{const t=n[e].reduce((n,e)=>(n[e]=!0,n),{});return ph(e,Object.keys(t).sort())});return e.sort((n,e)=>n.address.localeCompare(e.address)),e}function gh(n){return{address:jd(n.address),nonce:Pi(null!=n.nonce?n.nonce:0),chainId:Pi(null!=n.chainId?n.chainId:0),signature:zd.from(n.signature)}}function mh(n){let e;return e="string"==typeof n?Rd.computePublicKey(n,!1):n.publicKey,jd(hl("0x"+e.substring(4)).substring(26))}function bh(n,e){return mh(Rd.recoverPublicKey(n,e))}const yh=BigInt(0),vh=BigInt(2),wh=BigInt(27),kh=BigInt(28),Ah=BigInt(35),Eh=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),xh=Symbol.for("nodejs.util.inspect.custom"),Ph=131072,Ih=128;function Nh(n,e){let t=n.toString(16);for(;t.length<2;)t="0"+t;return t+=au(e).substring(4),"0x"+t}function zh(n){return"0x"===n?null:jd(n)}function Rh(n,e){try{return fh(n)}catch(t){ni(!1,t.message,e,n)}}function Sh(n,e){try{if(!Array.isArray(n))throw new Error("authorizationList: invalid array");const e=[];for(let t=0;t<n.length;t++){const r=n[t];if(!Array.isArray(r))throw new Error(`authorization[${t}]: invalid array`);if(6!==r.length)throw new Error(`authorization[${t}]: wrong length`);if(!r[1])throw new Error(`authorization[${t}]: null address`);e.push({address:zh(r[1]),nonce:Bh(r[2],"nonce"),chainId:Bh(r[0],"chainId"),signature:zd.from({yParity:Th(r[3],"yParity"),r:bi(r[4],32),s:bi(r[5],32)})})}return e}catch(t){ni(!1,t.message,e,n)}}function Th(n,e){return"0x"===n?0:Ri(n,e)}function Bh(n,e){if("0x"===n)return yh;const t=Pi(n,e);return ni(t<=Eh,"value exceeds uint size",e,t),t}function Ch(n,e){const t=Pi(n,"value"),r=Bi(t);return ni(r.length<=32,"value too large",`tx.${e}`,t),r}function Oh(n){return fh(n).map(n=>[n.address,n.storageKeys])}function Uh(n,e){ni(Array.isArray(n),`invalid ${e}`,"value",n);for(let e=0;e<n.length;e++)ni(ci(n[e],32),"invalid ${ param } hash",`value[${e}]`,n[e]);return n}function Fh(n,e){let t;try{if(t=Th(e[0],"yParity"),0!==t&&1!==t)throw new Error("bad yParity")}catch(n){ni(!1,"invalid yParity","yParity",e[0])}const r=bi(e[1],32),a=bi(e[2],32),o=zd.from({r:r,s:a,yParity:t});n.signature=o}class jh{#J;#$;#C;#W;#Z;#Y;#X;#nn;#en;#tn;#rn;#an;#on;#in;#sn;#cn;#ln;#un;get type(){return this.#J}set type(n){switch(n){case null:this.#J=null;break;case 0:case"legacy":this.#J=0;break;case 1:case"berlin":case"eip-2930":this.#J=1;break;case 2:case"london":case"eip-1559":this.#J=2;break;case 3:case"cancun":case"eip-4844":this.#J=3;break;case 4:case"pectra":case"eip-7702":this.#J=4;break;default:ni(!1,"unsupported transaction type","type",n)}}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559";case 3:return"eip-4844";case 4:return"eip-7702"}return null}get to(){const n=this.#$;return null==n&&3===this.type?ld:n}set to(n){this.#$=null==n?null:jd(n)}get nonce(){return this.#W}set nonce(n){this.#W=Ri(n,"value")}get gasLimit(){return this.#Z}set gasLimit(n){this.#Z=Pi(n)}get gasPrice(){const n=this.#Y;return null!=n||0!==this.type&&1!==this.type?n:yh}set gasPrice(n){this.#Y=null==n?null:Pi(n,"gasPrice")}get maxPriorityFeePerGas(){const n=this.#X;return null==n?2===this.type||3===this.type?yh:null:n}set maxPriorityFeePerGas(n){this.#X=null==n?null:Pi(n,"maxPriorityFeePerGas")}get maxFeePerGas(){const n=this.#nn;return null==n?2===this.type||3===this.type?yh:null:n}set maxFeePerGas(n){this.#nn=null==n?null:Pi(n,"maxFeePerGas")}get data(){return this.#C}set data(n){this.#C=di(n)}get value(){return this.#en}set value(n){this.#en=Pi(n,"value")}get chainId(){return this.#tn}set chainId(n){this.#tn=Pi(n)}get signature(){return this.#rn||null}set signature(n){this.#rn=null==n?null:zd.from(n)}isValid(){const n=this.signature;if(n&&!n.isValid())return!1;const e=this.authorizationList;if(e)for(const n of e)if(!n.signature.isValid())return!1;return!0}get accessList(){const n=this.#an||null;return null==n?1===this.type||2===this.type||3===this.type?[]:null:n}set accessList(n){this.#an=null==n?null:fh(n)}get authorizationList(){const n=this.#ln||null;return null==n&&4===this.type?[]:n}set authorizationList(n){this.#ln=null==n?null:n.map(n=>gh(n))}get maxFeePerBlobGas(){const n=this.#on;return null==n&&3===this.type?yh:n}set maxFeePerBlobGas(n){this.#on=null==n?null:Pi(n,"maxFeePerBlobGas")}get blobVersionedHashes(){let n=this.#in;return null==n&&3===this.type?[]:n}set blobVersionedHashes(n){if(null!=n){ni(Array.isArray(n),"blobVersionedHashes must be an Array","value",n),n=n.slice();for(let e=0;e<n.length;e++)ni(ci(n[e],32),"invalid blobVersionedHash",`value[${e}]`,n[e])}this.#in=n}get blobs(){return null==this.#cn?null:this.#cn.map(n=>Object.assign({},n))}set blobs(n){if(null==n)return void(this.#cn=null);const e=[],t=[];for(let r=0;r<n.length;r++){const a=n[r];if(li(a)){Xo(this.#sn,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let n=ii(a);if(ni(n.length<=Ph,"blob is too large",`blobs[${r}]`,a),n.length!==Ph){const e=new Uint8Array(Ph);e.set(n),n=e}const o=this.#sn.blobToKzgCommitment(n),i=di(this.#sn.computeBlobKzgProof(n,o));e.push({data:di(n),commitment:di(o),proof:i}),t.push(Nh(1,o))}else{const n=di(a.data),r=di(a.commitment),o=di(a.proof);e.push({data:n,commitment:r,proof:o}),t.push(Nh(1,r))}}this.#cn=e,this.#in=t}get kzg(){return this.#sn}set kzg(n){this.#sn=null==n?null:function(n){return{blobToKzgCommitment:e=>{if("computeBlobProof"in n){if("blobToKzgCommitment"in n&&"function"==typeof n.blobToKzgCommitment)return ii(n.blobToKzgCommitment(di(e)))}else if("blobToKzgCommitment"in n&&"function"==typeof n.blobToKzgCommitment)return ii(n.blobToKzgCommitment(e));if("blobToKZGCommitment"in n&&"function"==typeof n.blobToKZGCommitment)return ii(n.blobToKZGCommitment(di(e)));ni(!1,"unsupported KZG library","kzg",n)},computeBlobKzgProof:(e,t)=>"computeBlobProof"in n&&"function"==typeof n.computeBlobProof?ii(n.computeBlobProof(di(e),di(t))):"computeBlobKzgProof"in n&&"function"==typeof n.computeBlobKzgProof?n.computeBlobKzgProof(e,t):"computeBlobKZGProof"in n&&"function"==typeof n.computeBlobKZGProof?ii(n.computeBlobKZGProof(di(e),di(t))):void ni(!1,"unsupported KZG library","kzg",n)}}(n)}get blobWrapperVersion(){return this.#un}set blobWrapperVersion(n){this.#un=n}constructor(){this.#J=null,this.#$=null,this.#W=0,this.#Z=yh,this.#Y=null,this.#X=null,this.#nn=null,this.#C="0x",this.#en=yh,this.#tn=yh,this.#rn=null,this.#an=null,this.#on=null,this.#in=null,this.#sn=null,this.#cn=null,this.#ln=null,this.#un=null}get hash(){return null==this.signature?null:hl(this.#dn(!0,!1))}get unsignedHash(){return hl(this.unsignedSerialized)}get from(){return null==this.signature?null:bh(this.unsignedHash,this.signature.getCanonical())}get fromPublicKey(){return null==this.signature?null:Rd.recoverPublicKey(this.unsignedHash,this.signature.getCanonical())}isSigned(){return null!=this.signature}#dn(n,e){Xo(!n||null!=this.signature,"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized","UNSUPPORTED_OPERATION",{operation:".serialized"});const t=n?this.signature:null;switch(this.inferType()){case 0:return function(n,e){const t=[Ch(n.nonce,"nonce"),Ch(n.gasPrice||0,"gasPrice"),Ch(n.gasLimit,"gasLimit"),n.to||"0x",Ch(n.value,"value"),n.data];let r=yh;if(n.chainId!=yh)r=Pi(n.chainId,"tx.chainId"),ni(!e||null==e.networkV||e.legacyChainId===r,"tx.chainId/sig.v mismatch","sig",e);else if(n.signature){const e=n.signature.legacyChainId;null!=e&&(r=e)}if(!e)return r!==yh&&(t.push(Bi(r)),t.push("0x"),t.push("0x")),zs(t);let a=BigInt(27+e.yParity);return r!==yh?a=zd.getChainIdV(r,e.v):BigInt(e.v)!==a&&ni(!1,"tx.chainId/sig.v mismatch","sig",e),t.push(Bi(a)),t.push(Bi(e.r)),t.push(Bi(e._s)),zs(t)}(this,t);case 1:return function(n,e){const t=[Ch(n.chainId,"chainId"),Ch(n.nonce,"nonce"),Ch(n.gasPrice||0,"gasPrice"),Ch(n.gasLimit,"gasLimit"),n.to||"0x",Ch(n.value,"value"),n.data,Oh(n.accessList||[])];return e&&(t.push(Ch(e.yParity,"recoveryParam")),t.push(Bi(e.r)),t.push(Bi(e.s))),hi(["0x01",zs(t)])}(this,t);case 2:return function(n,e){const t=[Ch(n.chainId,"chainId"),Ch(n.nonce,"nonce"),Ch(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Ch(n.maxFeePerGas||0,"maxFeePerGas"),Ch(n.gasLimit,"gasLimit"),n.to||"0x",Ch(n.value,"value"),n.data,Oh(n.accessList||[])];return e&&(t.push(Ch(e.yParity,"yParity")),t.push(Bi(e.r)),t.push(Bi(e.s))),hi(["0x02",zs(t)])}(this,t);case 3:return function(n,e,t){const r=[Ch(n.chainId,"chainId"),Ch(n.nonce,"nonce"),Ch(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Ch(n.maxFeePerGas||0,"maxFeePerGas"),Ch(n.gasLimit,"gasLimit"),n.to||ld,Ch(n.value,"value"),n.data,Oh(n.accessList||[]),Ch(n.maxFeePerBlobGas||0,"maxFeePerBlobGas"),Uh(n.blobVersionedHashes||[],"blobVersionedHashes")];if(e&&(r.push(Ch(e.yParity,"yParity")),r.push(Bi(e.r)),r.push(Bi(e.s)),t)){if(null!=n.blobWrapperVersion){const e=Bi(n.blobWrapperVersion),a=[];for(const{proof:n}of t){const e=ii(n),t=e.length/Ih;for(let n=0;n<e.length;n+=t)a.push(e.subarray(n,n+t))}return hi(["0x03",zs([r,e,t.map(n=>n.data),t.map(n=>n.commitment),a])])}return hi(["0x03",zs([r,t.map(n=>n.data),t.map(n=>n.commitment),t.map(n=>n.proof)])])}return hi(["0x03",zs(r)])}(this,t,e?this.blobs:null);case 4:return function(n,e){const t=[Ch(n.chainId,"chainId"),Ch(n.nonce,"nonce"),Ch(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Ch(n.maxFeePerGas||0,"maxFeePerGas"),Ch(n.gasLimit,"gasLimit"),n.to||"0x",Ch(n.value,"value"),n.data,Oh(n.accessList||[]),(r=n.authorizationList||[],r.map(n=>[Ch(n.chainId,"chainId"),n.address,Ch(n.nonce,"nonce"),Ch(n.signature.yParity,"yParity"),Bi(n.signature.r),Bi(n.signature._s)]))];var r;return e&&(t.push(Ch(e.yParity,"yParity")),t.push(Bi(e.r)),t.push(Bi(e.s))),hi(["0x04",zs(t)])}(this,t)}Xo(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:".serialized"})}get serialized(){return this.#dn(!0,!0)}get unsignedSerialized(){return this.#dn(!1,!1)}inferType(){const n=this.inferTypes();return n.indexOf(2)>=0?2:n.pop()}inferTypes(){const n=null!=this.gasPrice,e=null!=this.maxFeePerGas||null!=this.maxPriorityFeePerGas,t=null!=this.accessList,r=null!=this.#on||this.#in;null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&Xo(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),Xo(!e||0!==this.type&&1!==this.type,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),Xo(0!==this.type||!t,"legacy transaction cannot have accessList","BAD_DATA",{value:this});const a=[];return null!=this.type?a.push(this.type):this.authorizationList&&this.authorizationList.length?a.push(4):e?a.push(2):n?(a.push(1),t||a.push(0)):t?(a.push(1),a.push(2)):(r&&this.to||(a.push(0),a.push(1),a.push(2)),a.push(3)),a.sort(),a}isLegacy(){return 0===this.type}isBerlin(){return 1===this.type}isLondon(){return 2===this.type}isCancun(){return 3===this.type}clone(){return jh.from(this)}toJSON(){const n=n=>null==n?null:n.toString();return{type:this.type,to:this.to,data:this.data,nonce:this.nonce,gasLimit:n(this.gasLimit),gasPrice:n(this.gasPrice),maxPriorityFeePerGas:n(this.maxPriorityFeePerGas),maxFeePerGas:n(this.maxFeePerGas),value:n(this.value),chainId:n(this.chainId),sig:this.signature?this.signature.toJSON():null,accessList:this.accessList}}[xh](){return this.toString()}toString(){const n=[],e=e=>{let t=this[e];"string"==typeof t&&(t=JSON.stringify(t)),n.push(`${e}: ${t}`)};this.type&&e("type"),e("to"),e("data"),e("nonce"),e("gasLimit"),e("value"),null!=this.chainId&&e("chainId"),this.signature&&(e("from"),n.push(`signature: ${this.signature.toString()}`));const t=this.authorizationList;if(t){const e=[];for(const n of t){const t=[];t.push(`address: ${JSON.stringify(n.address)}`),null!=n.nonce&&t.push(`nonce: ${n.nonce}`),null!=n.chainId&&t.push(`chainId: ${n.chainId}`),n.signature&&t.push(`signature: ${n.signature.toString()}`),e.push(`Authorization { ${t.join(", ")} }`)}n.push(`authorizations: [ ${e.join(", ")} ]`)}return`Transaction { ${n.join(", ")} }`}static from(n){if(null==n)return new jh;if("string"==typeof n){const e=ii(n);if(e[0]>=127)return jh.from(function(n){const e=xs(n);ni(Array.isArray(e)&&(9===e.length||6===e.length),"invalid field count for legacy transaction","data",n);const t={type:0,nonce:Th(e[0],"nonce"),gasPrice:Bh(e[1],"gasPrice"),gasLimit:Bh(e[2],"gasLimit"),to:zh(e[3]),value:Bh(e[4],"value"),data:di(e[5]),chainId:yh};if(6===e.length)return t;const r=Bh(e[6],"v"),a=Bh(e[7],"r"),o=Bh(e[8],"s");if(a===yh&&o===yh)t.chainId=r;else{let n=(r-Ah)/vh;n<yh&&(n=yh),t.chainId=n,ni(n!==yh||r===wh||r===kh,"non-canonical legacy v","v",e[6]),t.signature=zd.from({r:bi(e[7],32),s:bi(e[8],32),v:r})}return t}(e));switch(e[0]){case 1:return jh.from(function(n){const e=xs(ii(n).slice(1));ni(Array.isArray(e)&&(8===e.length||11===e.length),"invalid field count for transaction type: 1","data",di(n));const t={type:1,chainId:Bh(e[0],"chainId"),nonce:Th(e[1],"nonce"),gasPrice:Bh(e[2],"gasPrice"),gasLimit:Bh(e[3],"gasLimit"),to:zh(e[4]),value:Bh(e[5],"value"),data:di(e[6]),accessList:Rh(e[7],"accessList")};return 8===e.length||Fh(t,e.slice(8)),t}(e));case 2:return jh.from(function(n){const e=xs(ii(n).slice(1));ni(Array.isArray(e)&&(9===e.length||12===e.length),"invalid field count for transaction type: 2","data",di(n));const t={type:2,chainId:Bh(e[0],"chainId"),nonce:Th(e[1],"nonce"),maxPriorityFeePerGas:Bh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:Bh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:Bh(e[4],"gasLimit"),to:zh(e[5]),value:Bh(e[6],"value"),data:di(e[7]),accessList:Rh(e[8],"accessList")};return 9===e.length||Fh(t,e.slice(9)),t}(e));case 3:return jh.from(function(n){let e=xs(ii(n).slice(1)),t="3",r=null,a=null;if(4===e.length&&Array.isArray(e[0])){t="3 (network format)";const n=e[1],r=e[2],o=e[3];ni(Array.isArray(n),"invalid network format: blobs not an array","fields[1]",n),ni(Array.isArray(r),"invalid network format: commitments not an array","fields[2]",r),ni(Array.isArray(o),"invalid network format: proofs not an array","fields[3]",o),ni(n.length===r.length,"invalid network format: blobs/commitments length mismatch","fields",e),ni(n.length===o.length,"invalid network format: blobs/proofs length mismatch","fields",e),a=[];for(let t=0;t<e[1].length;t++)a.push({data:n[t],commitment:r[t],proof:o[t]});e=e[0]}else if(5===e.length&&Array.isArray(e[0])){t="3 (EIP-7594 network format)",r=Ri(e[1]);const n=e[2],o=e[3],i=e[4];ni(1===r,`unsupported EIP-7594 network format version: ${r}`,"fields[1]",r),ni(Array.isArray(n),"invalid EIP-7594 network format: blobs not an array","fields[2]",n),ni(Array.isArray(o),"invalid EIP-7594 network format: commitments not an array","fields[3]",o),ni(Array.isArray(i),"invalid EIP-7594 network format: proofs not an array","fields[4]",i),ni(n.length===o.length,"invalid network format: blobs/commitments length mismatch","fields",e),ni(n.length*Ih===i.length,"invalid network format: blobs/proofs length mismatch","fields",e),a=[];for(let e=0;e<n.length;e++){const t=[];for(let n=0;n<Ih;n++)t.push(i[e*Ih+n]);a.push({data:n[e],commitment:o[e],proof:hi(t)})}e=e[0]}ni(Array.isArray(e)&&(11===e.length||14===e.length),`invalid field count for transaction type: ${t}`,"data",di(n));const o={type:3,chainId:Bh(e[0],"chainId"),nonce:Th(e[1],"nonce"),maxPriorityFeePerGas:Bh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:Bh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:Bh(e[4],"gasLimit"),to:zh(e[5]),value:Bh(e[6],"value"),data:di(e[7]),accessList:Rh(e[8],"accessList"),maxFeePerBlobGas:Bh(e[9],"maxFeePerBlobGas"),blobVersionedHashes:e[10],blobWrapperVersion:r};a&&(o.blobs=a),ni(null!=o.to,`invalid address for transaction type: ${t}`,"data",n),ni(Array.isArray(o.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",n);for(let e=0;e<o.blobVersionedHashes.length;e++)ni(ci(o.blobVersionedHashes[e],32),`invalid blobVersionedHash at index ${e}: must be length 32`,"data",n);return 11===e.length||Fh(o,e.slice(11)),o}(e));case 4:return jh.from(function(n){const e=xs(ii(n).slice(1));ni(Array.isArray(e)&&(10===e.length||13===e.length),"invalid field count for transaction type: 4","data",di(n));const t={type:4,chainId:Bh(e[0],"chainId"),nonce:Th(e[1],"nonce"),maxPriorityFeePerGas:Bh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:Bh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:Bh(e[4],"gasLimit"),to:zh(e[5]),value:Bh(e[6],"value"),data:di(e[7]),accessList:Rh(e[8],"accessList"),authorizationList:Sh(e[9],"authorizationList")};return 10===e.length||Fh(t,e.slice(10)),t}(e))}Xo(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new jh;return null!=n.type&&(e.type=n.type),null!=n.to&&(e.to=n.to),null!=n.nonce&&(e.nonce=n.nonce),null!=n.gasLimit&&(e.gasLimit=n.gasLimit),null!=n.gasPrice&&(e.gasPrice=n.gasPrice),null!=n.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=n.maxPriorityFeePerGas),null!=n.maxFeePerGas&&(e.maxFeePerGas=n.maxFeePerGas),null!=n.maxFeePerBlobGas&&(e.maxFeePerBlobGas=n.maxFeePerBlobGas),null!=n.data&&(e.data=n.data),null!=n.value&&(e.value=n.value),null!=n.chainId&&(e.chainId=n.chainId),null!=n.signature&&(e.signature=zd.from(n.signature)),null!=n.accessList&&(e.accessList=n.accessList),null!=n.authorizationList&&(e.authorizationList=n.authorizationList),null!=n.blobVersionedHashes&&(e.blobVersionedHashes=n.blobVersionedHashes),null!=n.kzg&&(e.kzg=n.kzg),null!=n.blobWrapperVersion&&(e.blobWrapperVersion=n.blobWrapperVersion),null!=n.blobs&&(e.blobs=n.blobs),null!=n.hash&&(ni(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",n),ni(e.hash===n.hash,"hash mismatch","tx",n)),null!=n.from&&(ni(e.isSigned(),"unsigned transaction cannot define '.from'","tx",n),ni(e.from.toLowerCase()===(n.from||"").toLowerCase(),"from mismatch","tx",n)),e}}function Lh(n){return ni("string"==typeof n.address,"invalid address for hashAuthorization","auth.address",n),hl(hi(["0x05",zs([null!=n.chainId?Bi(n.chainId):"0x",jd(n.address),null!=n.nonce?Bi(n.nonce):"0x"])]))}function Dh(n,e){return bh(Lh(n),e)}function Mh(n){return hl(Qi(n))}const Gh=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]);function qh(n){return function(n){let e=0;return()=>n[e++]}(function(n){let e=0;function t(){return n[e++]<<8|n[e++]}let r=t(),a=1,o=[0,1];for(let n=1;n<r;n++)o.push(a+=t());let i=t(),s=e;e+=i;let c=0,l=0;function u(){return 0==c&&(l=l<<8|n[e++],c=8),l>>--c&1}const d=2**31,h=d>>>1,p=h>>1,f=d-1;let g=0;for(let n=0;n<31;n++)g=g<<1|u();let m=[],b=0,y=d;for(;;){let n=Math.floor(((g-b+1)*a-1)/y),e=0,t=r;for(;t-e>1;){let r=e+t>>>1;n<o[r]?t=r:e=r}if(0==e)break;m.push(e);let i=b+Math.floor(y*o[e]/a),s=b+Math.floor(y*o[e+1]/a)-1;for(;0==((i^s)&h);)g=g<<1&f|u(),i=i<<1&f,s=s<<1&f|1;for(;i&~s&p;)g=g&h|g<<1&f>>>1|u(),i=i<<1^h,s=(s^h)<<1|h|1;b=i,y=1+s-i}let v=r-4;return m.map(e=>{switch(e-v){case 3:return v+65792+(n[s++]<<16|n[s++]<<8|n[s++]);case 2:return v+256+(n[s++]<<8|n[s++]);case 1:return v+n[s++];default:return e-1}})}(function(n){let e=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach((n,t)=>e[n.charCodeAt(0)]=t);let t=n.length,r=new Uint8Array(6*t>>3);for(let a=0,o=0,i=0,s=0;a<t;a++)s=s<<6|e[n.charCodeAt(a)],i+=6,i>=8&&(r[o++]=s>>(i-=8));return r}(n)))}function Hh(n){return 1&n?~n>>1:n>>1}function Kh(n,e){let t=Array(n);for(let r=0,a=0;r<n;r++)t[r]=a+=Hh(e());return t}function _h(n,e=0){let t=[];for(;;){let r=n(),a=n();if(!a)break;e+=r;for(let n=0;n<a;n++)t.push(e+n);e+=a+1}return t}function Vh(n){return Jh(()=>{let e=_h(n);if(e.length)return e})}function Qh(n){let e=[];for(;;){let t=n();if(0==t)break;e.push(Wh(t,n))}for(;;){let t=n()-1;if(t<0)break;e.push(Zh(t,n))}return e.flat()}function Jh(n){let e=[];for(;;){let t=n(e.length);if(!t)break;e.push(t)}return e}function $h(n,e,t){let r=Array(n).fill().map(()=>[]);for(let a=0;a<e;a++)Kh(n,t).forEach((n,e)=>r[e].push(n));return r}function Wh(n,e){let t=1+e(),r=e(),a=Jh(e);return $h(a.length,1+n,e).flatMap((n,e)=>{let[o,...i]=n;return Array(a[e]).fill().map((n,e)=>{let a=e*r;return[o+e*t,i.map(n=>n+a)]})})}function Zh(n,e){return $h(1+e(),1+n,e).map(n=>[n[0],n.slice(1)])}function Yh(n){return`{${function(n){return n.toString(16).toUpperCase().padStart(2,"0")}(n)}}`}function Xh(n){let e=n.length;if(e<4096)return String.fromCodePoint(...n);let t=[];for(let r=0;r<e;)t.push(String.fromCodePoint(...n.slice(r,r+=4096)));return t.join("")}function np(n,e){let t=n.length,r=t-e.length;for(let a=0;0==r&&a<t;a++)r=n[a]-e[a];return r}const ep=44032,tp=4352,rp=4449,ap=4519,op=28,ip=588;function sp(n){return n>>24&255}function cp(n){return 16777215&n}let lp,up,dp,hp;function pp(n){return n>=ep&&n<55204}function fp(n,e){if(n>=tp&&n<4371&&e>=rp&&e<4470)return ep+(n-tp)*ip+(e-rp)*op;if(pp(n)&&e>ap&&e<4547&&(n-ep)%op==0)return n+(e-ap);{let t=hp.get(n);return t&&(t=t.get(e),t)?t:-1}}function gp(n){lp||function(){let n=qh("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");lp=new Map(Vh(n).flatMap((n,e)=>n.map(n=>[n,e+1<<24]))),up=new Set(_h(n)),dp=new Map,hp=new Map;for(let[e,t]of Qh(n)){if(!up.has(e)&&2==t.length){let[n,r]=t,a=hp.get(n);a||(a=new Map,hp.set(n,a)),a.set(r,e)}dp.set(e,t.reverse())}}();let e=[],t=[],r=!1;function a(n){let t=lp.get(n);t&&(r=!0,n|=t),e.push(n)}for(let r of n)for(;;){if(r<128)e.push(r);else if(pp(r)){let n=r-ep,e=n%ip/op|0,t=n%op;a(tp+(n/ip|0)),a(rp+e),t>0&&a(ap+t)}else{let n=dp.get(r);n?t.push(...n):a(r)}if(!t.length)break;r=t.pop()}if(r&&e.length>1){let n=sp(e[0]);for(let t=1;t<e.length;t++){let r=sp(e[t]);if(0==r||n<=r){n=r;continue}let a=t-1;for(;;){let t=e[a+1];if(e[a+1]=e[a],e[a]=t,!a)break;if(n=sp(e[--a]),n<=r)break}n=sp(e[t])}}return e}function mp(n){return gp(n).map(cp)}function bp(n){return function(n){let e=[],t=[],r=-1,a=0;for(let o of n){let n=sp(o),i=cp(o);if(-1==r)0==n?r=i:e.push(i);else if(a>0&&a>=n)0==n?(e.push(r,...t),t.length=0,r=i):t.push(i),a=n;else{let o=fp(r,i);o>=0?r=o:0==a&&0==n?(e.push(r),r=i):(t.push(i),a=n)}}return r>=0&&e.push(r,...t),e}(gp(n))}const yp=".",vp=n=>Array.from(n);function wp(n,e){return n.P.has(e)||n.Q.has(e)}class kp extends Array{get is_emoji(){return!0}}let Ap,Ep,xp,Pp,Ip,Np,zp,Rp,Sp,Tp,Bp;function Cp(){if(Ap)return;let n=qh("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");const e=()=>_h(n),t=()=>new Set(e()),r=(n,e)=>e.forEach(e=>n.add(e));Ap=new Map(Qh(n)),Ep=t(),xp=e(),Pp=new Set(e().map(n=>xp[n])),xp=new Set(xp),Ip=t(),t();let a=Vh(n),o=n();const i=()=>{let n=new Set;return e().forEach(e=>r(n,a[e])),r(n,e()),n};Np=Jh(e=>{let t=Jh(n).map(n=>n+96);if(t.length){let r=e>=o;return t[0]-=32,t=Xh(t),r&&(t=`Restricted[${t}]`),{N:t,P:i(),Q:i(),M:!n(),R:r}}}),zp=t(),Rp=new Map;let s=e().concat(vp(zp)).sort((n,e)=>n-e);s.forEach((e,t)=>{let r=n(),a=s[t]=r?s[t-r]:{V:[],M:new Map};a.V.push(e),zp.has(e)||Rp.set(e,a)});for(let{V:n,M:e}of new Set(Rp.values())){let t=[];for(let e of n){let n=Np.filter(n=>wp(n,e)),a=t.find(({G:e})=>n.some(n=>e.has(n)));a||(a={G:new Set,V:[]},t.push(a)),a.V.push(e),r(a.G,n)}let a=t.flatMap(n=>vp(n.G));for(let{G:n,V:r}of t){let t=new Set(a.filter(e=>!n.has(e)));for(let n of r)e.set(n,t)}}Sp=new Set;let c=new Set;const l=n=>Sp.has(n)?c.add(n):Sp.add(n);for(let n of Np){for(let e of n.P)l(e);for(let e of n.Q)l(e)}for(let n of Sp)Rp.has(n)||c.has(n)||Rp.set(n,1);r(Sp,mp(Sp)),Tp=function(n){let e=[],t=_h(n);return function n({S:t,B:r},a,o){if(!(4&t&&o===a[a.length-1])){2&t&&(o=a[a.length-1]),1&t&&e.push(a);for(let e of r)for(let t of e.Q)n(e,[...a,t],o)}}(function e(r){return{S:n(),B:Jh(()=>{let r=_h(n).map(n=>t[n]);if(r.length)return e(r)}),Q:r}}([]),[]),e}(n).map(n=>kp.from(n)).sort(np),Bp=new Map;for(let n of Tp){let e=[Bp];for(let t of n){let n=e.map(n=>{let e=n.get(t);return e||(e=new Map,n.set(t,e)),e});65039===t?e.push(...n):e=n}for(let t of e)t.V=n}}function Op(n){return(jp(n)?"":`${Up(Fp([n]))} `)+Yh(n)}function Up(n){return`"${n}"‎`}function Fp(n,e=1/0,t=Yh){let r=[];var a;a=n[0],Cp(),xp.has(a)&&r.push("◌"),n.length>e&&(e>>=1,n=[...n.slice(0,e),8230,...n.slice(-e)]);let o=0,i=n.length;for(let e=0;e<i;e++){let a=n[e];jp(a)&&(r.push(Xh(n.slice(o,e))),r.push(t(a)),o=e+1)}return r.push(Xh(n.slice(o,i))),r.join("")}function jp(n){return Cp(),Ip.has(n)}function Lp(n){return function(n){return n.map(({input:e,error:t,output:r})=>{if(t){let r=t.message;throw new Error(1==n.length?r:`Invalid label ${Up(Fp(e,63))}: ${r}`)}return Xh(r)}).join(yp)}(function(n,e,t){if(!n)return[];Cp();let r=0;return n.split(yp).map(n=>{let a=function(n){let e=[];for(let t=0,r=n.length;t<r;){let r=n.codePointAt(t);t+=r<65536?1:2,e.push(r)}return e}(n),o={input:a,offset:r};r+=a.length+1;try{let n,r=o.tokens=function(n,e,t){let r=[],a=[];n=n.slice().reverse();for(;n.length;){let o=Hp(n);if(o)a.length&&(r.push(e(a)),a=[]),r.push(t(o));else{let e=n.pop();if(Sp.has(e))a.push(e);else{let n=Ap.get(e);if(n)a.push(...n);else if(!Ep.has(e))throw Dp(e)}}}a.length&&r.push(e(a));return r}(a,e,t),i=r.length;if(!i)throw new Error("empty label");let s=o.output=r.flat();if(function(n){for(let e=n.lastIndexOf(95);e>0;)if(95!==n[--e])throw new Error("underscore allowed only at start")}(s),!(o.emoji=i>1||r[0].is_emoji)&&s.every(n=>n<128))!function(n){if(n.length>=4&&45==n[2]&&45==n[3])throw new Error(`invalid label extension: "${Xh(n.slice(0,4))}"`)}(s),n="ASCII";else{let e=r.flatMap(n=>n.is_emoji?[]:n);if(e.length){if(xp.has(s[0]))throw Gp("leading combining mark");for(let n=1;n<i;n++){let e=r[n];if(!e.is_emoji&&xp.has(e[0]))throw Gp(`emoji + combining mark: "${Xh(r[n-1])} + ${Fp([e[0]])}"`)}!function(n){let e=n[0],t=Gh.get(e);if(t)throw Gp(`leading ${t}`);let r=n.length,a=-1;for(let o=1;o<r;o++){e=n[o];let r=Gh.get(e);if(r){if(a==o)throw Gp(`${t} + ${r}`);a=o+1,t=r}}if(a==r)throw Gp(`trailing ${t}`)}(s);let t=vp(new Set(e)),[a]=function(n){let e=Np;for(let t of n){let n=e.filter(n=>wp(n,t));if(!n.length)throw Np.some(n=>wp(n,t))?Mp(e[0],t):Dp(t);if(e=n,1==n.length)break}return e}(t);!function(n,e){for(let t of e)if(!wp(n,t))throw Mp(n,t);if(n.M){let n=mp(e);for(let e=1,t=n.length;e<t;e++)if(Pp.has(n[e])){let r=e+1;for(let a;r<t&&Pp.has(a=n[r]);r++)for(let t=e;t<r;t++)if(n[t]==a)throw new Error(`duplicate non-spacing marks: ${Op(a)}`);if(r-e>4)throw new Error(`excessive non-spacing marks: ${Up(Fp(n.slice(e-1,r)))} (${r-e}/4)`);e=r}}}(a,e),function(n,e){let t,r=[];for(let n of e){let e=Rp.get(n);if(1===e)return;if(e){let r=e.M.get(n);if(t=t?t.filter(n=>r.has(n)):vp(r),!t.length)return}else r.push(n)}if(t)for(let e of t)if(r.every(n=>wp(e,n)))throw new Error(`whole-script confusable: ${n.N}/${e.N}`)}(a,t),n=a.N}else n="Emoji"}o.type=n}catch(n){o.error=n}return o})}(n,bp,qp))}function Dp(n){return new Error(`disallowed character: ${Op(n)}`)}function Mp(n,e){let t=Op(e),r=Np.find(n=>n.P.has(e));return r&&(t=`${r.N} ${t}`),new Error(`illegal mixture: ${n.N} + ${t}`)}function Gp(n){return new Error(`illegal placement: ${n}`)}function qp(n){return n.filter(n=>65039!=n)}function Hp(n,e){let t,r=Bp,a=n.length;for(;a&&(r=r.get(n[--a]),r);){let{V:o}=r;o&&(t=o,e&&e.push(...n.slice(a).reverse()),n.length=a)}return t}const Kp=new Uint8Array(32);function _p(n){return ni(0!==n.length,"invalid ENS name; empty component","comp",n),n}function Vp(n){const e=Qi(Qp(n)),t=[];if(0===n.length)return t;let r=0;for(let n=0;n<e.length;n++){46===e[n]&&(t.push(_p(e.slice(r,n))),r=n+1)}return ni(r<e.length,"invalid ENS name; empty component","name",n),t.push(_p(e.slice(r))),t}function Qp(n){try{if(0===n.length)throw new Error("empty label");return Lp(n)}catch(e){ni(!1,`invalid ENS name (${e.message})`,"name",n)}}function Jp(n){try{return 0!==Vp(n).length}catch(n){}return!1}function $p(n){ni("string"==typeof n,"invalid ENS name; not a string","name",n),ni(n.length,"invalid ENS name (empty label)","name",n);let e=Kp;const t=Vp(n);for(;t.length;)e=hl(hi([e,hl(t.pop())]));return di(e)}function Wp(n,e){const t=null!=e?e:63;return ni(t<=255,"DNS encoded label cannot exceed 255","length",t),di(hi(Vp(n).map(e=>{ni(e.length<=t,`label ${JSON.stringify(n)} exceeds ${t} bytes`,"name",n);const r=new Uint8Array(e.length+1);return r.set(e,1),r[0]=r.length-1,r})))+"00"}function Zp(n){return"string"==typeof n&&(n=Qi(n)),hl(hi([Qi(md),Qi(String(n.length)),n]))}function Yp(n,e){return bh(Zp(n),e)}Kp.fill(0);const Xp=new RegExp("^bytes([0-9]+)$"),nf=new RegExp("^(u?int)([0-9]*)$"),ef=new RegExp("^(.*)\\[([0-9]*)\\]$");function tf(n,e,t){switch(n){case"address":return ii(t?bi(e,32):jd(e));case"string":return Qi(e);case"bytes":return ii(e);case"bool":return e=e?"0x01":"0x00",ii(t?bi(e,32):e)}let r=n.match(nf);if(r){let a="int"===r[1],o=parseInt(r[2]||"256");return ni((!r[2]||r[2]===String(o))&&o%8==0&&0!==o&&o<=256,"invalid number type","type",n),t&&(o=256),a&&(e=Ei(e,o)),ii(bi(Bi(e),o/8))}if(r=n.match(Xp),r){const a=parseInt(r[1]);return ni(String(a)===r[1]&&0!==a&&a<=32,"invalid bytes type","type",n),ni(pi(e)===a,`invalid value for ${n}`,"value",e),t?ii(yi(e,32)):e}if(r=n.match(ef),r&&Array.isArray(e)){const t=r[1];ni(parseInt(r[2]||String(e.length))===e.length,`invalid array length for ${n}`,"value",e);const a=[];return e.forEach(function(n){a.push(tf(t,n,!0))}),ii(hi(a))}ni(!1,"invalid type","type",n)}function rf(n,e){ni(n.length===e.length,"wrong number of values; expected ${ types.length }","values",e);const t=[];return n.forEach(function(n,r){t.push(tf(n,e[r]))}),di(hi(t))}function af(n,e){return hl(rf(n,e))}function of(n,e){return au(rf(n,e))}const sf=new Uint8Array(32);sf.fill(0);const cf=BigInt(-1),lf=BigInt(0),uf=BigInt(1),df=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const hf=Ti(uf,32),pf=Ti(lf,32),ff={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},gf=["name","version","chainId","verifyingContract","salt"];function mf(n){return function(e){return ni("string"==typeof e,`invalid domain value for ${JSON.stringify(n)}`,`domain.${n}`,e),e}}const bf={name:mf("name"),version:mf("version"),chainId:function(n){const e=Pi(n,"domain.chainId");return ni(e>=0,"invalid chain ID","domain.chainId",n),Number.isSafeInteger(e)?Number(e):Ci(e)},verifyingContract:function(n){try{return jd(n).toLowerCase()}catch(n){}ni(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",n)},salt:function(n){const e=ii(n,"domain.salt");return ni(32===e.length,'invalid domain value "salt"',"domain.salt",n),di(e)}};function yf(n){{const e=n.match(/^(u?)int(\d+)$/);if(e){const t=""===e[1],r=parseInt(e[2]);ni(r%8==0&&0!==r&&r<=256&&e[2]===String(r),"invalid numeric width","type",n);const a=xi(df,t?r-1:r),o=t?(a+uf)*cf:lf;return function(e){const r=Pi(e,"value");return ni(r>=o&&r<=a,`value out-of-bounds for ${n}`,"value",r),Ti(t?Ei(r,256):r,32)}}}{const e=n.match(/^bytes(\d+)$/);if(e){const t=parseInt(e[1]);return ni(0!==t&&t<=32&&e[1]===String(t),"invalid bytes width","type",n),function(e){return ni(ii(e).length===t,`invalid length for ${n}`,"value",e),function(n){const e=ii(n),t=e.length%32;return t?hi([e,sf.slice(t)]):di(e)}(e)}}}switch(n){case"address":return function(n){return bi(jd(n),32)};case"bool":return function(n){return n?hf:pf};case"bytes":return function(n){return hl(n)};case"string":return function(n){return Mh(n)}}return null}function vf(n,e){return`${n}(${e.map(({name:n,type:e})=>e+" "+n).join(",")})`}function wf(n){const e=n.match(/^([^\x5b]*)((\x5b\d*\x5d)*)(\x5b(\d*)\x5d)$/);return e?{base:e[1],index:e[2]+e[4],array:{base:e[1],prefix:e[1]+e[2],count:e[5]?parseInt(e[5]):-1}}:{base:n}}class kf{primaryType;#hn;get types(){return JSON.parse(this.#hn)}#pn;#fn;constructor(n){this.#pn=new Map,this.#fn=new Map;const e=new Map,t=new Map,r=new Map,a={};Object.keys(n).forEach(o=>{a[o]=n[o].map(({name:e,type:t})=>{let{base:r,index:a}=wf(t);return"int"!==r||n.int||(r="int256"),"uint"!==r||n.uint||(r="uint256"),{name:e,type:r+(a||"")}}),e.set(o,new Set),t.set(o,[]),r.set(o,new Set)}),this.#hn=JSON.stringify(a);for(const r in a){const o=new Set;for(const i of a[r]){ni(!o.has(i.name),`duplicate variable name ${JSON.stringify(i.name)} in ${JSON.stringify(r)}`,"types",n),o.add(i.name);const a=wf(i.type).base;ni(a!==r,`circular type reference to ${JSON.stringify(a)}`,"types",n);yf(a)||(ni(t.has(a),`unknown type ${JSON.stringify(a)}`,"types",n),t.get(a).push(r),e.get(r).add(a))}}const o=Array.from(t.keys()).filter(n=>0===t.get(n).length);ni(0!==o.length,"missing primary type","types",n),ni(1===o.length,`ambiguous primary types or unused types: ${o.map(n=>JSON.stringify(n)).join(", ")}`,"types",n),Jo(this,{primaryType:o[0]}),function a(o,i){ni(!i.has(o),`circular type reference to ${JSON.stringify(o)}`,"types",n),i.add(o);for(const n of e.get(o))if(t.has(n)){a(n,i);for(const e of i)r.get(e).add(n)}i.delete(o)}(this.primaryType,new Set);for(const[n,e]of r){const t=Array.from(e);t.sort(),this.#pn.set(n,vf(n,a[n])+t.map(n=>vf(n,a[n])).join(""))}}getEncoder(n){let e=this.#fn.get(n);return e||(e=this.#gn(n),this.#fn.set(n,e)),e}#gn(n){{const e=yf(n);if(e)return e}const e=wf(n).array;if(e){const n=e.prefix,t=this.getEncoder(n);return r=>{ni(-1===e.count||e.count===r.length,`array length mismatch; expected length ${e.count}`,"value",r);let a=r.map(t);return this.#pn.has(n)&&(a=a.map(hl)),hl(hi(a))}}const t=this.types[n];if(t){const e=Mh(this.#pn.get(n));return n=>{const r=t.map(({name:e,type:t})=>{const r=this.getEncoder(t)(n[e]);return this.#pn.has(t)?hl(r):r});return r.unshift(e),hi(r)}}ni(!1,`unknown type: ${n}`,"type",n)}encodeType(n){const e=this.#pn.get(n);return ni(e,`unknown type: ${JSON.stringify(n)}`,"name",n),e}encodeData(n,e){return this.getEncoder(n)(e)}hashStruct(n,e){return hl(this.encodeData(n,e))}encode(n){return this.encodeData(this.primaryType,n)}hash(n){return this.hashStruct(this.primaryType,n)}_visit(n,e,t){if(yf(n))return t(n,e);const r=wf(n).array;if(r)return ni(-1===r.count||r.count===e.length,`array length mismatch; expected length ${r.count}`,"value",e),e.map(n=>this._visit(r.prefix,n,t));const a=this.types[n];if(a)return a.reduce((n,{name:r,type:a})=>(n[r]=this._visit(a,e[r],t),n),{});ni(!1,`unknown type: ${n}`,"type",n)}visit(n,e){return this._visit(this.primaryType,n,e)}static from(n){return new kf(n)}static getPrimaryType(n){return kf.from(n).primaryType}static hashStruct(n,e,t){return kf.from(e).hashStruct(n,t)}static hashDomain(n){const e=[];for(const t in n){if(null==n[t])continue;const r=ff[t];ni(r,`invalid typed-data domain key: ${JSON.stringify(t)}`,"domain",n),e.push({name:t,type:r})}return e.sort((n,e)=>gf.indexOf(n.name)-gf.indexOf(e.name)),kf.hashStruct("EIP712Domain",{EIP712Domain:e},n)}static encode(n,e,t){return hi(["0x1901",kf.hashDomain(n),kf.from(e).hash(t)])}static hash(n,e,t){return hl(kf.encode(n,e,t))}static async resolveNames(n,e,t,r){n=Object.assign({},n);for(const e in n)null==n[e]&&delete n[e];const a={};n.verifyingContract&&!ci(n.verifyingContract,20)&&(a[n.verifyingContract]="0x");const o=kf.from(e);o.visit(t,(n,e)=>("address"!==n||ci(e,20)||(a[e]="0x"),e));for(const n in a)a[n]=await r(n);return n.verifyingContract&&a[n.verifyingContract]&&(n.verifyingContract=a[n.verifyingContract]),{domain:n,value:t=o.visit(t,(n,e)=>"address"===n&&a[e]?a[e]:e)}}static getPayload(n,e,t){kf.hashDomain(n);const r={},a=[];gf.forEach(e=>{const t=n[e];null!=t&&(r[e]=bf[e](t),a.push({name:e,type:ff[e]}))});const o=kf.from(e);e=o.types;const i=Object.assign({},e);return ni(null==i.EIP712Domain,"types must not contain EIP712Domain type","types.EIP712Domain",e),i.EIP712Domain=a,o.encode(t),{types:i,domain:r,primaryType:o.primaryType,message:o.visit(t,(n,e)=>{if(n.match(/^bytes(\d*)/))return di(ii(e));if(n.match(/^u?int/))return Pi(e).toString();switch(n){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return ni("string"==typeof e,"invalid string","value",e),e}ni(!1,"unsupported type","type",n)})}}}function Af(n,e,t,r){return bh(kf.hash(n,e,t),r)}function Ef(n){const e=new Set;return n.forEach(n=>e.add(n)),Object.freeze(e)}const xf=Ef("external public payable override".split(" ")),Pf="constant external internal payable private public pure view override",If=Ef(Pf.split(" ")),Nf="constructor error event fallback function receive struct",zf=Ef(Nf.split(" ")),Rf="calldata memory storage payable indexed",Sf=Ef(Rf.split(" ")),Tf=Ef([Nf,Rf,"tuple returns",Pf].join(" ").split(" ")),Bf={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},Cf=new RegExp("^(\\s*)"),Of=new RegExp("^([0-9]+)"),Uf=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),Ff=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)$"),jf=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$");class Lf{#F;#mn;get offset(){return this.#F}get length(){return this.#mn.length-this.#F}constructor(n){this.#F=0,this.#mn=n.slice()}clone(){return new Lf(this.#mn)}reset(){this.#F=0}#bn(n=0,e=0){return new Lf(this.#mn.slice(n,e).map(e=>Object.freeze(Object.assign({},e,{match:e.match-n,linkBack:e.linkBack-n,linkNext:e.linkNext-n}))))}popKeyword(n){const e=this.peek();if("KEYWORD"!==e.type||!n.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(n){if(this.peek().type!==n){const e=this.peek();throw new Error(`expected ${n}; got ${e.type} ${JSON.stringify(e.text)}`)}return this.pop().text}popParen(){const n=this.peek();if("OPEN_PAREN"!==n.type)throw new Error("bad start");const e=this.#bn(this.#F+1,n.match+1);return this.#F=n.match+1,e}popParams(){const n=this.peek();if("OPEN_PAREN"!==n.type)throw new Error("bad start");const e=[];for(;this.#F<n.match-1;){const n=this.peek().linkNext;e.push(this.#bn(this.#F+1,n)),this.#F=n}return this.#F=n.match+1,e}peek(){if(this.#F>=this.#mn.length)throw new Error("out-of-bounds");return this.#mn[this.#F]}peekKeyword(n){const e=this.peekType("KEYWORD");return null!=e&&n.has(e)?e:null}peekType(n){if(0===this.length)return null;const e=this.peek();return e.type===n?e.text:null}pop(){const n=this.peek();return this.#F++,n}toString(){const n=[];for(let e=this.#F;e<this.#mn.length;e++){const t=this.#mn[e];n.push(`${t.type}:${t.text}`)}return`<TokenString ${n.join(" ")}>`}}function Df(n){const e=[],t=e=>{const t=o<n.length?JSON.stringify(n[o]):"$EOI";throw new Error(`invalid token ${t} at ${o}: ${e}`)};let r=[],a=[],o=0;for(;o<n.length;){let i=n.substring(o),s=i.match(Cf);s&&(o+=s[1].length,i=n.substring(o));const c={depth:r.length,linkBack:-1,linkNext:-1,match:-1,type:"",text:"",offset:o,value:-1};e.push(c);let l=Bf[i[0]]||"";if(l){if(c.type=l,c.text=i[0],o++,"OPEN_PAREN"===l)r.push(e.length-1),a.push(e.length-1);else if("CLOSE_PAREN"==l)0===r.length&&t("no matching open bracket"),c.match=r.pop(),e[c.match].match=e.length-1,c.depth--,c.linkBack=a.pop(),e[c.linkBack].linkNext=e.length-1;else if("COMMA"===l)c.linkBack=a.pop(),e[c.linkBack].linkNext=e.length-1,a.push(e.length-1);else if("OPEN_BRACKET"===l)c.type="BRACKET";else if("CLOSE_BRACKET"===l){let n=e.pop().text;if(e.length>0&&"NUMBER"===e[e.length-1].type){const t=e.pop().text;n=t+n,e[e.length-1].value=Ri(t)}if(0===e.length||"BRACKET"!==e[e.length-1].type)throw new Error("missing opening bracket");e[e.length-1].text+=n}}else if(s=i.match(Uf),s){if(c.text=s[1],o+=c.text.length,Tf.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(jf)){c.type="TYPE";continue}c.type="ID"}else{if(s=i.match(Of),!s)throw new Error(`unexpected token ${JSON.stringify(i[0])} at position ${o}`);c.text=s[1],c.type="NUMBER",o+=c.text.length}}return new Lf(e.map(n=>Object.freeze(n)))}function Mf(n,e){let t=[];for(const r in e.keys())n.has(r)&&t.push(r);if(t.length>1)throw new Error(`conflicting types: ${t.join(", ")}`)}function Gf(n,e){if(e.peekKeyword(zf)){const t=e.pop().text;if(t!==n)throw new Error(`expected ${n}, got ${t}`)}return e.popType("ID")}function qf(n,e){const t=new Set;for(;;){const r=n.peekType("KEYWORD");if(null==r||e&&!e.has(r))break;if(n.pop(),t.has(r))throw new Error(`duplicate keywords: ${JSON.stringify(r)}`);t.add(r)}return Object.freeze(t)}function Hf(n){let e=qf(n,If);return Mf(e,Ef("constant payable nonpayable".split(" "))),Mf(e,Ef("pure view payable nonpayable".split(" "))),e.has("view")?"view":e.has("pure")?"pure":e.has("payable")?"payable":e.has("nonpayable")?"nonpayable":e.has("constant")?"view":"nonpayable"}function Kf(n,e){return n.popParams().map(n=>ag.from(n,e))}function _f(n){if(n.peekType("AT")){if(n.pop(),n.peekType("NUMBER"))return Pi(n.pop().text);throw new Error("invalid gas")}return null}function Vf(n){if(n.length)throw new Error(`unexpected tokens at offset ${n.offset}: ${n.toString()}`)}const Qf=new RegExp(/^(.*)\[([0-9]*)\]$/);function Jf(n){const e=n.match(jf);if(ni(e,"invalid type","type",n),"uint"===n)return"uint256";if("int"===n)return"int256";if(e[2]){const t=parseInt(e[2]);ni(0!==t&&t<=32,"invalid bytes length","type",n)}else if(e[3]){const t=parseInt(e[3]);ni(0!==t&&t<=256&&t%8==0,"invalid numeric width","type",n)}return n}const $f={},Wf=Symbol.for("_ethers_internal"),Zf="_ParamTypeInternal",Yf="_ErrorInternal",Xf="_EventInternal",ng="_ConstructorInternal",eg="_FallbackInternal",tg="_FunctionInternal",rg="_StructInternal";class ag{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(n,e,t,r,a,o,i,s){if(ai(n,$f,"ParamType"),Object.defineProperty(this,Wf,{value:Zf}),o&&(o=Object.freeze(o.slice())),"array"===r){if(null==i||null==s)throw new Error("")}else if(null!=i||null!=s)throw new Error("");if("tuple"===r){if(null==o)throw new Error("")}else if(null!=o)throw new Error("");Jo(this,{name:e,type:t,baseType:r,indexed:a,components:o,arrayLength:i,arrayChildren:s})}format(n){if(null==n&&(n="sighash"),"json"===n){const e=this.name||"";if(this.isArray()){const n=JSON.parse(this.arrayChildren.format("json"));return n.name=e,n.type+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`,JSON.stringify(n)}const t={type:"tuple"===this.baseType?"tuple":this.type,name:e};return"boolean"==typeof this.indexed&&(t.indexed=this.indexed),this.isTuple()&&(t.components=this.components.map(e=>JSON.parse(e.format(n)))),JSON.stringify(t)}let e="";return this.isArray()?(e+=this.arrayChildren.format(n),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?e+="("+this.components.map(e=>e.format(n)).join("full"===n?", ":",")+")":e+=this.type,"sighash"!==n&&(!0===this.indexed&&(e+=" indexed"),"full"===n&&this.name&&(e+=" "+this.name)),e}isArray(){return"array"===this.baseType}isTuple(){return"tuple"===this.baseType}isIndexable(){return null!=this.indexed}walk(n,e){if(this.isArray()){if(!Array.isArray(n))throw new Error("invalid array value");if(-1!==this.arrayLength&&n.length!==this.arrayLength)throw new Error("array is wrong length");const t=this;return n.map(n=>t.arrayChildren.walk(n,e))}if(this.isTuple()){if(!Array.isArray(n))throw new Error("invalid tuple value");if(n.length!==this.components.length)throw new Error("array is wrong length");const t=this;return n.map((n,r)=>t.components[r].walk(n,e))}return e(this.type,n)}#yn(n,e,t,r){if(this.isArray()){if(!Array.isArray(e))throw new Error("invalid array value");if(-1!==this.arrayLength&&e.length!==this.arrayLength)throw new Error("array is wrong length");const a=this.arrayChildren,o=e.slice();return o.forEach((e,r)=>{a.#yn(n,e,t,n=>{o[r]=n})}),void r(o)}if(this.isTuple()){const a=this.components;let o;if(Array.isArray(e))o=e.slice();else{if(null==e||"object"!=typeof e)throw new Error("invalid tuple value");o=a.map(n=>{if(!n.name)throw new Error("cannot use object value with unnamed components");if(!(n.name in e))throw new Error(`missing value for component ${n.name}`);return e[n.name]})}if(o.length!==this.components.length)throw new Error("array is wrong length");return o.forEach((e,r)=>{a[r].#yn(n,e,t,n=>{o[r]=n})}),void r(o)}const a=t(this.type,e);a.then?n.push(async function(){r(await a)}()):r(a)}async walkAsync(n,e){const t=[],r=[n];return this.#yn(t,n,e,n=>{r[0]=n}),t.length&&await Promise.all(t),r[0]}static from(n,e){if(ag.isParamType(n))return n;if("string"==typeof n)try{return ag.from(Df(n),e)}catch(e){ni(!1,"invalid param type","obj",n)}else if(n instanceof Lf){let t="",r="",a=null;qf(n,Ef(["tuple"])).has("tuple")||n.peekType("OPEN_PAREN")?(r="tuple",a=n.popParams().map(n=>ag.from(n)),t=`tuple(${a.map(n=>n.format()).join(",")})`):(t=Jf(n.popType("TYPE")),r=t);let o=null,i=null;for(;n.length&&n.peekType("BRACKET");){const e=n.pop();o=new ag($f,"",t,r,null,a,i,o),i=e.value,t+=e.text,r="array",a=null}let s=null;if(qf(n,Sf).has("indexed")){if(!e)throw new Error("");s=!0}const c=n.peekType("ID")?n.pop().text:"";if(n.length)throw new Error("leftover tokens");return new ag($f,c,t,r,s,a,i,o)}const t=n.name;ni(!t||"string"==typeof t&&t.match(Ff),"invalid name","obj.name",t);let r=n.indexed;null!=r&&(ni(e,"parameter cannot be indexed","obj.indexed",n.indexed),r=!!r);let a=n.type,o=a.match(Qf);if(o){const e=parseInt(o[2]||"-1"),i=ag.from({type:o[1],components:n.components});return new ag($f,t||"",a,"array",r,null,e,i)}if("tuple"===a||a.startsWith("tuple(")||a.startsWith("(")){const e=null!=n.components?n.components.map(n=>ag.from(n)):null;return new ag($f,t||"",a,"tuple",r,e,null,null)}return a=Jf(n.type),new ag($f,t||"",a,a,r,null,null,null)}static isParamType(n){return n&&n[Wf]===Zf}}class og{type;inputs;constructor(n,e,t){ai(n,$f,"Fragment"),Jo(this,{type:e,inputs:t=Object.freeze(t.slice())})}static from(n){if("string"==typeof n){try{og.from(JSON.parse(n))}catch(n){}return og.from(Df(n))}if(n instanceof Lf){switch(n.peekKeyword(zf)){case"constructor":return ug.from(n);case"error":return cg.from(n);case"event":return lg.from(n);case"fallback":case"receive":return dg.from(n);case"function":return hg.from(n);case"struct":return pg.from(n)}}else if("object"==typeof n){switch(n.type){case"constructor":return ug.from(n);case"error":return cg.from(n);case"event":return lg.from(n);case"fallback":case"receive":return dg.from(n);case"function":return hg.from(n);case"struct":return pg.from(n)}Xo(!1,`unsupported type: ${n.type}`,"UNSUPPORTED_OPERATION",{operation:"Fragment.from"})}ni(!1,"unsupported frgament object","obj",n)}static isConstructor(n){return ug.isFragment(n)}static isError(n){return cg.isFragment(n)}static isEvent(n){return lg.isFragment(n)}static isFunction(n){return hg.isFragment(n)}static isStruct(n){return pg.isFragment(n)}}class ig extends og{name;constructor(n,e,t,r){super(n,e,r),ni("string"==typeof t&&t.match(Ff),"invalid identifier","name",t),r=Object.freeze(r.slice()),Jo(this,{name:t})}}function sg(n,e){return"("+e.map(e=>e.format(n)).join("full"===n?", ":",")+")"}class cg extends ig{constructor(n,e,t){super(n,"error",e,t),Object.defineProperty(this,Wf,{value:Yf})}get selector(){return Mh(this.format("sighash")).substring(0,10)}format(n){if(null==n&&(n="sighash"),"json"===n)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(n)))});const e=[];return"sighash"!==n&&e.push("error"),e.push(this.name+sg(n,this.inputs)),e.join(" ")}static from(n){if(cg.isFragment(n))return n;if("string"==typeof n)return cg.from(Df(n));if(n instanceof Lf){const e=Gf("error",n),t=Kf(n);return Vf(n),new cg($f,e,t)}return new cg($f,n.name,n.inputs?n.inputs.map(ag.from):[])}static isFragment(n){return n&&n[Wf]===Yf}}class lg extends ig{anonymous;constructor(n,e,t,r){super(n,"event",e,t),Object.defineProperty(this,Wf,{value:Xf}),Jo(this,{anonymous:r})}get topicHash(){return Mh(this.format("sighash"))}format(n){if(null==n&&(n="sighash"),"json"===n)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(n)))});const e=[];return"sighash"!==n&&e.push("event"),e.push(this.name+sg(n,this.inputs)),"sighash"!==n&&this.anonymous&&e.push("anonymous"),e.join(" ")}static getTopicHash(n,e){e=(e||[]).map(n=>ag.from(n));return new lg($f,n,e,!1).topicHash}static from(n){if(lg.isFragment(n))return n;if("string"==typeof n)try{return lg.from(Df(n))}catch(e){ni(!1,"invalid event fragment","obj",n)}else if(n instanceof Lf){const e=Gf("event",n),t=Kf(n,!0),r=!!qf(n,Ef(["anonymous"])).has("anonymous");return Vf(n),new lg($f,e,t,r)}return new lg($f,n.name,n.inputs?n.inputs.map(n=>ag.from(n,!0)):[],!!n.anonymous)}static isFragment(n){return n&&n[Wf]===Xf}}class ug extends og{payable;gas;constructor(n,e,t,r,a){super(n,e,t),Object.defineProperty(this,Wf,{value:ng}),Jo(this,{payable:r,gas:a})}format(n){if(Xo(null!=n&&"sighash"!==n,"cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),"json"===n)return JSON.stringify({type:"constructor",stateMutability:this.payable?"payable":"undefined",payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(n)))});const e=[`constructor${sg(n,this.inputs)}`];return this.payable&&e.push("payable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static from(n){if(ug.isFragment(n))return n;if("string"==typeof n)try{return ug.from(Df(n))}catch(e){ni(!1,"invalid constuctor fragment","obj",n)}else if(n instanceof Lf){qf(n,Ef(["constructor"]));const e=Kf(n),t=!!qf(n,xf).has("payable"),r=_f(n);return Vf(n),new ug($f,"constructor",e,t,r)}return new ug($f,"constructor",n.inputs?n.inputs.map(ag.from):[],!!n.payable,null!=n.gas?n.gas:null)}static isFragment(n){return n&&n[Wf]===ng}}class dg extends og{payable;constructor(n,e,t){super(n,"fallback",e),Object.defineProperty(this,Wf,{value:eg}),Jo(this,{payable:t})}format(n){const e=0===this.inputs.length?"receive":"fallback";if("json"===n){const n=this.payable?"payable":"nonpayable";return JSON.stringify({type:e,stateMutability:n})}return`${e}()${this.payable?" payable":""}`}static from(n){if(dg.isFragment(n))return n;if("string"==typeof n)try{return dg.from(Df(n))}catch(e){ni(!1,"invalid fallback fragment","obj",n)}else if(n instanceof Lf){const e=n.toString();ni(n.peekKeyword(Ef(["fallback","receive"])),"type must be fallback or receive","obj",e);if("receive"===n.popKeyword(Ef(["fallback","receive"]))){const e=Kf(n);return ni(0===e.length,"receive cannot have arguments","obj.inputs",e),qf(n,Ef(["payable"])),Vf(n),new dg($f,[],!0)}let t=Kf(n);t.length?ni(1===t.length&&"bytes"===t[0].type,"invalid fallback inputs","obj.inputs",t.map(n=>n.format("minimal")).join(", ")):t=[ag.from("bytes")];const r=Hf(n);if(ni("nonpayable"===r||"payable"===r,"fallback cannot be constants","obj.stateMutability",r),qf(n,Ef(["returns"])).has("returns")){const e=Kf(n);ni(1===e.length&&"bytes"===e[0].type,"invalid fallback outputs","obj.outputs",e.map(n=>n.format("minimal")).join(", "))}return Vf(n),new dg($f,t,"payable"===r)}if("receive"===n.type)return new dg($f,[],!0);if("fallback"===n.type){const e=[ag.from("bytes")],t="payable"===n.stateMutability;return new dg($f,e,t)}ni(!1,"invalid fallback description","obj",n)}static isFragment(n){return n&&n[Wf]===eg}}class hg extends ig{constant;outputs;stateMutability;payable;gas;constructor(n,e,t,r,a,o){super(n,"function",e,r),Object.defineProperty(this,Wf,{value:tg});Jo(this,{constant:"view"===t||"pure"===t,gas:o,outputs:a=Object.freeze(a.slice()),payable:"payable"===t,stateMutability:t})}get selector(){return Mh(this.format("sighash")).substring(0,10)}format(n){if(null==n&&(n="sighash"),"json"===n)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(n))),outputs:this.outputs.map(e=>JSON.parse(e.format(n)))});const e=[];return"sighash"!==n&&e.push("function"),e.push(this.name+sg(n,this.inputs)),"sighash"!==n&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(sg(n,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static getSelector(n,e){e=(e||[]).map(n=>ag.from(n));return new hg($f,n,"view",e,[],null).selector}static from(n){if(hg.isFragment(n))return n;if("string"==typeof n)try{return hg.from(Df(n))}catch(e){ni(!1,"invalid function fragment","obj",n)}else if(n instanceof Lf){const e=Gf("function",n),t=Kf(n),r=Hf(n);let a=[];qf(n,Ef(["returns"])).has("returns")&&(a=Kf(n));const o=_f(n);return Vf(n),new hg($f,e,r,t,a,o)}let e=n.stateMutability;return null==e&&(e="payable","boolean"==typeof n.constant?(e="view",n.constant||(e="payable","boolean"!=typeof n.payable||n.payable||(e="nonpayable"))):"boolean"!=typeof n.payable||n.payable||(e="nonpayable")),new hg($f,n.name,e,n.inputs?n.inputs.map(ag.from):[],n.outputs?n.outputs.map(ag.from):[],null!=n.gas?n.gas:null)}static isFragment(n){return n&&n[Wf]===tg}}class pg extends ig{constructor(n,e,t){super(n,"struct",e,t),Object.defineProperty(this,Wf,{value:rg})}format(){throw new Error("@TODO")}static from(n){if("string"==typeof n)try{return pg.from(Df(n))}catch(e){ni(!1,"invalid struct fragment","obj",n)}else if(n instanceof Lf){const e=Gf("struct",n),t=Kf(n);return Vf(n),new pg($f,e,t)}return new pg($f,n.name,n.inputs?n.inputs.map(ag.from):[])}static isFragment(n){return n&&n[Wf]===rg}}const fg=new Map;fg.set(0,"GENERIC_PANIC"),fg.set(1,"ASSERT_FALSE"),fg.set(17,"OVERFLOW"),fg.set(18,"DIVIDE_BY_ZERO"),fg.set(33,"ENUM_RANGE_ERROR"),fg.set(34,"BAD_STORAGE_DATA"),fg.set(49,"STACK_UNDERFLOW"),fg.set(50,"ARRAY_RANGE_ERROR"),fg.set(65,"OUT_OF_MEMORY"),fg.set(81,"UNINITIALIZED_FUNCTION_CALL");const gg=new RegExp(/^bytes([0-9]*)$/),mg=new RegExp(/^(u?int)([0-9]*)$/);let bg=null,yg=1024;class vg{#vn(n){if(n.isArray())return new nh(this.#vn(n.arrayChildren),n.arrayLength,n.name);if(n.isTuple())return new hh(n.components.map(n=>this.#vn(n)),n.name);switch(n.baseType){case"address":return new Wd(n.name);case"bool":return new eh(n.name);case"string":return new dh(n.name);case"bytes":return new rh(n.name);case"":return new ih(n.name)}let e=n.type.match(mg);if(e){let t=parseInt(e[2]||"256");return ni(0!==t&&t<=256&&t%8==0,"invalid "+e[1]+" bit length","param",n),new uh(t/8,"int"===e[1],n.name)}if(e=n.type.match(gg),e){let t=parseInt(e[1]);return ni(0!==t&&t<=32,"invalid bytes length","param",n),new ah(t,n.name)}ni(!1,"invalid type","type",n.type)}getDefaultValue(n){const e=n.map(n=>this.#vn(ag.from(n)));return new hh(e,"_").defaultValue()}encode(n,e){ei(e.length,n.length,"types/values length mismatch");const t=n.map(n=>this.#vn(ag.from(n))),r=new hh(t,"_"),a=new Js;return r.encode(a,e),a.data}decode(n,e,t){const r=n.map(n=>this.#vn(ag.from(n)));return new hh(r,"_").decode(new $s(e,t,yg))}static _setDefaultMaxInflation(n){ni("number"==typeof n&&Number.isInteger(n),"invalid defaultMaxInflation factor","value",n),yg=n}static defaultAbiCoder(){return null==bg&&(bg=new vg),bg}static getBuiltinCallException(n,e,t){return function(n,e,t,r){let a="missing revert data",o=null,i=null;if(t){a="execution reverted";const n=ii(t);if(t=di(t),0===n.length)a+=" (no data present; likely require(false) occurred",o="require(false)";else if(n.length%32!=4)a+=" (could not decode reason; invalid data length)";else if("0x08c379a0"===di(n.slice(0,4)))try{o=r.decode(["string"],n.slice(4))[0],i={signature:"Error(string)",name:"Error",args:[o]},a+=`: ${JSON.stringify(o)}`}catch(n){a+=" (could not decode reason; invalid string data)"}else if("0x4e487b71"===di(n.slice(0,4)))try{const e=Number(r.decode(["uint256"],n.slice(4))[0]);i={signature:"Panic(uint256)",name:"Panic",args:[e]},o=`Panic due to ${fg.get(e)||"UNKNOWN"}(${e})`,a+=`: ${o}`}catch(n){a+=" (could not decode panic code)"}else a+=" (unknown custom error)"}const s={to:e.to?jd(e.to):null,data:e.data||"0x"};return e.from&&(s.from=jd(e.from)),Yo(a,"CALL_EXCEPTION",{action:n,data:t,reason:o,transaction:s,invocation:null,revert:i})}(n,e,t,vg.defaultAbiCoder())}}function wg(n){const e=Qi(n);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return yi(e,32)}function kg(n){const e=ii(n,"bytes");if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let t=31;for(;0===e[t-1];)t--;return Ji(e.slice(0,t))}class Ag{fragment;name;signature;topic;args;constructor(n,e,t){const r=n.name,a=n.format();Jo(this,{fragment:n,name:r,signature:a,topic:e,args:t})}}class Eg{fragment;name;args;signature;selector;value;constructor(n,e,t,r){const a=n.name,o=n.format();Jo(this,{fragment:n,name:a,args:t,signature:o,selector:e,value:r})}}class xg{fragment;name;args;signature;selector;constructor(n,e,t){const r=n.name,a=n.format();Jo(this,{fragment:n,name:r,args:t,signature:a,selector:e})}}class Pg{hash;_isIndexed;static isIndexed(n){return!(!n||!n._isIndexed)}constructor(n){Jo(this,{hash:n,_isIndexed:!0})}}const Ig={0:"generic panic",1:"assert(false)",17:"arithmetic overflow",18:"division or modulo by zero",33:"enum overflow",34:"invalid encoded storage byte array accessed",49:"out-of-bounds array access; popping on an empty array",50:"out-of-bounds access of an array or bytesN",65:"out of memory",81:"uninitialized function"},Ng={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:n=>`reverted with reason string ${JSON.stringify(n)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:n=>{let e="unknown panic code";return n>=0&&n<=255&&Ig[n.toString()]&&(e=Ig[n.toString()]),`reverted with panic code 0x${n.toString(16)} (${e})`}}};class zg{fragments;deploy;fallback;receive;#wn;#kn;#An;#En;constructor(n){let e=[];e="string"==typeof n?JSON.parse(n):n,this.#An=new Map,this.#wn=new Map,this.#kn=new Map;const t=[];for(const n of e)try{t.push(og.from(n))}catch(n){}Jo(this,{fragments:Object.freeze(t)});let r=null,a=!1;this.#En=this.getAbiCoder(),this.fragments.forEach((n,e)=>{let t;switch(n.type){case"constructor":if(this.deploy)return;return void Jo(this,{deploy:n});case"fallback":return void(0===n.inputs.length?a=!0:(ni(!r||n.payable!==r.payable,"conflicting fallback fragments",`fragments[${e}]`,n),r=n,a=r.payable));case"function":t=this.#An;break;case"event":t=this.#kn;break;case"error":t=this.#wn;break;default:return}const o=n.format();t.has(o)||t.set(o,n)}),this.deploy||Jo(this,{deploy:ug.from("constructor()")}),Jo(this,{fallback:r,receive:a})}format(n){const e=n?"minimal":"full",t=this.fragments.map(n=>n.format(e));return t}formatJson(){const n=this.fragments.map(n=>n.format("json"));return JSON.stringify(n.map(n=>JSON.parse(n)))}getAbiCoder(){return vg.defaultAbiCoder()}#xn(n,e,t){if(ci(n)){const e=n.toLowerCase();for(const n of this.#An.values())if(e===n.selector)return n;return null}if(-1===n.indexOf("(")){const r=[];for(const[e,t]of this.#An)e.split("(")[0]===n&&r.push(t);if(e){const n=e.length>0?e[e.length-1]:null;let t=e.length,a=!0;$d.isTyped(n)&&"overrides"===n.type&&(a=!1,t--);for(let n=r.length-1;n>=0;n--){const e=r[n].inputs.length;e===t||a&&e===t-1||r.splice(n,1)}for(let n=r.length-1;n>=0;n--){const t=r[n].inputs;for(let a=0;a<e.length;a++)if($d.isTyped(e[a])){if(a>=t.length){if("overrides"===e[a].type)continue;r.splice(n,1);break}if(e[a].type!==t[a].baseType){r.splice(n,1);break}}}}if(1===r.length&&e&&e.length!==r[0].inputs.length){const n=e[e.length-1];(null==n||Array.isArray(n)||"object"!=typeof n)&&r.splice(0,1)}if(0===r.length)return null;if(r.length>1&&t){ni(!1,`ambiguous function description (i.e. matches ${r.map(n=>JSON.stringify(n.format())).join(", ")})`,"key",n)}return r[0]}const r=this.#An.get(hg.from(n).format());return r||null}getFunctionName(n){const e=this.#xn(n,null,!1);return ni(e,"no matching function","key",n),e.name}hasFunction(n){return!!this.#xn(n,null,!1)}getFunction(n,e){return this.#xn(n,e||null,!0)}forEachFunction(n){const e=Array.from(this.#An.keys());e.sort((n,e)=>n.localeCompare(e));for(let t=0;t<e.length;t++){const r=e[t];n(this.#An.get(r),t)}}#Pn(n,e,t){if(ci(n)){const e=n.toLowerCase();for(const n of this.#kn.values())if(e===n.topicHash)return n;return null}if(-1===n.indexOf("(")){const r=[];for(const[e,t]of this.#kn)e.split("(")[0]===n&&r.push(t);if(e){for(let n=r.length-1;n>=0;n--)r[n].inputs.length<e.length&&r.splice(n,1);for(let n=r.length-1;n>=0;n--){const t=r[n].inputs;for(let a=0;a<e.length;a++)if($d.isTyped(e[a])&&e[a].type!==t[a].baseType){r.splice(n,1);break}}}if(0===r.length)return null;if(r.length>1&&t){ni(!1,`ambiguous event description (i.e. matches ${r.map(n=>JSON.stringify(n.format())).join(", ")})`,"key",n)}return r[0]}const r=this.#kn.get(lg.from(n).format());return r||null}getEventName(n){const e=this.#Pn(n,null,!1);return ni(e,"no matching event","key",n),e.name}hasEvent(n){return!!this.#Pn(n,null,!1)}getEvent(n,e){return this.#Pn(n,e||null,!0)}forEachEvent(n){const e=Array.from(this.#kn.keys());e.sort((n,e)=>n.localeCompare(e));for(let t=0;t<e.length;t++){const r=e[t];n(this.#kn.get(r),t)}}getError(n,e){if(ci(n)){const e=n.toLowerCase();if(Ng[e])return cg.from(Ng[e].signature);for(const n of this.#wn.values())if(e===n.selector)return n;return null}if(-1===n.indexOf("(")){const e=[];for(const[t,r]of this.#wn)t.split("(")[0]===n&&e.push(r);if(0===e.length)return"Error"===n?cg.from("error Error(string)"):"Panic"===n?cg.from("error Panic(uint256)"):null;if(e.length>1){ni(!1,`ambiguous error description (i.e. ${e.map(n=>JSON.stringify(n.format())).join(", ")})`,"name",n)}return e[0]}if("Error(string)"===(n=cg.from(n).format()))return cg.from("error Error(string)");if("Panic(uint256)"===n)return cg.from("error Panic(uint256)");const t=this.#wn.get(n);return t||null}forEachError(n){const e=Array.from(this.#wn.keys());e.sort((n,e)=>n.localeCompare(e));for(let t=0;t<e.length;t++){const r=e[t];n(this.#wn.get(r),t)}}_decodeParams(n,e){return this.#En.decode(n,e)}_encodeParams(n,e){return this.#En.encode(n,e)}encodeDeploy(n){return this._encodeParams(this.deploy.inputs,n||[])}decodeErrorResult(n,e){if("string"==typeof n){const e=this.getError(n);ni(e,"unknown error","fragment",n),n=e}return ni(fi(e,0,4)===n.selector,`data signature does not match error ${n.name}.`,"data",e),this._decodeParams(n.inputs,fi(e,4))}encodeErrorResult(n,e){if("string"==typeof n){const e=this.getError(n);ni(e,"unknown error","fragment",n),n=e}return hi([n.selector,this._encodeParams(n.inputs,e||[])])}decodeFunctionData(n,e){if("string"==typeof n){const e=this.getFunction(n);ni(e,"unknown function","fragment",n),n=e}return ni(fi(e,0,4)===n.selector,`data signature does not match function ${n.name}.`,"data",e),this._decodeParams(n.inputs,fi(e,4))}encodeFunctionData(n,e){if("string"==typeof n){const e=this.getFunction(n);ni(e,"unknown function","fragment",n),n=e}return hi([n.selector,this._encodeParams(n.inputs,e||[])])}decodeFunctionResult(n,e){if("string"==typeof n){const e=this.getFunction(n);ni(e,"unknown function","fragment",n),n=e}let t="invalid length for result data";const r=si(e);if(r.length%32==0)try{return this.#En.decode(n.outputs,r)}catch(n){t="could not decode result data"}Xo(!1,t,"BAD_DATA",{value:di(r),info:{method:n.name,signature:n.format()}})}makeError(n,e){const t=ii(n,"data"),r=vg.getBuiltinCallException("call",e,t);if(r.message.startsWith("execution reverted (unknown custom error)")){const n=di(t.slice(0,4)),e=this.getError(n);if(e)try{const n=this.#En.decode(e.inputs,t.slice(4));r.revert={name:e.name,signature:e.format(),args:n},r.reason=r.revert.signature,r.message=`execution reverted: ${r.reason}`}catch(n){r.message="execution reverted (coult not decode custom error)"}}const a=this.parseTransaction(e);return a&&(r.invocation={method:a.name,signature:a.signature,args:a.args}),r}encodeFunctionResult(n,e){if("string"==typeof n){const e=this.getFunction(n);ni(e,"unknown function","fragment",n),n=e}return di(this.#En.encode(n.outputs,e||[]))}encodeFilterTopics(n,e){if("string"==typeof n){const e=this.getEvent(n);ni(e,"unknown event","eventFragment",n),n=e}Xo(e.length<=n.inputs.length,`too many arguments for ${n.format()}`,"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:n.inputs.length});const t=[];n.anonymous||t.push(n.topicHash);const r=(n,e)=>"string"===n.type?Mh(e):"bytes"===n.type?hl(di(e)):("bool"===n.type&&"boolean"==typeof e?e=e?"0x01":"0x00":n.type.match(/^u?int/)?e=Ti(e):n.type.match(/^bytes/)?e=yi(e,32):"address"===n.type&&this.#En.encode(["address"],[e]),bi(di(e),32));for(e.forEach((e,a)=>{const o=n.inputs[a];o.indexed?null==e?t.push(null):"array"===o.baseType||"tuple"===o.baseType?ni(!1,"filtering with tuples or arrays not supported","contract."+o.name,e):Array.isArray(e)?t.push(e.map(n=>r(o,n))):t.push(r(o,e)):ni(null==e,"cannot filter non-indexed parameters; must be null","contract."+o.name,e)});t.length&&null===t[t.length-1];)t.pop();return t}encodeEventLog(n,e){if("string"==typeof n){const e=this.getEvent(n);ni(e,"unknown event","eventFragment",n),n=e}const t=[],r=[],a=[];return n.anonymous||t.push(n.topicHash),ni(e.length===n.inputs.length,"event arguments/values mismatch","values",e),n.inputs.forEach((n,o)=>{const i=e[o];if(n.indexed)if("string"===n.type)t.push(Mh(i));else if("bytes"===n.type)t.push(hl(i));else{if("tuple"===n.baseType||"array"===n.baseType)throw new Error("not implemented");t.push(this.#En.encode([n.type],[i]))}else r.push(n),a.push(i)}),{data:this.#En.encode(r,a),topics:t}}decodeEventLog(n,e,t){if("string"==typeof n){const e=this.getEvent(n);ni(e,"unknown event","eventFragment",n),n=e}if(null!=t&&!n.anonymous){const e=n.topicHash;ni(ci(t[0],32)&&t[0].toLowerCase()===e,"fragment/topic mismatch","topics[0]",t[0]),t=t.slice(1)}const r=[],a=[],o=[];n.inputs.forEach((n,e)=>{n.indexed?"string"===n.type||"bytes"===n.type||"tuple"===n.baseType||"array"===n.baseType?(r.push(ag.from({type:"bytes32",name:n.name})),o.push(!0)):(r.push(n),o.push(!1)):(a.push(n),o.push(!1))});const i=null!=t?this.#En.decode(r,hi(t)):null,s=this.#En.decode(a,e,!0),c=[],l=[];let u=0,d=0;return n.inputs.forEach((n,e)=>{let t=null;if(n.indexed)if(null==i)t=new Pg(null);else if(o[e])t=new Pg(i[d++]);else try{t=i[d++]}catch(n){t=n}else try{t=s[u++]}catch(n){t=n}c.push(t),l.push(n.name||null)}),Ks.fromItems(c,l)}parseTransaction(n){const e=ii(n.data,"tx.data"),t=Pi(null!=n.value?n.value:0,"tx.value"),r=this.getFunction(di(e.slice(0,4)));if(!r)return null;const a=this.#En.decode(r.inputs,e.slice(4));return new Eg(r,r.selector,a,t)}parseCallResult(n){throw new Error("@TODO")}parseLog(n){const e=this.getEvent(n.topics[0]);return!e||e.anonymous?null:new Ag(e,e.topicHash,this.decodeEventLog(e,n.data,n.topics))}parseError(n){const e=di(n),t=this.getError(fi(e,0,4));if(!t)return null;const r=this.#En.decode(t.inputs,fi(e,4));return new xg(t,t.selector,r)}static from(n){return n instanceof zg?n:"string"==typeof n?new zg(JSON.parse(n)):"function"==typeof n.formatJson?new zg(n.formatJson()):"function"==typeof n.format?new zg(n.format("json")):new zg(n)}}const Rg=BigInt(0);function Sg(n){return null==n?null:n}function Tg(n){return null==n?null:n.toString()}class Bg{gasPrice;maxFeePerGas;maxPriorityFeePerGas;constructor(n,e,t){Jo(this,{gasPrice:Sg(n),maxFeePerGas:Sg(e),maxPriorityFeePerGas:Sg(t)})}toJSON(){const{gasPrice:n,maxFeePerGas:e,maxPriorityFeePerGas:t}=this;return{_type:"FeeData",gasPrice:Tg(n),maxFeePerGas:Tg(e),maxPriorityFeePerGas:Tg(t)}}}function Cg(n){const e={};n.to&&(e.to=n.to),n.from&&(e.from=n.from),n.data&&(e.data=di(n.data));const t="chainId,gasLimit,gasPrice,maxFeePerBlobGas,maxFeePerGas,maxPriorityFeePerGas,value".split(/,/);for(const r of t)r in n&&null!=n[r]&&(e[r]=Pi(n[r],`request.${r}`));const r="type,nonce".split(/,/);for(const t of r)t in n&&null!=n[t]&&(e[t]=Ri(n[t],`request.${t}`));return n.accessList&&(e.accessList=fh(n.accessList)),n.authorizationList&&(e.authorizationList=n.authorizationList.slice()),"blockTag"in n&&(e.blockTag=n.blockTag),"enableCcipRead"in n&&(e.enableCcipRead=!!n.enableCcipRead),"customData"in n&&(e.customData=n.customData),"blobVersionedHashes"in n&&n.blobVersionedHashes&&(e.blobVersionedHashes=n.blobVersionedHashes.slice()),"kzg"in n&&(e.kzg=n.kzg),"blobWrapperVersion"in n&&(e.blobWrapperVersion=n.blobWrapperVersion),"blobs"in n&&n.blobs&&(e.blobs=n.blobs.map(n=>li(n)?di(n):Object.assign({},n))),e}class Og{provider;number;hash;timestamp;parentHash;parentBeaconBlockRoot;nonce;difficulty;gasLimit;gasUsed;stateRoot;receiptsRoot;blobGasUsed;excessBlobGas;miner;prevRandao;extraData;baseFeePerGas;#In;constructor(n,e){this.#In=n.transactions.map(n=>"string"!=typeof n?new jg(n,e):n),Jo(this,{provider:e,hash:Sg(n.hash),number:n.number,timestamp:n.timestamp,parentHash:n.parentHash,parentBeaconBlockRoot:n.parentBeaconBlockRoot,nonce:n.nonce,difficulty:n.difficulty,gasLimit:n.gasLimit,gasUsed:n.gasUsed,blobGasUsed:n.blobGasUsed,excessBlobGas:n.excessBlobGas,miner:n.miner,prevRandao:Sg(n.prevRandao),extraData:n.extraData,baseFeePerGas:Sg(n.baseFeePerGas),stateRoot:n.stateRoot,receiptsRoot:n.receiptsRoot})}get transactions(){return this.#In.map(n=>"string"==typeof n?n:n.hash)}get prefetchedTransactions(){const n=this.#In.slice();return 0===n.length?[]:(Xo("object"==typeof n[0],"transactions were not prefetched with block request","UNSUPPORTED_OPERATION",{operation:"transactionResponses()"}),n)}toJSON(){const{baseFeePerGas:n,difficulty:e,extraData:t,gasLimit:r,gasUsed:a,hash:o,miner:i,prevRandao:s,nonce:c,number:l,parentHash:u,parentBeaconBlockRoot:d,stateRoot:h,receiptsRoot:p,timestamp:f,transactions:g}=this;return{_type:"Block",baseFeePerGas:Tg(n),difficulty:Tg(e),extraData:t,gasLimit:Tg(r),gasUsed:Tg(a),blobGasUsed:Tg(this.blobGasUsed),excessBlobGas:Tg(this.excessBlobGas),hash:o,miner:i,prevRandao:s,nonce:c,number:l,parentHash:u,timestamp:f,parentBeaconBlockRoot:d,stateRoot:h,receiptsRoot:p,transactions:g}}[Symbol.iterator](){let n=0;const e=this.transactions;return{next:()=>n<this.length?{value:e[n++],done:!1}:{value:void 0,done:!0}}}get length(){return this.#In.length}get date(){return null==this.timestamp?null:new Date(1e3*this.timestamp)}async getTransaction(n){let e;if("number"==typeof n)e=this.#In[n];else{const t=n.toLowerCase();for(const n of this.#In){if("string"==typeof n){if(n!==t)continue;e=n;break}if(n.hash===t){e=n;break}}}if(null==e)throw new Error("no such tx");return"string"==typeof e?await this.provider.getTransaction(e):e}getPrefetchedTransaction(n){const e=this.prefetchedTransactions;if("number"==typeof n)return e[n];n=n.toLowerCase();for(const t of e)if(t.hash===n)return t;ni(!1,"no matching transaction","indexOrHash",n)}isMined(){return!!this.hash}isLondon(){return!!this.baseFeePerGas}orphanedEvent(){if(!this.isMined())throw new Error("");return{orphan:"drop-block",hash:(n=this).hash,number:n.number};var n}}class Ug{provider;transactionHash;blockHash;blockNumber;removed;address;data;topics;index;transactionIndex;constructor(n,e){this.provider=e;const t=Object.freeze(n.topics.slice());Jo(this,{transactionHash:n.transactionHash,blockHash:n.blockHash,blockNumber:n.blockNumber,removed:n.removed,address:n.address,data:n.data,topics:t,index:n.index,transactionIndex:n.transactionIndex})}toJSON(){const{address:n,blockHash:e,blockNumber:t,data:r,index:a,removed:o,topics:i,transactionHash:s,transactionIndex:c}=this;return{_type:"log",address:n,blockHash:e,blockNumber:t,data:r,index:a,removed:o,topics:i,transactionHash:s,transactionIndex:c}}async getBlock(){const n=await this.provider.getBlock(this.blockHash);return Xo(!!n,"failed to find transaction","UNKNOWN_ERROR",{}),n}async getTransaction(){const n=await this.provider.getTransaction(this.transactionHash);return Xo(!!n,"failed to find transaction","UNKNOWN_ERROR",{}),n}async getTransactionReceipt(){const n=await this.provider.getTransactionReceipt(this.transactionHash);return Xo(!!n,"failed to find transaction receipt","UNKNOWN_ERROR",{}),n}removedEvent(){return{orphan:"drop-log",log:{transactionHash:(n=this).transactionHash,blockHash:n.blockHash,blockNumber:n.blockNumber,address:n.address,data:n.data,topics:Object.freeze(n.topics.slice()),index:n.index}};var n}}class Fg{provider;to;from;contractAddress;hash;index;blockHash;blockNumber;logsBloom;gasUsed;blobGasUsed;cumulativeGasUsed;gasPrice;blobGasPrice;type;status;root;#Nn;constructor(n,e){this.#Nn=Object.freeze(n.logs.map(n=>new Ug(n,e)));let t=Rg;null!=n.effectiveGasPrice?t=n.effectiveGasPrice:null!=n.gasPrice&&(t=n.gasPrice),Jo(this,{provider:e,to:n.to,from:n.from,contractAddress:n.contractAddress,hash:n.hash,index:n.index,blockHash:n.blockHash,blockNumber:n.blockNumber,logsBloom:n.logsBloom,gasUsed:n.gasUsed,cumulativeGasUsed:n.cumulativeGasUsed,blobGasUsed:n.blobGasUsed,gasPrice:t,blobGasPrice:n.blobGasPrice,type:n.type,status:n.status,root:n.root})}get logs(){return this.#Nn}toJSON(){const{to:n,from:e,contractAddress:t,hash:r,index:a,blockHash:o,blockNumber:i,logsBloom:s,logs:c,status:l,root:u}=this;return{_type:"TransactionReceipt",blockHash:o,blockNumber:i,contractAddress:t,cumulativeGasUsed:Tg(this.cumulativeGasUsed),from:e,gasPrice:Tg(this.gasPrice),blobGasUsed:Tg(this.blobGasUsed),blobGasPrice:Tg(this.blobGasPrice),gasUsed:Tg(this.gasUsed),hash:r,index:a,logs:c,logsBloom:s,root:u,status:l,to:n}}get length(){return this.logs.length}[Symbol.iterator](){let n=0;return{next:()=>n<this.length?{value:this.logs[n++],done:!1}:{value:void 0,done:!0}}}get fee(){return this.gasUsed*this.gasPrice}async getBlock(){const n=await this.provider.getBlock(this.blockHash);if(null==n)throw new Error("TODO");return n}async getTransaction(){const n=await this.provider.getTransaction(this.hash);if(null==n)throw new Error("TODO");return n}async getResult(){return await this.provider.getTransactionResult(this.hash)}async confirmations(){return await this.provider.getBlockNumber()-this.blockNumber+1}removedEvent(){return Dg(this)}reorderedEvent(n){return Xo(!n||n.isMined(),"unmined 'other' transction cannot be orphaned","UNSUPPORTED_OPERATION",{operation:"reorderedEvent(other)"}),Lg(this,n)}}class jg{provider;blockNumber;blockHash;index;hash;type;to;from;nonce;gasLimit;gasPrice;maxPriorityFeePerGas;maxFeePerGas;maxFeePerBlobGas;data;value;chainId;signature;accessList;blobVersionedHashes;authorizationList;#zn;constructor(n,e){this.provider=e,this.blockNumber=null!=n.blockNumber?n.blockNumber:null,this.blockHash=null!=n.blockHash?n.blockHash:null,this.hash=n.hash,this.index=n.index,this.type=n.type,this.from=n.from,this.to=n.to||null,this.gasLimit=n.gasLimit,this.nonce=n.nonce,this.data=n.data,this.value=n.value,this.gasPrice=n.gasPrice,this.maxPriorityFeePerGas=null!=n.maxPriorityFeePerGas?n.maxPriorityFeePerGas:null,this.maxFeePerGas=null!=n.maxFeePerGas?n.maxFeePerGas:null,this.maxFeePerBlobGas=null!=n.maxFeePerBlobGas?n.maxFeePerBlobGas:null,this.chainId=n.chainId,this.signature=n.signature,this.accessList=null!=n.accessList?n.accessList:null,this.blobVersionedHashes=null!=n.blobVersionedHashes?n.blobVersionedHashes:null,this.authorizationList=null!=n.authorizationList?n.authorizationList:null,this.#zn=-1}toJSON(){const{blockNumber:n,blockHash:e,index:t,hash:r,type:a,to:o,from:i,nonce:s,data:c,signature:l,accessList:u,blobVersionedHashes:d}=this;return{_type:"TransactionResponse",accessList:u,blockNumber:n,blockHash:e,blobVersionedHashes:d,chainId:Tg(this.chainId),data:c,from:i,gasLimit:Tg(this.gasLimit),gasPrice:Tg(this.gasPrice),hash:r,maxFeePerGas:Tg(this.maxFeePerGas),maxPriorityFeePerGas:Tg(this.maxPriorityFeePerGas),maxFeePerBlobGas:Tg(this.maxFeePerBlobGas),nonce:s,signature:l,to:o,index:t,type:a,value:Tg(this.value)}}async getBlock(){let n=this.blockNumber;if(null==n){const e=await this.getTransaction();e&&(n=e.blockNumber)}if(null==n)return null;const e=this.provider.getBlock(n);if(null==e)throw new Error("TODO");return e}async getTransaction(){return this.provider.getTransaction(this.hash)}async confirmations(){if(null==this.blockNumber){const{tx:n,blockNumber:e}=await Qo({tx:this.getTransaction(),blockNumber:this.provider.getBlockNumber()});return null==n||null==n.blockNumber?0:e-n.blockNumber+1}return await this.provider.getBlockNumber()-this.blockNumber+1}async wait(n,e){const t=null==n?1:n,r=null==e?0:e;let a=this.#zn,o=-1,i=-1===a;const s=async()=>{if(i)return null;const{blockNumber:n,nonce:e}=await Qo({blockNumber:this.provider.getBlockNumber(),nonce:this.provider.getTransactionCount(this.from)});if(e<this.nonce)return void(a=n);if(i)return null;const r=await this.getTransaction();if(!r||null==r.blockNumber)for(-1===o&&(o=a-3,o<this.#zn&&(o=this.#zn));o<=n;){if(i)return null;const e=await this.provider.getBlock(o,!0);if(null==e)return;for(const n of e)if(n===this.hash)return;for(let r=0;r<e.length;r++){const o=await e.getTransaction(r);if(o.from===this.from&&o.nonce===this.nonce){if(i)return null;const e=await this.provider.getTransactionReceipt(o.hash);if(null==e)return;if(n-e.blockNumber+1<t)return;let r="replaced";o.data===this.data&&o.to===this.to&&o.value===this.value?r="repriced":"0x"===o.data&&o.from===o.to&&o.value===Rg&&(r="cancelled"),Xo(!1,"transaction was replaced","TRANSACTION_REPLACED",{cancelled:"replaced"===r||"cancelled"===r,reason:r,replacement:o.replaceableTransaction(a),hash:o.hash,receipt:e})}}o++}},c=n=>{if(null==n||0!==n.status)return n;Xo(!1,"transaction execution reverted","CALL_EXCEPTION",{action:"sendTransaction",data:null,reason:null,invocation:null,revert:null,transaction:{to:n.to,from:n.from,data:""},receipt:n})},l=await this.provider.getTransactionReceipt(this.hash);if(0===t)return c(l);if(l){if(1===t||await l.confirmations()>=t)return c(l)}else if(await s(),0===t)return null;const u=new Promise((n,e)=>{const o=[],l=()=>{o.forEach(n=>n())};if(o.push(()=>{i=!0}),r>0){const n=setTimeout(()=>{l(),e(Yo("wait for transaction timeout","TIMEOUT"))},r);o.push(()=>{clearTimeout(n)})}const u=async r=>{if(await r.confirmations()>=t){l();try{n(c(r))}catch(n){e(n)}}};if(o.push(()=>{this.provider.off(this.hash,u)}),this.provider.on(this.hash,u),a>=0){const n=async()=>{try{await s()}catch(n){if(Wo(n,"TRANSACTION_REPLACED"))return l(),void e(n)}i||this.provider.once("block",n)};o.push(()=>{this.provider.off("block",n)}),this.provider.once("block",n)}});return await u}isMined(){return null!=this.blockHash}isLegacy(){return 0===this.type}isBerlin(){return 1===this.type}isLondon(){return 2===this.type}isCancun(){return 3===this.type}removedEvent(){return Xo(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Dg(this)}reorderedEvent(n){return Xo(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Xo(!n||n.isMined(),"unmined 'other' transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Lg(this,n)}replaceableTransaction(n){ni(Number.isInteger(n)&&n>=0,"invalid startBlock","startBlock",n);const e=new jg(this,this.provider);return e.#zn=n,e}}function Lg(n,e){return{orphan:"reorder-transaction",tx:n,other:e}}function Dg(n){return{orphan:"drop-transaction",tx:n}}class Mg extends Ug{interface;fragment;args;constructor(n,e,t){super(n,n.provider);Jo(this,{args:e.decodeEventLog(t,n.data,n.topics),fragment:t,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}class Gg extends Ug{error;constructor(n,e){super(n,n.provider),Jo(this,{error:e})}}class qg extends Fg{#Rn;constructor(n,e,t){super(t,e),this.#Rn=n}get logs(){return super.logs.map(n=>{const e=n.topics.length?this.#Rn.getEvent(n.topics[0]):null;if(e)try{return new Mg(n,this.#Rn,e)}catch(e){return new Gg(n,e)}return n})}}class Hg extends jg{#Rn;constructor(n,e,t){super(t,e),this.#Rn=n}async wait(n,e){const t=await super.wait(n,e);return null==t?null:new qg(this.#Rn,this.provider,t)}}class Kg extends Hi{log;constructor(n,e,t,r){super(n,e,t),Jo(this,{log:r})}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}}class _g extends Kg{constructor(n,e,t,r,a){super(n,e,t,new Mg(a,n.interface,r));Jo(this,{args:n.interface.decodeEventLog(r,this.log.data,this.log.topics),fragment:r})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}const Vg=BigInt(0);function Qg(n){return n&&"function"==typeof n.call}function Jg(n){return n&&"function"==typeof n.estimateGas}function $g(n){return n&&"function"==typeof n.resolveName}function Wg(n){return n&&"function"==typeof n.sendTransaction}function Zg(n){if(null!=n){if($g(n))return n;if(n.provider)return n.provider}}class Yg{#Sn;fragment;constructor(n,e,t){if(Jo(this,{fragment:e}),e.inputs.length<t.length)throw new Error("too many arguments");const r=Xg(n.runner,"resolveName"),a=$g(r)?r:null;this.#Sn=async function(){const r=await Promise.all(e.inputs.map((n,e)=>null==t[e]?null:n.walkAsync(t[e],(n,e)=>"address"===n?Array.isArray(e)?Promise.all(e.map(n=>Kd(n,a))):Kd(e,a):e)));return n.interface.encodeFilterTopics(e,r)}()}getTopicFilter(){return this.#Sn}}function Xg(n,e){return null==n?null:"function"==typeof n[e]?n:n.provider&&"function"==typeof n.provider[e]?n.provider:null}function nm(n){return null==n?null:n.provider||null}async function em(n,e){const t=$d.dereference(n,"overrides");ni("object"==typeof t,"invalid overrides parameter","overrides",n);const r=Cg(t);return ni(null==r.to||(e||[]).indexOf("to")>=0,"cannot override to","overrides.to",r.to),ni(null==r.data||(e||[]).indexOf("data")>=0,"cannot override data","overrides.data",r.data),r.from&&(r.from=r.from),r}async function tm(n,e,t){const r=Xg(n,"resolveName"),a=$g(r)?r:null;return await Promise.all(e.map((n,e)=>n.walkAsync(t[e],(n,e)=>(e=$d.dereference(e,n),"address"===n?Kd(e,a):e))))}function rm(n){const e=async function(e){const t=await em(e,["data"]);t.to=await n.getAddress(),t.from&&(t.from=await Kd(t.from,Zg(n.runner)));const r=n.interface,a=Pi(t.value||Vg,"overrides.value")===Vg,o="0x"===(t.data||"0x");!r.fallback||r.fallback.payable||!r.receive||o||a||ni(!1,"cannot send data to receive or send value to non-payable fallback","overrides",e),ni(r.fallback||o,"cannot send data to receive-only contract","overrides.data",t.data);return ni(r.receive||r.fallback&&r.fallback.payable||a,"cannot send value to non-payable fallback","overrides.value",t.value),ni(r.fallback||o,"cannot send data to receive-only contract","overrides.data",t.data),t},t=async function(t){const r=n.runner;Xo(Wg(r),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const a=await r.sendTransaction(await e(t)),o=nm(n.runner);return new Hg(n.interface,o,a)},r=async n=>await t(n);return Jo(r,{_contract:n,estimateGas:async function(t){const r=Xg(n.runner,"estimateGas");return Xo(Jg(r),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await r.estimateGas(await e(t))},populateTransaction:e,send:t,staticCall:async function(t){const r=Xg(n.runner,"call");Xo(Qg(r),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const a=await e(t);try{return await r.call(a)}catch(e){if(Zo(e)&&e.data)throw n.interface.makeError(e.data,a);throw e}}}),r}const am=Symbol.for("_ethersInternal_contract"),om=new WeakMap;function im(n){return om.get(n[am])}async function sm(n,e){let t,r=null;if(Array.isArray(e)){const r=function(e){if(ci(e,32))return e;const t=n.interface.getEvent(e);return ni(t,"unknown fragment","name",e),t.topicHash};t=e.map(n=>null==n?null:Array.isArray(n)?n.map(r):r(n))}else"*"===e?t=[null]:"string"==typeof e?ci(e,32)?t=[e]:(r=n.interface.getEvent(e),ni(r,"unknown fragment","event",e),t=[r.topicHash]):(a=e)&&"object"==typeof a&&"getTopicFilter"in a&&"function"==typeof a.getTopicFilter&&a.fragment?t=await e.getTopicFilter():"fragment"in e?(r=e.fragment,t=[r.topicHash]):ni(!1,"unknown event name","event",e);var a;t=t.map(n=>{if(null==n)return null;if(Array.isArray(n)){const e=Array.from(new Set(n.map(n=>n.toLowerCase())).values());return 1===e.length?e[0]:(e.sort(),e)}return n.toLowerCase()});return{fragment:r,tag:t.map(n=>null==n?"null":Array.isArray(n)?n.join("|"):n).join("&"),topics:t}}async function cm(n,e){const{subs:t}=im(n);return t.get((await sm(n,e)).tag)||null}async function lm(n,e,t){const r=nm(n.runner);Xo(r,"contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:e});const{fragment:a,tag:o,topics:i}=await sm(n,t),{addr:s,subs:c}=im(n);let l=c.get(o);if(!l){const e={address:s||n,topics:i},u=e=>{let r=a;if(null==r)try{r=n.interface.getEvent(e.topics[0])}catch(n){}if(r){const o=r,i=a?n.interface.decodeEventLog(a,e.data,e.topics):[];dm(n,t,i,r=>new _g(n,r,t,o,e))}else dm(n,t,[],r=>new Kg(n,r,t,e))};let d=[];l={tag:o,listeners:[],start:()=>{d.length||d.push(r.on(e,u))},stop:async()=>{if(0==d.length)return;let n=d;d=[],await Promise.all(n),r.off(e,u)}},c.set(o,l)}return l}let um=Promise.resolve();async function dm(n,e,t,r){try{await um}catch(n){}const a=async function(n,e,t,r){await um;const a=await cm(n,e);if(!a)return!1;const o=a.listeners.length;return a.listeners=a.listeners.filter(({listener:e,once:a})=>{const o=Array.from(t);r&&o.push(r(a?null:e));try{e.call(n,...o)}catch(n){}return!a}),0===a.listeners.length&&(a.stop(),im(n).subs.delete(a.tag)),o>0}(n,e,t,r);return um=a,await a}const hm=["then"];class pm{target;interface;runner;filters;[am];fallback;constructor(n,e,t,r){ni("string"==typeof n||Gd(n),"invalid value for Contract target","target",n),null==t&&(t=null);const a=zg.from(e);let o;Jo(this,{target:n,runner:t,interface:a}),Object.defineProperty(this,am,{value:{}});let i=null,s=null;if(r){const n=nm(t);s=new Hg(this.interface,n,r)}let c=new Map;if("string"==typeof n)if(ci(n))i=n,o=Promise.resolve(n);else{const e=Xg(t,"resolveName");if(!$g(e))throw Yo("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});o=e.resolveName(n).then(e=>{if(null==e)throw Yo("an ENS name used for a contract target must be correctly configured","UNCONFIGURED_NAME",{value:n});return im(this).addr=e,e})}else o=n.getAddress().then(n=>{if(null==n)throw new Error("TODO");return im(this).addr=n,n});var l,u;l=this,u={addrPromise:o,addr:i,deployTx:s,subs:c},om.set(l[am],u);const d=new Proxy({},{get:(n,e,t)=>{if("symbol"==typeof e||hm.indexOf(e)>=0)return Reflect.get(n,e,t);try{return this.getEvent(e)}catch(n){if(!Wo(n,"INVALID_ARGUMENT")||"key"!==n.argument)throw n}},has:(n,e)=>hm.indexOf(e)>=0?Reflect.has(n,e):Reflect.has(n,e)||this.interface.hasEvent(String(e))});return Jo(this,{filters:d}),Jo(this,{fallback:a.receive||a.fallback?rm(this):null}),new Proxy(this,{get:(n,e,t)=>{if("symbol"==typeof e||e in n||hm.indexOf(e)>=0)return Reflect.get(n,e,t);try{return n.getFunction(e)}catch(n){if(!Wo(n,"INVALID_ARGUMENT")||"key"!==n.argument)throw n}},has:(n,e)=>"symbol"==typeof e||e in n||hm.indexOf(e)>=0?Reflect.has(n,e):n.interface.hasFunction(e)})}connect(n){return new pm(this.target,this.interface,n)}attach(n){return new pm(n,this.interface,this.runner)}async getAddress(){return await im(this).addrPromise}async getDeployedCode(){const n=nm(this.runner);Xo(n,"runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});const e=await n.getCode(await this.getAddress());return"0x"===e?null:e}async waitForDeployment(){const n=this.deploymentTransaction();if(n)return await n.wait(),this;if(null!=await this.getDeployedCode())return this;const e=nm(this.runner);return Xo(null!=e,"contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}),new Promise((n,t)=>{const r=async()=>{try{if(null!=await this.getDeployedCode())return n(this);e.once("block",r)}catch(n){t(n)}};r()})}deploymentTransaction(){return im(this).deployTx}getFunction(n){"string"!=typeof n&&(n=n.format());const e=function(n,e){const t=function(...t){const r=n.interface.getFunction(e,t);return Xo(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:t}}),r},r=async function(...e){const r=t(...e);let a={};if(r.inputs.length+1===e.length&&(a=await em(e.pop()),a.from&&(a.from=await Kd(a.from,Zg(n.runner)))),r.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const o=await tm(n.runner,r.inputs,e);return Object.assign({},a,await Qo({to:n.getAddress(),data:n.interface.encodeFunctionData(r,o)}))},a=async function(...n){const e=await i(...n);return 1===e.length?e[0]:e},o=async function(...e){const t=n.runner;Xo(Wg(t),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const a=await t.sendTransaction(await r(...e)),o=nm(n.runner);return new Hg(n.interface,o,a)},i=async function(...e){const a=Xg(n.runner,"call");Xo(Qg(a),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const o=await r(...e);let i="0x";try{i=await a.call(o)}catch(e){if(Zo(e)&&e.data)throw n.interface.makeError(e.data,o);throw e}const s=t(...e);return n.interface.decodeFunctionResult(s,i)},s=async(...n)=>t(...n).constant?await a(...n):await o(...n);return Jo(s,{name:n.interface.getFunctionName(e),_contract:n,_key:e,getFragment:t,estimateGas:async function(...e){const t=Xg(n.runner,"estimateGas");return Xo(Jg(t),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await t.estimateGas(await r(...e))},populateTransaction:r,send:o,staticCall:a,staticCallResult:i}),Object.defineProperty(s,"fragment",{configurable:!1,enumerable:!0,get:()=>{const t=n.interface.getFunction(e);return Xo(t,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),t}}),s}(this,n);return e}getEvent(n){return"string"!=typeof n&&(n=n.format()),function(n,e){const t=function(...t){const r=n.interface.getEvent(e,t);return Xo(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:t}}),r},r=function(...e){return new Yg(n,t(...e),e)};return Jo(r,{name:n.interface.getEventName(e),_contract:n,_key:e,getFragment:t}),Object.defineProperty(r,"fragment",{configurable:!1,enumerable:!0,get:()=>{const t=n.interface.getEvent(e);return Xo(t,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),t}}),r}(this,n)}async queryTransaction(n){throw new Error("@TODO")}async queryFilter(n,e,t){null==e&&(e=0),null==t&&(t="latest");const{addr:r,addrPromise:a}=im(this),o=r||await a,{fragment:i,topics:s}=await sm(this,n),c={address:o,topics:s,fromBlock:e,toBlock:t},l=nm(this.runner);return Xo(l,"contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"}),(await l.getLogs(c)).map(n=>{let e=i;if(null==e)try{e=this.interface.getEvent(n.topics[0])}catch(n){}if(e)try{return new Mg(n,this.interface,e)}catch(e){return new Gg(n,e)}return new Ug(n,l)})}async on(n,e){const t=await lm(this,"on",n);return t.listeners.push({listener:e,once:!1}),t.start(),this}async once(n,e){const t=await lm(this,"once",n);return t.listeners.push({listener:e,once:!0}),t.start(),this}async emit(n,...e){return await dm(this,n,e,null)}async listenerCount(n){if(n){const e=await cm(this,n);return e?e.listeners.length:0}const{subs:e}=im(this);let t=0;for(const{listeners:n}of e.values())t+=n.length;return t}async listeners(n){if(n){const e=await cm(this,n);return e?e.listeners.map(({listener:n})=>n):[]}const{subs:e}=im(this);let t=[];for(const{listeners:n}of e.values())t=t.concat(n.map(({listener:n})=>n));return t}async off(n,e){const t=await cm(this,n);if(!t)return this;if(e){const n=t.listeners.map(({listener:n})=>n).indexOf(e);n>=0&&t.listeners.splice(n,1)}return null!=e&&0!==t.listeners.length||(t.stop(),im(this).subs.delete(t.tag)),this}async removeAllListeners(n){if(n){const e=await cm(this,n);if(!e)return this;e.stop(),im(this).subs.delete(e.tag)}else{const{subs:n}=im(this);for(const{tag:e,stop:t}of n.values())t(),n.delete(e)}return this}async addListener(n,e){return await this.on(n,e)}async removeListener(n,e){return await this.off(n,e)}static buildClass(n){return class extends pm{constructor(e,t=null){super(e,n,t)}}}static from(n,e,t){null==t&&(t=null);return new this(n,e,t)}}class fm extends(function(){return pm}()){}class gm{interface;bytecode;runner;constructor(n,e,t){const r=zg.from(n);e instanceof Uint8Array||("object"==typeof e&&(e=e.object),e.startsWith("0x")||(e="0x"+e)),Jo(this,{bytecode:e=di(ii(e)),interface:r,runner:t||null})}attach(n){return new pm(n,this.interface,this.runner)}async getDeployTransaction(...n){let e={};const t=this.interface.deploy;if(t.inputs.length+1===n.length&&(e=await em(n.pop())),t.inputs.length!==n.length)throw new Error("incorrect number of arguments to constructor");const r=await tm(this.runner,t.inputs,n),a=hi([this.bytecode,this.interface.encodeDeploy(r)]);return Object.assign({},e,{data:a})}async deploy(...n){const e=await this.getDeployTransaction(...n);Xo(this.runner&&"function"==typeof this.runner.sendTransaction,"factory runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const t=await this.runner.sendTransaction(e),r=Dd(t);return new pm(r,this.interface,this.runner,t)}connect(n){return new gm(this.interface,this.bytecode,n)}static fromSolidity(n,e){ni(null!=n,"bad compiler output","output",n),"string"==typeof n&&(n=JSON.parse(n));const t=n.abi;let r="";return n.bytecode?r=n.bytecode:n.evm&&n.evm.bytecode&&(r=n.evm.bytecode),new this(t,r,e)}}function mm(n){return n.match(/^ipfs:\/\/ipfs\//i)?n=n.substring(12):n.match(/^ipfs:\/\//i)?n=n.substring(7):ni(!1,"unsupported IPFS format","link",n),`https://gateway.ipfs.io/ipfs/${n}`}class bm{name;constructor(n){Jo(this,{name:n})}connect(n){return this}supportsCoinType(n){return!1}async encodeAddress(n,e){throw new Error("unsupported coin")}async decodeAddress(n,e){throw new Error("unsupported coin")}}const ym=new RegExp("^(ipfs)://(.*)$","i"),vm=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),ym,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];class wm{provider;address;name;#Tn;#Bn;constructor(n,e,t){Jo(this,{provider:n,address:e,name:t}),this.#Tn=null,this.#Bn=new fm(e,["function supportsInterface(bytes4) view returns (bool)","function resolve(bytes, bytes) view returns (bytes)","function addr(bytes32) view returns (address)","function addr(bytes32, uint) view returns (bytes)","function text(bytes32, string) view returns (string)","function contenthash(bytes32) view returns (bytes)"],n)}async supportsWildcard(){return null==this.#Tn&&(this.#Tn=(async()=>{try{return await this.#Bn.supportsInterface("0x9061b923")}catch(n){if(Wo(n,"CALL_EXCEPTION"))return!1;throw this.#Tn=null,n}})()),await this.#Tn}async#Cn(n,e){e=(e||[]).slice();const t=this.#Bn.interface;e.unshift($p(this.name));let r=null;await this.supportsWildcard()&&(r=t.getFunction(n),Xo(r,"missing fragment","UNKNOWN_ERROR",{info:{funcName:n}}),e=[Wp(this.name,255),t.encodeFunctionData(r,e)],n="resolve(bytes,bytes)"),e.push({enableCcipRead:!0});try{const a=await this.#Bn[n](...e);return r?t.decodeFunctionResult(r,a)[0]:a}catch(n){if(!Wo(n,"CALL_EXCEPTION"))throw n}return null}async getAddress(n){if(null==n&&(n=60),60===n)try{const n=await this.#Cn("addr(bytes32)");return null==n||n===ld?null:n}catch(n){if(Wo(n,"CALL_EXCEPTION"))return null;throw n}if(n>=0&&n<2147483648){let e=n+2147483648;const t=await this.#Cn("addr(bytes32,uint)",[e]);if(ci(t,20))return jd(t)}let e=null;for(const t of this.provider.plugins)if(t instanceof bm&&t.supportsCoinType(n)){e=t;break}if(null==e)return null;const t=await this.#Cn("addr(bytes32,uint)",[n]);if(null==t||"0x"===t)return null;const r=await e.decodeAddress(n,t);if(null!=r)return r;Xo(!1,"invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${n})`,info:{coinType:n,data:t}})}async getText(n){const e=await this.#Cn("text(bytes32,string)",[n]);return null==e||"0x"===e?null:e}async getContentHash(){const n=await this.#Cn("contenthash(bytes32)");if(null==n||"0x"===n)return null;const e=n.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const n="e3010170"===e[1]?"ipfs":"ipns",t=parseInt(e[4],16);if(e[5].length===2*t)return`${n}://${Di("0x"+e[2])}`}const t=n.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(t&&64===t[1].length)return`bzz://${t[1]}`;Xo(!1,"invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:n}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const n=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(null==e)return n.push({type:"!avatar",value:""}),{url:null,linkage:n};n.push({type:"avatar",value:e});for(let t=0;t<vm.length;t++){const r=e.match(vm[t]);if(null==r)continue;const a=r[1].toLowerCase();switch(a){case"https":case"data":return n.push({type:"url",value:e}),{linkage:n,url:e};case"ipfs":{const t=mm(e);return n.push({type:"ipfs",value:e}),n.push({type:"url",value:t}),{linkage:n,url:t}}case"erc721":case"erc1155":{const t="erc721"===a?"tokenURI(uint256)":"uri(uint256)";n.push({type:a,value:e});const o=await this.getAddress();if(null==o)return n.push({type:"!owner",value:""}),{url:null,linkage:n};const i=(r[2]||"").split("/");if(2!==i.length)return n.push({type:`!${a}caip`,value:r[2]||""}),{url:null,linkage:n};const s=i[1],c=new fm(i[0],["function tokenURI(uint) view returns (string)","function ownerOf(uint) view returns (address)","function uri(uint) view returns (string)","function balanceOf(address, uint256) view returns (uint)"],this.provider);if("erc721"===a){const e=await c.ownerOf(s);if(o!==e)return n.push({type:"!owner",value:e}),{url:null,linkage:n};n.push({type:"owner",value:e})}else if("erc1155"===a){const e=await c.balanceOf(o,s);if(!e)return n.push({type:"!balance",value:"0"}),{url:null,linkage:n};n.push({type:"balance",value:e.toString()})}let l=await c[t](s);if(null==l||"0x"===l)return n.push({type:"!metadata-url",value:""}),{url:null,linkage:n};n.push({type:"metadata-url-base",value:l}),"erc1155"===a&&(l=l.replace("{id}",Ti(s,32).substring(2)),n.push({type:"metadata-url-expanded",value:l})),l.match(/^ipfs:/i)&&(l=mm(l)),n.push({type:"metadata-url",value:l});let u={};const d=await new ss(l).send();d.assertOk();try{u=d.bodyJson}catch(e){try{n.push({type:"!metadata",value:d.bodyText})}catch(e){const t=d.body;return t&&n.push({type:"!metadata",value:di(t)}),{url:null,linkage:n}}return{url:null,linkage:n}}if(!u)return n.push({type:"!metadata",value:""}),{url:null,linkage:n};n.push({type:"metadata",value:JSON.stringify(u)});let h=u.image;if("string"!=typeof h)return n.push({type:"!imageUrl",value:""}),{url:null,linkage:n};if(h.match(/^(https:\/\/|data:)/i));else{if(null==h.match(ym))return n.push({type:"!imageUrl-ipfs",value:h}),{url:null,linkage:n};n.push({type:"imageUrl-ipfs",value:h}),h=mm(h)}return n.push({type:"url",value:h}),{linkage:n,url:h}}}}}catch(n){}return{linkage:n,url:null}}static async getEnsAddress(n){const e=await n.getNetwork(),t=e.getPlugin("org.ethers.plugins.network.Ens");return Xo(t,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),t.address}static async#On(n,e){const t=await wm.getEnsAddress(n);try{const r=new fm(t,["function resolver(bytes32) view returns (address)"],n),a=await r.resolver($p(e),{enableCcipRead:!0});return a===ld?null:a}catch(n){throw n}return null}static async fromName(n,e){let t=e;for(;;){if(""===t||"."===t)return null;if("eth"!==e&&"eth"===t)return null;const r=await wm.#On(n,t);if(null!=r){const a=new wm(n,r,e);return t===e||await a.supportsWildcard()?a:null}t=t.split(".").slice(1).join(".")}}}const km=BigInt(0);function Am(n,e){return function(t){return null==t?e:n(t)}}function Em(n,e){return t=>{if(e&&null==t)return null;if(!Array.isArray(t))throw new Error("not an array");return t.map(e=>n(e))}}function xm(n,e){return t=>{const r={};for(const a in n){let o=a;if(e&&a in e&&!(o in t))for(const n of e[a])if(n in t){o=n;break}try{const e=n[a](t[o]);void 0!==e&&(r[a]=e)}catch(n){Xo(!1,`invalid value for value.${a} (${n instanceof Error?n.message:"not-an-error"})`,"BAD_DATA",{value:t})}}return r}}function Pm(n){return ni(ci(n,!0),"invalid data","value",n),n}function Im(n){return ni(ci(n,32),"invalid hash","value",n),n}const Nm=xm({address:jd,blockHash:Im,blockNumber:Ri,data:Pm,index:Ri,removed:Am(function(n){switch(n){case!0:case"true":return!0;case!1:case"false":return!1}ni(!1,`invalid boolean; ${JSON.stringify(n)}`,"value",n)},!1),topics:Em(Im),transactionHash:Im,transactionIndex:Ri},{index:["logIndex"]});const zm=xm({hash:Am(Im),parentHash:Im,parentBeaconBlockRoot:Am(Im,null),number:Ri,timestamp:Ri,nonce:Am(Pm),difficulty:Pi,gasLimit:Pi,gasUsed:Pi,stateRoot:Am(Im,null),receiptsRoot:Am(Im,null),blobGasUsed:Am(Pi,null),excessBlobGas:Am(Pi,null),miner:Am(jd),prevRandao:Am(Im,null),extraData:Pm,baseFeePerGas:Am(Pi)},{prevRandao:["mixHash"]});const Rm=xm({transactionIndex:Ri,blockNumber:Ri,transactionHash:Im,address:jd,topics:Em(Im),data:Pm,index:Ri,blockHash:Im},{index:["logIndex"]});const Sm=xm({to:Am(jd,null),from:Am(jd,null),contractAddress:Am(jd,null),index:Ri,root:Am(di),gasUsed:Pi,blobGasUsed:Am(Pi,null),logsBloom:Am(Pm),blockHash:Im,hash:Im,logs:Em(function(n){return Rm(n)}),blockNumber:Ri,cumulativeGasUsed:Pi,effectiveGasPrice:Am(Pi),blobGasPrice:Am(Pi,null),status:Am(Ri),type:Am(Ri,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function Tm(n){n.to&&Pi(n.to)===km&&(n.to="0x0000000000000000000000000000000000000000");const e=xm({hash:Im,index:Am(Ri,void 0),type:n=>"0x"===n||null==n?0:Ri(n),accessList:Am(fh,null),blobVersionedHashes:Am(Em(Im,!0),null),authorizationList:Am(Em(n=>{let e;if(n.signature)e=n.signature;else{let t=n.yParity;"0x1b"===t?t=0:"0x1c"===t&&(t=1),e=Object.assign({},n,{yParity:t})}return{address:jd(n.address),chainId:Pi(n.chainId),nonce:Pi(n.nonce),signature:zd.from(e)}},!1),null),blockHash:Am(Im,null),blockNumber:Am(Ri,null),transactionIndex:Am(Ri,null),from:jd,gasPrice:Am(Pi),maxPriorityFeePerGas:Am(Pi),maxFeePerGas:Am(Pi),maxFeePerBlobGas:Am(Pi,null),gasLimit:Pi,to:Am(jd,null),value:Pi,nonce:Ri,data:Pm,creates:Am(jd,null),chainId:Am(Pi,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(n);if(null==e.to&&null==e.creates&&(e.creates=Dd(e)),1!==n.type&&2!==n.type||null!=n.accessList||(e.accessList=[]),n.signature?e.signature=zd.from(n.signature):e.signature=zd.from(n),null==e.chainId){const n=e.signature.legacyChainId;null!=n&&(e.chainId=n)}return e.blockHash&&Pi(e.blockHash)===km&&(e.blockHash=null),e}class Bm{name;constructor(n){Jo(this,{name:n})}clone(){return new Bm(this.name)}}class Cm extends Bm{effectiveBlock;txBase;txCreate;txDataZero;txDataNonzero;txAccessListStorageKey;txAccessListAddress;constructor(n,e){null==n&&(n=0),super(`org.ethers.network.plugins.GasCost#${n||0}`);const t={effectiveBlock:n};function r(n,r){let a=(e||{})[n];null==a&&(a=r),ni("number"==typeof a,`invalud value for ${n}`,"costs",e),t[n]=a}r("txBase",21e3),r("txCreate",32e3),r("txDataZero",4),r("txDataNonzero",16),r("txAccessListStorageKey",1900),r("txAccessListAddress",2400),Jo(this,t)}clone(){return new Cm(this.effectiveBlock,this)}}class Om extends Bm{address;targetNetwork;constructor(n,e){super("org.ethers.plugins.network.Ens"),Jo(this,{address:n||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new Om(this.address,this.targetNetwork)}}class Um extends Bm{#Un;get feeDataFunc(){return this.#Un}constructor(n){super("org.ethers.plugins.network.FeeData"),this.#Un=n}async getFeeData(n){return await this.#Un(n)}clone(){return new Um(this.#Un)}}class Fm extends Bm{#c;#Fn;get url(){return this.#c}get processFunc(){return this.#Fn}constructor(n,e){super("org.ethers.plugins.network.FetchUrlFeeDataPlugin"),this.#c=n,this.#Fn=e}clone(){return this}}const jm=new Map;class Lm{#jn;#tn;#Ln;constructor(n,e){this.#jn=n,this.#tn=Pi(e),this.#Ln=new Map}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#jn}set name(n){this.#jn=n}get chainId(){return this.#tn}set chainId(n){this.#tn=Pi(n,"chainId")}matches(n){if(null==n)return!1;if("string"==typeof n){try{return this.chainId===Pi(n)}catch(n){}return this.name===n}if("number"==typeof n||"bigint"==typeof n){try{return this.chainId===Pi(n)}catch(n){}return!1}if("object"==typeof n){if(null!=n.chainId){try{return this.chainId===Pi(n.chainId)}catch(n){}return!1}return null!=n.name&&this.name===n.name}return!1}get plugins(){return Array.from(this.#Ln.values())}attachPlugin(n){if(this.#Ln.get(n.name))throw new Error(`cannot replace existing plugin: ${n.name} `);return this.#Ln.set(n.name,n.clone()),this}getPlugin(n){return this.#Ln.get(n)||null}getPlugins(n){return this.plugins.filter(e=>e.name.split("#")[0]===n)}clone(){const n=new Lm(this.name,this.chainId);return this.plugins.forEach(e=>{n.attachPlugin(e.clone())}),n}computeIntrinsicGas(n){const e=this.getPlugin("org.ethers.plugins.network.GasCost")||new Cm;let t=e.txBase;if(null==n.to&&(t+=e.txCreate),n.data)for(let r=2;r<n.data.length;r+=2)"00"===n.data.substring(r,r+2)?t+=e.txDataZero:t+=e.txDataNonzero;if(n.accessList){const r=fh(n.accessList);for(const n in r)t+=e.txAccessListAddress+e.txAccessListStorageKey*r[n].storageKeys.length}return t}static from(n){if(function(){if(Gm)return;function n(n,e,t){const r=function(){const r=new Lm(n,e);return null!=t.ensNetwork&&r.attachPlugin(new Om(null,t.ensNetwork)),r.attachPlugin(new Cm),(t.plugins||[]).forEach(n=>{r.attachPlugin(n)}),r};Lm.register(n,r),Lm.register(e,r),t.altNames&&t.altNames.forEach(n=>{Lm.register(n,r)})}Gm=!0,n("mainnet",1,{ensNetwork:1,altNames:["homestead"]}),n("ropsten",3,{ensNetwork:3}),n("rinkeby",4,{ensNetwork:4}),n("goerli",5,{ensNetwork:5}),n("kovan",42,{ensNetwork:42}),n("sepolia",11155111,{ensNetwork:11155111}),n("holesky",17e3,{ensNetwork:17e3}),n("classic",61,{}),n("classicKotti",6,{}),n("arbitrum",42161,{ensNetwork:1}),n("arbitrum-goerli",421613,{}),n("arbitrum-sepolia",421614,{}),n("base",8453,{ensNetwork:1}),n("base-goerli",84531,{}),n("base-sepolia",84532,{}),n("bnb",56,{ensNetwork:1}),n("bnbt",97,{}),n("filecoin",314,{}),n("filecoin-calibration",314159,{}),n("linea",59144,{ensNetwork:1}),n("linea-goerli",59140,{}),n("linea-sepolia",59141,{}),n("matic",137,{ensNetwork:1,plugins:[Mm("https://gasstation.polygon.technology/v2")]}),n("matic-amoy",80002,{}),n("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[Mm("https://gasstation-testnet.polygon.technology/v2")]}),n("optimism",10,{ensNetwork:1,plugins:[]}),n("optimism-goerli",420,{}),n("optimism-sepolia",11155420,{}),n("xdai",100,{ensNetwork:1})}(),null==n)return Lm.from("mainnet");if("number"==typeof n&&(n=BigInt(n)),"string"==typeof n||"bigint"==typeof n){const e=jm.get(n);if(e)return e();if("bigint"==typeof n)return new Lm("unknown",n);ni(!1,"unknown network","network",n)}if("function"==typeof n.clone){return n.clone()}if("object"==typeof n){ni("string"==typeof n.name&&"number"==typeof n.chainId,"invalid network object name or chainId","network",n);const e=new Lm(n.name,n.chainId);return(n.ensAddress||null!=n.ensNetwork)&&e.attachPlugin(new Om(n.ensAddress,n.ensNetwork)),e}ni(!1,"invalid network","network",n)}static register(n,e){"number"==typeof n&&(n=BigInt(n));const t=jm.get(n);t&&ni(!1,`conflicting network for ${JSON.stringify(t.name)}`,"nameOrChainId",n),jm.set(n,e)}}function Dm(n,e){const t=String(n);if(!t.match(/^[0-9.]+$/))throw new Error(`invalid gwei value: ${n}`);const r=t.split(".");if(1===r.length&&r.push(""),2!==r.length)throw new Error(`invalid gwei value: ${n}`);for(;r[1].length<e;)r[1]+="0";if(r[1].length>9){let n=BigInt(r[1].substring(0,9));r[1].substring(9).match(/^0+$/)||n++,r[1]=n.toString()}return BigInt(r[0]+r[1])}function Mm(n){return new Fm(n,async(n,e,t)=>{let r;t.setHeader("User-Agent","ethers");try{const[e,a]=await Promise.all([t.send(),n()]);r=e;const o=r.bodyJson.standard;return{gasPrice:a.gasPrice,maxFeePerGas:Dm(o.maxFee,9),maxPriorityFeePerGas:Dm(o.maxPriorityFee,9)}}catch(n){Xo(!1,`error encountered with polygon gas station (${JSON.stringify(t.url)})`,"SERVER_ERROR",{request:t,response:r,error:n})}})}let Gm=!1;function qm(n){return JSON.parse(JSON.stringify(n))}class Hm{#Dn;#Mn;#Gn;#qn;constructor(n){this.#Dn=n,this.#Mn=null,this.#Gn=4e3,this.#qn=-2}get pollingInterval(){return this.#Gn}set pollingInterval(n){this.#Gn=n}async#Hn(){try{const n=await this.#Dn.getBlockNumber();if(-2===this.#qn)return void(this.#qn=n);if(n!==this.#qn){for(let e=this.#qn+1;e<=n;e++){if(null==this.#Mn)return;await this.#Dn.emit("block",e)}this.#qn=n}}catch(n){}null!=this.#Mn&&(this.#Mn=this.#Dn._setTimeout(this.#Hn.bind(this),this.#Gn))}start(){this.#Mn||(this.#Mn=this.#Dn._setTimeout(this.#Hn.bind(this),this.#Gn),this.#Hn())}stop(){this.#Mn&&(this.#Dn._clearTimeout(this.#Mn),this.#Mn=null)}pause(n){this.stop(),n&&(this.#qn=-2)}resume(){this.start()}}class Km{#Dn;#Hn;#Kn;constructor(n){this.#Dn=n,this.#Kn=!1,this.#Hn=n=>{this._poll(n,this.#Dn)}}async _poll(n,e){throw new Error("sub-classes must override this")}start(){this.#Kn||(this.#Kn=!0,this.#Hn(-2),this.#Dn.on("block",this.#Hn))}stop(){this.#Kn&&(this.#Kn=!1,this.#Dn.off("block",this.#Hn))}pause(n){this.stop()}resume(){this.start()}}class _m extends Km{#_n;#Vn;constructor(n,e){super(n),this.#_n=e,this.#Vn=-2}pause(n){n&&(this.#Vn=-2),super.pause(n)}async _poll(n,e){const t=await e.getBlock(this.#_n);null!=t&&(-2===this.#Vn?this.#Vn=t.number:t.number>this.#Vn&&(e.emit(this.#_n,t.number),this.#Vn=t.number))}}class Vm extends Km{#Sn;constructor(n,e){super(n),this.#Sn=qm(e)}async _poll(n,e){throw new Error("@TODO")}}class Qm extends Km{#Qn;constructor(n,e){super(n),this.#Qn=e}async _poll(n,e){const t=await e.getTransactionReceipt(this.#Qn);t&&e.emit(this.#Qn,t)}}class Jm{#Dn;#Sn;#Mn;#Kn;#qn;constructor(n,e){this.#Dn=n,this.#Sn=qm(e),this.#Mn=this.#Hn.bind(this),this.#Kn=!1,this.#qn=-2}async#Hn(n){if(-2===this.#qn)return;const e=qm(this.#Sn);e.fromBlock=this.#qn+1,e.toBlock=n;const t=await this.#Dn.getLogs(e);if(0!==t.length)for(const n of t)this.#Dn.emit(this.#Sn,n),this.#qn=n.blockNumber;else this.#qn<n-60&&(this.#qn=n-60)}start(){this.#Kn||(this.#Kn=!0,-2===this.#qn&&this.#Dn.getBlockNumber().then(n=>{this.#qn=n}),this.#Dn.on("block",this.#Mn))}stop(){this.#Kn&&(this.#Kn=!1,this.#Dn.off("block",this.#Mn))}pause(n){this.stop(),n&&(this.#qn=-2)}resume(){this.start()}}const $m=BigInt(2);function Wm(n){return n&&"function"==typeof n.then}function Zm(n,e){return n+":"+JSON.stringify(e,(n,e)=>{if(null==e)return"null";if("bigint"==typeof e)return`bigint:${e.toString()}`;if("string"==typeof e)return e.toLowerCase();if("object"==typeof e&&!Array.isArray(e)){const n=Object.keys(e);return n.sort(),n.reduce((n,t)=>(n[t]=e[t],n),{})}return e})}class Ym{name;constructor(n){Jo(this,{name:n})}start(){}stop(){}pause(n){}resume(){}}function Xm(n){return(n=Array.from(new Set(n).values())).sort(),n}async function nb(n,e){if(null==n)throw new Error("invalid event");if(Array.isArray(n)&&(n={topics:n}),"string"==typeof n)switch(n){case"block":case"debug":case"error":case"finalized":case"network":case"pending":case"safe":return{type:n,tag:n}}if(ci(n,32)){const e=n.toLowerCase();return{type:"transaction",tag:Zm("tx",{hash:e}),hash:e}}if(n.orphan){const e=n;return{type:"orphan",tag:Zm("orphan",e),filter:(t=e,JSON.parse(JSON.stringify(t)))}}var t;if(n.address||n.topics){const t=n,r={topics:(t.topics||[]).map(n=>null==n?null:Array.isArray(n)?Xm(n.map(n=>n.toLowerCase())):n.toLowerCase())};if(t.address){const n=[],a=[],o=t=>{ci(t)?n.push(t):a.push((async()=>{n.push(await Kd(t,e))})())};Array.isArray(t.address)?t.address.forEach(o):o(t.address),a.length&&await Promise.all(a),r.address=Xm(n.map(n=>n.toLowerCase()))}return{filter:r,tag:Zm("event",r),type:"event"}}ni(!1,"unknown ProviderEvent","event",n)}function eb(){return(new Date).getTime()}const tb={cacheTimeout:250,pollingInterval:4e3};class rb{#Jn;#Ln;#$n;#Wn;#Zn;#Yn;#Xn;#ne;#ee;#te;#re;#Q;constructor(n,e){if(this.#Q=Object.assign({},tb,e||{}),"any"===n)this.#Yn=!0,this.#Zn=null;else if(n){const e=Lm.from(n);this.#Yn=!1,this.#Zn=Promise.resolve(e),setTimeout(()=>{this.emit("network",e,null)},0)}else this.#Yn=!1,this.#Zn=null;this.#ne=-1,this.#Xn=new Map,this.#Jn=new Map,this.#Ln=new Map,this.#$n=null,this.#Wn=!1,this.#ee=1,this.#te=new Map,this.#re=!1}get pollingInterval(){return this.#Q.pollingInterval}get provider(){return this}get plugins(){return Array.from(this.#Ln.values())}attachPlugin(n){if(this.#Ln.get(n.name))throw new Error(`cannot replace existing plugin: ${n.name} `);return this.#Ln.set(n.name,n.connect(this)),this}getPlugin(n){return this.#Ln.get(n)||null}get disableCcipRead(){return this.#re}set disableCcipRead(n){this.#re=!!n}async#ae(n){const e=this.#Q.cacheTimeout;if(e<0)return await this._perform(n);const t=Zm(n.method,n);let r=this.#Xn.get(t);return r||(r=this._perform(n),this.#Xn.set(t,r),setTimeout(()=>{this.#Xn.get(t)===r&&this.#Xn.delete(t)},e)),await r}async ccipReadFetch(n,e,t){if(this.disableCcipRead||0===t.length||null==n.to)return null;const r=n.to.toLowerCase(),a=e.toLowerCase(),o=[];for(let e=0;e<t.length;e++){const i=t[e],s=i.replace("{sender}",r).replace("{data}",a),c=new ss(s);-1===i.indexOf("{data}")&&(c.body={data:a,sender:r}),this.emit("debug",{action:"sendCcipReadFetchRequest",request:c,index:e,urls:t});let l,u="unknown error";try{l=await c.send()}catch(n){o.push(n.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:c,result:{error:n}});continue}try{const n=l.bodyJson;if(n.data)return this.emit("debug",{action:"receiveCcipReadFetchResult",request:c,result:n}),n.data;n.message&&(u=n.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:c,result:n})}catch(n){}Xo(l.statusCode<400||l.statusCode>=500,`response not found during CCIP fetch: ${u}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:n,info:{url:i,errorMessage:u}}),o.push(u)}Xo(!1,`error encountered during CCIP fetch: ${o.map(n=>JSON.stringify(n)).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:n,info:{urls:t,errorMessages:o}})}_wrapBlock(n,e){return new Og(function(n){const e=zm(n);return e.transactions=n.transactions.map(n=>"string"==typeof n?n:Tm(n)),e}(n),this)}_wrapLog(n,e){return new Ug(function(n){return Nm(n)}(n),this)}_wrapTransactionReceipt(n,e){return new Fg(function(n){return Sm(n)}(n),this)}_wrapTransactionResponse(n,e){return new jg(Tm(n),this)}_detectNetwork(){Xo(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(n){Xo(!1,`unsupported method: ${n.method}`,"UNSUPPORTED_OPERATION",{operation:n.method,info:n})}async getBlockNumber(){const n=Ri(await this.#ae({method:"getBlockNumber"}),"%response");return this.#ne>=0&&(this.#ne=n),n}_getAddress(n){return Kd(n,this)}_getBlockTag(n){if(null==n)return"latest";switch(n){case"earliest":return"0x0";case"finalized":case"latest":case"pending":case"safe":return n}return ci(n)?ci(n,32)?n:Ci(n):("bigint"==typeof n&&(n=Ri(n,"blockTag")),"number"==typeof n?n>=0?Ci(n):this.#ne>=0?Ci(this.#ne+n):this.getBlockNumber().then(e=>Ci(e+n)):void ni(!1,"invalid blockTag","blockTag",n))}_getFilter(n){const e=(n.topics||[]).map(n=>null==n?null:Array.isArray(n)?Xm(n.map(n=>n.toLowerCase())):n.toLowerCase()),t="blockHash"in n?n.blockHash:void 0,r=(n,r,a)=>{let o;switch(n.length){case 0:break;case 1:o=n[0];break;default:n.sort(),o=n}if(t&&(null!=r||null!=a))throw new Error("invalid filter");const i={};return o&&(i.address=o),e.length&&(i.topics=e),r&&(i.fromBlock=r),a&&(i.toBlock=a),t&&(i.blockHash=t),i};let a,o,i=[];if(n.address)if(Array.isArray(n.address))for(const e of n.address)i.push(this._getAddress(e));else i.push(this._getAddress(n.address));return"fromBlock"in n&&(a=this._getBlockTag(n.fromBlock)),"toBlock"in n&&(o=this._getBlockTag(n.toBlock)),i.filter(n=>"string"!=typeof n).length||null!=a&&"string"!=typeof a||null!=o&&"string"!=typeof o?Promise.all([Promise.all(i),a,o]).then(n=>r(n[0],n[1],n[2])):r(i,a,o)}_getTransactionRequest(n){const e=Cg(n),t=[];if(["to","from"].forEach(n=>{if(null==e[n])return;const r=Kd(e[n],this);Wm(r)?t.push(async function(){e[n]=await r}()):e[n]=r}),null!=e.blockTag){const n=this._getBlockTag(e.blockTag);Wm(n)?t.push(async function(){e.blockTag=await n}()):e.blockTag=n}return t.length?async function(){return await Promise.all(t),e}():e}async getNetwork(){if(null==this.#Zn){const n=(async()=>{try{const n=await this._detectNetwork();return this.emit("network",n,null),n}catch(e){throw this.#Zn===n&&(this.#Zn=null),e}})();return this.#Zn=n,(await n).clone()}const n=this.#Zn,[e,t]=await Promise.all([n,this._detectNetwork()]);return e.chainId!==t.chainId&&(this.#Yn?(this.emit("network",t,e),this.#Zn===n&&(this.#Zn=Promise.resolve(t))):Xo(!1,`network changed: ${e.chainId} => ${t.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone()}async getFeeData(){const n=await this.getNetwork(),e=async()=>{const{_block:e,gasPrice:t,priorityFee:r}=await Qo({_block:this.#oe("latest",!1),gasPrice:(async()=>{try{return Pi(await this.#ae({method:"getGasPrice"}),"%response")}catch(n){}return null})(),priorityFee:(async()=>{try{return Pi(await this.#ae({method:"getPriorityFee"}),"%response")}catch(n){}return null})()});let a=null,o=null;const i=this._wrapBlock(e,n);return i&&i.baseFeePerGas&&(o=null!=r?r:BigInt("1000000000"),a=i.baseFeePerGas*$m+o),new Bg(t,a,o)},t=n.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(t){const n=new ss(t.url),r=await t.processFunc(e,this,n);return new Bg(r.gasPrice,r.maxFeePerGas,r.maxPriorityFeePerGas)}return await e()}async estimateGas(n){let e=this._getTransactionRequest(n);return Wm(e)&&(e=await e),Pi(await this.#ae({method:"estimateGas",transaction:e}),"%response")}async#ie(n,e,t){Xo(t<10,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},n,{blockTag:e,enableCcipRead:!0})});const r=Cg(n);try{return di(await this._perform({method:"call",transaction:r,blockTag:e}))}catch(n){if(!this.disableCcipRead&&Zo(n)&&n.data&&t>=0&&"latest"===e&&null!=r.to&&"0x556f1830"===fi(n.data,0,4)){const a=n.data,o=await Kd(r.to,this);let i;try{i=function(n){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};Xo(pi(n)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const t=fi(n,0,32);Xo(fi(t,0,12)===fi(ub,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),e.sender=fi(t,12);try{const t=[],r=Ri(fi(n,32,64)),a=Ri(fi(n,r,r+32)),o=fi(n,r+32);for(let n=0;n<a;n++){const e=ab(o,32*n);if(null==e)throw new Error("abort");t.push(e)}e.urls=t}catch(n){Xo(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const t=ob(n,64);if(null==t)throw new Error("abort");e.calldata=t}catch(n){Xo(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}Xo(fi(n,100,128)===fi(ub,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),e.selector=fi(n,96,100);try{const t=ob(n,128);if(null==t)throw new Error("abort");e.extraData=t}catch(n){Xo(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return e.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map(n=>e[n]),e}(fi(n.data,4))}catch(n){Xo(!1,n.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:r,info:{data:a}})}Xo(i.sender.toLowerCase()===o.toLowerCase(),"CCIP Read sender mismatch","CALL_EXCEPTION",{action:"call",data:a,reason:"OffchainLookup",transaction:r,invocation:null,revert:{signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",name:"OffchainLookup",args:i.errorArgs}});const s=await this.ccipReadFetch(r,i.calldata,i.urls);Xo(null!=s,"CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:r,info:{data:n.data,errorArgs:i.errorArgs}});const c={to:o,data:hi([i.selector,lb([s,i.extraData])])};this.emit("debug",{action:"sendCcipReadCall",transaction:c});try{const n=await this.#ie(c,e,t+1);return this.emit("debug",{action:"receiveCcipReadCallResult",transaction:Object.assign({},c),result:n}),n}catch(n){throw this.emit("debug",{action:"receiveCcipReadCallError",transaction:Object.assign({},c),error:n}),n}}throw n}}async#se(n){const{value:e}=await Qo({network:this.getNetwork(),value:n});return e}async call(n){const{tx:e,blockTag:t}=await Qo({tx:this._getTransactionRequest(n),blockTag:this._getBlockTag(n.blockTag)});return await this.#se(this.#ie(e,t,n.enableCcipRead?0:-1))}async#ce(n,e,t){let r=this._getAddress(e),a=this._getBlockTag(t);return"string"==typeof r&&"string"==typeof a||([r,a]=await Promise.all([r,a])),await this.#se(this.#ae(Object.assign(n,{address:r,blockTag:a})))}async getBalance(n,e){return Pi(await this.#ce({method:"getBalance"},n,e),"%response")}async getTransactionCount(n,e){return Ri(await this.#ce({method:"getTransactionCount"},n,e),"%response")}async getCode(n,e){return di(await this.#ce({method:"getCode"},n,e))}async getStorage(n,e,t){const r=Pi(e,"position");return di(await this.#ce({method:"getStorage",position:r},n,t))}async broadcastTransaction(n){const{blockNumber:e,hash:t,network:r}=await Qo({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:n}),network:this.getNetwork()}),a=jh.from(n);if(a.hash!==t)throw new Error("@TODO: the returned hash did not match");return this._wrapTransactionResponse(a,r).replaceableTransaction(e)}async#oe(n,e){if(ci(n,32))return await this.#ae({method:"getBlock",blockHash:n,includeTransactions:e});let t=this._getBlockTag(n);return"string"!=typeof t&&(t=await t),await this.#ae({method:"getBlock",blockTag:t,includeTransactions:e})}async getBlock(n,e){const{network:t,params:r}=await Qo({network:this.getNetwork(),params:this.#oe(n,!!e)});return null==r?null:this._wrapBlock(r,t)}async getTransaction(n){const{network:e,params:t}=await Qo({network:this.getNetwork(),params:this.#ae({method:"getTransaction",hash:n})});return null==t?null:this._wrapTransactionResponse(t,e)}async getTransactionReceipt(n){const{network:e,params:t}=await Qo({network:this.getNetwork(),params:this.#ae({method:"getTransactionReceipt",hash:n})});if(null==t)return null;if(null==t.gasPrice&&null==t.effectiveGasPrice){const e=await this.#ae({method:"getTransaction",hash:n});if(null==e)throw new Error("report this; could not find tx or effectiveGasPrice");t.effectiveGasPrice=e.gasPrice}return this._wrapTransactionReceipt(t,e)}async getTransactionResult(n){const{result:e}=await Qo({network:this.getNetwork(),result:this.#ae({method:"getTransactionResult",hash:n})});return null==e?null:di(e)}async getLogs(n){let e=this._getFilter(n);Wm(e)&&(e=await e);const{network:t,params:r}=await Qo({network:this.getNetwork(),params:this.#ae({method:"getLogs",filter:e})});return r.map(n=>this._wrapLog(n,t))}_getProvider(n){Xo(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(n){return await wm.fromName(this,n)}async getAvatar(n){const e=await this.getResolver(n);return e?await e.getAvatar():null}async resolveName(n){const e=await this.getResolver(n);return e?await e.getAddress():null}async lookupAddress(n){const e=$p((n=jd(n)).substring(2).toLowerCase()+".addr.reverse");try{const t=await wm.getEnsAddress(this),r=new fm(t,["function resolver(bytes32) view returns (address)"],this),a=await r.resolver(e);if(null==a||a===ld)return null;const o=new fm(a,["function name(bytes32) view returns (string)"],this),i=await o.name(e);return await this.resolveName(i)!==n?null:i}catch(n){if(Wo(n,"BAD_DATA")&&"0x"===n.value)return null;if(Wo(n,"CALL_EXCEPTION"))return null;throw n}return null}async waitForTransaction(n,e,t){const r=null!=e?e:1;return 0===r?this.getTransactionReceipt(n):new Promise(async(e,a)=>{let o=null;const i=async t=>{try{const a=await this.getTransactionReceipt(n);if(null!=a&&t-a.blockNumber+1>=r)return e(a),void(o&&(clearTimeout(o),o=null))}catch(n){}this.once("block",i)};null!=t&&(o=setTimeout(()=>{null!=o&&(o=null,this.off("block",i),a(Yo("timeout","TIMEOUT",{reason:"timeout"})))},t)),i(await this.getBlockNumber())})}async waitForBlock(n){Xo(!1,"not implemented yet","NOT_IMPLEMENTED",{operation:"waitForBlock"})}_clearTimeout(n){const e=this.#te.get(n);e&&(e.timer&&clearTimeout(e.timer),this.#te.delete(n))}_setTimeout(n,e){null==e&&(e=0);const t=this.#ee++,r=()=>{this.#te.delete(t),n()};if(this.paused)this.#te.set(t,{timer:null,func:r,time:e});else{const n=setTimeout(r,e);this.#te.set(t,{timer:n,func:r,time:eb()})}return t}_forEachSubscriber(n){for(const e of this.#Jn.values())n(e.subscriber)}_getSubscriber(n){switch(n.type){case"debug":case"error":case"network":return new Ym(n.type);case"block":{const n=new Hm(this);return n.pollingInterval=this.pollingInterval,n}case"safe":case"finalized":return new _m(this,n.type);case"event":return new Jm(this,n.filter);case"transaction":return new Qm(this,n.hash);case"orphan":return new Vm(this,n.filter)}throw new Error(`unsupported event: ${n.type}`)}_recoverSubscriber(n,e){for(const t of this.#Jn.values())if(t.subscriber===n){t.started&&t.subscriber.stop(),t.subscriber=e,t.started&&e.start(),null!=this.#$n&&e.pause(this.#$n);break}}async#le(n,e){let t=await nb(n,this);return"event"===t.type&&e&&e.length>0&&!0===e[0].removed&&(t=await nb({orphan:"drop-log",log:e[0]},this)),this.#Jn.get(t.tag)||null}async#ue(n){const e=await nb(n,this),t=e.tag;let r=this.#Jn.get(t);if(!r){r={subscriber:this._getSubscriber(e),tag:t,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},this.#Jn.set(t,r)}return r}async on(n,e){const t=await this.#ue(n);return t.listeners.push({listener:e,once:!1}),t.started||(t.subscriber.start(),t.started=!0,null!=this.#$n&&t.subscriber.pause(this.#$n)),this}async once(n,e){const t=await this.#ue(n);return t.listeners.push({listener:e,once:!0}),t.started||(t.subscriber.start(),t.started=!0,null!=this.#$n&&t.subscriber.pause(this.#$n)),this}async emit(n,...e){const t=await this.#le(n,e);if(!t||0===t.listeners.length)return!1;const r=t.listeners.length;return t.listeners=t.listeners.filter(({listener:t,once:r})=>{const a=new Hi(this,r?null:t,n);try{t.call(this,...e,a)}catch(n){}return!r}),0===t.listeners.length&&(t.started&&t.subscriber.stop(),this.#Jn.delete(t.tag)),r>0}async listenerCount(n){if(n){const e=await this.#le(n);return e?e.listeners.length:0}let e=0;for(const{listeners:n}of this.#Jn.values())e+=n.length;return e}async listeners(n){if(n){const e=await this.#le(n);return e?e.listeners.map(({listener:n})=>n):[]}let e=[];for(const{listeners:n}of this.#Jn.values())e=e.concat(n.map(({listener:n})=>n));return e}async off(n,e){const t=await this.#le(n);if(!t)return this;if(e){const n=t.listeners.map(({listener:n})=>n).indexOf(e);n>=0&&t.listeners.splice(n,1)}return e&&0!==t.listeners.length||(t.started&&t.subscriber.stop(),this.#Jn.delete(t.tag)),this}async removeAllListeners(n){if(n){const{tag:e,started:t,subscriber:r}=await this.#ue(n);t&&r.stop(),this.#Jn.delete(e)}else for(const[n,{started:e,subscriber:t}]of this.#Jn)e&&t.stop(),this.#Jn.delete(n);return this}async addListener(n,e){return await this.on(n,e)}async removeListener(n,e){return this.off(n,e)}get destroyed(){return this.#Wn}destroy(){this.removeAllListeners();for(const n of this.#te.keys())this._clearTimeout(n);this.#Wn=!0}get paused(){return null!=this.#$n}set paused(n){!!n!==this.paused&&(this.paused?this.resume():this.pause(!1))}pause(n){if(this.#ne=-1,null!=this.#$n){if(this.#$n==!!n)return;Xo(!1,"cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber(e=>e.pause(n)),this.#$n=!!n;for(const n of this.#te.values())n.timer&&clearTimeout(n.timer),n.time=eb()-n.time}resume(){if(null!=this.#$n){this._forEachSubscriber(n=>n.resume()),this.#$n=null;for(const n of this.#te.values()){let e=n.time;e<0&&(e=0),n.time=eb(),setTimeout(n.func,e)}}}}function ab(n,e){try{const t=ob(n,e);if(t)return Ji(t)}catch(n){}return null}function ob(n,e){if("0x"===n)return null;try{const t=Ri(fi(n,e,e+32)),r=Ri(fi(n,t,t+32));return fi(n,t+32,t+32+r)}catch(n){}return null}function ib(n){const e=Bi(n);if(e.length>32)throw new Error("internal; should not happen");const t=new Uint8Array(32);return t.set(e,32-e.length),t}function sb(n){if(n.length%32==0)return n;const e=new Uint8Array(32*Math.ceil(n.length/32));return e.set(n),e}const cb=new Uint8Array([]);function lb(n){const e=[];let t=0;for(let r=0;r<n.length;r++)e.push(cb),t+=32;for(let r=0;r<n.length;r++){const a=ii(n[r]);e[r]=ib(t),e.push(ib(a.length)),e.push(sb(a)),t+=32+32*Math.ceil(a.length/32)}return hi(e)}const ub="0x0000000000000000000000000000000000000000000000000000000000000000";function db(n,e){if(n.provider)return n.provider;Xo(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:e})}async function hb(n,e){let t=Cg(e);if(null!=t.to&&(t.to=Kd(t.to,n)),null!=t.from){const e=t.from;t.from=Promise.all([n.getAddress(),Kd(e,n)]).then(([n,e])=>(ni(n.toLowerCase()===e.toLowerCase(),"transaction from mismatch","tx.from",e),n))}else t.from=n.getAddress();return await Qo(t)}class pb{provider;constructor(n){Jo(this,{provider:n||null})}async getNonce(n){return db(this,"getTransactionCount").getTransactionCount(await this.getAddress(),n)}async populateCall(n){return await hb(this,n)}async populateTransaction(n){const e=db(this,"populateTransaction"),t=await hb(this,n);null==t.nonce&&(t.nonce=await this.getNonce("pending")),null==t.gasLimit&&(t.gasLimit=await this.estimateGas(t));const r=await this.provider.getNetwork();if(null!=t.chainId){ni(Pi(t.chainId)===r.chainId,"transaction chainId mismatch","tx.chainId",n.chainId)}else t.chainId=r.chainId;const a=null!=t.maxFeePerGas||null!=t.maxPriorityFeePerGas;if(null==t.gasPrice||2!==t.type&&!a?0!==t.type&&1!==t.type||!a||ni(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",n):ni(!1,"eip-1559 transaction do not support gasPrice","tx",n),2!==t.type&&null!=t.type||null==t.maxFeePerGas||null==t.maxPriorityFeePerGas)if(0===t.type||1===t.type){const n=await e.getFeeData();Xo(null!=n.gasPrice,"network does not support gasPrice","UNSUPPORTED_OPERATION",{operation:"getGasPrice"}),null==t.gasPrice&&(t.gasPrice=n.gasPrice)}else{const n=await e.getFeeData();if(null==t.type)if(null!=n.maxFeePerGas&&null!=n.maxPriorityFeePerGas)if(t.authorizationList&&t.authorizationList.length?t.type=4:t.type=2,null!=t.gasPrice){const n=t.gasPrice;delete t.gasPrice,t.maxFeePerGas=n,t.maxPriorityFeePerGas=n}else null==t.maxFeePerGas&&(t.maxFeePerGas=n.maxFeePerGas),null==t.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=n.maxPriorityFeePerGas);else null!=n.gasPrice?(Xo(!a,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),null==t.gasPrice&&(t.gasPrice=n.gasPrice),t.type=0):Xo(!1,"failed to get consistent fee data","UNSUPPORTED_OPERATION",{operation:"signer.getFeeData"});else 2!==t.type&&3!==t.type&&4!==t.type||(null==t.maxFeePerGas&&(t.maxFeePerGas=n.maxFeePerGas),null==t.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=n.maxPriorityFeePerGas))}else t.type=2;return await Qo(t)}async populateAuthorization(n){const e=Object.assign({},n);return null==e.chainId&&(e.chainId=(await db(this,"getNetwork").getNetwork()).chainId),null==e.nonce&&(e.nonce=await this.getNonce()),e}async estimateGas(n){return db(this,"estimateGas").estimateGas(await this.populateCall(n))}async call(n){return db(this,"call").call(await this.populateCall(n))}async resolveName(n){const e=db(this,"resolveName");return await e.resolveName(n)}async sendTransaction(n){const e=db(this,"sendTransaction"),t=await this.populateTransaction(n);delete t.from;const r=jh.from(t);return await e.broadcastTransaction(await this.signTransaction(r))}authorize(n){Xo(!1,"authorization not implemented for this signer","UNSUPPORTED_OPERATION",{operation:"authorize"})}}class fb extends pb{address;constructor(n,e){super(e),Jo(this,{address:n})}async getAddress(){return this.address}connect(n){return new fb(this.address,n)}#de(n,e){Xo(!1,`VoidSigner cannot sign ${n}`,"UNSUPPORTED_OPERATION",{operation:e})}async signTransaction(n){this.#de("transactions","signTransaction")}async signMessage(n){this.#de("messages","signMessage")}async signTypedData(n,e,t){this.#de("typed-data","signTypedData")}}const gb=new Set;function mb(n){gb.has(n)||gb.add(n)}class bb{#Dn;#he;#Mn;#Kn;#pe;#fe;constructor(n){this.#Dn=n,this.#he=null,this.#Mn=this.#Hn.bind(this),this.#Kn=!1,this.#pe=null,this.#fe=!1}_subscribe(n){throw new Error("subclasses must override this")}_emitResults(n,e){throw new Error("subclasses must override this")}_recover(n){throw new Error("subclasses must override this")}async#Hn(n){try{null==this.#he&&(this.#he=this._subscribe(this.#Dn));let n=null;try{n=await this.#he}catch(n){if(!Wo(n,"UNSUPPORTED_OPERATION")||"eth_newFilter"!==n.operation)throw n}if(null==n)return this.#he=null,void this.#Dn._recoverSubscriber(this,this._recover(this.#Dn));const e=await this.#Dn.getNetwork();if(this.#pe||(this.#pe=e),this.#pe.chainId!==e.chainId)throw new Error("chaid changed");if(this.#fe)return;const t=await this.#Dn.send("eth_getFilterChanges",[n]);await this._emitResults(this.#Dn,t)}catch(n){}this.#Dn.once("block",this.#Mn)}#ge(){const n=this.#he;n&&(this.#he=null,n.then(n=>{this.#Dn.destroyed||this.#Dn.send("eth_uninstallFilter",[n])}))}start(){this.#Kn||(this.#Kn=!0,this.#Hn(-2))}stop(){this.#Kn&&(this.#Kn=!1,this.#fe=!0,this.#ge(),this.#Dn.off("block",this.#Mn))}pause(n){n&&this.#ge(),this.#Dn.off("block",this.#Mn)}resume(){this.start()}}class yb extends bb{#me;constructor(n,e){var t;super(n),this.#me=(t=e,JSON.parse(JSON.stringify(t)))}_recover(n){return new Jm(n,this.#me)}async _subscribe(n){return await n.send("eth_newFilter",[this.#me])}async _emitResults(n,e){for(const t of e)n.emit(this.#me,n._wrapLog(t,n._network))}}class vb extends bb{async _subscribe(n){return await n.send("eth_newPendingTransactionFilter",[])}async _emitResults(n,e){for(const t of e)n.emit("pending",t)}}const wb="bigint,boolean,function,number,string,symbol".split(/,/g);function kb(n){if(null==n||wb.indexOf(typeof n)>=0)return n;if("function"==typeof n.getAddress)return n;if(Array.isArray(n))return n.map(kb);if("object"==typeof n)return Object.keys(n).reduce((e,t)=>(e[t]=n[t],e),{});throw new Error(`should not happen: ${n} (${typeof n})`)}function Ab(n){return new Promise(e=>{setTimeout(e,n)})}function Eb(n){return n?n.toLowerCase():n}function xb(n){return n&&"number"==typeof n.pollingInterval}const Pb={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class Ib extends pb{address;constructor(n,e){super(n),Jo(this,{address:e=jd(e)})}connect(n){Xo(!1,"cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async populateTransaction(n){return await this.populateCall(n)}async sendUncheckedTransaction(n){const e=kb(n),t=[];if(e.from){const r=e.from;t.push((async()=>{const t=await Kd(r,this.provider);ni(null!=t&&t.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",n),e.from=t})())}else e.from=this.address;if(null==e.gasLimit&&t.push((async()=>{e.gasLimit=await this.provider.estimateGas({...e,from:this.address})})()),null!=e.to){const n=e.to;t.push((async()=>{e.to=await Kd(n,this.provider)})())}t.length&&await Promise.all(t);const r=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[r])}async sendTransaction(n){const e=await this.provider.getBlockNumber(),t=await this.sendUncheckedTransaction(n);return await new Promise((n,r)=>{const a=[1e3,100];let o=0;const i=async()=>{try{const r=await this.provider.getTransaction(t);if(null!=r)return void n(r.replaceableTransaction(e))}catch(n){if(Wo(n,"CANCELLED")||Wo(n,"BAD_DATA")||Wo(n,"NETWORK_ERROR")||Wo(n,"UNSUPPORTED_OPERATION"))return null==n.info&&(n.info={}),n.info.sendTransactionHash=t,void r(n);if(Wo(n,"INVALID_ARGUMENT")&&(o++,null==n.info&&(n.info={}),n.info.sendTransactionHash=t,o>10))return void r(n);this.provider.emit("error",Yo("failed to fetch transation after sending (will try again)","UNKNOWN_ERROR",{error:n}))}this.provider._setTimeout(()=>{i()},a.pop()||4e3)};i()})}async signTransaction(n){const e=kb(n);if(e.from){const t=await Kd(e.from,this.provider);ni(null!=t&&t.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",n),e.from=t}else e.from=this.address;const t=this.provider.getRpcTransaction(e);return await this.provider.send("eth_signTransaction",[t])}async signMessage(n){const e="string"==typeof n?Qi(n):n;return await this.provider.send("personal_sign",[di(e),this.address.toLowerCase()])}async signTypedData(n,e,t){const r=kb(t),a=await kf.resolveNames(n,e,r,async n=>{const e=await Kd(n);return ni(null!=e,"TypedData does not support null address","value",n),e});return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(kf.getPayload(a.domain,e,a.value))])}async unlock(n){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),n,null])}async _legacySignMessage(n){const e="string"==typeof n?Qi(n):n;return await this.provider.send("eth_sign",[this.address.toLowerCase(),di(e)])}}class Nb extends rb{#Q;#be;#ye;#ve;#we;#pe;#ke;#Ae(){if(this.#ve)return;const n=1===this._getOption("batchMaxCount")?0:this._getOption("batchStallTime");this.#ve=setTimeout(()=>{this.#ve=null;const n=this.#ye;for(this.#ye=[];n.length;){const e=[n.shift()];for(;n.length&&e.length!==this.#Q.batchMaxCount;){e.push(n.shift());if(JSON.stringify(e.map(n=>n.payload)).length>this.#Q.batchMaxSize){n.unshift(e.pop());break}}(async()=>{const n=1===e.length?e[0].payload:e.map(n=>n.payload);this.emit("debug",{action:"sendRpcPayload",payload:n});try{const t=await this._send(n);this.emit("debug",{action:"receiveRpcResult",result:t});for(const{resolve:n,reject:r,payload:a}of e){if(this.destroyed){r(Yo("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:a.method}));continue}const e=t.filter(n=>n.id===a.id)[0];if(null==e){const n=Yo("missing response for request","BAD_DATA",{value:t,info:{payload:a}});this.emit("error",n),r(n);continue}"error"in e?r(this.getRpcError(a,e)):n(e.result)}}catch(n){this.emit("debug",{action:"receiveRpcError",error:n});for(const{reject:t}of e)t(n)}})()}},n)}constructor(n,e){super(n,e),this.#be=1,this.#Q=Object.assign({},Pb,e||{}),this.#ye=[],this.#ve=null,this.#pe=null,this.#ke=null;{let n=null;const e=new Promise(e=>{n=e});this.#we={promise:e,resolve:n}}const t=this._getOption("staticNetwork");"boolean"==typeof t?(ni(!t||"any"!==n,"staticNetwork cannot be used on special network 'any'","options",e),t&&null!=n&&(this.#pe=Lm.from(n))):t&&(ni(null==n||t.matches(n),"staticNetwork MUST match network object","options",e),this.#pe=t)}_getOption(n){return this.#Q[n]}get _network(){return Xo(this.#pe,"network is not available yet","NETWORK_ERROR"),this.#pe}async _perform(n){if("call"===n.method||"estimateGas"===n.method){let e=n.transaction;if(e&&null!=e.type&&Pi(e.type)&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const t=await this.getFeeData();null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas&&(n=Object.assign({},n,{transaction:Object.assign({},e,{type:void 0})}))}}const e=this.getRpcRequest(n);return null!=e?await this.send(e.method,e.args):super._perform(n)}async _detectNetwork(){const n=this._getOption("staticNetwork");if(n){if(!0!==n)return n;if(this.#pe)return this.#pe}return this.#ke?await this.#ke:this.ready?(this.#ke=(async()=>{try{const n=Lm.from(Pi(await this.send("eth_chainId",[])));return this.#ke=null,n}catch(n){throw this.#ke=null,n}})(),await this.#ke):(this.#ke=(async()=>{const n={id:this.#be++,method:"eth_chainId",params:[],jsonrpc:"2.0"};let e;this.emit("debug",{action:"sendRpcPayload",payload:n});try{e=(await this._send(n))[0],this.#ke=null}catch(n){throw this.#ke=null,this.emit("debug",{action:"receiveRpcError",error:n}),n}if(this.emit("debug",{action:"receiveRpcResult",result:e}),"result"in e)return Lm.from(Pi(e.result));throw this.getRpcError(n,e)})(),await this.#ke)}_start(){null!=this.#we&&null!=this.#we.resolve&&(this.#we.resolve(),this.#we=null,(async()=>{for(;null==this.#pe&&!this.destroyed;)try{this.#pe=await this._detectNetwork()}catch(n){if(this.destroyed)break;this.emit("error",Yo("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:n}})),await Ab(1e3)}this.#Ae()})())}async _waitUntilReady(){if(null!=this.#we)return await this.#we.promise}_getSubscriber(n){return"pending"===n.type?new vb(this):"event"===n.type?this._getOption("polling")?new Jm(this,n.filter):new yb(this,n.filter):"orphan"===n.type&&"drop-log"===n.filter.orphan?new Ym("orphan"):super._getSubscriber(n)}get ready(){return null==this.#we}getRpcTransaction(n){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(t=>{if(null==n[t])return;let r=t;"gasLimit"===t&&(r="gas"),e[r]=Ci(Pi(n[t],`tx.${t}`))}),["from","to","data"].forEach(t=>{null!=n[t]&&(e[t]=di(n[t]))}),n.accessList&&(e.accessList=fh(n.accessList)),n.blobVersionedHashes&&(e.blobVersionedHashes=n.blobVersionedHashes.map(n=>n.toLowerCase())),n.authorizationList&&(e.authorizationList=n.authorizationList.map(n=>{const e=gh(n);return{address:e.address,nonce:Ci(e.nonce),chainId:Ci(e.chainId),yParity:Ci(e.signature.yParity),r:Ci(e.signature.r),s:Ci(e.signature.s)}})),e}getRpcRequest(n){switch(n.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getPriorityFee":return{method:"eth_maxPriorityFeePerGas",args:[]};case"getBalance":return{method:"eth_getBalance",args:[Eb(n.address),n.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[Eb(n.address),n.blockTag]};case"getCode":return{method:"eth_getCode",args:[Eb(n.address),n.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[Eb(n.address),"0x"+n.position.toString(16),n.blockTag]};case"broadcastTransaction":return{method:"eth_sendRawTransaction",args:[n.signedTransaction]};case"getBlock":if("blockTag"in n)return{method:"eth_getBlockByNumber",args:[n.blockTag,!!n.includeTransactions]};if("blockHash"in n)return{method:"eth_getBlockByHash",args:[n.blockHash,!!n.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[n.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[n.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(n.transaction),n.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(n.transaction)]};case"getLogs":return n.filter&&null!=n.filter.address&&(Array.isArray(n.filter.address)?n.filter.address=n.filter.address.map(Eb):n.filter.address=Eb(n.filter.address)),{method:"eth_getLogs",args:[n.filter]}}return null}getRpcError(n,e){const{method:t}=n,{error:r}=e;if("eth_estimateGas"===t&&r.message){const e=r.message;if(!e.match(/revert/i)&&e.match(/insufficient funds/i))return Yo("insufficient funds","INSUFFICIENT_FUNDS",{transaction:n.params[0],info:{payload:n,error:r}});if(e.match(/nonce/i)&&e.match(/too low/i))return Yo("nonce has already been used","NONCE_EXPIRED",{transaction:n.params[0],info:{payload:n,error:r}})}if("eth_call"===t||"eth_estimateGas"===t){const e=Sb(r),a=vg.getBuiltinCallException("eth_call"===t?"call":"estimateGas",n.params[0],e?e.data:null);return a.info={error:r,payload:n},a}const a=JSON.stringify(function(n){const e=[];return Tb(n,e),e}(r));if("string"==typeof r.message&&r.message.match(/user denied|ethers-user-denied/i)){return Yo("user rejected action","ACTION_REJECTED",{action:{eth_sign:"signMessage",personal_sign:"signMessage",eth_signTypedData_v4:"signTypedData",eth_signTransaction:"signTransaction",eth_sendTransaction:"sendTransaction",eth_requestAccounts:"requestAccess",wallet_requestAccounts:"requestAccess"}[t]||"unknown",reason:"rejected",info:{payload:n,error:r}})}if("eth_sendRawTransaction"===t||"eth_sendTransaction"===t){const e=n.params[0];if(a.match(/insufficient funds|base fee exceeds gas limit/i))return Yo("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e,info:{error:r}});if(a.match(/nonce/i)&&a.match(/too low/i))return Yo("nonce has already been used","NONCE_EXPIRED",{transaction:e,info:{error:r}});if(a.match(/replacement transaction/i)&&a.match(/underpriced/i))return Yo("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e,info:{error:r}});if(a.match(/only replay-protected/i))return Yo("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:t,info:{transaction:e,info:{error:r}}})}let o=!!a.match(/the method .* does not exist/i);return o||r&&r.details&&r.details.startsWith("Unauthorized method:")&&(o=!0),o?Yo("unsupported operation","UNSUPPORTED_OPERATION",{operation:n.method,info:{error:r,payload:n}}):Yo("could not coalesce error","UNKNOWN_ERROR",{error:r,payload:n})}send(n,e){if(this.destroyed)return Promise.reject(Yo("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:n}));const t=this.#be++,r=new Promise((r,a)=>{this.#ye.push({resolve:r,reject:a,payload:{method:n,params:e,id:t,jsonrpc:"2.0"}})});return this.#Ae(),r}async getSigner(n){null==n&&(n=0);const e=this.send("eth_accounts",[]);if("number"==typeof n){const t=await e;if(n>=t.length)throw new Error("no such account");return new Ib(this,t[n])}const{accounts:t}=await Qo({network:this.getNetwork(),accounts:e});n=jd(n);for(const e of t)if(jd(e)===n)return new Ib(this,n);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map(n=>new Ib(this,n))}destroy(){this.#ve&&(clearTimeout(this.#ve),this.#ve=null);for(const{payload:n,reject:e}of this.#ye)e(Yo("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:n.method}));this.#ye=[],super.destroy()}}class zb extends Nb{#Ee;constructor(n,e){super(n,e);let t=this._getOption("pollingInterval");null==t&&(t=Pb.pollingInterval),this.#Ee=t}_getSubscriber(n){const e=super._getSubscriber(n);return xb(e)&&(e.pollingInterval=this.#Ee),e}get pollingInterval(){return this.#Ee}set pollingInterval(n){if(!Number.isInteger(n)||n<0)throw new Error("invalid interval");this.#Ee=n,this._forEachSubscriber(n=>{xb(n)&&(n.pollingInterval=this.#Ee)})}}class Rb extends zb{#xe;constructor(n,e,t){null==n&&(n="http://localhost:8545"),super(e,t),this.#xe="string"==typeof n?new ss(n):n.clone()}_getConnection(){return this.#xe.clone()}async send(n,e){return await this._start(),await super.send(n,e)}async _send(n){const e=this._getConnection();e.body=JSON.stringify(n),e.setHeader("content-type","application/json");const t=await e.send();t.assertOk();let r=t.bodyJson;return Array.isArray(r)||(r=[r]),r}}function Sb(n){if(null==n)return null;if("string"==typeof n.message&&n.message.match(/revert/i)&&ci(n.data))return{message:n.message,data:n.data};if("object"==typeof n){for(const e in n){const t=Sb(n[e]);if(t)return t}return null}if("string"==typeof n)try{return Sb(JSON.parse(n))}catch(n){}return null}function Tb(n,e){if(null!=n){if("string"==typeof n.message&&e.push(n.message),"object"==typeof n)for(const t in n)Tb(n[t],e);if("string"==typeof n)try{return Tb(JSON.parse(n),e)}catch(n){}}}const Bb="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";class Cb extends Rb{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Lm.from(n);null==e&&(e=Bb);const r={polling:!0,staticNetwork:t};super(Cb.getRequest(t,e),t,r),Jo(this,{apiKey:e})}_getProvider(n){try{return new Cb(n,this.apiKey)}catch(n){}return super._getProvider(n)}static getRequest(n,e){null==e&&(e=Bb);const t=new ss(`https://${function(n){switch(n){case"mainnet":return"rpc.ankr.com/eth";case"goerli":return"rpc.ankr.com/eth_goerli";case"sepolia":return"rpc.ankr.com/eth_sepolia";case"arbitrum":return"rpc.ankr.com/arbitrum";case"base":return"rpc.ankr.com/base";case"base-goerli":return"rpc.ankr.com/base_goerli";case"base-sepolia":return"rpc.ankr.com/base_sepolia";case"bnb":return"rpc.ankr.com/bsc";case"bnbt":return"rpc.ankr.com/bsc_testnet_chapel";case"filecoin":return"rpc.ankr.com/filecoin";case"filecoin-calibration":return"rpc.ankr.com/filecoin_testnet";case"matic":return"rpc.ankr.com/polygon";case"matic-mumbai":return"rpc.ankr.com/polygon_mumbai";case"optimism":return"rpc.ankr.com/optimism";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia"}ni(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===Bb&&(t.retryFunc=async(n,e,t)=>(mb("AnkrProvider"),!0)),t}getRpcError(n,e){return"eth_sendRawTransaction"===n.method&&e&&e.error&&"INTERNAL_ERROR: could not replace existing tx"===e.error.message&&(e.error.message="replacement transaction underpriced"),super.getRpcError(n,e)}isCommunityResource(){return this.apiKey===Bb}}const Ob="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class Ub extends Rb{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Lm.from(n);null==e&&(e=Ob);super(Ub.getRequest(t,e),t,{staticNetwork:t}),Jo(this,{apiKey:e})}_getProvider(n){try{return new Ub(n,this.apiKey)}catch(n){}return super._getProvider(n)}async _perform(n){if("getTransactionResult"===n.method){const{trace:e,tx:t}=await Qo({trace:this.send("trace_transaction",[n.hash]),tx:this.getTransaction(n.hash)});if(null==e||null==t)return null;let r,a=!1;try{r=e[0].result.output,a="Reverted"===e[0].error}catch(n){}if(r)return Xo(!a,"an error occurred during transaction executions","CALL_EXCEPTION",{action:"getTransactionResult",data:r,reason:null,transaction:t,invocation:null,revert:null}),r;Xo(!1,"could not parse trace result","BAD_DATA",{value:e})}return await super._perform(n)}isCommunityResource(){return this.apiKey===Ob}static getRequest(n,e){null==e&&(e=Ob);const t=new ss(`https://${function(n){switch(n){case"mainnet":return"eth-mainnet.g.alchemy.com";case"goerli":return"eth-goerli.g.alchemy.com";case"sepolia":return"eth-sepolia.g.alchemy.com";case"arbitrum":return"arb-mainnet.g.alchemy.com";case"arbitrum-goerli":return"arb-goerli.g.alchemy.com";case"arbitrum-sepolia":return"arb-sepolia.g.alchemy.com";case"base":return"base-mainnet.g.alchemy.com";case"base-goerli":return"base-goerli.g.alchemy.com";case"base-sepolia":return"base-sepolia.g.alchemy.com";case"matic":return"polygon-mainnet.g.alchemy.com";case"matic-amoy":return"polygon-amoy.g.alchemy.com";case"matic-mumbai":return"polygon-mumbai.g.alchemy.com";case"optimism":return"opt-mainnet.g.alchemy.com";case"optimism-goerli":return"opt-goerli.g.alchemy.com";case"optimism-sepolia":return"opt-sepolia.g.alchemy.com"}ni(!1,"unsupported network","network",n)}(n.name)}/v2/${e}`);return t.allowGzip=!0,e===Ob&&(t.retryFunc=async(n,e,t)=>(mb("alchemy"),!0)),t}}function Fb(n){switch(n){case"mainnet":return"39f1d67cedf8b7831010a665328c9197";case"arbitrum":return"0550c209db33c3abf4cc927e1e18cea1";case"bnb":return"98b5a77e531614387366f6fc5da097f8";case"matic":return"cd9d4d70377471aa7c142ec4a4205249"}ni(!1,"unsupported network","network",n)}class jb extends Rb{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Lm.from(n);null==e&&(e=Fb(t.name));super(jb.getRequest(t,e),t,{staticNetwork:t}),Jo(this,{apiKey:e})}_getProvider(n){try{return new jb(n,this.apiKey)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.apiKey===Fb(this._network.name)}static getRequest(n,e){null==e&&(e=Fb(n.name));const t=new ss(`https://${function(n){switch(n){case"mainnet":return"ethereum-mainnet.core.chainstack.com";case"arbitrum":return"arbitrum-mainnet.core.chainstack.com";case"bnb":return"bsc-mainnet.core.chainstack.com";case"matic":return"polygon-mainnet.core.chainstack.com"}ni(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===Fb(n.name)&&(t.retryFunc=async(n,e,t)=>(mb("ChainstackProvider"),!0)),t}}class Lb extends Rb{constructor(n){null==n&&(n="mainnet");const e=Lm.from(n);ni("mainnet"===e.name,"unsupported network","network",n),super("https://cloudflare-eth.com/",e,{staticNetwork:e})}}const Db="1 11155111 17000 560048 2741 11124 33111 33139 42170 42161 421614 43114 43113 8453 84532 80069 80094 199 1029 81457 168587773 56 97 42220 11142220 252 2523 100 999 737373 747474 59144 59141 5000 5003 43521 143 10143 1287 1284 1285 10 11155420 204 5611 80002 137 534352 534351 1329 1328 146 14601 988 2201 1923 1924 167013 167000 130 1301 480 4801 51 50 324 300".split(/ /g);const Mb="org.ethers.plugins.provider.Etherscan";class Gb extends Bm{baseUrl;constructor(n){super(Mb),Jo(this,{baseUrl:n})}clone(){return new Gb(this.baseUrl)}}const qb=["enableCcipRead"];let Hb=1;class Kb extends rb{network;apiKey;#Pe;constructor(n,e){const t=null!=e?e:null;super();const r=Lm.from(n);ni(Db.indexOf(`${r.chainId}`)>=0,"unsupported network","network",r),this.#Pe=r.getPlugin(Mb),Jo(this,{apiKey:t,network:r})}getBaseUrl(){if(this.#Pe)return this.#Pe.baseUrl;switch(this.network.name){case"mainnet":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"holesky":return"https://api-holesky.etherscan.io";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"base":return"https://api.basescan.org";case"base-sepolia":return"https://api-sepolia.basescan.org";case"bnb":return"https://api.bscscan.com";case"bnbt":return"https://api-testnet.bscscan.com";case"matic":return"https://api.polygonscan.com";case"matic-amoy":return"https://api-amoy.polygonscan.com";case"matic-mumbai":return"https://api-testnet.polygonscan.com";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}ni(!1,"unsupported network","network",this.network)}getUrl(n,e){let t=Object.keys(e).reduce((n,t)=>{const r=e[t];return null!=r&&(n+=`&${t}=${r}`),n},"");return this.apiKey&&(t+=`&apikey=${this.apiKey}`),`https://api.etherscan.io/v2/api?chainid=${this.network.chainId}&module=${n}${t}`}getPostUrl(){return`https://api.etherscan.io/v2/api?chainid=${this.network.chainId}`}getPostData(n,e){return e.module=n,e.apikey=this.apiKey,e.chainid=this.network.chainId,e}async detectNetwork(){return this.network}async fetch(n,e,t){const r=Hb++,a=t?this.getPostUrl():this.getUrl(n,e),o=t?this.getPostData(n,e):null;this.emit("debug",{action:"sendRequest",id:r,url:a,payload:o});const i=new ss(a);i.setThrottleParams({slotInterval:1e3}),i.retryFunc=(n,e,t)=>(this.isCommunityResource()&&mb("Etherscan"),Promise.resolve(!0)),i.processFunc=async(e,t)=>{const a=t.hasBody()?JSON.parse(Ji(t.body)):{},o=("string"==typeof a.result?a.result:"").toLowerCase().indexOf("rate limit")>=0;return"proxy"===n?a&&0==a.status&&"NOTOK"==a.message&&o&&(this.emit("debug",{action:"receiveError",id:r,reason:"proxy-NOTOK",error:a}),t.throwThrottleError(a.result,2e3)):o&&(this.emit("debug",{action:"receiveError",id:r,reason:"null result",error:a.result}),t.throwThrottleError(a.result,2e3)),t},o&&(i.setHeader("content-type","application/x-www-form-urlencoded; charset=UTF-8"),i.body=Object.keys(o).map(n=>`${n}=${o[n]}`).join("&"));const s=await i.send();try{s.assertOk()}catch(n){this.emit("debug",{action:"receiveError",id:r,error:n,reason:"assertOk"}),Xo(!1,"response error","SERVER_ERROR",{request:i,response:s})}s.hasBody()||(this.emit("debug",{action:"receiveError",id:r,error:"missing body",reason:"null body"}),Xo(!1,"missing response","SERVER_ERROR",{request:i,response:s}));const c=JSON.parse(Ji(s.body));return"proxy"===n?("2.0"!=c.jsonrpc&&(this.emit("debug",{action:"receiveError",id:r,result:c,reason:"invalid JSON-RPC"}),Xo(!1,"invalid JSON-RPC response (missing jsonrpc='2.0')","SERVER_ERROR",{request:i,response:s,info:{result:c}})),c.error&&(this.emit("debug",{action:"receiveError",id:r,result:c,reason:"JSON-RPC error"}),Xo(!1,"error response","SERVER_ERROR",{request:i,response:s,info:{result:c}})),this.emit("debug",{action:"receiveRequest",id:r,result:c}),c.result):0!=c.status||"No records found"!==c.message&&"No transactions found"!==c.message?((1!=c.status||"string"==typeof c.message&&!c.message.match(/^OK/))&&(this.emit("debug",{action:"receiveError",id:r,result:c}),Xo(!1,"error response","SERVER_ERROR",{request:i,response:s,info:{result:c}})),this.emit("debug",{action:"receiveRequest",id:r,result:c}),c.result):(this.emit("debug",{action:"receiveRequest",id:r,result:c}),c.result)}_getTransactionPostData(n){const e={};for(let t in n){if(qb.indexOf(t)>=0)continue;if(null==n[t])continue;let r=n[t];if(("type"!==t||0!==r)&&("blockTag"!==t||"latest"!==r)){if({type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[t])r=Ci(r);else if("accessList"===t)r="["+fh(r).map(n=>`{address:"${n.address}",storageKeys:["${n.storageKeys.join('","')}"]}`).join(",")+"]";else if("blobVersionedHashes"===t){if(0===r.length)continue;Xo(!1,"Etherscan API does not support blobVersionedHashes","UNSUPPORTED_OPERATION",{operation:"_getTransactionPostData",info:{transaction:n}})}else r=di(r);e[t]=r}}return e}_checkError(n,e,t){let r="";if(Wo(e,"SERVER_ERROR")){try{r=e.info.result.error.message}catch(n){}if(!r)try{r=e.info.message}catch(n){}}if("estimateGas"===n.method&&!r.match(/revert/i)&&r.match(/insufficient funds/i)&&Xo(!1,"insufficient funds","INSUFFICIENT_FUNDS",{transaction:n.transaction}),("call"===n.method||"estimateGas"===n.method)&&r.match(/execution reverted/i)){let t="";try{t=e.info.result.error.data}catch(e){}const r=vg.getBuiltinCallException(n.method,n.transaction,t);throw r.info={request:n,error:e},r}if(r&&"broadcastTransaction"===n.method){const e=jh.from(n.signedTransaction);r.match(/replacement/i)&&r.match(/underpriced/i)&&Xo(!1,"replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e}),r.match(/insufficient funds/)&&Xo(!1,"insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e}),r.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&Xo(!1,"nonce has already been used","NONCE_EXPIRED",{transaction:e})}throw e}async _detectNetwork(){return this.network}async _perform(n){switch(n.method){case"chainId":return this.network.chainId;case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getPriorityFee":if("mainnet"===this.network.name)return"1000000000";if("optimism"===this.network.name)return"1000000";throw new Error("fallback onto the AbstractProvider default");case"getBalance":return this.fetch("account",{action:"balance",address:n.address,tag:n.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:n.address,tag:n.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:n.address,tag:n.blockTag});case"getStorage":return this.fetch("proxy",{action:"eth_getStorageAt",address:n.address,position:n.position,tag:n.blockTag});case"broadcastTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:n.signedTransaction},!0).catch(e=>this._checkError(n,e,n.signedTransaction));case"getBlock":if("blockTag"in n)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:n.blockTag,boolean:n.includeTransactions?"true":"false"});Xo(!1,"getBlock by blockHash not supported by Etherscan","UNSUPPORTED_OPERATION",{operation:"getBlock(blockHash)"});case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:n.hash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:n.hash});case"call":{if("latest"!==n.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const e=this._getTransactionPostData(n.transaction);e.module="proxy",e.action="eth_call";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(n,e,n.transaction)}}case"estimateGas":{const e=this._getTransactionPostData(n.transaction);e.module="proxy",e.action="eth_estimateGas";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(n,e,n.transaction)}}}return super._perform(n)}async getNetwork(){return this.network}async getEtherPrice(){return"mainnet"!==this.network.name?0:parseFloat((await this.fetch("stats",{action:"ethprice"})).ethusd)}async getContract(n){let e=this._getAddress(n);var t;(t=e)&&"function"==typeof t.then&&(e=await e);try{const n=await this.fetch("contract",{action:"getabi",address:e}),t=JSON.parse(n);return new fm(e,t,this)}catch(n){return null}}isCommunityResource(){return null==this.apiKey}}const _b=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}().WebSocket;class Vb{#Dn;#Sn;get filter(){return JSON.parse(this.#Sn)}#Ie;#Ne;#ze;constructor(n,e){this.#Dn=n,this.#Sn=JSON.stringify(e),this.#Ie=null,this.#Ne=null,this.#ze=null}start(){this.#Ie=this.#Dn.send("eth_subscribe",this.filter).then(n=>(this.#Dn._register(n,this),n))}stop(){this.#Ie.then(n=>{this.#Dn.destroyed||this.#Dn.send("eth_unsubscribe",[n])}),this.#Ie=null}pause(n){Xo(n,"preserve logs while paused not supported by SocketSubscriber yet","UNSUPPORTED_OPERATION",{operation:"pause(false)"}),this.#Ne=!!n}resume(){this.#Ne=null}_handleMessage(n){if(null!=this.#Ie&&null===this.#Ne){let e=this.#ze;e=null==e?this._emit(this.#Dn,n):e.then(async()=>{await this._emit(this.#Dn,n)}),this.#ze=e.then(()=>{this.#ze===e&&(this.#ze=null)})}}async _emit(n,e){throw new Error("sub-classes must implemente this; _emit")}}class Qb extends Vb{constructor(n){super(n,["newHeads"])}async _emit(n,e){n.emit("block",parseInt(e.number))}}class Jb extends Vb{constructor(n){super(n,["newPendingTransactions"])}async _emit(n,e){n.emit("pending",e)}}class $b extends Vb{#Re;get logFilter(){return JSON.parse(this.#Re)}constructor(n,e){super(n,["logs",e]),this.#Re=JSON.stringify(e)}async _emit(n,e){n.emit(this.logFilter,n._wrapLog(e,n._network))}}class Wb extends Nb{#Se;#Jn;#Te;constructor(n,e){const t=Object.assign({},null!=e?e:{});ni(null==t.batchMaxCount||1===t.batchMaxCount,"sockets-based providers do not support batches","options.batchMaxCount",e),t.batchMaxCount=1,null==t.staticNetwork&&(t.staticNetwork=!0),super(n,t),this.#Se=new Map,this.#Jn=new Map,this.#Te=new Map}_getSubscriber(n){switch(n.type){case"close":return new Ym("close");case"block":return new Qb(this);case"pending":return new Jb(this);case"event":return new $b(this,n.filter);case"orphan":if("drop-log"===n.filter.orphan)return new Ym("drop-log")}return super._getSubscriber(n)}_register(n,e){this.#Jn.set(n,e);const t=this.#Te.get(n);if(t){for(const n of t)e._handleMessage(n);this.#Te.delete(n)}}async _send(n){ni(!Array.isArray(n),"WebSocket does not support batch send","payload",n);const e=new Promise((e,t)=>{this.#Se.set(n.id,{payload:n,resolve:e,reject:t})});return await this._waitUntilReady(),await this._write(JSON.stringify(n)),[await e]}async _processMessage(n){const e=JSON.parse(n);if(e&&"object"==typeof e&&"id"in e){const n=this.#Se.get(e.id);if(null==n)return void this.emit("error",Yo("received result for unknown id","UNKNOWN_ERROR",{reasonCode:"UNKNOWN_ID",result:e}));this.#Se.delete(e.id),n.resolve(e)}else{if(!e||"eth_subscription"!==e.method)return void this.emit("error",Yo("received unexpected message","UNKNOWN_ERROR",{reasonCode:"UNEXPECTED_MESSAGE",result:e}));{const n=e.params.subscription,t=this.#Jn.get(n);if(t)t._handleMessage(e.params.result);else{let t=this.#Te.get(n);null==t&&(t=[],this.#Te.set(n,t)),t.push(e.params.result)}}}}async _write(n){throw new Error("sub-classes must override this")}}class Zb extends Wb{#xe;#Be;get websocket(){if(null==this.#Be)throw new Error("websocket closed");return this.#Be}constructor(n,e,t){super(e,t),"string"==typeof n?(this.#xe=()=>new _b(n),this.#Be=this.#xe()):"function"==typeof n?(this.#xe=n,this.#Be=n()):(this.#xe=null,this.#Be=n),this.websocket.onopen=async()=>{try{await this._start(),this.resume()}catch(n){}},this.websocket.onmessage=n=>{this._processMessage(n.data)}}async _write(n){this.websocket.send(n)}async destroy(){null!=this.#Be&&(this.#Be.close(),this.#Be=null),super.destroy()}}const Yb="84842078b09946638c03157f83405213";class Xb extends Zb{projectId;projectSecret;constructor(n,e){const t=new ny(n,e),r=t._getConnection();Xo(!r.credentials,"INFURA WebSocket project secrets unsupported","UNSUPPORTED_OPERATION",{operation:"InfuraProvider.getWebSocketProvider()"});super(r.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t._network),Jo(this,{projectId:t.projectId,projectSecret:t.projectSecret})}isCommunityResource(){return this.projectId===Yb}}class ny extends Rb{projectId;projectSecret;constructor(n,e,t){null==n&&(n="mainnet");const r=Lm.from(n);null==e&&(e=Yb),null==t&&(t=null);super(ny.getRequest(r,e,t),r,{staticNetwork:r}),Jo(this,{projectId:e,projectSecret:t})}_getProvider(n){try{return new ny(n,this.projectId,this.projectSecret)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.projectId===Yb}static getWebSocketProvider(n,e){return new Xb(n,e)}static getRequest(n,e,t){null==e&&(e=Yb),null==t&&(t=null);const r=new ss(`https://${function(n){switch(n){case"mainnet":return"mainnet.infura.io";case"goerli":return"goerli.infura.io";case"sepolia":return"sepolia.infura.io";case"arbitrum":return"arbitrum-mainnet.infura.io";case"arbitrum-goerli":return"arbitrum-goerli.infura.io";case"arbitrum-sepolia":return"arbitrum-sepolia.infura.io";case"base":return"base-mainnet.infura.io";case"base-goerlia":case"base-goerli":return"base-goerli.infura.io";case"base-sepolia":return"base-sepolia.infura.io";case"bnb":return"bsc-mainnet.infura.io";case"bnbt":return"bsc-testnet.infura.io";case"linea":return"linea-mainnet.infura.io";case"linea-goerli":return"linea-goerli.infura.io";case"linea-sepolia":return"linea-sepolia.infura.io";case"matic":return"polygon-mainnet.infura.io";case"matic-amoy":return"polygon-amoy.infura.io";case"matic-mumbai":return"polygon-mumbai.infura.io";case"optimism":return"optimism-mainnet.infura.io";case"optimism-goerli":return"optimism-goerli.infura.io";case"optimism-sepolia":return"optimism-sepolia.infura.io"}ni(!1,"unsupported network","network",n)}(n.name)}/v3/${e}`);return r.allowGzip=!0,t&&r.setCredentials("",t),e===Yb&&(r.retryFunc=async(n,e,t)=>(mb("InfuraProvider"),!0)),r}}const ey="919b412a057b5e9c9b6dce193c5a60242d6efadb";class ty extends Rb{token;constructor(n,e){null==n&&(n="mainnet");const t=Lm.from(n);null==e&&(e=ey);super(ty.getRequest(t,e),t,{staticNetwork:t}),Jo(this,{token:e})}_getProvider(n){try{return new ty(n,this.token)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.token===ey}static getRequest(n,e){null==e&&(e=ey);const t=new ss(`https://${function(n){switch(n){case"mainnet":return"ethers.quiknode.pro";case"goerli":return"ethers.ethereum-goerli.quiknode.pro";case"sepolia":return"ethers.ethereum-sepolia.quiknode.pro";case"holesky":return"ethers.ethereum-holesky.quiknode.pro";case"arbitrum":return"ethers.arbitrum-mainnet.quiknode.pro";case"arbitrum-goerli":return"ethers.arbitrum-goerli.quiknode.pro";case"arbitrum-sepolia":return"ethers.arbitrum-sepolia.quiknode.pro";case"base":return"ethers.base-mainnet.quiknode.pro";case"base-goerli":return"ethers.base-goerli.quiknode.pro";case"base-spolia":return"ethers.base-sepolia.quiknode.pro";case"bnb":return"ethers.bsc.quiknode.pro";case"bnbt":return"ethers.bsc-testnet.quiknode.pro";case"matic":return"ethers.matic.quiknode.pro";case"matic-mumbai":return"ethers.matic-testnet.quiknode.pro";case"optimism":return"ethers.optimism.quiknode.pro";case"optimism-goerli":return"ethers.optimism-goerli.quiknode.pro";case"optimism-sepolia":return"ethers.optimism-sepolia.quiknode.pro";case"xdai":return"ethers.xdai.quiknode.pro"}ni(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===ey&&(t.retryFunc=async(n,e,t)=>(mb("QuickNodeProvider"),!0)),t}}const ry=BigInt("1"),ay=BigInt("2");function oy(){return(new Date).getTime()}function iy(n){return JSON.stringify(n,(n,e)=>"bigint"==typeof e?{type:"bigint",value:e.toString()}:e)}const sy={stallTimeout:400,priority:1,weight:1},cy={blockNumber:-2,requests:0,lateResponses:0,errorResponses:0,outOfSync:-1,unsupportedEvents:0,rollingDuration:0,score:0,_network:null,_updateNumber:null,_totalTime:0,_lastFatalError:null,_lastFatalErrorTimestamp:0};function ly(n){if(null==n)return"null";if(Array.isArray(n))return"["+n.map(ly).join(",")+"]";if("object"==typeof n&&"function"==typeof n.toJSON)return ly(n.toJSON());switch(typeof n){case"boolean":case"symbol":return n.toString();case"bigint":case"number":return BigInt(n).toString();case"string":return JSON.stringify(n);case"object":{const e=Object.keys(n);return e.sort(),"{"+e.map(e=>`${JSON.stringify(e)}:${ly(n[e])}`).join(",")+"}"}}throw new Error("Hmm...")}function uy(n,e){if("error"in e){const n=e.error;let t;return t=Wo(n,"CALL_EXCEPTION")?ly(Object.assign({},n,{shortMessage:void 0,reason:void 0,info:void 0})):ly(n),{tag:t,value:n}}const t=e.result;return{tag:ly(t),value:t}}function dy(n,e){const t=new Map;for(const{value:n,tag:r,weight:a}of e){const e=t.get(r)||{value:n,weight:0};e.weight+=a,t.set(r,e)}let r=null;for(const e of t.values())e.weight>=n&&(!r||e.weight>r.weight)&&(r=e);if(r)return r.value}function hy(n,e){let t=0;const r=new Map;let a=null;const o=[];for(const{value:n,tag:i,weight:s}of e)if(n instanceof Error){const e=r.get(i)||{value:n,weight:0};e.weight+=s,r.set(i,e),(null==a||e.weight>a.weight)&&(a=e)}else o.push(BigInt(n)),t+=s;if(t<n)return a&&a.weight>=n?a.value:void 0;o.sort((n,e)=>n<e?-1:e>n?1:0);const i=Math.floor(o.length/2);return o.length%2?o[i]:(o[i-1]+o[i]+ry)/ay}function py(n,e){const t=dy(n,e);if(void 0!==t)return t;for(const n of e)if(n.value)return n.value}class fy extends rb{quorum;eventQuorum;eventWorkers;#Ce;#Oe;#Ue;constructor(n,e,t){super(e,t),this.#Ce=n.map(n=>n instanceof rb?Object.assign({provider:n},sy,cy):Object.assign({},sy,n,cy)),this.#Oe=-2,this.#Ue=null,t&&null!=t.quorum?this.quorum=t.quorum:this.quorum=Math.ceil(this.#Ce.reduce((n,e)=>n+=e.weight,0)/2),this.eventQuorum=1,this.eventWorkers=1,ni(this.quorum<=this.#Ce.reduce((n,e)=>n+e.weight,0),"quorum exceed provider weight","quorum",this.quorum)}get providerConfigs(){return this.#Ce.map(n=>{const e=Object.assign({},n);for(const n in e)"_"===n[0]&&delete e[n];return e})}async _detectNetwork(){return Lm.from(Pi(await this._perform({method:"chainId"})))}async _translatePerform(n,e){switch(e.method){case"broadcastTransaction":return await n.broadcastTransaction(e.signedTransaction);case"call":return await n.call(Object.assign({},e.transaction,{blockTag:e.blockTag}));case"chainId":return(await n.getNetwork()).chainId;case"estimateGas":return await n.estimateGas(e.transaction);case"getBalance":return await n.getBalance(e.address,e.blockTag);case"getBlock":{const t="blockHash"in e?e.blockHash:e.blockTag;return await n.getBlock(t,e.includeTransactions)}case"getBlockNumber":return await n.getBlockNumber();case"getCode":return await n.getCode(e.address,e.blockTag);case"getGasPrice":return(await n.getFeeData()).gasPrice;case"getPriorityFee":return(await n.getFeeData()).maxPriorityFeePerGas;case"getLogs":return await n.getLogs(e.filter);case"getStorage":return await n.getStorage(e.address,e.position,e.blockTag);case"getTransaction":return await n.getTransaction(e.hash);case"getTransactionCount":return await n.getTransactionCount(e.address,e.blockTag);case"getTransactionReceipt":return await n.getTransactionReceipt(e.hash);case"getTransactionResult":return await n.getTransactionResult(e.hash)}}#Fe(n){const e=Array.from(n).map(n=>n.config),t=this.#Ce.slice();!function(n){for(let e=n.length-1;e>0;e--){const t=Math.floor(Math.random()*(e+1)),r=n[e];n[e]=n[t],n[t]=r}}(t),t.sort((n,e)=>n.priority-e.priority);for(const n of t)if(!n._lastFatalError&&-1===e.indexOf(n))return n;return null}#je(n,e){const t=this.#Fe(n);if(null==t)return null;const r={config:t,result:null,didBump:!1,perform:null,staller:null},a=oy();return r.perform=(async()=>{try{t.requests++;const n=await this._translatePerform(t.provider,e);r.result={result:n}}catch(n){t.errorResponses++,r.result={error:n}}const n=oy()-a;t._totalTime+=n,t.rollingDuration=.95*t.rollingDuration+.05*n,r.perform=null})(),r.staller=(async()=>{var n;await(n=t.stallTimeout,new Promise(e=>{setTimeout(e,n)})),r.staller=null})(),n.add(r),r}async#Le(){let n=this.#Ue;if(!n){const e=[];this.#Ce.forEach(n=>{e.push((async()=>{await async function(n,e){for(;(n.blockNumber<0||n.blockNumber<e)&&(n._updateNumber||(n._updateNumber=(async()=>{try{const e=await n.provider.getBlockNumber();e>n.blockNumber&&(n.blockNumber=e)}catch(e){n.blockNumber=-2,n._lastFatalError=e,n._lastFatalErrorTimestamp=oy()}n._updateNumber=null})()),await n._updateNumber,n.outOfSync++,!n._lastFatalError););}(n,0),n._lastFatalError||(n._network=await n.provider.getNetwork())})())}),this.#Ue=n=(async()=>{await Promise.all(e);let n=null;for(const e of this.#Ce){if(e._lastFatalError)continue;const t=e._network;null==n?n=t.chainId:t.chainId!==n&&Xo(!1,"cannot mix providers on different networks","UNSUPPORTED_OPERATION",{operation:"new FallbackProvider"})}})()}await n}async#De(n,e){const t=[];for(const r of n)if(null!=r.result){const{tag:n,value:a}=uy(e.method,r.result);t.push({tag:n,value:a,weight:r.config.weight})}if(!(t.reduce((n,e)=>n+e.weight,0)<this.quorum)){switch(e.method){case"getBlockNumber":{-2===this.#Oe&&(this.#Oe=Math.ceil(Ri(hy(this.quorum,this.#Ce.filter(n=>!n._lastFatalError).map(n=>({value:n.blockNumber,tag:Ri(n.blockNumber).toString(),weight:n.weight}))))));const n=function(n,e){if(1===n)return Ri(hy(n,e),"%internal");const t=new Map,r=(n,e)=>{const r=t.get(n)||{result:n,weight:0};r.weight+=e,t.set(n,r)};for(const{weight:n,value:t}of e){const e=Ri(t);r(e-1,n),r(e,n),r(e+1,n)}let a,o=0;for(const{weight:e,result:r}of t.values())e>=n&&(e>o||null!=a&&e===o&&r>a)&&(o=e,a=r);return a}(this.quorum,t);if(void 0===n)return;return n>this.#Oe&&(this.#Oe=n),this.#Oe}case"getGasPrice":case"getPriorityFee":case"estimateGas":return hy(this.quorum,t);case"getBlock":return"blockTag"in e&&"pending"===e.blockTag?py(this.quorum,t):dy(this.quorum,t);case"call":case"chainId":case"getBalance":case"getTransactionCount":case"getCode":case"getStorage":case"getTransaction":case"getTransactionReceipt":case"getLogs":return dy(this.quorum,t);case"broadcastTransaction":return py(this.quorum,t)}Xo(!1,"unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${iy(e.method)})`})}}async#Me(n,e){if(0===n.size)throw new Error("no runners?!");const t=[];let r=0;for(const e of n)e.perform&&t.push(e.perform),e.staller?t.push(e.staller):e.didBump||(e.didBump=!0,r++);const a=await this.#De(n,e);if(void 0!==a){if(a instanceof Error)throw a;return a}for(let t=0;t<r;t++)this.#je(n,e);return Xo(t.length>0,"quorum not met","SERVER_ERROR",{request:"%sub-requests",info:{request:e,results:Array.from(n).map(n=>iy(n.result))}}),await Promise.race(t),await this.#Me(n,e)}async _perform(n){if("broadcastTransaction"===n.method){const e=this.#Ce.map(n=>null),t=this.#Ce.map(async({provider:t,weight:r},a)=>{try{const o=await t._perform(n);e[a]=Object.assign(uy(n.method,{result:o}),{weight:r})}catch(t){e[a]=Object.assign(uy(n.method,{error:t}),{weight:r})}});for(;;){const n=e.filter(n=>null!=n);for(const{value:e}of n)if(!(e instanceof Error))return e;const r=dy(this.quorum,e.filter(n=>null!=n));if(Wo(r,"INSUFFICIENT_FUNDS"))throw r;const a=t.filter((n,t)=>null==e[t]);if(0===a.length)break;await Promise.race(a)}const r=py(this.quorum,e);if(Xo(void 0!==r,"problem multi-broadcasting","SERVER_ERROR",{request:"%sub-requests",info:{request:n,results:e.map(iy)}}),r instanceof Error)throw r;return r}await this.#Le();const e=new Set;let t=0;for(;;){const r=this.#je(e,n);if(null==r)break;if(t+=r.config.weight,t>=this.quorum)break}const r=await this.#Me(e,n);for(const n of e)n.perform&&null==n.result&&n.config.lateResponses++;return r}async destroy(){for(const{provider:n}of this.#Ce)n.destroy();super.destroy()}}const gy="goerli kovan sepolia classicKotti optimism-goerli arbitrum-goerli matic-mumbai bnbt".split(" ");function my(n,e){null==e&&(e={});const t=n=>"-"!==e[n]&&("string"==typeof e.exclusive?n===e.exclusive:!Array.isArray(e.exclusive)||-1!==e.exclusive.indexOf(n));if("string"==typeof n&&n.match(/^https?:/))return new Rb(n);if("string"==typeof n&&n.match(/^wss?:/)||(r=n)&&"function"==typeof r.send&&"function"==typeof r.close)return new Zb(n);var r;let a=null;try{a=Lm.from(n)}catch(n){}const o=[];if(t("publicPolygon")&&a&&("matic"===a.name?o.push(new Rb("https://polygon-rpc.com/",a,{staticNetwork:a})):"matic-amoy"===a.name&&o.push(new Rb("https://rpc-amoy.polygon.technology/",a,{staticNetwork:a}))),t("alchemy"))try{o.push(new Ub(n,e.alchemy))}catch(n){}if(t("ankr")&&null!=e.ankr)try{o.push(new Cb(n,e.ankr))}catch(n){}if(t("chainstack"))try{o.push(new jb(n,e.chainstack))}catch(n){}if(t("cloudflare"))try{o.push(new Lb(n))}catch(n){}if(t("etherscan"))try{o.push(new Kb(n,e.etherscan))}catch(n){}if(t("infura"))try{let t,r=e.infura;"object"==typeof r&&(t=r.projectSecret,r=r.projectId),o.push(new ny(n,r,t))}catch(n){}if(t("quicknode"))try{let t=e.quicknode;o.push(new ty(n,t))}catch(n){}if(Xo(o.length,"unsupported default network","UNSUPPORTED_OPERATION",{operation:"getDefaultProvider"}),1===o.length)return o[0];let i=Math.floor(o.length/2);return i>2&&(i=2),a&&-1!==gy.indexOf(a.name)&&(i=1),e&&e.quorum&&(i=e.quorum),new fy(o,void 0,{quorum:i})}class by extends pb{signer;#Ge;#qe;constructor(n){super(n.provider),Jo(this,{signer:n}),this.#Ge=null,this.#qe=0}async getAddress(){return this.signer.getAddress()}connect(n){return new by(this.signer.connect(n))}async getNonce(n){if("pending"===n){null==this.#Ge&&(this.#Ge=super.getNonce("pending"));const n=this.#qe;return await this.#Ge+n}return super.getNonce(n)}increment(){this.#qe++}reset(){this.#qe=0,this.#Ge=null}async sendTransaction(n){const e=this.getNonce("pending");return this.increment(),(n=await this.signer.populateTransaction(n)).nonce=await e,await this.signer.sendTransaction(n)}signTransaction(n){return this.signer.signTransaction(n)}signMessage(n){return this.signer.signMessage(n)}signTypedData(n,e,t){return this.signer.signTypedData(n,e,t)}}class yy extends zb{#k;#He;constructor(n,e,t){const r=Object.assign({},null!=t?t:{},{batchMaxCount:1});ni(n&&n.request,"invalid EIP-1193 provider","ethereum",n),super(e,r),this.#He=null,t&&t.providerInfo&&(this.#He=t.providerInfo),this.#k=async(e,t)=>{const r={method:e,params:t};this.emit("debug",{action:"sendEip1193Request",payload:r});try{const e=await n.request(r);return this.emit("debug",{action:"receiveEip1193Result",result:e}),e}catch(n){const e=new Error(n.message);throw e.code=n.code,e.data=n.data,e.payload=r,this.emit("debug",{action:"receiveEip1193Error",error:e}),e}}}get providerInfo(){return this.#He}async send(n,e){return await this._start(),await super.send(n,e)}async _send(n){ni(!Array.isArray(n),"EIP-1193 does not support batch request","payload",n);try{const e=await this.#k(n.method,n.params||[]);return[{id:n.id,result:e}]}catch(e){return[{id:n.id,error:{code:e.code,data:e.data,message:e.message}}]}}getRpcError(n,e){switch((e=JSON.parse(JSON.stringify(e))).error.code||-1){case 4001:e.error.message=`ethers-user-denied: ${e.error.message}`;break;case 4200:e.error.message=`ethers-unsupported: ${e.error.message}`}return super.getRpcError(n,e)}async hasSigner(n){null==n&&(n=0);const e=await this.send("eth_accounts",[]);return"number"==typeof n?e.length>n:(n=n.toLowerCase(),0!==e.filter(e=>e.toLowerCase()===n).length)}async getSigner(n){if(null==n&&(n=0),!await this.hasSigner(n))try{await this.#k("eth_requestAccounts",[])}catch(n){const e=n.payload;throw this.getRpcError(e,{id:e.id,error:n})}return await super.getSigner(n)}static async discover(n){if(null==n&&(n={}),n.provider)return new yy(n.provider);const e=n.window?n.window:"undefined"!=typeof window?window:null;if(null==e)return null;const t=n.anyProvider;if(t&&e.ethereum)return new yy(e.ethereum);if(!("addEventListener"in e&&"dispatchEvent"in e&&"removeEventListener"in e))return null;const r=n.timeout?n.timeout:300;return 0===r?null:await new Promise((a,o)=>{let i=[];const s=n=>{i.push(n.detail),t&&c()},c=()=>{if(clearTimeout(l),i.length)if(n&&n.filter){const e=n.filter(i.map(n=>Object.assign({},n.info)));if(null==e)a(null);else if(e instanceof yy)a(e);else{let n=null;if(e.uuid){const t=i.filter(n=>e.uuid===n.info.uuid);n=t[0]}if(n){const{provider:e,info:t}=n;a(new yy(e,void 0,{providerInfo:t}))}else o(Yo("filter returned unknown info","UNSUPPORTED_OPERATION",{value:e}))}}else{const{provider:n,info:e}=i[0];a(new yy(n,void 0,{providerInfo:e}))}else a(null);e.removeEventListener("eip6963:announceProvider",s)},l=setTimeout(()=>{c()},r);e.addEventListener("eip6963:announceProvider",s),e.dispatchEvent(new Event("eip6963:requestProvider"))})}}class vy extends Rb{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Lm.from(n);null==e&&(e=null);super(vy.getRequest(t),t,{staticNetwork:t}),Jo(this,{apiKey:e})}_getProvider(n){try{return new vy(n,this.apiKey)}catch(n){}return super._getProvider(n)}isCommunityResource(){return null===this.apiKey}getRpcRequest(n){const e=super.getRpcRequest(n);return e&&"eth_estimateGas"===e.method&&1==e.args.length&&(e.args=e.args.slice(),e.args.push("latest")),e}getRpcError(n,e){const t=e?e.error:null;if(t&&-32015===t.code&&!ci(t.data||"",!0)){const n={"assert(false)":"01","arithmetic underflow or overflow":"11","division or modulo by zero":"12","out-of-bounds array access; popping on an empty array":"31","out-of-bounds access of an array or bytesN":"32"};let e="";"VM execution error."===t.message?e=n[t.data]||"":n[t.message||""]&&(e=n[t.message||""]),e&&(t.message+=` (reverted: ${t.data})`,t.data="0x4e487b7100000000000000000000000000000000000000000000000000000000000000"+e)}else t&&-32e3===t.code&&"wrong transaction nonce"===t.message&&(t.message+=" (nonce too low)");return super.getRpcError(n,e)}static getRequest(n){const e=new ss(function(n){switch(n){case"mainnet":return"https://eth.blockscout.com/api/eth-rpc";case"sepolia":return"https://eth-sepolia.blockscout.com/api/eth-rpc";case"holesky":return"https://eth-holesky.blockscout.com/api/eth-rpc";case"classic":return"https://etc.blockscout.com/api/eth-rpc";case"arbitrum":return"https://arbitrum.blockscout.com/api/eth-rpc";case"base":return"https://base.blockscout.com/api/eth-rpc";case"base-sepolia":return"https://base-sepolia.blockscout.com/api/eth-rpc";case"matic":return"https://polygon.blockscout.com/api/eth-rpc";case"optimism":return"https://optimism.blockscout.com/api/eth-rpc";case"optimism-sepolia":return"https://optimism-sepolia.blockscout.com/api/eth-rpc";case"xdai":return"https://gnosis.blockscout.com/api/eth-rpc"}ni(!1,"unsupported network","network",n)}(n.name));return e.allowGzip=!0,e}}const wy="62e1ad51b37b8e00394bda3b";class ky extends Rb{applicationId;applicationSecret;constructor(n,e,t){null==n&&(n="mainnet");const r=Lm.from(n);null==e&&(e=wy),null==t&&(t=null);const a={staticNetwork:r};super(ky.getRequest(r,e,t),r,a),Jo(this,{applicationId:e,applicationSecret:t})}_getProvider(n){try{return new ky(n,this.applicationId,this.applicationSecret)}catch(n){}return super._getProvider(n)}static getRequest(n,e,t){null==e&&(e=wy);const r=new ss(`https://${function(n){switch(n){case"mainnet":return"eth-mainnet.gateway.pokt.network";case"goerli":return"eth-goerli.gateway.pokt.network";case"matic":return"poly-mainnet.gateway.pokt.network";case"matic-mumbai":return"polygon-mumbai-rpc.gateway.pokt.network"}ni(!1,"unsupported network","network",n)}(n.name)}/v1/lb/${e}`);return r.allowGzip=!0,t&&r.setCredentials("",t),e===wy&&(r.retryFunc=async(n,e,t)=>(mb("PocketProvider"),!0)),r}isCommunityResource(){return this.applicationId===wy}}const Ay=void 0;class Ey extends pb{address;#Ke;constructor(n,e){super(e),ni(n&&"function"==typeof n.sign,"invalid private key","privateKey","[ REDACTED ]"),this.#Ke=n;Jo(this,{address:mh(this.signingKey.publicKey)})}get signingKey(){return this.#Ke}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(n){return new Ey(this.#Ke,n)}async signTransaction(n){n=Cg(n);const{to:e,from:t}=await Qo({to:n.to?Kd(n.to,this):void 0,from:n.from?Kd(n.from,this):void 0});null!=e&&(n.to=e),null!=t&&(n.from=t),null!=n.from&&(ni(jd(n.from)===this.address,"transaction from address mismatch","tx.from",n.from),delete n.from);const r=jh.from(n);return r.signature=this.signingKey.sign(r.unsignedHash),r.serialized}async signMessage(n){return this.signMessageSync(n)}signMessageSync(n){return this.signingKey.sign(Zp(n)).serialized}authorizeSync(n){ni("string"==typeof n.address,"invalid address for authorizeSync","auth.address",n);const e=this.signingKey.sign(Lh(n));return Object.assign({},{address:jd(n.address),nonce:Pi(n.nonce||0),chainId:Pi(n.chainId||0)},{signature:e})}async authorize(n){return n=Object.assign({},n,{address:await Kd(n.address,this)}),this.authorizeSync(await this.populateAuthorization(n))}async signTypedData(n,e,t){const r=await kf.resolveNames(n,e,t,async n=>{Xo(null!=this.provider,"cannot resolve ENS names without a provider","UNSUPPORTED_OPERATION",{operation:"resolveName",info:{name:n}});const e=await this.provider.resolveName(n);return Xo(null!=e,"unconfigured ENS name","UNCONFIGURED_NAME",{value:n}),e});return this.signingKey.sign(kf.hash(r.domain,e,r.value)).serialized}}const xy=" !#$%&'()*+,-./<=>?@[]^_`{|}~",Py=/^[a-z]*$/i;function Iy(n,e){let t=97;return n.reduce((n,r)=>(r===e?t++:r.match(Py)?n.push(String.fromCharCode(t)+r):(t=97,n.push(r)),n),[])}function Ny(n){return ni("0"===n[0],"unsupported auwl data","data",n),function(n,e){for(let t=28;t>=0;t--)n=n.split(xy[t]).join(e.substring(2*t,2*t+2));const t=[],r=n.replace(/(:|([0-9])|([A-Z][a-z]*))/g,(n,e,r,a)=>{if(r)for(let n=parseInt(r);n>=0;n--)t.push(";");else t.push(e.toLowerCase());return""});if(r)throw new Error(`leftovers: ${JSON.stringify(r)}`);return Iy(Iy(t,";"),":")}(n.substring(59),n.substring(1,59))}class zy{locale;constructor(n){Jo(this,{locale:n})}split(n){return n.toLowerCase().split(/\s+/g)}join(n){return n.join(" ")}}class Ry extends zy{#C;#_e;constructor(n,e,t){super(n),this.#C=e,this.#_e=t,this.#Ve=null}get _data(){return this.#C}_decodeWords(){return Ny(this.#C)}#Ve;#Qe(){if(null==this.#Ve){const n=this._decodeWords();if(Mh(n.join("\n")+"\n")!==this.#_e)throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);this.#Ve=n}return this.#Ve}getWord(n){const e=this.#Qe();return ni(n>=0&&n<e.length,`invalid word index: ${n}`,"index",n),e[n]}getWordIndex(n){return this.#Qe().indexOf(n)}}let Sy=null;class Ty extends Ry{constructor(){super("en","0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN<aNn RRelyRga(R*lSeS-SketTt!3A^AnAutyCau'ComeEfF%eG(Ha=H(dLie=LowLtN^Nef./TrayTt Twe&Y#d3Cyc!DKeNdOlogyRdR`Tt _{AdeAmeAnketA,EakE[IndOodO[omOu'UeUrUsh_rdAtDyIlMbNeNusOkO,Rd R(gRrowSsTtomUn)XY_{etA(AndA[A=EadEezeI{Id+IefIghtIngIskOccoliOk&OnzeOomO` OwnUsh2Bb!DdyD+tFf$oIldLbLkL!tNd!Nk Rd&Rg R,SS(e[SyTt Y Zz:Bba+B(B!CtusGeKe~LmM aMpNN$N)lNdyNn#NoeNvasNy#Pab!P.$Pta(RRb#RdRgoRpetRryRtSeShS(o/!Su$TT$ogT^Teg%yTt!UghtU'Ut]Ve3Il(gL yM|NsusNturyRe$Rta(_irAlkAmp]An+AosApt Ar+A'AtEapE{Ee'EfErryE,I{&IefIldIm}yOi)Oo'R#-U{!UnkUrn0G?Nnam#Rc!Tiz&TyVil_imApArifyAwAyE<ErkEv I{I|IffImbIn-IpO{OgO'O`OudOwnUbUmpU, Ut^_^A,C#utDeFfeeIlInL!@L%LumnMb(eMeMf%tM-Mm#Mp<yNc tNdu@NfirmNg*[N}@Nsid NtrolNv()OkOlPp PyR$ReRnR*@/Tt#U^UntryUp!Ur'Us(V Yo>_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M<dMi'Ni$Nti,NyP?tP&dPos.P`PutyRi=ScribeS tSignSkSpair/royTailTe@VelopVi)Vo>3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-Eg<tEm|Eph<tEvat%I>Se0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-P<dPe@Pi*Pla(Po'P*[T&dTra0EEbrow:Br-CeCultyDeIntI`~L'MeMilyMousNNcyNtasyRmSh]TT$Th TigueUltV%.e3Atu*Bru?yD $EEdElMa!N)/iv$T^V W3B Ct]EldGu*LeLmLt N$NdNeNg NishReRmR,Sc$ShTT}[X_gAmeAshAtAv%EeIghtIpOatO{O%Ow UidUshY_mCusGIlLd~owOdOtR)Re,R+tRkRtu}RumRw?dSsil/ UndX_gi!AmeEqu|EshI&dIn+OgOntO,OwnOz&U.2ElNNnyRna)RyTu*:D+tInLaxy~ yMePRa+Rba+Rd&Rl-Rm|SSpTeTh U+Ze3N $NiusN*Nt!Nu(e/u*2O,0AntFtGg!Ng RaffeRlVe_dAn)A*A[IdeImp'ObeOomOryO=OwUe_tDde[LdOdO'RillaSpelSsipV nWn_bA)A(AntApeA[Av.yEatE&IdIefItOc yOupOwUnt_rdE[IdeIltIt?N3M:B.IrLfMm M, NdPpyRb%RdRshR=,TVeWkZ?d3AdAl`ArtAvyD+hogIght~oLmetLpNRo3Dd&Gh~NtPRe/%y5BbyCkeyLdLeLiday~owMeNeyOdPeRnRr%R'Sp.$/TelUrV 5BGeM<Mb!M%Nd*dNgryNtRd!RryRtSb<d3Brid:1EOn0EaEntifyLe2N%e4LLeg$L}[0A+Ita>M&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryF<tFl-tF%mHa!H .Iti$Je@JuryMa>N Noc|PutQuiryS<eSe@SideSpi*/$lTa@T e,ToVe,V.eVol=3On0L<dOla>Sue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurE<Tob 0Or1FF Fi)T&2L1Ay0DI=Ymp-0It0CeEI#L(eLy1EnEraIn]Po'T]1An+B.Ch?dD D(?yG<I|Ig($Ph<0Tr-h0H 0Tdo%T TputTside0AlEnEr0NN 0Yg&0/ 0O}:CtDd!GeIrLa)LmNdaNelN-N` P RadeR|RkRrotRtySsT^ThTi|TrolTt nU'VeYm|3A)AnutArAs<tL-<NN$tyNcilOp!Pp Rfe@Rm.Rs#T2O}OtoRa'Ys-$0AnoCn-Ctu*E)GGe#~LotNkO} Pe/olT^Zza_)A}tA,-A>AyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOg<OtOwUsh0AllArtI!OkeOo`0A{AkeApIffOw0ApCc Ci$CkDaFtL?Ldi LidLut]L=Me#eNgOnRryRtUlUndUpUr)U`0A)A*Ati$AwnEakEci$EedEllEndH eI)Id IkeInIr.L.OilOns%O#OrtOtRayReadR(gY0Ua*UeezeUir*l_b!AdiumAffA+AirsAmpAndArtA>AyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NN<tNnisNtRm/Xt_nkAtEmeEnE%yE*EyIngIsOughtReeRi=RowUmbUnd 0CketDeG LtMb MeNyPRedSsueT!5A,BaccoDayDdl EGe` I!tK&MatoM%rowNeNgueNightOlO`PP-Pp!R^RnadoRtoi'SsT$Uri,W?dW WnY_{AdeAff-Ag-A(Ansf ApAshA=lAyEatEeEndI$IbeI{Igg ImIpOphyOub!U{UeUlyUmpetU,U`Y2BeIt]Mb!NaN}lRkeyRnRt!1El=EntyI)InI,O1PeP-$:5Ly5B*lla0Ab!Awa*C!Cov D DoFairFoldHappyIf%mIqueItIv 'KnownLo{TilUsu$Veil1Da>GradeHoldOnP Set1B<Ge0A+EEdEfulE![U$0Il.y:C<tCuumGueLidL!yL=NNishP%Rious/Ult3H-!L=tNd%Ntu*NueRbRifyRs]RyS'lT <3Ab!Br<tCiousCt%yDeoEw~a+Nta+Ol(Rtu$RusSaS.Su$T$Vid5C$I)IdLc<oLumeTeYa+:GeG#ItLk~LnutNtRfa*RmRri%ShSp/eT VeY3Al`Ap#ArA'lA` BDd(gEk&dIrdLcome/T_!AtEatEelEnE*IpIsp 0DeD`FeLd~NNdowNeNgNkNn Nt ReSdomSeShT}[5LfM<Nd OdOlRdRkRldRryR`_pE{E,!I,I>Ong::Rd3Ar~ow9UUngU`:3BraRo9NeO","0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60")}static wordlist(){return null==Sy&&(Sy=new Ty),Sy}}function By(n){return(1<<n)-1<<8-n&255}function Cy(n){return(1<<n)-1&255}function Oy(n,e){ri("NFKD"),null==e&&(e=Ty.wordlist());const t=e.split(n);ni(t.length%3==0&&t.length>=12&&t.length<=24,"invalid mnemonic length","mnemonic","[ REDACTED ]");const r=new Uint8Array(Math.ceil(11*t.length/8));let a=0;for(let n=0;n<t.length;n++){let o=e.getWordIndex(t[n].normalize("NFKD"));ni(o>=0,`invalid mnemonic word at index ${n}`,"mnemonic","[ REDACTED ]");for(let n=0;n<11;n++)o&1<<10-n&&(r[a>>3]|=1<<7-a%8),a++}const o=32*t.length/3,i=By(t.length/3);return ni((ii(au(r.slice(0,o/8)))[0]&i)===(r[r.length-1]&i),"invalid mnemonic checksum","mnemonic","[ REDACTED ]"),di(r.slice(0,o/8))}function Uy(n,e){ni(n.length%4==0&&n.length>=16&&n.length<=32,"invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=Ty.wordlist());const t=[0];let r=11;for(let e=0;e<n.length;e++)r>8?(t[t.length-1]<<=8,t[t.length-1]|=n[e],r-=8):(t[t.length-1]<<=r,t[t.length-1]|=n[e]>>8-r,t.push(n[e]&Cy(8-r)),r+=3);const a=n.length/4,o=parseInt(au(n).substring(2,4),16)&By(a);return t[t.length-1]<<=a,t[t.length-1]|=o>>8-a,e.join(t.map(n=>e.getWord(n)))}const Fy={};class jy{phrase;password;wordlist;entropy;constructor(n,e,t,r,a){null==r&&(r=""),null==a&&(a=Ty.wordlist()),ai(n,Fy,"Mnemonic"),Jo(this,{phrase:t,password:r,wordlist:a,entropy:e})}computeSeed(){const n=Qi("mnemonic"+this.password,"NFKD");return Ol(Qi(this.phrase,"NFKD"),n,2048,64,"sha512")}static fromPhrase(n,e,t){const r=Oy(n,t);return n=Uy(ii(r),t),new jy(Fy,r,n,e,t)}static fromEntropy(n,e,t){const r=ii(n,"entropy"),a=Uy(r,t);return new jy(Fy,di(r),a,e,t)}static entropyToPhrase(n,e){return Uy(ii(n,"entropy"),e)}static phraseToEntropy(n,e){return Oy(n,e)}static isValidMnemonic(n,e){try{return Oy(n,e),!0}catch(n){}return!1}}
14
- /*! MIT License. Copyright 2015-2022 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */var Ly,Dy,My,Gy=function(n,e,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(n):r?r.value:e.get(n)},qy=function(n,e,t,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(n,t):a?a.value=t:e.set(n,t),t};const Hy={16:10,24:12,32:14},Ky=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],_y=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Vy=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Qy=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Jy=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],$y=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],Wy=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],Zy=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],Yy=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],Xy=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],nv=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],ev=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],tv=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],rv=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],av=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function ov(n){const e=[];for(let t=0;t<n.length;t+=4)e.push(n[t]<<24|n[t+1]<<16|n[t+2]<<8|n[t+3]);return e}class iv{get key(){return Gy(this,Ly,"f").slice()}constructor(n){if(Ly.set(this,void 0),Dy.set(this,void 0),My.set(this,void 0),!(this instanceof iv))throw Error("AES must be instanitated with `new`");qy(this,Ly,new Uint8Array(n),"f");const e=Hy[this.key.length];if(null==e)throw new TypeError("invalid key size (must be 16, 24 or 32 bytes)");qy(this,My,[],"f"),qy(this,Dy,[],"f");for(let n=0;n<=e;n++)Gy(this,My,"f").push([0,0,0,0]),Gy(this,Dy,"f").push([0,0,0,0]);const t=4*(e+1),r=this.key.length/4,a=ov(this.key);let o;for(let n=0;n<r;n++)o=n>>2,Gy(this,My,"f")[o][n%4]=a[n],Gy(this,Dy,"f")[e-o][n%4]=a[n];let i,s=0,c=r;for(;c<t;){if(i=a[r-1],a[0]^=_y[i>>16&255]<<24^_y[i>>8&255]<<16^_y[255&i]<<8^_y[i>>24&255]^Ky[s]<<24,s+=1,8!=r)for(let n=1;n<r;n++)a[n]^=a[n-1];else{for(let n=1;n<r/2;n++)a[n]^=a[n-1];i=a[r/2-1],a[r/2]^=_y[255&i]^_y[i>>8&255]<<8^_y[i>>16&255]<<16^_y[i>>24&255]<<24;for(let n=r/2+1;n<r;n++)a[n]^=a[n-1]}let n,o,l=0;for(;l<r&&c<t;)n=c>>2,o=c%4,Gy(this,My,"f")[n][o]=a[l],Gy(this,Dy,"f")[e-n][o]=a[l++],c++}for(let n=1;n<e;n++)for(let e=0;e<4;e++)i=Gy(this,Dy,"f")[n][e],Gy(this,Dy,"f")[n][e]=ev[i>>24&255]^tv[i>>16&255]^rv[i>>8&255]^av[255&i]}encrypt(n){if(16!=n.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=Gy(this,My,"f").length-1,t=[0,0,0,0];let r=ov(n);for(let n=0;n<4;n++)r[n]^=Gy(this,My,"f")[0][n];for(let n=1;n<e;n++){for(let e=0;e<4;e++)t[e]=Qy[r[e]>>24&255]^Jy[r[(e+1)%4]>>16&255]^$y[r[(e+2)%4]>>8&255]^Wy[255&r[(e+3)%4]]^Gy(this,My,"f")[n][e];r=t.slice()}const a=new Uint8Array(16);let o=0;for(let n=0;n<4;n++)o=Gy(this,My,"f")[e][n],a[4*n]=255&(_y[r[n]>>24&255]^o>>24),a[4*n+1]=255&(_y[r[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(_y[r[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(_y[255&r[(n+3)%4]]^o);return a}decrypt(n){if(16!=n.length)throw new TypeError("invalid ciphertext size (must be 16 bytes)");const e=Gy(this,Dy,"f").length-1,t=[0,0,0,0];let r=ov(n);for(let n=0;n<4;n++)r[n]^=Gy(this,Dy,"f")[0][n];for(let n=1;n<e;n++){for(let e=0;e<4;e++)t[e]=Zy[r[e]>>24&255]^Yy[r[(e+3)%4]>>16&255]^Xy[r[(e+2)%4]>>8&255]^nv[255&r[(e+1)%4]]^Gy(this,Dy,"f")[n][e];r=t.slice()}const a=new Uint8Array(16);let o=0;for(let n=0;n<4;n++)o=Gy(this,Dy,"f")[e][n],a[4*n]=255&(Vy[r[n]>>24&255]^o>>24),a[4*n+1]=255&(Vy[r[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(Vy[r[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Vy[255&r[(n+1)%4]]^o);return a}}Ly=new WeakMap,Dy=new WeakMap,My=new WeakMap;class sv{constructor(n,e,t){if(t&&!(this instanceof t))throw new Error(`${n} must be instantiated with "new"`);Object.defineProperties(this,{aes:{enumerable:!0,value:new iv(e)},name:{enumerable:!0,value:n}})}}var cv,lv,uv=function(n,e,t,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(n,t):a?a.value=t:e.set(n,t),t},dv=function(n,e,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(n):r?r.value:e.get(n)};class hv extends sv{constructor(n,e){if(super("ECC",n,hv),cv.set(this,void 0),lv.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");uv(this,cv,new Uint8Array(e),"f")}else uv(this,cv,new Uint8Array(16),"f");uv(this,lv,this.iv,"f")}get iv(){return new Uint8Array(dv(this,cv,"f"))}encrypt(n){if(n.length%16)throw new TypeError("invalid plaintext size (must be multiple of 16 bytes)");const e=new Uint8Array(n.length);for(let t=0;t<n.length;t+=16){for(let e=0;e<16;e++)dv(this,lv,"f")[e]^=n[t+e];uv(this,lv,this.aes.encrypt(dv(this,lv,"f")),"f"),e.set(dv(this,lv,"f"),t)}return e}decrypt(n){if(n.length%16)throw new TypeError("invalid ciphertext size (must be multiple of 16 bytes)");const e=new Uint8Array(n.length);for(let t=0;t<n.length;t+=16){const r=this.aes.decrypt(n.subarray(t,t+16));for(let a=0;a<16;a++)e[t+a]=r[a]^dv(this,lv,"f")[a],dv(this,lv,"f")[a]=n[t+a]}return e}}cv=new WeakMap,lv=new WeakMap;var pv,fv,gv,mv=function(n,e,t,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(n,t):a?a.value=t:e.set(n,t),t},bv=function(n,e,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(n):r?r.value:e.get(n)};class yv extends sv{constructor(n,e){super("CTR",n,yv),pv.set(this,void 0),fv.set(this,void 0),gv.set(this,void 0),mv(this,gv,new Uint8Array(16),"f"),bv(this,gv,"f").fill(0),mv(this,pv,bv(this,gv,"f"),"f"),mv(this,fv,16,"f"),null==e&&(e=1),"number"==typeof e?this.setCounterValue(e):this.setCounterBytes(e)}get counter(){return new Uint8Array(bv(this,gv,"f"))}setCounterValue(n){if(!Number.isInteger(n)||n<0||n>Number.MAX_SAFE_INTEGER)throw new TypeError("invalid counter initial integer value");for(let e=15;e>=0;--e)bv(this,gv,"f")[e]=n%256,n=Math.floor(n/256)}setCounterBytes(n){if(16!==n.length)throw new TypeError("invalid counter initial Uint8Array value length");bv(this,gv,"f").set(n)}increment(){for(let n=15;n>=0;n--){if(255!==bv(this,gv,"f")[n]){bv(this,gv,"f")[n]++;break}bv(this,gv,"f")[n]=0}}encrypt(n){var e,t;const r=new Uint8Array(n);for(let n=0;n<r.length;n++)16===bv(this,fv,"f")&&(mv(this,pv,this.aes.encrypt(bv(this,gv,"f")),"f"),mv(this,fv,0,"f"),this.increment()),r[n]^=bv(this,pv,"f")[(mv(this,fv,(t=bv(this,fv,"f"),e=t++,t),"f"),e)];return r}decrypt(n){return this.encrypt(n)}}function vv(n){return"string"!=typeof n||n.startsWith("0x")||(n="0x"+n),si(n)}function wv(n,e){for(n=String(n);n.length<e;)n="0"+n;return n}function kv(n){return"string"==typeof n?Qi(n,"NFKC"):si(n)}function Av(n,e){const t=e.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);ni(null!=t,"invalid path","path",e);const r=t[1],a=t[3],o="!"===t[4];let i=n;for(const n of r.toLowerCase().split(".")){if(Array.isArray(i)){if(!n.match(/^[0-9]+$/))break;i=i[parseInt(n)]}else if("object"==typeof i){let e=null;for(const t in i)if(t.toLowerCase()===n){e=i[t];break}i=e}else i=null;if(null==i)break}if(ni(!o||null!=i,"missing required value","path",r),a&&null!=i){if("int"===a){if("string"==typeof i&&i.match(/^-?[0-9]+$/))return parseInt(i);if(Number.isSafeInteger(i))return i}if("number"===a&&"string"==typeof i&&i.match(/^-?[0-9.]*$/))return parseFloat(i);if("data"===a&&"string"==typeof i)return vv(i);if("array"===a&&Array.isArray(i))return i;if(a===typeof i)return i;ni(!1,`wrong type found for ${a} `,"path",r)}return i}pv=new WeakMap,fv=new WeakMap,gv=new WeakMap;const Ev="m/44'/60'/0'/0/0";function xv(n){try{const e=JSON.parse(n);if(3===(null!=e.version?parseInt(e.version):0))return!0}catch(n){}return!1}function Pv(n,e){const t=ii(e),r=Av(n,"crypto.ciphertext:data!");ni(di(hl(hi([t.slice(16,32),r]))).substring(2)===Av(n,"crypto.mac:string!").toLowerCase(),"incorrect password","password","[ REDACTED ]");const a=function(n,e,t){if("aes-128-ctr"===Av(n,"crypto.cipher:string")){const r=Av(n,"crypto.cipherparams.iv:data!");return di(new yv(e,r).decrypt(t))}Xo(!1,"unsupported cipher","UNSUPPORTED_OPERATION",{operation:"decrypt"})}(n,t.slice(0,16),r),o=mh(a);if(n.address){let e=n.address.toLowerCase();e.startsWith("0x")||(e="0x"+e),ni(jd(e)===o,"keystore address/privateKey mismatch","address",n.address)}const i={address:o,privateKey:a};if("0.1"===Av(n,"x-ethers.version:string")){const e=t.slice(32,64),r=Av(n,"x-ethers.mnemonicCiphertext:data!"),a=Av(n,"x-ethers.mnemonicCounter:data!"),o=new yv(e,a);i.mnemonic={path:Av(n,"x-ethers.path:string")||Ev,locale:Av(n,"x-ethers.locale:string")||"en",entropy:di(ii(o.decrypt(r)))}}return i}function Iv(n){const e=Av(n,"crypto.kdf:string");if(e&&"string"==typeof e){if("scrypt"===e.toLowerCase()){const t=Av(n,"crypto.kdfparams.salt:data!"),r=Av(n,"crypto.kdfparams.n:int!"),a=Av(n,"crypto.kdfparams.r:int!"),o=Av(n,"crypto.kdfparams.p:int!");ni(r>0&&!(r&r-1),"invalid kdf.N","kdf.N",r),ni(a>0&&o>0,"invalid kdf","kdf",e);const i=Av(n,"crypto.kdfparams.dklen:int!");return ni(32===i,"invalid kdf.dklen","kdf.dflen",i),{name:"scrypt",salt:t,N:r,r:a,p:o,dkLen:64}}if("pbkdf2"===e.toLowerCase()){const e=Av(n,"crypto.kdfparams.salt:data!"),t=Av(n,"crypto.kdfparams.prf:string!"),r=t.split("-").pop();ni("sha256"===r||"sha512"===r,"invalid kdf.pdf","kdf.pdf",t);const a=Av(n,"crypto.kdfparams.c:int!"),o=Av(n,"crypto.kdfparams.dklen:int!");return ni(32===o,"invalid kdf.dklen","kdf.dklen",o),{name:"pbkdf2",salt:e,count:a,dkLen:o,algorithm:r}}}ni(!1,"unsupported key-derivation function","kdf",e)}function Nv(n,e){const t=JSON.parse(n),r=kv(e),a=Iv(t);if("pbkdf2"===a.name){const{salt:n,count:e,dkLen:o,algorithm:i}=a;return Pv(t,Ol(r,n,e,o,i))}Xo("scrypt"===a.name,"cannot be reached","UNKNOWN_ERROR",{params:a});const{salt:o,N:i,r:s,p:c,dkLen:l}=a;return Pv(t,Zl(r,o,i,s,c,l))}function zv(n){return new Promise(e=>{setTimeout(()=>{e()},n)})}async function Rv(n,e,t){const r=JSON.parse(n),a=kv(e),o=Iv(r);if("pbkdf2"===o.name){t&&(t(0),await zv(0));const{salt:n,count:e,dkLen:i,algorithm:s}=o,c=Ol(a,n,e,i,s);return t&&(t(1),await zv(0)),Pv(r,c)}Xo("scrypt"===o.name,"cannot be reached","UNKNOWN_ERROR",{params:o});const{salt:i,N:s,r:c,p:l,dkLen:u}=o;return Pv(r,await Wl(a,i,s,c,l,u,t))}function Sv(n){const e=null!=n.salt?ii(n.salt,"options.salt"):Ll(32);let t=1<<17,r=8,a=1;return n.scrypt&&(n.scrypt.N&&(t=n.scrypt.N),n.scrypt.r&&(r=n.scrypt.r),n.scrypt.p&&(a=n.scrypt.p)),ni("number"==typeof t&&t>0&&Number.isSafeInteger(t)&&(BigInt(t)&BigInt(t-1))===BigInt(0),"invalid scrypt N parameter","options.N",t),ni("number"==typeof r&&r>0&&Number.isSafeInteger(r),"invalid scrypt r parameter","options.r",r),ni("number"==typeof a&&a>0&&Number.isSafeInteger(a),"invalid scrypt p parameter","options.p",a),{name:"scrypt",dkLen:32,salt:e,N:t,r:r,p:a}}function Tv(n,e,t,r){const a=ii(t.privateKey,"privateKey"),o=null!=r.iv?ii(r.iv,"options.iv"):Ll(16);ni(16===o.length,"invalid options.iv length","options.iv",r.iv);const i=null!=r.uuid?ii(r.uuid,"options.uuid"):Ll(16);ni(16===i.length,"invalid options.uuid length","options.uuid",r.iv);const s=n.slice(0,16),c=n.slice(16,32),l=ii(new yv(s,o).encrypt(a)),u=hl(hi([c,l])),d={address:t.address.substring(2).toLowerCase(),id:Os(i),version:3,Crypto:{cipher:"aes-128-ctr",cipherparams:{iv:di(o).substring(2)},ciphertext:di(l).substring(2),kdf:"scrypt",kdfparams:{salt:di(e.salt).substring(2),n:e.N,dklen:32,p:e.p,r:e.r},mac:u.substring(2)}};if(t.mnemonic){const e=null!=r.client?r.client:`ethers/${_o}`,a=t.mnemonic.path||Ev,o=t.mnemonic.locale||"en",i=n.slice(32,64),s=ii(t.mnemonic.entropy,"account.mnemonic.entropy"),c=Ll(16),l=ii(new yv(i,c).encrypt(s)),u=new Date,h="UTC--"+(u.getUTCFullYear()+"-"+wv(u.getUTCMonth()+1,2)+"-"+wv(u.getUTCDate(),2)+"T"+wv(u.getUTCHours(),2)+"-"+wv(u.getUTCMinutes(),2)+"-"+wv(u.getUTCSeconds(),2)+".0Z")+"--"+d.address;d["x-ethers"]={client:e,gethFilename:h,path:a,locale:o,mnemonicCounter:di(c).substring(2),mnemonicCiphertext:di(l).substring(2),version:"0.1"}}return JSON.stringify(d)}function Bv(n,e,t){null==t&&(t={});const r=kv(e),a=Sv(t);return Tv(ii(Zl(r,a.salt,a.N,a.r,a.p,64)),a,n,t)}async function Cv(n,e,t){null==t&&(t={});const r=kv(e),a=Sv(t);return Tv(ii(await Wl(r,a.salt,a.N,a.r,a.p,64,t.progressCallback)),a,n,t)}const Ov="m/44'/60'/0'/0/0",Uv=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),Fv=2147483648,jv=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Lv(n,e){let t="";for(;n;)t="0123456789abcdef"[n%16]+t,n=Math.trunc(n/16);for(;t.length<2*e;)t="0"+t;return"0x"+t}function Dv(n){const e=ii(n);return Di(hi([e,fi(au(au(e)),0,4)]))}const Mv={};function Gv(n,e,t,r){const a=new Uint8Array(37);n&Fv?(Xo(null!=r,"cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"}),a.set(ii(r),1)):a.set(ii(t));for(let e=24;e>=0;e-=8)a[33+(e>>3)]=n>>24-e&255;const o=ii(Qc("sha512",e,a));return{IL:o.slice(0,32),IR:o.slice(32)}}function qv(n,e){const t=e.split("/");ni(t.length>0,"invalid path","path",e),"m"===t[0]&&(ni(0===n.depth,`cannot derive root path (i.e. path starting with "m/") for a node at non-zero depth ${n.depth}`,"path",e),t.shift());let r=n;for(let n=0;n<t.length;n++){const e=t[n];if(e.match(/^[0-9]+'$/)){const t=parseInt(e.substring(0,e.length-1));ni(t<Fv,"invalid path index",`path[${n}]`,e),r=r.deriveChild(Fv+t)}else if(e.match(/^[0-9]+$/)){const t=parseInt(e);ni(t<Fv,"invalid path index",`path[${n}]`,e),r=r.deriveChild(t)}else ni(!1,"invalid path component",`path[${n}]`,e)}return r}class Hv extends Ey{publicKey;fingerprint;parentFingerprint;mnemonic;chainCode;path;index;depth;constructor(n,e,t,r,a,o,i,s,c){super(e,c),ai(n,Mv,"HDNodeWallet"),Jo(this,{publicKey:e.compressedPublicKey});Jo(this,{parentFingerprint:t,fingerprint:fi(Sl(au(this.publicKey)),0,4),chainCode:r,path:a,index:o,depth:i}),Jo(this,{mnemonic:s})}connect(n){return new Hv(Mv,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,n)}#Je(){const n={address:this.address,privateKey:this.privateKey},e=this.mnemonic;return this.path&&e&&"en"===e.wordlist.locale&&""===e.password&&(n.mnemonic={path:this.path,locale:"en",entropy:e.entropy}),n}async encrypt(n,e){return await Cv(this.#Je(),n,{progressCallback:e})}encryptSync(n){return Bv(this.#Je(),n)}get extendedKey(){return Xo(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Dv(hi(["0x0488ADE4",Lv(this.depth,1),this.parentFingerprint,Lv(this.index,4),this.chainCode,hi(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new Kv(Mv,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(n){const e=Ri(n,"index");ni(e<=4294967295,"invalid index","index",e);let t=this.path;t&&(t+="/"+(2147483647&e),e&Fv&&(t+="'"));const{IR:r,IL:a}=Gv(e,this.chainCode,this.publicKey,this.privateKey),o=new Rd(Ti((zi(a)+BigInt(this.privateKey))%jv,32));return new Hv(Mv,o,this.fingerprint,di(r),t,e,this.depth+1,this.mnemonic,this.provider)}derivePath(n){return qv(this,n)}static#$e(n,e){ni(li(n),"invalid seed","seed","[REDACTED]");const t=ii(n,"seed");ni(t.length>=16&&t.length<=64,"invalid seed","seed","[REDACTED]");const r=ii(Qc("sha512",Uv,t)),a=new Rd(di(r.slice(0,32)));return new Hv(Mv,a,"0x00000000",di(r.slice(32)),"m",0,0,e,null)}static fromExtendedKey(n){const e=Bi(Mi(n));ni(82===e.length||Dv(e.slice(0,78))===n,"invalid extended key","extendedKey","[ REDACTED ]");const t=e[4],r=di(e.slice(5,9)),a=parseInt(di(e.slice(9,13)).substring(2),16),o=di(e.slice(13,45)),i=e.slice(45,78);switch(di(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const n=di(i);return new Kv(Mv,mh(n),n,r,o,null,a,t,null)}case"0x0488ade4":case"0x04358394 ":if(0!==i[0])break;return new Hv(Mv,new Rd(i.slice(1)),r,o,null,a,t,null,null)}ni(!1,"invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(n,e,t){null==n&&(n=""),null==e&&(e=Ov),null==t&&(t=Ty.wordlist());const r=jy.fromEntropy(Ll(16),n,t);return Hv.#$e(r.computeSeed(),r).derivePath(e)}static fromMnemonic(n,e){return e||(e=Ov),Hv.#$e(n.computeSeed(),n).derivePath(e)}static fromPhrase(n,e,t,r){null==e&&(e=""),null==t&&(t=Ov),null==r&&(r=Ty.wordlist());const a=jy.fromPhrase(n,e,r);return Hv.#$e(a.computeSeed(),a).derivePath(t)}static fromSeed(n){return Hv.#$e(n,null)}}class Kv extends fb{publicKey;fingerprint;parentFingerprint;chainCode;path;index;depth;constructor(n,e,t,r,a,o,i,s,c){super(e,c),ai(n,Mv,"HDNodeVoidWallet"),Jo(this,{publicKey:t});Jo(this,{publicKey:t,fingerprint:fi(Sl(au(t)),0,4),parentFingerprint:r,chainCode:a,path:o,index:i,depth:s})}connect(n){return new Kv(Mv,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,n)}get extendedKey(){return Xo(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Dv(hi(["0x0488B21E",Lv(this.depth,1),this.parentFingerprint,Lv(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(n){const e=Ri(n,"index");ni(e<=4294967295,"invalid index","index",e);let t=this.path;t&&(t+="/"+(2147483647&e),e&Fv&&(t+="'"));const{IR:r,IL:a}=Gv(e,this.chainCode,this.publicKey,null),o=Rd.addPoints(a,this.publicKey,!0),i=mh(o);return new Kv(Mv,i,o,this.fingerprint,di(r),t,e,this.depth+1,this.provider)}derivePath(n){return qv(this,n)}}function _v(n){const e=Ri(n,"index");return ni(e>=0&&e<Fv,"invalid account index","index",e),`m/44'/60'/${e}'/0/0`}function Vv(n){const e=Ri(n,"index");return ni(e>=0&&e<Fv,"invalid account index","index",e),`m/44'/60'/0'/0/${e}`}function Qv(n){try{if(JSON.parse(n).encseed)return!0}catch(n){}return!1}function Jv(n,e){const t=JSON.parse(n),r=kv(e),a=jd(Av(t,"ethaddr:string!")),o=vv(Av(t,"encseed:string!"));ni(o&&o.length%16==0,"invalid encseed","json",n);const i=ii(Ol(r,r,2e3,32,"sha256")).slice(0,16),s=o.slice(0,16),c=o.slice(16),l=function(n){if(n.length<16)throw new TypeError("PKCS#7 invalid length");const e=n[n.length-1];if(e>16)throw new TypeError("PKCS#7 padding byte out of range");const t=n.length-e;for(let r=0;r<e;r++)if(n[t+r]!==e)throw new TypeError("PKCS#7 invalid padding byte");return new Uint8Array(n.subarray(0,t))}(ii(new hv(i,s).decrypt(c)));let u="";for(let n=0;n<l.length;n++)u+=String.fromCharCode(l[n]);return{address:a,privateKey:Mh(u)}}function $v(n){return new Promise(e=>{setTimeout(()=>{e()},n)})}class Wv extends Ey{constructor(n,e){"string"!=typeof n||n.startsWith("0x")||(n="0x"+n),super("string"==typeof n?new Rd(n):n,e)}connect(n){return new Wv(this.signingKey,n)}async encrypt(n,e){const t={address:this.address,privateKey:this.privateKey};return await Cv(t,n,{progressCallback:e})}encryptSync(n){return Bv({address:this.address,privateKey:this.privateKey},n)}static#We(n){if(ni(n,"invalid JSON wallet","json","[ REDACTED ]"),"mnemonic"in n&&n.mnemonic&&"en"===n.mnemonic.locale){const e=jy.fromEntropy(n.mnemonic.entropy),t=Hv.fromMnemonic(e,n.mnemonic.path);if(t.address===n.address&&t.privateKey===n.privateKey)return t}const e=new Wv(n.privateKey);return ni(e.address===n.address,"address/privateKey mismatch","json","[ REDACTED ]"),e}static async fromEncryptedJson(n,e,t){let r=null;return xv(n)?r=await Rv(n,e,t):Qv(n)&&(t&&(t(0),await $v(0)),r=Jv(n,e),t&&(t(1),await $v(0))),Wv.#We(r)}static fromEncryptedJsonSync(n,e){let t=null;return xv(n)?t=Nv(n,e):Qv(n)?t=Jv(n,e):ni(!1,"invalid JSON wallet","json","[ REDACTED ]"),Wv.#We(t)}static createRandom(n){const e=Hv.createRandom();return n?e.connect(n):e}static fromPhrase(n,e){const t=Hv.fromPhrase(n);return e?t.connect(e):t}}class Zv extends Ry{#Ze;constructor(n,e,t,r){super(n,e,r),this.#Ze=t}get _accent(){return this.#Ze}_decodeWords(){return function(n,e){let t=Ny(n).join(",");return e.split(/,/g).forEach(n=>{const r=n.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);ni(null!==r,"internal error parsing accents","accents",e);let a=0;const o=function(n,e){const t=(1<<n)-1,r=[];let a=0,o=0,i=0;for(let s=0;s<e.length;s++)for(a=a<<6|")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".indexOf(e[s]),o+=6;o>=n;){const e=a>>o-n;a&=(1<<o-n)-1,o-=n,0===e?i+=t:(r.push(e+i),i=0)}return r}(parseInt(r[3]),r[4]),i=parseInt(r[2]),s=new RegExp(`([${r[1]}])`,"g");t=t.replace(s,(n,e)=>(0===--o[a]&&(e=String.fromCharCode(e.charCodeAt(0),i),a++),e))}),t.split(",")}(this._data,this._accent)}}const Yv={en:Ty.wordlist()};var Xv=Object.freeze({__proto__:null,version:_o,decodeBytes32String:kg,encodeBytes32String:wg,AbiCoder:vg,ConstructorFragment:ug,ErrorFragment:cg,EventFragment:lg,Fragment:og,FallbackFragment:dg,FunctionFragment:hg,NamedFragment:ig,ParamType:ag,StructFragment:pg,checkResultErrors:_s,ErrorDescription:xg,Indexed:Pg,Interface:zg,LogDescription:Ag,Result:Ks,TransactionDescription:Eg,Typed:$d,getAddress:jd,getIcapAddress:Ld,getCreateAddress:Dd,getCreate2Address:Md,isAddressable:Gd,isAddress:qd,resolveAddress:Kd,ZeroAddress:ld,WeiPerEther:hd,MaxUint256:pd,MinInt256:fd,MaxInt256:gd,N:dd,ZeroHash:ud,EtherSymbol:"Ξ",MessagePrefix:md,BaseContract:pm,Contract:fm,ContractFactory:gm,ContractEventPayload:_g,ContractTransactionReceipt:qg,ContractTransactionResponse:Hg,ContractUnknownEventPayload:Kg,EventLog:Mg,UndecodedEventLog:Gg,computeHmac:Qc,randomBytes:Ll,keccak256:hl,ripemd160:Sl,sha256:au,sha512:ou,pbkdf2:Ol,scrypt:Wl,scryptSync:Zl,lock:Sd,Signature:zd,SigningKey:Rd,id:Mh,ensNormalize:Qp,isValidName:Jp,namehash:$p,dnsEncode:Wp,hashAuthorization:Lh,verifyAuthorization:Dh,hashMessage:Zp,verifyMessage:Yp,solidityPacked:rf,solidityPackedKeccak256:af,solidityPackedSha256:of,TypedDataEncoder:kf,verifyTypedData:Af,getDefaultProvider:my,Block:Og,FeeData:Bg,Log:Ug,TransactionReceipt:Fg,TransactionResponse:jg,AbstractSigner:pb,NonceManager:by,VoidSigner:fb,AbstractProvider:rb,FallbackProvider:fy,JsonRpcApiProvider:Nb,JsonRpcProvider:Rb,JsonRpcSigner:Ib,BrowserProvider:yy,AlchemyProvider:Ub,AnkrProvider:Cb,BlockscoutProvider:vy,ChainstackProvider:jb,CloudflareProvider:Lb,EtherscanProvider:Kb,InfuraProvider:ny,InfuraWebSocketProvider:Xb,PocketProvider:ky,QuickNodeProvider:ty,IpcSocketProvider:Ay,SocketProvider:Wb,WebSocketProvider:Zb,EnsResolver:wm,Network:Lm,EnsPlugin:Om,EtherscanPlugin:Gb,FeeDataNetworkPlugin:Um,FetchUrlFeeDataNetworkPlugin:Fm,GasCostPlugin:Cm,NetworkPlugin:Bm,MulticoinProviderPlugin:bm,SocketBlockSubscriber:Qb,SocketEventSubscriber:$b,SocketPendingSubscriber:Jb,SocketSubscriber:Vb,UnmanagedSubscriber:Ym,copyRequest:Cg,showThrottleMessage:mb,accessListify:fh,authorizationify:gh,computeAddress:mh,recoverAddress:bh,Transaction:jh,decodeBase58:Mi,encodeBase58:Di,decodeBase64:Gi,encodeBase64:qi,concat:hi,dataLength:pi,dataSlice:fi,getBytes:ii,getBytesCopy:si,hexlify:di,isHexString:ci,isBytesLike:li,stripZerosLeft:gi,zeroPadBytes:yi,zeroPadValue:bi,defineProperties:Jo,resolveProperties:Qo,assert:Xo,assertArgument:ni,assertArgumentCount:ei,assertNormalize:ri,assertPrivate:ai,makeError:Yo,isCallException:Zo,isError:Wo,EventPayload:Hi,FetchRequest:ss,FetchResponse:cs,FetchCancelSignal:os,FixedNumber:vs,getBigInt:Pi,getNumber:Ri,getUint:Ii,toBeArray:Bi,toBigInt:zi,toBeHex:Ti,toNumber:Si,toQuantity:Ci,fromTwos:Ai,toTwos:Ei,mask:xi,formatEther:Bs,parseEther:Cs,formatUnits:Ss,parseUnits:Ts,toUtf8Bytes:Qi,toUtf8CodePoints:$i,toUtf8String:Ji,Utf8ErrorFuncs:_i,decodeRlp:xs,encodeRlp:zs,uuidV4:Os,Mnemonic:jy,BaseWallet:Ey,HDNodeWallet:Hv,HDNodeVoidWallet:Kv,Wallet:Wv,defaultPath:Ov,getAccountPath:_v,getIndexedAccountPath:Vv,isCrowdsaleJson:Qv,isKeystoreJson:xv,decryptCrowdsaleJson:Jv,decryptKeystoreJsonSync:Nv,decryptKeystoreJson:Rv,encryptKeystoreJson:Cv,encryptKeystoreJsonSync:Bv,Wordlist:zy,LangEn:Ty,WordlistOwl:Ry,WordlistOwlA:Zv,wordlists:Yv}),nw=Object.freeze({__proto__:null,ethers:Xv,version:_o,decodeBytes32String:kg,encodeBytes32String:wg,AbiCoder:vg,ConstructorFragment:ug,ErrorFragment:cg,EventFragment:lg,Fragment:og,FallbackFragment:dg,FunctionFragment:hg,NamedFragment:ig,ParamType:ag,StructFragment:pg,checkResultErrors:_s,ErrorDescription:xg,Indexed:Pg,Interface:zg,LogDescription:Ag,Result:Ks,TransactionDescription:Eg,Typed:$d,getAddress:jd,getIcapAddress:Ld,getCreateAddress:Dd,getCreate2Address:Md,isAddressable:Gd,isAddress:qd,resolveAddress:Kd,ZeroAddress:ld,WeiPerEther:hd,MaxUint256:pd,MinInt256:fd,MaxInt256:gd,N:dd,ZeroHash:ud,EtherSymbol:"Ξ",MessagePrefix:md,BaseContract:pm,Contract:fm,ContractFactory:gm,ContractEventPayload:_g,ContractTransactionReceipt:qg,ContractTransactionResponse:Hg,ContractUnknownEventPayload:Kg,EventLog:Mg,UndecodedEventLog:Gg,computeHmac:Qc,randomBytes:Ll,keccak256:hl,ripemd160:Sl,sha256:au,sha512:ou,pbkdf2:Ol,scrypt:Wl,scryptSync:Zl,lock:Sd,Signature:zd,SigningKey:Rd,id:Mh,ensNormalize:Qp,isValidName:Jp,namehash:$p,dnsEncode:Wp,hashAuthorization:Lh,verifyAuthorization:Dh,hashMessage:Zp,verifyMessage:Yp,solidityPacked:rf,solidityPackedKeccak256:af,solidityPackedSha256:of,TypedDataEncoder:kf,verifyTypedData:Af,getDefaultProvider:my,Block:Og,FeeData:Bg,Log:Ug,TransactionReceipt:Fg,TransactionResponse:jg,AbstractSigner:pb,NonceManager:by,VoidSigner:fb,AbstractProvider:rb,FallbackProvider:fy,JsonRpcApiProvider:Nb,JsonRpcProvider:Rb,JsonRpcSigner:Ib,BrowserProvider:yy,AlchemyProvider:Ub,AnkrProvider:Cb,BlockscoutProvider:vy,ChainstackProvider:jb,CloudflareProvider:Lb,EtherscanProvider:Kb,InfuraProvider:ny,InfuraWebSocketProvider:Xb,PocketProvider:ky,QuickNodeProvider:ty,IpcSocketProvider:Ay,SocketProvider:Wb,WebSocketProvider:Zb,EnsResolver:wm,Network:Lm,EnsPlugin:Om,EtherscanPlugin:Gb,FeeDataNetworkPlugin:Um,FetchUrlFeeDataNetworkPlugin:Fm,GasCostPlugin:Cm,NetworkPlugin:Bm,MulticoinProviderPlugin:bm,SocketBlockSubscriber:Qb,SocketEventSubscriber:$b,SocketPendingSubscriber:Jb,SocketSubscriber:Vb,UnmanagedSubscriber:Ym,copyRequest:Cg,showThrottleMessage:mb,accessListify:fh,authorizationify:gh,computeAddress:mh,recoverAddress:bh,Transaction:jh,decodeBase58:Mi,encodeBase58:Di,decodeBase64:Gi,encodeBase64:qi,concat:hi,dataLength:pi,dataSlice:fi,getBytes:ii,getBytesCopy:si,hexlify:di,isHexString:ci,isBytesLike:li,stripZerosLeft:gi,zeroPadBytes:yi,zeroPadValue:bi,defineProperties:Jo,resolveProperties:Qo,assert:Xo,assertArgument:ni,assertArgumentCount:ei,assertNormalize:ri,assertPrivate:ai,makeError:Yo,isCallException:Zo,isError:Wo,EventPayload:Hi,FetchRequest:ss,FetchResponse:cs,FetchCancelSignal:os,FixedNumber:vs,getBigInt:Pi,getNumber:Ri,getUint:Ii,toBeArray:Bi,toBigInt:zi,toBeHex:Ti,toNumber:Si,toQuantity:Ci,fromTwos:Ai,toTwos:Ei,mask:xi,formatEther:Bs,parseEther:Cs,formatUnits:Ss,parseUnits:Ts,toUtf8Bytes:Qi,toUtf8CodePoints:$i,toUtf8String:Ji,Utf8ErrorFuncs:_i,decodeRlp:xs,encodeRlp:zs,uuidV4:Os,Mnemonic:jy,BaseWallet:Ey,HDNodeWallet:Hv,HDNodeVoidWallet:Kv,Wallet:Wv,defaultPath:Ov,getAccountPath:_v,getIndexedAccountPath:Vv,isCrowdsaleJson:Qv,isKeystoreJson:xv,decryptCrowdsaleJson:Jv,decryptKeystoreJsonSync:Nv,decryptKeystoreJson:Rv,encryptKeystoreJson:Cv,encryptKeystoreJsonSync:Bv,Wordlist:zy,LangEn:Ty,WordlistOwl:Ry,WordlistOwlA:Zv,wordlists:Yv});n.EmblemAuthSDK=t,n.SessionManager=e,n.default=t,Object.defineProperty(n,"__esModule",{value:!0})});
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).EmblemAuth={})}(this,function(t){"use strict";class e{constructor(t={}){this.session=null,this.timer=null,this.events={},this.onRefresh=t.onRefresh,this.refreshSkewMs=t.refreshSkewMs??6e4}setSession(t){this.session=t,this.schedule(),this.emit("session",t)}getSession(){return this.session}clear(){this.session=null,this.cancel(),this.emit("session",null)}on(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e)}off(t,e){const s=this.events[t];if(s){const t=s.indexOf(e);-1!==t&&s.splice(t,1)}}destroy(){this.cancel(),this.session=null,Object.keys(this.events).forEach(t=>{delete this.events[t]})}emit(t,e){const s=this.events[t];if(s)for(const t of s)try{t(e)}catch(t){}}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=null)}schedule(){this.cancel();const t=this.session;if(!t?.expiresAt)return;const e=Date.now(),s=t.expiresAt-e;if(s<=0)return void this.emit("sessionExpired",t);const i=Math.max(0,s-this.refreshSkewMs);this.emit("sessionWillRefresh",{inMs:i,ttl:s}),this.timer=setTimeout(async()=>{if(this.onRefresh)try{const e=await this.onRefresh(t);e?.expiresAt&&e.authToken?(this.setSession(e),this.emit("sessionRefreshed",e)):Date.now()>=t.expiresAt&&this.emit("sessionExpired",t)}catch(e){Date.now()>=t.expiresAt&&this.emit("sessionExpired",t)}else Date.now()>=t.expiresAt&&this.emit("sessionExpired",t)},i)}}class s{constructor(t){if(this.session=null,this.pendingNonce=null,this.overlayEl=null,this._iframeEl=null,this.overlayCleanup=null,this.events={},this._cachedVaultInfo=null,!t?.appId)throw new Error("appId is required");if(this.config={...t,authUrl:t.authUrl??"https://auth.emblemvault.ai",apiUrl:t.apiUrl??"https://api.emblemvault.ai",persistSession:t.persistSession??!0},this.storageKey=`emblem_session_${t.appId}`,this.messageHandler=this.onMessage.bind(this),window.addEventListener("message",this.messageHandler),this.sessionMgr=new e({onRefresh:async t=>{try{return await this.refreshSession()||t}catch{return t}}}),this.sessionMgr.on("sessionExpired",t=>this.emit("sessionExpired",t)),this.sessionMgr.on("sessionRefreshed",t=>this.emit("sessionRefreshed",t)),this.sessionMgr.on("sessionWillRefresh",t=>this.emit("sessionWillRefresh",t)),this.config.persistSession){const t=this.loadPersistedSession();t&&this.hydrateSession(t)}}async authenticateWallet(t){const{network:e,message:s,signature:i,publicKey:n,address:r}=t;if(!this.config.apiUrl)throw new Error("apiUrl is required for authenticateWallet");if(!e||!s||!i)throw new Error("network, message, signature are required");const a=`${this.config.apiUrl.replace(/\/$/,"")}/api/auth/wallet/verify-external`,o=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:this.config.appId,network:e,message:s,signature:i,publicKey:n,address:r})});if(!o.ok){const t=await this.safeJson(o),e=new Error(t?.error||`wallet_verify_${o.status}`);throw e.status=o.status,e.payload=t,e}const c=await o.json(),l=c?.session;return l&&(this.session=l,this.persistSession(l),this.sessionMgr.setSession(l),this.config.onSuccess?.(l),this.emit("session",l)),l}async openAuthModal(){const t=window.location.origin;let e=null,s=null;try{e=await this.getAuthInit({origin:t})}catch(t){s=t}const i=e?.nonce||this.randomId();this.pendingNonce=i;let n=this.resolveModalUrl({nonce:i,origin:t,state:e?.state});if("origin_not_allowed"===s?.payload?.error)try{const e=new URL("/connect",this.config.authUrl);e.searchParams.set("error","origin_not_allowed"),e.searchParams.set("appId",this.config.appId),e.searchParams.set("origin",t),n=e.toString()}catch{}const r=this.config.modalMode||"auto";let a=!1;if("iframe"===r||"auto"===r)try{a=this.openIframeModal(n)}catch(t){}if(!a){const t=this.popupFeatures();if(!window.open(n,"emblem-auth",t)){const t=new Error("Popup blocked. Please allow popups for this site.");this.emitError(t)}}}getSession(){return this.session}async refreshSession(){try{if(!this.session)return null;const t=this.tryGetOriginFromConfig();if(!t)return this.session;const e=`${t}/api/auth/refresh`,s=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({}),credentials:"include"});if(!s.ok)return this.session;const i=await s.json(),n=i?.session;return n&&(this.session=n,this.persistSession(n),this.sessionMgr.setSession(n),this.emit("session",n)),this.session}catch{return this.session}}async getVaultInfo(){if(this._cachedVaultInfo)return this._cachedVaultInfo;const t=this.getSession();if(!t?.authToken)throw new Error("No session");if(!this.config.apiUrl)throw new Error("apiUrl is required");const e=this.config.apiUrl.replace(/\/$/,""),s=await fetch(`${e}/vault/info`,{method:"POST",headers:{Authorization:`Bearer ${t.authToken}`,"Content-Type":"application/json"},body:"{}"});if(!s.ok)throw new Error("Failed to fetch vault info");const i=await s.json();return this._cachedVaultInfo=i,i}async getVaultApiKey(){if(!this.config.apiUrl)throw new Error("apiUrl is required");const t=this.getSession();if(!t?.authToken)throw new Error("No active session");const e=this.config.apiUrl.replace(/\/$/,""),s=t.authToken,i=t.user?.vaultId;let n=null;try{const t=await fetch(`${e}/vault/info-complete`,{method:"POST",headers:{Authorization:`Bearer ${s}`}});if(t.ok){const e=await t.json();n=e?.raw?.pkp?.api_key_hash||e?.raw?.pkp?.apiKeyHash||null}}catch{}if(!n)try{const s=t.appId,r=t.user?.identifier||"",a=s?`${s}:${r}`:r;if(a){const t=await fetch(`${e}/api/vaults/${encodeURIComponent(a)}`);if(t.ok){const e=await t.json(),s=Array.isArray(e)?e.find(t=>String(t.tokenId||t.token_id)===String(i))||e[0]:null;n=s?.api_key_hash||s?.apiKeyHash||null}}}catch{}if(!n){const t=await fetch(`${e}/api/vaults/${encodeURIComponent(i)}/api-key`,{method:"POST",headers:{Authorization:`Bearer ${s}`}});if(!t.ok)throw new Error(`gen_key_${t.status}`);const n=await t.json(),r=n?.apiKey||n?.key||null;if(!r)throw new Error("missing_apiKey");return r}const r=await fetch(`${e}/decrypt`,{method:"POST",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},body:JSON.stringify({tokenId:i,dataToEncryptHash:n})});if(!r.ok)throw new Error(`decrypt_${r.status}`);const a=await r.json(),o=a?.decryptedString||null;if(!o)throw new Error("missing_decrypted");return o}hydrateSession(t){t?.authToken&&(this.session=t,this.persistSession(t),this._cachedVaultInfo=null,this.sessionMgr.setSession(t),this.emit("session",t))}logout(){this.session=null,this.persistSession(null),this._cachedVaultInfo=null,this.sessionMgr.clear(),this.emit("session",null)}on(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e)}off(t,e){const s=this.events[t];if(s){const t=s.indexOf(e);-1!==t&&s.splice(t,1)}}async getSignerContext(){const t=this.getSession();if(!t?.authToken)throw new Error("No active session. Call openAuthModal() or authenticateWallet() first.");const e=await this.getVaultInfo();return{config:{baseUrl:this.config.apiUrl,getJwt:()=>this.getSession()?.authToken},vaultInfo:{vaultId:e.vaultId,evmAddress:e.evmAddress||"0x",address:e.solanaAddress||e.address||"",tokenId:e.tokenId,created_by:e.created_by}}}async toViemAccount(){const{toViemAccount:t}=await Promise.resolve().then(function(){return l}),{config:e,vaultInfo:s}=await this.getSignerContext();return t(e,s)}async toEthersWallet(t){const{toEthersWallet:e}=await Promise.resolve().then(function(){return u}),{config:s,vaultInfo:i}=await this.getSignerContext();return e(s,t,i)}async toWeb3Adapter(){const{toWeb3Adapter:t}=await Promise.resolve().then(function(){return w}),{config:e,vaultInfo:s}=await this.getSignerContext();return t(e,s)}async toSolanaWeb3Signer(){const{toSolanaWeb3Signer:t}=await Promise.resolve().then(function(){return m}),{config:e,vaultInfo:s}=await this.getSignerContext();return t(e,s)}async toSolanaKitSigner(){const{toSolanaKitSigner:t}=await Promise.resolve().then(function(){return m}),{config:e,vaultInfo:s}=await this.getSignerContext();return t(e,s)}destroy(){window.removeEventListener("message",this.messageHandler),this.sessionMgr.destroy(),this.closeOverlay(),Object.keys(this.events).forEach(t=>{delete this.events[t]})}resolveModalUrl(t){const e=`${this.config.authUrl.replace(/\/$/,"")}/connect`,s=new URL(e,window.location.href);return s.searchParams.set("appId",this.config.appId),s.searchParams.set("origin",t.origin),s.searchParams.set("nonce",t.nonce),t.state&&s.searchParams.set("state",t.state),s.toString()}onMessage(t){try{if(!new Set([window.location.origin,this.tryGetOriginFromConfig()].filter(Boolean)).has(t.origin))return;const e=t.data;if("emblem-auth-success"!==e?.type)return;if(!this.pendingNonce||e.nonce!==this.pendingNonce)return;this.pendingNonce=null;const s=e.session;this.session=s,this.persistSession(s),this.sessionMgr.setSession(s),s&&this.config.onSuccess&&this.config.onSuccess(s),this.emit("session",s),this.closeOverlay()}catch(t){this.emitError(t)}}emit(t,e){const s=this.events[t];if(s)for(const t of s)try{t(e)}catch(t){}}emitError(t){this.config.onError?.(t),this.emit("authError",t)}popupFeatures(){const t=Math.max(0,(window.outerHeight-600)/2);return`popup=yes,width=420,height=600,left=${Math.max(0,(window.outerWidth-420)/2)},top=${t}`}randomId(){const t=new Uint8Array(16);if(window.crypto?.getRandomValues)window.crypto.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(256*Math.random());return Array.from(t,t=>t.toString(16).padStart(2,"0")).join("")}tryGetOriginFromConfig(){try{if(!this.config.authUrl)return null;return new URL(this.config.authUrl,window.location.href).origin}catch{return null}}async getAuthInit(t){const e=await fetch(`${this.config.authUrl.replace(/\/$/,"")}/api/auth/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:this.config.appId,origin:t.origin})}),s=await e.json().catch(()=>null);if(!e.ok){const t=new Error(`init ${e.status}`);throw t.status=e.status,t.payload=s||{},t}return s}openIframeModal(t){this.overlayEl&&this.closeOverlay();const e=document.createElement("div");e.setAttribute("data-emblem-overlay",""),e.style.position="fixed",e.style.inset="0",e.style.background="rgba(0,0,0,0.5)",e.style.zIndex="999999",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center";const s=document.createElement("div");s.style.width="min(420px, 95vw)",s.style.height="min(600px, 90vh)",s.style.background="#12161b",s.style.border="1px solid #222b35",s.style.borderRadius="12px",s.style.boxShadow="0 12px 48px rgba(0,0,0,0.7)",s.style.overflow="hidden",s.style.position="relative";const i=document.createElement("button");i.textContent="×",i.setAttribute("aria-label","Close"),i.style.position="absolute",i.style.top="6px",i.style.right="8px",i.style.zIndex="2",i.style.background="transparent",i.style.color="#e6eef8",i.style.border="none",i.style.fontSize="20px",i.style.cursor="pointer",i.onclick=()=>this.closeOverlay();const n=document.createElement("iframe");n.src=t,n.style.width="100%",n.style.height="100%",n.style.border="0",n.referrerPolicy="no-referrer",n.allow="clipboard-read; clipboard-write;",s.appendChild(i),s.appendChild(n),e.appendChild(s),document.body.appendChild(e);const r=t=>{"Escape"===t.key&&this.closeOverlay()};return document.addEventListener("keydown",r,{capture:!0}),this.overlayEl=e,this._iframeEl=n,this.overlayCleanup=()=>{document.removeEventListener("keydown",r,{capture:!0})},!0}closeOverlay(){try{this.overlayCleanup?.()}catch{}this.overlayCleanup=null,this.overlayEl?.parentNode&&this.overlayEl.parentNode.removeChild(this.overlayEl),this.overlayEl=null,this._iframeEl=null}async safeJson(t){try{return await t.json()}catch{return null}}loadPersistedSession(){try{if("undefined"==typeof localStorage)return null;const t=localStorage.getItem(this.storageKey);if(!t)return null;const e=JSON.parse(t);return e?.authToken&&e?.expiresAt?Date.now()>=e.expiresAt?(localStorage.removeItem(this.storageKey),null):e:null}catch{return null}}persistSession(t){try{if("undefined"==typeof localStorage)return;t&&this.config.persistSession?localStorage.setItem(this.storageKey,JSON.stringify(t)):localStorage.removeItem(this.storageKey)}catch{}}}async function i(t,e,s){const i=s.baseUrl??"https://api.emblemvault.ai",n=await async function(t){if("function"==typeof t.getAuthHeaders){const e=await t.getAuthHeaders();if(e&&"object"==typeof e)return e}const e=t.jwt??("function"==typeof t.getJwt?await t.getJwt():void 0)??t.sdk?.getSession()?.authToken??void 0;if(e)return{Authorization:`Bearer ${e}`};if(t.apiKey)return{"x-api-key":t.apiKey};throw new Error("No authentication available: provide jwt, getJwt(), getAuthHeaders(), sdk, or apiKey")}(s),r=await fetch(`${i}${t}`,{method:"POST",headers:{"content-type":"application/json",...n},body:JSON.stringify(e,(t,e)=>"bigint"==typeof e?e.toString():e)});if(!r.ok){const t=await r.text().catch(()=>"");throw new Error(function(t,e){let s=`Emblem signer error ${t}`;return t>=500?s+=": Internal server error":401===t||403===t?s+=": Authentication failed":404===t?s+=": Resource not found":405===t?s+=": Method not allowed":e&&(s+=`: ${e.substring(0,200)}`),s}(r.status,t))}return r.json()}function n(t,e){const s=Number(t);if(!Number.isSafeInteger(s))throw new Error(`${e} value ${t} exceeds safe integer range (max: ${Number.MAX_SAFE_INTEGER})`);return s}function r(t){return"bigint"==typeof t?"0x"+t.toString(16):t}function a(t){const e={...t};return void 0!==e.value&&(e.value=r(e.value)),void 0!==e.gas&&(e.gasLimit=r(e.gas),delete e.gas),void 0!==e.gasLimit&&(e.gasLimit=r(e.gasLimit)),void 0!==e.gasPrice&&(e.gasPrice=r(e.gasPrice)),void 0!==e.maxFeePerGas&&(e.maxFeePerGas=r(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=r(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(e.nonce=n(e.nonce,"nonce")),void 0!==e.chainId&&(e.chainId=n(e.chainId,"chainId")),void 0===e.maxFeePerGas&&void 0===e.maxPriorityFeePerGas||(void 0===e.gasPrice&&void 0!==e.maxFeePerGas&&(e.gasPrice=e.maxFeePerGas),delete e.maxFeePerGas,delete e.maxPriorityFeePerGas),delete e.type,delete e.accessList,delete e.account,delete e.chain,delete e.from,e}function o(t){let e="0x";for(let s=0;s<t.length;s++)e+=t[s].toString(16).padStart(2,"0");return e}async function c(t){const e=await i("/vault/info",{},t);if(!e||!e.vaultId||!e.evmAddress)throw new Error("Invalid vault info response: missing required fields");if(!String(e.evmAddress).startsWith("0x"))throw new Error("Invalid evmAddress format in response");return{vaultId:e.vaultId,tokenId:e.vaultId,address:e.address||"",evmAddress:e.evmAddress,created_by:e.created_by}}var l=Object.freeze({__proto__:null,toViemAccount:async function(t,e){const s=e??await c(t),{evmAddress:n,vaultId:r}=s,{toAccount:l}=await import("viem/accounts");return l({address:n,async signMessage({message:e}){let s,n=!1;if("string"==typeof e)s=e,n=!1;else if(e&&void 0!==e.raw){const t=e.raw;s="string"==typeof t?t:o(t),n=!0}else if(e instanceof Uint8Array)s=o(e),n=!1;else{if("string"!=typeof(a=e)||!/^0x[0-9a-fA-F]*$/.test(a))throw new Error(`Unsupported message type: ${typeof e}. Expected string, Uint8Array, or hex string.`);s=e,n=!1}var a;return(await i("/sign-eth-message",{vaultId:r,message:s,raw:n},t)).signature},async signTypedData(e){const{domain:s,types:n,message:a}=e;return(await i("/sign-typed-message",{vaultId:r,domain:s,types:n,message:a},t)).signature},async signTransaction(e,s){const n=a(e);return(await i("/sign-eth-tx",{vaultId:r,transaction:n},t)).signedTransaction}})}});var h,d,u=Object.freeze({__proto__:null,toEthersWallet:async function(t,e,s){let n;try{const t="ethers";n=await import(t)}catch{throw new Error("ethers is required for toEthersWallet(). Install it with: npm install ethers")}const{AbstractSigner:r,resolveAddress:l}=n,h=s??await c(t);class d extends r{constructor(t,e,s){super(e??null),this._address=null,this._vaultId=null,this._chainId=1,this._config=t,s?.address&&(this._address=s.address),s?.vaultId&&(this._vaultId=s.vaultId),s?.chainId&&(this._chainId=s.chainId)}async initialize(){return this._initPromise||(this._initPromise=c(this._config).then(t=>{this._address=t.evmAddress,this._vaultId=t.vaultId}).catch(t=>{throw this._initPromise=void 0,t})),this._initPromise}async getAddress(){return this._address||await this.initialize(),this._address}getVaultId(){if(!this._vaultId)throw new Error("Wallet not initialized. Call initialize() first.");return this._vaultId}setChainId(t){this._chainId=t}getChainId(){return this._chainId}connect(t){if(!t)throw new Error("Provider cannot be null");return new d(this._config,t,{address:this._address??void 0,vaultId:this._vaultId??void 0,chainId:this._chainId})}async signMessage(t){this._vaultId||await this.initialize();const e="string"==typeof t?t:o(t);return(await i("/sign-eth-message",{vaultId:this._vaultId,message:e},this._config)).signature}async signTypedData(t,e,s){this._vaultId||await this.initialize();const n={...e};n&&n.EIP712Domain&&delete n.EIP712Domain;return(await i("/sign-typed-message",{vaultId:this._vaultId,domain:t,types:n,message:s},this._config)).signature}async _signTypedData(t,e,s){return this.signTypedData(t,e,s)}async signTransaction(t){this._vaultId||await this.initialize();const e=t.from,s=await this.getAddress();if(e&&e.toLowerCase()!==s.toLowerCase())throw new Error("transaction from does not match signer address");const n=this.provider?{...await this.populateTransaction(t)}:{...t};if(n.from&&delete n.from,!("to"in n)||!n.to)throw new Error("Transaction must have a 'to' address");if(void 0===n.nonce||null===n.nonce)throw new Error("Transaction must have a nonce");const r=a(n);return(await i("/sign-eth-tx",{vaultId:this._vaultId,transaction:r,options:{chainId:this._chainId}},this._config)).signedTransaction}async sendTransaction(t){if(!this.provider)throw new Error("Provider required to send transaction");const e=await this.signTransaction(t);return await this.provider.broadcastTransaction(e)}async populateTransaction(t){const e={...t};if(!this.provider)throw new Error("Provider required to populate transaction");const s=e.from?await l(e.from,this.provider):await this.getAddress();let i;if(e.chainId)i=BigInt(e.chainId),this._chainId=Number(e.chainId);else{const t=await this.provider.getNetwork();i=t.chainId,this._chainId=Number(t.chainId)}const n=null!=e.nonce?Number(e.nonce):await this.provider.getTransactionCount(s,"pending"),r=e.to?await l(e.to,this.provider):null,a=e.value?BigInt(e.value.toString()):0n;let o;if(e.gasLimit)o=BigInt(e.gasLimit.toString());else try{o=await this.provider.estimateGas({...e,from:s})}catch{o=21000n}let c=null;if(e.gasPrice||2===e.type)e.gasPrice&&(c=BigInt(e.gasPrice.toString()));else{c=(await this.provider.getFeeData()).gasPrice??null}const h={from:s,to:r,value:a,nonce:n,gasLimit:o,data:e.data,chainId:i,type:e.type||void 0};return null!==c&&(h.gasPrice=c),e.maxFeePerGas&&(h.maxFeePerGas=BigInt(e.maxFeePerGas.toString())),e.maxPriorityFeePerGas&&(h.maxPriorityFeePerGas=BigInt(e.maxPriorityFeePerGas.toString())),h}async signAndBroadcast(t,e=!1){if(!this.provider)throw new Error("Provider required to send transaction");const s=await this.signTransaction(t),i=(await this.provider.broadcastTransaction(s)).hash;return e&&await this.provider.waitForTransaction(i),i}}return new d(t,e,{address:h.evmAddress,vaultId:h.vaultId})}});function f(t,e,s,i){if("a"===s&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?i:"a"===s?i.call(t):i?i.value:e.get(t)}function g(t,e,s,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(t,s):n?n.value=s:e.set(t,s),s}"function"==typeof SuppressedError&&SuppressedError;class p{constructor(t,e,s){h.set(this,void 0),d.set(this,void 0),this.address=t,g(this,h,e,"f"),g(this,d,s,"f")}async signMessage(t){const e="string"==typeof t?t:o(t);return(await i("/sign-eth-message",{vaultId:f(this,h,"f"),message:e},f(this,d,"f"))).signature}async signTypedData(t,e,s){return(await i("/sign-typed-message",{vaultId:f(this,h,"f"),domain:t,types:e,message:s},f(this,d,"f"))).signature}async signTransaction(t){const e=a(t);return{rawTransaction:(await i("/sign-eth-tx",{vaultId:f(this,h,"f"),transaction:e},f(this,d,"f"))).signedTransaction}}}h=new WeakMap,d=new WeakMap;var w=Object.freeze({__proto__:null,EmblemWeb3Adapter:p,toWeb3Adapter:async function(t,e){const s=e??await c(t);return new p(s.evmAddress,s.vaultId,t)}});class y{constructor(t,e){this.publicKey=e.address,this.config=t,this.vaultId=e.vaultId}async signMessage(t){const e="string"==typeof t?(new TextEncoder).encode(t):t,s=btoa(String.fromCharCode(...e)),n=await i("/sign-solana-message",{vaultId:this.vaultId,message:s},this.config);try{const t="undefined"!=typeof window?window:void 0;if(t?.bs58)return t.bs58.decode(n.signature);return Uint8Array.from(atob(n.signature),t=>t.charCodeAt(0))}catch(t){if(n.signature.startsWith("0x")){const t=n.signature.slice(2),e=new Uint8Array(t.length/2);for(let s=0;s<t.length;s+=2)e[s/2]=parseInt(t.substr(s,2),16);return e}throw new Error(`Unable to decode signature format: ${t}`)}}async signTransaction(t){const e=this.serializeTransaction(t),s=await i("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:e,broadcast:!1,versionedTransaction:!0},this.config),n=s.serializedSignedTransaction||s.signedTransaction;if(!n)throw new Error("No signed transaction data received from server");return this.deserializeTransaction(n)}serializeTransaction(t){if(t&&"object"==typeof t){if(t.serialize){const e=t.serialize();return btoa(String.fromCharCode(...e))}if(t.instructions||t.recentBlockhash)throw new Error("Cannot serialize unsigned transaction objects. Please use VersionedTransaction.")}return t}deserializeTransaction(t){if("object"==typeof t&&t&&t.serializedSignedTransaction&&(t=t.serializedSignedTransaction),"string"==typeof t)try{const e=atob(t);return new Uint8Array(e.split("").map(t=>t.charCodeAt(0)))}catch(t){throw new Error(`Unable to deserialize transaction response: ${t}`)}return t}getVaultId(){return this.vaultId}async signAllTransactions(t){const e=[];for(const s of t)e.push(await this.signTransaction(s));return e}canSign(t){return t===this.publicKey}async signAndBroadcast(t,e=!0){const s=this.serializeTransaction(t),n=await i("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:s,broadcast:e,versionedTransaction:!0},this.config);if(e){if(!n.transactionSignature)throw new Error("No transaction signature received from broadcast");return n.transactionSignature}if(!n.serializedSignedTransaction)throw new Error("No signed transaction data received from server");return n.serializedSignedTransaction}}var m=Object.freeze({__proto__:null,EmblemSolanaSigner:y,toSolanaWeb3Signer:async function(t,e){const s=e??await c(t);return new y(t,s)},toSolanaKitSigner:async function(t,e){const s=e??await c(t);return new y(t,s)}});t.EmblemAuthSDK=s,t.SessionManager=e,t.default=s,Object.defineProperty(t,"__esModule",{value:!0})});
15
2
  //# sourceMappingURL=emblem-auth.min.js.map