@imtbl/sdk 0.31.1 → 0.31.2-alpha

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.
Files changed (53) hide show
  1. package/.eslintrc +13 -0
  2. package/.gitignore +8 -0
  3. package/blockchain_data.js +1 -0
  4. package/checkout_sdk.js +9 -0
  5. package/config.js +1 -0
  6. package/dist/browser/checkout/sdk.js +2 -2
  7. package/dist/browser/checkout/widgets.js +1 -1
  8. package/dist/index.browser.js +4 -4
  9. package/dist/index.browser.js.map +1 -1
  10. package/immutablex_client.js +1 -0
  11. package/index.cjs +9 -0
  12. package/index.d.ts +18603 -0
  13. package/index.js +9 -0
  14. package/module-release.json +30 -0
  15. package/orderbook.js +1 -0
  16. package/package.json +24 -18
  17. package/passport.js +1 -0
  18. package/provider.js +1 -0
  19. package/rollup.config.js +158 -0
  20. package/scripts/copyBrowserBundles.js +62 -0
  21. package/scripts/generate-package-list.sh +5 -0
  22. package/scripts/generateIndex.js +44 -0
  23. package/scripts/updateDependencies.js +137 -0
  24. package/scripts/updateExports.js +62 -0
  25. package/src/blockchain_data.ts +1 -0
  26. package/src/checkout_sdk.ts +1 -0
  27. package/src/checkout_widgets.ts +1 -0
  28. package/src/config.ts +1 -0
  29. package/src/immutablex_client.ts +1 -0
  30. package/src/index.ts +7 -0
  31. package/src/orderbook.ts +1 -0
  32. package/src/passport.ts +1 -0
  33. package/src/provider.ts +1 -0
  34. package/tsconfig.json +27 -0
  35. package/typedoc.json +4 -0
  36. package/workspace-packages.json +31 -0
  37. package/dist/blockchain_data.js +0 -4010
  38. package/dist/checkout_sdk.js +0 -26016
  39. package/dist/config.js +0 -37
  40. package/dist/immutablex_client.js +0 -523
  41. package/dist/index.cjs +0 -34452
  42. package/dist/index.js +0 -34424
  43. package/dist/orderbook.js +0 -1583
  44. package/dist/passport.js +0 -9159
  45. package/dist/provider.js +0 -1165
  46. /package/{dist/blockchain_data.d.ts → blockchain_data.d.ts} +0 -0
  47. /package/{dist/checkout_sdk.d.ts → checkout_sdk.d.ts} +0 -0
  48. /package/{dist/config.d.ts → config.d.ts} +0 -0
  49. /package/{dist/immutablex_client.d.ts → immutablex_client.d.ts} +0 -0
  50. /package/{dist/index.d.ts → index.d.cts} +0 -0
  51. /package/{dist/orderbook.d.ts → orderbook.d.ts} +0 -0
  52. /package/{dist/passport.d.ts → passport.d.ts} +0 -0
  53. /package/{dist/provider.d.ts → provider.d.ts} +0 -0
package/index.js ADDED
@@ -0,0 +1,9 @@
1
+ import e,{isAxiosError as t,AxiosError as n,HttpStatusCode as a}from"axios";import{ImmutableX as r,Config as i,IMXError as s,createStarkSigner as o,generateLegacyStarkPrivateKey as c,TransfersApi as d,OrdersApi as u,UsersApi as f,Contracts as l,TradesApi as p,ExchangesApi as h,WithdrawalsApi as m,MintsApi as b,DepositsApi as y,EncodingApi as g,TokensApi as E}from"@imtbl/core-sdk";import{UserManager as w,InMemoryWebStorage as T,WebStorageStateStore as R}from"oidc-client-ts";import _ from"jwt-decode";import*as v from"crypto";import{Magic as A}from"magic-sdk";import{OpenIdExtension as C}from"@magic-ext/oidc";import{JsonRpcProvider as I,Web3Provider as O}from"@ethersproject/providers";import{BigNumber as S,ethers as N,providers as k,constants as M,ContractFactory as P,utils as D,Contract as x}from"ethers";import L from"bn.js";import*as U from"enc-utils";import{EventEmitter as F}from"events";import{walletContracts as B}from"@0xsequence/abi";import{v1 as V}from"@0xsequence/core";import G from"form-data";import{Seaport as q}from"@opensea/seaport-js";import{parseUnits as j}from"@ethersproject/units";import{BigNumber as z}from"@ethersproject/bignumber";import H from"@metamask/detect-provider";import*as W from"@uniswap/sdk-core";import{TradeType as $,Percent as X}from"@uniswap/sdk-core";import K from"assert";import{FeeAmount as J,Route as Z,SwapQuoter as Q,Pool as Y,Trade as ee,toHex as te,encodeRouteToPath as ne}from"@uniswap/v3-sdk";import{keccak256 as ae}from"@ethersproject/solidity";import{SwapRouter as re,PaymentsExtended as ie}from"@uniswap/router-sdk";var se;!function(e){e.PRODUCTION="production",e.SANDBOX="sandbox"}(se||(se={}));class oe{environment;rateLimitingKey;apiKey;publishableKey;constructor(e){this.environment=e.environment}}var ce=Object.freeze({__proto__:null,get Environment(){return se},ImmutableConfiguration:oe,addApiKeyToAxiosHeader:t=>{if(!t.startsWith("sk_imapik-"))throw new Error("Invalid API key. Create your api key in Immutable developer hub. https://hub.immutable.com");e.defaults.headers.common["x-immutable-api-key"]=t},addPublishableKeyToAxiosHeader:t=>{if(!t.startsWith("pk_imapik-")||30!==t.length)throw new Error("Invalid Publishable key. Create your Publishable key in Immutable developer hub. https://hub.immutable.com");e.defaults.headers.common["x-immutable-publishable-key"]=t},addRateLimitingKeyToAxiosHeader:t=>{e.defaults.headers.common["x-api-key"]=t}});const de="https://api.sandbox.immutable.com".replace(/\/+$/,"");let ue=class{basePath;axios;configuration;constructor(t,n=de,a=e){this.basePath=n,this.axios=a,t&&(this.configuration=t,this.basePath=t.basePath||this.basePath)}},fe=class extends Error{field;constructor(e,t){super(t),this.field=e,this.name="RequiredError"}};const le="https://example.com",pe=function(e,t,n){if(null==n)throw new fe(t,`Required parameter ${t} was null or undefined when calling ${e}.`)},he=async function(e,t,n){if(n&&n.apiKey){const a="function"==typeof n.apiKey?await n.apiKey(t):await n.apiKey;e[t]=a}},me=async function(e,t){if(t&&t.accessToken){const n="function"==typeof t.accessToken?await t.accessToken():await t.accessToken;e.Authorization="Bearer "+n}};function be(e,t,n=""){null!=t&&("object"==typeof t?Array.isArray(t)?t.forEach((t=>be(e,t,n))):Object.keys(t).forEach((a=>be(e,t[a],`${n}${""!==n?".":""}${a}`))):e.has(n)?e.append(n,t):e.set(n,t))}const ye=function(e,...t){const n=new URLSearchParams(e.search);be(n,t),e.search=n.toString()},ge=function(e,t,n){const a="string"!=typeof e;return(a&&n&&n.isJsonMime?n.isJsonMime(t.headers["Content-Type"]):a)?JSON.stringify(void 0!==e?e:{}):e||""},Ee=function(e){return e.pathname+e.search+e.hash},we=function(e,t,n,a){return(r=t,i=n)=>{const s={...e.options,url:(a?.basePath||r.defaults.baseURL||i)+e.url};return r.request(s)}},Te=function(e){return{getActivity:async(t,n,a={})=>{pe("getActivity","chainName",t),pe("getActivity","activityId",n);const r="/v1/chains/{chain_name}/activities/{activity_id}".replace("{chain_name}",encodeURIComponent(String(t))).replace("{activity_id}",encodeURIComponent(String(n))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"GET",...s,...a};ye(i,{});let c=s&&s.headers?s.headers:{};return o.headers={...c,...a.headers},{url:Ee(i),options:o}},listActivities:async(t,n,a,r,i,s,o,c,d,u,f={})=>{pe("listActivities","chainName",t);const l="/v1/chains/{chain_name}/activities".replace("{chain_name}",encodeURIComponent(String(t))),p=new URL(l,le);let h;e&&(h=e.baseOptions);const m={method:"GET",...h,...f},b={};void 0!==n&&(b.contract_address=n),void 0!==a&&(b.token_id=a),void 0!==r&&(b.account_address=r),void 0!==i&&(b.activity_type=i),void 0!==s&&(b.from_indexed_at=s instanceof Date?s.toISOString():s),void 0!==o&&(b.to_indexed_at=o instanceof Date?o.toISOString():o),void 0!==c&&(b.transaction_hash=c),void 0!==d&&(b.page_cursor=d),void 0!==u&&(b.page_size=u),ye(p,b);let y=h&&h.headers?h.headers:{};return m.headers={...y,...f.headers},{url:Ee(p),options:m}}}},Re=function(t){const n=Te(t);return{async getActivity(a,r,i){const s=await n.getActivity(a,r,i);return we(s,e,de,t)},async listActivities(a,r,i,s,o,c,d,u,f,l,p){const h=await n.listActivities(a,r,i,s,o,c,d,u,f,l,p);return we(h,e,de,t)}}};class _e extends ue{getActivity(e,t){return Re(this.configuration).getActivity(e.chainName,e.activityId,t).then((e=>e(this.axios,this.basePath)))}listActivities(e,t){return Re(this.configuration).listActivities(e.chainName,e.contractAddress,e.tokenId,e.accountAddress,e.activityType,e.fromIndexedAt,e.toIndexedAt,e.transactionHash,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}}const ve=function(e){return{listChains:async(t,n,a={})=>{const r=new URL("/v1/chains",le);let i;e&&(i=e.baseOptions);const s={method:"GET",...i,...a},o={};void 0!==t&&(o.page_cursor=t),void 0!==n&&(o.page_size=n),ye(r,o);let c=i&&i.headers?i.headers:{};return s.headers={...c,...a.headers},{url:Ee(r),options:s}}}},Ae=function(t){const n=ve(t);return{async listChains(a,r,i){const s=await n.listChains(a,r,i);return we(s,e,de,t)}}};class Ce extends ue{listChains(e={},t){return Ae(this.configuration).listChains(e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}}const Ie=function(e){return{getCollection:async(t,n,a={})=>{pe("getCollection","contractAddress",t),pe("getCollection","chainName",n);const r="/v1/chains/{chain_name}/collections/{contract_address}".replace("{contract_address}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"GET",...s,...a};ye(i,{});let c=s&&s.headers?s.headers:{};return o.headers={...c,...a.headers},{url:Ee(i),options:o}},listCollections:async(t,n,a,r,i,s={})=>{pe("listCollections","chainName",t);const o="/v1/chains/{chain_name}/collections".replace("{chain_name}",encodeURIComponent(String(t))),c=new URL(o,le);let d;e&&(d=e.baseOptions);const u={method:"GET",...d,...s},f={};n&&(f.contract_address=n),void 0!==a&&(f.from_updated_at=a instanceof Date?a.toISOString():a),void 0!==r&&(f.page_cursor=r),void 0!==i&&(f.page_size=i),ye(c,f);let l=d&&d.headers?d.headers:{};return u.headers={...l,...s.headers},{url:Ee(c),options:u}},listCollectionsByNFTOwner:async(t,n,a,r,i={})=>{pe("listCollectionsByNFTOwner","accountAddress",t),pe("listCollectionsByNFTOwner","chainName",n);const s="/v1/chains/{chain_name}/accounts/{account_address}/collections".replace("{account_address}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),o=new URL(s,le);let c;e&&(c=e.baseOptions);const d={method:"GET",...c,...i},u={};void 0!==a&&(u.page_cursor=a),void 0!==r&&(u.page_size=r),ye(o,u);let f=c&&c.headers?c.headers:{};return d.headers={...f,...i.headers},{url:Ee(o),options:d}},refreshCollectionMetadata:async(t,n,a,r={})=>{pe("refreshCollectionMetadata","contractAddress",t),pe("refreshCollectionMetadata","chainName",n),pe("refreshCollectionMetadata","refreshCollectionMetadataRequest",a);const i="/v1/chains/{chain_name}/collections/{contract_address}/refresh-metadata".replace("{contract_address}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),s=new URL(i,le);let o;e&&(o=e.baseOptions);const c={method:"POST",...o,...r},d={};await he(d,"x-immutable-api-key",e),d["Content-Type"]="application/json",ye(s,{});let u=o&&o.headers?o.headers:{};return c.headers={...d,...u,...r.headers},c.data=ge(a,c,e),{url:Ee(s),options:c}}}},Oe=function(t){const n=Ie(t);return{async getCollection(a,r,i){const s=await n.getCollection(a,r,i);return we(s,e,de,t)},async listCollections(a,r,i,s,o,c){const d=await n.listCollections(a,r,i,s,o,c);return we(d,e,de,t)},async listCollectionsByNFTOwner(a,r,i,s,o){const c=await n.listCollectionsByNFTOwner(a,r,i,s,o);return we(c,e,de,t)},async refreshCollectionMetadata(a,r,i,s){const o=await n.refreshCollectionMetadata(a,r,i,s);return we(o,e,de,t)}}};class Se extends ue{getCollection(e,t){return Oe(this.configuration).getCollection(e.contractAddress,e.chainName,t).then((e=>e(this.axios,this.basePath)))}listCollections(e,t){return Oe(this.configuration).listCollections(e.chainName,e.contractAddress,e.fromUpdatedAt,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}listCollectionsByNFTOwner(e,t){return Oe(this.configuration).listCollectionsByNFTOwner(e.accountAddress,e.chainName,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}refreshCollectionMetadata(e,t){return Oe(this.configuration).refreshCollectionMetadata(e.contractAddress,e.chainName,e.refreshCollectionMetadataRequest,t).then((e=>e(this.axios,this.basePath)))}}const Ne=function(e){return{getMetadata:async(t,n,a,r={})=>{pe("getMetadata","chainName",t),pe("getMetadata","contractAddress",n),pe("getMetadata","metadataId",a);const i="/v1/chains/{chain_name}/collections/{contract_address}/metadata/{metadata_id}".replace("{chain_name}",encodeURIComponent(String(t))).replace("{contract_address}",encodeURIComponent(String(n))).replace("{metadata_id}",encodeURIComponent(String(a))),s=new URL(i,le);let o;e&&(o=e.baseOptions);const c={method:"GET",...o,...r};ye(s,{});let d=o&&o.headers?o.headers:{};return c.headers={...d,...r.headers},{url:Ee(s),options:c}},listMetadata:async(t,n,a,r,i,s={})=>{pe("listMetadata","chainName",t),pe("listMetadata","contractAddress",n);const o="/v1/chains/{chain_name}/collections/{contract_address}/metadata".replace("{chain_name}",encodeURIComponent(String(t))).replace("{contract_address}",encodeURIComponent(String(n))),c=new URL(o,le);let d;e&&(d=e.baseOptions);const u={method:"GET",...d,...s},f={};void 0!==a&&(f.from_updated_at=a instanceof Date?a.toISOString():a),void 0!==r&&(f.page_cursor=r),void 0!==i&&(f.page_size=i),ye(c,f);let l=d&&d.headers?d.headers:{};return u.headers={...l,...s.headers},{url:Ee(c),options:u}},refreshMetadataByID:async(t,n,a,r={})=>{pe("refreshMetadataByID","chainName",t),pe("refreshMetadataByID","contractAddress",n),pe("refreshMetadataByID","refreshMetadataByIDRequest",a);const i="/v1/chains/{chain_name}/collections/{contract_address}/metadata/refresh-metadata".replace("{chain_name}",encodeURIComponent(String(t))).replace("{contract_address}",encodeURIComponent(String(n))),s=new URL(i,le);let o;e&&(o=e.baseOptions);const c={method:"POST",...o,...r},d={};await he(d,"x-immutable-api-key",e),d["Content-Type"]="application/json",ye(s,{});let u=o&&o.headers?o.headers:{};return c.headers={...d,...u,...r.headers},c.data=ge(a,c,e),{url:Ee(s),options:c}},refreshNFTMetadataByTokenID:async(t,n,a,r={})=>{pe("refreshNFTMetadataByTokenID","contractAddress",t),pe("refreshNFTMetadataByTokenID","chainName",n),pe("refreshNFTMetadataByTokenID","refreshNFTMetadataByTokenIDRequest",a);const i="/v1/chains/{chain_name}/collections/{contract_address}/nfts/refresh-metadata".replace("{contract_address}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),s=new URL(i,le);let o;e&&(o=e.baseOptions);const c={method:"POST",...o,...r},d={};await he(d,"x-immutable-api-key",e),d["Content-Type"]="application/json",ye(s,{});let u=o&&o.headers?o.headers:{};return c.headers={...d,...u,...r.headers},c.data=ge(a,c,e),{url:Ee(s),options:c}}}},ke=function(t){const n=Ne(t);return{async getMetadata(a,r,i,s){const o=await n.getMetadata(a,r,i,s);return we(o,e,de,t)},async listMetadata(a,r,i,s,o,c){const d=await n.listMetadata(a,r,i,s,o,c);return we(d,e,de,t)},async refreshMetadataByID(a,r,i,s){const o=await n.refreshMetadataByID(a,r,i,s);return we(o,e,de,t)},async refreshNFTMetadataByTokenID(a,r,i,s){const o=await n.refreshNFTMetadataByTokenID(a,r,i,s);return we(o,e,de,t)}}};const Me=function(e){return{listNFTOwners:async(t,n,a,r,i,s={})=>{pe("listNFTOwners","contractAddress",t),pe("listNFTOwners","tokenId",n),pe("listNFTOwners","chainName",a);const o="/v1/chains/{chain_name}/collections/{contract_address}/nfts/{token_id}/owners".replace("{contract_address}",encodeURIComponent(String(t))).replace("{token_id}",encodeURIComponent(String(n))).replace("{chain_name}",encodeURIComponent(String(a))),c=new URL(o,le);let d;e&&(d=e.baseOptions);const u={method:"GET",...d,...s},f={};void 0!==r&&(f.page_cursor=r),void 0!==i&&(f.page_size=i),ye(c,f);let l=d&&d.headers?d.headers:{};return u.headers={...l,...s.headers},{url:Ee(c),options:u}},listOwnersByContractAddress:async(t,n,a,r,i,s={})=>{pe("listOwnersByContractAddress","contractAddress",t),pe("listOwnersByContractAddress","chainName",n);const o="/v1/chains/{chain_name}/collections/{contract_address}/owners".replace("{contract_address}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),c=new URL(o,le);let d;e&&(d=e.baseOptions);const u={method:"GET",...d,...s},f={};void 0!==a&&(f.from_updated_at=a instanceof Date?a.toISOString():a),void 0!==r&&(f.page_cursor=r),void 0!==i&&(f.page_size=i),ye(c,f);let l=d&&d.headers?d.headers:{};return u.headers={...l,...s.headers},{url:Ee(c),options:u}}}},Pe=function(t){const n=Me(t);return{async listNFTOwners(a,r,i,s,o,c){const d=await n.listNFTOwners(a,r,i,s,o,c);return we(d,e,de,t)},async listOwnersByContractAddress(a,r,i,s,o,c){const d=await n.listOwnersByContractAddress(a,r,i,s,o,c);return we(d,e,de,t)}}};class De extends ue{listNFTOwners(e,t){return Pe(this.configuration).listNFTOwners(e.contractAddress,e.tokenId,e.chainName,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}listOwnersByContractAddress(e,t){return Pe(this.configuration).listOwnersByContractAddress(e.contractAddress,e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}}const xe=function(e){return{getNFT:async(t,n,a,r={})=>{pe("getNFT","contractAddress",t),pe("getNFT","tokenId",n),pe("getNFT","chainName",a);const i="/v1/chains/{chain_name}/collections/{contract_address}/nfts/{token_id}".replace("{contract_address}",encodeURIComponent(String(t))).replace("{token_id}",encodeURIComponent(String(n))).replace("{chain_name}",encodeURIComponent(String(a))),s=new URL(i,le);let o;e&&(o=e.baseOptions);const c={method:"GET",...o,...r};ye(s,{});let d=o&&o.headers?o.headers:{};return c.headers={...d,...r.headers},{url:Ee(s),options:c}},listAllNFTOwners:async(t,n,a,r,i={})=>{pe("listAllNFTOwners","chainName",t),pe("listAllNFTOwners","fromUpdatedAt",n);const s="/v1/chains/{chain_name}/nft-owners".replace("{chain_name}",encodeURIComponent(String(t))),o=new URL(s,le);let c;e&&(c=e.baseOptions);const d={method:"GET",...c,...i},u={};void 0!==n&&(u.from_updated_at=n instanceof Date?n.toISOString():n),void 0!==a&&(u.page_cursor=a),void 0!==r&&(u.page_size=r),ye(o,u);let f=c&&c.headers?c.headers:{};return d.headers={...f,...i.headers},{url:Ee(o),options:d}},listAllNFTs:async(t,n,a,r,i={})=>{pe("listAllNFTs","chainName",t);const s="/v1/chains/{chain_name}/nfts".replace("{chain_name}",encodeURIComponent(String(t))),o=new URL(s,le);let c;e&&(c=e.baseOptions);const d={method:"GET",...c,...i},u={};void 0!==n&&(u.from_updated_at=n instanceof Date?n.toISOString():n),void 0!==a&&(u.page_cursor=a),void 0!==r&&(u.page_size=r),ye(o,u);let f=c&&c.headers?c.headers:{};return d.headers={...f,...i.headers},{url:Ee(o),options:d}},listNFTs:async(t,n,a,r,i,s={})=>{pe("listNFTs","contractAddress",t),pe("listNFTs","chainName",n);const o="/v1/chains/{chain_name}/collections/{contract_address}/nfts".replace("{contract_address}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),c=new URL(o,le);let d;e&&(d=e.baseOptions);const u={method:"GET",...d,...s},f={};void 0!==a&&(f.from_updated_at=a instanceof Date?a.toISOString():a),void 0!==r&&(f.page_cursor=r),void 0!==i&&(f.page_size=i),ye(c,f);let l=d&&d.headers?d.headers:{};return u.headers={...l,...s.headers},{url:Ee(c),options:u}},listNFTsByAccountAddress:async(t,n,a,r,i,s={})=>{pe("listNFTsByAccountAddress","accountAddress",t),pe("listNFTsByAccountAddress","chainName",n);const o="/v1/chains/{chain_name}/accounts/{account_address}/nfts".replace("{account_address}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),c=new URL(o,le);let d;e&&(d=e.baseOptions);const u={method:"GET",...d,...s},f={};void 0!==a&&(f.contract_address=a),void 0!==r&&(f.page_cursor=r),void 0!==i&&(f.page_size=i),ye(c,f);let l=d&&d.headers?d.headers:{};return u.headers={...l,...s.headers},{url:Ee(c),options:u}}}},Le=function(t){const n=xe(t);return{async getNFT(a,r,i,s){const o=await n.getNFT(a,r,i,s);return we(o,e,de,t)},async listAllNFTOwners(a,r,i,s,o){const c=await n.listAllNFTOwners(a,r,i,s,o);return we(c,e,de,t)},async listAllNFTs(a,r,i,s,o){const c=await n.listAllNFTs(a,r,i,s,o);return we(c,e,de,t)},async listNFTs(a,r,i,s,o,c){const d=await n.listNFTs(a,r,i,s,o,c);return we(d,e,de,t)},async listNFTsByAccountAddress(a,r,i,s,o,c){const d=await n.listNFTsByAccountAddress(a,r,i,s,o,c);return we(d,e,de,t)}}};class Ue extends ue{getNFT(e,t){return Le(this.configuration).getNFT(e.contractAddress,e.tokenId,e.chainName,t).then((e=>e(this.axios,this.basePath)))}listAllNFTOwners(e,t){return Le(this.configuration).listAllNFTOwners(e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}listAllNFTs(e,t){return Le(this.configuration).listAllNFTs(e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}listNFTs(e,t){return Le(this.configuration).listNFTs(e.contractAddress,e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}listNFTsByAccountAddress(e,t){return Le(this.configuration).listNFTsByAccountAddress(e.accountAddress,e.chainName,e.contractAddress,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}}const Fe=function(e){return{cancelOrders:async(t,n,a={})=>{pe("cancelOrders","chainName",t),pe("cancelOrders","cancelOrdersRequestBody",n);const r="/v1/chains/{chain_name}/orders/cancel".replace("{chain_name}",encodeURIComponent(String(t))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"POST",...s,...a},c={};c["Content-Type"]="application/json",ye(i,{});let d=s&&s.headers?s.headers:{};return o.headers={...c,...d,...a.headers},o.data=ge(n,o,e),{url:Ee(i),options:o}},createListing:async(t,n,a={})=>{pe("createListing","chainName",t),pe("createListing","createListingRequestBody",n);const r="/v1/chains/{chain_name}/orders/listings".replace("{chain_name}",encodeURIComponent(String(t))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"POST",...s,...a},c={};c["Content-Type"]="application/json",ye(i,{});let d=s&&s.headers?s.headers:{};return o.headers={...c,...d,...a.headers},o.data=ge(n,o,e),{url:Ee(i),options:o}},fulfillmentData:async(t,n,a={})=>{pe("fulfillmentData","chainName",t),pe("fulfillmentData","fulfillmentDataRequest",n);const r="/v1/chains/{chain_name}/orders/fulfillment-data".replace("{chain_name}",encodeURIComponent(String(t))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"POST",...s,...a},c={};c["Content-Type"]="application/json",ye(i,{});let d=s&&s.headers?s.headers:{};return o.headers={...c,...d,...a.headers},o.data=ge(n,o,e),{url:Ee(i),options:o}},getListing:async(t,n,a={})=>{pe("getListing","chainName",t),pe("getListing","listingId",n);const r="/v1/chains/{chain_name}/orders/listings/{listing_id}".replace("{chain_name}",encodeURIComponent(String(t))).replace("{listing_id}",encodeURIComponent(String(n))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"GET",...s,...a};ye(i,{});let c=s&&s.headers?s.headers:{};return o.headers={...c,...a.headers},{url:Ee(i),options:o}},getTrade:async(t,n,a={})=>{pe("getTrade","chainName",t),pe("getTrade","tradeId",n);const r="/v1/chains/{chain_name}/trades/{trade_id}".replace("{chain_name}",encodeURIComponent(String(t))).replace("{trade_id}",encodeURIComponent(String(n))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"GET",...s,...a};ye(i,{});let c=s&&s.headers?s.headers:{};return o.headers={...c,...a.headers},{url:Ee(i),options:o}},listListings:async(t,n,a,r,i,s,o,c,d,u={})=>{pe("listListings","chainName",t);const f="/v1/chains/{chain_name}/orders/listings".replace("{chain_name}",encodeURIComponent(String(t))),l=new URL(f,le);let p;e&&(p=e.baseOptions);const h={method:"GET",...p,...u},m={};void 0!==n&&(m.status=n),void 0!==a&&(m.sell_item_contract_address=a),void 0!==r&&(m.buy_item_contract_address=r),void 0!==i&&(m.sell_item_token_id=i),void 0!==s&&(m.page_size=s),void 0!==o&&(m.sort_by=o),void 0!==c&&(m.sort_direction=c),void 0!==d&&(m.page_cursor=d),ye(l,m);let b=p&&p.headers?p.headers:{};return h.headers={...b,...u.headers},{url:Ee(l),options:h}},listTrades:async(t,n,a,r,i,s,o={})=>{pe("listTrades","chainName",t);const c="/v1/chains/{chain_name}/trades".replace("{chain_name}",encodeURIComponent(String(t))),d=new URL(c,le);let u;e&&(u=e.baseOptions);const f={method:"GET",...u,...o},l={};void 0!==n&&(l.account_address=n),void 0!==a&&(l.page_size=a),void 0!==r&&(l.sort_by=r),void 0!==i&&(l.sort_direction=i),void 0!==s&&(l.page_cursor=s),ye(d,l);let p=u&&u.headers?u.headers:{};return f.headers={...p,...o.headers},{url:Ee(d),options:f}}}},Be=function(t){const n=Fe(t);return{async cancelOrders(a,r,i){const s=await n.cancelOrders(a,r,i);return we(s,e,de,t)},async createListing(a,r,i){const s=await n.createListing(a,r,i);return we(s,e,de,t)},async fulfillmentData(a,r,i){const s=await n.fulfillmentData(a,r,i);return we(s,e,de,t)},async getListing(a,r,i){const s=await n.getListing(a,r,i);return we(s,e,de,t)},async getTrade(a,r,i){const s=await n.getTrade(a,r,i);return we(s,e,de,t)},async listListings(a,r,i,s,o,c,d,u,f,l){const p=await n.listListings(a,r,i,s,o,c,d,u,f,l);return we(p,e,de,t)},async listTrades(a,r,i,s,o,c,d){const u=await n.listTrades(a,r,i,s,o,c,d);return we(u,e,de,t)}}};class Ve extends ue{cancelOrders(e,t){return Be(this.configuration).cancelOrders(e.chainName,e.cancelOrdersRequestBody,t).then((e=>e(this.axios,this.basePath)))}createListing(e,t){return Be(this.configuration).createListing(e.chainName,e.createListingRequestBody,t).then((e=>e(this.axios,this.basePath)))}fulfillmentData(e,t){return Be(this.configuration).fulfillmentData(e.chainName,e.fulfillmentDataRequest,t).then((e=>e(this.axios,this.basePath)))}getListing(e,t){return Be(this.configuration).getListing(e.chainName,e.listingId,t).then((e=>e(this.axios,this.basePath)))}getTrade(e,t){return Be(this.configuration).getTrade(e.chainName,e.tradeId,t).then((e=>e(this.axios,this.basePath)))}listListings(e,t){return Be(this.configuration).listListings(e.chainName,e.status,e.sellItemContractAddress,e.buyItemContractAddress,e.sellItemTokenId,e.pageSize,e.sortBy,e.sortDirection,e.pageCursor,t).then((e=>e(this.axios,this.basePath)))}listTrades(e,t){return Be(this.configuration).listTrades(e.chainName,e.accountAddress,e.pageSize,e.sortBy,e.sortDirection,e.pageCursor,t).then((e=>e(this.axios,this.basePath)))}}const Ge=function(e){return{createCounterfactualAddress:async(t,n,a={})=>{pe("createCounterfactualAddress","chainName",t),pe("createCounterfactualAddress","createCounterfactualAddressRequest",n);const r="/v1/chains/{chain_name}/passport/counterfactual-address".replace("{chain_name}",encodeURIComponent(String(t))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"POST",...s,...a},c={};await me(c,e),c["Content-Type"]="application/json",ye(i,{});let d=s&&s.headers?s.headers:{};return o.headers={...c,...d,...a.headers},o.data=ge(n,o,e),{url:Ee(i),options:o}},createCounterfactualAddressDeprecated:async(t,n={})=>{pe("createCounterfactualAddressDeprecated","createCounterfactualAddressRequestDeprecated",t);const a=new URL("/passport-mr/v1/counterfactual-address",le);let r;e&&(r=e.baseOptions);const i={method:"POST",...r,...n},s={};await me(s,e),s["Content-Type"]="application/json",ye(a,{});let o=r&&r.headers?r.headers:{};return i.headers={...s,...o,...n.headers},i.data=ge(t,i,e),{url:Ee(a),options:i}},getLinkedAddresses:async(t,n,a={})=>{pe("getLinkedAddresses","userId",t),pe("getLinkedAddresses","chainName",n);const r="/v1/chains/{chain_name}/passport/users/{user_id}/linked-addresses".replace("{user_id}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"GET",...s,...a},c={};await me(c,e),ye(i,{});let d=s&&s.headers?s.headers:{};return o.headers={...c,...d,...a.headers},{url:Ee(i),options:o}},getLinkedAddressesDeprecated:async(t,n={})=>{pe("getLinkedAddressesDeprecated","userId",t);const a="/passport-mr/v1/users/{userId}/linked-addresses".replace("{userId}",encodeURIComponent(String(t))),r=new URL(a,le);let i;e&&(i=e.baseOptions);const s={method:"GET",...i,...n},o={};await me(o,e),ye(r,{});let c=i&&i.headers?i.headers:{};return s.headers={...o,...c,...n.headers},{url:Ee(r),options:s}}}},qe=function(t){const n=Ge(t);return{async createCounterfactualAddress(a,r,i){const s=await n.createCounterfactualAddress(a,r,i);return we(s,e,de,t)},async createCounterfactualAddressDeprecated(a,r){const i=await n.createCounterfactualAddressDeprecated(a,r);return we(i,e,de,t)},async getLinkedAddresses(a,r,i){const s=await n.getLinkedAddresses(a,r,i);return we(s,e,de,t)},async getLinkedAddressesDeprecated(a,r){const i=await n.getLinkedAddressesDeprecated(a,r);return we(i,e,de,t)}}};class je extends ue{createCounterfactualAddress(e,t){return qe(this.configuration).createCounterfactualAddress(e.chainName,e.createCounterfactualAddressRequest,t).then((e=>e(this.axios,this.basePath)))}createCounterfactualAddressDeprecated(e,t){return qe(this.configuration).createCounterfactualAddressDeprecated(e.createCounterfactualAddressRequestDeprecated,t).then((e=>e(this.axios,this.basePath)))}getLinkedAddresses(e,t){return qe(this.configuration).getLinkedAddresses(e.userId,e.chainName,t).then((e=>e(this.axios,this.basePath)))}getLinkedAddressesDeprecated(e,t){return qe(this.configuration).getLinkedAddressesDeprecated(e.userId,t).then((e=>e(this.axios,this.basePath)))}}const ze=function(e){return{getERC20Token:async(t,n,a={})=>{pe("getERC20Token","contractAddress",t),pe("getERC20Token","chainName",n);const r="/v1/chains/{chain_name}/tokens/{contract_address}".replace("{contract_address}",encodeURIComponent(String(t))).replace("{chain_name}",encodeURIComponent(String(n))),i=new URL(r,le);let s;e&&(s=e.baseOptions);const o={method:"GET",...s,...a};ye(i,{});let c=s&&s.headers?s.headers:{};return o.headers={...c,...a.headers},{url:Ee(i),options:o}},listERC20Tokens:async(t,n,a,r,i={})=>{pe("listERC20Tokens","chainName",t);const s="/v1/chains/{chain_name}/tokens".replace("{chain_name}",encodeURIComponent(String(t))),o=new URL(s,le);let c;e&&(c=e.baseOptions);const d={method:"GET",...c,...i},u={};void 0!==n&&(u.from_updated_at=n instanceof Date?n.toISOString():n),void 0!==a&&(u.page_cursor=a),void 0!==r&&(u.page_size=r),ye(o,u);let f=c&&c.headers?c.headers:{};return d.headers={...f,...i.headers},{url:Ee(o),options:d}}}},He=function(t){const n=ze(t);return{async getERC20Token(a,r,i){const s=await n.getERC20Token(a,r,i);return we(s,e,de,t)},async listERC20Tokens(a,r,i,s,o){const c=await n.listERC20Tokens(a,r,i,s,o);return we(c,e,de,t)}}};const We={Mint:"mint",Burn:"burn",Transfer:"transfer",Sale:"sale",Deposit:"deposit",Withdrawal:"withdrawal"};var $e=Object.freeze({__proto__:null,ActiveOrderStatusNameEnum:{Active:"ACTIVE"},ActivitiesApi:_e,ActivitiesApiAxiosParamCreator:Te,ActivitiesApiFactory:function(e,t,n){const a=Re(e);return{getActivity:(e,r)=>a.getActivity(e.chainName,e.activityId,r).then((e=>e(n,t))),listActivities:(e,r)=>a.listActivities(e.chainName,e.contractAddress,e.tokenId,e.accountAddress,e.activityType,e.fromIndexedAt,e.toIndexedAt,e.transactionHash,e.pageCursor,e.pageSize,r).then((e=>e(n,t)))}},ActivitiesApiFp:Re,ActivityType:We,CancelledOrderStatusCancellationTypeEnum:{OnChain:"ON_CHAIN",OffChain:"OFF_CHAIN"},CancelledOrderStatusNameEnum:{Cancelled:"CANCELLED"},ChainsApi:Ce,ChainsApiAxiosParamCreator:ve,ChainsApiFactory:function(e,t,n){const a=Ae(e);return{listChains:(e={},r)=>a.listChains(e.pageCursor,e.pageSize,r).then((e=>e(n,t)))}},ChainsApiFp:Ae,CollectionContractType:{Erc721:"ERC721"},CollectionsApi:Se,CollectionsApiAxiosParamCreator:Ie,CollectionsApiFactory:function(e,t,n){const a=Oe(e);return{getCollection:(e,r)=>a.getCollection(e.contractAddress,e.chainName,r).then((e=>e(n,t))),listCollections:(e,r)=>a.listCollections(e.chainName,e.contractAddress,e.fromUpdatedAt,e.pageCursor,e.pageSize,r).then((e=>e(n,t))),listCollectionsByNFTOwner:(e,r)=>a.listCollectionsByNFTOwner(e.accountAddress,e.chainName,e.pageCursor,e.pageSize,r).then((e=>e(n,t))),refreshCollectionMetadata:(e,r)=>a.refreshCollectionMetadata(e.contractAddress,e.chainName,e.refreshCollectionMetadataRequest,r).then((e=>e(n,t)))}},CollectionsApiFp:Oe,Configuration:class{apiKey;username;password;accessToken;basePath;baseOptions;formDataCtor;constructor(e={}){this.apiKey=e.apiKey,this.username=e.username,this.password=e.password,this.accessToken=e.accessToken,this.basePath=e.basePath,this.baseOptions=e.baseOptions,this.formDataCtor=e.formDataCtor}isJsonMime(e){const t=new RegExp("^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$","i");return null!==e&&(t.test(e)||"application/json-patch+json"===e.toLowerCase())}},ERC20ItemItemTypeEnum:{Erc20:"ERC20"},ERC721ItemItemTypeEnum:{Erc721:"ERC721"},ExpiredOrderStatusNameEnum:{Expired:"EXPIRED"},FailedOrderCancellationReasonCodeEnum:{AlreadyFilled:"ALREADY_FILLED"},FeeFeeTypeEnum:{Royalty:"ROYALTY",MakerEcosystem:"MAKER_ECOSYSTEM",TakerEcosystem:"TAKER_ECOSYSTEM",Protocol:"PROTOCOL"},FilledOrderStatusNameEnum:{Filled:"FILLED"},InactiveOrderStatusNameEnum:{Inactive:"INACTIVE"},ListListingsSortByEnum:{CreatedAt:"created_at",UpdatedAt:"updated_at",BuyItemAmount:"buy_item_amount"},ListListingsSortDirectionEnum:{Asc:"asc",Desc:"desc"},ListTradesSortByEnum:{IndexedAt:"indexed_at"},ListTradesSortDirectionEnum:{Asc:"asc",Desc:"desc"},MetadataApi:class extends ue{getMetadata(e,t){return ke(this.configuration).getMetadata(e.chainName,e.contractAddress,e.metadataId,t).then((e=>e(this.axios,this.basePath)))}listMetadata(e,t){return ke(this.configuration).listMetadata(e.chainName,e.contractAddress,e.fromUpdatedAt,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}refreshMetadataByID(e,t){return ke(this.configuration).refreshMetadataByID(e.chainName,e.contractAddress,e.refreshMetadataByIDRequest,t).then((e=>e(this.axios,this.basePath)))}refreshNFTMetadataByTokenID(e,t){return ke(this.configuration).refreshNFTMetadataByTokenID(e.contractAddress,e.chainName,e.refreshNFTMetadataByTokenIDRequest,t).then((e=>e(this.axios,this.basePath)))}},MetadataApiAxiosParamCreator:Ne,MetadataApiFactory:function(e,t,n){const a=ke(e);return{getMetadata:(e,r)=>a.getMetadata(e.chainName,e.contractAddress,e.metadataId,r).then((e=>e(n,t))),listMetadata:(e,r)=>a.listMetadata(e.chainName,e.contractAddress,e.fromUpdatedAt,e.pageCursor,e.pageSize,r).then((e=>e(n,t))),refreshMetadataByID:(e,r)=>a.refreshMetadataByID(e.chainName,e.contractAddress,e.refreshMetadataByIDRequest,r).then((e=>e(n,t))),refreshNFTMetadataByTokenID:(e,r)=>a.refreshNFTMetadataByTokenID(e.contractAddress,e.chainName,e.refreshNFTMetadataByTokenIDRequest,r).then((e=>e(n,t)))}},MetadataApiFp:ke,NFTContractType:{Erc721:"ERC721"},NativeItemItemTypeEnum:{Native:"NATIVE"},NftOwnersApi:De,NftOwnersApiAxiosParamCreator:Me,NftOwnersApiFactory:function(e,t,n){const a=Pe(e);return{listNFTOwners:(e,r)=>a.listNFTOwners(e.contractAddress,e.tokenId,e.chainName,e.pageCursor,e.pageSize,r).then((e=>e(n,t))),listOwnersByContractAddress:(e,r)=>a.listOwnersByContractAddress(e.contractAddress,e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,r).then((e=>e(n,t)))}},NftOwnersApiFp:Pe,NftsApi:Ue,NftsApiAxiosParamCreator:xe,NftsApiFactory:function(e,t,n){const a=Le(e);return{getNFT:(e,r)=>a.getNFT(e.contractAddress,e.tokenId,e.chainName,r).then((e=>e(n,t))),listAllNFTOwners:(e,r)=>a.listAllNFTOwners(e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,r).then((e=>e(n,t))),listAllNFTs:(e,r)=>a.listAllNFTs(e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,r).then((e=>e(n,t))),listNFTs:(e,r)=>a.listNFTs(e.contractAddress,e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,r).then((e=>e(n,t))),listNFTsByAccountAddress:(e,r)=>a.listNFTsByAccountAddress(e.accountAddress,e.chainName,e.contractAddress,e.pageCursor,e.pageSize,r).then((e=>e(n,t)))}},NftsApiFp:Le,OrderStatusName:{Pending:"PENDING",Active:"ACTIVE",Inactive:"INACTIVE",Filled:"FILLED",Expired:"EXPIRED",Cancelled:"CANCELLED"},OrdersApi:Ve,OrdersApiAxiosParamCreator:Fe,OrdersApiFactory:function(e,t,n){const a=Be(e);return{cancelOrders:(e,r)=>a.cancelOrders(e.chainName,e.cancelOrdersRequestBody,r).then((e=>e(n,t))),createListing:(e,r)=>a.createListing(e.chainName,e.createListingRequestBody,r).then((e=>e(n,t))),fulfillmentData:(e,r)=>a.fulfillmentData(e.chainName,e.fulfillmentDataRequest,r).then((e=>e(n,t))),getListing:(e,r)=>a.getListing(e.chainName,e.listingId,r).then((e=>e(n,t))),getTrade:(e,r)=>a.getTrade(e.chainName,e.tradeId,r).then((e=>e(n,t))),listListings:(e,r)=>a.listListings(e.chainName,e.status,e.sellItemContractAddress,e.buyItemContractAddress,e.sellItemTokenId,e.pageSize,e.sortBy,e.sortDirection,e.pageCursor,r).then((e=>e(n,t))),listTrades:(e,r)=>a.listTrades(e.chainName,e.accountAddress,e.pageSize,e.sortBy,e.sortDirection,e.pageCursor,r).then((e=>e(n,t)))}},OrdersApiFp:Be,PassportApi:je,PassportApiAxiosParamCreator:Ge,PassportApiFactory:function(e,t,n){const a=qe(e);return{createCounterfactualAddress:(e,r)=>a.createCounterfactualAddress(e.chainName,e.createCounterfactualAddressRequest,r).then((e=>e(n,t))),createCounterfactualAddressDeprecated:(e,r)=>a.createCounterfactualAddressDeprecated(e.createCounterfactualAddressRequestDeprecated,r).then((e=>e(n,t))),getLinkedAddresses:(e,r)=>a.getLinkedAddresses(e.userId,e.chainName,r).then((e=>e(n,t))),getLinkedAddressesDeprecated:(e,r)=>a.getLinkedAddressesDeprecated(e.userId,r).then((e=>e(n,t)))}},PassportApiFp:qe,PendingOrderStatusNameEnum:{Pending:"PENDING"},ProtocolDataOrderTypeEnum:{FullRestricted:"FULL_RESTRICTED"},SaleFeeTypeEnum:{Royalty:"ROYALTY"},TokenContractType:{Erc20:"ERC20"},TokensApi:class extends ue{getERC20Token(e,t){return He(this.configuration).getERC20Token(e.contractAddress,e.chainName,t).then((e=>e(this.axios,this.basePath)))}listERC20Tokens(e,t){return He(this.configuration).listERC20Tokens(e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,t).then((e=>e(this.axios,this.basePath)))}},TokensApiAxiosParamCreator:ze,TokensApiFactory:function(e,t,n){const a=He(e);return{getERC20Token:(e,r)=>a.getERC20Token(e.contractAddress,e.chainName,r).then((e=>e(n,t))),listERC20Tokens:(e,r)=>a.listERC20Tokens(e.chainName,e.fromUpdatedAt,e.pageCursor,e.pageSize,r).then((e=>e(n,t)))}},TokensApiFp:He}),Xe=Object.freeze({__proto__:null,ActivityType:We}),Ke=Object.freeze({__proto__:null}),Je=Object.freeze({__proto__:null}),Ze=Object.freeze({__proto__:null}),Qe=Object.freeze({__proto__:null}),Ye=Object.freeze({__proto__:null}),et=Object.freeze({__proto__:null});class tt{config;activitiesApi;chainsApi;collectionApi;nftOwnersApi;nftsApi;ordersApi;passportApi;constructor(e){this.config=e,this.activitiesApi=new _e(e.indexer),this.chainsApi=new Ce(e.indexer),this.collectionApi=new Se(e.indexer),this.nftOwnersApi=new De(e.indexer),this.nftsApi=new Ue(e.indexer),this.ordersApi=new Ve(e.orderBook),this.passportApi=new je(e.passport)}}const nt={"x-sdk-version":"ts-immutable-sdk-0.31.2-alpha"},at=({basePath:e,headers:t})=>{if(!e.trim())throw Error("basePath can not be empty");const n={basePath:e,baseOptions:{headers:{...nt,...t||{}}}};return new class{apiKey;username;password;accessToken;basePath;baseOptions;formDataCtor;constructor(e={}){this.apiKey=e.apiKey,this.username=e.username,this.password=e.password,this.accessToken=e.accessToken,this.basePath=e.basePath,this.baseOptions=e.baseOptions,this.formDataCtor=e.formDataCtor}isJsonMime(e){const t=new RegExp("^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$","i");return null!==e&&(t.test(e)||"application/json-patch+json"===e.toLowerCase())}}(n)},rt=()=>({indexer:at({basePath:"https://indexer-mr.imtbl.com"}),orderBook:at({basePath:"https://order-book-mr.imtbl.com"}),passport:at({basePath:"https://api.immutable.com"})}),it=()=>({indexer:at({basePath:"https://api.sandbox.immutable.com"}),orderBook:at({basePath:"https://api.sandbox.immutable.com"}),passport:at({basePath:"https://api.sandbox.immutable.com"})});class st extends Error{code;details;link;traceId;constructor({message:e,code:t,details:n,link:a,trace_id:r}){super(e),this.code=t,this.details=n,this.link=a,this.traceId=r}}const ot={sdkVersion:"ts-immutable-sdk-multi-rollup-api-client-0.31.2-alpha"},ct=({baseConfig:e,basePath:t,headers:n})=>{if(!t.trim())throw Error("basePath can not be empty");const a={...e,basePath:t,baseOptions:{headers:{...n||{},...ot}}};return new $e.Configuration(a)};class dt{apiConfig;baseConfig;constructor({baseConfig:e,overrides:t}){if(this.baseConfig=e,t)this.apiConfig=ct(t);else switch(e.environment){case se.SANDBOX:this.apiConfig=ct({basePath:"https://api.sandbox.immutable.com",baseConfig:e});break;case se.PRODUCTION:this.apiConfig=ct({basePath:"https://api.immutable.com",baseConfig:e});break;default:this.apiConfig=ct({basePath:"https://api.sandbox.immutable.com",baseConfig:e})}}}function ut(t){if(e.isAxiosError(t)&&t.response){const e=t.response.data;return e.code&&e.message?new st({code:e.code,message:e.message,details:e.details||null,link:e.link||"",trace_id:e.trace_id||""}):new st({code:t.code??t.response?.status.toString()??"unknown_error_code",message:String(t),details:null,link:"",trace_id:""})}return new st({code:"unknown_error_code",message:String(t),details:null,link:"",trace_id:""})}class ft{config;activities;chains;collections;nfts;nftOwners;tokens;metadata;constructor(e){this.config=new dt(e),this.activities=new $e.ActivitiesApi(this.config.apiConfig),this.chains=new $e.ChainsApi(this.config.apiConfig),this.collections=new $e.CollectionsApi(this.config.apiConfig),this.nfts=new $e.NftsApi(this.config.apiConfig),this.nftOwners=new $e.NftOwnersApi(this.config.apiConfig),this.tokens=new $e.TokensApi(this.config.apiConfig),this.metadata=new $e.MetadataApi(this.config.apiConfig)}async listActivities(e){return await this.activities.listActivities(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async getActivity(e){return await this.activities.getActivity(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listChains(e){return await this.chains.listChains(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listCollections(e){return await this.collections.listCollections(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listCollectionsByNFTOwner(e){return await this.collections.listCollectionsByNFTOwner(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async getCollection(e){return await this.collections.getCollection(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async getNFT(e){return await this.nfts.getNFT(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listNFTs(e){return await this.nfts.listNFTs(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listNFTsByAccountAddress(e){return await this.nfts.listNFTsByAccountAddress(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listAllNFTs(e){return await this.nfts.listAllNFTs(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listNFTOwners(e){return await this.nftOwners.listNFTOwners(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listNFTOwnersByContractAddress(e){return await this.nftOwners.listOwnersByContractAddress(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listAllNFTOwners(e){return await this.nfts.listAllNFTOwners(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listTokens(e){return await this.tokens.listERC20Tokens(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async getToken(e){return await this.tokens.getERC20Token(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async getMetadata(e){return await this.metadata.getMetadata(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async listNFTMetadataByContractAddress(e){return await this.metadata.listMetadata(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async refreshCollectionMetadata(e){return await this.collections.refreshCollectionMetadata(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async refreshNFTMetadata(e){return await this.metadata.refreshNFTMetadataByTokenID(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}async refreshStackedMetadata(e){return await this.metadata.refreshMetadataByID(e).then((e=>e.data)).catch((e=>{throw ut(e)}))}}var lt=Object.freeze({__proto__:null,APIError:st,ActivitiesTypes:Xe,BlockchainData:ft,ChainsTypes:Ke,CollectionsTypes:Je,MetadataTypes:Ze,NFTOwnersTypes:Qe,NFTsTypes:Ye,TokensTypes:et});const pt=({basePath:e,chainID:t,coreContractAddress:n,registrationContractAddress:a})=>i.createConfig({basePath:e,chainID:t,coreContractAddress:n,registrationContractAddress:a,sdkVersion:"ts-immutable-sdk-0.31.2-alpha"}),ht=()=>pt({basePath:"https://api.sandbox.x.immutable.com",chainID:11155111,coreContractAddress:"0x2d5C349fD8464DA06a3f90b4B0E9195F3d1b7F98",registrationContractAddress:"0xDbA6129C02E69405622fAdc3d5A7f8d23eac3b97"});class mt{immutableXConfig;baseConfig;constructor({baseConfig:e,overrides:t}){if(this.baseConfig=e,t)this.immutableXConfig=t.immutableXConfig;else switch(e.environment){case se.SANDBOX:this.immutableXConfig=ht();break;case se.PRODUCTION:this.immutableXConfig=pt({basePath:"https://api.x.immutable.com",chainID:1,coreContractAddress:"0x5FDCCA53617f4d2b9134B29090C87D01058e27e9",registrationContractAddress:"0x72a06bf2a1CE5e39cBA06c0CAb824960B587d64c"});break;default:this.immutableXConfig=ht()}}}class bt{immutableX;depositsApi;mintsApi;ordersApi;tokensApi;tradesApi;transfersApi;exchangeApi;nftCheckoutPrimaryApi;usersApi;withdrawalsApi;balanceApi;assetApi;collectionApi;metadataApi;metadataRefreshesApi;projectsApi;constructor(e){const t=new mt(e);this.immutableX=new r(t.immutableXConfig),this.depositsApi=this.immutableX.depositsApi,this.mintsApi=this.immutableX.mintsApi,this.ordersApi=this.immutableX.ordersApi,this.tokensApi=this.immutableX.tokensApi,this.tradesApi=this.immutableX.tradesApi,this.transfersApi=this.immutableX.transfersApi,this.exchangeApi=this.immutableX.exchangeApi,this.usersApi=this.immutableX.usersApi,this.withdrawalsApi=this.immutableX.withdrawalsApi,this.balanceApi=this.immutableX.balanceApi,this.assetApi=this.immutableX.assetApi,this.collectionApi=this.immutableX.collectionApi,this.metadataApi=this.immutableX.metadataApi,this.metadataRefreshesApi=this.immutableX.metadataRefreshesApi,this.nftCheckoutPrimaryApi=this.immutableX.nftCheckoutPrimaryApi,this.projectsApi=this.immutableX.projectsApi}getDeposit(e){return this.immutableX.getDeposit(e)}listDeposits(e){return this.immutableX.listDeposits(e)}getUser(e){return this.immutableX.getUser(e)}getAsset(e){return this.immutableX.getAsset(e)}listAssets(e){return this.immutableX.listAssets(e)}createCollection(e,t){return this.immutableX.createCollection(e,t)}getCollection(e){return this.immutableX.getCollection(e)}listCollectionFilters(e){return this.immutableX.listCollectionFilters(e)}listCollections(e){return this.collectionApi.listCollections(e).then((e=>e.data))}updateCollection(e,t,n){return this.immutableX.updateCollection(e,t,n)}addMetadataSchemaToCollection(e,t,n){return this.immutableX.addMetadataSchemaToCollection(e,t,n)}getMetadataSchema(e){return this.immutableX.getMetadataSchema(e)}updateMetadataSchemaByName(e,t,n,a){return this.immutableX.updateMetadataSchemaByName(e,t,n,a)}listMetadataRefreshes(e,t,n,a){return this.immutableX.listMetadataRefreshes(e,t,n,a)}getMetadataRefreshErrors(e,t,n,a){return this.immutableX.getMetadataRefreshErrors(e,t,n,a)}getMetadataRefreshResults(e,t){return this.immutableX.getMetadataRefreshResults(e,t)}createMetadataRefresh(e,t){return this.immutableX.createMetadataRefresh(e,t)}async createProject(e,t){return this.immutableX.createProject(e,t)}async getProject(e,t){return this.immutableX.getProject(e,t)}async getProjects(e,t,n,a,r){return this.immutableX.getProjects(e,t,n,a,r)}getBalance(e){return this.immutableX.getBalance(e)}listBalances(e){return this.immutableX.listBalances(e)}getMint(e){return this.immutableX.getMint(e)}listMints(e){return this.immutableX.listMints(e)}mint(e,t){return this.immutableX.mint(e,t)}listWithdrawals(e){return this.immutableX.listWithdrawals(e)}getWithdrawal(e){return this.immutableX.getWithdrawal(e)}getOrder(e){return this.immutableX.getOrder(e)}listOrders(e){return this.immutableX.listOrders(e)}getTrade(e){return this.immutableX.getTrade(e)}listTrades(e){return this.immutableX.listTrades(e)}getToken(e){return this.immutableX.getToken(e)}listTokens(e){return this.immutableX.listTokens(e)}getTransfer(e){return this.immutableX.getTransfer(e)}listTransfers(e){return this.immutableX.listTransfers(e)}createExchange(e){return this.immutableX.createExchange(e).then((e=>e.data))}getExchange(e){return this.immutableX.getExchange(e).then((e=>e.data))}getExchanges(e){return this.immutableX.getExchanges(e).then((e=>e.data))}exchangeTransfer(e,t){return this.immutableX.exchangeTransfer(e,t)}createNftPrimary(e){return this.immutableX.createNftPrimary(e).then((e=>e.data))}getCurrenciesNFTCheckoutPrimary(e){return this.immutableX.getCurrenciesNFTCheckoutPrimary(e).then((e=>e.data))}getNftPrimaryTransaction(e){return this.immutableX.getNftPrimaryTransaction(e).then((e=>e.data))}getNftPrimaryTransactions(e){return this.immutableX.getNftPrimaryTransactions(e).then((e=>e.data))}}var yt=Object.freeze({__proto__:null,IMXError:s,ImmutableXClient:bt,imxClientCreateStarkSigner:o,imxClientGenerateLegacyStarkPrivateKey:c});function gt(e,t){return function(){return e.apply(t,arguments)}}const{toString:Et}=Object.prototype,{getPrototypeOf:wt}=Object,Tt=(Rt=Object.create(null),e=>{const t=Et.call(e);return Rt[t]||(Rt[t]=t.slice(8,-1).toLowerCase())});var Rt;const _t=e=>(e=e.toLowerCase(),t=>Tt(t)===e),vt=e=>t=>typeof t===e,{isArray:At}=Array,Ct=vt("undefined");const It=_t("ArrayBuffer");const Ot=vt("string"),St=vt("function"),Nt=vt("number"),kt=e=>null!==e&&"object"==typeof e,Mt=e=>{if("object"!==Tt(e))return!1;const t=wt(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Pt=_t("Date"),Dt=_t("File"),xt=_t("Blob"),Lt=_t("FileList"),Ut=_t("URLSearchParams");function Ft(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let a,r;if("object"!=typeof e&&(e=[e]),At(e))for(a=0,r=e.length;a<r;a++)t.call(null,e[a],a,e);else{const r=n?Object.getOwnPropertyNames(e):Object.keys(e),i=r.length;let s;for(a=0;a<i;a++)s=r[a],t.call(null,e[s],s,e)}}function Bt(e,t){t=t.toLowerCase();const n=Object.keys(e);let a,r=n.length;for(;r-- >0;)if(a=n[r],t===a.toLowerCase())return a;return null}const Vt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Gt=e=>!Ct(e)&&e!==Vt;const qt=(jt="undefined"!=typeof Uint8Array&&wt(Uint8Array),e=>jt&&e instanceof jt);var jt;const zt=_t("HTMLFormElement"),Ht=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Wt=_t("RegExp"),$t=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),a={};Ft(n,((n,r)=>{!1!==t(n,r,e)&&(a[r]=n)})),Object.defineProperties(e,a)},Xt="abcdefghijklmnopqrstuvwxyz",Kt="0123456789",Jt={DIGIT:Kt,ALPHA:Xt,ALPHA_DIGIT:Xt+Xt.toUpperCase()+Kt};const Zt=_t("AsyncFunction");var Qt={isArray:At,isArrayBuffer:It,isBuffer:function(e){return null!==e&&!Ct(e)&&null!==e.constructor&&!Ct(e.constructor)&&St(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||St(e.append)&&("formdata"===(t=Tt(e))||"object"===t&&St(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&It(e.buffer),t},isString:Ot,isNumber:Nt,isBoolean:e=>!0===e||!1===e,isObject:kt,isPlainObject:Mt,isUndefined:Ct,isDate:Pt,isFile:Dt,isBlob:xt,isRegExp:Wt,isFunction:St,isStream:e=>kt(e)&&St(e.pipe),isURLSearchParams:Ut,isTypedArray:qt,isFileList:Lt,forEach:Ft,merge:function e(){const{caseless:t}=Gt(this)&&this||{},n={},a=(a,r)=>{const i=t&&Bt(n,r)||r;Mt(n[i])&&Mt(a)?n[i]=e(n[i],a):Mt(a)?n[i]=e({},a):At(a)?n[i]=a.slice():n[i]=a};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&Ft(arguments[e],a);return n},extend:(e,t,n,{allOwnKeys:a}={})=>(Ft(t,((t,a)=>{n&&St(t)?e[a]=gt(t,n):e[a]=t}),{allOwnKeys:a}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,a)=>{e.prototype=Object.create(t.prototype,a),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,a)=>{let r,i,s;const o={};if(t=t||{},null==e)return t;do{for(r=Object.getOwnPropertyNames(e),i=r.length;i-- >0;)s=r[i],a&&!a(s,e,t)||o[s]||(t[s]=e[s],o[s]=!0);e=!1!==n&&wt(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:Tt,kindOfTest:_t,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const a=e.indexOf(t,n);return-1!==a&&a===n},toArray:e=>{if(!e)return null;if(At(e))return e;let t=e.length;if(!Nt(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let a;for(;(a=n.next())&&!a.done;){const n=a.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const a=[];for(;null!==(n=e.exec(t));)a.push(n);return a},isHTMLForm:zt,hasOwnProperty:Ht,hasOwnProp:Ht,reduceDescriptors:$t,freezeMethods:e=>{$t(e,((t,n)=>{if(St(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const a=e[n];St(a)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},a=e=>{e.forEach((e=>{n[e]=!0}))};return At(e)?a(e):a(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:Bt,global:Vt,isContextDefined:Gt,ALPHABET:Jt,generateString:(e=16,t=Jt.ALPHA_DIGIT)=>{let n="";const{length:a}=t;for(;e--;)n+=t[Math.random()*a|0];return n},isSpecCompliantForm:function(e){return!!(e&&St(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,a)=>{if(kt(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[a]=e;const r=At(e)?[]:{};return Ft(e,((e,t)=>{const i=n(e,a+1);!Ct(i)&&(r[t]=i)})),t[a]=void 0,r}}return e};return n(e,0)},isAsyncFn:Zt,isThenable:e=>e&&(kt(e)||St(e))&&St(e.then)&&St(e.catch)};function Yt(e,t,n,a,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),a&&(this.request=a),r&&(this.response=r)}Qt.inherits(Yt,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Qt.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const en=Yt.prototype,tn={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{tn[e]={value:e}})),Object.defineProperties(Yt,tn),Object.defineProperty(en,"isAxiosError",{value:!0}),Yt.from=(e,t,n,a,r,i)=>{const s=Object.create(en);return Qt.toFlatObject(e,s,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),Yt.call(s,e.message,t,n,a,r),s.cause=e,s.name=e.name,i&&Object.assign(s,i),s};function nn(e){return Qt.isPlainObject(e)||Qt.isArray(e)}function an(e){return Qt.endsWith(e,"[]")?e.slice(0,-2):e}function rn(e,t,n){return e?e.concat(t).map((function(e,t){return e=an(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const sn=Qt.toFlatObject(Qt,{},null,(function(e){return/^is[A-Z]/.test(e)}));function on(e,t,n){if(!Qt.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const a=(n=Qt.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Qt.isUndefined(t[e])}))).metaTokens,r=n.visitor||d,i=n.dots,s=n.indexes,o=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Qt.isSpecCompliantForm(t);if(!Qt.isFunction(r))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Qt.isDate(e))return e.toISOString();if(!o&&Qt.isBlob(e))throw new Yt("Blob is not supported. Use a Buffer instead.");return Qt.isArrayBuffer(e)||Qt.isTypedArray(e)?o&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,n,r){let o=e;if(e&&!r&&"object"==typeof e)if(Qt.endsWith(n,"{}"))n=a?n:n.slice(0,-2),e=JSON.stringify(e);else if(Qt.isArray(e)&&function(e){return Qt.isArray(e)&&!e.some(nn)}(e)||(Qt.isFileList(e)||Qt.endsWith(n,"[]"))&&(o=Qt.toArray(e)))return n=an(n),o.forEach((function(e,a){!Qt.isUndefined(e)&&null!==e&&t.append(!0===s?rn([n],a,i):null===s?n:n+"[]",c(e))})),!1;return!!nn(e)||(t.append(rn(r,n,i),c(e)),!1)}const u=[],f=Object.assign(sn,{defaultVisitor:d,convertValue:c,isVisitable:nn});if(!Qt.isObject(e))throw new TypeError("data must be an object");return function e(n,a){if(!Qt.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+a.join("."));u.push(n),Qt.forEach(n,(function(n,i){!0===(!(Qt.isUndefined(n)||null===n)&&r.call(t,n,Qt.isString(i)?i.trim():i,a,f))&&e(n,a?a.concat(i):[i])})),u.pop()}}(e),t}function cn(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function dn(e,t){this._pairs=[],e&&on(e,this,t)}const un=dn.prototype;function fn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ln(e,t,n){if(!t)return e;const a=n&&n.encode||fn,r=n&&n.serialize;let i;if(i=r?r(t,n):Qt.isURLSearchParams(t)?t.toString():new dn(t,n).toString(a),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}un.append=function(e,t){this._pairs.push([e,t])},un.toString=function(e){const t=e?function(t){return e.call(this,t,cn)}:cn;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var pn=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Qt.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},hn={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1};var mn={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:dn,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},isStandardBrowserEnv:(()=>{let e;return("undefined"==typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&("undefined"!=typeof window&&"undefined"!=typeof document)})(),isStandardBrowserWebWorkerEnv:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,protocols:["http","https","file","blob","url","data"]};function bn(e){function t(e,n,a,r){let i=e[r++];const s=Number.isFinite(+i),o=r>=e.length;if(i=!i&&Qt.isArray(a)?a.length:i,o)return Qt.hasOwnProp(a,i)?a[i]=[a[i],n]:a[i]=n,!s;a[i]&&Qt.isObject(a[i])||(a[i]=[]);return t(e,n,a[i],r)&&Qt.isArray(a[i])&&(a[i]=function(e){const t={},n=Object.keys(e);let a;const r=n.length;let i;for(a=0;a<r;a++)i=n[a],t[i]=e[i];return t}(a[i])),!s}if(Qt.isFormData(e)&&Qt.isFunction(e.entries)){const n={};return Qt.forEachEntry(e,((e,a)=>{t(function(e){return Qt.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),a,n,0)})),n}return null}const yn={"Content-Type":void 0};const gn={transitional:hn,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",a=n.indexOf("application/json")>-1,r=Qt.isObject(e);r&&Qt.isHTMLForm(e)&&(e=new FormData(e));if(Qt.isFormData(e))return a&&a?JSON.stringify(bn(e)):e;if(Qt.isArrayBuffer(e)||Qt.isBuffer(e)||Qt.isStream(e)||Qt.isFile(e)||Qt.isBlob(e))return e;if(Qt.isArrayBufferView(e))return e.buffer;if(Qt.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(r){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return on(e,new mn.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,a){return mn.isNode&&Qt.isBuffer(e)?(this.append(t,e.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((i=Qt.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return on(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||a?(t.setContentType("application/json",!1),function(e,t,n){if(Qt.isString(e))try{return(t||JSON.parse)(e),Qt.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||gn.transitional,n=t&&t.forcedJSONParsing,a="json"===this.responseType;if(e&&Qt.isString(e)&&(n&&!this.responseType||a)){const n=!(t&&t.silentJSONParsing)&&a;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Yt.from(e,Yt.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:mn.classes.FormData,Blob:mn.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Qt.forEach(["delete","get","head"],(function(e){gn.headers[e]={}})),Qt.forEach(["post","put","patch"],(function(e){gn.headers[e]=Qt.merge(yn)}));var En=gn;const wn=Qt.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const Tn=Symbol("internals");function Rn(e){return e&&String(e).trim().toLowerCase()}function _n(e){return!1===e||null==e?e:Qt.isArray(e)?e.map(_n):String(e)}function vn(e,t,n,a,r){return Qt.isFunction(a)?a.call(this,t,n):(r&&(t=n),Qt.isString(t)?Qt.isString(a)?-1!==t.indexOf(a):Qt.isRegExp(a)?a.test(t):void 0:void 0)}class An{constructor(e){e&&this.set(e)}set(e,t,n){const a=this;function r(e,t,n){const r=Rn(t);if(!r)throw new Error("header name must be a non-empty string");const i=Qt.findKey(a,r);(!i||void 0===a[i]||!0===n||void 0===n&&!1!==a[i])&&(a[i||t]=_n(e))}const i=(e,t)=>Qt.forEach(e,((e,n)=>r(e,n,t)));return Qt.isPlainObject(e)||e instanceof this.constructor?i(e,t):Qt.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?i((e=>{const t={};let n,a,r;return e&&e.split("\n").forEach((function(e){r=e.indexOf(":"),n=e.substring(0,r).trim().toLowerCase(),a=e.substring(r+1).trim(),!n||t[n]&&wn[n]||("set-cookie"===n?t[n]?t[n].push(a):t[n]=[a]:t[n]=t[n]?t[n]+", "+a:a)})),t})(e),t):null!=e&&r(t,e,n),this}get(e,t){if(e=Rn(e)){const n=Qt.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=n.exec(e);)t[a[1]]=a[2];return t}(e);if(Qt.isFunction(t))return t.call(this,e,n);if(Qt.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Rn(e)){const n=Qt.findKey(this,e);return!(!n||void 0===this[n]||t&&!vn(0,this[n],n,t))}return!1}delete(e,t){const n=this;let a=!1;function r(e){if(e=Rn(e)){const r=Qt.findKey(n,e);!r||t&&!vn(0,n[r],r,t)||(delete n[r],a=!0)}}return Qt.isArray(e)?e.forEach(r):r(e),a}clear(e){const t=Object.keys(this);let n=t.length,a=!1;for(;n--;){const r=t[n];e&&!vn(0,this[r],r,e,!0)||(delete this[r],a=!0)}return a}normalize(e){const t=this,n={};return Qt.forEach(this,((a,r)=>{const i=Qt.findKey(n,r);if(i)return t[i]=_n(a),void delete t[r];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(r):String(r).trim();s!==r&&delete t[r],t[s]=_n(a),n[s]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Qt.forEach(this,((n,a)=>{null!=n&&!1!==n&&(t[a]=e&&Qt.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[Tn]=this[Tn]={accessors:{}}).accessors,n=this.prototype;function a(e){const a=Rn(e);t[a]||(!function(e,t){const n=Qt.toCamelCase(" "+t);["get","set","has"].forEach((a=>{Object.defineProperty(e,a+n,{value:function(e,n,r){return this[a].call(this,t,e,n,r)},configurable:!0})}))}(n,e),t[a]=!0)}return Qt.isArray(e)?e.forEach(a):a(e),this}}An.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Qt.freezeMethods(An.prototype),Qt.freezeMethods(An);var Cn=An;function In(e,t){const n=this||En,a=t||n,r=Cn.from(a.headers);let i=a.data;return Qt.forEach(e,(function(e){i=e.call(n,i,r.normalize(),t?t.status:void 0)})),r.normalize(),i}function On(e){return!(!e||!e.__CANCEL__)}function Sn(e,t,n){Yt.call(this,null==e?"canceled":e,Yt.ERR_CANCELED,t,n),this.name="CanceledError"}Qt.inherits(Sn,Yt,{__CANCEL__:!0});var Nn=mn.isStandardBrowserEnv?{write:function(e,t,n,a,r,i){const s=[];s.push(e+"="+encodeURIComponent(t)),Qt.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),Qt.isString(a)&&s.push("path="+a),Qt.isString(r)&&s.push("domain="+r),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function kn(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var Mn=mn.isStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function a(n){let a=n;return e&&(t.setAttribute("href",a),a=t.href),t.setAttribute("href",a),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=a(window.location.href),function(e){const t=Qt.isString(e)?a(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};function Pn(e,t){let n=0;const a=function(e,t){e=e||10;const n=new Array(e),a=new Array(e);let r,i=0,s=0;return t=void 0!==t?t:1e3,function(o){const c=Date.now(),d=a[s];r||(r=c),n[i]=o,a[i]=c;let u=s,f=0;for(;u!==i;)f+=n[u++],u%=e;if(i=(i+1)%e,i===s&&(s=(s+1)%e),c-r<t)return;const l=d&&c-d;return l?Math.round(1e3*f/l):void 0}}(50,250);return r=>{const i=r.loaded,s=r.lengthComputable?r.total:void 0,o=i-n,c=a(o);n=i;const d={loaded:i,total:s,progress:s?i/s:void 0,bytes:o,rate:c||void 0,estimated:c&&s&&i<=s?(s-i)/c:void 0,event:r};d[t?"download":"upload"]=!0,e(d)}}var Dn="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let a=e.data;const r=Cn.from(e.headers).normalize(),i=e.responseType;let s;function o(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}Qt.isFormData(a)&&(mn.isStandardBrowserEnv||mn.isStandardBrowserWebWorkerEnv?r.setContentType(!1):r.setContentType("multipart/form-data;",!1));let c=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";r.set("Authorization","Basic "+btoa(t+":"+n))}const d=kn(e.baseURL,e.url);function u(){if(!c)return;const a=Cn.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders());!function(e,t,n){const a=n.config.validateStatus;n.status&&a&&!a(n.status)?t(new Yt("Request failed with status code "+n.status,[Yt.ERR_BAD_REQUEST,Yt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),o()}),(function(e){n(e),o()}),{data:i&&"text"!==i&&"json"!==i?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:a,config:e,request:c}),c=null}if(c.open(e.method.toUpperCase(),ln(d,e.params,e.paramsSerializer),!0),c.timeout=e.timeout,"onloadend"in c?c.onloadend=u:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf("file:"))&&setTimeout(u)},c.onabort=function(){c&&(n(new Yt("Request aborted",Yt.ECONNABORTED,e,c)),c=null)},c.onerror=function(){n(new Yt("Network Error",Yt.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const a=e.transitional||hn;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new Yt(t,a.clarifyTimeoutError?Yt.ETIMEDOUT:Yt.ECONNABORTED,e,c)),c=null},mn.isStandardBrowserEnv){const t=(e.withCredentials||Mn(d))&&e.xsrfCookieName&&Nn.read(e.xsrfCookieName);t&&r.set(e.xsrfHeaderName,t)}void 0===a&&r.setContentType(null),"setRequestHeader"in c&&Qt.forEach(r.toJSON(),(function(e,t){c.setRequestHeader(t,e)})),Qt.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),i&&"json"!==i&&(c.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&c.addEventListener("progress",Pn(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&c.upload&&c.upload.addEventListener("progress",Pn(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{c&&(n(!t||t.type?new Sn(null,e,c):t),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const f=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(d);f&&-1===mn.protocols.indexOf(f)?n(new Yt("Unsupported protocol "+f+":",Yt.ERR_BAD_REQUEST,e)):c.send(a||null)}))};const xn={http:null,xhr:Dn};Qt.forEach(xn,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));var Ln=e=>{e=Qt.isArray(e)?e:[e];const{length:t}=e;let n,a;for(let r=0;r<t&&(n=e[r],!(a=Qt.isString(n)?xn[n.toLowerCase()]:n));r++);if(!a){if(!1===a)throw new Yt(`Adapter ${n} is not supported by the environment`,"ERR_NOT_SUPPORT");throw new Error(Qt.hasOwnProp(xn,n)?`Adapter '${n}' is not available in the build`:`Unknown adapter '${n}'`)}if(!Qt.isFunction(a))throw new TypeError("adapter is not a function");return a};function Un(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Sn(null,e)}function Fn(e){Un(e),e.headers=Cn.from(e.headers),e.data=In.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Ln(e.adapter||En.adapter)(e).then((function(t){return Un(e),t.data=In.call(e,e.transformResponse,t),t.headers=Cn.from(t.headers),t}),(function(t){return On(t)||(Un(e),t&&t.response&&(t.response.data=In.call(e,e.transformResponse,t.response),t.response.headers=Cn.from(t.response.headers))),Promise.reject(t)}))}const Bn=e=>e instanceof Cn?e.toJSON():e;function Vn(e,t){t=t||{};const n={};function a(e,t,n){return Qt.isPlainObject(e)&&Qt.isPlainObject(t)?Qt.merge.call({caseless:n},e,t):Qt.isPlainObject(t)?Qt.merge({},t):Qt.isArray(t)?t.slice():t}function r(e,t,n){return Qt.isUndefined(t)?Qt.isUndefined(e)?void 0:a(void 0,e,n):a(e,t,n)}function i(e,t){if(!Qt.isUndefined(t))return a(void 0,t)}function s(e,t){return Qt.isUndefined(t)?Qt.isUndefined(e)?void 0:a(void 0,e):a(void 0,t)}function o(n,r,i){return i in t?a(n,r):i in e?a(void 0,n):void 0}const c={url:i,method:i,data:i,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:o,headers:(e,t)=>r(Bn(e),Bn(t),!0)};return Qt.forEach(Object.keys(Object.assign({},e,t)),(function(a){const i=c[a]||r,s=i(e[a],t[a],a);Qt.isUndefined(s)&&i!==o||(n[a]=s)})),n}const Gn="1.4.0",qn={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{qn[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const jn={};qn.transitional=function(e,t,n){function a(e,t){return"[Axios v1.4.0] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,i)=>{if(!1===e)throw new Yt(a(r," has been removed"+(t?" in "+t:"")),Yt.ERR_DEPRECATED);return t&&!jn[r]&&(jn[r]=!0,console.warn(a(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,i)}};var zn={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Yt("options must be an object",Yt.ERR_BAD_OPTION_VALUE);const a=Object.keys(e);let r=a.length;for(;r-- >0;){const i=a[r],s=t[i];if(s){const t=e[i],n=void 0===t||s(t,i,e);if(!0!==n)throw new Yt("option "+i+" must be "+n,Yt.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Yt("Unknown option "+i,Yt.ERR_BAD_OPTION)}},validators:qn};const Hn=zn.validators;class Wn{constructor(e){this.defaults=e,this.interceptors={request:new pn,response:new pn}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Vn(this.defaults,t);const{transitional:n,paramsSerializer:a,headers:r}=t;let i;void 0!==n&&zn.assertOptions(n,{silentJSONParsing:Hn.transitional(Hn.boolean),forcedJSONParsing:Hn.transitional(Hn.boolean),clarifyTimeoutError:Hn.transitional(Hn.boolean)},!1),null!=a&&(Qt.isFunction(a)?t.paramsSerializer={serialize:a}:zn.assertOptions(a,{encode:Hn.function,serialize:Hn.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase(),i=r&&Qt.merge(r.common,r[t.method]),i&&Qt.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete r[e]})),t.headers=Cn.concat(i,r);const s=[];let o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(o=o&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let u,f=0;if(!o){const e=[Fn.bind(this),void 0];for(e.unshift.apply(e,s),e.push.apply(e,c),u=e.length,d=Promise.resolve(t);f<u;)d=d.then(e[f++],e[f++]);return d}u=s.length;let l=t;for(f=0;f<u;){const e=s[f++],t=s[f++];try{l=e(l)}catch(e){t.call(this,e);break}}try{d=Fn.call(this,l)}catch(e){return Promise.reject(e)}for(f=0,u=c.length;f<u;)d=d.then(c[f++],c[f++]);return d}getUri(e){return ln(kn((e=Vn(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}Qt.forEach(["delete","get","head","options"],(function(e){Wn.prototype[e]=function(t,n){return this.request(Vn(n||{},{method:e,url:t,data:(n||{}).data}))}})),Qt.forEach(["post","put","patch"],(function(e){function t(t){return function(n,a,r){return this.request(Vn(r||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:a}))}}Wn.prototype[e]=t(),Wn.prototype[e+"Form"]=t(!0)}));var $n=Wn;class Xn{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const n=this;this.promise.then((e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const a=new Promise((e=>{n.subscribe(e),t=e})).then(e);return a.cancel=function(){n.unsubscribe(t)},a},e((function(e,a,r){n.reason||(n.reason=new Sn(e,a,r),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new Xn((function(t){e=t})),cancel:e}}}var Kn=Xn;const Jn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Jn).forEach((([e,t])=>{Jn[t]=e}));var Zn=Jn;const Qn=function e(t){const n=new $n(t),a=gt($n.prototype.request,n);return Qt.extend(a,$n.prototype,n,{allOwnKeys:!0}),Qt.extend(a,n,null,{allOwnKeys:!0}),a.create=function(n){return e(Vn(t,n))},a}(En);Qn.Axios=$n,Qn.CanceledError=Sn,Qn.CancelToken=Kn,Qn.isCancel=On,Qn.VERSION=Gn,Qn.toFormData=on,Qn.AxiosError=Yt,Qn.Cancel=Qn.CanceledError,Qn.all=function(e){return Promise.all(e)},Qn.spread=function(e){return function(t){return e.apply(null,t)}},Qn.isAxiosError=function(e){return Qt.isObject(e)&&!0===e.isAxiosError},Qn.mergeConfig=Vn,Qn.AxiosHeaders=Cn,Qn.formToJSON=e=>bn(Qt.isHTMLForm(e)?new FormData(e):e),Qn.HttpStatusCode=Zn,Qn.default=Qn;var Yn=Qn;const ea="https://guardian.sandbox.imtbl.com".replace(/\/+$/,"");class ta{basePath;axios;configuration;constructor(e,t=ea,n=Yn){this.basePath=t,this.axios=n,e&&(this.configuration=e,this.basePath=e.basePath||this.basePath)}}class na extends Error{field;name="RequiredError";constructor(e,t){super(t),this.field=e}}const aa="https://example.com",ra=function(e,t,n){if(null==n)throw new na(t,`Required parameter ${t} was null or undefined when calling ${e}.`)},ia=async function(e,t){if(t&&t.accessToken){const n="function"==typeof t.accessToken?await t.accessToken():await t.accessToken;e.Authorization="Bearer "+n}};function sa(e,t,n=""){"object"==typeof t?Array.isArray(t)?t.forEach((t=>sa(e,t,n))):Object.keys(t).forEach((a=>sa(e,t[a],`${n}${""!==n?".":""}${a}`))):e.has(n)?e.append(n,t):e.set(n,t)}const oa=function(e,...t){const n=new URLSearchParams(e.search);sa(n,t),e.search=n.toString()},ca=function(e,t,n){const a="string"!=typeof e;return(a&&n&&n.isJsonMime?n.isJsonMime(t.headers["Content-Type"]):a)?JSON.stringify(void 0!==e?e:{}):e||""},da=function(e){return e.pathname+e.search+e.hash},ua=function(e,t,n,a){return(r=t,i=n)=>{const s={...e.options,url:(a?.basePath||i)+e.url};return r.request(s)}},fa=function(e){const t=function(e){return{approvePendingMessage:async(t,n={})=>{ra("approvePendingMessage","messageID",t);const a="/guardian/v1/messages/{messageID}/approve".replace("{messageID}",encodeURIComponent(String(t))),r=new URL(a,aa);let i;e&&(i=e.baseOptions);const s={method:"POST",...i,...n},o={};await ia(o,e),oa(r,{});let c=i&&i.headers?i.headers:{};return s.headers={...o,...c,...n.headers},{url:da(r),options:s}},evaluateMessage:async(t,n={})=>{ra("evaluateMessage","messageEvaluationRequest",t);const a=new URL("/guardian/v1/messages/evaluate",aa);let r;e&&(r=e.baseOptions);const i={method:"POST",...r,...n},s={};await ia(s,e),s["Content-Type"]="application/json",oa(a,{});let o=r&&r.headers?r.headers:{};return i.headers={...s,...o,...n.headers},i.data=ca(t,i,e),{url:da(a),options:i}},getMessageByID:async(t,n={})=>{ra("getMessageByID","messageID",t);const a="/guardian/v1/messages/{messageID}".replace("{messageID}",encodeURIComponent(String(t))),r=new URL(a,aa);let i;e&&(i=e.baseOptions);const s={method:"GET",...i,...n},o={};await ia(o,e),oa(r,{});let c=i&&i.headers?i.headers:{};return s.headers={...o,...c,...n.headers},{url:da(r),options:s}}}}(e);return{async approvePendingMessage(n,a){const r=await t.approvePendingMessage(n,a);return ua(r,Yn,ea,e)},async evaluateMessage(n,a){const r=await t.evaluateMessage(n,a);return ua(r,Yn,ea,e)},async getMessageByID(n,a){const r=await t.getMessageByID(n,a);return ua(r,Yn,ea,e)}}};class la extends ta{approvePendingMessage(e,t){return fa(this.configuration).approvePendingMessage(e.messageID,t).then((e=>e(this.axios,this.basePath)))}evaluateMessage(e,t){return fa(this.configuration).evaluateMessage(e.messageEvaluationRequest,t).then((e=>e(this.axios,this.basePath)))}getMessageByID(e,t){return fa(this.configuration).getMessageByID(e.messageID,t).then((e=>e(this.axios,this.basePath)))}}const pa=function(e){const t=function(e){return{approvePendingTransaction:async(t,n,a={})=>{ra("approvePendingTransaction","payloadHash",t),ra("approvePendingTransaction","transactionApprovalRequest",n);const r="/guardian/v1/transactions/{payloadHash}/approve".replace("{payloadHash}",encodeURIComponent(String(t))),i=new URL(r,aa);let s;e&&(s=e.baseOptions);const o={method:"POST",...s,...a},c={};await ia(c,e),c["Content-Type"]="application/json",oa(i,{});let d=s&&s.headers?s.headers:{};return o.headers={...c,...d,...a.headers},o.data=ca(n,o,e),{url:da(i),options:o}},evaluateTransaction:async(t,n,a={})=>{ra("evaluateTransaction","id",t),ra("evaluateTransaction","transactionEvaluationRequest",n);const r="/guardian/v1/transactions/{id}/evaluate".replace("{id}",encodeURIComponent(String(t))),i=new URL(r,aa);let s;e&&(s=e.baseOptions);const o={method:"POST",...s,...a},c={};await ia(c,e),c["Content-Type"]="application/json",oa(i,{});let d=s&&s.headers?s.headers:{};return o.headers={...c,...d,...a.headers},o.data=ca(n,o,e),{url:da(i),options:o}},getTransactionByID:async(t,n,a,r={})=>{ra("getTransactionByID","transactionID",t),ra("getTransactionByID","chainType",n);const i="/guardian/v1/transactions/{transactionID}".replace("{transactionID}",encodeURIComponent(String(t))),s=new URL(i,aa);let o;e&&(o=e.baseOptions);const c={method:"GET",...o,...r},d={},u={};await ia(d,e),void 0!==n&&(u.chainType=n),void 0!==a&&(u.chainID=a),oa(s,u);let f=o&&o.headers?o.headers:{};return c.headers={...d,...f,...r.headers},{url:da(s),options:c}}}}(e);return{async approvePendingTransaction(n,a,r){const i=await t.approvePendingTransaction(n,a,r);return ua(i,Yn,ea,e)},async evaluateTransaction(n,a,r){const i=await t.evaluateTransaction(n,a,r);return ua(i,Yn,ea,e)},async getTransactionByID(n,a,r,i){const s=await t.getTransactionByID(n,a,r,i);return ua(s,Yn,ea,e)}}};class ha extends ta{approvePendingTransaction(e,t){return pa(this.configuration).approvePendingTransaction(e.payloadHash,e.transactionApprovalRequest,t).then((e=>e(this.axios,this.basePath)))}evaluateTransaction(e,t){return pa(this.configuration).evaluateTransaction(e.id,e.transactionEvaluationRequest,t).then((e=>e(this.axios,this.basePath)))}getTransactionByID(e,t){return pa(this.configuration).getTransactionByID(e.transactionID,e.chainType,e.chainID,t).then((e=>e(this.axios,this.basePath)))}}class ma{apiKey;username;password;accessToken;basePath;baseOptions;formDataCtor;constructor(e={}){this.apiKey=e.apiKey,this.username=e.username,this.password=e.password,this.accessToken=e.accessToken,this.basePath=e.basePath,this.baseOptions=e.baseOptions,this.formDataCtor=e.formDataCtor}isJsonMime(e){const t=new RegExp("^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$","i");return null!==e&&(t.test(e)||"application/json-patch+json"===e.toLowerCase())}}const ba="starkex",ya="evm";function ga(e){const t=-1!==new L(e,16).cmp(new L(27))?new L(e,16).sub(new L(27)).toNumber():new L(e,16).toNumber();return e.trim()?t:void 0}async function Ea(e,t){const n=function(e,t=64){const n=U.removeHexPrefix(e);return{r:new L(n.substring(0,t),"hex"),s:new L(n.substring(t,2*t),"hex"),recoveryParam:ga(n.substring(2*t,2*t+2))}}(await t.signMessage(e));return a=n,U.addHexPrefix(U.padLeft(a.r.toString(16),64)+U.padLeft(a.s.toString(16),64)+U.padLeft(a.recoveryParam?.toString(16)||"",2));var a}function wa(e){switch(e.type){case"ERC721":return{type:"ERC721",data:{token_id:e.tokenId,token_address:e.tokenAddress}};case"ERC20":return{type:"ERC20",data:{token_address:e.tokenAddress}};default:return{type:"ETH",data:{decimals:18}}}}var Ta;!function(e){e.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",e.INVALID_CONFIGURATION="INVALID_CONFIGURATION",e.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR",e.NOT_LOGGED_IN_ERROR="NOT_LOGGED_IN_ERROR",e.SILENT_LOGIN_ERROR="SILENT_LOGIN_ERROR",e.REFRESH_TOKEN_ERROR="REFRESH_TOKEN_ERROR",e.USER_REGISTRATION_ERROR="USER_REGISTRATION_ERROR",e.USER_NOT_REGISTERED_ERROR="USER_NOT_REGISTERED_ERROR",e.LOGOUT_ERROR="LOGOUT_ERROR",e.TRANSFER_ERROR="TRANSFER_ERROR",e.CREATE_ORDER_ERROR="CREATE_ORDER_ERROR",e.CANCEL_ORDER_ERROR="CANCEL_ORDER_ERROR",e.EXCHANGE_TRANSFER_ERROR="EXCHANGE_TRANSFER_ERROR",e.CREATE_TRADE_ERROR="CREATE_TRADE_ERROR",e.OPERATION_NOT_SUPPORTED_ERROR="OPERATION_NOT_SUPPORTED_ERROR"}(Ta||(Ta={}));class Ra extends Error{type;constructor(e,t){super(e),this.type=t}}const _a=async(e,n)=>{try{return await e()}catch(e){let a;throw a=t(e)&&e.response?.data&&function(e){return"code"in e&&"message"in e}(e.response.data)?e.response.data.message:e.message,new Ra(a,n)}};var va,Aa;!function(e){e[e.IMTBL_ZKEVM_MAINNET=13371]="IMTBL_ZKEVM_MAINNET",e[e.IMTBL_ZKEVM_TESTNET=13473]="IMTBL_ZKEVM_TESTNET",e[e.IMTBL_ZKEVM_DEVNET=13433]="IMTBL_ZKEVM_DEVNET",e[e.ETHEREUM=1]="ETHEREUM",e[e.SEPOLIA=11155111]="SEPOLIA"}(va||(va={})),function(e){e.ETHEREUM="Ethereum",e.SEPOLIA="Sepolia",e.IMTBL_ZKEVM_TESTNET="Immutable zkEVM Test",e.IMTBL_ZKEVM_DEVNET="Immutable zkEVM Dev",e.IMTBL_ZKEVM_MAINNET="Immutable zkEVM"}(Aa||(Aa={}));const Ca="passport_credentials",Ia="pkce_state",Oa="pkce_verifier";class Sa{saveCredentials(e){if(!this.areValid(e))throw Error("Invalid credentials.");localStorage.setItem(Ca,JSON.stringify(e))}getCredentials(){const e=localStorage.getItem(Ca);return e?JSON.parse(e):null}areValid(e){if(e){const t=this.isTokenValid(e.access_token),n=this.isTokenValid(e.id_token);return t&&n}return!1}isTokenValid(e){try{const t=_(e).exp??0;return t>Date.now()/1e3+3600}catch(e){return!1}}clearCredentials(){localStorage.removeItem(Ca)}savePKCEData(e){localStorage.setItem(Ia,e.state),localStorage.setItem(Oa,e.verifier)}getPKCEData(){const e=localStorage.getItem(Ia),t=localStorage.getItem(Oa);return e&&t?{state:e,verifier:t}:null}}function Na(e){const{id_token:t,expired:n}=e;return!!n||function(e){if(!e)return!1;const t=_(e),n=Math.floor(Date.now()/1e3);return t.exp<n}(t)}const ka={headers:{"Content-Type":"application/x-www-form-urlencoded"}};function Ma(e){return new Promise((t=>{setTimeout(t,e)}))}class Pa{userManager;config;deviceCredentialsManager;logoutMode;refreshingPromise=null;constructor(e){this.config=e,this.userManager=new w((({oidcConfiguration:e,authenticationDomain:t})=>{const n="undefined"!=typeof window?window.localStorage:new T,a=new R({store:n}),r={authority:t,redirect_uri:e.redirectUri,popup_redirect_uri:e.redirectUri,client_id:e.clientId,metadata:{authorization_endpoint:`${t}/authorize`,token_endpoint:`${t}/oauth/token`,userinfo_endpoint:`${t}/userinfo`,end_session_endpoint:`${t}/v2/logout?returnTo=${encodeURIComponent(e.logoutRedirectUri)}&client_id=${e.clientId}`},mergeClaims:!0,loadUserInfo:!0,scope:e.scope,userStore:a};return e.audience&&(r.extraQueryParams={audience:e.audience}),r})(e)),this.deviceCredentialsManager=new Sa,this.logoutMode=e.oidcConfiguration.logoutMode||"redirect"}static mapOidcUserToDomainModel=e=>{const t=e.profile?.passport,n={expired:e.expired,idToken:e.id_token,accessToken:e.access_token,refreshToken:e.refresh_token,profile:{sub:e.profile.sub,email:e.profile.email,nickname:e.profile.nickname}};return t?.imx_eth_address&&(n.imx={ethAddress:t.imx_eth_address,starkAddress:t.imx_stark_address,userAdminAddress:t.imx_user_admin_address}),t?.zkevm_eth_address&&(n.zkEvm={ethAddress:t?.zkevm_eth_address,userAdminAddress:t?.zkevm_user_admin_address}),n};static mapDeviceTokenResponseToDomainUserModel=e=>{const t=_(e.id_token),n={idToken:e.id_token,accessToken:e.access_token,refreshToken:e.refresh_token,profile:{sub:t.sub,email:t.email,nickname:t.nickname}};return t?.passport?.imx_eth_address&&(n.imx={ethAddress:t.passport.imx_eth_address,starkAddress:t.passport.imx_stark_address,userAdminAddress:t.passport.imx_user_admin_address}),t?.passport?.zkevm_eth_address&&(n.zkEvm={ethAddress:t?.passport?.zkevm_eth_address,userAdminAddress:t?.passport?.zkevm_user_admin_address}),n};async login(){return _a((async()=>{const e=await this.userManager.signinPopup({popupWindowFeatures:{width:410,height:450}});return Pa.mapOidcUserToDomainModel(e)}),Ta.AUTHENTICATION_ERROR)}async loginCallback(){return _a((async()=>this.userManager.signinPopupCallback()),Ta.AUTHENTICATION_ERROR)}async loginWithDeviceFlow(){return _a((async()=>{const t=await e.post(`${this.config.authenticationDomain}/oauth/device/code`,{client_id:this.config.oidcConfiguration.clientId,scope:this.config.oidcConfiguration.scope,audience:this.config.oidcConfiguration.audience},ka);return{code:t.data.user_code,deviceCode:t.data.device_code,url:t.data.verification_uri_complete,interval:t.data.interval}}),Ta.AUTHENTICATION_ERROR)}async connectImxDeviceFlow(t,n,a){return _a((async()=>{const r=Date.now();for(;;){if(null!=a&&Date.now()-r>a)throw new Error("Timed out");await Ma(1e3*n);try{const e=await this.getDeviceFlowToken(t),n=Pa.mapDeviceTokenResponseToDomainUserModel(e);return this.deviceCredentialsManager.saveCredentials(e),n}catch(t){if(!e.isAxiosError(t))throw t;{const e=t.response?.data;switch(e.error){case"authorization_pending":case"slow_down":break;case"expired_token":throw new Error("Token expired, please log in again");case"access_denied":throw new Error("User denied access");default:throw new Error("Error getting token")}}}}throw new Error("Failed to get credentials")}),Ta.AUTHENTICATION_ERROR)}async getDeviceFlowToken(t){return(await e.post(`${this.config.authenticationDomain}/oauth/token`,{client_id:this.config.oidcConfiguration.clientId,grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:t},ka)).data}static base64URLEncode(e){return e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}static sha256(e){return v.createHash("sha256").update(e).digest()}getPKCEAuthorizationUrl(){const e=Pa.base64URLEncode(v.randomBytes(32)),t=Pa.base64URLEncode(Pa.sha256(e)),n=Pa.base64URLEncode(v.randomBytes(32));return this.deviceCredentialsManager.savePKCEData({state:n,verifier:e}),`${this.config.authenticationDomain}/authorize?response_type=code&code_challenge=${t}&code_challenge_method=S256&client_id=${this.config.oidcConfiguration.clientId}&redirect_uri=${this.config.oidcConfiguration.redirectUri}&scope=${this.config.oidcConfiguration.scope}&state=${n}&audience=${this.config.oidcConfiguration.audience}`}async connectImxPKCEFlow(e,t){return _a((async()=>{const n=this.deviceCredentialsManager.getPKCEData();if(!n)throw new Error("No code verifier or state for PKCE");if(t!==n.state)throw new Error("Provided state does not match stored state");const a=await this.getPKCEToken(e,n.verifier),r=Pa.mapDeviceTokenResponseToDomainUserModel(a);return this.deviceCredentialsManager.saveCredentials(a),r}),Ta.AUTHENTICATION_ERROR)}async getPKCEToken(t,n){return(await e.post(`${this.config.authenticationDomain}/oauth/token`,{client_id:this.config.oidcConfiguration.clientId,grant_type:"authorization_code",code_verifier:n,code:t,redirect_uri:this.config.oidcConfiguration.redirectUri},ka)).data}async connectImxWithCredentials(e){return _a((async()=>{if(this.deviceCredentialsManager.areValid(e))return Pa.mapDeviceTokenResponseToDomainUserModel(e);const t=e?.refresh_token??null;if(t){return await this.refreshToken(t)}return null}),Ta.AUTHENTICATION_ERROR)}async refreshToken(t){const n=(await e.post(`${this.config.authenticationDomain}/oauth/token`,{client_id:this.config.oidcConfiguration.clientId,grant_type:"refresh_token",refresh_token:t},ka)).data;return Pa.mapDeviceTokenResponseToDomainUserModel(n)}async logout(){return _a((async()=>"silent"===this.logoutMode?this.userManager.signoutSilent():this.userManager.signoutRedirect()),Ta.LOGOUT_ERROR)}async logoutSilentCallback(e){return this.userManager.signoutSilentCallback(e)}async logoutDeviceFlow(){return _a((async()=>{this.deviceCredentialsManager.clearCredentials()}),Ta.LOGOUT_ERROR)}async getAuthenticatedUser(){const e=await this.userManager.getUser();return e?Na(e)?e.refresh_token?this.refreshTokenAndUpdatePromise():null:Pa.mapOidcUserToDomainModel(e):null}async forceUserRefresh(){return this.refreshTokenAndUpdatePromise()}async refreshTokenAndUpdatePromise(){return this.refreshingPromise||(this.refreshingPromise=new Promise((async(e,t)=>{try{const t=await this.userManager.signinSilent();if(t)return void e(Pa.mapOidcUserToDomainModel(t));e(null)}catch(e){t(e)}finally{this.refreshingPromise=null}}))),this.refreshingPromise}async getUser(){return _a((async()=>{const e=await this.getAuthenticatedUser();if(e)return e;const t=this.deviceCredentialsManager.getCredentials();return t?Pa.mapDeviceTokenResponseToDomainUserModel(t):null}),Ta.NOT_LOGGED_IN_ERROR)}async getUserDeviceFlow(){return _a((async()=>{const e=this.deviceCredentialsManager.getCredentials();return e?Pa.mapDeviceTokenResponseToDomainUserModel(e):null}),Ta.NOT_LOGGED_IN_ERROR)}checkStoredDeviceFlowCredentials(){return this.deviceCredentialsManager.getCredentials()}}class Da{config;lazyMagicClient;constructor(e){this.config=e,"undefined"!=typeof window&&(this.lazyMagicClient=((e,t)=>e().then(t))((()=>new Promise((e=>{if("complete"===window.document.readyState)e();else{const t=()=>{"complete"===window.document.readyState&&(e(),window.document.removeEventListener("readystatechange",t))};window.document.addEventListener("readystatechange",t)}}))),(()=>{const e=new A(this.config.magicPublishableApiKey,{extensions:[new C],network:this.config.network});return e.preload(),e})))}get magicClient(){if(!this.lazyMagicClient)throw new Error("Cannot perform this action outside of the browser");return this.lazyMagicClient}async login(e){return _a((async()=>{const t=await this.magicClient;return await t.openid.loginWithOIDC({jwt:e,providerId:this.config.magicProviderId}),t.rpcProvider}),Ta.WALLET_CONNECTION_ERROR)}async logout(){const e=await this.magicClient;e.user&&await e.user.logout()}}const xa=1e3,La=3,Ua=async(e,t)=>{const{retries:n=La,interval:a=xa,finalErr:r=Error("Retry failed"),finallyFn:i=(()=>{})}=t||{};try{return await e()}catch(t){return n<=0?Promise.reject(r):(await(s=a,new Promise((e=>{setTimeout((()=>e()),s)}))),Ua(e,{retries:n-1,finalErr:r,finallyFn:i}))}finally{n<=0&&i()}var s};var Fa,Ba;!function(e){e[e.USER_REJECTED_REQUEST=4001]="USER_REJECTED_REQUEST",e[e.UNAUTHORIZED=4100]="UNAUTHORIZED",e[e.UNSUPPORTED_METHOD=4200]="UNSUPPORTED_METHOD",e[e.DISCONNECTED=4900]="DISCONNECTED"}(Fa||(Fa={})),function(e){e[e.RPC_SERVER_ERROR=-32e3]="RPC_SERVER_ERROR",e[e.INVALID_REQUEST=-32600]="INVALID_REQUEST",e[e.METHOD_NOT_FOUND=-32601]="METHOD_NOT_FOUND",e[e.INVALID_PARAMS=-32602]="INVALID_PARAMS",e[e.INTERNAL_ERROR=-32603]="INTERNAL_ERROR",e[e.PARSE_ERROR=-32700]="PARSE_ERROR",e[e.TRANSACTION_REJECTED=-32003]="TRANSACTION_REJECTED"}(Ba||(Ba={}));class Va extends Error{message;code;constructor(e,t){super(t),this.message=t,this.code=e}}const Ga="Transaction requires confirmation but this functionality is not supported in this environment. Please contact Immutable support if you need to enable this feature.",qa=e=>S.from(e).toString();class ja{transactionAPI;messageAPI;confirmationScreen;crossSdkBridgeEnabled;constructor({confirmationScreen:e,config:t}){const n=new ma({basePath:t.imxPublicApiDomain});this.confirmationScreen=e,this.crossSdkBridgeEnabled=t.crossSdkBridgeEnabled,this.messageAPI=new la(n),this.transactionAPI=new ha(n)}withConfirmationScreen(e){return t=>this.withConfirmationScreenTask(e)(t)()}withConfirmationScreenTask(e){return t=>async()=>{this.confirmationScreen.loading(e);try{return await t()}catch(e){throw this.confirmationScreen.closeWindow(),e}}}withDefaultConfirmationScreenTask(e){return this.withConfirmationScreenTask()(e)}async evaluateImxTransaction({payloadHash:e,user:t}){const n={Authorization:`Bearer ${t.accessToken}`};if(!(await Ua((async()=>this.transactionAPI.getTransactionByID({transactionID:e,chainType:"starkex"},{headers:n})),{finallyFn:()=>{this.confirmationScreen.closeWindow()}})).data.id)throw new Error("Transaction doesn't exists");const a=await this.transactionAPI.evaluateTransaction({id:e,transactionEvaluationRequest:{chainType:"starkex"}},{headers:n}),{confirmationRequired:r}=a.data;if(r){if(this.crossSdkBridgeEnabled)throw new Error(Ga);if(!(await this.confirmationScreen.requestConfirmation(e,t.imx.ethAddress,ba)).confirmed)throw new Error("Transaction rejected by user")}else this.confirmationScreen.closeWindow()}async evaluateEVMTransaction({chainId:e,nonce:t,user:n,metaTransactions:a}){const r={Authorization:`Bearer ${n.accessToken}`},i=(e=>{try{return e.map((e=>({delegateCall:!0===e.delegateCall,revertOnError:!0===e.revertOnError,gasLimit:e.gasLimit?qa(e.gasLimit):"0",target:e.to??N.constants.AddressZero,value:e.value?qa(e.value):"0",data:e.data?e.data.toString():"0x"})))}catch(e){const t=e instanceof Error?e.message:String(e);throw new Va(Ba.INVALID_PARAMS,`Transaction failed to parsing: ${t}`)}})(a);try{return(await this.transactionAPI.evaluateTransaction({id:"evm",transactionEvaluationRequest:{chainType:"evm",chainId:e,transactionData:{nonce:t,userAddress:n.zkEvm.ethAddress,metaTransactions:i}}},{headers:r})).data}catch(e){const t=e instanceof Error?e.message:String(e);throw new Va(Ba.INTERNAL_ERROR,`Transaction failed to validate with error: ${t}`)}}async validateEVMTransaction({chainId:e,nonce:t,user:n,metaTransactions:a}){const r=await this.evaluateEVMTransaction({chainId:e,nonce:t,user:n,metaTransactions:a}),{confirmationRequired:i,transactionId:s}=r;if(i&&this.crossSdkBridgeEnabled)throw new Va(Ba.TRANSACTION_REJECTED,Ga);if(i&&s){if(!(await this.confirmationScreen.requestConfirmation(s,n.zkEvm.ethAddress,ya,e)).confirmed)throw new Va(Ba.TRANSACTION_REJECTED,"Transaction rejected by user")}else this.confirmationScreen.closeWindow()}async evaluateMessage({chainID:e,payload:t,user:n}){try{return(await this.messageAPI.evaluateMessage({messageEvaluationRequest:{chainID:e,payload:t}},{headers:{Authorization:`Bearer ${n.accessToken}`}})).data}catch(e){const t=e instanceof Error?e.message:String(e);throw new Va(Ba.INTERNAL_ERROR,`Message failed to validate with error: ${t}`)}}async validateMessage({chainID:e,payload:t,user:n}){const{messageId:a,confirmationRequired:r}=await this.evaluateMessage({chainID:e,payload:t,user:n});if(r&&this.crossSdkBridgeEnabled)throw new Va(Ba.TRANSACTION_REJECTED,Ga);if(r&&a){if(!(await this.confirmationScreen.requestMessageConfirmation(a,n.zkEvm.ethAddress)).confirmed)throw new Va(Ba.TRANSACTION_REJECTED,"Signature rejected by user")}else this.confirmationScreen.closeWindow()}}var za,Ha;!function(e){e.LOGGED_OUT="loggedOut"}(za||(za={})),function(e){e.PRODUCTION="mainnet",e.SANDBOX="sepolia"}(Ha||(Ha={}));const Wa="ERC721";const $a="ERC721";async function Xa(e){await Ua((async()=>{const t=await e.forceUserRefresh();return t?.imx?t:Promise.reject(new Error("user wallet addresses not exist"))}))}async function Ka(t,n,a,r,i){return _a((async()=>{try{const e=await async function({ethSigner:e,starkSigner:t,usersApi:n},a){const[r,i]=await Promise.all([e.getAddress(),t.getAddress()]),s=await n.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:r,stark_key:i}}),{signable_message:o,payload_hash:c}=s.data,[d,u]=await Promise.all([Ea(o,e),t.signMessage(c)]);return(await n.registerPassportUser({authorization:`Bearer ${a}`,registerPassportUserRequest:{eth_signature:d,ether_key:r,stark_signature:u,stark_key:i}})).data}({ethSigner:t,starkSigner:n,usersApi:i},a.accessToken);return await Xa(r),e}catch(t){if(e.isAxiosError(t)&&409===t.status)return await Xa(r),{tx_hash:""};throw t}}),Ta.USER_REGISTRATION_ERROR)}class Ja{authManager;immutableXClient;guardianClient;magicAdapter;signers;signerInitialisationError;constructor({authManager:e,immutableXClient:t,confirmationScreen:n,config:a,passportEventEmitter:r,magicAdapter:i}){this.authManager=e,this.immutableXClient=t,this.guardianClient=new ja({confirmationScreen:n,config:a}),this.magicAdapter=i,this.initialiseSigners(),r.on(za.LOGGED_OUT,this.handleLogout)}handleLogout=()=>{this.signers=void 0};async initialiseSigners(){const e=async()=>{const e=await this.authManager.getUser(),t=await this.magicAdapter.login(e.idToken),n=new O(t).getSigner();return{ethSigner:n,starkSigner:await(async e=>_a((async()=>{const t=await c(e);return o(t)}),Ta.WALLET_CONNECTION_ERROR))(n)}};this.signers=new Promise((async t=>{try{t(await e())}catch(e){this.signerInitialisationError=e,t(void 0)}}))}async getAuthenticatedUserAndSigners(){const e=await this.authManager.getUser();if(!e||!this.signers)throw new Ra("User has been logged out",Ta.NOT_LOGGED_IN_ERROR);const t=await this.signers;if(void 0===t){if(void 0!==this.signerInitialisationError)throw this.signerInitialisationError;throw new Error("Signers failed to initialise")}return{user:e,...t}}async getRegisteredImxUserAndSigners(){const{user:e,starkSigner:t,ethSigner:n}=await this.getAuthenticatedUserAndSigners();if(a=e,void 0===a?.imx)throw new Ra("User has not been registered with StarkEx",Ta.USER_NOT_REGISTERED_ERROR);var a;return{user:e,starkSigner:t,ethSigner:n}}async transfer(e){const{user:t,starkSigner:n}=await this.getRegisteredImxUserAndSigners();return async function({request:e,transfersApi:t,starkSigner:n,user:a,guardianClient:r}){return _a(r.withDefaultConfirmationScreenTask((async()=>{const i=e.type===$a?"1":e.amount,s={sender:a.imx.ethAddress,token:wa(e),amount:i,receiver:e.receiver},o={Authorization:`Bearer ${a.accessToken}`},c=await t.getSignableTransferV1({getSignableTransferRequest:s},{headers:o});await r.evaluateImxTransaction({user:a,payloadHash:c.data.payload_hash});const d=c.data,{payload_hash:u}=d,f=await n.signMessage(u),l=await n.getAddress(),p={createTransferRequest:{sender_stark_key:d.sender_stark_key||l,sender_vault_id:d.sender_vault_id,receiver_stark_key:d.receiver_stark_key,receiver_vault_id:d.receiver_vault_id,asset_id:d.asset_id,amount:d.amount,nonce:d.nonce,expiration_timestamp:d.expiration_timestamp,stark_signature:f}},{data:h}=await t.createTransferV1(p,{headers:o});return{sent_signature:h.sent_signature,status:h.status?.toString(),time:h.time,transfer_id:h.transfer_id}})),Ta.TRANSFER_ERROR)}({request:e,user:t,starkSigner:n,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.guardianClient})}async registerOffchain(){const{user:e,ethSigner:t,starkSigner:n}=await this.getAuthenticatedUserAndSigners();return await Ka(t,n,e,this.authManager,this.immutableXClient.usersApi)}async isRegisteredOffchain(){const{user:e}=await this.getAuthenticatedUserAndSigners();return!!e.imx}isRegisteredOnchain(){throw new Ra("Operation not supported",Ta.OPERATION_NOT_SUPPORTED_ERROR)}async createOrder(e){const{user:t,starkSigner:n}=await this.getRegisteredImxUserAndSigners();return async function({starkSigner:e,user:t,request:n,ordersApi:a,guardianClient:r}){return _a(r.withDefaultConfirmationScreenTask((async()=>{const{ethAddress:i}=t.imx,s=n.sell.type===Wa?"1":n.sell.amount,o=n.buy.type===Wa?"1":n.buy.amount,c={Authorization:`Bearer ${t.accessToken}`},d={user:i,amount_buy:o,token_buy:wa(n.buy),amount_sell:s,token_sell:wa(n.sell),fees:n.fees,split_fees:!0,expiration_timestamp:n.expiration_timestamp},u=await a.getSignableOrder({getSignableOrderRequestV3:d},{headers:c});await r.evaluateImxTransaction({user:t,payloadHash:u.data.payload_hash});const{payload_hash:f}=u.data,l=await e.signMessage(f),p=u.data,h={createOrderRequest:{include_fees:!0,fees:n.fees,stark_signature:l,amount_buy:p.amount_buy,amount_sell:p.amount_sell,asset_id_buy:p.asset_id_buy,asset_id_sell:p.asset_id_sell,expiration_timestamp:p.expiration_timestamp,nonce:p.nonce,stark_key:p.stark_key,vault_id_buy:p.vault_id_buy,vault_id_sell:p.vault_id_sell}};return{...(await a.createOrderV3(h,{headers:c})).data}})),Ta.CREATE_ORDER_ERROR)}({request:e,user:t,starkSigner:n,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.guardianClient})}async cancelOrder(e){const{user:t,starkSigner:n}=await this.getRegisteredImxUserAndSigners();return async function({user:e,starkSigner:t,request:n,ordersApi:a,guardianClient:r}){return _a(r.withDefaultConfirmationScreenTask((async()=>{const i={order_id:n.order_id},s={Authorization:`Bearer ${e.accessToken}`},o=await a.getSignableCancelOrderV3({getSignableCancelOrderRequest:i},{headers:s});await r.evaluateImxTransaction({user:e,payloadHash:o.data.payload_hash});const{payload_hash:c}=o.data,d=await t.signMessage(c),u=await a.cancelOrderV3({id:n.order_id.toString(),cancelOrderRequest:{order_id:n.order_id,stark_signature:d}},{headers:s});return{order_id:u.data.order_id,status:u.data.status}})),Ta.CANCEL_ORDER_ERROR)}({request:e,user:t,starkSigner:n,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.guardianClient})}async createTrade(e){const{user:t,starkSigner:n}=await this.getRegisteredImxUserAndSigners();return async function({request:e,tradesApi:t,user:n,starkSigner:a,guardianClient:r}){return _a(r.withDefaultConfirmationScreenTask((async()=>{const{ethAddress:i}=n.imx,s={expiration_timestamp:e.expiration_timestamp,fees:e.fees,order_id:e.order_id,user:i},o={Authorization:`Bearer ${n.accessToken}`},c=await t.getSignableTrade({getSignableTradeRequest:s},{headers:o});await r.evaluateImxTransaction({user:n,payloadHash:c.data.payload_hash});const{payload_hash:d}=c.data,u=await a.signMessage(d),{data:f}=c,l={createTradeRequest:{include_fees:!0,fees:e?.fees,stark_signature:u,order_id:e?.order_id,fee_info:f.fee_info,amount_buy:f.amount_buy,amount_sell:f.amount_sell,asset_id_buy:f.asset_id_buy,asset_id_sell:f.asset_id_sell,expiration_timestamp:f.expiration_timestamp,nonce:f.nonce,stark_key:f.stark_key,vault_id_buy:f.vault_id_buy,vault_id_sell:f.vault_id_sell}},{data:p}=await t.createTradeV3(l,{headers:o});return p})),Ta.CREATE_TRADE_ERROR)}({request:e,user:t,starkSigner:n,tradesApi:this.immutableXClient.tradesApi,guardianClient:this.guardianClient})}async batchNftTransfer(e){const{user:t,starkSigner:n}=await this.getRegisteredImxUserAndSigners();return async function({user:e,starkSigner:t,request:n,transfersApi:a,guardianClient:r}){return _a(r.withConfirmationScreenTask({width:480,height:784})((async()=>{const{ethAddress:i}=e.imx,s=n.map((e=>({amount:"1",token:wa({type:$a,tokenId:e.tokenId,tokenAddress:e.tokenAddress}),receiver:e.receiver}))),o={Authorization:`Bearer ${e.accessToken}`},c=await a.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:i,signable_requests:s}},{headers:o});await r.evaluateImxTransaction({user:e,payloadHash:c.data.signable_responses[0]?.payload_hash});const d=await Promise.all(c.data.signable_responses.map((async e=>{const n=await t.signMessage(e.payload_hash);return{sender_vault_id:e.sender_vault_id,receiver_stark_key:e.receiver_stark_key,receiver_vault_id:e.receiver_vault_id,asset_id:e.asset_id,amount:e.amount,nonce:e.nonce,expiration_timestamp:e.expiration_timestamp,stark_signature:n}}))),u={sender_stark_key:c.data.sender_stark_key,requests:d},f=await a.createTransfer({createTransferRequestV2:u},{headers:o});return{transfer_ids:f?.data.transfer_ids}})),Ta.TRANSFER_ERROR)}({request:e,user:t,starkSigner:n,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.guardianClient})}async exchangeTransfer(e){const{user:t,starkSigner:n}=await this.getRegisteredImxUserAndSigners();return async function({user:e,starkSigner:t,request:n,exchangesApi:a}){return _a((async()=>{const{ethAddress:r}=e.imx,i=n.amount,s=await a.getExchangeSignableTransfer({id:n.transactionID,getSignableTransferRequest:{sender:r,token:wa(n),amount:i,receiver:n.receiver}}),o=await t.getAddress(),{payload_hash:c}=s.data,d=await t.signMessage(c),u={sender_stark_key:s.data.sender_stark_key||o,sender_vault_id:s.data.sender_vault_id,receiver_stark_key:s.data.receiver_stark_key,receiver_vault_id:s.data.receiver_vault_id,asset_id:s.data.asset_id,amount:s.data.amount,nonce:s.data.nonce,expiration_timestamp:s.data.expiration_timestamp,stark_signature:d},f={Authorization:`Bearer ${e.accessToken}`},l=await a.createExchangeTransfer({id:n.transactionID,createTransferRequest:u},{headers:f});return{sent_signature:l?.data.sent_signature,status:l?.data.status?.toString(),time:l?.data.time,transfer_id:l?.data.transfer_id}}),Ta.EXCHANGE_TRANSFER_ERROR)}({request:e,user:t,starkSigner:n,exchangesApi:this.immutableXClient.exchangeApi})}deposit(e){throw new Ra("Operation not supported",Ta.OPERATION_NOT_SUPPORTED_ERROR)}prepareWithdrawal(e){throw new Ra("Operation not supported",Ta.OPERATION_NOT_SUPPORTED_ERROR)}completeWithdrawal(e,t){throw new Ra("Operation not supported",Ta.OPERATION_NOT_SUPPORTED_ERROR)}async getAddress(){const{user:e}=await this.getRegisteredImxUserAndSigners();return Promise.resolve(e.imx.ethAddress)}}class Za{authManager;config;confirmationScreen;immutableXClient;magicAdapter;passportEventEmitter;constructor({authManager:e,config:t,confirmationScreen:n,immutableXClient:a,magicAdapter:r,passportEventEmitter:i}){this.authManager=e,this.config=t,this.confirmationScreen=n,this.immutableXClient=a,this.magicAdapter=r,this.passportEventEmitter=i}async getProvider(){let e=null;try{e=await this.authManager.getUser()}catch(e){console.warn(e)}return e||(e=await this.authManager.login()),this.createProviderInstance(e)}async getProviderSilent(){const e=await this.authManager.getUser();return e?this.createProviderInstance(e):null}async getProviderWithDeviceFlow(e,t,n){const a=await this.authManager.connectImxDeviceFlow(e,t,n);return this.createProviderInstance(a)}async getProviderWithPKCEFlow(e,t){const n=await this.authManager.connectImxPKCEFlow(e,t);return this.createProviderInstance(n)}async getProviderWithCredentials(e){const t=await this.authManager.connectImxWithCredentials(e);return t?this.createProviderInstance(t):null}async createProviderInstance(e){if(!e.idToken)throw new Ra("Failed to initialise",Ta.WALLET_CONNECTION_ERROR);return new Ja({config:this.config,authManager:this.authManager,immutableXClient:this.immutableXClient,confirmationScreen:this.confirmationScreen,passportEventEmitter:this.passportEventEmitter,magicAdapter:this.magicAdapter})}}const Qa=(e,t,n)=>{const a=t.map((t=>!e[t]&&t)).filter((e=>e)).join(", ");if(""!==a){throw new Ra(n?`${n} - ${a} cannot be null`:`${a} cannot be null`,Ta.INVALID_CONFIGURATION)}};class Ya{network;authenticationDomain;passportDomain;imxPublicApiDomain;magicPublishableApiKey;magicProviderId;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;constructor({baseConfig:e,overrides:t,crossSdkBridgeEnabled:n,...a}){if(Qa(a,["clientId","logoutRedirectUri","redirectUri"]),this.oidcConfiguration=a,this.baseConfig=e,this.crossSdkBridgeEnabled=n||!1,t)Qa(t,["network","authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","imxPublicApiDomain","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.network=t.network,this.authenticationDomain=t.authenticationDomain,this.passportDomain=t.passportDomain,this.imxPublicApiDomain=t.imxPublicApiDomain,this.magicPublishableApiKey=t.magicPublishableApiKey,this.magicProviderId=t.magicProviderId,this.zkEvmRpcUrl=t.zkEvmRpcUrl,this.relayerUrl=t.relayerUrl,this.multiRollupConfig={indexer:at({basePath:t.indexerMrBasePath}),orderBook:at({basePath:t.orderBookMrBasePath}),passport:at({basePath:t.passportMrBasePath})};else switch(e.environment){case se.PRODUCTION:this.network=Ha.PRODUCTION,this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="fSMzaRQ4O7p4fttl7pCyGVtJS_G70P8SNsLXtPPGHo0=",this.passportDomain="https://passport.immutable.com",this.imxPublicApiDomain="https://api.immutable.com",this.zkEvmRpcUrl="",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=rt();break;case se.SANDBOX:default:this.network=Ha.SANDBOX,this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="fSMzaRQ4O7p4fttl7pCyGVtJS_G70P8SNsLXtPPGHo0=",this.passportDomain="https://passport.sandbox.immutable.com",this.imxPublicApiDomain="https://api.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=it()}}}var er;!function(e){e.CONFIRMATION_WINDOW_READY="confirmation_window_ready",e.TRANSACTION_CONFIRMED="transaction_confirmed",e.TRANSACTION_ERROR="transaction_error",e.MESSAGE_CONFIRMED="message_confirmed",e.MESSAGE_REJECTED="message_rejected",e.LOGOUT_SUCCESS="logout_success"}(er||(er={}));const tr="imx_passport_confirmation";class nr{config;confirmationWindow;constructor(e){this.config=e}getHref(e,t){let n=`${this.config.passportDomain}/transaction-confirmation/${e}`;if(t){n=`${n}?${t?Object.keys(t).map((e=>`${e}=${t[e]}`)).join("&"):""}`}return n}requestConfirmation(e,t,n,a){return new Promise(((r,i)=>{const s=({data:e,origin:t})=>{if(t===this.config.passportDomain&&e.eventType===tr)switch(e.messageType){case er.CONFIRMATION_WINDOW_READY:break;case er.TRANSACTION_CONFIRMED:r({confirmed:!0});break;case er.TRANSACTION_ERROR:i(new Error("Transaction error"));break;default:i(new Error("Unsupported message type"))}};if(!this.confirmationWindow)return void r({confirmed:!1});window.addEventListener("message",s);let o="";o=n===ba?this.getHref("transaction",{transactionId:e,etherAddress:t,chainType:n}):this.getHref("zkevm",{transactionId:e,etherAddress:t,chainType:n,chainId:a}),this.showConfirmationScreen(o,s,r)}))}requestMessageConfirmation(e,t){return new Promise(((n,a)=>{const r=({data:e,origin:t})=>{if(t===this.config.passportDomain&&e.eventType===tr)switch(e.messageType){case er.CONFIRMATION_WINDOW_READY:break;case er.MESSAGE_CONFIRMED:n({confirmed:!0});break;case er.MESSAGE_REJECTED:a(new Error("Message rejected"));break;default:a(new Error("Unsupported message type"))}};if(!this.confirmationWindow)return void n({confirmed:!1});window.addEventListener("message",r);const i=this.getHref("zkevm/message",{messageID:e,etherAddress:t});this.showConfirmationScreen(i,r,n)}))}loading(e){this.config.crossSdkBridgeEnabled||(this.confirmationWindow=(({url:e,title:t,width:n,height:a})=>{const r=Math.max(0,Math.round(window.screenX+(window.outerWidth-n)/2)),i=Math.max(0,Math.round(window.screenY+(window.outerHeight-a)/2)),s=window.open(e,t,`\n scrollbars=yes,\n width=${n}, \n height=${a}, \n top=${i}, \n left=${r}\n `);if(!s)throw new Error("Failed to open confirmation screen");return s.focus(),s})({url:this.getHref("loading"),title:"Confirm this transaction",width:e?.width||480,height:e?.height||380}))}closeWindow(){this.confirmationWindow?.close()}logout(){return new Promise(((e,t)=>{const n=document.createElement("iframe");n.setAttribute("id","passport-confirm"),n.setAttribute("src",this.getHref("logout")),n.setAttribute("style","display: none; position: absolute;width:0px;height:0px;border:0;");const a=({data:r,origin:i})=>{i===this.config.passportDomain&&r.eventType===tr&&(window.removeEventListener("message",a),n.remove(),r.messageType===er.LOGOUT_SUCCESS&&e({logout:!0}),t(new Error("Unsupported logout type")))};window.addEventListener("message",a),document.body.appendChild(n)}))}showConfirmationScreen(e,t,n){this.confirmationWindow.location.href=e;const a=setInterval((()=>{this.confirmationWindow?.closed&&(clearInterval(a),window.removeEventListener("message",t),n({confirmed:!1}))}),1e3)}}var ar,rr;!function(e){e.PENDING="PENDING",e.SUBMITTED="SUBMITTED",e.SUCCESSFUL="SUCCESSFUL",e.REVERTED="REVERTED",e.FAILED="FAILED"}(ar||(ar={})),function(e){e.ACCOUNTS_CHANGED="accountsChanged"}(rr||(rr={}));class ir{emitter=new F;emit(e,...t){this.emitter.emit(e,...t)}on(e,t){this.emitter.on(e,t)}removeListener(e,t){this.emitter.removeListener(e,t)}}const sr=(e,t,n)=>N.utils.solidityPack(["string","uint256","address","bytes32"],["",e,t,n]),or=async(e,t,n,a,r)=>{const i=e.map((e=>({delegateCall:!0===e.delegateCall,revertOnError:!0===e.revertOnError,gasLimit:e.gasLimit??N.constants.Zero,target:e.to??N.constants.AddressZero,value:e.value??N.constants.Zero,data:e.data??[]})));const s=function(e,t){const n=N.utils.defaultAbiCoder.encode(["uint256","tuple(\n bool delegateCall,\n bool revertOnError,\n uint256 gasLimit,\n address target,\n uint256 value,\n bytes data\n)[]"],[e,t]);return N.utils.keccak256(n)}(t,i),o=sr(n,a,s),c=N.utils.keccak256(o),d=N.utils.arrayify(c),u=`${await r.signMessage(d)}02`,f=V.signature.encodeSignature({version:1,threshold:1,signers:[{isDynamic:!1,unrecovered:!0,weight:1,signature:u}]}),l=new N.utils.Interface(B.mainModule.abi);return l.encodeFunctionData(l.getFunction("execute"),[i,t,f])},cr=async(e,t,n,a,r)=>{const i={...e.types};delete i.EIP712Domain;const s=N.utils._TypedDataEncoder.hash(e.domain,i,e.message),o=sr(n,a,s),c=N.utils.keccak256(o),d=N.utils.arrayify(c),u=`${await r.signMessage(d)}02`,{signers:f}=(e=>{const t=`0x0000${e}`;return V.signature.decodeSignature(t)})(t);return V.signature.encodeSignature({version:1,threshold:2,signers:[...f,{isDynamic:!1,unrecovered:!0,weight:1,signature:u}]})},dr=e=>`eip155:${e}`;class ur{config;jsonRpcProvider;user;constructor({config:e,jsonRpcProvider:t,user:n}){this.config=e,this.jsonRpcProvider=t,this.user=n}async postToRelayer(e){const t={id:1,jsonrpc:"2.0",...e},n=await fetch(`${this.config.relayerUrl}/v1/transactions`,{method:"POST",headers:{Authorization:`Bearer ${this.user.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await n.json();if(a.error)throw a.error;return a}async ethSendTransaction(e,t){const{chainId:n}=await this.jsonRpcProvider.ready,a={method:"eth_sendTransaction",params:[{to:e,data:t,chainId:dr(n)}]},{result:r}=await this.postToRelayer(a);return r}async imGetTransactionByHash(e){const t={method:"im_getTransactionByHash",params:[e]},{result:n}=await this.postToRelayer(t);return n}async imGetFeeOptions(e,t){const{chainId:n}=await this.jsonRpcProvider.ready,a={method:"im_getFeeOptions",params:[{userAddress:e,data:t,chainId:dr(n)}]},{result:r}=await this.postToRelayer(a);return r}async imSignTypedData(e,t){const{chainId:n}=await this.jsonRpcProvider.ready,a={method:"im_signTypedData",params:[{address:e,eip712Payload:t,chainId:dr(n)}]},{result:r}=await this.postToRelayer(a);return r}}const fr=new Map([[va.ETHEREUM,Aa.ETHEREUM],[va.SEPOLIA,Aa.SEPOLIA],[va.IMTBL_ZKEVM_MAINNET,Aa.IMTBL_ZKEVM_MAINNET],[va.IMTBL_ZKEVM_TESTNET,Aa.IMTBL_ZKEVM_TESTNET],[va.IMTBL_ZKEVM_DEVNET,Aa.IMTBL_ZKEVM_DEVNET]]);const lr=async({authManager:e,config:t,magicAdapter:n,multiRollupApiClients:a,jsonRpcProvider:r})=>{let i=null;try{i=await e.getUser()}catch(e){console.warn("eth_requestAccounts` failed to retrieve a cached user session:",e)}if(i||(i=await e.getUserDeviceFlow()||await e.login()),!i.idToken)throw new Error("User is missing idToken");const s=await n.login(i.idToken);if(!i.zkEvm){const n=await async function({authManager:e,config:t,magicProvider:n,multiRollupApiClients:a,accessToken:r,jsonRpcProvider:i}){const s=new O(n).getSigner(),o=await s.getAddress(),c=await Ea("Only sign this message from Immutable Passport",s),d={Authorization:`Bearer ${r}`},{chainId:u}=await i.ready;try{const e=fr.get(u);if(!e)throw new Va(Ba.INTERNAL_ERROR,`Chain name does not exist on for chain id ${u}`);await a.passportApi.createCounterfactualAddress({chainName:e,createCounterfactualAddressRequest:{ethereum_address:o,ethereum_signature:c}},{headers:d})}catch(e){throw new Va(Ba.INTERNAL_ERROR,`Failed to create counterfactual address: ${e}`)}let f;if(t.crossSdkBridgeEnabled){const t=e.checkStoredDeviceFlowCredentials();if(!t||!t.refresh_token)throw new Va(Ba.INTERNAL_ERROR,"Cross SDK bridge: Failed to refresh user details");f=await e.refreshToken(t.refresh_token)}else f=await e.forceUserRefresh();if(!f?.zkEvm)throw new Va(Ba.INTERNAL_ERROR,"Failed to refresh user details");return f}({authManager:e,config:t,magicProvider:s,multiRollupApiClients:a,accessToken:i.accessToken,jsonRpcProvider:r});return{user:n,magicProvider:s}}return{user:i,magicProvider:s}},pr=({params:e,magicProvider:t,jsonRpcProvider:n,relayerClient:a,guardianClient:r,user:i})=>r.withConfirmationScreen({width:480,height:520})((async()=>{const s=e[0];if(!s.to)throw new Va(Ba.INVALID_PARAMS,'eth_sendTransaction requires a "to" field');const{chainId:o}=await n.ready,c=S.from(o),d=new O(t).getSigner(),u=await(async(e,t)=>{const n=await e.send("eth_getCode",[t,"latest"]);if(n&&"0x"!==n)return new N.Contract(t,B.mainModule.abi,e).nonce();return 0})(n,i.zkEvm.ethAddress),f={to:s.to,data:s.data,nonce:u,value:s.value,revertOnError:!0},l=await(async(e,t,n,a,r,i)=>{const s=await or([e],t,n,a,r),o=(await i.imGetFeeOptions(a,s)).find((e=>"IMX"===e.tokenSymbol));if(!o)throw new Error("Failed to retrieve fees for IMX token");const c={nonce:t,to:o.recipientAddress,value:o.tokenPrice,revertOnError:!0};return S.from(c.value).isZero()?[e]:[e,c]})(f,u,c,i.zkEvm.ethAddress,d,a);await r.validateEVMTransaction({chainId:dr(o),nonce:qa(u),user:i,metaTransactions:l});const p=await or(l,u,c,i.zkEvm.ethAddress,d),h=await a.ethSendTransaction(i.zkEvm.ethAddress,p),m=await Ua((async()=>{const e=await a.imGetTransactionByHash(h);if(e.status===ar.PENDING)throw new Error;return e}),{retries:30,interval:1e3,finalErr:new Va(Ba.RPC_SERVER_ERROR,"transaction hash not generated in time")});if(![ar.SUBMITTED,ar.SUCCESSFUL].includes(m.status)){let e=`Transaction failed to submit with status ${m.status}.`;throw m.statusMessage&&(e+=` Error message: ${m.statusMessage}`),new Va(Ba.RPC_SERVER_ERROR,e)}return m.hash})),hr=["types","domain","primaryType","message"],mr=(e,t)=>{let n;if("string"==typeof e)try{n=JSON.parse(e)}catch(e){throw new Va(Ba.INVALID_PARAMS,`Failed to parse typed data JSON: ${e}`)}else{if("object"!=typeof e)throw new Va(Ba.INVALID_PARAMS,`Invalid typed data argument: ${e}`);n=e}if(!(e=>hr.every((t=>t in e)))(n))throw new Va(Ba.INVALID_PARAMS,`Invalid typed data argument. The following properties are required: ${hr.join(", ")}`);const a=n.domain?.chainId;if(a&&("string"==typeof a&&(a.startsWith("0x")?n.domain.chainId=parseInt(a,16):n.domain.chainId=parseInt(a,10)),n.domain.chainId!==t))throw new Va(Ba.INVALID_PARAMS,`Invalid chainId, expected ${t}`);return n};class br{authManager;config;confirmationScreen;magicAdapter;multiRollupApiClients;jsonRpcProvider;eventEmitter;guardianClient;relayerClient;magicProvider;user;isPassport=!0;constructor({authManager:e,magicAdapter:t,config:n,confirmationScreen:a,multiRollupApiClients:r,passportEventEmitter:i}){this.authManager=e,this.magicAdapter=t,this.config=n,this.confirmationScreen=a,n.crossSdkBridgeEnabled?this.jsonRpcProvider=new I({url:this.config.zkEvmRpcUrl,fetchOptions:{referrer:"http://imtblgamesdk.local"}}):this.jsonRpcProvider=new I(this.config.zkEvmRpcUrl),this.multiRollupApiClients=r,this.eventEmitter=new ir,i.on(za.LOGGED_OUT,this.handleLogout)}handleLogout=()=>{const e=this.isLoggedIn();this.magicProvider=void 0,this.user=void 0,this.relayerClient=void 0,this.guardianClient=void 0,e&&this.eventEmitter.emit(rr.ACCOUNTS_CHANGED,[])};isLoggedIn(){return void 0!==this.magicProvider&&void 0!==this.user&&void 0!==this.relayerClient&&void 0!==this.guardianClient}async performRequest(e){switch(e.method){case"eth_requestAccounts":{if(this.isLoggedIn())return[this.user.zkEvm.ethAddress];const{magicProvider:e,user:t}=await lr({authManager:this.authManager,config:this.config,magicAdapter:this.magicAdapter,multiRollupApiClients:this.multiRollupApiClients,jsonRpcProvider:this.jsonRpcProvider});return this.user=t,this.magicProvider=e,this.relayerClient=new ur({config:this.config,jsonRpcProvider:this.jsonRpcProvider,user:this.user}),this.guardianClient=new ja({confirmationScreen:this.confirmationScreen,config:this.config}),this.eventEmitter.emit(rr.ACCOUNTS_CHANGED,[this.user.zkEvm.ethAddress]),[this.user.zkEvm.ethAddress]}case"eth_sendTransaction":if(!this.isLoggedIn())throw new Va(Fa.UNAUTHORIZED,"Unauthorised - call eth_requestAccounts first");return pr({params:e.params||[],magicProvider:this.magicProvider,guardianClient:this.guardianClient,jsonRpcProvider:this.jsonRpcProvider,relayerClient:this.relayerClient,user:this.user});case"eth_accounts":return this.isLoggedIn()?[this.user.zkEvm.ethAddress]:[];case"eth_signTypedData":case"eth_signTypedData_v4":if(!this.isLoggedIn())throw new Va(Fa.UNAUTHORIZED,"Unauthorised - call eth_requestAccounts first");return(async({params:e,method:t,magicProvider:n,jsonRpcProvider:a,relayerClient:r,guardianClient:i,user:s})=>i.withConfirmationScreen({width:480,height:730})((async()=>{const o=e[0],c=e[1];if(!o||!c)throw new Va(Ba.INVALID_PARAMS,`${t} requires an address and a typed data JSON`);const{chainId:d}=await a.ready,u=mr(c,d);await i.validateMessage({chainID:String(d),payload:u,user:s});const f=await r.imSignTypedData(o,u),l=new O(n).getSigner();return cr(u,f,S.from(d),o,l)})))({method:e.method,params:e.params||[],magicProvider:this.magicProvider,jsonRpcProvider:this.jsonRpcProvider,relayerClient:this.relayerClient,user:this.user,guardianClient:this.guardianClient});case"eth_gasPrice":case"eth_getBalance":case"eth_getCode":case"eth_getStorageAt":case"eth_estimateGas":case"eth_call":case"eth_blockNumber":case"eth_chainId":case"eth_getBlockByHash":case"eth_getBlockByNumber":case"eth_getTransactionByHash":case"eth_getTransactionReceipt":case"eth_getTransactionCount":return this.jsonRpcProvider.send(e.method,e.params||[]);default:throw new Va(Fa.UNSUPPORTED_METHOD,"Method not supported")}}async performJsonRpcRequest(e){const{id:t,jsonrpc:n}=e;try{return{id:t,jsonrpc:n,result:await this.performRequest(e)}}catch(e){let a;return a=e instanceof Va?e:e instanceof Error?new Va(Ba.INTERNAL_ERROR,e.message):new Va(Ba.INTERNAL_ERROR,"Internal error"),{id:t,jsonrpc:n,error:a}}}async request(e){try{return this.performRequest(e)}catch(e){if(e instanceof Va)throw e;if(e instanceof Error)throw new Va(Ba.INTERNAL_ERROR,e.message);throw new Va(Ba.INTERNAL_ERROR,"Internal error")}}sendAsync(e,t){if(!t)throw new Error("No callback provided");Array.isArray(e)?Promise.all(e.map(this.performJsonRpcRequest)).then((e=>{t(null,e)})).catch((e=>{t(e,[])})):this.performJsonRpcRequest(e).then((e=>{t(null,e)})).catch((e=>{t(e,null)}))}async send(e,t,n){if("string"==typeof e)return"function"==typeof t?this.sendAsync({method:e,params:[]},t):n?this.sendAsync({method:e,params:Array.isArray(t)?t:[]},n):this.request({method:e,params:Array.isArray(t)?t:[]});if("function"==typeof t)return this.sendAsync(e,t);if(!Array.isArray(e)&&"object"==typeof e)return this.performJsonRpcRequest(e);throw new Va(Ba.INVALID_REQUEST,"Invalid request")}on(e,t){this.eventEmitter.on(e,t)}removeListener(e,t){this.eventEmitter.removeListener(e,t)}}var yr=Object.freeze({__proto__:null,JsonRpcError:Va,get Networks(){return Ha},Passport:class{authManager;config;confirmationScreen;immutableXClient;magicAdapter;multiRollupApiClients;passportImxProviderFactory;passportEventEmitter;constructor(e){this.config=new Ya(e),this.authManager=new Pa(this.config),this.magicAdapter=new Da(this.config),this.confirmationScreen=new nr(this.config),this.immutableXClient=e.overrides?.immutableXClient||new bt({baseConfig:e.baseConfig}),this.multiRollupApiClients=new tt(this.config.multiRollupConfig),this.passportEventEmitter=new ir,this.passportImxProviderFactory=new Za({authManager:this.authManager,config:this.config,confirmationScreen:this.confirmationScreen,immutableXClient:this.immutableXClient,magicAdapter:this.magicAdapter,passportEventEmitter:this.passportEventEmitter})}async connectImxSilent(){return this.passportImxProviderFactory.getProviderSilent()}async connectImx(){return this.passportImxProviderFactory.getProvider()}async connectImxDeviceFlow(e,t,n){return this.passportImxProviderFactory.getProviderWithDeviceFlow(e,t,n)}getPKCEAuthorizationUrl(){return this.authManager.getPKCEAuthorizationUrl()}async connectImxPKCEFlow(e,t){return this.passportImxProviderFactory.getProviderWithPKCEFlow(e,t)}checkStoredDeviceFlowCredentials(){return this.authManager.checkStoredDeviceFlowCredentials()}async connectImxWithCredentials(e){return this.passportImxProviderFactory.getProviderWithCredentials(e)}connectEvm(){if(this.config.network===Ha.PRODUCTION)throw new Error("EVM is not supported on production network");return new br({passportEventEmitter:this.passportEventEmitter,authManager:this.authManager,magicAdapter:this.magicAdapter,config:this.config,confirmationScreen:this.confirmationScreen,multiRollupApiClients:this.multiRollupApiClients})}async login(e){const{useCachedSession:t=!1}=e||{};let n=null;try{n=await this.authManager.getUser()}catch(e){if(t)throw e;console.warn("login failed to retrieve a cached user session",e)}return n||t||(n=await this.authManager.login()),n?n.profile:null}async loginWithDeviceFlow(){return this.authManager.loginWithDeviceFlow()}async loginCallback(){return this.authManager.loginCallback()}async logout(){await this.authManager.logout(),await this.confirmationScreen.logout(),await this.magicAdapter.logout(),this.passportEventEmitter.emit(za.LOGGED_OUT)}async logoutSilentCallback(e){return this.authManager.logoutSilentCallback(e)}async logoutDeviceFlow(){return this.authManager.logoutDeviceFlow()}async getUserInfo(){const e=await this.authManager.getUser();return e?.profile}async getUserInfoDeviceFlow(){const e=await this.authManager.getUserDeviceFlow();return e?.profile}async getIdToken(){const e=await this.authManager.getUser();return e?.idToken}async getAccessToken(){const e=await this.authManager.getUser();return e?.accessToken}async getLinkedAddresses(){const e=await this.authManager.getUser();if(!e?.profile.sub)return[];const t={Authorization:`Bearer ${e.accessToken}`};return(await this.multiRollupApiClients.passportApi.getLinkedAddresses({chainName:Aa.ETHEREUM,userId:e?.profile.sub},{headers:t})).data.linked_addresses}},PassportError:Ra,get ProviderErrorCode(){return Fa},get ProviderEvent(){return rr},get RpcErrorCode(){return Ba}});class gr{config;constructor(e){this.config=e}}class Er extends Error{url;status;statusText;body;request;constructor(e,t,n){super(n),this.name="ApiError",this.url=t.url,this.status=t.status,this.statusText=t.statusText,this.body=t.body,this.request=e}}class wr extends Error{constructor(e){super(e),this.name="CancelError"}get isCancelled(){return!0}}class Tr{[Symbol.toStringTag];_isResolved;_isRejected;_isCancelled;_cancelHandlers;_promise;_resolve;_reject;constructor(e){this._isResolved=!1,this._isRejected=!1,this._isCancelled=!1,this._cancelHandlers=[],this._promise=new Promise(((t,n)=>{this._resolve=t,this._reject=n;const a=e=>{this._isResolved||this._isRejected||this._isCancelled||this._cancelHandlers.push(e)};return Object.defineProperty(a,"isResolved",{get:()=>this._isResolved}),Object.defineProperty(a,"isRejected",{get:()=>this._isRejected}),Object.defineProperty(a,"isCancelled",{get:()=>this._isCancelled}),e((e=>{this._isResolved||this._isRejected||this._isCancelled||(this._isResolved=!0,this._resolve?.(e))}),(e=>{this._isResolved||this._isRejected||this._isCancelled||(this._isRejected=!0,this._reject?.(e))}),a)}))}then(e,t){return this._promise.then(e,t)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(){if(!(this._isResolved||this._isRejected||this._isCancelled)){if(this._isCancelled=!0,this._cancelHandlers.length)try{for(const e of this._cancelHandlers)e()}catch(e){return void console.warn("Cancellation threw an error",e)}this._cancelHandlers.length=0,this._reject?.(new wr("Request aborted"))}}get isCancelled(){return this._isCancelled}}const Rr=e=>null!=e,_r=e=>"string"==typeof e,vr=e=>_r(e)&&""!==e,Ar=e=>"object"==typeof e&&"string"==typeof e.type&&"function"==typeof e.stream&&"function"==typeof e.arrayBuffer&&"function"==typeof e.constructor&&"string"==typeof e.constructor.name&&/^(Blob|File)$/.test(e.constructor.name)&&/^(Blob|File)$/.test(e[Symbol.toStringTag]),Cr=e=>{const t=[],n=(e,a)=>{Rr(a)&&(Array.isArray(a)?a.forEach((t=>{n(e,t)})):"object"==typeof a?Object.entries(a).forEach((([t,a])=>{n(`${e}[${t}]`,a)})):((e,n)=>{t.push(`${encodeURIComponent(e)}=${encodeURIComponent(String(n))}`)})(e,a))};return Object.entries(e).forEach((([e,t])=>{n(e,t)})),t.length>0?`?${t.join("&")}`:""},Ir=async(e,t)=>"function"==typeof t?t(e):t,Or=async(e,t,n)=>{const a=await Ir(t,e.TOKEN),r=await Ir(t,e.USERNAME),i=await Ir(t,e.PASSWORD),s=await Ir(t,e.HEADERS),o="function"==typeof n?.getHeaders&&n?.getHeaders()||{},c=Object.entries({Accept:"application/json",...s,...t.headers,...o}).filter((([e,t])=>Rr(t))).reduce(((e,[t,n])=>({...e,[t]:String(n)})),{});if(vr(a)&&(c.Authorization=`Bearer ${a}`),vr(r)&&vr(i)){const e=(e=>{try{return btoa(e)}catch(t){return Buffer.from(e).toString("base64")}})(`${r}:${i}`);c.Authorization=`Basic ${e}`}return t.body&&(t.mediaType?c["Content-Type"]=t.mediaType:Ar(t.body)?c["Content-Type"]=t.body.type||"application/octet-stream":_r(t.body)?c["Content-Type"]="text/plain":t.body instanceof G||(c["Content-Type"]="application/json")),c},Sr=(t,n)=>new Tr((async(a,r,i)=>{try{const r=((e,t)=>{const n=e.ENCODE_PATH||encodeURI,a=t.url.replace("{api-version}",e.VERSION).replace(/{(.*?)}/g,((e,a)=>t.path?.hasOwnProperty(a)?n(String(t.path[a])):e)),r=`${e.BASE}${a}`;return t.query?`${r}${Cr(t.query)}`:r})(t,n),o=(e=>{if(e.formData){const t=new G,n=(e,n)=>{_r(n)||Ar(n)?t.append(e,n):t.append(e,JSON.stringify(n))};return Object.entries(e.formData).filter((([e,t])=>Rr(t))).forEach((([e,t])=>{Array.isArray(t)?t.forEach((t=>n(e,t))):n(e,t)})),t}})(n),c=(e=>{if(e.body)return e.body})(n),d=await Or(t,n,o);if(!i.isCancelled){const u=await(async(t,n,a,r,i,s,o)=>{const c=e.CancelToken.source(),d={url:a,headers:s,data:r??i,method:n.method,withCredentials:t.WITH_CREDENTIALS,cancelToken:c.token};o((()=>c.cancel("The user aborted a request.")));try{return await e.request(d)}catch(e){const t=e;if(t.response)return t.response;throw e}})(t,n,r,c,o,d,i),f=(e=>{if(204!==e.status)return e.data})(u),l=((e,t)=>{if(t){const n=e.headers[t];if(_r(n))return n}})(u,n.responseHeader),p={url:r,ok:(s=u.status,s>=200&&s<300),status:u.status,statusText:u.statusText,body:l??f};((e,t)=>{const n={400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",...e.errors}[t.status];if(n)throw new Er(e,t,n);if(!t.ok)throw new Er(e,t,"Generic Error")})(n,p),a(p.body)}}catch(e){r(e)}var s}));class Nr extends gr{constructor(e){super(e)}request(e){return Sr(this.config,e)}}class kr{httpRequest;constructor(e){this.httpRequest=e}cancelOrders({chainName:e,requestBody:t}){return this.httpRequest.request({method:"POST",url:"/v1/chains/{chain_name}/orders/cancel",path:{chain_name:e},body:t,mediaType:"application/json",errors:{400:"Bad Request (400)",401:"Unauthorised Request (401)",404:"The specified resource was not found (404)",429:"Too Many Requests (429)",500:"Internal Server Error (500)",501:"Not Implemented Error (501)"}})}listListings({chainName:e,status:t,sellItemContractAddress:n,buyItemContractAddress:a,sellItemTokenId:r,fromUpdatedAt:i,pageSize:s,sortBy:o,sortDirection:c,pageCursor:d}){return this.httpRequest.request({method:"GET",url:"/v1/chains/{chain_name}/orders/listings",path:{chain_name:e},query:{status:t,sell_item_contract_address:n,buy_item_contract_address:a,sell_item_token_id:r,from_updated_at:i,page_size:s,sort_by:o,sort_direction:c,page_cursor:d},errors:{400:"Bad Request (400)",404:"The specified resource was not found (404)",500:"Internal Server Error (500)"}})}createListing({chainName:e,requestBody:t}){return this.httpRequest.request({method:"POST",url:"/v1/chains/{chain_name}/orders/listings",path:{chain_name:e},body:t,mediaType:"application/json",errors:{400:"Bad Request (400)",404:"The specified resource was not found (404)",500:"Internal Server Error (500)"}})}getListing({chainName:e,listingId:t}){return this.httpRequest.request({method:"GET",url:"/v1/chains/{chain_name}/orders/listings/{listing_id}",path:{chain_name:e,listing_id:t},errors:{400:"Bad Request (400)",404:"The specified resource was not found (404)",500:"Internal Server Error (500)"}})}fulfillmentData({chainName:e,requestBody:t}){return this.httpRequest.request({method:"POST",url:"/v1/chains/{chain_name}/orders/fulfillment-data",path:{chain_name:e},body:t,mediaType:"application/json",errors:{400:"Bad Request (400)",404:"The specified resource was not found (404)",500:"Internal Server Error (500)"}})}listTrades({chainName:e,accountAddress:t,fromIndexedAt:n,pageSize:a,sortBy:r,sortDirection:i,pageCursor:s}){return this.httpRequest.request({method:"GET",url:"/v1/chains/{chain_name}/trades",path:{chain_name:e},query:{account_address:t,from_indexed_at:n,page_size:a,sort_by:r,sort_direction:i,page_cursor:s},errors:{400:"Bad Request (400)",404:"The specified resource was not found (404)",500:"Internal Server Error (500)"}})}getTrade({chainName:e,tradeId:t}){return this.httpRequest.request({method:"GET",url:"/v1/chains/{chain_name}/trades/{trade_id}",path:{chain_name:e,trade_id:t},errors:{400:"Bad Request (400)",404:"The specified resource was not found (404)",500:"Internal Server Error (500)"}})}}class Mr{orders;request;constructor(e,t=Nr){this.request=new t({BASE:e?.BASE??"https://api.sandbox.immutable.com",VERSION:e?.VERSION??"1.0.0",WITH_CREDENTIALS:e?.WITH_CREDENTIALS??!1,CREDENTIALS:e?.CREDENTIALS??"include",TOKEN:e?.TOKEN,USERNAME:e?.USERNAME,PASSWORD:e?.PASSWORD,HEADERS:e?.HEADERS,ENCODE_PATH:e?.ENCODE_PATH}),this.orders=new kr(this.request)}}var Pr,Dr,xr,Lr,Ur,Fr,Br,Vr,Gr;function qr(e){const t=e.buy.map((e=>{if("ERC20"===e.item_type)return{type:"ERC20",contractAddress:e.contract_address,amount:e.amount};if("NATIVE"===e.item_type)return{type:"NATIVE",amount:e.amount};throw new Error("Buy items must be either ERC20 or NATIVE")})),n=e.sell.map((e=>{if("ERC721"===e.item_type)return{type:"ERC721",contractAddress:e.contract_address,tokenId:e.token_id};throw new Error("Sell items must ERC721")}));return{id:e.id,accountAddress:e.account_address,buy:t,sell:n,fees:e.fees.map((e=>({amount:e.amount,recipient:e.recipient,type:e.fee_type}))),chain:e.chain,createdAt:e.created_at,endAt:e.end_at,protocolData:{counter:e.protocol_data.counter,orderType:e.protocol_data.order_type,seaportAddress:e.protocol_data.seaport_address,seaportVersion:e.protocol_data.seaport_version,zoneAddress:e.protocol_data.zone_address},salt:e.salt,signature:e.signature,startAt:e.start_at,status:e.status,updatedAt:e.updated_at}}function jr(e){const t=e.buy.map((e=>{if("ERC20"===e.item_type)return{type:"ERC20",contractAddress:e.contract_address,amount:e.amount};if("NATIVE"===e.item_type)return{type:"NATIVE",amount:e.amount};throw new Error("Buy items must be either ERC20 or NATIVE")})),n=e.sell.map((e=>{if("ERC721"===e.item_type)return{type:"ERC721",contractAddress:e.contract_address,tokenId:e.token_id};throw new Error("Sell items must ERC721")}));return{id:e.id,orderId:e.order_id,buy:t,sell:n,buyerFees:e.buyer_fees.map((e=>({amount:e.amount,recipient:e.recipient,type:e.fee_type}))),chain:e.chain,indexedAt:e.indexed_at,blockchainMetadata:{blockNumber:e.blockchain_metadata.block_number,logIndex:e.blockchain_metadata.log_index,transactionHash:e.blockchain_metadata.transaction_hash,transactionIndex:e.blockchain_metadata.transaction_index},buyerAddress:e.buyer_address,makerAddress:e.maker_address,sellerAddress:e.seller_address,takerAddress:e.taker_address}}function zr(e){return{nextCursor:e.next_cursor,previousCursor:e.previous_cursor}}!function(e){var t;(t=e.cancellation_type||(e.cancellation_type={})).ON_CHAIN="ON_CHAIN",t.OFF_CHAIN="OFF_CHAIN"}(Pr||(Pr={})),function(e){(e.reason_code||(e.reason_code={})).FILLED="FILLED"}(Dr||(Dr={})),function(e){var t;(t=e.fee_type||(e.fee_type={})).ROYALTY="ROYALTY",t.MAKER_ECOSYSTEM="MAKER_ECOSYSTEM",t.TAKER_ECOSYSTEM="TAKER_ECOSYSTEM",t.PROTOCOL="PROTOCOL"}(xr||(xr={})),function(e){e.PENDING="PENDING",e.ACTIVE="ACTIVE",e.INACTIVE="INACTIVE",e.FILLED="FILLED",e.EXPIRED="EXPIRED",e.CANCELLED="CANCELLED"}(Lr||(Lr={})),function(e){(e.order_type||(e.order_type={})).FULL_RESTRICTED="FULL_RESTRICTED"}(Ur||(Ur={})),function(e){e.MAKER_ECOSYSTEM="MAKER_ECOSYSTEM",e.TAKER_ECOSYSTEM="TAKER_ECOSYSTEM",e.PROTOCOL="PROTOCOL",e.ROYALTY="ROYALTY"}(Fr||(Fr={})),function(e){e.APPROVAL="APPROVAL",e.FULFILL_ORDER="FULFILL_ORDER",e.CANCEL="CANCEL"}(Br||(Br={})),function(e){e.CREATE_LISTING="CREATE_LISTING",e.OFF_CHAIN_CANCELLATION="OFF_CHAIN_CANCELLATION"}(Vr||(Vr={})),function(e){e.TRANSACTION="TRANSACTION",e.SIGNABLE="SIGNABLE"}(Gr||(Gr={}));const Hr="1.5",Wr={OrderComponents:[{name:"offerer",type:"address"},{name:"zone",type:"address"},{name:"offer",type:"OfferItem[]"},{name:"consideration",type:"ConsiderationItem[]"},{name:"orderType",type:"uint8"},{name:"startTime",type:"uint256"},{name:"endTime",type:"uint256"},{name:"zoneHash",type:"bytes32"},{name:"salt",type:"uint256"},{name:"conduitKey",type:"bytes32"},{name:"counter",type:"uint256"}],OfferItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"}],ConsiderationItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"},{name:"recipient",type:"address"}]};var $r,Xr,Kr,Jr;function Zr(e,t){return async()=>{const n=await e.buildTransaction();return n.gasLimit=await e.estimateGas(),n.gasLimit=n.gasLimit.add(n.gasLimit.div(5)),n.chainId=t,n}}!function(e){e[e.FULL_OPEN=0]="FULL_OPEN",e[e.PARTIAL_OPEN=1]="PARTIAL_OPEN",e[e.FULL_RESTRICTED=2]="FULL_RESTRICTED",e[e.PARTIAL_RESTRICTED=3]="PARTIAL_RESTRICTED"}($r||($r={})),function(e){e[e.NATIVE=0]="NATIVE",e[e.ERC20=1]="ERC20",e[e.ERC721=2]="ERC721",e[e.ERC1155=3]="ERC1155",e[e.ERC721_WITH_CRITERIA=4]="ERC721_WITH_CRITERIA",e[e.ERC1155_WITH_CRITERIA=5]="ERC1155_WITH_CRITERIA"}(Xr||(Xr={})),function(e){e[e.OFFER=0]="OFFER",e[e.CONSIDERATION=1]="CONSIDERATION"}(Kr||(Kr={})),function(e){e[e.ETH_TO_ERC721=0]="ETH_TO_ERC721",e[e.ETH_TO_ERC1155=1]="ETH_TO_ERC1155",e[e.ERC20_TO_ERC721=2]="ERC20_TO_ERC721",e[e.ERC20_TO_ERC1155=3]="ERC20_TO_ERC1155",e[e.ERC721_TO_ERC20=4]="ERC721_TO_ERC20",e[e.ERC1155_TO_ERC20=5]="ERC1155_TO_ERC20"}(Jr||(Jr={}));class Qr{seaportLibFactory;provider;seaportContractAddress;zoneContractAddress;constructor(e,t,n,a){this.seaportLibFactory=e,this.provider=t,this.seaportContractAddress=n,this.zoneContractAddress=a}async prepareSeaportOrder(e,t,n,a,r){const{actions:i}=await this.createSeaportOrder(e,t,n,a,r),s=[],o=i.find((e=>"approval"===e.type));o&&s.push({type:Gr.TRANSACTION,purpose:Br.APPROVAL,buildTransaction:Zr(o.transactionMethods,(await this.provider.getNetwork()).chainId)});const c=i.find((e=>"create"===e.type));if(!c)throw new Error("No create order action found");const d=function(e){const t=JSON.parse(e).message;return t.salt=S.from(t.salt).toHexString(),t}(await c.getMessageToSign());return s.push({type:Gr.SIGNABLE,purpose:Vr.CREATE_LISTING,message:await this.getTypedDataFromOrderComponents(d)}),{actions:s,orderComponents:d,orderHash:this.getSeaportLib().getOrderHash(d)}}async fulfillOrder(e,t,n){const{orderComponents:a,tips:r}=this.mapImmutableOrderToSeaportOrderComponents(e),i=this.getSeaportLib(e),{actions:s}=await i.fulfillOrders({accountAddress:t,fulfillOrderDetails:[{order:{parameters:a,signature:e.signature},extraData:n,tips:r}]}),o=[],c=s.find((e=>"approval"===e.type));c&&o.push({type:Gr.TRANSACTION,buildTransaction:Zr(c.transactionMethods,(await this.provider.getNetwork()).chainId),purpose:Br.APPROVAL});const d=s.find((e=>"exchange"===e.type));if(!d)throw new Error("No exchange action found");return o.push({type:Gr.TRANSACTION,buildTransaction:Zr(d.transactionMethods,(await this.provider.getNetwork()).chainId),purpose:Br.FULFILL_ORDER}),{actions:o,expiration:Qr.getExpirationISOTimeFromExtraData(n),order:qr(e)}}async fulfillBulkOrders(e,t){const n=e.map((e=>{const{orderComponents:t,tips:n}=this.mapImmutableOrderToSeaportOrderComponents(e.order);return{order:{parameters:t,signature:e.order.signature},extraData:e.extra_data,tips:n}})),{actions:a}=await this.getSeaportLib().fulfillOrders({fulfillOrderDetails:n,accountAddress:t}),r=[],i=a.find((e=>"approval"===e.type));i&&r.push({type:Gr.TRANSACTION,buildTransaction:Zr(i.transactionMethods,(await this.provider.getNetwork()).chainId),purpose:Br.APPROVAL});const s=a.find((e=>"exchange"===e.type));if(!s)throw new Error("No exchange action found");return r.push({type:Gr.TRANSACTION,buildTransaction:Zr(s.transactionMethods,(await this.provider.getNetwork()).chainId),purpose:Br.FULFILL_ORDER}),{actions:r,expiration:n.map((e=>Qr.getExpirationISOTimeFromExtraData(e.extraData))).reduce(((e,t)=>new Date(e)<new Date(t)?e:t))}}async cancelOrders(e,t){const n=e.map((e=>this.mapImmutableOrderToSeaportOrderComponents(e).orderComponents)),a=this.getSeaportLib(e[0]),r=await a.cancelOrders(n,t);return{type:Gr.TRANSACTION,buildTransaction:Zr(r,(await this.provider.getNetwork()).chainId),purpose:Br.CANCEL}}mapImmutableOrderToSeaportOrderComponents(e){return function(e,t,n){const a=e.buy.map((t=>{switch(t.item_type){case"NATIVE":return{startAmount:t.amount,endAmount:t.amount,itemType:Xr.NATIVE,recipient:e.account_address,token:M.AddressZero,identifierOrCriteria:"0"};case"ERC20":return{startAmount:t.amount,endAmount:t.amount,itemType:Xr.ERC20,recipient:e.account_address,token:t.contract_address||M.AddressZero,identifierOrCriteria:"0"};default:return{startAmount:"1",endAmount:"1",itemType:Xr.ERC721,recipient:e.account_address,token:t.contract_address||M.AddressZero,identifierOrCriteria:"0"}}})),r=e.fees.map((t=>({amount:t.amount,itemType:"ERC20"===e.buy[0].item_type?Xr.ERC20:Xr.NATIVE,recipient:t.recipient,token:"ERC20"===e.buy[0].item_type?e.buy[0].contract_address:M.AddressZero,identifierOrCriteria:"0"})));return{orderComponents:{conduitKey:M.HashZero,consideration:[...a],offer:e.sell.map((e=>{const t=e;return{startAmount:"1",endAmount:"1",itemType:Xr.ERC721,token:t.contract_address,identifierOrCriteria:t.token_id}})),counter:t,endTime:Math.round(new Date(e.end_at).getTime()/1e3).toString(),startTime:Math.round(new Date(e.start_at).getTime()/1e3).toString(),salt:e.salt,offerer:e.account_address,zone:n,totalOriginalConsiderationItems:a.length,orderType:$r.FULL_RESTRICTED,zoneHash:M.HashZero},tips:r}}(e,e.protocol_data.counter,this.zoneContractAddress)}createSeaportOrder(e,t,n,a,r){return this.getSeaportLib().createOrder({allowPartialFills:!1,offer:[{itemType:Xr.ERC721,token:t.contractAddress,identifier:t.tokenId}],consideration:[{token:"ERC20"===n.type?n.contractAddress:void 0,amount:n.amount,recipient:e}],startTime:(a.getTime()/1e3).toFixed(0),endTime:(r.getTime()/1e3).toFixed(0),zone:this.zoneContractAddress,restrictedByZone:!0},e)}async getTypedDataFromOrderComponents(e){const{chainId:t}=await this.provider.getNetwork();return{domain:{name:"ImmutableSeaport",version:Hr,chainId:t,verifyingContract:this.seaportContractAddress},types:Wr,value:e}}getSeaportLib(e){const t=e?.protocol_data?.seaport_address??this.seaportContractAddress,n=Hr;return this.seaportLibFactory.create(n,t)}static getExpirationISOTimeFromExtraData(e){const t=e.slice(44,60),n=parseInt(t,16);return new Date(1e3*n).toISOString()}}class Yr{orderbookService;chainName;seaportAddress;constructor(e,t,n){this.orderbookService=e,this.chainName=t,this.seaportAddress=n}async fulfillmentData(e){return this.orderbookService.fulfillmentData({chainName:this.chainName,requestBody:e})}async getListing(e){return this.orderbookService.getListing({chainName:this.chainName,listingId:e})}async getTrade(e){return this.orderbookService.getTrade({chainName:this.chainName,tradeId:e})}async listListings(e){return this.orderbookService.listListings({chainName:this.chainName,...e})}async listTrades(e){return this.orderbookService.listTrades({chainName:this.chainName,...e})}async cancelOrders(e,t,n){return this.orderbookService.cancelOrders({chainName:this.chainName,requestBody:{account_address:t,orders:e,signature:n}})}async createListing({orderHash:e,orderComponents:t,orderSignature:n,makerFees:a}){if(1!==t.offer.length)throw new Error("Only one item can be listed at a time");if(Number(t.offer[0].itemType)!==Xr.ERC721)throw new Error("Only ERC721 tokens can be listed");const r=[...t.consideration.map((e=>e.itemType))];if(!(1===new Set(r).size))throw new Error("All consideration items must be of the same type");return this.orderbookService.createListing({chainName:this.chainName,requestBody:{order_hash:e,account_address:t.offerer,buy:[{item_type:Number(t.consideration[0].itemType)===Xr.NATIVE?"NATIVE":"ERC20",amount:t.consideration[0].startAmount,contract_address:t.consideration[0].token}],fees:a.map((e=>({amount:e.amount,fee_type:Fr.MAKER_ECOSYSTEM,recipient:e.recipient}))),end_at:new Date(parseInt(`${t.endTime.toString()}000`,10)).toISOString(),protocol_data:{order_type:Ur.order_type.FULL_RESTRICTED,zone_address:t.zone,seaport_address:this.seaportAddress,seaport_version:Hr,counter:t.counter.toString()},salt:t.salt,sell:[{contract_address:t.offer[0].token,token_id:t.offer[0].identifierOrCriteria,item_type:"ERC721"}],signature:n,start_at:new Date(parseInt(`${t.startTime.toString()}000`,10)).toISOString()}})}}class ei{chainName;seaportAddress;orderbookClient;constructor(e,t,n){this.chainName=t,this.seaportAddress=n,this.orderbookClient=new Mr({BASE:e})}create(){return new Yr(this.orderbookClient.orders,this.chainName,this.seaportAddress)}}class ti{defaultSeaportContractAddress;provider;constructor(e,t){this.defaultSeaportContractAddress=e,this.provider=t}create(e,t){const n=e??Hr,a=t??this.defaultSeaportContractAddress;return new q(this.provider,{seaportVersion:n,balanceAndApprovalChecksOnOrderCreation:!0,overrides:{contractAddress:a}})}}class ni{apiClient;seaport;orderbookConfig;constructor(e){const t={...function(e){switch(e){case se.SANDBOX:return{seaportContractAddress:"0x2CFA8f64e1B49A2DF28532D1D30Cda45117cF778",zoneContractAddress:"0x1Bb4Fb11Ba021Bd0104F0Ee8E5F5c728Bc83d7F1",apiEndpoint:"https://api.sandbox.immutable.com",chainName:"imtbl-zkevm-testnet",provider:new k.JsonRpcProvider("https://rpc.testnet.immutable.com")};case se.PRODUCTION:return{seaportContractAddress:"",zoneContractAddress:"",apiEndpoint:"https://api.immutable.com",chainName:"imtbl-zkevm-mainnet",provider:new k.JsonRpcProvider("https://rpc.immutable.com")};default:return null}}(e.baseConfig.environment),...e.overrides};if(!t)throw new Error("Orderbook configuration not passed, please specify the environment under config.baseConfig.environment");this.orderbookConfig=t;const{apiEndpoint:n,chainName:a}=this.orderbookConfig;if(!n)throw new Error("API endpoint must be provided");this.apiClient=new ei(n,a,this.orderbookConfig.seaportContractAddress).create();const r=new ti(this.orderbookConfig.seaportContractAddress,this.orderbookConfig.provider);this.seaport=new Qr(r,this.orderbookConfig.provider,this.orderbookConfig.seaportContractAddress,this.orderbookConfig.zoneContractAddress)}config(){return this.orderbookConfig}async getListing(e){return{result:qr((await this.apiClient.getListing(e)).result)}}async getTrade(e){return{result:jr((await this.apiClient.getTrade(e)).result)}}async listListings(e){const t=await this.apiClient.listListings(e);return{page:zr(t.page),result:t.result.map(qr)}}async listTrades(e){const t=await this.apiClient.listTrades(e);return{page:zr(t.page),result:t.result.map(jr)}}async prepareListing({makerAddress:e,sell:t,buy:n,orderExpiry:a}){return this.seaport.prepareSeaportOrder(e,t,n,new Date,a||new Date(Date.now()+63072e6))}async createListing(e){return{result:qr((await this.apiClient.createListing({...e})).result)}}async fulfillOrder(e,t,n){const a=await this.apiClient.fulfillmentData([{order_id:e,fees:n.map((e=>({amount:e.amount,fee_type:Fr.TAKER_ECOSYSTEM,recipient:e.recipient})))}]);if(a.result.unfulfillable_orders?.length>0)throw new Error(`Unable to prepare fulfillment date: ${a.result.unfulfillable_orders[0].reason}`);if(1!==a.result.fulfillable_orders?.length)throw new Error("unexpected fulfillable order result length");const r=a.result.fulfillable_orders[0].extra_data,i=a.result.fulfillable_orders[0].order;if(i.status.name!==Lr.ACTIVE)throw new Error(`Cannot fulfil order that is not active. Current status: ${i.status}`);return this.seaport.fulfillOrder(i,t,r)}async fulfillBulkOrders(e,t){const n=await this.apiClient.fulfillmentData(e.map((e=>({order_id:e.listingId,fees:e.takerFees.map((e=>({amount:e.amount,fee_type:Fr.TAKER_ECOSYSTEM,recipient:e.recipient})))}))));try{return{...await this.seaport.fulfillBulkOrders(n.result.fulfillable_orders,t),fulfillableOrders:n.result.fulfillable_orders.map((e=>qr(e.order))),unfulfillableOrders:n.result.unfulfillable_orders.map((e=>({orderId:e.order_id,reason:e.reason}))),sufficientBalance:!0}}catch(e){if(String(e).includes("The fulfiller does not have the balances needed to fulfill."))return{fulfillableOrders:n.result.fulfillable_orders.map((e=>qr(e.order))),unfulfillableOrders:n.result.unfulfillable_orders.map((e=>({orderId:e.order_id,reason:e.reason}))),sufficientBalance:!1};throw e}}async prepareOrderCancellations(e){const t={name:"imtbl-order-book",chainId:(await this.orderbookConfig.provider.getNetwork()).chainId,verifyingContract:this.orderbookConfig.seaportContractAddress},n={orders:e.map((e=>({id:e})))};return{signableAction:{purpose:Vr.OFF_CHAIN_CANCELLATION,type:Gr.SIGNABLE,message:{domain:t,types:{CancelPayload:[{name:"orders",type:"Order[]"}],Order:[{name:"id",type:"string"}]},value:n}}}}async cancelOrders(e,t,n){return this.apiClient.cancelOrders(e,t,n)}async cancelOrdersOnChain(e,t){const n=await Promise.all(e.map((e=>this.apiClient.getListing(e))));for(const e of n){if(e.result.status.name!==Lr.ACTIVE&&e.result.status.name!==Lr.INACTIVE&&e.result.status.name!==Lr.PENDING)throw new Error(`Cannot cancel order with status ${e.result.status}`);if(e.result.account_address!==t.toLowerCase())throw new Error(`Only account ${e.result.account_address} can cancel order ${e.result.id}`)}const a=n.map((e=>e.result)),r=a.map((e=>e.protocol_data.seaport_address));if(1!==new Set(...[r]).size)throw new Error("Cannot cancel multiple orders from different seaport contracts. Please group your orderIds accordingly");return{cancellationAction:await this.seaport.cancelOrders(a,t)}}}const ai={estimatedFulfillmentGasGwei:4e5};var ri=Object.freeze({__proto__:null,get ActionType(){return Gr},get FeeType(){return Fr},get OrderStatusName(){return Lr},Orderbook:ni,get SignablePurpose(){return Vr},get TransactionPurpose(){return Br},constants:ai});async function ii(e,t){if(!function(e,t){return e===t.ethConfiguration.chainID}(await e.getChainId(),t))throw new Error("The wallet used for this operation is not connected to the correct network.")}async function si(e,t,n){await ii(t,n.immutableXConfig);const a=l.Registration.connect(n.immutableXConfig.ethConfiguration.registrationContractAddress,t);try{return await a.isRegistered(e)}catch(e){if("USER_UNREGISTERED"===e.reason)return!1;throw e}}async function oi(e,t,n){const a=await n.getSignableRegistration({getSignableRegistrationRequest:{ether_key:e,stark_key:t}});return{operator_signature:a.data.operator_signature,payload_hash:a.data.payload_hash,readable_transaction:a.data.readable_transaction,verification_signature:a.data.verification_signature}}const ci=e=>{if(void 0!==e)return e;throw new Error("undefined field exception")};async function di(e){const{signers:{ethSigner:t,starkSigner:n},type:a,config:r}=e;await ii(t,e.config);const i=new m(r.apiConfiguration),s="ERC721"===a?"1":e.amount,o=await i.getSignableWithdrawal({getSignableWithdrawalRequest:{user:await t.getAddress(),token:wa(e),amount:s}}),{signable_message:c,payload_hash:d}=o.data,u=await n.signMessage(d),{ethAddress:f,ethSignature:l}=await async function(e,t){return{message:e,ethAddress:await t.getAddress(),ethSignature:await Ea(e,t)}}(c,t);return(await i.createWithdrawal({createWithdrawalRequest:{stark_key:ci(o.data.stark_key),amount:s,asset_id:ci(o.data.asset_id),vault_id:ci(o.data.vault_id),nonce:ci(o.data.nonce),stark_signature:u},xImxEthAddress:f,xImxEthSignature:l})).data}async function ui(e,t,n,a){const r=new g(n.apiConfiguration);return(await r.encodeAsset({assetType:e,encodeAssetRequest:{token:{type:t,...a&&{data:a}}}})).data}async function fi({ethSigner:e,starkPublicKey:t,token:n,config:a}){await ii(e,a.immutableXConfig);const r=a.immutableXConfig,i=await ui("asset","ERC20",r,{token_address:n.tokenAddress});return await si(t,e,a)?async function(e,t,n,a){const r=l.Core.connect(a.ethConfiguration.coreContractAddress,e),i=await r.populateTransaction.withdraw(n,t);return e.sendTransaction(i)}(e,i.asset_type,t,r):async function({ethSigner:e,assetType:t,starkPublicKey:n,config:a}){const r=await e.getAddress(),i=a.immutableXConfig,s=new f(i.apiConfiguration),o=await oi(r,n,s),c=l.Registration.connect(a.immutableXConfig.ethConfiguration.registrationContractAddress,e),d=await c.populateTransaction.registerAndWithdraw(r,n,o.operator_signature,t);return e.sendTransaction(d)}({ethSigner:e,assetType:i.asset_type,starkPublicKey:t,config:a})}async function li(e,t,n,a){const r=a.immutableXConfig,i=await ui("mintable-asset","ERC721",r,{id:n.data.id,token_address:n.data.tokenAddress,...n.data.blueprint&&{blueprint:n.data.blueprint}}),s=function(e){const{id:t}=e.data,n=e.data.blueprint||"";return U.sanitizeHex(U.utf8ToHex(`{${t}}:{${n}}`))}(n);return await si(t,e,a)?async function(e,t,n,a,r){const i=l.Core.connect(r.ethConfiguration.coreContractAddress,e),s=await i.populateTransaction.withdrawAndMint(n,t,a);return e.sendTransaction(s)}(e,i.asset_type,t,s,r):async function(e,t,n,a,r){const i=await e.getAddress(),s=new f(r.apiConfiguration),o=await oi(i,n,s),c=l.Registration.connect(r.ethConfiguration.registrationContractAddress,e),d=await c.populateTransaction.regsiterAndWithdrawAndMint(i,n,o.operator_signature,t,a);return e.sendTransaction(d)}(e,i.asset_type,t,s,r)}async function pi(e,t,n,a){const r=a.immutableXConfig,i=await ui("asset","ERC721",r,{token_id:n.tokenId,token_address:n.tokenAddress});return await si(t,e,a)?async function(e,t,n,a,r){const i=l.Core.connect(r.ethConfiguration.coreContractAddress,e),s=await i.populateTransaction.withdrawNft(n,t,a);return e.sendTransaction(s)}(e,i.asset_type,t,n.tokenId,r):async function(e,t,n,a,r){const i=await e.getAddress(),s=new f(r.apiConfiguration),o=await oi(i,n,s),c=l.Registration.connect(r.ethConfiguration.registrationContractAddress,e),d=await c.populateTransaction.registerAndWithdrawNft(i,n,o.operator_signature,t,a);return e.sendTransaction(d)}(e,i.asset_type,t,n.tokenId,r)}async function hi({ethSigner:e,starkPublicKey:t,config:n}){await ii(e,n.immutableXConfig);const a=n.immutableXConfig,r=await ui("asset","ETH",a);return await si(t,e,n)?async function(e,t,n,a){const r=l.Core.connect(a.ethConfiguration.coreContractAddress,e),i=await r.populateTransaction.withdraw(n,t);return e.sendTransaction(i)}(e,r.asset_type,t,a):async function(e,t,n,a){const r=await e.getAddress(),i=new f(a.apiConfiguration),s=await oi(r,n,i),o=l.Registration.connect(a.ethConfiguration.registrationContractAddress,e),c=await o.populateTransaction.registerAndWithdraw(r,n,s.operator_signature,t);return e.sendTransaction(c)}(e,r.asset_type,t,a)}async function mi({signers:{ethSigner:e},starkPublicKey:t,token:n,config:a}){switch(n.type){case"ETH":return hi({ethSigner:e,starkPublicKey:t,config:a});case"ERC20":return fi({ethSigner:e,starkPublicKey:t,token:n,config:a});case"ERC721":return async function({ethSigner:e,starkPublicKey:t,token:n,config:a}){await ii(e,a.immutableXConfig);const{tokenAddress:r}=n,{tokenId:i}=n,s=a.immutableXConfig,o=new b(s.apiConfiguration);return await o.getMintableTokenDetailsByClientTokenId({tokenAddress:r,tokenId:i}).then((n=>li(e,t,{type:"ERC721",data:{id:i,tokenAddress:r,blueprint:n.data.blueprint}},a))).catch((r=>{if(404===r.response?.status)return pi(e,t,n,a);throw r}))}({ethSigner:e,starkPublicKey:t,token:n,config:a})}}async function bi({signers:{ethSigner:e},deposit:t,config:n}){await ii(e,n.immutableXConfig);const a=await e.getAddress(),r=j(t.amount,"wei"),i=n.immutableXConfig,s=new y(i.apiConfiguration),o=new g(i.apiConfiguration),c=new f(i.apiConfiguration),d={user:a,token:{type:t.type,data:{decimals:18}},amount:r.toString()},u=await s.getSignableDeposit({getSignableDepositRequest:d}),p=(await o.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type}}})).data.asset_type,h=u.data.stark_key,m=u.data.vault_id;return await si(h,e,n)?async function(e,t,n,a,r,i){const s=l.Core.connect(i.ethConfiguration.coreContractAddress,e),o=await s.populateTransaction["deposit(uint256,uint256,uint256)"](a,n,r);return e.sendTransaction({...o,value:t})}(e,r,p,h,m,i):async function(e,t,n,a,r,i,s){const o=await e.getAddress(),c=l.Core.connect(i.ethConfiguration.coreContractAddress,e),d=await oi(o,a,s),u=await c.populateTransaction.registerAndDepositEth(o,a,d.operator_signature,n,r);return e.sendTransaction({...u,value:t})}(e,r,p,h,m,i,c)}async function yi({signers:{ethSigner:e},deposit:t,config:n}){await ii(e,n.immutableXConfig);const{apiConfiguration:a,ethConfiguration:r}=n.immutableXConfig,i=await e.getAddress(),s=new E(a),o=new y(a),c=new g(a),d=new f(a),u=await s.getToken({address:t.tokenAddress}),p={decimals:parseInt(u.data.decimals),token_address:t.tokenAddress},h=j(t.amount,0),m=l.IERC20.connect(t.tokenAddress,e),b=await m.populateTransaction.approve(r.coreContractAddress,h);await e.sendTransaction(b);const w={user:i,token:{type:t.type,data:p},amount:h.toString()},T=await o.getSignableDeposit({getSignableDepositRequest:w}),R=(await c.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type,data:{token_address:t.tokenAddress}}}})).data.asset_type,_=T.data.stark_key,v=T.data.vault_id,A=z.from(T.data.amount);return await si(_,e,n)?async function(e,t,n,a,r,i){const s=l.Core.connect(i.coreContractAddress,e),o=await s.populateTransaction.depositERC20(a,n,r,t);return e.sendTransaction(o)}(e,A,R,_,v,r):async function(e,t,n,a,r,i,s){const o=await e.getAddress(),c=l.Core.connect(i.coreContractAddress,e),d=await oi(o,a,s),u=await c.populateTransaction.registerAndDepositERC20(o,a,d.operator_signature,n,r,t);return e.sendTransaction(u)}(e,A,R,_,v,r,d)}async function gi({signers:{ethSigner:e},deposit:t,config:n}){await ii(e,n.immutableXConfig);const a=await e.getAddress(),{immutableXConfig:r}=n,i=new y(r.apiConfiguration),s=new g(r.apiConfiguration),o=new f(r.apiConfiguration),c={token_address:t.tokenAddress,token_id:t.tokenId},d={user:a,token:{type:t.type,data:c},amount:"1".toString()},u=await i.getSignableDeposit({getSignableDepositRequest:d}),p=(await s.encodeAsset({assetType:"asset",encodeAssetRequest:{token:{type:t.type,data:{token_address:t.tokenAddress,token_id:t.tokenId}}}})).data.asset_type,h=u.data.stark_key,m=u.data.vault_id,b=await si(h,e,n),E=l.IERC721.connect(t.tokenAddress,e),w=r.ethConfiguration.coreContractAddress;if(await E.isApprovedForAll(a,w)||await E.setApprovalForAll(w,!0),!b){const t=await oi(a,h,o),n=l.Core.connect(r.ethConfiguration.coreContractAddress,e);await n.registerUser(a,h,t.operator_signature)}return async function(e,t,n,a,r,i){const s=l.Core.connect(i.ethConfiguration.coreContractAddress,e),o=await s.populateTransaction.depositNft(a,n,r,t);return e.sendTransaction(o)}(e,t.tokenId,p,h,m,r)}class Ei{config;signers;constructor(e,t,n){this.config=e,this.signers={ethSigner:t,starkSigner:n}}async getAddress(){return this.signers.ethSigner.getAddress()}async isRegisteredOffchain(){return async function(e,t){try{const n=new f(t.immutableXConfig.apiConfiguration),a=await n.getUsers({user:e}),{accounts:r}=a.data;return r?.length>0}catch(e){if(e instanceof n&&404===e.response?.status)return!1;throw e}}(await this.getAddress(),this.config)}registerOffchain(){return async function(e,t){await ii(e.ethSigner,t.immutableXConfig);const n=new f(t.immutableXConfig.apiConfiguration),a=await e.ethSigner.getAddress(),r=await e.starkSigner.getAddress(),i=await n.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:a,stark_key:r}}),{signable_message:s,payload_hash:o}=i.data,c=await Ea(s,e.ethSigner),d=await e.starkSigner.signMessage(o);return(await n.registerUser({registerUserRequest:{eth_signature:c,ether_key:a,stark_signature:d,stark_key:r}})).data}(this.signers,this.config)}batchNftTransfer(e){return async function({signers:{ethSigner:e,starkSigner:t},request:n,config:a}){await ii(e,a.immutableXConfig);const r=await e.getAddress(),i=new d(a.immutableXConfig.apiConfiguration),s=n.map((e=>({amount:"1",token:wa({type:"ERC721",tokenId:e.tokenId,tokenAddress:e.tokenAddress}),receiver:e.receiver}))),o=await i.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:r,signable_requests:s}}),c=o.data.signable_message;if(void 0===c)throw new Error("Invalid response from Signable registration offchain");const u=await Ea(c,e),f=[];for(const e of o.data.signable_responses){const n=await t.signMessage(e.payload_hash),a={sender_vault_id:e.sender_vault_id,receiver_stark_key:e.receiver_stark_key,receiver_vault_id:e.receiver_vault_id,asset_id:e.asset_id,amount:e.amount,nonce:e.nonce,expiration_timestamp:e.expiration_timestamp,stark_signature:n};f.push(a)}const l={sender_stark_key:o.data.sender_stark_key,requests:f},p=await i.createTransfer({createTransferRequestV2:l,xImxEthAddress:r,xImxEthSignature:u});return{transfer_ids:p?.data.transfer_ids}}({signers:this.signers,request:e,config:this.config})}cancelOrder(e){return async function({signers:e,request:t,config:n}){const a=new u(n.immutableXConfig.apiConfiguration),r=await a.getSignableCancelOrderV3({getSignableCancelOrderRequest:{order_id:t.order_id}}),{signable_message:i,payload_hash:s}=r.data,o=await Ea(i,e.ethSigner),c=await e.starkSigner.signMessage(s),d=await e.ethSigner.getAddress(),f=await a.cancelOrderV3({id:t.order_id.toString(),cancelOrderRequest:{order_id:t.order_id,stark_signature:c},xImxEthAddress:d,xImxEthSignature:o});return{order_id:f.data.order_id,status:f.data.status}}({signers:this.signers,request:e,config:this.config})}completeWithdrawal(e,t){return mi({config:this.config,signers:this.signers,token:t,starkPublicKey:e})}createOrder(e){return async function({signers:e,request:t,config:n}){await ii(e.ethSigner,n.immutableXConfig);const a=await e.ethSigner.getAddress(),r=new u(n.immutableXConfig.apiConfiguration),i="ERC721"===t.sell.type?"1":t.sell.amount,s={user:a,amount_buy:"ERC721"===t.buy.type?"1":t.buy.amount,token_buy:wa(t.buy),amount_sell:i,token_sell:wa(t.sell),fees:t.fees,expiration_timestamp:t.expiration_timestamp},o=await r.getSignableOrder({getSignableOrderRequestV3:s}),{signable_message:c,payload_hash:d}=o.data,f=await Ea(c,e.ethSigner),l=await e.starkSigner.signMessage(d),p=o.data,h={createOrderRequest:{amount_buy:p.amount_buy,amount_sell:p.amount_sell,asset_id_buy:p.asset_id_buy,asset_id_sell:p.asset_id_sell,expiration_timestamp:p.expiration_timestamp,fees:t.fees,nonce:p.nonce,stark_key:p.stark_key,stark_signature:l,vault_id_buy:p.vault_id_buy,vault_id_sell:p.vault_id_sell},xImxEthAddress:a,xImxEthSignature:f};return{...(await r.createOrderV3(h)).data}}({signers:this.signers,request:e,config:this.config})}createTrade(e){return async function({signers:{ethSigner:e,starkSigner:t},request:n,config:a}){await ii(e,a.immutableXConfig);const r=await e.getAddress(),i=new p(a.immutableXConfig.apiConfiguration),s=await i.getSignableTrade({getSignableTradeRequest:{user:r,order_id:n.order_id,fees:n.fees}}),{signable_message:o,payload_hash:c}=s.data,d=await Ea(o,e),u=await t.signMessage(c);return(await i.createTradeV3({createTradeRequest:{amount_buy:s.data.amount_buy,amount_sell:s.data.amount_sell,asset_id_buy:s.data.asset_id_buy,asset_id_sell:s.data.asset_id_sell,expiration_timestamp:s.data.expiration_timestamp,fee_info:s.data.fee_info,fees:n.fees,include_fees:!0,nonce:s.data.nonce,order_id:n.order_id,stark_key:s.data.stark_key,vault_id_buy:s.data.vault_id_buy,vault_id_sell:s.data.vault_id_sell,stark_signature:u},xImxEthAddress:r,xImxEthSignature:d})).data}({signers:this.signers,request:e,config:this.config})}deposit(e){return async function({signers:e,deposit:t,config:n}){switch(t.type){case"ETH":return bi({signers:e,deposit:t,config:n});case"ERC20":return yi({signers:e,deposit:t,config:n});case"ERC721":return gi({signers:e,deposit:t,config:n})}}({signers:this.signers,deposit:e,config:this.config})}exchangeTransfer(e){return async function({signers:e,request:t,config:n}){await ii(e.ethSigner,n.immutableXConfig);const a=new h(n.immutableXConfig.apiConfiguration),r=await e.ethSigner.getAddress(),i=t.amount,s=await a.getExchangeSignableTransfer({id:t.transactionID,getSignableTransferRequest:{sender:r,token:wa(t),amount:i,receiver:t.receiver}}),{signable_message:o,payload_hash:c}=s.data,d=await Ea(o,e.ethSigner),u=await e.starkSigner.signMessage(c),f={sender_stark_key:s.data.sender_stark_key,sender_vault_id:s.data.sender_vault_id,receiver_stark_key:s.data.receiver_stark_key,receiver_vault_id:s.data.receiver_vault_id,asset_id:s.data.asset_id,amount:s.data.amount,nonce:s.data.nonce,expiration_timestamp:s.data.expiration_timestamp,stark_signature:u},l=await a.createExchangeTransfer({id:t.transactionID,createTransferRequest:f,xImxEthAddress:r,xImxEthSignature:d});return{sent_signature:l?.data.sent_signature,status:l?.data.status?.toString(),time:l?.data.time,transfer_id:l?.data.transfer_id}}({signers:this.signers,request:e,config:this.config})}async isRegisteredOnchain(){return si(await this.signers.starkSigner.getAddress(),this.signers.ethSigner,this.config)}prepareWithdrawal(e){return async function({signers:e,withdrawal:t,config:n}){return di({signers:e,config:n.immutableXConfig,...t})}({signers:this.signers,withdrawal:e,config:this.config})}transfer(e){return async function({signers:{ethSigner:e,starkSigner:t},request:n,config:a}){await ii(e,a.immutableXConfig);const r=await e.getAddress(),i=new d(a.immutableXConfig.apiConfiguration),s="ERC721"===n.type?"1":n.amount,o=await i.getSignableTransferV1({getSignableTransferRequest:{sender:r,token:wa(n),amount:s,receiver:n.receiver}}),{signable_message:c,payload_hash:u}=o.data,f=await Ea(c,e),l=await t.signMessage(u),p={sender_stark_key:o.data.sender_stark_key,sender_vault_id:o.data.sender_vault_id,receiver_stark_key:o.data.receiver_stark_key,receiver_vault_id:o.data.receiver_vault_id,asset_id:o.data.asset_id,amount:o.data.amount,nonce:o.data.nonce,expiration_timestamp:o.data.expiration_timestamp,stark_signature:l},h=await i.createTransferV1({createTransferRequest:p,xImxEthAddress:r,xImxEthSignature:f});return{sent_signature:h?.data.sent_signature,status:h?.data.status?.toString(),time:h?.data.time,transfer_id:h?.data.transfer_id}}({signers:this.signers,request:e,config:this.config})}}const wi={SWITCH_CHAIN:"wallet_switchEthereumChain",CONNECT:"eth_requestAccounts"};const Ti="The Metamask provider was not found";async function Ri({chainID:e}){const t=await H();if(!function(e){return!!e?.request}(t))throw new Error(Ti);return await async function(e,t){await e.request({method:wi.CONNECT}),t&&await e.request({method:wi.SWITCH_CHAIN,params:[{chainId:`0x${t.toString(16)}`}]})}(t,e),new N.providers.Web3Provider(t)}const _i="message";var vi,Ai;function Ci(e,t){e&&e.contentWindow&&e.contentWindow.postMessage(t,new URL(e.src).origin)}function Ii(e,t,n,a){if(e&&t.source!==e.contentWindow)return;const r=t.data;r.type===n&&a(r.details)}!function(e){e.GET_CONNECTION_REQUEST="GET_CONNECTION_REQUEST",e.CONNECT_WALLET_REQUEST="CONNECT_WALLET_REQUEST",e.SIGN_MESSAGE_REQUEST="SIGN_MESSAGE_REQUEST",e.DISCONNECT_WALLET_REQUEST="DISCONNECT_WALLET_REQUEST"}(vi||(vi={})),function(e){e.CONNECT_WALLET_RESPONSE="CONNECT_WALLET_RESPONSE",e.SIGN_MESSAGE_RESPONSE="SIGN_MESSAGE_RESPONSE",e.GET_CONNECTION_RESPONSE="GET_CONNECTION_RESPONSE",e.DISCONNECT_WALLET_RESPONSE="DISCONNECT_WALLET_RESPONSE"}(Ai||(Ai={}));class Oi{publicAddress;iframe;constructor(e,t){this.publicAddress=e,this.iframe=t}getAddress(){return this.publicAddress}signMessage(e){return new Promise(((t,n)=>{const a=e=>{Ii(this.iframe,e,Ai.SIGN_MESSAGE_RESPONSE,(e=>{window.removeEventListener(_i,a),e.success||n(new Error(e.error?.message)),t(e.data.signedMessage)}))};window.addEventListener(_i,a),Ci(this.iframe,{type:vi.SIGN_MESSAGE_REQUEST,details:{starkPublicKey:this.publicAddress,message:e}})}))}getIFrame(){return this.iframe}}const Si="imx-wallet-app",Ni={[se.SANDBOX]:"https://wallets.sandbox.immutable.com",[se.PRODUCTION]:"https://wallets.immutable.com"},ki="display: none;";async function Mi(e){const t=document.querySelector(`iframe#${Si}`);return t||await async function(e){return new Promise((t=>{const n=document.createElement("iframe");n.setAttribute("id",Si),n.setAttribute("src",Ni[e]),n.setAttribute("style",ki),document.body.appendChild(n),n.onload=()=>t(n)}))}(e)}var Pi;!function(e){e.PROVIDER_CONNECTION_ERROR="PROVIDER_CONNECTION_ERROR",e.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR"}(Pi||(Pi={}));class Di extends Error{type;constructor(e,t){super(e),this.type=t}}const xi=async(e,t)=>{try{return await e()}catch(e){const n=t.message||`${e.message}`||"UnknownError";throw new Di(n,t.type)}};class Li extends Ei{static imxSigner;static async connect(e){return await xi((async()=>{const t=await Ri({chainID:e.immutableXConfig.ethConfiguration.chainID});return this.imxSigner=await async function(e,t){const n=e.getSigner(),a=await n.getAddress(),r=await n.signMessage("Only sign this request if you’ve initiated an action with Immutable X."),i=await Mi(t);return new Promise(((e,t)=>{const n=a=>{Ii(i,a,Ai.CONNECT_WALLET_RESPONSE,(a=>{window.removeEventListener(_i,n),a.success||t(new Error("The L2 IMX Wallet connection has failed")),e(new Oi(a.data.starkPublicKey,i))}))};window.addEventListener(_i,n),Ci(i,{type:vi.CONNECT_WALLET_REQUEST,details:{ethAddress:a,signature:r}})}))}(t,e.baseConfig.environment),new Li(e,t.getSigner(),this.imxSigner)}),{type:Pi.WALLET_CONNECTION_ERROR})}static async disconnect(){if(!this.imxSigner)throw new Di("Attempted to disconnect from the MetaMask IMX provider without an established connection",Pi.PROVIDER_CONNECTION_ERROR);return xi((async()=>{await async function(e){const t=e.getIFrame();return new Promise(((n,a)=>{const r=e=>{Ii(t,e,Ai.DISCONNECT_WALLET_RESPONSE,(e=>{window.removeEventListener(_i,r),!e.success&&e.error&&a(e.error),t.remove(),n()}))};window.addEventListener(_i,r),Ci(t,{type:vi.DISCONNECT_WALLET_REQUEST,details:{starkPublicKey:e.getAddress()}})}))}(this.imxSigner)}),{type:Pi.PROVIDER_CONNECTION_ERROR})}static async signMessage(e){if(!this.imxSigner)throw new Di("Attempted to sign a message with the MetaMask IMX provider without an established connection",Pi.PROVIDER_CONNECTION_ERROR);return xi((async()=>await this.imxSigner.signMessage(e)),{type:Pi.PROVIDER_CONNECTION_ERROR})}}var Ui=Object.freeze({__proto__:null,GenericIMXProvider:Ei,MetaMaskIMXProvider:Li,ProviderConfiguration:class{immutableXConfig;baseConfig;constructor({baseConfig:e,overrides:t}){if(this.baseConfig=e,t)this.immutableXConfig=t.immutableXConfig;else switch(e.environment){case se.SANDBOX:this.immutableXConfig=i.SANDBOX;break;case se.PRODUCTION:this.immutableXConfig=i.PRODUCTION}}}});const Fi="11155111",Bi="0x0000000000000000000000000000000000001002",Vi="0x0000000000000000000000000000000000000001",Gi={rootChainID:Fi,childChainID:"13473"},qi={rootChainID:Fi,childChainID:"13472"},ji={rootChainID:"1",childChainID:"13371"};var zi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Hi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Wi={exports:{}};!function(e,t){function n(e,t){if(!e)throw new Error(t||"Assertion failed")}function a(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function r(e,t,n){if(r.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var i;"object"==typeof e?e.exports=r:t.BN=r,r.BN=r,r.wordSize=26;try{i="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:require("buffer").Buffer}catch(e){}function s(e,t){var a=e.charCodeAt(t);return a>=48&&a<=57?a-48:a>=65&&a<=70?a-55:a>=97&&a<=102?a-87:void n(!1,"Invalid character in "+e)}function o(e,t,n){var a=s(e,n);return n-1>=t&&(a|=s(e,n-1)<<4),a}function c(e,t,a,r){for(var i=0,s=0,o=Math.min(e.length,a),c=t;c<o;c++){var d=e.charCodeAt(c)-48;i*=r,s=d>=49?d-49+10:d>=17?d-17+10:d,n(d>=0&&s<r,"Invalid character"),i+=s}return i}function d(e,t){e.words=t.words,e.length=t.length,e.negative=t.negative,e.red=t.red}if(r.isBN=function(e){return e instanceof r||null!==e&&"object"==typeof e&&e.constructor.wordSize===r.wordSize&&Array.isArray(e.words)},r.max=function(e,t){return e.cmp(t)>0?e:t},r.min=function(e,t){return e.cmp(t)<0?e:t},r.prototype._init=function(e,t,a){if("number"==typeof e)return this._initNumber(e,t,a);if("object"==typeof e)return this._initArray(e,t,a);"hex"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var r=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(r++,this.negative=1),r<e.length&&(16===t?this._parseHex(e,r,a):(this._parseBase(e,t,r),"le"===a&&this._initArray(this.toArray(),t,a)))},r.prototype._initNumber=function(e,t,a){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===a&&this._initArray(this.toArray(),t,a)},r.prototype._initArray=function(e,t,a){if(n("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var i,s,o=0;if("be"===a)for(r=e.length-1,i=0;r>=0;r-=3)s=e[r]|e[r-1]<<8|e[r-2]<<16,this.words[i]|=s<<o&67108863,this.words[i+1]=s>>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);else if("le"===a)for(r=0,i=0;r<e.length;r+=3)s=e[r]|e[r+1]<<8|e[r+2]<<16,this.words[i]|=s<<o&67108863,this.words[i+1]=s>>>26-o&67108863,(o+=24)>=26&&(o-=26,i++);return this._strip()},r.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var a=0;a<this.length;a++)this.words[a]=0;var r,i=0,s=0;if("be"===n)for(a=e.length-1;a>=t;a-=2)r=o(e,t,a)<<i,this.words[s]|=67108863&r,i>=18?(i-=18,s+=1,this.words[s]|=r>>>26):i+=8;else for(a=(e.length-t)%2==0?t+1:t;a<e.length;a+=2)r=o(e,t,a)<<i,this.words[s]|=67108863&r,i>=18?(i-=18,s+=1,this.words[s]|=r>>>26):i+=8;this._strip()},r.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var a=0,r=1;r<=67108863;r*=t)a++;a--,r=r/t|0;for(var i=e.length-n,s=i%a,o=Math.min(i,i-s)+n,d=0,u=n;u<o;u+=a)d=c(e,u,u+a,t),this.imuln(r),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d);if(0!==s){var f=1;for(d=c(e,u,e.length,t),u=0;u<s;u++)f*=t;this.imuln(f),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d)}this._strip()},r.prototype.copy=function(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},r.prototype._move=function(e){d(e,this)},r.prototype.clone=function(){var e=new r(null);return this.copy(e),e},r.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},r.prototype._strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},r.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{r.prototype[Symbol.for("nodejs.util.inspect.custom")]=u}catch(e){r.prototype.inspect=u}else r.prototype.inspect=u;function u(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var f=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(e,t,n){n.negative=t.negative^e.negative;var a=e.length+t.length|0;n.length=a,a=a-1|0;var r=0|e.words[0],i=0|t.words[0],s=r*i,o=67108863&s,c=s/67108864|0;n.words[0]=o;for(var d=1;d<a;d++){for(var u=c>>>26,f=67108863&c,l=Math.min(d,t.length-1),p=Math.max(0,d-e.length+1);p<=l;p++){var h=d-p|0;u+=(s=(r=0|e.words[h])*(i=0|t.words[p])+f)/67108864|0,f=67108863&s}n.words[d]=0|f,c=0|u}return 0!==c?n.words[d]=0|c:n.length--,n._strip()}r.prototype.toString=function(e,t){var a;if(t=0|t||1,16===(e=e||10)||"hex"===e){a="";for(var r=0,i=0,s=0;s<this.length;s++){var o=this.words[s],c=(16777215&(o<<r|i)).toString(16);i=o>>>24-r&16777215,(r+=2)>=26&&(r-=26,s--),a=0!==i||s!==this.length-1?f[6-c.length]+c+a:c+a}for(0!==i&&(a=i.toString(16)+a);a.length%t!=0;)a="0"+a;return 0!==this.negative&&(a="-"+a),a}if(e===(0|e)&&e>=2&&e<=36){var d=l[e],u=p[e];a="";var h=this.clone();for(h.negative=0;!h.isZero();){var m=h.modrn(u).toString(e);a=(h=h.idivn(u)).isZero()?m+a:f[d-m.length]+m+a}for(this.isZero()&&(a="0"+a);a.length%t!=0;)a="0"+a;return 0!==this.negative&&(a="-"+a),a}n(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},r.prototype.toJSON=function(){return this.toString(16,2)},i&&(r.prototype.toBuffer=function(e,t){return this.toArrayLike(i,e,t)}),r.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},r.prototype.toArrayLike=function(e,t,a){this._strip();var r=this.byteLength(),i=a||Math.max(1,r);n(r<=i,"byte array longer than desired length"),n(i>0,"Requested array length <= 0");var s=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,i);return this["_toArrayLike"+("le"===t?"LE":"BE")](s,r),s},r.prototype._toArrayLikeLE=function(e,t){for(var n=0,a=0,r=0,i=0;r<this.length;r++){var s=this.words[r]<<i|a;e[n++]=255&s,n<e.length&&(e[n++]=s>>8&255),n<e.length&&(e[n++]=s>>16&255),6===i?(n<e.length&&(e[n++]=s>>24&255),a=0,i=0):(a=s>>>24,i+=2)}if(n<e.length)for(e[n++]=a;n<e.length;)e[n++]=0},r.prototype._toArrayLikeBE=function(e,t){for(var n=e.length-1,a=0,r=0,i=0;r<this.length;r++){var s=this.words[r]<<i|a;e[n--]=255&s,n>=0&&(e[n--]=s>>8&255),n>=0&&(e[n--]=s>>16&255),6===i?(n>=0&&(e[n--]=s>>24&255),a=0,i=0):(a=s>>>24,i+=2)}if(n>=0)for(e[n--]=a;n>=0;)e[n--]=0},Math.clz32?r.prototype._countBits=function(e){return 32-Math.clz32(e)}:r.prototype._countBits=function(e){var t=e,n=0;return t>=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},r.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 0==(8191&t)&&(n+=13,t>>>=13),0==(127&t)&&(n+=7,t>>>=7),0==(15&t)&&(n+=4,t>>>=4),0==(3&t)&&(n+=2,t>>>=2),0==(1&t)&&n++,n},r.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var n=this._zeroBits(this.words[t]);if(e+=n,26!==n)break}return e},r.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},r.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},r.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},r.prototype.isNeg=function(){return 0!==this.negative},r.prototype.neg=function(){return this.clone().ineg()},r.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},r.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this._strip()},r.prototype.ior=function(e){return n(0==(this.negative|e.negative)),this.iuor(e)},r.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},r.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},r.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;n<t.length;n++)this.words[n]=this.words[n]&e.words[n];return this.length=t.length,this._strip()},r.prototype.iand=function(e){return n(0==(this.negative|e.negative)),this.iuand(e)},r.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},r.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},r.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var a=0;a<n.length;a++)this.words[a]=t.words[a]^n.words[a];if(this!==t)for(;a<t.length;a++)this.words[a]=t.words[a];return this.length=t.length,this._strip()},r.prototype.ixor=function(e){return n(0==(this.negative|e.negative)),this.iuxor(e)},r.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},r.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},r.prototype.inotn=function(e){n("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),a=e%26;this._expand(t),a>0&&t--;for(var r=0;r<t;r++)this.words[r]=67108863&~this.words[r];return a>0&&(this.words[r]=~this.words[r]&67108863>>26-a),this._strip()},r.prototype.notn=function(e){return this.clone().inotn(e)},r.prototype.setn=function(e,t){n("number"==typeof e&&e>=0);var a=e/26|0,r=e%26;return this._expand(a+1),this.words[a]=t?this.words[a]|1<<r:this.words[a]&~(1<<r),this._strip()},r.prototype.iadd=function(e){var t,n,a;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(n=this,a=e):(n=e,a=this);for(var r=0,i=0;i<a.length;i++)t=(0|n.words[i])+(0|a.words[i])+r,this.words[i]=67108863&t,r=t>>>26;for(;0!==r&&i<n.length;i++)t=(0|n.words[i])+r,this.words[i]=67108863&t,r=t>>>26;if(this.length=n.length,0!==r)this.words[this.length]=r,this.length++;else if(n!==this)for(;i<n.length;i++)this.words[i]=n.words[i];return this},r.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},r.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,a,r=this.cmp(e);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;r>0?(n=this,a=e):(n=e,a=this);for(var i=0,s=0;s<a.length;s++)i=(t=(0|n.words[s])-(0|a.words[s])+i)>>26,this.words[s]=67108863&t;for(;0!==i&&s<n.length;s++)i=(t=(0|n.words[s])+i)>>26,this.words[s]=67108863&t;if(0===i&&s<n.length&&n!==this)for(;s<n.length;s++)this.words[s]=n.words[s];return this.length=Math.max(this.length,s),n!==this&&(this.negative=1),this._strip()},r.prototype.sub=function(e){return this.clone().isub(e)};var m=function(e,t,n){var a,r,i,s=e.words,o=t.words,c=n.words,d=0,u=0|s[0],f=8191&u,l=u>>>13,p=0|s[1],h=8191&p,m=p>>>13,b=0|s[2],y=8191&b,g=b>>>13,E=0|s[3],w=8191&E,T=E>>>13,R=0|s[4],_=8191&R,v=R>>>13,A=0|s[5],C=8191&A,I=A>>>13,O=0|s[6],S=8191&O,N=O>>>13,k=0|s[7],M=8191&k,P=k>>>13,D=0|s[8],x=8191&D,L=D>>>13,U=0|s[9],F=8191&U,B=U>>>13,V=0|o[0],G=8191&V,q=V>>>13,j=0|o[1],z=8191&j,H=j>>>13,W=0|o[2],$=8191&W,X=W>>>13,K=0|o[3],J=8191&K,Z=K>>>13,Q=0|o[4],Y=8191&Q,ee=Q>>>13,te=0|o[5],ne=8191&te,ae=te>>>13,re=0|o[6],ie=8191&re,se=re>>>13,oe=0|o[7],ce=8191&oe,de=oe>>>13,ue=0|o[8],fe=8191&ue,le=ue>>>13,pe=0|o[9],he=8191&pe,me=pe>>>13;n.negative=e.negative^t.negative,n.length=19;var be=(d+(a=Math.imul(f,G))|0)+((8191&(r=(r=Math.imul(f,q))+Math.imul(l,G)|0))<<13)|0;d=((i=Math.imul(l,q))+(r>>>13)|0)+(be>>>26)|0,be&=67108863,a=Math.imul(h,G),r=(r=Math.imul(h,q))+Math.imul(m,G)|0,i=Math.imul(m,q);var ye=(d+(a=a+Math.imul(f,z)|0)|0)+((8191&(r=(r=r+Math.imul(f,H)|0)+Math.imul(l,z)|0))<<13)|0;d=((i=i+Math.imul(l,H)|0)+(r>>>13)|0)+(ye>>>26)|0,ye&=67108863,a=Math.imul(y,G),r=(r=Math.imul(y,q))+Math.imul(g,G)|0,i=Math.imul(g,q),a=a+Math.imul(h,z)|0,r=(r=r+Math.imul(h,H)|0)+Math.imul(m,z)|0,i=i+Math.imul(m,H)|0;var ge=(d+(a=a+Math.imul(f,$)|0)|0)+((8191&(r=(r=r+Math.imul(f,X)|0)+Math.imul(l,$)|0))<<13)|0;d=((i=i+Math.imul(l,X)|0)+(r>>>13)|0)+(ge>>>26)|0,ge&=67108863,a=Math.imul(w,G),r=(r=Math.imul(w,q))+Math.imul(T,G)|0,i=Math.imul(T,q),a=a+Math.imul(y,z)|0,r=(r=r+Math.imul(y,H)|0)+Math.imul(g,z)|0,i=i+Math.imul(g,H)|0,a=a+Math.imul(h,$)|0,r=(r=r+Math.imul(h,X)|0)+Math.imul(m,$)|0,i=i+Math.imul(m,X)|0;var Ee=(d+(a=a+Math.imul(f,J)|0)|0)+((8191&(r=(r=r+Math.imul(f,Z)|0)+Math.imul(l,J)|0))<<13)|0;d=((i=i+Math.imul(l,Z)|0)+(r>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,a=Math.imul(_,G),r=(r=Math.imul(_,q))+Math.imul(v,G)|0,i=Math.imul(v,q),a=a+Math.imul(w,z)|0,r=(r=r+Math.imul(w,H)|0)+Math.imul(T,z)|0,i=i+Math.imul(T,H)|0,a=a+Math.imul(y,$)|0,r=(r=r+Math.imul(y,X)|0)+Math.imul(g,$)|0,i=i+Math.imul(g,X)|0,a=a+Math.imul(h,J)|0,r=(r=r+Math.imul(h,Z)|0)+Math.imul(m,J)|0,i=i+Math.imul(m,Z)|0;var we=(d+(a=a+Math.imul(f,Y)|0)|0)+((8191&(r=(r=r+Math.imul(f,ee)|0)+Math.imul(l,Y)|0))<<13)|0;d=((i=i+Math.imul(l,ee)|0)+(r>>>13)|0)+(we>>>26)|0,we&=67108863,a=Math.imul(C,G),r=(r=Math.imul(C,q))+Math.imul(I,G)|0,i=Math.imul(I,q),a=a+Math.imul(_,z)|0,r=(r=r+Math.imul(_,H)|0)+Math.imul(v,z)|0,i=i+Math.imul(v,H)|0,a=a+Math.imul(w,$)|0,r=(r=r+Math.imul(w,X)|0)+Math.imul(T,$)|0,i=i+Math.imul(T,X)|0,a=a+Math.imul(y,J)|0,r=(r=r+Math.imul(y,Z)|0)+Math.imul(g,J)|0,i=i+Math.imul(g,Z)|0,a=a+Math.imul(h,Y)|0,r=(r=r+Math.imul(h,ee)|0)+Math.imul(m,Y)|0,i=i+Math.imul(m,ee)|0;var Te=(d+(a=a+Math.imul(f,ne)|0)|0)+((8191&(r=(r=r+Math.imul(f,ae)|0)+Math.imul(l,ne)|0))<<13)|0;d=((i=i+Math.imul(l,ae)|0)+(r>>>13)|0)+(Te>>>26)|0,Te&=67108863,a=Math.imul(S,G),r=(r=Math.imul(S,q))+Math.imul(N,G)|0,i=Math.imul(N,q),a=a+Math.imul(C,z)|0,r=(r=r+Math.imul(C,H)|0)+Math.imul(I,z)|0,i=i+Math.imul(I,H)|0,a=a+Math.imul(_,$)|0,r=(r=r+Math.imul(_,X)|0)+Math.imul(v,$)|0,i=i+Math.imul(v,X)|0,a=a+Math.imul(w,J)|0,r=(r=r+Math.imul(w,Z)|0)+Math.imul(T,J)|0,i=i+Math.imul(T,Z)|0,a=a+Math.imul(y,Y)|0,r=(r=r+Math.imul(y,ee)|0)+Math.imul(g,Y)|0,i=i+Math.imul(g,ee)|0,a=a+Math.imul(h,ne)|0,r=(r=r+Math.imul(h,ae)|0)+Math.imul(m,ne)|0,i=i+Math.imul(m,ae)|0;var Re=(d+(a=a+Math.imul(f,ie)|0)|0)+((8191&(r=(r=r+Math.imul(f,se)|0)+Math.imul(l,ie)|0))<<13)|0;d=((i=i+Math.imul(l,se)|0)+(r>>>13)|0)+(Re>>>26)|0,Re&=67108863,a=Math.imul(M,G),r=(r=Math.imul(M,q))+Math.imul(P,G)|0,i=Math.imul(P,q),a=a+Math.imul(S,z)|0,r=(r=r+Math.imul(S,H)|0)+Math.imul(N,z)|0,i=i+Math.imul(N,H)|0,a=a+Math.imul(C,$)|0,r=(r=r+Math.imul(C,X)|0)+Math.imul(I,$)|0,i=i+Math.imul(I,X)|0,a=a+Math.imul(_,J)|0,r=(r=r+Math.imul(_,Z)|0)+Math.imul(v,J)|0,i=i+Math.imul(v,Z)|0,a=a+Math.imul(w,Y)|0,r=(r=r+Math.imul(w,ee)|0)+Math.imul(T,Y)|0,i=i+Math.imul(T,ee)|0,a=a+Math.imul(y,ne)|0,r=(r=r+Math.imul(y,ae)|0)+Math.imul(g,ne)|0,i=i+Math.imul(g,ae)|0,a=a+Math.imul(h,ie)|0,r=(r=r+Math.imul(h,se)|0)+Math.imul(m,ie)|0,i=i+Math.imul(m,se)|0;var _e=(d+(a=a+Math.imul(f,ce)|0)|0)+((8191&(r=(r=r+Math.imul(f,de)|0)+Math.imul(l,ce)|0))<<13)|0;d=((i=i+Math.imul(l,de)|0)+(r>>>13)|0)+(_e>>>26)|0,_e&=67108863,a=Math.imul(x,G),r=(r=Math.imul(x,q))+Math.imul(L,G)|0,i=Math.imul(L,q),a=a+Math.imul(M,z)|0,r=(r=r+Math.imul(M,H)|0)+Math.imul(P,z)|0,i=i+Math.imul(P,H)|0,a=a+Math.imul(S,$)|0,r=(r=r+Math.imul(S,X)|0)+Math.imul(N,$)|0,i=i+Math.imul(N,X)|0,a=a+Math.imul(C,J)|0,r=(r=r+Math.imul(C,Z)|0)+Math.imul(I,J)|0,i=i+Math.imul(I,Z)|0,a=a+Math.imul(_,Y)|0,r=(r=r+Math.imul(_,ee)|0)+Math.imul(v,Y)|0,i=i+Math.imul(v,ee)|0,a=a+Math.imul(w,ne)|0,r=(r=r+Math.imul(w,ae)|0)+Math.imul(T,ne)|0,i=i+Math.imul(T,ae)|0,a=a+Math.imul(y,ie)|0,r=(r=r+Math.imul(y,se)|0)+Math.imul(g,ie)|0,i=i+Math.imul(g,se)|0,a=a+Math.imul(h,ce)|0,r=(r=r+Math.imul(h,de)|0)+Math.imul(m,ce)|0,i=i+Math.imul(m,de)|0;var ve=(d+(a=a+Math.imul(f,fe)|0)|0)+((8191&(r=(r=r+Math.imul(f,le)|0)+Math.imul(l,fe)|0))<<13)|0;d=((i=i+Math.imul(l,le)|0)+(r>>>13)|0)+(ve>>>26)|0,ve&=67108863,a=Math.imul(F,G),r=(r=Math.imul(F,q))+Math.imul(B,G)|0,i=Math.imul(B,q),a=a+Math.imul(x,z)|0,r=(r=r+Math.imul(x,H)|0)+Math.imul(L,z)|0,i=i+Math.imul(L,H)|0,a=a+Math.imul(M,$)|0,r=(r=r+Math.imul(M,X)|0)+Math.imul(P,$)|0,i=i+Math.imul(P,X)|0,a=a+Math.imul(S,J)|0,r=(r=r+Math.imul(S,Z)|0)+Math.imul(N,J)|0,i=i+Math.imul(N,Z)|0,a=a+Math.imul(C,Y)|0,r=(r=r+Math.imul(C,ee)|0)+Math.imul(I,Y)|0,i=i+Math.imul(I,ee)|0,a=a+Math.imul(_,ne)|0,r=(r=r+Math.imul(_,ae)|0)+Math.imul(v,ne)|0,i=i+Math.imul(v,ae)|0,a=a+Math.imul(w,ie)|0,r=(r=r+Math.imul(w,se)|0)+Math.imul(T,ie)|0,i=i+Math.imul(T,se)|0,a=a+Math.imul(y,ce)|0,r=(r=r+Math.imul(y,de)|0)+Math.imul(g,ce)|0,i=i+Math.imul(g,de)|0,a=a+Math.imul(h,fe)|0,r=(r=r+Math.imul(h,le)|0)+Math.imul(m,fe)|0,i=i+Math.imul(m,le)|0;var Ae=(d+(a=a+Math.imul(f,he)|0)|0)+((8191&(r=(r=r+Math.imul(f,me)|0)+Math.imul(l,he)|0))<<13)|0;d=((i=i+Math.imul(l,me)|0)+(r>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,a=Math.imul(F,z),r=(r=Math.imul(F,H))+Math.imul(B,z)|0,i=Math.imul(B,H),a=a+Math.imul(x,$)|0,r=(r=r+Math.imul(x,X)|0)+Math.imul(L,$)|0,i=i+Math.imul(L,X)|0,a=a+Math.imul(M,J)|0,r=(r=r+Math.imul(M,Z)|0)+Math.imul(P,J)|0,i=i+Math.imul(P,Z)|0,a=a+Math.imul(S,Y)|0,r=(r=r+Math.imul(S,ee)|0)+Math.imul(N,Y)|0,i=i+Math.imul(N,ee)|0,a=a+Math.imul(C,ne)|0,r=(r=r+Math.imul(C,ae)|0)+Math.imul(I,ne)|0,i=i+Math.imul(I,ae)|0,a=a+Math.imul(_,ie)|0,r=(r=r+Math.imul(_,se)|0)+Math.imul(v,ie)|0,i=i+Math.imul(v,se)|0,a=a+Math.imul(w,ce)|0,r=(r=r+Math.imul(w,de)|0)+Math.imul(T,ce)|0,i=i+Math.imul(T,de)|0,a=a+Math.imul(y,fe)|0,r=(r=r+Math.imul(y,le)|0)+Math.imul(g,fe)|0,i=i+Math.imul(g,le)|0;var Ce=(d+(a=a+Math.imul(h,he)|0)|0)+((8191&(r=(r=r+Math.imul(h,me)|0)+Math.imul(m,he)|0))<<13)|0;d=((i=i+Math.imul(m,me)|0)+(r>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,a=Math.imul(F,$),r=(r=Math.imul(F,X))+Math.imul(B,$)|0,i=Math.imul(B,X),a=a+Math.imul(x,J)|0,r=(r=r+Math.imul(x,Z)|0)+Math.imul(L,J)|0,i=i+Math.imul(L,Z)|0,a=a+Math.imul(M,Y)|0,r=(r=r+Math.imul(M,ee)|0)+Math.imul(P,Y)|0,i=i+Math.imul(P,ee)|0,a=a+Math.imul(S,ne)|0,r=(r=r+Math.imul(S,ae)|0)+Math.imul(N,ne)|0,i=i+Math.imul(N,ae)|0,a=a+Math.imul(C,ie)|0,r=(r=r+Math.imul(C,se)|0)+Math.imul(I,ie)|0,i=i+Math.imul(I,se)|0,a=a+Math.imul(_,ce)|0,r=(r=r+Math.imul(_,de)|0)+Math.imul(v,ce)|0,i=i+Math.imul(v,de)|0,a=a+Math.imul(w,fe)|0,r=(r=r+Math.imul(w,le)|0)+Math.imul(T,fe)|0,i=i+Math.imul(T,le)|0;var Ie=(d+(a=a+Math.imul(y,he)|0)|0)+((8191&(r=(r=r+Math.imul(y,me)|0)+Math.imul(g,he)|0))<<13)|0;d=((i=i+Math.imul(g,me)|0)+(r>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,a=Math.imul(F,J),r=(r=Math.imul(F,Z))+Math.imul(B,J)|0,i=Math.imul(B,Z),a=a+Math.imul(x,Y)|0,r=(r=r+Math.imul(x,ee)|0)+Math.imul(L,Y)|0,i=i+Math.imul(L,ee)|0,a=a+Math.imul(M,ne)|0,r=(r=r+Math.imul(M,ae)|0)+Math.imul(P,ne)|0,i=i+Math.imul(P,ae)|0,a=a+Math.imul(S,ie)|0,r=(r=r+Math.imul(S,se)|0)+Math.imul(N,ie)|0,i=i+Math.imul(N,se)|0,a=a+Math.imul(C,ce)|0,r=(r=r+Math.imul(C,de)|0)+Math.imul(I,ce)|0,i=i+Math.imul(I,de)|0,a=a+Math.imul(_,fe)|0,r=(r=r+Math.imul(_,le)|0)+Math.imul(v,fe)|0,i=i+Math.imul(v,le)|0;var Oe=(d+(a=a+Math.imul(w,he)|0)|0)+((8191&(r=(r=r+Math.imul(w,me)|0)+Math.imul(T,he)|0))<<13)|0;d=((i=i+Math.imul(T,me)|0)+(r>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,a=Math.imul(F,Y),r=(r=Math.imul(F,ee))+Math.imul(B,Y)|0,i=Math.imul(B,ee),a=a+Math.imul(x,ne)|0,r=(r=r+Math.imul(x,ae)|0)+Math.imul(L,ne)|0,i=i+Math.imul(L,ae)|0,a=a+Math.imul(M,ie)|0,r=(r=r+Math.imul(M,se)|0)+Math.imul(P,ie)|0,i=i+Math.imul(P,se)|0,a=a+Math.imul(S,ce)|0,r=(r=r+Math.imul(S,de)|0)+Math.imul(N,ce)|0,i=i+Math.imul(N,de)|0,a=a+Math.imul(C,fe)|0,r=(r=r+Math.imul(C,le)|0)+Math.imul(I,fe)|0,i=i+Math.imul(I,le)|0;var Se=(d+(a=a+Math.imul(_,he)|0)|0)+((8191&(r=(r=r+Math.imul(_,me)|0)+Math.imul(v,he)|0))<<13)|0;d=((i=i+Math.imul(v,me)|0)+(r>>>13)|0)+(Se>>>26)|0,Se&=67108863,a=Math.imul(F,ne),r=(r=Math.imul(F,ae))+Math.imul(B,ne)|0,i=Math.imul(B,ae),a=a+Math.imul(x,ie)|0,r=(r=r+Math.imul(x,se)|0)+Math.imul(L,ie)|0,i=i+Math.imul(L,se)|0,a=a+Math.imul(M,ce)|0,r=(r=r+Math.imul(M,de)|0)+Math.imul(P,ce)|0,i=i+Math.imul(P,de)|0,a=a+Math.imul(S,fe)|0,r=(r=r+Math.imul(S,le)|0)+Math.imul(N,fe)|0,i=i+Math.imul(N,le)|0;var Ne=(d+(a=a+Math.imul(C,he)|0)|0)+((8191&(r=(r=r+Math.imul(C,me)|0)+Math.imul(I,he)|0))<<13)|0;d=((i=i+Math.imul(I,me)|0)+(r>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,a=Math.imul(F,ie),r=(r=Math.imul(F,se))+Math.imul(B,ie)|0,i=Math.imul(B,se),a=a+Math.imul(x,ce)|0,r=(r=r+Math.imul(x,de)|0)+Math.imul(L,ce)|0,i=i+Math.imul(L,de)|0,a=a+Math.imul(M,fe)|0,r=(r=r+Math.imul(M,le)|0)+Math.imul(P,fe)|0,i=i+Math.imul(P,le)|0;var ke=(d+(a=a+Math.imul(S,he)|0)|0)+((8191&(r=(r=r+Math.imul(S,me)|0)+Math.imul(N,he)|0))<<13)|0;d=((i=i+Math.imul(N,me)|0)+(r>>>13)|0)+(ke>>>26)|0,ke&=67108863,a=Math.imul(F,ce),r=(r=Math.imul(F,de))+Math.imul(B,ce)|0,i=Math.imul(B,de),a=a+Math.imul(x,fe)|0,r=(r=r+Math.imul(x,le)|0)+Math.imul(L,fe)|0,i=i+Math.imul(L,le)|0;var Me=(d+(a=a+Math.imul(M,he)|0)|0)+((8191&(r=(r=r+Math.imul(M,me)|0)+Math.imul(P,he)|0))<<13)|0;d=((i=i+Math.imul(P,me)|0)+(r>>>13)|0)+(Me>>>26)|0,Me&=67108863,a=Math.imul(F,fe),r=(r=Math.imul(F,le))+Math.imul(B,fe)|0,i=Math.imul(B,le);var Pe=(d+(a=a+Math.imul(x,he)|0)|0)+((8191&(r=(r=r+Math.imul(x,me)|0)+Math.imul(L,he)|0))<<13)|0;d=((i=i+Math.imul(L,me)|0)+(r>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var De=(d+(a=Math.imul(F,he))|0)+((8191&(r=(r=Math.imul(F,me))+Math.imul(B,he)|0))<<13)|0;return d=((i=Math.imul(B,me))+(r>>>13)|0)+(De>>>26)|0,De&=67108863,c[0]=be,c[1]=ye,c[2]=ge,c[3]=Ee,c[4]=we,c[5]=Te,c[6]=Re,c[7]=_e,c[8]=ve,c[9]=Ae,c[10]=Ce,c[11]=Ie,c[12]=Oe,c[13]=Se,c[14]=Ne,c[15]=ke,c[16]=Me,c[17]=Pe,c[18]=De,0!==d&&(c[19]=d,n.length++),n};function b(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var a=0,r=0,i=0;i<n.length-1;i++){var s=r;r=0;for(var o=67108863&a,c=Math.min(i,t.length-1),d=Math.max(0,i-e.length+1);d<=c;d++){var u=i-d,f=(0|e.words[u])*(0|t.words[d]),l=67108863&f;o=67108863&(l=l+o|0),r+=(s=(s=s+(f/67108864|0)|0)+(l>>>26)|0)>>>26,s&=67108863}n.words[i]=o,a=s,s=r}return 0!==a?n.words[i]=a:n.length--,n._strip()}function y(e,t,n){return b(e,t,n)}Math.imul||(m=h),r.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?m(this,e,t):n<63?h(this,e,t):n<1024?b(this,e,t):y(this,e,t)},r.prototype.mul=function(e){var t=new r(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},r.prototype.mulf=function(e){var t=new r(null);return t.words=new Array(this.length+e.length),y(this,e,t)},r.prototype.imul=function(e){return this.clone().mulTo(e,this)},r.prototype.imuln=function(e){var t=e<0;t&&(e=-e),n("number"==typeof e),n(e<67108864);for(var a=0,r=0;r<this.length;r++){var i=(0|this.words[r])*e,s=(67108863&i)+(67108863&a);a>>=26,a+=i/67108864|0,a+=s>>>26,this.words[r]=67108863&s}return 0!==a&&(this.words[r]=a,this.length++),t?this.ineg():this},r.prototype.muln=function(e){return this.clone().imuln(e)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n<t.length;n++){var a=n/26|0,r=n%26;t[n]=e.words[a]>>>r&1}return t}(e);if(0===t.length)return new r(1);for(var n=this,a=0;a<t.length&&0===t[a];a++,n=n.sqr());if(++a<t.length)for(var i=n.sqr();a<t.length;a++,i=i.sqr())0!==t[a]&&(n=n.mul(i));return n},r.prototype.iushln=function(e){n("number"==typeof e&&e>=0);var t,a=e%26,r=(e-a)/26,i=67108863>>>26-a<<26-a;if(0!==a){var s=0;for(t=0;t<this.length;t++){var o=this.words[t]&i,c=(0|this.words[t])-o<<a;this.words[t]=c|s,s=o>>>26-a}s&&(this.words[t]=s,this.length++)}if(0!==r){for(t=this.length-1;t>=0;t--)this.words[t+r]=this.words[t];for(t=0;t<r;t++)this.words[t]=0;this.length+=r}return this._strip()},r.prototype.ishln=function(e){return n(0===this.negative),this.iushln(e)},r.prototype.iushrn=function(e,t,a){var r;n("number"==typeof e&&e>=0),r=t?(t-t%26)/26:0;var i=e%26,s=Math.min((e-i)/26,this.length),o=67108863^67108863>>>i<<i,c=a;if(r-=s,r=Math.max(0,r),c){for(var d=0;d<s;d++)c.words[d]=this.words[d];c.length=s}if(0===s);else if(this.length>s)for(this.length-=s,d=0;d<this.length;d++)this.words[d]=this.words[d+s];else this.words[0]=0,this.length=1;var u=0;for(d=this.length-1;d>=0&&(0!==u||d>=r);d--){var f=0|this.words[d];this.words[d]=u<<26-i|f>>>i,u=f&o}return c&&0!==u&&(c.words[c.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},r.prototype.ishrn=function(e,t,a){return n(0===this.negative),this.iushrn(e,t,a)},r.prototype.shln=function(e){return this.clone().ishln(e)},r.prototype.ushln=function(e){return this.clone().iushln(e)},r.prototype.shrn=function(e){return this.clone().ishrn(e)},r.prototype.ushrn=function(e){return this.clone().iushrn(e)},r.prototype.testn=function(e){n("number"==typeof e&&e>=0);var t=e%26,a=(e-t)/26,r=1<<t;return!(this.length<=a||!(this.words[a]&r))},r.prototype.imaskn=function(e){n("number"==typeof e&&e>=0);var t=e%26,a=(e-t)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=a)return this;if(0!==t&&a++,this.length=Math.min(a,this.length),0!==t){var r=67108863^67108863>>>t<<t;this.words[this.length-1]&=r}return this._strip()},r.prototype.maskn=function(e){return this.clone().imaskn(e)},r.prototype.iaddn=function(e){return n("number"==typeof e),n(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<=e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},r.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},r.prototype.isubn=function(e){if(n("number"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this._strip()},r.prototype.addn=function(e){return this.clone().iaddn(e)},r.prototype.subn=function(e){return this.clone().isubn(e)},r.prototype.iabs=function(){return this.negative=0,this},r.prototype.abs=function(){return this.clone().iabs()},r.prototype._ishlnsubmul=function(e,t,a){var r,i,s=e.length+a;this._expand(s);var o=0;for(r=0;r<e.length;r++){i=(0|this.words[r+a])+o;var c=(0|e.words[r])*t;o=((i-=67108863&c)>>26)-(c/67108864|0),this.words[r+a]=67108863&i}for(;r<this.length-a;r++)o=(i=(0|this.words[r+a])+o)>>26,this.words[r+a]=67108863&i;if(0===o)return this._strip();for(n(-1===o),o=0,r=0;r<this.length;r++)o=(i=-(0|this.words[r])+o)>>26,this.words[r]=67108863&i;return this.negative=1,this._strip()},r.prototype._wordDiv=function(e,t){var n=(this.length,e.length),a=this.clone(),i=e,s=0|i.words[i.length-1];0!=(n=26-this._countBits(s))&&(i=i.ushln(n),a.iushln(n),s=0|i.words[i.length-1]);var o,c=a.length-i.length;if("mod"!==t){(o=new r(null)).length=c+1,o.words=new Array(o.length);for(var d=0;d<o.length;d++)o.words[d]=0}var u=a.clone()._ishlnsubmul(i,1,c);0===u.negative&&(a=u,o&&(o.words[c]=1));for(var f=c-1;f>=0;f--){var l=67108864*(0|a.words[i.length+f])+(0|a.words[i.length+f-1]);for(l=Math.min(l/s|0,67108863),a._ishlnsubmul(i,l,f);0!==a.negative;)l--,a.negative=0,a._ishlnsubmul(i,1,f),a.isZero()||(a.negative^=1);o&&(o.words[f]=l)}return o&&o._strip(),a._strip(),"div"!==t&&0!==n&&a.iushrn(n),{div:o||null,mod:a}},r.prototype.divmod=function(e,t,a){return n(!e.isZero()),this.isZero()?{div:new r(0),mod:new r(0)}:0!==this.negative&&0===e.negative?(o=this.neg().divmod(e,t),"mod"!==t&&(i=o.div.neg()),"div"!==t&&(s=o.mod.neg(),a&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(o=this.divmod(e.neg(),t),"mod"!==t&&(i=o.div.neg()),{div:i,mod:o.mod}):0!=(this.negative&e.negative)?(o=this.neg().divmod(e.neg(),t),"div"!==t&&(s=o.mod.neg(),a&&0!==s.negative&&s.isub(e)),{div:o.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new r(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new r(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new r(this.modrn(e.words[0]))}:this._wordDiv(e,t);var i,s,o},r.prototype.div=function(e){return this.divmod(e,"div",!1).div},r.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},r.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},r.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,a=e.ushrn(1),r=e.andln(1),i=n.cmp(a);return i<0||1===r&&0===i?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},r.prototype.modrn=function(e){var t=e<0;t&&(e=-e),n(e<=67108863);for(var a=(1<<26)%e,r=0,i=this.length-1;i>=0;i--)r=(a*r+(0|this.words[i]))%e;return t?-r:r},r.prototype.modn=function(e){return this.modrn(e)},r.prototype.idivn=function(e){var t=e<0;t&&(e=-e),n(e<=67108863);for(var a=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*a;this.words[r]=i/e|0,a=i%e}return this._strip(),t?this.ineg():this},r.prototype.divn=function(e){return this.clone().idivn(e)},r.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,a=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new r(1),s=new r(0),o=new r(0),c=new r(1),d=0;t.isEven()&&a.isEven();)t.iushrn(1),a.iushrn(1),++d;for(var u=a.clone(),f=t.clone();!t.isZero();){for(var l=0,p=1;0==(t.words[0]&p)&&l<26;++l,p<<=1);if(l>0)for(t.iushrn(l);l-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(u),s.isub(f)),i.iushrn(1),s.iushrn(1);for(var h=0,m=1;0==(a.words[0]&m)&&h<26;++h,m<<=1);if(h>0)for(a.iushrn(h);h-- >0;)(o.isOdd()||c.isOdd())&&(o.iadd(u),c.isub(f)),o.iushrn(1),c.iushrn(1);t.cmp(a)>=0?(t.isub(a),i.isub(o),s.isub(c)):(a.isub(t),o.isub(i),c.isub(s))}return{a:o,b:c,gcd:a.iushln(d)}},r.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,a=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new r(1),o=new r(0),c=a.clone();t.cmpn(1)>0&&a.cmpn(1)>0;){for(var d=0,u=1;0==(t.words[0]&u)&&d<26;++d,u<<=1);if(d>0)for(t.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(c),s.iushrn(1);for(var f=0,l=1;0==(a.words[0]&l)&&f<26;++f,l<<=1);if(f>0)for(a.iushrn(f);f-- >0;)o.isOdd()&&o.iadd(c),o.iushrn(1);t.cmp(a)>=0?(t.isub(a),s.isub(o)):(a.isub(t),o.isub(s))}return(i=0===t.cmpn(1)?s:o).cmpn(0)<0&&i.iadd(e),i},r.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var a=0;t.isEven()&&n.isEven();a++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var r=t.cmp(n);if(r<0){var i=t;t=n,n=i}else if(0===r||0===n.cmpn(1))break;t.isub(n)}return n.iushln(a)},r.prototype.invm=function(e){return this.egcd(e).a.umod(e)},r.prototype.isEven=function(){return 0==(1&this.words[0])},r.prototype.isOdd=function(){return 1==(1&this.words[0])},r.prototype.andln=function(e){return this.words[0]&e},r.prototype.bincn=function(e){n("number"==typeof e);var t=e%26,a=(e-t)/26,r=1<<t;if(this.length<=a)return this._expand(a+1),this.words[a]|=r,this;for(var i=r,s=a;0!==i&&s<this.length;s++){var o=0|this.words[s];i=(o+=i)>>>26,o&=67108863,this.words[s]=o}return 0!==i&&(this.words[s]=i,this.length++),this},r.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},r.prototype.cmpn=function(e){var t,a=e<0;if(0!==this.negative&&!a)return-1;if(0===this.negative&&a)return 1;if(this._strip(),this.length>1)t=1;else{a&&(e=-e),n(e<=67108863,"Number is too big");var r=0|this.words[0];t=r===e?0:r<e?-1:1}return 0!==this.negative?0|-t:t},r.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},r.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,n=this.length-1;n>=0;n--){var a=0|this.words[n],r=0|e.words[n];if(a!==r){a<r?t=-1:a>r&&(t=1);break}}return t},r.prototype.gtn=function(e){return 1===this.cmpn(e)},r.prototype.gt=function(e){return 1===this.cmp(e)},r.prototype.gten=function(e){return this.cmpn(e)>=0},r.prototype.gte=function(e){return this.cmp(e)>=0},r.prototype.ltn=function(e){return-1===this.cmpn(e)},r.prototype.lt=function(e){return-1===this.cmp(e)},r.prototype.lten=function(e){return this.cmpn(e)<=0},r.prototype.lte=function(e){return this.cmp(e)<=0},r.prototype.eqn=function(e){return 0===this.cmpn(e)},r.prototype.eq=function(e){return 0===this.cmp(e)},r.red=function(e){return new v(e)},r.prototype.toRed=function(e){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},r.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(e){return this.red=e,this},r.prototype.forceRed=function(e){return n(!this.red,"Already a number in reduction context"),this._forceRed(e)},r.prototype.redAdd=function(e){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},r.prototype.redIAdd=function(e){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},r.prototype.redSub=function(e){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},r.prototype.redISub=function(e){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},r.prototype.redShl=function(e){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},r.prototype.redMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},r.prototype.redIMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},r.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(e){return n(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var g={k256:null,p224:null,p192:null,p25519:null};function E(e,t){this.name=e,this.p=new r(t,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){E.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function T(){E.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function R(){E.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function _(){E.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function v(e){if("string"==typeof e){var t=r._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function A(e){v.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new r(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}E.prototype._tmp=function(){var e=new r(null);return e.words=new Array(Math.ceil(this.n/13)),e},E.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var a=t<this.n?-1:n.ucmp(this.p);return 0===a?(n.words[0]=0,n.length=1):a>0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},E.prototype.split=function(e,t){e.iushrn(this.n,0,t)},E.prototype.imulK=function(e){return e.imul(this.k)},a(w,E),w.prototype.split=function(e,t){for(var n=4194303,a=Math.min(e.length,9),r=0;r<a;r++)t.words[r]=e.words[r];if(t.length=a,e.length<=9)return e.words[0]=0,void(e.length=1);var i=e.words[9];for(t.words[t.length++]=i&n,r=10;r<e.length;r++){var s=0|e.words[r];e.words[r-10]=(s&n)<<4|i>>>22,i=s}i>>>=22,e.words[r-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},w.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n<e.length;n++){var a=0|e.words[n];t+=977*a,e.words[n]=67108863&t,t=64*a+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},a(T,E),a(R,E),a(_,E),_.prototype.imulK=function(e){for(var t=0,n=0;n<e.length;n++){var a=19*(0|e.words[n])+t,r=67108863&a;a>>>=26,e.words[n]=r,t=a}return 0!==t&&(e.words[e.length++]=t),e},r._prime=function(e){if(g[e])return g[e];var t;if("k256"===e)t=new w;else if("p224"===e)t=new T;else if("p192"===e)t=new R;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new _}return g[e]=t,t},v.prototype._verify1=function(e){n(0===e.negative,"red works only with positives"),n(e.red,"red works only with red numbers")},v.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),"red works only with positives"),n(e.red&&e.red===t.red,"red works only with red numbers")},v.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(d(e,e.umod(this.m)._forceRed(this)),e)},v.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},v.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},v.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},v.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},v.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},v.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},v.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},v.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},v.prototype.isqr=function(e){return this.imul(e,e.clone())},v.prototype.sqr=function(e){return this.mul(e,e)},v.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var a=this.m.add(new r(1)).iushrn(2);return this.pow(e,a)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);n(!i.isZero());var o=new r(1).toRed(this),c=o.redNeg(),d=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new r(2*u*u).toRed(this);0!==this.pow(u,d).cmp(c);)u.redIAdd(c);for(var f=this.pow(u,i),l=this.pow(e,i.addn(1).iushrn(1)),p=this.pow(e,i),h=s;0!==p.cmp(o);){for(var m=p,b=0;0!==m.cmp(o);b++)m=m.redSqr();n(b<h);var y=this.pow(f,new r(1).iushln(h-b-1));l=l.redMul(y),f=y.redSqr(),p=p.redMul(f),h=b}return l},v.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},v.prototype.pow=function(e,t){if(t.isZero())return new r(1).toRed(this);if(0===t.cmpn(1))return e.clone();var n=new Array(16);n[0]=new r(1).toRed(this),n[1]=e;for(var a=2;a<n.length;a++)n[a]=this.mul(n[a-1],e);var i=n[0],s=0,o=0,c=t.bitLength()%26;for(0===c&&(c=26),a=t.length-1;a>=0;a--){for(var d=t.words[a],u=c-1;u>=0;u--){var f=d>>u&1;i!==n[0]&&(i=this.sqr(i)),0!==f||0!==s?(s<<=1,s|=f,(4==++o||0===a&&0===u)&&(i=this.mul(i,n[s]),o=0,s=0)):o=0}c=26}return i},v.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},v.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},r.mont=function(e){return new A(e)},a(A,v),A.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},A.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},A.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),a=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(a).iushrn(this.shift),i=r;return r.cmp(this.m)>=0?i=r.isub(this.m):r.cmpn(0)<0&&(i=r.iadd(this.m)),i._forceRed(this)},A.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new r(0)._forceRed(this);var n=e.mul(t),a=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(a).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},A.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(Wi,zi);var $i=Hi(Wi.exports);let Xi=!1,Ki=!1;const Ji={debug:1,default:2,info:2,warning:3,error:4,off:5};let Zi=Ji.default,Qi=null;const Yi=function(){try{const e=[];if(["NFD","NFC","NFKD","NFKC"].forEach((t=>{try{if("test"!=="test".normalize(t))throw new Error("bad normalize")}catch(n){e.push(t)}})),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}();var es,ts;!function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"}(es||(es={})),function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"}(ts||(ts={}));const ns="0123456789abcdef";class as{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const n=e.toLowerCase();null==Ji[n]&&this.throwArgumentError("invalid log level name","logLevel",e),Zi>Ji[n]||console.log.apply(console,t)}debug(...e){this._log(as.levels.DEBUG,e)}info(...e){this._log(as.levels.INFO,e)}warn(...e){this._log(as.levels.WARNING,e)}makeError(e,t,n){if(Ki)return this.makeError("censored error",t,{});t||(t=as.errors.UNKNOWN_ERROR),n||(n={});const a=[];Object.keys(n).forEach((e=>{const t=n[e];try{if(t instanceof Uint8Array){let n="";for(let e=0;e<t.length;e++)n+=ns[t[e]>>4],n+=ns[15&t[e]];a.push(e+"=Uint8Array(0x"+n+")")}else a.push(e+"="+JSON.stringify(t))}catch(t){a.push(e+"="+JSON.stringify(n[e].toString()))}})),a.push(`code=${t}`),a.push(`version=${this.version}`);const r=e;let i="";switch(t){case ts.NUMERIC_FAULT:{i="NUMERIC_FAULT";const t=e;switch(t){case"overflow":case"underflow":case"division-by-zero":i+="-"+t;break;case"negative-power":case"negative-width":i+="-unsupported";break;case"unbound-bitwise-result":i+="-unbound-result"}break}case ts.CALL_EXCEPTION:case ts.INSUFFICIENT_FUNDS:case ts.MISSING_NEW:case ts.NONCE_EXPIRED:case ts.REPLACEMENT_UNDERPRICED:case ts.TRANSACTION_REPLACED:case ts.UNPREDICTABLE_GAS_LIMIT:i=t}i&&(e+=" [ See: https://links.ethers.org/v5-errors-"+i+" ]"),a.length&&(e+=" ("+a.join(", ")+")");const s=new Error(e);return s.reason=r,s.code=t,Object.keys(n).forEach((function(e){s[e]=n[e]})),s}throwError(e,t,n){throw this.makeError(e,t,n)}throwArgumentError(e,t,n){return this.throwError(e,as.errors.INVALID_ARGUMENT,{argument:t,value:n})}assert(e,t,n,a){e||this.throwError(t,n,a)}assertArgument(e,t,n,a){e||this.throwArgumentError(t,n,a)}checkNormalize(e){Yi&&this.throwError("platform missing String.prototype.normalize",as.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Yi})}checkSafeUint53(e,t){"number"==typeof e&&(null==t&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,as.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,as.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,n){n=n?": "+n:"",e<t&&this.throwError("missing argument"+n,as.errors.MISSING_ARGUMENT,{count:e,expectedCount:t}),e>t&&this.throwError("too many arguments"+n,as.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){e!==Object&&null!=e||this.throwError("missing new",as.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",as.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):e!==Object&&null!=e||this.throwError("missing new",as.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return Qi||(Qi=new as("logger/5.7.0")),Qi}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",as.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Xi){if(!e)return;this.globalLogger().throwError("error censorship permanent",as.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Ki=!!e,Xi=!!t}static setLogLevel(e){const t=Ji[e.toLowerCase()];null!=t?Zi=t:as.globalLogger().warn("invalid log level - "+e)}static from(e){return new as(e)}}as.errors=ts,as.levels=es;const rs=new as("bytes/5.7.0");function is(e){return!!e.toHexString}function ss(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return ss(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function os(e){return"number"==typeof e&&e==e&&e%1==0}function cs(e){if(null==e)return!1;if(e.constructor===Uint8Array)return!0;if("string"==typeof e)return!1;if(!os(e.length)||e.length<0)return!1;for(let t=0;t<e.length;t++){const n=e[t];if(!os(n)||n<0||n>=256)return!1}return!0}function ds(e,t){if(t||(t={}),"number"==typeof e){rs.checkSafeUint53(e,"invalid arrayify value");const t=[];for(;e;)t.unshift(255&e),e=parseInt(String(e/256));return 0===t.length&&t.push(0),ss(new Uint8Array(t))}if(t.allowMissingPrefix&&"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),is(e)&&(e=e.toHexString()),fs(e)){let n=e.substring(2);n.length%2&&("left"===t.hexPad?n="0"+n:"right"===t.hexPad?n+="0":rs.throwArgumentError("hex data is odd-length","value",e));const a=[];for(let e=0;e<n.length;e+=2)a.push(parseInt(n.substring(e,e+2),16));return ss(new Uint8Array(a))}return cs(e)?ss(new Uint8Array(e)):rs.throwArgumentError("invalid arrayify value","value",e)}function us(e){const t=e.map((e=>ds(e))),n=t.reduce(((e,t)=>e+t.length),0),a=new Uint8Array(n);return t.reduce(((e,t)=>(a.set(t,e),e+t.length)),0),ss(a)}function fs(e,t){return!("string"!=typeof e||!e.match(/^0x[0-9A-Fa-f]*$/))&&(!t||e.length===2+2*t)}const ls="0123456789abcdef";function ps(e,t){if(t||(t={}),"number"==typeof e){rs.checkSafeUint53(e,"invalid hexlify value");let t="";for(;e;)t=ls[15&e]+t,e=Math.floor(e/16);return t.length?(t.length%2&&(t="0"+t),"0x"+t):"0x00"}if("bigint"==typeof e)return(e=e.toString(16)).length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&"string"==typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),is(e))return e.toHexString();if(fs(e))return e.length%2&&("left"===t.hexPad?e="0x0"+e.substring(2):"right"===t.hexPad?e+="0":rs.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(cs(e)){let t="0x";for(let n=0;n<e.length;n++){let a=e[n];t+=ls[(240&a)>>4]+ls[15&a]}return t}return rs.throwArgumentError("invalid hexlify value","value",e)}function hs(e,t,n){return"string"!=typeof e?e=ps(e):(!fs(e)||e.length%2)&&rs.throwArgumentError("invalid hexData","value",e),t=2+2*t,null!=n?"0x"+e.substring(t,2+2*n):"0x"+e.substring(t)}function ms(e,t){for("string"!=typeof e?e=ps(e):fs(e)||rs.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&rs.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}var bs=$i.BN;const ys=new as("bignumber/5.7.0"),gs={},Es=9007199254740991;let ws=!1;class Ts{constructor(e,t){e!==gs&&ys.throwError("cannot call constructor directly; use BigNumber.from",as.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=t,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return _s(vs(this).fromTwos(e))}toTwos(e){return _s(vs(this).toTwos(e))}abs(){return"-"===this._hex[0]?Ts.from(this._hex.substring(1)):this}add(e){return _s(vs(this).add(vs(e)))}sub(e){return _s(vs(this).sub(vs(e)))}div(e){return Ts.from(e).isZero()&&As("division-by-zero","div"),_s(vs(this).div(vs(e)))}mul(e){return _s(vs(this).mul(vs(e)))}mod(e){const t=vs(e);return t.isNeg()&&As("division-by-zero","mod"),_s(vs(this).umod(t))}pow(e){const t=vs(e);return t.isNeg()&&As("negative-power","pow"),_s(vs(this).pow(t))}and(e){const t=vs(e);return(this.isNegative()||t.isNeg())&&As("unbound-bitwise-result","and"),_s(vs(this).and(t))}or(e){const t=vs(e);return(this.isNegative()||t.isNeg())&&As("unbound-bitwise-result","or"),_s(vs(this).or(t))}xor(e){const t=vs(e);return(this.isNegative()||t.isNeg())&&As("unbound-bitwise-result","xor"),_s(vs(this).xor(t))}mask(e){return(this.isNegative()||e<0)&&As("negative-width","mask"),_s(vs(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&As("negative-width","shl"),_s(vs(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&As("negative-width","shr"),_s(vs(this).shrn(e))}eq(e){return vs(this).eq(vs(e))}lt(e){return vs(this).lt(vs(e))}lte(e){return vs(this).lte(vs(e))}gt(e){return vs(this).gt(vs(e))}gte(e){return vs(this).gte(vs(e))}isNegative(){return"-"===this._hex[0]}isZero(){return vs(this).isZero()}toNumber(){try{return vs(this).toNumber()}catch(e){As("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(e){}return ys.throwError("this platform does not support BigInt",as.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?ws||(ws=!0,ys.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?ys.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",as.errors.UNEXPECTED_ARGUMENT,{}):ys.throwError("BigNumber.toString does not accept parameters",as.errors.UNEXPECTED_ARGUMENT,{})),vs(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof Ts)return e;if("string"==typeof e)return e.match(/^-?0x[0-9a-f]+$/i)?new Ts(gs,Rs(e)):e.match(/^-?[0-9]+$/)?new Ts(gs,Rs(new bs(e))):ys.throwArgumentError("invalid BigNumber string","value",e);if("number"==typeof e)return e%1&&As("underflow","BigNumber.from",e),(e>=Es||e<=-Es)&&As("overflow","BigNumber.from",e),Ts.from(String(e));const t=e;if("bigint"==typeof t)return Ts.from(t.toString());if(cs(t))return Ts.from(ps(t));if(t)if(t.toHexString){const e=t.toHexString();if("string"==typeof e)return Ts.from(e)}else{let e=t._hex;if(null==e&&"BigNumber"===t.type&&(e=t.hex),"string"==typeof e&&(fs(e)||"-"===e[0]&&fs(e.substring(1))))return Ts.from(e)}return ys.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!(!e||!e._isBigNumber)}}function Rs(e){if("string"!=typeof e)return Rs(e.toString(16));if("-"===e[0])return"-"===(e=e.substring(1))[0]&&ys.throwArgumentError("invalid hex","value",e),"0x00"===(e=Rs(e))?e:"-"+e;if("0x"!==e.substring(0,2)&&(e="0x"+e),"0x"===e)return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&"0x00"===e.substring(0,4);)e="0x"+e.substring(4);return e}function _s(e){return Ts.from(Rs(e))}function vs(e){const t=Ts.from(e).toHexString();return"-"===t[0]?new bs("-"+t.substring(3),16):new bs(t.substring(2),16)}function As(e,t,n){const a={fault:e,operation:t};return null!=n&&(a.value=n),ys.throwError(e,as.errors.NUMERIC_FAULT,a)}var Cs=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function s(e){try{c(a.next(e))}catch(e){i(e)}}function o(e){try{c(a.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}c((a=a.apply(e,t||[])).next())}))};const Is=new as("properties/5.7.0");function Os(e,t,n){Object.defineProperty(e,t,{enumerable:!0,value:n,writable:!1})}function Ss(e,t){for(let n=0;n<32;n++){if(e[t])return e[t];if(!e.prototype||"object"!=typeof e.prototype)break;e=Object.getPrototypeOf(e.prototype).constructor}return null}function Ns(e){return Cs(this,void 0,void 0,(function*(){const t=Object.keys(e).map((t=>{const n=e[t];return Promise.resolve(n).then((e=>({key:t,value:e})))}));return(yield Promise.all(t)).reduce(((e,t)=>(e[t.key]=t.value,e)),{})}))}function ks(e){const t={};for(const n in e)t[n]=e[n];return t}const Ms={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function Ps(e){if(null==e||Ms[typeof e])return!0;if(Array.isArray(e)||"object"==typeof e){if(!Object.isFrozen(e))return!1;const t=Object.keys(e);for(let n=0;n<t.length;n++){let a=null;try{a=e[t[n]]}catch(e){continue}if(!Ps(a))return!1}return!0}return Is.throwArgumentError("Cannot deepCopy "+typeof e,"object",e)}function Ds(e){if(Ps(e))return e;if(Array.isArray(e))return Object.freeze(e.map((e=>xs(e))));if("object"==typeof e){const t={};for(const n in e){const a=e[n];void 0!==a&&Os(t,n,xs(a))}return t}return Is.throwArgumentError("Cannot deepCopy "+typeof e,"object",e)}function xs(e){return Ds(e)}class Ls{constructor(e){for(const t in e)this[t]=xs(e[t])}}const Us="abi/5.7.0",Fs=new as(Us),Bs={};let Vs={calldata:!0,memory:!0,storage:!0},Gs={calldata:!0,memory:!0};function qs(e,t){if("bytes"===e||"string"===e){if(Vs[t])return!0}else if("address"===e){if("payable"===t)return!0}else if((e.indexOf("[")>=0||"tuple"===e)&&Gs[t])return!0;return(Vs[t]||"payable"===t)&&Fs.throwArgumentError("invalid modifier","name",t),!1}function js(e,t){for(let n in t)Os(e,n,t[n])}const zs=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),Hs=new RegExp(/^(.*)\[([0-9]*)\]$/);class Ws{constructor(e,t){e!==Bs&&Fs.throwError("use fromString",as.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),js(this,t);let n=this.type.match(Hs);js(this,n?{arrayLength:parseInt(n[2]||"-1"),arrayChildren:Ws.fromObject({type:n[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(e){if(e||(e=zs.sighash),zs[e]||Fs.throwArgumentError("invalid format type","format",e),e===zs.json){let t={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(t.indexed=this.indexed),this.components&&(t.components=this.components.map((t=>JSON.parse(t.format(e))))),JSON.stringify(t)}let t="";return"array"===this.baseType?(t+=this.arrayChildren.format(e),t+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(e!==zs.sighash&&(t+=this.type),t+="("+this.components.map((t=>t.format(e))).join(e===zs.full?", ":",")+")"):t+=this.type,e!==zs.sighash&&(!0===this.indexed&&(t+=" indexed"),e===zs.full&&this.name&&(t+=" "+this.name)),t}static from(e,t){return"string"==typeof e?Ws.fromString(e,t):Ws.fromObject(e)}static fromObject(e){return Ws.isParamType(e)?e:new Ws(Bs,{name:e.name||null,type:ao(e.type),indexed:null==e.indexed?null:!!e.indexed,components:e.components?e.components.map(Ws.fromObject):null})}static fromString(e,t){return n=function(e,t){let n=e;function a(t){Fs.throwArgumentError(`unexpected character at position ${t}`,"param",e)}function r(e){let n={type:"",name:"",parent:e,state:{allowType:!0}};return t&&(n.indexed=!1),n}e=e.replace(/\s/g," ");let i={type:"",name:"",state:{allowType:!0}},s=i;for(let n=0;n<e.length;n++){let i=e[n];switch(i){case"(":s.state.allowType&&""===s.type?s.type="tuple":s.state.allowParams||a(n),s.state.allowType=!1,s.type=ao(s.type),s.components=[r(s)],s=s.components[0];break;case")":delete s.state,"indexed"===s.name&&(t||a(n),s.indexed=!0,s.name=""),qs(s.type,s.name)&&(s.name=""),s.type=ao(s.type);let e=s;s=s.parent,s||a(n),delete e.parent,s.state.allowParams=!1,s.state.allowName=!0,s.state.allowArray=!0;break;case",":delete s.state,"indexed"===s.name&&(t||a(n),s.indexed=!0,s.name=""),qs(s.type,s.name)&&(s.name=""),s.type=ao(s.type);let o=r(s.parent);s.parent.components.push(o),delete s.parent,s=o;break;case" ":s.state.allowType&&""!==s.type&&(s.type=ao(s.type),delete s.state.allowType,s.state.allowName=!0,s.state.allowParams=!0),s.state.allowName&&""!==s.name&&("indexed"===s.name?(t||a(n),s.indexed&&a(n),s.indexed=!0,s.name=""):qs(s.type,s.name)?s.name="":s.state.allowName=!1);break;case"[":s.state.allowArray||a(n),s.type+=i,s.state.allowArray=!1,s.state.allowName=!1,s.state.readArray=!0;break;case"]":s.state.readArray||a(n),s.type+=i,s.state.readArray=!1,s.state.allowArray=!0,s.state.allowName=!0;break;default:s.state.allowType?(s.type+=i,s.state.allowParams=!0,s.state.allowArray=!0):s.state.allowName?(s.name+=i,delete s.state.allowArray):s.state.readArray?s.type+=i:a(n)}}return s.parent&&Fs.throwArgumentError("unexpected eof","param",e),delete i.state,"indexed"===s.name?(t||a(n.length-7),s.indexed&&a(n.length-7),s.indexed=!0,s.name=""):qs(s.type,s.name)&&(s.name=""),i.type=ao(i.type),i}(e,!!t),Ws.fromObject({name:n.name,type:n.type,indexed:n.indexed,components:n.components});var n}static isParamType(e){return!(null==e||!e._isParamType)}}function $s(e,t){return function(e){e=e.trim();let t=[],n="",a=0;for(let r=0;r<e.length;r++){let i=e[r];","===i&&0===a?(t.push(n),n=""):(n+=i,"("===i?a++:")"===i&&(a--,-1===a&&Fs.throwArgumentError("unbalanced parenthesis","value",e)))}n&&t.push(n);return t}(e).map((e=>Ws.fromString(e,t)))}class Xs{constructor(e,t){e!==Bs&&Fs.throwError("use a static from method",as.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),js(this,t),this._isFragment=!0,Object.freeze(this)}static from(e){return Xs.isFragment(e)?e:"string"==typeof e?Xs.fromString(e):Xs.fromObject(e)}static fromObject(e){if(Xs.isFragment(e))return e;switch(e.type){case"function":return eo.fromObject(e);case"event":return Ks.fromObject(e);case"constructor":return Ys.fromObject(e);case"error":return no.fromObject(e);case"fallback":case"receive":return null}return Fs.throwArgumentError("invalid fragment object","value",e)}static fromString(e){return"event"===(e=(e=(e=e.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Ks.fromString(e.substring(5).trim()):"function"===e.split(" ")[0]?eo.fromString(e.substring(8).trim()):"constructor"===e.split("(")[0].trim()?Ys.fromString(e.trim()):"error"===e.split(" ")[0]?no.fromString(e.substring(5).trim()):Fs.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!(!e||!e._isFragment)}}class Ks extends Xs{format(e){if(e||(e=zs.sighash),zs[e]||Fs.throwArgumentError("invalid format type","format",e),e===zs.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map((t=>JSON.parse(t.format(e))))});let t="";return e!==zs.sighash&&(t+="event "),t+=this.name+"("+this.inputs.map((t=>t.format(e))).join(e===zs.full?", ":",")+") ",e!==zs.sighash&&this.anonymous&&(t+="anonymous "),t.trim()}static from(e){return"string"==typeof e?Ks.fromString(e):Ks.fromObject(e)}static fromObject(e){if(Ks.isEventFragment(e))return e;"event"!==e.type&&Fs.throwArgumentError("invalid event object","value",e);const t={name:io(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(Ws.fromObject):[],type:"event"};return new Ks(Bs,t)}static fromString(e){let t=e.match(so);t||Fs.throwArgumentError("invalid event string","value",e);let n=!1;return t[3].split(" ").forEach((e=>{switch(e.trim()){case"anonymous":n=!0;break;case"":break;default:Fs.warn("unknown modifier: "+e)}})),Ks.fromObject({name:t[1].trim(),anonymous:n,inputs:$s(t[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&"event"===e.type}}function Js(e,t){t.gas=null;let n=e.split("@");return 1!==n.length?(n.length>2&&Fs.throwArgumentError("invalid human-readable ABI signature","value",e),n[1].match(/^[0-9]+$/)||Fs.throwArgumentError("invalid human-readable ABI signature gas","value",e),t.gas=Ts.from(n[1]),n[0]):e}function Zs(e,t){t.constant=!1,t.payable=!1,t.stateMutability="nonpayable",e.split(" ").forEach((e=>{switch(e.trim()){case"constant":t.constant=!0;break;case"payable":t.payable=!0,t.stateMutability="payable";break;case"nonpayable":t.payable=!1,t.stateMutability="nonpayable";break;case"pure":t.constant=!0,t.stateMutability="pure";break;case"view":t.constant=!0,t.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+e)}}))}function Qs(e){let t={constant:!1,payable:!0,stateMutability:"payable"};return null!=e.stateMutability?(t.stateMutability=e.stateMutability,t.constant="view"===t.stateMutability||"pure"===t.stateMutability,null!=e.constant&&!!e.constant!==t.constant&&Fs.throwArgumentError("cannot have constant function with mutability "+t.stateMutability,"value",e),t.payable="payable"===t.stateMutability,null!=e.payable&&!!e.payable!==t.payable&&Fs.throwArgumentError("cannot have payable function with mutability "+t.stateMutability,"value",e)):null!=e.payable?(t.payable=!!e.payable,null!=e.constant||t.payable||"constructor"===e.type||Fs.throwArgumentError("unable to determine stateMutability","value",e),t.constant=!!e.constant,t.constant?t.stateMutability="view":t.stateMutability=t.payable?"payable":"nonpayable",t.payable&&t.constant&&Fs.throwArgumentError("cannot have constant payable function","value",e)):null!=e.constant?(t.constant=!!e.constant,t.payable=!t.constant,t.stateMutability=t.constant?"view":"payable"):"constructor"!==e.type&&Fs.throwArgumentError("unable to determine stateMutability","value",e),t}class Ys extends Xs{format(e){if(e||(e=zs.sighash),zs[e]||Fs.throwArgumentError("invalid format type","format",e),e===zs.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map((t=>JSON.parse(t.format(e))))});e===zs.sighash&&Fs.throwError("cannot format a constructor for sighash",as.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let t="constructor("+this.inputs.map((t=>t.format(e))).join(e===zs.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(t+=this.stateMutability+" "),t.trim()}static from(e){return"string"==typeof e?Ys.fromString(e):Ys.fromObject(e)}static fromObject(e){if(Ys.isConstructorFragment(e))return e;"constructor"!==e.type&&Fs.throwArgumentError("invalid constructor object","value",e);let t=Qs(e);t.constant&&Fs.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(Ws.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?Ts.from(e.gas):null};return new Ys(Bs,n)}static fromString(e){let t={type:"constructor"},n=(e=Js(e,t)).match(so);return n&&"constructor"===n[1].trim()||Fs.throwArgumentError("invalid constructor string","value",e),t.inputs=$s(n[2].trim(),!1),Zs(n[3].trim(),t),Ys.fromObject(t)}static isConstructorFragment(e){return e&&e._isFragment&&"constructor"===e.type}}class eo extends Ys{format(e){if(e||(e=zs.sighash),zs[e]||Fs.throwArgumentError("invalid format type","format",e),e===zs.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map((t=>JSON.parse(t.format(e)))),outputs:this.outputs.map((t=>JSON.parse(t.format(e))))});let t="";return e!==zs.sighash&&(t+="function "),t+=this.name+"("+this.inputs.map((t=>t.format(e))).join(e===zs.full?", ":",")+") ",e!==zs.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(t+=this.stateMutability+" "):this.constant&&(t+="view "),this.outputs&&this.outputs.length&&(t+="returns ("+this.outputs.map((t=>t.format(e))).join(", ")+") "),null!=this.gas&&(t+="@"+this.gas.toString()+" ")),t.trim()}static from(e){return"string"==typeof e?eo.fromString(e):eo.fromObject(e)}static fromObject(e){if(eo.isFunctionFragment(e))return e;"function"!==e.type&&Fs.throwArgumentError("invalid function object","value",e);let t=Qs(e);const n={type:e.type,name:io(e.name),constant:t.constant,inputs:e.inputs?e.inputs.map(Ws.fromObject):[],outputs:e.outputs?e.outputs.map(Ws.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?Ts.from(e.gas):null};return new eo(Bs,n)}static fromString(e){let t={type:"function"},n=(e=Js(e,t)).split(" returns ");n.length>2&&Fs.throwArgumentError("invalid function string","value",e);let a=n[0].match(so);if(a||Fs.throwArgumentError("invalid function signature","value",e),t.name=a[1].trim(),t.name&&io(t.name),t.inputs=$s(a[2],!1),Zs(a[3].trim(),t),n.length>1){let a=n[1].match(so);""==a[1].trim()&&""==a[3].trim()||Fs.throwArgumentError("unexpected tokens","value",e),t.outputs=$s(a[2],!1)}else t.outputs=[];return eo.fromObject(t)}static isFunctionFragment(e){return e&&e._isFragment&&"function"===e.type}}function to(e){const t=e.format();return"Error(string)"!==t&&"Panic(uint256)"!==t||Fs.throwArgumentError(`cannot specify user defined ${t} error`,"fragment",e),e}class no extends Xs{format(e){if(e||(e=zs.sighash),zs[e]||Fs.throwArgumentError("invalid format type","format",e),e===zs.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map((t=>JSON.parse(t.format(e))))});let t="";return e!==zs.sighash&&(t+="error "),t+=this.name+"("+this.inputs.map((t=>t.format(e))).join(e===zs.full?", ":",")+") ",t.trim()}static from(e){return"string"==typeof e?no.fromString(e):no.fromObject(e)}static fromObject(e){if(no.isErrorFragment(e))return e;"error"!==e.type&&Fs.throwArgumentError("invalid error object","value",e);const t={type:e.type,name:io(e.name),inputs:e.inputs?e.inputs.map(Ws.fromObject):[]};return to(new no(Bs,t))}static fromString(e){let t={type:"error"},n=e.match(so);return n||Fs.throwArgumentError("invalid error signature","value",e),t.name=n[1].trim(),t.name&&io(t.name),t.inputs=$s(n[2],!1),to(no.fromObject(t))}static isErrorFragment(e){return e&&e._isFragment&&"error"===e.type}}function ao(e){return e.match(/^uint($|[^1-9])/)?e="uint256"+e.substring(4):e.match(/^int($|[^1-9])/)&&(e="int256"+e.substring(3)),e}const ro=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function io(e){return e&&e.match(ro)||Fs.throwArgumentError(`invalid identifier "${e}"`,"value",e),e}const so=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const oo=new as(Us);class co{constructor(e,t,n,a){this.name=e,this.type=t,this.localName=n,this.dynamic=a}_throwError(e,t){oo.throwArgumentError(e,this.localName,t)}}class uo{constructor(e){Os(this,"wordSize",e||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(e)}get data(){return function(e){let t="0x";return e.forEach((e=>{t+=ps(e).substring(2)})),t}(this._data)}get length(){return this._dataLength}_writeData(e){return this._data.push(e),this._dataLength+=e.length,e.length}appendWriter(e){return this._writeData(us(e._data))}writeBytes(e){let t=ds(e);const n=t.length%this.wordSize;return n&&(t=us([t,this._padding.slice(n)])),this._writeData(t)}_getValue(e){let t=ds(Ts.from(e));return t.length>this.wordSize&&oo.throwError("value out-of-bounds",as.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:t.length}),t.length%this.wordSize&&(t=us([this._padding.slice(t.length%this.wordSize),t])),t}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,t=>{this._data[e]=this._getValue(t)}}}class fo{constructor(e,t,n,a){Os(this,"_data",ds(e)),Os(this,"wordSize",t||32),Os(this,"_coerceFunc",n),Os(this,"allowLoose",a),this._offset=0}get data(){return ps(this._data)}get consumed(){return this._offset}static coerce(e,t){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(t=t.toNumber()),t}coerce(e,t){return this._coerceFunc?this._coerceFunc(e,t):fo.coerce(e,t)}_peekBytes(e,t,n){let a=Math.ceil(t/this.wordSize)*this.wordSize;return this._offset+a>this._data.length&&(this.allowLoose&&n&&this._offset+t<=this._data.length?a=t:oo.throwError("data out-of-bounds",as.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+a})),this._data.slice(this._offset,this._offset+a)}subReader(e){return new fo(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,t){let n=this._peekBytes(0,e,!!t);return this._offset+=n.length,n.slice(0,e)}readValue(){return Ts.from(this.readBytes(this.wordSize))}}var lo,po={exports:{}};
2
+ /**
3
+ * [js-sha3]{@link https://github.com/emn178/js-sha3}
4
+ *
5
+ * @version 0.8.0
6
+ * @author Chen, Yi-Cyuan [emn178@gmail.com]
7
+ * @copyright Chen, Yi-Cyuan 2015-2018
8
+ * @license MIT
9
+ */lo=po,function(){var e="input is invalid type",t="object"==typeof window,n=t?window:{};n.JS_SHA3_NO_WINDOW&&(t=!1);var a=!t&&"object"==typeof self;!n.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?n=zi:a&&(n=self);var r=!n.JS_SHA3_NO_COMMON_JS&&lo.exports,i=!n.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,s="0123456789abcdef".split(""),o=[4,1024,262144,67108864],c=[0,8,16,24],d=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],u=[224,256,384,512],f=[128,256],l=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!n.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!i||!n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});for(var h=function(e,t,n){return function(a){return new S(e,t,e).update(a)[n]()}},m=function(e,t,n){return function(a,r){return new S(e,t,r).update(a)[n]()}},b=function(e,t,n){return function(t,a,r,i){return T["cshake"+e].update(t,a,r,i)[n]()}},y=function(e,t,n){return function(t,a,r,i){return T["kmac"+e].update(t,a,r,i)[n]()}},g=function(e,t,n,a){for(var r=0;r<l.length;++r){var i=l[r];e[i]=t(n,a,i)}return e},E=function(e,t){var n=h(e,t,"hex");return n.create=function(){return new S(e,t,e)},n.update=function(e){return n.create().update(e)},g(n,h,e,t)},w=[{name:"keccak",padding:[1,256,65536,16777216],bits:u,createMethod:E},{name:"sha3",padding:[6,1536,393216,100663296],bits:u,createMethod:E},{name:"shake",padding:[31,7936,2031616,520093696],bits:f,createMethod:function(e,t){var n=m(e,t,"hex");return n.create=function(n){return new S(e,t,n)},n.update=function(e,t){return n.create(t).update(e)},g(n,m,e,t)}},{name:"cshake",padding:o,bits:f,createMethod:function(e,t){var n=p[e],a=b(e,0,"hex");return a.create=function(a,r,i){return r||i?new S(e,t,a).bytepad([r,i],n):T["shake"+e].create(a)},a.update=function(e,t,n,r){return a.create(t,n,r).update(e)},g(a,b,e,t)}},{name:"kmac",padding:o,bits:f,createMethod:function(e,t){var n=p[e],a=y(e,0,"hex");return a.create=function(a,r,i){return new N(e,t,r).bytepad(["KMAC",i],n).bytepad([a],n)},a.update=function(e,t,n,r){return a.create(e,n,r).update(t)},g(a,y,e,t)}}],T={},R=[],_=0;_<w.length;++_)for(var v=w[_],A=v.bits,C=0;C<A.length;++C){var I=v.name+"_"+A[C];if(R.push(I),T[I]=v.createMethod(A[C],v.padding),"sha3"!==v.name){var O=v.name+A[C];R.push(O),T[O]=T[I]}}function S(e,t,n){this.blocks=[],this.s=[],this.padding=t,this.outputBits=n,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(e<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=n>>5,this.extraBytes=(31&n)>>3;for(var a=0;a<50;++a)this.s[a]=0}function N(e,t,n){S.call(this,e,t,n)}S.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var n,a=typeof t;if("string"!==a){if("object"!==a)throw new Error(e);if(null===t)throw new Error(e);if(i&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||i&&ArrayBuffer.isView(t)))throw new Error(e);n=!0}for(var r,s,o=this.blocks,d=this.byteCount,u=t.length,f=this.blockCount,l=0,p=this.s;l<u;){if(this.reset)for(this.reset=!1,o[0]=this.block,r=1;r<f+1;++r)o[r]=0;if(n)for(r=this.start;l<u&&r<d;++l)o[r>>2]|=t[l]<<c[3&r++];else for(r=this.start;l<u&&r<d;++l)(s=t.charCodeAt(l))<128?o[r>>2]|=s<<c[3&r++]:s<2048?(o[r>>2]|=(192|s>>6)<<c[3&r++],o[r>>2]|=(128|63&s)<<c[3&r++]):s<55296||s>=57344?(o[r>>2]|=(224|s>>12)<<c[3&r++],o[r>>2]|=(128|s>>6&63)<<c[3&r++],o[r>>2]|=(128|63&s)<<c[3&r++]):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++l)),o[r>>2]|=(240|s>>18)<<c[3&r++],o[r>>2]|=(128|s>>12&63)<<c[3&r++],o[r>>2]|=(128|s>>6&63)<<c[3&r++],o[r>>2]|=(128|63&s)<<c[3&r++]);if(this.lastByteIndex=r,r>=d){for(this.start=r-d,this.block=o[f],r=0;r<f;++r)p[r]^=o[r];k(p),this.reset=!0}else this.start=r}return this},S.prototype.encode=function(e,t){var n=255&e,a=1,r=[n];for(n=255&(e>>=8);n>0;)r.unshift(n),n=255&(e>>=8),++a;return t?r.push(a):r.unshift(a),this.update(r),r.length},S.prototype.encodeString=function(t){var n,a=typeof t;if("string"!==a){if("object"!==a)throw new Error(e);if(null===t)throw new Error(e);if(i&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||i&&ArrayBuffer.isView(t)))throw new Error(e);n=!0}var r=0,s=t.length;if(n)r=s;else for(var o=0;o<t.length;++o){var c=t.charCodeAt(o);c<128?r+=1:c<2048?r+=2:c<55296||c>=57344?r+=3:(c=65536+((1023&c)<<10|1023&t.charCodeAt(++o)),r+=4)}return r+=this.encode(8*r),this.update(t),r},S.prototype.bytepad=function(e,t){for(var n=this.encode(t),a=0;a<e.length;++a)n+=this.encodeString(e[a]);var r=t-n%t,i=[];return i.length=r,this.update(i),this},S.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex,n=this.blockCount,a=this.s;if(e[t>>2]|=this.padding[3&t],this.lastByteIndex===this.byteCount)for(e[0]=e[n],t=1;t<n+1;++t)e[t]=0;for(e[n-1]|=2147483648,t=0;t<n;++t)a[t]^=e[t];k(a)}},S.prototype.toString=S.prototype.hex=function(){this.finalize();for(var e,t=this.blockCount,n=this.s,a=this.outputBlocks,r=this.extraBytes,i=0,o=0,c="";o<a;){for(i=0;i<t&&o<a;++i,++o)e=n[i],c+=s[e>>4&15]+s[15&e]+s[e>>12&15]+s[e>>8&15]+s[e>>20&15]+s[e>>16&15]+s[e>>28&15]+s[e>>24&15];o%t==0&&(k(n),i=0)}return r&&(e=n[i],c+=s[e>>4&15]+s[15&e],r>1&&(c+=s[e>>12&15]+s[e>>8&15]),r>2&&(c+=s[e>>20&15]+s[e>>16&15])),c},S.prototype.arrayBuffer=function(){this.finalize();var e,t=this.blockCount,n=this.s,a=this.outputBlocks,r=this.extraBytes,i=0,s=0,o=this.outputBits>>3;e=r?new ArrayBuffer(a+1<<2):new ArrayBuffer(o);for(var c=new Uint32Array(e);s<a;){for(i=0;i<t&&s<a;++i,++s)c[s]=n[i];s%t==0&&k(n)}return r&&(c[i]=n[i],e=e.slice(0,o)),e},S.prototype.buffer=S.prototype.arrayBuffer,S.prototype.digest=S.prototype.array=function(){this.finalize();for(var e,t,n=this.blockCount,a=this.s,r=this.outputBlocks,i=this.extraBytes,s=0,o=0,c=[];o<r;){for(s=0;s<n&&o<r;++s,++o)e=o<<2,t=a[s],c[e]=255&t,c[e+1]=t>>8&255,c[e+2]=t>>16&255,c[e+3]=t>>24&255;o%n==0&&k(a)}return i&&(e=o<<2,t=a[s],c[e]=255&t,i>1&&(c[e+1]=t>>8&255),i>2&&(c[e+2]=t>>16&255)),c},N.prototype=new S,N.prototype.finalize=function(){return this.encode(this.outputBits,!0),S.prototype.finalize.call(this)};var k=function(e){var t,n,a,r,i,s,o,c,u,f,l,p,h,m,b,y,g,E,w,T,R,_,v,A,C,I,O,S,N,k,M,P,D,x,L,U,F,B,V,G,q,j,z,H,W,$,X,K,J,Z,Q,Y,ee,te,ne,ae,re,ie,se,oe,ce,de,ue;for(a=0;a<48;a+=2)r=e[0]^e[10]^e[20]^e[30]^e[40],i=e[1]^e[11]^e[21]^e[31]^e[41],s=e[2]^e[12]^e[22]^e[32]^e[42],o=e[3]^e[13]^e[23]^e[33]^e[43],c=e[4]^e[14]^e[24]^e[34]^e[44],u=e[5]^e[15]^e[25]^e[35]^e[45],f=e[6]^e[16]^e[26]^e[36]^e[46],l=e[7]^e[17]^e[27]^e[37]^e[47],t=(p=e[8]^e[18]^e[28]^e[38]^e[48])^(s<<1|o>>>31),n=(h=e[9]^e[19]^e[29]^e[39]^e[49])^(o<<1|s>>>31),e[0]^=t,e[1]^=n,e[10]^=t,e[11]^=n,e[20]^=t,e[21]^=n,e[30]^=t,e[31]^=n,e[40]^=t,e[41]^=n,t=r^(c<<1|u>>>31),n=i^(u<<1|c>>>31),e[2]^=t,e[3]^=n,e[12]^=t,e[13]^=n,e[22]^=t,e[23]^=n,e[32]^=t,e[33]^=n,e[42]^=t,e[43]^=n,t=s^(f<<1|l>>>31),n=o^(l<<1|f>>>31),e[4]^=t,e[5]^=n,e[14]^=t,e[15]^=n,e[24]^=t,e[25]^=n,e[34]^=t,e[35]^=n,e[44]^=t,e[45]^=n,t=c^(p<<1|h>>>31),n=u^(h<<1|p>>>31),e[6]^=t,e[7]^=n,e[16]^=t,e[17]^=n,e[26]^=t,e[27]^=n,e[36]^=t,e[37]^=n,e[46]^=t,e[47]^=n,t=f^(r<<1|i>>>31),n=l^(i<<1|r>>>31),e[8]^=t,e[9]^=n,e[18]^=t,e[19]^=n,e[28]^=t,e[29]^=n,e[38]^=t,e[39]^=n,e[48]^=t,e[49]^=n,m=e[0],b=e[1],$=e[11]<<4|e[10]>>>28,X=e[10]<<4|e[11]>>>28,S=e[20]<<3|e[21]>>>29,N=e[21]<<3|e[20]>>>29,oe=e[31]<<9|e[30]>>>23,ce=e[30]<<9|e[31]>>>23,j=e[40]<<18|e[41]>>>14,z=e[41]<<18|e[40]>>>14,x=e[2]<<1|e[3]>>>31,L=e[3]<<1|e[2]>>>31,y=e[13]<<12|e[12]>>>20,g=e[12]<<12|e[13]>>>20,K=e[22]<<10|e[23]>>>22,J=e[23]<<10|e[22]>>>22,k=e[33]<<13|e[32]>>>19,M=e[32]<<13|e[33]>>>19,de=e[42]<<2|e[43]>>>30,ue=e[43]<<2|e[42]>>>30,te=e[5]<<30|e[4]>>>2,ne=e[4]<<30|e[5]>>>2,U=e[14]<<6|e[15]>>>26,F=e[15]<<6|e[14]>>>26,E=e[25]<<11|e[24]>>>21,w=e[24]<<11|e[25]>>>21,Z=e[34]<<15|e[35]>>>17,Q=e[35]<<15|e[34]>>>17,P=e[45]<<29|e[44]>>>3,D=e[44]<<29|e[45]>>>3,A=e[6]<<28|e[7]>>>4,C=e[7]<<28|e[6]>>>4,ae=e[17]<<23|e[16]>>>9,re=e[16]<<23|e[17]>>>9,B=e[26]<<25|e[27]>>>7,V=e[27]<<25|e[26]>>>7,T=e[36]<<21|e[37]>>>11,R=e[37]<<21|e[36]>>>11,Y=e[47]<<24|e[46]>>>8,ee=e[46]<<24|e[47]>>>8,H=e[8]<<27|e[9]>>>5,W=e[9]<<27|e[8]>>>5,I=e[18]<<20|e[19]>>>12,O=e[19]<<20|e[18]>>>12,ie=e[29]<<7|e[28]>>>25,se=e[28]<<7|e[29]>>>25,G=e[38]<<8|e[39]>>>24,q=e[39]<<8|e[38]>>>24,_=e[48]<<14|e[49]>>>18,v=e[49]<<14|e[48]>>>18,e[0]=m^~y&E,e[1]=b^~g&w,e[10]=A^~I&S,e[11]=C^~O&N,e[20]=x^~U&B,e[21]=L^~F&V,e[30]=H^~$&K,e[31]=W^~X&J,e[40]=te^~ae&ie,e[41]=ne^~re&se,e[2]=y^~E&T,e[3]=g^~w&R,e[12]=I^~S&k,e[13]=O^~N&M,e[22]=U^~B&G,e[23]=F^~V&q,e[32]=$^~K&Z,e[33]=X^~J&Q,e[42]=ae^~ie&oe,e[43]=re^~se&ce,e[4]=E^~T&_,e[5]=w^~R&v,e[14]=S^~k&P,e[15]=N^~M&D,e[24]=B^~G&j,e[25]=V^~q&z,e[34]=K^~Z&Y,e[35]=J^~Q&ee,e[44]=ie^~oe&de,e[45]=se^~ce&ue,e[6]=T^~_&m,e[7]=R^~v&b,e[16]=k^~P&A,e[17]=M^~D&C,e[26]=G^~j&x,e[27]=q^~z&L,e[36]=Z^~Y&H,e[37]=Q^~ee&W,e[46]=oe^~de&te,e[47]=ce^~ue&ne,e[8]=_^~m&y,e[9]=v^~b&g,e[18]=P^~A&I,e[19]=D^~C&O,e[28]=j^~x&U,e[29]=z^~L&F,e[38]=Y^~H&$,e[39]=ee^~W&X,e[48]=de^~te&ae,e[49]=ue^~ne&re,e[0]^=d[a],e[1]^=d[a+1]};if(r)lo.exports=T;else for(_=0;_<R.length;++_)n[R[_]]=T[R[_]]}();var ho=Hi(po.exports);function mo(e){return"0x"+ho.keccak_256(ds(e))}const bo=new as("rlp/5.7.0");function yo(e){const t=[];for(;e;)t.unshift(255&e),e>>=8;return t}function go(e,t,n){let a=0;for(let r=0;r<n;r++)a=256*a+e[t+r];return a}function Eo(e){if(Array.isArray(e)){let t=[];if(e.forEach((function(e){t=t.concat(Eo(e))})),t.length<=55)return t.unshift(192+t.length),t;const n=yo(t.length);return n.unshift(247+n.length),n.concat(t)}var t;fs(t=e)&&!(t.length%2)||cs(t)||bo.throwArgumentError("RLP object must be BytesLike","object",e);const n=Array.prototype.slice.call(ds(e));if(1===n.length&&n[0]<=127)return n;if(n.length<=55)return n.unshift(128+n.length),n;const a=yo(n.length);return a.unshift(183+a.length),a.concat(n)}function wo(e,t,n,a){const r=[];for(;n<t+1+a;){const i=To(e,n);r.push(i.result),(n+=i.consumed)>t+1+a&&bo.throwError("child data too short",as.errors.BUFFER_OVERRUN,{})}return{consumed:1+a,result:r}}function To(e,t){if(0===e.length&&bo.throwError("data too short",as.errors.BUFFER_OVERRUN,{}),e[t]>=248){const n=e[t]-247;t+1+n>e.length&&bo.throwError("data short segment too short",as.errors.BUFFER_OVERRUN,{});const a=go(e,t+1,n);return t+1+n+a>e.length&&bo.throwError("data long segment too short",as.errors.BUFFER_OVERRUN,{}),wo(e,t,t+1+n,n+a)}if(e[t]>=192){const n=e[t]-192;return t+1+n>e.length&&bo.throwError("data array too short",as.errors.BUFFER_OVERRUN,{}),wo(e,t,t+1,n)}if(e[t]>=184){const n=e[t]-183;t+1+n>e.length&&bo.throwError("data array too short",as.errors.BUFFER_OVERRUN,{});const a=go(e,t+1,n);t+1+n+a>e.length&&bo.throwError("data array too short",as.errors.BUFFER_OVERRUN,{});return{consumed:1+n+a,result:ps(e.slice(t+1+n,t+1+n+a))}}if(e[t]>=128){const n=e[t]-128;t+1+n>e.length&&bo.throwError("data too short",as.errors.BUFFER_OVERRUN,{});return{consumed:1+n,result:ps(e.slice(t+1,t+1+n))}}return{consumed:1,result:ps(e[t])}}const Ro=new as("address/5.7.0");function _o(e){fs(e,20)||Ro.throwArgumentError("invalid address","address",e);const t=(e=e.toLowerCase()).substring(2).split(""),n=new Uint8Array(40);for(let e=0;e<40;e++)n[e]=t[e].charCodeAt(0);const a=ds(mo(n));for(let e=0;e<40;e+=2)a[e>>1]>>4>=8&&(t[e]=t[e].toUpperCase()),(15&a[e>>1])>=8&&(t[e+1]=t[e+1].toUpperCase());return"0x"+t.join("")}const vo={};for(let e=0;e<10;e++)vo[String(e)]=String(e);for(let e=0;e<26;e++)vo[String.fromCharCode(65+e)]=String(10+e);const Ao=Math.floor((Co=9007199254740991,Math.log10?Math.log10(Co):Math.log(Co)/Math.LN10));var Co;function Io(e){let t=null;if("string"!=typeof e&&Ro.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==e.substring(0,2)&&(e="0x"+e),t=_o(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&Ro.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==function(e){let t=(e=(e=e.toUpperCase()).substring(4)+e.substring(0,2)+"00").split("").map((e=>vo[e])).join("");for(;t.length>=Ao;){let e=t.substring(0,Ao);t=parseInt(e,10)%97+t.substring(e.length)}let n=String(98-parseInt(t,10)%97);for(;n.length<2;)n="0"+n;return n}(e)&&Ro.throwArgumentError("bad icap checksum","address",e),n=e.substring(4),t=new bs(n,36).toString(16);t.length<40;)t="0"+t;t=_o("0x"+t)}else Ro.throwArgumentError("invalid address","address",e);var n;return t}function Oo(e){try{return Io(e),!0}catch(e){}return!1}function So(e){let t=null;try{t=Io(e.from)}catch(t){Ro.throwArgumentError("missing from address","transaction",e)}const n=function(e){let t=ds(e);if(0===t.length)return t;let n=0;for(;n<t.length&&0===t[n];)n++;return n&&(t=t.slice(n)),t}(ds(Ts.from(e.nonce).toHexString()));return Io(hs(mo(ps(Eo([t,n]))),12))}class No extends co{constructor(e){super("address","address",e,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(e,t){try{t=Io(t)}catch(e){this._throwError(e.message,t)}return e.writeValue(t)}decode(e){return Io(ms(e.readValue().toHexString(),20))}}class ko extends co{constructor(e){super(e.name,e.type,void 0,e.dynamic),this.coder=e}defaultValue(){return this.coder.defaultValue()}encode(e,t){return this.coder.encode(e,t)}decode(e){return this.coder.decode(e)}}const Mo=new as(Us);function Po(e,t,n){let a=null;if(Array.isArray(n))a=n;else if(n&&"object"==typeof n){let e={};a=t.map((t=>{const a=t.localName;return a||Mo.throwError("cannot encode object for signature with missing names",as.errors.INVALID_ARGUMENT,{argument:"values",coder:t,value:n}),e[a]&&Mo.throwError("cannot encode object for signature with duplicate names",as.errors.INVALID_ARGUMENT,{argument:"values",coder:t,value:n}),e[a]=!0,n[a]}))}else Mo.throwArgumentError("invalid tuple value","tuple",n);t.length!==a.length&&Mo.throwArgumentError("types/value length mismatch","tuple",n);let r=new uo(e.wordSize),i=new uo(e.wordSize),s=[];t.forEach(((e,t)=>{let n=a[t];if(e.dynamic){let t=i.length;e.encode(i,n);let a=r.writeUpdatableValue();s.push((e=>{a(e+t)}))}else e.encode(r,n)})),s.forEach((e=>{e(r.length)}));let o=e.appendWriter(r);return o+=e.appendWriter(i),o}function Do(e,t){let n=[],a=e.subReader(0);t.forEach((t=>{let r=null;if(t.dynamic){let n=e.readValue(),i=a.subReader(n.toNumber());try{r=t.decode(i)}catch(e){if(e.code===as.errors.BUFFER_OVERRUN)throw e;r=e,r.baseType=t.name,r.name=t.localName,r.type=t.type}}else try{r=t.decode(e)}catch(e){if(e.code===as.errors.BUFFER_OVERRUN)throw e;r=e,r.baseType=t.name,r.name=t.localName,r.type=t.type}null!=r&&n.push(r)}));const r=t.reduce(((e,t)=>{const n=t.localName;return n&&(e[n]||(e[n]=0),e[n]++),e}),{});t.forEach(((e,t)=>{let a=e.localName;if(!a||1!==r[a])return;if("length"===a&&(a="_length"),null!=n[a])return;const i=n[t];i instanceof Error?Object.defineProperty(n,a,{enumerable:!0,get:()=>{throw i}}):n[a]=i}));for(let e=0;e<n.length;e++){const t=n[e];t instanceof Error&&Object.defineProperty(n,e,{enumerable:!0,get:()=>{throw t}})}return Object.freeze(n)}class xo extends co{constructor(e,t,n){super("array",e.type+"["+(t>=0?t:"")+"]",n,-1===t||e.dynamic),this.coder=e,this.length=t}defaultValue(){const e=this.coder.defaultValue(),t=[];for(let n=0;n<this.length;n++)t.push(e);return t}encode(e,t){Array.isArray(t)||this._throwError("expected array value",t);let n=this.length;-1===n&&(n=t.length,e.writeValue(t.length)),Mo.checkArgumentCount(t.length,n,"coder array"+(this.localName?" "+this.localName:""));let a=[];for(let e=0;e<t.length;e++)a.push(this.coder);return Po(e,a,t)}decode(e){let t=this.length;-1===t&&(t=e.readValue().toNumber(),32*t>e._data.length&&Mo.throwError("insufficient data length",as.errors.BUFFER_OVERRUN,{length:e._data.length,count:t}));let n=[];for(let e=0;e<t;e++)n.push(new ko(this.coder));return e.coerce(this.name,Do(e,n))}}class Lo extends co{constructor(e){super("bool","bool",e,!1)}defaultValue(){return!1}encode(e,t){return e.writeValue(t?1:0)}decode(e){return e.coerce(this.type,!e.readValue().isZero())}}class Uo extends co{constructor(e,t){super(e,e,t,!0)}defaultValue(){return"0x"}encode(e,t){t=ds(t);let n=e.writeValue(t.length);return n+=e.writeBytes(t),n}decode(e){return e.readBytes(e.readValue().toNumber(),!0)}}class Fo extends Uo{constructor(e){super("bytes",e)}decode(e){return e.coerce(this.name,ps(super.decode(e)))}}class Bo extends co{constructor(e,t){let n="bytes"+String(e);super(n,n,t,!1),this.size=e}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(e,t){let n=ds(t);return n.length!==this.size&&this._throwError("incorrect data length",t),e.writeBytes(n)}decode(e){return e.coerce(this.name,ps(e.readBytes(this.size)))}}class Vo extends co{constructor(e){super("null","",e,!1)}defaultValue(){return null}encode(e,t){return null!=t&&this._throwError("not null",t),e.writeBytes([])}decode(e){return e.readBytes(0),e.coerce(this.name,null)}}const Go=Ts.from(-1),qo=Ts.from(0),jo=Ts.from(1),zo=Ts.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class Ho extends co{constructor(e,t,n){const a=(t?"int":"uint")+8*e;super(a,a,n,!1),this.size=e,this.signed=t}defaultValue(){return 0}encode(e,t){let n=Ts.from(t),a=zo.mask(8*e.wordSize);if(this.signed){let e=a.mask(8*this.size-1);(n.gt(e)||n.lt(e.add(jo).mul(Go)))&&this._throwError("value out-of-bounds",t)}else(n.lt(qo)||n.gt(a.mask(8*this.size)))&&this._throwError("value out-of-bounds",t);return n=n.toTwos(8*this.size).mask(8*this.size),this.signed&&(n=n.fromTwos(8*this.size).toTwos(8*e.wordSize)),e.writeValue(n)}decode(e){let t=e.readValue().mask(8*this.size);return this.signed&&(t=t.fromTwos(8*this.size)),e.coerce(this.name,t)}}const Wo=new as("strings/5.7.0");var $o,Xo;function Ko(e,t,n,a,r){if(e===Xo.BAD_PREFIX||e===Xo.UNEXPECTED_CONTINUE){let e=0;for(let a=t+1;a<n.length&&n[a]>>6==2;a++)e++;return e}return e===Xo.OVERRUN?n.length-t-1:0}!function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"}($o||($o={})),function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"}(Xo||(Xo={}));const Jo=Object.freeze({error:function(e,t,n,a,r){return Wo.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",n)},ignore:Ko,replace:function(e,t,n,a,r){return e===Xo.OVERLONG?(a.push(r),0):(a.push(65533),Ko(e,t,n))}});function Zo(e,t=$o.current){t!=$o.current&&(Wo.checkNormalize(),e=e.normalize(t));let n=[];for(let t=0;t<e.length;t++){const a=e.charCodeAt(t);if(a<128)n.push(a);else if(a<2048)n.push(a>>6|192),n.push(63&a|128);else if(55296==(64512&a)){t++;const r=e.charCodeAt(t);if(t>=e.length||56320!=(64512&r))throw new Error("invalid utf-8 string");const i=65536+((1023&a)<<10)+(1023&r);n.push(i>>18|240),n.push(i>>12&63|128),n.push(i>>6&63|128),n.push(63&i|128)}else n.push(a>>12|224),n.push(a>>6&63|128),n.push(63&a|128)}return ds(n)}function Qo(e,t){return n=function(e,t){null==t&&(t=Jo.error),e=ds(e);const n=[];let a=0;for(;a<e.length;){const r=e[a++];if(r>>7==0){n.push(r);continue}let i=null,s=null;if(192==(224&r))i=1,s=127;else if(224==(240&r))i=2,s=2047;else{if(240!=(248&r)){a+=t(128==(192&r)?Xo.UNEXPECTED_CONTINUE:Xo.BAD_PREFIX,a-1,e,n);continue}i=3,s=65535}if(a-1+i>=e.length){a+=t(Xo.OVERRUN,a-1,e,n);continue}let o=r&(1<<8-i-1)-1;for(let r=0;r<i;r++){let r=e[a];if(128!=(192&r)){a+=t(Xo.MISSING_CONTINUE,a,e,n),o=null;break}o=o<<6|63&r,a++}null!==o&&(o>1114111?a+=t(Xo.OUT_OF_RANGE,a-1-i,e,n,o):o>=55296&&o<=57343?a+=t(Xo.UTF16_SURROGATE,a-1-i,e,n,o):o<=s?a+=t(Xo.OVERLONG,a-1-i,e,n,o):n.push(o))}return n}(e,t),n.map((e=>e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10&1023),56320+(1023&e))))).join("");var n}class Yo extends Uo{constructor(e){super("string",e)}defaultValue(){return""}encode(e,t){return super.encode(e,Zo(t))}decode(e){return Qo(super.decode(e))}}class ec extends co{constructor(e,t){let n=!1;const a=[];e.forEach((e=>{e.dynamic&&(n=!0),a.push(e.type)}));super("tuple","tuple("+a.join(",")+")",t,n),this.coders=e}defaultValue(){const e=[];this.coders.forEach((t=>{e.push(t.defaultValue())}));const t=this.coders.reduce(((e,t)=>{const n=t.localName;return n&&(e[n]||(e[n]=0),e[n]++),e}),{});return this.coders.forEach(((n,a)=>{let r=n.localName;r&&1===t[r]&&("length"===r&&(r="_length"),null==e[r]&&(e[r]=e[a]))})),Object.freeze(e)}encode(e,t){return Po(e,this.coders,t)}decode(e){return e.coerce(this.name,Do(e,this.coders))}}const tc=new as(Us),nc=new RegExp(/^bytes([0-9]*)$/),ac=new RegExp(/^(u?int)([0-9]*)$/);const rc=new class{constructor(e){Os(this,"coerceFunc",e||null)}_getCoder(e){switch(e.baseType){case"address":return new No(e.name);case"bool":return new Lo(e.name);case"string":return new Yo(e.name);case"bytes":return new Fo(e.name);case"array":return new xo(this._getCoder(e.arrayChildren),e.arrayLength,e.name);case"tuple":return new ec((e.components||[]).map((e=>this._getCoder(e))),e.name);case"":return new Vo(e.name)}let t=e.type.match(ac);if(t){let n=parseInt(t[2]||"256");return(0===n||n>256||n%8!=0)&&tc.throwArgumentError("invalid "+t[1]+" bit length","param",e),new Ho(n/8,"int"===t[1],e.name)}if(t=e.type.match(nc),t){let n=parseInt(t[1]);return(0===n||n>32)&&tc.throwArgumentError("invalid bytes length","param",e),new Bo(n,e.name)}return tc.throwArgumentError("invalid type","type",e.type)}_getWordSize(){return 32}_getReader(e,t){return new fo(e,this._getWordSize(),this.coerceFunc,t)}_getWriter(){return new uo(this._getWordSize())}getDefaultValue(e){const t=e.map((e=>this._getCoder(Ws.from(e))));return new ec(t,"_").defaultValue()}encode(e,t){e.length!==t.length&&tc.throwError("types/values length mismatch",as.errors.INVALID_ARGUMENT,{count:{types:e.length,values:t.length},value:{types:e,values:t}});const n=e.map((e=>this._getCoder(Ws.from(e)))),a=new ec(n,"_"),r=this._getWriter();return a.encode(r,t),r.data}decode(e,t,n){const a=e.map((e=>this._getCoder(Ws.from(e))));return new ec(a,"_").decode(this._getReader(ds(t),n))}};function ic(e){return mo(Zo(e))}const sc=new as(Us);class oc extends Ls{}class cc extends Ls{}class dc extends Ls{}class uc extends Ls{static isIndexed(e){return!(!e||!e._isIndexed)}}const fc={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function lc(e,t){const n=new Error(`deferred error during ABI decoding triggered accessing ${e}`);return n.error=t,n}class pc{constructor(e){let t=[];t="string"==typeof e?JSON.parse(e):e,Os(this,"fragments",t.map((e=>Xs.from(e))).filter((e=>null!=e))),Os(this,"_abiCoder",Ss(new.target,"getAbiCoder")()),Os(this,"functions",{}),Os(this,"errors",{}),Os(this,"events",{}),Os(this,"structs",{}),this.fragments.forEach((e=>{let t=null;switch(e.type){case"constructor":return this.deploy?void sc.warn("duplicate definition - constructor"):void Os(this,"deploy",e);case"function":t=this.functions;break;case"event":t=this.events;break;case"error":t=this.errors;break;default:return}let n=e.format();t[n]?sc.warn("duplicate definition - "+n):t[n]=e})),this.deploy||Os(this,"deploy",Ys.from({payable:!1,type:"constructor"})),Os(this,"_isInterface",!0)}format(e){e||(e=zs.full),e===zs.sighash&&sc.throwArgumentError("interface does not support formatting sighash","format",e);const t=this.fragments.map((t=>t.format(e)));return e===zs.json?JSON.stringify(t.map((e=>JSON.parse(e)))):t}static getAbiCoder(){return rc}static getAddress(e){return Io(e)}static getSighash(e){return hs(ic(e.format()),0,4)}static getEventTopic(e){return ic(e.format())}getFunction(e){if(fs(e)){for(const t in this.functions)if(e===this.getSighash(t))return this.functions[t];sc.throwArgumentError("no matching function","sighash",e)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.functions).filter((e=>e.split("(")[0]===t));return 0===n.length?sc.throwArgumentError("no matching function","name",t):n.length>1&&sc.throwArgumentError("multiple matching functions","name",t),this.functions[n[0]]}const t=this.functions[eo.fromString(e).format()];return t||sc.throwArgumentError("no matching function","signature",e),t}getEvent(e){if(fs(e)){const t=e.toLowerCase();for(const e in this.events)if(t===this.getEventTopic(e))return this.events[e];sc.throwArgumentError("no matching event","topichash",t)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.events).filter((e=>e.split("(")[0]===t));return 0===n.length?sc.throwArgumentError("no matching event","name",t):n.length>1&&sc.throwArgumentError("multiple matching events","name",t),this.events[n[0]]}const t=this.events[Ks.fromString(e).format()];return t||sc.throwArgumentError("no matching event","signature",e),t}getError(e){if(fs(e)){const t=Ss(this.constructor,"getSighash");for(const n in this.errors){if(e===t(this.errors[n]))return this.errors[n]}sc.throwArgumentError("no matching error","sighash",e)}if(-1===e.indexOf("(")){const t=e.trim(),n=Object.keys(this.errors).filter((e=>e.split("(")[0]===t));return 0===n.length?sc.throwArgumentError("no matching error","name",t):n.length>1&&sc.throwArgumentError("multiple matching errors","name",t),this.errors[n[0]]}const t=this.errors[eo.fromString(e).format()];return t||sc.throwArgumentError("no matching error","signature",e),t}getSighash(e){if("string"==typeof e)try{e=this.getFunction(e)}catch(t){try{e=this.getError(e)}catch(e){throw t}}return Ss(this.constructor,"getSighash")(e)}getEventTopic(e){return"string"==typeof e&&(e=this.getEvent(e)),Ss(this.constructor,"getEventTopic")(e)}_decodeParams(e,t){return this._abiCoder.decode(e,t)}_encodeParams(e,t){return this._abiCoder.encode(e,t)}encodeDeploy(e){return this._encodeParams(this.deploy.inputs,e||[])}decodeErrorResult(e,t){"string"==typeof e&&(e=this.getError(e));const n=ds(t);return ps(n.slice(0,4))!==this.getSighash(e)&&sc.throwArgumentError(`data signature does not match error ${e.name}.`,"data",ps(n)),this._decodeParams(e.inputs,n.slice(4))}encodeErrorResult(e,t){return"string"==typeof e&&(e=this.getError(e)),ps(us([this.getSighash(e),this._encodeParams(e.inputs,t||[])]))}decodeFunctionData(e,t){"string"==typeof e&&(e=this.getFunction(e));const n=ds(t);return ps(n.slice(0,4))!==this.getSighash(e)&&sc.throwArgumentError(`data signature does not match function ${e.name}.`,"data",ps(n)),this._decodeParams(e.inputs,n.slice(4))}encodeFunctionData(e,t){return"string"==typeof e&&(e=this.getFunction(e)),ps(us([this.getSighash(e),this._encodeParams(e.inputs,t||[])]))}decodeFunctionResult(e,t){"string"==typeof e&&(e=this.getFunction(e));let n=ds(t),a=null,r="",i=null,s=null,o=null;switch(n.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(e.outputs,n)}catch(e){}break;case 4:{const e=ps(n.slice(0,4)),t=fc[e];if(t)i=this._abiCoder.decode(t.inputs,n.slice(4)),s=t.name,o=t.signature,t.reason&&(a=i[0]),"Error"===s?r=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(i[0])}`:"Panic"===s&&(r=`; VM Exception while processing transaction: reverted with panic code ${i[0]}`);else try{const t=this.getError(e);i=this._abiCoder.decode(t.inputs,n.slice(4)),s=t.name,o=t.format()}catch(e){}break}}return sc.throwError("call revert exception"+r,as.errors.CALL_EXCEPTION,{method:e.format(),data:ps(t),errorArgs:i,errorName:s,errorSignature:o,reason:a})}encodeFunctionResult(e,t){return"string"==typeof e&&(e=this.getFunction(e)),ps(this._abiCoder.encode(e.outputs,t||[]))}encodeFilterTopics(e,t){"string"==typeof e&&(e=this.getEvent(e)),t.length>e.inputs.length&&sc.throwError("too many arguments for "+e.format(),as.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:t});let n=[];e.anonymous||n.push(this.getEventTopic(e));const a=(e,t)=>"string"===e.type?ic(t):"bytes"===e.type?mo(ps(t)):("bool"===e.type&&"boolean"==typeof t&&(t=t?"0x01":"0x00"),e.type.match(/^u?int/)&&(t=Ts.from(t).toHexString()),"address"===e.type&&this._abiCoder.encode(["address"],[t]),ms(ps(t),32));for(t.forEach(((t,r)=>{let i=e.inputs[r];i.indexed?null==t?n.push(null):"array"===i.baseType||"tuple"===i.baseType?sc.throwArgumentError("filtering with tuples or arrays not supported","contract."+i.name,t):Array.isArray(t)?n.push(t.map((e=>a(i,e)))):n.push(a(i,t)):null!=t&&sc.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+i.name,t)}));n.length&&null===n[n.length-1];)n.pop();return n}encodeEventLog(e,t){"string"==typeof e&&(e=this.getEvent(e));const n=[],a=[],r=[];return e.anonymous||n.push(this.getEventTopic(e)),t.length!==e.inputs.length&&sc.throwArgumentError("event arguments/values mismatch","values",t),e.inputs.forEach(((e,i)=>{const s=t[i];if(e.indexed)if("string"===e.type)n.push(ic(s));else if("bytes"===e.type)n.push(mo(s));else{if("tuple"===e.baseType||"array"===e.baseType)throw new Error("not implemented");n.push(this._abiCoder.encode([e.type],[s]))}else a.push(e),r.push(s)})),{data:this._abiCoder.encode(a,r),topics:n}}decodeEventLog(e,t,n){if("string"==typeof e&&(e=this.getEvent(e)),null!=n&&!e.anonymous){let t=this.getEventTopic(e);fs(n[0],32)&&n[0].toLowerCase()===t||sc.throwError("fragment/topic mismatch",as.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:t,value:n[0]}),n=n.slice(1)}let a=[],r=[],i=[];e.inputs.forEach(((e,t)=>{e.indexed?"string"===e.type||"bytes"===e.type||"tuple"===e.baseType||"array"===e.baseType?(a.push(Ws.fromObject({type:"bytes32",name:e.name})),i.push(!0)):(a.push(e),i.push(!1)):(r.push(e),i.push(!1))}));let s=null!=n?this._abiCoder.decode(a,us(n)):null,o=this._abiCoder.decode(r,t,!0),c=[],d=0,u=0;e.inputs.forEach(((e,t)=>{if(e.indexed)if(null==s)c[t]=new uc({_isIndexed:!0,hash:null});else if(i[t])c[t]=new uc({_isIndexed:!0,hash:s[u++]});else try{c[t]=s[u++]}catch(e){c[t]=e}else try{c[t]=o[d++]}catch(e){c[t]=e}if(e.name&&null==c[e.name]){const n=c[t];n instanceof Error?Object.defineProperty(c,e.name,{enumerable:!0,get:()=>{throw lc(`property ${JSON.stringify(e.name)}`,n)}}):c[e.name]=n}}));for(let e=0;e<c.length;e++){const t=c[e];t instanceof Error&&Object.defineProperty(c,e,{enumerable:!0,get:()=>{throw lc(`index ${e}`,t)}})}return Object.freeze(c)}parseTransaction(e){let t=this.getFunction(e.data.substring(0,10).toLowerCase());return t?new cc({args:this._abiCoder.decode(t.inputs,"0x"+e.data.substring(10)),functionFragment:t,name:t.name,signature:t.format(),sighash:this.getSighash(t),value:Ts.from(e.value||"0")}):null}parseLog(e){let t=this.getEvent(e.topics[0]);return!t||t.anonymous?null:new oc({eventFragment:t,name:t.name,signature:t.format(),topic:this.getEventTopic(t),args:this.decodeEventLog(t,e.data,e.topics)})}parseError(e){const t=ps(e);let n=this.getError(t.substring(0,10).toLowerCase());return n?new dc({args:this._abiCoder.decode(n.inputs,"0x"+t.substring(10)),errorFragment:n,name:n.name,signature:n.format(),sighash:this.getSighash(n)}):null}static isInterface(e){return!(!e||!e._isInterface)}}var hc=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function s(e){try{c(a.next(e))}catch(e){i(e)}}function o(e){try{c(a.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}c((a=a.apply(e,t||[])).next())}))};const mc=new as("abstract-provider/5.7.0");class bc{constructor(){mc.checkAbstract(new.target,bc),Os(this,"_isProvider",!0)}getFeeData(){return hc(this,void 0,void 0,(function*(){const{block:e,gasPrice:t}=yield Ns({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch((e=>null))});let n=null,a=null,r=null;return e&&e.baseFeePerGas&&(n=e.baseFeePerGas,r=Ts.from("1500000000"),a=e.baseFeePerGas.mul(2).add(r)),{lastBaseFeePerGas:n,maxFeePerGas:a,maxPriorityFeePerGas:r,gasPrice:t}}))}addListener(e,t){return this.on(e,t)}removeListener(e,t){return this.off(e,t)}static isProvider(e){return!(!e||!e._isProvider)}}var yc=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function s(e){try{c(a.next(e))}catch(e){i(e)}}function o(e){try{c(a.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}c((a=a.apply(e,t||[])).next())}))};const gc=new as("abstract-signer/5.7.0"),Ec=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],wc=[as.errors.INSUFFICIENT_FUNDS,as.errors.NONCE_EXPIRED,as.errors.REPLACEMENT_UNDERPRICED];class Tc{constructor(){gc.checkAbstract(new.target,Tc),Os(this,"_isSigner",!0)}getBalance(e){return yc(this,void 0,void 0,(function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),e)}))}getTransactionCount(e){return yc(this,void 0,void 0,(function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),e)}))}estimateGas(e){return yc(this,void 0,void 0,(function*(){this._checkProvider("estimateGas");const t=yield Ns(this.checkTransaction(e));return yield this.provider.estimateGas(t)}))}call(e,t){return yc(this,void 0,void 0,(function*(){this._checkProvider("call");const n=yield Ns(this.checkTransaction(e));return yield this.provider.call(n,t)}))}sendTransaction(e){return yc(this,void 0,void 0,(function*(){this._checkProvider("sendTransaction");const t=yield this.populateTransaction(e),n=yield this.signTransaction(t);return yield this.provider.sendTransaction(n)}))}getChainId(){return yc(this,void 0,void 0,(function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId}))}getGasPrice(){return yc(this,void 0,void 0,(function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()}))}getFeeData(){return yc(this,void 0,void 0,(function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()}))}resolveName(e){return yc(this,void 0,void 0,(function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(e)}))}checkTransaction(e){for(const t in e)-1===Ec.indexOf(t)&&gc.throwArgumentError("invalid transaction key: "+t,"transaction",e);const t=ks(e);return null==t.from?t.from=this.getAddress():t.from=Promise.all([Promise.resolve(t.from),this.getAddress()]).then((t=>(t[0].toLowerCase()!==t[1].toLowerCase()&&gc.throwArgumentError("from address mismatch","transaction",e),t[0]))),t}populateTransaction(e){return yc(this,void 0,void 0,(function*(){const t=yield Ns(this.checkTransaction(e));null!=t.to&&(t.to=Promise.resolve(t.to).then((e=>yc(this,void 0,void 0,(function*(){if(null==e)return null;const t=yield this.resolveName(e);return null==t&&gc.throwArgumentError("provided ENS name resolves to null","tx.to",e),t})))),t.to.catch((e=>{})));const n=null!=t.maxFeePerGas||null!=t.maxPriorityFeePerGas;if(null==t.gasPrice||2!==t.type&&!n?0!==t.type&&1!==t.type||!n||gc.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",e):gc.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",e),2!==t.type&&null!=t.type||null==t.maxFeePerGas||null==t.maxPriorityFeePerGas)if(0===t.type||1===t.type)null==t.gasPrice&&(t.gasPrice=this.getGasPrice());else{const e=yield this.getFeeData();if(null==t.type)if(null!=e.maxFeePerGas&&null!=e.maxPriorityFeePerGas)if(t.type=2,null!=t.gasPrice){const e=t.gasPrice;delete t.gasPrice,t.maxFeePerGas=e,t.maxPriorityFeePerGas=e}else null==t.maxFeePerGas&&(t.maxFeePerGas=e.maxFeePerGas),null==t.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=e.maxPriorityFeePerGas);else null!=e.gasPrice?(n&&gc.throwError("network does not support EIP-1559",as.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==t.gasPrice&&(t.gasPrice=e.gasPrice),t.type=0):gc.throwError("failed to get consistent fee data",as.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===t.type&&(null==t.maxFeePerGas&&(t.maxFeePerGas=e.maxFeePerGas),null==t.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=e.maxPriorityFeePerGas))}else t.type=2;return null==t.nonce&&(t.nonce=this.getTransactionCount("pending")),null==t.gasLimit&&(t.gasLimit=this.estimateGas(t).catch((e=>{if(wc.indexOf(e.code)>=0)throw e;return gc.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",as.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,tx:t})}))),null==t.chainId?t.chainId=this.getChainId():t.chainId=Promise.all([Promise.resolve(t.chainId),this.getChainId()]).then((t=>(0!==t[1]&&t[0]!==t[1]&&gc.throwArgumentError("chainId address mismatch","transaction",e),t[0]))),yield Ns(t)}))}_checkProvider(e){this.provider||gc.throwError("missing provider",as.errors.UNSUPPORTED_OPERATION,{operation:e||"_checkProvider"})}static isSigner(e){return!(!e||!e._isSigner)}}class Rc extends Tc{constructor(e,t){super(),Os(this,"address",e),Os(this,"provider",t||null)}getAddress(){return Promise.resolve(this.address)}_fail(e,t){return Promise.resolve().then((()=>{gc.throwError(e,as.errors.UNSUPPORTED_OPERATION,{operation:t})}))}signMessage(e){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(e){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(e,t,n){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(e){return new Rc(this.address,e)}}const _c=new as("transactions/5.7.0");var vc;function Ac(e,t){return{address:Io(e),storageKeys:(t||[]).map(((t,n)=>(32!==function(e){if("string"!=typeof e)e=ps(e);else if(!fs(e)||e.length%2)return null;return(e.length-2)/2}(t)&&_c.throwArgumentError("invalid access list storageKey",`accessList[${e}:${n}]`,t),t.toLowerCase())))}}!function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"}(vc||(vc={}));var Cc=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function s(e){try{c(a.next(e))}catch(e){i(e)}}function o(e){try{c(a.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,o)}c((a=a.apply(e,t||[])).next())}))};const Ic=new as("contracts/5.7.0");function Oc(e,t){return Cc(this,void 0,void 0,(function*(){const n=yield t;"string"!=typeof n&&Ic.throwArgumentError("invalid address or ENS name","name",n);try{return Io(n)}catch(e){}e||Ic.throwError("a provider or signer is needed to resolve ENS names",as.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const a=yield e.resolveName(n);return null==a&&Ic.throwArgumentError("resolver or addr is not configured for ENS name","name",n),a}))}function Sc(e,t,n){return Cc(this,void 0,void 0,(function*(){return Array.isArray(n)?yield Promise.all(n.map(((n,a)=>Sc(e,Array.isArray(t)?t[a]:t[n.name],n)))):"address"===n.type?yield Oc(e,t):"tuple"===n.type?yield Sc(e,t,n.components):"array"===n.baseType?Array.isArray(t)?yield Promise.all(t.map((t=>Sc(e,t,n.arrayChildren)))):Promise.reject(Ic.makeError("invalid value for array",as.errors.INVALID_ARGUMENT,{argument:"value",value:t})):t}))}function Nc(e,t,n){return Cc(this,void 0,void 0,(function*(){let a={};n.length===t.inputs.length+1&&"object"==typeof n[n.length-1]&&(a=ks(n.pop())),Ic.checkArgumentCount(n.length,t.inputs.length,"passed to contract"),e.signer?a.from?a.from=Ns({override:Oc(e.signer,a.from),signer:e.signer.getAddress()}).then((e=>Cc(this,void 0,void 0,(function*(){return Io(e.signer)!==e.override&&Ic.throwError("Contract with a Signer cannot override from",as.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),e.override})))):a.from=e.signer.getAddress():a.from&&(a.from=Oc(e.provider,a.from));const r=yield Ns({args:Sc(e.signer||e.provider,n,t.inputs),address:e.resolvedAddress,overrides:Ns(a)||{}}),i=e.interface.encodeFunctionData(t,r.args),s={data:i,to:r.address},o=r.overrides;if(null!=o.nonce&&(s.nonce=Ts.from(o.nonce).toNumber()),null!=o.gasLimit&&(s.gasLimit=Ts.from(o.gasLimit)),null!=o.gasPrice&&(s.gasPrice=Ts.from(o.gasPrice)),null!=o.maxFeePerGas&&(s.maxFeePerGas=Ts.from(o.maxFeePerGas)),null!=o.maxPriorityFeePerGas&&(s.maxPriorityFeePerGas=Ts.from(o.maxPriorityFeePerGas)),null!=o.from&&(s.from=o.from),null!=o.type&&(s.type=o.type),null!=o.accessList&&(s.accessList=function(e){if(Array.isArray(e))return e.map(((e,t)=>Array.isArray(e)?(e.length>2&&_c.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${t}]`,e),Ac(e[0],e[1])):Ac(e.address,e.storageKeys)));const t=Object.keys(e).map((t=>{const n=e[t].reduce(((e,t)=>(e[t]=!0,e)),{});return Ac(t,Object.keys(n).sort())}));return t.sort(((e,t)=>e.address.localeCompare(t.address))),t}(o.accessList)),null==s.gasLimit&&null!=t.gas){let e=21e3;const n=ds(i);for(let t=0;t<n.length;t++)e+=4,n[t]&&(e+=64);s.gasLimit=Ts.from(t.gas).add(e)}if(o.value){const e=Ts.from(o.value);e.isZero()||t.payable||Ic.throwError("non-payable method cannot override value",as.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:a.value}),s.value=e}o.customData&&(s.customData=ks(o.customData)),o.ccipReadEnabled&&(s.ccipReadEnabled=!!o.ccipReadEnabled),delete a.nonce,delete a.gasLimit,delete a.gasPrice,delete a.from,delete a.value,delete a.type,delete a.accessList,delete a.maxFeePerGas,delete a.maxPriorityFeePerGas,delete a.customData,delete a.ccipReadEnabled;const c=Object.keys(a).filter((e=>null!=a[e]));return c.length&&Ic.throwError(`cannot override ${c.map((e=>JSON.stringify(e))).join(",")}`,as.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:c}),s}))}function kc(e,t,n){const a=e.signer||e.provider;return function(...r){return Cc(this,void 0,void 0,(function*(){let i;if(r.length===t.inputs.length+1&&"object"==typeof r[r.length-1]){const e=ks(r.pop());null!=e.blockTag&&(i=yield e.blockTag),delete e.blockTag,r.push(e)}null!=e.deployTransaction&&(yield e._deployed(i));const s=yield Nc(e,t,r),o=yield a.call(s,i);try{let a=e.interface.decodeFunctionResult(t,o);return n&&1===t.outputs.length&&(a=a[0]),a}catch(t){throw t.code===as.errors.CALL_EXCEPTION&&(t.address=e.address,t.args=r,t.transaction=s),t}}))}}function Mc(e,t){return function(...n){return Cc(this,void 0,void 0,(function*(){e.signer||Ic.throwError("sending a transaction requires a signer",as.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=e.deployTransaction&&(yield e._deployed());const a=yield Nc(e,t,n),r=yield e.signer.sendTransaction(a);return function(e,t){const n=t.wait.bind(t);t.wait=t=>n(t).then((t=>(t.events=t.logs.map((n=>{let a=xs(n),r=null;try{r=e.interface.parseLog(n)}catch(e){}return r&&(a.args=r.args,a.decode=(t,n)=>e.interface.decodeEventLog(r.eventFragment,t,n),a.event=r.name,a.eventSignature=r.signature),a.removeListener=()=>e.provider,a.getBlock=()=>e.provider.getBlock(t.blockHash),a.getTransaction=()=>e.provider.getTransaction(t.transactionHash),a.getTransactionReceipt=()=>Promise.resolve(t),a})),t)))}(e,r),r}))}}function Pc(e,t,n){return t.constant?kc(e,t,n):Mc(e,t)}function Dc(e){return!e.address||null!=e.topics&&0!==e.topics.length?(e.address||"*")+"@"+(e.topics?e.topics.map((e=>Array.isArray(e)?e.join("|"):e)).join(":"):""):"*"}class xc{constructor(e,t){Os(this,"tag",e),Os(this,"filter",t),this._listeners=[]}addListener(e,t){this._listeners.push({listener:e,once:t})}removeListener(e){let t=!1;this._listeners=this._listeners.filter((n=>!(!t&&n.listener===e)||(t=!0,!1)))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map((e=>e.listener))}listenerCount(){return this._listeners.length}run(e){const t=this.listenerCount();return this._listeners=this._listeners.filter((t=>{const n=e.slice();return setTimeout((()=>{t.listener.apply(this,n)}),0),!t.once})),t}prepareEvent(e){}getEmit(e){return[e]}}class Lc extends xc{constructor(){super("error",null)}}class Uc extends xc{constructor(e,t,n,a){const r={address:e};let i=t.getEventTopic(n);a?(i!==a[0]&&Ic.throwArgumentError("topic mismatch","topics",a),r.topics=a.slice()):r.topics=[i],super(Dc(r),r),Os(this,"address",e),Os(this,"interface",t),Os(this,"fragment",n)}prepareEvent(e){super.prepareEvent(e),e.event=this.fragment.name,e.eventSignature=this.fragment.format(),e.decode=(e,t)=>this.interface.decodeEventLog(this.fragment,e,t);try{e.args=this.interface.decodeEventLog(this.fragment,e.data,e.topics)}catch(t){e.args=null,e.decodeError=t}}getEmit(e){const t=function(e){const t=[],n=function(e,a){if(Array.isArray(a))for(let r in a){const i=e.slice();i.push(r);try{n(i,a[r])}catch(e){t.push({path:i,error:e})}}};return n([],e),t}(e.args);if(t.length)throw t[0].error;const n=(e.args||[]).slice();return n.push(e),n}}class Fc extends xc{constructor(e,t){super("*",{address:e}),Os(this,"address",e),Os(this,"interface",t)}prepareEvent(e){super.prepareEvent(e);try{const t=this.interface.parseLog(e);e.event=t.name,e.eventSignature=t.signature,e.decode=(e,n)=>this.interface.decodeEventLog(t.eventFragment,e,n),e.args=t.args}catch(e){}}}class Bc{constructor(e,t,n){Os(this,"interface",Ss(new.target,"getInterface")(t)),null==n?(Os(this,"provider",null),Os(this,"signer",null)):Tc.isSigner(n)?(Os(this,"provider",n.provider||null),Os(this,"signer",n)):bc.isProvider(n)?(Os(this,"provider",n),Os(this,"signer",null)):Ic.throwArgumentError("invalid signer or provider","signerOrProvider",n),Os(this,"callStatic",{}),Os(this,"estimateGas",{}),Os(this,"functions",{}),Os(this,"populateTransaction",{}),Os(this,"filters",{});{const e={};Object.keys(this.interface.events).forEach((t=>{const n=this.interface.events[t];Os(this.filters,t,((...e)=>({address:this.address,topics:this.interface.encodeFilterTopics(n,e)}))),e[n.name]||(e[n.name]=[]),e[n.name].push(t)})),Object.keys(e).forEach((t=>{const n=e[t];1===n.length?Os(this.filters,t,this.filters[n[0]]):Ic.warn(`Duplicate definition of ${t} (${n.join(", ")})`)}))}if(Os(this,"_runningEvents",{}),Os(this,"_wrappedEmits",{}),null==e&&Ic.throwArgumentError("invalid contract address or ENS name","addressOrName",e),Os(this,"address",e),this.provider)Os(this,"resolvedAddress",Oc(this.provider,e));else try{Os(this,"resolvedAddress",Promise.resolve(Io(e)))}catch(e){Ic.throwError("provider is required to use ENS name as contract address",as.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch((e=>{}));const a={},r={};Object.keys(this.interface.functions).forEach((e=>{const t=this.interface.functions[e];if(r[e])Ic.warn(`Duplicate ABI entry for ${JSON.stringify(e)}`);else{r[e]=!0;{const n=t.name;a[`%${n}`]||(a[`%${n}`]=[]),a[`%${n}`].push(e)}null==this[e]&&Os(this,e,Pc(this,t,!0)),null==this.functions[e]&&Os(this.functions,e,Pc(this,t,!1)),null==this.callStatic[e]&&Os(this.callStatic,e,kc(this,t,!0)),null==this.populateTransaction[e]&&Os(this.populateTransaction,e,function(e,t){return function(...n){return Nc(e,t,n)}}(this,t)),null==this.estimateGas[e]&&Os(this.estimateGas,e,function(e,t){const n=e.signer||e.provider;return function(...a){return Cc(this,void 0,void 0,(function*(){n||Ic.throwError("estimate require a provider or signer",as.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const r=yield Nc(e,t,a);return yield n.estimateGas(r)}))}}(this,t))}})),Object.keys(a).forEach((e=>{const t=a[e];if(t.length>1)return;e=e.substring(1);const n=t[0];try{null==this[e]&&Os(this,e,this[n])}catch(e){}null==this.functions[e]&&Os(this.functions,e,this.functions[n]),null==this.callStatic[e]&&Os(this.callStatic,e,this.callStatic[n]),null==this.populateTransaction[e]&&Os(this.populateTransaction,e,this.populateTransaction[n]),null==this.estimateGas[e]&&Os(this.estimateGas,e,this.estimateGas[n])}))}static getContractAddress(e){return So(e)}static getInterface(e){return pc.isInterface(e)?e:new pc(e)}deployed(){return this._deployed()}_deployed(e){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then((()=>this)):this._deployedPromise=this.provider.getCode(this.address,e).then((e=>("0x"===e&&Ic.throwError("contract not deployed",as.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this)))),this._deployedPromise}fallback(e){this.signer||Ic.throwError("sending a transactions require a signer",as.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const t=ks(e||{});return["from","to"].forEach((function(e){null!=t[e]&&Ic.throwError("cannot override "+e,as.errors.UNSUPPORTED_OPERATION,{operation:e})})),t.to=this.resolvedAddress,this.deployed().then((()=>this.signer.sendTransaction(t)))}connect(e){"string"==typeof e&&(e=new Rc(e,this.provider));const t=new this.constructor(this.address,this.interface,e);return this.deployTransaction&&Os(t,"deployTransaction",this.deployTransaction),t}attach(e){return new this.constructor(e,this.interface,this.signer||this.provider)}static isIndexed(e){return uc.isIndexed(e)}_normalizeRunningEvent(e){return this._runningEvents[e.tag]?this._runningEvents[e.tag]:e}_getRunningEvent(e){if("string"==typeof e){if("error"===e)return this._normalizeRunningEvent(new Lc);if("event"===e)return this._normalizeRunningEvent(new xc("event",null));if("*"===e)return this._normalizeRunningEvent(new Fc(this.address,this.interface));const t=this.interface.getEvent(e);return this._normalizeRunningEvent(new Uc(this.address,this.interface,t))}if(e.topics&&e.topics.length>0){try{const t=e.topics[0];if("string"!=typeof t)throw new Error("invalid topic");const n=this.interface.getEvent(t);return this._normalizeRunningEvent(new Uc(this.address,this.interface,n,e.topics))}catch(e){}const t={address:this.address,topics:e.topics};return this._normalizeRunningEvent(new xc(Dc(t),t))}return this._normalizeRunningEvent(new Fc(this.address,this.interface))}_checkRunningEvents(e){if(0===e.listenerCount()){delete this._runningEvents[e.tag];const t=this._wrappedEmits[e.tag];t&&e.filter&&(this.provider.off(e.filter,t),delete this._wrappedEmits[e.tag])}}_wrapEvent(e,t,n){const a=xs(t);return a.removeListener=()=>{n&&(e.removeListener(n),this._checkRunningEvents(e))},a.getBlock=()=>this.provider.getBlock(t.blockHash),a.getTransaction=()=>this.provider.getTransaction(t.transactionHash),a.getTransactionReceipt=()=>this.provider.getTransactionReceipt(t.transactionHash),e.prepareEvent(a),a}_addEventListener(e,t,n){if(this.provider||Ic.throwError("events require a provider or a signer with a provider",as.errors.UNSUPPORTED_OPERATION,{operation:"once"}),e.addListener(t,n),this._runningEvents[e.tag]=e,!this._wrappedEmits[e.tag]){const n=n=>{let a=this._wrapEvent(e,n,t);if(null==a.decodeError)try{const t=e.getEmit(a);this.emit(e.filter,...t)}catch(e){a.decodeError=e.error}null!=e.filter&&this.emit("event",a),null!=a.decodeError&&this.emit("error",a.decodeError,a)};this._wrappedEmits[e.tag]=n,null!=e.filter&&this.provider.on(e.filter,n)}}queryFilter(e,t,n){const a=this._getRunningEvent(e),r=ks(a.filter);return"string"==typeof t&&fs(t,32)?(null!=n&&Ic.throwArgumentError("cannot specify toBlock with blockhash","toBlock",n),r.blockHash=t):(r.fromBlock=null!=t?t:0,r.toBlock=null!=n?n:"latest"),this.provider.getLogs(r).then((e=>e.map((e=>this._wrapEvent(a,e,null)))))}on(e,t){return this._addEventListener(this._getRunningEvent(e),t,!1),this}once(e,t){return this._addEventListener(this._getRunningEvent(e),t,!0),this}emit(e,...t){if(!this.provider)return!1;const n=this._getRunningEvent(e),a=n.run(t)>0;return this._checkRunningEvents(n),a}listenerCount(e){return this.provider?null==e?Object.keys(this._runningEvents).reduce(((e,t)=>e+this._runningEvents[t].listenerCount()),0):this._getRunningEvent(e).listenerCount():0}listeners(e){if(!this.provider)return[];if(null==e){const e=[];for(let t in this._runningEvents)this._runningEvents[t].listeners().forEach((t=>{e.push(t)}));return e}return this._getRunningEvent(e).listeners()}removeAllListeners(e){if(!this.provider)return this;if(null==e){for(const e in this._runningEvents){const t=this._runningEvents[e];t.removeAllListeners(),this._checkRunningEvents(t)}return this}const t=this._getRunningEvent(e);return t.removeAllListeners(),this._checkRunningEvents(t),this}off(e,t){if(!this.provider)return this;const n=this._getRunningEvent(e);return n.removeListener(t),this._checkRunningEvents(n),this}removeListener(e,t){return this.off(e,t)}}class Vc extends Bc{}var Gc;!function(e){e.SUCCESS="SUCCESS",e.PENDING="PENDING",e.FAILED="FAILED"}(Gc||(Gc={}));const qc=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"depositor",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ERC20Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"withdrawer",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ERC20Withdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"}],name:"TokenMapped",type:"event"},{inputs:[],name:"DEPOSIT_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MAP_TOKEN_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_TOKEN",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"WITHDRAW_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"childERC20Predicate",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"childTokenTemplate",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"rootToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"depositNativeTo",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"rootToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"depositTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"exitHelper",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newStateSender",type:"address"},{internalType:"address",name:"newExitHelper",type:"address"},{internalType:"address",name:"newChildERC20Predicate",type:"address"},{internalType:"address",name:"newChildTokenTemplate",type:"address"},{internalType:"address",name:"nativeTokenRootAddress",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"rootToken",type:"address"}],name:"mapToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"sender",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"onL2StateReceive",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rootTokenToChildToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"stateSender",outputs:[{internalType:"contract IStateSender",name:"",type:"address"}],stateMutability:"view",type:"function"}],jc=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}];var zc;!function(e){e.UNSUPPORTED_ERROR="UNSUPPORTED_ERROR",e.INVALID_ADDRESS="INVALID_ADDRESS",e.INVALID_AMOUNT="INVALID_AMOUNT",e.INTERNAL_ERROR="INTERNAL_ERROR",e.PROVIDER_ERROR="PROVIDER_ERROR",e.TRANSACTION_REVERTED="TRANSACTION_REVERTED",e.INVALID_TOKEN="INVALID_TOKEN",e.INVALID_TRANSACTION="INVALID_TRANSACTION"}(zc||(zc={}));class Hc extends Error{type;constructor(e,t){super(e),this.type=t}}const Wc=async(e,t,n)=>{try{return await e()}catch(e){let a=`${t}: ${e.message}`||"UnknownError";throw n&&(a=`${n}: ${a}`),new Hc(a,t)}},$c=[{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"StateSynced",type:"event"},{inputs:[],name:"MAX_LENGTH",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"counter",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"syncState",outputs:[],stateMutability:"nonpayable",type:"function"}],Xc=[{inputs:[{internalType:"string",name:"only",type:"string"}],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"startId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"endId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"root",type:"bytes32"}],name:"NewCommitment",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"counter",type:"uint256"},{indexed:!0,internalType:"bool",name:"status",type:"bool"},{indexed:!1,internalType:"bytes",name:"message",type:"bytes"}],name:"StateSyncResult",type:"event"},{inputs:[],name:"NATIVE_TOKEN_CONTRACT",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_TRANSFER_PRECOMPILE",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_TRANSFER_PRECOMPILE_GAS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"SYSTEM",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"VALIDATOR_PKCHECK_PRECOMPILE",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"VALIDATOR_PKCHECK_PRECOMPILE_GAS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32[][]",name:"proofs",type:"bytes32[][]"},{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct StateReceiver.StateSync[]",name:"objs",type:"tuple[]"}],name:"batchExecute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"uint256",name:"startId",type:"uint256"},{internalType:"uint256",name:"endId",type:"uint256"},{internalType:"bytes32",name:"root",type:"bytes32"}],internalType:"struct StateReceiver.StateSyncCommitment",name:"commitment",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"bitmap",type:"bytes"}],name:"commit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"commitmentCounter",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"commitmentIds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"commitments",outputs:[{internalType:"uint256",name:"startId",type:"uint256"},{internalType:"uint256",name:"endId",type:"uint256"},{internalType:"bytes32",name:"root",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32[]",name:"proof",type:"bytes32[]"},{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct StateReceiver.StateSync",name:"obj",type:"tuple"}],name:"execute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"getCommitmentByStateSyncId",outputs:[{components:[{internalType:"uint256",name:"startId",type:"uint256"},{internalType:"uint256",name:"endId",type:"uint256"},{internalType:"bytes32",name:"root",type:"bytes32"}],internalType:"struct StateReceiver.StateSyncCommitment",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"getRootByStateSyncId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastCommittedId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"processedStateSyncs",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}];const Kc=[{inputs:[{internalType:"string",name:"only",type:"string"}],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"L2ERC20Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"L2ERC20Withdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"rootToken",type:"address"},{indexed:!0,internalType:"address",name:"childToken",type:"address"}],name:"L2TokenMapped",type:"event"},{inputs:[],name:"DEPOSIT_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MAP_TOKEN_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_TOKEN_CONTRACT",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_TRANSFER_PRECOMPILE",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"NATIVE_TRANSFER_PRECOMPILE_GAS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"SYSTEM",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"VALIDATOR_PKCHECK_PRECOMPILE",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"VALIDATOR_PKCHECK_PRECOMPILE_GAS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"WITHDRAW_SIG",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"childTokenTemplate",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newL2StateSender",type:"address"},{internalType:"address",name:"newStateReceiver",type:"address"},{internalType:"address",name:"newRootERC20Predicate",type:"address"},{internalType:"address",name:"newChildTokenTemplate",type:"address"},{internalType:"address",name:"newNativeTokenRootAddress",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"l2StateSender",outputs:[{internalType:"contract IStateSender",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"sender",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"onStateReceive",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rootERC20Predicate",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rootTokenToChildToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"stateReceiver",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IChildERC20",name:"childToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IChildERC20",name:"childToken",type:"address"},{internalType:"address",name:"receiver",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawTo",outputs:[],stateMutability:"nonpayable",type:"function"}],Jc=[{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{inputs:[],name:"DOMAIN",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"bls",outputs:[{internalType:"contract IBLS",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"bn256G2",outputs:[{internalType:"contract IBN256G2",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"checkpointBlockNumbers",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"checkpoints",outputs:[{internalType:"uint256",name:"epoch",type:"uint256"},{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"eventRoot",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"currentCheckpointBlockNumber",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"currentEpoch",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"currentValidatorSet",outputs:[{internalType:"address",name:"_address",type:"address"},{internalType:"uint256",name:"votingPower",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"currentValidatorSetHash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"currentValidatorSetLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getCheckpointBlock",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"leaf",type:"bytes32"},{internalType:"uint256",name:"leafIndex",type:"uint256"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],name:"getEventMembershipByBlockNumber",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"epoch",type:"uint256"},{internalType:"bytes32",name:"leaf",type:"bytes32"},{internalType:"uint256",name:"leafIndex",type:"uint256"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],name:"getEventMembershipByEpoch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getEventRootByBlock",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IBLS",name:"newBls",type:"address"},{internalType:"contract IBN256G2",name:"newBn256G2",type:"address"},{internalType:"uint256",name:"chainId_",type:"uint256"},{components:[{internalType:"address",name:"_address",type:"address"},{internalType:"uint256[4]",name:"blsKey",type:"uint256[4]"},{internalType:"uint256",name:"votingPower",type:"uint256"}],internalType:"struct ICheckpointManager.Validator[]",name:"newValidatorSet",type:"tuple[]"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"blockHash",type:"bytes32"},{internalType:"uint256",name:"blockRound",type:"uint256"},{internalType:"bytes32",name:"currentValidatorSetHash",type:"bytes32"}],internalType:"struct ICheckpointManager.CheckpointMetadata",name:"checkpointMetadata",type:"tuple"},{components:[{internalType:"uint256",name:"epoch",type:"uint256"},{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"eventRoot",type:"bytes32"}],internalType:"struct ICheckpointManager.Checkpoint",name:"checkpoint",type:"tuple"},{internalType:"uint256[2]",name:"signature",type:"uint256[2]"},{components:[{internalType:"address",name:"_address",type:"address"},{internalType:"uint256[4]",name:"blsKey",type:"uint256[4]"},{internalType:"uint256",name:"votingPower",type:"uint256"}],internalType:"struct ICheckpointManager.Validator[]",name:"newValidatorSet",type:"tuple[]"},{internalType:"bytes",name:"bitmap",type:"bytes"}],name:"submit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalVotingPower",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}];function Zc(e){const t=function(e){const t=ds(e),n=To(t,0);return n.consumed!==t.length&&bo.throwArgumentError("invalid rlp data","data",e),n.result}(`0x${e.substring(66)}`);return{validators:t[0],parent:t[1],committed:t[2],checkpoint:{blockRound:t[3][0],epochNumber:parseInt(t[3][1],16),currentValidatorHash:t[3][2],nextValidatorHash:t[3][3],eventRoot:t[3][4]}}}const Qc=[{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"L2StateSynced",type:"event"},{inputs:[],name:"MAX_LENGTH",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"counter",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"syncState",outputs:[],stateMutability:"nonpayable",type:"function"}],Yc=[{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"returnData",type:"bytes"}],name:"ExitProcessed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{inputs:[{components:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"uint256",name:"leafIndex",type:"uint256"},{internalType:"bytes",name:"unhashedLeaf",type:"bytes"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],internalType:"struct IExitHelper.BatchExitInput[]",name:"inputs",type:"tuple[]"}],name:"batchExit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"checkpointManager",outputs:[{internalType:"contract ICheckpointManager",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"uint256",name:"leafIndex",type:"uint256"},{internalType:"bytes",name:"unhashedLeaf",type:"bytes"},{internalType:"bytes32[]",name:"proof",type:"bytes32[]"}],name:"exit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract ICheckpointManager",name:"newCheckpointManager",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"processedExits",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],ed=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"userAddress",type:"address"},{indexed:!1,internalType:"address",name:"relayerAddress",type:"address"},{indexed:!1,internalType:"bytes",name:"functionSignature",type:"bytes"}],name:"MetaTransactionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"burn",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"userAddress",type:"address"},{internalType:"bytes",name:"functionSignature",type:"bytes"},{internalType:"bytes32",name:"sigR",type:"bytes32"},{internalType:"bytes32",name:"sigS",type:"bytes32"},{internalType:"uint8",name:"sigV",type:"uint8"}],name:"executeMetaTransaction",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"getNonce",outputs:[{internalType:"uint256",name:"nonce",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"rootToken_",type:"address"},{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"},{internalType:"uint8",name:"decimals_",type:"uint8"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"}],name:"invalidateNext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"mint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"predicate",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rootToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];class td{config;constructor(e){this.config=e}async getFee(e){if(this.validateChainConfiguration(),"NATIVE"!==e.token&&!Oo(e.token))throw new Hc(`token address ${e.token} is not a valid address`,zc.INVALID_ADDRESS);return{bridgeable:!0,feeAmount:Ts.from(0)}}async getUnsignedApproveDepositBridgeTx(e){if(this.validateChainConfiguration(),td.validateDepositArgs(e.depositorAddress,e.depositAmount,e.token),"NATIVE"===e.token)return{unsignedTx:null};const t=await Wc((async()=>new Vc(e.token,jc,this.config.rootProvider)),zc.PROVIDER_ERROR),n=await Wc((()=>t.allowance(e.depositorAddress,this.config.bridgeContracts.rootChainERC20Predicate)),zc.PROVIDER_ERROR);if(n.gte(e.depositAmount))return{unsignedTx:null};const a=e.depositAmount.sub(n);return{unsignedTx:{data:await Wc((async()=>t.interface.encodeFunctionData("approve",[this.config.bridgeContracts.rootChainERC20Predicate,a])),zc.INTERNAL_ERROR),to:e.token,value:0,from:e.depositorAddress}}}async getUnsignedDepositTx(e){this.validateChainConfiguration(),td.validateDepositArgs(e.recipientAddress,e.depositAmount,e.token);const t=await Wc((async()=>new Vc(this.config.bridgeContracts.rootChainERC20Predicate,qc)),zc.INTERNAL_ERROR),n=Io(e.recipientAddress);if("NATIVE"===e.token){return{unsignedTx:{data:await Wc((async()=>t.interface.encodeFunctionData("depositNativeTo",[n])),zc.INTERNAL_ERROR),to:this.config.bridgeContracts.rootChainERC20Predicate,value:e.depositAmount}}}const a=Io(e.token);return{unsignedTx:{data:await Wc((async()=>t.interface.encodeFunctionData("depositTo",[a,n,e.depositAmount])),zc.INTERNAL_ERROR),to:this.config.bridgeContracts.rootChainERC20Predicate,value:0}}}async waitForDeposit(e){this.validateChainConfiguration();const t=await Wc((async()=>this.config.rootProvider.waitForTransaction(e.transactionHash,this.config.rootChainFinalityBlocks)),zc.PROVIDER_ERROR);if(1!==t.status)throw new Hc(`${t.transactionHash} on rootchain was reverted`,zc.TRANSACTION_REVERTED);const n=await Wc((async()=>this.getRootStateSyncID(t)),zc.PROVIDER_ERROR),a=await Wc((async()=>await this.config.rootProvider.getBlock(t.blockNumber)),zc.PROVIDER_ERROR,`failed to query block ${t.blockNumber} on rootchain`),r=await Wc((async()=>async function(e,t,n,a){let r=0,i=await e.getBlockNumber();for(;i!==r+1;){const s=Math.floor((r+i)/2),o=await e.getBlock(s),c=t-o.timestamp;if(c>a&&c<n+a)return s;o.timestamp<t?r=s:i=s}return r}(this.config.childProvider,a.timestamp,this.config.blockTime,this.config.clockInaccuracy)),zc.PROVIDER_ERROR),i=r+this.config.maxDepositBlockDelay;return{status:await Wc((async()=>this.waitForChildStateSync(n,this.config.pollInterval,r,i)),zc.PROVIDER_ERROR)}}async getChildToken(e){this.validateChainConfiguration();const t="NATIVE"===e.rootToken?Vi:e.rootToken;if(!Oo(t))throw new Hc(`token address ${t} is not a valid address`,zc.INVALID_ADDRESS);return{childToken:await Wc((async()=>{const e=new Vc(this.config.bridgeContracts.rootChainERC20Predicate,qc,this.config.rootProvider);return await e.rootTokenToChildToken(t)}),zc.PROVIDER_ERROR,"failed to query rootTokenToChildToken mapping")}}async getRootToken(e){this.validateChainConfiguration();const t=await Wc((async()=>{const t=new Vc(e.childToken,ed,this.config.childProvider);return await t.rootToken()}),zc.PROVIDER_ERROR,"failed to query the root token from the child token contract");return{rootToken:t===Vi?"NATIVE":t}}async getUnsignedWithdrawTx(e){this.validateChainConfiguration(),td.validateWithdrawArgs(e.recipientAddress,e.withdrawAmount,e.token);const t=await Wc((async()=>new Vc(this.config.bridgeContracts.childChainERC20Predicate,Kc)),zc.INTERNAL_ERROR);return{unsignedTx:{data:await Wc((async()=>t.interface.encodeFunctionData("withdrawTo",[e.token,e.recipientAddress,e.withdrawAmount])),zc.INTERNAL_ERROR),to:this.config.bridgeContracts.childChainERC20Predicate,value:0}}}async waitForWithdrawal(e){this.validateChainConfiguration();const t=()=>new Promise((e=>{setTimeout(e,this.config.pollInterval)}));return await Wc((async()=>{const n=await this.config.childProvider.getTransactionReceipt(e.transactionHash),a=Zc((await this.config.childProvider.getBlock(n.blockNumber)).extraData),r=new Vc(this.config.bridgeContracts.rootChainCheckpointManager,Jc,this.config.rootProvider),i=async()=>await r.currentEpoch()>=a.checkpoint.epochNumber?null:(await t(),i());await i()}),zc.PROVIDER_ERROR),{}}async getUnsignedExitTx(e){this.validateChainConfiguration();const t=await Wc((async()=>await this.config.childProvider.getTransactionReceipt(e.transactionHash)),zc.PROVIDER_ERROR),n=t.logs.filter((e=>e.address.toLowerCase()===Bi));if(1!==n.length)throw new Hc(`expected 1 log in tx ${t.transactionHash} from address ${Bi}`,zc.INVALID_TRANSACTION);const a=await Wc((async()=>{const e=new pc(Qc).parseLog(n[0]);if("L2StateSynced(uint256,address,address,bytes)"!==e.signature)throw new Error(`expected L2StateSynced event in tx ${t.transactionHash}`);return e}),zc.INVALID_TRANSACTION),r=await Wc((async()=>new Vc(this.config.bridgeContracts.rootChainExitHelper,Yc,this.config.rootProvider)),zc.PROVIDER_ERROR),i=await Wc((async()=>this.config.childProvider.send("bridge_generateExitProof",[a.args.id.toHexString()])),zc.PROVIDER_ERROR);return{unsignedTx:{data:await Wc((async()=>{const e=rc.encode(["uint256","address","address","bytes"],a.args);return r.interface.encodeFunctionData("exit",[i.Metadata.CheckpointBlock,i.Metadata.LeafIndex,e,i.Data])}),zc.INTERNAL_ERROR),to:this.config.bridgeContracts.rootChainExitHelper,value:0}}}async waitForChildStateSync(e,t,n,a){const r=new Vc(this.config.bridgeContracts.childChainStateReceiver,Xc,this.config.childProvider),i=r.filters.StateSyncResult(e,null,null),s=async()=>{const o=await(async()=>r.queryFilter(i,n,a))();if(o.length>1)throw new Error(`expected maximum of 1 events with statesync id ${e} but found ${o.length}`);return 1===o.length?o[0]:(await new Promise((e=>{setTimeout(e,t)})),s())},o=await s();if(!o)throw new Error("failed to find child deposit event");if(!o.args)throw new Error("child deposit event has no args");if(null==o.args.status)throw new Error("child deposit event has no status");return o.args.status?Gc.SUCCESS:Gc.FAILED}async getRootStateSyncID(e){const t=new pc($c),n=e.logs.filter((e=>e.address.toLowerCase()===this.config.bridgeContracts.rootChainStateSender.toLowerCase()));if(1!==n.length)throw new Error(`expected at least 1 log in tx ${e.transactionHash}`);const a=t.parseLog(n[0]);if("StateSynced(uint256,address,address,bytes)"!==a.signature)throw new Error(`expected state sync event in tx ${e.transactionHash}`);return parseInt(a.args.id,10)}static validateDepositArgs(e,t,n){if(!Oo(e))throw new Hc(`address ${e} is not a valid address`,zc.INVALID_ADDRESS);if(t.isNegative()||t.isZero())throw new Hc(`deposit amount ${t.toString()} is invalid`,zc.INVALID_AMOUNT);if("NATIVE"!==n&&!Oo(n))throw new Hc(`token address ${n} is not a valid address`,zc.INVALID_ADDRESS)}static validateWithdrawArgs(e,t,n){if(!Oo(e))throw new Hc(`withdrawer address ${e} is not a valid address`,zc.INVALID_ADDRESS);if(t.isNegative()||t.isZero())throw new Hc(`withdraw amount ${t.toString()} is invalid`,zc.INVALID_AMOUNT);if(!Oo(n))throw new Hc(`token address ${n} is not a valid address`,zc.INVALID_ADDRESS)}async validateChainConfiguration(){const e="Please upgrade to the latest version of the Bridge SDK or provide valid configuration",t=await Wc((async()=>this.config.rootProvider.getNetwork()),zc.PROVIDER_ERROR);if(t.chainId.toString()!==this.config.bridgeInstance.rootChainID)throw new Hc(`Rootchain provider chainID ${t.chainId} does not match expected chainID ${this.config.bridgeInstance.rootChainID}. ${e}`,zc.UNSUPPORTED_ERROR);const n=await this.config.childProvider.getNetwork();if(n.chainId.toString()!==this.config.bridgeInstance.childChainID)throw new Hc(`Childchain provider chainID ${n.chainId} does not match expected chainID ${this.config.bridgeInstance.childChainID}. ${e}`,zc.UNSUPPORTED_ERROR)}}var nd;!function(e){e.PRODUCTION="production",e.SANDBOX="sandbox"}(nd||(nd={}));const ad=[Gi,qi],rd={[nd.SANDBOX]:ad,[nd.PRODUCTION]:[]},id=(new Map).set(Gi,{rootChainERC20Predicate:"0x75E468cF088F947B96422996132FbE71160F21F1",rootChainStateSender:"0xbdC11416f01b122b7621855e61c99C7ED986F894",rootChainCheckpointManager:"0x0721b564a96466b864A998D31846Ba409d21092B",rootChainExitHelper:"0x0a2cb3f90aE65429E5c516af500F59d8fed51844",childChainERC20Predicate:"0x0000000000000000000000000000000000001004",childChainStateReceiver:"0x0000000000000000000000000000000000001001"}).set(qi,{rootChainERC20Predicate:"0x1118Cc83780d07ef99F84fD1C0E10CEd49AF3613",rootChainStateSender:"0x41716a0DD85ae257DD011A97cE1470F609871270",rootChainCheckpointManager:"0xfD69e3FCd72C6374623eeb156dd2C4159eBa7327",rootChainExitHelper:"0x270D2B290c8183De23eCD17C7DaAE59fd084fE70",childChainERC20Predicate:"0x0000000000000000000000000000000000001004",childChainStateReceiver:"0x0000000000000000000000000000000000001001"}).set(ji,{rootChainERC20Predicate:"0x",rootChainStateSender:"0x",rootChainCheckpointManager:"0x",rootChainExitHelper:"0x",childChainERC20Predicate:"0x",childChainStateReceiver:"0x"});class sd{baseConfig;bridgeInstance;bridgeContracts;rootProvider;childProvider;blockTime;pollInterval;maxDepositBlockDelay;clockInaccuracy;rootChainFinalityBlocks;constructor({bridgeInstance:e,rootProvider:t,childProvider:n,baseConfig:a,overrides:r}){if(this.baseConfig=a,this.bridgeInstance=e,this.rootProvider=t,this.childProvider=n,this.blockTime=12,this.pollInterval=5e3,this.maxDepositBlockDelay=250,this.clockInaccuracy=900,this.rootChainFinalityBlocks=3,r)return void(this.bridgeContracts=r.bridgeContracts);if(!rd[a.environment].includes(e))throw new Error(`Bridge instance with rootchain ${e.rootChainID} and childchain ${e.childChainID} is not supported in environment ${a.environment}`);if(!id.has(e))throw new Error(`Bridge instance with rootchain ${e.rootChainID} and childchain ${e.childChainID} is not supported in environment ${a.environment}`);const i=id.get(e);if(!i)throw new Error(`Bridge instance with rootchain ${e.rootChainID} and childchain ${e.childChainID} is not supported in environment ${a.environment}`);this.bridgeContracts=i}}var od;!function(e){e.INVALID_CONFIGURATION="INVALID_CONFIGURATION",e.INVALID_SLIPPAGE="INVALID_SLIPPAGE",e.INVALID_MAX_HOPS="INVALID_MAX_HOPS",e.INVALID_ADDRESS="INVALID_ADDRESS",e.DUPLICATE_ADDRESSES="DUPLICATE_ADDRESSES",e.CHAIN_NOT_SUPPORTED="CHAIN_NOT_SUPPORTED",e.NO_ROUTES_AVAILABLE="NO_ROUTES_AVAILABLE",e.PROVIDER_CALL_ERROR="PROVIDER_CALL_ERROR",e.APPROVE_ERROR="APPROVE_ERROR",e.ALREADY_APPROVED_ERROR="ALREADY_APPROVED_ERROR"}(od||(od={}));class cd extends Error{message;code;constructor(e,t){super(e),this.message=e,this.code=t}}class dd extends cd{constructor(e){super(e||"Invalid configuration",od.INVALID_CONFIGURATION)}}class ud extends cd{constructor(e,t){super(`Chain with ID ${e} is not a supported chain in environment ${t}`,od.CHAIN_NOT_SUPPORTED)}}class fd extends cd{constructor(e){super(e,od.INVALID_SLIPPAGE)}}class ld extends cd{constructor(e){super(e,od.INVALID_MAX_HOPS)}}class pd extends cd{constructor(e){super(e,od.INVALID_ADDRESS)}}class hd extends cd{constructor(){super("token in and token out addresses must be different",od.DUPLICATE_ADDRESSES)}}class md extends cd{constructor(){super("no routes available",od.NO_ROUTES_AVAILABLE)}}class bd extends cd{constructor(e){super(e,od.PROVIDER_CALL_ERROR)}}class yd extends cd{constructor(e){super(e,od.APPROVE_ERROR)}}const gd=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"owner",type:"address"},{indexed:!0,name:"spender",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"}];class Ed{static abi=gd;static createInterface(){return new D.Interface(gd)}static connect(e,t){return new x(e,gd,t)}}const wd=[{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"gasLimit",type:"uint256"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct UniswapInterfaceMulticall.Call[]",name:"calls",type:"tuple[]"}],name:"multicall",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"uint256",name:"gasUsed",type:"uint256"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct UniswapInterfaceMulticall.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"}],Td="0x608060405234801561001057600080fd5b50610567806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630f28c97d146100465780631749e1e3146100645780634d2301cc14610085575b600080fd5b61004e610098565b60405161005b919061041f565b60405180910390f35b6100776100723660046102a7565b61009c565b60405161005b929190610428565b61004e610093366004610286565b610220565b4290565b8051439060609067ffffffffffffffff811180156100b957600080fd5b506040519080825280602002602001820160405280156100f357816020015b6100e061023a565b8152602001906001900390816100d85790505b50905060005b835181101561021a57600080600086848151811061011357fe5b60200260200101516000015187858151811061012b57fe5b60200260200101516020015188868151811061014357fe5b60200260200101516040015192509250925060005a90506000808573ffffffffffffffffffffffffffffffffffffffff1685856040516101839190610403565b60006040518083038160008787f1925050503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b509150915060005a8403905060405180606001604052808415158152602001828152602001838152508989815181106101fb57fe5b60200260200101819052505050505050505080806001019150506100f9565b50915091565b73ffffffffffffffffffffffffffffffffffffffff163190565b604051806060016040528060001515815260200160008152602001606081525090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461028157600080fd5b919050565b600060208284031215610297578081fd5b6102a08261025d565b9392505050565b600060208083850312156102b9578182fd5b823567ffffffffffffffff808211156102d0578384fd5b818501915085601f8301126102e3578384fd5b8135818111156102ef57fe5b6102fc8485830201610506565b81815284810190848601875b848110156103f457813587017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0606081838f03011215610346578a8bfd5b60408051606081018181108b8211171561035c57fe5b8252610369848d0161025d565b8152818401358c82015260608401358a811115610384578d8efd5b8085019450508e603f850112610398578c8dfd5b8b8401358a8111156103a657fe5b6103b68d85601f84011601610506565b93508084528f838287010111156103cb578d8efd5b808386018e86013783018c018d9052908101919091528552509287019290870190600101610308565b50909998505050505050505050565b6000825161041581846020870161052a565b9190910192915050565b90815260200190565b600060408083018584526020828186015281865180845260609350838701915083838202880101838901875b838110156104f6578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa001855281518051151584528681015187850152880151888401889052805188850181905260806104b582828801858c0161052a565b96880196601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01694909401909301925090850190600101610454565b50909a9950505050505050505050565b60405181810167ffffffffffffffff8111828210171561052257fe5b604052919050565b60005b8381101561054557818101518382015260200161052d565b83811115610554576000848401525b5050505056fea164736f6c6343000706000a";class Rd extends P{constructor(...e){e.length>1?super(...e):super(wd,Td,e[0])}deploy(e){return super.deploy(e||{})}getDeployTransaction(e){return super.getDeployTransaction(e||{})}attach(e){return super.attach(e)}connect(e){return super.connect(e)}static bytecode=Td;static abi=wd;static createInterface(){return new D.Interface(wd)}static connect(e,t){return new x(e,wd,t)}}const _d=[{inputs:[{internalType:"address",name:"_admin",type:"address"},{internalType:"address",name:"_uniRouter",type:"address"},{internalType:"address",name:"_wimx",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"ContractPaused",type:"error"},{inputs:[],name:"DeadlinePassed",type:"error"},{inputs:[],name:"FailedToRefundNativeTokens",type:"error"},{inputs:[],name:"FailedToSendFees",type:"error"},{inputs:[],name:"FeeTooHigh",type:"error"},{inputs:[],name:"IncorrectRecipient",type:"error"},{inputs:[],name:"InputTokenNotWrapped",type:"error"},{inputs:[],name:"NativeTokenAmountMismatch",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"feeToken",type:"address"},{indexed:!0,internalType:"address",name:"feePayer",type:"address"},{indexed:!0,internalType:"address",name:"feeRecipient",type:"address"},{indexed:!1,internalType:"uint256",name:"feeAmount",type:"uint256"}],name:"FeeTaken",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"feePayer",type:"address"},{indexed:!0,internalType:"address",name:"feeRecipient",type:"address"},{indexed:!1,internalType:"uint256",name:"feeAmount",type:"uint256"}],name:"FeeTaken",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"feeBasisPoints",type:"uint256"}],internalType:"struct ISecondaryFee.SecondaryFeeParams[]",name:"secondaryFees",type:"tuple[]"},{components:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint24",name:"fee",type:"uint24"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOutMinimum",type:"uint256"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"}],internalType:"struct IV3SwapRouter.ExactInputSingleParams",name:"swapParams",type:"tuple"}],name:"exactInputSingleWithSecondaryFee",outputs:[{internalType:"uint256",name:"amountOut",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"feeBasisPoints",type:"uint256"}],internalType:"struct ISecondaryFee.SecondaryFeeParams[]",name:"secondaryFees",type:"tuple[]"},{components:[{internalType:"bytes",name:"path",type:"bytes"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amountIn",type:"uint256"},{internalType:"uint256",name:"amountOutMinimum",type:"uint256"}],internalType:"struct IV3SwapRouter.ExactInputParams",name:"swapParams",type:"tuple"}],name:"exactInputWithSecondaryFee",outputs:[{internalType:"uint256",name:"amountOut",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"feeBasisPoints",type:"uint256"}],internalType:"struct ISecondaryFee.SecondaryFeeParams[]",name:"secondaryFees",type:"tuple[]"},{components:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint24",name:"fee",type:"uint24"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"uint256",name:"amountInMaximum",type:"uint256"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"}],internalType:"struct IV3SwapRouter.ExactOutputSingleParams",name:"swapParams",type:"tuple"}],name:"exactOutputSingleWithSecondaryFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address payable",name:"recipient",type:"address"},{internalType:"uint256",name:"feeBasisPoints",type:"uint256"}],internalType:"struct ISecondaryFee.SecondaryFeeParams[]",name:"secondaryFees",type:"tuple[]"},{components:[{internalType:"bytes",name:"path",type:"bytes"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amountOut",type:"uint256"},{internalType:"uint256",name:"amountInMaximum",type:"uint256"}],internalType:"struct IV3SwapRouter.ExactOutputParams",name:"swapParams",type:"tuple"}],name:"exactOutputWithSecondaryFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"",type:"bytes[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data",type:"bytes[]"}],name:"multicall",outputs:[{internalType:"bytes[]",name:"results",type:"bytes[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amountMinimum",type:"uint256"}],name:"unwrapNativeToken",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"address",name:"erc20",type:"address"}],name:"withdrawFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],vd="0x60806040523480156200001157600080fd5b506040516200310b3803806200310b83398101604081905262000034916200015c565b6001805460ff191690556200004b6000846200009e565b600180546001600160a01b039384166101008102610100600160a81b03199092169190911790915560038054929093166001600160a01b03199283161790925560028054909116909117905550620001a6565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200013b576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620000fa3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b80516001600160a01b03811681146200015757600080fd5b919050565b6000806000606084860312156200017257600080fd5b6200017d846200013f565b92506200018d602085016200013f565b91506200019d604085016200013f565b90509250925092565b612f5580620001b66000396000f3fe60806040526004361061010c5760003560e01c806358e81a50116100955780638456cb59116100645780638456cb591461029957806391d14854146102ae578063a217fddf146102ce578063ac9650d8146102e3578063d547741f1461030357600080fd5b806358e81a501461023b5780635ae401dc1461024e5780635c975abb1461026e5780635ebca7991461028657600080fd5b80632f2ff15d116100dc5780632f2ff15d146101c057806336568abe146101e0578063383ebb0b146102005780633f4ba83a146102135780635640f6591461022857600080fd5b80620fa9fb1461011857806301ffc9a71461013a578063116944b21461016f578063248a9ca31461019057600080fd5b3661011357005b600080fd5b34801561012457600080fd5b5061013861013336600461270a565b610323565b005b34801561014657600080fd5b5061015a610155366004612743565b6103ef565b60405190151581526020015b60405180910390f35b61018261017d3660046128d4565b610426565b604051908152602001610166565b34801561019c57600080fd5b506101826101ab366004612929565b60009081526020819052604090206001015490565b3480156101cc57600080fd5b506101386101db366004612942565b6106ab565b3480156101ec57600080fd5b506101386101fb366004612942565b6106d0565b61018261020e366004612a2a565b610753565b34801561021f57600080fd5b50610138610ac2565b610182610236366004612a2a565b610b12565b6101826102493660046128d4565b610d90565b61026161025c366004612ad6565b6110c5565b6040516101669190612b71565b34801561027a57600080fd5b5060015460ff1661015a565b610138610294366004612929565b6110fa565b3480156102a557600080fd5b506101386112aa565b3480156102ba57600080fd5b5061015a6102c9366004612942565b6112f8565b3480156102da57600080fd5b50610182600081565b3480156102ef57600080fd5b506102616102fe366004612bd3565b611321565b34801561030f57600080fd5b5061013861031e366004612942565b611415565b61034d7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e982869336112f8565b610369576040516282b42960e81b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156103b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d49190612c14565b90506103ea6001600160a01b038316848361143a565b505050565b60006001600160e01b03198216637965db0b60e01b148061042057506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061043460015460ff1690565b156104525760405163ab35696f60e01b815260040160405180910390fd5b60608201516001600160a01b0316331461047f5760405163519bdea760e01b815260040160405180910390fd5b4780156105bf57826080015181146104aa576040516342f7487960e11b815260040160405180910390fd5b60035483516001600160a01b039081169116146104da576040516324d0121760e01b815260040160405180910390fd5b61053a83608001518686808060200260200160405190810160405280939291908181526020016000905b828210156105305761052160408302860136819003810190612c2d565b81526020019060010190610504565b505050505061149d565b608084018190526001546040516304e45aaf60e01b81526101009091046001600160a01b0316916304e45aaf91610575908790600401612c84565b60206040518083038185885af1158015610593573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105b89190612c14565b91506106a3565b610624836000015184608001518787808060200260200160405190810160405280939291908181526020016000905b8282101561061a5761060b60408302860136819003810190612c2d565b815260200190600101906105ee565b50505050506114ef565b60808401526001546040516304e45aaf60e01b81526101009091046001600160a01b0316906304e45aaf9061065d908690600401612c84565b6020604051808303816000875af115801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190612c14565b91505b509392505050565b6000828152602081905260409020600101546106c68161154c565b6103ea8383611559565b6001600160a01b03811633146107455760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61074f82826115dd565b5050565b600061076160015460ff1690565b1561077f5760405163ab35696f60e01b815260040160405180910390fd5b60208201516001600160a01b031633146107ac5760405163519bdea760e01b815260040160405180910390fd5b60006107bb8360000151611642565b905047801561096d576003546001600160a01b038381169116146107f2576040516324d0121760e01b815260040160405180910390fd5b83606001518114610816576040516342f7487960e11b815260040160405180910390fd5b60008061087986606001518989808060200260200160405190810160405280939291908181526020016000905b8282101561086f5761086060408302860136819003810190612c2d565b81526020019060010190610843565b5050505050611670565b606088018190526001546040516304dc09a360e11b81529294509092506000916101009091046001600160a01b0316906309b813469084906108bf908b90600401612d2a565b60206040518083038185885af11580156108dd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109029190612c14565b905061096181848b8b808060200260200160405190810160405280939291908181526020016000905b828210156109575761094860408302860136819003810190612c2d565b8152602001906001019061092b565b50505050506116c3565b95505050505050610abb565b6000806109d18487606001518a8a808060200260200160405190810160405280939291908181526020016000905b828210156109c7576109b860408302860136819003810190612c2d565b8152602001906001019061099b565b50505050506117b7565b606088018190526001546040516304dc09a360e11b81529294509092506000916101009091046001600160a01b0316906309b8134690610a15908a90600401612d2a565b6020604051808303816000875af1158015610a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a589190612c14565b90506109618582858c8c808060200260200160405190810160405280939291908181526020016000905b82821015610aae57610a9f60408302860136819003810190612c2d565b81526020019060010190610a82565b5050505050611811565b50505b9392505050565b610aec7fe7276a2a84d8de556657ec9cf93a55a7d66f096e529d0582ed08e9e2208b92b5336112f8565b610b08576040516282b42960e81b815260040160405180910390fd5b610b1061186d565b565b6000610b2060015460ff1690565b15610b3e5760405163ab35696f60e01b815260040160405180910390fd5b60208201516001600160a01b03163314610b6b5760405163519bdea760e01b815260040160405180910390fd5b6000610b7a83600001516118bf565b9050478015610cb05783604001518114610ba7576040516342f7487960e11b815260040160405180910390fd5b6003546001600160a01b03838116911614610bd5576040516324d0121760e01b815260040160405180910390fd5b610c2b84604001518787808060200260200160405190810160405280939291908181526020016000905b8282101561053057610c1c60408302860136819003810190612c2d565b81526020019060010190610bff565b6040858101829052600154905163b858183f60e01b81526101009091046001600160a01b03169163b858183f91610c66908890600401612d2a565b60206040518083038185885af1158015610c84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ca99190612c14565b9250610ab8565b610d078285604001518888808060200260200160405190810160405280939291908181526020016000905b8282101561061a57610cf860408302860136819003810190612c2d565b81526020019060010190610cdb565b604085810191909152600154905163b858183f60e01b81526101009091046001600160a01b03169063b858183f90610d43908790600401612d2a565b6020604051808303816000875af1158015610d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d869190612c14565b9695505050505050565b6000610d9e60015460ff1690565b15610dbc5760405163ab35696f60e01b815260040160405180910390fd5b60608201516001600160a01b03163314610de95760405163519bdea760e01b815260040160405180910390fd5b478015610f865760035483516001600160a01b03908116911614610e20576040516324d0121760e01b815260040160405180910390fd5b8260a001518114610e44576040516342f7487960e11b815260040160405180910390fd5b600080610e9d8560a001518888808060200260200160405190810160405280939291908181526020016000905b8282101561086f57610e8e60408302860136819003810190612c2d565b81526020019060010190610e71565b60a08701819052600154604051635023b4df60e01b81529294509092506000916101009091046001600160a01b031690635023b4df908490610ee3908a90600401612c84565b60206040518083038185885af1158015610f01573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f269190612c14565b9050610f7b81848a8a808060200260200160405190810160405280939291908181526020016000905b8282101561095757610f6c60408302860136819003810190612c2d565b81526020019060010190610f4f565b945050505050610abb565b600080610fe485600001518660a001518989808060200260200160405190810160405280939291908181526020016000905b828210156109c757610fd560408302860136819003810190612c2d565b81526020019060010190610fb8565b60a08701819052600154604051635023b4df60e01b81529294509092506000916101009091046001600160a01b031690635023b4df90611028908990600401612c84565b6020604051808303816000875af1158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106b9190612c14565b9050610f7b866000015182858b8b808060200260200160405190810160405280939291908181526020016000905b82821015610aae576110b660408302860136819003810190612c2d565b81526020019060010190611099565b6060834211156110e85760405163387b2e5560e11b815260040160405180910390fd5b6110f28383611321565b949350505050565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111679190612c14565b9050818110156111ad5760405162461bcd60e51b8152602060048201526011602482015270092dce6eaccccd2c6d2cadce840ae929ab607b1b604482015260640161073c565b801561074f57600354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156111f957600080fd5b505af115801561120d573d6000803e3d6000fd5b50506040805160008082526020820192839052935033925084916112319190612d3d565b60006040518083038185875af1925050503d806000811461126e576040519150601f19603f3d011682016040523d82523d6000602084013e611273565b606091505b50509050806103ea5760405162461bcd60e51b815260206004820152600360248201526253544560e81b604482015260640161073c565b6112d47ffcb9fcbfa83b897fb2d5cf4b58962164105c1e71489a37ef3ae0db3fdce576f6336112f8565b6112f0576040516282b42960e81b815260040160405180910390fd5b610b106118cb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060816001600160401b0381111561133b5761133b6127b1565b60405190808252806020026020018201604052801561136e57816020015b60608152602001906001900390816113595790505b50905060005b8281101561140e576113de3085858481811061139257611392612d59565b90506020028101906113a49190612d6f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061190692505050565b8282815181106113f0576113f0612d59565b6020026020010181905250808061140690612dcb565b915050611374565b5092915050565b6000828152602081905260409020600101546114308161154c565b6103ea83836115dd565b6040516001600160a01b0383166024820152604481018290526103ea90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261192b565b60006114a882611a00565b506000806114b68585611a73565b90925090506114c58286612de4565b94506114d081611b9c565b6003546114e6906001600160a01b031686611cc6565b50929392505050565b60006114fa82611a00565b506000806115088585611a73565b90925090506115178286612de4565b94506115238682611dc3565b6115386001600160a01b038716333088611ecc565b6115428686611cc6565b5092949350505050565b6115568133611f0a565b50565b61156382826112f8565b61074f576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556115993390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115e782826112f8565b1561074f576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080601483516116539190612de4565b9050600061166384836014611f63565b90506110f2816000612070565b600080600061167e84611a00565b9050600061168e82612710612df7565b905061169d86612710836120d5565b6003549093506116b6906001600160a01b031684611cc6565b85935050505b9250929050565b60008060006116d28685611a73565b915091506116df81611b9c565b600260009054906101000a90046001600160a01b03166001600160a01b03166312210e8a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561172f57600080fd5b505af1158015611743573d6000803e3d6000fd5b5050505060008287876117569190612de4565b6117609190612de4565b604051909150600090339083156108fc0290849084818181858888f193505050509050806117a1576040516382e4f46960e01b815260040160405180910390fd5b6117ab8489612df7565b98975050505050505050565b60008060006117c584611a00565b905060006117d582612710612df7565b90506117e486612710836120d5565b92506117f08784611cc6565b6118056001600160a01b038816333089611ecc565b50939590945092505050565b60008060006118208685611a73565b9150915061182e8782612115565b611858338361183d8989612de4565b6118479190612de4565b6001600160a01b038a16919061143a565b6118628287612df7565b979650505050505050565b61187561221c565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006104208282612070565b6118d3612265565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336118a2565b6060610abb8383604051806060016040528060278152602001612ef9602791396122ab565b6000611980826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123199092919063ffffffff16565b90508051600014806119a15750808060200190518101906119a19190612e0a565b6103ea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161073c565b6000805b8251811015611a4a57828181518110611a1f57611a1f612d59565b60200260200101516020015182611a369190612df7565b915080611a4281612dcb565b915050611a04565b506103e8811115611a6e5760405163cd4e616760e01b815260040160405180910390fd5b919050565b6000606082516001600160401b03811115611a9057611a906127b1565b604051908082528060200260200182016040528015611ad557816020015b6040805180820190915260008082526020820152815260200190600190039081611aae5790505b50905060005b8351811015611b94576000611b1a858381518110611afb57611afb612d59565b602002602001015160200151612710886123289092919063ffffffff16565b90506040518060400160405280868481518110611b3957611b39612d59565b6020026020010151600001516001600160a01b0316815260200182815250838381518110611b6957611b69612d59565b6020908102919091010152611b7e8185612df7565b9350508080611b8c90612dcb565b915050611adb565b509250929050565b60005b815181101561074f576000828281518110611bbc57611bbc612d59565b6020026020010151600001516001600160a01b03166108fc848481518110611be657611be6612d59565b6020026020010151602001519081150290604051600060405180830381858888f19350505050905080611c2c5760405163647373e960e11b815260040160405180910390fd5b828281518110611c3e57611c3e612d59565b6020026020010151600001516001600160a01b0316336001600160a01b03167fe0e765ab26c1caf691c510426951246128b96830e49cc81d8c093fd551abac35858581518110611c9057611c90612d59565b602002602001015160200151604051611cab91815260200190565b60405180910390a35080611cbe81612dcb565b915050611b9f565b600154604051636eb1769f60e11b81523060048201526001600160a01b0361010090920482166024820152829184169063dd62ed3e90604401602060405180830381865afa158015611d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d409190612c14565b101561074f5760015460405163095ea7b360e01b81526101009091046001600160a01b039081166004830152600019602483015283169063095ea7b3906044016020604051808303816000875af1158015611d9f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ea9190612e0a565b60005b81518110156103ea57611e2933838381518110611de557611de5612d59565b602002602001015160000151848481518110611e0357611e03612d59565b602002602001015160200151866001600160a01b0316611ecc909392919063ffffffff16565b818181518110611e3b57611e3b612d59565b6020026020010151600001516001600160a01b0316336001600160a01b0316846001600160a01b03167f1f9a9fdac86b6ca3c5300bec0b61555cded1f1a234378602dcca6c27085eac8e858581518110611e9757611e97612d59565b602002602001015160200151604051611eb291815260200190565b60405180910390a480611ec481612dcb565b915050611dc6565b6040516001600160a01b0380851660248301528316604482015260648101829052611f049085906323b872dd60e01b90608401611466565b50505050565b611f1482826112f8565b61074f57611f21816123ca565b611f2c8360206123dc565b604051602001611f3d929190612e2c565b60408051601f198184030181529082905262461bcd60e51b825261073c91600401612ea1565b606081611f7181601f612df7565b1015611fb05760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161073c565b611fba8284612df7565b84511015611ffe5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161073c565b60608215801561201d5760405191506000825260208201604052612067565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561205657805183526020928301920161203e565b5050858452601f01601f1916604052505b50949350505050565b600061207d826014612df7565b835110156120c55760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015260640161073c565b500160200151600160601b900490565b60006120e2848484612328565b9050600082806120f4576120f4612eb4565b8486091115610abb57600019811061210b57600080fd5b6001019392505050565b60005b81518110156103ea5761217982828151811061213657612136612d59565b60200260200101516000015183838151811061215457612154612d59565b602002602001015160200151856001600160a01b031661143a9092919063ffffffff16565b81818151811061218b5761218b612d59565b6020026020010151600001516001600160a01b0316336001600160a01b0316846001600160a01b03167f1f9a9fdac86b6ca3c5300bec0b61555cded1f1a234378602dcca6c27085eac8e8585815181106121e7576121e7612d59565b60200260200101516020015160405161220291815260200190565b60405180910390a48061221481612dcb565b915050612118565b60015460ff16610b105760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161073c565b60015460ff1615610b105760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161073c565b6060600080856001600160a01b0316856040516122c89190612d3d565b600060405180830381855af49150503d8060008114612303576040519150601f19603f3d011682016040523d82523d6000602084013e612308565b606091505b5091509150610d8686838387612577565b60606110f284846000856125f0565b6000838302816000198587098281108382030391505080841161234a57600080fd5b8060000361235d57508290049050610abb565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60606104206001600160a01b03831660145b606060006123eb836002612eca565b6123f6906002612df7565b6001600160401b0381111561240d5761240d6127b1565b6040519080825280601f01601f191660200182016040528015612437576020820181803683370190505b509050600360fc1b8160008151811061245257612452612d59565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061248157612481612d59565b60200101906001600160f81b031916908160001a90535060006124a5846002612eca565b6124b0906001612df7565b90505b6001811115612528576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106124e4576124e4612d59565b1a60f81b8282815181106124fa576124fa612d59565b60200101906001600160f81b031916908160001a90535060049490941c9361252181612ee1565b90506124b3565b508315610abb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161073c565b606083156125e65782516000036125df576001600160a01b0385163b6125df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161073c565b50816110f2565b6110f283836126c0565b6060824710156126515760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161073c565b600080866001600160a01b0316858760405161266d9190612d3d565b60006040518083038185875af1925050503d80600081146126aa576040519150601f19603f3d011682016040523d82523d6000602084013e6126af565b606091505b509150915061186287838387612577565b8151156126d05781518083602001fd5b8060405162461bcd60e51b815260040161073c9190612ea1565b6001600160a01b038116811461155657600080fd5b8035611a6e816126ea565b6000806040838503121561271d57600080fd5b8235612728816126ea565b91506020830135612738816126ea565b809150509250929050565b60006020828403121561275557600080fd5b81356001600160e01b031981168114610abb57600080fd5b60008083601f84011261277f57600080fd5b5081356001600160401b0381111561279657600080fd5b6020830191508360208260061b85010111156116bc57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156127e9576127e96127b1565b60405290565b604051608081016001600160401b03811182821017156127e9576127e96127b1565b604051601f8201601f191681016001600160401b0381118282101715612839576128396127b1565b604052919050565b600060e0828403121561285357600080fd5b61285b6127c7565b90508135612868816126ea565b81526020820135612878816126ea565b6020820152604082013562ffffff8116811461289357600080fd5b60408201526128a4606083016126ff565b60608201526080820135608082015260a082013560a08201526128c960c083016126ff565b60c082015292915050565b600080600061010084860312156128ea57600080fd5b83356001600160401b0381111561290057600080fd5b61290c8682870161276d565b909450925061292090508560208601612841565b90509250925092565b60006020828403121561293b57600080fd5b5035919050565b6000806040838503121561295557600080fd5b823591506020830135612738816126ea565b60006080828403121561297957600080fd5b6129816127ef565b905081356001600160401b038082111561299a57600080fd5b818401915084601f8301126129ae57600080fd5b81356020828211156129c2576129c26127b1565b6129d4601f8301601f19168201612811565b925081835286818386010111156129ea57600080fd5b81818501828501376000818385010152828552612a088187016126ff565b8186015250505050604082013560408201526060820135606082015292915050565b600080600060408486031215612a3f57600080fd5b83356001600160401b0380821115612a5657600080fd5b612a628783880161276d565b90955093506020860135915080821115612a7b57600080fd5b50612a8886828701612967565b9150509250925092565b60008083601f840112612aa457600080fd5b5081356001600160401b03811115612abb57600080fd5b6020830191508360208260051b85010111156116bc57600080fd5b600080600060408486031215612aeb57600080fd5b8335925060208401356001600160401b03811115612b0857600080fd5b612b1486828701612a92565b9497909650939450505050565b60005b83811015612b3c578181015183820152602001612b24565b50506000910152565b60008151808452612b5d816020860160208601612b21565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612bc657603f19888603018452612bb4858351612b45565b94509285019290850190600101612b98565b5092979650505050505050565b60008060208385031215612be657600080fd5b82356001600160401b03811115612bfc57600080fd5b612c0885828601612a92565b90969095509350505050565b600060208284031215612c2657600080fd5b5051919050565b600060408284031215612c3f57600080fd5b604051604081018181106001600160401b0382111715612c6157612c616127b1565b6040528235612c6f816126ea565b81526020928301359281019290925250919050565b60e08101610420828480516001600160a01b03908116835260208083015182169084015260408083015162ffffff16908401526060808301518216908401526080808301519084015260a0828101519084015260c09182015116910152565b6000815160808452612cf86080850182612b45565b6020848101516001600160a01b0316908601526040808501519086015260609384015193909401929092525090919050565b602081526000610abb6020830184612ce3565b60008251612d4f818460208701612b21565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112612d8657600080fd5b8301803591506001600160401b03821115612da057600080fd5b6020019150368190038213156116bc57600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612ddd57612ddd612db5565b5060010190565b8181038181111561042057610420612db5565b8082018082111561042057610420612db5565b600060208284031215612e1c57600080fd5b81518015158114610abb57600080fd5b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612e64816017850160208801612b21565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612e95816028840160208801612b21565b01602801949350505050565b602081526000610abb6020830184612b45565b634e487b7160e01b600052601260045260246000fd5b808202811582820484141761042057610420612db5565b600081612ef057612ef0612db5565b50600019019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220eff696b5535ea5759815da07da267901ad15855b143752622fa478891337f65c64736f6c63430008130033";class Ad extends P{constructor(...e){e.length>1?super(...e):super(_d,vd,e[0])}deploy(e,t,n,a){return super.deploy(e,t,n,a||{})}getDeployTransaction(e,t,n,a){return super.getDeployTransaction(e,t,n,a||{})}attach(e){return super.attach(e)}connect(e){return super.connect(e)}static bytecode=vd;static abi=_d;static createInterface(){return new D.Interface(_d)}static connect(e,t){return new x(e,_d,t)}}const Cd=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount",type:"uint128"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount0",type:"uint128"},{indexed:!1,internalType:"uint128",name:"amount1",type:"uint128"}],name:"Collect",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint128",name:"amount0",type:"uint128"},{indexed:!1,internalType:"uint128",name:"amount1",type:"uint128"}],name:"CollectProtocol",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!1,internalType:"uint256",name:"paid0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"paid1",type:"uint256"}],name:"Flash",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint16",name:"observationCardinalityNextOld",type:"uint16"},{indexed:!1,internalType:"uint16",name:"observationCardinalityNextNew",type:"uint16"}],name:"IncreaseObservationCardinalityNext",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{indexed:!1,internalType:"int24",name:"tick",type:"int24"}],name:"Initialize",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"int24",name:"tickLower",type:"int24"},{indexed:!0,internalType:"int24",name:"tickUpper",type:"int24"},{indexed:!1,internalType:"uint128",name:"amount",type:"uint128"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"feeProtocol0Old",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol1Old",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol0New",type:"uint8"},{indexed:!1,internalType:"uint8",name:"feeProtocol1New",type:"uint8"}],name:"SetFeeProtocol",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"int256",name:"amount0",type:"int256"},{indexed:!1,internalType:"int256",name:"amount1",type:"int256"},{indexed:!1,internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{indexed:!1,internalType:"uint128",name:"liquidity",type:"uint128"},{indexed:!1,internalType:"int24",name:"tick",type:"int24"}],name:"Swap",type:"event"},{inputs:[{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount",type:"uint128"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount0Requested",type:"uint128"},{internalType:"uint128",name:"amount1Requested",type:"uint128"}],name:"collect",outputs:[{internalType:"uint128",name:"amount0",type:"uint128"},{internalType:"uint128",name:"amount1",type:"uint128"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint128",name:"amount0Requested",type:"uint128"},{internalType:"uint128",name:"amount1Requested",type:"uint128"}],name:"collectProtocol",outputs:[{internalType:"uint128",name:"amount0",type:"uint128"},{internalType:"uint128",name:"amount1",type:"uint128"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint24",name:"",type:"uint24"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeGrowthGlobal0X128",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeGrowthGlobal1X128",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"flash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"observationCardinalityNext",type:"uint16"}],name:"increaseObservationCardinalityNext",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint160",name:"sqrtPriceX96",type:"uint160"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"liquidity",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxLiquidityPerTick",outputs:[{internalType:"uint128",name:"",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"},{internalType:"uint128",name:"amount",type:"uint128"},{internalType:"bytes",name:"data",type:"bytes"}],name:"mint",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"observations",outputs:[{internalType:"uint32",name:"blockTimestamp",type:"uint32"},{internalType:"int56",name:"tickCumulative",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityCumulativeX128",type:"uint160"},{internalType:"bool",name:"initialized",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32[]",name:"secondsAgos",type:"uint32[]"}],name:"observe",outputs:[{internalType:"int56[]",name:"tickCumulatives",type:"int56[]"},{internalType:"uint160[]",name:"secondsPerLiquidityCumulativeX128s",type:"uint160[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"positions",outputs:[{internalType:"uint128",name:"liquidity",type:"uint128"},{internalType:"uint256",name:"feeGrowthInside0LastX128",type:"uint256"},{internalType:"uint256",name:"feeGrowthInside1LastX128",type:"uint256"},{internalType:"uint128",name:"tokensOwed0",type:"uint128"},{internalType:"uint128",name:"tokensOwed1",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolFees",outputs:[{internalType:"uint128",name:"token0",type:"uint128"},{internalType:"uint128",name:"token1",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8",name:"feeProtocol0",type:"uint8"},{internalType:"uint8",name:"feeProtocol1",type:"uint8"}],name:"setFeeProtocol",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slot0",outputs:[{internalType:"uint160",name:"sqrtPriceX96",type:"uint160"},{internalType:"int24",name:"tick",type:"int24"},{internalType:"uint16",name:"observationIndex",type:"uint16"},{internalType:"uint16",name:"observationCardinality",type:"uint16"},{internalType:"uint16",name:"observationCardinalityNext",type:"uint16"},{internalType:"uint8",name:"feeProtocol",type:"uint8"},{internalType:"bool",name:"unlocked",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"int24",name:"tickLower",type:"int24"},{internalType:"int24",name:"tickUpper",type:"int24"}],name:"snapshotCumulativesInside",outputs:[{internalType:"int56",name:"tickCumulativeInside",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityInsideX128",type:"uint160"},{internalType:"uint32",name:"secondsInside",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bool",name:"zeroForOne",type:"bool"},{internalType:"int256",name:"amountSpecified",type:"int256"},{internalType:"uint160",name:"sqrtPriceLimitX96",type:"uint160"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[{internalType:"int256",name:"amount0",type:"int256"},{internalType:"int256",name:"amount1",type:"int256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"int16",name:"",type:"int16"}],name:"tickBitmap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"tickSpacing",outputs:[{internalType:"int24",name:"",type:"int24"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"int24",name:"",type:"int24"}],name:"ticks",outputs:[{internalType:"uint128",name:"liquidityGross",type:"uint128"},{internalType:"int128",name:"liquidityNet",type:"int128"},{internalType:"uint256",name:"feeGrowthOutside0X128",type:"uint256"},{internalType:"uint256",name:"feeGrowthOutside1X128",type:"uint256"},{internalType:"int56",name:"tickCumulativeOutside",type:"int56"},{internalType:"uint160",name:"secondsPerLiquidityOutsideX128",type:"uint160"},{internalType:"uint32",name:"secondsOutside",type:"uint32"},{internalType:"bool",name:"initialized",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],Id="0x6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002b8417901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61567e6200024a60003980611fee5280614b5f5280614b96525080610c0052806128fd5280614bca5280614bfc525080610cef52806119cb5280611a0252806129455250806111c75280611a855280611ef4528061244452806129215280613e6b5250806108d252806112f55280611a545280611e8e52806123be5280613d2252508061207b528061227d52806128d9525080612bfb525061567e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806370cf754a116100ee578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610800578063f305839914610820578063f30dba9314610828578063f637731d146108aa576101ae565b8063c45a0155146107d1578063d0c93a7c146107d9578063d21220a7146107f8576101ae565b8063883bdbfd116100c8578063883bdbfd14610633578063a34123a71461073c578063a38807f214610776576101ae565b806370cf754a146105c65780638206a4d1146105ce57806385b66729146105f6576101ae565b80633850c7bd1161015b578063490e6cbc11610135578063490e6cbc146104705780634f1eb3d8146104fc578063514ea4bf1461054d5780635339c296146105a6576101ae565b80633850c7bd1461035b5780633c8a7d8d146103b45780634614131914610456576101ae565b80631ad8b03b1161018c5780631ad8b03b146102aa578063252c09d7146102e157806332148f6714610338576101ae565b80630dfe1681146101b3578063128acb08146101d75780631a68650214610286575b600080fd5b6101bb6108d0565b604080516001600160a01b039092168252519081900360200190f35b61026d600480360360a08110156101ed57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a08101608082013564010000000081111561022e57600080fd5b82018360208201111561024057600080fd5b8035906020019184600183028401116401000000008311171561026257600080fd5b5090925090506108f4565b6040805192835260208301919091528051918290030190f35b61028e6114ad565b604080516001600160801b039092168252519081900360200190f35b6102b26114bc565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102fe600480360360208110156102f757600080fd5b50356114d6565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103596004803603602081101561034e57600080fd5b503561ffff1661151c565b005b610363611616565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61026d600480360360a08110156103ca57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a08101608082013564010000000081111561041757600080fd5b82018360208201111561042957600080fd5b8035906020019184600183028401116401000000008311171561044b57600080fd5b509092509050611666565b61045e611922565b60408051918252519081900360200190f35b6103596004803603608081101561048657600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b509092509050611928565b6102b2600480360360a081101561051257600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d83565b61056a6004803603602081101561056357600080fd5b5035611f9d565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61045e600480360360208110156105bc57600080fd5b503560010b611fda565b61028e611fec565b610359600480360360408110156105e457600080fd5b5060ff81358116916020013516612010565b6102b26004803603606081101561060c57600080fd5b506001600160a01b03813516906001600160801b036020820135811691604001351661220f565b6106a36004803603602081101561064957600080fd5b81019060208101813564010000000081111561066457600080fd5b82018360208201111561067657600080fd5b8035906020019184602083028401116401000000008311171561069857600080fd5b5090925090506124dc565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106e75781810151838201526020016106cf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561072657818101518382015260200161070e565b5050505090500194505050505060405180910390f35b61026d6004803603606081101561075257600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612569565b6107a06004803603604081101561078c57600080fd5b508035600290810b9160200135900b6126e0565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b6101bb6128d7565b6107e16128fb565b6040805160029290920b8252519081900360200190f35b6101bb61291f565b610808612943565b6040805162ffffff9092168252519081900360200190f35b61045e612967565b6108486004803603602081101561083e57600080fd5b503560020b61296d565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b610359600480360360208110156108c057600080fd5b50356001600160a01b03166129db565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108ff612bf0565b85610936576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109ef576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a3a5780600001516001600160a01b0316866001600160a01b0316118015610a35575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a6c565b80600001516001600160a01b0316866001600160a01b0316108015610a6c57506401000276a36001600160a01b038716115b610aa3576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610ad25760048460a0015160ff16901c610ae5565b60108460a0015160ff1681610ae357fe5b065b60ff1681526004546001600160801b03166020820152604001610b06612c27565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b8257600254610b86565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bd55750886001600160a01b031681604001516001600160a01b031614155b15610f9f57610be261560e565b60408201516001600160a01b031681526060820151610c25906006907f00000000000000000000000000000000000000000000000000000000000000008f612c2b565b15156040830152600290810b810b60208301819052620d89e719910b1215610c5657620d89e7196020820152610c75565b6020810151620d89e860029190910b1315610c7557620d89e860208201525b610c828160200151612d6d565b6001600160a01b031660608201526040820151610d13908d610cbc578b6001600160a01b031683606001516001600160a01b031611610cd6565b8b6001600160a01b031683606001516001600160a01b0316105b610ce4578260600151610ce6565b8b5b60c085015185517f000000000000000000000000000000000000000000000000000000000000000061309f565b60c085015260a084015260808301526001600160a01b031660408301528215610d7557610d498160c00151826080015101613291565b825103825260a0810151610d6b90610d6090613291565b6020840151906132a7565b6020830152610db0565b610d828160a00151613291565b825101825260c08101516080820151610daa91610d9f9101613291565b6020840151906132c3565b60208301525b835160ff1615610df6576000846000015160ff168260c0015181610dd057fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e3557610e298160c00151600160801b8460c001516001600160801b03166132d9565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f5e57806040015115610f35578360a00151610ebf57610e9d846040015160008760200151886040015188602001518a606001516008613389909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610f0b82602001518e610ed657600154610edc565b84608001515b8f610eeb578560800151610eef565b6002545b608089015160608a015160408b0151600595949392919061351c565b90508c15610f17576000035b610f258360c00151826135ef565b6001600160801b031660c0840152505b8b610f44578060200151610f4d565b60018160200151035b600290810b900b6060830152610f99565b80600001516001600160a01b031682604001516001600160a01b031614610f9957610f8c82604001516136a5565b600290810b900b60608301525b50610baf565b836020015160020b816060015160020b1461107a57600080610fed86604001518660400151886020015188602001518a606001518b6080015160086139d1909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b93909316929092029190911773ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116179055506110ac9050565b60408101516000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110f25760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561114257608081015160015560a08101516001600160801b03161561113d5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611188565b608081015160025560a08101516001600160801b0316156111885760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146111a157602081015181518b036111ae565b80600001518a0381602001515b90965094508a156112e75760008512156111f0576111f07f00000000000000000000000000000000000000000000000000000000000000008d87600003613b86565b60006111fa613cd4565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b5050505061129e613cd4565b6112a88289613e0d565b11156112e1576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b50611411565b600086121561131e5761131e7f00000000000000000000000000000000000000000000000000000000000000008d88600003613b86565b6000611328613e1d565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113ac57600080fd5b505af11580156113c0573d6000803e3d6000fd5b505050506113cc613e1d565b6113d68288613e0d565b111561140f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114e757600080fd5b015463ffffffff81169150640100000000810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff16611560576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611575612bf0565b60008054600160d81b900461ffff169061159160088385613eb5565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115fe576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff166116ad576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b0385166116cd57600080fd5b60008061171b60405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016117118a6001600160801b0316613f58565b600f0b9052613f69565b9250925050819350809250600080600086111561173d5761173a613cd4565b91505b841561174e5761174b613e1d565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117d057600080fd5b505af11580156117e4573d6000803e3d6000fd5b50505050600086111561183b576117f9613cd4565b6118038388613e0d565b111561183b576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561188b57611849613e1d565b6118538287613e0d565b111561188b576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff1661196c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611981612bf0565b6004546001600160801b0316806119c3576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119f8867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406141a9565b90506000611a2f867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406141a9565b90506000611a3b613cd4565b90506000611a47613e1d565b90508815611a7a57611a7a7f00000000000000000000000000000000000000000000000000000000000000008b8b613b86565b8715611aab57611aab7f00000000000000000000000000000000000000000000000000000000000000008b8a613b86565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505050506000611b4f613cd4565b90506000611b5b613e1d565b905081611b688588613e0d565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611bab8487613e0d565b1115611be3576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c725760008054600160e81b9004600f16908115611c16578160ff168481611c1057fe5b04611c19565b60005b90506001600160801b03811615611c4c57600380546001600160801b038082168401166001600160801b03199091161790555b611c66818503600160801b8d6001600160801b03166132d9565b60018054909101905550505b8015611cfd5760008054600160e81b900460041c600f16908115611ca2578160ff168381611c9c57fe5b04611ca5565b60005b90506001600160801b03811615611cd757600380546001600160801b03600160801b8083048216850182160291161790555b611cf1818403600160801b8d6001600160801b03166132d9565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611dca576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611de460073389896141e3565b60038101549091506001600160801b0390811690861611611e055784611e14565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611e3c5783611e52565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611eb7576003810180546001600160801b031981166001600160801b03918216869003821617909155611eb7907f0000000000000000000000000000000000000000000000000000000000000000908a908616613b86565b6001600160801b03821615611f1d576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611f1d907f0000000000000000000000000000000000000000000000000000000000000000908a908516613b86565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612054576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b50516001600160a01b0316331461210157600080fd5b60ff82161580612124575060048260ff16101580156121245750600a8260ff1611155b801561214e575060ff8116158061214e575060048160ff161015801561214e5750600a8160ff1611155b61215757600080fd5b60008054610ff0600484901b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff16612256576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b1580156122c357600080fd5b505afa1580156122d7573d6000803e3d6000fd5b505050506040513d60208110156122ed57600080fd5b50516001600160a01b0316331461230357600080fd5b6003546001600160801b039081169085161161231f578361232c565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116123525782612366565b600354600160801b90046001600160801b03165b90506001600160801b038216156123e7576003546001600160801b038381169116141561239557600019909101905b600380546001600160801b031981166001600160801b039182168590038216179091556123e7907f00000000000000000000000000000000000000000000000000000000000000009087908516613b86565b6001600160801b0381161561246d576003546001600160801b03828116600160801b90920416141561241857600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561246d907f00000000000000000000000000000000000000000000000000000000000000009087908416613b86565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b6060806124e7612bf0565b61255e6124f2612c27565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614247565b915091509250929050565b600080548190600160f01b900460ff166125b0576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b918101919091528190819061260990606081016125fc6001600160801b038a16613f58565b600003600f0b9052613f69565b925092509250816000039450806000039350600085118061262a5750600084115b15612669576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b60008060006126ed612bf0565b6126f785856143a1565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b9367010000000000000082046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff168061275f57600080fd5b6003820154600681900b985067010000000000000081046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff16806127a457600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b1215905061284d575093909403965090039350900390506128d0565b8a60020b816020015160020b12156128c1576000612869612c27565b602083015160408401516004546060860151939450600093849361289f936008938893879392916001600160801b031690613389565b9a9003989098039b5050949096039290920396509091030392506128d0915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b9067010000000000000081046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b031615612a1e576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612a29826136a5565b9050600080612a41612a39612c27565b60089061446a565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b73ffffffffffffffffffffffffffffffffffffffff19909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9091021761ffff60d81b1916600160d81b909602959095177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612b9957fe5b05029050600083600281900b620d89e881612bb057fe5b0502905060008460020b83830360020b81612bc757fe5b0560010190508062ffffff166001600160801b03801681612be457fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612c2557600080fd5b565b4290565b60008060008460020b8660020b81612c3f57fe5b05905060008660020b128015612c6657508460020b8660020b81612c5f57fe5b0760020b15155b15612c7057600019015b8315612ce557600080612c82836144b6565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612cc757888360ff16860302612cda565b88612cd1826144c8565b840360ff168603025b965050505050612d63565b600080612cf4836001016144b6565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612d4657888360ff0360ff16866001010102612d5c565b8883612d5183614568565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612d84578260020b612d8c565b8260020b6000035b9050620d89e8811115612dca576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612dde57600160801b612df0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612e24576ffff97272373d413259a46990580e213a0260801c5b6004821615612e43576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e62576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e81576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ea0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ebf576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612ede576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612efe576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f1e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f3e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f5e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f7e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612f9e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fbe576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fde576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612fff576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561301f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561303e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561305b576b048a170391f7dc42444e8fa20260801c5b60008460020b131561307657806000198161307257fe5b0490505b64010000000081061561308a57600161308d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131245760006130d88989620f42400362ffffff16620f42406132d9565b9050826130f1576130ec8c8c8c6001614652565b6130fe565b6130fe8b8d8c60016146cd565b955085811061310f578a965061311e565b61311b8c8b838661478a565b96505b5061316e565b8161313b576131368b8b8b60006146cd565b613148565b6131488a8c8b6000614652565b935083886000031061315c5789955061316e565b61316b8b8a8a600003856147d6565b95505b6001600160a01b038a81169087161482156131d15780801561318d5750815b6131a35761319e878d8c60016146cd565b6131a5565b855b95508080156131b2575081155b6131c8576131c3878d8c6000614652565b6131ca565b845b945061321b565b8080156131db5750815b6131f1576131ec8c888c6001614652565b6131f3565b855b9550808015613200575081155b613216576132118c888c60006146cd565b613218565b845b94505b8115801561322b57508860000385115b15613237578860000394505b81801561325657508a6001600160a01b0316876001600160a01b031614155b15613265578589039350613282565b61327f868962ffffff168a620f42400362ffffff166141a9565b93505b50505095509550955095915050565b6000600160ff1b82106132a357600080fd5b5090565b808203828113156000831215146132bd57600080fd5b92915050565b818101828112156000831215146132bd57600080fd5b600080806000198587098686029250828110908390030390508061330f576000841161330457600080fd5b508290049050613382565b80841161331b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613430576000898661ffff1661ffff81106133aa57fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a161461341c57613419818a8988614822565b90505b806020015181604001519250925050613510565b8688036000806134458c8c858c8c8c8c6148d2565b91509150816000015163ffffffff168363ffffffff161415613477578160200151826040015194509450505050613510565b805163ffffffff8481169116141561349f578060200151816040015194509450505050613510565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b816134cd57fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816134ff57fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561365457826001600160801b03168260000384039150816001600160801b03161061364f576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6132bd565b826001600160801b03168284019150816001600160801b031610156132bd576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b038316108015906136e1575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613716576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106137b757607f810383901c91506137c1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146139c257886001600160a01b03166139a682612d6d565b6001600160a01b031611156139bb57816139bd565b805b6139c4565b815b9998505050505050505050565b6000806000898961ffff1661ffff81106139e757fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff161515606083015290925089161415613a575788859250925050613510565b8461ffff168461ffff16118015613a7857506001850361ffff168961ffff16145b15613a8557839150613a89565b8491505b8161ffff168960010161ffff1681613a9d57fe5b069250613aac81898989614822565b8a8461ffff1661ffff8110613abd57fe5b825191018054602084015160408501516060909501511515600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16640100000000026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613c025780518252601f199092019160209182019101613be3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c64576040519150601f19603f3d011682016040523d82523d6000602084013e613c69565b606091505b5091509150818015613c97575080511580613c975750808060200190516020811015613c9457600080fd5b50515b613ccd576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613d6d5780518252601f199092019160209182019101613d4e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613dcd576040519150601f19603f3d011682016040523d82523d6000602084013e613dd2565b606091505b5091509150818015613de657506020815110155b613def57600080fd5b808060200190516020811015613e0457600080fd5b50519250505090565b808201828110156132bd57600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613d6d5780518252601f199092019160209182019101613d4e565b6000808361ffff1611613ef3576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613f09575081613382565b825b8261ffff168161ffff161015613f4f576001858261ffff1661ffff8110613f2e57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613f0b565b50909392505050565b80600f81900b8114612beb57600080fd5b6000806000613f76612bf0565b613f88846020015185604001516143a1565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c08501528851908901519489015192890151939461402c9491939092909190614acf565b93508460600151600f0b6000146141a157846020015160020b816020015160020b12156140815761407a6140638660200151612d6d565b6140708760400151612d6d565b8760600151614c84565b92506141a1565b846040015160020b816020015160020b12156141775760045460408201516001600160801b03909116906140d3906140b7612c27565b60208501516060860151608087015160089493929187916139d1565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614123919061411990612d6d565b8860600151614c84565b93506141416141358760200151612d6d565b83516060890151614cc8565b92506141518187606001516135ef565b600480546001600160801b0319166001600160801b0392909216919091179055506141a1565b61419e6141878660200151612d6d565b6141948760400151612d6d565b8760600151614cc8565b91505b509193909250565b60006141b68484846132d9565b9050600082806141c257fe5b84860911156133825760001981106141d957600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614287576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff8111801561429f57600080fd5b506040519080825280602002602001820160405280156142c9578160200160208202803683370190505b509150865167ffffffffffffffff811180156142e457600080fd5b5060405190808252806020026020018201604052801561430e578160200160208202803683370190505b50905060005b87518110156143945761433f8a8a8a848151811061432e57fe5b60200260200101518a8a8a8a613389565b84838151811061434b57fe5b6020026020010184848151811061435e57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614314565b5097509795505050505050565b8060020b8260020b126143e1576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614424576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614466576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116144d657600080fd5b600160801b82106144e957608091821c91015b68010000000000000000821061450157604091821c91015b640100000000821061451557602091821c91015b62010000821061452757601091821c91015b610100821061453857600891821c91015b6010821061454857600491821c91015b6004821061455857600291821c91015b60028210612beb57600101919050565b600080821161457657600080fd5b5060ff6001600160801b0382161561459157607f1901614599565b608082901c91505b67ffffffffffffffff8216156145b257603f19016145ba565b604082901c91505b63ffffffff8216156145cf57601f19016145d7565b602082901c91505b61ffff8216156145ea57600f19016145f2565b601082901c91505b60ff821615614604576007190161460c565b600882901c91505b600f82161561461e5760031901614626565b600482901c91505b60038216156146385760011901614640565b600282901c91505b6001821615612beb5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614672579293925b8161469f5761469a836001600160801b03168686036001600160a01b0316600160601b6132d9565b6146c2565b6146c2836001600160801b03168686036001600160a01b0316600160601b6141a9565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156146ed579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661472957600080fd5b8361475957866001600160a01b031661474c8383896001600160a01b03166132d9565b8161475357fe5b0461477f565b61477f6147708383896001600160a01b03166141a9565b886001600160a01b0316614cf7565b979650505050505050565b600080856001600160a01b0316116147a157600080fd5b6000846001600160801b0316116147b757600080fd5b816147c95761469a8585856001614d02565b6146c28585856001614de3565b600080856001600160a01b0316116147ed57600080fd5b6000846001600160801b03161161480357600080fd5b816148155761469a8585856000614de3565b6146c28585856000614d02565b61482a61564a565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161487e576001614880565b845b6001600160801b031673ffffffff00000000000000000000000000000000608085901b16816148ab57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6148da61564a565b6148e261564a565b888561ffff1661ffff81106148f357fe5b60408051608081018252919092015463ffffffff81168083526401000000008204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061495890899089614ed8565b15614990578663ffffffff16826000015163ffffffff16141561497a57613510565b8161498783898988614822565b91509150613510565b888361ffff168660010161ffff16816149a557fe5b0661ffff1661ffff81106149b557fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614a6c57604080516080810182528a5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614a7b88836000015189614ed8565b614ab2576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b614abf8989898887614f9b565b9150915097509795505050505050565b6000614ade60078787876141e3565b60015460025491925090600080600f87900b15614c24576000614aff612c27565b6000805460045492935090918291614b499160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b900416613389565b9092509050614b8360058d8b8d8b8b87898b60007f000000000000000000000000000000000000000000000000000000000000000061513b565b9450614bba60058c8b8d8b8b87898b60017f000000000000000000000000000000000000000000000000000000000000000061513b565b93508415614bee57614bee60068d7f0000000000000000000000000000000000000000000000000000000000000000615325565b8315614c2057614c2060068c7f0000000000000000000000000000000000000000000000000000000000000000615325565b5050505b600080614c3660058c8c8b8a8a61538b565b9092509050614c47878a8484615437565b600089600f0b1215614c75578315614c6457614c6460058c6155cc565b8215614c7557614c7560058b6155cc565b50505050505095945050505050565b60008082600f0b12614caa57614ca5614ca085858560016146cd565b613291565b6146c5565b614cbd614ca085858560000360006146cd565b600003949350505050565b60008082600f0b12614ce457614ca5614ca08585856001614652565b614cbd614ca08585856000036000614652565b808204910615150190565b60008115614d755760006001600160a01b03841115614d3857614d3384600160601b876001600160801b03166132d9565b614d50565b6001600160801b038516606085901b81614d4e57fe5b045b9050614d6d614d686001600160a01b03881683613e0d565b6155f8565b9150506146c5565b60006001600160a01b03841115614da357614d9e84600160601b876001600160801b03166141a9565b614dba565b614dba606085901b6001600160801b038716614cf7565b905080866001600160a01b031611614dd157600080fd5b6001600160a01b0386160390506146c5565b600082614df15750836146c5565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b168215614e91576001600160a01b03861684810290858281614e3157fe5b041415614e6257818101828110614e6057614e5683896001600160a01b0316836141a9565b93505050506146c5565b505b614e8882614e83878a6001600160a01b03168681614e7c57fe5b0490613e0d565b614cf7565b925050506146c5565b6001600160a01b03861684810290858281614ea857fe5b04148015614eb557508082115b614ebe57600080fd5b808203614e56614d68846001600160a01b038b16846141a9565b60008363ffffffff168363ffffffff1611158015614f0257508363ffffffff168263ffffffff1611155b15614f1e578163ffffffff168363ffffffff1611159050613382565b60008463ffffffff168463ffffffff1611614f46578363ffffffff1664010000000001614f4e565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614f7f578363ffffffff1664010000000001614f87565b8363ffffffff165b64ffffffffff169091111595945050505050565b614fa361564a565b614fab61564a565b60008361ffff168560010161ffff1681614fc157fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614fee57fe5b0661ffff8110614ffa57fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290955061506557806001019250614fd9565b898661ffff16826001018161507657fe5b0661ffff811061508257fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094506000906150ed908b908b614ed8565b905080801561510657506151068a8a8760000151614ed8565b15615111575061512e565b8061512157600182039250615128565b8160010193505b50614fd9565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b031682615166828d6135ef565b9050846001600160801b0316816001600160801b031611156151b4576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b03828116159082161581141594501561528a578c60020b8e60020b1361525a57600183018b9055600283018a90556003830180547fffffffffff0000000000000000000000000000000000000000ffffffffffffff166701000000000000006001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b038216178355856152d35782546152ce906152c990600160801b9004600f90810b810b908f900b6132c3565b613f58565b6152f4565b82546152f4906152c990600160801b9004600f90810b810b908f900b6132a7565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b8161533457fe5b0760020b1561534257600080fd5b60008061535d8360020b8560020b8161535757fe5b056144b6565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126153d1575050600182015460028301546153e4565b8360010154880391508360020154870390505b6000808b60020b8b60020b121561540657505060018301546002840154615419565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b6154d65781516001600160801b03166154ce576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b5080516154e5565b81516154e290866135ef565b90505b60006155098360200151860384600001516001600160801b0316600160801b6132d9565b9050600061552f8460400151860385600001516001600160801b0316600160801b6132d9565b905086600f0b6000146155565787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061558457506000816001600160801b0316115b156155c2576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612beb57600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea164736f6c6343000706000a";class Od extends P{constructor(...e){e.length>1?super(...e):super(Cd,Id,e[0])}deploy(e){return super.deploy(e||{})}getDeployTransaction(e){return super.getDeployTransaction(e||{})}attach(e){return super.attach(e)}connect(e){return super.connect(e)}static bytecode=Id;static abi=Cd;static createInterface(){return new D.Interface(Cd)}static connect(e,t){return new x(e,Cd,t)}}const Sd=2e6;async function Nd(e,t,n){const a=Od.createInterface(),r=kd(t,a),i=[];return r&&n.forEach((e=>{e&&i.push({target:e,callData:r,gasLimit:S.from("1000000")})})),e.callStatic.multicall(i)}const kd=(e,t)=>{const n=t?.getFunction(e);return n?t?.encodeFunctionData(n):void 0},Md={"0xcdca1753":["uint256","uint160[]","uint32[]","uint256"],"0xc6a5026a":["uint256","uint160","uint32","uint256"],"0x2f80bb1d":["uint256","uint160[]","uint32[]","uint256"],"0xbd21704a":["uint256","uint160","uint32","uint256"]};const Pd=N.utils.id("decimals()").substring(0,10);async function Dd(e,t,n){if("native"===e)return n.decimals;try{const n=await t.call({to:e,data:Pd});return parseInt(n,16)}catch(e){const t=e instanceof Error?e.message:"Unknown Error";throw new bd(`failed to get ERC20 decimals: ${t}`)}}function xd(e){if(e===N.constants.AddressZero)return!1;try{return N.utils.getAddress(e),!0}catch(e){return!1}}const Ld=e=>"native"===e||xd(e),Ud=e=>new W.Token(e.chainId,e.address,e.decimals,e.symbol,e.name),Fd=e=>({chainId:e.chainId,address:e.address,decimals:e.decimals,symbol:e.symbol,name:e.name,type:"erc20"}),Bd=e=>{const t=Ud(e.token);return W.CurrencyAmount.fromRawAmount(t,e.value.toString())},Vd=(e,t)=>({value:e,token:t}),Gd=e=>"erc20"===e.token.type,qd=e=>"native"===e.token.type,jd=e=>"native"===e.type,zd=(e,t)=>{if(Gd(e)&&Gd(t))return((e,t)=>{if(e.token.address!==t.token.address)throw new Error("Token mismatch: token addresses must be the same");return{value:e.value.add(t.value),token:e.token}})(e,t);if(qd(e)&&qd(t))return((e,t)=>({value:e.value.add(t.value),token:e.token}))(e,t);throw new Error("Token mismatch: token types must be the same")},Hd=(e,t)=>{if(Gd(e)&&Gd(t))return((e,t)=>{if(e.token.address!==t.token.address)throw new Error("Token mismatch: token addresses must be the same");return{value:e.value.sub(t.value),token:e.token}})(e,t);if(qd(e)&&qd(t))return((e,t)=>({value:e.value.sub(t.value),token:e.token}))(e,t);throw new Error("Token mismatch: token types must be the same")},Wd=e=>{return{token:(t=e.token,"native"===t.type?{address:"",chainId:t.chainId,decimals:t.decimals,symbol:t.symbol,name:t.name}:t),value:e.value};var t};async function $d(e,t,n,a,r){const i=n.map((e=>Q.quoteCallParameters(e,Bd(a),r,{useQuoterV2:!0}).calldata));let s;try{s=await async function(e,t,n,a){const r=new Array(t.length);for(const e in t)r[e]={target:n,callData:t[e],gasLimit:a?.gasRequired??Sd};return e.callStatic.multicall(r)}(e,i,t)}catch(e){const t=e instanceof Error?e.message:"Unknown Error";throw new bd(`failed multicall: ${t}`)}const o=[];for(const e in s.returnData){const t=i[e].substring(0,10),c=Md[t];if(!c)throw new Error("No quoting function signature found");if("0x"!==s.returnData[e].returnData)try{const t=N.utils.defaultAbiCoder.decode(c,s.returnData[e].returnData);if(t){const i=t[0];if(!(i instanceof S))throw new Error("Expected BigNumber");const s=Fd(n[e].input),c=Fd(n[e].output);o.push({route:n[e],amountIn:r===$.EXACT_INPUT?a:Vd(i,s),amountOut:r===$.EXACT_INPUT?Vd(i,c):a,gasEstimate:N.BigNumber.from(t[3]),tradeType:r})}}catch{}}return o}function Xd({factoryAddress:e,erc20Pair:t,fee:n,initCodeHashManualOverride:a}){return t=Kd(t),N.utils.getCreate2Address(e,ae(["bytes"],[N.utils.defaultAbiCoder.encode(["address","address","uint24"],[t[0].address,t[1].address,n])]),a??"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54")}const Kd=e=>{if(e[0].address.toLowerCase()>e[1].address.toLowerCase()){const t=e[0];e[0]=e[1],e[1]=t}return e},Jd=[J.LOWEST,J.LOW,J.MEDIUM,J.HIGH],Zd=(e,t,n)=>{const a=((e,t)=>{const n=new Map,a=[];[...e,...t].forEach((e=>{n.set(e.address,e),a.push(e.address)}));const r=[...new Set([...a])],i=[];for(let e=0;e<r.length;e++)for(let t=e+1;t<r.length;t++){const a=n.get(r[e]),s=n.get(r[t]);a&&s&&i.push([a,s])}return i})(e,t),r=[];for(let e=0;e<a.length;e++)for(let t=0;t<Jd.length;t++){const i=Xd({factoryAddress:n,erc20Pair:a[e],fee:Jd[t]});r.push({erc20Pair:a[e],fee:Jd[t],poolAddress:i})}return r},Qd="liquidity",Yd="slot0";class eu{provider;routingTokens;routingContracts;constructor(e,t,n){this.provider=e,this.routingTokens=t,this.routingContracts=n}async findOptimalRoute(e,t,n,a=2){const[r,i]=this.determineERC20InAndERC20Out(n,e,t),s=Rd.connect(this.routingContracts.multicallAddress,this.provider),o=[r,i],c=await(async(e,t,n,a)=>{const r=Zd(t,n,a),i=r.map((e=>e.poolAddress));let s,o;try{[s,o]=await Promise.all([Nd(e,Yd,i),Nd(e,Qd,i)])}catch(e){const t=e instanceof Error?e.message:"Unknown Error";throw new bd(`failed multicall: ${t}`)}const c=s.returnData,d=o.returnData,u=Od.createInterface(),f=[];return r.forEach(((e,t)=>{const n="0x"===s.returnData[t].returnData,a="0x"===o.returnData[t].returnData;if(n||a)return;const r=u.decodeFunctionResult(Yd,c[t].returnData),i=u.decodeFunctionResult(Qd,d[t].returnData),l=r.sqrtPriceX96.isZero(),p=i[0].isZero();if(l||p)return;const h=new Y(Ud(e.erc20Pair[0]),Ud(e.erc20Pair[1]),e.fee,r.sqrtPriceX96.toString(),i.toString(),r.tick);f.push(h)})),f})(s,o,this.routingTokens,this.routingContracts.factoryAddress);if(0===c.length)throw new md;const d=tu(r,i,c,a,[],[],r);if(0===d.length)throw new md;return await this.getBestQuoteFromRoutes(s,d,e,n)}async getBestQuoteFromRoutes(e,t,n,a){const r=await $d(e,this.routingContracts.quoterAddress,t,n,a);if(0===r.length)throw new md;if(a===$.EXACT_INPUT)return this.bestQuoteForAmountIn(r);if(a===$.EXACT_OUTPUT)return this.bestQuoteForAmountOut(r);throw new Error("Invalid trade type")}bestQuoteForAmountIn(e){let t=e[0];for(let n=1;n<e.length;n++)e[n].amountOut.value.gt(t.amountOut.value)&&(t=e[n]);return t}bestQuoteForAmountOut(e){let t=e[0];for(let n=1;n<e.length;n++)e[n].amountIn.value.lt(t.amountIn.value)&&(t=e[n]);return t}determineERC20InAndERC20Out(e,t,n){return e===$.EXACT_INPUT?[t.token,n]:[n,t.token]}}const tu=(e,t,n,a,r=[],i=[],s=e)=>{const o=Ud(e),c=Ud(t),d=Ud(s);for(const e of n){const u=e.involvesToken(o),f=r.find((t=>{return(n=e)===(a=t)||n.token0.equals(a.token0)&&n.token1.equals(a.token1)&&n.fee===a.fee;var n,a}));if(!u||f)continue;const l=e.token0.equals(o)?e.token1:e.token0;l.equals(c)?i.push(new Z([...r,e],d,c)):a>1&&tu(Fd(l),t,n,a-1,[...r,e],i,s)}return i},nu=async(e,t)=>{const n=await e.getFeeData().catch((()=>null));return n?(a=n).maxFeePerGas&&a.maxPriorityFeePerGas?Vd(n.maxFeePerGas.add(n.maxPriorityFeePerGas),t):n.gasPrice?Vd(n.gasPrice,t):null:null;var a},au=(e,t)=>Vd(t.mul(e.value),e.token),ru=async(e,t,n,a)=>{const r=await(async(e,t,n,a)=>{const r=Ed.connect(n.token.address,e);let i;try{i=await r.allowance(t,a)}catch(e){const t=e instanceof Error?e.message:"Unknown Error";throw new yd(`failed to get allowance: ${t}`)}const s=n.value.sub(i);return!s.isNegative()&&!s.isZero()})(e,t,n,a);return r?((e,t,n)=>{if(e===n)throw new yd("owner and spender addresses are the same");return{data:Ed.createInterface().encodeFunctionData("approve",[n,t.value]),to:t.token.address,value:0,from:e}})(t,n,a):null};const iu=async(e,t,n,a)=>{const r=await ru(e,t,n.amount,n.spender);if(!r)return null;const i=await async function(e,t,n,a){const r=Ed.connect(a,e);return await r.estimateGas.approve(n,N.constants.MaxUint256,{from:t})}(e,t,n.spender,n.amount.token.address),s=a?au(a,i):null;return{transaction:r,gasFeeEstimate:s?Wd(s):null}},su=e=>"native"===e.type;class ou{nativeToken;wrappedToken;constructor(e,t){this.nativeToken=e,this.wrappedToken=t}wrapAmount(e){if(!su(e.token))throw new Error(`cannot wrap non-native token: ${e.token.address}`);return Vd(e.value,this.wrappedToken)}unwrapAmount(e){if(e.token.address.toLowerCase()!==this.wrappedToken.address.toLowerCase())throw new Error(`cannot unwrap non-wrapped token ${e.token.address}`);return Vd(e.value,this.nativeToken)}maybeWrapToken(e){return su(e)?this.wrappedToken:e}maybeWrapAmount(e){return Vd(e.value,this.maybeWrapToken(e.token))}}const cu=e=>{if(1===e.toString().split(".").length)return new X(e,100);const t=(e/100).toString().split("."),n=t[0]+t[1],a=10**t[1].length;return new X(n,a)};const du=(e,t,n,a)=>{const r=function(e){return e.tradeType===$.EXACT_INPUT?e.amountOut:e.amountIn}(t),i=su(a)?e.unwrapAmount(r):r,s=Vd(function(e,t,n){const a=cu(n).add(1),r=(e===$.EXACT_INPUT?a.invert():a).multiply(t.toString()).quotient;return N.BigNumber.from(r.toString())}(t.tradeType,i.value,n),a);return{quotedAmount:i,quotedAmountWithMaxSlippage:s}};const uu=Math.floor(Date.now()/1e3)+900;class fu{secondaryFees;amount;constructor(e,t){this.secondaryFees=e,this.amount=Vd(S.from(0),t)}get token(){return this.amount.token}addAmount(e){this.amount=zd(this.amount,e)}amountWithFeesApplied(){return zd(this.amount,this.total())}amountLessFees(){return Hd(this.amount,this.total())}withAmounts(){return this.secondaryFees.map((e=>{const t=this.amount.value.mul(e.basisPoints).div(1e4);return{...e,amount:Vd(t,this.amount.token)}}))}total(){let e=Vd(S.from(0),this.amount.token);for(const t of this.secondaryFees){const n=this.amount.value.mul(t.basisPoints).div(1e4);e=zd(e,Vd(n,this.amount.token))}return e}}const lu=13473,pu={chainId:lu,address:"0x1CcCa691501174B4A623CeDA58cC8f1a76dc3439",decimals:18,symbol:"WIMX",name:"Wrapped Immutable Testnet Token",type:"erc20"},hu="multicall(uint256,bytes[])";function mu(e,t,n,a,r,i,s,o,c,d){const{route:u}=a.swaps[0],f=1===u.pools.length,l=r.length>0;return f?l?function(e,t,n,a,r,i,s,o){const c=i.map((e=>({feeBasisPoints:e.basisPoints,recipient:e.recipient}))),d=[];return t.tradeType===W.TradeType.EXACT_INPUT&&d.push(s.encodeFunctionData("exactInputSingleWithSecondaryFee",[c,{tokenIn:n.tokenPath[0].address,tokenOut:n.tokenPath[1].address,fee:n.pools[0].fee,recipient:e,amountIn:a,amountOutMinimum:r,sqrtPriceLimitX96:0}])),t.tradeType===W.TradeType.EXACT_OUTPUT&&d.push(s.encodeFunctionData("exactOutputSingleWithSecondaryFee",[c,{tokenIn:n.tokenPath[0].address,tokenOut:n.tokenPath[1].address,fee:n.pools[0].fee,recipient:e,amountInMaximum:a,amountOut:r,sqrtPriceLimitX96:0}])),jd(o)&&d.push(s.encodeFunctionData("unwrapNativeToken",[r])),d}(n,a,u,c,d,r,i,t):function(e,t,n,a,r,i,s,o,c){const d=[];return a.tradeType===W.TradeType.EXACT_INPUT&&d.push(o.encodeFunctionData("exactInputSingle",[{tokenIn:r.tokenPath[0].address,tokenOut:r.tokenPath[1].address,fee:r.pools[0].fee,recipient:n,amountIn:i,amountOutMinimum:s,sqrtPriceLimitX96:0}])),a.tradeType===W.TradeType.EXACT_OUTPUT&&d.push(o.encodeFunctionData("exactOutputSingle",[{tokenIn:r.tokenPath[0].address,tokenOut:r.tokenPath[1].address,fee:r.pools[0].fee,recipient:n,amountInMaximum:i,amountOut:s,sqrtPriceLimitX96:0}])),a.tradeType===W.TradeType.EXACT_OUTPUT&&jd(e)&&d.push(c.encodeFunctionData("refundETH")),jd(t)&&d.push(c.encodeFunctionData("unwrapWETH9(uint256)",[s])),d}(e,t,n,a,u,c,d,s,o):l?function(e,t,n,a,r,i,s,o){const c=ne(n,t.tradeType===W.TradeType.EXACT_OUTPUT),d=i.map((e=>({feeBasisPoints:e.basisPoints,recipient:e.recipient}))),u=[];return t.tradeType===W.TradeType.EXACT_INPUT&&u.push(s.encodeFunctionData("exactInputWithSecondaryFee",[d,{path:c,recipient:e,amountIn:a,amountOutMinimum:r}])),t.tradeType===W.TradeType.EXACT_OUTPUT&&u.push(s.encodeFunctionData("exactOutputWithSecondaryFee",[d,{path:c,recipient:e,amountInMaximum:a,amountOut:r}])),jd(o)&&u.push(s.encodeFunctionData("unwrapNativeToken",[r])),u}(n,a,u,c,d,r,i,t):function(e,t,n,a,r,i,s,o,c){const d=ne(r,a.tradeType===W.TradeType.EXACT_OUTPUT),u=[];return a.tradeType===W.TradeType.EXACT_INPUT&&u.push(o.encodeFunctionData("exactInput",[{path:d,recipient:n,amountIn:i,amountOutMinimum:s}])),a.tradeType===W.TradeType.EXACT_OUTPUT&&u.push(o.encodeFunctionData("exactOutput",[{path:d,recipient:n,amountInMaximum:i,amountOut:s}])),a.tradeType===W.TradeType.EXACT_OUTPUT&&jd(e)&&u.push(c.encodeFunctionData("refundETH")),jd(t)&&u.push(c.encodeFunctionData("unwrapWETH9(uint256)",[s])),u}(e,t,n,a,u,c,d,s,o)}function bu(e,t,n,a,r,i,s,o){const c=Ad.createInterface(),d=mu(e,t,a,n,i,c,re.INTERFACE,ie.INTERFACE,s,o);return c.encodeFunctionData(hu,[r.deadlineOrPreviousBlockhash,d])}function yu(e,t,n,a,r,i,s,o,c,d){const u=((e,t,n,a,r)=>jd(e)?0===r.length?n:a:t)(t,a,s,o,d),{calldata:f,maximumAmountIn:l}=function(e,t,n,a,r,i,s){const o=ee.createUncheckedTrade({route:n.route,inputAmount:Bd(n.amountIn),outputAmount:Bd(n.amountOut),tradeType:n.tradeType}),c={slippageTolerance:cu(r),recipient:a,deadlineOrPreviousBlockhash:i},d=te(o.maximumAmountIn(c.slippageTolerance).quotient),u=te(o.minimumAmountOut(c.slippageTolerance).quotient);return{calldata:bu(e,t,o,a,c,s,d,u),maximumAmountIn:d}}(e,t,n,u,r,i,d),p=c?au(c,n.gasEstimate):null,h=((e,t)=>"native"===e.type?t:"0x00")(e,l);return{transaction:{data:f,to:d.length>0?o:s,value:h,from:a},gasFeeEstimate:p?Wd(p):null}}function gu(e,t,n,a){const r=((e,t,n,a)=>{if(e.tradeType===W.TradeType.EXACT_OUTPUT){const t=su(n.token)?a.unwrapAmount(e.amountIn):e.amountIn;return n.addAmount(t),a.maybeWrapAmount(n.amountWithFeesApplied())}return a.maybeWrapAmount(t)})(e,t,n,a);return{gasEstimate:e.gasEstimate,route:e.route,amountIn:r,amountOut:e.amountOut,tradeType:e.tradeType}}const Eu={[lu]:{chainId:lu,rpcUrl:"https://rpc.testnet.immutable.com",contracts:{[lu]:{multicall:"0x4DB567A44451b27C1fAd7f52e1cDf64b915d62f9",coreFactory:"0xb18c44b211065E69844FbA9AE146DA362104AfBf",quoterV2:"0x87854A7D4b9BaC3D37f4516A1Ac7F36fB5ad539f",peripheryRouter:"0x786ec643F231960D4C1A4E336990F8E7bF8f1277",secondaryFee:"0x1938B5B8313E1b64C2c577491Ef5441f9eD33204"}}[13473],commonRoutingTokens:[pu],nativeToken:{chainId:lu,decimals:18,symbol:"tIMX",name:"Immutable Testnet Token",type:"native"},wrappedNativeToken:pu}},wu={[se.SANDBOX]:Eu,[se.PRODUCTION]:{}};class Tu{baseConfig;chain;secondaryFees=[];constructor({chainId:e,baseConfig:t,secondaryFees:n,overrides:a}){if(this.baseConfig=t,this.secondaryFees=n||[],function(e){let t=0;for(const n of e){if(!xd(n.recipient))throw new dd(`Invalid secondary fee recipient address: ${n.recipient}`);if(n.basisPoints<=0||n.basisPoints>1e3)throw new dd(`Invalid secondary fee basis points: ${n.basisPoints}`);t+=n.basisPoints}if(t>1e3)throw new dd(`Invalid total secondary fee basis points: ${t}`)}(this.secondaryFees),a)return function(e){const t=["rpcURL","exchangeContracts","commonRoutingTokens","nativeToken"];for(const n of t)if(!e[n])throw new dd(`Missing override: ${n}`);Object.entries(e.exchangeContracts).forEach((([e,t])=>{if(!xd(t))throw new dd(`Invalid exchange contract address for ${e}`)}))}(a),this.chain={chainId:e,rpcUrl:a.rpcURL,contracts:a.exchangeContracts,commonRoutingTokens:a.commonRoutingTokens,nativeToken:a.nativeToken,wrappedNativeToken:a.wrappedNativeToken},void(this.secondaryFees=n||[]);const r=wu[t.environment][e];if(!r)throw new ud(e,t.environment);this.chain=r}}class Ru{provider;router;chainId;nativeToken;wrappedNativeToken;secondaryFees;nativeTokenService;secondaryFeeContractAddress;routerContractAddress;constructor(e){const t=new Tu(e);this.chainId=t.chain.chainId,this.nativeToken=t.chain.nativeToken,this.wrappedNativeToken=t.chain.wrappedNativeToken,this.nativeTokenService=new ou(this.nativeToken,this.wrappedNativeToken),this.secondaryFees=t.secondaryFees,this.routerContractAddress=t.chain.contracts.peripheryRouter,this.secondaryFeeContractAddress=t.chain.contracts.secondaryFee,this.provider=new N.providers.JsonRpcProvider(t.chain.rpcUrl),this.router=new eu(this.provider,t.chain.commonRoutingTokens,{multicallAddress:t.chain.contracts.multicall,factoryAddress:t.chain.contracts.coreFactory,quoterAddress:t.chain.contracts.quoterV2})}static validate(e,t,n,a,r){K(xd(r),new pd("invalid from address")),K(Ld(e),new pd("invalid token in address")),K(Ld(t),new pd("invalid token out address")),K(e.toLocaleLowerCase()!==t.toLocaleLowerCase(),new hd),K(n<=10,new ld("max hops must be less than or equal to 10")),K(n>=1,new ld("max hops must be greater than or equal to 1")),K(a<=50,new fd("slippage percent must be less than or equal to 50")),K(a>=0,new fd("slippage percent must be greater than or equal to 0"))}async getSecondaryFees(){if(0===this.secondaryFees.length)return[];const e=Ad.connect(this.secondaryFeeContractAddress,this.provider);return await e.paused()?[]:this.secondaryFees}parseTokenLiteral(e,t){return"native"===e?this.nativeToken:{type:"erc20",address:e,chainId:this.chainId,decimals:t}}async getUnsignedSwapTx(e,t,n,a,r,i,s,o){Ru.validate(t,n,i,r,e);const[c,d,u]=await Promise.all([Dd(t,this.provider,this.nativeToken),Dd(n,this.provider,this.nativeToken),this.getSecondaryFees()]),f=this.parseTokenLiteral(t,c),l=this.parseTokenLiteral(n,d),[p,h]=o===$.EXACT_INPUT?[f,l]:[l,f],m=Vd(a,p),b=new fu(u,f),y=function(e,t,n,a){return n===$.EXACT_OUTPUT?a.maybeWrapAmount(e):(t.addAmount(e),a.maybeWrapAmount(t.amountLessFees()))}(m,b,o,this.nativeTokenService),[g,E]=await Promise.all([this.router.findOptimalRoute(y,this.nativeTokenService.maybeWrapToken(h),o,i),nu(this.provider,this.nativeToken)]),w=gu(g,m,b,this.nativeTokenService),T=yu(f,l,w,e,r,s,this.routerContractAddress,this.secondaryFeeContractAddress,E,u),{quotedAmount:R,quotedAmountWithMaxSlippage:_}=du(this.nativeTokenService,w,r,h),v=((e,t,n,a,r)=>{const i=e===$.EXACT_INPUT?t:n;return Gd(i)?{spender:0===r.length?a.routerAddress:a.secondaryFeeAddress,amount:i}:null})(o,m,_,{routerAddress:this.routerContractAddress,secondaryFeeAddress:this.secondaryFeeContractAddress},u),A=v?await iu(this.provider,e,v,E):null,C=((e,t,n,a)=>({amount:Wd(e),amountWithMaxSlippage:Wd(t),slippage:n,fees:a.withAmounts().map((e=>({...e,amount:Wd(e.amount)})))}))(R,_,r,b);return{quote:C,approval:A,swap:T}}async getUnsignedSwapTxFromAmountIn(e,t,n,a,r=.1,i=2,s=uu){return await this.getUnsignedSwapTx(e,t,n,N.BigNumber.from(a),r,i,s,$.EXACT_INPUT)}async getUnsignedSwapTxFromAmountOut(e,t,n,a,r=.1,i=2,s=uu){return await this.getUnsignedSwapTx(e,t,n,N.BigNumber.from(a),r,i,s,$.EXACT_OUTPUT)}}var _u,vu,Au,Cu,Iu,Ou,Su,Nu,ku,Mu,Pu,Du,xu,Lu,Uu,Fu,Bu,Vu,Gu,qu,ju;!function(e){e.IMTBL_WIDGETS_PROVIDER="imtbl-widgets-provider",e.IMTBL_CONNECT_WIDGET_EVENT="imtbl-connect-widget",e.IMTBL_WALLET_WIDGET_EVENT="imtbl-wallet-widget",e.IMTBL_SWAP_WIDGET_EVENT="imtbl-swap-widget",e.IMTBL_BRIDGE_WIDGET_EVENT="imtbl-bridge-widget",e.IMTBL_ONRAMP_WIDGET_EVENT="imtbl-onramp-widget",e.IMTBL_SALE_WIDGET_EVENT="imtbl-sale-widget"}(_u||(_u={})),function(e){e.PROVIDER_UPDATED="PROVIDER_UPDATED"}(vu||(vu={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure"}(Au||(Au={})),function(e){e.CLOSE_WIDGET="close-widget",e.NETWORK_SWITCH="network-switch",e.DISCONNECT_WALLET="disconnect-wallet"}(Cu||(Cu={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure",e.REJECTED="rejected"}(Iu||(Iu={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure",e.REJECTED="rejected",e.TRANSACTION_SUCCESS="transaction-success"}(Ou||(Ou={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure"}(Su||(Su={})),function(e){e.REQUEST_CONNECT="request-connect",e.REQUEST_WALLET="request-wallet",e.REQUEST_SWAP="request-swap",e.REQUEST_BRIDGE="request-bridge",e.REQUEST_ONRAMP="request-onramp"}(Nu||(Nu={})),function(e){e.CLOSE_WIDGET="close-widget",e.SUCCESS="success",e.FAILURE="failure"}(ku||(ku={})),function(e){e.CONNECT="connect",e.WALLET="wallet",e.SWAP="swap",e.BRIDGE="bridge",e.ONRAMP="onramp",e.SALE="sale"}(Mu||(Mu={})),function(e){e.LAYER1="LAYER1",e.LAYER2="LAYER2"}(Pu||(Pu={})),function(e){e.LIGHT="light",e.DARK="dark"}(Du||(Du={})),function(e){e[e.IMTBL_ZKEVM_MAINNET=13371]="IMTBL_ZKEVM_MAINNET",e[e.IMTBL_ZKEVM_TESTNET=13473]="IMTBL_ZKEVM_TESTNET",e[e.IMTBL_ZKEVM_DEVNET=13433]="IMTBL_ZKEVM_DEVNET",e[e.ETHEREUM=1]="ETHEREUM",e[e.SEPOLIA=11155111]="SEPOLIA"}(xu||(xu={})),function(e){e.ETHEREUM="Ethereum",e.SEPOLIA="Sepolia",e.IMTBL_ZKEVM_TESTNET="Immutable zkEVM Test",e.IMTBL_ZKEVM_DEVNET="Immutable zkEVM Dev",e.IMTBL_ZKEVM_MAINNET="Immutable zkEVM"}(Lu||(Lu={})),function(e){e.TRANSAK="201811419111"}(Uu||(Uu={})),function(e){e.BRIDGE_TO_L2="BRIDGE_TO_L2",e.SWAP="SWAP"}(Fu||(Fu={})),function(e){e.ALL="all"}(Bu||(Bu={})),function(e){e.ALL="all",e.SWAP="swap",e.BRIDGE="bridge",e.ONRAMP="onramp"}(Vu||(Vu={})),function(e){e.CHECK_CONNECTION="eth_accounts",e.CONNECT="eth_requestAccounts",e.ADD_NETWORK="wallet_addEthereumChain",e.SWITCH_NETWORK="wallet_switchEthereumChain",e.GET_CHAINID="eth_chainId"}(Gu||(Gu={})),function(e){e.ALL="all"}(qu||(qu={})),function(e){e.PASSPORT="passport",e.METAMASK="metamask"}(ju||(ju={}));const zu={allowMistmatchedChainId:!1,allowUnsupportedProvider:!1},Hu="development",Wu="0x0000000000000000000000000000000000001010",$u=18,Xu={name:"IMX",symbol:"IMX",decimals:$u,address:Wu},Ku={[Hu]:"https://api.dev.immutable.com",[se.SANDBOX]:"https://api.sandbox.immutable.com",[se.PRODUCTION]:"https://api.immutable.com"},Ju={[Hu]:"https://checkout-api.dev.immutable.com",[se.SANDBOX]:"https://checkout-api.sandbox.immutable.com",[se.PRODUCTION]:"https://checkout-api.immutable.com"},Zu={[se.SANDBOX]:"https://global-stg.transak.com",[se.PRODUCTION]:"https://global.transak.com/"},Qu=new Map([[xu.ETHEREUM,{chainIdHex:`0x${xu.ETHEREUM.toString(16)}`,chainName:Lu.ETHEREUM,rpcUrls:["https://checkout-api.immutable.com/v1/rpc/eth-mainnet"],nativeCurrency:{name:Lu.ETHEREUM,symbol:"ETH",decimals:18},blockExplorerUrls:["https://etherscan.io/"]}],[xu.IMTBL_ZKEVM_MAINNET,{chainIdHex:`0x${xu.IMTBL_ZKEVM_MAINNET.toString(16)}`,chainName:Lu.IMTBL_ZKEVM_MAINNET,rpcUrls:["https://rpc.immutable.com"],nativeCurrency:Xu}]]),Yu=new Map([[xu.SEPOLIA,{chainIdHex:`0x${xu.SEPOLIA.toString(16)}`,chainName:Lu.SEPOLIA,rpcUrls:["https://checkout-api.sandbox.immutable.com/v1/rpc/eth-sepolia"],nativeCurrency:{name:"Sep Eth",symbol:"ETH",decimals:18},blockExplorerUrls:["https://sepolia.etherscan.io/"]}],[xu.IMTBL_ZKEVM_TESTNET,{chainIdHex:`0x${xu.IMTBL_ZKEVM_TESTNET.toString(16)}`,chainName:Lu.IMTBL_ZKEVM_TESTNET,rpcUrls:["https://rpc.testnet.immutable.com"],nativeCurrency:Xu}]]),ef=new Map([[xu.SEPOLIA,{chainIdHex:`0x${xu.SEPOLIA.toString(16)}`,chainName:Lu.SEPOLIA,rpcUrls:["https://checkout-api.dev.immutable.com/v1/rpc/eth-sepolia"],nativeCurrency:{name:"Sep Eth",symbol:"ETH",decimals:18},blockExplorerUrls:["https://sepolia.etherscan.io/"]}],[xu.IMTBL_ZKEVM_DEVNET,{chainIdHex:`0x${xu.IMTBL_ZKEVM_DEVNET.toString(16)}`,chainName:Lu.IMTBL_ZKEVM_DEVNET,rpcUrls:["https://rpc.dev.immutable.com"],nativeCurrency:Xu}]]),tf={[xu.IMTBL_ZKEVM_TESTNET]:{url:"https://explorer.testnet.immutable.com",nativeToken:Yu.get(xu.IMTBL_ZKEVM_TESTNET).nativeCurrency},[xu.IMTBL_ZKEVM_MAINNET]:{url:"https://explorer.mainnet.immutable.com",nativeToken:Qu.get(xu.IMTBL_ZKEVM_MAINNET).nativeCurrency},[xu.SEPOLIA]:{url:"https://eth-sepolia.blockscout.com",nativeToken:Yu.get(xu.SEPOLIA).nativeCurrency},[xu.ETHEREUM]:{url:"https://eth.blockscout.com/",nativeToken:Qu.get(xu.ETHEREUM).nativeCurrency}},nf=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],af=[{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"approve",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}];var rf,sf,of,cf,df,uf,ff,lf,pf;!function(e){e.SUCCESS="SUCCESS",e.FAILED="FAILED",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS"}(rf||(rf={})),function(e){e.NATIVE="NATIVE",e.ERC20="ERC20",e.ERC721="ERC721"}(sf||(sf={})),function(e){e.TRANSACTION="TRANSACTION",e.GAS="GAS"}(of||(of={})),function(e){e.NATIVE="NATIVE",e.ERC20="ERC20"}(cf||(cf={})),function(e){e.ROUTES_FOUND="ROUTES_FOUND",e.NO_ROUTES_FOUND="NO_ROUTES_FOUND",e.NO_ROUTE_OPTIONS="NO_ROUTE_OPTIONS"}(df||(df={})),function(e){e.BRIDGE="BRIDGE",e.SWAP="SWAP",e.ONRAMP="ONRAMP"}(uf||(uf={})),function(e){e.ONRAMP="onramp"}(ff||(ff={})),function(e){e.WEB3_PROVIDER_ERROR="WEB3_PROVIDER_ERROR",e.PROVIDER_ERROR="PROVIDER_ERROR",e.DEFAULT_PROVIDER_ERROR="DEFAULT_PROVIDER_ERROR",e.CONNECT_PROVIDER_ERROR="CONNECT_PROVIDER_ERROR",e.GET_BALANCE_ERROR="GET_BALANCE_ERROR",e.GET_INDEXER_BALANCE_ERROR="GET_INDEXER_BALANCE_ERROR",e.GET_ERC20_BALANCE_ERROR="GET_ERC20_BALANCE_ERROR",e.GET_ERC721_BALANCE_ERROR="GET_ERC721_BALANCE_ERROR",e.GET_NETWORK_INFO_ERROR="GET_NETWORK_INFO_ERROR",e.METAMASK_PROVIDER_ERROR="METAMASK_PROVIDER_ERROR",e.CHAIN_NOT_SUPPORTED_ERROR="CHAIN_NOT_SUPPORTED_ERROR",e.PROVIDER_REQUEST_MISSING_ERROR="PROVIDER_REQUEST_MISSING_ERROR",e.PROVIDER_REQUEST_FAILED_ERROR="PROVIDER_REQUEST_FAILED_ERROR",e.USER_REJECTED_REQUEST_ERROR="USER_REJECTED_REQUEST_ERROR",e.TRANSACTION_FAILED="TRANSACTION_FAILED",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.INVALID_GAS_ESTIMATE_TYPE="INVALID_GAS_ESTIMATE_TYPE",e.UNSUPPORTED_TOKEN_TYPE_ERROR="UNSUPPORTED_TOKEN_TYPE_ERROR",e.UNSUPPORTED_BALANCE_REQUIREMENT_ERROR="UNSUPPORTED_BALANCE_REQUIREMENT_ERROR",e.GET_ORDER_LISTING_ERROR="GET_ORDER_LISTING_ERROR",e.CANCEL_ORDER_LISTING_ERROR="CANCEL_ORDER_LISTING_ERROR",e.PREPARE_ORDER_LISTING_ERROR="PREPARE_ORDER_LISTING_ERROR",e.CREATE_ORDER_LISTING_ERROR="CREATE_ORDER_LISTING_ERROR",e.FULFILL_ORDER_LISTING_ERROR="FULFILL_ORDER_LISTING_ERROR",e.SWITCH_NETWORK_UNSUPPORTED="SWITCH_NETWORK_UNSUPPORTED",e.GET_ERC20_ALLOWANCE_ERROR="GET_ERC20_ALLOWANCE_ERROR",e.GET_ERC721_ALLOWANCE_ERROR="GET_ERC721_ALLOWANCE_ERROR",e.EXECUTE_APPROVAL_TRANSACTION_ERROR="EXECUTE_APPROVAL_TRANSACTION_ERROR",e.EXECUTE_FULFILLMENT_TRANSACTION_ERROR="EXECUTE_FULFILLMENT_TRANSACTION_ERROR",e.SIGN_MESSAGE_ERROR="SIGN_MESSAGE_ERROR",e.BRIDGE_GAS_ESTIMATE_ERROR="BRIDGE_GAS_ESTIMATE_ERROR",e.ORDER_FEE_ERROR="ORDER_FEE_ERROR",e.ITEM_REQUIREMENTS_ERROR="ITEM_REQUIREMENTS_ERROR",e.API_ERROR="API_ERROR",e.ORDER_EXPIRED_ERROR="ORDER_EXPIRED_ERROR",e.WIDGETS_SCRIPT_LOAD_ERROR="WIDGETS_SCRIPT_LOAD_ERROR"}(lf||(lf={}));class hf extends Error{message;type;data;constructor(e,t,n){super(e),this.message=e,this.type=t,this.data=n}}!function(e){e.REJECTED_SWITCH_AFTER_ADDING_NETWORK="REJECTED_SWITCH_AFTER_ADDING_NETWORK"}(pf||(pf={}));const mf=async(e,t)=>{try{return await e()}catch(e){const n=`${e.message}`||"UnknownError",a=t.message?`[${t.type}]:${t.message}. Cause:${n}`:`[${t.type}] Cause:${n}`;if(e instanceof hf)throw new hf(a,t.type,{...t.data,innerErrorType:e.type,...e.data});throw new hf(a,t.type,{...t.data})}};async function bf(e){if(!e.provider?.request)throw new hf("Parsed provider is not a valid Web3Provider",lf.WEB3_PROVIDER_ERROR);const t=await e.provider.request({method:Gu.GET_CHAINID,params:[]});return parseInt(t,16)}async function yf(e,{type:t=Bu.ALL,exclude:n}){const{networkMap:a}=e,r=(await e.remote.getConfig("allowedNetworks")).filter((e=>{const a=t===Bu.ALL,r=!(n||[]).map((e=>e.chainId)).includes(e.chainId);return a&&r})),i=[];return r.forEach((e=>{const t=a.get(e.chainId);t&&i.push({name:t.chainName,chainId:parseInt(t.chainIdHex,16),nativeCurrency:t.nativeCurrency,isSupported:!0})})),{networks:i}}async function gf(e,t){const{networkMap:n}=e;return mf((async()=>{try{const e=await t.getNetwork();if(Array.from(n.keys()).includes(e.chainId)){const t=n.get(e.chainId);return{name:t.chainName,chainId:parseInt(t.chainIdHex,16),nativeCurrency:t.nativeCurrency,isSupported:!0}}return{chainId:e.chainId,name:e.name,isSupported:!1}}catch(e){const a=await bf(t);return{chainId:a,isSupported:Array.from(n.keys()).includes(a)}}}),{type:lf.GET_NETWORK_INFO_ERROR})}async function Ef(e,t,n){const{networkMap:a}=e;if(!(await yf(e,{type:Bu.ALL})).networks.some((e=>e.chainId===n)))throw new hf(`Chain:${n} is not a supported chain`,lf.CHAIN_NOT_SUPPORTED_ERROR);if(t.provider?.isPassport)throw new hf("Switching networks with Passport provider is not supported",lf.SWITCH_NETWORK_UNSUPPORTED);try{await async function(e,t,n){if(t.provider?.request)return await t.provider.request({method:Gu.SWITCH_NETWORK,params:[{chainId:e.get(n)?.chainIdHex}]})}(a,t,n)}catch(e){if(4902!==e.code)throw new hf("User cancelled switch network request",lf.USER_REJECTED_REQUEST_ERROR);try{await async function(e,t,n){if(t.provider?.request){const a=e.get(n),r={chainId:a?.chainIdHex,chainName:a?.chainName,rpcUrls:a?.rpcUrls,nativeCurrency:a?.nativeCurrency,blockExplorerUrls:a?.blockExplorerUrls};return await t.provider.request({method:Gu.ADD_NETWORK,params:[r]})}}(a,t,n)}catch(e){throw new hf("User cancelled add network request",lf.USER_REJECTED_REQUEST_ERROR)}}const r=new O(t.provider);if((await r.getNetwork()).chainId!==n)throw new hf("User cancelled switch network request",lf.USER_REJECTED_REQUEST_ERROR);return{network:await gf(e,r),provider:r}}class wf{isDevelopment;isProduction;configCache;tokensCache;constructor(e){this.isDevelopment=e.isDevelopment,this.isProduction=e.isProduction}static async makeHttpRequest(t){let n;try{n=await e.get(t)}catch(e){throw new hf(`Error fetching from api: ${e.message}`,lf.API_ERROR)}if(200!==n.status)throw new hf(`Error fetching from api: ${n.status} ${n.statusText}`,lf.API_ERROR);return n}getEndpoint=()=>this.isDevelopment?Ju[Hu]:this.isProduction?Ju[se.PRODUCTION]:Ju[se.SANDBOX];async loadConfig(){if(this.configCache)return this.configCache;const e=await wf.makeHttpRequest(`${this.getEndpoint()}/v1/config`);return this.configCache=e.data,this.configCache}async loadConfigTokens(){if(this.tokensCache)return this.tokensCache;const e=await wf.makeHttpRequest(`${this.getEndpoint()}/v1/config/tokens`);return this.tokensCache=e.data,this.tokensCache}async getConfig(e){const t=await this.loadConfig();if(t)return e?t[e]:t}async getTokensConfig(e){const t=await this.loadConfigTokens();return t&&t[e]?t[e]??[]:{}}}class Tf extends Error{message;constructor(e){super(e),this.message=e}}const Rf=e=>e.isProduction?xu.ETHEREUM:xu.SEPOLIA,_f=e=>e.isDevelopment?xu.IMTBL_ZKEVM_DEVNET:e.isProduction?xu.IMTBL_ZKEVM_MAINNET:xu.IMTBL_ZKEVM_TESTNET;class vf{isDevelopment=!1;isProduction;isOnRampEnabled;isSwapEnabled;isBridgeEnabled;remote;environment;networkMap;constructor(e){if(!Object.values(se).includes(e.baseConfig.environment))throw new Tf("Invalid checkout configuration of environment");var t;this.environment=e.baseConfig.environment,this.isProduction=!this.isDevelopment&&this.environment===se.PRODUCTION,this.isOnRampEnabled=e.onRamp?.enable??true,this.isSwapEnabled=e.swap?.enable??true,this.isBridgeEnabled=e.bridge?.enable??true,this.networkMap=(t=this.isProduction,this.isDevelopment?ef:t?Qu:Yu),this.remote=new wf({isDevelopment:this.isDevelopment,isProduction:this.isProduction})}}const Af=async(e,{type:t=Vu.ALL,chainId:n,exclude:a})=>{let r,i=[];switch(t){case Vu.SWAP:i=(await e.remote.getConfig("dex")).tokens||[];break;case Vu.ONRAMP:r=await e.remote.getConfig("onramp"),r||(i=[]),i=r[Uu.TRANSAK]?.tokens||[];break;case Vu.BRIDGE:case Vu.ALL:default:i=(await e.remote.getTokensConfig(n||Rf(e))).allowed}return a&&0!==a?.length?{tokens:i.filter((e=>!a.map((e=>e.address)).includes(e.address||"")))}:{tokens:i}};class Cf{url;nativeToken;ttl;chainId;cacheMap;static async makeHttpRequest(t){return e.get(t)}setCache(e,t){this.cacheMap[e]={data:t,ttl:(new Date).getTime()+1e3*this.ttl}}getCache(e){const t=this.cacheMap[e];return!t||t.ttl<=(new Date).getTime()?null:t.data}constructor(e){this.chainId=e.chainId,this.url=tf[this.chainId].url;const t=tf[this.chainId].nativeToken;this.nativeToken={address:t.address??"",decimals:t.decimals.toString(),name:t.name,symbol:t.symbol},this.cacheMap={},this.ttl=void 0!==e.ttl?e.ttl:60}static isChainSupported=e=>Boolean(tf[e]);static isBlockscoutError=e=>"code"in e;async getTokensByWalletAddress(t){try{let e=`${this.url}/api/v2/addresses/${t.walletAddress}/tokens?type=${t.tokenType}`;t.nextPage&&(e+=`&${new URLSearchParams(t.nextPage)}`);const n=this.getCache(e);if(n)return Promise.resolve(n);const a=await Cf.makeHttpRequest(e);if(a.status>=400)return Promise.reject({code:a.status,message:a.statusText});const r={items:a.data?.items?.filter((e=>e.token.address&&e.token.address!==this.nativeToken.address)),next_page_params:a.data?.next_page_params};return this.setCache(e,r),Promise.resolve(r)}catch(t){let n=a.InternalServerError,r="InternalServerError";return e.isAxiosError(t)&&(n=t.response?.status||n,r=t.message),Promise.reject({code:n,message:r})}}async getNativeTokenByWalletAddress(t){try{const e=`${this.url}/api/v2/addresses/${t.walletAddress}`,n=this.getCache(e);if(n)return Promise.resolve(n);const a=await Cf.makeHttpRequest(e);if(a.status>=400)return Promise.reject({code:a.status,message:a.statusText});const r={token:this.nativeToken,value:a.data.coin_balance};return this.setCache(e,r),Promise.resolve(r)}catch(t){let n=a.InternalServerError,r="InternalServerError";return e.isAxiosError(t)&&(n=t.response?.status||n,r=t.message),Promise.reject({code:n,message:r})}}}var If;!function(e){e.ERC20="ERC-20"}(If||(If={}));const Of=(e,t,n)=>{e.isProduction||console.info(t,n)},Sf=async(e,t,n)=>{const a=performance.now(),r=await n,i=performance.now();return Of(e,t,(i-a)/1e3),r},Nf=async(e,t,n)=>await mf((async()=>{const a=await gf(e,t);if(!a.isSupported)throw new hf(`Chain:${a.chainId} is not a supported chain`,lf.CHAIN_NOT_SUPPORTED_ERROR,{chainName:a.name});const r=await t.getBalance(n);return{balance:r,formattedBalance:D.formatUnits(r,a.nativeCurrency.decimals),token:a.nativeCurrency}}),{type:lf.GET_BALANCE_ERROR});async function kf(e,t,n){return await mf((async()=>{const a=new x(n,JSON.stringify(nf),e);return Promise.all([a.name(),a.symbol(),a.balanceOf(t),a.decimals()]).then((([e,t,a,r])=>({balance:a,formattedBalance:D.formatUnits(a,r),token:{name:e,symbol:t,decimals:r,address:n}})))}),{type:lf.GET_ERC20_BALANCE_ERROR})}const Mf=new Map,Pf=async(e,t,n,r)=>{r||=await t.getSigner().getChainId();const{tokens:i}=await Af(e,{type:Vu.ALL,chainId:r});let s=!1;try{s=(await e.remote.getTokensConfig(r)).blockscout||s}catch(e){console.error(e)}if(s&&Cf.isChainSupported(r)){const t=Rf(e)===r;return await Sf(e,`Time to fetch balances using blockscout for ${r}`,(async(e,t,n)=>{const r=n.length>0,i=Object.assign({},...n.map((e=>({[e.address||""]:e}))));let s=Mf.get(t);s||(s=new Cf({chainId:t}),Mf.set(t,s));const o=[],c=If.ERC20;await Promise.all([(async t=>{let n;try{do{n=await t.getTokensByWalletAddress({walletAddress:e,tokenType:c,nextPage:n?.next_page_params}),o.push(...n.items)}while(n.next_page_params)}catch(e){if(e?.code!==a.NotFound)throw new hf(e.message||"InternalServerError | getTokensByWalletAddress",lf.GET_INDEXER_BALANCE_ERROR,e)}})(s),(async t=>{try{const n=await t.getNativeTokenByWalletAddress({walletAddress:e});o.push(n)}catch(e){if(e?.code!==a.NotFound)throw new hf(e.message||"InternalServerError | getNativeTokenByWalletAddress",lf.GET_INDEXER_BALANCE_ERROR,e)}})(s)]);const d=[];return o.forEach((e=>{if(r&&!i[e.token.address])return;const t=e.token||{},n=S.from(e.value);let a=parseInt(t.decimals,10);Number.isNaN(a)&&(a=$u);const s={...t,decimals:a},o=D.formatUnits(e.value,s.decimals);d.push({balance:n,formattedBalance:o,token:s})})),{balances:d}})(n,r,t?i:[]))}return await Sf(e,`Time to fetch balances using RPC for ${r}`,(async(e,t,n,a)=>{const r=[];return a.forEach((a=>{a.address&&a.address!==Wu?r.push(kf(t,n,a.address)):r.push(Nf(e,t,n))})),{balances:(await Promise.allSettled(r)).filter((e=>"fulfilled"===e.status)).map((e=>e.value))}})(e,t,n,i))};async function Df(e,t){let n=null;switch(e){case ju.PASSPORT:if(!t)throw console.error("WalletProviderName was PASSPORT but the passport instance was not provided to the Checkout constructor"),new hf("Passport not provided",lf.DEFAULT_PROVIDER_ERROR);n=new O(t.connectEvm());break;case ju.METAMASK:n=await async function(){const e=await mf((async()=>await H()),{type:lf.METAMASK_PROVIDER_ERROR});if(!e||!e.request)throw new hf("No MetaMask provider installed.",lf.METAMASK_PROVIDER_ERROR);return new O(e)}();break;default:throw console.error("The WalletProviderName that was provided is not supported"),new hf("Provider not supported",lf.DEFAULT_PROVIDER_ERROR)}return{provider:n,walletProviderName:e}}function xf(e){return!(!e||!e.provider?.request||"function"!=typeof e.provider.request)}async function Lf(e,t,n){return mf((async()=>{if(t.provider?.isPassport)return t;if(!xf(t))throw new hf("Parsed provider is not a valid Web3Provider",lf.WEB3_PROVIDER_ERROR);const a={...zu,...n},r=await bf(t);let i=t.network?.chainId;try{i=t.network?.chainId,i||(i=(await t.getNetwork()).chainId)}catch(e){throw new hf("Unable to detect the web3Provider network",lf.WEB3_PROVIDER_ERROR)}if(i!==r&&!a.allowMistmatchedChainId)throw new hf("Your wallet has changed network, please switch to a supported network",lf.WEB3_PROVIDER_ERROR);if(!(await yf(e,{type:Bu.ALL})).networks.some((e=>e.chainId===r))&&!a.allowUnsupportedProvider)throw new hf("Your wallet is connected to an unsupported network, please switch to a supported network",lf.WEB3_PROVIDER_ERROR);return t}),{type:lf.WEB3_PROVIDER_ERROR})}const Uf=e=>(e=>!!e.maxFeePerGas&&!!e.maxPriorityFeePerGas)(e)?S.from(e.maxFeePerGas).add(S.from(e.maxPriorityFeePerGas)):e.gasPrice?S.from(e.gasPrice):null,Ff=async e=>{const t=await e.getFeeData(),n=Uf(t);if(n)return n.mul(14e4)};async function Bf(e,t,n,a){const r=n.get(e),i=n.get(t);if(!r)throw new hf(`Chain:${e} is not a supported chain`,lf.CHAIN_NOT_SUPPORTED_ERROR);if(!i)throw new hf(`Chain:${t} is not a supported chain`,lf.CHAIN_NOT_SUPPORTED_ERROR);let s=qi;a.isDevelopment&&(s=Gi),a.isProduction&&(s=ji);const o=new sd({baseConfig:new oe({environment:a.environment}),bridgeInstance:s,rootProvider:r,childProvider:i});return new td(o)}async function Vf(e,t){const n=await t.remote.getConfig("dex");return new Ru({chainId:e,baseConfig:new oe({environment:t.environment}),overrides:n?.overrides})}function Gf(e){return new ni({baseConfig:{environment:e.environment}})}function qf(e){return new ft({baseConfig:{environment:e.environment}})}const jf="0x0000000000000000000000000000000000000001",zf=18;async function Hf(e,t,n){const a=Rf(t),r=_f(t),i=await t.remote.getConfig("gasEstimateTokens"),{fromAddress:s}=i[a].bridgeToL2Addresses,o=e.get(a);if(!o)throw new Error(`Missing JsonRpcProvider for chain id: ${a}`);try{let i={};const c=async()=>{i=await async function(e,t){const n=await Ff(e);return n&&t?{estimatedAmount:n.add(n)}:{estimatedAmount:n}}(o,n),i.token=t.networkMap.get(a)?.nativeCurrency};let d={bridgeFee:{},bridgeable:!1};const u=async()=>{const n=await Bf(a,r,e,t);d=await async function(e,t){const n=await e.getFee({token:t});return{bridgeFee:{estimatedAmount:n.feeAmount},bridgeable:n.bridgeable}}(n,s)};return await Promise.all([c(),u()]),{gasEstimateType:Fu.BRIDGE_TO_L2,gasFee:i,bridgeFee:{estimatedAmount:d.bridgeFee?.estimatedAmount,token:d.bridgeFee?.token},bridgeable:d.bridgeable}}catch{return{gasEstimateType:Fu.BRIDGE_TO_L2,gasFee:{},bridgeFee:{},bridgeable:!1}}}async function Wf(e,t,n){switch(e.gasEstimateType){case Fu.BRIDGE_TO_L2:return await Hf(t,n,e.isSpendingCapApprovalRequired);case Fu.SWAP:return await async function(e){const t=_f(e),n=await e.remote.getConfig("gasEstimateTokens"),{inAddress:a,outAddress:r}=n[t].swapAddresses;try{const n=await Vf(t,e),{swap:i}=await n.getUnsignedSwapTxFromAmountIn(jf,a,r,S.from(D.parseUnits("1",zf)));if(null===i.gasFeeEstimate)return{gasEstimateType:Fu.SWAP,gasFee:{}};let s;return i.gasFeeEstimate.value&&(s=S.from(i.gasFeeEstimate.value)),{gasEstimateType:Fu.SWAP,gasFee:{estimatedAmount:s,token:{address:i.gasFeeEstimate?.token.address,symbol:i.gasFeeEstimate?.token.symbol??"",name:i.gasFeeEstimate?.token.name??"",decimals:i.gasFeeEstimate?.token.decimals??zf}}}}catch{return{gasEstimateType:Fu.SWAP,gasFee:{}}}}(n);default:throw new hf("Invalid type provided for gasEstimateType",lf.INVALID_GAS_ESTIMATE_TYPE)}}const $f=e=>(e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sf.ERC721)return void n.push(e);const{contractAddress:r,spenderAddress:i,id:s}=e,o=`${r}${i}${s}`;t.get(o)||t.set(o,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sf.ERC20)return void n.push(e);const{contractAddress:r,spenderAddress:i,amount:s}=e,o=`${r}${i}`,c=t.get(o);c&&c.type===sf.ERC20?c.amount=S.from(c.amount).add(s):t.set(o,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sf.NATIVE)return void n.push(e);const{amount:r}=e,i=t.get(a);i&&i.type===sf.NATIVE?i.amount=S.from(i.amount).add(r):t.set(a,{...e})})),n.concat(Array.from(t.values()))})(e))),Xf=async(e,t,n,a)=>{try{const r=new x(n,JSON.stringify(nf),e);return await r.allowance(t,a)}catch(e){throw new hf("Failed to get the allowance for ERC20",lf.GET_ERC20_ALLOWANCE_ERROR,{contractAddress:n})}},Kf=async(e,t,n,a,r)=>{try{const i=new x(n,JSON.stringify(nf),e),s=await i.populateTransaction.approve(a,r);return s&&(s.from=t),s}catch{throw new hf("Failed to get the approval transaction for ERC20",lf.GET_ERC20_ALLOWANCE_ERROR,{contractAddress:n})}},Jf=async(e,t,n,a)=>{try{const r=new x(n,JSON.stringify(af),e);return await r.isApprovedForAll(t,a)}catch(e){throw new hf("Failed to check approval for all ERC721s of collection",lf.GET_ERC721_ALLOWANCE_ERROR,{ownerAddress:t,contractAddress:n,spenderAddress:a})}},Zf=async(e,t,n,a,r)=>{try{const i=new x(n,JSON.stringify(af),e),s=await i.populateTransaction.approve(a,r);return s&&(s.from=t),s}catch(e){throw new hf("Failed to get the approval transaction for ERC721",lf.GET_ERC721_ALLOWANCE_ERROR,{id:r.toString(),contractAddress:n,spenderAddress:a,ownerAddress:t})}},Qf=async(e,t,n)=>{try{const a=new x(t,JSON.stringify(af),e);return await a.getApproved(n)}catch(e){throw new hf("Failed to get approved address for ERC721",lf.GET_ERC721_ALLOWANCE_ERROR,{id:n.toString(),contractAddress:t})}},Yf=(e,t)=>{const n=parseInt(e,10);if(Number.isNaN(n))throw new hf("Invalid ERC721 ID",lf.GET_ERC721_ALLOWANCE_ERROR,{id:e,contractAddress:t});return n},el=async(e,t,n)=>{let a=!0;const r=[],i=new Map,s=new Map,o=new Map,c=new Map,d=await(async(e,t,n)=>{const a=new Map,r=new Map;for(const i of t){if(i.type!==sf.ERC721)continue;const{contractAddress:t,spenderAddress:s}=i,o=`${t}-${s}`;a.set(o,!1),r.has(o)||r.set(o,Jf(e,n,t,s))}const i=await Promise.all(r.values()),s=Array.from(r.keys());return i.forEach(((e,t)=>{a.set(s[t],e)})),a})(e,n,t);for(const t of n){if(t.type!==sf.ERC721)continue;const{contractAddress:n,id:a,spenderAddress:o}=t,c=`${n}-${o}`;if(d.get(c)){r.push({sufficient:!0,itemRequirement:t});continue}const u=`${n}-${a}`,f=Yf(a,n);i.set(u,t),s.set(u,Qf(e,n,f))}const u=await Promise.all(s.values()),f=Array.from(s.keys());for(let n=0;n<u.length;n++){const s=i.get(f[n]);if(!s||s.type!==sf.ERC721)continue;if(u[n]===s.spenderAddress){r.push({sufficient:!0,itemRequirement:s});continue}a=!1;const{contractAddress:d,id:l,spenderAddress:p}=s,h=`${d}-${l}`,m=Yf(l,d);o.set(h,{type:sf.ERC721,sufficient:!1,itemRequirement:s,approvalTransaction:void 0}),c.set(h,Zf(e,t,d,p,m))}const l=await Promise.all(c.values()),p=Array.from(c.keys());return l.forEach(((e,t)=>{const n=o.get(p[t]);n&&(n.sufficient||(n.approvalTransaction=e))})),{sufficient:a,allowances:r.concat(Array.from(o.values()))}},tl=e=>(e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sf.ERC721)return void n.push(e);const{contractAddress:r,id:i}=e,s=`${r}${i}`;t.get(s)||t.set(s,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sf.ERC20)return void n.push(e);const{contractAddress:r,amount:i}=e,s=`${r}`,o=t.get(s);o&&o.type===sf.ERC20?o.amount=S.from(o.amount).add(i):t.set(s,{...e})})),n.concat(Array.from(t.values()))})((e=>{const t=new Map,n=[];return e.forEach((e=>{const{type:a}=e;if(a!==sf.NATIVE)return void n.push(e);const{amount:r}=e,i=t.get(a);i&&i.type===sf.NATIVE?i.amount=S.from(i.amount).add(r):t.set(a,{...e})})),n.concat(Array.from(t.values()))})(e))),nl=async(e,t,n,a)=>{try{const r=new Map;(e=>e.map((e=>e.type===sf.NATIVE?{address:Wu}:{address:e.contractAddress})))(a).forEach((e=>r.set((e.address||"").toLocaleLowerCase(),e)));const{balances:i}=await Pf(e,t,n);return i.filter((e=>r.get((e.token.address||"").toLocaleLowerCase())))}catch(e){throw new hf("Failed to get balances",lf.GET_BALANCE_ERROR)}},al=async(e,t,n,a)=>{const r=tl(a),i=[],s=[];if(r.forEach((e=>{switch(e.type){case sf.ERC20:case sf.NATIVE:i.push(e);break;case sf.ERC721:s.push(e)}})),0===s.length&&0===i.length)throw new hf("Unsupported item requirement balance check",lf.UNSUPPORTED_BALANCE_REQUIREMENT_ERROR);const o=[];i.length>0&&o.push(nl(e,t,n,r)),s.length>0&&o.push((async(e,t,n)=>{const a=[],r=new Map,i=new Map;n.forEach((t=>{if(t.type!==sf.ERC721)return;const n=new x(t.contractAddress,JSON.stringify(af),e);r.set(t.contractAddress,t),i.set(t.contractAddress,n.ownerOf(t.id))}));try{const e=await Promise.all(i.values()),n=Array.from(i.keys());e.forEach(((e,i)=>{const s=r.get(n[i]);let o=0;s&&t===e&&(o=1),a.push({type:sf.ERC721,balance:S.from(o),formattedBalance:o.toString(),contractAddress:s.contractAddress,id:s.id})}))}catch(e){throw new hf("Failed to get ERC721 balances",lf.GET_ERC721_BALANCE_ERROR)}return a})(t,n,r));const c=await Promise.all(o),d=[];if(i.length>0&&c.length>0){const e=c.shift();e&&i.forEach((t=>{d.push(((e,t)=>{let n;e.type===sf.ERC20?n=t.find((t=>t.token?.address===e.contractAddress)):e.type===sf.NATIVE&&(n=t.find((e=>""===e.token?.address||e.token?.address===Wu)));const a=e.amount,r=a.isNegative()||a.isZero()||(n?.balance.gte(a)??!1),i=a.sub(n?.balance??S.from(0));let s="",o="",c=$u;n&&(c=n.token?.decimals??$u,s=n.token.name,o=n.token.symbol);let d=n;return e.type===sf.NATIVE?(d||(d={type:sf.NATIVE,balance:S.from(0),formattedBalance:"0",token:{name:s,symbol:o,decimals:$u,address:Wu}}),{sufficient:r,type:sf.NATIVE,delta:{balance:i,formattedBalance:D.formatUnits(i,c)},current:{...d,type:sf.NATIVE},required:{...d,type:sf.NATIVE,balance:S.from(e.amount),formattedBalance:D.formatUnits(e.amount,c)}}):(d||(d={type:e.type,balance:S.from(0),formattedBalance:"0",token:{name:s,symbol:o,address:e.contractAddress,decimals:c}}),{sufficient:r,type:sf.ERC20,delta:{balance:i,formattedBalance:D.formatUnits(i,c)},current:d,required:{...d,balance:S.from(e.amount),formattedBalance:D.formatUnits(e.amount,c)}})})(t,e))}))}if(s.length>0&&c.length>0){const e=c.shift();e&&s.forEach((t=>{d.push(((e,t)=>{const n=S.from(1),a=t.find((t=>{const n=t;return n.contractAddress===e.contractAddress&&n.id===e.id})),r=n.isNegative()||n.isZero()||(a?.balance.gte(n)??!1),i=n.sub(a?.balance??S.from(0));let s=a;return s||(s={type:sf.ERC721,balance:S.from(0),formattedBalance:"0",contractAddress:e.contractAddress,id:e.id}),{sufficient:r,type:sf.ERC721,delta:{balance:i,formattedBalance:i.toString()},current:s,required:{...s,balance:S.from(1),formattedBalance:"1"}}})(t,e))}))}return{sufficient:void 0===d.find((e=>!1===e.sufficient)),balanceRequirements:d}},rl=async(e,t)=>{try{return await e.estimateGas(t)}catch(e){throw new hf("Failed to estimate gas for transaction",lf.UNPREDICTABLE_GAS_LIMIT)}},il=async(e,t,n)=>{const a=[];let r=S.from(0);for(const n of t)void 0!==n.approvalTransaction&&a.push(rl(e,n.approvalTransaction));if(n.type===of.TRANSACTION)a.push(rl(e,n.transaction));else{const t=await e.getFeeData(),a=Uf(t);if(null!==a){const e=a?.mul(n.gasToken.limit);e&&(r=r.add(e))}}return(await Promise.all(a)).forEach((e=>{r=r.add(e)})),r.eq(0)?null:((e,t)=>t.type===of.TRANSACTION||t.gasToken.type===cf.NATIVE?{type:sf.NATIVE,amount:e}:{type:sf.ERC20,amount:e,contractAddress:t.gasToken.contractAddress,spenderAddress:""})(r,n)},sl=(t,n)=>({checkDexAvailability:async()=>{let a;try{a=await e.post(`${t?Ku[Hu]:n?Ku[se.PRODUCTION]:Ku[se.SANDBOX]}/v1/availability/checkout/swap`)}catch(e){a=e.response}if(403===a.status)return!1;if(204===a.status)return!0;throw new hf(`Error fetching from api: ${a.status} ${a.statusText}`,lf.API_ERROR)}}),ol=async()=>!0,cl=async e=>{const t=sl(e.isDevelopment,e.isProduction);try{return await t.checkDexAvailability()}catch{return!1}};async function dl(e,t){if(e.isProduction&&t?.has(xu.ETHEREUM))return t;if(t?.has(xu.SEPOLIA))return t;const n=new Map;return(await yf(e,{type:Bu.ALL})).networks.forEach((t=>{const a=e.networkMap.get(t.chainId)?.rpcUrls[0],r=new I(a);n.set(t.chainId,r)})),n}const ul=async(e,t,n,a,r)=>{const i=new Map;try{const s=await Vf(t,e),o=[],c=[];for(const e of r)e!==a.address&&(o.push(s.getUnsignedSwapTxFromAmountOut(n,e,a.address,a.amount,1)),c.push(e));return(await Sf(e,"Time to resolve swap quotes from the dex",Promise.allSettled(o))).forEach(((e,t)=>{if("rejected"===e.status)return;const n=c[t];i.set(n,{quote:e.value.quote,approval:e.value.approval?.gasFeeEstimate??null,swap:e.value.swap.gasFeeEstimate})})),i}catch{return i}},fl=(e,t,n)=>{let a,r=S.from(0),i="0";e&&(r=e.value,i=D.formatUnits(e.value,e.token.decimals),a={name:e.token.name??"",symbol:e.token.symbol??"",address:e.token.address,decimals:e.token.decimals});let s,o=S.from(0),c="0";t&&(o=t.value,c=D.formatUnits(t.value,t.token.decimals),s={name:t.token.name??"",symbol:t.token.symbol??"",address:t.token.address,decimals:t.token.decimals});const d=[];for(const e of n)d.push({amount:e.amount.value,formattedAmount:D.formatUnits(e.amount.value,e.amount.token.decimals),token:{name:e.amount.token.name??"",symbol:e.amount.token.symbol??"",address:e.amount.token.address,decimals:e.amount.token.decimals}});return{approvalGasFees:{amount:r,formattedAmount:i,token:a},swapGasFees:{amount:o,formattedAmount:c,token:s},swapFees:d}},ll=(e,t,n,a)=>{const r=n.token.address;let i=sf.ERC20;return r===Wu&&(i=sf.NATIVE),{type:uf.SWAP,chainId:e,fundingItem:{type:i,fundsRequired:{amount:t,formattedAmount:D.formatUnits(t,n.token.decimals)},userBalance:{balance:n.balance,formattedBalance:n.formattedBalance},token:n.token},fees:a}},pl=(e,t)=>{if(!t)return{sufficient:!0,approvalGasFee:S.from(0),approvalGasTokenAddress:""};const n=t.value,a=t.token.address;if(0===e.length)return{sufficient:!1,approvalGasFee:n,approvalGasTokenAddress:a};const r=e.find((e=>e.token.address===a));return r?r.balance.lt(n)?{sufficient:!1,approvalGasFee:n,approvalGasTokenAddress:a}:{sufficient:!0,approvalGasFee:n,approvalGasTokenAddress:a}:{sufficient:!1,approvalGasFee:n,approvalGasTokenAddress:a}},hl=(e,t,n,a,r)=>{const i=new Map;if(""!==t.approvalGasTokenAddress&&i.set(t.approvalGasTokenAddress,t.approvalGasFee),n){const e=i.get(n.token.address);e?i.set(n.token.address,e.add(n.value)):i.set(n.token.address,n.value)}if(r){const e=i.get(r.address);e?i.set(r.address,e.add(r.amount)):i.set(r.address,r.amount)}for(const e of a){const t=i.get(e.amount.token.address);t?i.set(e.amount.token.address,t.add(e.amount.value)):i.set(e.amount.token.address,e.amount.value)}for(const[t,n]of i.entries()){if(n===S.from(0))continue;const a=e.find((e=>e.token.address===t));if(!a)return!1;if(a.balance.lt(n))return!1}return!0},ml=(e,t,n,a,r,i)=>{let s=S.from(0),o="",c=!1;if(t.balanceRequirements.forEach((t=>{t.type!==sf.NATIVE&&t.type!==sf.ERC20||t.required.token.address===n&&(o=t.required.token.address,c=!0,s=e.sub(t.required.balance))})),!c)return!0;r.approvalGasTokenAddress===o&&(s=s.sub(r.approvalGasFee));for(const e of i)e.amount.token.address===o&&(s=s.sub(e.amount.value));return s.gte(a)},bl=async(e,t,n,a,r,i,s)=>{const o=[];if(!t.swap)return o;if(0===i.length)return o;const c=(e=>{let t="",n=S.from(0);switch(e.type){case sf.ERC20:t=e.required.token.address??"",n=e.delta.balance;break;case sf.NATIVE:t=Wu,n=e.delta.balance}return{address:t,amount:n}})(a);if(""===c.address)return o;const d=_f(e),u=r.get(d);if(!u)return o;const f=u.balances;if(0===f.length)return o;const l=await ul(e,_f(e),n,c,i),p=Array.from(l.keys());for(const e of p){const t=l.get(e);if(!t)continue;const n=f.find((t=>t.token.address===e));if(!n)continue;const a=t.quote.amount;if(n.balance.lt(a.value))continue;const r=pl(f,t.approval);if(!r.sufficient)continue;if(!hl(f,r,t.swap,t.quote.fees,{amount:a.value,address:e}))continue;if(!ml(n.balance,s,e,a.value,r,t.quote.fees))continue;const i=fl(t.approval,t.swap,t.quote.fees);o.push(ll(d,a.value,n,i))}return o},yl=(e,t)=>t&&t.success?e.filter((e=>"address"in e?t.balances.find((t=>t.token.address===e.address&&t.balance.gt(0))):t.balances.find((e=>!("address"in e.token)&&e.balance.gt(0))))):[],gl=async(e,t)=>{if(t.onRamp){const t=await e.remote.getConfig("onramp"),n={};return Object.entries(t).forEach((([e,t])=>{n[e]=t.tokens??[]})),n}return{}},El=async(e,t,n)=>{if(n.bridge){const n=(await e.remote.getConfig("bridge"))?.tokens??[],a=t.get(Rf(e));return yl(n,a)}return[]},wl=async(e,t,n)=>{const a={};return a.swap=await(async(e,t,n)=>{if(n.swap){const n=(await e.remote.getConfig("dex"))?.tokens??[],a=t.get(_f(e));return yl(n,a)}return[]})(e,t,n),a.bridge=await El(e,t,n),a.onRamp=await gl(e,n),a},Tl="0x0000000000000000000000000000000000000001",Rl=async(e,t)=>(await t.remote.getConfig("imxAddressMapping"))[e]??"",_l=async(e,t)=>{if(""===t)return{l1address:"",l2address:t};if(t===Wu)return{l1address:await Rl(Rf(e),e),l2address:Wu};const n=(a=_f(e))===xu.IMTBL_ZKEVM_MAINNET?"imtbl-zkevm-mainnet":a===xu.IMTBL_ZKEVM_TESTNET?"imtbl-zkevm-testnet":a===xu.IMTBL_ZKEVM_DEVNET?"imtbl-zkevm-devent":"";var a;if(""===n)return{l1address:"",l2address:t};const r=qf(e),i=(await r.getToken({chainName:n,contractAddress:t})).result.root_contract_address;return null===i?{l1address:"",l2address:t}:{l1address:i,l2address:t}},vl=async(e,t,n,a,r,i)=>{if(r===Tl)return S.from(0);const s=Rf(e),o=_f(e);return await(async(e,t,n,a,r,i,s,o)=>{try{const c=await Bf(r,i,t,e),{unsignedTx:d}=await c.getUnsignedApproveDepositBridgeTx({depositorAddress:a,token:s,depositAmount:o});return null===d?S.from(0):await n.estimateGas(d)}catch(e){throw new hf("Error occurred while attempting ot estimate gas for approval transaction",lf.BRIDGE_GAS_ESTIMATE_ERROR,{message:e.message})}})(e,t,n,a,s,o,r,i)},Al=(e,t)=>(e=>{for(const t of e.balances)if(!t.token.address||""===t.token.address)return t.balance;return S.from(0)})(e).gte(t),Cl=async(e,t,n)=>{let a=n.get(uf.BRIDGE);return a||(a=await(async(e,t)=>{try{const n=await Wf({gasEstimateType:Fu.BRIDGE_TO_L2,isSpendingCapApprovalRequired:!1},t,e),a=n.gasFee.estimatedAmount,r=n.bridgeFee.estimatedAmount;let i=S.from(0);return a&&(i=i.add(a)),r&&(i=i.add(r)),{type:uf.BRIDGE,gasFee:{estimatedAmount:a??S.from(0),token:n.gasFee.token},bridgeFee:{estimatedAmount:r??S.from(0),token:n.bridgeFee.token},totalFees:i}}catch(e){throw new hf("Error estimating gas for bridge",lf.BRIDGE_GAS_ESTIMATE_ERROR,{message:e.message})}})(e,t),n.set(uf.BRIDGE,a),a)},Il=(e,t,n)=>{const a=n.token?.decimals??$u;return{approvalGasFees:{amount:e,formattedAmount:D.formatUnits(e,$u),token:t.token},bridgeGasFees:{amount:t.estimatedAmount,formattedAmount:D.formatUnits(t.estimatedAmount,$u),token:t.token},bridgeFees:[{amount:n.estimatedAmount,formattedAmount:D.formatUnits(n.estimatedAmount,a),token:n.token}]}},Ol=(e,t,n,a,r)=>({type:uf.BRIDGE,chainId:e,fundingItem:{type:a,fundsRequired:{amount:n.amount,formattedAmount:n.formattedAmount},userBalance:{balance:t.balance,formattedBalance:t.formattedBalance},token:{name:t.token.name,symbol:t.token.symbol,address:t.token.address,decimals:t.token.decimals}},fees:r}),Sl=async(e,t,n,a,r,i,s)=>{if(!a.bridge)return;if(void 0===r.l2address||""===r.l2address)return;const o=Rf(e),c=i.get(o),d=t.get(o);if(!d)throw new hf("No L1 provider available",lf.PROVIDER_ERROR,{chainId:o.toString()});if(void 0===c||!1===c.success)return;const u=await El(e,i,a);if(0===u.length)return;const f=await Cl(e,t,s);if(!Al(c,f.totalFees))return;const l=await _l(e,r.l2address),{l1address:p}=l;if(""===p)return;if(p===Tl){if(!u.find((e=>!("address"in e))))return}else if(!u.find((e=>e.address===p)))return;const h=await vl(e,t,d,n,p,r.amount);let m=f.bridgeFee.estimatedAmount;if(p===Tl){const e=c.balances.find((e=>{return!(t=e.token.address)||""===t;var t}));if(f.gasFee.estimatedAmount&&(m=m.add(f.gasFee.estimatedAmount)),!Al(c,m))return;if(e&&e.balance.gte(r.amount.add(m))){const t=Il(h,f.gasFee,f.bridgeFee);return Ol(o,e,r,sf.NATIVE,t)}return}if(m.add(h).add(f.gasFee.estimatedAmount),!Al(c,m))return;const b=c.balances.find((e=>e.token.address===p));if(b&&b.balance.gte(r.amount)){const e=Il(h,f.gasFee,f.bridgeFee);return Ol(o,b,r,sf.ERC20,e)}},Nl=(e,t)=>{let n=S.from(0);return e.quote.fees.forEach((e=>{e.amount.token.address===t&&(n=n.add(e.amount.value))})),e.approval&&e.approval.token.address===t&&(n=n.add(e.approval.value)),n},kl=(e,t)=>{for(const n of e.balanceRequirements)if((n.type===sf.NATIVE||n.type===sf.ERC20)&&n.required.token.address===t)return n.required.balance;return S.from(0)},Ml=(e,t,n)=>{const a=n?.balance??S.from(0);if(a.gte(e.add(t)))return S.from(0);if(a.lte(0))return e.add(t);const r=a.sub(t);return r.gte(0)?e.sub(r):e.add(t).sub(a)},Pl=async(e,t,n,a,r,i,s,o,c,d)=>{const{l1balances:u,l2balances:f}=((e,t)=>{const n={l1balances:[],l2balances:[]},a=t.get(Rf(e)),r=t.get(_f(e));return a?void 0!==a.error?n:a.success&&r?void 0!==r.error?n:r.success?{l1balances:a.balances,l2balances:r.balances}:n:n:n})(e,s),l=a.required.token.address;if(((e,t,n,a,r,i)=>0===e.length||0===t.length||0===n.length||0===a.length||!r.bridge||!r.swap||void 0===i||""===i)(o,c,u,f,n,l))return[];const p=await(async(e,t)=>{const n=t.map((t=>_l(e,t.address??"")));return await Promise.all(n)})(e,c),h=((e,t,n,a)=>{const r=[];for(const i of a){if(""===i.l1address)continue;if(""===i.l2address)continue;if(!t.includes(i.l1address))continue;if(i.l2address===e)continue;const a=n.find((e=>e.address===i.l2address));a&&r.push(a)}return r})(l,o,c,p);if(0===h.length)return[];const m=await(async(e,t,n,a,r)=>{const i=[];for(const e of r)e.address&&i.push(e.address);return await ul(e,_f(e),t,{address:n,amount:a.delta.balance},i)})(e,r,l,a,h),b=((e,t,n,a,r)=>{const i=[];for(const[s,o]of e){const e=n.find((e=>e.token.address===s)),c=a.find((e=>e.l2address===s));if(!c)continue;const{l1address:d,l2address:u}=c;if(!d)continue;const f=t.find((e=>void 0===e.token.address&&d===Tl||e.token.address===d));if(!f)continue;const l=o.quote.amountWithMaxSlippage.value,p=Nl(o,s),h=l.add(p),m=kl(r,s),b=Ml(h,m,e);b.lte(0)||b.gte(f.balance)||i.push({amount:b,formattedAmount:D.formatUnits(b,f.token.decimals),l2address:u})}return i})(m,u,f,p,d);if(0===b.length)return[];const y=new Map,g=new Map,E=[];for(const a of b)a.l2address&&(y.set(a.l2address,Sl(e,t,r,n,a,s,i)),g.set(a.l2address,{amount:a.amount,formattedAmount:a.formattedAmount,l2address:a.l2address}));const w=await Promise.all(y.values()),T=Array.from(y.keys()),R=[];if(w.forEach(((e,t)=>{const n=T[t];if(void 0===e)return;R.push(n);const a=g.get(n);a&&E.push({amount:a.amount,formattedAmount:a.formattedAmount,l2address:a.l2address})})),0===R.length)return[];if(0===E.length)return[];const _=((e,t,n,a,r)=>{const i=new Map;for(const[e,n]of t)i.set(e,{success:n.success,balances:n.balances});const s=new Map;for(const e of n)e.token.address&&s.set(e.token.address,e);for(const e of a){const{amount:t,l2address:n}=e;if(""===n)continue;let a=S.from(0);const i=s.get(n);i&&(a=i.balance);const o=a.add(t),c=r.find((e=>e.address===n));s.set(n,{balance:o,formattedBalance:D.formatUnits(o,c.decimals),token:c})}const o=Array.from(s.values());return i.set(_f(e),{success:!0,balances:o}),i})(e,s,f,E,c),v=await bl(e,n,r,a,_,R,d);if(!v)return[];const A=((e,t)=>{const n=[];for(const a of t){const{chainId:t,fundingItem:r}=a,{userBalance:i}=a.fundingItem,s=e.get(t);if(!s)continue;let o=S.from(0),c="0";const d=s.balances.find((e=>e.token.address===r.token.address));d&&(o=d.balance,c=d.formattedBalance),i.balance=o,i.formattedBalance=c,n.push(a)}return n})(s,v);return((e,t,n)=>{const a=[];for(const r of e){if(!r)continue;const e=n.find((e=>void 0===r.fundingItem.token.address?e.l1address===Tl&&e.l2address:e.l1address===r.fundingItem.token.address&&e.l2address));if(!e)continue;const i=t.find((t=>t.fundingItem.token.address===e.l2address));i&&a.push({bridgeFundingStep:r,swapFundingStep:i})}return a})(w,A,p)},Dl=async(e,t,n)=>{if(!t.onRamp)return;if(void 0===n)return;const a=await(async(e,t,n)=>{if(n.type!==sf.ERC20&&n.type!==sf.NATIVE)return;const{required:a,current:r,delta:i}=n;let s=!1;const o=await gl(e,t);return Object.values(o).forEach((e=>{e.length>0&&!s&&(s=!!e.find((e=>e.address===a.token?.address)))})),s?{type:uf.ONRAMP,chainId:_f(e),fundingItem:{type:a.token.address===Wu?sf.NATIVE:sf.ERC20,fundsRequired:{amount:i.balance,formattedAmount:i.formattedBalance},userBalance:{balance:r.balance,formattedBalance:r.formattedBalance},token:a.token}}:void 0})(e,t,n);return a},xl=async(e,t,n,a)=>{if(!(e=>e.bridge||e.swap||e.onRamp)(a))return{type:df.NO_ROUTE_OPTIONS,message:"No routing options are available"};let r;try{r=await dl(e)}catch(e){throw new hf("Error occurred while creating read only providers",lf.PROVIDER_ERROR,{message:e.message})}const i=await Sf(e,"Time to get token balances inside router",(async(e,t,n,a)=>{const r=new Map,i=new Map;if(0===t.size){const t={success:!1,error:new hf("No L1 or L2 provider available",lf.PROVIDER_ERROR),balances:[]};return r.set(Rf(e),t),r.set(_f(e),t),r}if(a.bridge){const a=Rf(e);t.has(a)?i.set(a,Pf(e,t.get(a),n,a)):r.set(Rf(e),{success:!1,error:new hf(`No L1 provider available for ${a}`,lf.PROVIDER_ERROR),balances:[]})}const s=_f(e);if(t.has(s)?i.set(s,Pf(e,t.get(s),n,s)):r.set(_f(e),{success:!1,error:new hf(`No L2 provider available for ${s}`,lf.PROVIDER_ERROR),balances:[]}),i.size>0){const e=Array.from(i.keys());(await Promise.allSettled(i.values())).forEach(((t,n)=>{const a=e[n];"fulfilled"===t.status?r.set(a,{success:!0,balances:t.value.balances}):r.set(a,{success:!1,error:new hf(`Error getting ${s} balances`,lf.GET_BALANCE_ERROR),balances:[]})}))}return r})(e,r,t,a)),s=await Sf(e,"Time to get routing allowlist",wl(e,i,a)),o=new Map,c=(e=>{let t,n=0;for(const a of e.balanceRequirements)a.sufficient||(n++,t=a);if(1===n)return t})(n),d=[];d.push((async(e,t,n,a,r,i,s)=>{let o;if(void 0===a)return;if(a.type!==sf.NATIVE&&a.type!==sf.ERC20)return;const c={amount:a.delta.balance,formattedAmount:a.delta.formattedBalance,l2address:a.required.token.address??""};return n.bridge&&a&&(o=await Sl(e,t,r,n,c,i,s)),o})(e,r,a,c,t,i,o)),d.push((async(e,t,n,a,r,i,s)=>{const o=[];if(!t.swap)return o;if(void 0===n)return o;if(void 0===i)return o;const c=r.get(_f(e));if(!c)return o;if(void 0!==c.error||!c.success)return o;if(0===i.length)return o;const d=i.filter((e=>e.address)).map((e=>e.address));return 0===d.length?o:await bl(e,t,a,n,r,d,s)})(e,a,c,t,i,s.swap,n)),d.push(Dl(e,a,c)),d.push((async(e,t,n,a,r,i,s,o,c)=>{if(!a)return[];const d=i.get(Rf(e)),u=i.get(_f(e));if(!d)return[];if(void 0!==d.error||!d.success)return[];if(!u)return[];if(void 0!==u.error||!u.success)return[];const f=(s?.bridge??[]).map((e=>void 0===e.address?Tl:e.address)),l=s?.swap??[];return a.type!==sf.NATIVE&&a.type!==sf.ERC20?[]:await Pl(e,t,n,a,r,o,i,f,l,c)})(e,r,a,c,t,i,s,o,n));const u=await Sf(e,"Time to resolve all routes",Promise.all(d));let f,l,p=[],h=[];if(u.forEach(((e,t)=>{0===t&&(f=e),1===t&&(p=e),2===t&&(l=e),3===t&&(h=e)})),!f&&0===p.length&&!l&&0===h.length)return{type:df.NO_ROUTES_FOUND,message:"Smart Checkout did not find any funding routes to fulfill the transaction"};const m={type:df.ROUTES_FOUND,fundingRoutes:[]};let b=0;return p.length>0&&(b++,p.forEach((e=>{m.fundingRoutes.push({priority:b,steps:[e]})}))),f&&(b++,m.fundingRoutes.push({priority:b,steps:[f]})),l&&(b++,m.fundingRoutes.push({priority:b,steps:[l]})),h&&(b++,h.forEach((e=>{const t=e.bridgeFundingStep,n=e.swapFundingStep;m.fundingRoutes.push({priority:b,steps:[t,n]})}))),m},Ll=async(e,t,n,a)=>{const r=await t.getSigner().getAddress();let i=$f(n);const s=(async(e,t,n)=>{let a=!0;const r=[],i=new Map,s=new Map,o=new Map,c=new Map;for(const a of n){if(a.type!==sf.ERC20)continue;const{contractAddress:n,spenderAddress:r}=a,o=`${n}${r}`;i.set(o,a),s.set(o,Xf(e,t,n,r))}const d=await Promise.all(s.values()),u=Array.from(s.keys());for(let n=0;n<d.length;n++){const s=i.get(u[n]);if(!s||s.type!==sf.ERC20)continue;if(d[n].gte(s.amount)){r.push({sufficient:!0,itemRequirement:s});continue}a=!1;const{contractAddress:f,spenderAddress:l}=s,p=`${f}${l}`,h=s.amount.sub(d[n]);o.set(p,{type:sf.ERC20,sufficient:!1,delta:h,itemRequirement:s,approvalTransaction:void 0}),c.set(p,Kf(e,t,f,l,h))}const f=await Promise.all(c.values()),l=Array.from(c.keys());return f.forEach(((e,t)=>{const n=o.get(l[t]);n&&(n.sufficient||(n.approvalTransaction=e))})),{sufficient:a,allowances:r.concat(Array.from(o.values()))}})(t,r,i),o=el(t,r,i),c=await Sf(e,"Time to calculate token allowances",Promise.all([s,o])),d=((e,t)=>{const n=[];if(!e.sufficient)for(const t of e.allowances)t.sufficient||n.push(t);if(!t.sufficient)for(const e of t.allowances)e.sufficient||n.push(e);return n})(c[0],c[1]),u=await Sf(e,"Time to run gas calculator",il(t,d,a));null!==u&&(i.push(u),i=$f(i));const f=await Sf(e,"Time to run balance checks",al(e,t,r,i)),{sufficient:l}=f,p=f.balanceRequirements;if(l)return{sufficient:l,transactionRequirements:p};const h=await Sf(e,"Time to fetch available routing options",(async(e,t)=>{const n={onRamp:e.isOnRampEnabled,swap:e.isSwapEnabled,bridge:e.isBridgeEnabled},a=[];if(n.onRamp&&a.push({id:"onRamp",promise:ol()}),n.swap&&a.push({id:"swap",promise:cl(e)}),a.length>0){const e=a.map((e=>e.promise));(await Promise.allSettled(e)).forEach(((e,t)=>{const r=a[t].id;n[r]=n[r]&&"fulfilled"===e.status&&e.value}))}return n.bridge=n.bridge&&!(e=>!0===e.provider?.isPassport??!1)(t),n})(e,t));return{sufficient:l,transactionRequirements:p,router:{availableRoutingOptions:h,routingOutcome:await Sf(e,"Total time to run the routing calculator",xl(e,r,f,h))}}};var Ul;!function(e){e.SUCCESS="SUCCESS",e.FAILED="FAILED"}(Ul||(Ul={}));const Fl=async(e,t)=>{let n=[];try{const a=await Promise.all(t.map((t=>e.getSigner().sendTransaction(t))));n=await Promise.all(a.map((e=>e.wait())))}catch(e){throw new hf("An error occurred while executing the approval transaction",lf.EXECUTE_APPROVAL_TRANSACTION_ERROR,{message:e.message})}for(const e of n)if(0===e.status)return{type:Ul.FAILED,transactionHash:e.transactionHash,reason:"Approval transaction failed and was reverted"};return{type:Ul.SUCCESS}},Bl=async(e,t)=>{let n=[];try{const a=await Promise.all(t.map((t=>e.getSigner().sendTransaction(t))));n=await Promise.all(a.map((e=>e.wait())))}catch(e){throw new hf("An error occurred while executing the fulfillment transaction",lf.EXECUTE_FULFILLMENT_TRANSACTION_ERROR,{message:e.message})}for(const e of n)if(0===e.status)return{type:Ul.FAILED,transactionHash:e.transactionHash,reason:"Fulfillment transaction failed and was reverted"};return{type:Ul.SUCCESS}},Vl=async e=>{let t=[];const n=[];for(const t of e)t.type===Gr.TRANSACTION&&t.purpose===Br.FULFILL_ORDER&&n.push(t.buildTransaction());return t=await Promise.all(n),t},Gl=(e,t)=>{const n=e.amount,a=Math.round(n.percentageDecimal*10**6);return t.mul(S.from(a)).div(10**6)},ql=(e,t)=>{const n=e.amount;return D.parseUnits(n.token,t)},jl=(e,t,n=18)=>{let a=S.from(0);const r=S.from(t),i=r.mul(1e6).div(10**6),s=[];for(const t of e){let e=S.from(0);if(Object.hasOwn(t.amount,"percentageDecimal"))e=Gl(t,r),a=a.add(e);else{if(!Object.hasOwn(t.amount,"token"))throw new hf("Unknown fee type parsed, must be percentageDecimal or token",lf.ORDER_FEE_ERROR);e=ql(t,n),a=a.add(e)}if(a.gt(i))throw new hf("The combined fees are above the allowed maximum of 100%",lf.ORDER_FEE_ERROR);e.gt(0)&&s.push({amount:e.toString(),recipient:t.recipient})}return s},zl=(e,t,n,a)=>{switch(e){case sf.ERC20:return{type:e,amount:n,contractAddress:t,spenderAddress:a};case sf.NATIVE:default:return{type:sf.NATIVE,amount:n}}},Hl=async(e,t,n)=>{if(0===n.length)throw new hf("No orders were provided to the orders array. Please provide at least one order.",lf.FULFILL_ORDER_LISTING_ERROR);let a,r="",i=18;const s=ai.estimatedFulfillmentGasGwei,o=Gf(e),c=qf(e),d=await Sf(e,"Time to get the address from the provider",t.getSigner().getAddress());Mf.clear(),Pf(e,t,d,Rf(e)),Pf(e,t,d,_f(e));const{id:u,takerFees:f}=n[0];let l;try{a=await Sf(e,"Time to fetch the listing from the orderbook",o.getListing(u));const{seaportContractAddress:t,chainName:n}=o.config();l=n,r=t}catch(e){throw new hf("An error occurred while getting the order listing",lf.GET_ORDER_LISTING_ERROR,{orderId:u,message:e.message})}if(0===a.result.buy.length)throw new hf("An error occurred with the get order listing",lf.GET_ORDER_LISTING_ERROR,{orderId:u,message:"No buy side tokens found on order"});const p=a.result.buy[0];if("ERC20"===p.type){const t=await Sf(e,"Time to get decimals of token contract for the buy token",c.getToken({contractAddress:p.contractAddress,chainName:l}));t.result.decimals&&(i=t.result.decimals)}let h=[];f&&f.length>0&&(h=jl(f,p.amount,i));let m=[],b=[],y=[];const g=performance.now();try{const{actions:t}=await Sf(e,"Time to call fulfillOrder from the orderbook",o.fulfillOrder(u,d,h));y=t,m=await Sf(e,"Time to construct the unsigned approval transactions",(async e=>{let t=[];const n=[];for(const t of e)t.type===Gr.TRANSACTION&&t.purpose===Br.APPROVAL&&n.push(t.buildTransaction());return t=await Promise.all(n),t})(t))}catch(t){const n=(performance.now()-g)/1e3;if(Of(e,"Time to call fulfillOrder from the orderbook",n),t.message.includes(Lr.EXPIRED))throw new hf("Order is expired",lf.ORDER_EXPIRED_ERROR,{orderId:u});if(!t.message.includes("The fulfiller does not have the balances needed to fulfill"))throw new hf("Error occurred while trying to fulfill the order",lf.FULFILL_ORDER_LISTING_ERROR,{orderId:u,message:t.message})}try{b=await Sf(e,"Time to construct the unsigned fulfillment transactions",Vl(y))}catch{}let E=S.from("0"),w=sf.NATIVE,T="";const R=a.result.buy;if(R.length>0)switch(R[0].type){case"NATIVE":w=sf.NATIVE;break;case"ERC20":w=sf.ERC20,T=R[0].contractAddress;break;default:throw new hf("Purchasing token type is unsupported",lf.UNSUPPORTED_TOKEN_TYPE_ERROR,{orderId:u})}R.forEach((e=>{e.type!==sf.ERC721&&(E=E.add(S.from(e.amount)))}));a.result.fees.forEach((e=>{E=E.add(S.from(e.amount))}));const _=[zl(w,T,E,r)],v=await Sf(e,"Total time running smart checkout",Ll(e,t,_,((e,t)=>t.length>0?{type:of.TRANSACTION,transaction:t[0]}:{type:of.GAS,gasToken:{type:cf.NATIVE,limit:S.from(e)}})(s,b)));if(v.sufficient){const e=await Fl(t,m);if(e.type===Ul.FAILED)return{status:rf.FAILED,transactionHash:e.transactionHash,reason:e.reason,smartCheckoutResult:v};try{0===b.length&&(b=await Vl(y))}catch(e){throw new hf("Error fetching fulfillment transaction",lf.FULFILL_ORDER_LISTING_ERROR,{message:e.message})}const n=await Bl(t,b);return n.type===Ul.FAILED?{status:rf.FAILED,transactionHash:n.transactionHash,reason:n.reason,smartCheckoutResult:v}:{status:rf.SUCCESS,smartCheckoutResult:v}}return{status:rf.INSUFFICIENT_FUNDS,smartCheckoutResult:v}},Wl=(e,t,n)=>({type:sf.ERC721,id:e,contractAddress:t,spenderAddress:n}),$l=async(e,t,n)=>{let a,r,i="";if(0===n.length)throw new hf("No orders were provided to the orders array. Please provide at least one order.",lf.PREPARE_ORDER_LISTING_ERROR);const{buyToken:s,sellToken:o,makerFees:c}=n[0];let d=18;if(s.type===sf.ERC20){const n=new x(s.contractAddress,JSON.stringify(nf),t);d=await Sf(e,"Time to get decimals of token contract for the buy token",n.decimals())}const u=((e,t=18)=>{const n=D.parseUnits(e.amount,t);return e.type===sf.NATIVE?{type:sf.NATIVE,amount:n.toString()}:{type:sf.ERC20,amount:n.toString(),contractAddress:e.contractAddress}})(s,d);try{const n=await Sf(e,"Time to get the address from the provider",t.getSigner().getAddress());a=Gf(e);const{seaportContractAddress:s}=a.config();i=s,r=await Sf(e,"Time to prepare the listing from the orderbook",a.prepareListing({makerAddress:n,buy:u,sell:{type:sf.ERC721,contractAddress:o.collectionAddress,tokenId:o.id}}))}catch(e){throw new hf("An error occurred while preparing the listing",lf.PREPARE_ORDER_LISTING_ERROR,{message:e.message,id:o.id,collectionAddress:o.collectionAddress})}const f=[Wl(o.id,o.collectionAddress,i)],l=await Sf(e,"Total time running smart checkout",Ll(e,t,f,{type:of.GAS,gasToken:{type:cf.NATIVE,limit:S.from(ai.estimatedFulfillmentGasGwei)}}));if(l.sufficient){const e=await(async e=>{let t=[],n=[];const a=[],r=[];for(const t of e)t.type===Gr.TRANSACTION&&(t.purpose===Br.APPROVAL&&a.push(t.buildTransaction()),t.purpose===Br.FULFILL_ORDER&&r.push(t.buildTransaction()));return t=await Promise.all(a),n=await Promise.all(r),{approvalTransactions:t,fulfillmentTransactions:n}})(r.actions),n=await Fl(t,e.approvalTransactions);if(n.type===Ul.FAILED)return{status:rf.FAILED,transactionHash:n.transactionHash,reason:n.reason,smartCheckoutResult:l};const i=((e,t,n)=>{let a;for(const e of n)e.type===Gr.SIGNABLE&&e.purpose===Vr.CREATE_LISTING&&(a={domain:e.message.domain,types:e.message.types,value:e.message.value});if(a)return{orderHash:e,orderComponents:t,unsignedMessage:a}})(r.orderHash,r.orderComponents,r.actions);if(!i)throw new hf("The unsigned message is missing after preparing the listing",lf.SIGN_MESSAGE_ERROR,{id:o.id,collectionAddress:o.collectionAddress});const s=await(async(e,t)=>{try{const n=await e.getSigner()._signTypedData(t.unsignedMessage.domain,t.unsignedMessage.types,t.unsignedMessage.value);return{orderComponents:t.orderComponents,orderHash:t.orderHash,signedMessage:n}}catch(e){throw new hf("An error occurred while signing the message",lf.SIGN_MESSAGE_ERROR,{message:e.message})}})(t,i);let f="";const p={orderComponents:s.orderComponents,orderHash:s.orderHash,orderSignature:s.signedMessage,makerFees:[]};if(void 0!==c){const e=jl(c,u.amount,d);if(e.length!==c.length)throw new hf("One of the fees is too small, must be greater than 0.000001",lf.CREATE_ORDER_LISTING_ERROR);p.makerFees=e}try{f=(await a.createListing(p)).result.id}catch(e){throw new hf("An error occurred while creating the listing",lf.CREATE_ORDER_LISTING_ERROR,{message:e.message,collectionId:o.id,collectionAddress:o.collectionAddress})}return{status:rf.SUCCESS,orderIds:[f],smartCheckoutResult:l}}return{status:rf.INSUFFICIENT_FUNDS,smartCheckoutResult:l}};class Xl{config;constructor(e){this.config=e}async feeEstimate(){const e=await this.config.remote.getConfig("onramp");return e[Uu.TRANSAK]?.fees}async createWidgetUrl(e){return await this.getTransakWidgetUrl(e)}async getTransakWidgetUrl(e){let t=`${Zu[this.config.environment]}?`;if(t+=`${`apiKey=${(await this.config.remote.getConfig("onramp"))[Uu.TRANSAK].publishableApiKey}`}&network=immutablezkevm&defaultPaymentMethod=credit_debit_card&disablePaymentMethods=sepa_bank_transfer,gbp_bank_transfer,pm_cash_app,pm_jwire,pm_paymaya,pm_bpi,pm_ubp,pm_grabpay,pm_shopeepay,pm_gcash,pm_pix,pm_astropay,pm_pse,inr_bank_transfer&productsAvailed=buy&exchangeScreenTitle=Buy&themeColor=0D0D0D`,e.isPassport&&e.email){t+=`&email=${encodeURIComponent(e.email)}&isAutoFillUserData=true&disableWalletAddressForm=true`}return e.tokenAmount&&e.tokenSymbol?t+=`&defaultCryptoAmount=${e.tokenAmount}&cryptoCurrencyCode=${e.tokenSymbol}`:t+="&defaultCryptoCurrency=IMX",e.walletAddress&&(t+=`&walletAddress=${e.walletAddress}`),t}}async function Kl(e,t){const n=[];t.forEach((t=>{if(t.type===sf.ERC20){const{contractAddress:s}=t;n.push((a=s,r=nf,i=e,new x(a,r,i)).decimals())}var a,r,i}));const a=await Promise.all(n),r=t.map(((e,t)=>e.type===sf.NATIVE?{...e,amount:D.parseUnits(e.amount,18)}:e.type===sf.ERC20?{...e,amount:D.parseUnits(e.amount,a[t])}:e));return r}const Jl=()=>"0.31.2-alpha";function Zl(e){if(void 0===window)throw new Error("missing window object: please run Checkout client side");if(void 0===document)throw new Error("missing document object: please run Checkout client side");const t="immutable-checkout-widgets-bundle",n=function(e){const t=Jl();if(void 0===e||void 0===e.major)return t;if(!Number.isInteger(e.major)||e.major<0)return t;if(void 0!==e.minor&&e.minor<0)return t;if(void 0!==e.patch&&e.patch<0)return t;if(0===e.major&&void 0===e.minor)return t;if(0===e.major&&0===e.minor&&void 0===e.patch)return t;if(0===e.major&&void 0===e.minor&&void 0===e.patch)return t;if(0===e.major&&0===e.minor&&0===e.patch)return t;let n=e.major.toString();return void 0===e.minor||(Number.isInteger(e.minor)&&(n+=`.${e.minor.toString()}`),void 0===e.patch||(Number.isInteger(e.patch)&&(n+=`.${e.patch.toString()}`),void 0===e.prerelease||"alpha"!==e.prerelease||("alpha"===e.prerelease&&(n+=`-${e.prerelease}`),void 0===e.build||Number.isInteger(e.build)&&e.build>=0&&(n+=`.${e.build.toString()}`)))),n}(e),a=document.getElementById(t);if(a)return{loaded:!0,element:a};const r=document.createElement("script");let i=`https://cdn.jsdelivr.net/npm/@imtbl/sdk@${n}/dist/browser/checkout/widgets.js`;return r.setAttribute("id",t),r.setAttribute("data-version",n),r.setAttribute("src",i),document.head.appendChild(r),{loaded:!1,element:r}}const Ql={baseConfig:{environment:se.SANDBOX},passport:void 0};var Yl=Object.freeze({__proto__:null,get BridgeEventType(){return Su},CHECKOUT_API_BASE_URL:Ju,get ChainId(){return xu},get ChainName(){return Lu},Checkout:class{readOnlyProviders;config;fiatRampService;availability;passport;constructor(e=Ql){this.config=new vf(e),this.fiatRampService=new Xl(this.config),this.readOnlyProviders=new Map,this.availability=sl(this.config.isDevelopment,this.config.isProduction),this.passport=e.passport}async widgets(e){const t=this,n=new Promise(((n,a)=>{try{Zl(e.version).loaded&&"undefined"!=typeof ImmutableCheckoutWidgets?(console.warn("Checkout widgets script is already loaded"),n(new ImmutableCheckoutWidgets.WidgetsFactory(t,e.config))):function a(){"undefined"!=typeof ImmutableCheckoutWidgets?n(new ImmutableCheckoutWidgets.WidgetsFactory(t,e.config)):setTimeout(a,100)}()}catch(e){a(new hf("Failed to load widgets script",lf.WIDGETS_SCRIPT_LOAD_ERROR,{message:e.message}))}}));return n}async createProvider(e){return await Df(e.walletProviderName,this.passport)}async checkIsWalletConnected(e){return async function(e){if(!e?.provider?.request)throw new hf("Check wallet connection request failed",lf.PROVIDER_REQUEST_FAILED_ERROR,{rpcMethod:Gu.CHECK_CONNECTION});let t=[];try{t=await e.provider.request({method:Gu.CHECK_CONNECTION,params:[]})}catch(e){throw new hf("Check wallet connection request failed",lf.PROVIDER_REQUEST_FAILED_ERROR,{rpcMethod:Gu.CHECK_CONNECTION})}return{isConnected:t&&t.length>0,walletAddress:t[0]??""}}(await Lf(this.config,e.provider,{allowUnsupportedProvider:!0}))}async connect(e){const t=await Lf(this.config,e.provider,{allowUnsupportedProvider:!0});return await async function(e){if(!e||!e.provider?.request)throw new hf("Incompatible provider",lf.PROVIDER_REQUEST_MISSING_ERROR,{details:"Attempting to connect with an incompatible provider"});return await mf((async()=>{e.provider.request&&await e.provider.request({method:Gu.CONNECT,params:[]})}),{type:lf.USER_REJECTED_REQUEST_ERROR}),e}(t),{provider:t}}async switchNetwork(e){const t=await Lf(this.config,e.provider,{allowUnsupportedProvider:!0,allowMistmatchedChainId:!0});return await Ef(this.config,t,e.chainId)}async getBalance(e){const t=await Lf(this.config,e.provider);return e.contractAddress&&""!==e.contractAddress?await kf(t,e.walletAddress,e.contractAddress):await Nf(this.config,t,e.walletAddress)}async getAllBalances(e){const t=await Lf(this.config,e.provider);return Pf(this.config,t,e.walletAddress,e.chainId)}async getNetworkAllowList(e){return await yf(this.config,e)}async getTokenAllowList(e){return await Af(this.config,e)}async getWalletAllowList(e){return await async function(e){const t=[],n=e.exclude?.map((e=>e.walletProviderName))??[];let a=Object.values(ju);0!==n.length&&(a=a.filter((e=>!n.includes(e))));for(const e of a)t.push({walletProviderName:e});return{wallets:t}}(e)}async sendTransaction(e){const t=await Lf(this.config,e.provider);return await(async(e,t)=>{try{return{transactionResponse:await e.getSigner().sendTransaction(t)}}catch(e){if(e.code===N.errors.INSUFFICIENT_FUNDS)throw new hf(e.message,lf.INSUFFICIENT_FUNDS);if(e.code===N.errors.ACTION_REJECTED)throw new hf(e.message,lf.USER_REJECTED_REQUEST_ERROR);if(e.code===N.errors.UNPREDICTABLE_GAS_LIMIT)throw new hf(e.message,lf.UNPREDICTABLE_GAS_LIMIT);throw new hf(e.message,lf.TRANSACTION_FAILED)}})(t,e.transaction)}async getNetworkInfo(e){const t=await Lf(this.config,e.provider,{allowUnsupportedProvider:!0,allowMistmatchedChainId:!0});return await gf(this.config,t)}async buy(e){e.orders.length>1&&console.warn("This endpoint currently only processes the first order in the array.");const t=await Lf(this.config,e.provider);return await Hl(this.config,t,e.orders)}async sell(e){e.orders.length>1&&console.warn("This endpoint currently only processes the first order in the array.");const t=await Lf(this.config,e.provider);return await $l(this.config,t,e.orders)}async cancel(e){console.warn("This endpoint currently only processes the first order in the array.");const t=await Lf(this.config,e.provider);return await(async(e,t,n)=>{let a;if(0===n.length)throw new hf("No orderIds were provided to the orderIds array. Please provide at least one orderId.",lf.CANCEL_ORDER_LISTING_ERROR);const r=n[0];try{const n=await Sf(e,"Time to get the address from the provider",t.getSigner().getAddress()),i=Gf(e),s=await Sf(e,"Time to get the cancel order from the orderbook",i.cancelOrdersOnChain([r],n));a=await s.cancellationAction.buildTransaction()}catch(e){throw new hf("An error occurred while cancelling the order listing",lf.CANCEL_ORDER_LISTING_ERROR,{orderId:r,message:e.message})}const i=await Bl(t,[a]);return i.type===Ul.FAILED?{status:rf.FAILED,transactionHash:i.transactionHash,reason:i.reason}:{status:rf.SUCCESS}})(this.config,t,e.orderIds)}async smartCheckout(e){const t=await Lf(this.config,e.provider);let n=[];try{n=await Kl(t,e.itemRequirements)}catch{throw new hf("Failed to map item requirements",lf.ITEM_REQUIREMENTS_ERROR)}return await Ll(this.config,t,n,e.transactionOrGasAmount)}static isWeb3Provider(e){return xf(e)}async gasEstimate(e){return this.readOnlyProviders=await dl(this.config,this.readOnlyProviders),await Wf(e,this.readOnlyProviders,this.config)}async createFiatRampUrl(e){let t,n,a="IMX";const r=await e.web3Provider.getSigner().getAddress(),i=e.web3Provider.provider?.isPassport||!1;if(i&&e.passport){const t=await e.passport.getUserInfo();n=t?.email}const s=await Af(this.config,{type:Vu.ONRAMP}),o=s.tokens?.find((t=>t.address?.toLowerCase()===e.tokenAddress?.toLowerCase()));return o&&(t=e.tokenAmount,a=o.symbol),await this.fiatRampService.createWidgetUrl({exchangeType:e.exchangeType,isPassport:i,walletAddress:r,tokenAmount:t,tokenSymbol:a,email:n})}async getExchangeFeeEstimate(){return await this.fiatRampService.feeEstimate()}async isSwapAvailable(){return this.availability.checkDexAvailability()}},CheckoutConfiguration:vf,get CheckoutErrorType(){return lf},get CheckoutStatus(){return rf},get ConnectEventType(){return Au},get ConnectTargetLayer(){return Pu},get ExchangeType(){return ff},get FundingStepType(){return uf},get GasEstimateType(){return Fu},get GasTokenType(){return cf},get IMTBLWidgetEvents(){return _u},get ItemType(){return sf},get NetworkFilterTypes(){return Bu},get OnRampEventType(){return ku},get OrchestrationEventType(){return Nu},get ProviderEventType(){return vu},get RoutingOutcomeType(){return df},get SaleEventType(){return Ou},get SwapEventType(){return Iu},get TokenFilterTypes(){return Vu},get TransactionOrGasType(){return of},get WalletEventType(){return Cu},get WalletFilterTypes(){return qu},get WalletProviderName(){return ju},get WidgetTheme(){return Du},get WidgetType(){return Mu}});export{lt as blockchainData,Yl as checkoutSdk,ce as config,yt as immutablexClient,ri as orderbook,yr as passport,Ui as provider};