@emblemvault/auth-sdk 2.0.0 → 2.0.2

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,15 @@
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)}}async function t(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 r(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 a(n){return"bigint"==typeof n?"0x"+n.toString(16):n}function o(n){const e={...n};return void 0!==e.value&&(e.value=a(e.value)),void 0!==e.gas&&(e.gasLimit=a(e.gas),delete e.gas),void 0!==e.gasLimit&&(e.gasLimit=a(e.gasLimit)),void 0!==e.gasPrice&&(e.gasPrice=a(e.gasPrice)),void 0!==e.maxFeePerGas&&(e.maxFeePerGas=a(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=a(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(e.nonce=r(e.nonce,"nonce")),void 0!==e.chainId&&(e.chainId=r(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 i(n){let e="0x";for(let t=0;t<n.length;t++)e+=n[t].toString(16).padStart(2,"0");return e}async function s(n){const e=await t("/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}}class c{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,r=btoa(String.fromCharCode(...e)),a=await t("/sign-solana-message",{vaultId:this.vaultId,message:r},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),r=await t("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:e,broadcast:!1,versionedTransaction:!0},this.config),a=r.serializedSignedTransaction||r.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 r=this.serializeTransaction(n),a=await t("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:r,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}}function l(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 u(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}var d,h;"function"==typeof SuppressedError&&SuppressedError;class p{constructor(n,e,t){d.set(this,void 0),h.set(this,void 0),this.address=n,u(this,d,e,"f"),u(this,h,t,"f")}async signMessage(n){const e="string"==typeof n?n:i(n);return(await t("/sign-eth-message",{vaultId:l(this,d,"f"),message:e},l(this,h,"f"))).signature}async signTypedData(n,e,r){return(await t("/sign-typed-message",{vaultId:l(this,d,"f"),domain:n,types:e,message:r},l(this,h,"f"))).signature}async signTransaction(n){const e=o(n);return{rawTransaction:(await t("/sign-eth-tx",{vaultId:l(this,d,"f"),transaction:e},l(this,h,"f"))).signedTransaction}}}d=new WeakMap,h=new WeakMap;class f{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{config:n,vaultInfo:e}=await this.getSignerContext();return async function(n,e){const r=e??await s(n),{evmAddress:a,vaultId:c}=r,{toAccount:l}=await Promise.resolve().then(function(){return Mo});return l({address:a,async signMessage({message:e}){let r,a=!1;if("string"==typeof e)r=e,a=!1;else if(e&&void 0!==e.raw){const n=e.raw;r="string"==typeof n?n:i(n),a=!0}else if(e instanceof Uint8Array)r=i(e),a=!1;else{if("string"!=typeof(o=e)||!/^0x[0-9a-fA-F]*$/.test(o))throw new Error(`Unsupported message type: ${typeof e}. Expected string, Uint8Array, or hex string.`);r=e,a=!1}var o;return(await t("/sign-eth-message",{vaultId:c,message:r,raw:a},n)).signature},async signTypedData(e){const{domain:r,types:a,message:o}=e;return(await t("/sign-typed-message",{vaultId:c,domain:r,types:a,message:o},n)).signature},async signTransaction(e,r){const a=o(e);return(await t("/sign-eth-tx",{vaultId:c,transaction:a},n)).signedTransaction}})}(n,e)}async toEthersWallet(n){const{config:e,vaultInfo:r}=await this.getSignerContext();return async function(n,e,r){let a;try{a=await Promise.resolve().then(function(){return Wv})}catch{throw new Error("ethers is required for toEthersWallet(). Install it with: npm install ethers")}const{AbstractSigner:c,resolveAddress:l}=a,u=r??await s(n);class d extends c{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=s(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:i(n);return(await t("/sign-eth-message",{vaultId:this._vaultId,message:e},this._config)).signature}async signTypedData(n,e,r){this._vaultId||await this.initialize();const a={...e};return a&&a.EIP712Domain&&delete a.EIP712Domain,(await t("/sign-typed-message",{vaultId:this._vaultId,domain:n,types:a,message:r},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,r=await this.getAddress();if(e&&e.toLowerCase()!==r.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 i=o(a);return(await t("/sign-eth-tx",{vaultId:this._vaultId,transaction:i,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;e.gasPrice||2===e.type?e.gasPrice&&(c=BigInt(e.gasPrice.toString())):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})}(e,n,r)}async toWeb3Adapter(){const{config:n,vaultInfo:e}=await this.getSignerContext();return async function(n,e){const t=e??await s(n);return new p(t.evmAddress,t.vaultId,n)}(n,e)}async toSolanaWeb3Signer(){const{config:n,vaultInfo:e}=await this.getSignerContext();return async function(n,e){const t=e??await s(n);return new c(n,t)}(n,e)}async toSolanaKitSigner(){const{config:n,vaultInfo:e}=await this.getSignerContext();return async function(n,e){const t=e??await s(n);return new c(n,t)}(n,e)}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{}}}const g="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;function m(n){if(!Number.isSafeInteger(n)||n<0)throw new Error("positive integer expected, got "+n)}function b(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 y(n){if("function"!=typeof n||"function"!=typeof n.create)throw new Error("Hash should be wrapped by utils.createHasher");m(n.outputLen),m(n.blockLen)}function v(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 w(n,e){b(n);const t=e.outputLen;if(n.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function k(...n){for(let e=0;e<n.length;e++)n[e].fill(0)}function A(n){return new DataView(n.buffer,n.byteOffset,n.byteLength)}function E(n,e){return n<<32-e|n>>>e}function x(n,e){return n<<e|n>>>32-e>>>0}function I(n){return n<<24&4278190080|n<<8&16711680|n>>>8&65280|n>>>24&255}const P=(()=>68===new Uint8Array(new Uint32Array([287454020]).buffer)[0])()?n=>n:function(n){for(let e=0;e<n.length;e++)n[e]=I(n[e]);return n},N=(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)(),z=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));const R=48,T=57,S=65,B=70,C=97,O=102;function U(n){return n>=R&&n<=T?n-R:n>=S&&n<=B?n-(S-10):n>=C&&n<=O?n-(C-10):void 0}function F(n){if("string"!=typeof n)throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(n))}function L(n){return"string"==typeof n&&(n=F(n)),b(n),n}function j(n){return"string"==typeof n&&(n=F(n)),b(n),n}function D(...n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];b(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 M{}function G(n){const e=e=>n().update(L(e)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function q(n=32){if(g&&"function"==typeof g.getRandomValues)return g.getRandomValues(new Uint8Array(n));if(g&&"function"==typeof g.randomBytes)return Uint8Array.from(g.randomBytes(n));throw new Error("crypto.getRandomValues must be defined")}
2
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const H=BigInt(0),K=BigInt(1);function V(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name}function _(n){if(!V(n))throw new Error("Uint8Array expected")}function Q(n,e){if("boolean"!=typeof e)throw new Error(n+" boolean expected, got "+e)}function J(n){const e=n.toString(16);return 1&e.length?"0"+e:e}function $(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);return""===n?H:BigInt("0x"+n)}const W="function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex,Z=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function Y(n){if(_(n),W)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=Z[n[t]];return e}const X=48,nn=57,en=65,tn=70,rn=97,an=102;function on(n){return n>=X&&n<=nn?n-X:n>=en&&n<=tn?n-(en-10):n>=rn&&n<=an?n-(rn-10):void 0}function sn(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);if(W)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=on(n.charCodeAt(a)),o=on(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 cn(n){return $(Y(n))}function ln(n){return _(n),$(Y(Uint8Array.from(n).reverse()))}function un(n,e){return sn(n.toString(16).padStart(2*e,"0"))}function dn(n,e){return un(n,e).reverse()}function hn(n,e,t){let r;if("string"==typeof e)try{r=sn(e)}catch(e){throw new Error(n+" must be hex string or Uint8Array, cause: "+e)}else{if(!V(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 pn(...n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];_(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 fn=n=>"bigint"==typeof n&&H<=n;function gn(n,e,t){return fn(n)&&fn(e)&&fn(t)&&e<=n&&n<t}function mn(n,e,t,r){if(!gn(e,t,r))throw new Error("expected valid "+n+": "+t+" <= n < "+r+", got "+e)}const bn=n=>(K<<BigInt(n))-K,yn=n=>new Uint8Array(n),vn=n=>Uint8Array.from(n);const wn={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||V(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 kn(n,e,t={}){const r=(e,t,r)=>{const a=wn[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 An(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 En=BigInt(0),xn=BigInt(1),In=BigInt(2),Pn=BigInt(3),Nn=BigInt(4),zn=BigInt(5),Rn=BigInt(8);function Tn(n,e){const t=n%e;return t>=En?t:e+t}function Sn(n,e,t){let r=n;for(;e-- >En;)r*=r,r%=t;return r}function Bn(n,e){if(n===En)throw new Error("invert: expected non-zero number");if(e<=En)throw new Error("invert: expected positive modulus, got "+e);let t=Tn(n,e),r=e,a=En,o=xn;for(;t!==En;){const n=r%t,e=a-o*(r/t);r=t,t=n,a=o,o=e}if(r!==xn)throw new Error("invert: does not exist");return Tn(a,e)}function Cn(n,e){const t=(n.ORDER+xn)/Nn,r=n.pow(e,t);if(!n.eql(n.sqr(r),e))throw new Error("Cannot find square root");return r}function On(n,e){const t=(n.ORDER-zn)/Rn,r=n.mul(e,In),a=n.pow(r,t),o=n.mul(e,a),i=n.mul(n.mul(o,In),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 Un(n){return n%Nn===Pn?Cn:n%Rn===zn?On:function(n){if(n<BigInt(3))throw new Error("sqrt is not defined for small field");let e=n-xn,t=0;for(;e%In===En;)e/=In,t++;let r=In;const a=Mn(n);for(;1===jn(a,r);)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(1===t)return Cn;let o=a.pow(r,e);const i=(e+xn)/In;return function(n,r){if(n.is0(r))return r;if(1!==jn(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=xn<<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 Fn=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ln(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 jn(n,e){const t=(n.ORDER-xn)/In,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 Dn(n,e){void 0!==e&&m(e);const t=void 0!==e?e:n.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}function Mn(n,e,t=!1,r={}){if(n<=En)throw new Error("invalid field: expected ORDER > 0, got "+n);const{nBitLength:a,nByteLength:o}=Dn(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:bn(a),ZERO:En,ONE:xn,create:e=>Tn(e,n),isValid:e=>{if("bigint"!=typeof e)throw new Error("invalid field element: expected bigint, got "+typeof e);return En<=e&&e<n},is0:n=>n===En,isOdd:n=>(n&xn)===xn,neg:e=>Tn(-e,n),eql:(n,e)=>n===e,sqr:e=>Tn(e*e,n),add:(e,t)=>Tn(e+t,n),sub:(e,t)=>Tn(e-t,n),mul:(e,t)=>Tn(e*t,n),pow:(n,e)=>function(n,e,t){if(t<En)throw new Error("invalid exponent, negatives unsupported");if(t===En)return n.ONE;if(t===xn)return e;let r=n.ONE,a=e;for(;t>En;)t&xn&&(r=n.mul(r,a)),a=n.sqr(a),t>>=xn;return r}(s,n,e),div:(e,t)=>Tn(e*Bn(t,n),n),sqrN:n=>n*n,addN:(n,e)=>n+e,subN:(n,e)=>n-e,mulN:(n,e)=>n*e,inv:e=>Bn(e,n),sqrt:r.sqrt||(e=>(i||(i=Un(n)),i(s,e))),toBytes:n=>t?dn(n,o):un(n,o),fromBytes:n=>{if(n.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+n.length);return t?ln(n):cn(n)},invertBatch:n=>Ln(s,n),cmov:(n,e,t)=>t?e:n});return Object.freeze(s)}function Gn(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 qn(n){const e=Gn(n);return e+Math.ceil(e/2)}function Hn(n,e,t){return n&e^~n&t}function Kn(n,e,t){return n&e^n&t^e&t}class Vn extends M{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=A(this.buffer)}update(n){v(this),b(n=L(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=A(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){v(this),w(n,this),this.finished=!0;const{buffer:e,view:t,blockLen:r,isLE:a}=this;let{pos:o}=this;e[o++]=128,k(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=A(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 _n=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qn=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Jn=BigInt(2**32-1),$n=BigInt(32);function Wn(n,e=!1){return e?{h:Number(n&Jn),l:Number(n>>$n&Jn)}:{h:0|Number(n>>$n&Jn),l:0|Number(n&Jn)}}function Zn(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}=Wn(n[o],e);[r[o],a[o]]=[t,i]}return[r,a]}const Yn=(n,e,t)=>n>>>t,Xn=(n,e,t)=>n<<32-t|e>>>t,ne=(n,e,t)=>n>>>t|e<<32-t,ee=(n,e,t)=>n<<32-t|e>>>t,te=(n,e,t)=>n<<64-t|e>>>t-32,re=(n,e,t)=>n>>>t-32|e<<64-t;function ae(n,e,t,r){const a=(e>>>0)+(r>>>0);return{h:n+t+(a/2**32|0)|0,l:0|a}}const oe=(n,e,t)=>(n>>>0)+(e>>>0)+(t>>>0),ie=(n,e,t,r)=>e+t+r+(n/2**32|0)|0,se=(n,e,t,r)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0),ce=(n,e,t,r,a)=>e+t+r+a+(n/2**32|0)|0,le=(n,e,t,r,a)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0)+(a>>>0),ue=(n,e,t,r,a,o)=>e+t+r+a+o+(n/2**32|0)|0,de=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]),he=new Uint32Array(64);class pe extends Vn{constructor(n=32){super(64,n,8,!1),this.A=0|_n[0],this.B=0|_n[1],this.C=0|_n[2],this.D=0|_n[3],this.E=0|_n[4],this.F=0|_n[5],this.G=0|_n[6],this.H=0|_n[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)he[t]=n.getUint32(e,!1);for(let n=16;n<64;n++){const e=he[n-15],t=he[n-2],r=E(e,7)^E(e,18)^e>>>3,a=E(t,17)^E(t,19)^t>>>10;he[n]=a+he[n-7]+r+he[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+(E(i,6)^E(i,11)^E(i,25))+Hn(i,s,c)+de[n]+he[n]|0,u=(E(t,2)^E(t,13)^E(t,22))+Kn(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(){k(he)}destroy(){this.set(0,0,0,0,0,0,0,0),k(this.buffer)}}const fe=(()=>Zn(["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))))(),ge=(()=>fe[0])(),me=(()=>fe[1])(),be=new Uint32Array(80),ye=new Uint32Array(80);class ve extends Vn{constructor(n=64){super(128,n,16,!1),this.Ah=0|Qn[0],this.Al=0|Qn[1],this.Bh=0|Qn[2],this.Bl=0|Qn[3],this.Ch=0|Qn[4],this.Cl=0|Qn[5],this.Dh=0|Qn[6],this.Dl=0|Qn[7],this.Eh=0|Qn[8],this.El=0|Qn[9],this.Fh=0|Qn[10],this.Fl=0|Qn[11],this.Gh=0|Qn[12],this.Gl=0|Qn[13],this.Hh=0|Qn[14],this.Hl=0|Qn[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)be[t]=n.getUint32(e),ye[t]=n.getUint32(e+=4);for(let n=16;n<80;n++){const e=0|be[n-15],t=0|ye[n-15],r=ne(e,t,1)^ne(e,t,8)^Yn(e,0,7),a=ee(e,t,1)^ee(e,t,8)^Xn(e,t,7),o=0|be[n-2],i=0|ye[n-2],s=ne(o,i,19)^te(o,i,61)^Yn(o,0,6),c=ee(o,i,19)^re(o,i,61)^Xn(o,i,6),l=se(a,c,ye[n-7],ye[n-16]),u=ce(l,r,s,be[n-7],be[n-16]);be[n]=0|u,ye[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=ne(u,d,14)^ne(u,d,18)^te(u,d,41),y=ee(u,d,14)^ee(u,d,18)^re(u,d,41),v=u&h^~u&f,w=le(b,y,d&p^~d&g,me[n],ye[n]),k=ue(w,m,e,v,ge[n],be[n]),A=0|w,E=ne(t,r,28)^te(t,r,34)^te(t,r,39),x=ee(t,r,28)^re(t,r,34)^re(t,r,39),I=t&a^t&i^a&i,P=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}=ae(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=oe(A,x,P);t=ie(N,k,E,I),r=0|N}({h:t,l:r}=ae(0|this.Ah,0|this.Al,0|t,0|r)),({h:a,l:o}=ae(0|this.Bh,0|this.Bl,0|a,0|o)),({h:i,l:s}=ae(0|this.Ch,0|this.Cl,0|i,0|s)),({h:c,l:l}=ae(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:d}=ae(0|this.Eh,0|this.El,0|u,0|d)),({h:h,l:p}=ae(0|this.Fh,0|this.Fl,0|h,0|p)),({h:f,l:g}=ae(0|this.Gh,0|this.Gl,0|f,0|g)),({h:m,l:b}=ae(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(){k(be,ye)}destroy(){k(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const we=G(()=>new pe),ke=G(()=>new ve);class Ae extends M{constructor(n,e){super(),this.finished=!1,this.destroyed=!1,y(n);const t=L(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),k(a)}update(n){return v(this),this.iHash.update(n),this}digestInto(n){v(this),b(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 Ee=(n,e,t)=>new Ae(n,e).update(t).digest();Ee.create=(n,e)=>new Ae(n,e);const xe=BigInt(0),Ie=BigInt(1);function Pe(n,e){const t=e.negate();return n?t:e}function Ne(n,e){if(!Number.isSafeInteger(n)||n<=0||n>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+n)}function ze(n,e){Ne(n,e);const t=2**n;return{windows:Math.ceil(e/n)+1,windowSize:2**(n-1),mask:bn(n),maxNumber:t,shiftBy:BigInt(n)}}function Re(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+=Ie);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 Te=new WeakMap,Se=new WeakMap;function Be(n){return Se.get(n)||1}function Ce(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>H;n>>=K,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=bn(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 Oe(n){return kn(n.Fp,Fn.reduce((n,e)=>(n[e]="function",n),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),kn(n,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Dn(n.n,n.nBitLength),...n,p:n.Fp.ORDER})}function Ue(n){void 0!==n.lowS&&Q("lowS",n.lowS),void 0!==n.prehash&&Q("prehash",n.prehash)}class Fe extends Error{constructor(n=""){super(n)}}const Le={Err:Fe,_tlv:{encode:(n,e)=>{const{Err:t}=Le;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=J(r);if(a.length/2&128)throw new t("tlv.encode: long form length too big");const o=r>127?J(a.length/2|128):"";return J(n)+o+a+e},decode(n,e){const{Err:t}=Le;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}=Le;if(n<De)throw new e("integer: negative integers are not allowed");let t=J(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}=Le;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 cn(n)}},toSig(n){const{Err:e,_int:t,_tlv:r}=Le,a=hn("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}=Le,r=e.encode(2,t.encode(n.r))+e.encode(2,t.encode(n.s));return e.encode(48,r)}};function je(n,e){return Y(un(n,e))}const De=BigInt(0),Me=BigInt(1);BigInt(2);const Ge=BigInt(3),qe=BigInt(4);function He(n){const e=function(n){const e=Oe(n);kn(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=Mn(e.n,e.nBitLength),a=e.toBytes||((n,e,r)=>{const a=e.toAffine();return pn(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,Ge),qe),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(V(n)&&(n=Y(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:cn(hn("private key",n,r))}catch(e){throw new Error("invalid private key, expected hex or "+r+" bytes, got "+typeof n)}return a&&(i=Tn(i,o)),mn("private key",i,Me,o),i}function d(n){if(!(n instanceof f))throw new Error("ProjectivePoint expected")}const h=An((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=An(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=Ln(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(hn("pointHex",n)));return e.assertValidity(),e}static fromPrivateKey(n){return f.BASE.multiply(u(n))}static msm(n,e){return Ce(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,Ge),{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,Ge);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;mn("scalar",n,De,a);const o=f.ZERO;if(n===De)return o;if(this.is0()||n===Me)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>De||l>De;)s&Me&&(u=u.add(h)),l&Me&&(d=d.add(h)),h=h.double(),s>>=Me,l>>=Me;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(mn("scalar",n,Me,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!==De&&e!==Me&&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===Me)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===Me?this:t?t(f,this):this.multiplyUnsafe(e.h)}toRawBytes(n=!0){return Q("isCompressed",n),this.assertValidity(),a(f,this,n)}toHex(n=!0){return Q("isCompressed",n),Y(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:Pe,hasPrecomputes:n=>1!==Be(n),unsafeLadder(n,e,t=y.ZERO){let r=n;for(;e>xe;)e&Ie&&(t=t.add(r)),r=r.double(),e>>=Ie;return t},precomputeWindow(n,e){const{windows:t,windowSize:r}=ze(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=ze(n,v);for(let n=0;n<o.windows;n++){const{nextN:i,offset:s,isZero:c,isNeg:l,isNegF:u,offsetF:d}=Re(t,n,o);t=i,c?a=a.add(Pe(u,e[d])):r=r.add(Pe(l,e[s]))}return{p:r,f:a}},wNAFUnsafe(n,e,t,r=y.ZERO){const a=ze(n,v);for(let n=0;n<a.windows&&t!==xe;n++){const{nextN:o,offset:i,isZero:s,isNeg:c}=Re(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=Te.get(e);return r||(r=this.precomputeWindow(e,n),1!==n&&Te.set(e,t(r))),r},wNAFCached(n,e,t){const r=Be(n);return this.wNAF(r,this.getPrecomputes(r,n,t),e)},wNAFCachedUnsafe(n,e,t,r){const a=Be(n);return 1===a?this.unsafeLadder(n,e,r):this.wNAFUnsafe(a,this.getPrecomputes(a,n,t),e,r)},setWindowSize(n,e){Ne(e,v),Se.set(n,e),Te.delete(n)}});var y,v;return{CURVE:e,ProjectivePoint:f,normPrivateKeyToScalar:u,weierstrassEquation:i,isWithinCurveOrder:function(n){return gn(n,Me,e.n)}}}function Ke(n){const e=function(n){const e=Oe(n);return kn(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 Tn(n,r)}function l(n){return Bn(n,r)}const{ProjectivePoint:u,normPrivateKeyToScalar:d,weierstrassEquation:h,isWithinCurveOrder:p}=He({...e,toBytes(n,e,r){const a=e.toAffine(),o=t.toBytes(a.x),i=pn;return Q("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=cn(a);if(!gn(n,Me,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&Me)===Me)&&(o=t.neg(o)),{x:n,y:o}}}});function f(n){return n>r>>Me}const g=(n,e,t)=>cn(n.slice(e,t));class m{constructor(n,e,t){mn("r",n,Me,r),mn("s",e,Me,r),this.r=n,this.s=e,null!=t&&(this.recovery=t),Object.freeze(this)}static fromCompact(n){const e=a;return n=hn("compactSignature",n,2*e),new m(g(n,0,e),g(n,e,2*e))}static fromDER(n){const{r:e,s:t}=Le.toSig(hn("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(hn("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+je(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 sn(this.toDERHex())}toDERHex(){return Le.hexFromSig(this)}toCompactRawBytes(){return sn(this.toCompactHex())}toCompactHex(){const n=a;return je(this.r,n)+je(this.s,n)}}const b={isValidPrivateKey(n){try{return d(n),!0}catch(n){return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{const n=qn(e.n);return function(n,e,t=!1){const r=n.length,a=Gn(e),o=qn(e);if(r<16||r<o||r>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+r);const i=Tn(t?ln(n):cn(n),e-xn)+xn;return t?dn(i,a):un(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=hn("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=cn(n),t=8*n.length-o;return t>0?e>>BigInt(t):e},w=e.bits2int_modN||function(n){return c(v(n))},k=bn(o);function A(n){return mn("num < 2^"+o,n,De,k),un(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=hn("msgHash",n),Ue(a),h&&(n=hn("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(hn("extraEntropy",n))}const E=pn(...k),I=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===De)return;const o=c(t*c(I+a*y));if(o===De)return;let i=(r.x===a?0:2)|Number(r.y&Me),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},I={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=yn(n),a=yn(n),o=0;const i=()=>{r.fill(1),a.fill(0),o=0},s=(...n)=>t(a,r,...n),c=(n=yn(0))=>{a=s(vn([0]),n),r=s(),0!==n.length&&(a=s(vn([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 pn(...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=I){const o=n;t=hn("msgHash",t),r=hn("publicKey",r);const{lowS:i,prehash:s,format:d}=a;if(Ue(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||V(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 Le.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 Ve(n){return{hash:n,hmac:(e,...t)=>Ee(n,e,D(...t)),randomBytes:q}}const _e=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Qe=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Je=BigInt(0),$e=BigInt(1),We=BigInt(2),Ze=(n,e)=>(n+e/We)/e;const Ye=Mn(_e,void 0,void 0,{sqrt:function(n){const e=_e,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=Sn(u,t,e)*u%e,h=Sn(d,t,e)*u%e,p=Sn(h,We,e)*l%e,f=Sn(p,a,e)*p%e,g=Sn(f,o,e)*f%e,m=Sn(g,s,e)*g%e,b=Sn(m,c,e)*m%e,y=Sn(b,s,e)*g%e,v=Sn(y,t,e)*u%e,w=Sn(v,i,e)*f%e,k=Sn(w,r,e)*l%e,A=Sn(k,We,e);if(!Ye.eql(Ye.sqr(A),n))throw new Error("Cannot find square root");return A}}),Xe=function(n,e){const t=e=>Ke({...n,...Ve(e)});return{...t(e),create:t}}({a:Je,b:BigInt(7),Fp:Ye,n:Qe,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=Qe,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-$e*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),s=Ze(o*n,e),c=Ze(-r*n,e);let l=Tn(n-s*t-c*a,e),u=Tn(-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}}}},we),nt=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),et=(()=>Uint8Array.from(new Array(16).fill(0).map((n,e)=>e)))(),tt=(()=>et.map(n=>(9*n+5)%16))(),rt=(()=>{const n=[[et],[tt]];for(let e=0;e<4;e++)for(let t of n)t.push(t[e].map(n=>nt[n]));return n})(),at=(()=>rt[0])(),ot=(()=>rt[1])(),it=[[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)),st=at.map((n,e)=>n.map(n=>it[e][n])),ct=ot.map((n,e)=>n.map(n=>it[e][n])),lt=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),ut=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);function dt(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 ht=new Uint32Array(16);class pt extends Vn{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)ht[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=lt[n],p=ut[n],f=at[n],g=ot[n],m=st[n],b=ct[n];for(let e=0;e<16;e++){const r=x(t+dt(n,a,i,c)+ht[f[e]]+h,m[e])+u|0;t=u,u=c,c=0|x(i,10),i=a,a=r}for(let n=0;n<16;n++){const t=x(r+dt(e,o,s,l)+ht[g[n]]+p,b[n])+d|0;r=d,d=l,l=0|x(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(){k(ht)}destroy(){this.destroyed=!0,k(this.buffer),this.set(0,0,0,0,0)}}const ft=G(()=>new pt);
3
- /*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function gt(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name}function mt(n,e){return!!Array.isArray(e)&&(0===e.length||(n?e.every(n=>"string"==typeof n):e.every(n=>Number.isSafeInteger(n))))}function bt(n){if("function"!=typeof n)throw new Error("function expected");return!0}function yt(n,e){if("string"!=typeof e)throw new Error(`${n}: string expected`);return!0}function vt(n){if(!Number.isSafeInteger(n))throw new Error(`invalid integer: ${n}`)}function wt(n){if(!Array.isArray(n))throw new Error("array expected")}function kt(n,e){if(!mt(!0,e))throw new Error(`${n}: array of strings expected`)}function At(n,e){if(!mt(!1,e))throw new Error(`${n}: array of numbers expected`)}function Et(...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 xt(n){const e="string"==typeof n?n.split(""):n,t=e.length;kt("alphabet",e);const r=new Map(e.map((n,e)=>[n,e]));return{encode:r=>(wt(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=>(wt(e),e.map(e=>{yt("alphabet.decode",e);const t=r.get(e);if(void 0===t)throw new Error(`Unknown letter: "${e}". Allowed: ${n}`);return t}))}}function It(n=""){return yt("join",n),{encode:e=>(kt("join.decode",e),e.join(n)),decode:e=>(yt("join.decode",e),e.split(n))}}function Pt(n,e="="){return vt(n),yt("padding",e),{encode(t){for(kt("padding.encode",t);t.length*n%8;)t.push(e);return t},decode(t){kt("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 Nt(n){return bt(n),{encode:n=>n,decode:e=>n(e)}}function zt(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(wt(n),!n.length)return[];let r=0;const a=[],o=Array.from(n,n=>{if(vt(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 Rt=(n,e)=>0===e?n:Rt(e,n%e),Tt=(n,e)=>n+(e-Rt(n,e)),St=(()=>{let n=[];for(let e=0;e<40;e++)n.push(2**e);return n})();function Bt(n,e,t,r){if(wt(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(Tt(e,t)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${t} carryBits=${Tt(e,t)}`);let a=0,o=0;const i=St[e],s=St[t]-1,c=[];for(const r of n){if(vt(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=St[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 Ct(n){vt(n);return{encode:e=>{if(!gt(e))throw new Error("radix.encode input should be Uint8Array");return zt(Array.from(e),256,n)},decode:e=>(At("radix.decode",e),Uint8Array.from(zt(e,n,256)))}}function Ot(n,e=!1){if(vt(n),n<=0||n>32)throw new Error("radix2: bits should be in (0..32]");if(Tt(8,n)>32||Tt(n,8)>32)throw new Error("radix2: carry overflow");return{encode:t=>{if(!gt(t))throw new Error("radix2.encode input should be Uint8Array");return Bt(Array.from(t),8,n,!e)},decode:t=>(At("radix2.decode",t),Uint8Array.from(Bt(t,n,8,e)))}}function Ut(n){return bt(n),function(...e){try{return n.apply(null,e)}catch(n){}}}function Ft(n,e){return vt(n),bt(e),{encode(t){if(!gt(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(!gt(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 Lt={alphabet:xt,chain:Et,checksum:Ft,convertRadix:zt,convertRadix2:Bt,radix:Ct,radix2:Ot,join:It,padding:Pt};Et(Ot(4),xt("0123456789ABCDEF"),It("")),Et(Ot(5),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),Pt(5),It("")),Et(Ot(5),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),It("")),Et(Ot(5),xt("0123456789ABCDEFGHIJKLMNOPQRSTUV"),Pt(5),It("")),Et(Ot(5),xt("0123456789ABCDEFGHIJKLMNOPQRSTUV"),It("")),Et(Ot(5),xt("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),It(""),Nt(n=>n.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1")));const jt=(()=>"function"==typeof Uint8Array.from([]).toBase64&&"function"==typeof Uint8Array.fromBase64)();jt||Et(Ot(6),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Pt(6),It("")),Et(Ot(6),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),It("")),jt||Et(Ot(6),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),Pt(6),It("")),Et(Ot(6),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),It(""));const Dt=n=>Et(Ct(58),xt(n),It("")),Mt=Dt("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");Dt("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"),Dt("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");const Gt=Et(xt("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),It("")),qt=[996825010,642813549,513874426,1027748829,705979059];function Ht(n){const e=n>>25;let t=(33554431&n)<<5;for(let n=0;n<qt.length;n++)1==(e>>n&1)&&(t^=qt[n]);return t}function Kt(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=Ht(a)^t>>5}a=Ht(a);for(let e=0;e<r;e++)a=Ht(a)^31&n.charCodeAt(e);for(let n of e)a=Ht(a)^n;for(let n=0;n<6;n++)a=Ht(a);return a^=t,Gt.encode(Bt([a%St[30]],30,5,!1))}function Vt(n){const e="bech32"===n?1:734539939,t=Ot(5),r=t.decode,a=t.encode,o=Ut(r);function i(n,t,r=90){yt("bech32.encode prefix",n),gt(t)&&(t=Array.from(t)),At("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=Kt(i,t,e);return`${i}1${Gt.encode(t)}${s}`}function s(n,t=90){yt("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=Gt.decode(s).slice(0,-6),l=Kt(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:Ut(s),fromWords:r,fromWordsUnsafe:o,toWords:a}}Vt("bech32"),Vt("bech32m");(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)()||Et(Ot(4),xt("0123456789abcdef"),It(""),Nt(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 _t=Xe.ProjectivePoint,Qt=(n=>Et(Ft(4,e=>n(n(e))),Mt))(we);function Jt(n){b(n);const e=0===n.length?"0":function(n){if(b(n),N)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=z[n[t]];return e}(n);return BigInt("0x"+e)}function $t(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(N)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=U(n.charCodeAt(a)),o=U(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 Wt=F("Bitcoin seed"),Zt={private:76066276,public:76067358},Yt=2147483648,Xt=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 A(e).setUint32(0,n,!1),e};class nr{get fingerprint(){if(!this.pubHash)throw new Error("No publicKey set!");return A(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 Qt.encode(this.serialize(this.versions.private,D(new Uint8Array([0]),n)))}get publicExtendedKey(){if(!this.pubKey)throw new Error("No public key");return Qt.encode(this.serialize(this.versions.public,this.pubKey))}static fromMasterSeed(n,e=Zt){if(b(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=Ee(ke,Wt,n);return new nr({versions:e,chainCode:t.slice(32),privateKey:t.slice(0,32)})}static fromExtendedKey(n,e=Zt){const t=Qt.decode(n),r=A(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 nr(s?{...o,privateKey:i.slice(1)}:{...o,publicKey:i})}static fromJSON(n){return nr.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||Zt,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(!Xe.utils.isValidPrivateKey(n.privateKey))throw new Error("Invalid private key");this.privKey="bigint"==typeof n.privateKey?n.privateKey:Jt(n.privateKey),this.privKeyBytes=$t(this.privKey),this.pubKey=Xe.getPublicKey(n.privateKey,!0)}else{if(!n.publicKey)throw new Error("HDKey: no public or private key provided");this.pubKey=_t.fromHex(n.publicKey).toRawBytes(!0)}var e;this.pubHash=(e=this.pubKey,ft(we(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>=Yt)throw new Error("Invalid index");"'"===e[2]&&(a+=Yt),t=t.deriveChild(a)}return t}deriveChild(n){if(!this.pubKey||!this.chainCode)throw new Error("No publicKey or chainCode set");let e=Xt(n);if(n>=Yt){const n=this.privateKey;if(!n)throw new Error("Could not derive hardened child key");e=D(new Uint8Array([0]),n,e)}else e=D(this.pubKey,e);const t=Ee(ke,this.chainCode,e),r=Jt(t.slice(0,32)),a=t.slice(32);if(!Xe.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=Tn(this.privKey+r,Xe.CURVE.n);if(!Xe.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=_t.fromHex(this.pubKey).add(_t.fromPrivateKey(r));if(n.equals(_t.ZERO))throw new Error("The tweak was equal to negative P, which made the result key invalid");o.publicKey=n.toRawBytes(!0)}return new nr(o)}catch(e){return this.deriveChild(n+1)}}sign(n){if(!this.privateKey)throw new Error("No privateKey set!");return b(n,32),Xe.sign(n,this.privKey).toCompactRawBytes()}verify(n,e){if(b(n,32),b(e,64),!this.publicKey)throw new Error("No publicKey set!");let t;try{t=Xe.Signature.fromCompact(e)}catch(n){return!1}return Xe.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 b(e,33),D(Xt(n),new Uint8Array([this.depth]),Xt(this.parentFingerprint),Xt(this.index),this.chainCode,e)}}const er="2.43.4";let tr=({docsBaseUrl:n,docsPath:e="",docsSlug:t})=>e?`${n??"https://viem.sh"}${e}${t?`#${t}`:""}`:void 0,rr=`viem@${er}`;class ar extends Error{constructor(n,e={}){const t=e.cause instanceof ar?e.cause.details:e.cause?.message?e.cause.message:e.details,r=e.cause instanceof ar&&e.cause.docsPath||e.docsPath,a=tr?.({...e,docsPath:r});super([n||"An error occurred.","",...e.metaMessages?[...e.metaMessages,""]:[],...a?[`Docs: ${a}`]:[],...t?[`Details: ${t}`]:[],...rr?[`Version: ${rr}`]:[]].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=er}walk(n){return or(this,n)}}function or(n,e){return e?.(n)?n:n&&"object"==typeof n&&"cause"in n&&void 0!==n.cause?or(n.cause,e):e?null:n}class ir extends ar{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 sr extends ar{constructor({givenSize:n,maxSize:e}){super(`Size cannot exceed ${e} bytes. Given size: ${n} bytes.`,{name:"SizeOverflowError"})}}function cr(n,{strict:e=!0}={}){return!!n&&("string"==typeof n&&(e?/^0x[0-9a-fA-F]*$/.test(n):n.startsWith("0x")))}function lr(n){return cr(n,{strict:!1})?Math.ceil((n.length-2)/2):n.length}function ur(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 dr extends ar{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 hr extends ar{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 pr(n,{dir:e,size:t=32}={}){return"string"==typeof n?fr(n,{dir:e,size:t}):function(n,{dir:e,size:t=32}={}){if(null===t)return n;if(n.length>t)throw new hr({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 fr(n,{dir:e,size:t=32}={}){if(null===t)return n;const r=n.replace("0x","");if(r.length>2*t)throw new hr({size:Math.ceil(r.length/2),targetSize:t,type:"hex"});return`0x${r["right"===e?"padEnd":"padStart"](2*t,"0")}`}const gr=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function mr(n,e={}){return"number"==typeof n||"bigint"==typeof n?vr(n,e):"string"==typeof n?kr(n,e):"boolean"==typeof n?br(n,e):yr(n,e)}function br(n,e={}){const t=`0x${Number(n)}`;return"number"==typeof e.size?(zr(t,{size:e.size}),pr(t,{size:e.size})):t}function yr(n,e={}){let t="";for(let e=0;e<n.length;e++)t+=gr[n[e]];const r=`0x${t}`;return"number"==typeof e.size?(zr(r,{size:e.size}),pr(r,{dir:"right",size:e.size})):r}function vr(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 ir({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?pr(s,{size:r}):s}const wr=new TextEncoder;function kr(n,e={}){return yr(wr.encode(n),e)}const Ar=new TextEncoder;function Er(n,e={}){return"number"==typeof n||"bigint"==typeof n?function(n,e){const t=vr(n,e);return Pr(t)}(n,e):"boolean"==typeof n?function(n,e={}){const t=new Uint8Array(1);if(t[0]=Number(n),"number"==typeof e.size)return zr(t,{size:e.size}),pr(t,{size:e.size});return t}(n,e):cr(n)?Pr(n,e):Nr(n,e)}const xr={zero:48,nine:57,A:65,F:70,a:97,f:102};function Ir(n){return n>=xr.zero&&n<=xr.nine?n-xr.zero:n>=xr.A&&n<=xr.F?n-(xr.A-10):n>=xr.a&&n<=xr.f?n-(xr.a-10):void 0}function Pr(n,e={}){let t=n;e.size&&(zr(t,{size:e.size}),t=pr(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=Ir(r.charCodeAt(e++)),a=Ir(r.charCodeAt(e++));if(void 0===t||void 0===a)throw new ar(`Invalid byte sequence ("${r[e-2]}${r[e-1]}" in "${r}").`);o[n]=16*t+a}return o}function Nr(n,e={}){const t=Ar.encode(n);return"number"==typeof e.size?(zr(t,{size:e.size}),pr(t,{dir:"right",size:e.size})):t}function zr(n,{size:e}){if(lr(n)>e)throw new sr({givenSize:lr(n),maxSize:e})}function Rr(n,e={}){const{signed:t}=e;e.size&&zr(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 Tr(n,e={}){return Number(Rr(n,e))}class Sr 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 Br(n){const{source:e}=n,t=new Map,r=new Sr(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 Cr=Br({source:{async get(n){const{address:e,client:t}=n;return async function(n,{address:e,blockTag:t="latest",blockNumber:r}){return Tr(await n.request({method:"eth_getTransactionCount",params:[e,"bigint"==typeof r?vr(r):t]},{dedupe:Boolean(r)}))}(t,{address:e,blockTag:"pending"})},set(){}}});function Or({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 Xe.Signature(Rr(n),Rr(e)).toCompactHex()}${0===o?"1b":"1c"}`;return"hex"===t?i:Pr(i)}function Ur(n,e,t,r){y(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(m(o),m(i),m(s),o<1)throw new Error("iterations (c) should be >= 1");const c=j(e),l=j(t),u=new Uint8Array(i),d=Ee.create(n,c),h=d._cloneInto().update(l);return{c:o,dkLen:i,asyncTick:s,DK:u,PRF:d,PRFSalt:h}}function Fr(n,e,t,r){const{c:a,dkLen:o,DK:i,PRF:s,PRFSalt:c}=Ur(n,e,t,r);let l;const u=new Uint8Array(4),d=A(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(),k(a),t}(s,c,i,l,h)}function Lr(n){if("string"!=typeof n)throw new TypeError("invalid mnemonic type: "+typeof n);return n.normalize("NFKD")}function jr(n,e=128){if(m(e),e%32!=0||e>256)throw new TypeError("Invalid entropy");return function(n,e){t=n,b(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)}),Lt.chain(Lt.checksum(1,Dr),Lt.radix2(11,!0),Lt.alphabet(n))}(e).encode(n);return r.join((n=>"あいこくしん"===n[0])(e)?" ":" ")}(q(e/8),n)}const Dr=n=>{const e=8-n.length/4;return new Uint8Array([we(n)[0]>>e<<e])};function Mr(n,e=""){return Fr(ke,function(n){const e=Lr(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=>Lr("mnemonic"+n))(e),{c:2048,dkLen:64})}class Gr extends ar{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 qr=BigInt(0),Hr=BigInt(1),Kr=BigInt(2),Vr=BigInt(7),_r=BigInt(256),Qr=BigInt(113),Jr=[],$r=[],Wr=[];for(let n=0,e=Hr,t=1,r=0;n<24;n++){[t,r]=[r,(2*t+3*r)%5],Jr.push(2*(5*r+t)),$r.push((n+1)*(n+2)/2%64);let a=qr;for(let n=0;n<7;n++)e=(e<<Hr^(e>>Vr)*Qr)%_r,e&Kr&&(a^=Hr<<(Hr<<BigInt(n))-Hr);Wr.push(a)}const Zr=Zn(Wr,!0),Yr=Zr[0],Xr=Zr[1],na=(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),ea=(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 ta extends M{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,m(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(){P(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=na(o,i,1)^t[r],c=ea(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=$r[t],o=na(e,a,r),i=ea(e,a,r),s=Jr[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]^=Yr[r],n[1]^=Xr[r]}k(t)}(this.state32,this.rounds),P(this.state32),this.posOut=0,this.pos=0}update(n){v(this),b(n=L(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){v(this,!1),b(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 m(n),this.xofInto(new Uint8Array(n))}digestInto(n){if(w(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,k(this.state)}_cloneInto(n){const{blockLen:e,suffix:t,outputLen:r,rounds:a,enableXOF:o}=this;return n||(n=new ta(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 ra=(()=>{return n=1,e=136,t=32,G(()=>new ta(e,n,t));var n,e,t})();function aa(n,e){const t=e||"hex",r=ra(cr(n,{strict:!1})?Er(n):n);return"bytes"===t?r:mr(r)}const oa=new Sr(8192);function ia(n,e){if(oa.has(`${n}.${e}`))return oa.get(`${n}.${e}`);const t=e?`${e}${n.toLowerCase()}`:n.substring(2).toLowerCase(),r=aa(Nr(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 oa.set(`${n}.${e}`,o),o}const sa=/^0x[a-fA-F0-9]{40}$/,ca=new Sr(8192);function la(n,e){const{strict:t=!0}=e??{},r=`${n}.${t}`;if(ca.has(r))return ca.get(r);const a=!(!sa.test(n)||n.toLowerCase()!==n&&t&&ia(n)!==n);return ca.set(r,a),a}function ua(n){if("string"==typeof n){if(!la(n,{strict:!1}))throw new Gr({address:n});return{address:n,type:"json-rpc"}}if(!la(n.address,{strict:!1}))throw new Gr({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 da(n){return ia(`0x${aa(`0x${n.substring(4)}`).substring(26)}`)}let ha=!1;async function pa({hash:n,privateKey:e,to:t="object"}){const{r:r,s:a,recovery:o}=Xe.sign(n.slice(2),e.slice(2),{lowS:!0,extraEntropy:cr(ha,{strict:!1})?Pr(ha):ha}),i={r:vr(r,{size:32}),s:vr(a,{size:32}),v:o?28n:27n,yParity:o};return"bytes"===t||"hex"===t?Or({...i,to:t}):i}function fa(n){return"string"==typeof n[0]?ga(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 ga(n){return`0x${n.reduce((n,e)=>n+e.replace("0x",""),"")}`}class ma extends ar{constructor({offset:n}){super(`Offset \`${n}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class ba extends ar{constructor({length:n,position:e}){super(`Position \`${e}\` is out of bounds (\`0 < position < ${n}\`).`,{name:"PositionOutOfBoundsError"})}}class ya extends ar{constructor({count:n,limit:e}){super(`Recursive read limit of \`${e}\` exceeded (recursive read count: \`${n}\`).`,{name:"RecursiveReadLimitExceededError"})}}const va={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 ya({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(n){if(n<0||n>this.bytes.length-1)throw new ba({length:this.bytes.length,position:n})},decrementPosition(n){if(n<0)throw new ma({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 ma({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 wa(n,{recursiveReadLimit:e=8192}={}){const t=Object.create(va);return t.bytes=n,t.dataView=new DataView(n.buffer??n,n.byteOffset,n.byteLength),t.positionReadCount=new Map,t.recursiveReadLimit=e,t}function ka(n,e="hex"){const t=Aa(n),r=wa(new Uint8Array(t.length));return t.encode(r),"hex"===e?yr(r.bytes):r.bytes}function Aa(n){return Array.isArray(n)?function(n){const e=n.reduce((n,e)=>n+e.length,0),t=Ea(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=>Aa(n))):function(n){const e="string"==typeof n?Pr(n):n,t=Ea(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 Ea(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 ar("Length is too large.")}function xa(n){const{chainId:e,nonce:t,to:r}=n,a=n.contractAddress??n.address,o=aa(ga(["0x05",ka([e?vr(e):"0x",a,t?vr(t):"0x"])]));return"bytes"===r?Pr(o):o}async function Ia(n){const{chainId:e,nonce:t,privateKey:r,to:a="object"}=n,o=n.contractAddress??n.address,i=await pa({hash:xa({address:o,chainId:e,nonce:t}),privateKey:r,to:a});return"object"===a?{address:o,chainId:e,nonce:t,...i}:i}function Pa(n,e){return aa(function(n){const e="string"==typeof n?kr(n):"string"==typeof n.raw?n.raw:yr(n.raw);return fa([kr(`Ethereum Signed Message:\n${lr(e)}`),e])}(n),e)}async function Na({message:n,privateKey:e}){return await pa({hash:Pa(n),privateKey:e,to:"hex"})}const za={ether:-9,wei:9};function Ra(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,za[e])}function Ta(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 Sa extends ar{constructor({v:n}){super(`Invalid \`v\` value "${n}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class Ba extends ar{constructor({transaction:n}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",Ta(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 Ca extends ar{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 Oa(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=>Pr(n)):n.blobs,a=[];for(const n of r)a.push(Uint8Array.from(e.blobToKzgCommitment(n)));return"bytes"===t?a:a.map(n=>yr(n))}function Ua(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=>Pr(n)):n.blobs,a="string"==typeof n.commitments[0]?n.commitments.map(n=>Pr(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=>yr(n))}const Fa=we;function La(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=Fa(cr(n,{strict:!1})?Er(n):n);return"bytes"===t?r:mr(r)}(e,"bytes");return a.set([t],0),"bytes"===r?a:yr(a)}const ja=4096,Da=131072,Ma=761855;class Ga extends ar{constructor({maxSize:n,size:e}){super("Blob size is too large.",{metaMessages:[`Max: ${n} bytes`,`Given: ${e} bytes`],name:"BlobSizeTooLargeError"})}}class qa extends ar{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class Ha extends ar{constructor({hash:n,size:e}){super(`Versioned hash "${n}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${e}`],name:"InvalidVersionedHashSizeError"})}}class Ka extends ar{constructor({hash:n,version:e}){super(`Versioned hash "${n}" version is invalid.`,{metaMessages:["Expected: 1",`Received: ${e}`],name:"InvalidVersionedHashVersionError"})}}function Va(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?Pr(n.data):n.data,r=lr(t);if(!r)throw new qa;if(r>Ma)throw new Ga({maxSize:Ma,size:r});const a=[];let o=!0,i=0;for(;o;){const n=wa(new Uint8Array(Da));let e=0;for(;e<ja;){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=>yr(n.bytes))}({data:e,to:r}),o=n.commitments??Oa({blobs:a,kzg:t,to:r}),i=n.proofs??Ua({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 _a=2n**256n-1n;class Qa extends ar{constructor({chainId:n}){super("number"==typeof n?`Chain ID "${n}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class Ja extends ar{constructor({cause:n,maxFeePerGas:e}={}){super(`The fee cap (\`maxFeePerGas\`${e?` = ${Ra(e)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:n,name:"FeeCapTooHighError"})}}Object.defineProperty(Ja,"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 $a extends ar{constructor({cause:n,maxPriorityFeePerGas:e,maxFeePerGas:t}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${e?` = ${Ra(e)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${t?` = ${Ra(t)} gwei`:""}).`].join("\n"),{cause:n,name:"TipAboveFeeCapError"})}}function Wa(n,e,t,{strict:r}={}){return cr(n,{strict:!1})?function(n,e,t,{strict:r}={}){Za(n,e);const a=`0x${n.replace("0x","").slice(2*(e??0),2*(t??n.length))}`;r&&Ya(a,e,t);return a}(n,e,t,{strict:r}):function(n,e,t,{strict:r}={}){Za(n,e);const a=n.slice(e,t);r&&Ya(a,e,t);return a}(n,e,t,{strict:r})}function Za(n,e){if("number"==typeof e&&e>0&&e>lr(n)-1)throw new dr({offset:e,position:"start",size:lr(n)})}function Ya(n,e,t){if("number"==typeof e&&"number"==typeof t&&lr(n)!==t-e)throw new dr({offset:t,position:"end",size:lr(n)})}function Xa(n){const{chainId:e,maxPriorityFeePerGas:t,maxFeePerGas:r,to:a}=n;if(e<=0)throw new Qa({chainId:e});if(a&&!la(a))throw new Gr({address:a});if(r&&r>_a)throw new Ja({maxFeePerGas:r});if(t&&r&&t>r)throw new $a({maxFeePerGas:r,maxPriorityFeePerGas:t})}function no(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 Ca({storageKey:a[n]});if(!la(r,{strict:!1}))throw new Gr({address:r});e.push([r,a])}return e}function eo(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 Ba({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;Xa(n);const d=no(l),h=[vr(t),a?vr(a):"0x",c?vr(c):"0x",s?vr(s):"0x",r?vr(r):"0x",o??"0x",i?vr(i):"0x",u??"0x",d,...to(n,e)];return ga(["0x02",ka(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 Qa({chainId:e});if(o&&!la(o))throw new Gr({address:o});if(t||a)throw new ar("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(r&&r>_a)throw new Ja({maxFeePerGas:r})}(n);const u=no(c),d=[vr(t),o?vr(o):"0x",l?vr(l):"0x",r?vr(r):"0x",i??"0x",s?vr(s):"0x",a??"0x",u,...to(n,e)];return ga(["0x01",ka(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 qa;for(const n of e){const e=lr(n),t=Tr(Wa(n,0,1));if(32!==e)throw new Ha({hash:n,size:e});if(1!==t)throw new Ka({hash:n,version:t})}}Xa(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=>yr(n)),t=n.kzg,r=Oa({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(La({commitment:n,to:r,version:t}));return a}({commitments:r})),void 0===p){p=Va({blobs:e,commitments:r,proofs:Ua({blobs:e,commitments:r,kzg:t})})}}const f=no(u),g=[vr(t),a?vr(a):"0x",l?vr(l):"0x",c?vr(c):"0x",r?vr(r):"0x",o??"0x",i?vr(i):"0x",d??"0x",f,s?vr(s):"0x",h??[],...to(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 ga(["0x03",ka(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(!la(t))throw new Gr({address:t});if(e<0)throw new Qa({chainId:e})}Xa(n)}(n);const h=no(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?mr(n):"0x",o,r?mr(r):"0x",...to({},a)])}return e}(t);return ga(["0x04",ka([vr(r),o?vr(o):"0x",l?vr(l):"0x",c?vr(c):"0x",a?vr(a):"0x",i??"0x",s?vr(s):"0x",d??"0x",h,p,...to(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&&!la(o))throw new Gr({address:o});if(void 0!==e&&e<=0)throw new Qa({chainId:e});if(t||a)throw new ar("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(r&&r>_a)throw new Ja({maxFeePerGas:r})}(n);let l=[o?vr(o):"0x",c?vr(c):"0x",r?vr(r):"0x",i??"0x",s?vr(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 Sa({v:e.v});return n})(),r=ur(e.r),a=ur(e.s);l=[...l,vr(n),"0x00"===r?"0x":r,"0x00"===a?"0x":a]}else t>0&&(l=[...l,vr(t),"0x","0x"]);return ka(l)}(n,e)}function to(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=ur(t.r),i=ur(t.s);return["number"==typeof a?a?vr(1):"0x":0n===r?"0x":1n===r?vr(1):27n===r?"0x":vr(1),"0x00"===o?"0x":o,"0x00"===i?"0x":i]}async function ro(n){const{privateKey:e,transaction:t,serializer:r=eo}=n,a="eip4844"===t.type?{...t,sidecars:!1}:t,o=await pa({hash:aa(await r(a)),privateKey:e});return await r(t,o)}Object.defineProperty($a,"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 ao extends ar{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 oo extends ar{constructor({expectedSize:n,value:e}){super(`Size of bytes "${e}" (bytes${lr(e)}) does not match expected size (bytes${n}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class io extends ar{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 so extends ar{constructor({expectedSize:n,givenSize:e}){super(`Expected bytes${n}, got bytes${e}.`,{name:"BytesSizeMismatchError"})}}class co extends ar{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 lo extends ar{constructor(n){super([`Value "${n}" is not a valid array.`].join("\n"),{name:"InvalidArrayError"})}}const uo=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,ho=/^(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 po(n,e){if(n.length!==e.length)throw new io({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(fo({param:n[r],value:e[r]}));return t}({params:n,values:e}),r=go(t);return 0===r.length?"0x":r}function fo({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 lo(n);if(!r&&n.length!==e)throw new ao({expectedLength:e,givenLength:n.length,type:`${t.type}[${e}]`});let a=!1;const o=[];for(let e=0;e<n.length;e++){const r=fo({param:t,value:n[e]});r.dynamic&&(a=!0),o.push(r)}if(r||a){const n=go(o);if(r){const e=vr(o.length,{size:32});return{dynamic:!0,encoded:o.length>0?fa([e,n]):e}}if(a)return{dynamic:!0,encoded:n}}return{dynamic:!1,encoded:fa(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=fo({param:o,value:n[Array.isArray(n)?a:o.name]});r.push(i),i.dynamic&&(t=!0)}return{dynamic:t,encoded:t?go(r):fa(r.map(({encoded:n})=>n))}}(e,{param:n});if("address"===n.type)return function(n){if(!la(n))throw new Gr({address:n});return{dynamic:!1,encoded:fr(n.toLowerCase())}}(e);if("bool"===n.type)return function(n){if("boolean"!=typeof n)throw new ar(`Invalid boolean value: "${n}" (type: ${typeof n}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:fr(br(n))}}(e);if(n.type.startsWith("uint")||n.type.startsWith("int")){const t=n.type.startsWith("int"),[,,r="256"]=ho.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 ir({max:r.toString(),min:a.toString(),signed:e,size:t/8,value:n.toString()})}return{dynamic:!1,encoded:vr(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=lr(n);if(!t){let e=n;return r%32!=0&&(e=fr(e,{dir:"right",size:32*Math.ceil((n.length-2)/2/32)})),{dynamic:!0,encoded:fa([fr(vr(r,{size:32})),e])}}if(r!==Number.parseInt(t,10))throw new oo({expectedSize:Number.parseInt(t,10),value:n});return{dynamic:!1,encoded:fr(n,{dir:"right"})}}(e,{param:n});if("string"===n.type)return function(n){const e=kr(n),t=Math.ceil(lr(e)/32),r=[];for(let n=0;n<t;n++)r.push(fr(Wa(e,32*n,32*(n+1)),{dir:"right"}));return{dynamic:!0,encoded:fa([fr(vr(lr(e),{size:32})),...r])}}(e);throw new co(n.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function go(n){let e=0;for(let t=0;t<n.length;t++){const{dynamic:r,encoded:a}=n[t];e+=r?32:lr(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(vr(e+a,{size:32})),r.push(s),a+=lr(s)):t.push(s)}return fa([...t,...r])}class mo extends ar{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 bo extends ar{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 yo extends ar{constructor({type:n}){super(`Struct type "${n}" is invalid.`,{metaMessages:["Struct type must not be a Solidity type."],name:"InvalidStructTypeError"})}}function vo({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 wo(n){if("address"===n||"bool"===n||"string"===n||n.startsWith("bytes")||n.startsWith("uint")||n.startsWith("int"))throw new yo({type:n})}function ko(n){const{domain:e={},message:t,primaryType:r}=n,a={EIP712Domain:vo({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(ho);if(s&&("number"==typeof i||"bigint"==typeof i)){const[n,e,t]=s;vr(i,{signed:"int"===e,size:Number.parseInt(t,10)/8})}if("address"===r&&"string"==typeof i&&!la(i))throw new Gr({address:i});const c=r.match(uo);if(c){const[n,e]=c;if(e&&lr(i)!==Number.parseInt(e,10))throw new so({expectedSize:Number.parseInt(e,10),givenSize:lr(i)})}const l=a[r];l&&(wo(r),o(l,i))}};if(a.EIP712Domain&&e){if("object"!=typeof e)throw new mo({domain:e});o(a.EIP712Domain,e)}if("EIP712Domain"!==r){if(!a[r])throw new bo({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 Ao({data:n,primaryType:"EIP712Domain",types:e})}({domain:e,types:a})),"EIP712Domain"!==r&&o.push(Ao({data:t,primaryType:r,types:a})),aa(fa(o))}function Ao({data:n,primaryType:e,types:t}){return aa(Eo({data:n,primaryType:e,types:t}))}function Eo({data:n,primaryType:e,types:t}){const r=[{type:"bytes32"}],a=[xo({primaryType:e,types:t})];for(const o of t[e]){const[e,i]=Po({types:t,name:o.name,type:o.type,value:n[o.name]});r.push(e),a.push(i)}return po(r,a)}function xo({primaryType:n,types:e}){const t=mr(function({primaryType:n,types:e}){let t="";const r=Io({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 aa(t)}function Io({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])Io({primaryType:n.type,types:e},t);return t}function Po({types:n,name:e,type:t,value:r}){if(void 0!==n[t])return[{type:"bytes32"},aa(Eo({data:r,primaryType:t,types:n}))];if("bytes"===t)return[{type:"bytes32"},aa(r)];if("string"===t)return[{type:"bytes32"},aa(mr(r))];if(t.lastIndexOf("]")===t.length-1){const a=t.slice(0,t.lastIndexOf("[")),o=r.map(t=>Po({name:e,type:a,types:n,value:t}));return[{type:"bytes32"},aa(po(o.map(([n])=>n),o.map(([,n])=>n)))]}return[{type:t},r]}async function No(n){const{privateKey:e,...t}=n;return await pa({hash:ko(t),privateKey:e,to:"hex"})}function zo(n,e={}){const{nonceManager:t}=e,r=mr(Xe.getPublicKey(n.slice(2),!1)),a=ua({address:da(r),nonceManager:t,sign:async({hash:e})=>pa({hash:e,privateKey:n,to:"hex"}),signAuthorization:async e=>Ia({...e,privateKey:n}),signMessage:async({message:e})=>Na({message:e,privateKey:n}),signTransaction:async(e,{serializer:t}={})=>ro({privateKey:n,transaction:e,serializer:t}),signTypedData:async e=>No({...e,privateKey:n})});return{...a,publicKey:r,source:"privateKey"}}function Ro(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{...zo(mr(i.privateKey),o),getHdKey:()=>i,source:"hd"}}const To="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"),So="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"),Bo="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"),Co="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"),Oo="あいこくしん\nあいさつ\nあいだ\nあおぞら\nあかちゃん\nあきる\nあけがた\nあける\nあこがれる\nあさい\nあさひ\nあしあと\nあじわう\nあずかる\nあずき\nあそぶ\nあたえる\nあたためる\nあたりまえ\nあたる\nあつい\nあつかう\nあっしゅく\nあつまり\nあつめる\nあてな\nあてはまる\nあひる\nあぶら\nあぶる\nあふれる\nあまい\nあまど\nあまやかす\nあまり\nあみもの\nあめりか\nあやまる\nあゆむ\nあらいぐま\nあらし\nあらすじ\nあらためる\nあらゆる\nあらわす\nありがとう\nあわせる\nあわてる\nあんい\nあんがい\nあんこ\nあんぜん\nあんてい\nあんない\nあんまり\nいいだす\nいおん\nいがい\nいがく\nいきおい\nいきなり\nいきもの\nいきる\nいくじ\nいくぶん\nいけばな\nいけん\nいこう\nいこく\nいこつ\nいさましい\nいさん\nいしき\nいじゅう\nいじょう\nいじわる\nいずみ\nいずれ\nいせい\nいせえび\nいせかい\nいせき\nいぜん\nいそうろう\nいそがしい\nいだい\nいだく\nいたずら\nいたみ\nいたりあ\nいちおう\nいちじ\nいちど\nいちば\nいちぶ\nいちりゅう\nいつか\nいっしゅん\nいっせい\nいっそう\nいったん\nいっち\nいってい\nいっぽう\nいてざ\nいてん\nいどう\nいとこ\nいない\nいなか\nいねむり\nいのち\nいのる\nいはつ\nいばる\nいはん\nいびき\nいひん\nいふく\nいへん\nいほう\nいみん\nいもうと\nいもたれ\nいもり\nいやがる\nいやす\nいよかん\nいよく\nいらい\nいらすと\nいりぐち\nいりょう\nいれい\nいれもの\nいれる\nいろえんぴつ\nいわい\nいわう\nいわかん\nいわば\nいわゆる\nいんげんまめ\nいんさつ\nいんしょう\nいんよう\nうえき\nうえる\nうおざ\nうがい\nうかぶ\nうかべる\nうきわ\nうくらいな\nうくれれ\nうけたまわる\nうけつけ\nうけとる\nうけもつ\nうける\nうごかす\nうごく\nうこん\nうさぎ\nうしなう\nうしろがみ\nうすい\nうすぎ\nうすぐらい\nうすめる\nうせつ\nうちあわせ\nうちがわ\nうちき\nうちゅう\nうっかり\nうつくしい\nうったえる\nうつる\nうどん\nうなぎ\nうなじ\nうなずく\nうなる\nうねる\nうのう\nうぶげ\nうぶごえ\nうまれる\nうめる\nうもう\nうやまう\nうよく\nうらがえす\nうらぐち\nうらない\nうりあげ\nうりきれ\nうるさい\nうれしい\nうれゆき\nうれる\nうろこ\nうわき\nうわさ\nうんこう\nうんちん\nうんてん\nうんどう\nえいえん\nえいが\nえいきょう\nえいご\nえいせい\nえいぶん\nえいよう\nえいわ\nえおり\nえがお\nえがく\nえきたい\nえくせる\nえしゃく\nえすて\nえつらん\nえのぐ\nえほうまき\nえほん\nえまき\nえもじ\nえもの\nえらい\nえらぶ\nえりあ\nえんえん\nえんかい\nえんぎ\nえんげき\nえんしゅう\nえんぜつ\nえんそく\nえんちょう\nえんとつ\nおいかける\nおいこす\nおいしい\nおいつく\nおうえん\nおうさま\nおうじ\nおうせつ\nおうたい\nおうふく\nおうべい\nおうよう\nおえる\nおおい\nおおう\nおおどおり\nおおや\nおおよそ\nおかえり\nおかず\nおがむ\nおかわり\nおぎなう\nおきる\nおくさま\nおくじょう\nおくりがな\nおくる\nおくれる\nおこす\nおこなう\nおこる\nおさえる\nおさない\nおさめる\nおしいれ\nおしえる\nおじぎ\nおじさん\nおしゃれ\nおそらく\nおそわる\nおたがい\nおたく\nおだやか\nおちつく\nおっと\nおつり\nおでかけ\nおとしもの\nおとなしい\nおどり\nおどろかす\nおばさん\nおまいり\nおめでとう\nおもいで\nおもう\nおもたい\nおもちゃ\nおやつ\nおやゆび\nおよぼす\nおらんだ\nおろす\nおんがく\nおんけい\nおんしゃ\nおんせん\nおんだん\nおんちゅう\nおんどけい\nかあつ\nかいが\nがいき\nがいけん\nがいこう\nかいさつ\nかいしゃ\nかいすいよく\nかいぜん\nかいぞうど\nかいつう\nかいてん\nかいとう\nかいふく\nがいへき\nかいほう\nかいよう\nがいらい\nかいわ\nかえる\nかおり\nかかえる\nかがく\nかがし\nかがみ\nかくご\nかくとく\nかざる\nがぞう\nかたい\nかたち\nがちょう\nがっきゅう\nがっこう\nがっさん\nがっしょう\nかなざわし\nかのう\nがはく\nかぶか\nかほう\nかほご\nかまう\nかまぼこ\nかめれおん\nかゆい\nかようび\nからい\nかるい\nかろう\nかわく\nかわら\nがんか\nかんけい\nかんこう\nかんしゃ\nかんそう\nかんたん\nかんち\nがんばる\nきあい\nきあつ\nきいろ\nぎいん\nきうい\nきうん\nきえる\nきおう\nきおく\nきおち\nきおん\nきかい\nきかく\nきかんしゃ\nききて\nきくばり\nきくらげ\nきけんせい\nきこう\nきこえる\nきこく\nきさい\nきさく\nきさま\nきさらぎ\nぎじかがく\nぎしき\nぎじたいけん\nぎじにってい\nぎじゅつしゃ\nきすう\nきせい\nきせき\nきせつ\nきそう\nきぞく\nきぞん\nきたえる\nきちょう\nきつえん\nぎっちり\nきつつき\nきつね\nきてい\nきどう\nきどく\nきない\nきなが\nきなこ\nきぬごし\nきねん\nきのう\nきのした\nきはく\nきびしい\nきひん\nきふく\nきぶん\nきぼう\nきほん\nきまる\nきみつ\nきむずかしい\nきめる\nきもだめし\nきもち\nきもの\nきゃく\nきやく\nぎゅうにく\nきよう\nきょうりゅう\nきらい\nきらく\nきりん\nきれい\nきれつ\nきろく\nぎろん\nきわめる\nぎんいろ\nきんかくじ\nきんじょ\nきんようび\nぐあい\nくいず\nくうかん\nくうき\nくうぐん\nくうこう\nぐうせい\nくうそう\nぐうたら\nくうふく\nくうぼ\nくかん\nくきょう\nくげん\nぐこう\nくさい\nくさき\nくさばな\nくさる\nくしゃみ\nくしょう\nくすのき\nくすりゆび\nくせげ\nくせん\nぐたいてき\nくださる\nくたびれる\nくちこみ\nくちさき\nくつした\nぐっすり\nくつろぐ\nくとうてん\nくどく\nくなん\nくねくね\nくのう\nくふう\nくみあわせ\nくみたてる\nくめる\nくやくしょ\nくらす\nくらべる\nくるま\nくれる\nくろう\nくわしい\nぐんかん\nぐんしょく\nぐんたい\nぐんて\nけあな\nけいかく\nけいけん\nけいこ\nけいさつ\nげいじゅつ\nけいたい\nげいのうじん\nけいれき\nけいろ\nけおとす\nけおりもの\nげきか\nげきげん\nげきだん\nげきちん\nげきとつ\nげきは\nげきやく\nげこう\nげこくじょう\nげざい\nけさき\nげざん\nけしき\nけしごむ\nけしょう\nげすと\nけたば\nけちゃっぷ\nけちらす\nけつあつ\nけつい\nけつえき\nけっこん\nけつじょ\nけっせき\nけってい\nけつまつ\nげつようび\nげつれい\nけつろん\nげどく\nけとばす\nけとる\nけなげ\nけなす\nけなみ\nけぬき\nげねつ\nけねん\nけはい\nげひん\nけぶかい\nげぼく\nけまり\nけみかる\nけむし\nけむり\nけもの\nけらい\nけろけろ\nけわしい\nけんい\nけんえつ\nけんお\nけんか\nげんき\nけんげん\nけんこう\nけんさく\nけんしゅう\nけんすう\nげんそう\nけんちく\nけんてい\nけんとう\nけんない\nけんにん\nげんぶつ\nけんま\nけんみん\nけんめい\nけんらん\nけんり\nこあくま\nこいぬ\nこいびと\nごうい\nこうえん\nこうおん\nこうかん\nごうきゅう\nごうけい\nこうこう\nこうさい\nこうじ\nこうすい\nごうせい\nこうそく\nこうたい\nこうちゃ\nこうつう\nこうてい\nこうどう\nこうない\nこうはい\nごうほう\nごうまん\nこうもく\nこうりつ\nこえる\nこおり\nごかい\nごがつ\nごかん\nこくご\nこくさい\nこくとう\nこくない\nこくはく\nこぐま\nこけい\nこける\nここのか\nこころ\nこさめ\nこしつ\nこすう\nこせい\nこせき\nこぜん\nこそだて\nこたい\nこたえる\nこたつ\nこちょう\nこっか\nこつこつ\nこつばん\nこつぶ\nこてい\nこてん\nことがら\nことし\nことば\nことり\nこなごな\nこねこね\nこのまま\nこのみ\nこのよ\nごはん\nこひつじ\nこふう\nこふん\nこぼれる\nごまあぶら\nこまかい\nごますり\nこまつな\nこまる\nこむぎこ\nこもじ\nこもち\nこもの\nこもん\nこやく\nこやま\nこゆう\nこゆび\nこよい\nこよう\nこりる\nこれくしょん\nころっけ\nこわもて\nこわれる\nこんいん\nこんかい\nこんき\nこんしゅう\nこんすい\nこんだて\nこんとん\nこんなん\nこんびに\nこんぽん\nこんまけ\nこんや\nこんれい\nこんわく\nざいえき\nさいかい\nさいきん\nざいげん\nざいこ\nさいしょ\nさいせい\nざいたく\nざいちゅう\nさいてき\nざいりょう\nさうな\nさかいし\nさがす\nさかな\nさかみち\nさがる\nさぎょう\nさくし\nさくひん\nさくら\nさこく\nさこつ\nさずかる\nざせき\nさたん\nさつえい\nざつおん\nざっか\nざつがく\nさっきょく\nざっし\nさつじん\nざっそう\nさつたば\nさつまいも\nさてい\nさといも\nさとう\nさとおや\nさとし\nさとる\nさのう\nさばく\nさびしい\nさべつ\nさほう\nさほど\nさます\nさみしい\nさみだれ\nさむけ\nさめる\nさやえんどう\nさゆう\nさよう\nさよく\nさらだ\nざるそば\nさわやか\nさわる\nさんいん\nさんか\nさんきゃく\nさんこう\nさんさい\nざんしょ\nさんすう\nさんせい\nさんそ\nさんち\nさんま\nさんみ\nさんらん\nしあい\nしあげ\nしあさって\nしあわせ\nしいく\nしいん\nしうち\nしえい\nしおけ\nしかい\nしかく\nじかん\nしごと\nしすう\nじだい\nしたうけ\nしたぎ\nしたて\nしたみ\nしちょう\nしちりん\nしっかり\nしつじ\nしつもん\nしてい\nしてき\nしてつ\nじてん\nじどう\nしなぎれ\nしなもの\nしなん\nしねま\nしねん\nしのぐ\nしのぶ\nしはい\nしばかり\nしはつ\nしはらい\nしはん\nしひょう\nしふく\nじぶん\nしへい\nしほう\nしほん\nしまう\nしまる\nしみん\nしむける\nじむしょ\nしめい\nしめる\nしもん\nしゃいん\nしゃうん\nしゃおん\nじゃがいも\nしやくしょ\nしゃくほう\nしゃけん\nしゃこ\nしゃざい\nしゃしん\nしゃせん\nしゃそう\nしゃたい\nしゃちょう\nしゃっきん\nじゃま\nしゃりん\nしゃれい\nじゆう\nじゅうしょ\nしゅくはく\nじゅしん\nしゅっせき\nしゅみ\nしゅらば\nじゅんばん\nしょうかい\nしょくたく\nしょっけん\nしょどう\nしょもつ\nしらせる\nしらべる\nしんか\nしんこう\nじんじゃ\nしんせいじ\nしんちく\nしんりん\nすあげ\nすあし\nすあな\nずあん\nすいえい\nすいか\nすいとう\nずいぶん\nすいようび\nすうがく\nすうじつ\nすうせん\nすおどり\nすきま\nすくう\nすくない\nすける\nすごい\nすこし\nずさん\nすずしい\nすすむ\nすすめる\nすっかり\nずっしり\nずっと\nすてき\nすてる\nすねる\nすのこ\nすはだ\nすばらしい\nずひょう\nずぶぬれ\nすぶり\nすふれ\nすべて\nすべる\nずほう\nすぼん\nすまい\nすめし\nすもう\nすやき\nすらすら\nするめ\nすれちがう\nすろっと\nすわる\nすんぜん\nすんぽう\nせあぶら\nせいかつ\nせいげん\nせいじ\nせいよう\nせおう\nせかいかん\nせきにん\nせきむ\nせきゆ\nせきらんうん\nせけん\nせこう\nせすじ\nせたい\nせたけ\nせっかく\nせっきゃく\nぜっく\nせっけん\nせっこつ\nせっさたくま\nせつぞく\nせつだん\nせつでん\nせっぱん\nせつび\nせつぶん\nせつめい\nせつりつ\nせなか\nせのび\nせはば\nせびろ\nせぼね\nせまい\nせまる\nせめる\nせもたれ\nせりふ\nぜんあく\nせんい\nせんえい\nせんか\nせんきょ\nせんく\nせんげん\nぜんご\nせんさい\nせんしゅ\nせんすい\nせんせい\nせんぞ\nせんたく\nせんちょう\nせんてい\nせんとう\nせんぬき\nせんねん\nせんぱい\nぜんぶ\nぜんぽう\nせんむ\nせんめんじょ\nせんもん\nせんやく\nせんゆう\nせんよう\nぜんら\nぜんりゃく\nせんれい\nせんろ\nそあく\nそいとげる\nそいね\nそうがんきょう\nそうき\nそうご\nそうしん\nそうだん\nそうなん\nそうび\nそうめん\nそうり\nそえもの\nそえん\nそがい\nそげき\nそこう\nそこそこ\nそざい\nそしな\nそせい\nそせん\nそそぐ\nそだてる\nそつう\nそつえん\nそっかん\nそつぎょう\nそっけつ\nそっこう\nそっせん\nそっと\nそとがわ\nそとづら\nそなえる\nそなた\nそふぼ\nそぼく\nそぼろ\nそまつ\nそまる\nそむく\nそむりえ\nそめる\nそもそも\nそよかぜ\nそらまめ\nそろう\nそんかい\nそんけい\nそんざい\nそんしつ\nそんぞく\nそんちょう\nぞんび\nぞんぶん\nそんみん\nたあい\nたいいん\nたいうん\nたいえき\nたいおう\nだいがく\nたいき\nたいぐう\nたいけん\nたいこ\nたいざい\nだいじょうぶ\nだいすき\nたいせつ\nたいそう\nだいたい\nたいちょう\nたいてい\nだいどころ\nたいない\nたいねつ\nたいのう\nたいはん\nだいひょう\nたいふう\nたいへん\nたいほ\nたいまつばな\nたいみんぐ\nたいむ\nたいめん\nたいやき\nたいよう\nたいら\nたいりょく\nたいる\nたいわん\nたうえ\nたえる\nたおす\nたおる\nたおれる\nたかい\nたかね\nたきび\nたくさん\nたこく\nたこやき\nたさい\nたしざん\nだじゃれ\nたすける\nたずさわる\nたそがれ\nたたかう\nたたく\nただしい\nたたみ\nたちばな\nだっかい\nだっきゃく\nだっこ\nだっしゅつ\nだったい\nたてる\nたとえる\nたなばた\nたにん\nたぬき\nたのしみ\nたはつ\nたぶん\nたべる\nたぼう\nたまご\nたまる\nだむる\nためいき\nためす\nためる\nたもつ\nたやすい\nたよる\nたらす\nたりきほんがん\nたりょう\nたりる\nたると\nたれる\nたれんと\nたろっと\nたわむれる\nだんあつ\nたんい\nたんおん\nたんか\nたんき\nたんけん\nたんご\nたんさん\nたんじょうび\nだんせい\nたんそく\nたんたい\nだんち\nたんてい\nたんとう\nだんな\nたんにん\nだんねつ\nたんのう\nたんぴん\nだんぼう\nたんまつ\nたんめい\nだんれつ\nだんろ\nだんわ\nちあい\nちあん\nちいき\nちいさい\nちえん\nちかい\nちから\nちきゅう\nちきん\nちけいず\nちけん\nちこく\nちさい\nちしき\nちしりょう\nちせい\nちそう\nちたい\nちたん\nちちおや\nちつじょ\nちてき\nちてん\nちぬき\nちぬり\nちのう\nちひょう\nちへいせん\nちほう\nちまた\nちみつ\nちみどろ\nちめいど\nちゃんこなべ\nちゅうい\nちゆりょく\nちょうし\nちょさくけん\nちらし\nちらみ\nちりがみ\nちりょう\nちるど\nちわわ\nちんたい\nちんもく\nついか\nついたち\nつうか\nつうじょう\nつうはん\nつうわ\nつかう\nつかれる\nつくね\nつくる\nつけね\nつける\nつごう\nつたえる\nつづく\nつつじ\nつつむ\nつとめる\nつながる\nつなみ\nつねづね\nつのる\nつぶす\nつまらない\nつまる\nつみき\nつめたい\nつもり\nつもる\nつよい\nつるぼ\nつるみく\nつわもの\nつわり\nてあし\nてあて\nてあみ\nていおん\nていか\nていき\nていけい\nていこく\nていさつ\nていし\nていせい\nていたい\nていど\nていねい\nていひょう\nていへん\nていぼう\nてうち\nておくれ\nてきとう\nてくび\nでこぼこ\nてさぎょう\nてさげ\nてすり\nてそう\nてちがい\nてちょう\nてつがく\nてつづき\nでっぱ\nてつぼう\nてつや\nでぬかえ\nてぬき\nてぬぐい\nてのひら\nてはい\nてぶくろ\nてふだ\nてほどき\nてほん\nてまえ\nてまきずし\nてみじか\nてみやげ\nてらす\nてれび\nてわけ\nてわたし\nでんあつ\nてんいん\nてんかい\nてんき\nてんぐ\nてんけん\nてんごく\nてんさい\nてんし\nてんすう\nでんち\nてんてき\nてんとう\nてんない\nてんぷら\nてんぼうだい\nてんめつ\nてんらんかい\nでんりょく\nでんわ\nどあい\nといれ\nどうかん\nとうきゅう\nどうぐ\nとうし\nとうむぎ\nとおい\nとおか\nとおく\nとおす\nとおる\nとかい\nとかす\nときおり\nときどき\nとくい\nとくしゅう\nとくてん\nとくに\nとくべつ\nとけい\nとける\nとこや\nとさか\nとしょかん\nとそう\nとたん\nとちゅう\nとっきゅう\nとっくん\nとつぜん\nとつにゅう\nとどける\nととのえる\nとない\nとなえる\nとなり\nとのさま\nとばす\nどぶがわ\nとほう\nとまる\nとめる\nともだち\nともる\nどようび\nとらえる\nとんかつ\nどんぶり\nないかく\nないこう\nないしょ\nないす\nないせん\nないそう\nなおす\nながい\nなくす\nなげる\nなこうど\nなさけ\nなたでここ\nなっとう\nなつやすみ\nななおし\nなにごと\nなにもの\nなにわ\nなのか\nなふだ\nなまいき\nなまえ\nなまみ\nなみだ\nなめらか\nなめる\nなやむ\nならう\nならび\nならぶ\nなれる\nなわとび\nなわばり\nにあう\nにいがた\nにうけ\nにおい\nにかい\nにがて\nにきび\nにくしみ\nにくまん\nにげる\nにさんかたんそ\nにしき\nにせもの\nにちじょう\nにちようび\nにっか\nにっき\nにっけい\nにっこう\nにっさん\nにっしょく\nにっすう\nにっせき\nにってい\nになう\nにほん\nにまめ\nにもつ\nにやり\nにゅういん\nにりんしゃ\nにわとり\nにんい\nにんか\nにんき\nにんげん\nにんしき\nにんずう\nにんそう\nにんたい\nにんち\nにんてい\nにんにく\nにんぷ\nにんまり\nにんむ\nにんめい\nにんよう\nぬいくぎ\nぬかす\nぬぐいとる\nぬぐう\nぬくもり\nぬすむ\nぬまえび\nぬめり\nぬらす\nぬんちゃく\nねあげ\nねいき\nねいる\nねいろ\nねぐせ\nねくたい\nねくら\nねこぜ\nねこむ\nねさげ\nねすごす\nねそべる\nねだん\nねつい\nねっしん\nねつぞう\nねったいぎょ\nねぶそく\nねふだ\nねぼう\nねほりはほり\nねまき\nねまわし\nねみみ\nねむい\nねむたい\nねもと\nねらう\nねわざ\nねんいり\nねんおし\nねんかん\nねんきん\nねんぐ\nねんざ\nねんし\nねんちゃく\nねんど\nねんぴ\nねんぶつ\nねんまつ\nねんりょう\nねんれい\nのいず\nのおづま\nのがす\nのきなみ\nのこぎり\nのこす\nのこる\nのせる\nのぞく\nのぞむ\nのたまう\nのちほど\nのっく\nのばす\nのはら\nのべる\nのぼる\nのみもの\nのやま\nのらいぬ\nのらねこ\nのりもの\nのりゆき\nのれん\nのんき\nばあい\nはあく\nばあさん\nばいか\nばいく\nはいけん\nはいご\nはいしん\nはいすい\nはいせん\nはいそう\nはいち\nばいばい\nはいれつ\nはえる\nはおる\nはかい\nばかり\nはかる\nはくしゅ\nはけん\nはこぶ\nはさみ\nはさん\nはしご\nばしょ\nはしる\nはせる\nぱそこん\nはそん\nはたん\nはちみつ\nはつおん\nはっかく\nはづき\nはっきり\nはっくつ\nはっけん\nはっこう\nはっさん\nはっしん\nはったつ\nはっちゅう\nはってん\nはっぴょう\nはっぽう\nはなす\nはなび\nはにかむ\nはぶらし\nはみがき\nはむかう\nはめつ\nはやい\nはやし\nはらう\nはろうぃん\nはわい\nはんい\nはんえい\nはんおん\nはんかく\nはんきょう\nばんぐみ\nはんこ\nはんしゃ\nはんすう\nはんだん\nぱんち\nぱんつ\nはんてい\nはんとし\nはんのう\nはんぱ\nはんぶん\nはんぺん\nはんぼうき\nはんめい\nはんらん\nはんろん\nひいき\nひうん\nひえる\nひかく\nひかり\nひかる\nひかん\nひくい\nひけつ\nひこうき\nひこく\nひさい\nひさしぶり\nひさん\nびじゅつかん\nひしょ\nひそか\nひそむ\nひたむき\nひだり\nひたる\nひつぎ\nひっこし\nひっし\nひつじゅひん\nひっす\nひつぜん\nぴったり\nぴっちり\nひつよう\nひてい\nひとごみ\nひなまつり\nひなん\nひねる\nひはん\nひびく\nひひょう\nひほう\nひまわり\nひまん\nひみつ\nひめい\nひめじし\nひやけ\nひやす\nひよう\nびょうき\nひらがな\nひらく\nひりつ\nひりょう\nひるま\nひるやすみ\nひれい\nひろい\nひろう\nひろき\nひろゆき\nひんかく\nひんけつ\nひんこん\nひんしゅ\nひんそう\nぴんち\nひんぱん\nびんぼう\nふあん\nふいうち\nふうけい\nふうせん\nぷうたろう\nふうとう\nふうふ\nふえる\nふおん\nふかい\nふきん\nふくざつ\nふくぶくろ\nふこう\nふさい\nふしぎ\nふじみ\nふすま\nふせい\nふせぐ\nふそく\nぶたにく\nふたん\nふちょう\nふつう\nふつか\nふっかつ\nふっき\nふっこく\nぶどう\nふとる\nふとん\nふのう\nふはい\nふひょう\nふへん\nふまん\nふみん\nふめつ\nふめん\nふよう\nふりこ\nふりる\nふるい\nふんいき\nぶんがく\nぶんぐ\nふんしつ\nぶんせき\nふんそう\nぶんぽう\nへいあん\nへいおん\nへいがい\nへいき\nへいげん\nへいこう\nへいさ\nへいしゃ\nへいせつ\nへいそ\nへいたく\nへいてん\nへいねつ\nへいわ\nへきが\nへこむ\nべにいろ\nべにしょうが\nへらす\nへんかん\nべんきょう\nべんごし\nへんさい\nへんたい\nべんり\nほあん\nほいく\nぼうぎょ\nほうこく\nほうそう\nほうほう\nほうもん\nほうりつ\nほえる\nほおん\nほかん\nほきょう\nぼきん\nほくろ\nほけつ\nほけん\nほこう\nほこる\nほしい\nほしつ\nほしゅ\nほしょう\nほせい\nほそい\nほそく\nほたて\nほたる\nぽちぶくろ\nほっきょく\nほっさ\nほったん\nほとんど\nほめる\nほんい\nほんき\nほんけ\nほんしつ\nほんやく\nまいにち\nまかい\nまかせる\nまがる\nまける\nまこと\nまさつ\nまじめ\nますく\nまぜる\nまつり\nまとめ\nまなぶ\nまぬけ\nまねく\nまほう\nまもる\nまゆげ\nまよう\nまろやか\nまわす\nまわり\nまわる\nまんが\nまんきつ\nまんぞく\nまんなか\nみいら\nみうち\nみえる\nみがく\nみかた\nみかん\nみけん\nみこん\nみじかい\nみすい\nみすえる\nみせる\nみっか\nみつかる\nみつける\nみてい\nみとめる\nみなと\nみなみかさい\nみねらる\nみのう\nみのがす\nみほん\nみもと\nみやげ\nみらい\nみりょく\nみわく\nみんか\nみんぞく\nむいか\nむえき\nむえん\nむかい\nむかう\nむかえ\nむかし\nむぎちゃ\nむける\nむげん\nむさぼる\nむしあつい\nむしば\nむじゅん\nむしろ\nむすう\nむすこ\nむすぶ\nむすめ\nむせる\nむせん\nむちゅう\nむなしい\nむのう\nむやみ\nむよう\nむらさき\nむりょう\nむろん\nめいあん\nめいうん\nめいえん\nめいかく\nめいきょく\nめいさい\nめいし\nめいそう\nめいぶつ\nめいれい\nめいわく\nめぐまれる\nめざす\nめした\nめずらしい\nめだつ\nめまい\nめやす\nめんきょ\nめんせき\nめんどう\nもうしあげる\nもうどうけん\nもえる\nもくし\nもくてき\nもくようび\nもちろん\nもどる\nもらう\nもんく\nもんだい\nやおや\nやける\nやさい\nやさしい\nやすい\nやすたろう\nやすみ\nやせる\nやそう\nやたい\nやちん\nやっと\nやっぱり\nやぶる\nやめる\nややこしい\nやよい\nやわらかい\nゆうき\nゆうびんきょく\nゆうべ\nゆうめい\nゆけつ\nゆしゅつ\nゆせん\nゆそう\nゆたか\nゆちゃく\nゆでる\nゆにゅう\nゆびわ\nゆらい\nゆれる\nようい\nようか\nようきゅう\nようじ\nようす\nようちえん\nよかぜ\nよかん\nよきん\nよくせい\nよくぼう\nよけい\nよごれる\nよさん\nよしゅう\nよそう\nよそく\nよっか\nよてい\nよどがわく\nよねつ\nよやく\nよゆう\nよろこぶ\nよろしい\nらいう\nらくがき\nらくご\nらくさつ\nらくだ\nらしんばん\nらせん\nらぞく\nらたい\nらっか\nられつ\nりえき\nりかい\nりきさく\nりきせつ\nりくぐん\nりくつ\nりけん\nりこう\nりせい\nりそう\nりそく\nりてん\nりねん\nりゆう\nりゅうがく\nりよう\nりょうり\nりょかん\nりょくちゃ\nりょこう\nりりく\nりれき\nりろん\nりんご\nるいけい\nるいさい\nるいじ\nるいせき\nるすばん\nるりがわら\nれいかん\nれいぎ\nれいせい\nれいぞうこ\nれいとう\nれいぼう\nれきし\nれきだい\nれんあい\nれんけい\nれんこん\nれんさい\nれんしゅう\nれんぞく\nれんらく\nろうか\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"),Uo="가격\n가끔\n가난\n가능\n가득\n가르침\n가뭄\n가방\n가상\n가슴\n가운데\n가을\n가이드\n가입\n가장\n가정\n가족\n가죽\n각오\n각자\n간격\n간부\n간섭\n간장\n간접\n간판\n갈등\n갈비\n갈색\n갈증\n감각\n감기\n감소\n감수성\n감자\n감정\n갑자기\n강남\n강당\n강도\n강력히\n강변\n강북\n강사\n강수량\n강아지\n강원도\n강의\n강제\n강조\n같이\n개구리\n개나리\n개방\n개별\n개선\n개성\n개인\n객관적\n거실\n거액\n거울\n거짓\n거품\n걱정\n건강\n건물\n건설\n건조\n건축\n걸음\n검사\n검토\n게시판\n게임\n겨울\n견해\n결과\n결국\n결론\n결석\n결승\n결심\n결정\n결혼\n경계\n경고\n경기\n경력\n경복궁\n경비\n경상도\n경영\n경우\n경쟁\n경제\n경주\n경찰\n경치\n경향\n경험\n계곡\n계단\n계란\n계산\n계속\n계약\n계절\n계층\n계획\n고객\n고구려\n고궁\n고급\n고등학생\n고무신\n고민\n고양이\n고장\n고전\n고집\n고춧가루\n고통\n고향\n곡식\n골목\n골짜기\n골프\n공간\n공개\n공격\n공군\n공급\n공기\n공동\n공무원\n공부\n공사\n공식\n공업\n공연\n공원\n공장\n공짜\n공책\n공통\n공포\n공항\n공휴일\n과목\n과일\n과장\n과정\n과학\n관객\n관계\n관광\n관념\n관람\n관련\n관리\n관습\n관심\n관점\n관찰\n광경\n광고\n광장\n광주\n괴로움\n굉장히\n교과서\n교문\n교복\n교실\n교양\n교육\n교장\n교직\n교통\n교환\n교훈\n구경\n구름\n구멍\n구별\n구분\n구석\n구성\n구속\n구역\n구입\n구청\n구체적\n국가\n국기\n국내\n국립\n국물\n국민\n국수\n국어\n국왕\n국적\n국제\n국회\n군대\n군사\n군인\n궁극적\n권리\n권위\n권투\n귀국\n귀신\n규정\n규칙\n균형\n그날\n그냥\n그늘\n그러나\n그룹\n그릇\n그림\n그제서야\n그토록\n극복\n극히\n근거\n근교\n근래\n근로\n근무\n근본\n근원\n근육\n근처\n글씨\n글자\n금강산\n금고\n금년\n금메달\n금액\n금연\n금요일\n금지\n긍정적\n기간\n기관\n기념\n기능\n기독교\n기둥\n기록\n기름\n기법\n기본\n기분\n기쁨\n기숙사\n기술\n기억\n기업\n기온\n기운\n기원\n기적\n기준\n기침\n기혼\n기획\n긴급\n긴장\n길이\n김밥\n김치\n김포공항\n깍두기\n깜빡\n깨달음\n깨소금\n껍질\n꼭대기\n꽃잎\n나들이\n나란히\n나머지\n나물\n나침반\n나흘\n낙엽\n난방\n날개\n날씨\n날짜\n남녀\n남대문\n남매\n남산\n남자\n남편\n남학생\n낭비\n낱말\n내년\n내용\n내일\n냄비\n냄새\n냇물\n냉동\n냉면\n냉방\n냉장고\n넥타이\n넷째\n노동\n노란색\n노력\n노인\n녹음\n녹차\n녹화\n논리\n논문\n논쟁\n놀이\n농구\n농담\n농민\n농부\n농업\n농장\n농촌\n높이\n눈동자\n눈물\n눈썹\n뉴욕\n느낌\n늑대\n능동적\n능력\n다방\n다양성\n다음\n다이어트\n다행\n단계\n단골\n단독\n단맛\n단순\n단어\n단위\n단점\n단체\n단추\n단편\n단풍\n달걀\n달러\n달력\n달리\n닭고기\n담당\n담배\n담요\n담임\n답변\n답장\n당근\n당분간\n당연히\n당장\n대규모\n대낮\n대단히\n대답\n대도시\n대략\n대량\n대륙\n대문\n대부분\n대신\n대응\n대장\n대전\n대접\n대중\n대책\n대출\n대충\n대통령\n대학\n대한민국\n대합실\n대형\n덩어리\n데이트\n도대체\n도덕\n도둑\n도망\n도서관\n도심\n도움\n도입\n도자기\n도저히\n도전\n도중\n도착\n독감\n독립\n독서\n독일\n독창적\n동화책\n뒷모습\n뒷산\n딸아이\n마누라\n마늘\n마당\n마라톤\n마련\n마무리\n마사지\n마약\n마요네즈\n마을\n마음\n마이크\n마중\n마지막\n마찬가지\n마찰\n마흔\n막걸리\n막내\n막상\n만남\n만두\n만세\n만약\n만일\n만점\n만족\n만화\n많이\n말기\n말씀\n말투\n맘대로\n망원경\n매년\n매달\n매력\n매번\n매스컴\n매일\n매장\n맥주\n먹이\n먼저\n먼지\n멀리\n메일\n며느리\n며칠\n면담\n멸치\n명단\n명령\n명예\n명의\n명절\n명칭\n명함\n모금\n모니터\n모델\n모든\n모범\n모습\n모양\n모임\n모조리\n모집\n모퉁이\n목걸이\n목록\n목사\n목소리\n목숨\n목적\n목표\n몰래\n몸매\n몸무게\n몸살\n몸속\n몸짓\n몸통\n몹시\n무관심\n무궁화\n무더위\n무덤\n무릎\n무슨\n무엇\n무역\n무용\n무조건\n무지개\n무척\n문구\n문득\n문법\n문서\n문제\n문학\n문화\n물가\n물건\n물결\n물고기\n물론\n물리학\n물음\n물질\n물체\n미국\n미디어\n미사일\n미술\n미역\n미용실\n미움\n미인\n미팅\n미혼\n민간\n민족\n민주\n믿음\n밀가루\n밀리미터\n밑바닥\n바가지\n바구니\n바나나\n바늘\n바닥\n바닷가\n바람\n바이러스\n바탕\n박물관\n박사\n박수\n반대\n반드시\n반말\n반발\n반성\n반응\n반장\n반죽\n반지\n반찬\n받침\n발가락\n발걸음\n발견\n발달\n발레\n발목\n발바닥\n발생\n발음\n발자국\n발전\n발톱\n발표\n밤하늘\n밥그릇\n밥맛\n밥상\n밥솥\n방금\n방면\n방문\n방바닥\n방법\n방송\n방식\n방안\n방울\n방지\n방학\n방해\n방향\n배경\n배꼽\n배달\n배드민턴\n백두산\n백색\n백성\n백인\n백제\n백화점\n버릇\n버섯\n버튼\n번개\n번역\n번지\n번호\n벌금\n벌레\n벌써\n범위\n범인\n범죄\n법률\n법원\n법적\n법칙\n베이징\n벨트\n변경\n변동\n변명\n변신\n변호사\n변화\n별도\n별명\n별일\n병실\n병아리\n병원\n보관\n보너스\n보라색\n보람\n보름\n보상\n보안\n보자기\n보장\n보전\n보존\n보통\n보편적\n보험\n복도\n복사\n복숭아\n복습\n볶음\n본격적\n본래\n본부\n본사\n본성\n본인\n본질\n볼펜\n봉사\n봉지\n봉투\n부근\n부끄러움\n부담\n부동산\n부문\n부분\n부산\n부상\n부엌\n부인\n부작용\n부장\n부정\n부족\n부지런히\n부친\n부탁\n부품\n부회장\n북부\n북한\n분노\n분량\n분리\n분명\n분석\n분야\n분위기\n분필\n분홍색\n불고기\n불과\n불교\n불꽃\n불만\n불법\n불빛\n불안\n불이익\n불행\n브랜드\n비극\n비난\n비닐\n비둘기\n비디오\n비로소\n비만\n비명\n비밀\n비바람\n비빔밥\n비상\n비용\n비율\n비중\n비타민\n비판\n빌딩\n빗물\n빗방울\n빗줄기\n빛깔\n빨간색\n빨래\n빨리\n사건\n사계절\n사나이\n사냥\n사람\n사랑\n사립\n사모님\n사물\n사방\n사상\n사생활\n사설\n사슴\n사실\n사업\n사용\n사월\n사장\n사전\n사진\n사촌\n사춘기\n사탕\n사투리\n사흘\n산길\n산부인과\n산업\n산책\n살림\n살인\n살짝\n삼계탕\n삼국\n삼십\n삼월\n삼촌\n상관\n상금\n상대\n상류\n상반기\n상상\n상식\n상업\n상인\n상자\n상점\n상처\n상추\n상태\n상표\n상품\n상황\n새벽\n색깔\n색연필\n생각\n생명\n생물\n생방송\n생산\n생선\n생신\n생일\n생활\n서랍\n서른\n서명\n서민\n서비스\n서양\n서울\n서적\n서점\n서쪽\n서클\n석사\n석유\n선거\n선물\n선배\n선생\n선수\n선원\n선장\n선전\n선택\n선풍기\n설거지\n설날\n설렁탕\n설명\n설문\n설사\n설악산\n설치\n설탕\n섭씨\n성공\n성당\n성명\n성별\n성인\n성장\n성적\n성질\n성함\n세금\n세미나\n세상\n세월\n세종대왕\n세탁\n센터\n센티미터\n셋째\n소규모\n소극적\n소금\n소나기\n소년\n소득\n소망\n소문\n소설\n소속\n소아과\n소용\n소원\n소음\n소중히\n소지품\n소질\n소풍\n소형\n속담\n속도\n속옷\n손가락\n손길\n손녀\n손님\n손등\n손목\n손뼉\n손실\n손질\n손톱\n손해\n솔직히\n솜씨\n송아지\n송이\n송편\n쇠고기\n쇼핑\n수건\n수년\n수단\n수돗물\n수동적\n수면\n수명\n수박\n수상\n수석\n수술\n수시로\n수업\n수염\n수영\n수입\n수준\n수집\n수출\n수컷\n수필\n수학\n수험생\n수화기\n숙녀\n숙소\n숙제\n순간\n순서\n순수\n순식간\n순위\n숟가락\n술병\n술집\n숫자\n스님\n스물\n스스로\n스승\n스웨터\n스위치\n스케이트\n스튜디오\n스트레스\n스포츠\n슬쩍\n슬픔\n습관\n습기\n승객\n승리\n승부\n승용차\n승진\n시각\n시간\n시골\n시금치\n시나리오\n시댁\n시리즈\n시멘트\n시민\n시부모\n시선\n시설\n시스템\n시아버지\n시어머니\n시월\n시인\n시일\n시작\n시장\n시절\n시점\n시중\n시즌\n시집\n시청\n시합\n시험\n식구\n식기\n식당\n식량\n식료품\n식물\n식빵\n식사\n식생활\n식초\n식탁\n식품\n신고\n신규\n신념\n신문\n신발\n신비\n신사\n신세\n신용\n신제품\n신청\n신체\n신화\n실감\n실내\n실력\n실례\n실망\n실수\n실습\n실시\n실장\n실정\n실질적\n실천\n실체\n실컷\n실태\n실패\n실험\n실현\n심리\n심부름\n심사\n심장\n심정\n심판\n쌍둥이\n씨름\n씨앗\n아가씨\n아나운서\n아드님\n아들\n아쉬움\n아스팔트\n아시아\n아울러\n아저씨\n아줌마\n아직\n아침\n아파트\n아프리카\n아픔\n아홉\n아흔\n악기\n악몽\n악수\n안개\n안경\n안과\n안내\n안녕\n안동\n안방\n안부\n안주\n알루미늄\n알코올\n암시\n암컷\n압력\n앞날\n앞문\n애인\n애정\n액수\n앨범\n야간\n야단\n야옹\n약간\n약국\n약속\n약수\n약점\n약품\n약혼녀\n양념\n양력\n양말\n양배추\n양주\n양파\n어둠\n어려움\n어른\n어젯밤\n어쨌든\n어쩌다가\n어쩐지\n언니\n언덕\n언론\n언어\n얼굴\n얼른\n얼음\n얼핏\n엄마\n업무\n업종\n업체\n엉덩이\n엉망\n엉터리\n엊그제\n에너지\n에어컨\n엔진\n여건\n여고생\n여관\n여군\n여권\n여대생\n여덟\n여동생\n여든\n여론\n여름\n여섯\n여성\n여왕\n여인\n여전히\n여직원\n여학생\n여행\n역사\n역시\n역할\n연결\n연구\n연극\n연기\n연락\n연설\n연세\n연속\n연습\n연애\n연예인\n연인\n연장\n연주\n연출\n연필\n연합\n연휴\n열기\n열매\n열쇠\n열심히\n열정\n열차\n열흘\n염려\n엽서\n영국\n영남\n영상\n영양\n영역\n영웅\n영원히\n영하\n영향\n영혼\n영화\n옆구리\n옆방\n옆집\n예감\n예금\n예방\n예산\n예상\n예선\n예술\n예습\n예식장\n예약\n예전\n예절\n예정\n예컨대\n옛날\n오늘\n오락\n오랫동안\n오렌지\n오로지\n오른발\n오븐\n오십\n오염\n오월\n오전\n오직\n오징어\n오페라\n오피스텔\n오히려\n옥상\n옥수수\n온갖\n온라인\n온몸\n온종일\n온통\n올가을\n올림픽\n올해\n옷차림\n와이셔츠\n와인\n완성\n완전\n왕비\n왕자\n왜냐하면\n왠지\n외갓집\n외국\n외로움\n외삼촌\n외출\n외침\n외할머니\n왼발\n왼손\n왼쪽\n요금\n요일\n요즘\n요청\n용기\n용서\n용어\n우산\n우선\n우승\n우연히\n우정\n우체국\n우편\n운동\n운명\n운반\n운전\n운행\n울산\n울음\n움직임\n웃어른\n웃음\n워낙\n원고\n원래\n원서\n원숭이\n원인\n원장\n원피스\n월급\n월드컵\n월세\n월요일\n웨이터\n위반\n위법\n위성\n위원\n위험\n위협\n윗사람\n유난히\n유럽\n유명\n유물\n유산\n유적\n유치원\n유학\n유행\n유형\n육군\n육상\n육십\n육체\n은행\n음력\n음료\n음반\n음성\n음식\n음악\n음주\n의견\n의논\n의문\n의복\n의식\n의심\n의외로\n의욕\n의원\n의학\n이것\n이곳\n이념\n이놈\n이달\n이대로\n이동\n이렇게\n이력서\n이론적\n이름\n이민\n이발소\n이별\n이불\n이빨\n이상\n이성\n이슬\n이야기\n이용\n이웃\n이월\n이윽고\n이익\n이전\n이중\n이튿날\n이틀\n이혼\n인간\n인격\n인공\n인구\n인근\n인기\n인도\n인류\n인물\n인생\n인쇄\n인연\n인원\n인재\n인종\n인천\n인체\n인터넷\n인하\n인형\n일곱\n일기\n일단\n일대\n일등\n일반\n일본\n일부\n일상\n일생\n일손\n일요일\n일월\n일정\n일종\n일주일\n일찍\n일체\n일치\n일행\n일회용\n임금\n임무\n입대\n입력\n입맛\n입사\n입술\n입시\n입원\n입장\n입학\n자가용\n자격\n자극\n자동\n자랑\n자부심\n자식\n자신\n자연\n자원\n자율\n자전거\n자정\n자존심\n자판\n작가\n작년\n작성\n작업\n작용\n작은딸\n작품\n잔디\n잔뜩\n잔치\n잘못\n잠깐\n잠수함\n잠시\n잠옷\n잠자리\n잡지\n장관\n장군\n장기간\n장래\n장례\n장르\n장마\n장면\n장모\n장미\n장비\n장사\n장소\n장식\n장애인\n장인\n장점\n장차\n장학금\n재능\n재빨리\n재산\n재생\n재작년\n재정\n재채기\n재판\n재학\n재활용\n저것\n저고리\n저곳\n저녁\n저런\n저렇게\n저번\n저울\n저절로\n저축\n적극\n적당히\n적성\n적용\n적응\n전개\n전공\n전기\n전달\n전라도\n전망\n전문\n전반\n전부\n전세\n전시\n전용\n전자\n전쟁\n전주\n전철\n전체\n전통\n전혀\n전후\n절대\n절망\n절반\n절약\n절차\n점검\n점수\n점심\n점원\n점점\n점차\n접근\n접시\n접촉\n젓가락\n정거장\n정도\n정류장\n정리\n정말\n정면\n정문\n정반대\n정보\n정부\n정비\n정상\n정성\n정오\n정원\n정장\n정지\n정치\n정확히\n제공\n제과점\n제대로\n제목\n제발\n제법\n제삿날\n제안\n제일\n제작\n제주도\n제출\n제품\n제한\n조각\n조건\n조금\n조깅\n조명\n조미료\n조상\n조선\n조용히\n조절\n조정\n조직\n존댓말\n존재\n졸업\n졸음\n종교\n종로\n종류\n종소리\n종업원\n종종\n종합\n좌석\n죄인\n주관적\n주름\n주말\n주머니\n주먹\n주문\n주민\n주방\n주변\n주식\n주인\n주일\n주장\n주전자\n주택\n준비\n줄거리\n줄기\n줄무늬\n중간\n중계방송\n중국\n중년\n중단\n중독\n중반\n중부\n중세\n중소기업\n중순\n중앙\n중요\n중학교\n즉석\n즉시\n즐거움\n증가\n증거\n증권\n증상\n증세\n지각\n지갑\n지경\n지극히\n지금\n지급\n지능\n지름길\n지리산\n지방\n지붕\n지식\n지역\n지우개\n지원\n지적\n지점\n지진\n지출\n직선\n직업\n직원\n직장\n진급\n진동\n진로\n진료\n진리\n진짜\n진찰\n진출\n진통\n진행\n질문\n질병\n질서\n짐작\n집단\n집안\n집중\n짜증\n찌꺼기\n차남\n차라리\n차량\n차림\n차별\n차선\n차츰\n착각\n찬물\n찬성\n참가\n참기름\n참새\n참석\n참여\n참외\n참조\n찻잔\n창가\n창고\n창구\n창문\n창밖\n창작\n창조\n채널\n채점\n책가방\n책방\n책상\n책임\n챔피언\n처벌\n처음\n천국\n천둥\n천장\n천재\n천천히\n철도\n철저히\n철학\n첫날\n첫째\n청년\n청바지\n청소\n청춘\n체계\n체력\n체온\n체육\n체중\n체험\n초등학생\n초반\n초밥\n초상화\n초순\n초여름\n초원\n초저녁\n초점\n초청\n초콜릿\n촛불\n총각\n총리\n총장\n촬영\n최근\n최상\n최선\n최신\n최악\n최종\n추석\n추억\n추진\n추천\n추측\n축구\n축소\n축제\n축하\n출근\n출발\n출산\n출신\n출연\n출입\n출장\n출판\n충격\n충고\n충돌\n충분히\n충청도\n취업\n취직\n취향\n치약\n친구\n친척\n칠십\n칠월\n칠판\n침대\n침묵\n침실\n칫솔\n칭찬\n카메라\n카운터\n칼국수\n캐릭터\n캠퍼스\n캠페인\n커튼\n컨디션\n컬러\n컴퓨터\n코끼리\n코미디\n콘서트\n콜라\n콤플렉스\n콩나물\n쾌감\n쿠데타\n크림\n큰길\n큰딸\n큰소리\n큰아들\n큰어머니\n큰일\n큰절\n클래식\n클럽\n킬로\n타입\n타자기\n탁구\n탁자\n탄생\n태권도\n태양\n태풍\n택시\n탤런트\n터널\n터미널\n테니스\n테스트\n테이블\n텔레비전\n토론\n토마토\n토요일\n통계\n통과\n통로\n통신\n통역\n통일\n통장\n통제\n통증\n통합\n통화\n퇴근\n퇴원\n퇴직금\n튀김\n트럭\n특급\n특별\n특성\n특수\n특징\n특히\n튼튼히\n티셔츠\n파란색\n파일\n파출소\n판결\n판단\n판매\n판사\n팔십\n팔월\n팝송\n패션\n팩스\n팩시밀리\n팬티\n퍼센트\n페인트\n편견\n편의\n편지\n편히\n평가\n평균\n평생\n평소\n평양\n평일\n평화\n포스터\n포인트\n포장\n포함\n표면\n표정\n표준\n표현\n품목\n품질\n풍경\n풍속\n풍습\n프랑스\n프린터\n플라스틱\n피곤\n피망\n피아노\n필름\n필수\n필요\n필자\n필통\n핑계\n하느님\n하늘\n하드웨어\n하룻밤\n하반기\n하숙집\n하순\n하여튼\n하지만\n하천\n하품\n하필\n학과\n학교\n학급\n학기\n학년\n학력\n학번\n학부모\n학비\n학생\n학술\n학습\n학용품\n학원\n학위\n학자\n학점\n한계\n한글\n한꺼번에\n한낮\n한눈\n한동안\n한때\n한라산\n한마디\n한문\n한번\n한복\n한식\n한여름\n한쪽\n할머니\n할아버지\n할인\n함께\n함부로\n합격\n합리적\n항공\n항구\n항상\n항의\n해결\n해군\n해답\n해당\n해물\n해석\n해설\n해수욕장\n해안\n핵심\n핸드백\n햄버거\n햇볕\n햇살\n행동\n행복\n행사\n행운\n행위\n향기\n향상\n향수\n허락\n허용\n헬기\n현관\n현금\n현대\n현상\n현실\n현장\n현재\n현지\n혈액\n협력\n형부\n형사\n형수\n형식\n형제\n형태\n형편\n혜택\n호기심\n호남\n호랑이\n호박\n호텔\n호흡\n혹시\n홀로\n홈페이지\n홍보\n홍수\n홍차\n화면\n화분\n화살\n화요일\n화장\n화학\n확보\n확인\n확장\n확정\n환갑\n환경\n환영\n환율\n환자\n활기\n활동\n활발히\n활용\n활짝\n회견\n회관\n회복\n회색\n회원\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"),Fo="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"),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"),jo="á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"),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");var Mo=Object.freeze({__proto__:null,HDKey:nr,createNonceManager:Br,nonceManager:Cr,signatureToHex:Or,serializeSignature:Or,generateMnemonic:function(n,e){return jr(n,e)},generatePrivateKey:function(){return mr(Xe.utils.randomPrivateKey())},hdKeyToAccount:Ro,mnemonicToAccount:function(n,{passphrase:e,...t}={}){const r=Mr(n,e);return Ro(nr.fromMasterSeed(r),t)},privateKeyToAccount:zo,toAccount:ua,parseAccount:function(n){return"string"==typeof n?{address:n,type:"json-rpc"}:n},privateKeyToAddress:function(n){return da(yr(Xe.getPublicKey(n.slice(2),!1)))},publicKeyToAddress:da,setSignEntropy:function(n){if(!n)throw new Error("must be a `true` or a hex value.");ha=n},sign:pa,signAuthorization:Ia,signMessage:Na,signTransaction:ro,signTypedData:No,czech:To,english:So,french:Bo,italian:Co,japanese:Oo,korean:Uo,portuguese:Fo,simplifiedChinese:Lo,spanish:jo,traditionalChinese:Do});const Go="6.16.0";function qo(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 Ho(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 Ko(n,e,t){for(let r in e){let a=e[r];const o=t?t[r]:null;o&&qo(a,o,r),Object.defineProperty(n,r,{enumerable:!0,value:a,writable:!1})}}function Vo(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=>Vo(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 Vo(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=>`${Vo(t,e)}: ${Vo(n[t],e)}`).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function _o(n,e){return n&&n.code===e}function Qo(n){return _o(n,"CALL_EXCEPTION")}function Jo(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: ${Vo(t)}`);for(const n in t){if("shortMessage"===n)continue;const e=t[n];r.push(n+"="+Vo(e))}}r.push(`code=${e}`),r.push(`version=${Go}`),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 Ko(r,{code:e}),t&&Object.assign(r,t),null==r.shortMessage&&Ko(r,{shortMessage:a}),r}function $o(n,e,t,r){if(!n)throw Jo(e,t,r)}function Wo(n,e,t,r){$o(n,e,"INVALID_ARGUMENT",{argument:t,value:r})}function Zo(n,e,t){null==t&&(t=""),t&&(t=": "+t),$o(n>=e,"missing argument"+t,"MISSING_ARGUMENT",{count:n,expectedCount:e}),$o(n<=e,"too many arguments"+t,"UNEXPECTED_ARGUMENT",{count:n,expectedCount:e})}const Yo=["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 Xo(n){$o(Yo.indexOf(n)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:n}})}function ni(n,e,t){if(null==t&&(t=""),n!==e){let n=t,e="new";t&&(n+=".",e+=" "+t),$o(!1,`private constructor; use ${n}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}function ei(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}Wo(!1,"invalid BytesLike value",e||"value",n)}function ti(n,e){return ei(n,e,!1)}function ri(n,e){return ei(n,e,!0)}function ai(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 oi(n){return ai(n,!0)||n instanceof Uint8Array}const ii="0123456789abcdef";function si(n){const e=ti(n);let t="0x";for(let n=0;n<e.length;n++){const r=e[n];t+=ii[(240&r)>>4]+ii[15&r]}return t}function ci(n){return"0x"+n.map(n=>si(n).substring(2)).join("")}function li(n){return ai(n,!0)?(n.length-2)/2:ti(n).length}function ui(n,e,t){const r=ti(n);return null!=t&&t>r.length&&$o(!1,"cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:r,length:r.length,offset:t}),si(r.slice(null==e?0:e,null==t?r.length:t))}function di(n){let e=si(n).substring(2);for(;e.startsWith("00");)e=e.substring(2);return"0x"+e}function hi(n,e,t){const r=ti(n);$o(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),si(a)}function pi(n,e){return hi(n,e,!0)}function fi(n,e){return hi(n,e,!1)}const gi=BigInt(0),mi=BigInt(1),bi=9007199254740991;function yi(n,e){const t=Ai(n,"value"),r=BigInt(Ii(e,"width"));if($o(t>>r===gi,"overflow","NUMERIC_FAULT",{operation:"fromTwos",fault:"overflow",value:n}),t>>r-mi){return-((~t&(mi<<r)-mi)+mi)}return t}function vi(n,e){let t=ki(n,"value");const r=BigInt(Ii(e,"width")),a=mi<<r-mi;if(t<gi){t=-t,$o(t<=a,"too low","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:n});return(~t&(mi<<r)-mi)+mi}return $o(t<a,"too high","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:n}),t}function wi(n,e){const t=Ai(n,"value"),r=BigInt(Ii(e,"bits"));return t&(mi<<r)-mi}function ki(n,e){switch(typeof n){case"bigint":return n;case"number":return Wo(Number.isInteger(n),"underflow",e||"value",n),Wo(n>=-bi&&n<=bi,"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){Wo(!1,`invalid BigNumberish string: ${t.message}`,e||"value",n)}}Wo(!1,"invalid BigNumberish value",e||"value",n)}function Ai(n,e){const t=ki(n,e);return $o(t>=gi,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:n}),t}const Ei="0123456789abcdef";function xi(n){if(n instanceof Uint8Array){let e="0x0";for(const t of n)e+=Ei[t>>4],e+=Ei[15&t];return BigInt(e)}return ki(n)}function Ii(n,e){switch(typeof n){case"bigint":return Wo(n>=-bi&&n<=bi,"overflow",e||"value",n),Number(n);case"number":return Wo(Number.isInteger(n),"underflow",e||"value",n),Wo(n>=-bi&&n<=bi,"overflow",e||"value",n),n;case"string":try{if(""===n)throw new Error("empty string");return Ii(BigInt(n),e)}catch(t){Wo(!1,`invalid numeric string: ${t.message}`,e||"value",n)}}Wo(!1,"invalid numeric value",e||"value",n)}function Pi(n){return Ii(xi(n))}function Ni(n,e){const t=Ai(n,"value");let r=t.toString(16);if(null==e)r.length%2&&(r="0"+r);else{const a=Ii(e,"width");if(0===a&&t===gi)return"0x";for($o(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 zi(n,e){const t=Ai(n,"value");if(t===gi){const n=null!=e?Ii(e,"width"):0;return new Uint8Array(n)}let r=t.toString(16);if(r.length%2&&(r="0"+r),null!=e){const t=Ii(e,"width");for(;r.length<2*t;)r="00"+r;$o(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 Ri(n){let e=si(oi(n)?n:zi(n)).substring(2);for(;e.startsWith("0");)e=e.substring(1);return""===e&&(e="0"),"0x"+e}const Ti="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let Si=null;function Bi(n){if(null==Si){Si={};for(let n=0;n<58;n++)Si[Ti[n]]=BigInt(n)}const e=Si[n];return Wo(null!=e,"invalid base58 value","letter",n),e}const Ci=BigInt(0),Oi=BigInt(58);function Ui(n){const e=ti(n);let t=xi(e),r="";for(;t;)r=Ti[Number(t%Oi)]+r,t/=Oi;for(let n=0;n<e.length&&!e[n];n++)r=Ti[0]+r;return r}function Fi(n){let e=Ci;for(let t=0;t<n.length;t++)e*=Oi,e+=Bi(n[t]);return e}function Li(n){n=atob(n);const e=new Uint8Array(n.length);for(let t=0;t<n.length;t++)e[t]=n.charCodeAt(t);return ti(e)}function ji(n){const e=ti(n);let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}class Di{filter;emitter;#n;constructor(n,e,t){this.#n=e,Ko(this,{emitter:n,filter:t})}async removeListener(){null!=this.#n&&await this.emitter.off(this.filter,this.#n)}}function Mi(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 Gi=Object.freeze({error:function(n,e,t,r,a){Wo(!1,`invalid codepoint at offset ${e}; ${n}`,"bytes",t)},ignore:Mi,replace:function(n,e,t,r,a){return"OVERLONG"===n?(Wo("number"==typeof a,"invalid bad code point for replacement","badCodepoint",a),r.push(a),0):(r.push(65533),Mi(n,e,t))}});function qi(n,e){null==e&&(e=Gi.error);const t=ti(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 Hi(n,e){Wo("string"==typeof n,"invalid string value","str",n),null!=e&&(Xo(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);Wo(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 Ki(n,e){return qi(n,e).map(n=>n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode(55296+(n>>10&1023),56320+(1023&n)))).join("")}function Vi(n,e){return qi(Hi(n,e))}function _i(n){return async function(e,t){$o(null==t||!t.cancelled,"request cancelled before sending","CANCELLED");const r=e.url.split(":")[0].toLowerCase();$o("http"===r||"https"===r,`unsupported protocol ${r}`,"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),$o("https"===r||!e.credentials||e.allowInsecureAuthentication,"insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});let a=null;const o=new AbortController,i=setTimeout(()=>{a=Jo("request timeout","TIMEOUT"),o.abort()},e.timeout);t&&t.addListener(()=>{a=Jo("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 Qi=_i();const Ji=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),$i=new RegExp("^ipfs://(ipfs/)?(.*)$","i");let Wi=!1;async function Zi(n,e){try{const e=n.match(Ji);if(!e)throw new Error("invalid data");return new as(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?Li(e[3]):Hi(e[3].replace(/%([0-9a-f][0-9a-f])/gi,(n,e)=>String.fromCharCode(parseInt(e,16)))))}catch(e){return new as(599,"BAD REQUEST (invalid data: URI)",{},null,new rs(n))}}function Yi(n){return async function(e,t){try{const t=e.match($i);if(!t)throw new Error("invalid link");return new rs(`${n}${t[2]}`)}catch(n){return new as(599,"BAD REQUEST (invalid IPFS URI)",{},null,new rs(e))}}}const Xi={data:Zi,ipfs:Yi("https://gateway.ipfs.io/ipfs/")},ns=new WeakMap;class es{#e;#t;constructor(n){this.#e=[],this.#t=!1,ns.set(n,()=>{if(!this.#t){this.#t=!0;for(const n of this.#e)setTimeout(()=>{n()},0);this.#e=[]}})}addListener(n){$o(!this.#t,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#e.push(n)}get cancelled(){return this.#t}checkSignal(){$o(!this.cancelled,"cancelled","CANCELLED",{})}}function ts(n){if(null==n)throw new Error("missing signal; should not happen");return n.checkSignal(),n}class rs{#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=Hi(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=Hi(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 ${ji(Hi(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){Wo(!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){Wo(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||Qi}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?si(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");$o(os()<=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 Xi){const n=await Xi[i](o.url,ts(r.#g));if(n instanceof as){let e=n;if(this.processFunc){ts(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,ts(r.#g));let c=new as(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){ts(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 $o(null==this.#g,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#g=new es(this),this.#y(0,os()+this.timeout,0,this,new as(0,"",{},null,this))}cancel(){$o(null!=this.#g,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});const n=ns.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();$o("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 rs(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 rs(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(){Wi=!0}static getGateway(n){return Xi[n.toLowerCase()]||null}static registerGateway(n,e){if("http"===(n=n.toLowerCase())||"https"===n)throw new Error(`cannot intercept ${n}; use registerGetUrl`);if(Wi)throw new Error("gateways locked");Xi[n]=e}static registerGetUrl(n){if(Wi)throw new Error("gateways locked");Qi=n}static createGetUrlFunc(n){return _i(n)}static createDataGateway(){return Zi}static createIpfsGatewayFunc(n){return Yi(n)}}class as{#v;#w;#o;#l;#k;#A;toString(){return`<FetchResponse status=${this.statusCode} body=${this.#l?si(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?"":Ki(this.#l)}catch(n){$o(!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){$o(!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 as(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:Wo(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);const t=new Error(n||"throttling requests");throw Ko(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=Ki(this.#l))}catch(n){}$o(!1,n,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:t,responseBody:r,responseStatus:`${this.statusCode} ${this.statusMessage}`}})}}function os(){return(new Date).getTime()}const is=BigInt(-1),ss=BigInt(0),cs=BigInt(1),ls=BigInt(5),us={};let ds="0000";for(;ds.length<80;)ds+=ds;function hs(n){let e=ds;for(;e.length<n;)e+=e;return BigInt("1"+e.substring(0,n))}function ps(n,e,t){const r=BigInt(e.width);if(e.signed){const e=cs<<r-cs;$o(null==t||n>=-e&&n<e,"overflow","NUMERIC_FAULT",{operation:t,fault:"overflow",value:n}),n=n>ss?yi(wi(n,r),r):-yi(wi(-n,r),r)}else{const e=cs<<r;$o(null==t||n>=0&&n<e,"overflow","NUMERIC_FAULT",{operation:t,fault:"overflow",value:n}),n=(n%e+e)%e&e-cs}return n}function fs(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]+)$/);Wo(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:(Wo(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)}Wo(t%8==0,"invalid FixedNumber width (not byte aligned)","format.width",t),Wo(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 gs{format;#E;#x;#I;_value;constructor(n,e,t){ni(n,us,"FixedNumber"),this.#x=e,this.#E=t;const r=function(n,e){let t="";n<ss&&(t="-",n*=is);let r=n.toString();if(0===e)return t+r;for(;r.length<=e;)r=ds+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);Ko(this,{format:t.name,_value:r}),this.#I=hs(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}#P(n){Wo(this.format===n.format,"incompatible format; use fixedNumber.toFormat","other",n)}#N(n,e){return n=ps(n,this.#E,e),new gs(us,n,this.#E)}#z(n,e){return this.#P(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.#P(n),this.#N(this.#x-n.#x,e)}subUnsafe(n){return this.#R(n)}sub(n){return this.#R(n,"sub")}#T(n,e){return this.#P(n),this.#N(this.#x*n.#x/this.#I,e)}mulUnsafe(n){return this.#T(n)}mul(n){return this.#T(n,"mul")}mulSignal(n){this.#P(n);const e=this.#x*n.#x;return $o(e%this.#I===ss,"precision lost during signalling mul","NUMERIC_FAULT",{operation:"mulSignal",fault:"underflow",value:this}),this.#N(e/this.#I,"mulSignal")}#S(n,e){return $o(n.#x!==ss,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#P(n),this.#N(this.#x*this.#I/n.#x,e)}divUnsafe(n){return this.#S(n)}div(n){return this.#S(n,"div")}divSignal(n){$o(n.#x!==ss,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#P(n);const e=this.#x*this.#I;return $o(e%n.#x===ss,"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*=hs(r):r<0&&(e*=hs(-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<ss&&(n-=this.#I-cs),n=this.#x/this.#I*this.#I,this.#N(n,"floor")}ceiling(){let n=this.#x;return this.#x>ss&&(n+=this.#I-cs),n=this.#x/this.#I*this.#I,this.#N(n,"ceiling")}round(n){if(null==n&&(n=0),n>=this.decimals)return this;const e=this.decimals-n,t=ls*hs(e-1);let r=this.value+t;const a=hs(e);return r=r/a*a,ps(r,this.#E,"round"),new gs(us,r,this.#E)}isZero(){return this.#x===ss}isNegative(){return this.#x<ss}toString(){return this._value}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(n){return gs.fromString(this.toString(),n)}static fromValue(n,e,t){const r=null==e?0:Ii(e),a=fs(t);let o=ki(n,"value");const i=r-a.decimals;if(i>0){const e=hs(i);$o(o%e===ss,"value loses precision for format","NUMERIC_FAULT",{operation:"fromValue",fault:"underflow",value:n}),o/=e}else i<0&&(o*=hs(-i));return ps(o,a,"fromValue"),new gs(us,o,a)}static fromString(n,e){const t=n.match(/^(-?)([0-9]*)\.?([0-9]*)$/);Wo(t&&t[2].length+t[3].length>0,"invalid FixedNumber string value","value",n);const r=fs(e);let a=t[2]||"0",o=t[3]||"";for(;o.length<r.decimals;)o+=ds;$o(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 ps(i,r,"fromString"),new gs(us,i,r)}static fromBytes(n,e){let t=xi(ti(n,"value"));const r=fs(e);return r.signed&&(t=yi(t,r.width)),ps(t,r,"fromBytes"),new gs(us,t,r)}}function ms(n){let e=n.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function bs(n,e,t){let r=0;for(let a=0;a<t;a++)r=256*r+n[e+a];return r}function ys(n,e,t,r){const a=[];for(;t<e+1+r;){const o=vs(n,t);a.push(o.result),$o((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 vs(n,e){$o(0!==n.length,"data too short","BUFFER_OVERRUN",{buffer:n,length:0,offset:1});const t=e=>{$o(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=bs(n,e+1,r);return t(e+1+r+a),ys(n,e,e+1+r,r+a)}if(n[e]>=192){const r=n[e]-192;return t(e+1+r),ys(n,e,e+1,r)}if(n[e]>=184){const r=n[e]-183;t(e+1+r);const a=bs(n,e+1,r);t(e+1+r+a);return{consumed:1+r+a,result:si(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:si(n.slice(e+1,e+1+r))}}return{consumed:1,result:ms(n[e])}}function ws(n){const e=ti(n,"data"),t=vs(e,0);return Wo(t.consumed===e.length,"unexpected junk after rlp payload","data",n),t.result}function ks(n){const e=[];for(;n;)e.unshift(255&n),n>>=8;return e}function As(n){if(Array.isArray(n)){let e=[];if(n.forEach(function(n){e=e.concat(As(n))}),e.length<=55)return e.unshift(192+e.length),e;const t=ks(e.length);return t.unshift(247+t.length),t.concat(e)}const e=Array.prototype.slice.call(ti(n,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const t=ks(e.length);return t.unshift(183+t.length),t.concat(e)}const Es="0123456789abcdef";function xs(n){let e="0x";for(const t of As(n))e+=Es[t>>4],e+=Es[15&t];return e}const Is=["wei","kwei","mwei","gwei","szabo","finney","ether"];function Ps(n,e){let t=18;if("string"==typeof e){const n=Is.indexOf(e);Wo(n>=0,"invalid unit","unit",e),t=3*n}else null!=e&&(t=Ii(e,"unit"));return gs.fromValue(n,t,{decimals:t,width:512}).toString()}function Ns(n,e){Wo("string"==typeof n,"value must be a string","value",n);let t=18;if("string"==typeof e){const n=Is.indexOf(e);Wo(n>=0,"invalid unit","unit",e),t=3*n}else null!=e&&(t=Ii(e,"unit"));return gs.fromString(n,{decimals:t,width:512}).value}function zs(n){return Ps(n,18)}function Rs(n){return Ns(n,18)}function Ts(n){const e=ti(n,"randomBytes");e[6]=15&e[6]|64,e[8]=63&e[8]|128;const t=si(e);return[t.substring(2,10),t.substring(10,14),t.substring(14,18),t.substring(18,22),t.substring(22,34)].join("-")}const Ss=32,Bs=new Uint8Array(Ss),Cs=["then"],Os={},Us=new WeakMap;function Fs(n){return Us.get(n)}function Ls(n,e){Us.set(n,e)}function js(n,e){const t=new Error(`deferred error during ABI decoding triggered accessing ${n}`);throw t.error=e,t}function Ds(n,e,t){return n.indexOf(null)>=0?e.map((n,e)=>n instanceof Ms?Ds(Fs(n),n,t):n):n.reduce((n,r,a)=>{let o=e.getValue(r);return r in n||(t&&o instanceof Ms&&(o=Ds(Fs(o),o,t)),n[r]=o),n},{})}class Ms extends Array{#B;constructor(...n){const e=n[0];let t=n[1],r=(n[2]||[]).slice(),a=!0;e!==Os&&(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(Ls(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=Ii(e,"%index");if(t<0||t>=this.length)throw new RangeError("out of result range");const r=n[t];return r instanceof Error&&js(`index ${t}`,r),r}if(Cs.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 Ls(i,Fs(this)),i}toArray(n){const e=[];return this.forEach((t,r)=>{t instanceof Error&&js(`index ${r}`,t),n&&t instanceof Ms&&(t=t.toArray(n)),e.push(t)}),e}toObject(n){const e=Fs(this);return e.reduce((t,r,a)=>($o(null!=r,`value at index ${a} unnamed`,"UNSUPPORTED_OPERATION",{operation:"toObject()"}),Ds(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=Fs(this),r=[],a=[];for(let o=n;o<e;o++)r.push(this[o]),a.push(t[o]);return new Ms(Os,r,a)}filter(n,e){const t=Fs(this),r=[],a=[];for(let o=0;o<this.length;o++){const i=this[o];i instanceof Error&&js(`index ${o}`,i),n.call(e,i,o,this)&&(r.push(i),a.push(t[o]))}return new Ms(Os,r,a)}map(n,e){const t=[];for(let r=0;r<this.length;r++){const a=this[r];a instanceof Error&&js(`index ${r}`,a),t.push(n.call(e,a,r,this))}return t}getValue(n){const e=Fs(this).indexOf(n);if(-1===e)return;const t=this[e];return t instanceof Error&&js(`property ${JSON.stringify(n)}`,t.error),t}static fromItems(n,e){return new Ms(Os,n,e)}}function Gs(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 qs(n){let e=zi(n);return $o(e.length<=Ss,"value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:Ss,offset:e.length}),e.length!==Ss&&(e=ri(ci([Bs.slice(e.length%Ss),e]))),e}class Hs{name;type;localName;dynamic;constructor(n,e,t,r){Ko(this,{name:n,type:e,localName:t,dynamic:r},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(n,e){Wo(!1,n,this.localName,e)}}class Ks{#C;#O;constructor(){this.#C=[],this.#O=0}get data(){return ci(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(ri(n.data))}writeBytes(n){let e=ri(n);const t=e.length%Ss;return t&&(e=ri(ci([e,Bs.slice(t)]))),this.#U(e)}writeValue(n){return this.#U(qs(n))}writeUpdatableValue(){const n=this.#C.length;return this.#C.push(Bs),this.#O+=Ss,e=>{this.#C[n]=qs(e)}}}class Vs{allowLoose;#C;#F;#L;#j;#D;constructor(n,e,t){Ko(this,{allowLoose:!!e}),this.#C=ri(n),this.#L=0,this.#j=null,this.#D=null!=t?t:1024,this.#F=0}get data(){return si(this.#C)}get dataLength(){return this.#C.length}get consumed(){return this.#F}get bytes(){return new Uint8Array(this.#C)}#M(n){if(this.#j)return this.#j.#M(n);this.#L+=n,$o(this.#D<1||this.#L<=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:ri(this.#C),offset:this.#F,length:n,info:{bytesRead:this.#L,dataLength:this.dataLength}})}#G(n,e,t){let r=Math.ceil(e/Ss)*Ss;return this.#F+r>this.#C.length&&(this.allowLoose&&t&&this.#F+e<=this.#C.length?r=e:$o(!1,"data out-of-bounds","BUFFER_OVERRUN",{buffer:ri(this.#C),length:this.#C.length,offset:this.#F+r})),this.#C.slice(this.#F,this.#F+r)}subReader(n){const e=new Vs(this.#C.slice(this.#F+n),this.allowLoose,this.#D);return e.#j=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 xi(this.readBytes(Ss))}readIndex(){return Pi(this.readBytes(Ss))}}function _s(n){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Wrong positive integer: ${n}`)}function Qs(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 Js(n){if("function"!=typeof n||"function"!=typeof n.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");_s(n.outputLen),_s(n.blockLen)}function $s(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 Ws(n,e){Qs(n);const t=e.outputLen;if(n.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}const Zs="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,Ys=n=>n instanceof Uint8Array,Xs=n=>new Uint32Array(n.buffer,n.byteOffset,Math.floor(n.byteLength/4)),nc=n=>new DataView(n.buffer,n.byteOffset,n.byteLength),ec=(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 tc=async()=>{};async function rc(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 tc(),r+=n)}}function ac(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)),!Ys(n))throw new Error("expected Uint8Array, got "+typeof n);return n}class oc{clone(){return this._cloneInto()}}const ic={}.toString;function sc(n,e){if(void 0!==e&&"[object Object]"!==ic.call(e))throw new Error("Options should be object or undefined");return Object.assign(n,e)}function cc(n){const e=e=>n().update(ac(e)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function lc(n=32){if(Zs&&"function"==typeof Zs.getRandomValues)return Zs.getRandomValues(new Uint8Array(n));throw new Error("crypto.getRandomValues must be defined")}class uc extends oc{constructor(n,e){super(),this.finished=!1,this.destroyed=!1,Js(n);const t=ac(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 $s(this),this.iHash.update(n),this}digestInto(n){$s(this),Qs(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 dc=(n,e,t)=>new uc(n,e).update(t).digest();function hc(n,e,t,r){Js(n);const a=sc({dkLen:32,asyncTick:10},r),{c:o,dkLen:i,asyncTick:s}=a;if(_s(o),_s(i),_s(s),o<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const c=ac(e),l=ac(t),u=new Uint8Array(i),d=dc.create(n,c),h=d._cloneInto().update(l);return{c:o,dkLen:i,asyncTick:s,DK:u,PRF:d,PRFSalt:h}}function pc(n,e,t,r){const{c:a,dkLen:o,DK:i,PRF:s,PRFSalt:c}=hc(n,e,t,r);let l;const u=new Uint8Array(4),d=nc(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)}dc.create=(n,e)=>new uc(n,e);class fc extends oc{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=nc(this.buffer)}update(n){$s(this);const{view:e,buffer:t,blockLen:r}=this,a=(n=ac(n)).length;for(let o=0;o<a;){const i=Math.min(r-this.pos,a-o);if(i===r){const e=nc(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){$s(this),Ws(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=nc(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 gc=(n,e,t)=>n&e^~n&t,mc=(n,e,t)=>n&e^n&t^e&t,bc=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]),yc=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),vc=new Uint32Array(64);class wc extends fc{constructor(){super(64,32,8,!1),this.A=0|yc[0],this.B=0|yc[1],this.C=0|yc[2],this.D=0|yc[3],this.E=0|yc[4],this.F=0|yc[5],this.G=0|yc[6],this.H=0|yc[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)vc[t]=n.getUint32(e,!1);for(let n=16;n<64;n++){const e=vc[n-15],t=vc[n-2],r=ec(e,7)^ec(e,18)^e>>>3,a=ec(t,17)^ec(t,19)^t>>>10;vc[n]=a+vc[n-7]+r+vc[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+(ec(i,6)^ec(i,11)^ec(i,25))+gc(i,s,c)+bc[n]+vc[n]|0,u=(ec(t,2)^ec(t,13)^ec(t,22))+mc(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(){vc.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const kc=cc(()=>new wc),Ac=BigInt(2**32-1),Ec=BigInt(32);function xc(n,e=!1){return e?{h:Number(n&Ac),l:Number(n>>Ec&Ac)}:{h:0|Number(n>>Ec&Ac),l:0|Number(n&Ac)}}function Ic(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}=xc(n[a],e);[t[a],r[a]]=[o,i]}return[t,r]}const Pc=(n,e,t)=>n<<t|e>>>32-t,Nc=(n,e,t)=>e<<t|n>>>32-t,zc=(n,e,t)=>e<<t-32|n>>>64-t,Rc=(n,e,t)=>n<<t-32|e>>>64-t;var Tc={fromBig:xc,split:Ic,toBig:(n,e)=>BigInt(n>>>0)<<Ec|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:Pc,rotlSL:Nc,rotlBH:zc,rotlBL:Rc,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[Sc,Bc]=(()=>Tc.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))))(),Cc=new Uint32Array(80),Oc=new Uint32Array(80);class Uc extends fc{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)Cc[t]=n.getUint32(e),Oc[t]=n.getUint32(e+=4);for(let n=16;n<80;n++){const e=0|Cc[n-15],t=0|Oc[n-15],r=Tc.rotrSH(e,t,1)^Tc.rotrSH(e,t,8)^Tc.shrSH(e,t,7),a=Tc.rotrSL(e,t,1)^Tc.rotrSL(e,t,8)^Tc.shrSL(e,t,7),o=0|Cc[n-2],i=0|Oc[n-2],s=Tc.rotrSH(o,i,19)^Tc.rotrBH(o,i,61)^Tc.shrSH(o,i,6),c=Tc.rotrSL(o,i,19)^Tc.rotrBL(o,i,61)^Tc.shrSL(o,i,6),l=Tc.add4L(a,c,Oc[n-7],Oc[n-16]),u=Tc.add4H(l,r,s,Cc[n-7],Cc[n-16]);Cc[n]=0|u,Oc[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=Tc.rotrSH(u,d,14)^Tc.rotrSH(u,d,18)^Tc.rotrBH(u,d,41),y=Tc.rotrSL(u,d,14)^Tc.rotrSL(u,d,18)^Tc.rotrBL(u,d,41),v=u&h^~u&f,w=d&p^~d&g,k=Tc.add5L(b,y,w,Bc[n],Oc[n]),A=Tc.add5H(k,m,e,v,Sc[n],Cc[n]),E=0|k,x=Tc.rotrSH(t,r,28)^Tc.rotrBH(t,r,34)^Tc.rotrBH(t,r,39),I=Tc.rotrSL(t,r,28)^Tc.rotrBL(t,r,34)^Tc.rotrBL(t,r,39),P=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}=Tc.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=Tc.add3L(E,I,N);t=Tc.add3H(z,A,x,P),r=0|z}({h:t,l:r}=Tc.add(0|this.Ah,0|this.Al,0|t,0|r)),({h:a,l:o}=Tc.add(0|this.Bh,0|this.Bl,0|a,0|o)),({h:i,l:s}=Tc.add(0|this.Ch,0|this.Cl,0|i,0|s)),({h:c,l:l}=Tc.add(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:d}=Tc.add(0|this.Eh,0|this.El,0|u,0|d)),({h:h,l:p}=Tc.add(0|this.Fh,0|this.Fl,0|h,0|p)),({h:f,l:g}=Tc.add(0|this.Gh,0|this.Gl,0|f,0|g)),({h:m,l:b}=Tc.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(){Cc.fill(0),Oc.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 Fc=cc(()=>new Uc);const Lc=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")}(),jc=Lc.crypto||Lc.msCrypto;function Dc(n){switch(n){case"sha256":return kc.create();case"sha512":return Fc.create()}Wo(!1,"invalid hashing algorithm name","algorithm",n)}let Mc=!1;const Gc=function(n,e,t){return function(n,e){const t={sha256:kc,sha512:Fc}[n];return Wo(null!=t,"invalid hmac algorithm","algorithm",n),dc.create(t,e)}(n,e).update(t).digest()};let qc=Gc;function Hc(n,e,t){const r=ti(e,"key"),a=ti(t,"data");return si(qc(n,r,a))}Hc._=Gc,Hc.lock=function(){Mc=!0},Hc.register=function(n){if(Mc)throw new Error("computeHmac is locked");qc=n},Object.freeze(Hc);const[Kc,Vc,_c]=[[],[],[]],Qc=BigInt(0),Jc=BigInt(1),$c=BigInt(2),Wc=BigInt(7),Zc=BigInt(256),Yc=BigInt(113);for(let n=0,e=Jc,t=1,r=0;n<24;n++){[t,r]=[r,(2*t+3*r)%5],Kc.push(2*(5*r+t)),Vc.push((n+1)*(n+2)/2%64);let a=Qc;for(let n=0;n<7;n++)e=(e<<Jc^(e>>Wc)*Yc)%Zc,e&$c&&(a^=Jc<<(Jc<<BigInt(n))-Jc);_c.push(a)}const[Xc,nl]=Ic(_c,!0),el=(n,e,t)=>t>32?zc(n,e,t):Pc(n,e,t),tl=(n,e,t)=>t>32?Rc(n,e,t):Nc(n,e,t);class rl extends oc{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,_s(t),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=Xs(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=el(o,i,1)^t[r],c=tl(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=Vc[t],o=el(e,a,r),i=tl(e,a,r),s=Kc[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]^=Xc[r],n[1]^=nl[r]}t.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(n){$s(this);const{blockLen:e,state:t}=this,r=(n=ac(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){$s(this,!1),Qs(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 _s(n),this.xofInto(new Uint8Array(n))}digestInto(n){if(Ws(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 rl(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 al=((n,e,t)=>cc(()=>new rl(e,n,t)))(1,136,32);let ol=!1;const il=function(n){return al(n)};let sl=il;function cl(n){const e=ti(n,"data");return si(sl(e))}cl._=il,cl.lock=function(){ol=!0},cl.register=function(n){if(ol)throw new TypeError("keccak256 is locked");sl=n},Object.freeze(cl);const ll=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),ul=Uint8Array.from({length:16},(n,e)=>e);let dl=[ul],hl=[ul.map(n=>(9*n+5)%16)];for(let n=0;n<4;n++)for(let e of[dl,hl])e.push(e[n].map(n=>ll[n]));const pl=[[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)),fl=dl.map((n,e)=>n.map(n=>pl[e][n])),gl=hl.map((n,e)=>n.map(n=>pl[e][n])),ml=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),bl=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),yl=(n,e)=>n<<e|n>>>32-e;function vl(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 wl=new Uint32Array(16);class kl extends fc{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)wl[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=ml[n],p=bl[n],f=dl[n],g=hl[n],m=fl[n],b=gl[n];for(let e=0;e<16;e++){const r=yl(t+vl(n,a,i,c)+wl[f[e]]+h,m[e])+u|0;t=u,u=c,c=0|yl(i,10),i=a,a=r}for(let n=0;n<16;n++){const t=yl(r+vl(e,o,s,l)+wl[g[n]]+p,b[n])+d|0;r=d,d=l,l=0|yl(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(){wl.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const Al=cc(()=>new kl);let El=!1;const xl=function(n){return Al(n)};let Il=xl;function Pl(n){const e=ti(n,"data");return si(Il(e))}Pl._=xl,Pl.lock=function(){El=!0},Pl.register=function(n){if(El)throw new TypeError("ripemd160 is locked");Il=n},Object.freeze(Pl);let Nl=!1;const zl=function(n,e,t,r,a){return function(n,e,t,r,a){const o={sha256:kc,sha512:Fc}[a];return Wo(null!=o,"invalid pbkdf2 algorithm","algorithm",a),pc(o,n,e,{c:t,dkLen:r})}(n,e,t,r,a)};let Rl=zl;function Tl(n,e,t,r,a){const o=ti(n,"password"),i=ti(e,"salt");return si(Rl(o,i,t,r,a))}Tl._=zl,Tl.lock=function(){Nl=!0},Tl.register=function(n){if(Nl)throw new Error("pbkdf2 is locked");Rl=n},Object.freeze(Tl);let Sl=!1;const Bl=function(n){return new Uint8Array(function(n){$o(null!=jc,"platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"}),Wo(Number.isInteger(n)&&n>0&&n<=1024,"invalid length","length",n);const e=new Uint8Array(n);return jc.getRandomValues(e),e}(n))};let Cl=Bl;function Ol(n){return Cl(n)}Ol._=Bl,Ol.lock=function(){Sl=!0},Ol.register=function(n){if(Sl)throw new Error("randomBytes is locked");Cl=n},Object.freeze(Ol);const Ul=(n,e)=>n<<e|n>>>32-e;function Fl(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,I=l,P=u,N=d,z=h,R=p,T=f,S=g,B=m,C=b,O=y,U=v,F=w,L=k;for(let n=0;n<8;n+=2)P^=Ul(A+O|0,7),T^=Ul(P+A|0,9),O^=Ul(T+P|0,13),A^=Ul(O+T|0,18),S^=Ul(N+E|0,7),U^=Ul(S+N|0,9),E^=Ul(U+S|0,13),N^=Ul(E+U|0,18),F^=Ul(B+z|0,7),x^=Ul(F+B|0,9),z^=Ul(x+F|0,13),B^=Ul(z+x|0,18),I^=Ul(L+C|0,7),R^=Ul(I+L|0,9),C^=Ul(R+I|0,13),L^=Ul(C+R|0,18),E^=Ul(A+I|0,7),x^=Ul(E+A|0,9),I^=Ul(x+E|0,13),A^=Ul(I+x|0,18),z^=Ul(N+P|0,7),R^=Ul(z+N|0,9),P^=Ul(R+z|0,13),N^=Ul(P+R|0,18),C^=Ul(B+S|0,7),T^=Ul(C+B|0,9),S^=Ul(T+C|0,13),B^=Ul(S+T|0,18),O^=Ul(L+F|0,7),U^=Ul(O+L|0,9),F^=Ul(U+O|0,13),L^=Ul(F+U|0,18);a[o++]=i+A|0,a[o++]=s+E|0,a[o++]=c+x|0,a[o++]=l+I|0,a[o++]=u+P|0,a[o++]=d+N|0,a[o++]=h+z|0,a[o++]=p+R|0,a[o++]=f+T|0,a[o++]=g+S|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+L|0}function Ll(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)Fl(t,i,n,e,t,o),r>0&&(i+=16),Fl(t,o,n,e+=16,t,i)}function jl(n,e,t){const r=sc({dkLen:32,asyncTick:10,maxmem:1073742848},t),{N:a,r:o,p:i,dkLen:s,asyncTick:c,maxmem:l,onProgress:u}=r;if(_s(a),_s(o),_s(i),_s(s),_s(c),_s(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=pc(kc,n,e,{c:1,dkLen:d*i}),g=Xs(f),m=Xs(new Uint8Array(d*a)),b=Xs(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 Dl(n,e,t,r,a){const o=pc(kc,n,t,{c:1,dkLen:e});return t.fill(0),r.fill(0),a.fill(0),o}let Ml=!1,Gl=!1;const ql=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}=jl(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 rc(r-1,p,()=>{Ll(c,t,c,t+=s,a),h()}),Ll(c,(r-1)*s,l,e,a),h(),await rc(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];Ll(d,0,l,e,a),h()})}return Dl(n,i,u,c,d)}(n,e,{N:t,r:r,p:a,dkLen:o,onProgress:i})},Hl=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}=jl(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++)Ll(c,e,c,e+=s,a),h();Ll(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];Ll(d,0,l,e,a),h()}}return Dl(n,i,u,c,d)}(n,e,{N:t,r:r,p:a,dkLen:o})};let Kl=ql,Vl=Hl;async function _l(n,e,t,r,a,o,i){const s=ti(n,"passwd"),c=ti(e,"salt");return si(await Kl(s,c,t,r,a,o,i))}function Ql(n,e,t,r,a,o){const i=ti(n,"passwd"),s=ti(e,"salt");return si(Vl(i,s,t,r,a,o))}_l._=ql,_l.lock=function(){Gl=!0},_l.register=function(n){if(Gl)throw new Error("scrypt is locked");Kl=n},Object.freeze(_l),Ql._=Hl,Ql.lock=function(){Ml=!0},Ql.register=function(n){if(Ml)throw new Error("scryptSync is locked");Vl=n},Object.freeze(Ql);const Jl=function(n){return Dc("sha256").update(n).digest()},$l=function(n){return Dc("sha512").update(n).digest()};let Wl=Jl,Zl=$l,Yl=!1,Xl=!1;function nu(n){const e=ti(n,"data");return si(Wl(e))}function eu(n){const e=ti(n,"data");return si(Zl(e))}nu._=Jl,nu.lock=function(){Yl=!0},nu.register=function(n){if(Yl)throw new Error("sha256 is locked");Wl=n},Object.freeze(nu),eu._=$l,eu.lock=function(){Xl=!0},eu.register=function(n){if(Xl)throw new Error("sha512 is locked");Zl=n},Object.freeze(nu);
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
5
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
6
- const tu=BigInt(0),ru=BigInt(1),au=BigInt(2),ou=n=>n instanceof Uint8Array,iu=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function su(n){if(!ou(n))throw new Error("Uint8Array expected");let e="";for(let t=0;t<n.length;t++)e+=iu[n[t]];return e}function cu(n){const e=n.toString(16);return 1&e.length?`0${e}`:e}function lu(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);return BigInt(""===n?"0":`0x${n}`)}function uu(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 du(n){return lu(su(n))}function hu(n){if(!ou(n))throw new Error("Uint8Array expected");return lu(su(Uint8Array.from(n).reverse()))}function pu(n,e){return uu(n.toString(16).padStart(2*e,"0"))}function fu(n,e){return pu(n,e).reverse()}function gu(n,e,t){let r;if("string"==typeof e)try{r=uu(e)}catch(t){throw new Error(`${n} must be valid hex string, got "${e}". Cause: ${t}`)}else{if(!ou(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 mu(...n){const e=new Uint8Array(n.reduce((n,e)=>n+e.length,0));let t=0;return n.forEach(n=>{if(!ou(n))throw new Error("Uint8Array expected");e.set(n,t),t+=n.length}),e}const bu=n=>(au<<BigInt(n-1))-ru,yu=n=>new Uint8Array(n),vu=n=>Uint8Array.from(n);function wu(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=yu(n),a=yu(n),o=0;const i=()=>{r.fill(1),a.fill(0),o=0},s=(...n)=>t(a,r,...n),c=(n=yu())=>{a=s(vu([0]),n),r=s(),0!==n.length&&(a=s(vu([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 mu(...t)};return(n,e)=>{let t;for(i(),c(n);!(t=e(l()));)c();return i(),t}}const ku={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 Au(n,e,t={}){const r=(e,t,r)=>{const a=ku[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 Eu=Object.freeze({__proto__:null,bytesToHex:su,numberToHexUnpadded:cu,hexToNumber:lu,hexToBytes:uu,bytesToNumberBE:du,bytesToNumberLE:hu,numberToBytesBE:pu,numberToBytesLE:fu,numberToVarBytesBE:function(n){return uu(cu(n))},ensureBytes:gu,concatBytes:mu,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>tu;n>>=ru,e+=1);return e},bitGet:function(n,e){return n>>BigInt(e)&ru},bitSet:(n,e,t)=>n|(t?ru:tu)<<BigInt(e),bitMask:bu,createHmacDrbg:wu,validateObject:Au});
7
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const xu=BigInt(0),Iu=BigInt(1),Pu=BigInt(2),Nu=BigInt(3),zu=BigInt(4),Ru=BigInt(5),Tu=BigInt(8);function Su(n,e){const t=n%e;return t>=xu?t:e+t}function Bu(n,e,t){if(t<=xu||e<xu)throw new Error("Expected power/modulo > 0");if(t===Iu)return xu;let r=Iu;for(;e>xu;)e&Iu&&(r=r*n%t),n=n*n%t,e>>=Iu;return r}function Cu(n,e,t){let r=n;for(;e-- >xu;)r*=r,r%=t;return r}function Ou(n,e){if(n===xu||e<=xu)throw new Error(`invert: expected positive integers, got n=${n} mod=${e}`);let t=Su(n,e),r=e,a=xu,o=Iu;for(;t!==xu;){const n=r%t,e=a-o*(r/t);r=t,t=n,a=o,o=e}if(r!==Iu)throw new Error("invert: does not exist");return Su(a,e)}function Uu(n){if(n%zu===Nu){const e=(n+Iu)/zu;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%Tu===Ru){const e=(n-Ru)/Tu;return function(n,t){const r=n.mul(t,Pu),a=n.pow(r,e),o=n.mul(t,a),i=n.mul(n.mul(o,Pu),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-Iu)/Pu;let t,r,a;for(t=n-Iu,r=0;t%Pu===xu;t/=Pu,r++);for(a=Pu;a<n&&Bu(a,e,n)!==n-Iu;a++);if(1===r){const e=(n+Iu)/zu;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+Iu)/Pu;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,Iu<<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 Fu=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Lu(n,e){const t=void 0!==e?e:n.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}function ju(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 Du(n){const e=ju(n);return e+Math.ceil(e/2)}
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
8
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
9
- const Mu=BigInt(0),Gu=BigInt(1);function qu(n){return Au(n.Fp,Fu.reduce((n,e)=>(n[e]="function",n),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),Au(n,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Lu(n.n,n.nBitLength),...n,p:n.Fp.ORDER})}
10
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const{bytesToNumberBE:Hu,hexToBytes:Ku}=Eu,Vu={Err:class extends Error{constructor(n=""){super(n)}},_parseInt(n){const{Err:e}=Vu;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:Hu(r),l:n.subarray(t+2)}},toSig(n){const{Err:e}=Vu,t="string"==typeof n?Ku(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}=Vu._parseInt(t.subarray(2)),{d:i,l:s}=Vu._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}`}},_u=BigInt(0),Qu=BigInt(1);BigInt(2);const Ju=BigInt(3);function $u(n){const e=function(n){const e=qu(n);Au(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 mu(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&&_u<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=su(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:du(gu("private key",n,r))}catch(e){throw new Error(`private key must be ${r} bytes, hex or bigint, not ${typeof n}`)}return a&&(i=Su(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(gu("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,Ju),{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,Ju);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===_u)return r;if(s(n),n===Qu)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>_u||l>_u;)i&Qu&&(u=u.add(f)),l&Qu&&(h=h.add(f)),f=f.double(),i>>=Qu,l>>=Qu;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!==_u&&e!==Qu&&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===Qu)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===Qu?this:t?t(d,this):this.multiplyUnsafe(e.h)}toRawBytes(n=!0){return this.assertValidity(),r(d,this,n)}toHex(n=!0){return su(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>Mu;)t&Gu&&(r=r.add(a)),a=a.double(),t>>=Gu;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+=Gu);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 Wu(n){const e=function(n){const e=qu(n);return Au(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 Su(n,r)}function s(n){return Ou(n,r)}const{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:d}=$u({...e,toBytes(n,e,r){const a=e.toAffine(),o=t.toBytes(a.x),i=mu;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=du(i);if(!(_u<(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&Qu)===Qu)&&(a=t.neg(a)),{x:n,y:a}}var s}}),h=n=>su(pu(n,e.nByteLength));function p(n){return n>r>>Qu}const f=(n,e,t)=>du(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=gu("compactSignature",n,2*t),new g(f(n,0,t),f(n,t,2*t))}static fromDER(n){const{r:e,s:t}=Vu.toSig(gu("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(gu("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 uu(this.toDERHex())}toDERHex(){return Vu.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return uu(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=Du(e.n);return function(n,e,t=!1){const r=n.length,a=ju(e),o=Du(e);if(r<16||r<o||r>1024)throw new Error(`expected ${o}-1024 bytes of input, got ${r}`);const i=Su(t?du(n):hu(n),e-Iu)+Iu;return t?fu(i,a):pu(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=du(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=bu(e.nBitLength);function k(n){if("bigint"!=typeof n)throw new Error("bigint expected");if(!(_u<=n&&n<w))throw new Error(`bigint expected < 2^${e.nBitLength}`);return pu(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=gu("msgHash",n),f&&(n=gu("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(gu("extraEntropy",n))}const x=mu(...A),I=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===_u)return;const o=i(t*i(I+a*w));if(o===_u)return;let l=(r.x===a?0:2)|Number(r.y&Qu),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 wu(i.hash.outputLen,i.nByteLength,i.hmac)(a,o)},verify:function(n,t,r,a=x){const o=n;if(t=gu("msgHash",t),r=gu("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 Vu.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 Zu(n){return{hash:n,hmac:(e,...t)=>dc(n,e,function(...n){const e=new Uint8Array(n.reduce((n,e)=>n+e.length,0));let t=0;return n.forEach(n=>{if(!Ys(n))throw new Error("Uint8Array expected");e.set(n,t),t+=n.length}),e}(...t)),randomBytes:lc}}BigInt(4);
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
12
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
13
- const Yu=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Xu=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),nd=BigInt(1),ed=BigInt(2),td=(n,e)=>(n+e/ed)/e;const rd=function(n,e,t=!1,r={}){if(n<=xu)throw new Error(`Expected Field ORDER > 0, got ${n}`);const{nBitLength:a,nByteLength:o}=Lu(n,e);if(o>2048)throw new Error("Field lengths over 2048 bytes are not supported");const i=Uu(n),s=Object.freeze({ORDER:n,BITS:a,BYTES:o,MASK:bu(a),ZERO:xu,ONE:Iu,create:e=>Su(e,n),isValid:e=>{if("bigint"!=typeof e)throw new Error("Invalid field element: expected bigint, got "+typeof e);return xu<=e&&e<n},is0:n=>n===xu,isOdd:n=>(n&Iu)===Iu,neg:e=>Su(-e,n),eql:(n,e)=>n===e,sqr:e=>Su(e*e,n),add:(e,t)=>Su(e+t,n),sub:(e,t)=>Su(e-t,n),mul:(e,t)=>Su(e*t,n),pow:(n,e)=>function(n,e,t){if(t<xu)throw new Error("Expected power > 0");if(t===xu)return n.ONE;if(t===Iu)return e;let r=n.ONE,a=e;for(;t>xu;)t&Iu&&(r=n.mul(r,a)),a=n.sqr(a),t>>=Iu;return r}(s,n,e),div:(e,t)=>Su(e*Ou(t,n),n),sqrN:n=>n*n,addN:(n,e)=>n+e,subN:(n,e)=>n-e,mulN:(n,e)=>n*e,inv:e=>Ou(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?fu(n,o):pu(n,o),fromBytes:n=>{if(n.length!==o)throw new Error(`Fp.fromBytes: expected ${o}, got ${n.length}`);return t?hu(n):du(n)}});return Object.freeze(s)}(Yu,void 0,void 0,{sqrt:function(n){const e=Yu,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=Cu(u,t,e)*u%e,h=Cu(d,t,e)*u%e,p=Cu(h,ed,e)*l%e,f=Cu(p,a,e)*p%e,g=Cu(f,o,e)*f%e,m=Cu(g,s,e)*g%e,b=Cu(m,c,e)*m%e,y=Cu(b,s,e)*g%e,v=Cu(y,t,e)*u%e,w=Cu(v,i,e)*f%e,k=Cu(w,r,e)*l%e,A=Cu(k,ed,e);if(!rd.eql(rd.sqr(A),n))throw new Error("Cannot find square root");return A}}),ad=function(n,e){const t=e=>Wu({...n,...Zu(e)});return Object.freeze({...t(e),create:t})}({a:BigInt(0),b:BigInt(7),Fp:rd,n:Xu,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=Xu,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-nd*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),s=td(o*n,e),c=td(-r*n,e);let l=Su(n-s*t-c*a,e),u=Su(-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}}}},kc);BigInt(0),ad.ProjectivePoint;const od="0x0000000000000000000000000000000000000000",id="0x0000000000000000000000000000000000000000000000000000000000000000",sd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),cd=BigInt("1000000000000000000"),ld=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),ud=BigInt("0x8000000000000000000000000000000000000000000000000000000000000000")*BigInt(-1),dd=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),hd="Ethereum Signed Message:\n",pd=BigInt(0),fd=BigInt(1),gd=BigInt(2),md=BigInt(27),bd=BigInt(28),yd=BigInt(35),vd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),wd=vd/gd,kd=Symbol.for("nodejs.util.inspect.custom"),Ad={};function Ed(n){return pi(zi(n),32)}class xd{#q;#H;#K;#V;get r(){return this.#q}set r(n){Wo(32===li(n),"invalid r","value",n),this.#q=si(n)}get s(){return Wo(parseInt(this.#H.substring(0,3))<8,"non-canonical s; use ._s","s",this.#H),this.#H}set s(n){Wo(32===li(n),"invalid s","value",n),this.#H=si(n)}get _s(){return this.#H}isValid(){return BigInt(this.#H)<=wd}get v(){return this.#K}set v(n){const e=Ii(n,"value");Wo(27===e||28===e,"invalid v","v",n),this.#K=e}get networkV(){return this.#V}get legacyChainId(){const n=this.networkV;return null==n?null:xd.getChainId(n)}get yParity(){return 27===this.v?0:1}get yParityAndS(){const n=ti(this.s);return this.yParity&&(n[0]|=128),si(n)}get compactSerialized(){return ci([this.r,this.yParityAndS])}get serialized(){return ci([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(n,e,t,r){ni(n,Ad,"Signature"),this.#q=e,this.#H=t,this.#K=r,this.#V=null}getCanonical(){if(this.isValid())return this;const n=vd-BigInt(this._s),e=55-this.v,t=new xd(Ad,this.r,Ed(n),e);return this.networkV&&(t.#V=this.networkV),t}clone(){const n=new xd(Ad,this.r,this._s,this.v);return this.networkV&&(n.#V=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}}[kd](){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=ki(n,"v");return e==md||e==bd?pd:(Wo(e>=yd,"invalid EIP-155 v","v",n),(e-yd)/gd)}static getChainIdV(n,e){return ki(n)*gd+BigInt(35+e-27)}static getNormalizedV(n){const e=ki(n);return e===pd||e===md?27:e===fd||e===bd?28:(Wo(e>=yd,"invalid v","v",n),e&fd?27:28)}static from(n){function e(e,t){Wo(e,t,"signature",n)}if(null==n)return new xd(Ad,id,id,27);if("string"==typeof n){const t=ti(n,"signature");if(64===t.length){const n=si(t.slice(0,32)),e=t.slice(32,64),r=128&e[0]?28:27;return e[0]&=127,new xd(Ad,n,si(e),r)}if(65===t.length){const n=si(t.slice(0,32)),e=si(t.slice(32,64)),r=xd.getNormalizedV(t[64]);return new xd(Ad,n,e,r)}e(!1,"invalid raw signature length")}if(n instanceof xd)return n.clone();const t=n.r;e(null!=t,"missing r");const r=Ed(t),a=function(n,t){if(null!=n)return Ed(n);if(null!=t){e(ai(t,32),"invalid yParityAndS");const n=ti(t);return n[0]&=127,si(n)}e(!1,"missing s")}(n.s,n.yParityAndS),{networkV:o,v:i}=function(n,t,r){if(null!=n){const e=ki(n);return{networkV:e>=yd?e:void 0,v:xd.getNormalizedV(e)}}if(null!=t)return e(ai(t,32),"invalid yParityAndS"),{v:128&ti(t)[0]?28:27};if(null!=r){switch(Ii(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 xd(Ad,r,a,i);return o&&(s.#V=o),e(null==n.yParity||Ii(n.yParity,"sig.yParity")===s.yParity,"yParity mismatch"),e(null==n.yParityAndS||n.yParityAndS===s.yParityAndS,"yParityAndS mismatch"),s}}class Id{#_;constructor(n){Wo(32===li(n),"invalid private key","privateKey","[REDACTED]"),this.#_=si(n)}get privateKey(){return this.#_}get publicKey(){return Id.computePublicKey(this.#_)}get compressedPublicKey(){return Id.computePublicKey(this.#_,!0)}sign(n){Wo(32===li(n),"invalid digest length","digest",n);const e=ad.sign(ri(n),ri(this.#_),{lowS:!0});return xd.from({r:Ni(e.r,32),s:Ni(e.s,32),v:e.recovery?28:27})}computeSharedSecret(n){const e=Id.computePublicKey(n);return si(ad.getSharedSecret(ri(this.#_),ti(e),!1))}static computePublicKey(n,e){let t=ti(n,"key");if(32===t.length){return si(ad.getPublicKey(t,!!e))}if(64===t.length){const n=new Uint8Array(65);n[0]=4,n.set(t,1),t=n}return si(ad.ProjectivePoint.fromHex(t).toRawBytes(e))}static recoverPublicKey(n,e){Wo(32===li(n),"invalid digest length","digest",n);const t=xd.from(e);let r=ad.Signature.fromCompact(ri(ci([t.r,t.s])));r=r.addRecoveryBit(t.yParity);const a=r.recoverPublicKey(ri(n));return Wo(null!=a,"invalid signature for digest","signature",e),"0x"+a.toHex(!1)}static addPoints(n,e,t){const r=ad.ProjectivePoint.fromHex(Id.computePublicKey(n).substring(2)),a=ad.ProjectivePoint.fromHex(Id.computePublicKey(e).substring(2));return"0x"+r.add(a).toHex(!!t)}}function Pd(){Hc.lock(),cl.lock(),Tl.lock(),Ol.lock(),Pl.lock(),_l.lock(),Ql.lock(),nu.lock(),eu.lock(),Ol.lock()}const Nd=BigInt(0),zd=BigInt(36);function Rd(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=ti(cl(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 Td={};for(let n=0;n<10;n++)Td[String(n)]=String(n);for(let n=0;n<26;n++)Td[String.fromCharCode(65+n)]=String(10+n);function Sd(n){let e=(n=(n=n.toUpperCase()).substring(4)+n.substring(0,2)+"00").split("").map(n=>Td[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 Bd=function(){const n={};for(let e=0;e<36;e++){n["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return n}();function Cd(n){if(Wo("string"==typeof n,"invalid address","address",n),n.match(/^(0x)?[0-9a-fA-F]{40}$/)){n.startsWith("0x")||(n="0x"+n);const e=Rd(n);return Wo(!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}$/)){Wo(n.substring(2,4)===Sd(n),"bad icap checksum","address",n);let e=function(n){n=n.toLowerCase();let e=Nd;for(let t=0;t<n.length;t++)e=e*zd+Bd[n[t]];return e}(n.substring(4)).toString(16);for(;e.length<40;)e="0"+e;return Rd("0x"+e)}Wo(!1,"invalid address","address",n)}function Od(n){let e=BigInt(Cd(n)).toString(36).toUpperCase();for(;e.length<30;)e="0"+e;return"XE"+Sd("XE00"+e)+e}function Ud(n){const e=Cd(n.from);let t=ki(n.nonce,"tx.nonce").toString(16);return t="0"===t?"0x":t.length%2?"0x0"+t:"0x"+t,Cd(ui(cl(xs([e,t])),12))}function Fd(n,e,t){const r=Cd(n),a=ti(e,"salt"),o=ti(t,"initCodeHash");return Wo(32===a.length,"salt must be 32 bytes","salt",e),Wo(32===o.length,"initCodeHash must be 32 bytes","initCodeHash",t),Cd(ui(cl(ci(["0xff",r,a,o])),12))}function Ld(n){return n&&"function"==typeof n.getAddress}function jd(n){try{return Cd(n),!0}catch(n){}return!1}async function Dd(n,e){const t=await e;return null!=t&&"0x0000000000000000000000000000000000000000"!==t||($o("string"!=typeof n,"unconfigured name","UNCONFIGURED_NAME",{value:n}),Wo(!1,"invalid AddressLike value; did not resolve to a value address","target",n)),Cd(t)}function Md(n,e){return"string"==typeof n?n.match(/^0x[0-9a-f]{40}$/i)?Cd(n):($o(null!=e,"ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"}),Dd(n,e.resolveName(n))):Ld(n)?Dd(n,n.getAddress()):n&&"function"==typeof n.then?Dd(n,n):void Wo(!1,"unsupported addressable value","target",n)}const Gd={};function qd(n,e){let t=!1;return e<0&&(t=!0,e*=-1),new Vd(Gd,`${t?"":"u"}int${e}`,n,{signed:t,width:e})}function Hd(n,e){return new Vd(Gd,`bytes${e||""}`,n,{size:e})}const Kd=Symbol.for("_ethers_typed");class Vd{type;value;#Q;_typedSymbol;constructor(n,e,t,r){null==r&&(r=null),ni(Gd,n,"Typed"),Ko(this,{_typedSymbol:Kd,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 Vd(Gd,n,e)}static uint8(n){return qd(n,8)}static uint16(n){return qd(n,16)}static uint24(n){return qd(n,24)}static uint32(n){return qd(n,32)}static uint40(n){return qd(n,40)}static uint48(n){return qd(n,48)}static uint56(n){return qd(n,56)}static uint64(n){return qd(n,64)}static uint72(n){return qd(n,72)}static uint80(n){return qd(n,80)}static uint88(n){return qd(n,88)}static uint96(n){return qd(n,96)}static uint104(n){return qd(n,104)}static uint112(n){return qd(n,112)}static uint120(n){return qd(n,120)}static uint128(n){return qd(n,128)}static uint136(n){return qd(n,136)}static uint144(n){return qd(n,144)}static uint152(n){return qd(n,152)}static uint160(n){return qd(n,160)}static uint168(n){return qd(n,168)}static uint176(n){return qd(n,176)}static uint184(n){return qd(n,184)}static uint192(n){return qd(n,192)}static uint200(n){return qd(n,200)}static uint208(n){return qd(n,208)}static uint216(n){return qd(n,216)}static uint224(n){return qd(n,224)}static uint232(n){return qd(n,232)}static uint240(n){return qd(n,240)}static uint248(n){return qd(n,248)}static uint256(n){return qd(n,256)}static uint(n){return qd(n,256)}static int8(n){return qd(n,-8)}static int16(n){return qd(n,-16)}static int24(n){return qd(n,-24)}static int32(n){return qd(n,-32)}static int40(n){return qd(n,-40)}static int48(n){return qd(n,-48)}static int56(n){return qd(n,-56)}static int64(n){return qd(n,-64)}static int72(n){return qd(n,-72)}static int80(n){return qd(n,-80)}static int88(n){return qd(n,-88)}static int96(n){return qd(n,-96)}static int104(n){return qd(n,-104)}static int112(n){return qd(n,-112)}static int120(n){return qd(n,-120)}static int128(n){return qd(n,-128)}static int136(n){return qd(n,-136)}static int144(n){return qd(n,-144)}static int152(n){return qd(n,-152)}static int160(n){return qd(n,-160)}static int168(n){return qd(n,-168)}static int176(n){return qd(n,-176)}static int184(n){return qd(n,-184)}static int192(n){return qd(n,-192)}static int200(n){return qd(n,-200)}static int208(n){return qd(n,-208)}static int216(n){return qd(n,-216)}static int224(n){return qd(n,-224)}static int232(n){return qd(n,-232)}static int240(n){return qd(n,-240)}static int248(n){return qd(n,-248)}static int256(n){return qd(n,-256)}static int(n){return qd(n,-256)}static bytes1(n){return Hd(n,1)}static bytes2(n){return Hd(n,2)}static bytes3(n){return Hd(n,3)}static bytes4(n){return Hd(n,4)}static bytes5(n){return Hd(n,5)}static bytes6(n){return Hd(n,6)}static bytes7(n){return Hd(n,7)}static bytes8(n){return Hd(n,8)}static bytes9(n){return Hd(n,9)}static bytes10(n){return Hd(n,10)}static bytes11(n){return Hd(n,11)}static bytes12(n){return Hd(n,12)}static bytes13(n){return Hd(n,13)}static bytes14(n){return Hd(n,14)}static bytes15(n){return Hd(n,15)}static bytes16(n){return Hd(n,16)}static bytes17(n){return Hd(n,17)}static bytes18(n){return Hd(n,18)}static bytes19(n){return Hd(n,19)}static bytes20(n){return Hd(n,20)}static bytes21(n){return Hd(n,21)}static bytes22(n){return Hd(n,22)}static bytes23(n){return Hd(n,23)}static bytes24(n){return Hd(n,24)}static bytes25(n){return Hd(n,25)}static bytes26(n){return Hd(n,26)}static bytes27(n){return Hd(n,27)}static bytes28(n){return Hd(n,28)}static bytes29(n){return Hd(n,29)}static bytes30(n){return Hd(n,30)}static bytes31(n){return Hd(n,31)}static bytes32(n){return Hd(n,32)}static address(n){return new Vd(Gd,"address",n)}static bool(n){return new Vd(Gd,"bool",!!n)}static bytes(n){return new Vd(Gd,"bytes",n)}static string(n){return new Vd(Gd,"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 Vd(Gd,"overrides",Object.assign({},n))}static isTyped(n){return n&&"object"==typeof n&&"_typedSymbol"in n&&n._typedSymbol===Kd}static dereference(n,e){if(Vd.isTyped(n)){if(n.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${n.type}`);return n.value}return n}}class _d extends Hs{constructor(n){super("address","address",n,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(n,e){let t=Vd.dereference(e,"string");try{t=Cd(t)}catch(n){return this._throwError(n.message,e)}return n.writeValue(t)}decode(n){return Cd(Ni(n.readValue(),20))}}class Qd extends Hs{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 Jd(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 $o(r,"cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:t}),$o(!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 Wo(!1,"invalid tuple value","tuple",t);Wo(e.length===r.length,"types/value length mismatch","tuple",t);let a=new Ks,o=new Ks,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 $d(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(_o(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(_o(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)}),Ms.fromItems(t,r)}class Wd extends Hs{coder;length;constructor(n,e,t){super("array",n.type+"["+(e>=0?e:"")+"]",t,-1===e||n.dynamic),Ko(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=Vd.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)),Zo(t.length,r,"coder array"+(this.localName?" "+this.localName:""));let a=[];for(let n=0;n<t.length;n++)a.push(this.coder);return Jd(n,a,t)}decode(n){let e=this.length;-1===e&&(e=n.readIndex(),$o(e*Ss<=n.dataLength,"insufficient data length","BUFFER_OVERRUN",{buffer:n.bytes,offset:e*Ss,length:n.dataLength}));let t=[];for(let n=0;n<e;n++)t.push(new Qd(this.coder));return $d(n,t)}}class Zd extends Hs{constructor(n){super("bool","bool",n,!1)}defaultValue(){return!1}encode(n,e){const t=Vd.dereference(e,"bool");return n.writeValue(t?1:0)}decode(n){return!!n.readValue()}}class Yd extends Hs{constructor(n,e){super(n,n,e,!0)}defaultValue(){return"0x"}encode(n,e){e=ri(e);let t=n.writeValue(e.length);return t+=n.writeBytes(e),t}decode(n){return n.readBytes(n.readIndex(),!0)}}class Xd extends Yd{constructor(n){super("bytes",n)}decode(n){return si(super.decode(n))}}class nh extends Hs{size;constructor(n,e){let t="bytes"+String(n);super(t,t,e,!1),Ko(this,{size:n},{size:"number"})}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(n,e){let t=ri(Vd.dereference(e,this.type));return t.length!==this.size&&this._throwError("incorrect data length",e),n.writeBytes(t)}decode(n){return si(n.readBytes(this.size))}}const eh=new Uint8Array([]);class th extends Hs{constructor(n){super("null","",n,!1)}defaultValue(){return null}encode(n,e){return null!=e&&this._throwError("not null",e),n.writeBytes(eh)}decode(n){return n.readBytes(0),null}}const rh=BigInt(0),ah=BigInt(1),oh=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class ih extends Hs{size;signed;constructor(n,e,t){const r=(e?"int":"uint")+8*n;super(r,r,t,!1),Ko(this,{size:n,signed:e},{size:"number",signed:"boolean"})}defaultValue(){return 0}encode(n,e){let t=ki(Vd.dereference(e,this.type)),r=wi(oh,256);if(this.signed){let n=wi(r,8*this.size-1);(t>n||t<-(n+ah))&&this._throwError("value out-of-bounds",e),t=vi(t,256)}else(t<rh||t>wi(r,8*this.size))&&this._throwError("value out-of-bounds",e);return n.writeValue(t)}decode(n){let e=wi(n.readValue(),8*this.size);return this.signed&&(e=yi(e,8*this.size)),e}}class sh extends Yd{constructor(n){super("string",n)}defaultValue(){return""}encode(n,e){return super.encode(n,Hi(Vd.dereference(e,"string")))}decode(n){return Ki(super.decode(n))}}class ch extends Hs{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),Ko(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=Vd.dereference(e,"tuple");return Jd(n,this.coders,t)}decode(n){return $d(n,this.coders)}}function lh(n,e){return{address:Cd(n),storageKeys:e.map((n,e)=>(Wo(ai(n,32),"invalid slot",`storageKeys[${e}]`,n),n.toLowerCase()))}}function uh(n){if(Array.isArray(n))return n.map((e,t)=>Array.isArray(e)?(Wo(2===e.length,"invalid slot set",`value[${t}]`,e),lh(e[0],e[1])):(Wo(null!=e&&"object"==typeof e,"invalid address-slot set","value",n),lh(e.address,e.storageKeys)));Wo(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 lh(e,Object.keys(t).sort())});return e.sort((n,e)=>n.address.localeCompare(e.address)),e}function dh(n){return{address:Cd(n.address),nonce:ki(null!=n.nonce?n.nonce:0),chainId:ki(null!=n.chainId?n.chainId:0),signature:xd.from(n.signature)}}function hh(n){let e;return e="string"==typeof n?Id.computePublicKey(n,!1):n.publicKey,Cd(cl("0x"+e.substring(4)).substring(26))}function ph(n,e){return hh(Id.recoverPublicKey(n,e))}const fh=BigInt(0),gh=BigInt(2),mh=BigInt(27),bh=BigInt(28),yh=BigInt(35),vh=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),wh=Symbol.for("nodejs.util.inspect.custom"),kh=131072,Ah=128;function Eh(n,e){let t=n.toString(16);for(;t.length<2;)t="0"+t;return t+=nu(e).substring(4),"0x"+t}function xh(n){return"0x"===n?null:Cd(n)}function Ih(n,e){try{return uh(n)}catch(t){Wo(!1,t.message,e,n)}}function Ph(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:xh(r[1]),nonce:zh(r[2],"nonce"),chainId:zh(r[0],"chainId"),signature:xd.from({yParity:Nh(r[3],"yParity"),r:pi(r[4],32),s:pi(r[5],32)})})}return e}catch(t){Wo(!1,t.message,e,n)}}function Nh(n,e){return"0x"===n?0:Ii(n,e)}function zh(n,e){if("0x"===n)return fh;const t=ki(n,e);return Wo(t<=vh,"value exceeds uint size",e,t),t}function Rh(n,e){const t=ki(n,"value"),r=zi(t);return Wo(r.length<=32,"value too large",`tx.${e}`,t),r}function Th(n){return uh(n).map(n=>[n.address,n.storageKeys])}function Sh(n,e){Wo(Array.isArray(n),`invalid ${e}`,"value",n);for(let e=0;e<n.length;e++)Wo(ai(n[e],32),"invalid ${ param } hash",`value[${e}]`,n[e]);return n}function Bh(n,e){let t;try{if(t=Nh(e[0],"yParity"),0!==t&&1!==t)throw new Error("bad yParity")}catch(n){Wo(!1,"invalid yParity","yParity",e[0])}const r=pi(e[1],32),a=pi(e[2],32),o=xd.from({r:r,s:a,yParity:t});n.signature=o}class Ch{#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:Wo(!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?od:n}set to(n){this.#$=null==n?null:Cd(n)}get nonce(){return this.#W}set nonce(n){this.#W=Ii(n,"value")}get gasLimit(){return this.#Z}set gasLimit(n){this.#Z=ki(n)}get gasPrice(){const n=this.#Y;return null!=n||0!==this.type&&1!==this.type?n:fh}set gasPrice(n){this.#Y=null==n?null:ki(n,"gasPrice")}get maxPriorityFeePerGas(){const n=this.#X;return null==n?2===this.type||3===this.type?fh:null:n}set maxPriorityFeePerGas(n){this.#X=null==n?null:ki(n,"maxPriorityFeePerGas")}get maxFeePerGas(){const n=this.#nn;return null==n?2===this.type||3===this.type?fh:null:n}set maxFeePerGas(n){this.#nn=null==n?null:ki(n,"maxFeePerGas")}get data(){return this.#C}set data(n){this.#C=si(n)}get value(){return this.#en}set value(n){this.#en=ki(n,"value")}get chainId(){return this.#tn}set chainId(n){this.#tn=ki(n)}get signature(){return this.#rn||null}set signature(n){this.#rn=null==n?null:xd.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:uh(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=>dh(n))}get maxFeePerBlobGas(){const n=this.#on;return null==n&&3===this.type?fh:n}set maxFeePerBlobGas(n){this.#on=null==n?null:ki(n,"maxFeePerBlobGas")}get blobVersionedHashes(){let n=this.#in;return null==n&&3===this.type?[]:n}set blobVersionedHashes(n){if(null!=n){Wo(Array.isArray(n),"blobVersionedHashes must be an Array","value",n),n=n.slice();for(let e=0;e<n.length;e++)Wo(ai(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(oi(a)){$o(this.#sn,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let n=ti(a);if(Wo(n.length<=kh,"blob is too large",`blobs[${r}]`,a),n.length!==kh){const e=new Uint8Array(kh);e.set(n),n=e}const o=this.#sn.blobToKzgCommitment(n),i=si(this.#sn.computeBlobKzgProof(n,o));e.push({data:si(n),commitment:si(o),proof:i}),t.push(Eh(1,o))}else{const n=si(a.data),r=si(a.commitment),o=si(a.proof);e.push({data:n,commitment:r,proof:o}),t.push(Eh(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 ti(n.blobToKzgCommitment(si(e)))}else if("blobToKzgCommitment"in n&&"function"==typeof n.blobToKzgCommitment)return ti(n.blobToKzgCommitment(e));if("blobToKZGCommitment"in n&&"function"==typeof n.blobToKZGCommitment)return ti(n.blobToKZGCommitment(si(e)));Wo(!1,"unsupported KZG library","kzg",n)},computeBlobKzgProof:(e,t)=>"computeBlobProof"in n&&"function"==typeof n.computeBlobProof?ti(n.computeBlobProof(si(e),si(t))):"computeBlobKzgProof"in n&&"function"==typeof n.computeBlobKzgProof?n.computeBlobKzgProof(e,t):"computeBlobKZGProof"in n&&"function"==typeof n.computeBlobKZGProof?ti(n.computeBlobKZGProof(si(e),si(t))):void Wo(!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=fh,this.#Y=null,this.#X=null,this.#nn=null,this.#C="0x",this.#en=fh,this.#tn=fh,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:cl(this.#dn(!0,!1))}get unsignedHash(){return cl(this.unsignedSerialized)}get from(){return null==this.signature?null:ph(this.unsignedHash,this.signature.getCanonical())}get fromPublicKey(){return null==this.signature?null:Id.recoverPublicKey(this.unsignedHash,this.signature.getCanonical())}isSigned(){return null!=this.signature}#dn(n,e){$o(!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=[Rh(n.nonce,"nonce"),Rh(n.gasPrice||0,"gasPrice"),Rh(n.gasLimit,"gasLimit"),n.to||"0x",Rh(n.value,"value"),n.data];let r=fh;if(n.chainId!=fh)r=ki(n.chainId,"tx.chainId"),Wo(!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!==fh&&(t.push(zi(r)),t.push("0x"),t.push("0x")),xs(t);let a=BigInt(27+e.yParity);return r!==fh?a=xd.getChainIdV(r,e.v):BigInt(e.v)!==a&&Wo(!1,"tx.chainId/sig.v mismatch","sig",e),t.push(zi(a)),t.push(zi(e.r)),t.push(zi(e._s)),xs(t)}(this,t);case 1:return function(n,e){const t=[Rh(n.chainId,"chainId"),Rh(n.nonce,"nonce"),Rh(n.gasPrice||0,"gasPrice"),Rh(n.gasLimit,"gasLimit"),n.to||"0x",Rh(n.value,"value"),n.data,Th(n.accessList||[])];return e&&(t.push(Rh(e.yParity,"recoveryParam")),t.push(zi(e.r)),t.push(zi(e.s))),ci(["0x01",xs(t)])}(this,t);case 2:return function(n,e){const t=[Rh(n.chainId,"chainId"),Rh(n.nonce,"nonce"),Rh(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Rh(n.maxFeePerGas||0,"maxFeePerGas"),Rh(n.gasLimit,"gasLimit"),n.to||"0x",Rh(n.value,"value"),n.data,Th(n.accessList||[])];return e&&(t.push(Rh(e.yParity,"yParity")),t.push(zi(e.r)),t.push(zi(e.s))),ci(["0x02",xs(t)])}(this,t);case 3:return function(n,e,t){const r=[Rh(n.chainId,"chainId"),Rh(n.nonce,"nonce"),Rh(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Rh(n.maxFeePerGas||0,"maxFeePerGas"),Rh(n.gasLimit,"gasLimit"),n.to||od,Rh(n.value,"value"),n.data,Th(n.accessList||[]),Rh(n.maxFeePerBlobGas||0,"maxFeePerBlobGas"),Sh(n.blobVersionedHashes||[],"blobVersionedHashes")];if(e&&(r.push(Rh(e.yParity,"yParity")),r.push(zi(e.r)),r.push(zi(e.s)),t)){if(null!=n.blobWrapperVersion){const e=zi(n.blobWrapperVersion),a=[];for(const{proof:n}of t){const e=ti(n),t=e.length/Ah;for(let n=0;n<e.length;n+=t)a.push(e.subarray(n,n+t))}return ci(["0x03",xs([r,e,t.map(n=>n.data),t.map(n=>n.commitment),a])])}return ci(["0x03",xs([r,t.map(n=>n.data),t.map(n=>n.commitment),t.map(n=>n.proof)])])}return ci(["0x03",xs(r)])}(this,t,e?this.blobs:null);case 4:return function(n,e){const t=[Rh(n.chainId,"chainId"),Rh(n.nonce,"nonce"),Rh(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Rh(n.maxFeePerGas||0,"maxFeePerGas"),Rh(n.gasLimit,"gasLimit"),n.to||"0x",Rh(n.value,"value"),n.data,Th(n.accessList||[]),(r=n.authorizationList||[],r.map(n=>[Rh(n.chainId,"chainId"),n.address,Rh(n.nonce,"nonce"),Rh(n.signature.yParity,"yParity"),zi(n.signature.r),zi(n.signature._s)]))];var r;return e&&(t.push(Rh(e.yParity,"yParity")),t.push(zi(e.r)),t.push(zi(e.s))),ci(["0x04",xs(t)])}(this,t)}$o(!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&&$o(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),$o(!e||0!==this.type&&1!==this.type,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),$o(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 Ch.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}}[wh](){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 Ch;if("string"==typeof n){const e=ti(n);if(e[0]>=127)return Ch.from(function(n){const e=ws(n);Wo(Array.isArray(e)&&(9===e.length||6===e.length),"invalid field count for legacy transaction","data",n);const t={type:0,nonce:Nh(e[0],"nonce"),gasPrice:zh(e[1],"gasPrice"),gasLimit:zh(e[2],"gasLimit"),to:xh(e[3]),value:zh(e[4],"value"),data:si(e[5]),chainId:fh};if(6===e.length)return t;const r=zh(e[6],"v"),a=zh(e[7],"r"),o=zh(e[8],"s");if(a===fh&&o===fh)t.chainId=r;else{let n=(r-yh)/gh;n<fh&&(n=fh),t.chainId=n,Wo(n!==fh||r===mh||r===bh,"non-canonical legacy v","v",e[6]),t.signature=xd.from({r:pi(e[7],32),s:pi(e[8],32),v:r})}return t}(e));switch(e[0]){case 1:return Ch.from(function(n){const e=ws(ti(n).slice(1));Wo(Array.isArray(e)&&(8===e.length||11===e.length),"invalid field count for transaction type: 1","data",si(n));const t={type:1,chainId:zh(e[0],"chainId"),nonce:Nh(e[1],"nonce"),gasPrice:zh(e[2],"gasPrice"),gasLimit:zh(e[3],"gasLimit"),to:xh(e[4]),value:zh(e[5],"value"),data:si(e[6]),accessList:Ih(e[7],"accessList")};return 8===e.length||Bh(t,e.slice(8)),t}(e));case 2:return Ch.from(function(n){const e=ws(ti(n).slice(1));Wo(Array.isArray(e)&&(9===e.length||12===e.length),"invalid field count for transaction type: 2","data",si(n));const t={type:2,chainId:zh(e[0],"chainId"),nonce:Nh(e[1],"nonce"),maxPriorityFeePerGas:zh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:zh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:zh(e[4],"gasLimit"),to:xh(e[5]),value:zh(e[6],"value"),data:si(e[7]),accessList:Ih(e[8],"accessList")};return 9===e.length||Bh(t,e.slice(9)),t}(e));case 3:return Ch.from(function(n){let e=ws(ti(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];Wo(Array.isArray(n),"invalid network format: blobs not an array","fields[1]",n),Wo(Array.isArray(r),"invalid network format: commitments not an array","fields[2]",r),Wo(Array.isArray(o),"invalid network format: proofs not an array","fields[3]",o),Wo(n.length===r.length,"invalid network format: blobs/commitments length mismatch","fields",e),Wo(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=Ii(e[1]);const n=e[2],o=e[3],i=e[4];Wo(1===r,`unsupported EIP-7594 network format version: ${r}`,"fields[1]",r),Wo(Array.isArray(n),"invalid EIP-7594 network format: blobs not an array","fields[2]",n),Wo(Array.isArray(o),"invalid EIP-7594 network format: commitments not an array","fields[3]",o),Wo(Array.isArray(i),"invalid EIP-7594 network format: proofs not an array","fields[4]",i),Wo(n.length===o.length,"invalid network format: blobs/commitments length mismatch","fields",e),Wo(n.length*Ah===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<Ah;n++)t.push(i[e*Ah+n]);a.push({data:n[e],commitment:o[e],proof:ci(t)})}e=e[0]}Wo(Array.isArray(e)&&(11===e.length||14===e.length),`invalid field count for transaction type: ${t}`,"data",si(n));const o={type:3,chainId:zh(e[0],"chainId"),nonce:Nh(e[1],"nonce"),maxPriorityFeePerGas:zh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:zh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:zh(e[4],"gasLimit"),to:xh(e[5]),value:zh(e[6],"value"),data:si(e[7]),accessList:Ih(e[8],"accessList"),maxFeePerBlobGas:zh(e[9],"maxFeePerBlobGas"),blobVersionedHashes:e[10],blobWrapperVersion:r};a&&(o.blobs=a),Wo(null!=o.to,`invalid address for transaction type: ${t}`,"data",n),Wo(Array.isArray(o.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",n);for(let e=0;e<o.blobVersionedHashes.length;e++)Wo(ai(o.blobVersionedHashes[e],32),`invalid blobVersionedHash at index ${e}: must be length 32`,"data",n);return 11===e.length||Bh(o,e.slice(11)),o}(e));case 4:return Ch.from(function(n){const e=ws(ti(n).slice(1));Wo(Array.isArray(e)&&(10===e.length||13===e.length),"invalid field count for transaction type: 4","data",si(n));const t={type:4,chainId:zh(e[0],"chainId"),nonce:Nh(e[1],"nonce"),maxPriorityFeePerGas:zh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:zh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:zh(e[4],"gasLimit"),to:xh(e[5]),value:zh(e[6],"value"),data:si(e[7]),accessList:Ih(e[8],"accessList"),authorizationList:Ph(e[9],"authorizationList")};return 10===e.length||Bh(t,e.slice(10)),t}(e))}$o(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new Ch;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=xd.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&&(Wo(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",n),Wo(e.hash===n.hash,"hash mismatch","tx",n)),null!=n.from&&(Wo(e.isSigned(),"unsigned transaction cannot define '.from'","tx",n),Wo(e.from.toLowerCase()===(n.from||"").toLowerCase(),"from mismatch","tx",n)),e}}function Oh(n){return Wo("string"==typeof n.address,"invalid address for hashAuthorization","auth.address",n),cl(ci(["0x05",xs([null!=n.chainId?zi(n.chainId):"0x",Cd(n.address),null!=n.nonce?zi(n.nonce):"0x"])]))}function Uh(n,e){return ph(Oh(n),e)}function Fh(n){return cl(Hi(n))}const Lh=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]);function jh(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 Dh(n){return 1&n?~n>>1:n>>1}function Mh(n,e){let t=Array(n);for(let r=0,a=0;r<n;r++)t[r]=a+=Dh(e());return t}function Gh(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 qh(n){return Kh(()=>{let e=Gh(n);if(e.length)return e})}function Hh(n){let e=[];for(;;){let t=n();if(0==t)break;e.push(_h(t,n))}for(;;){let t=n()-1;if(t<0)break;e.push(Qh(t,n))}return e.flat()}function Kh(n){let e=[];for(;;){let t=n(e.length);if(!t)break;e.push(t)}return e}function Vh(n,e,t){let r=Array(n).fill().map(()=>[]);for(let a=0;a<e;a++)Mh(n,t).forEach((n,e)=>r[e].push(n));return r}function _h(n,e){let t=1+e(),r=e(),a=Kh(e);return Vh(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 Qh(n,e){return Vh(1+e(),1+n,e).map(n=>[n[0],n.slice(1)])}function Jh(n){return`{${function(n){return n.toString(16).toUpperCase().padStart(2,"0")}(n)}}`}function $h(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 Wh(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 Zh=44032,Yh=4352,Xh=4449,np=4519,ep=28,tp=588;function rp(n){return n>>24&255}function ap(n){return 16777215&n}let op,ip,sp,cp;function lp(n){return n>=Zh&&n<55204}function up(n,e){if(n>=Yh&&n<4371&&e>=Xh&&e<4470)return Zh+(n-Yh)*tp+(e-Xh)*ep;if(lp(n)&&e>np&&e<4547&&(n-Zh)%ep==0)return n+(e-np);{let t=cp.get(n);return t&&(t=t.get(e),t)?t:-1}}function dp(n){op||function(){let n=jh("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");op=new Map(qh(n).flatMap((n,e)=>n.map(n=>[n,e+1<<24]))),ip=new Set(Gh(n)),sp=new Map,cp=new Map;for(let[e,t]of Hh(n)){if(!ip.has(e)&&2==t.length){let[n,r]=t,a=cp.get(n);a||(a=new Map,cp.set(n,a)),a.set(r,e)}sp.set(e,t.reverse())}}();let e=[],t=[],r=!1;function a(n){let t=op.get(n);t&&(r=!0,n|=t),e.push(n)}for(let r of n)for(;;){if(r<128)e.push(r);else if(lp(r)){let n=r-Zh,e=n%tp/ep|0,t=n%ep;a(Yh+(n/tp|0)),a(Xh+e),t>0&&a(np+t)}else{let n=sp.get(r);n?t.push(...n):a(r)}if(!t.length)break;r=t.pop()}if(r&&e.length>1){let n=rp(e[0]);for(let t=1;t<e.length;t++){let r=rp(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=rp(e[--a]),n<=r)break}n=rp(e[t])}}return e}function hp(n){return dp(n).map(ap)}function pp(n){return function(n){let e=[],t=[],r=-1,a=0;for(let o of n){let n=rp(o),i=ap(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=up(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}(dp(n))}const fp=".",gp=n=>Array.from(n);function mp(n,e){return n.P.has(e)||n.Q.has(e)}class bp extends Array{get is_emoji(){return!0}}let yp,vp,wp,kp,Ap,Ep,xp,Ip,Pp,Np,zp;function Rp(){if(yp)return;let n=jh("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");const e=()=>Gh(n),t=()=>new Set(e()),r=(n,e)=>e.forEach(e=>n.add(e));yp=new Map(Hh(n)),vp=t(),wp=e(),kp=new Set(e().map(n=>wp[n])),wp=new Set(wp),Ap=t(),t();let a=qh(n),o=n();const i=()=>{let n=new Set;return e().forEach(e=>r(n,a[e])),r(n,e()),n};Ep=Kh(e=>{let t=Kh(n).map(n=>n+96);if(t.length){let r=e>=o;return t[0]-=32,t=$h(t),r&&(t=`Restricted[${t}]`),{N:t,P:i(),Q:i(),M:!n(),R:r}}}),xp=t(),Ip=new Map;let s=e().concat(gp(xp)).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),xp.has(e)||Ip.set(e,a)});for(let{V:n,M:e}of new Set(Ip.values())){let t=[];for(let e of n){let n=Ep.filter(n=>mp(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=>gp(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)}}Pp=new Set;let c=new Set;const l=n=>Pp.has(n)?c.add(n):Pp.add(n);for(let n of Ep){for(let e of n.P)l(e);for(let e of n.Q)l(e)}for(let n of Pp)Ip.has(n)||c.has(n)||Ip.set(n,1);r(Pp,hp(Pp)),Np=function(n){let e=[],t=Gh(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:Kh(()=>{let r=Gh(n).map(n=>t[n]);if(r.length)return e(r)}),Q:r}}([]),[]),e}(n).map(n=>bp.from(n)).sort(Wh),zp=new Map;for(let n of Np){let e=[zp];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 Tp(n){return(Cp(n)?"":`${Sp(Bp([n]))} `)+Jh(n)}function Sp(n){return`"${n}"‎`}function Bp(n,e=1/0,t=Jh){let r=[];var a;a=n[0],Rp(),wp.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];Cp(a)&&(r.push($h(n.slice(o,e))),r.push(t(a)),o=e+1)}return r.push($h(n.slice(o,i))),r.join("")}function Cp(n){return Rp(),Ap.has(n)}function Op(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 ${Sp(Bp(e,63))}: ${r}`)}return $h(r)}).join(fp)}(function(n,e,t){if(!n)return[];Rp();let r=0;return n.split(fp).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=Dp(n);if(o)a.length&&(r.push(e(a)),a=[]),r.push(t(o));else{let e=n.pop();if(Pp.has(e))a.push(e);else{let n=yp.get(e);if(n)a.push(...n);else if(!vp.has(e))throw Up(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: "${$h(n.slice(0,4))}"`)}(s),n="ASCII";else{let e=r.flatMap(n=>n.is_emoji?[]:n);if(e.length){if(wp.has(s[0]))throw Lp("leading combining mark");for(let n=1;n<i;n++){let e=r[n];if(!e.is_emoji&&wp.has(e[0]))throw Lp(`emoji + combining mark: "${$h(r[n-1])} + ${Bp([e[0]])}"`)}!function(n){let e=n[0],t=Lh.get(e);if(t)throw Lp(`leading ${t}`);let r=n.length,a=-1;for(let o=1;o<r;o++){e=n[o];let r=Lh.get(e);if(r){if(a==o)throw Lp(`${t} + ${r}`);a=o+1,t=r}}if(a==r)throw Lp(`trailing ${t}`)}(s);let t=gp(new Set(e)),[a]=function(n){let e=Ep;for(let t of n){let n=e.filter(n=>mp(n,t));if(!n.length)throw Ep.some(n=>mp(n,t))?Fp(e[0],t):Up(t);if(e=n,1==n.length)break}return e}(t);!function(n,e){for(let t of e)if(!mp(n,t))throw Fp(n,t);if(n.M){let n=hp(e);for(let e=1,t=n.length;e<t;e++)if(kp.has(n[e])){let r=e+1;for(let a;r<t&&kp.has(a=n[r]);r++)for(let t=e;t<r;t++)if(n[t]==a)throw new Error(`duplicate non-spacing marks: ${Tp(a)}`);if(r-e>4)throw new Error(`excessive non-spacing marks: ${Sp(Bp(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=Ip.get(n);if(1===e)return;if(e){let r=e.M.get(n);if(t=t?t.filter(n=>r.has(n)):gp(r),!t.length)return}else r.push(n)}if(t)for(let e of t)if(r.every(n=>mp(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,pp,jp))}function Up(n){return new Error(`disallowed character: ${Tp(n)}`)}function Fp(n,e){let t=Tp(e),r=Ep.find(n=>n.P.has(e));return r&&(t=`${r.N} ${t}`),new Error(`illegal mixture: ${n.N} + ${t}`)}function Lp(n){return new Error(`illegal placement: ${n}`)}function jp(n){return n.filter(n=>65039!=n)}function Dp(n,e){let t,r=zp,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 Mp=new Uint8Array(32);function Gp(n){return Wo(0!==n.length,"invalid ENS name; empty component","comp",n),n}function qp(n){const e=Hi(Hp(n)),t=[];if(0===n.length)return t;let r=0;for(let n=0;n<e.length;n++){46===e[n]&&(t.push(Gp(e.slice(r,n))),r=n+1)}return Wo(r<e.length,"invalid ENS name; empty component","name",n),t.push(Gp(e.slice(r))),t}function Hp(n){try{if(0===n.length)throw new Error("empty label");return Op(n)}catch(e){Wo(!1,`invalid ENS name (${e.message})`,"name",n)}}function Kp(n){try{return 0!==qp(n).length}catch(n){}return!1}function Vp(n){Wo("string"==typeof n,"invalid ENS name; not a string","name",n),Wo(n.length,"invalid ENS name (empty label)","name",n);let e=Mp;const t=qp(n);for(;t.length;)e=cl(ci([e,cl(t.pop())]));return si(e)}function _p(n,e){const t=null!=e?e:63;return Wo(t<=255,"DNS encoded label cannot exceed 255","length",t),si(ci(qp(n).map(e=>{Wo(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 Qp(n){return"string"==typeof n&&(n=Hi(n)),cl(ci([Hi(hd),Hi(String(n.length)),n]))}function Jp(n,e){return ph(Qp(n),e)}Mp.fill(0);const $p=new RegExp("^bytes([0-9]+)$"),Wp=new RegExp("^(u?int)([0-9]*)$"),Zp=new RegExp("^(.*)\\[([0-9]*)\\]$");function Yp(n,e,t){switch(n){case"address":return ti(t?pi(e,32):Cd(e));case"string":return Hi(e);case"bytes":return ti(e);case"bool":return e=e?"0x01":"0x00",ti(t?pi(e,32):e)}let r=n.match(Wp);if(r){let a="int"===r[1],o=parseInt(r[2]||"256");return Wo((!r[2]||r[2]===String(o))&&o%8==0&&0!==o&&o<=256,"invalid number type","type",n),t&&(o=256),a&&(e=vi(e,o)),ti(pi(zi(e),o/8))}if(r=n.match($p),r){const a=parseInt(r[1]);return Wo(String(a)===r[1]&&0!==a&&a<=32,"invalid bytes type","type",n),Wo(li(e)===a,`invalid value for ${n}`,"value",e),t?ti(fi(e,32)):e}if(r=n.match(Zp),r&&Array.isArray(e)){const t=r[1];Wo(parseInt(r[2]||String(e.length))===e.length,`invalid array length for ${n}`,"value",e);const a=[];return e.forEach(function(n){a.push(Yp(t,n,!0))}),ti(ci(a))}Wo(!1,"invalid type","type",n)}function Xp(n,e){Wo(n.length===e.length,"wrong number of values; expected ${ types.length }","values",e);const t=[];return n.forEach(function(n,r){t.push(Yp(n,e[r]))}),si(ci(t))}function nf(n,e){return cl(Xp(n,e))}function ef(n,e){return nu(Xp(n,e))}const tf=new Uint8Array(32);tf.fill(0);const rf=BigInt(-1),af=BigInt(0),of=BigInt(1),sf=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const cf=Ni(of,32),lf=Ni(af,32),uf={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},df=["name","version","chainId","verifyingContract","salt"];function hf(n){return function(e){return Wo("string"==typeof e,`invalid domain value for ${JSON.stringify(n)}`,`domain.${n}`,e),e}}const pf={name:hf("name"),version:hf("version"),chainId:function(n){const e=ki(n,"domain.chainId");return Wo(e>=0,"invalid chain ID","domain.chainId",n),Number.isSafeInteger(e)?Number(e):Ri(e)},verifyingContract:function(n){try{return Cd(n).toLowerCase()}catch(n){}Wo(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",n)},salt:function(n){const e=ti(n,"domain.salt");return Wo(32===e.length,'invalid domain value "salt"',"domain.salt",n),si(e)}};function ff(n){{const e=n.match(/^(u?)int(\d+)$/);if(e){const t=""===e[1],r=parseInt(e[2]);Wo(r%8==0&&0!==r&&r<=256&&e[2]===String(r),"invalid numeric width","type",n);const a=wi(sf,t?r-1:r),o=t?(a+of)*rf:af;return function(e){const r=ki(e,"value");return Wo(r>=o&&r<=a,`value out-of-bounds for ${n}`,"value",r),Ni(t?vi(r,256):r,32)}}}{const e=n.match(/^bytes(\d+)$/);if(e){const t=parseInt(e[1]);return Wo(0!==t&&t<=32&&e[1]===String(t),"invalid bytes width","type",n),function(e){return Wo(ti(e).length===t,`invalid length for ${n}`,"value",e),function(n){const e=ti(n),t=e.length%32;return t?ci([e,tf.slice(t)]):si(e)}(e)}}}switch(n){case"address":return function(n){return pi(Cd(n),32)};case"bool":return function(n){return n?cf:lf};case"bytes":return function(n){return cl(n)};case"string":return function(n){return Fh(n)}}return null}function gf(n,e){return`${n}(${e.map(({name:n,type:e})=>e+" "+n).join(",")})`}function mf(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 bf{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}=mf(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]){Wo(!o.has(i.name),`duplicate variable name ${JSON.stringify(i.name)} in ${JSON.stringify(r)}`,"types",n),o.add(i.name);const a=mf(i.type).base;Wo(a!==r,`circular type reference to ${JSON.stringify(a)}`,"types",n);ff(a)||(Wo(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);Wo(0!==o.length,"missing primary type","types",n),Wo(1===o.length,`ambiguous primary types or unused types: ${o.map(n=>JSON.stringify(n)).join(", ")}`,"types",n),Ko(this,{primaryType:o[0]}),function a(o,i){Wo(!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,gf(n,a[n])+t.map(n=>gf(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=ff(n);if(e)return e}const e=mf(n).array;if(e){const n=e.prefix,t=this.getEncoder(n);return r=>{Wo(-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(cl)),cl(ci(a))}}const t=this.types[n];if(t){const e=Fh(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)?cl(r):r});return r.unshift(e),ci(r)}}Wo(!1,`unknown type: ${n}`,"type",n)}encodeType(n){const e=this.#pn.get(n);return Wo(e,`unknown type: ${JSON.stringify(n)}`,"name",n),e}encodeData(n,e){return this.getEncoder(n)(e)}hashStruct(n,e){return cl(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(ff(n))return t(n,e);const r=mf(n).array;if(r)return Wo(-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),{});Wo(!1,`unknown type: ${n}`,"type",n)}visit(n,e){return this._visit(this.primaryType,n,e)}static from(n){return new bf(n)}static getPrimaryType(n){return bf.from(n).primaryType}static hashStruct(n,e,t){return bf.from(e).hashStruct(n,t)}static hashDomain(n){const e=[];for(const t in n){if(null==n[t])continue;const r=uf[t];Wo(r,`invalid typed-data domain key: ${JSON.stringify(t)}`,"domain",n),e.push({name:t,type:r})}return e.sort((n,e)=>df.indexOf(n.name)-df.indexOf(e.name)),bf.hashStruct("EIP712Domain",{EIP712Domain:e},n)}static encode(n,e,t){return ci(["0x1901",bf.hashDomain(n),bf.from(e).hash(t)])}static hash(n,e,t){return cl(bf.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&&!ai(n.verifyingContract,20)&&(a[n.verifyingContract]="0x");const o=bf.from(e);o.visit(t,(n,e)=>("address"!==n||ai(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){bf.hashDomain(n);const r={},a=[];df.forEach(e=>{const t=n[e];null!=t&&(r[e]=pf[e](t),a.push({name:e,type:uf[e]}))});const o=bf.from(e);e=o.types;const i=Object.assign({},e);return Wo(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 si(ti(e));if(n.match(/^u?int/))return ki(e).toString();switch(n){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return Wo("string"==typeof e,"invalid string","value",e),e}Wo(!1,"unsupported type","type",n)})}}}function yf(n,e,t,r){return ph(bf.hash(n,e,t),r)}function vf(n){const e=new Set;return n.forEach(n=>e.add(n)),Object.freeze(e)}const wf=vf("external public payable override".split(" ")),kf="constant external internal payable private public pure view override",Af=vf(kf.split(" ")),Ef="constructor error event fallback function receive struct",xf=vf(Ef.split(" ")),If="calldata memory storage payable indexed",Pf=vf(If.split(" ")),Nf=vf([Ef,If,"tuple returns",kf].join(" ").split(" ")),zf={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},Rf=new RegExp("^(\\s*)"),Tf=new RegExp("^([0-9]+)"),Sf=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),Bf=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)$"),Cf=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$");class Of{#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 Of(this.#mn)}reset(){this.#F=0}#bn(n=0,e=0){return new Of(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 Uf(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(Rf);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=zf[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=Ii(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(Sf),s){if(c.text=s[1],o+=c.text.length,Nf.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(Cf)){c.type="TYPE";continue}c.type="ID"}else{if(s=i.match(Tf),!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 Of(e.map(n=>Object.freeze(n)))}function Ff(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 Lf(n,e){if(e.peekKeyword(xf)){const t=e.pop().text;if(t!==n)throw new Error(`expected ${n}, got ${t}`)}return e.popType("ID")}function jf(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 Df(n){let e=jf(n,Af);return Ff(e,vf("constant payable nonpayable".split(" "))),Ff(e,vf("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 Mf(n,e){return n.popParams().map(n=>ng.from(n,e))}function Gf(n){if(n.peekType("AT")){if(n.pop(),n.peekType("NUMBER"))return ki(n.pop().text);throw new Error("invalid gas")}return null}function qf(n){if(n.length)throw new Error(`unexpected tokens at offset ${n.offset}: ${n.toString()}`)}const Hf=new RegExp(/^(.*)\[([0-9]*)\]$/);function Kf(n){const e=n.match(Cf);if(Wo(e,"invalid type","type",n),"uint"===n)return"uint256";if("int"===n)return"int256";if(e[2]){const t=parseInt(e[2]);Wo(0!==t&&t<=32,"invalid bytes length","type",n)}else if(e[3]){const t=parseInt(e[3]);Wo(0!==t&&t<=256&&t%8==0,"invalid numeric width","type",n)}return n}const Vf={},_f=Symbol.for("_ethers_internal"),Qf="_ParamTypeInternal",Jf="_ErrorInternal",$f="_EventInternal",Wf="_ConstructorInternal",Zf="_FallbackInternal",Yf="_FunctionInternal",Xf="_StructInternal";class ng{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(n,e,t,r,a,o,i,s){if(ni(n,Vf,"ParamType"),Object.defineProperty(this,_f,{value:Qf}),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("");Ko(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(ng.isParamType(n))return n;if("string"==typeof n)try{return ng.from(Uf(n),e)}catch(e){Wo(!1,"invalid param type","obj",n)}else if(n instanceof Of){let t="",r="",a=null;jf(n,vf(["tuple"])).has("tuple")||n.peekType("OPEN_PAREN")?(r="tuple",a=n.popParams().map(n=>ng.from(n)),t=`tuple(${a.map(n=>n.format()).join(",")})`):(t=Kf(n.popType("TYPE")),r=t);let o=null,i=null;for(;n.length&&n.peekType("BRACKET");){const e=n.pop();o=new ng(Vf,"",t,r,null,a,i,o),i=e.value,t+=e.text,r="array",a=null}let s=null;if(jf(n,Pf).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 ng(Vf,c,t,r,s,a,i,o)}const t=n.name;Wo(!t||"string"==typeof t&&t.match(Bf),"invalid name","obj.name",t);let r=n.indexed;null!=r&&(Wo(e,"parameter cannot be indexed","obj.indexed",n.indexed),r=!!r);let a=n.type,o=a.match(Hf);if(o){const e=parseInt(o[2]||"-1"),i=ng.from({type:o[1],components:n.components});return new ng(Vf,t||"",a,"array",r,null,e,i)}if("tuple"===a||a.startsWith("tuple(")||a.startsWith("(")){const e=null!=n.components?n.components.map(n=>ng.from(n)):null;return new ng(Vf,t||"",a,"tuple",r,e,null,null)}return a=Kf(n.type),new ng(Vf,t||"",a,a,r,null,null,null)}static isParamType(n){return n&&n[_f]===Qf}}class eg{type;inputs;constructor(n,e,t){ni(n,Vf,"Fragment"),Ko(this,{type:e,inputs:t=Object.freeze(t.slice())})}static from(n){if("string"==typeof n){try{eg.from(JSON.parse(n))}catch(n){}return eg.from(Uf(n))}if(n instanceof Of){switch(n.peekKeyword(xf)){case"constructor":return ig.from(n);case"error":return ag.from(n);case"event":return og.from(n);case"fallback":case"receive":return sg.from(n);case"function":return cg.from(n);case"struct":return lg.from(n)}}else if("object"==typeof n){switch(n.type){case"constructor":return ig.from(n);case"error":return ag.from(n);case"event":return og.from(n);case"fallback":case"receive":return sg.from(n);case"function":return cg.from(n);case"struct":return lg.from(n)}$o(!1,`unsupported type: ${n.type}`,"UNSUPPORTED_OPERATION",{operation:"Fragment.from"})}Wo(!1,"unsupported frgament object","obj",n)}static isConstructor(n){return ig.isFragment(n)}static isError(n){return ag.isFragment(n)}static isEvent(n){return og.isFragment(n)}static isFunction(n){return cg.isFragment(n)}static isStruct(n){return lg.isFragment(n)}}class tg extends eg{name;constructor(n,e,t,r){super(n,e,r),Wo("string"==typeof t&&t.match(Bf),"invalid identifier","name",t),r=Object.freeze(r.slice()),Ko(this,{name:t})}}function rg(n,e){return"("+e.map(e=>e.format(n)).join("full"===n?", ":",")+")"}class ag extends tg{constructor(n,e,t){super(n,"error",e,t),Object.defineProperty(this,_f,{value:Jf})}get selector(){return Fh(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+rg(n,this.inputs)),e.join(" ")}static from(n){if(ag.isFragment(n))return n;if("string"==typeof n)return ag.from(Uf(n));if(n instanceof Of){const e=Lf("error",n),t=Mf(n);return qf(n),new ag(Vf,e,t)}return new ag(Vf,n.name,n.inputs?n.inputs.map(ng.from):[])}static isFragment(n){return n&&n[_f]===Jf}}class og extends tg{anonymous;constructor(n,e,t,r){super(n,"event",e,t),Object.defineProperty(this,_f,{value:$f}),Ko(this,{anonymous:r})}get topicHash(){return Fh(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+rg(n,this.inputs)),"sighash"!==n&&this.anonymous&&e.push("anonymous"),e.join(" ")}static getTopicHash(n,e){e=(e||[]).map(n=>ng.from(n));return new og(Vf,n,e,!1).topicHash}static from(n){if(og.isFragment(n))return n;if("string"==typeof n)try{return og.from(Uf(n))}catch(e){Wo(!1,"invalid event fragment","obj",n)}else if(n instanceof Of){const e=Lf("event",n),t=Mf(n,!0),r=!!jf(n,vf(["anonymous"])).has("anonymous");return qf(n),new og(Vf,e,t,r)}return new og(Vf,n.name,n.inputs?n.inputs.map(n=>ng.from(n,!0)):[],!!n.anonymous)}static isFragment(n){return n&&n[_f]===$f}}class ig extends eg{payable;gas;constructor(n,e,t,r,a){super(n,e,t),Object.defineProperty(this,_f,{value:Wf}),Ko(this,{payable:r,gas:a})}format(n){if($o(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${rg(n,this.inputs)}`];return this.payable&&e.push("payable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static from(n){if(ig.isFragment(n))return n;if("string"==typeof n)try{return ig.from(Uf(n))}catch(e){Wo(!1,"invalid constuctor fragment","obj",n)}else if(n instanceof Of){jf(n,vf(["constructor"]));const e=Mf(n),t=!!jf(n,wf).has("payable"),r=Gf(n);return qf(n),new ig(Vf,"constructor",e,t,r)}return new ig(Vf,"constructor",n.inputs?n.inputs.map(ng.from):[],!!n.payable,null!=n.gas?n.gas:null)}static isFragment(n){return n&&n[_f]===Wf}}class sg extends eg{payable;constructor(n,e,t){super(n,"fallback",e),Object.defineProperty(this,_f,{value:Zf}),Ko(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(sg.isFragment(n))return n;if("string"==typeof n)try{return sg.from(Uf(n))}catch(e){Wo(!1,"invalid fallback fragment","obj",n)}else if(n instanceof Of){const e=n.toString();Wo(n.peekKeyword(vf(["fallback","receive"])),"type must be fallback or receive","obj",e);if("receive"===n.popKeyword(vf(["fallback","receive"]))){const e=Mf(n);return Wo(0===e.length,"receive cannot have arguments","obj.inputs",e),jf(n,vf(["payable"])),qf(n),new sg(Vf,[],!0)}let t=Mf(n);t.length?Wo(1===t.length&&"bytes"===t[0].type,"invalid fallback inputs","obj.inputs",t.map(n=>n.format("minimal")).join(", ")):t=[ng.from("bytes")];const r=Df(n);if(Wo("nonpayable"===r||"payable"===r,"fallback cannot be constants","obj.stateMutability",r),jf(n,vf(["returns"])).has("returns")){const e=Mf(n);Wo(1===e.length&&"bytes"===e[0].type,"invalid fallback outputs","obj.outputs",e.map(n=>n.format("minimal")).join(", "))}return qf(n),new sg(Vf,t,"payable"===r)}if("receive"===n.type)return new sg(Vf,[],!0);if("fallback"===n.type){const e=[ng.from("bytes")],t="payable"===n.stateMutability;return new sg(Vf,e,t)}Wo(!1,"invalid fallback description","obj",n)}static isFragment(n){return n&&n[_f]===Zf}}class cg extends tg{constant;outputs;stateMutability;payable;gas;constructor(n,e,t,r,a,o){super(n,"function",e,r),Object.defineProperty(this,_f,{value:Yf});Ko(this,{constant:"view"===t||"pure"===t,gas:o,outputs:a=Object.freeze(a.slice()),payable:"payable"===t,stateMutability:t})}get selector(){return Fh(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+rg(n,this.inputs)),"sighash"!==n&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(rg(n,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static getSelector(n,e){e=(e||[]).map(n=>ng.from(n));return new cg(Vf,n,"view",e,[],null).selector}static from(n){if(cg.isFragment(n))return n;if("string"==typeof n)try{return cg.from(Uf(n))}catch(e){Wo(!1,"invalid function fragment","obj",n)}else if(n instanceof Of){const e=Lf("function",n),t=Mf(n),r=Df(n);let a=[];jf(n,vf(["returns"])).has("returns")&&(a=Mf(n));const o=Gf(n);return qf(n),new cg(Vf,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 cg(Vf,n.name,e,n.inputs?n.inputs.map(ng.from):[],n.outputs?n.outputs.map(ng.from):[],null!=n.gas?n.gas:null)}static isFragment(n){return n&&n[_f]===Yf}}class lg extends tg{constructor(n,e,t){super(n,"struct",e,t),Object.defineProperty(this,_f,{value:Xf})}format(){throw new Error("@TODO")}static from(n){if("string"==typeof n)try{return lg.from(Uf(n))}catch(e){Wo(!1,"invalid struct fragment","obj",n)}else if(n instanceof Of){const e=Lf("struct",n),t=Mf(n);return qf(n),new lg(Vf,e,t)}return new lg(Vf,n.name,n.inputs?n.inputs.map(ng.from):[])}static isFragment(n){return n&&n[_f]===Xf}}const ug=new Map;ug.set(0,"GENERIC_PANIC"),ug.set(1,"ASSERT_FALSE"),ug.set(17,"OVERFLOW"),ug.set(18,"DIVIDE_BY_ZERO"),ug.set(33,"ENUM_RANGE_ERROR"),ug.set(34,"BAD_STORAGE_DATA"),ug.set(49,"STACK_UNDERFLOW"),ug.set(50,"ARRAY_RANGE_ERROR"),ug.set(65,"OUT_OF_MEMORY"),ug.set(81,"UNINITIALIZED_FUNCTION_CALL");const dg=new RegExp(/^bytes([0-9]*)$/),hg=new RegExp(/^(u?int)([0-9]*)$/);let pg=null,fg=1024;class gg{#vn(n){if(n.isArray())return new Wd(this.#vn(n.arrayChildren),n.arrayLength,n.name);if(n.isTuple())return new ch(n.components.map(n=>this.#vn(n)),n.name);switch(n.baseType){case"address":return new _d(n.name);case"bool":return new Zd(n.name);case"string":return new sh(n.name);case"bytes":return new Xd(n.name);case"":return new th(n.name)}let e=n.type.match(hg);if(e){let t=parseInt(e[2]||"256");return Wo(0!==t&&t<=256&&t%8==0,"invalid "+e[1]+" bit length","param",n),new ih(t/8,"int"===e[1],n.name)}if(e=n.type.match(dg),e){let t=parseInt(e[1]);return Wo(0!==t&&t<=32,"invalid bytes length","param",n),new nh(t,n.name)}Wo(!1,"invalid type","type",n.type)}getDefaultValue(n){const e=n.map(n=>this.#vn(ng.from(n)));return new ch(e,"_").defaultValue()}encode(n,e){Zo(e.length,n.length,"types/values length mismatch");const t=n.map(n=>this.#vn(ng.from(n))),r=new ch(t,"_"),a=new Ks;return r.encode(a,e),a.data}decode(n,e,t){const r=n.map(n=>this.#vn(ng.from(n)));return new ch(r,"_").decode(new Vs(e,t,fg))}static _setDefaultMaxInflation(n){Wo("number"==typeof n&&Number.isInteger(n),"invalid defaultMaxInflation factor","value",n),fg=n}static defaultAbiCoder(){return null==pg&&(pg=new gg),pg}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=ti(t);if(t=si(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"===si(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"===si(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 ${ug.get(e)||"UNKNOWN"}(${e})`,a+=`: ${o}`}catch(n){a+=" (could not decode panic code)"}else a+=" (unknown custom error)"}const s={to:e.to?Cd(e.to):null,data:e.data||"0x"};return e.from&&(s.from=Cd(e.from)),Jo(a,"CALL_EXCEPTION",{action:n,data:t,reason:o,transaction:s,invocation:null,revert:i})}(n,e,t,gg.defaultAbiCoder())}}function mg(n){const e=Hi(n);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return fi(e,32)}function bg(n){const e=ti(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 Ki(e.slice(0,t))}class yg{fragment;name;signature;topic;args;constructor(n,e,t){const r=n.name,a=n.format();Ko(this,{fragment:n,name:r,signature:a,topic:e,args:t})}}class vg{fragment;name;args;signature;selector;value;constructor(n,e,t,r){const a=n.name,o=n.format();Ko(this,{fragment:n,name:a,args:t,signature:o,selector:e,value:r})}}class wg{fragment;name;args;signature;selector;constructor(n,e,t){const r=n.name,a=n.format();Ko(this,{fragment:n,name:r,args:t,signature:a,selector:e})}}class kg{hash;_isIndexed;static isIndexed(n){return!(!n||!n._isIndexed)}constructor(n){Ko(this,{hash:n,_isIndexed:!0})}}const Ag={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"},Eg={"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&&Ag[n.toString()]&&(e=Ag[n.toString()]),`reverted with panic code 0x${n.toString(16)} (${e})`}}};class xg{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(eg.from(n))}catch(n){}Ko(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 Ko(this,{deploy:n});case"fallback":return void(0===n.inputs.length?a=!0:(Wo(!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||Ko(this,{deploy:ig.from("constructor()")}),Ko(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 gg.defaultAbiCoder()}#xn(n,e,t){if(ai(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;Vd.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(Vd.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){Wo(!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(cg.from(n).format());return r||null}getFunctionName(n){const e=this.#xn(n,null,!1);return Wo(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)}}#In(n,e,t){if(ai(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(Vd.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){Wo(!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(og.from(n).format());return r||null}getEventName(n){const e=this.#In(n,null,!1);return Wo(e,"no matching event","key",n),e.name}hasEvent(n){return!!this.#In(n,null,!1)}getEvent(n,e){return this.#In(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(ai(n)){const e=n.toLowerCase();if(Eg[e])return ag.from(Eg[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?ag.from("error Error(string)"):"Panic"===n?ag.from("error Panic(uint256)"):null;if(e.length>1){Wo(!1,`ambiguous error description (i.e. ${e.map(n=>JSON.stringify(n.format())).join(", ")})`,"name",n)}return e[0]}if("Error(string)"===(n=ag.from(n).format()))return ag.from("error Error(string)");if("Panic(uint256)"===n)return ag.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);Wo(e,"unknown error","fragment",n),n=e}return Wo(ui(e,0,4)===n.selector,`data signature does not match error ${n.name}.`,"data",e),this._decodeParams(n.inputs,ui(e,4))}encodeErrorResult(n,e){if("string"==typeof n){const e=this.getError(n);Wo(e,"unknown error","fragment",n),n=e}return ci([n.selector,this._encodeParams(n.inputs,e||[])])}decodeFunctionData(n,e){if("string"==typeof n){const e=this.getFunction(n);Wo(e,"unknown function","fragment",n),n=e}return Wo(ui(e,0,4)===n.selector,`data signature does not match function ${n.name}.`,"data",e),this._decodeParams(n.inputs,ui(e,4))}encodeFunctionData(n,e){if("string"==typeof n){const e=this.getFunction(n);Wo(e,"unknown function","fragment",n),n=e}return ci([n.selector,this._encodeParams(n.inputs,e||[])])}decodeFunctionResult(n,e){if("string"==typeof n){const e=this.getFunction(n);Wo(e,"unknown function","fragment",n),n=e}let t="invalid length for result data";const r=ri(e);if(r.length%32==0)try{return this.#En.decode(n.outputs,r)}catch(n){t="could not decode result data"}$o(!1,t,"BAD_DATA",{value:si(r),info:{method:n.name,signature:n.format()}})}makeError(n,e){const t=ti(n,"data"),r=gg.getBuiltinCallException("call",e,t);if(r.message.startsWith("execution reverted (unknown custom error)")){const n=si(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);Wo(e,"unknown function","fragment",n),n=e}return si(this.#En.encode(n.outputs,e||[]))}encodeFilterTopics(n,e){if("string"==typeof n){const e=this.getEvent(n);Wo(e,"unknown event","eventFragment",n),n=e}$o(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?Fh(e):"bytes"===n.type?cl(si(e)):("bool"===n.type&&"boolean"==typeof e?e=e?"0x01":"0x00":n.type.match(/^u?int/)?e=Ni(e):n.type.match(/^bytes/)?e=fi(e,32):"address"===n.type&&this.#En.encode(["address"],[e]),pi(si(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?Wo(!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)):Wo(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);Wo(e,"unknown event","eventFragment",n),n=e}const t=[],r=[],a=[];return n.anonymous||t.push(n.topicHash),Wo(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(Fh(i));else if("bytes"===n.type)t.push(cl(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);Wo(e,"unknown event","eventFragment",n),n=e}if(null!=t&&!n.anonymous){const e=n.topicHash;Wo(ai(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(ng.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,ci(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 kg(null);else if(o[e])t=new kg(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)}),Ms.fromItems(c,l)}parseTransaction(n){const e=ti(n.data,"tx.data"),t=ki(null!=n.value?n.value:0,"tx.value"),r=this.getFunction(si(e.slice(0,4)));if(!r)return null;const a=this.#En.decode(r.inputs,e.slice(4));return new vg(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 yg(e,e.topicHash,this.decodeEventLog(e,n.data,n.topics))}parseError(n){const e=si(n),t=this.getError(ui(e,0,4));if(!t)return null;const r=this.#En.decode(t.inputs,ui(e,4));return new wg(t,t.selector,r)}static from(n){return n instanceof xg?n:"string"==typeof n?new xg(JSON.parse(n)):"function"==typeof n.formatJson?new xg(n.formatJson()):"function"==typeof n.format?new xg(n.format("json")):new xg(n)}}const Ig=BigInt(0);function Pg(n){return null==n?null:n}function Ng(n){return null==n?null:n.toString()}class zg{gasPrice;maxFeePerGas;maxPriorityFeePerGas;constructor(n,e,t){Ko(this,{gasPrice:Pg(n),maxFeePerGas:Pg(e),maxPriorityFeePerGas:Pg(t)})}toJSON(){const{gasPrice:n,maxFeePerGas:e,maxPriorityFeePerGas:t}=this;return{_type:"FeeData",gasPrice:Ng(n),maxFeePerGas:Ng(e),maxPriorityFeePerGas:Ng(t)}}}function Rg(n){const e={};n.to&&(e.to=n.to),n.from&&(e.from=n.from),n.data&&(e.data=si(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]=ki(n[r],`request.${r}`));const r="type,nonce".split(/,/);for(const t of r)t in n&&null!=n[t]&&(e[t]=Ii(n[t],`request.${t}`));return n.accessList&&(e.accessList=uh(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=>oi(n)?si(n):Object.assign({},n))),e}class Tg{provider;number;hash;timestamp;parentHash;parentBeaconBlockRoot;nonce;difficulty;gasLimit;gasUsed;stateRoot;receiptsRoot;blobGasUsed;excessBlobGas;miner;prevRandao;extraData;baseFeePerGas;#Pn;constructor(n,e){this.#Pn=n.transactions.map(n=>"string"!=typeof n?new Cg(n,e):n),Ko(this,{provider:e,hash:Pg(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:Pg(n.prevRandao),extraData:n.extraData,baseFeePerGas:Pg(n.baseFeePerGas),stateRoot:n.stateRoot,receiptsRoot:n.receiptsRoot})}get transactions(){return this.#Pn.map(n=>"string"==typeof n?n:n.hash)}get prefetchedTransactions(){const n=this.#Pn.slice();return 0===n.length?[]:($o("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:Ng(n),difficulty:Ng(e),extraData:t,gasLimit:Ng(r),gasUsed:Ng(a),blobGasUsed:Ng(this.blobGasUsed),excessBlobGas:Ng(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.#Pn.length}get date(){return null==this.timestamp?null:new Date(1e3*this.timestamp)}async getTransaction(n){let e;if("number"==typeof n)e=this.#Pn[n];else{const t=n.toLowerCase();for(const n of this.#Pn){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;Wo(!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 Sg{provider;transactionHash;blockHash;blockNumber;removed;address;data;topics;index;transactionIndex;constructor(n,e){this.provider=e;const t=Object.freeze(n.topics.slice());Ko(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 $o(!!n,"failed to find transaction","UNKNOWN_ERROR",{}),n}async getTransaction(){const n=await this.provider.getTransaction(this.transactionHash);return $o(!!n,"failed to find transaction","UNKNOWN_ERROR",{}),n}async getTransactionReceipt(){const n=await this.provider.getTransactionReceipt(this.transactionHash);return $o(!!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 Bg{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 Sg(n,e)));let t=Ig;null!=n.effectiveGasPrice?t=n.effectiveGasPrice:null!=n.gasPrice&&(t=n.gasPrice),Ko(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:Ng(this.cumulativeGasUsed),from:e,gasPrice:Ng(this.gasPrice),blobGasUsed:Ng(this.blobGasUsed),blobGasPrice:Ng(this.blobGasPrice),gasUsed:Ng(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 Ug(this)}reorderedEvent(n){return $o(!n||n.isMined(),"unmined 'other' transction cannot be orphaned","UNSUPPORTED_OPERATION",{operation:"reorderedEvent(other)"}),Og(this,n)}}class Cg{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:Ng(this.chainId),data:c,from:i,gasLimit:Ng(this.gasLimit),gasPrice:Ng(this.gasPrice),hash:r,maxFeePerGas:Ng(this.maxFeePerGas),maxPriorityFeePerGas:Ng(this.maxPriorityFeePerGas),maxFeePerBlobGas:Ng(this.maxFeePerBlobGas),nonce:s,signature:l,to:o,index:t,type:a,value:Ng(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 Ho({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 Ho({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===Ig&&(r="cancelled"),$o(!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;$o(!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(Jo("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(_o(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 $o(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Ug(this)}reorderedEvent(n){return $o(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),$o(!n||n.isMined(),"unmined 'other' transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Og(this,n)}replaceableTransaction(n){Wo(Number.isInteger(n)&&n>=0,"invalid startBlock","startBlock",n);const e=new Cg(this,this.provider);return e.#zn=n,e}}function Og(n,e){return{orphan:"reorder-transaction",tx:n,other:e}}function Ug(n){return{orphan:"drop-transaction",tx:n}}class Fg extends Sg{interface;fragment;args;constructor(n,e,t){super(n,n.provider);Ko(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 Lg extends Sg{error;constructor(n,e){super(n,n.provider),Ko(this,{error:e})}}class jg extends Bg{#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 Fg(n,this.#Rn,e)}catch(e){return new Lg(n,e)}return n})}}class Dg extends Cg{#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 jg(this.#Rn,this.provider,t)}}class Mg extends Di{log;constructor(n,e,t,r){super(n,e,t),Ko(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 Gg extends Mg{constructor(n,e,t,r,a){super(n,e,t,new Fg(a,n.interface,r));Ko(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 qg=BigInt(0);function Hg(n){return n&&"function"==typeof n.call}function Kg(n){return n&&"function"==typeof n.estimateGas}function Vg(n){return n&&"function"==typeof n.resolveName}function _g(n){return n&&"function"==typeof n.sendTransaction}function Qg(n){if(null!=n){if(Vg(n))return n;if(n.provider)return n.provider}}class Jg{#Tn;fragment;constructor(n,e,t){if(Ko(this,{fragment:e}),e.inputs.length<t.length)throw new Error("too many arguments");const r=$g(n.runner,"resolveName"),a=Vg(r)?r:null;this.#Tn=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=>Md(n,a))):Md(e,a):e)));return n.interface.encodeFilterTopics(e,r)}()}getTopicFilter(){return this.#Tn}}function $g(n,e){return null==n?null:"function"==typeof n[e]?n:n.provider&&"function"==typeof n.provider[e]?n.provider:null}function Wg(n){return null==n?null:n.provider||null}async function Zg(n,e){const t=Vd.dereference(n,"overrides");Wo("object"==typeof t,"invalid overrides parameter","overrides",n);const r=Rg(t);return Wo(null==r.to||(e||[]).indexOf("to")>=0,"cannot override to","overrides.to",r.to),Wo(null==r.data||(e||[]).indexOf("data")>=0,"cannot override data","overrides.data",r.data),r.from&&(r.from=r.from),r}async function Yg(n,e,t){const r=$g(n,"resolveName"),a=Vg(r)?r:null;return await Promise.all(e.map((n,e)=>n.walkAsync(t[e],(n,e)=>(e=Vd.dereference(e,n),"address"===n?Md(e,a):e))))}function Xg(n){const e=async function(e){const t=await Zg(e,["data"]);t.to=await n.getAddress(),t.from&&(t.from=await Md(t.from,Qg(n.runner)));const r=n.interface,a=ki(t.value||qg,"overrides.value")===qg,o="0x"===(t.data||"0x");!r.fallback||r.fallback.payable||!r.receive||o||a||Wo(!1,"cannot send data to receive or send value to non-payable fallback","overrides",e),Wo(r.fallback||o,"cannot send data to receive-only contract","overrides.data",t.data);return Wo(r.receive||r.fallback&&r.fallback.payable||a,"cannot send value to non-payable fallback","overrides.value",t.value),Wo(r.fallback||o,"cannot send data to receive-only contract","overrides.data",t.data),t},t=async function(t){const r=n.runner;$o(_g(r),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const a=await r.sendTransaction(await e(t)),o=Wg(n.runner);return new Dg(n.interface,o,a)},r=async n=>await t(n);return Ko(r,{_contract:n,estimateGas:async function(t){const r=$g(n.runner,"estimateGas");return $o(Kg(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=$g(n.runner,"call");$o(Hg(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(Qo(e)&&e.data)throw n.interface.makeError(e.data,a);throw e}}}),r}const nm=Symbol.for("_ethersInternal_contract"),em=new WeakMap;function tm(n){return em.get(n[nm])}async function rm(n,e){let t,r=null;if(Array.isArray(e)){const r=function(e){if(ai(e,32))return e;const t=n.interface.getEvent(e);return Wo(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?ai(e,32)?t=[e]:(r=n.interface.getEvent(e),Wo(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]):Wo(!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 am(n,e){const{subs:t}=tm(n);return t.get((await rm(n,e)).tag)||null}async function om(n,e,t){const r=Wg(n.runner);$o(r,"contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:e});const{fragment:a,tag:o,topics:i}=await rm(n,t),{addr:s,subs:c}=tm(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):[];sm(n,t,i,r=>new Gg(n,r,t,o,e))}else sm(n,t,[],r=>new Mg(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 im=Promise.resolve();async function sm(n,e,t,r){try{await im}catch(n){}const a=async function(n,e,t,r){await im;const a=await am(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(),tm(n).subs.delete(a.tag)),o>0}(n,e,t,r);return im=a,await a}const cm=["then"];class lm{target;interface;runner;filters;[nm];fallback;constructor(n,e,t,r){Wo("string"==typeof n||Ld(n),"invalid value for Contract target","target",n),null==t&&(t=null);const a=xg.from(e);let o;Ko(this,{target:n,runner:t,interface:a}),Object.defineProperty(this,nm,{value:{}});let i=null,s=null;if(r){const n=Wg(t);s=new Dg(this.interface,n,r)}let c=new Map;if("string"==typeof n)if(ai(n))i=n,o=Promise.resolve(n);else{const e=$g(t,"resolveName");if(!Vg(e))throw Jo("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});o=e.resolveName(n).then(e=>{if(null==e)throw Jo("an ENS name used for a contract target must be correctly configured","UNCONFIGURED_NAME",{value:n});return tm(this).addr=e,e})}else o=n.getAddress().then(n=>{if(null==n)throw new Error("TODO");return tm(this).addr=n,n});var l,u;l=this,u={addrPromise:o,addr:i,deployTx:s,subs:c},em.set(l[nm],u);const d=new Proxy({},{get:(n,e,t)=>{if("symbol"==typeof e||cm.indexOf(e)>=0)return Reflect.get(n,e,t);try{return this.getEvent(e)}catch(n){if(!_o(n,"INVALID_ARGUMENT")||"key"!==n.argument)throw n}},has:(n,e)=>cm.indexOf(e)>=0?Reflect.has(n,e):Reflect.has(n,e)||this.interface.hasEvent(String(e))});return Ko(this,{filters:d}),Ko(this,{fallback:a.receive||a.fallback?Xg(this):null}),new Proxy(this,{get:(n,e,t)=>{if("symbol"==typeof e||e in n||cm.indexOf(e)>=0)return Reflect.get(n,e,t);try{return n.getFunction(e)}catch(n){if(!_o(n,"INVALID_ARGUMENT")||"key"!==n.argument)throw n}},has:(n,e)=>"symbol"==typeof e||e in n||cm.indexOf(e)>=0?Reflect.has(n,e):n.interface.hasFunction(e)})}connect(n){return new lm(this.target,this.interface,n)}attach(n){return new lm(n,this.interface,this.runner)}async getAddress(){return await tm(this).addrPromise}async getDeployedCode(){const n=Wg(this.runner);$o(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=Wg(this.runner);return $o(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 tm(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 $o(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 Zg(e.pop()),a.from&&(a.from=await Md(a.from,Qg(n.runner)))),r.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const o=await Yg(n.runner,r.inputs,e);return Object.assign({},a,await Ho({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;$o(_g(t),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const a=await t.sendTransaction(await r(...e)),o=Wg(n.runner);return new Dg(n.interface,o,a)},i=async function(...e){const a=$g(n.runner,"call");$o(Hg(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(Qo(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 Ko(s,{name:n.interface.getFunctionName(e),_contract:n,_key:e,getFragment:t,estimateGas:async function(...e){const t=$g(n.runner,"estimateGas");return $o(Kg(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 $o(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 $o(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:t}}),r},r=function(...e){return new Jg(n,t(...e),e)};return Ko(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 $o(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}=tm(this),o=r||await a,{fragment:i,topics:s}=await rm(this,n),c={address:o,topics:s,fromBlock:e,toBlock:t},l=Wg(this.runner);return $o(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 Fg(n,this.interface,e)}catch(e){return new Lg(n,e)}return new Sg(n,l)})}async on(n,e){const t=await om(this,"on",n);return t.listeners.push({listener:e,once:!1}),t.start(),this}async once(n,e){const t=await om(this,"once",n);return t.listeners.push({listener:e,once:!0}),t.start(),this}async emit(n,...e){return await sm(this,n,e,null)}async listenerCount(n){if(n){const e=await am(this,n);return e?e.listeners.length:0}const{subs:e}=tm(this);let t=0;for(const{listeners:n}of e.values())t+=n.length;return t}async listeners(n){if(n){const e=await am(this,n);return e?e.listeners.map(({listener:n})=>n):[]}const{subs:e}=tm(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 am(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(),tm(this).subs.delete(t.tag)),this}async removeAllListeners(n){if(n){const e=await am(this,n);if(!e)return this;e.stop(),tm(this).subs.delete(e.tag)}else{const{subs:n}=tm(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 lm{constructor(e,t=null){super(e,n,t)}}}static from(n,e,t){null==t&&(t=null);return new this(n,e,t)}}class um extends(function(){return lm}()){}class dm{interface;bytecode;runner;constructor(n,e,t){const r=xg.from(n);e instanceof Uint8Array||("object"==typeof e&&(e=e.object),e.startsWith("0x")||(e="0x"+e)),Ko(this,{bytecode:e=si(ti(e)),interface:r,runner:t||null})}attach(n){return new lm(n,this.interface,this.runner)}async getDeployTransaction(...n){let e={};const t=this.interface.deploy;if(t.inputs.length+1===n.length&&(e=await Zg(n.pop())),t.inputs.length!==n.length)throw new Error("incorrect number of arguments to constructor");const r=await Yg(this.runner,t.inputs,n),a=ci([this.bytecode,this.interface.encodeDeploy(r)]);return Object.assign({},e,{data:a})}async deploy(...n){const e=await this.getDeployTransaction(...n);$o(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=Ud(t);return new lm(r,this.interface,this.runner,t)}connect(n){return new dm(this.interface,this.bytecode,n)}static fromSolidity(n,e){Wo(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 hm(n){return n.match(/^ipfs:\/\/ipfs\//i)?n=n.substring(12):n.match(/^ipfs:\/\//i)?n=n.substring(7):Wo(!1,"unsupported IPFS format","link",n),`https://gateway.ipfs.io/ipfs/${n}`}class pm{name;constructor(n){Ko(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 fm=new RegExp("^(ipfs)://(.*)$","i"),gm=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),fm,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];class mm{provider;address;name;#Sn;#Bn;constructor(n,e,t){Ko(this,{provider:n,address:e,name:t}),this.#Sn=null,this.#Bn=new um(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.#Sn&&(this.#Sn=(async()=>{try{return await this.#Bn.supportsInterface("0x9061b923")}catch(n){if(_o(n,"CALL_EXCEPTION"))return!1;throw this.#Sn=null,n}})()),await this.#Sn}async#Cn(n,e){e=(e||[]).slice();const t=this.#Bn.interface;e.unshift(Vp(this.name));let r=null;await this.supportsWildcard()&&(r=t.getFunction(n),$o(r,"missing fragment","UNKNOWN_ERROR",{info:{funcName:n}}),e=[_p(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(!_o(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===od?null:n}catch(n){if(_o(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(ai(t,20))return Cd(t)}let e=null;for(const t of this.provider.plugins)if(t instanceof pm&&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;$o(!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}://${Ui("0x"+e[2])}`}const t=n.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(t&&64===t[1].length)return`bzz://${t[1]}`;$o(!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<gm.length;t++){const r=e.match(gm[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=hm(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 um(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}",Ni(s,32).substring(2)),n.push({type:"metadata-url-expanded",value:l})),l.match(/^ipfs:/i)&&(l=hm(l)),n.push({type:"metadata-url",value:l});let u={};const d=await new rs(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:si(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(fm))return n.push({type:"!imageUrl-ipfs",value:h}),{url:null,linkage:n};n.push({type:"imageUrl-ipfs",value:h}),h=hm(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 $o(t,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),t.address}static async#On(n,e){const t=await mm.getEnsAddress(n);try{const r=new um(t,["function resolver(bytes32) view returns (address)"],n),a=await r.resolver(Vp(e),{enableCcipRead:!0});return a===od?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 mm.#On(n,t);if(null!=r){const a=new mm(n,r,e);return t===e||await a.supportsWildcard()?a:null}t=t.split(".").slice(1).join(".")}}}const bm=BigInt(0);function ym(n,e){return function(t){return null==t?e:n(t)}}function vm(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 wm(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){$o(!1,`invalid value for value.${a} (${n instanceof Error?n.message:"not-an-error"})`,"BAD_DATA",{value:t})}}return r}}function km(n){return Wo(ai(n,!0),"invalid data","value",n),n}function Am(n){return Wo(ai(n,32),"invalid hash","value",n),n}const Em=wm({address:Cd,blockHash:Am,blockNumber:Ii,data:km,index:Ii,removed:ym(function(n){switch(n){case!0:case"true":return!0;case!1:case"false":return!1}Wo(!1,`invalid boolean; ${JSON.stringify(n)}`,"value",n)},!1),topics:vm(Am),transactionHash:Am,transactionIndex:Ii},{index:["logIndex"]});const xm=wm({hash:ym(Am),parentHash:Am,parentBeaconBlockRoot:ym(Am,null),number:Ii,timestamp:Ii,nonce:ym(km),difficulty:ki,gasLimit:ki,gasUsed:ki,stateRoot:ym(Am,null),receiptsRoot:ym(Am,null),blobGasUsed:ym(ki,null),excessBlobGas:ym(ki,null),miner:ym(Cd),prevRandao:ym(Am,null),extraData:km,baseFeePerGas:ym(ki)},{prevRandao:["mixHash"]});const Im=wm({transactionIndex:Ii,blockNumber:Ii,transactionHash:Am,address:Cd,topics:vm(Am),data:km,index:Ii,blockHash:Am},{index:["logIndex"]});const Pm=wm({to:ym(Cd,null),from:ym(Cd,null),contractAddress:ym(Cd,null),index:Ii,root:ym(si),gasUsed:ki,blobGasUsed:ym(ki,null),logsBloom:ym(km),blockHash:Am,hash:Am,logs:vm(function(n){return Im(n)}),blockNumber:Ii,cumulativeGasUsed:ki,effectiveGasPrice:ym(ki),blobGasPrice:ym(ki,null),status:ym(Ii),type:ym(Ii,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function Nm(n){n.to&&ki(n.to)===bm&&(n.to="0x0000000000000000000000000000000000000000");const e=wm({hash:Am,index:ym(Ii,void 0),type:n=>"0x"===n||null==n?0:Ii(n),accessList:ym(uh,null),blobVersionedHashes:ym(vm(Am,!0),null),authorizationList:ym(vm(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:Cd(n.address),chainId:ki(n.chainId),nonce:ki(n.nonce),signature:xd.from(e)}},!1),null),blockHash:ym(Am,null),blockNumber:ym(Ii,null),transactionIndex:ym(Ii,null),from:Cd,gasPrice:ym(ki),maxPriorityFeePerGas:ym(ki),maxFeePerGas:ym(ki),maxFeePerBlobGas:ym(ki,null),gasLimit:ki,to:ym(Cd,null),value:ki,nonce:Ii,data:km,creates:ym(Cd,null),chainId:ym(ki,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(n);if(null==e.to&&null==e.creates&&(e.creates=Ud(e)),1!==n.type&&2!==n.type||null!=n.accessList||(e.accessList=[]),n.signature?e.signature=xd.from(n.signature):e.signature=xd.from(n),null==e.chainId){const n=e.signature.legacyChainId;null!=n&&(e.chainId=n)}return e.blockHash&&ki(e.blockHash)===bm&&(e.blockHash=null),e}class zm{name;constructor(n){Ko(this,{name:n})}clone(){return new zm(this.name)}}class Rm extends zm{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),Wo("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),Ko(this,t)}clone(){return new Rm(this.effectiveBlock,this)}}class Tm extends zm{address;targetNetwork;constructor(n,e){super("org.ethers.plugins.network.Ens"),Ko(this,{address:n||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new Tm(this.address,this.targetNetwork)}}class Sm extends zm{#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 Sm(this.#Un)}}class Bm extends zm{#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 Cm=new Map;class Om{#Ln;#tn;#jn;constructor(n,e){this.#Ln=n,this.#tn=ki(e),this.#jn=new Map}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#Ln}set name(n){this.#Ln=n}get chainId(){return this.#tn}set chainId(n){this.#tn=ki(n,"chainId")}matches(n){if(null==n)return!1;if("string"==typeof n){try{return this.chainId===ki(n)}catch(n){}return this.name===n}if("number"==typeof n||"bigint"==typeof n){try{return this.chainId===ki(n)}catch(n){}return!1}if("object"==typeof n){if(null!=n.chainId){try{return this.chainId===ki(n.chainId)}catch(n){}return!1}return null!=n.name&&this.name===n.name}return!1}get plugins(){return Array.from(this.#jn.values())}attachPlugin(n){if(this.#jn.get(n.name))throw new Error(`cannot replace existing plugin: ${n.name} `);return this.#jn.set(n.name,n.clone()),this}getPlugin(n){return this.#jn.get(n)||null}getPlugins(n){return this.plugins.filter(e=>e.name.split("#")[0]===n)}clone(){const n=new Om(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 Rm;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=uh(n.accessList);for(const n in r)t+=e.txAccessListAddress+e.txAccessListStorageKey*r[n].storageKeys.length}return t}static from(n){if(function(){if(Lm)return;function n(n,e,t){const r=function(){const r=new Om(n,e);return null!=t.ensNetwork&&r.attachPlugin(new Tm(null,t.ensNetwork)),r.attachPlugin(new Rm),(t.plugins||[]).forEach(n=>{r.attachPlugin(n)}),r};Om.register(n,r),Om.register(e,r),t.altNames&&t.altNames.forEach(n=>{Om.register(n,r)})}Lm=!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:[Fm("https://gasstation.polygon.technology/v2")]}),n("matic-amoy",80002,{}),n("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[Fm("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 Om.from("mainnet");if("number"==typeof n&&(n=BigInt(n)),"string"==typeof n||"bigint"==typeof n){const e=Cm.get(n);if(e)return e();if("bigint"==typeof n)return new Om("unknown",n);Wo(!1,"unknown network","network",n)}if("function"==typeof n.clone){return n.clone()}if("object"==typeof n){Wo("string"==typeof n.name&&"number"==typeof n.chainId,"invalid network object name or chainId","network",n);const e=new Om(n.name,n.chainId);return(n.ensAddress||null!=n.ensNetwork)&&e.attachPlugin(new Tm(n.ensAddress,n.ensNetwork)),e}Wo(!1,"invalid network","network",n)}static register(n,e){"number"==typeof n&&(n=BigInt(n));const t=Cm.get(n);t&&Wo(!1,`conflicting network for ${JSON.stringify(t.name)}`,"nameOrChainId",n),Cm.set(n,e)}}function Um(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 Fm(n){return new Bm(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:Um(o.maxFee,9),maxPriorityFeePerGas:Um(o.maxPriorityFee,9)}}catch(n){$o(!1,`error encountered with polygon gas station (${JSON.stringify(t.url)})`,"SERVER_ERROR",{request:t,response:r,error:n})}})}let Lm=!1;function jm(n){return JSON.parse(JSON.stringify(n))}class Dm{#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 Mm{#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 Gm extends Mm{#Vn;#_n;constructor(n,e){super(n),this.#Vn=e,this.#_n=-2}pause(n){n&&(this.#_n=-2),super.pause(n)}async _poll(n,e){const t=await e.getBlock(this.#Vn);null!=t&&(-2===this.#_n?this.#_n=t.number:t.number>this.#_n&&(e.emit(this.#Vn,t.number),this.#_n=t.number))}}class qm extends Mm{#Tn;constructor(n,e){super(n),this.#Tn=jm(e)}async _poll(n,e){throw new Error("@TODO")}}class Hm extends Mm{#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 Km{#Dn;#Tn;#Mn;#Kn;#qn;constructor(n,e){this.#Dn=n,this.#Tn=jm(e),this.#Mn=this.#Hn.bind(this),this.#Kn=!1,this.#qn=-2}async#Hn(n){if(-2===this.#qn)return;const e=jm(this.#Tn);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.#Tn,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 Vm=BigInt(2);function _m(n){return n&&"function"==typeof n.then}function Qm(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 Jm{name;constructor(n){Ko(this,{name:n})}start(){}stop(){}pause(n){}resume(){}}function $m(n){return(n=Array.from(new Set(n).values())).sort(),n}async function Wm(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(ai(n,32)){const e=n.toLowerCase();return{type:"transaction",tag:Qm("tx",{hash:e}),hash:e}}if(n.orphan){const e=n;return{type:"orphan",tag:Qm("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)?$m(n.map(n=>n.toLowerCase())):n.toLowerCase())};if(t.address){const n=[],a=[],o=t=>{ai(t)?n.push(t):a.push((async()=>{n.push(await Md(t,e))})())};Array.isArray(t.address)?t.address.forEach(o):o(t.address),a.length&&await Promise.all(a),r.address=$m(n.map(n=>n.toLowerCase()))}return{filter:r,tag:Qm("event",r),type:"event"}}Wo(!1,"unknown ProviderEvent","event",n)}function Zm(){return(new Date).getTime()}const Ym={cacheTimeout:250,pollingInterval:4e3};class Xm{#Jn;#jn;#$n;#Wn;#Zn;#Yn;#Xn;#ne;#ee;#te;#re;#Q;constructor(n,e){if(this.#Q=Object.assign({},Ym,e||{}),"any"===n)this.#Yn=!0,this.#Zn=null;else if(n){const e=Om.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.#jn=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.#jn.values())}attachPlugin(n){if(this.#jn.get(n.name))throw new Error(`cannot replace existing plugin: ${n.name} `);return this.#jn.set(n.name,n.connect(this)),this}getPlugin(n){return this.#jn.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=Qm(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 rs(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){}$o(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)}$o(!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 Tg(function(n){const e=xm(n);return e.transactions=n.transactions.map(n=>"string"==typeof n?n:Nm(n)),e}(n),this)}_wrapLog(n,e){return new Sg(function(n){return Em(n)}(n),this)}_wrapTransactionReceipt(n,e){return new Bg(function(n){return Pm(n)}(n),this)}_wrapTransactionResponse(n,e){return new Cg(Nm(n),this)}_detectNetwork(){$o(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(n){$o(!1,`unsupported method: ${n.method}`,"UNSUPPORTED_OPERATION",{operation:n.method,info:n})}async getBlockNumber(){const n=Ii(await this.#ae({method:"getBlockNumber"}),"%response");return this.#ne>=0&&(this.#ne=n),n}_getAddress(n){return Md(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 ai(n)?ai(n,32)?n:Ri(n):("bigint"==typeof n&&(n=Ii(n,"blockTag")),"number"==typeof n?n>=0?Ri(n):this.#ne>=0?Ri(this.#ne+n):this.getBlockNumber().then(e=>Ri(e+n)):void Wo(!1,"invalid blockTag","blockTag",n))}_getFilter(n){const e=(n.topics||[]).map(n=>null==n?null:Array.isArray(n)?$m(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=Rg(n),t=[];if(["to","from"].forEach(n=>{if(null==e[n])return;const r=Md(e[n],this);_m(r)?t.push(async function(){e[n]=await r}()):e[n]=r}),null!=e.blockTag){const n=this._getBlockTag(e.blockTag);_m(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))):$o(!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 Ho({_block:this.#oe("latest",!1),gasPrice:(async()=>{try{return ki(await this.#ae({method:"getGasPrice"}),"%response")}catch(n){}return null})(),priorityFee:(async()=>{try{return ki(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*Vm+o),new zg(t,a,o)},t=n.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(t){const n=new rs(t.url),r=await t.processFunc(e,this,n);return new zg(r.gasPrice,r.maxFeePerGas,r.maxPriorityFeePerGas)}return await e()}async estimateGas(n){let e=this._getTransactionRequest(n);return _m(e)&&(e=await e),ki(await this.#ae({method:"estimateGas",transaction:e}),"%response")}async#ie(n,e,t){$o(t<10,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},n,{blockTag:e,enableCcipRead:!0})});const r=Rg(n);try{return si(await this._perform({method:"call",transaction:r,blockTag:e}))}catch(n){if(!this.disableCcipRead&&Qo(n)&&n.data&&t>=0&&"latest"===e&&null!=r.to&&"0x556f1830"===ui(n.data,0,4)){const a=n.data,o=await Md(r.to,this);let i;try{i=function(n){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};$o(li(n)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const t=ui(n,0,32);$o(ui(t,0,12)===ui(ib,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),e.sender=ui(t,12);try{const t=[],r=Ii(ui(n,32,64)),a=Ii(ui(n,r,r+32)),o=ui(n,r+32);for(let n=0;n<a;n++){const e=nb(o,32*n);if(null==e)throw new Error("abort");t.push(e)}e.urls=t}catch(n){$o(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const t=eb(n,64);if(null==t)throw new Error("abort");e.calldata=t}catch(n){$o(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}$o(ui(n,100,128)===ui(ib,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),e.selector=ui(n,96,100);try{const t=eb(n,128);if(null==t)throw new Error("abort");e.extraData=t}catch(n){$o(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return e.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map(n=>e[n]),e}(ui(n.data,4))}catch(n){$o(!1,n.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:r,info:{data:a}})}$o(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);$o(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:ci([i.selector,ob([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 Ho({network:this.getNetwork(),value:n});return e}async call(n){const{tx:e,blockTag:t}=await Ho({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 ki(await this.#ce({method:"getBalance"},n,e),"%response")}async getTransactionCount(n,e){return Ii(await this.#ce({method:"getTransactionCount"},n,e),"%response")}async getCode(n,e){return si(await this.#ce({method:"getCode"},n,e))}async getStorage(n,e,t){const r=ki(e,"position");return si(await this.#ce({method:"getStorage",position:r},n,t))}async broadcastTransaction(n){const{blockNumber:e,hash:t,network:r}=await Ho({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:n}),network:this.getNetwork()}),a=Ch.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(ai(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 Ho({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 Ho({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 Ho({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 Ho({network:this.getNetwork(),result:this.#ae({method:"getTransactionResult",hash:n})});return null==e?null:si(e)}async getLogs(n){let e=this._getFilter(n);_m(e)&&(e=await e);const{network:t,params:r}=await Ho({network:this.getNetwork(),params:this.#ae({method:"getLogs",filter:e})});return r.map(n=>this._wrapLog(n,t))}_getProvider(n){$o(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(n){return await mm.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=Vp((n=Cd(n)).substring(2).toLowerCase()+".addr.reverse");try{const t=await mm.getEnsAddress(this),r=new um(t,["function resolver(bytes32) view returns (address)"],this),a=await r.resolver(e);if(null==a||a===od)return null;const o=new um(a,["function name(bytes32) view returns (string)"],this),i=await o.name(e);return await this.resolveName(i)!==n?null:i}catch(n){if(_o(n,"BAD_DATA")&&"0x"===n.value)return null;if(_o(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(Jo("timeout","TIMEOUT",{reason:"timeout"})))},t)),i(await this.getBlockNumber())})}async waitForBlock(n){$o(!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:Zm()})}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 Jm(n.type);case"block":{const n=new Dm(this);return n.pollingInterval=this.pollingInterval,n}case"safe":case"finalized":return new Gm(this,n.type);case"event":return new Km(this,n.filter);case"transaction":return new Hm(this,n.hash);case"orphan":return new qm(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 Wm(n,this);return"event"===t.type&&e&&e.length>0&&!0===e[0].removed&&(t=await Wm({orphan:"drop-log",log:e[0]},this)),this.#Jn.get(t.tag)||null}async#ue(n){const e=await Wm(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 Di(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;$o(!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=Zm()-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=Zm(),setTimeout(n.func,e)}}}}function nb(n,e){try{const t=eb(n,e);if(t)return Ki(t)}catch(n){}return null}function eb(n,e){if("0x"===n)return null;try{const t=Ii(ui(n,e,e+32)),r=Ii(ui(n,t,t+32));return ui(n,t+32,t+32+r)}catch(n){}return null}function tb(n){const e=zi(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 rb(n){if(n.length%32==0)return n;const e=new Uint8Array(32*Math.ceil(n.length/32));return e.set(n),e}const ab=new Uint8Array([]);function ob(n){const e=[];let t=0;for(let r=0;r<n.length;r++)e.push(ab),t+=32;for(let r=0;r<n.length;r++){const a=ti(n[r]);e[r]=tb(t),e.push(tb(a.length)),e.push(rb(a)),t+=32+32*Math.ceil(a.length/32)}return ci(e)}const ib="0x0000000000000000000000000000000000000000000000000000000000000000";function sb(n,e){if(n.provider)return n.provider;$o(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:e})}async function cb(n,e){let t=Rg(e);if(null!=t.to&&(t.to=Md(t.to,n)),null!=t.from){const e=t.from;t.from=Promise.all([n.getAddress(),Md(e,n)]).then(([n,e])=>(Wo(n.toLowerCase()===e.toLowerCase(),"transaction from mismatch","tx.from",e),n))}else t.from=n.getAddress();return await Ho(t)}class lb{provider;constructor(n){Ko(this,{provider:n||null})}async getNonce(n){return sb(this,"getTransactionCount").getTransactionCount(await this.getAddress(),n)}async populateCall(n){return await cb(this,n)}async populateTransaction(n){const e=sb(this,"populateTransaction"),t=await cb(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){Wo(ki(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||Wo(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",n):Wo(!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();$o(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?($o(!a,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),null==t.gasPrice&&(t.gasPrice=n.gasPrice),t.type=0):$o(!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 Ho(t)}async populateAuthorization(n){const e=Object.assign({},n);return null==e.chainId&&(e.chainId=(await sb(this,"getNetwork").getNetwork()).chainId),null==e.nonce&&(e.nonce=await this.getNonce()),e}async estimateGas(n){return sb(this,"estimateGas").estimateGas(await this.populateCall(n))}async call(n){return sb(this,"call").call(await this.populateCall(n))}async resolveName(n){const e=sb(this,"resolveName");return await e.resolveName(n)}async sendTransaction(n){const e=sb(this,"sendTransaction"),t=await this.populateTransaction(n);delete t.from;const r=Ch.from(t);return await e.broadcastTransaction(await this.signTransaction(r))}authorize(n){$o(!1,"authorization not implemented for this signer","UNSUPPORTED_OPERATION",{operation:"authorize"})}}class ub extends lb{address;constructor(n,e){super(e),Ko(this,{address:n})}async getAddress(){return this.address}connect(n){return new ub(this.address,n)}#de(n,e){$o(!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 db=new Set;function hb(n){db.has(n)||db.add(n)}class pb{#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(!_o(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 fb extends pb{#me;constructor(n,e){var t;super(n),this.#me=(t=e,JSON.parse(JSON.stringify(t)))}_recover(n){return new Km(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 gb extends pb{async _subscribe(n){return await n.send("eth_newPendingTransactionFilter",[])}async _emitResults(n,e){for(const t of e)n.emit("pending",t)}}const mb="bigint,boolean,function,number,string,symbol".split(/,/g);function bb(n){if(null==n||mb.indexOf(typeof n)>=0)return n;if("function"==typeof n.getAddress)return n;if(Array.isArray(n))return n.map(bb);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 yb(n){return new Promise(e=>{setTimeout(e,n)})}function vb(n){return n?n.toLowerCase():n}function wb(n){return n&&"number"==typeof n.pollingInterval}const kb={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class Ab extends lb{address;constructor(n,e){super(n),Ko(this,{address:e=Cd(e)})}connect(n){$o(!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=bb(n),t=[];if(e.from){const r=e.from;t.push((async()=>{const t=await Md(r,this.provider);Wo(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 Md(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(_o(n,"CANCELLED")||_o(n,"BAD_DATA")||_o(n,"NETWORK_ERROR")||_o(n,"UNSUPPORTED_OPERATION"))return null==n.info&&(n.info={}),n.info.sendTransactionHash=t,void r(n);if(_o(n,"INVALID_ARGUMENT")&&(o++,null==n.info&&(n.info={}),n.info.sendTransactionHash=t,o>10))return void r(n);this.provider.emit("error",Jo("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=bb(n);if(e.from){const t=await Md(e.from,this.provider);Wo(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?Hi(n):n;return await this.provider.send("personal_sign",[si(e),this.address.toLowerCase()])}async signTypedData(n,e,t){const r=bb(t),a=await bf.resolveNames(n,e,r,async n=>{const e=await Md(n);return Wo(null!=e,"TypedData does not support null address","value",n),e});return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(bf.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?Hi(n):n;return await this.provider.send("eth_sign",[this.address.toLowerCase(),si(e)])}}class Eb extends Xm{#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(Jo("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=Jo("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({},kb,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?(Wo(!t||"any"!==n,"staticNetwork cannot be used on special network 'any'","options",e),t&&null!=n&&(this.#pe=Om.from(n))):t&&(Wo(null==n||t.matches(n),"staticNetwork MUST match network object","options",e),this.#pe=t)}_getOption(n){return this.#Q[n]}get _network(){return $o(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&&ki(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=Om.from(ki(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 Om.from(ki(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",Jo("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:n}})),await yb(1e3)}this.#Ae()})())}async _waitUntilReady(){if(null!=this.#we)return await this.#we.promise}_getSubscriber(n){return"pending"===n.type?new gb(this):"event"===n.type?this._getOption("polling")?new Km(this,n.filter):new fb(this,n.filter):"orphan"===n.type&&"drop-log"===n.filter.orphan?new Jm("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]=Ri(ki(n[t],`tx.${t}`))}),["from","to","data"].forEach(t=>{null!=n[t]&&(e[t]=si(n[t]))}),n.accessList&&(e.accessList=uh(n.accessList)),n.blobVersionedHashes&&(e.blobVersionedHashes=n.blobVersionedHashes.map(n=>n.toLowerCase())),n.authorizationList&&(e.authorizationList=n.authorizationList.map(n=>{const e=dh(n);return{address:e.address,nonce:Ri(e.nonce),chainId:Ri(e.chainId),yParity:Ri(e.signature.yParity),r:Ri(e.signature.r),s:Ri(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:[vb(n.address),n.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[vb(n.address),n.blockTag]};case"getCode":return{method:"eth_getCode",args:[vb(n.address),n.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[vb(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(vb):n.filter.address=vb(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 Jo("insufficient funds","INSUFFICIENT_FUNDS",{transaction:n.params[0],info:{payload:n,error:r}});if(e.match(/nonce/i)&&e.match(/too low/i))return Jo("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=Pb(r),a=gg.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 Nb(n,e),e}(r));if("string"==typeof r.message&&r.message.match(/user denied|ethers-user-denied/i)){return Jo("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 Jo("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e,info:{error:r}});if(a.match(/nonce/i)&&a.match(/too low/i))return Jo("nonce has already been used","NONCE_EXPIRED",{transaction:e,info:{error:r}});if(a.match(/replacement transaction/i)&&a.match(/underpriced/i))return Jo("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e,info:{error:r}});if(a.match(/only replay-protected/i))return Jo("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?Jo("unsupported operation","UNSUPPORTED_OPERATION",{operation:n.method,info:{error:r,payload:n}}):Jo("could not coalesce error","UNKNOWN_ERROR",{error:r,payload:n})}send(n,e){if(this.destroyed)return Promise.reject(Jo("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 Ab(this,t[n])}const{accounts:t}=await Ho({network:this.getNetwork(),accounts:e});n=Cd(n);for(const e of t)if(Cd(e)===n)return new Ab(this,n);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map(n=>new Ab(this,n))}destroy(){this.#ve&&(clearTimeout(this.#ve),this.#ve=null);for(const{payload:n,reject:e}of this.#ye)e(Jo("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:n.method}));this.#ye=[],super.destroy()}}class xb extends Eb{#Ee;constructor(n,e){super(n,e);let t=this._getOption("pollingInterval");null==t&&(t=kb.pollingInterval),this.#Ee=t}_getSubscriber(n){const e=super._getSubscriber(n);return wb(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=>{wb(n)&&(n.pollingInterval=this.#Ee)})}}class Ib extends xb{#xe;constructor(n,e,t){null==n&&(n="http://localhost:8545"),super(e,t),this.#xe="string"==typeof n?new rs(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 Pb(n){if(null==n)return null;if("string"==typeof n.message&&n.message.match(/revert/i)&&ai(n.data))return{message:n.message,data:n.data};if("object"==typeof n){for(const e in n){const t=Pb(n[e]);if(t)return t}return null}if("string"==typeof n)try{return Pb(JSON.parse(n))}catch(n){}return null}function Nb(n,e){if(null!=n){if("string"==typeof n.message&&e.push(n.message),"object"==typeof n)for(const t in n)Nb(n[t],e);if("string"==typeof n)try{return Nb(JSON.parse(n),e)}catch(n){}}}const zb="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";class Rb extends Ib{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=zb);const r={polling:!0,staticNetwork:t};super(Rb.getRequest(t,e),t,r),Ko(this,{apiKey:e})}_getProvider(n){try{return new Rb(n,this.apiKey)}catch(n){}return super._getProvider(n)}static getRequest(n,e){null==e&&(e=zb);const t=new rs(`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"}Wo(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===zb&&(t.retryFunc=async(n,e,t)=>(hb("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===zb}}const Tb="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class Sb extends Ib{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=Tb);super(Sb.getRequest(t,e),t,{staticNetwork:t}),Ko(this,{apiKey:e})}_getProvider(n){try{return new Sb(n,this.apiKey)}catch(n){}return super._getProvider(n)}async _perform(n){if("getTransactionResult"===n.method){const{trace:e,tx:t}=await Ho({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 $o(!a,"an error occurred during transaction executions","CALL_EXCEPTION",{action:"getTransactionResult",data:r,reason:null,transaction:t,invocation:null,revert:null}),r;$o(!1,"could not parse trace result","BAD_DATA",{value:e})}return await super._perform(n)}isCommunityResource(){return this.apiKey===Tb}static getRequest(n,e){null==e&&(e=Tb);const t=new rs(`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"}Wo(!1,"unsupported network","network",n)}(n.name)}/v2/${e}`);return t.allowGzip=!0,e===Tb&&(t.retryFunc=async(n,e,t)=>(hb("alchemy"),!0)),t}}function Bb(n){switch(n){case"mainnet":return"39f1d67cedf8b7831010a665328c9197";case"arbitrum":return"0550c209db33c3abf4cc927e1e18cea1";case"bnb":return"98b5a77e531614387366f6fc5da097f8";case"matic":return"cd9d4d70377471aa7c142ec4a4205249"}Wo(!1,"unsupported network","network",n)}class Cb extends Ib{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=Bb(t.name));super(Cb.getRequest(t,e),t,{staticNetwork:t}),Ko(this,{apiKey:e})}_getProvider(n){try{return new Cb(n,this.apiKey)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.apiKey===Bb(this._network.name)}static getRequest(n,e){null==e&&(e=Bb(n.name));const t=new rs(`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"}Wo(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===Bb(n.name)&&(t.retryFunc=async(n,e,t)=>(hb("ChainstackProvider"),!0)),t}}class Ob extends Ib{constructor(n){null==n&&(n="mainnet");const e=Om.from(n);Wo("mainnet"===e.name,"unsupported network","network",n),super("https://cloudflare-eth.com/",e,{staticNetwork:e})}}const Ub="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 Fb="org.ethers.plugins.provider.Etherscan";class Lb extends zm{baseUrl;constructor(n){super(Fb),Ko(this,{baseUrl:n})}clone(){return new Lb(this.baseUrl)}}const jb=["enableCcipRead"];let Db=1;class Mb extends Xm{network;apiKey;#Ie;constructor(n,e){const t=null!=e?e:null;super();const r=Om.from(n);Wo(Ub.indexOf(`${r.chainId}`)>=0,"unsupported network","network",r),this.#Ie=r.getPlugin(Fb),Ko(this,{apiKey:t,network:r})}getBaseUrl(){if(this.#Ie)return this.#Ie.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"}Wo(!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=Db++,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 rs(a);i.setThrottleParams({slotInterval:1e3}),i.retryFunc=(n,e,t)=>(this.isCommunityResource()&&hb("Etherscan"),Promise.resolve(!0)),i.processFunc=async(e,t)=>{const a=t.hasBody()?JSON.parse(Ki(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"}),$o(!1,"response error","SERVER_ERROR",{request:i,response:s})}s.hasBody()||(this.emit("debug",{action:"receiveError",id:r,error:"missing body",reason:"null body"}),$o(!1,"missing response","SERVER_ERROR",{request:i,response:s}));const c=JSON.parse(Ki(s.body));return"proxy"===n?("2.0"!=c.jsonrpc&&(this.emit("debug",{action:"receiveError",id:r,result:c,reason:"invalid JSON-RPC"}),$o(!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"}),$o(!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}),$o(!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(jb.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=Ri(r);else if("accessList"===t)r="["+uh(r).map(n=>`{address:"${n.address}",storageKeys:["${n.storageKeys.join('","')}"]}`).join(",")+"]";else if("blobVersionedHashes"===t){if(0===r.length)continue;$o(!1,"Etherscan API does not support blobVersionedHashes","UNSUPPORTED_OPERATION",{operation:"_getTransactionPostData",info:{transaction:n}})}else r=si(r);e[t]=r}}return e}_checkError(n,e,t){let r="";if(_o(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)&&$o(!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=gg.getBuiltinCallException(n.method,n.transaction,t);throw r.info={request:n,error:e},r}if(r&&"broadcastTransaction"===n.method){const e=Ch.from(n.signedTransaction);r.match(/replacement/i)&&r.match(/underpriced/i)&&$o(!1,"replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e}),r.match(/insufficient funds/)&&$o(!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/)&&$o(!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"});$o(!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 um(e,t,this)}catch(n){return null}}isCommunityResource(){return null==this.apiKey}}const Gb=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 qb{#Dn;#Tn;get filter(){return JSON.parse(this.#Tn)}#Pe;#Ne;#ze;constructor(n,e){this.#Dn=n,this.#Tn=JSON.stringify(e),this.#Pe=null,this.#Ne=null,this.#ze=null}start(){this.#Pe=this.#Dn.send("eth_subscribe",this.filter).then(n=>(this.#Dn._register(n,this),n))}stop(){this.#Pe.then(n=>{this.#Dn.destroyed||this.#Dn.send("eth_unsubscribe",[n])}),this.#Pe=null}pause(n){$o(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.#Pe&&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 Hb extends qb{constructor(n){super(n,["newHeads"])}async _emit(n,e){n.emit("block",parseInt(e.number))}}class Kb extends qb{constructor(n){super(n,["newPendingTransactions"])}async _emit(n,e){n.emit("pending",e)}}class Vb extends qb{#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 _b extends Eb{#Te;#Jn;#Se;constructor(n,e){const t=Object.assign({},null!=e?e:{});Wo(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.#Te=new Map,this.#Jn=new Map,this.#Se=new Map}_getSubscriber(n){switch(n.type){case"close":return new Jm("close");case"block":return new Hb(this);case"pending":return new Kb(this);case"event":return new Vb(this,n.filter);case"orphan":if("drop-log"===n.filter.orphan)return new Jm("drop-log")}return super._getSubscriber(n)}_register(n,e){this.#Jn.set(n,e);const t=this.#Se.get(n);if(t){for(const n of t)e._handleMessage(n);this.#Se.delete(n)}}async _send(n){Wo(!Array.isArray(n),"WebSocket does not support batch send","payload",n);const e=new Promise((e,t)=>{this.#Te.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.#Te.get(e.id);if(null==n)return void this.emit("error",Jo("received result for unknown id","UNKNOWN_ERROR",{reasonCode:"UNKNOWN_ID",result:e}));this.#Te.delete(e.id),n.resolve(e)}else{if(!e||"eth_subscription"!==e.method)return void this.emit("error",Jo("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.#Se.get(n);null==t&&(t=[],this.#Se.set(n,t)),t.push(e.params.result)}}}}async _write(n){throw new Error("sub-classes must override this")}}class Qb extends _b{#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 Gb(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 Jb="84842078b09946638c03157f83405213";class $b extends Qb{projectId;projectSecret;constructor(n,e){const t=new Wb(n,e),r=t._getConnection();$o(!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),Ko(this,{projectId:t.projectId,projectSecret:t.projectSecret})}isCommunityResource(){return this.projectId===Jb}}class Wb extends Ib{projectId;projectSecret;constructor(n,e,t){null==n&&(n="mainnet");const r=Om.from(n);null==e&&(e=Jb),null==t&&(t=null);super(Wb.getRequest(r,e,t),r,{staticNetwork:r}),Ko(this,{projectId:e,projectSecret:t})}_getProvider(n){try{return new Wb(n,this.projectId,this.projectSecret)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.projectId===Jb}static getWebSocketProvider(n,e){return new $b(n,e)}static getRequest(n,e,t){null==e&&(e=Jb),null==t&&(t=null);const r=new rs(`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"}Wo(!1,"unsupported network","network",n)}(n.name)}/v3/${e}`);return r.allowGzip=!0,t&&r.setCredentials("",t),e===Jb&&(r.retryFunc=async(n,e,t)=>(hb("InfuraProvider"),!0)),r}}const Zb="919b412a057b5e9c9b6dce193c5a60242d6efadb";class Yb extends Ib{token;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=Zb);super(Yb.getRequest(t,e),t,{staticNetwork:t}),Ko(this,{token:e})}_getProvider(n){try{return new Yb(n,this.token)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.token===Zb}static getRequest(n,e){null==e&&(e=Zb);const t=new rs(`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"}Wo(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===Zb&&(t.retryFunc=async(n,e,t)=>(hb("QuickNodeProvider"),!0)),t}}const Xb=BigInt("1"),ny=BigInt("2");function ey(){return(new Date).getTime()}function ty(n){return JSON.stringify(n,(n,e)=>"bigint"==typeof e?{type:"bigint",value:e.toString()}:e)}const ry={stallTimeout:400,priority:1,weight:1},ay={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 oy(n){if(null==n)return"null";if(Array.isArray(n))return"["+n.map(oy).join(",")+"]";if("object"==typeof n&&"function"==typeof n.toJSON)return oy(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)}:${oy(n[e])}`).join(",")+"}"}}throw new Error("Hmm...")}function iy(n,e){if("error"in e){const n=e.error;let t;return t=_o(n,"CALL_EXCEPTION")?oy(Object.assign({},n,{shortMessage:void 0,reason:void 0,info:void 0})):oy(n),{tag:t,value:n}}const t=e.result;return{tag:oy(t),value:t}}function sy(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 cy(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]+Xb)/ny}function ly(n,e){const t=sy(n,e);if(void 0!==t)return t;for(const n of e)if(n.value)return n.value}class uy extends Xm{quorum;eventQuorum;eventWorkers;#Ce;#Oe;#Ue;constructor(n,e,t){super(e,t),this.#Ce=n.map(n=>n instanceof Xm?Object.assign({provider:n},ry,ay):Object.assign({},ry,n,ay)),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,Wo(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 Om.from(ki(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}#Le(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=ey();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=ey()-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#je(){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=ey()}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&&$o(!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}=iy(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(Ii(cy(this.quorum,this.#Ce.filter(n=>!n._lastFatalError).map(n=>({value:n.blockNumber,tag:Ii(n.blockNumber).toString(),weight:n.weight}))))));const n=function(n,e){if(1===n)return Ii(cy(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=Ii(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 cy(this.quorum,t);case"getBlock":return"blockTag"in e&&"pending"===e.blockTag?ly(this.quorum,t):sy(this.quorum,t);case"call":case"chainId":case"getBalance":case"getTransactionCount":case"getCode":case"getStorage":case"getTransaction":case"getTransactionReceipt":case"getLogs":return sy(this.quorum,t);case"broadcastTransaction":return ly(this.quorum,t)}$o(!1,"unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${ty(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.#Le(n,e);return $o(t.length>0,"quorum not met","SERVER_ERROR",{request:"%sub-requests",info:{request:e,results:Array.from(n).map(n=>ty(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(iy(n.method,{result:o}),{weight:r})}catch(t){e[a]=Object.assign(iy(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=sy(this.quorum,e.filter(n=>null!=n));if(_o(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=ly(this.quorum,e);if($o(void 0!==r,"problem multi-broadcasting","SERVER_ERROR",{request:"%sub-requests",info:{request:n,results:e.map(ty)}}),r instanceof Error)throw r;return r}await this.#je();const e=new Set;let t=0;for(;;){const r=this.#Le(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 dy="goerli kovan sepolia classicKotti optimism-goerli arbitrum-goerli matic-mumbai bnbt".split(" ");function hy(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 Ib(n);if("string"==typeof n&&n.match(/^wss?:/)||(r=n)&&"function"==typeof r.send&&"function"==typeof r.close)return new Qb(n);var r;let a=null;try{a=Om.from(n)}catch(n){}const o=[];if(t("publicPolygon")&&a&&("matic"===a.name?o.push(new Ib("https://polygon-rpc.com/",a,{staticNetwork:a})):"matic-amoy"===a.name&&o.push(new Ib("https://rpc-amoy.polygon.technology/",a,{staticNetwork:a}))),t("alchemy"))try{o.push(new Sb(n,e.alchemy))}catch(n){}if(t("ankr")&&null!=e.ankr)try{o.push(new Rb(n,e.ankr))}catch(n){}if(t("chainstack"))try{o.push(new Cb(n,e.chainstack))}catch(n){}if(t("cloudflare"))try{o.push(new Ob(n))}catch(n){}if(t("etherscan"))try{o.push(new Mb(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 Wb(n,r,t))}catch(n){}if(t("quicknode"))try{let t=e.quicknode;o.push(new Yb(n,t))}catch(n){}if($o(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!==dy.indexOf(a.name)&&(i=1),e&&e.quorum&&(i=e.quorum),new uy(o,void 0,{quorum:i})}class py extends lb{signer;#Ge;#qe;constructor(n){super(n.provider),Ko(this,{signer:n}),this.#Ge=null,this.#qe=0}async getAddress(){return this.signer.getAddress()}connect(n){return new py(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 fy extends xb{#k;#He;constructor(n,e,t){const r=Object.assign({},null!=t?t:{},{batchMaxCount:1});Wo(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){Wo(!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 fy(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 fy(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 fy)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 fy(e,void 0,{providerInfo:t}))}else o(Jo("filter returned unknown info","UNSUPPORTED_OPERATION",{value:e}))}}else{const{provider:n,info:e}=i[0];a(new fy(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 gy extends Ib{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=null);super(gy.getRequest(t),t,{staticNetwork:t}),Ko(this,{apiKey:e})}_getProvider(n){try{return new gy(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&&!ai(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 rs(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"}Wo(!1,"unsupported network","network",n)}(n.name));return e.allowGzip=!0,e}}const my="62e1ad51b37b8e00394bda3b";class by extends Ib{applicationId;applicationSecret;constructor(n,e,t){null==n&&(n="mainnet");const r=Om.from(n);null==e&&(e=my),null==t&&(t=null);const a={staticNetwork:r};super(by.getRequest(r,e,t),r,a),Ko(this,{applicationId:e,applicationSecret:t})}_getProvider(n){try{return new by(n,this.applicationId,this.applicationSecret)}catch(n){}return super._getProvider(n)}static getRequest(n,e,t){null==e&&(e=my);const r=new rs(`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"}Wo(!1,"unsupported network","network",n)}(n.name)}/v1/lb/${e}`);return r.allowGzip=!0,t&&r.setCredentials("",t),e===my&&(r.retryFunc=async(n,e,t)=>(hb("PocketProvider"),!0)),r}isCommunityResource(){return this.applicationId===my}}const yy=void 0;class vy extends lb{address;#Ke;constructor(n,e){super(e),Wo(n&&"function"==typeof n.sign,"invalid private key","privateKey","[ REDACTED ]"),this.#Ke=n;Ko(this,{address:hh(this.signingKey.publicKey)})}get signingKey(){return this.#Ke}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(n){return new vy(this.#Ke,n)}async signTransaction(n){n=Rg(n);const{to:e,from:t}=await Ho({to:n.to?Md(n.to,this):void 0,from:n.from?Md(n.from,this):void 0});null!=e&&(n.to=e),null!=t&&(n.from=t),null!=n.from&&(Wo(Cd(n.from)===this.address,"transaction from address mismatch","tx.from",n.from),delete n.from);const r=Ch.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(Qp(n)).serialized}authorizeSync(n){Wo("string"==typeof n.address,"invalid address for authorizeSync","auth.address",n);const e=this.signingKey.sign(Oh(n));return Object.assign({},{address:Cd(n.address),nonce:ki(n.nonce||0),chainId:ki(n.chainId||0)},{signature:e})}async authorize(n){return n=Object.assign({},n,{address:await Md(n.address,this)}),this.authorizeSync(await this.populateAuthorization(n))}async signTypedData(n,e,t){const r=await bf.resolveNames(n,e,t,async n=>{$o(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 $o(null!=e,"unconfigured ENS name","UNCONFIGURED_NAME",{value:n}),e});return this.signingKey.sign(bf.hash(r.domain,e,r.value)).serialized}}const wy=" !#$%&'()*+,-./<=>?@[]^_`{|}~",ky=/^[a-z]*$/i;function Ay(n,e){let t=97;return n.reduce((n,r)=>(r===e?t++:r.match(ky)?n.push(String.fromCharCode(t)+r):(t=97,n.push(r)),n),[])}function Ey(n){return Wo("0"===n[0],"unsupported auwl data","data",n),function(n,e){for(let t=28;t>=0;t--)n=n.split(wy[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 Ay(Ay(t,";"),":")}(n.substring(59),n.substring(1,59))}class xy{locale;constructor(n){Ko(this,{locale:n})}split(n){return n.toLowerCase().split(/\s+/g)}join(n){return n.join(" ")}}class Iy extends xy{#C;#Ve;constructor(n,e,t){super(n),this.#C=e,this.#Ve=t,this.#_e=null}get _data(){return this.#C}_decodeWords(){return Ey(this.#C)}#_e;#Qe(){if(null==this.#_e){const n=this._decodeWords();if(Fh(n.join("\n")+"\n")!==this.#Ve)throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);this.#_e=n}return this.#_e}getWord(n){const e=this.#Qe();return Wo(n>=0&&n<e.length,`invalid word index: ${n}`,"index",n),e[n]}getWordIndex(n){return this.#Qe().indexOf(n)}}let Py=null;class Ny extends Iy{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==Py&&(Py=new Ny),Py}}function zy(n){return(1<<n)-1<<8-n&255}function Ry(n){return(1<<n)-1&255}function Ty(n,e){Xo("NFKD"),null==e&&(e=Ny.wordlist());const t=e.split(n);Wo(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"));Wo(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=zy(t.length/3);return Wo((ti(nu(r.slice(0,o/8)))[0]&i)===(r[r.length-1]&i),"invalid mnemonic checksum","mnemonic","[ REDACTED ]"),si(r.slice(0,o/8))}function Sy(n,e){Wo(n.length%4==0&&n.length>=16&&n.length<=32,"invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=Ny.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]&Ry(8-r)),r+=3);const a=n.length/4,o=parseInt(nu(n).substring(2,4),16)&zy(a);return t[t.length-1]<<=a,t[t.length-1]|=o>>8-a,e.join(t.map(n=>e.getWord(n)))}const By={};class Cy{phrase;password;wordlist;entropy;constructor(n,e,t,r,a){null==r&&(r=""),null==a&&(a=Ny.wordlist()),ni(n,By,"Mnemonic"),Ko(this,{phrase:t,password:r,wordlist:a,entropy:e})}computeSeed(){const n=Hi("mnemonic"+this.password,"NFKD");return Tl(Hi(this.phrase,"NFKD"),n,2048,64,"sha512")}static fromPhrase(n,e,t){const r=Ty(n,t);return n=Sy(ti(r),t),new Cy(By,r,n,e,t)}static fromEntropy(n,e,t){const r=ti(n,"entropy"),a=Sy(r,t);return new Cy(By,si(r),a,e,t)}static entropyToPhrase(n,e){return Sy(ti(n,"entropy"),e)}static phraseToEntropy(n,e){return Ty(n,e)}static isValidMnemonic(n,e){try{return Ty(n,e),!0}catch(n){}return!1}}
14
- /*! MIT License. Copyright 2015-2022 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */var Oy,Uy,Fy,Ly=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)},jy=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 Dy={16:10,24:12,32:14},My=[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],Gy=[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],qy=[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],Hy=[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],Ky=[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],Vy=[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],_y=[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],Qy=[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],Jy=[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],$y=[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],Wy=[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],Zy=[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],Yy=[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],Xy=[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],nv=[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 ev(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 tv{get key(){return Ly(this,Oy,"f").slice()}constructor(n){if(Oy.set(this,void 0),Uy.set(this,void 0),Fy.set(this,void 0),!(this instanceof tv))throw Error("AES must be instanitated with `new`");jy(this,Oy,new Uint8Array(n),"f");const e=Dy[this.key.length];if(null==e)throw new TypeError("invalid key size (must be 16, 24 or 32 bytes)");jy(this,Fy,[],"f"),jy(this,Uy,[],"f");for(let n=0;n<=e;n++)Ly(this,Fy,"f").push([0,0,0,0]),Ly(this,Uy,"f").push([0,0,0,0]);const t=4*(e+1),r=this.key.length/4,a=ev(this.key);let o;for(let n=0;n<r;n++)o=n>>2,Ly(this,Fy,"f")[o][n%4]=a[n],Ly(this,Uy,"f")[e-o][n%4]=a[n];let i,s=0,c=r;for(;c<t;){if(i=a[r-1],a[0]^=Gy[i>>16&255]<<24^Gy[i>>8&255]<<16^Gy[255&i]<<8^Gy[i>>24&255]^My[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]^=Gy[255&i]^Gy[i>>8&255]<<8^Gy[i>>16&255]<<16^Gy[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,Ly(this,Fy,"f")[n][o]=a[l],Ly(this,Uy,"f")[e-n][o]=a[l++],c++}for(let n=1;n<e;n++)for(let e=0;e<4;e++)i=Ly(this,Uy,"f")[n][e],Ly(this,Uy,"f")[n][e]=Zy[i>>24&255]^Yy[i>>16&255]^Xy[i>>8&255]^nv[255&i]}encrypt(n){if(16!=n.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=Ly(this,Fy,"f").length-1,t=[0,0,0,0];let r=ev(n);for(let n=0;n<4;n++)r[n]^=Ly(this,Fy,"f")[0][n];for(let n=1;n<e;n++){for(let e=0;e<4;e++)t[e]=Hy[r[e]>>24&255]^Ky[r[(e+1)%4]>>16&255]^Vy[r[(e+2)%4]>>8&255]^_y[255&r[(e+3)%4]]^Ly(this,Fy,"f")[n][e];r=t.slice()}const a=new Uint8Array(16);let o=0;for(let n=0;n<4;n++)o=Ly(this,Fy,"f")[e][n],a[4*n]=255&(Gy[r[n]>>24&255]^o>>24),a[4*n+1]=255&(Gy[r[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(Gy[r[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Gy[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=Ly(this,Uy,"f").length-1,t=[0,0,0,0];let r=ev(n);for(let n=0;n<4;n++)r[n]^=Ly(this,Uy,"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+3)%4]>>16&255]^$y[r[(e+2)%4]>>8&255]^Wy[255&r[(e+1)%4]]^Ly(this,Uy,"f")[n][e];r=t.slice()}const a=new Uint8Array(16);let o=0;for(let n=0;n<4;n++)o=Ly(this,Uy,"f")[e][n],a[4*n]=255&(qy[r[n]>>24&255]^o>>24),a[4*n+1]=255&(qy[r[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(qy[r[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(qy[255&r[(n+1)%4]]^o);return a}}Oy=new WeakMap,Uy=new WeakMap,Fy=new WeakMap;class rv{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 tv(e)},name:{enumerable:!0,value:n}})}}var av,ov,iv=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},sv=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 cv extends rv{constructor(n,e){if(super("ECC",n,cv),av.set(this,void 0),ov.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");iv(this,av,new Uint8Array(e),"f")}else iv(this,av,new Uint8Array(16),"f");iv(this,ov,this.iv,"f")}get iv(){return new Uint8Array(sv(this,av,"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++)sv(this,ov,"f")[e]^=n[t+e];iv(this,ov,this.aes.encrypt(sv(this,ov,"f")),"f"),e.set(sv(this,ov,"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]^sv(this,ov,"f")[a],sv(this,ov,"f")[a]=n[t+a]}return e}}av=new WeakMap,ov=new WeakMap;var lv,uv,dv,hv=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},pv=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 fv extends rv{constructor(n,e){super("CTR",n,fv),lv.set(this,void 0),uv.set(this,void 0),dv.set(this,void 0),hv(this,dv,new Uint8Array(16),"f"),pv(this,dv,"f").fill(0),hv(this,lv,pv(this,dv,"f"),"f"),hv(this,uv,16,"f"),null==e&&(e=1),"number"==typeof e?this.setCounterValue(e):this.setCounterBytes(e)}get counter(){return new Uint8Array(pv(this,dv,"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)pv(this,dv,"f")[e]=n%256,n=Math.floor(n/256)}setCounterBytes(n){if(16!==n.length)throw new TypeError("invalid counter initial Uint8Array value length");pv(this,dv,"f").set(n)}increment(){for(let n=15;n>=0;n--){if(255!==pv(this,dv,"f")[n]){pv(this,dv,"f")[n]++;break}pv(this,dv,"f")[n]=0}}encrypt(n){var e,t;const r=new Uint8Array(n);for(let n=0;n<r.length;n++)16===pv(this,uv,"f")&&(hv(this,lv,this.aes.encrypt(pv(this,dv,"f")),"f"),hv(this,uv,0,"f"),this.increment()),r[n]^=pv(this,lv,"f")[(hv(this,uv,(t=pv(this,uv,"f"),e=t++,t),"f"),e)];return r}decrypt(n){return this.encrypt(n)}}function gv(n){return"string"!=typeof n||n.startsWith("0x")||(n="0x"+n),ri(n)}function mv(n,e){for(n=String(n);n.length<e;)n="0"+n;return n}function bv(n){return"string"==typeof n?Hi(n,"NFKC"):ri(n)}function yv(n,e){const t=e.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);Wo(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(Wo(!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 gv(i);if("array"===a&&Array.isArray(i))return i;if(a===typeof i)return i;Wo(!1,`wrong type found for ${a} `,"path",r)}return i}lv=new WeakMap,uv=new WeakMap,dv=new WeakMap;const vv="m/44'/60'/0'/0/0";function wv(n){try{const e=JSON.parse(n);if(3===(null!=e.version?parseInt(e.version):0))return!0}catch(n){}return!1}function kv(n,e){const t=ti(e),r=yv(n,"crypto.ciphertext:data!");Wo(si(cl(ci([t.slice(16,32),r]))).substring(2)===yv(n,"crypto.mac:string!").toLowerCase(),"incorrect password","password","[ REDACTED ]");const a=function(n,e,t){if("aes-128-ctr"===yv(n,"crypto.cipher:string")){const r=yv(n,"crypto.cipherparams.iv:data!");return si(new fv(e,r).decrypt(t))}$o(!1,"unsupported cipher","UNSUPPORTED_OPERATION",{operation:"decrypt"})}(n,t.slice(0,16),r),o=hh(a);if(n.address){let e=n.address.toLowerCase();e.startsWith("0x")||(e="0x"+e),Wo(Cd(e)===o,"keystore address/privateKey mismatch","address",n.address)}const i={address:o,privateKey:a};if("0.1"===yv(n,"x-ethers.version:string")){const e=t.slice(32,64),r=yv(n,"x-ethers.mnemonicCiphertext:data!"),a=yv(n,"x-ethers.mnemonicCounter:data!"),o=new fv(e,a);i.mnemonic={path:yv(n,"x-ethers.path:string")||vv,locale:yv(n,"x-ethers.locale:string")||"en",entropy:si(ti(o.decrypt(r)))}}return i}function Av(n){const e=yv(n,"crypto.kdf:string");if(e&&"string"==typeof e){if("scrypt"===e.toLowerCase()){const t=yv(n,"crypto.kdfparams.salt:data!"),r=yv(n,"crypto.kdfparams.n:int!"),a=yv(n,"crypto.kdfparams.r:int!"),o=yv(n,"crypto.kdfparams.p:int!");Wo(r>0&&!(r&r-1),"invalid kdf.N","kdf.N",r),Wo(a>0&&o>0,"invalid kdf","kdf",e);const i=yv(n,"crypto.kdfparams.dklen:int!");return Wo(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=yv(n,"crypto.kdfparams.salt:data!"),t=yv(n,"crypto.kdfparams.prf:string!"),r=t.split("-").pop();Wo("sha256"===r||"sha512"===r,"invalid kdf.pdf","kdf.pdf",t);const a=yv(n,"crypto.kdfparams.c:int!"),o=yv(n,"crypto.kdfparams.dklen:int!");return Wo(32===o,"invalid kdf.dklen","kdf.dklen",o),{name:"pbkdf2",salt:e,count:a,dkLen:o,algorithm:r}}}Wo(!1,"unsupported key-derivation function","kdf",e)}function Ev(n,e){const t=JSON.parse(n),r=bv(e),a=Av(t);if("pbkdf2"===a.name){const{salt:n,count:e,dkLen:o,algorithm:i}=a;return kv(t,Tl(r,n,e,o,i))}$o("scrypt"===a.name,"cannot be reached","UNKNOWN_ERROR",{params:a});const{salt:o,N:i,r:s,p:c,dkLen:l}=a;return kv(t,Ql(r,o,i,s,c,l))}function xv(n){return new Promise(e=>{setTimeout(()=>{e()},n)})}async function Iv(n,e,t){const r=JSON.parse(n),a=bv(e),o=Av(r);if("pbkdf2"===o.name){t&&(t(0),await xv(0));const{salt:n,count:e,dkLen:i,algorithm:s}=o,c=Tl(a,n,e,i,s);return t&&(t(1),await xv(0)),kv(r,c)}$o("scrypt"===o.name,"cannot be reached","UNKNOWN_ERROR",{params:o});const{salt:i,N:s,r:c,p:l,dkLen:u}=o;return kv(r,await _l(a,i,s,c,l,u,t))}function Pv(n){const e=null!=n.salt?ti(n.salt,"options.salt"):Ol(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)),Wo("number"==typeof t&&t>0&&Number.isSafeInteger(t)&&(BigInt(t)&BigInt(t-1))===BigInt(0),"invalid scrypt N parameter","options.N",t),Wo("number"==typeof r&&r>0&&Number.isSafeInteger(r),"invalid scrypt r parameter","options.r",r),Wo("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 Nv(n,e,t,r){const a=ti(t.privateKey,"privateKey"),o=null!=r.iv?ti(r.iv,"options.iv"):Ol(16);Wo(16===o.length,"invalid options.iv length","options.iv",r.iv);const i=null!=r.uuid?ti(r.uuid,"options.uuid"):Ol(16);Wo(16===i.length,"invalid options.uuid length","options.uuid",r.iv);const s=n.slice(0,16),c=n.slice(16,32),l=ti(new fv(s,o).encrypt(a)),u=cl(ci([c,l])),d={address:t.address.substring(2).toLowerCase(),id:Ts(i),version:3,Crypto:{cipher:"aes-128-ctr",cipherparams:{iv:si(o).substring(2)},ciphertext:si(l).substring(2),kdf:"scrypt",kdfparams:{salt:si(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/${Go}`,a=t.mnemonic.path||vv,o=t.mnemonic.locale||"en",i=n.slice(32,64),s=ti(t.mnemonic.entropy,"account.mnemonic.entropy"),c=Ol(16),l=ti(new fv(i,c).encrypt(s)),u=new Date,h="UTC--"+(u.getUTCFullYear()+"-"+mv(u.getUTCMonth()+1,2)+"-"+mv(u.getUTCDate(),2)+"T"+mv(u.getUTCHours(),2)+"-"+mv(u.getUTCMinutes(),2)+"-"+mv(u.getUTCSeconds(),2)+".0Z")+"--"+d.address;d["x-ethers"]={client:e,gethFilename:h,path:a,locale:o,mnemonicCounter:si(c).substring(2),mnemonicCiphertext:si(l).substring(2),version:"0.1"}}return JSON.stringify(d)}function zv(n,e,t){null==t&&(t={});const r=bv(e),a=Pv(t);return Nv(ti(Ql(r,a.salt,a.N,a.r,a.p,64)),a,n,t)}async function Rv(n,e,t){null==t&&(t={});const r=bv(e),a=Pv(t);return Nv(ti(await _l(r,a.salt,a.N,a.r,a.p,64,t.progressCallback)),a,n,t)}const Tv="m/44'/60'/0'/0/0",Sv=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),Bv=2147483648,Cv=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Ov(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 Uv(n){const e=ti(n);return Ui(ci([e,ui(nu(nu(e)),0,4)]))}const Fv={};function Lv(n,e,t,r){const a=new Uint8Array(37);n&Bv?($o(null!=r,"cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"}),a.set(ti(r),1)):a.set(ti(t));for(let e=24;e>=0;e-=8)a[33+(e>>3)]=n>>24-e&255;const o=ti(Hc("sha512",e,a));return{IL:o.slice(0,32),IR:o.slice(32)}}function jv(n,e){const t=e.split("/");Wo(t.length>0,"invalid path","path",e),"m"===t[0]&&(Wo(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));Wo(t<Bv,"invalid path index",`path[${n}]`,e),r=r.deriveChild(Bv+t)}else if(e.match(/^[0-9]+$/)){const t=parseInt(e);Wo(t<Bv,"invalid path index",`path[${n}]`,e),r=r.deriveChild(t)}else Wo(!1,"invalid path component",`path[${n}]`,e)}return r}class Dv extends vy{publicKey;fingerprint;parentFingerprint;mnemonic;chainCode;path;index;depth;constructor(n,e,t,r,a,o,i,s,c){super(e,c),ni(n,Fv,"HDNodeWallet"),Ko(this,{publicKey:e.compressedPublicKey});Ko(this,{parentFingerprint:t,fingerprint:ui(Pl(nu(this.publicKey)),0,4),chainCode:r,path:a,index:o,depth:i}),Ko(this,{mnemonic:s})}connect(n){return new Dv(Fv,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 Rv(this.#Je(),n,{progressCallback:e})}encryptSync(n){return zv(this.#Je(),n)}get extendedKey(){return $o(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Uv(ci(["0x0488ADE4",Ov(this.depth,1),this.parentFingerprint,Ov(this.index,4),this.chainCode,ci(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new Mv(Fv,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(n){const e=Ii(n,"index");Wo(e<=4294967295,"invalid index","index",e);let t=this.path;t&&(t+="/"+(2147483647&e),e&Bv&&(t+="'"));const{IR:r,IL:a}=Lv(e,this.chainCode,this.publicKey,this.privateKey),o=new Id(Ni((xi(a)+BigInt(this.privateKey))%Cv,32));return new Dv(Fv,o,this.fingerprint,si(r),t,e,this.depth+1,this.mnemonic,this.provider)}derivePath(n){return jv(this,n)}static#$e(n,e){Wo(oi(n),"invalid seed","seed","[REDACTED]");const t=ti(n,"seed");Wo(t.length>=16&&t.length<=64,"invalid seed","seed","[REDACTED]");const r=ti(Hc("sha512",Sv,t)),a=new Id(si(r.slice(0,32)));return new Dv(Fv,a,"0x00000000",si(r.slice(32)),"m",0,0,e,null)}static fromExtendedKey(n){const e=zi(Fi(n));Wo(82===e.length||Uv(e.slice(0,78))===n,"invalid extended key","extendedKey","[ REDACTED ]");const t=e[4],r=si(e.slice(5,9)),a=parseInt(si(e.slice(9,13)).substring(2),16),o=si(e.slice(13,45)),i=e.slice(45,78);switch(si(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const n=si(i);return new Mv(Fv,hh(n),n,r,o,null,a,t,null)}case"0x0488ade4":case"0x04358394 ":if(0!==i[0])break;return new Dv(Fv,new Id(i.slice(1)),r,o,null,a,t,null,null)}Wo(!1,"invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(n,e,t){null==n&&(n=""),null==e&&(e=Tv),null==t&&(t=Ny.wordlist());const r=Cy.fromEntropy(Ol(16),n,t);return Dv.#$e(r.computeSeed(),r).derivePath(e)}static fromMnemonic(n,e){return e||(e=Tv),Dv.#$e(n.computeSeed(),n).derivePath(e)}static fromPhrase(n,e,t,r){null==e&&(e=""),null==t&&(t=Tv),null==r&&(r=Ny.wordlist());const a=Cy.fromPhrase(n,e,r);return Dv.#$e(a.computeSeed(),a).derivePath(t)}static fromSeed(n){return Dv.#$e(n,null)}}class Mv extends ub{publicKey;fingerprint;parentFingerprint;chainCode;path;index;depth;constructor(n,e,t,r,a,o,i,s,c){super(e,c),ni(n,Fv,"HDNodeVoidWallet"),Ko(this,{publicKey:t});Ko(this,{publicKey:t,fingerprint:ui(Pl(nu(t)),0,4),parentFingerprint:r,chainCode:a,path:o,index:i,depth:s})}connect(n){return new Mv(Fv,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,n)}get extendedKey(){return $o(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Uv(ci(["0x0488B21E",Ov(this.depth,1),this.parentFingerprint,Ov(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(n){const e=Ii(n,"index");Wo(e<=4294967295,"invalid index","index",e);let t=this.path;t&&(t+="/"+(2147483647&e),e&Bv&&(t+="'"));const{IR:r,IL:a}=Lv(e,this.chainCode,this.publicKey,null),o=Id.addPoints(a,this.publicKey,!0),i=hh(o);return new Mv(Fv,i,o,this.fingerprint,si(r),t,e,this.depth+1,this.provider)}derivePath(n){return jv(this,n)}}function Gv(n){const e=Ii(n,"index");return Wo(e>=0&&e<Bv,"invalid account index","index",e),`m/44'/60'/${e}'/0/0`}function qv(n){const e=Ii(n,"index");return Wo(e>=0&&e<Bv,"invalid account index","index",e),`m/44'/60'/0'/0/${e}`}function Hv(n){try{if(JSON.parse(n).encseed)return!0}catch(n){}return!1}function Kv(n,e){const t=JSON.parse(n),r=bv(e),a=Cd(yv(t,"ethaddr:string!")),o=gv(yv(t,"encseed:string!"));Wo(o&&o.length%16==0,"invalid encseed","json",n);const i=ti(Tl(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))}(ti(new cv(i,s).decrypt(c)));let u="";for(let n=0;n<l.length;n++)u+=String.fromCharCode(l[n]);return{address:a,privateKey:Fh(u)}}function Vv(n){return new Promise(e=>{setTimeout(()=>{e()},n)})}class _v extends vy{constructor(n,e){"string"!=typeof n||n.startsWith("0x")||(n="0x"+n),super("string"==typeof n?new Id(n):n,e)}connect(n){return new _v(this.signingKey,n)}async encrypt(n,e){const t={address:this.address,privateKey:this.privateKey};return await Rv(t,n,{progressCallback:e})}encryptSync(n){return zv({address:this.address,privateKey:this.privateKey},n)}static#We(n){if(Wo(n,"invalid JSON wallet","json","[ REDACTED ]"),"mnemonic"in n&&n.mnemonic&&"en"===n.mnemonic.locale){const e=Cy.fromEntropy(n.mnemonic.entropy),t=Dv.fromMnemonic(e,n.mnemonic.path);if(t.address===n.address&&t.privateKey===n.privateKey)return t}const e=new _v(n.privateKey);return Wo(e.address===n.address,"address/privateKey mismatch","json","[ REDACTED ]"),e}static async fromEncryptedJson(n,e,t){let r=null;return wv(n)?r=await Iv(n,e,t):Hv(n)&&(t&&(t(0),await Vv(0)),r=Kv(n,e),t&&(t(1),await Vv(0))),_v.#We(r)}static fromEncryptedJsonSync(n,e){let t=null;return wv(n)?t=Ev(n,e):Hv(n)?t=Kv(n,e):Wo(!1,"invalid JSON wallet","json","[ REDACTED ]"),_v.#We(t)}static createRandom(n){const e=Dv.createRandom();return n?e.connect(n):e}static fromPhrase(n,e){const t=Dv.fromPhrase(n);return e?t.connect(e):t}}class Qv extends Iy{#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=Ey(n).join(",");return e.split(/,/g).forEach(n=>{const r=n.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);Wo(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 Jv={en:Ny.wordlist()};var $v=Object.freeze({__proto__:null,version:Go,decodeBytes32String:bg,encodeBytes32String:mg,AbiCoder:gg,ConstructorFragment:ig,ErrorFragment:ag,EventFragment:og,Fragment:eg,FallbackFragment:sg,FunctionFragment:cg,NamedFragment:tg,ParamType:ng,StructFragment:lg,checkResultErrors:Gs,ErrorDescription:wg,Indexed:kg,Interface:xg,LogDescription:yg,Result:Ms,TransactionDescription:vg,Typed:Vd,getAddress:Cd,getIcapAddress:Od,getCreateAddress:Ud,getCreate2Address:Fd,isAddressable:Ld,isAddress:jd,resolveAddress:Md,ZeroAddress:od,WeiPerEther:cd,MaxUint256:ld,MinInt256:ud,MaxInt256:dd,N:sd,ZeroHash:id,EtherSymbol:"Ξ",MessagePrefix:hd,BaseContract:lm,Contract:um,ContractFactory:dm,ContractEventPayload:Gg,ContractTransactionReceipt:jg,ContractTransactionResponse:Dg,ContractUnknownEventPayload:Mg,EventLog:Fg,UndecodedEventLog:Lg,computeHmac:Hc,randomBytes:Ol,keccak256:cl,ripemd160:Pl,sha256:nu,sha512:eu,pbkdf2:Tl,scrypt:_l,scryptSync:Ql,lock:Pd,Signature:xd,SigningKey:Id,id:Fh,ensNormalize:Hp,isValidName:Kp,namehash:Vp,dnsEncode:_p,hashAuthorization:Oh,verifyAuthorization:Uh,hashMessage:Qp,verifyMessage:Jp,solidityPacked:Xp,solidityPackedKeccak256:nf,solidityPackedSha256:ef,TypedDataEncoder:bf,verifyTypedData:yf,getDefaultProvider:hy,Block:Tg,FeeData:zg,Log:Sg,TransactionReceipt:Bg,TransactionResponse:Cg,AbstractSigner:lb,NonceManager:py,VoidSigner:ub,AbstractProvider:Xm,FallbackProvider:uy,JsonRpcApiProvider:Eb,JsonRpcProvider:Ib,JsonRpcSigner:Ab,BrowserProvider:fy,AlchemyProvider:Sb,AnkrProvider:Rb,BlockscoutProvider:gy,ChainstackProvider:Cb,CloudflareProvider:Ob,EtherscanProvider:Mb,InfuraProvider:Wb,InfuraWebSocketProvider:$b,PocketProvider:by,QuickNodeProvider:Yb,IpcSocketProvider:yy,SocketProvider:_b,WebSocketProvider:Qb,EnsResolver:mm,Network:Om,EnsPlugin:Tm,EtherscanPlugin:Lb,FeeDataNetworkPlugin:Sm,FetchUrlFeeDataNetworkPlugin:Bm,GasCostPlugin:Rm,NetworkPlugin:zm,MulticoinProviderPlugin:pm,SocketBlockSubscriber:Hb,SocketEventSubscriber:Vb,SocketPendingSubscriber:Kb,SocketSubscriber:qb,UnmanagedSubscriber:Jm,copyRequest:Rg,showThrottleMessage:hb,accessListify:uh,authorizationify:dh,computeAddress:hh,recoverAddress:ph,Transaction:Ch,decodeBase58:Fi,encodeBase58:Ui,decodeBase64:Li,encodeBase64:ji,concat:ci,dataLength:li,dataSlice:ui,getBytes:ti,getBytesCopy:ri,hexlify:si,isHexString:ai,isBytesLike:oi,stripZerosLeft:di,zeroPadBytes:fi,zeroPadValue:pi,defineProperties:Ko,resolveProperties:Ho,assert:$o,assertArgument:Wo,assertArgumentCount:Zo,assertNormalize:Xo,assertPrivate:ni,makeError:Jo,isCallException:Qo,isError:_o,EventPayload:Di,FetchRequest:rs,FetchResponse:as,FetchCancelSignal:es,FixedNumber:gs,getBigInt:ki,getNumber:Ii,getUint:Ai,toBeArray:zi,toBigInt:xi,toBeHex:Ni,toNumber:Pi,toQuantity:Ri,fromTwos:yi,toTwos:vi,mask:wi,formatEther:zs,parseEther:Rs,formatUnits:Ps,parseUnits:Ns,toUtf8Bytes:Hi,toUtf8CodePoints:Vi,toUtf8String:Ki,Utf8ErrorFuncs:Gi,decodeRlp:ws,encodeRlp:xs,uuidV4:Ts,Mnemonic:Cy,BaseWallet:vy,HDNodeWallet:Dv,HDNodeVoidWallet:Mv,Wallet:_v,defaultPath:Tv,getAccountPath:Gv,getIndexedAccountPath:qv,isCrowdsaleJson:Hv,isKeystoreJson:wv,decryptCrowdsaleJson:Kv,decryptKeystoreJsonSync:Ev,decryptKeystoreJson:Iv,encryptKeystoreJson:Rv,encryptKeystoreJsonSync:zv,Wordlist:xy,LangEn:Ny,WordlistOwl:Iy,WordlistOwlA:Qv,wordlists:Jv}),Wv=Object.freeze({__proto__:null,ethers:$v,version:Go,decodeBytes32String:bg,encodeBytes32String:mg,AbiCoder:gg,ConstructorFragment:ig,ErrorFragment:ag,EventFragment:og,Fragment:eg,FallbackFragment:sg,FunctionFragment:cg,NamedFragment:tg,ParamType:ng,StructFragment:lg,checkResultErrors:Gs,ErrorDescription:wg,Indexed:kg,Interface:xg,LogDescription:yg,Result:Ms,TransactionDescription:vg,Typed:Vd,getAddress:Cd,getIcapAddress:Od,getCreateAddress:Ud,getCreate2Address:Fd,isAddressable:Ld,isAddress:jd,resolveAddress:Md,ZeroAddress:od,WeiPerEther:cd,MaxUint256:ld,MinInt256:ud,MaxInt256:dd,N:sd,ZeroHash:id,EtherSymbol:"Ξ",MessagePrefix:hd,BaseContract:lm,Contract:um,ContractFactory:dm,ContractEventPayload:Gg,ContractTransactionReceipt:jg,ContractTransactionResponse:Dg,ContractUnknownEventPayload:Mg,EventLog:Fg,UndecodedEventLog:Lg,computeHmac:Hc,randomBytes:Ol,keccak256:cl,ripemd160:Pl,sha256:nu,sha512:eu,pbkdf2:Tl,scrypt:_l,scryptSync:Ql,lock:Pd,Signature:xd,SigningKey:Id,id:Fh,ensNormalize:Hp,isValidName:Kp,namehash:Vp,dnsEncode:_p,hashAuthorization:Oh,verifyAuthorization:Uh,hashMessage:Qp,verifyMessage:Jp,solidityPacked:Xp,solidityPackedKeccak256:nf,solidityPackedSha256:ef,TypedDataEncoder:bf,verifyTypedData:yf,getDefaultProvider:hy,Block:Tg,FeeData:zg,Log:Sg,TransactionReceipt:Bg,TransactionResponse:Cg,AbstractSigner:lb,NonceManager:py,VoidSigner:ub,AbstractProvider:Xm,FallbackProvider:uy,JsonRpcApiProvider:Eb,JsonRpcProvider:Ib,JsonRpcSigner:Ab,BrowserProvider:fy,AlchemyProvider:Sb,AnkrProvider:Rb,BlockscoutProvider:gy,ChainstackProvider:Cb,CloudflareProvider:Ob,EtherscanProvider:Mb,InfuraProvider:Wb,InfuraWebSocketProvider:$b,PocketProvider:by,QuickNodeProvider:Yb,IpcSocketProvider:yy,SocketProvider:_b,WebSocketProvider:Qb,EnsResolver:mm,Network:Om,EnsPlugin:Tm,EtherscanPlugin:Lb,FeeDataNetworkPlugin:Sm,FetchUrlFeeDataNetworkPlugin:Bm,GasCostPlugin:Rm,NetworkPlugin:zm,MulticoinProviderPlugin:pm,SocketBlockSubscriber:Hb,SocketEventSubscriber:Vb,SocketPendingSubscriber:Kb,SocketSubscriber:qb,UnmanagedSubscriber:Jm,copyRequest:Rg,showThrottleMessage:hb,accessListify:uh,authorizationify:dh,computeAddress:hh,recoverAddress:ph,Transaction:Ch,decodeBase58:Fi,encodeBase58:Ui,decodeBase64:Li,encodeBase64:ji,concat:ci,dataLength:li,dataSlice:ui,getBytes:ti,getBytesCopy:ri,hexlify:si,isHexString:ai,isBytesLike:oi,stripZerosLeft:di,zeroPadBytes:fi,zeroPadValue:pi,defineProperties:Ko,resolveProperties:Ho,assert:$o,assertArgument:Wo,assertArgumentCount:Zo,assertNormalize:Xo,assertPrivate:ni,makeError:Jo,isCallException:Qo,isError:_o,EventPayload:Di,FetchRequest:rs,FetchResponse:as,FetchCancelSignal:es,FixedNumber:gs,getBigInt:ki,getNumber:Ii,getUint:Ai,toBeArray:zi,toBigInt:xi,toBeHex:Ni,toNumber:Pi,toQuantity:Ri,fromTwos:yi,toTwos:vi,mask:wi,formatEther:zs,parseEther:Rs,formatUnits:Ps,parseUnits:Ns,toUtf8Bytes:Hi,toUtf8CodePoints:Vi,toUtf8String:Ki,Utf8ErrorFuncs:Gi,decodeRlp:ws,encodeRlp:xs,uuidV4:Ts,Mnemonic:Cy,BaseWallet:vy,HDNodeWallet:Dv,HDNodeVoidWallet:Mv,Wallet:_v,defaultPath:Tv,getAccountPath:Gv,getIndexedAccountPath:qv,isCrowdsaleJson:Hv,isKeystoreJson:wv,decryptCrowdsaleJson:Kv,decryptKeystoreJsonSync:Ev,decryptKeystoreJson:Iv,encryptKeystoreJson:Rv,encryptKeystoreJsonSync:zv,Wordlist:xy,LangEn:Ny,WordlistOwl:Iy,WordlistOwlA:Qv,wordlists:Jv});n.EmblemAuthSDK=f,n.SessionManager=e,n.default=f,Object.defineProperty(n,"__esModule",{value:!0})});
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})});
15
15
  //# sourceMappingURL=emblem-auth.min.js.map