@monygroupcorp/micro-web3 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/micro-web3.cjs +1 -1
- package/dist/micro-web3.cjs.map +1 -1
- package/dist/micro-web3.esm.js +1 -1
- package/dist/micro-web3.esm.js.map +1 -1
- package/dist/micro-web3.umd.js +1 -1
- package/dist/micro-web3.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/walletIcons.js +16 -0
- package/src/components/FloatingWalletButton/FloatingWalletButton.js +1 -1
- package/src/index.js +6 -0
package/dist/micro-web3.esm.js
CHANGED
|
@@ -6,5 +6,5 @@ import{Component as t,h as e,render as r,eventBus as n}from"@monygroupcorp/micro
|
|
|
6
6
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
|
7
7
|
* @copyright Chen, Yi-Cyuan 2015-2018
|
|
8
8
|
* @license MIT
|
|
9
|
-
*/var te,ee=(Xt||(Xt=1,te=Zt,function(){var t="input is invalid type",e="object"==typeof window,r=e?window:{};r.JS_SHA3_NO_WINDOW&&(e=!1);var n=!e&&"object"==typeof self;!r.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?r=i:n&&(r=self);var s=!r.JS_SHA3_NO_COMMON_JS&&te.exports,o=!r.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),l=[4,1024,262144,67108864],c=[0,8,16,24],h=[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],d=[128,256],f=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!r.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!o||!r.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var m=function(t,e,r){return function(n){return new I(t,e,t).update(n)[r]()}},g=function(t,e,r){return function(n,i){return new I(t,e,i).update(n)[r]()}},y=function(t,e,r){return function(e,n,i,s){return A["cshake"+t].update(e,n,i,s)[r]()}},w=function(t,e,r){return function(e,n,i,s){return A["kmac"+t].update(e,n,i,s)[r]()}},v=function(t,e,r,n){for(var i=0;i<f.length;++i){var s=f[i];t[s]=e(r,n,s)}return t},b=function(t,e){var r=m(t,e,"hex");return r.create=function(){return new I(t,e,t)},r.update=function(t){return r.create().update(t)},v(r,m,t,e)},E=[{name:"keccak",padding:[1,256,65536,16777216],bits:u,createMethod:b},{name:"sha3",padding:[6,1536,393216,100663296],bits:u,createMethod:b},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=g(t,e,"hex");return r.create=function(r){return new I(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},v(r,g,t,e)}},{name:"cshake",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=y(t,0,"hex");return n.create=function(n,i,s){return i||s?new I(t,e,n).bytepad([i,s],r):A["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},v(n,y,t,e)}},{name:"kmac",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=w(t,0,"hex");return n.create=function(n,i,s){return new P(t,e,i).bytepad(["KMAC",s],r).bytepad([n],r)},n.update=function(t,e,r,i){return n.create(t,r,i).update(e)},v(n,w,t,e)}}],A={},k=[],S=0;S<E.length;++S)for(var C=E[S],_=C.bits,N=0;N<_.length;++N){var x=C.name+"_"+_[N];if(k.push(x),A[x]=C.createMethod(_[N],C.padding),"sha3"!==C.name){var T=C.name+_[N];k.push(T),A[T]=A[x]}}function I(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function P(t,e,r){I.call(this,t,e,r)}I.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(o&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||o&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,s,a=this.blocks,l=this.byteCount,h=e.length,u=this.blockCount,d=0,f=this.s;d<h;){if(this.reset)for(this.reset=!1,a[0]=this.block,i=1;i<u+1;++i)a[i]=0;if(r)for(i=this.start;d<h&&i<l;++d)a[i>>2]|=e[d]<<c[3&i++];else for(i=this.start;d<h&&i<l;++d)(s=e.charCodeAt(d))<128?a[i>>2]|=s<<c[3&i++]:s<2048?(a[i>>2]|=(192|s>>6)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]):s<55296||s>=57344?(a[i>>2]|=(224|s>>12)<<c[3&i++],a[i>>2]|=(128|s>>6&63)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++d)),a[i>>2]|=(240|s>>18)<<c[3&i++],a[i>>2]|=(128|s>>12&63)<<c[3&i++],a[i>>2]|=(128|s>>6&63)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=a[u],i=0;i<u;++i)f[i]^=a[i];B(f),this.reset=!0}else this.start=i}return this},I.prototype.encode=function(t,e){var r=255&t,n=1,i=[r];for(r=255&(t>>=8);r>0;)i.unshift(r),r=255&(t>>=8),++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},I.prototype.encodeString=function(e){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(o&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||o&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}var i=0,s=e.length;if(r)i=s;else for(var a=0;a<e.length;++a){var l=e.charCodeAt(a);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},I.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var i=e-r%e,s=[];return s.length=i,this.update(s),this},I.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];B(n)}},I.prototype.toString=I.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,l="";o<n;){for(s=0;s<e&&o<n;++s,++o)t=r[s],l+=a[t>>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];o%e===0&&(B(r),s=0)}return i&&(t=r[s],l+=a[t>>4&15]+a[15&t],i>1&&(l+=a[t>>12&15]+a[t>>8&15]),i>2&&(l+=a[t>>20&15]+a[t>>16&15])),l},I.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);o<n;){for(s=0;s<e&&o<n;++s,++o)l[o]=r[s];o%e===0&&B(r)}return i&&(l[s]=r[s],t=t.slice(0,a)),t},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.digest=I.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,i=this.outputBlocks,s=this.extraBytes,o=0,a=0,l=[];a<i;){for(o=0;o<r&&a<i;++o,++a)t=a<<2,e=n[o],l[t]=255&e,l[t+1]=e>>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%r===0&&B(n)}return s&&(t=a<<2,e=n[o],l[t]=255&e,s>1&&(l[t+1]=e>>8&255),s>2&&(l[t+2]=e>>16&255)),l},P.prototype=new I,P.prototype.finalize=function(){return this.encode(this.outputBits,!0),I.prototype.finalize.call(this)};var B=function(t){var e,r,n,i,s,o,a,l,c,u,d,f,p,m,g,y,w,v,b,E,A,k,S,C,_,N,x,T,I,P,B,M,R,F,O,D,L,U,z,q,j,G,H,W,K,V,J,$,Q,Y,X,Z,tt,et,rt,nt,it,st,ot,at,lt,ct,ht;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],s=t[1]^t[11]^t[21]^t[31]^t[41],o=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],u=t[6]^t[16]^t[26]^t[36]^t[46],d=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(o<<1|a>>>31),r=(p=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|o>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(l<<1|c>>>31),r=s^(c<<1|l>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=o^(u<<1|d>>>31),r=a^(d<<1|u>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=l^(f<<1|p>>>31),r=c^(p<<1|f>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=u^(i<<1|s>>>31),r=d^(s<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],g=t[1],V=t[11]<<4|t[10]>>>28,J=t[10]<<4|t[11]>>>28,T=t[20]<<3|t[21]>>>29,I=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,G=t[40]<<18|t[41]>>>14,H=t[41]<<18|t[40]>>>14,F=t[2]<<1|t[3]>>>31,O=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,w=t[12]<<12|t[13]>>>20,$=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,P=t[33]<<13|t[32]>>>19,B=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ht=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,D=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,v=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,M=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,_=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,U=t[26]<<25|t[27]>>>7,z=t[27]<<25|t[26]>>>7,E=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Z=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,W=t[8]<<27|t[9]>>>5,K=t[9]<<27|t[8]>>>5,N=t[18]<<20|t[19]>>>12,x=t[19]<<20|t[18]>>>12,st=t[29]<<7|t[28]>>>25,ot=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,j=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~y&v,t[1]=g^~w&b,t[10]=C^~N&T,t[11]=_^~x&I,t[20]=F^~D&U,t[21]=O^~L&z,t[30]=W^~V&$,t[31]=K^~J&Q,t[40]=et^~nt&st,t[41]=rt^~it&ot,t[2]=y^~v&E,t[3]=w^~b&A,t[12]=N^~T&P,t[13]=x^~I&B,t[22]=D^~U&q,t[23]=L^~z&j,t[32]=V^~$&Y,t[33]=J^~Q&X,t[42]=nt^~st&at,t[43]=it^~ot<,t[4]=v^~E&k,t[5]=b^~A&S,t[14]=T^~P&M,t[15]=I^~B&R,t[24]=U^~q&G,t[25]=z^~j&H,t[34]=$^~Y&Z,t[35]=Q^~X&tt,t[44]=st^~at&ct,t[45]=ot^~lt&ht,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=P^~M&C,t[17]=B^~R&_,t[26]=q^~G&F,t[27]=j^~H&O,t[36]=Y^~Z&W,t[37]=X^~tt&K,t[46]=at^~ct&et,t[47]=lt^~ht&rt,t[8]=k^~m&y,t[9]=S^~g&w,t[18]=M^~C&N,t[19]=R^~_&x,t[28]=G^~F&D,t[29]=H^~O&L,t[38]=Z^~W&V,t[39]=tt^~K&J,t[48]=ct^~et&nt,t[49]=ht^~rt&it,t[0]^=h[n],t[1]^=h[n+1]};if(s)te.exports=A;else for(S=0;S<k.length;++S)r[k[S]]=A[k[S]]}()),Zt.exports),re=s(ee);function ne(t){return"0x"+re.keccak_256(_(t))}const ie=new v("rlp/5.8.0");function se(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function oe(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function ae(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(ae(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=se(e.length);return r.unshift(247+r.length),r.concat(e)}k(t)||ie.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(_(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=se(e.length);return r.unshift(183+r.length),r.concat(e)}function le(t){return B(ae(t))}function ce(t,e,r,n){const i=[];for(;r<e+1+n;){const s=he(t,r);i.push(s.result),(r+=s.consumed)>e+1+n&&ie.throwError("child data too short",v.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function he(t,e){if(0===t.length&&ie.throwError("data too short",v.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&ie.throwError("data short segment too short",v.errors.BUFFER_OVERRUN,{});const n=oe(t,e+1,r);return e+1+r+n>t.length&&ie.throwError("data long segment too short",v.errors.BUFFER_OVERRUN,{}),ce(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{}),ce(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{});const n=oe(t,e+1,r);e+1+r+n>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:B(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&ie.throwError("data too short",v.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:B(t.slice(e+1,e+1+r))}}return{consumed:1,result:B(t[e])}}function ue(t){const e=_(t),r=he(e,0);return r.consumed!==e.length&&ie.throwArgumentError("invalid rlp data","data",t),r.result}var de=Object.freeze({__proto__:null,decode:ue,encode:le});const fe=new v("address/5.8.0");function pe(t){I(t,20)||fe.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),r=new Uint8Array(40);for(let t=0;t<40;t++)r[t]=e[t].charCodeAt(0);const n=_(ne(r));for(let t=0;t<40;t+=2)n[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const me={};for(let t=0;t<10;t++)me[String(t)]=String(t);for(let t=0;t<26;t++)me[String.fromCharCode(65+t)]=String(10+t);const ge=Math.floor((ye=9007199254740991,Math.log10?Math.log10(ye):Math.log(ye)/Math.LN10));var ye;function we(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>me[t]).join("");for(;e.length>=ge;){let t=e.substring(0,ge);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function ve(t){let e=null;if("string"!=typeof t&&fe.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=pe(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&fe.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==we(t)&&fe.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new j(r,36).toString(16);e.length<40;)e="0"+e;e=pe("0x"+e)}else fe.throwArgumentError("invalid address","address",t);var r;return e}function be(t){let e=null;try{e=ve(t.from)}catch(e){fe.throwArgumentError("missing from address","transaction",t)}return ve(R(ne(le([e,x(_(V.from(t.nonce).toHexString()))])),12))}class Ee extends $t{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ve(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ve(L(t.readValue().toHexString(),20))}}class Ae extends $t{constructor(t){super(t.name,t.type,void 0,t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}const ke=new v(kt);function Se(t,e,r){let n=null;if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map(e=>{const n=e.localName;return n||ke.throwError("cannot encode object for signature with missing names",v.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&ke.throwError("cannot encode object for signature with duplicate names",v.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else ke.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&ke.throwArgumentError("types/value length mismatch","tuple",r);let i=new Qt(t.wordSize),s=new Qt(t.wordSize),o=[];e.forEach((t,e)=>{let r=n[e];if(t.dynamic){let e=s.length;t.encode(s,r);let n=i.writeUpdatableValue();o.push(t=>{n(t+e)})}else t.encode(i,r)}),o.forEach(t=>{t(i.length)});let a=t.appendWriter(i);return a+=t.appendWriter(s),a}function Ce(t,e){let r=[],n=t.subReader(0);e.forEach(e=>{let i=null;if(e.dynamic){let r=t.readValue(),s=n.subReader(r.toNumber());try{i=e.decode(s)}catch(t){if(t.code===v.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(t.code===v.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}null!=i&&r.push(i)});const i=e.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});e.forEach((t,e)=>{let n=t.localName;if(!n||1!==i[n])return;if("length"===n&&(n="_length"),null!=r[n])return;const s=r[e];s instanceof Error?Object.defineProperty(r,n,{enumerable:!0,get:()=>{throw s}}):r[n]=s});for(let t=0;t<r.length;t++){const e=r[t];e instanceof Error&&Object.defineProperty(r,t,{enumerable:!0,get:()=>{throw e}})}return Object.freeze(r)}class _e extends $t{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;r<this.length;r++)e.push(t);return e}encode(t,e){Array.isArray(e)||this._throwError("expected array value",e);let r=this.length;-1===r&&(r=e.length,t.writeValue(e.length)),ke.checkArgumentCount(e.length,r,"coder array"+(this.localName?" "+this.localName:""));let n=[];for(let t=0;t<e.length;t++)n.push(this.coder);return Se(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&ke.throwError("insufficient data length",v.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new Ae(this.coder));return t.coerce(this.name,Ce(t,r))}}class Ne extends $t{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){return t.writeValue(e?1:0)}decode(t){return t.coerce(this.type,!t.readValue().isZero())}}class xe extends $t{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=_(e);let r=t.writeValue(e.length);return r+=t.writeBytes(e),r}decode(t){return t.readBytes(t.readValue().toNumber(),!0)}}class Te extends xe{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,B(super.decode(t)))}}class Ie extends $t{constructor(t,e){let r="bytes"+String(t);super(r,r,e,!1),this.size=t}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let r=_(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,B(t.readBytes(this.size)))}}class Pe extends $t{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes([])}decode(t){return t.readBytes(0),t.coerce(this.name,null)}}const Be="0x0000000000000000000000000000000000000000",Me=V.from(-1),Re=V.from(0),Fe=V.from(1),Oe=V.from(2),De=V.from("1000000000000000000"),Le=V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ue=V.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),ze=V.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),qe="0x0000000000000000000000000000000000000000000000000000000000000000";var je=Object.freeze({__proto__:null,AddressZero:Be,EtherSymbol:"Ξ",HashZero:qe,MaxInt256:ze,MaxUint256:Le,MinInt256:Ue,NegativeOne:Me,One:Fe,Two:Oe,WeiPerEther:De,Zero:Re});class Ge extends $t{constructor(t,e,r){const n=(e?"int":"uint")+8*t;super(n,n,r,!1),this.size=t,this.signed=e}defaultValue(){return 0}encode(t,e){let r=V.from(e),n=Le.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Fe).mul(Me)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Re)||r.gt(n.mask(8*this.size)))&&this._throwError("value out-of-bounds",e);return r=r.toTwos(8*this.size).mask(8*this.size),this.signed&&(r=r.fromTwos(8*this.size).toTwos(8*t.wordSize)),t.writeValue(r)}decode(t){let e=t.readValue().mask(8*this.size);return this.signed&&(e=e.fromTwos(8*this.size)),t.coerce(this.name,e)}}const He=new v("strings/5.8.0");var We,Ke;function Ve(t,e,r,n,i){if(t===Ke.BAD_PREFIX||t===Ke.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n<r.length&&r[n]>>6==2;n++)t++;return t}return t===Ke.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(We||(We={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(Ke||(Ke={}));const Je=Object.freeze({error:function(t,e,r,n,i){return He.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:Ve,replace:function(t,e,r,n,i){return t===Ke.OVERLONG?(n.push(i),0):(n.push(65533),Ve(t,e,r))}});function $e(t,e){null==e&&(e=Je.error),t=_(t);const r=[];let n=0;for(;n<t.length;){const i=t[n++];if(!(i>>7)){r.push(i);continue}let s=null,o=null;if(192==(224&i))s=1,o=127;else if(224==(240&i))s=2,o=2047;else{if(240!=(248&i)){n+=e(128==(192&i)?Ke.UNEXPECTED_CONTINUE:Ke.BAD_PREFIX,n-1,t,r);continue}s=3,o=65535}if(n-1+s>=t.length){n+=e(Ke.OVERRUN,n-1,t,r);continue}let a=i&(1<<8-s-1)-1;for(let i=0;i<s;i++){let i=t[n];if(128!=(192&i)){n+=e(Ke.MISSING_CONTINUE,n,t,r),a=null;break}a=a<<6|63&i,n++}null!==a&&(a>1114111?n+=e(Ke.OUT_OF_RANGE,n-1-s,t,r,a):a>=55296&&a<=57343?n+=e(Ke.UTF16_SURROGATE,n-1-s,t,r,a):a<=o?n+=e(Ke.OVERLONG,n-1-s,t,r,a):r.push(a))}return r}function Qe(t,e=We.current){e!=We.current&&(He.checkNormalize(),t=t.normalize(e));let r=[];for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<128)r.push(n);else if(n<2048)r.push(n>>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const i=t.charCodeAt(e);if(e>=t.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const s=65536+((1023&n)<<10)+(1023&i);r.push(s>>18|240),r.push(s>>12&63|128),r.push(s>>6&63|128),r.push(63&s|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return _(r)}function Ye(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function Xe(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Ze(t,e){return Xe($e(t,e))}function tr(t,e=We.current){return $e(Qe(t,e))}function er(t,e){e||(e=function(t){return[parseInt(t,16)]});let r=0,n={};return t.split(",").forEach(t=>{let i=t.split(":");r+=parseInt(i[0],16),n[r]=e(i[1])}),n}function rr(t){let e=0;return t.split(",").map(t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}})}function nr(t,e){let r=0;for(let n=0;n<e.length;n++){let i=e[n];if(r+=i.l,t>=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&-1!==i.e.indexOf(t-r))continue;return i}}return null}const ir=rr("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),sr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),or=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],ar=er("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),lr=er("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),cr=er("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",function(t){if(t.length%4!=0)throw new Error("bad data");let e=[];for(let r=0;r<t.length;r+=4)e.push(parseInt(t.substring(r,r+4),16));return e}),hr=rr("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");class ur extends xe{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Qe(e))}decode(t){return Ze(super.decode(t))}}class dr extends $t{constructor(t,e){let r=!1;const n=[];t.forEach(t=>{t.dynamic&&(r=!0),n.push(t.type)});super("tuple","tuple("+n.join(",")+")",e,r),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});return this.coders.forEach((r,n)=>{let i=r.localName;i&&1===e[i]&&("length"===i&&(i="_length"),null==t[i]&&(t[i]=t[n]))}),Object.freeze(t)}encode(t,e){return Se(t,this.coders,e)}decode(t){return t.coerce(this.name,Ce(t,this.coders))}}const fr=new v(kt),pr=new RegExp(/^bytes([0-9]*)$/),mr=new RegExp(/^(u?int)([0-9]*)$/);class gr{constructor(t){ft(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new Ee(t.name);case"bool":return new Ne(t.name);case"string":return new ur(t.name);case"bytes":return new Te(t.name);case"array":return new _e(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new dr((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Pe(t.name)}let e=t.type.match(mr);if(e){let r=parseInt(e[2]||"256");return(0===r||r>256||r%8!=0)&&fr.throwArgumentError("invalid "+e[1]+" bit length","param",t),new Ge(r/8,"int"===e[1],t.name)}if(e=t.type.match(pr),e){let r=parseInt(e[1]);return(0===r||r>32)&&fr.throwArgumentError("invalid bytes length","param",t),new Ie(r,t.name)}return fr.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new Yt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Qt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Bt.from(t)));return new dr(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&fr.throwError("types/values length mismatch",v.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Bt.from(t))),n=new dr(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Bt.from(t)));return new dr(n,"_").decode(this._getReader(_(e),r))}}const yr=new gr;function wr(t){return ne(Qe(t))}const vr="hash/5.8.0";function br(t){t=atob(t);const e=[];for(let r=0;r<t.length;r++)e.push(t.charCodeAt(r));return _(e)}function Er(t){t=_(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var Ar=Object.freeze({__proto__:null,decode:br,encode:Er});function kr(t,e){null==e&&(e=1);const r=[],n=r.forEach,i=function(t,e){n.call(t,function(t){e>0&&Array.isArray(t)?i(t,e-1):r.push(t)})};return i(t,e),r}function Sr(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function r(){return t[e++]<<8|t[e++]}let n=r(),i=1,s=[0,1];for(let t=1;t<n;t++)s.push(i+=r());let o=r(),a=e;e+=o;let l=0,c=0;function h(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&1}const u=Math.pow(2,31),d=u>>>1,f=d>>1,p=u-1;let m=0;for(let t=0;t<31;t++)m=m<<1|h();let g=[],y=0,w=u;for(;;){let t=Math.floor(((m-y+1)*i-1)/w),e=0,r=n;for(;r-e>1;){let n=e+r>>>1;t<s[n]?r=n:e=n}if(0==e)break;g.push(e);let o=y+Math.floor(w*s[e]/i),a=y+Math.floor(w*s[e+1]/i)-1;for(;0==((o^a)&d);)m=m<<1&p|h(),o=o<<1&p,a=a<<1&p|1;for(;o&~a&f;)m=m&d|m<<1&p>>>1|h(),o=o<<1^d,a=(a^d)<<1|d|1;y=o,w=1+a-o}let v=n-4;return g.map(e=>{switch(e-v){case 3:return v+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return v+256+(t[a++]<<8|t[a++]);case 1:return v+t[a++];default:return e-1}})}(t))}function Cr(t){return 1&t?~t>>1:t>>1}function _r(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Nr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=Cr(e());return r}function xr(t,e){let r=_r(t(),t),n=t(),i=_r(n,t),s=function(t,e){let r=Array(t);for(let n=0;n<t;n++)r[n]=1+e();return r}(n,t);for(let t=0;t<n;t++)for(let e=0;e<s[t];e++)r.push(i[t]+e);return e?r.map(t=>e[t]):r}function Tr(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;i<e;i++)Nr(t,r).forEach((t,e)=>n[e].push(t));return n}function Ir(t,e){let r=1+e(),n=e(),i=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(r)}return e}(e);return kr(Tr(i.length,1+t,e).map((t,e)=>{const s=t[0],o=t.slice(1);return Array(i[e]).fill(void 0).map((t,e)=>{let i=e*n;return[s+e*r,o.map(t=>t+i)]})}))}function Pr(t,e){return Tr(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Br=Sr(br("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA==")),Mr=new Set(xr(Br)),Rr=new Set(xr(Br)),Fr=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(Ir(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Pr(r,t))}return function(t){const e={};for(let r=0;r<t.length;r++){const n=t[r];e[n[0]]=n[1]}return e}(kr(e))}(Br),Or=function(t){let e=xr(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=xr(t,e);if(0==i.length)break;n.push({set:new Set(i),node:r()})}n.sort((t,e)=>e.set.size-t.set.size);let i=t(),s=i%3;i=i/3|0;let o=!!(1&i);return i>>=1,{branches:n,valid:s,fe0f:o,save:1==i,check:2==i}}()}(Br);function Dr(t){return tr(t)}function Lr(t){return t.filter(t=>65039!=t)}function Ur(t){for(let e of t.split(".")){let t=Dr(e);try{for(let e=t.lastIndexOf(95)-1;e>=0;e--)if(95!==t[e])throw new Error("underscore only allowed at start");if(t.length>=4&&t.every(t=>t<128)&&45===t[2]&&45===t[3])throw new Error("invalid label extension")}catch(t){throw new Error(`Invalid label "${e}": ${t.message}`)}}return t}function zr(t){return Ur(function(t,e){let r=Dr(t).reverse(),n=[];for(;r.length;){let t=qr(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Mr.has(i)){n.push(i);continue}if(Rr.has(i))continue;let s=Fr[i];if(!s)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...s)}return Ur((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Lr))}function qr(t,e){var r;let n,i,s=Or,o=[],a=t.length;for(;a;){let e=t[--a];if(s=null===(r=s.branches.find(t=>t.set.has(e)))||void 0===r?void 0:r.node,!s)break;if(s.save)i=e;else if(s.check&&e===i)break;o.push(e),s.fe0f&&(o.push(65039),a>0&&65039==t[a-1]&&a--),s.valid&&(n=o.slice(),2==s.valid&&n.splice(1,1),t.length=a)}return n}const jr=new v(vr),Gr=new Uint8Array(32);function Hr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function Wr(t){const e=Qe(zr(t)),r=[];if(0===t.length)return r;let n=0;for(let t=0;t<e.length;t++){46===e[t]&&(r.push(Hr(e.slice(n,t))),n=t+1)}if(n>=e.length)throw new Error("invalid ENS name; empty component");return r.push(Hr(e.slice(n))),r}function Kr(t){"string"!=typeof t&&jr.throwArgumentError("invalid ENS name; not a string","name",t);let e=Gr;const r=Wr(t);for(;r.length;)e=ne(N([e,ne(r.pop())]));return B(e)}function Vr(t){return B(N(Wr(t).map(t=>{if(t.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const e=new Uint8Array(t.length+1);return e.set(t,1),e[0]=e.length-1,e})))+"00"}Gr.fill(0);function Jr(t){return"string"==typeof t&&(t=Qe(t)),ne(N([Qe("Ethereum Signed Message:\n"),Qe(String(t.length)),t]))}var $r=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Qr=new v(vr),Yr=new Uint8Array(32);Yr.fill(0);const Xr=V.from(-1),Zr=V.from(0),tn=V.from(1),en=V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const rn=L(tn.toHexString(),32),nn=L(Zr.toHexString(),32),sn={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},on=["name","version","chainId","verifyingContract","salt"];function an(t){return function(e){return"string"!=typeof e&&Qr.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const ln={name:an("name"),version:an("version"),chainId:function(t){try{return V.from(t).toString()}catch(t){}return Qr.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ve(t).toLowerCase()}catch(t){}return Qr.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=_(t);if(32!==e.length)throw new Error("bad length");return B(e)}catch(t){}return Qr.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function cn(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Qr.throwArgumentError("invalid numeric width","type",t);const i=en.mask(r?n-1:n),s=r?i.add(tn).mul(Xr):Zr;return function(e){const r=V.from(e);return(r.lt(s)||r.gt(i))&&Qr.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),L(r.toTwos(256).toHexString(),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Qr.throwArgumentError("invalid bytes width","type",t),function(e){return _(e).length!==r&&Qr.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=_(t),r=e.length%32;return r?F([e,Yr.slice(r)]):B(e)}(e)}}}switch(t){case"address":return function(t){return L(ve(t),32)};case"bool":return function(t){return t?rn:nn};case"bytes":return function(t){return ne(t)};case"string":return function(t){return wr(t)}}return null}function hn(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class un{constructor(t){ft(this,"types",Object.freeze(Et(t))),ft(this,"_encoderCache",{}),ft(this,"_types",{});const e={},r={},n={};Object.keys(t).forEach(t=>{e[t]={},r[t]=[],n[t]={}});for(const n in t){const i={};t[n].forEach(s=>{i[s.name]&&Qr.throwArgumentError(`duplicate variable name ${JSON.stringify(s.name)} in ${JSON.stringify(n)}`,"types",t),i[s.name]=!0;const o=s.type.match(/^([^\x5b]*)(\x5b|$)/)[1];o===n&&Qr.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);cn(o)||(r[o]||Qr.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),r[o].push(n),e[n][o]=!0)})}const i=Object.keys(r).filter(t=>0===r[t].length);0===i.length?Qr.throwArgumentError("missing primary type","types",t):i.length>1&&Qr.throwArgumentError(`ambiguous primary types or unused types: ${i.map(t=>JSON.stringify(t)).join(", ")}`,"types",t),ft(this,"primaryType",i[0]),function i(s,o){o[s]&&Qr.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t),o[s]=!0,Object.keys(e[s]).forEach(t=>{r[t]&&(i(t,o),Object.keys(o).forEach(e=>{n[e][t]=!0}))}),delete o[s]}(this.primaryType,{});for(const e in n){const r=Object.keys(n[e]);r.sort(),this._types[e]=hn(e,t[e])+r.map(e=>hn(e,t[e])).join("")}}getEncoder(t){let e=this._encoderCache[t];return e||(e=this._encoderCache[t]=this._getEncoder(t)),e}_getEncoder(t){{const e=cn(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Qr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let i=e.map(r);return this._types[t]&&(i=i.map(ne)),ne(F(i))}}const r=this.types[t];if(r){const e=wr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?ne(n):n});return n.unshift(e),F(n)}}return Qr.throwArgumentError(`unknown type: ${t}`,"type",t)}encodeType(t){const e=this._types[t];return e||Qr.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return ne(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(cn(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],i=parseInt(n[3]);return i>=0&&e.length!==i&&Qr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map(e=>this._visit(t,e,r))}const i=this.types[t];return i?i.reduce((t,{name:n,type:i})=>(t[n]=this._visit(i,e[n],r),t),{}):Qr.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new un(t)}static getPrimaryType(t){return un.from(t).primaryType}static hashStruct(t,e,r){return un.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=sn[r];n||Qr.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((t,e)=>on.indexOf(t.name)-on.indexOf(e.name)),un.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return F(["0x1901",un.hashDomain(t),un.from(e).hash(r)])}static hash(t,e,r){return ne(un.encode(t,e,r))}static resolveNames(t,e,r,n){return $r(this,void 0,void 0,function*(){t=yt(t);const i={};t.verifyingContract&&!I(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const s=un.from(e);s.visit(r,(t,e)=>("address"!==t||I(e,20)||(i[e]="0x"),e));for(const t in i)i[t]=yield n(t);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=s.visit(r,(t,e)=>"address"===t&&i[e]?i[e]:e),{domain:t,value:r}})}static getPayload(t,e,r){un.hashDomain(t);const n={},i=[];on.forEach(e=>{const r=t[e];null!=r&&(n[e]=ln[e](r),i.push({name:e,type:sn[e]}))});const s=un.from(e),o=yt(e);return o.EIP712Domain?Qr.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=i,s.encode(r),{types:o,domain:n,primaryType:s.primaryType,message:s.visit(r,(t,e)=>{if(t.match(/^bytes(\d*)/))return B(_(e));if(t.match(/^u?int/))return V.from(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Qr.throwArgumentError("invalid string","value",e),e}return Qr.throwArgumentError("unsupported type","type",t)})}}}const dn=new v(kt);class fn extends At{}class pn extends At{}class mn extends At{}class gn extends At{static isIndexed(t){return!(!t||!t._isIndexed)}}const yn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function wn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class vn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,ft(this,"fragments",e.map(t=>Rt.from(t)).filter(t=>null!=t)),ft(this,"_abiCoder",pt(new.target,"getAbiCoder")()),ft(this,"functions",{}),ft(this,"errors",{}),ft(this,"events",{}),ft(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void dn.warn("duplicate definition - constructor"):void ft(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let r=t.format();e[r]?dn.warn("duplicate definition - "+r):e[r]=t}),this.deploy||ft(this,"deploy",Ut.from({payable:!1,type:"constructor"})),ft(this,"_isInterface",!0)}format(t){t||(t=It.full),t===It.sighash&&dn.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===It.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return yr}static getAddress(t){return ve(t)}static getSighash(t){return R(wr(t.format()),0,4)}static getEventTopic(t){return wr(t.format())}getFunction(t){if(I(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];dn.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching function","name",e):r.length>1&&dn.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[zt.fromString(t).format()];return e||dn.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(I(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];dn.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching event","name",e):r.length>1&&dn.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Ft.fromString(t).format()];return e||dn.throwArgumentError("no matching event","signature",t),e}getError(t){if(I(t)){const e=pt(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}dn.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching error","name",e):r.length>1&&dn.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[zt.fromString(t).format()];return e||dn.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return pt(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),pt(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const r=_(e);return B(r.slice(0,4))!==this.getSighash(t)&&dn.throwArgumentError(`data signature does not match error ${t.name}.`,"data",B(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),B(N([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=_(e);return B(r.slice(0,4))!==this.getSighash(t)&&dn.throwArgumentError(`data signature does not match function ${t.name}.`,"data",B(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),B(N([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=_(e),n=null,i="",s=null,o=null,a=null;switch(r.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,r)}catch(t){}break;case 4:{const t=B(r.slice(0,4)),e=yn[t];if(e)s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.signature,e.reason&&(n=s[0]),"Error"===o?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(s[0])}`:"Panic"===o&&(i=`; VM Exception while processing transaction: reverted with panic code ${s[0]}`);else try{const e=this.getError(t);s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.format()}catch(t){}break}}return dn.throwError("call revert exception"+i,v.errors.CALL_EXCEPTION,{method:t.format(),data:B(e),errorArgs:s,errorName:o,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),B(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&dn.throwError("too many arguments for "+t.format(),v.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?wr(e):"bytes"===t.type?ne(B(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=V.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),L(B(e),32));for(e.forEach((e,i)=>{let s=t.inputs[i];s.indexed?null==e?r.push(null):"array"===s.baseType||"tuple"===s.baseType?dn.throwArgumentError("filtering with tuples or arrays not supported","contract."+s.name,e):Array.isArray(e)?r.push(e.map(t=>n(s,t))):r.push(n(s,e)):null!=e&&dn.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+s.name,e)});r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],i=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&dn.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,s)=>{const o=e[s];if(t.indexed)if("string"===t.type)r.push(wr(o));else if("bytes"===t.type)r.push(ne(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(this._abiCoder.encode([t.type],[o]))}else n.push(t),i.push(o)}),{data:this._abiCoder.encode(n,i),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){let e=this.getEventTopic(t);I(r[0],32)&&r[0].toLowerCase()===e||dn.throwError("fragment/topic mismatch",v.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:r[0]}),r=r.slice(1)}let n=[],i=[],s=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(Bt.fromObject({type:"bytes32",name:t.name})),s.push(!0)):(n.push(t),s.push(!1)):(i.push(t),s.push(!1))});let o=null!=r?this._abiCoder.decode(n,N(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,h=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==o)l[e]=new gn({_isIndexed:!0,hash:null});else if(s[e])l[e]=new gn({_isIndexed:!0,hash:o[h++]});else try{l[e]=o[h++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const r=l[e];r instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw wn(`property ${JSON.stringify(t.name)}`,r)}}):l[t.name]=r}});for(let t=0;t<l.length;t++){const e=l[t];e instanceof Error&&Object.defineProperty(l,t,{enumerable:!0,get:()=>{throw wn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new pn({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:V.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new fn({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=B(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new mn({args:this._abiCoder.decode(r.inputs,"0x"+e.substring(10)),errorFragment:r,name:r.name,signature:r.format(),sighash:this.getSighash(r)}):null}static isInterface(t){return!(!t||!t._isInterface)}}var bn=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const En=new v("abstract-provider/5.8.0");class An extends At{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class kn{constructor(){En.checkAbstract(new.target,kn),ft(this,"_isProvider",!0)}getFeeData(){return bn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield mt({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(t=>null)});let r=null,n=null,i=null;return t&&t.baseFeePerGas&&(r=t.baseFeePerGas,i=V.from("1500000000"),n=t.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:r,maxFeePerGas:n,maxPriorityFeePerGas:i,gasPrice:e}})}addListener(t,e){return this.on(t,e)}removeListener(t,e){return this.off(t,e)}static isProvider(t){return!(!t||!t._isProvider)}}var Sn=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Cn=new v("abstract-signer/5.8.0"),_n=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Nn=[v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED];class xn{constructor(){Cn.checkAbstract(new.target,xn),ft(this,"_isSigner",!0)}getBalance(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return Sn(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield mt(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return Sn(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield mt(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return Sn(this,void 0,void 0,function*(){this._checkProvider("sendTransaction");const e=yield this.populateTransaction(t),r=yield this.signTransaction(e);return yield this.provider.sendTransaction(r)})}getChainId(){return Sn(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===_n.indexOf(e)&&Cn.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=yt(t);return null==e.from?e.from=this.getAddress():e.from=Promise.all([Promise.resolve(e.from),this.getAddress()]).then(e=>(e[0].toLowerCase()!==e[1].toLowerCase()&&Cn.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return Sn(this,void 0,void 0,function*(){const e=yield mt(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>Sn(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&Cn.throwArgumentError("provided ENS name resolves to null","tx.to",t),e})),e.to.catch(t=>{}));const r=null!=e.maxFeePerGas||null!=e.maxPriorityFeePerGas;if(null==e.gasPrice||2!==e.type&&!r?0!==e.type&&1!==e.type||!r||Cn.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):Cn.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",t),2!==e.type&&null!=e.type||null==e.maxFeePerGas||null==e.maxPriorityFeePerGas)if(0===e.type||1===e.type)null==e.gasPrice&&(e.gasPrice=this.getGasPrice());else{const t=yield this.getFeeData();if(null==e.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(e.type=2,null!=e.gasPrice){const t=e.gasPrice;delete e.gasPrice,e.maxFeePerGas=t,e.maxPriorityFeePerGas=t}else null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(r&&Cn.throwError("network does not support EIP-1559",v.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):Cn.throwError("failed to get consistent fee data",v.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===e.type&&(null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else e.type=2;return null==e.nonce&&(e.nonce=this.getTransactionCount("pending")),null==e.gasLimit&&(e.gasLimit=this.estimateGas(e).catch(t=>{if(Nn.indexOf(t.code)>=0)throw t;return Cn.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,tx:e})})),null==e.chainId?e.chainId=this.getChainId():e.chainId=Promise.all([Promise.resolve(e.chainId),this.getChainId()]).then(e=>(0!==e[1]&&e[0]!==e[1]&&Cn.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield mt(e)})}_checkProvider(t){this.provider||Cn.throwError("missing provider",v.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class Tn extends xn{constructor(t,e){super(),ft(this,"address",t),ft(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{Cn.throwError(t,v.errors.UNSUPPORTED_OPERATION,{operation:e})})}signMessage(t){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(t){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(t,e,r){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(t){return new Tn(this.address,t)}}var In,Pn,Bn={},Mn={};function Rn(){if(Pn)return In;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Pn=1,In=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},In}var Fn,On,Dn,Ln={exports:{}},Un={exports:{}};function zn(){if(On)return Ln.exports;On=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";Ln.exports=t.inherits}catch(t){Ln.exports=(Fn||(Fn=1,"function"==typeof Object.create?Un.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Un.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),Un.exports)}return Ln.exports}function qn(){if(Dn)return Mn;Dn=1;var t=Rn(),e=zn();function r(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function n(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function s(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}return Mn.inherits=e,Mn.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),s=0;s<t.length;s+=2)n.push(parseInt(t[s]+t[s+1],16))}else for(var i=0,s=0;s<t.length;s++){var o=t.charCodeAt(s);o<128?n[i++]=o:o<2048?(n[i++]=o>>6|192,n[i++]=63&o|128):r(t,s)?(o=65536+((1023&o)<<10)+(1023&t.charCodeAt(++s)),n[i++]=o>>18|240,n[i++]=o>>12&63|128,n[i++]=o>>6&63|128,n[i++]=63&o|128):(n[i++]=o>>12|224,n[i++]=o>>6&63|128,n[i++]=63&o|128)}else for(s=0;s<t.length;s++)n[s]=0|t[s];return n},Mn.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},Mn.htonl=n,Mn.toHex32=function(t,e){for(var r="",i=0;i<t.length;i++){var o=t[i];"little"===e&&(o=n(o)),r+=s(o.toString(16))}return r},Mn.zero2=i,Mn.zero8=s,Mn.join32=function(e,r,n,i){var s=n-r;t(s%4==0);for(var o=new Array(s/4),a=0,l=r;a<o.length;a++,l+=4){var c;c="big"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],o[a]=c>>>0}return o},Mn.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n<t.length;n++,i+=4){var s=t[n];"big"===e?(r[i]=s>>>24,r[i+1]=s>>>16&255,r[i+2]=s>>>8&255,r[i+3]=255&s):(r[i+3]=s>>>24,r[i+2]=s>>>16&255,r[i+1]=s>>>8&255,r[i]=255&s)}return r},Mn.rotr32=function(t,e){return t>>>e|t<<32-e},Mn.rotl32=function(t,e){return t<<e|t>>>32-e},Mn.sum32=function(t,e){return t+e>>>0},Mn.sum32_3=function(t,e,r){return t+e+r>>>0},Mn.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},Mn.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},Mn.sum64=function(t,e,r,n){var i=t[e],s=n+t[e+1]>>>0,o=(s<n?1:0)+r+i;t[e]=o>>>0,t[e+1]=s},Mn.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},Mn.sum64_lo=function(t,e,r,n){return e+n>>>0},Mn.sum64_4_hi=function(t,e,r,n,i,s,o,a){var l=0,c=e;return l+=(c=c+n>>>0)<e?1:0,l+=(c=c+s>>>0)<s?1:0,t+r+i+o+(l+=(c=c+a>>>0)<a?1:0)>>>0},Mn.sum64_4_lo=function(t,e,r,n,i,s,o,a){return e+n+s+a>>>0},Mn.sum64_5_hi=function(t,e,r,n,i,s,o,a,l,c){var h=0,u=e;return h+=(u=u+n>>>0)<e?1:0,h+=(u=u+s>>>0)<s?1:0,h+=(u=u+a>>>0)<a?1:0,t+r+i+o+l+(h+=(u=u+c>>>0)<c?1:0)>>>0},Mn.sum64_5_lo=function(t,e,r,n,i,s,o,a,l,c){return e+n+s+a+c>>>0},Mn.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},Mn.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Mn.shr64_hi=function(t,e,r){return t>>>r},Mn.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Mn}var jn,Gn={};function Hn(){if(jn)return Gn;jn=1;var t=qn(),e=Rn();function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return Gn.BlockHash=r,r.prototype.update=function(e,r){if(e=t.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=t.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},r.prototype.digest=function(t){return this.update(this._pad()),e(null===this.pending),this._digest(t)},r.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,r=e-(t+this.padLength)%e,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(t<<=3,"big"===this.endian){for(var s=8;s<this.padLength;s++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=t>>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,s=8;s<this.padLength;s++)n[i++]=0;return n},Gn}var Wn,Kn,Vn,Jn,$n,Qn,Yn,Xn,Zn,ti,ei,ri,ni={},ii={};function si(){if(Wn)return ii;Wn=1;var t=qn().rotr32;function e(t,e,r){return t&e^~t&r}function r(t,e,r){return t&e^t&r^e&r}function n(t,e,r){return t^e^r}return ii.ft_1=function(t,i,s,o){return 0===t?e(i,s,o):1===t||3===t?n(i,s,o):2===t?r(i,s,o):void 0},ii.ch32=e,ii.maj32=r,ii.p32=n,ii.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ii.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ii.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ii.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ii}function oi(){if($n)return Jn;$n=1;var t=qn(),e=Hn(),r=si(),n=Rn(),i=t.sum32,s=t.sum32_4,o=t.sum32_5,a=r.ch32,l=r.maj32,c=r.s0_256,h=r.s1_256,u=r.g0_256,d=r.g1_256,f=e.BlockHash,p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return t.inherits(m,f),Jn=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var r=this.W,f=0;f<16;f++)r[f]=t[e+f];for(;f<r.length;f++)r[f]=s(d(r[f-2]),r[f-7],u(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],g=this.h[2],y=this.h[3],w=this.h[4],v=this.h[5],b=this.h[6],E=this.h[7];for(n(this.k.length===r.length),f=0;f<r.length;f++){var A=o(E,h(w),a(w,v,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=v,v=w,w=i(y,A),y=g,g=m,m=p,p=i(A,k)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],g),this.h[3]=i(this.h[3],y),this.h[4]=i(this.h[4],w),this.h[5]=i(this.h[5],v),this.h[6]=i(this.h[6],b),this.h[7]=i(this.h[7],E)},m.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Jn}function ai(){if(Zn)return Xn;Zn=1;var t=qn(),e=Hn(),r=Rn(),n=t.rotr64_hi,i=t.rotr64_lo,s=t.shr64_hi,o=t.shr64_lo,a=t.sum64,l=t.sum64_hi,c=t.sum64_lo,h=t.sum64_4_hi,u=t.sum64_4_lo,d=t.sum64_5_hi,f=t.sum64_5_lo,p=e.BlockHash,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function g(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function y(t,e,r,n,i){var s=t&r^~t&i;return s<0&&(s+=4294967296),s}function w(t,e,r,n,i,s){var o=e&n^~e&s;return o<0&&(o+=4294967296),o}function v(t,e,r,n,i){var s=t&r^t&i^r&i;return s<0&&(s+=4294967296),s}function b(t,e,r,n,i,s){var o=e&n^e&s^n&s;return o<0&&(o+=4294967296),o}function E(t,e){var r=n(t,e,28)^n(e,t,2)^n(e,t,7);return r<0&&(r+=4294967296),r}function A(t,e){var r=i(t,e,28)^i(e,t,2)^i(e,t,7);return r<0&&(r+=4294967296),r}function k(t,e){var r=n(t,e,14)^n(t,e,18)^n(e,t,9);return r<0&&(r+=4294967296),r}function S(t,e){var r=i(t,e,14)^i(t,e,18)^i(e,t,9);return r<0&&(r+=4294967296),r}function C(t,e){var r=n(t,e,1)^n(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function _(t,e){var r=i(t,e,1)^i(t,e,8)^o(t,e,7);return r<0&&(r+=4294967296),r}function N(t,e){var r=n(t,e,19)^n(e,t,29)^s(t,e,6);return r<0&&(r+=4294967296),r}function x(t,e){var r=i(t,e,19)^i(e,t,29)^o(t,e,6);return r<0&&(r+=4294967296),r}return t.inherits(g,p),Xn=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(t,e){for(var r=this.W,n=0;n<32;n++)r[n]=t[e+n];for(;n<r.length;n+=2){var i=N(r[n-4],r[n-3]),s=x(r[n-4],r[n-3]),o=r[n-14],a=r[n-13],l=C(r[n-30],r[n-29]),c=_(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=h(i,s,o,a,l,c,d,f),r[n+1]=u(i,s,o,a,l,c,d,f)}},g.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,i=this.h[0],s=this.h[1],o=this.h[2],h=this.h[3],u=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],_=this.h[9],N=this.h[10],x=this.h[11],T=this.h[12],I=this.h[13],P=this.h[14],B=this.h[15];r(this.k.length===n.length);for(var M=0;M<n.length;M+=2){var R=P,F=B,O=k(C,_),D=S(C,_),L=y(C,_,N,x,T),U=w(C,_,N,x,T,I),z=this.k[M],q=this.k[M+1],j=n[M],G=n[M+1],H=d(R,F,O,D,L,U,z,q,j,G),W=f(R,F,O,D,L,U,z,q,j,G);R=E(i,s),F=A(i,s),O=v(i,s,o,h,u),D=b(i,s,o,h,u,p);var K=l(R,F,O,D),V=c(R,F,O,D);P=T,B=I,T=N,I=x,N=C,x=_,C=l(m,g,H,W),_=c(g,g,H,W),m=u,g=p,u=o,p=h,o=i,h=s,i=l(H,W,K,V),s=c(H,W,K,V)}a(this.h,0,i,s),a(this.h,2,o,h),a(this.h,4,u,p),a(this.h,6,m,g),a(this.h,8,C,_),a(this.h,10,N,x),a(this.h,12,T,I),a(this.h,14,P,B)},g.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Xn}function li(){return ri||(ri=1,ni.sha1=function(){if(Vn)return Kn;Vn=1;var t=qn(),e=Hn(),r=si(),n=t.rotl32,i=t.sum32,s=t.sum32_5,o=r.ft_1,a=e.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;a.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return t.inherits(c,a),Kn=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,a=0;a<16;a++)r[a]=t[e+a];for(;a<r.length;a++)r[a]=n(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var c=this.h[0],h=this.h[1],u=this.h[2],d=this.h[3],f=this.h[4];for(a=0;a<r.length;a++){var p=~~(a/20),m=s(n(c,5),o(p,h,u,d),f,r[a],l[p]);f=d,d=u,u=n(h,30),h=c,c=m}this.h[0]=i(this.h[0],c),this.h[1]=i(this.h[1],h),this.h[2]=i(this.h[2],u),this.h[3]=i(this.h[3],d),this.h[4]=i(this.h[4],f)},c.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Kn}(),ni.sha224=function(){if(Yn)return Qn;Yn=1;var t=qn(),e=oi();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return t.inherits(r,e),Qn=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,7),"big"):t.split32(this.h.slice(0,7),"big")},Qn}(),ni.sha256=oi(),ni.sha384=function(){if(ei)return ti;ei=1;var t=qn(),e=ai();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return t.inherits(r,e),ti=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,12),"big"):t.split32(this.h.slice(0,12),"big")},ti}(),ni.sha512=ai()),ni}var ci,hi,ui,di,fi={};var pi=(di||(di=1,function(){var t=Bn;t.utils=qn(),t.common=Hn(),t.sha=li(),t.ripemd=function(){if(ci)return fi;ci=1;var t=qn(),e=Hn(),r=t.rotl32,n=t.sum32,i=t.sum32_3,s=t.sum32_4,o=e.BlockHash;function a(){if(!(this instanceof a))return new a;o.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function c(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function h(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}t.inherits(a,o),fi.ripemd160=a,a.blockSize=512,a.outSize=160,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(t,e){for(var o=this.h[0],a=this.h[1],m=this.h[2],g=this.h[3],y=this.h[4],w=o,v=a,b=m,E=g,A=y,k=0;k<80;k++){var S=n(r(s(o,l(k,a,m,g),t[u[k]+e],c(k)),f[k]),y);o=y,y=g,g=r(m,10),m=a,a=S,S=n(r(s(w,l(79-k,v,b,E),t[d[k]+e],h(k)),p[k]),A),w=A,A=E,E=r(b,10),b=v,v=S}S=i(this.h[1],m,E),this.h[1]=i(this.h[2],g,A),this.h[2]=i(this.h[3],y,w),this.h[3]=i(this.h[4],o,v),this.h[4]=i(this.h[0],a,b),this.h[0]=S},a.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"little"):t.split32(this.h,"little")};var u=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],f=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];return fi}(),t.hmac=function(){if(ui)return hi;ui=1;var t=qn(),e=Rn();function r(e,n,i){if(!(this instanceof r))return new r(e,n,i);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(t.toArray(n,i))}return hi=r,r.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),e(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=(new this.Hash).update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=(new this.Hash).update(t)},r.prototype.update=function(t,e){return this.inner.update(t,e),this},r.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)},hi}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}()),Bn),mi=s(pi);function gi(t,e,r){return r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},t(r,r.exports),r.exports}var yi=wi;function wi(t,e){if(!t)throw new Error(e||"Assertion failed")}wi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var vi=gi(function(t,e){var r=e;function n(t){return 1===t.length?"0"+t:t}function i(t){for(var e="",r=0;r<t.length;r++)e+=n(t[r].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!=typeof t){for(var n=0;n<t.length;n++)r[n]=0|t[n];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(n=0;n<t.length;n++){var i=t.charCodeAt(n),s=i>>8,o=255&i;s?r.push(s,o):r.push(o)}return r},r.zero2=n,r.toHex=i,r.encode=function(t,e){return"hex"===e?i(t):t}}),bi=gi(function(t,e){var r=e;r.assert=yi,r.toArray=vi.toArray,r.zero2=vi.zero2,r.toHex=vi.toHex,r.encode=vi.encode,r.getNAF=function(t,e,r){var n,i=new Array(Math.max(t.bitLength(),r)+1);for(n=0;n<i.length;n+=1)i[n]=0;var s=1<<e+1,o=t.clone();for(n=0;n<i.length;n++){var a,l=o.andln(s-1);o.isOdd()?(a=l>(s>>1)-1?(s>>1)-l:l,o.isubn(a)):a=0,i[n]=a,o.iushrn(1)}return i},r.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n,i=0,s=0;t.cmpn(-i)>0||e.cmpn(-s)>0;){var o,a,l=t.andln(3)+i&3,c=e.andln(3)+s&3;3===l&&(l=-1),3===c&&(c=-1),o=1&l?3!==(n=t.andln(7)+i&7)&&5!==n||2!==c?l:-l:0,r[0].push(o),a=1&c?3!==(n=e.andln(7)+s&7)&&5!==n||2!==l?c:-c:0,r[1].push(a),2*i===o+1&&(i=1-i),2*s===a+1&&(s=1-s),t.iushrn(1),e.iushrn(1)}return r},r.cachedProperty=function(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new c(t,"hex","le")}}),Ei=bi.getNAF,Ai=bi.getJSF,ki=bi.assert;function Si(t,e){this.type=t,this.p=new c(e.p,16),this.red=e.prime?c.red(e.prime):c.mont(this.p),this.zero=new c(0).toRed(this.red),this.one=new c(1).toRed(this.red),this.two=new c(2).toRed(this.red),this.n=e.n&&new c(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ci=Si;function _i(t,e){this.curve=t,this.type=e,this.precomputed=null}Si.prototype.point=function(){throw new Error("Not implemented")},Si.prototype.validate=function(){throw new Error("Not implemented")},Si.prototype._fixedNafMul=function(t,e){ki(t.precomputed);var r=t._getDoubles(),n=Ei(e,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var s,o,a=[];for(s=0;s<n.length;s+=r.step){o=0;for(var l=s+r.step-1;l>=s;l--)o=(o<<1)+n[l];a.push(o)}for(var c=this.jpoint(null,null,null),h=this.jpoint(null,null,null),u=i;u>0;u--){for(s=0;s<a.length;s++)(o=a[s])===u?h=h.mixedAdd(r.points[s]):o===-u&&(h=h.mixedAdd(r.points[s].neg()));c=c.add(h)}return c.toP()},Si.prototype._wnafMul=function(t,e){var r=4,n=t._getNAFPoints(r);r=n.wnd;for(var i=n.points,s=Ei(e,r,this._bitLength),o=this.jpoint(null,null,null),a=s.length-1;a>=0;a--){for(var l=0;a>=0&&0===s[a];a--)l++;if(a>=0&&l++,o=o.dblp(l),a<0)break;var c=s[a];ki(0!==c),o="affine"===t.type?c>0?o.mixedAdd(i[c-1>>1]):o.mixedAdd(i[-c-1>>1].neg()):c>0?o.add(i[c-1>>1]):o.add(i[-c-1>>1].neg())}return"affine"===t.type?o.toP():o},Si.prototype._wnafMulAdd=function(t,e,r,n,i){var s,o,a,l=this._wnafT1,c=this._wnafT2,h=this._wnafT3,u=0;for(s=0;s<n;s++){var d=(a=e[s])._getNAFPoints(t);l[s]=d.wnd,c[s]=d.points}for(s=n-1;s>=1;s-=2){var f=s-1,p=s;if(1===l[f]&&1===l[p]){var m=[e[f],null,null,e[p]];0===e[f].y.cmp(e[p].y)?(m[1]=e[f].add(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg())):0===e[f].y.cmp(e[p].y.redNeg())?(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].add(e[p].neg())):(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],y=Ai(r[f],r[p]);for(u=Math.max(y[0].length,u),h[f]=new Array(u),h[p]=new Array(u),o=0;o<u;o++){var w=0|y[0][o],v=0|y[1][o];h[f][o]=g[3*(w+1)+(v+1)],h[p][o]=0,c[f]=m}}else h[f]=Ei(r[f],l[f],this._bitLength),h[p]=Ei(r[p],l[p],this._bitLength),u=Math.max(h[f].length,u),u=Math.max(h[p].length,u)}var b=this.jpoint(null,null,null),E=this._wnafT4;for(s=u;s>=0;s--){for(var A=0;s>=0;){var k=!0;for(o=0;o<n;o++)E[o]=0|h[o][s],0!==E[o]&&(k=!1);if(!k)break;A++,s--}if(s>=0&&A++,b=b.dblp(A),s<0)break;for(o=0;o<n;o++){var S=E[o];0!==S&&(S>0?a=c[o][S-1>>1]:S<0&&(a=c[o][-S-1>>1].neg()),b="affine"===a.type?b.mixedAdd(a):b.add(a))}}for(s=0;s<n;s++)c[s]=null;return i?b:b.toP()},Si.BasePoint=_i,_i.prototype.eq=function(){throw new Error("Not implemented")},_i.prototype.validate=function(){return this.curve.validate(this)},Si.prototype.decodePoint=function(t,e){t=bi.toArray(t,e);var r=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*r)return 6===t[0]?ki(t[t.length-1]%2==0):7===t[0]&&ki(t[t.length-1]%2==1),this.point(t.slice(1,1+r),t.slice(1+r,1+2*r));if((2===t[0]||3===t[0])&&t.length-1===r)return this.pointFromX(t.slice(1,1+r),3===t[0]);throw new Error("Unknown point format")},_i.prototype.encodeCompressed=function(t){return this.encode(t,!0)},_i.prototype._encode=function(t){var e=this.curve.p.byteLength(),r=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",e))},_i.prototype.encode=function(t,e){return bi.encode(this._encode(e),t)},_i.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},_i.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},_i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<e;i+=t){for(var s=0;s<t;s++)n=n.dbl();r.push(n)}return{step:t,points:r}},_i.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],r=(1<<t)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)e[i]=e[i-1].add(n);return{wnd:t,points:e}},_i.prototype._getBeta=function(){return null},_i.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Ni=gi(function(t){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}}),xi=bi.assert;function Ti(t){Ci.call(this,"short",t),this.a=new c(t.a,16).toRed(this.red),this.b=new c(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Ni(Ti,Ci);var Ii=Ti;function Pi(t,e,r,n){Ci.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new c(e,16),this.y=new c(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function Bi(t,e,r,n){Ci.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new c(0)):(this.x=new c(e,16),this.y=new c(r,16),this.z=new c(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Ti.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new c(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=(e=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(t.lambda)r=new c(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],xi(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map(function(t){return{a:new c(t.a,16),b:new c(t.b,16)}}):this._getEndoBasis(r)}}},Ti.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:c.mont(t),r=new c(2).toRed(e).redInvm(),n=r.redNeg(),i=new c(3).toRed(e).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},Ti.prototype._getEndoBasis=function(t){for(var e,r,n,i,s,o,a,l,h,u=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new c(1),m=new c(0),g=new c(0),y=new c(1),w=0;0!==d.cmpn(0);){var v=f.div(d);l=f.sub(v.mul(d)),h=g.sub(v.mul(p));var b=y.sub(v.mul(m));if(!n&&l.cmp(u)<0)e=a.neg(),r=p,n=l.neg(),i=h;else if(n&&2===++w)break;a=l,f=d,d=l,g=p,p=h,y=m,m=b}s=l.neg(),o=h;var E=n.sqr().add(i.sqr());return s.sqr().add(o.sqr()).cmp(E)>=0&&(s=e,o=r),n.negative&&(n=n.neg(),i=i.neg()),s.negative&&(s=s.neg(),o=o.neg()),[{a:n,b:i},{a:s,b:o}]},Ti.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),s=r.b.neg().mul(t).divRound(this.n),o=i.mul(r.a),a=s.mul(n.a),l=i.mul(r.b),c=s.mul(n.b);return{k1:t.sub(o).sub(a),k2:l.add(c).neg()}},Ti.prototype.pointFromX=function(t,e){(t=new c(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},Ti.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},Ti.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,s=0;s<t.length;s++){var o=this._endoSplit(e[s]),a=t[s],l=a._getBeta();o.k1.negative&&(o.k1.ineg(),a=a.neg(!0)),o.k2.negative&&(o.k2.ineg(),l=l.neg(!0)),n[2*s]=a,n[2*s+1]=l,i[2*s]=o.k1,i[2*s+1]=o.k2}for(var c=this._wnafMulAdd(1,n,i,2*s,r),h=0;h<2*s;h++)n[h]=null,i[h]=null;return c},Ni(Pi,Ci.BasePoint),Ti.prototype.point=function(t,e,r){return new Pi(this,t,e,r)},Ti.prototype.pointFromJSON=function(t,e){return Pi.fromJSON(this,t,e)},Pi.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var r=this.curve,n=function(t){return r.point(t.x.redMul(r.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(n)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(n)}}}return e}},Pi.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Pi.fromJSON=function(t,e,r){"string"==typeof e&&(e=JSON.parse(e));var n=t.point(e[0],e[1],r);if(!e[2])return n;function i(e){return t.point(e[0],e[1],r)}var s=e[2];return n.precomputed={beta:null,doubles:s.doubles&&{step:s.doubles.step,points:[n].concat(s.doubles.points.map(i))},naf:s.naf&&{wnd:s.naf.wnd,points:[n].concat(s.naf.points.map(i))}},n},Pi.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Pi.prototype.isInfinity=function(){return this.inf},Pi.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},Pi.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),s=i.redSqr().redISub(this.x.redAdd(this.x)),o=i.redMul(this.x.redSub(s)).redISub(this.y);return this.curve.point(s,o)},Pi.prototype.getX=function(){return this.x.fromRed()},Pi.prototype.getY=function(){return this.y.fromRed()},Pi.prototype.mul=function(t){return t=new c(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Pi.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},Pi.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},Pi.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},Pi.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},Pi.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},Ni(Bi,Ci.BasePoint),Ti.prototype.jpoint=function(t,e,r){return new Bi(this,t,e,r)},Bi.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},Bi.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Bi.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),s=this.y.redMul(e.redMul(t.z)),o=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=s.redSub(o);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),h=c.redMul(a),u=n.redMul(c),d=l.redSqr().redIAdd(h).redISub(u).redISub(u),f=l.redMul(u.redISub(d)).redISub(s.redMul(h)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},Bi.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,s=t.y.redMul(e).redMul(this.z),o=r.redSub(n),a=i.redSub(s);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=o.redSqr(),c=l.redMul(o),h=r.redMul(l),u=a.redSqr().redIAdd(c).redISub(h).redISub(h),d=a.redMul(h.redISub(u)).redISub(i.redMul(c)),f=this.z.redMul(o);return this.curve.jpoint(u,d,f)},Bi.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e<t;e++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,s=this.x,o=this.y,a=this.z,l=a.redSqr().redSqr(),c=o.redAdd(o);for(e=0;e<t;e++){var h=s.redSqr(),u=c.redSqr(),d=u.redSqr(),f=h.redAdd(h).redIAdd(h).redIAdd(n.redMul(l)),p=s.redMul(u),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),y=f.redMul(g);y=y.redIAdd(y).redISub(d);var w=c.redMul(a);e+1<t&&(l=l.redMul(d)),s=m,a=w,c=y}return this.curve.jpoint(s,c.redMul(i),a)},Bi.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},Bi.prototype._zeroDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(o).redISub(o),c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),t=l,e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.x.redSqr(),u=this.y.redSqr(),d=u.redSqr(),f=this.x.redAdd(u).redSqr().redISub(h).redISub(d);f=f.redIAdd(f);var p=h.redAdd(h).redIAdd(h),m=p.redSqr(),g=d.redIAdd(d);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(f).redISub(f),e=p.redMul(f.redISub(t)).redISub(g),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(t,e,r)},Bi.prototype._threeDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(o).redISub(o);t=l;var c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.z.redSqr(),u=this.y.redSqr(),d=this.x.redMul(u),f=this.x.redSub(h).redMul(this.x.redAdd(h));f=f.redAdd(f).redIAdd(f);var p=d.redIAdd(d),m=(p=p.redIAdd(p)).redAdd(p);t=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(u).redISub(h);var g=u.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=f.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,r)},Bi.prototype._dbl=function(){var t=this.curve.a,e=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),s=e.redSqr(),o=r.redSqr(),a=s.redAdd(s).redIAdd(s).redIAdd(t.redMul(i)),l=e.redAdd(e),c=(l=l.redIAdd(l)).redMul(o),h=a.redSqr().redISub(c.redAdd(c)),u=c.redISub(h),d=o.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=a.redMul(u).redISub(d),p=r.redAdd(r).redMul(n);return this.curve.jpoint(h,f,p)},Bi.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr(),n=e.redSqr(),i=t.redAdd(t).redIAdd(t),s=i.redSqr(),o=this.x.redAdd(e).redSqr().redISub(t).redISub(n),a=(o=(o=(o=o.redIAdd(o)).redAdd(o).redIAdd(o)).redISub(s)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(o).redSqr().redISub(s).redISub(a).redISub(l),h=e.redMul(c);h=(h=h.redIAdd(h)).redIAdd(h);var u=this.x.redMul(a).redISub(h);u=(u=u.redIAdd(u)).redIAdd(u);var d=this.y.redMul(c.redMul(l.redISub(c)).redISub(o.redMul(a)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=this.z.redAdd(o).redSqr().redISub(r).redISub(a);return this.curve.jpoint(u,d,f)},Bi.prototype.mul=function(t,e){return t=new c(t,e),this.curve._wnafMul(this,t)},Bi.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;var n=e.redMul(this.z),i=r.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(n)).cmpn(0)},Bi.prototype.eqXToP=function(t){var e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(e);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},Bi.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},Bi.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var Mi=gi(function(t,e){var r=e;r.base=Ci,r.short=Ii,r.mont=null,r.edwards=null}),Ri=gi(function(t,e){var r,n=e,i=bi.assert;function s(t){"short"===t.type?this.curve=new Mi.short(t):"edwards"===t.type?this.curve=new Mi.edwards(t):this.curve=new Mi.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function o(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new s(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=s,o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:mi.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:mi.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:mi.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:mi.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:mi.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:mi.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:mi.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=null.crash()}catch(t){r=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:mi.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})});function Fi(t){if(!(this instanceof Fi))return new Fi(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=vi.toArray(t.entropy,t.entropyEnc||"hex"),r=vi.toArray(t.nonce,t.nonceEnc||"hex"),n=vi.toArray(t.pers,t.persEnc||"hex");yi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Oi=Fi;Fi.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},Fi.prototype._hmac=function(){return new mi.hmac(this.hash,this.K)},Fi.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},Fi.prototype.reseed=function(t,e,r,n){"string"!=typeof e&&(n=r,r=e,e=null),t=vi.toArray(t,e),r=vi.toArray(r,n),yi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},Fi.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=vi.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length<t;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var s=i.slice(0,t);return this._update(r),this._reseed++,vi.encode(s,e)};var Di=bi.assert;function Li(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var Ui=Li;Li.fromPublic=function(t,e,r){return e instanceof Li?e:new Li(t,{pub:e,pubEnc:r})},Li.fromPrivate=function(t,e,r){return e instanceof Li?e:new Li(t,{priv:e,privEnc:r})},Li.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},Li.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Li.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Li.prototype._importPrivate=function(t,e){this.priv=new c(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Li.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Di(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Di(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},Li.prototype.derive=function(t){return t.validate()||Di(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Li.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Li.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Li.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var zi=bi.assert;function qi(t,e){if(t instanceof qi)return t;this._importDER(t,e)||(zi(t.r&&t.s,"Signature without r or s"),this.r=new c(t.r,16),this.s=new c(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var ji=qi;function Gi(){this.place=0}function Hi(t,e){var r=t[e.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;if(0===t[e.place])return!1;for(var i=0,s=0,o=e.place;s<n;s++,o++)i<<=8,i|=t[o],i>>>=0;return!(i<=127)&&(e.place=o,i)}function Wi(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)}function Ki(t,e){if(e<128)t.push(e);else{var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}qi.prototype._importDER=function(t,e){t=bi.toArray(t,e);var r=new Gi;if(48!==t[r.place++])return!1;var n=Hi(t,r);if(!1===n)return!1;if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var i=Hi(t,r);if(!1===i)return!1;if(128&t[r.place])return!1;var s=t.slice(r.place,i+r.place);if(r.place+=i,2!==t[r.place++])return!1;var o=Hi(t,r);if(!1===o)return!1;if(t.length!==o+r.place)return!1;if(128&t[r.place])return!1;var a=t.slice(r.place,o+r.place);if(0===s[0]){if(!(128&s[1]))return!1;s=s.slice(1)}if(0===a[0]){if(!(128&a[1]))return!1;a=a.slice(1)}return this.r=new c(s),this.s=new c(a),this.recoveryParam=null,!0},qi.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=Wi(e),r=Wi(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];Ki(n,e.length),(n=n.concat(e)).push(2),Ki(n,r.length);var i=n.concat(r),s=[48];return Ki(s,i.length),s=s.concat(i),bi.encode(s,t)};var Vi=function(){throw new Error("unsupported")},Ji=bi.assert;function $i(t){if(!(this instanceof $i))return new $i(t);"string"==typeof t&&(Ji(Object.prototype.hasOwnProperty.call(Ri,t),"Unknown curve "+t),t=Ri[t]),t instanceof Ri.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Qi=$i;$i.prototype.keyPair=function(t){return new Ui(this,t)},$i.prototype.keyFromPrivate=function(t,e){return Ui.fromPrivate(this,t,e)},$i.prototype.keyFromPublic=function(t,e){return Ui.fromPublic(this,t,e)},$i.prototype.genKeyPair=function(t){t||(t={});for(var e=new Oi({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Vi(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new c(2));;){var i=new c(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},$i.prototype._truncateToN=function(t,e,r){var n;if(c.isBN(t)||"number"==typeof t)n=(t=new c(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new c(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new c(i,16)}"number"!=typeof r&&(r=8*n);var s=r-this.n.bitLength();return s>0&&(t=t.ushrn(s)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},$i.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!c.isBN(t)){Ji("object"==typeof t&&t&&"number"==typeof t.length,"Expected message to be an array-like, a hex string, or a BN instance"),Ji(t.length>>>0===t.length);for(var i=0;i<t.length;i++)Ji((255&t[i])===t[i])}e=this.keyFromPrivate(e,r),t=this._truncateToN(t,!1,n.msgBitLength),Ji(!t.isNeg(),"Can not sign a negative message");var s=this.n.byteLength(),o=e.getPrivate().toArray("be",s),a=t.toArray("be",s);Ji(new c(a).eq(t),"Can not sign message");for(var l=new Oi({hash:this.hash,entropy:o,nonce:a,pers:n.pers,persEnc:n.persEnc||"utf8"}),h=this.n.sub(new c(1)),u=0;;u++){var d=n.k?n.k(u):new c(l.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var p=f.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var g=d.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(g=g.umod(this.n)).cmpn(0)){var y=(f.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),y^=1),new ji({r:m,s:g,recoveryParam:y})}}}}}},$i.prototype.verify=function(t,e,r,n,i){i||(i={}),t=this._truncateToN(t,!1,i.msgBitLength),r=this.keyFromPublic(r,n);var s=(e=new ji(e,"hex")).r,o=e.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var a,l=o.invm(this.n),c=l.mul(t).umod(this.n),h=l.mul(s).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&a.eqXToP(s):!(a=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===a.getX().umod(this.n).cmp(s)},$i.prototype.recoverPubKey=function(t,e,r,n){Ji((3&r)===r,"The recovery param is more than two bits"),e=new ji(e,n);var i=this.n,s=new c(t),o=e.r,a=e.s,l=1&r,h=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");o=h?this.curve.pointFromX(o.add(this.curve.n),l):this.curve.pointFromX(o,l);var u=e.r.invm(i),d=i.sub(s).mul(u).umod(i),f=a.mul(u).umod(i);return this.g.mulAdd(d,o,f)},$i.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new ji(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var s;try{s=this.recoverPubKey(t,e,i)}catch(t){continue}if(s.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var Yi=gi(function(t,e){var r=e;r.version="6.6.1",r.utils=bi,r.rand=function(){throw new Error("unsupported")},r.curve=Mi,r.curves=Ri,r.ec=Qi,r.eddsa=null}).ec;const Xi=new v("signing-key/5.8.0");let Zi=null;function ts(){return Zi||(Zi=new Yi("secp256k1")),Zi}class es{constructor(t){ft(this,"curve","secp256k1"),ft(this,"privateKey",B(t)),32!==M(this.privateKey)&&Xi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=ts().keyFromPrivate(_(this.privateKey));ft(this,"publicKey","0x"+e.getPublic(!1,"hex")),ft(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),ft(this,"_isSigningKey",!0)}_addPoint(t){const e=ts().keyFromPublic(_(this.publicKey)),r=ts().keyFromPublic(_(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=ts().keyFromPrivate(_(this.privateKey)),r=_(t);32!==r.length&&Xi.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return U({recoveryParam:n.recoveryParam,r:L("0x"+n.r.toString(16),32),s:L("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=ts().keyFromPrivate(_(this.privateKey)),r=ts().keyFromPublic(_(ns(t)));return L("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function rs(t,e){const r=U(e),n={r:_(r.r),s:_(r.s)};return"0x"+ts().recoverPubKey(_(t),n,r.recoveryParam).encode("hex",!1)}function ns(t,e){const r=_(t);if(32===r.length){const t=new es(r);return e?"0x"+ts().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?B(r):"0x"+ts().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+ts().keyFromPublic(r).getPublic(!0,"hex"):B(r):Xi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const is=new v("transactions/5.8.0");var ss;function os(t){return"0x"===t?null:ve(t)}function as(t){return"0x"===t?Re:V.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(ss||(ss={}));const ls=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],cs={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function hs(t){return ve(R(ne(R(ns(t),1)),12))}function us(t,e){return hs(rs(_(t),e))}function ds(t,e){const r=x(V.from(t).toHexString());return r.length>32&&is.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function fs(t,e){return{address:ve(t),storageKeys:(e||[]).map((e,r)=>(32!==M(e)&&is.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function ps(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&is.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${e}]`,t),fs(t[0],t[1])):fs(t.address,t.storageKeys));const e=Object.keys(t).map(e=>{const r=t[e].reduce((t,e)=>(t[e]=!0,t),{});return fs(e,Object.keys(r).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}function ms(t){return ps(t).map(t=>[t.address,t.storageKeys])}function gs(t,e){if(null!=t.gasPrice){const e=V.from(t.gasPrice),r=V.from(t.maxFeePerGas||0);e.eq(r)||is.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[ds(t.chainId||0,"chainId"),ds(t.nonce||0,"nonce"),ds(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),ds(t.maxFeePerGas||0,"maxFeePerGas"),ds(t.gasLimit||0,"gasLimit"),null!=t.to?ve(t.to):"0x",ds(t.value||0,"value"),t.data||"0x",ms(t.accessList||[])];if(e){const t=U(e);r.push(ds(t.recoveryParam,"recoveryParam")),r.push(x(t.r)),r.push(x(t.s))}return F(["0x02",le(r)])}function ys(t,e){const r=[ds(t.chainId||0,"chainId"),ds(t.nonce||0,"nonce"),ds(t.gasPrice||0,"gasPrice"),ds(t.gasLimit||0,"gasLimit"),null!=t.to?ve(t.to):"0x",ds(t.value||0,"value"),t.data||"0x",ms(t.accessList||[])];if(e){const t=U(e);r.push(ds(t.recoveryParam,"recoveryParam")),r.push(x(t.r)),r.push(x(t.s))}return F(["0x01",le(r)])}function ws(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&is.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){gt(t,cs);const r=[];ls.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=_(B(n,i)),e.length&&n.length!==e.length&&n.length>0&&is.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=x(n),n.length>e.maxLength&&is.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(B(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&is.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!k(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(B(n)),r.push("0x"),r.push("0x")),!e)return le(r);const i=U(e);let s=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),s+=2*n+8,i.v>28&&i.v!==s&&is.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==s&&is.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(B(s)),r.push(x(_(i.r))),r.push(x(_(i.s))),le(r)}(t,e);switch(t.type){case 1:return ys(t,e);case 2:return gs(t,e)}return is.throwError(`unsupported transaction type: ${t.type}`,v.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function vs(t,e,r){try{const r=as(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){is.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=L(e[1],32),t.s=L(e[2],32);try{const e=ne(r(t));t.from=us(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function bs(t){const e=_(t);if(e[0]>127)return function(t){const e=ue(t);9!==e.length&&6!==e.length&&is.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:as(e[0]).toNumber(),gasPrice:as(e[1]),gasLimit:as(e[2]),to:os(e[3]),value:as(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=V.from(e[6]).toNumber()}catch(t){return r}if(r.r=L(e[7],32),r.s=L(e[8],32),V.from(r.r).isZero()&&V.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let n=r.v-27;const i=e.slice(0,6);0!==r.chainId&&(i.push(B(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const s=ne(le(i));try{r.from=us(s,{r:B(r.r),s:B(r.s),recoveryParam:n})}catch(t){}r.hash=ne(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=ue(t.slice(1));8!==e.length&&11!==e.length&&is.throwArgumentError("invalid component count for transaction type: 1","payload",B(t));const r={type:1,chainId:as(e[0]).toNumber(),nonce:as(e[1]).toNumber(),gasPrice:as(e[2]),gasLimit:as(e[3]),to:os(e[4]),value:as(e[5]),data:e[6],accessList:ps(e[7])};return 8===e.length||(r.hash=ne(t),vs(r,e.slice(8),ys)),r}(e);case 2:return function(t){const e=ue(t.slice(1));9!==e.length&&12!==e.length&&is.throwArgumentError("invalid component count for transaction type: 2","payload",B(t));const r=as(e[2]),n=as(e[3]),i={type:2,chainId:as(e[0]).toNumber(),nonce:as(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:as(e[4]),to:os(e[5]),value:as(e[6]),data:e[7],accessList:ps(e[8])};return 9===e.length||(i.hash=ne(t),vs(i,e.slice(9),gs)),i}(e)}return is.throwError(`unsupported transaction type: ${e[0]}`,v.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var Es=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const As=new v("contracts/5.8.0"),ks={chainId:!0,data:!0,from:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0,customData:!0,ccipReadEnabled:!0};function Ss(t,e){return Es(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&As.throwArgumentError("invalid address or ENS name","name",r);try{return ve(r)}catch(t){}t||As.throwError("a provider or signer is needed to resolve ENS names",v.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&As.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function Cs(t,e,r){return Es(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>Cs(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield Ss(t,e):"tuple"===r.type?yield Cs(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>Cs(t,e,r.arrayChildren))):Promise.reject(As.makeError("invalid value for array",v.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function _s(t,e,r){return Es(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=yt(r.pop())),As.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=mt({override:Ss(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>Es(this,void 0,void 0,function*(){return ve(t.signer)!==t.override&&As.throwError("Contract with a Signer cannot override from",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=Ss(t.provider,n.from));const i=yield mt({args:Cs(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:mt(n)||{}}),s=t.interface.encodeFunctionData(e,i.args),o={data:s,to:i.address},a=i.overrides;if(null!=a.nonce&&(o.nonce=V.from(a.nonce).toNumber()),null!=a.gasLimit&&(o.gasLimit=V.from(a.gasLimit)),null!=a.gasPrice&&(o.gasPrice=V.from(a.gasPrice)),null!=a.maxFeePerGas&&(o.maxFeePerGas=V.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(o.maxPriorityFeePerGas=V.from(a.maxPriorityFeePerGas)),null!=a.from&&(o.from=a.from),null!=a.type&&(o.type=a.type),null!=a.accessList&&(o.accessList=ps(a.accessList)),null==o.gasLimit&&null!=e.gas){let t=21e3;const r=_(s);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);o.gasLimit=V.from(e.gas).add(t)}if(a.value){const t=V.from(a.value);t.isZero()||e.payable||As.throwError("non-payable method cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),o.value=t}a.customData&&(o.customData=yt(a.customData)),a.ccipReadEnabled&&(o.ccipReadEnabled=!!a.ccipReadEnabled),delete n.nonce,delete n.gasLimit,delete n.gasPrice,delete n.from,delete n.value,delete n.type,delete n.accessList,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.customData,delete n.ccipReadEnabled;const l=Object.keys(n).filter(t=>null!=n[t]);return l.length&&As.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,v.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),o})}function Ns(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=Et(r),i=null;try{i=t.interface.parseLog(r)}catch(t){}return i&&(n.args=i.args,n.decode=(e,r)=>t.interface.decodeEventLog(i.eventFragment,e,r),n.event=i.name,n.eventSignature=i.signature),n.removeListener=()=>t.provider,n.getBlock=()=>t.provider.getBlock(e.blockHash),n.getTransaction=()=>t.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>Promise.resolve(e),n}),e))}function xs(t,e,r){const n=t.signer||t.provider;return function(...i){return Es(this,void 0,void 0,function*(){let s;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=yt(i.pop());null!=t.blockTag&&(s=yield t.blockTag),delete t.blockTag,i.push(t)}null!=t.deployTransaction&&(yield t._deployed(s));const o=yield _s(t,e,i),a=yield n.call(o,s);try{let n=t.interface.decodeFunctionResult(e,a);return r&&1===e.outputs.length&&(n=n[0]),n}catch(e){throw e.code===v.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=o),e}})}}function Ts(t,e,r){return e.constant?xs(t,e,r):function(t,e){return function(...r){return Es(this,void 0,void 0,function*(){t.signer||As.throwError("sending a transaction requires a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield _s(t,e,r),i=yield t.signer.sendTransaction(n);return Ns(t,i),i})}}(t,e)}function Is(t){return!t.address||null!=t.topics&&0!==t.topics.length?(t.address||"*")+"@"+(t.topics?t.topics.map(t=>Array.isArray(t)?t.join("|"):t).join(":"):""):"*"}class Ps{constructor(t,e){ft(this,"tag",t),ft(this,"filter",e),this._listeners=[]}addListener(t,e){this._listeners.push({listener:t,once:e})}removeListener(t){let e=!1;this._listeners=this._listeners.filter(r=>!(!e&&r.listener===t)||(e=!0,!1))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(t=>t.listener)}listenerCount(){return this._listeners.length}run(t){const e=this.listenerCount();return this._listeners=this._listeners.filter(e=>{const r=t.slice();return setTimeout(()=>{e.listener.apply(this,r)},0),!e.once}),e}prepareEvent(t){}getEmit(t){return[t]}}class Bs extends Ps{constructor(){super("error",null)}}class Ms extends Ps{constructor(t,e,r,n){const i={address:t};let s=e.getEventTopic(r);n?(s!==n[0]&&As.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[s],super(Is(i),i),ft(this,"address",t),ft(this,"interface",e),ft(this,"fragment",r)}prepareEvent(t){super.prepareEvent(t),t.event=this.fragment.name,t.eventSignature=this.fragment.format(),t.decode=(t,e)=>this.interface.decodeEventLog(this.fragment,t,e);try{t.args=this.interface.decodeEventLog(this.fragment,t.data,t.topics)}catch(e){t.args=null,t.decodeError=e}}getEmit(t){const e=Jt(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Rs extends Ps{constructor(t,e){super("*",{address:t}),ft(this,"address",t),ft(this,"interface",e)}prepareEvent(t){super.prepareEvent(t);try{const e=this.interface.parseLog(t);t.event=e.name,t.eventSignature=e.signature,t.decode=(t,r)=>this.interface.decodeEventLog(e.eventFragment,t,r),t.args=e.args}catch(t){}}}class Fs{constructor(t,e,r){ft(this,"interface",pt(new.target,"getInterface")(e)),null==r?(ft(this,"provider",null),ft(this,"signer",null)):xn.isSigner(r)?(ft(this,"provider",r.provider||null),ft(this,"signer",r)):kn.isProvider(r)?(ft(this,"provider",r),ft(this,"signer",null)):As.throwArgumentError("invalid signer or provider","signerOrProvider",r),ft(this,"callStatic",{}),ft(this,"estimateGas",{}),ft(this,"functions",{}),ft(this,"populateTransaction",{}),ft(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];ft(this.filters,e,(...t)=>({address:this.address,topics:this.interface.encodeFilterTopics(r,t)})),t[r.name]||(t[r.name]=[]),t[r.name].push(e)}),Object.keys(t).forEach(e=>{const r=t[e];1===r.length?ft(this.filters,e,this.filters[r[0]]):As.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(ft(this,"_runningEvents",{}),ft(this,"_wrappedEmits",{}),null==t&&As.throwArgumentError("invalid contract address or ENS name","addressOrName",t),ft(this,"address",t),this.provider)ft(this,"resolvedAddress",Ss(this.provider,t));else try{ft(this,"resolvedAddress",Promise.resolve(ve(t)))}catch(t){As.throwError("provider is required to use ENS name as contract address",v.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(t=>{});const n={},i={};Object.keys(this.interface.functions).forEach(t=>{const e=this.interface.functions[t];if(i[t])As.warn(`Duplicate ABI entry for ${JSON.stringify(t)}`);else{i[t]=!0;{const r=e.name;n[`%${r}`]||(n[`%${r}`]=[]),n[`%${r}`].push(t)}null==this[t]&&ft(this,t,Ts(this,e,!0)),null==this.functions[t]&&ft(this.functions,t,Ts(this,e,!1)),null==this.callStatic[t]&&ft(this.callStatic,t,xs(this,e,!0)),null==this.populateTransaction[t]&&ft(this.populateTransaction,t,function(t,e){return function(...r){return _s(t,e,r)}}(this,e)),null==this.estimateGas[t]&&ft(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return Es(this,void 0,void 0,function*(){r||As.throwError("estimate require a provider or signer",v.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield _s(t,e,n);return yield r.estimateGas(i)})}}(this,e))}}),Object.keys(n).forEach(t=>{const e=n[t];if(e.length>1)return;t=t.substring(1);const r=e[0];try{null==this[t]&&ft(this,t,this[r])}catch(t){}null==this.functions[t]&&ft(this.functions,t,this.functions[r]),null==this.callStatic[t]&&ft(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&ft(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&ft(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return be(t)}static getInterface(t){return vn.isInterface(t)?t:new vn(t)}deployed(){return this._deployed()}_deployed(t){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(()=>this):this._deployedPromise=this.provider.getCode(this.address,t).then(t=>("0x"===t&&As.throwError("contract not deployed",v.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||As.throwError("sending a transactions require a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=yt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&As.throwError("cannot override "+t,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(e))}connect(t){"string"==typeof t&&(t=new Tn(t,this.provider));const e=new this.constructor(this.address,this.interface,t);return this.deployTransaction&&ft(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return gn.isIndexed(t)}_normalizeRunningEvent(t){return this._runningEvents[t.tag]?this._runningEvents[t.tag]:t}_getRunningEvent(t){if("string"==typeof t){if("error"===t)return this._normalizeRunningEvent(new Bs);if("event"===t)return this._normalizeRunningEvent(new Ps("event",null));if("*"===t)return this._normalizeRunningEvent(new Rs(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new Ms(this.address,this.interface,e))}if(t.topics&&t.topics.length>0){try{const e=t.topics[0];if("string"!=typeof e)throw new Error("invalid topic");const r=this.interface.getEvent(e);return this._normalizeRunningEvent(new Ms(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new Ps(Is(e),e))}return this._normalizeRunningEvent(new Rs(this.address,this.interface))}_checkRunningEvents(t){if(0===t.listenerCount()){delete this._runningEvents[t.tag];const e=this._wrappedEmits[t.tag];e&&t.filter&&(this.provider.off(t.filter,e),delete this._wrappedEmits[t.tag])}}_wrapEvent(t,e,r){const n=Et(e);return n.removeListener=()=>{r&&(t.removeListener(r),this._checkRunningEvents(t))},n.getBlock=()=>this.provider.getBlock(e.blockHash),n.getTransaction=()=>this.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>this.provider.getTransactionReceipt(e.transactionHash),t.prepareEvent(n),n}_addEventListener(t,e,r){if(this.provider||As.throwError("events require a provider or a signer with a provider",v.errors.UNSUPPORTED_OPERATION,{operation:"once"}),t.addListener(e,r),this._runningEvents[t.tag]=t,!this._wrappedEmits[t.tag]){const r=r=>{let n=this._wrapEvent(t,r,e);if(null==n.decodeError)try{const e=t.getEmit(n);this.emit(t.filter,...e)}catch(t){n.decodeError=t.error}null!=t.filter&&this.emit("event",n),null!=n.decodeError&&this.emit("error",n.decodeError,n)};this._wrappedEmits[t.tag]=r,null!=t.filter&&this.provider.on(t.filter,r)}}queryFilter(t,e,r){const n=this._getRunningEvent(t),i=yt(n.filter);return"string"==typeof e&&I(e,32)?(null!=r&&As.throwArgumentError("cannot specify toBlock with blockhash","toBlock",r),i.blockHash=e):(i.fromBlock=null!=e?e:0,i.toBlock=null!=r?r:"latest"),this.provider.getLogs(i).then(t=>t.map(t=>this._wrapEvent(n,t,null)))}on(t,e){return this._addEventListener(this._getRunningEvent(t),e,!1),this}once(t,e){return this._addEventListener(this._getRunningEvent(t),e,!0),this}emit(t,...e){if(!this.provider)return!1;const r=this._getRunningEvent(t),n=r.run(e)>0;return this._checkRunningEvents(r),n}listenerCount(t){return this.provider?null==t?Object.keys(this._runningEvents).reduce((t,e)=>t+this._runningEvents[e].listenerCount(),0):this._getRunningEvent(t).listenerCount():0}listeners(t){if(!this.provider)return[];if(null==t){const t=[];for(let e in this._runningEvents)this._runningEvents[e].listeners().forEach(e=>{t.push(e)});return t}return this._getRunningEvent(t).listeners()}removeAllListeners(t){if(!this.provider)return this;if(null==t){for(const t in this._runningEvents){const e=this._runningEvents[t];e.removeAllListeners(),this._checkRunningEvents(e)}return this}const e=this._getRunningEvent(t);return e.removeAllListeners(),this._checkRunningEvents(e),this}off(t,e){if(!this.provider)return this;const r=this._getRunningEvent(t);return r.removeListener(e),this._checkRunningEvents(r),this}removeListener(t,e){return this.off(t,e)}}class Os extends Fs{}class Ds{constructor(t){ft(this,"alphabet",t),ft(this,"base",t.length),ft(this,"_alphabetMap",{}),ft(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=_(t);if(0===e.length)return"";let r=[0];for(let t=0;t<e.length;++t){let n=e[t];for(let t=0;t<r.length;++t)n+=r[t]<<8,r[t]=n%this.base,n=n/this.base|0;for(;n>0;)r.push(n%this.base),n=n/this.base|0}let n="";for(let t=0;0===e[t]&&t<e.length-1;++t)n+=this._leader;for(let t=r.length-1;t>=0;--t)n+=this.alphabet[r[t]];return n}decode(t){if("string"!=typeof t)throw new TypeError("Expected String");let e=[];if(0===t.length)return new Uint8Array(e);e.push(0);for(let r=0;r<t.length;r++){let n=this._alphabetMap[t[r]];if(void 0===n)throw new Error("Non-base"+this.base+" character");let i=n;for(let t=0;t<e.length;++t)i+=e[t]*this.base,e[t]=255&i,i>>=8;for(;i>0;)e.push(255&i),i>>=8}for(let r=0;t[r]===this._leader&&r<t.length-1;++r)e.push(0);return _(new Uint8Array(e.reverse()))}}new Ds("abcdefghijklmnopqrstuvwxyz234567");const Ls=new Ds("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Us;!function(t){t.sha256="sha256",t.sha512="sha512"}(Us||(Us={}));const zs=new v("sha2/5.8.0");function qs(t){return"0x"+mi.ripemd160().update(_(t)).digest("hex")}function js(t){return"0x"+mi.sha256().update(_(t)).digest("hex")}function Gs(t,e,r){return Us[t]||zs.throwError("unsupported algorithm "+t,v.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+mi.hmac(mi[t],_(e)).update(_(r)).digest("hex")}function Hs(t,e,r,n,i){let s;t=_(t),e=_(e);let o=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,h;l.set(e);for(let u=1;u<=o;u++){l[e.length]=u>>24&255,l[e.length+1]=u>>16&255,l[e.length+2]=u>>8&255,l[e.length+3]=255&u;let d=_(Gs(i,t,l));s||(s=d.length,h=new Uint8Array(s),o=Math.ceil(n/s),c=n-(o-1)*s),h.set(d);for(let e=1;e<r;e++){d=_(Gs(i,t,d));for(let t=0;t<s;t++)h[t]^=d[t]}const f=(u-1)*s,p=u===o?c:s;a.set(_(h).slice(0,p),f)}return B(a)}const Ws=new v("wordlists/5.8.0");class Ks{constructor(t){Ws.checkAbstract(new.target,Ks),ft(this,"locale",t)}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}static check(t){const e=[];for(let r=0;r<2048;r++){const n=t.getWord(r);if(r!==t.getWordIndex(n))return"0x";e.push(n)}return wr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Vs=null;function Js(t){if(null==Vs&&(Vs="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==Ks.check(t)))throw Vs=null,new Error("BIP39 Wordlist for en (English) FAILED")}const $s=new class extends Ks{constructor(){super("en")}getWord(t){return Js(this),Vs[t]}getWordIndex(t){return Js(this),Vs.indexOf(t)}};Ks.register($s);const Qs={en:$s},Ys=new v("hdnode/5.8.0"),Xs=V.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Zs=Qe("Bitcoin seed"),to=2147483648;function eo(t){return(1<<t)-1<<8-t}function ro(t){return(1<<t)-1}function no(t){return L(B(t),32)}function io(t){return Ls.encode(N([t,R(js(js(t)),0,4)]))}function so(t){if(null==t)return Qs.en;if("string"==typeof t){const e=Qs[t];return null==e&&Ys.throwArgumentError("unknown locale","wordlist",t),e}return t}const oo={},ao="m/44'/60'/0'/0/0";class lo{constructor(t,e,r,n,i,s,o,a){if(t!==oo)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new es(e);ft(this,"privateKey",t.privateKey),ft(this,"publicKey",t.compressedPublicKey)}else ft(this,"privateKey",null),ft(this,"publicKey",B(r));ft(this,"parentFingerprint",n),ft(this,"fingerprint",R(qs(js(this.publicKey)),0,4)),ft(this,"address",hs(this.publicKey)),ft(this,"chainCode",i),ft(this,"index",s),ft(this,"depth",o),null==a?(ft(this,"mnemonic",null),ft(this,"path",null)):"string"==typeof a?(ft(this,"mnemonic",null),ft(this,"path",a)):(ft(this,"mnemonic",a),ft(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return io(N([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",B(this.depth),this.parentFingerprint,L(B(this.index),4),this.chainCode,null!=this.privateKey?N(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new lo(oo,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(t){if(t>4294967295)throw new Error("invalid index - "+String(t));let e=this.path;e&&(e+="/"+(2147483647&t));const r=new Uint8Array(37);if(t&to){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(_(this.privateKey),1),e&&(e+="'")}else r.set(_(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=_(Gs(Us.sha512,this.chainCode,r)),i=n.slice(0,32),s=n.slice(32);let o=null,a=null;if(this.privateKey)o=no(V.from(i).add(this.privateKey).mod(Xs));else{a=new es(B(i))._addPoint(this.publicKey)}let l=e;const c=this.mnemonic;return c&&(l=Object.freeze({phrase:c.phrase,path:e,locale:c.locale||"en"})),new lo(oo,o,a,this.fingerprint,no(s),t,this.depth+1,l)}derivePath(t){const e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path - "+t);"m"===e[0]&&e.shift();let r=this;for(let t=0;t<e.length;t++){const n=e[t];if(n.match(/^[0-9]+'$/)){const t=parseInt(n.substring(0,n.length-1));if(t>=to)throw new Error("invalid path index - "+n);r=r._derive(to+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=to)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=_(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=_(Gs(Us.sha512,Zs,r));return new lo(oo,no(n.slice(0,32)),null,"0x00000000",no(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=uo(ho(t,r=so(r)),r),lo._fromSeed(co(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return lo._fromSeed(t,null)}static fromExtendedKey(t){const e=Ls.decode(t);82===e.length&&io(e.slice(0,78))===t||Ys.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=B(e.slice(5,9)),i=parseInt(B(e.slice(9,13)).substring(2),16),s=B(e.slice(13,45)),o=e.slice(45,78);switch(B(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new lo(oo,null,B(o),n,s,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new lo(oo,B(o.slice(1)),null,n,s,i,r,null)}return Ys.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function co(t,e){e||(e="");const r=Qe("mnemonic"+e,We.NFKD);return Hs(Qe(t,We.NFKD),r,2048,64,"sha512")}function ho(t,e){e=so(e),Ys.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=_(new Uint8Array(Math.ceil(11*r.length/8)));let i=0;for(let t=0;t<r.length;t++){let s=e.getWordIndex(r[t].normalize("NFKD"));if(-1===s)throw new Error("invalid mnemonic");for(let t=0;t<11;t++)s&1<<10-t&&(n[i>>3]|=1<<7-i%8),i++}const s=32*r.length/3,o=eo(r.length/3);if((_(js(n.slice(0,s/8)))[0]&o)!==(n[n.length-1]&o))throw new Error("invalid checksum");return B(n.slice(0,s/8))}function uo(t,e){if(e=so(e),(t=_(t)).length%4!=0||t.length<16||t.length>32)throw new Error("invalid entropy");const r=[0];let n=11;for(let e=0;e<t.length;e++)n>8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&ro(8-n)),n+=3);const i=t.length/4,s=_(js(t))[0]&eo(i);return r[r.length-1]<<=i,r[r.length-1]|=s>>8-i,e.join(r.map(t=>e.getWord(t)))}const fo=new v("random/5.8.0");const po=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let mo=po.crypto||po.msCrypto;function go(t){(t<=0||t>1024||t%1||t!=t)&&fo.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return mo.getRandomValues(e),_(e)}function yo(t){for(let e=(t=t.slice()).length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}mo&&mo.getRandomValues||(fo.warn("WARNING: Missing strong random number source"),mo={getRandomValues:function(t){return fo.throwError("no secure random source avaialble",v.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var wo,vo={exports:{}};var bo=(wo||(wo=1,function(t){!function(){function e(t){return parseInt(t)===t}function r(t){if(!e(t.length))return!1;for(var r=0;r<t.length;r++)if(!e(t[r])||t[r]<0||t[r]>255)return!1;return!0}function n(t,n){if(t.buffer&&ArrayBuffer.isView(t)&&"Uint8Array"===t.name)return n&&(t=t.slice?t.slice():Array.prototype.slice.call(t)),t;if(Array.isArray(t)){if(!r(t))throw new Error("Array contains invalid value: "+t);return new Uint8Array(t)}if(e(t.length)&&r(t))return new Uint8Array(t);throw new Error("unsupported array-like object")}function i(t){return new Uint8Array(t)}function s(t,e,r,n,i){null==n&&null==i||(t=t.slice?t.slice(n,i):Array.prototype.slice.call(t,n,i)),e.set(t,r)}var o,a={toBytes:function(t){var e=[],r=0;for(t=encodeURI(t);r<t.length;){var i=t.charCodeAt(r++);37===i?(e.push(parseInt(t.substr(r,2),16)),r+=2):e.push(i)}return n(e)},fromBytes:function(t){for(var e=[],r=0;r<t.length;){var n=t[r];n<128?(e.push(String.fromCharCode(n)),r++):n>191&&n<224?(e.push(String.fromCharCode((31&n)<<6|63&t[r+1])),r+=2):(e.push(String.fromCharCode((15&n)<<12|(63&t[r+1])<<6|63&t[r+2])),r+=3)}return e.join("")}},l=(o="0123456789abcdef",{toBytes:function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(parseInt(t.substr(r,2),16));return e},fromBytes:function(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(o[(240&n)>>4]+o[15&n])}return e.join("")}}),c={16:10,24:12,32:14},h=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],u=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],d=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],m=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],y=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],w=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],v=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],b=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],E=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],A=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],k=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],S=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(t){for(var e=[],r=0;r<t.length;r+=4)e.push(t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]);return e}var _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};_.prototype._prepare=function(){var t=c[this.key.length];if(null==t)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var e=0;e<=t;e++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var r,n=4*(t+1),i=this.key.length/4,s=C(this.key);for(e=0;e<i;e++)r=e>>2,this._Ke[r][e%4]=s[e],this._Kd[t-r][e%4]=s[e];for(var o,a=0,l=i;l<n;){if(o=s[i-1],s[0]^=u[o>>16&255]<<24^u[o>>8&255]<<16^u[255&o]<<8^u[o>>24&255]^h[a]<<24,a+=1,8!=i)for(e=1;e<i;e++)s[e]^=s[e-1];else{for(e=1;e<i/2;e++)s[e]^=s[e-1];for(o=s[i/2-1],s[i/2]^=u[255&o]^u[o>>8&255]<<8^u[o>>16&255]<<16^u[o>>24&255]<<24,e=i/2+1;e<i;e++)s[e]^=s[e-1]}for(e=0;e<i&&l<n;)d=l>>2,f=l%4,this._Ke[d][f]=s[e],this._Kd[t-d][f]=s[e++],l++}for(var d=1;d<t;d++)for(var f=0;f<4;f++)o=this._Kd[d][f],this._Kd[d][f]=E[o>>24&255]^A[o>>16&255]^k[o>>8&255]^S[255&o]},_.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Ke[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=f[n[s]>>24&255]^p[n[(s+1)%4]>>16&255]^m[n[(s+2)%4]>>8&255]^g[255&n[(s+3)%4]]^this._Ke[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Ke[e][s],l[4*s]=255&(u[n[s]>>24&255]^a>>24),l[4*s+1]=255&(u[n[(s+1)%4]>>16&255]^a>>16),l[4*s+2]=255&(u[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(u[255&n[(s+3)%4]]^a);return l},_.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Kd[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=y[n[s]>>24&255]^w[n[(s+3)%4]>>16&255]^v[n[(s+2)%4]>>8&255]^b[255&n[(s+1)%4]]^this._Kd[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Kd[e][s],l[4*s]=255&(d[n[s]>>24&255]^a>>24),l[4*s+1]=255&(d[n[(s+3)%4]>>16&255]^a>>16),l[4*s+2]=255&(d[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(d[255&n[(s+1)%4]]^a);return l};var N=function(t){if(!(this instanceof N))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new _(t)};N.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.encrypt(r),e,o);return e},N.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.decrypt(r),e,o);return e};var x=function(t,e){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastCipherblock=n(e,!0),this._aes=new _(t)};x.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16);for(var a=0;a<16;a++)r[a]^=this._lastCipherblock[a];this._lastCipherblock=this._aes.encrypt(r),s(this._lastCipherblock,e,o)}return e},x.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16),r=this._aes.decrypt(r);for(var a=0;a<16;a++)e[o+a]=r[a]^this._lastCipherblock[a];s(t,this._lastCipherblock,0,o,o+16)}return e};var T=function(t,e,r){if(!(this instanceof T))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 size)")}else e=i(16);r||(r=1),this.segmentSize=r,this._shiftRegister=n(e,!0),this._aes=new _(t)};T.prototype.encrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(r,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r},T.prototype.decrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(t,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r};var I=function(t,e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastPrecipher=n(e,!0),this._lastPrecipherIndex=16,this._aes=new _(t)};I.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),e[r]^=this._lastPrecipher[this._lastPrecipherIndex++];return e},I.prototype.decrypt=I.prototype.encrypt;var P=function(t){if(!(this instanceof P))throw Error("Counter must be instanitated with `new`");0===t||t||(t=1),"number"==typeof t?(this._counter=i(16),this.setValue(t)):this.setBytes(t)};P.prototype.setValue=function(t){if("number"!=typeof t||parseInt(t)!=t)throw new Error("invalid counter value (must be an integer)");for(var e=15;e>=0;--e)this._counter[e]=t%256,t>>=8},P.prototype.setBytes=function(t){if(16!=(t=n(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},P.prototype.increment=function(){for(var t=15;t>=0;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var B=function(t,e){if(!(this instanceof B))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof P||(e=new P(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new _(t)};B.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),e[r]^=this._remainingCounter[this._remainingCounterIndex++];return e},B.prototype.decrypt=B.prototype.encrypt;var M={AES:_,Counter:P,ModeOfOperation:{ecb:N,cbc:x,cfb:T,ofb:I,ctr:B},utils:{hex:l,utf8:a},padding:{pkcs7:{pad:function(t){var e=16-(t=n(t,!0)).length%16,r=i(t.length+e);s(t,r);for(var o=t.length;o<r.length;o++)r[o]=e;return r},strip:function(t){if((t=n(t,!0)).length<16)throw new Error("PKCS#7 invalid length");var e=t[t.length-1];if(e>16)throw new Error("PKCS#7 padding byte out of range");for(var r=t.length-e,o=0;o<e;o++)if(t[r+o]!==e)throw new Error("PKCS#7 invalid padding byte");var a=i(r);return s(t,a,0,0,r),a}}},_arrayTest:{coerceArray:n,createArray:i,copyArray:s}};t.exports=M}()}(vo)),vo.exports),Eo=s(bo);const Ao="json-wallets/5.8.0";function ko(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),_(t)}function So(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function Co(t){return"string"==typeof t?Qe(t,We.NFKC):_(t)}function _o(t,e){let r=t;const n=e.toLowerCase().split("/");for(let t=0;t<n.length;t++){let e=null;for(const i in r)if(i.toLowerCase()===n[t]){e=r[i];break}if(null===e)return null;r=e}return r}function No(t){const e=_(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=B(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const xo=new v(Ao);class To extends At{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function Io(t,e){const r=JSON.parse(t);e=Co(e);const n=ve(_o(r,"ethaddr")),i=ko(_o(r,"encseed"));i&&i.length%16==0||xo.throwArgumentError("invalid encseed","json",t);const s=_(Hs(e,e,2e3,32,"sha256")).slice(0,16),o=i.slice(0,16),a=i.slice(16),l=new Eo.ModeOfOperation.cbc(s,o),c=Eo.padding.pkcs7.strip(_(l.decrypt(a)));let h="";for(let t=0;t<c.length;t++)h+=String.fromCharCode(c[t]);const u=ne(Qe(h));return new To({_isCrowdsaleAccount:!0,address:n,privateKey:u})}function Po(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Bo(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return!(!e.version||parseInt(e.version)!==e.version||3!==parseInt(e.version))}var Mo,Ro={exports:{}};var Fo=(Mo||(Mo=1,function(t){!function(){const e=2147483647;function r(t){const e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);let r=1779033703,n=3144134277,i=1013904242,s=2773480762,o=1359893119,a=2600822924,l=528734635,c=1541459225;const h=new Uint32Array(64);function u(t){let u=0,d=t.length;for(;d>=64;){let f,p,m,g,y,w=r,v=n,b=i,E=s,A=o,k=a,S=l,C=c;for(p=0;p<16;p++)m=u+4*p,h[p]=(255&t[m])<<24|(255&t[m+1])<<16|(255&t[m+2])<<8|255&t[m+3];for(p=16;p<64;p++)f=h[p-2],g=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10,f=h[p-15],y=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,h[p]=(g+h[p-7]|0)+(y+h[p-16]|0)|0;for(p=0;p<64;p++)g=(((A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&k^~A&S)|0)+(C+(e[p]+h[p]|0)|0)|0,y=((w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10))+(w&v^w&b^v&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=v,v=w,w=g+y|0;r=r+w|0,n=n+v|0,i=i+b|0,s=s+E|0,o=o+A|0,a=a+k|0,l=l+S|0,c=c+C|0,u+=64,d-=64}}u(t);let d,f=t.length%64,p=t.length/536870912|0,m=t.length<<3,g=f<56?56:120,y=t.slice(t.length-f,t.length);for(y.push(128),d=f+1;d<g;d++)y.push(0);return y.push(p>>>24&255),y.push(p>>>16&255),y.push(p>>>8&255),y.push(p>>>0&255),y.push(m>>>24&255),y.push(m>>>16&255),y.push(m>>>8&255),y.push(m>>>0&255),u(y),[r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255]}function n(t,e,n){t=t.length<=64?t:r(t);const i=64+e.length+4,s=new Array(i),o=new Array(64);let a,l=[];for(a=0;a<64;a++)s[a]=54;for(a=0;a<t.length;a++)s[a]^=t[a];for(a=0;a<e.length;a++)s[64+a]=e[a];for(a=i-4;a<i;a++)s[a]=0;for(a=0;a<64;a++)o[a]=92;for(a=0;a<t.length;a++)o[a]^=t[a];function c(){for(let t=i-1;t>=i-4;t--){if(s[t]++,s[t]<=255)return;s[t]=0}}for(;n>=32;)c(),l=l.concat(r(o.concat(r(s)))),n-=32;return n>0&&(c(),l=l.concat(r(o.concat(r(s))).slice(0,n))),l}function i(t,e,r,n,i){let s;for(l(t,16*(2*r-1),i,0,16),s=0;s<2*r;s++)a(t,16*s,i,16),o(i,n),l(i,0,t,e+16*s,16);for(s=0;s<r;s++)l(t,e+2*s*16,t,16*s,16);for(s=0;s<r;s++)l(t,e+16*(2*s+1),t,16*(s+r),16)}function s(t,e){return t<<e|t>>>32-e}function o(t,e){l(t,0,e,0,16);for(let t=8;t>0;t-=2)e[4]^=s(e[0]+e[12],7),e[8]^=s(e[4]+e[0],9),e[12]^=s(e[8]+e[4],13),e[0]^=s(e[12]+e[8],18),e[9]^=s(e[5]+e[1],7),e[13]^=s(e[9]+e[5],9),e[1]^=s(e[13]+e[9],13),e[5]^=s(e[1]+e[13],18),e[14]^=s(e[10]+e[6],7),e[2]^=s(e[14]+e[10],9),e[6]^=s(e[2]+e[14],13),e[10]^=s(e[6]+e[2],18),e[3]^=s(e[15]+e[11],7),e[7]^=s(e[3]+e[15],9),e[11]^=s(e[7]+e[3],13),e[15]^=s(e[11]+e[7],18),e[1]^=s(e[0]+e[3],7),e[2]^=s(e[1]+e[0],9),e[3]^=s(e[2]+e[1],13),e[0]^=s(e[3]+e[2],18),e[6]^=s(e[5]+e[4],7),e[7]^=s(e[6]+e[5],9),e[4]^=s(e[7]+e[6],13),e[5]^=s(e[4]+e[7],18),e[11]^=s(e[10]+e[9],7),e[8]^=s(e[11]+e[10],9),e[9]^=s(e[8]+e[11],13),e[10]^=s(e[9]+e[8],18),e[12]^=s(e[15]+e[14],7),e[13]^=s(e[12]+e[15],9),e[14]^=s(e[13]+e[12],13),e[15]^=s(e[14]+e[13],18);for(let r=0;r<16;++r)t[r]+=e[r]}function a(t,e,r,n){for(let i=0;i<n;i++)r[i]^=t[e+i]}function l(t,e,r,n,i){for(;i--;)r[n++]=t[e++]}function c(t){if(!t||"number"!=typeof t.length)return!1;for(let e=0;e<t.length;e++){const r=t[e];if("number"!=typeof r||r%1||r<0||r>=256)return!1}return!0}function h(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function u(t,r,s,o,u,d,f){if(s=h(s,"N"),o=h(o,"r"),u=h(u,"p"),d=h(d,"dkLen"),0===s||s&s-1)throw new Error("N must be power of 2");if(s>e/128/o)throw new Error("N too large");if(o>e/128/u)throw new Error("r too large");if(!c(t))throw new Error("password must be an array or buffer");if(t=Array.prototype.slice.call(t),!c(r))throw new Error("salt must be an array or buffer");r=Array.prototype.slice.call(r);let p=n(t,r,128*u*o);const m=new Uint32Array(32*u*o);for(let t=0;t<m.length;t++){const e=4*t;m[t]=(255&p[e+3])<<24|(255&p[e+2])<<16|(255&p[e+1])<<8|255&p[e+0]}const g=new Uint32Array(64*o),y=new Uint32Array(32*o*s),w=32*o,v=new Uint32Array(16),b=new Uint32Array(16),E=u*s*2;let A,k,S=0,C=null,_=!1,N=0,x=0;const T=f?parseInt(1e3/o):4294967295,I="undefined"!=typeof setImmediate?setImmediate:setTimeout,P=function(){if(_)return f(new Error("cancelled"),S/E);let e;switch(N){case 0:k=32*x*o,l(m,k,g,0,w),N=1,A=0;case 1:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++)l(g,0,y,(A+t)*w,w),i(g,w,o,v,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<s)break;A=0,N=2;case 2:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++){const t=g[16*(2*o-1)]&s-1;a(y,t*w,g,w),i(g,w,o,v,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<s)break;if(l(g,0,m,k,w),x++,x<u){N=0;break}p=[];for(let t=0;t<m.length;t++)p.push(255&m[t]),p.push(m[t]>>8&255),p.push(m[t]>>16&255),p.push(m[t]>>24&255);const r=n(t,p,d);return f&&f(null,1,r),r}f&&I(P)};if(!f)for(;;){const t=P();if(null!=t)return t}P()}const d={scrypt:function(t,e,r,n,i,s,o){return new Promise(function(a,l){let c=0;o&&o(0),u(t,e,r,n,i,s,function(t,e,r){if(t)l(t);else if(r)o&&1!==c&&o(1),a(new Uint8Array(r));else if(o&&e!==c)return c=e,o(e)})})},syncScrypt:function(t,e,r,n,i,s){return new Uint8Array(u(t,e,r,n,i,s))}};t.exports=d}()}(Ro)),Ro.exports),Oo=s(Fo),Do=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Lo=new v(Ao);function Uo(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class zo extends At{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function qo(t,e){const r=ko(_o(t,"crypto/ciphertext"));if(B(ne(N([e.slice(16,32),r]))).substring(2)!==_o(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===_o(t,"crypto/cipher")){const n=ko(_o(t,"crypto/cipherparams/iv")),i=new Eo.Counter(n);return _(new Eo.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Lo.throwError("unsupported cipher",v.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),s=hs(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ve(e)!==s)throw new Error("address mismatch")}const o={_isKeystoreAccount:!0,address:s,privateKey:B(n)};if("0.1"===_o(t,"x-ethers/version")){const e=ko(_o(t,"x-ethers/mnemonicCiphertext")),r=ko(_o(t,"x-ethers/mnemonicCounter")),n=new Eo.Counter(r),s=new Eo.ModeOfOperation.ctr(i,n),a=_o(t,"x-ethers/path")||ao,l=_o(t,"x-ethers/locale")||"en",c=_(s.decrypt(e));try{const t=uo(c,l),e=lo.fromMnemonic(t,null,l).derivePath(a);if(e.privateKey!=o.privateKey)throw new Error("mnemonic mismatch");o.mnemonic=e.mnemonic}catch(t){if(t.code!==v.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new zo(o)}function jo(t,e,r,n,i){return _(Hs(t,e,r,n,i))}function Go(t,e,r,n,i){return Promise.resolve(jo(t,e,r,n,i))}function Ho(t,e,r,n,i){const s=Co(e),o=_o(t,"crypto/kdf");if(o&&"string"==typeof o){const e=function(t,e){return Lo.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===o.toLowerCase()){const r=ko(_o(t,"crypto/kdfparams/salt")),a=parseInt(_o(t,"crypto/kdfparams/n")),l=parseInt(_o(t,"crypto/kdfparams/r")),c=parseInt(_o(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",o),a&a-1&&e("N",a);const h=parseInt(_o(t,"crypto/kdfparams/dklen"));return 32!==h&&e("dklen",h),n(s,r,a,l,c,64,i)}if("pbkdf2"===o.toLowerCase()){const n=ko(_o(t,"crypto/kdfparams/salt"));let i=null;const o=_o(t,"crypto/kdfparams/prf");"hmac-sha256"===o?i="sha256":"hmac-sha512"===o?i="sha512":e("prf",o);const a=parseInt(_o(t,"crypto/kdfparams/c")),l=parseInt(_o(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(s,n,a,l,i)}}return Lo.throwArgumentError("unsupported key-derivation function","kdf",o)}function Wo(t,e,r){if(Po(t)){r&&r(0);const n=Io(t,e);return r&&r(1),Promise.resolve(n)}return Bo(t)?function(t,e,r){return Do(this,void 0,void 0,function*(){const n=JSON.parse(t);return qo(n,yield Ho(n,e,Go,Oo.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function Ko(t,e){if(Po(t))return Io(t,e);if(Bo(t))return function(t,e){const r=JSON.parse(t);return qo(r,Ho(r,e,jo,Oo.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var Vo=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Jo=new v("wallet/5.8.0");class $o extends xn{constructor(t,e){if(super(),null!=(r=t)&&I(r.privateKey,32)&&null!=r.address){const e=new es(t.privateKey);if(ft(this,"_signingKey",()=>e),ft(this,"address",hs(this.publicKey)),this.address!==ve(t.address)&&Jo.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;ft(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||ao,locale:e.locale||"en"}));const r=this.mnemonic;hs(lo.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Jo.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else ft(this,"_mnemonic",()=>null)}else{if(es.isSigningKey(t))"secp256k1"!==t.curve&&Jo.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),ft(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new es(t);ft(this,"_signingKey",()=>e)}ft(this,"_mnemonic",()=>null),ft(this,"address",hs(this.publicKey))}var r;e&&!kn.isProvider(e)&&Jo.throwArgumentError("invalid provider","provider",e),ft(this,"provider",e||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(t){return new $o(this,t)}signTransaction(t){return mt(t).then(e=>{null!=e.from&&(ve(e.from)!==this.address&&Jo.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(ne(ws(e)));return ws(e,r)})}signMessage(t){return Vo(this,void 0,void 0,function*(){return z(this._signingKey().signDigest(Jr(t)))})}_signTypedData(t,e,r){return Vo(this,void 0,void 0,function*(){const n=yield un.resolveNames(t,e,r,t=>(null==this.provider&&Jo.throwError("cannot resolve ENS names without a provider",v.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return z(this._signingKey().signDigest(un.hash(n.domain,e,n.value)))})}encrypt(t,e,r){if("function"!=typeof e||r||(r=e,e={}),r&&"function"!=typeof r)throw new Error("invalid callback");return e||(e={}),function(t,e,r,n){try{if(ve(t.address)!==hs(t.privateKey))throw new Error("address/privateKey mismatch");if(Uo(t)){const e=t.mnemonic;if(lo.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||ao).privateKey!=t.privateKey)throw new Error("mnemonic mismatch")}}catch(t){return Promise.reject(t)}"function"!=typeof r||n||(n=r,r={}),r||(r={});const i=_(t.privateKey),s=Co(e);let o=null,a=null,l=null;if(Uo(t)){const e=t.mnemonic;o=_(ho(e.phrase,e.locale||"en")),a=e.path||ao,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let h=null;h=r.salt?_(r.salt):go(32);let u=null;if(r.iv){if(u=_(r.iv),16!==u.length)throw new Error("invalid iv")}else u=go(16);let d=null;if(r.uuid){if(d=_(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=go(16);let f=1<<17,p=8,m=1;return r.scrypt&&(r.scrypt.N&&(f=r.scrypt.N),r.scrypt.r&&(p=r.scrypt.r),r.scrypt.p&&(m=r.scrypt.p)),Oo.scrypt(s,h,f,p,m,64,n).then(e=>{const r=(e=_(e)).slice(0,16),n=e.slice(16,32),s=e.slice(32,64),g=new Eo.Counter(u),y=_(new Eo.ModeOfOperation.ctr(r,g).encrypt(i)),w=ne(N([n,y])),v={address:t.address.substring(2).toLowerCase(),id:No(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:B(u).substring(2)},ciphertext:B(y).substring(2),kdf:"scrypt",kdfparams:{salt:B(h).substring(2),n:f,dklen:32,p:m,r:p},mac:w.substring(2)}};if(o){const t=go(16),e=new Eo.Counter(t),r=_(new Eo.ModeOfOperation.ctr(s,e).encrypt(o)),n=new Date,i=n.getUTCFullYear()+"-"+So(n.getUTCMonth()+1,2)+"-"+So(n.getUTCDate(),2)+"T"+So(n.getUTCHours(),2)+"-"+So(n.getUTCMinutes(),2)+"-"+So(n.getUTCSeconds(),2)+".0Z";v["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+v.address,mnemonicCounter:B(t).substring(2),mnemonicCiphertext:B(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(v)})}(this,t,e,r)}static createRandom(t){let e=go(16);t||(t={}),t.extraEntropy&&(e=_(R(ne(N([e,t.extraEntropy])),0,16)));const r=uo(e,t.locale);return $o.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return Wo(t,e,r).then(t=>new $o(t))}static fromEncryptedJsonSync(t,e){return new $o(Ko(t,e))}static fromMnemonic(t,e,r){return e||(e=ao),new $o(lo.fromMnemonic(t,null,r).derivePath(e))}}const Qo=new v("networks/5.8.0");function Yo(t){const e=function(e,r){null==r&&(r={});const n=[];if(e.InfuraProvider&&"-"!==r.infura)try{n.push(new e.InfuraProvider(t,r.infura))}catch(t){}if(e.EtherscanProvider&&"-"!==r.etherscan)try{n.push(new e.EtherscanProvider(t,r.etherscan))}catch(t){}if(e.AlchemyProvider&&"-"!==r.alchemy)try{n.push(new e.AlchemyProvider(t,r.alchemy))}catch(t){}if(e.PocketProvider&&"-"!==r.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const s=new e.PocketProvider(t,r.pocket);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}}if(e.CloudflareProvider&&"-"!==r.cloudflare)try{n.push(new e.CloudflareProvider(t))}catch(t){}if(e.AnkrProvider&&"-"!==r.ankr)try{const i=["ropsten"],s=new e.AnkrProvider(t,r.ankr);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}if(e.QuickNodeProvider&&"-"!==r.quicknode)try{n.push(new e.QuickNodeProvider(t,r.quicknode))}catch(t){}if(0===n.length)return null;if(e.FallbackProvider){let i=1;return null!=r.quorum?i=r.quorum:"homestead"===t&&(i=2),new e.FallbackProvider(n,i)}return n[0]};return e.renetwork=function(t){return Yo(t)},e}function Xo(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return Xo(t,e)},r}const Zo={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:Yo("homestead")},ta={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:Yo("ropsten")},ea={chainId:63,name:"classicMordor",_defaultProvider:Xo("https://www.ethercluster.com/mordor","classicMordor")},ra={unspecified:{chainId:0,name:"unspecified"},homestead:Zo,mainnet:Zo,morden:{chainId:2,name:"morden"},ropsten:ta,testnet:ta,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:Yo("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:Yo("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:Yo("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:Yo("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:Yo("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Xo("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:ea,classicTestnet:ea,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Xo("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:Yo("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:Yo("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:Yo("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function na(t){if(null==t)return null;if("number"==typeof t){for(const e in ra){const r=ra[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if("string"==typeof t){const e=ra[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=ra[t.name];if(!e)return"number"!=typeof t.chainId&&Qo.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&Qo.throwArgumentError("network chainId mismatch","network",t);let r=t._defaultProvider||null;var n;return null==r&&e._defaultProvider&&(r=(n=e._defaultProvider)&&"function"==typeof n.renetwork?e._defaultProvider.renetwork(t):e._defaultProvider),{name:t.name,chainId:e.chainId,ensAddress:t.ensAddress||e.ensAddress||null,_defaultProvider:r}}var ia=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};function sa(t,e){return ia(this,void 0,void 0,function*(){null==e&&(e={});const r={method:e.method||"GET",headers:e.headers||{},body:e.body||void 0};if(!0!==e.skipFetchSetup&&(r.mode="cors",r.cache="no-cache",r.credentials="same-origin",r.redirect="follow",r.referrer="client"),null!=e.fetchOptions){const t=e.fetchOptions;t.mode&&(r.mode=t.mode),t.cache&&(r.cache=t.cache),t.credentials&&(r.credentials=t.credentials),t.redirect&&(r.redirect=t.redirect),t.referrer&&(r.referrer=t.referrer)}const n=yield fetch(t,r),i=yield n.arrayBuffer(),s={};return n.headers.forEach?n.headers.forEach((t,e)=>{s[e.toLowerCase()]=t}):n.headers.keys().forEach(t=>{s[t.toLowerCase()]=n.headers.get(t)}),{headers:s,statusCode:n.status,statusMessage:n.statusText,body:_(new Uint8Array(i))}})}var oa=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const aa=new v("web/5.8.0");function la(t){return new Promise(e=>{setTimeout(e,t)})}function ca(t,e){if(null==t)return null;if("string"==typeof t)return t;if(k(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Ze(t)}catch(t){}return B(t)}return t}function ha(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;aa.assertArgument(n>0&&n%1==0,"invalid connection throttle limit","connection.throttleLimit",n);const i="object"==typeof t?t.throttleCallback:null,s="object"==typeof t&&"number"==typeof t.throttleSlotInterval?t.throttleSlotInterval:100;aa.assertArgument(s>0&&s%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",s);const o="object"==typeof t&&!!t.errorPassThrough,a={};let l=null;const c={method:"GET"};let h=!1,u=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||aa.throwArgumentError("missing URL","connection.url",t),l=t.url,"number"==typeof t.timeout&&t.timeout>0&&(u=t.timeout),t.headers)for(const e in t.headers)a[e.toLowerCase()]={key:e,value:String(t.headers[e])},["if-none-match","if-modified-since"].indexOf(e.toLowerCase())>=0&&(h=!0);if(c.allowGzip=!!t.allowGzip,null!=t.user&&null!=t.password){"https:"!==l.substring(0,6)&&!0!==t.allowInsecureAuthentication&&aa.throwError("basic authentication requires a secure https url",v.errors.INVALID_ARGUMENT,{argument:"url",url:l,user:t.user,password:"[REDACTED]"});const e=t.user+":"+t.password;a.authorization={key:"Authorization",value:"Basic "+Er(Qe(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=yt(t.fetchOptions))}const d=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),f=l?l.match(d):null;if(f)try{const t={statusCode:200,statusMessage:"OK",headers:{"content-type":f[1]||"text/plain"},body:f[2]?br(f[3]):(p=f[3],Qe(p.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))};let e=t.body;return r&&(e=r(t.body,t)),Promise.resolve(e)}catch(t){aa.throwError("processing response error",v.errors.SERVER_ERROR,{body:ca(f[1],f[2]),error:t,requestBody:null,requestMethod:"GET",url:l})}var p;e&&(c.method="POST",c.body=e,null==a["content-type"]&&(a["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==a["content-length"]&&(a["content-length"]={key:"Content-Length",value:String(e.length)}));const m={};Object.keys(a).forEach(t=>{const e=a[t];m[e.key]=e.value}),c.headers=m;const g=function(){let t=null;return{promise:new Promise(function(e,r){u&&(t=setTimeout(()=>{null!=t&&(t=null,r(aa.makeError("timeout",v.errors.TIMEOUT,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,timeout:u,url:l})))},u))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),y=function(){return oa(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield sa(l,c),t<n)if(301===e.statusCode||302===e.statusCode){const t=e.headers.location||"";if("GET"===c.method&&t.match(/^https:/)){l=e.headers.location;continue}}else if(429===e.statusCode){let r=!0;if(i&&(r=yield i(t,l)),r){let r=0;const n=e.headers["retry-after"];r="string"==typeof n&&n.match(/^[1-9][0-9]*$/)?1e3*parseInt(n):s*parseInt(String(Math.random()*Math.pow(2,t))),yield la(r);continue}}}catch(t){e=t.response,null==e&&(g.cancel(),aa.throwError("missing response",v.errors.SERVER_ERROR,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(h&&304===e.statusCode?a=null:!o&&(e.statusCode<200||e.statusCode>=300)&&(g.cancel(),aa.throwError("bad response",v.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:ca(a,e.headers?e.headers["content-type"]:null),requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return g.cancel(),t}catch(r){if(r.throttleRetry&&t<n){let e=!0;if(i&&(e=yield i(t,l)),e){const e=s*parseInt(String(Math.random()*Math.pow(2,t)));yield la(e);continue}}g.cancel(),aa.throwError("processing response error",v.errors.SERVER_ERROR,{body:ca(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})}return g.cancel(),a}return aa.throwError("failed response",v.errors.SERVER_ERROR,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([g.promise,y])}function ua(t,e,r){let n=null;if(null!=e){n=Qe(e);const r="string"==typeof t?{url:t}:yt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=yt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return ha(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Ze(t))}catch(e){aa.throwError("invalid JSON",v.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function da(t,e){return e||(e={}),null==(e=yt(e)).floor&&(e.floor=0),null==e.ceiling&&(e.ceiling=1e4),null==e.interval&&(e.interval=250),new Promise(function(r,n){let i=null,s=!1;const o=()=>!s&&(s=!0,i&&clearTimeout(i),!0);e.timeout&&(i=setTimeout(()=>{o()&&n(new Error("timeout"))},e.timeout));const a=e.retryLimit;let l=0;!function i(){return t().then(function(t){if(void 0!==t)o()&&r(t);else if(e.oncePoll)e.oncePoll.once("poll",i);else if(e.onceBlock)e.onceBlock.once("block",i);else if(!s){if(l++,l>a)return void(o()&&n(new Error("retry limit reached")));let t=e.interval*parseInt(String(Math.random()*Math.pow(2,l)));t<e.floor&&(t=e.floor),t>e.ceiling&&(t=e.ceiling),setTimeout(i,t)}return null},function(t){o()&&n(t)})}()})}var fa,pa;var ma=function(){if(pa)return fa;pa=1;for(var t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={},r=0;r<32;r++){var n=t.charAt(r);if(void 0!==e[n])throw new TypeError(n+" is ambiguous");e[n]=r}function i(t){var e=t>>25;return(33554431&t)<<5^996825010&-(1&e)^642813549&-(e>>1&1)^513874426&-(e>>2&1)^1027748829&-(e>>3&1)^705979059&-(e>>4&1)}function s(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=i(e)^n>>5}for(e=i(e),r=0;r<t.length;++r){var s=t.charCodeAt(r);e=i(e)^31&s}return e}function o(t,r){if(r=r||90,t.length<8)return t+" too short";if(t.length>r)return"Exceeds length limit";var n=t.toLowerCase(),o=t.toUpperCase();if(t!==n&&t!==o)return"Mixed-case string "+t;var a=(t=n).lastIndexOf("1");if(-1===a)return"No separator character for "+t;if(0===a)return"Missing prefix for "+t;var l=t.slice(0,a),c=t.slice(a+1);if(c.length<6)return"Data too short";var h=s(l);if("string"==typeof h)return h;for(var u=[],d=0;d<c.length;++d){var f=c.charAt(d),p=e[f];if(void 0===p)return"Unknown character "+f;h=i(h)^p,d+6>=c.length||u.push(p)}return 1!==h?"Invalid checksum for "+t:{prefix:l,words:u}}function a(t,e,r,n){for(var i=0,s=0,o=(1<<r)-1,a=[],l=0;l<t.length;++l)for(i=i<<e|t[l],s+=e;s>=r;)s-=r,a.push(i>>s&o);if(n)s>0&&a.push(i<<r-s&o);else{if(s>=e)return"Excess padding";if(i<<r-s&o)return"Non-zero padding"}return a}return fa={decodeUnsafe:function(){var t=o.apply(null,arguments);if("object"==typeof t)return t},decode:function(t){var e=o.apply(null,arguments);if("object"==typeof e)return e;throw new Error(e)},encode:function(e,r,n){if(n=n||90,e.length+7+r.length>n)throw new TypeError("Exceeds length limit");var o=s(e=e.toLowerCase());if("string"==typeof o)throw new Error(o);for(var a=e+"1",l=0;l<r.length;++l){var c=r[l];if(c>>5)throw new Error("Non 5-bit word");o=i(o)^c,a+=t.charAt(c)}for(l=0;l<6;++l)o=i(o);for(o^=1,l=0;l<6;++l){a+=t.charAt(o>>5*(5-l)&31)}return a},toWordsUnsafe:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e},toWords:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)},fromWordsUnsafe:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e},fromWords:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}},fa}(),ga=s(ma);const ya="providers/5.8.0",wa=new v(ya);class va{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const t={},e=this.address.bind(this),r=this.bigNumber.bind(this),n=this.blockTag.bind(this),i=this.data.bind(this),s=this.hash.bind(this),o=this.hex.bind(this),a=this.number.bind(this),l=this.type.bind(this);return t.transaction={hash:s,type:l,accessList:va.allowNull(this.accessList.bind(this),null),blockHash:va.allowNull(s,null),blockNumber:va.allowNull(a,null),transactionIndex:va.allowNull(a,null),confirmations:va.allowNull(a,null),from:e,gasPrice:va.allowNull(r),maxPriorityFeePerGas:va.allowNull(r),maxFeePerGas:va.allowNull(r),gasLimit:r,to:va.allowNull(e,null),value:r,nonce:a,data:i,r:va.allowNull(this.uint256),s:va.allowNull(this.uint256),v:va.allowNull(a),creates:va.allowNull(e,null),raw:va.allowNull(i)},t.transactionRequest={from:va.allowNull(e),nonce:va.allowNull(a),gasLimit:va.allowNull(r),gasPrice:va.allowNull(r),maxPriorityFeePerGas:va.allowNull(r),maxFeePerGas:va.allowNull(r),to:va.allowNull(e),value:va.allowNull(r),data:va.allowNull(t=>this.data(t,!0)),type:va.allowNull(a),accessList:va.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:s,address:e,topics:va.arrayOf(s),data:i,logIndex:a,blockHash:s},t.receipt={to:va.allowNull(this.address,null),from:va.allowNull(this.address,null),contractAddress:va.allowNull(e,null),transactionIndex:a,root:va.allowNull(o),gasUsed:r,logsBloom:va.allowNull(i),blockHash:s,transactionHash:s,logs:va.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:va.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:va.allowNull(r),status:va.allowNull(a),type:l},t.block={hash:va.allowNull(s),parentHash:s,number:a,timestamp:a,nonce:va.allowNull(o),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:va.allowNull(e),extraData:i,transactions:va.allowNull(va.arrayOf(s)),baseFeePerGas:va.allowNull(r)},t.blockWithTransactions=yt(t.block),t.blockWithTransactions.transactions=va.allowNull(va.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:va.allowNull(n,void 0),toBlock:va.allowNull(n,void 0),blockHash:va.allowNull(s,void 0),address:va.allowNull(e,void 0),topics:va.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:va.allowNull(a),blockHash:va.allowNull(s),transactionIndex:a,removed:va.allowNull(this.boolean.bind(this)),address:e,data:va.allowFalsish(i,"0x"),topics:va.arrayOf(s),transactionHash:s,logIndex:a},t}accessList(t){return ps(t||[])}number(t){return"0x"===t?0:V.from(t).toNumber()}type(t){return"0x"===t||null==t?0:V.from(t).toNumber()}bigNumber(t){return V.from(t)}boolean(t){if("boolean"==typeof t)return t;if("string"==typeof t){if("true"===(t=t.toLowerCase()))return!0;if("false"===t)return!1}throw new Error("invalid boolean - "+t)}hex(t,e){return"string"==typeof t&&(e||"0x"===t.substring(0,2)||(t="0x"+t),I(t))?t.toLowerCase():wa.throwArgumentError("invalid hash","value",t)}data(t,e){const r=this.hex(t,e);if(r.length%2!=0)throw new Error("invalid data; odd-length - "+t);return r}address(t){return ve(t)}callAddress(t){if(!I(t,32))return null;const e=ve(R(t,12));return e===Be?null:e}contractAddress(t){return be(t)}blockTag(t){if(null==t)return"latest";if("earliest"===t)return"0x0";switch(t){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return t}if("number"==typeof t||I(t))return O(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==M(r)?wa.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=V.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!I(t))throw new Error("invalid uint256");return L(t,32)}_block(t,e){null!=t.author&&null==t.miner&&(t.miner=t.author);const r=null!=t._difficulty?t._difficulty:t.difficulty,n=va.check(e,t);return n._difficulty=null==r?null:V.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return va.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&V.from(t.to).isZero()&&(t.to="0x0000000000000000000000000000000000000000"),null!=t.input&&null==t.data&&(t.data=t.input),null==t.to&&null==t.creates&&(t.creates=this.contractAddress(t)),1!==t.type&&2!==t.type||null!=t.accessList||(t.accessList=[]);const e=va.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;I(r)&&(r=V.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),I(r)&&(r=V.from(r).toNumber()),"number"!=typeof r&&null!=e.v&&(r=(e.v-35)/2,r<0&&(r=0),r=parseInt(r)),"number"!=typeof r&&(r=0),e.chainId=r}return e.blockHash&&"x"===e.blockHash.replace(/0/g,"")&&(e.blockHash=null),e}transaction(t){return bs(t)}receiptLog(t){return va.check(this.formats.receiptLog,t)}receipt(t){const e=va.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=V.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&wa.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):wa.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&wa.throwArgumentError("invalid root hash","value.root",e.root);return null!=e.status&&(e.byzantium=!0),e}topics(t){return Array.isArray(t)?t.map(t=>this.topics(t)):null!=t?this.hash(t,!0):null}filter(t){return va.check(this.formats.filter,t)}filterLog(t){return va.check(this.formats.filterLog,t)}static check(t,e){const r={};for(const n in t)try{const i=t[n](e[n]);void 0!==i&&(r[n]=i)}catch(t){throw t.checkKey=n,t.checkValue=e[n],t}return r}static allowNull(t,e){return function(r){return null==r?e:t(r)}}static allowFalsish(t,e){return function(r){return r?t(r):e}}static arrayOf(t){return function(e){if(!Array.isArray(e))throw new Error("not an array");const r=[];return e.forEach(function(e){r.push(t(e))}),r}}}function ba(t){return t&&"function"==typeof t.isCommunityResource}function Ea(t){return ba(t)&&t.isCommunityResource()}let Aa=!1;function ka(){Aa||(Aa=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Sa=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Ca=new v(ya);function _a(t){return null==t?"null":(32!==M(t)&&Ca.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Na(t){for(t=t.slice();t.length>0&&null==t[t.length-1];)t.pop();return t.map(t=>{if(Array.isArray(t)){const e={};t.forEach(t=>{e[_a(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return _a(t)}).join("&")}function xa(t){if("string"==typeof t){if(32===M(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Na(t);if(An.isForkEvent(t))throw Ca.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Na(t.topics||[])}throw new Error("invalid event - "+t)}function Ta(){return(new Date).getTime()}function Ia(t){return new Promise(e=>{setTimeout(e,t)})}const Pa=["block","network","pending","poll"];class Ba{constructor(t,e,r){ft(this,"tag",t),ft(this,"listener",e),ft(this,"once",r),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const t=this.tag.split(":");return"tx"!==t[0]?null:t[1]}get filter(){const t=this.tag.split(":");if("filter"!==t[0])return null;const e=t[1],r=""===(n=t[2])?[]:n.split(/&/g).map(t=>{if(""===t)return[];const e=t.split("|").map(t=>"null"===t?null:t);return 1===e.length?e[0]:e});var n;const i={};return r.length>0&&(i.topics=r),e&&"*"!==e&&(i.address=e),i}pollable(){return this.tag.indexOf(":")>=0||Pa.indexOf(this.tag)>=0}}const Ma={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Ra(t){return L(V.from(t).toHexString(),32)}function Fa(t){return Ls.encode(N([t,R(js(js(t)),0,4)]))}const Oa=new RegExp("^(ipfs)://(.*)$","i"),Da=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Oa,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function La(t,e){try{return Ze(Ua(t,e))}catch(t){}return null}function Ua(t,e){if("0x"===t)return null;const r=V.from(R(t,e,e+32)).toNumber(),n=V.from(R(t,r,r+32)).toNumber();return R(t,r+32,r+32+n)}function za(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):Ca.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function qa(t){const e=_(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function ja(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function Ga(t){const e=[];let r=0;for(let n=0;n<t.length;n++)e.push(null),r+=32;for(let n=0;n<t.length;n++){const i=_(t[n]);e[n]=qa(r),e.push(qa(i.length)),e.push(ja(i)),r+=32+32*Math.ceil(i.length/32)}return F(e)}class Ha{constructor(t,e,r,n){ft(this,"provider",t),ft(this,"name",r),ft(this,"address",t.formatter.address(e)),ft(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>V.from(t).eq(1)).catch(t=>{if(t.code===v.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Sa(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:F([t,Kr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=F(["0x9061b923",Ga([Vr(this.name),r.data])]));try{let t=yield this.provider.call(r);return _(t).length%32==4&&Ca.throwError("resolver threw error",v.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Ua(t,0)),t}catch(t){if(t.code===v.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Sa(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Ua(r,0):null})}_getAddress(t,e){const r=Ma[String(t)];if(null==r&&Ca.throwError(`unsupported coin type: ${t}`,v.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=_(e);if(null!=r.p2pkh){const t=e.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Fa(N([[r.p2pkh],"0x"+t[2]]))}}if(null!=r.p2sh){const t=e.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Fa(N([[r.p2sh],"0x"+t[2]]))}}if(null!=r.prefix){const t=n[1];let e=n[0];if(0===e?20!==t&&32!==t&&(e=-1):e=-1,e>=0&&n.length===2+t&&t>=1&&t<=75){const t=ga.toWords(n.slice(2));return t.unshift(e),ga.encode(r.prefix,t)}}return null}getAddress(t){return Sa(this,void 0,void 0,function*(){if(null==t&&(t=60),60===t)try{const t=yield this._fetch("0x3b3b57de");return"0x"===t||t===qe?null:this.provider.formatter.callAddress(t)}catch(t){if(t.code===v.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Ra(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&Ca.throwError("invalid or unsupported coin data",v.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Sa(this,void 0,void 0,function*(){const t=[{type:"name",content:this.name}];try{const e=yield this.getText("avatar");if(null==e)return null;for(let r=0;r<Da.length;r++){const n=e.match(Da[r]);if(null==n)continue;const i=n[1].toLowerCase();switch(i){case"https":return t.push({type:"url",content:e}),{linkage:t,url:e};case"data":return t.push({type:"data",content:e}),{linkage:t,url:e};case"ipfs":return t.push({type:"ipfs",content:e}),{linkage:t,url:za(e)};case"erc721":case"erc1155":{const r="erc721"===i?"0xc87b56dd":"0x0e89341c";t.push({type:i,content:e});const s=this._resolvedAddress||(yield this.getAddress()),o=(n[2]||"").split("/");if(2!==o.length)return null;const a=yield this.provider.formatter.address(o[0]),l=L(V.from(o[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:F(["0x6352211e",l])}));if(s!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=V.from(yield this.provider.call({to:a,data:F(["0x00fdd58e",L(s,32),l])}));if(e.isZero())return null;t.push({type:"balance",content:e.toString()})}const c={to:this.provider.formatter.address(o[0]),data:F([r,l])};let h=La(yield this.provider.call(c),0);if(null==h)return null;t.push({type:"metadata-url-base",content:h}),"erc1155"===i&&(h=h.replace("{id}",l.substring(2)),t.push({type:"metadata-url-expanded",content:h})),h.match(/^ipfs:/i)&&(h=za(h)),t.push({type:"metadata-url",content:h});const u=yield ua(h);if(!u)return null;t.push({type:"metadata",content:JSON.stringify(u)});let d=u.image;if("string"!=typeof d)return null;if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Oa))return null;t.push({type:"url-ipfs",content:d}),d=za(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Sa(this,void 0,void 0,function*(){const t=yield this._fetchBytes("0xbc1c58d1");if(null==t||"0x"===t)return null;const e=t.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t=parseInt(e[3],16);if(e[4].length===2*t)return"ipfs://"+Ls.encode("0x"+e[1])}const r=t.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(r){const t=parseInt(r[3],16);if(r[4].length===2*t)return"ipns://"+Ls.encode("0x"+r[1])}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return"bzz://"+n[1];const i=t.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const t={"=":"","+":"-","/":"_"};return"sia://"+Er("0x"+i[1]).replace(/[=+\/]/g,e=>t[e])}return Ca.throwError("invalid or unsupported content hash data",v.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Sa(this,void 0,void 0,function*(){let e=Qe(t);e=N([Ra(64),Ra(e.length),e]),e.length%32!=0&&(e=N([e,L("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",B(e));return null==r||"0x"===r?null:Ze(r)})}}let Wa=null,Ka=1;class Va extends kn{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),ft(this,"anyNetwork","any"===t),this.anyNetwork&&(t=this.detectNetwork()),t instanceof Promise)this._networkPromise=t,t.catch(t=>{}),this._ready().catch(t=>{});else{const e=pt(new.target,"getNetwork")(t);e?(ft(this,"_network",e),this.emit("network",e,null)):Ca.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Sa(this,void 0,void 0,function*(){if(null==this._network){let t=null;if(this._networkPromise)try{t=yield this._networkPromise}catch(t){}null==t&&(t=yield this.detectNetwork()),t||Ca.throwError("no network detected",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:ft(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return da(()=>this._ready().then(t=>t,t=>{if(t.code!==v.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==Wa&&(Wa=new va),Wa}static getNetwork(t){return na(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Sa(this,void 0,void 0,function*(){if(this.disableCcipRead||0===r.length)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),s=[];for(let t=0;t<r.length;t++){const e=r[t],o=e.replace("{sender}",n).replace("{data}",i),a=e.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:n}),l=yield ua({url:o,errorPassThrough:!0},a,(t,e)=>(t.status=e.statusCode,t));if(l.data)return l.data;const c=l.message||"unknown error";if(l.status>=400&&l.status<500)return Ca.throwError(`response not found during CCIP fetch: ${c}`,v.errors.SERVER_ERROR,{url:e,errorMessage:c});s.push(c)}return Ca.throwError(`error encountered during CCIP fetch: ${s.map(t=>JSON.stringify(t)).join(", ")}`,v.errors.SERVER_ERROR,{urls:r,errorMessages:s})})}_getInternalBlockNumber(t){return Sa(this,void 0,void 0,function*(){if(yield this._ready(),t>0)for(;this._internalBlockNumber;){const e=this._internalBlockNumber;try{const r=yield e;if(Ta()-r.respTime<=t)return r.blockNumber;break}catch(t){if(this._internalBlockNumber===e)break}}const e=Ta(),r=mt({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(t=>null,t=>t)}).then(({blockNumber:t,networkError:n})=>{if(n)throw this._internalBlockNumber===r&&(this._internalBlockNumber=null),n;const i=Ta();return(t=V.from(t).toNumber())<this._maxInternalBlockNumber&&(t=this._maxInternalBlockNumber),this._maxInternalBlockNumber=t,this._setFastBlockNumber(t),{blockNumber:t,reqTime:e,respTime:i}});return this._internalBlockNumber=r,r.catch(t=>{this._internalBlockNumber===r&&(this._internalBlockNumber=null)}),(yield r).blockNumber})}poll(){return Sa(this,void 0,void 0,function*(){const t=Ka++,e=[];let r=null;try{r=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(t){return void this.emit("error",t)}if(this._setFastBlockNumber(r),this.emit("poll",t,r),r!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=r-1),Math.abs(this._emitted.block-r)>1e3)Ca.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",Ca.makeError("network block skew detected",v.errors.NETWORK_ERROR,{blockNumber:r,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",r);else for(let t=this._emitted.block+1;t<=r;t++)this.emit("block",t);this._emitted.block!==r&&(this._emitted.block=r,Object.keys(this._emitted).forEach(t=>{if("block"===t)return;const e=this._emitted[t];"pending"!==e&&r-e>12&&delete this._emitted[t]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=r-1),this._events.forEach(t=>{switch(t.type){case"tx":{const r=t.hash;let n=this.getTransactionReceipt(r).then(t=>t&&null!=t.blockNumber?(this._emitted["t:"+r]=t.blockNumber,this.emit(r,t),null):null).catch(t=>{this.emit("error",t)});e.push(n);break}case"filter":if(!t._inflight){t._inflight=!0,-2===t._lastBlockNumber&&(t._lastBlockNumber=r-1);const n=t.filter;n.fromBlock=t._lastBlockNumber+1,n.toBlock=r;const i=n.toBlock-this._maxFilterBlockRange;i>n.fromBlock&&(n.fromBlock=i),n.fromBlock<0&&(n.fromBlock=0);const s=this.getLogs(n).then(e=>{t._inflight=!1,0!==e.length&&e.forEach(e=>{e.blockNumber>t._lastBlockNumber&&(t._lastBlockNumber=e.blockNumber),this._emitted["b:"+e.blockHash]=e.blockNumber,this._emitted["t:"+e.transactionHash]=e.blockNumber,this.emit(n,e)})}).catch(e=>{this.emit("error",e),t._inflight=!1});e.push(s)}}}),this._lastBlockNumber=r,Promise.all(e).then(()=>{this.emit("didPoll",t)}).catch(t=>{this.emit("error",t)})}else this.emit("didPoll",t)})}resetEventsBlock(t){this._lastBlockNumber=t-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return Sa(this,void 0,void 0,function*(){return Ca.throwError("provider does not support network detection",v.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Sa(this,void 0,void 0,function*(){const t=yield this._ready(),e=yield this.detectNetwork();if(t.chainId!==e.chainId){if(this.anyNetwork)return this._network=e,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",e,t),yield Ia(0),this._network;const r=Ca.makeError("underlying network changed",v.errors.NETWORK_ERROR,{event:"changed",network:t,detectedNetwork:e});throw this.emit("error",r),r}return t})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(t=>{this._setFastBlockNumber(t)},t=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(t){t&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!t&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(t){if("number"!=typeof t||t<=0||parseInt(String(t))!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const t=Ta();return t-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=t,this._fastBlockNumberPromise=this.getBlockNumber().then(t=>((null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(t){null!=this._fastBlockNumber&&t<this._fastBlockNumber||(this._fastQueryDate=Ta(),(null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t,this._fastBlockNumberPromise=Promise.resolve(t)))}waitForTransaction(t,e,r){return Sa(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Sa(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(t);return(i?i.confirmations:0)>=e?i:new Promise((i,s)=>{const o=[];let a=!1;const l=function(){return!!a||(a=!0,o.forEach(t=>{t()}),!1)},c=t=>{t.confirmations<e||l()||i(t)};if(this.on(t,c),o.push(()=>{this.removeListener(t,c)}),n){let r=n.startBlock,i=null;const c=o=>Sa(this,void 0,void 0,function*(){a||(yield Ia(1e3),this.getTransactionCount(n.from).then(h=>Sa(this,void 0,void 0,function*(){if(!a){if(h<=n.nonce)r=o;else{{const e=yield this.getTransaction(t);if(e&&null!=e.blockNumber)return}for(null==i&&(i=r-3,i<n.startBlock&&(i=n.startBlock));i<=o;){if(a)return;const r=yield this.getBlockWithTransactions(i);for(let i=0;i<r.transactions.length;i++){const o=r.transactions[i];if(o.hash===t)return;if(o.from===n.from&&o.nonce===n.nonce){if(a)return;const r=yield this.waitForTransaction(o.hash,e);if(l())return;let i="replaced";return o.data===n.data&&o.to===n.to&&o.value.eq(n.value)?i="repriced":"0x"===o.data&&o.from===o.to&&o.value.isZero()&&(i="cancelled"),void s(Ca.makeError("transaction was replaced",v.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(o),hash:t,receipt:r}))}}i++}}a||this.once("block",c)}}),t=>{a||this.once("block",c)}))});if(a)return;this.once("block",c),o.push(()=>{this.removeListener("block",c)})}if("number"==typeof r&&r>0){const t=setTimeout(()=>{l()||s(Ca.makeError("timeout exceeded",v.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),o.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Sa(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return V.from(t)}catch(e){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return V.from(n)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return V.from(n).toNumber()}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return B(n)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>O(t))}),i=yield this.perform("getStorageAt",n);try{return B(i)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==M(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&Ca.throwError("Transaction hash mismatch from Provider.sendTransaction.",v.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Sa(this,void 0,void 0,function*(){let i;null==e&&(e=1),null==n&&(n=0),0!==e&&null!=r&&(i={data:t.data,from:t.from,nonce:t.nonce,to:t.to,value:t.value,startBlock:r});const s=yield this._waitForTransaction(t.hash,e,n,i);return null==s&&0===e?null:(this._emitted["t:"+t.hash]=s.blockNumber,0===s.status&&Ca.throwError("transaction failed",v.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:s}),s)}),n}sendTransaction(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>B(t)),r=this.formatter.transaction(t);null==r.confirmations&&(r.confirmations=0);const n=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const t=yield this.perform("sendTransaction",{signedTransaction:e});return this._wrapTransaction(r,t,n)}catch(t){throw t.transaction=r,t.transactionHash=r.hash,t}})}_getTransactionRequest(t){return Sa(this,void 0,void 0,function*(){const e=yield t,r={};return["from","to"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?this._getAddress(t):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?V.from(t):null))}),["type"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>null!=t?t:null))}),e.accessList&&(r.accessList=this.formatter.accessList(e.accessList)),["data"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?B(t):null))}),this.formatter.transactionRequest(yield mt(r))})}_getFilter(t){return Sa(this,void 0,void 0,function*(){t=yield t;const e={};return null!=t.address&&(e.address=this._getAddress(t.address)),["blockHash","topics"].forEach(r=>{null!=t[r]&&(e[r]=t[r])}),["fromBlock","toBlock"].forEach(r=>{null!=t[r]&&(e[r]=this._getBlockTag(t[r]))}),this.formatter.filter(yield mt(e))})}_call(t,e,r){return Sa(this,void 0,void 0,function*(){r>=10&&Ca.throwError("CCIP read exceeded maximum redirections",v.errors.SERVER_ERROR,{redirects:r,transaction:t});const n=t.to,i=yield this.perform("call",{transaction:t,blockTag:e});if(r>=0&&"latest"===e&&null!=n&&"0x556f1830"===i.substring(0,10)&&M(i)%32==4)try{const s=R(i,4),o=R(s,0,32);V.from(o).eq(n)||Ca.throwError("CCIP Read sender did not match",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=V.from(R(s,32,64)).toNumber(),c=V.from(R(s,l,l+32)).toNumber(),h=R(s,l+32);for(let e=0;e<c;e++){const r=La(h,32*e);null==r&&Ca.throwError("CCIP Read contained corrupt URL string",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const u=Ua(s,64);V.from(R(s,100,128)).isZero()||Ca.throwError("CCIP Read callback selector included junk",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=R(s,96,100),f=Ua(s,128),p=yield this.ccipReadFetch(t,u,a);null==p&&Ca.throwError("CCIP Read disabled or provided no URLs",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:F([d,Ga([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===v.errors.SERVER_ERROR)throw t}try{return B(i)}catch(r){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({transaction:this._getTransactionRequest(t),blockTag:this._getBlockTag(e),ccipReadEnabled:Promise.resolve(t.ccipReadEnabled)});return this._call(r.transaction,r.blockTag,r.ccipReadEnabled?0:-1)})}estimateGas(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield mt({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return V.from(r)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Sa(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&Ca.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&Ca.throwError("ENS name not configured",v.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(I(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),I(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){Ca.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return da(()=>Sa(this,void 0,void 0,function*(){const t=yield this.perform("getBlock",n);if(null==t)return null!=n.blockHash&&null==this._emitted["b:"+n.blockHash]||null!=n.blockTag&&r>this._emitted.block?null:void 0;if(e){let e=null;for(let r=0;r<t.transactions.length;r++){const n=t.transactions[r];if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){null==e&&(e=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let t=e-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}}const r=this.formatter.blockWithTransactions(t);return r.transactions=r.transactions.map(t=>this._wrapTransaction(t)),r}return this.formatter.block(t)}),{oncePoll:this})})}getBlock(t){return this._getBlock(t,!1)}getBlockWithTransactions(t){return this._getBlock(t,!0)}getTransaction(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return da(()=>Sa(this,void 0,void 0,function*(){const r=yield this.perform("getTransaction",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;const n=this.formatter.transactionResponse(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return this._wrapTransaction(n)}),{oncePoll:this})})}getTransactionReceipt(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return da(()=>Sa(this,void 0,void 0,function*(){const r=yield this.perform("getTransactionReceipt",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;if(null==r.blockHash)return;const n=this.formatter.receipt(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return n}),{oncePoll:this})})}getLogs(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield mt({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),va.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Sa(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Sa(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&Ca.throwArgumentError("invalid BlockTag","blockTag",t);let e=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return e+=t,e<0&&(e=0),this.formatter.blockTag(e)}return this.formatter.blockTag(t)})}getResolver(t){return Sa(this,void 0,void 0,function*(){let e=t;for(;;){if(""===e||"."===e)return null;if("eth"!==t&&"eth"===e)return null;const r=yield this._getResolver(e,"getResolver");if(null!=r){const n=new Ha(this,r,t);return e===t||(yield n.supportsWildcard())?n:null}e=e.split(".").slice(1).join(".")}})}_getResolver(t,e){return Sa(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||Ca.throwError("network does not support ENS",v.errors.UNSUPPORTED_OPERATION,{operation:e,network:r.name});try{const e=yield this.call({to:r.ensAddress,data:"0x0178b8bf"+Kr(t).substring(2)});return this.formatter.callAddress(e)}catch(t){}return null})}resolveName(t){return Sa(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(I(t))throw e}"string"!=typeof t&&Ca.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Sa(this,void 0,void 0,function*(){t=yield t;const e=(t=this.formatter.address(t)).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(e,"lookupAddress");if(null==r)return null;const n=La(yield this.call({to:r,data:"0x691f3431"+Kr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Sa(this,void 0,void 0,function*(){let e=null;if(I(t)){const r=this.formatter.address(t).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(r,"getAvatar");if(!n)return null;e=new Ha(this,n,r);try{const t=yield e.getAvatar();if(t)return t.url}catch(t){if(t.code!==v.errors.CALL_EXCEPTION)throw t}try{const t=La(yield this.call({to:n,data:"0x691f3431"+Kr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==v.errors.CALL_EXCEPTION)throw t;return null}}else if(e=yield this.getResolver(t),!e)return null;const r=yield e.getAvatar();return null==r?null:r.url})}perform(t,e){return Ca.throwError(t+" not implemented",v.errors.NOT_IMPLEMENTED,{operation:t})}_startEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_stopEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_addEventListener(t,e,r){const n=new Ba(xa(t),e,r);return this._events.push(n),this._startEvent(n),this}on(t,e){return this._addEventListener(t,e,!1)}once(t,e){return this._addEventListener(t,e,!0)}emit(t,...e){let r=!1,n=[],i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||(setTimeout(()=>{t.listener.apply(this,e)},0),r=!0,!t.once||(n.push(t),!1))),n.forEach(t=>{this._stopEvent(t)}),r}listenerCount(t){if(!t)return this._events.length;let e=xa(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=xa(t);return this._events.filter(t=>t.tag===e).map(t=>t.listener)}off(t,e){if(null==e)return this.removeAllListeners(t);const r=[];let n=!1,i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||t.listener!=e||(!!n||(n=!0,r.push(t),!1))),r.forEach(t=>{this._stopEvent(t)}),this}removeAllListeners(t){let e=[];if(null==t)e=this._events,this._events=[];else{const r=xa(t);this._events=this._events.filter(t=>t.tag!==r||(e.push(t),!1))}return e.forEach(t=>{this._stopEvent(t)}),this}}var Ja=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const $a=new v(ya),Qa=["call","estimateGas"];function Ya(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=I(t.data)?t.data:null;if(!e||r)return{message:t.message,data:r}}if("object"==typeof t){for(const r in t){const n=Ya(t[r],e);if(n)return n}return null}if("string"==typeof t)try{return Ya(JSON.parse(t),e)}catch(t){}return null}function Xa(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=Ya(e,!0);if(t)return t.data;$a.throwError("missing revert data in call exception; Transaction reverted without a reason string",v.errors.CALL_EXCEPTION,{data:"0x",transaction:n,error:e})}if("estimateGas"===t){let r=Ya(e.body,!1);null==r&&(r=Ya(e,!1)),r&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===v.errors.SERVER_ERROR&&e.error&&"string"==typeof e.error.message?i=e.error.message:"string"==typeof e.body?i=e.body:"string"==typeof e.responseText&&(i=e.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&$a.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&$a.throwError("nonce has already been used",v.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&$a.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&$a.throwError("legacy pre-eip-155 transactions not supported",v.errors.UNSUPPORTED_OPERATION,{error:e,method:t,transaction:n}),Qa.indexOf(t)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Za(t){return new Promise(function(e){setTimeout(e,t)})}function tl(t){if(t.error){const e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function el(t){return t?t.toLowerCase():t}const rl={};class nl extends xn{constructor(t,e,r){if(super(),t!==rl)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");ft(this,"provider",e),null==r&&(r=0),"string"==typeof r?(ft(this,"_address",this.provider.formatter.address(r)),ft(this,"_index",null)):"number"==typeof r?(ft(this,"_index",r),ft(this,"_address",null)):$a.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return $a.throwError("cannot alter JSON-RPC Signer connection",v.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new il(rl,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(t=>(t.length<=this._index&&$a.throwError("unknown account #"+this._index,v.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=yt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=yt(t);r.from=e,t.gasLimit=this.provider.estimateGas(r)}return null!=t.to&&(t.to=Promise.resolve(t.to).then(t=>Ja(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.provider.resolveName(t);return null==e&&$a.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),mt({tx:mt(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&$a.throwArgumentError("from address mismatch","transaction",t):e.from=r;const n=this.provider.constructor.hexlifyTransaction(e,{from:!0});return this.provider.send("eth_sendTransaction",[n]).then(t=>t,t=>("string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected transaction",v.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Xa("sendTransaction",t,n)))})}signTransaction(t){return $a.throwError("signing transactions is unsupported",v.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(t){return Ja(this,void 0,void 0,function*(){const e=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),r=yield this.sendUncheckedTransaction(t);try{return yield da(()=>Ja(this,void 0,void 0,function*(){const t=yield this.provider.getTransaction(r);if(null!==t)return this.provider._wrapTransaction(t,r,e)}),{oncePoll:this.provider})}catch(t){throw t.transactionHash=r,t}})}signMessage(t){return Ja(this,void 0,void 0,function*(){const e="string"==typeof t?Qe(t):t,r=yield this.getAddress();try{return yield this.provider.send("personal_sign",[B(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"signMessage",from:r,messageData:t}),e}})}_legacySignMessage(t){return Ja(this,void 0,void 0,function*(){const e="string"==typeof t?Qe(t):t,r=yield this.getAddress();try{return yield this.provider.send("eth_sign",[r.toLowerCase(),B(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:r,messageData:t}),e}})}_signTypedData(t,e,r){return Ja(this,void 0,void 0,function*(){const n=yield un.resolveNames(t,e,r,t=>this.provider.resolveName(t)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(un.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:n.domain,types:e,value:n.value}}),t}})}unlock(t){return Ja(this,void 0,void 0,function*(){const e=this.provider,r=yield this.getAddress();return e.send("personal_unlockAccount",[r.toLowerCase(),t,null])})}}class il extends nl{sendTransaction(t){return this.sendUncheckedTransaction(t).then(t=>({hash:t,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:e=>this.provider.waitForTransaction(t,e)}))}}const sl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class ol extends Va{constructor(t,e){let r=e;null==r&&(r=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(e=>{t(e)},t=>{e(t)})},0)})),super(r),t||(t=pt(this.constructor,"defaultUrl")()),ft(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(yt(t))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return Ja(this,void 0,void 0,function*(){yield Za(0);let t=null;try{t=yield this.send("eth_chainId",[])}catch(e){try{t=yield this.send("net_version",[])}catch(t){}}if(null!=t){const e=pt(this.constructor,"getNetwork");try{return e(V.from(t).toNumber())}catch(e){return $a.throwError("could not detect network",v.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return $a.throwError("could not detect network",v.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new nl(rl,this,t)}getUncheckedSigner(t){return this.getSigner(t).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(t=>t.map(t=>this.formatter.address(t)))}send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:Et(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=ua(this.connection,JSON.stringify(r),tl).then(t=>(this.emit("debug",{action:"response",request:r,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",error:t,request:r,provider:this}),t});return n&&(this._cache[t]=i,setTimeout(()=>{this._cache[t]=null},0)),i}prepareRequest(t,e){switch(t){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[el(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[el(e.address),e.blockTag]];case"getCode":return["eth_getCode",[el(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[el(e.address),L(e.position,32),e.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[e.signedTransaction]];case"getBlock":return e.blockTag?["eth_getBlockByNumber",[e.blockTag,!!e.includeTransactions]]:e.blockHash?["eth_getBlockByHash",[e.blockHash,!!e.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[e.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[e.transactionHash]];case"call":return["eth_call",[pt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[pt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=el(e.filter.address)),["eth_getLogs",[e.filter]]}return null}perform(t,e){return Ja(this,void 0,void 0,function*(){if("call"===t||"estimateGas"===t){const t=e.transaction;if(t&&null!=t.type&&V.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=yt(e)).transaction=yt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&$a.throwError(t+" not implemented",v.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return Xa(t,r,e)}})}_startEvent(t){"pending"===t.tag&&this._startPending(),super._startEvent(t)}_startPending(){if(null!=this._pendingFilter)return;const t=this,e=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=e,e.then(function(r){return function n(){t.send("eth_getFilterChanges",[r]).then(function(r){if(t._pendingFilter!=e)return null;let n=Promise.resolve();return r.forEach(function(e){t._emitted["t:"+e.toLowerCase()]="pending",n=n.then(function(){return t.getTransaction(e).then(function(e){return t.emit("pending",e),null})})}),n.then(function(){return Za(1e3)})}).then(function(){if(t._pendingFilter==e)return setTimeout(function(){n()},0),null;t.send("eth_uninstallFilter",[r])}).catch(t=>{})}(),r}).catch(t=>{})}_stopEvent(t){"pending"===t.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(t)}static hexlifyTransaction(t,e){const r=yt(sl);if(e)for(const t in e)e[t]&&(r[t]=!0);gt(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=O(V.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=B(t[e]))}),t.accessList&&(n.accessList=ps(t.accessList)),n}}let al=null;try{if(al=WebSocket,null==al)throw new Error("inject please")}catch(t){const e=new v(ya);al=function(){e.throwError("WebSockets not supported in this environment",v.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var ll=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const cl=new v(ya);let hl=1;class ul extends ol{constructor(t,e){"any"===e&&cl.throwError("WebSocketProvider does not support 'any' network yet",v.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,ft(this,"_websocket","string"==typeof t?new al(this.connection.url):t),ft(this,"_requests",{}),ft(this,"_subs",{}),ft(this,"_subIds",{}),ft(this,"_detectNetwork",super.detectNetwork()),this.websocket.onopen=()=>{this._wsReady=!0,Object.keys(this._requests).forEach(t=>{this.websocket.send(this._requests[t].payload)})},this.websocket.onmessage=t=>{const e=t.data,r=JSON.parse(e);if(null!=r.id){const t=String(r.id),n=this._requests[t];if(delete this._requests[t],void 0!==r.result)n.callback(null,r.result),this.emit("debug",{action:"response",request:JSON.parse(n.payload),response:r.result,provider:this});else{let t=null;r.error?(t=new Error(r.error.message||"unknown error"),ft(t,"code",r.error.code||null),ft(t,"response",e)):t=new Error("unknown error"),n.callback(t,void 0),this.emit("debug",{action:"response",error:t,request:JSON.parse(n.payload),provider:this})}}else if("eth_subscription"===r.method){const t=this._subs[r.params.subscription];t&&t.processFunc(r.params.result)}else console.warn("this should not happen")};const r=setInterval(()=>{this.emit("poll")},1e3);r.unref&&r.unref()}get websocket(){return this._websocket}detectNetwork(){return this._detectNetwork}get pollingInterval(){return 0}resetEventsBlock(t){cl.throwError("cannot reset events block on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){cl.throwError("cannot set polling interval on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return ll(this,void 0,void 0,function*(){return null})}set polling(t){t&&cl.throwError("cannot set polling on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=hl++;return new Promise((n,i)=>{const s=JSON.stringify({method:t,params:e,id:r,jsonrpc:"2.0"});this.emit("debug",{action:"request",request:JSON.parse(s),provider:this}),this._requests[String(r)]={callback:function(t,e){return t?i(t):n(e)},payload:s},this._wsReady&&this.websocket.send(s)})}static defaultUrl(){return"ws://localhost:8546"}_subscribe(t,e,r){return ll(this,void 0,void 0,function*(){let n=this._subIds[t];null==n&&(n=Promise.all(e).then(t=>this.send("eth_subscribe",t)),this._subIds[t]=n);const i=yield n;this._subs[i]={tag:t,processFunc:r}})}_startEvent(t){switch(t.type){case"block":this._subscribe("block",["newHeads"],t=>{const e=V.from(t.number).toNumber();this._emitted.block=e,this.emit("block",e)});break;case"pending":this._subscribe("pending",["newPendingTransactions"],t=>{this.emit("pending",t)});break;case"filter":this._subscribe(t.tag,["logs",this._getFilter(t.filter)],e=>{null==e.removed&&(e.removed=!1),this.emit(t.filter,this.formatter.filterLog(e))});break;case"tx":{const e=t=>{const e=t.hash;this.getTransactionReceipt(e).then(t=>{t&&this.emit(e,t)})};e(t),this._subscribe("tx",["newHeads"],t=>{this._events.filter(t=>"tx"===t.type).forEach(e)});break}case"debug":case"poll":case"willPoll":case"didPoll":case"error":break;default:console.log("unhandled:",t)}}_stopEvent(t){let e=t.tag;if("tx"===t.type){if(this._events.filter(t=>"tx"===t.type).length)return;e="tx"}else if(this.listenerCount(t.event))return;const r=this._subIds[e];r&&(delete this._subIds[e],r.then(t=>{this._subs[t]&&(delete this._subs[t],this.send("eth_unsubscribe",[t]))}))}destroy(){return ll(this,void 0,void 0,function*(){this.websocket.readyState===al.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}var dl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const fl=new v(ya);class pl extends ol{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return dl(this,void 0,void 0,function*(){let e=this.network;return null==e&&(e=yield t.detectNetwork.call(this),e||fl.throwError("no network detected",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(ft(this,"_network",e),this.emit("network",e,null))),e})}}class ml extends pl{constructor(t,e){fl.checkAbstract(new.target,ml),t=pt(new.target,"getNetwork")(t),e=pt(new.target,"getApiKey")(e);super(pt(new.target,"getUrl")(t,e),t),"string"==typeof e?ft(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{ft(this,t,e[t])})}_startPending(){fl.warn("WARNING: API provider does not support pending filters")}isCommunityResource(){return!1}getSigner(t){return fl.throwError("API provider does not support signing",v.errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(t){return t}static getUrl(t,e){return fl.throwError("not implemented; sub-classes must override getUrl",v.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const gl=new v(ya),yl="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class wl extends ul{constructor(t,e){const r=new vl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),ft(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===yl}}class vl extends ml{static getWebSocketProvider(t,e){return new wl(t,e)}static getApiKey(t){return null==t?yl:(t&&"string"!=typeof t&&gl.throwArgumentError("invalid apiKey","apiKey",t),t)}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":r="eth-goerli.g.alchemy.com/v2/";break;case"sepolia":r="eth-sepolia.g.alchemy.com/v2/";break;case"matic":r="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":r="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":r="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":r="arb-goerli.g.alchemy.com/v2/";break;case"arbitrum-sepolia":r="arb-sepolia.g.alchemy.com/v2/";break;case"optimism":r="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":r="opt-goerli.g.alchemy.com/v2/";break;case"optimism-sepolia":r="opt-sepolia.g.alchemy.com/v2/";break;default:gl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===yl&&ka(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===yl}}const bl=new v(ya),El="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function Al(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"sepolia":return"rpc.ankr.com/eth_sepolia/";case"matic":return"rpc.ankr.com/polygon/";case"maticmum":return"rpc.ankr.com/polygon_mumbai/";case"optimism":return"rpc.ankr.com/optimism/";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet/";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return bl.throwArgumentError("unsupported network","name",t)}class kl extends ml{isCommunityResource(){return this.apiKey===El}static getApiKey(t){return null==t?El:t}static getUrl(t,e){null==e&&(e=El);const r={allowGzip:!0,url:"https://"+Al(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===El&&ka(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var Sl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Cl=new v(ya);class _l extends ml{static getApiKey(t){return null!=t&&Cl.throwArgumentError("apiKey not supported for cloudflare","apiKey",t),null}static getUrl(t,e){let r=null;if("homestead"===t.name)r="https://cloudflare-eth.com/";else Cl.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Sl(this,void 0,void 0,function*(){if("getBlockNumber"===t){return(yield r.perform.call(this,"getBlock",{blockTag:"latest"})).number}return r.perform.call(this,t,e)})}}var Nl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const xl=new v(ya);function Tl(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?O(B(n)):"accessList"===r?"["+ps(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":B(n),e[r]=n)}return e}function Il(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"string"!=typeof t.message||!t.message.match(/^OK/)){const e=new Error("invalid response");throw e.result=JSON.stringify(t),(t.result||"").toLowerCase().indexOf("rate limit")>=0&&(e.throttleRetry=!0),e}return t.result}function Pl(t){if(t&&0==t.status&&"NOTOK"==t.message&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){const e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if("2.0"!=t.jsonrpc){const e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){const e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function Bl(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}function Ml(t,e,r){if("call"===t&&e.code===v.errors.SERVER_ERROR){const t=e.error;if(t&&(t.message.match(/reverted/i)||t.message.match(/VM execution error/i))){let r=t.data;if(r&&(r="0x"+r.replace(/^.*0x/i,"")),I(r))return r;xl.throwError("missing revert data in call exception",v.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===v.errors.SERVER_ERROR&&(e.error&&"string"==typeof e.error.message?n=e.error.message:"string"==typeof e.body?n=e.body:"string"==typeof e.responseText&&(n=e.responseText)),n=(n||"").toLowerCase(),n.match(/insufficient funds/)&&xl.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&xl.throwError("nonce has already been used",v.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&xl.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&xl.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Rl extends Va{constructor(t,e){super(t),ft(this,"baseUrl",this.getBaseUrl()),ft(this,"apiKey",e||null)}getBaseUrl(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}return xl.throwArgumentError("unsupported network","network",this.network.name)}getUrl(t,e){const r=Object.keys(e).reduce((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t},""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.baseUrl}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.baseUrl}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}fetch(t,e,r){return Nl(this,void 0,void 0,function*(){const n=r?this.getPostUrl():this.getUrl(t,e),i=r?this.getPostData(t,e):null,s="proxy"===t?Pl:Il;this.emit("debug",{action:"request",request:n,provider:this});const o={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&ka(),Promise.resolve(!0))};let a=null;i&&(o.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},a=Object.keys(i).map(t=>`${t}=${i[t]}`).join("&"));const l=yield ua(o,a,s||Pl);return this.emit("debug",{action:"response",request:n,response:Et(l),provider:this}),l})}detectNetwork(){return Nl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Nl(this,void 0,void 0,function*(){switch(t){case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:e.address,tag:e.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:e.address,tag:e.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:e.address,tag:e.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:e.address,position:e.position,tag:e.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:e.signedTransaction},!0).catch(t=>Ml("sendTransaction",t,e.signedTransaction));case"getBlock":if(e.blockTag)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:e.blockTag,boolean:e.includeTransactions?"true":"false"});throw new Error("getBlock by blockHash not implemented");case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:e.transactionHash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:e.transactionHash});case"call":{if("latest"!==e.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const t=Tl(e.transaction);t.module="proxy",t.action="eth_call";try{return yield this.fetch("proxy",t,!0)}catch(t){return Ml("call",t,e.transaction)}}case"estimateGas":{const t=Tl(e.transaction);t.module="proxy",t.action="eth_estimateGas";try{return yield this.fetch("proxy",t,!0)}catch(t){return Ml("estimateGas",t,e.transaction)}}case"getLogs":{const t={action:"getLogs"};if(e.filter.fromBlock&&(t.fromBlock=Bl(e.filter.fromBlock)),e.filter.toBlock&&(t.toBlock=Bl(e.filter.toBlock)),e.filter.address&&(t.address=e.filter.address),e.filter.topics&&e.filter.topics.length>0&&(e.filter.topics.length>1&&xl.throwError("unsupported topic count",v.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||xl.throwError("unsupported topic format",v.errors.UNSUPPORTED_OPERATION,{topic0:r}),t.topic0=r}const r=yield this.fetch("logs",t);let n={};for(let t=0;t<r.length;t++){const e=r[t];if(null==e.blockHash){if(null==n[e.blockNumber]){const t=yield this.getBlock(e.blockNumber);t&&(n[e.blockNumber]=t.hash)}e.blockHash=n[e.blockNumber]}}return r}case"getEtherPrice":return"homestead"!==this.network.name?0:parseFloat((yield this.fetch("stats",{action:"ethprice"})).ethusd)}return r.perform.call(this,t,e)})}getHistory(t,e,r){return Nl(this,void 0,void 0,function*(){const n={action:"txlist",address:yield this.resolveName(t),startblock:null==e?0:e,endblock:null==r?99999999:r,sort:"asc"};return(yield this.fetch("account",n)).map(t=>{["contractAddress","to"].forEach(function(e){""==t[e]&&delete t[e]}),null==t.creates&&null!=t.contractAddress&&(t.creates=t.contractAddress);const e=this.formatter.transactionResponse(t);return t.timeStamp&&(e.timestamp=parseInt(t.timeStamp)),e})})}isCommunityResource(){return null==this.apiKey}}var Fl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Ol=new v(ya);function Dl(){return(new Date).getTime()}function Ll(t){let e=null;for(let r=0;r<t.length;r++){const n=t[r];if(null==n)return null;e?e.name===n.name&&e.chainId===n.chainId&&(e.ensAddress===n.ensAddress||null==e.ensAddress&&null==n.ensAddress)||Ol.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Ul(t,e){t=t.slice().sort();const r=Math.floor(t.length/2);if(t.length%2)return t[r];const n=t[r-1],i=t[r];return null!=e&&Math.abs(n-i)>e?null:(n+i)/2}function zl(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(V.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>zl(t)));if("object"==typeof t){const e=Object.keys(t);return e.sort(),"{"+e.map(e=>{let r=t[e];return r="function"==typeof r?"[function]":zl(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let ql=1;function jl(t){let e=null,r=null,n=new Promise(n=>{e=function(){r&&(clearTimeout(r),r=null),n()},r=setTimeout(e,t)});return{cancel:e,getPromise:function(){return n},wait:t=>(n=n.then(t),n)}}const Gl=[v.errors.CALL_EXCEPTION,v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED,v.errors.UNPREDICTABLE_GAS_LIMIT],Hl=["address","args","errorArgs","errorSignature","method","transaction"];function Wl(t,e){const r={weight:t.weight};return Object.defineProperty(r,"provider",{get:()=>t.provider}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function Kl(t,e,r){let n=zl;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Ul(e.map(t=>t.result),2);if(null!=n)return n=Math.ceil(n),r.indexOf(n+1)>=0&&n++,n>=t._highestBlockNumber&&(t._highestBlockNumber=n),t._highestBlockNumber};case"getGasPrice":return function(t){const e=t.map(t=>t.result);return e.sort(),e[Math.floor(e.length/2)]};case"getEtherPrice":return function(t){return Ul(t.map(t=>t.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(t){return null==t?null:((t=yt(t)).confirmations=-1,zl(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=yt(t)).transactions=t.transactions.map(t=>((t=yt(t)).confirmations=-1,t)),zl(t))}:function(t){return null==t?null:zl(t)};break;default:throw new Error("unknown method: "+e)}return function(t,e){return function(r){const n={};r.forEach(e=>{const r=t(e.result);n[r]||(n[r]={count:0,result:e.result}),n[r].count++});const i=Object.keys(n);for(let t=0;t<i.length;t++){const r=n[i[t]];if(r.count>=e)return r.result}}}(n,t.quorum)}function Vl(t,e){return Fl(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:da(()=>new Promise((n,i)=>{setTimeout(function(){return r.blockNumber>=e?n(r):t.cancelled?n(null):n(void 0)},0)}),{oncePoll:r})})}function Jl(t,e,r,n){return Fl(this,void 0,void 0,function*(){let i=t.provider;switch(r){case"getBlockNumber":case"getGasPrice":return i[r]();case"getEtherPrice":if(i.getEtherPrice)return i.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),"call"===r&&n.blockTag?i[r](n.transaction,n.blockTag):i[r](n.transaction);case"getTransaction":case"getTransactionReceipt":return i[r](n.transactionHash);case"getLogs":{let r=n.filter;return(r.fromBlock&&I(r.fromBlock)||r.toBlock&&I(r.toBlock))&&(i=yield Vl(t,e)),i.getLogs(r)}}return Ol.throwError("unknown method error",v.errors.UNKNOWN_ERROR,{method:r,params:n})})}class $l extends Va{constructor(t,e){0===t.length&&Ol.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(kn.isProvider(t)){const e=Ea(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=yt(t);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=Ea(t)?2e3:750),null==r.weight&&(r.weight=1);const n=r.weight;return(n%1||n>512||n<1)&&Ol.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${e}].weight`,n),Object.freeze(r)}),n=r.reduce((t,e)=>t+e.weight,0);null==e?e=n/2:e>n&&Ol.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Ll(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),ft(this,"providerConfigs",Object.freeze(r)),ft(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Fl(this,void 0,void 0,function*(){return Ll(yield Promise.all(this.providerConfigs.map(t=>t.provider.getNetwork())))})}perform(t,e){return Fl(this,void 0,void 0,function*(){if("sendTransaction"===t){const t=yield Promise.all(this.providerConfigs.map(t=>t.provider.sendTransaction(e.signedTransaction).then(t=>t.hash,t=>t)));for(let e=0;e<t.length;e++){const r=t[e];if("string"==typeof r)return r}throw t[0]}-1===this._highestBlockNumber&&"getBlockNumber"!==t&&(yield this.getBlockNumber());const r=Kl(this,t,e),n=yo(this.providerConfigs.map(yt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let s=0,o=!0;for(;;){const a=Dl();let l=n.filter(t=>t.runner&&a-t.start<t.stallTimeout).reduce((t,e)=>t+e.weight,0);for(;l<this.quorum&&s<n.length;){const r=n[s++],o=ql++;r.start=Dl(),r.staller=jl(r.stallTimeout),r.staller.wait(()=>{r.staller=null}),r.runner=Jl(r,i,t,e).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,Dl()),request:{method:t,params:Et(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,Dl()),request:{method:t,params:Et(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,null),request:{method:t,params:Et(e)},provider:this}),l+=r.weight}const c=[];n.forEach(t=>{!t.done&&t.runner&&(c.push(t.runner),t.staller&&c.push(t.staller.getPromise()))}),c.length&&(yield Promise.race(c));const h=n.filter(t=>t.done&&null==t.error);if(h.length>=this.quorum){const t=r(h);if(void 0!==t)return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),t;o||(yield jl(100).getPromise()),o=!1}const u=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return Gl.indexOf(r)>=0&&(t[r]||(t[r]={error:e.error,weight:0}),t[r].weight+=e.weight),t},{});if(Object.keys(u).forEach(t=>{const e=u[t];if(e.weight<this.quorum)return;n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0});const r=e.error,i={};Hl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Ol.throwError(r.reason||r.message,t,i)}),0===n.filter(t=>!t.done).length)break}return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),Ol.throwError("failed to meet quorum",v.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Wl(t)),provider:this})})}}const Ql=new v(ya),Yl="84842078b09946638c03157f83405213";class Xl extends ul{constructor(t,e){const r=new Zl(t,e),n=r.connection;n.password&&Ql.throwError("INFURA WebSocket project secrets unsupported",v.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),ft(this,"apiKey",r.projectId),ft(this,"projectId",r.projectId),ft(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===Yl}}class Zl extends ml{static getWebSocketProvider(t,e){return new Xl(t,e)}static getApiKey(t){const e={apiKey:Yl,projectId:Yl,projectSecret:null};return null==t||("string"==typeof t?e.projectId=t:null!=t.projectSecret?(Ql.assertArgument("string"==typeof t.projectId,"projectSecret requires a projectId","projectId",t.projectId),Ql.assertArgument("string"==typeof t.projectSecret,"invalid projectSecret","projectSecret","[REDACTED]"),e.projectId=t.projectId,e.projectSecret=t.projectSecret):t.projectId&&(e.projectId=t.projectId),e.apiKey=e.projectId),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"homestead":r="mainnet.infura.io";break;case"goerli":r="goerli.infura.io";break;case"sepolia":r="sepolia.infura.io";break;case"matic":r="polygon-mainnet.infura.io";break;case"maticmum":r="polygon-mumbai.infura.io";break;case"optimism":r="optimism-mainnet.infura.io";break;case"optimism-goerli":r="optimism-goerli.infura.io";break;case"optimism-sepolia":r="optimism-sepolia.infura.io";break;case"arbitrum":r="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":r="arbitrum-goerli.infura.io";break;case"arbitrum-sepolia":r="arbitrum-sepolia.infura.io";break;default:Ql.throwError("unsupported network",v.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===Yl&&ka(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===Yl}}const tc=new v(ya);class ec extends ml{static getApiKey(t){return t&&"string"!=typeof t&&tc.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){tc.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(t.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:tc.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const rc=new v(ya),nc="62e1ad51b37b8e00394bda3b";class ic extends ml{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=nc:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:rc.throwArgumentError("unsupported PocketProvider apiKey","apiKey",t),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"goerli":r="eth-goerli.gateway.pokt.network";break;case"homestead":r="eth-mainnet.gateway.pokt.network";break;case"kovan":r="poa-kovan.gateway.pokt.network";break;case"matic":r="poly-mainnet.gateway.pokt.network";break;case"maticmum":r="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":r="eth-rinkeby.gateway.pokt.network";break;case"ropsten":r="eth-ropsten.gateway.pokt.network";break;default:rc.throwError("unsupported network",v.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={headers:{},url:`https://${r}/v1/lb/${e.applicationId}`};return null!=e.applicationSecretKey&&(n.user="",n.password=e.applicationSecretKey),n}isCommunityResource(){return this.applicationId===nc}}const sc=new v(ya);class oc extends ml{static getApiKey(t){return t&&"string"!=typeof t&&sc.throwArgumentError("invalid apiKey","apiKey",t),t||"919b412a057b5e9c9b6dce193c5a60242d6efadb"}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="ethers.quiknode.pro";break;case"goerli":r="ethers.ethereum-goerli.quiknode.pro";break;case"sepolia":r="ethers.ethereum-sepolia.quiknode.pro";break;case"holesky":r="ethers.ethereum-holesky.quiknode.pro";break;case"arbitrum":r="ethers.arbitrum-mainnet.quiknode.pro";break;case"arbitrum-goerli":r="ethers.arbitrum-goerli.quiknode.pro";break;case"arbitrum-sepolia":r="ethers.arbitrum-sepolia.quiknode.pro";break;case"base":r="ethers.base-mainnet.quiknode.pro";break;case"base-goerli":r="ethers.base-goerli.quiknode.pro";break;case"base-spolia":r="ethers.base-sepolia.quiknode.pro";break;case"bnb":r="ethers.bsc.quiknode.pro";break;case"bnbt":r="ethers.bsc-testnet.quiknode.pro";break;case"matic":r="ethers.matic.quiknode.pro";break;case"maticmum":r="ethers.matic-testnet.quiknode.pro";break;case"optimism":r="ethers.optimism.quiknode.pro";break;case"optimism-goerli":r="ethers.optimism-goerli.quiknode.pro";break;case"optimism-sepolia":r="ethers.optimism-sepolia.quiknode.pro";break;case"xdai":r="ethers.xdai.quiknode.pro";break;default:sc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const ac=new v(ya);let lc=1;function cc(t,e){const r="Web3LegacyFetcher";return function(t,n){const i={method:t,params:n,id:lc++,jsonrpc:"2.0"};return new Promise((t,n)=>{this.emit("debug",{action:"request",fetcher:r,request:Et(i),provider:this}),e(i,(e,s)=>{if(e)return this.emit("debug",{action:"response",fetcher:r,error:e,request:i,provider:this}),n(e);if(this.emit("debug",{action:"response",fetcher:r,request:i,response:s,provider:this}),s.error){const t=new Error(s.error.message);return t.code=s.error.code,t.data=s.error.data,n(t)}t(s.result)})})}}class hc extends ol{constructor(t,e){null==t&&ac.throwArgumentError("missing provider","provider",t);let r=null,n=null,i=null;"function"==typeof t?(r="unknown:",n=t):(r=t.host||t.path||"",!r&&t.isMetaMask&&(r="metamask"),i=t,t.request?(""===r&&(r="eip-1193:"),n=function(t){return function(e,r){null==r&&(r=[]);const n={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:Et(n),provider:this}),t.request(n).then(t=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,error:t,provider:this}),t})}}(t)):t.sendAsync?n=cc(0,t.sendAsync.bind(t)):t.send?n=cc(0,t.send.bind(t)):ac.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),ft(this,"jsonRpcFetchFunc",n),ft(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const uc=new v(ya);function dc(t,e){if(null==t&&(t="homestead"),"string"==typeof t){const e=t.match(/^(ws|http)s?:/i);if(e)switch(e[1].toLowerCase()){case"http":case"https":return new ol(t);case"ws":case"wss":return new ul(t);default:uc.throwArgumentError("unsupported URL scheme","network",t)}}const r=na(t);return r&&r._defaultProvider||uc.throwError("unsupported getDefaultProvider network",v.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:$l,AlchemyProvider:vl,AnkrProvider:kl,CloudflareProvider:_l,EtherscanProvider:Rl,InfuraProvider:Zl,JsonRpcProvider:ol,NodesmithProvider:ec,PocketProvider:ic,QuickNodeProvider:oc,Web3Provider:hc,IpcProvider:null},e)}var fc=Object.freeze({__proto__:null,AlchemyProvider:vl,AlchemyWebSocketProvider:wl,AnkrProvider:kl,BaseProvider:Va,CloudflareProvider:_l,EtherscanProvider:Rl,FallbackProvider:$l,Formatter:va,InfuraProvider:Zl,InfuraWebSocketProvider:Xl,IpcProvider:null,JsonRpcBatchProvider:class extends ol{send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const n={request:r,resolve:null,reject:null},i=new Promise((t,e)=>{n.resolve=t,n.reject=e});return this._pendingBatch.push(n),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(()=>{const t=this._pendingBatch;this._pendingBatch=null,this._pendingBatchAggregator=null;const e=t.map(t=>t.request);return this.emit("debug",{action:"requestBatch",request:Et(e),provider:this}),ua(this.connection,JSON.stringify(e)).then(r=>{this.emit("debug",{action:"response",request:e,response:r,provider:this}),t.forEach((t,e)=>{const n=r[e];if(n.error){const e=new Error(n.error.message);e.code=n.error.code,e.data=n.error.data,t.reject(e)}else t.resolve(n.result)})},r=>{this.emit("debug",{action:"response",error:r,request:e,provider:this}),t.forEach(t=>{t.reject(r)})})},10)),i}},JsonRpcProvider:ol,JsonRpcSigner:nl,NodesmithProvider:ec,PocketProvider:ic,Provider:kn,QuickNodeProvider:oc,Resolver:Ha,StaticJsonRpcProvider:pl,UrlJsonRpcProvider:ml,Web3Provider:hc,WebSocketProvider:ul,getDefaultProvider:dc,getNetwork:na,isCommunityResourcable:ba,isCommunityResource:Ea,showThrottleMessage:ka});const pc=new RegExp("^bytes([0-9]+)$"),mc=new RegExp("^(u?int)([0-9]*)$"),gc=new RegExp("^(.*)\\[([0-9]*)\\]$"),yc=new v("solidity/5.8.0");function wc(t,e,r){switch(t){case"address":return r?T(e,32):_(e);case"string":return Qe(e);case"bytes":return _(e);case"bool":return e=e?"0x01":"0x00",r?T(e,32):_(e)}let n=t.match(mc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&yc.throwArgumentError("invalid number type","type",t),r&&(i=256),T(e=V.from(e).toTwos(i),i/8)}if(n=t.match(pc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&yc.throwArgumentError("invalid bytes type","type",t),_(e).byteLength!==i&&yc.throwArgumentError(`invalid value for ${t}`,"value",e),r?_((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(gc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&yc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(wc(r,t,!0))}),N(i)}return yc.throwArgumentError("invalid type","type",t)}function vc(t,e){t.length!=e.length&&yc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(wc(t,e[n]))}),B(N(r))}const bc=new v("units/5.8.0"),Ec=["wei","kwei","mwei","gwei","szabo","finney","ether"];function Ac(t,e){if("string"==typeof e){const t=Ec.indexOf(e);-1!==t&&(e=3*t)}return st(t,null!=e?e:18)}function kc(t,e){if("string"!=typeof t&&bc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=Ec.indexOf(e);-1!==t&&(e=3*t)}return ot(t,null!=e?e:18)}function Sc(t){return Ac(t,18)}function Cc(t){return kc(t,18)}var _c=Object.freeze({__proto__:null,AbiCoder:gr,ConstructorFragment:Ut,ErrorFragment:jt,EventFragment:Ft,FormatTypes:It,Fragment:Rt,FunctionFragment:zt,HDNode:lo,Indexed:gn,Interface:vn,LogDescription:fn,Logger:v,ParamType:Bt,RLP:de,SigningKey:es,get SupportedAlgorithm(){return Us},TransactionDescription:pn,get TransactionTypes(){return ss},get UnicodeNormalizationForm(){return We},Utf8ErrorFuncs:Je,get Utf8ErrorReason(){return Ke},_TypedDataEncoder:un,_fetchData:ha,_toEscapedUtf8String:function(t,e){return'"'+$e(t,e).map(t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?Ye(t):Ye(55296+((t-=65536)>>10&1023))+Ye(56320+(1023&t))}).join("")+'"'},accessListify:ps,arrayify:_,base58:Ls,base64:Ar,checkProperties:gt,checkResultErrors:Jt,commify:function(t){const e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||"."===t||"-."===t)&&bc.throwArgumentError("invalid value","value",t);let r=e[0],n="";for("-"===r.substring(0,1)&&(n="-",r=r.substring(1));"0"===r.substring(0,1);)r=r.substring(1);""===r&&(r="0");let i="";for(2===e.length&&(i="."+(e[1]||"0"));i.length>2&&"0"===i[i.length-1];)i=i.substring(0,i.length-1);const s=[];for(;r.length;){if(r.length<=3){s.unshift(r);break}{const t=r.length-3;s.unshift(r.substring(t)),r=r.substring(0,t)}}return n+s.join(",")+i},computeAddress:hs,computeHmac:Gs,computePublicKey:ns,concat:N,deepCopy:Et,defaultAbiCoder:yr,defaultPath:ao,defineReadOnly:ft,dnsEncode:Vr,entropyToMnemonic:uo,fetchJson:ua,formatBytes32String:function(t){const e=Qe(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return B(N([e,qe]).slice(0,32))},formatEther:Sc,formatUnits:Ac,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=to||t%1)&&Ys.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ve,getContractAddress:be,getCreate2Address:function(t,e,r){return 32!==M(e)&&fe.throwArgumentError("salt must be 32 bytes","salt",e),32!==M(r)&&fe.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ve(R(ne(N(["0xff",ve(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ve(t).substring(2),new j(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+we("XE00"+e)+e},getJsonWalletAddress:function(t){if(Po(t))try{return ve(JSON.parse(t).ethaddr)}catch(t){return null}if(Bo(t))try{return ve(JSON.parse(t).address)}catch(t){return null}return null},getStatic:pt,hashMessage:Jr,hexConcat:F,hexDataLength:M,hexDataSlice:R,hexStripZeros:D,hexValue:O,hexZeroPad:L,hexlify:B,id:wr,isAddress:function(t){try{return ve(t),!0}catch(t){}return!1},isBytes:C,isBytesLike:k,isHexString:I,isValidMnemonic:function(t,e){try{return ho(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==Wr(t).length}catch(t){}return!1},joinSignature:z,keccak256:ne,mnemonicToEntropy:ho,mnemonicToSeed:co,namehash:Kr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=tr(t);var r;r=e.map(t=>{if(sr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=nr(t,or);if(e)return[t+e.s];let r=ar[t];if(r)return r;let n=lr[t];return n?[t+n[0]]:cr[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=tr(Xe(e),We.NFKC),e.forEach(t=>{if(nr(t,hr))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(nr(t,ir))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=Xe(e);if("-"===n.substring(0,1)||"--"===n.substring(2,4)||"-"===n.substring(n.length-1))throw new Error("invalid hyphen");return n},parseBytes32String:function(t){const e=_(t);if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return Ze(e.slice(0,r))},parseEther:Cc,parseTransaction:bs,parseUnits:kc,poll:da,randomBytes:go,recoverAddress:us,recoverPublicKey:rs,resolveProperties:mt,ripemd160:qs,serializeTransaction:ws,sha256:js,sha512:function(t){return"0x"+mi.sha512().update(_(t)).digest("hex")},shallowCopy:yt,shuffled:yo,solidityKeccak256:function(t,e){return ne(vc(t,e))},solidityPack:vc,soliditySha256:function(t,e){return js(vc(t,e))},splitSignature:U,stripZeros:x,toUtf8Bytes:Qe,toUtf8CodePoints:tr,toUtf8String:Ze,verifyMessage:function(t,e){return us(Jr(t),e)},verifyTypedData:function(t,e,r,n){return us(un.hash(t,e,r),n)},zeroPad:T});const Nc="ethers/5.8.0",xc=new v(Nc);var Tc=Object.freeze({__proto__:null,BaseContract:Fs,BigNumber:V,Contract:Os,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:C(e)?B(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!I(n)||n.length%2)&&As.throwArgumentError("invalid bytecode","bytecode",e),r&&!xn.isSigner(r)&&As.throwArgumentError("invalid signer","signer",r),ft(this,"bytecode",n),ft(this,"interface",pt(new.target,"getInterface")(t)),ft(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=yt(t.pop());for(const t in e)if(!ks[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&As.throwError("cannot override "+t,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){V.from(e.value).isZero()||this.interface.deploy.payable||As.throwError("non-payable constructor cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return As.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=B(N([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return Es(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),As.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield Cs(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),s=pt(this.constructor,"getContractAddress")(i),o=pt(this.constructor,"getContract")(s,this.interface,this.signer);return Ns(o,i),ft(o,"deployTransaction",i),o})}attach(t){return this.constructor.getContract(t,this.interface,this.signer)}connect(t){return new this.constructor(this.interface,this.bytecode,t)}static fromSolidity(t,e){null==t&&As.throwError("missing compiler output",v.errors.MISSING_ARGUMENT,{argument:"compilerOutput"}),"string"==typeof t&&(t=JSON.parse(t));const r=t.abi;let n=null;return t.bytecode?n=t.bytecode:t.evm&&t.evm.bytecode&&(n=t.evm.bytecode),new this(r,n,e)}static getInterface(t){return Os.getInterface(t)}static getContractAddress(t){return be(t)}static getContract(t,e,r){return new Os(t,e,r)}},FixedNumber:lt,Signer:xn,VoidSigner:Tn,Wallet:$o,Wordlist:Ks,constants:je,get errors(){return y},getDefaultProvider:dc,logger:xc,providers:fc,utils:_c,version:Nc,wordlists:Qs});try{const t=window;null==t._ethers&&(t._ethers=Tc)}catch(t){}class Ic{constructor(t,e){if(!t||!e)throw new Error("BlockchainService requires eventBus and contractCache instances.");this.provider=null,this.signer=null,this.contract=null,this.mirrorContract=null,this.connectionState="disconnected",this.networkConfig=null,this.ethers=Tc,this.eventBus=t,this.contractCache=e,this.swapRouterAddress="0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",this.swapRouter=null,this.isInternalNetworkChange=!1,this.transactionCounter=0,this.activeTransactions=new Map,this.networkChangeState="idle",this.networkChangeTimeout=null,this.networkChangeTimeoutDuration=3e4,this.pendingNetworkChange=null,this.previousNetworkId=null,this.isInitializing=!1,this.chainChangedHandler=()=>this.handleNetworkChange(),this.accountsChangedHandler=()=>this.handleAccountChange()}async initialize(t){this.isInitializing=!0;try{if(!t)throw new Error("Network configuration is required for initialization.");return this.networkConfig=t,await this.initializeProvider(),this.connectionState="connected",this.setupNetworkListeners(),this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.eventBus.emit("blockchain:error",t),this.wrapError(t,"Blockchain initialization failed")}}setupNetworkListeners(){if(window.ethereum&&this.chainChangedHandler&&this.accountsChangedHandler){try{window.ethereum.removeListener("chainChanged",this.chainChangedHandler),window.ethereum.removeListener("accountsChanged",this.accountsChangedHandler)}catch(t){}window.ethereum.on("chainChanged",this.chainChangedHandler),window.ethereum.on("accountsChanged",this.accountsChangedHandler)}}async initializeProvider(){try{if(window.ethereum){const t=parseInt(this.networkConfig?.network||"1");await this.waitForCorrectNetwork(t);const e=new hc(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.eventBus.emit("network:switching",{from:r.chainId,to:t,automatic:!0});try{this.isInternalNetworkChange=!0,await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${t.toString(16)}`}]}),this.provider=new hc(window.ethereum),this.signer=this.provider.getSigner(),this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!1,error:e.message}),4902!==e.code)throw e;await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${t.toString(16)}`,rpcUrls:[this.networkConfig.rpcUrl],chainName:this.networkConfig.chainName,nativeCurrency:this.networkConfig.nativeCurrency}]}),this.provider=new hc(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new ol(this.networkConfig.rpcUrl)}catch(t){throw this.isInternalNetworkChange=!1,this.wrapError(t,"Provider initialization failed")}}async initializeContract(t,e,r,n){try{if(!(t&&e&&r&&n))throw new Error("Contract address and all ABIs are required.");this.contract=new Os(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Os(i,r,this.provider),this.swapRouter=new Os(this.swapRouterAddress,n,this.provider);const s=await this.getLiquidityPool();if(s&&"0x0000000000000000000000000000000000000000"!==s){const t=["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)","function token0() external view returns (address)","function token1() external view returns (address)"];this.v2PoolContract=new Os(s,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.eventBus.emit("contract:updated")}catch(t){throw this.wrapError(t,"Contract initialization failed")}}async getMerkleProof(t,e=null){return null}async executeContractCall(t,e=[],r={}){try{if(!this.contract)throw new Error("Contract not initialized");let n="mirror"===r.useContract?this.mirrorContract:this.contract;if("router"===r.useContract&&(n=this.swapRouter),"v2pool"===r.useContract&&(n=this.v2PoolContract),r.requiresSigner){if(!this.signer)throw new Error("No wallet connected");n=n.connect(this.signer)}if("function"!=typeof n[t])throw new Error(`Method ${t} not found on contract`);const i=await n[t](...e||[],r.txOptions||{});if(i.wait){const r=await i.wait();return this.eventBus.emit("transaction:confirmed",{hash:r.transactionHash,method:t,args:e}),r}return i}catch(e){throw this.handleContractError(e,t)}}handleContractError(t,e){let r=t.message;if("INSUFFICIENT_FUNDS"===t.code)return new Error("Insufficient funds to complete transaction");if("UNPREDICTABLE_GAS_LIMIT"===t.code){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);return r=e?`Tx Reverted: ${e[1]}`:"Transaction would fail - check your inputs",new Error(r)}if(4001===t.code||"ACTION_REJECTED"===t.code)return new Error("Transaction rejected by user");if(t.message.includes("execution reverted")){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);r=e?`Tx Reverted: ${e[1]}`:t.message}return console.error(`Contract error in ${e}:`,t),new Error(r)}wrapError(t,e){const r=new Error(`${e}: ${t.message}`);return r.originalError=t,r.code=t.code,r}async handleNetworkChange(){try{if(this.isInitializing)return void console.log("BlockchainService: Ignoring network change during initialization");if(this.isInternalNetworkChange)return;let t=null;try{const e=await window.ethereum.request({method:"eth_chainId"});t=parseInt(e,16)}catch(e){console.warn("Could not get current network from window.ethereum:",e);try{if(this.provider){t=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get current network from provider:",t)}}this.previousNetworkId=t;const e=parseInt(this.networkConfig?.network||"1");t&&t!==e&&console.log(`User switched to network ${t}, but we need ${e}. Switching back...`),this.networkChangeState="switching",this.pendingNetworkChange={from:t,to:null,startTime:Date.now()},this.eventBus.emit("network:switching",{from:t,to:null,automatic:!0}),this.networkChangeTimeout=setTimeout(()=>{"switching"===this.networkChangeState&&this.handleNetworkChangeTimeout()},this.networkChangeTimeoutDuration),await this.initializeProvider();let r=null;try{const t=await window.ethereum.request({method:"eth_chainId"});r=parseInt(t,16)}catch(t){console.warn("Could not get new network from window.ethereum:",t);try{if(this.provider){r=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get new network from provider:",t)}}const n=this.pendingNetworkChange?Date.now()-this.pendingNetworkChange.startTime:0;this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="switched";this.pendingNetworkChange;this.pendingNetworkChange=null,this.eventBus.emit("network:switched",{from:t,to:r,success:!0,duration:n}),this.eventBus.emit("network:changed",{automatic:!0}),this.eventBus.emit("contract:updated"),setTimeout(()=>{"switched"===this.networkChangeState&&(this.networkChangeState="idle")},1e3)}catch(t){this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="error",this.eventBus.emit("network:switch:error",{from:this.previousNetworkId,to:null,error:t.message||"Network switch failed",originalError:t}),this.eventBus.emit("blockchain:error",t),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}}handleNetworkChangeTimeout(){console.warn("Network change timed out after",this.networkChangeTimeoutDuration,"ms"),this.networkChangeState="error",this.eventBus.emit("network:switch:timeout",{from:this.previousNetworkId,to:null,timeout:this.networkChangeTimeoutDuration}),this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}cancelNetworkChange(){return"switching"===this.networkChangeState&&(this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="idle",this.pendingNetworkChange=null,this.eventBus.emit("network:switch:cancelled",{from:this.previousNetworkId}),!0)}getNetworkChangeState(){return this.networkChangeState}async waitForCorrectNetwork(t,e=5e3){const r=Date.now();for(;Date.now()-r<e;){try{const e=await window.ethereum.request({method:"eth_chainId"});if(parseInt(e,16)===t)return void await new Promise(t=>setTimeout(t,200))}catch(t){}await new Promise(t=>setTimeout(t,100))}console.warn(`Network check timeout: Expected ${t}, will verify in initializeProvider`)}async handleAccountChange(){try{if(window.ethereum){const t=new hc(window.ethereum);this.signer=t.getSigner(),this.eventBus.emit("account:changed"),this.eventBus.emit("contract:updated")}}catch(t){this.eventBus.emit("blockchain:error",t)}}getConnectionState(){return this.connectionState}isConnected(){return"connected"===this.connectionState}getProvider(){return this.provider}getContract(t,e){if(!this.provider)throw new Error("Provider not initialized");return new Os(t,e,this.provider)}async getChainId(){if(!this.provider)throw new Error("Provider not initialized");const t=await this.provider.getNetwork();return Number(t.chainId)}async getBlock(t){if(!this.provider)throw new Error("Provider not initialized");return this.provider.getBlock(t)}async getCurrentTier(){try{const t=this.contractCache.get("getCurrentTier",[]);if(null!==t)return t;const e=await this.executeContractCall("getCurrentTier"),r=parseInt(e.toString());return this.contractCache.set("getCurrentTier",[],r),r}catch(t){throw this.wrapError(t,"Failed to get current tier")}}async getCurrentRoot(){try{return(await this.executeContractCall("getCurrentRoot")).toString()}catch(t){throw this.wrapError(t,"Failed to get current root")}}async getLiquidityPool(){try{const t=this.contractCache.get("getLiquidityPool",[]);if(null!==t)return t;const e=(await this.executeContractCall("liquidityPair")).toString();return this.contractCache.set("getLiquidityPool",[],e),e}catch(t){throw this.wrapError(t,"Failed to get liquidity pool address")}}async getTotalBondingSupply(){try{const t=this.contractCache.get("getTotalBondingSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("totalBondingSupply"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalBondingSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total bonding supply")}}async getTotalMessages(){try{const t=this.contractCache.get("getTotalMessages",[]);if(null!==t)return t;const e=await this.executeContractCall("totalMessages"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalMessages",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total messages")}}async getMessagesBatch(t,e){return(await this.executeContractCall("getMessagesBatch",[t,e])).map(t=>t.toString())}async getTokenBalance(t){if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getTokenBalance");const e=this.contractCache.get("getTokenBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t]);return this.contractCache.set("getTokenBalance",[t],r),r}async getNFTBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getNFTBalance");const e=this.contractCache.get("getNFTBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t],{useContract:"mirror"}),n=parseInt(r.toString());return this.contractCache.set("getNFTBalance",[t],n),n}catch(t){throw this.wrapError(t,"Failed to get NFT balance")}}async getNFTSupply(){try{return this.executeContractCall("totalSupply",[],{useContract:"mirror"})}catch(t){throw this.wrapError(t,"Failed to get NFT supply")}}async getEthBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getEthBalance");const e=this.contractCache.get("getEthBalance",[t]);if(null!==e)return e;const r=(await this.provider.getBalance(t)).toString();return this.contractCache.set("getEthBalance",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get ETH balance")}}async buyBonding(t,e){try{this.eventBus.emit("transaction:pending",{type:"buy"}),console.log("Buy bonding called with params:",t);const r=await this.executeContractCall("buyBonding",[t.amount,t.maxCost,t.mintNFT,t.proof,t.message],{requiresSigner:!0,txOptions:{value:e}});return this.eventBus.emit("transaction:success",{type:"buy",receipt:r,amount:t.amount}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"buy",error:this.wrapError(t,"Buy bonding failed")}),t}}async sellBonding(t){try{this.eventBus.emit("transaction:pending",{type:"sell"});const e=await this.executeContractCall("sellBonding",[t.amount,t.minReturn,t.proof,t.message],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"sell",receipt:e,amount:t.amount}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"sell",error:this.wrapError(t,"Sell bonding failed")}),t}}async getTokenPrice(){try{if(!this.contract)throw new Error("Contract not initialized");const t=Cc("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!V.isBigNumber(e))throw new Error("Invalid price format from contract");return parseFloat(this.ethers.utils.formatEther(e))}catch(t){throw this.wrapError(t,"Failed to get token price")}}async getCurrentPrice(){try{const t=this.contractCache.get("getCurrentPrice",[]);if(null!==t)return t;const e=await this.getTokenPrice();return this.contractCache.set("getCurrentPrice",[],e),e}catch(t){throw this.wrapError(t,"Failed to get current price")}}async calculateCost(t){try{return await this.executeContractCall("calculateCost",[t])}catch(t){throw this.wrapError(t,"Failed to calculate cost")}}async getExecForEth(t){try{const e=Cc(t.toString()),r=await this.executeContractCall("getExecForEth",[e]);return this.formatExec(r)}catch(t){throw this.wrapError(t,"Failed to calculate EXEC for ETH amount")}}async getEthForExec(t){try{const e=kc(t.toString(),18),r=await this.executeContractCall("getEthForExec",[e]);return this.formatEther(r)}catch(t){throw this.wrapError(t,"Failed to calculate ETH for EXEC amount")}}async getFreeSupply(){try{const t=this.contractCache.get("getFreeSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("freeSupply"),r=this.formatExec(e);return this.contractCache.set("getFreeSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get free supply")}}async getFreeMint(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getFreeMint");const e=this.contractCache.get("getFreeMint",[t]);if(null!==e)return e;const r=await this.executeContractCall("freeMint",[t]);return console.log("FREE MINT",r),this.contractCache.set("getFreeMint",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get free mint")}}async getFreeSituation(t){try{const e=await this.getFreeMint(t),r=await this.getFreeSupply();return{freeMint:e,freeSupply:r}}catch(t){throw this.wrapError(t,"Failed to get free situation")}}async getUserNFTIds(t){try{return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getTokenUri(t){try{return await this.executeContractCall("tokenURI",[t])}catch(t){throw this.wrapError(t,"Failed to get token URI")}}async getContractEthBalance(){try{const t=this.contractCache.get("getContractEthBalance",[]);if(null!==t)return t;const e=await this.provider.getBalance(this.contract.address),r=this.formatEther(e);return console.log("CONTRACT ETH BALANCE",r),this.contractCache.set("getContractEthBalance",[],r),r}catch(t){throw this.wrapError(t,"Failed to get contract ETH balance")}}async getUserNFTs(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTs");return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getNFTMetadata(t){try{const e=await this.executeContractCall("tokenURI",[t]);return console.log("NFT METADATA",e),e}catch(t){throw this.wrapError(t,"Failed to get NFT metadata")}}async getNFTMetadataBatch(t){try{const e=t.map(t=>this.executeContractCall("tokenURI",[t])),r=await Promise.all(e);return console.log("Batch NFT Metadata:",r),r}catch(t){throw this.wrapError(t,"Failed to get NFT metadata batch")}}async getUserNFTsWithMetadata(t,e=5){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTsWithMetadata");const r=await this.getUserNFTs(t);if(!r||0===r.length)return[];const n=r.slice(0,e),i=await this.getNFTMetadataBatch(n),s=n.map((t,e)=>({tokenId:t,metadata:i[e]}));return console.log("NFTs with metadata:",s),s}catch(t){throw this.wrapError(t,"Failed to get user NFTs with metadata")}}async balanceMint(t){try{this.eventBus.emit("transaction:pending",{type:"mint"});const e=await this.executeContractCall("balanceMint",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"mint",receipt:e,amount:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"mint",error:this.wrapError(t,"Failed to mint NFTs")}),t}}async transferNFT(t,e,r){try{this.eventBus.emit("transaction:pending",{type:"send"});const n=await this.executeContractCall("transferFrom",[t,e,r],{requiresSigner:!0,useContract:"mirror"});return this.eventBus.emit("transaction:success",{type:"send",receipt:n,tokenId:r,recipient:e}),n}catch(t){throw this.eventBus.emit("transaction:error",{type:"send",error:this.wrapError(t,"Failed to send NFT")}),t}}async getSkipNFT(t){try{return await this.executeContractCall("getSkipNFT",[t])}catch(t){throw this.wrapError(t,"Failed to get skipNFT status")}}async setSkipNFT(t){try{if(!this.signer)throw new Error("No wallet connected");this.eventBus.emit("transaction:pending",{type:"setSkipNFT",skipNFT:t});const e=await this.executeContractCall("setSkipNFT",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"setSkipNFT",receipt:e,skipNFT:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"setSkipNFT",error:this.wrapError(t,"Failed to set skipNFT")}),t}}async transferTokensToSelf(t){try{if(!this.signer)throw new Error("No wallet connected");const e=await this.signer.getAddress();this.eventBus.emit("transaction:pending",{type:"reroll"});const r=await this.executeContractCall("transfer",[e,t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"reroll",receipt:r,amount:t}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"reroll",error:this.wrapError(t,"Failed to re-roll NFTs")}),t}}parseEther(t){return Cc(t).toString()}formatEther(t){return parseFloat(Sc(t))}parseExec(t){return kc(t,18).toString()}formatExec(t){return parseFloat(Ac(t,18))}async getToken0PriceInToken1(t){try{const e=new this.ethers.Contract(t,["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)"],this.provider,{useContract:"v2pool"}),[r,n]=await e.getReserves();return n/r}catch(t){throw this.wrapError(t,"Failed to get token0 price in terms of token1")}}async isToken0(t,e){try{const r=new this.ethers.Contract(t,["function token0() external view returns (address)","function token1() external view returns (address)"],this.provider,{useContract:"v2pool"});return(await r.token0()).toLowerCase()===e.toLowerCase()}catch(t){throw this.wrapError(t,"Failed to check if token is token0")}}async getApproval(t,e=null){try{if(!t)throw new Error("User address is required for approval check");let r;if(null===e)r=this.swapRouter.address||this.swapRouter;else if("string"==typeof e)r=e;else{if(!e||"object"!=typeof e||!e.address)throw new Error("Invalid target for approval check");r=e.address}console.log(`Checking allowance for ${t} to spend tokens at ${r}`);return(await this.executeContractCall("allowance",[t,r])).toString()}catch(t){throw this.wrapError(t,"Failed to get approval")}}async setApproval(t=null,e){try{let r;if(null===t)r=this.swapRouter.address;else if("string"==typeof t)r=t;else{if(!t||"object"!=typeof t||!t.address)throw new Error("Invalid target for approval");r=t.address}console.log(`Setting approval for ${r} to spend ${e} tokens`);const n=`tx_approve_${++this.transactionCounter}_${Date.now()}`,i={type:"approve",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for approve ${n}`),this.eventBus.emit("transaction:pending",i);const s=await this.executeContractCall("approve",[r,e],{requiresSigner:!0}),o={type:"approve",id:n,receipt:s,amount:e};return this.activeTransactions.set(n,o),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",o),s}catch(t){const e={type:"approve",id:`error_approve_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to set approval")};throw console.log("[BlockchainService] Emitting transaction:error for approval error"),this.eventBus.emit("transaction:error",e),t}}async swapExactTokenForEthSupportingFeeOnTransferV2(t,e){try{const r=`tx_${++this.transactionCounter}_${Date.now()}`,n={type:"swap",id:r,pending:!0};this.activeTransactions.set(r,n),console.log(`[BlockchainService] Emitting transaction:pending for ${r}`),this.eventBus.emit("transaction:pending",n);const i=["0x185485bF2e26e0Da48149aee0A8032c8c2060Db2","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],s=t,o=Math.floor(Date.now()/1e3)+1200,a=(await this.executeContractCall("getAmountsOut",[e.amount,i],{useContract:"router"}))[1],l=BigInt(a)*BigInt(940)/BigInt(1e3);console.log("Sell transaction parameters:",{amountIn:e.amount.toString(),amountOutMin:l.toString(),path:i,txId:r});const c=await this.executeContractCall("swapExactTokensForETHSupportingFeeOnTransferTokens",[e.amount,l,i,s,o],{useContract:"router",requiresSigner:!0}),h={type:"swap",id:r,receipt:c,amount:e.amount};return this.activeTransactions.set(r,h),console.log(`[BlockchainService] Emitting transaction:success for ${r}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(r)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap tokens for ETH")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async swapExactEthForTokenSupportingFeeOnTransfer(t,e,r){try{const n=`tx_${++this.transactionCounter}_${Date.now()}`,i={type:"swap",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for ${n}`),this.eventBus.emit("transaction:pending",i);const s=["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x185485bF2e26e0Da48149aee0A8032c8c2060Db2"],o=t,a=Math.floor(Date.now()/1e3)+1200,l=BigInt(e.amount)*BigInt(940)/BigInt(1e3);console.log("Buy transaction parameters:",{amountOutMin:l.toString(),ethValue:r.toString(),path:s,txId:n});const c=await this.executeContractCall("swapExactETHForTokensSupportingFeeOnTransferTokens",[l,s,o,a],{useContract:"router",requiresSigner:!0,txOptions:{value:r}}),h={type:"swap",id:n,receipt:c,amount:e.amount};return this.activeTransactions.set(n,h),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(n)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap ETH for tokens")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async getCurrentBlockInfo(){try{const t=await this.provider.getBlockNumber(),e=await this.provider.getBlock(t);return{number:t,timestamp:e.timestamp,hash:e.hash,date:new Date(1e3*e.timestamp)}}catch(t){throw this.wrapError(t,"Failed to get current block info")}}}class Pc{constructor(t){if(!t)throw new Error("WalletService requires an eventBus instance.");this.eventBus=t,this.provider=null,this.signer=null,this.connectedAddress=null,this.selectedWallet=null,this.connected=!1,this.ethers=Tc,this.isInitialized=!1,this.providerMap={rabby:()=>window.ethereum&&window.ethereum.isRabby?window.ethereum:null,rainbow:()=>window.ethereum&&window.ethereum.isRainbow?window.ethereum:window.rainbow||null,phantom:()=>window.phantom&&window.phantom.ethereum?window.phantom.ethereum:null,metamask:()=>(console.log("Checking for MetaMask with direct window.ethereum access"),window.ethereum||null)},this.walletIcons={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"}}async initialize(t={}){const{autoReconnect:e=!0}=t;try{if(console.log("Initializing WalletService..."),void 0===window.ethereum)return console.log("No Ethereum provider found"),this.eventBus.emit("wallet:notdetected"),this.isInitialized=!0,!0;if(console.log("Found Ethereum provider"),this.eventBus.emit("wallet:detected"),this.isMetaMask=window.ethereum.isMetaMask,e){const t=await window.ethereum.request({method:"eth_accounts"});if(t?.length>0){console.log("[WalletService] Found authorized account:",t[0]);const e=this._detectWalletType();this.selectedWallet=e,this.provider=window.ethereum,this.connectedAddress=t[0],this.connected=!0,this.ethersProvider=new hc(window.ethereum,"any"),this.signer=this.ethersProvider.getSigner(),this.setupEventListeners(),localStorage.setItem("ms2fun_lastWallet",e),console.log("[WalletService] Auto-connected to:",t[0]),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer})}}return this.connected||this.setupEventListeners(),this.isInitialized=!0,!0}catch(t){throw console.error("Error initializing WalletService:",t),this.isInitialized=!0,t}}async tryAutoConnect(){try{if(void 0===window.ethereum)return null;const t=await window.ethereum.request({method:"eth_accounts"});if(!t||0===t.length)return console.log("[WalletService] No previously authorized accounts found"),null;console.log("[WalletService] Found authorized account:",t[0]);const e=this._detectWalletType();console.log("[WalletService] Detected wallet type:",e),await this.selectWallet(e);const r=await this.connect();return console.log("[WalletService] Auto-reconnected to:",r),r}catch(t){return console.warn("[WalletService] Auto-connect failed:",t.message),null}}_detectWalletType(){if(void 0===window.ethereum)return"metamask";if(window.ethereum.isRabby)return"rabby";if(window.ethereum.isRainbow)return"rainbow";if(window.phantom?.ethereum)return"phantom";const t=localStorage.getItem("ms2fun_lastWallet");return t&&this.providerMap[t]?t:"metamask"}formatError(t,e=""){if("string"==typeof t)return new Error(`${e}: ${t}`);if(t&&t.message){const r=this.getUserFriendlyErrorMessage(t,e),n=new Error(r);return n.code=t.code,n.originalError=t,n}return new Error(`${e}: Unknown error`)}getUserFriendlyErrorMessage(t,e){const r=t.message||"Unknown error";return 4001===t.code?"Connection request rejected by user":4902===t.code?"Network needs to be added to your wallet":r.includes("redefine property")||r.includes("which has only a getter")?"Wallet conflict detected. Please disable all wallet extensions except the one you want to use, then refresh.":r.includes("user rejected")?"Connection rejected by user":r.includes("already pending")?"A wallet request is already pending, please check your wallet":e?`${e}: ${r}`:r}getAvailableWallets(){const t={};console.log("Checking for available wallets..."),window.ethereum?console.log("window.ethereum is available"):console.log("window.ethereum is not available");for(const[e,r]of Object.entries(this.providerMap))try{console.log(`Checking for ${e} wallet...`);const n=r();n?(console.log(`Found ${e} wallet`),t[e]={name:e,icon:this.walletIcons[e],provider:n}):console.log(`${e} wallet not detected`)}catch(t){console.warn(`Error detecting ${e} wallet:`,t)}return 0===Object.keys(t).length&&window.ethereum?(console.log("No specific wallets detected, but window.ethereum exists. Adding MetaMask as fallback."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}):!t.metamask&&window.ethereum&&(console.log("window.ethereum exists. Adding MetaMask option regardless of detection."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}),console.log("Available wallets:",Object.keys(t)),t}async selectWallet(t){try{if(this.cleanup(),!this.providerMap[t])throw new Error(`Unsupported wallet: ${t}`);const e=this.providerMap[t]();if(!e)throw new Error(`${t} not detected. Please install it first.`);return this.selectedWallet=t,this.provider=e,this.setupEventListeners(),this.eventBus.emit("wallet:selected",{type:t,provider:e}),t}catch(t){const e=this.formatError(t,"Wallet selection failed");throw this.eventBus.emit("wallet:error",e),e}}setupEventListeners(){if(this.provider){try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider.on("chainChanged",()=>this.handleNetworkChange()),this.provider.on("accountsChanged",t=>this.handleAccountChange(t))}}cleanup(){if(this.provider)try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider=null,this.signer=null,this.connectedAddress=null,this.connected=!1,this.ethersProvider=null}async connect(t){try{if(t&&await this.selectWallet(t),!this.selectedWallet||!this.provider)throw new Error("Please select a wallet first");let e;this.eventBus.emit("wallet:connecting"),console.log(`Attempting to connect to ${this.selectedWallet}...`);try{if(await new Promise(t=>setTimeout(t,500)),"phantom"===this.selectedWallet&&window.phantom&&window.phantom.ethereum)console.log("Using phantom-specific connection method"),e=await window.phantom.ethereum.request({method:"eth_requestAccounts"});else{console.log(`Using standard connection method for ${this.selectedWallet}`);try{const t=await this.provider.request({method:"eth_accounts"});console.log("Existing accounts:",t),t&&0!==t.length||console.log("No existing accounts found, requesting user approval...")}catch(t){console.warn("Error checking existing accounts:",t)}e=await this.provider.request({method:"eth_requestAccounts",params:[]})}}catch(t){throw console.error("Error requesting accounts:",t),t&&4001===t.code?this.formatError(t,"Wallet connection rejected"):t&&t.message&&t.message.includes("wallet must has at least one account")?new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again."):t}if(console.log("Accounts received:",e),!e||!e[0])throw new Error("No accounts found. Please unlock your wallet and make sure you have at least one account set up.");return this.connectedAddress=e[0],this.connected=!0,console.log(`Successfully connected to account: ${this.connectedAddress}`),this.selectedWallet&&localStorage.setItem("ms2fun_lastWallet",this.selectedWallet),this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer}),this.connectedAddress}catch(t){if(console.error("Wallet connection error:",t),t.message&&(t.message.includes("at least one account")||t.message.includes("wallet must has")||t.message.includes("no accounts"))){const e=new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again.");throw e.code=t.code,e.originalError=t,this.eventBus.emit("wallet:error",e),e}const e=this.formatError(t,"Wallet connection failed");throw this.eventBus.emit("wallet:error",e),e}}async switchNetwork(t){try{if(!this.provider)throw new Error("No wallet connected");const e=`0x${Number(t).toString(16)}`;this.eventBus.emit("network:switching",{to:t,automatic:!1});try{return await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:e}]}),this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("network:switched",{to:t,success:!0}),!0}catch(t){throw 4902===t.code?new Error("Network needs to be added first"):t}}catch(e){const r=this.formatError(e,"Network switch failed");throw this.eventBus.emit("network:switch:error",{from:null,to:t,error:r.message,originalError:e}),this.eventBus.emit("network:switched",{to:t,success:!1,error:r.message}),r}}getAddress(){return this.connectedAddress}isConnected(){return this.connected&&!!this.connectedAddress}getProviderAndSigner(){return{provider:this.ethersProvider,signer:this.signer}}setConnectedState({address:t,provider:e,ethersProvider:r,signer:n,walletType:i="metamask"},s=!0){if(!t)throw new Error("setConnectedState requires an address");if(!e)throw new Error("setConnectedState requires a provider");this.provider=e,this.connectedAddress=t,this.connected=!0,this.selectedWallet=i,this.ethersProvider=r||new hc(e,"any"),this.signer=n||this.ethersProvider.getSigner(),this.setupEventListeners(),localStorage.setItem("ms2fun_lastWallet",i),console.log("[WalletService] State set programmatically:",t),s&&this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer})}handleNetworkChange(){this.provider&&(this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner())}handleAccountChange(t){t&&Array.isArray(t)&&(0===t.length?(this.connected=!1,this.connectedAddress=null,this.eventBus.emit("wallet:disconnected")):t[0]!==this.connectedAddress&&(this.connectedAddress=t[0],this.eventBus.emit("wallet:changed",{address:t[0]})))}async disconnect(){this.cleanup(),this.eventBus.emit("wallet:disconnected")}}class Bc{constructor(t,e={}){if(!t)throw new Error("ContractCache requires an eventBus instance.");this.eventBus=t,this.cache=new Map,this.stats={hits:0,misses:0,invalidations:0,sets:0},this.defaultTTLs={price:5e3,balance:3e3,contractData:1e4,supply:1e4,metadata:6e4,tier:3e4,default:5e3},this.noCacheMethods=new Set(["executeContractCall","swapExactETHForTokens","swapExactTokensForETH","buy","sell","mint"]),this.setupEventListeners(),e.eventInvalidation&&this.setupEventInvalidation(e.eventInvalidation),this.debug=!1}setupEventListeners(){this.eventBus.on("transaction:confirmed",()=>{this.invalidateByPattern("balance","price","contractData"),this.debug&&console.log("[ContractCache] Invalidated cache due to transaction confirmation")}),this.eventBus.on("account:changed",()=>{this.invalidateByPattern("balance"),this.debug&&console.log("[ContractCache] Invalidated cache due to account change")}),this.eventBus.on("network:changed",()=>{this.clear(),this.debug&&console.log("[ContractCache] Cleared cache due to network change")}),this.eventBus.on("contractData:updated",()=>{this.invalidateByPattern("contractData","price","supply"),this.debug&&console.log("[ContractCache] Invalidated cache due to contract data update")})}setupEventInvalidation(t){this.eventBus.on("indexer:newEvents",({eventType:e})=>{const r=t[e];r&&Array.isArray(r)&&this.invalidateByPattern(...r)})}generateKey(t,e=[]){return`${t}:${e.length>0?JSON.stringify(e.map(t=>t&&"object"==typeof t&&t.toString?t.toString():t)):""}`}get(t,e=[]){if(this.noCacheMethods.has(t))return null;const r=this.generateKey(t,e),n=this.cache.get(r);return n?Date.now()>n.expiresAt?(this.cache.delete(r),this.stats.misses++,null):(n.accessCount++,this.stats.hits++,this.debug&&console.log(`[ContractCache] Cache HIT for ${t}`,e),n.value):(this.stats.misses++,null)}set(t,e=[],r,n=null){if(this.noCacheMethods.has(t))return;null===n&&(n=this.getTTLForMethod(t));const i=this.generateKey(t,e),s=Date.now()+n;this.cache.set(i,{value:r,expiresAt:s,accessCount:0,method:t,args:e,cachedAt:Date.now()}),this.stats.sets++,this.debug&&console.log(`[ContractCache] Cached ${t}`,e,`TTL: ${n}ms`)}getTTLForMethod(t){const e=t.toLowerCase();return e.includes("price")||e.includes("cost")?this.defaultTTLs.price:e.includes("balance")?this.defaultTTLs.balance:e.includes("supply")||e.includes("total")?this.defaultTTLs.supply:e.includes("metadata")||e.includes("uri")?this.defaultTTLs.metadata:e.includes("tier")||e.includes("merkle")||e.includes("proof")?this.defaultTTLs.tier:e.includes("contract")||e.includes("pool")||e.includes("liquidity")?this.defaultTTLs.contractData:this.defaultTTLs.default}invalidateByPattern(...t){let e=0;for(const[r,n]of this.cache.entries()){const i=n.method.toLowerCase();t.some(t=>i.includes(t.toLowerCase()))&&(this.cache.delete(r),e++)}this.stats.invalidations+=e,this.debug&&e>0&&console.log(`[ContractCache] Invalidated ${e} entries matching patterns:`,t)}invalidate(t,e=[]){const r=this.generateKey(t,e);this.cache.delete(r)&&(this.stats.invalidations++,this.debug&&console.log(`[ContractCache] Invalidated ${t}`,e))}clear(){const t=this.cache.size;this.cache.clear(),this.stats.invalidations+=t,this.debug&&console.log("[ContractCache] Cleared all cache")}getStats(){const t=this.stats.hits+this.stats.misses,e=t>0?(this.stats.hits/t*100).toFixed(2):0;return{...this.stats,hitRate:`${e}%`,cacheSize:this.cache.size,totalRequests:t}}async warmCache(t,e=[]){this.debug&&console.log("[ContractCache] Warming cache for methods:",e);const r=e.map(async e=>{try{return await t(e)}catch(t){return console.warn(`[ContractCache] Failed to warm cache for ${e}:`,t),null}});await Promise.all(r)}setDebug(t){this.debug=t}cleanup(){const t=Date.now();let e=0;for(const[r,n]of this.cache.entries())t>n.expiresAt&&(this.cache.delete(r),e++);return this.debug&&e>0&&console.log(`[ContractCache] Cleaned up ${e} expired entries`),e}}class Mc{constructor(t,e,r=6e4){if(!t||!e)throw new Error("PriceService requires blockchainService and eventBus instances.");this._blockchainService=t,this.eventBus=e,this._cache=new Map,this._contractUpdateInterval=null,this._updateIntervalTime=r,this._cacheExpirationTime=3e5,this._updateDebounceTimeout=null,this._updateDebounceDelay=2e3,this._lastEmittedData=null,this.getCurrentPrice=this.getCurrentPrice.bind(this),this.startContractUpdates=this.startContractUpdates.bind(this),this.stopContractUpdates=this.stopContractUpdates.bind(this),this.debouncedUpdateContractData=this.debouncedUpdateContractData.bind(this)}initialize(t=null){console.log("PriceService: Fetching initial data immediately",t?`for address: ${t}`:"(no address yet)"),this.updateContractData(t).catch(t=>{console.error("Failed to fetch initial contract data:",t)}),this.startContractUpdates(t)}async getCurrentPrice(){try{if(!this._blockchainService)throw new Error("PriceService not initialized");const t=this._getCacheValue("currentPrice");if(null!==t)return t;const e=await this._blockchainService.getTokenPrice();if("number"!=typeof e||isNaN(e)||e<=0)throw console.error("Invalid price value:",e),new Error("Invalid price value received");return this._setCacheValue("currentPrice",e),this.eventBus.emit("price:updated",{price:e}),e}catch(t){throw console.error("Error fetching price:",t),t}}async calculateCost(t){try{if(!this._blockchainService)throw new Error("PriceService not initialized");return await this._blockchainService.calculateCost(t)}catch(t){throw console.error("Error calculating cost:",t),t}}async updateContractData(t=null){try{const e=[this._blockchainService.getCurrentPrice(),this._blockchainService.getTotalBondingSupply(),this._blockchainService.getTotalMessages(),this._blockchainService.getNFTSupply(),this._blockchainService.getFreeSupply(),this._blockchainService.getContractEthBalance(),this._blockchainService.getCurrentTier(),this._blockchainService.getLiquidityPool()];t&&e.push(this._blockchainService.getEthBalance(t),this._blockchainService.getTokenBalance(t),this._blockchainService.getNFTBalance(t),this._blockchainService.getFreeMint(t));const[r,n,i,s,o,a,l,c,h,u,d,f]=await Promise.all(e),p={totalBondingSupply:n,currentPrice:r,totalMessages:i,totalNFTs:s,freeSupply:o,freeMint:void 0!==f&&f,contractEthBalance:a,currentTier:l,liquidityPool:c},m={eth:h||"0",exec:u||"0",nfts:d||0},g=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.contractData)!==JSON.stringify(p),y=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.balances)!==JSON.stringify(m);g&&this.eventBus.emit("contractData:updated",p),y&&this.eventBus.emit("balances:updated",m),this._lastEmittedData&&this._lastEmittedData.contractData.currentPrice===r||this.eventBus.emit("price:updated",{price:r}),this._lastEmittedData={contractData:p,balances:m}}catch(t){console.error("Error updating contract data:",t),this.eventBus.emit("price:error",{error:t.message})}}startContractUpdates(){this.stopContractUpdates(),this.debouncedUpdateContractData(),this._contractUpdateInterval=setInterval(()=>{this.debouncedUpdateContractData()},this._updateIntervalTime)}stopContractUpdates(){this._contractUpdateInterval&&(clearInterval(this._contractUpdateInterval),this._contractUpdateInterval=null)}_setCacheValue(t,e){this._cache.set(t,{value:e,timestamp:Date.now()})}debouncedUpdateContractData(t=null){this._updateDebounceTimeout&&clearTimeout(this._updateDebounceTimeout),this._updateDebounceTimeout=setTimeout(()=>{this.updateContractData(t).catch(t=>{console.error("Failed to update contract data:",t)})},this._updateDebounceDelay)}}const Rc=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Fc(){const t=function(){try{const t=localStorage.getItem("customIpfsGatewayBaseUrl");if(t&&"string"==typeof t&&t.trim()){const e=t.trim();return e.endsWith("/ipfs/")?e:e.endsWith("/")?e+"ipfs/":e+"/ipfs/"}}catch(t){console.warn("[IpfsService] Failed to read custom gateway from localStorage:",t)}return null}();return t?[t,...Rc]:Rc}function Oc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Dc(t){if(!Oc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Lc(t,e=0){if(!Oc(t))return t;const r=Fc();if(e<0||e>=r.length)return null;const n=Dc(t);return r[e]+n}function Uc(){return Fc()}var zc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Oc(t)){const e=new AbortController,i=setTimeout(()=>e.abort(),r);try{const r=await fetch(t,{...n,signal:e.signal});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return clearTimeout(i),s}catch(t){if(clearTimeout(i),"AbortError"===t.name)throw new Error(`Request timeout after ${r}ms`);throw t}}const i=Fc(),s=Dc(t),o=[];for(let t=0;t<i.length;t++){const e=i[t],a=e+s,l=new AbortController,c=setTimeout(()=>l.abort(),r);try{const r=await fetch(a,{...n,signal:l.signal});if(clearTimeout(c),!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return t>0&&console.log(`[IpfsService] Resolved IPFS via gateway ${t+1}/${i.length}: ${e}`),s}catch(n){clearTimeout(c);const i="AbortError"===n.name?`Timeout after ${r}ms`:n.message||"Unknown error";o.push(`Gateway ${t+1} (${e}): ${i}`);continue}}throw new Error(`Failed to fetch IPFS content after trying ${i.length} gateways:\n`+o.join("\n"))},getAvailableGateways:Uc,isIpfsUri:Oc,normalizeIpfsPath:Dc,resolveIpfsToHttp:Lc,setCustomGateway:function(t){try{t?localStorage.setItem("customIpfsGatewayBaseUrl",t):localStorage.removeItem("customIpfsGatewayBaseUrl")}catch(t){console.warn("[IpfsService] Failed to save custom gateway to localStorage:",t)}},testImageLoad:function(t,e=5e3){return new Promise(r=>{const n=new Image,i=setTimeout(()=>{n.onload=null,n.onerror=null,r(!1)},e);n.onload=()=>{clearTimeout(i),r(!0)},n.onerror=()=>{clearTimeout(i),r(!1)},n.src=t})}});class qc{async initialize(t){throw new Error("StorageAdapter.initialize() must be implemented")}async putEvents(t){throw new Error("StorageAdapter.putEvents() must be implemented")}async getEvent(t,e){throw new Error("StorageAdapter.getEvent() must be implemented")}async queryEvents(t,e){throw new Error("StorageAdapter.queryEvents() must be implemented")}async countEvents(t,e){throw new Error("StorageAdapter.countEvents() must be implemented")}async deleteEvents(t,e){throw new Error("StorageAdapter.deleteEvents() must be implemented")}async deleteEventsAfterBlock(t){throw new Error("StorageAdapter.deleteEventsAfterBlock() must be implemented")}async getSyncState(){throw new Error("StorageAdapter.getSyncState() must be implemented")}async setSyncState(t){throw new Error("StorageAdapter.setSyncState() must be implemented")}async getVersion(){throw new Error("StorageAdapter.getVersion() must be implemented")}async setVersion(t){throw new Error("StorageAdapter.setVersion() must be implemented")}async clear(){throw new Error("StorageAdapter.clear() must be implemented")}async close(){throw new Error("StorageAdapter.close() must be implemented")}}class jc extends qc{constructor(){super(),this.db=null,this.config=null,this.dbName=null}async initialize(t){this.config=t,this.dbName=t.dbName;const e=await this._getStoredVersion();return null!==e&&t.version>e&&(console.log(`[IndexedDBAdapter] Migrating from v${e} to v${t.version}`),await this._deleteDatabase()),new Promise((e,r)=>{const n=indexedDB.open(this.dbName,t.version);n.onerror=()=>{r(new Error(`Failed to open IndexedDB: ${n.error?.message}`))},n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=e=>{const r=e.target.result;this._createStores(r,t.eventTypes)}})}_createStores(t,e){for(const r of e){const e=`events_${r.name}`;if(!t.objectStoreNames.contains(e)){const n=t.createObjectStore(e,{keyPath:"id"});for(const t of r.indexedParams||[])n.createIndex(`param_${t}`,`indexed.${t}`,{unique:!1});n.createIndex("blockNumber","blockNumber",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1})}}t.objectStoreNames.contains("syncState")||t.createObjectStore("syncState",{keyPath:"id"}),t.objectStoreNames.contains("meta")||t.createObjectStore("meta",{keyPath:"key"})}async _getStoredVersion(){return new Promise(t=>{const e=indexedDB.open(this.dbName);e.onsuccess=()=>{const r=e.result,n=r.version;r.close(),t(n)},e.onerror=()=>t(null)})}async _deleteDatabase(){return new Promise((t,e)=>{this.db&&(this.db.close(),this.db=null);const r=indexedDB.deleteDatabase(this.dbName);r.onsuccess=()=>t(),r.onerror=()=>e(r.error)})}async putEvents(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");if(0===t.length)return;const e=new Map;for(const r of t)e.has(r.type)||e.set(r.type,[]),e.get(r.type).push(r);const r=[];for(const[t,n]of e)r.push(this._putEventsOfType(t,n));await Promise.all(r)}async _putEventsOfType(t,e){const r=`events_${t}`;return this.db.objectStoreNames.contains(r)||await this._addStore(t),new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.put(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async _addStore(t){const e=this.db.version;return this.db.close(),new Promise((r,n)=>{const i=indexedDB.open(this.dbName,e+1);i.onupgradeneeded=e=>{const r=e.target.result,n=`events_${t}`;if(!r.objectStoreNames.contains(n)){const t=r.createObjectStore(n,{keyPath:"id"});t.createIndex("blockNumber","blockNumber",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}},i.onsuccess=()=>{this.db=i.result,r()},i.onerror=()=>n(i.error)})}async getEvent(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).get(e);i.onsuccess=()=>t(i.result||null),i.onerror=()=>n(i.error)}):null}async queryEvents(t,e={}){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).getAll();i.onsuccess=()=>{let r=i.result;e.where&&(r=r.filter(t=>this._matchesWhere(t,e.where)));const n=r.length,s=e.orderBy||"blockNumber",o=e.order||"desc";r.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100,c=r.slice(a,a+l);t({events:c,total:n,hasMore:a+l<n})},i.onerror=()=>n(i.error)}):{events:[],total:0,hasMore:!1}}async countEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r);if(e){const r=i.getAll();r.onsuccess=()=>{const n=r.result.filter(t=>this._matchesWhere(t,e)).length;t(n)},r.onerror=()=>n(r.error)}else{const e=i.count();e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)}}):0}async deleteEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;if(this.db.objectStoreNames.contains(r))return new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.delete(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async deleteEventsAfterBlock(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const e=Array.from(this.db.objectStoreNames).filter(t=>t.startsWith("events_"));for(const r of e)await this._deleteEventsAfterBlockInStore(r,t)}async _deleteEventsAfterBlockInStore(t,e){return new Promise((r,n)=>{const i=this.db.transaction(t,"readwrite"),s=i.objectStore(t).index("blockNumber"),o=IDBKeyRange.lowerBound(e,!0);s.openCursor(o).onsuccess=t=>{const e=t.target.result;e&&(e.delete(),e.continue())},i.oncomplete=()=>r(),i.onerror=()=>n(i.error)})}async getSyncState(){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((t,e)=>{const r=this.db.transaction("syncState","readonly").objectStore("syncState").get("current");r.onsuccess=()=>t(r.result||null),r.onerror=()=>e(r.error)})}async setSyncState(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((e,r)=>{const n=this.db.transaction("syncState","readwrite").objectStore("syncState").put({id:"current",...t});n.onsuccess=()=>e(),n.onerror=()=>r(n.error)})}async getVersion(){return this.db?this.db.version:0}async setVersion(t){}async clear(){if(!this.db)return;const t=Array.from(this.db.objectStoreNames);return new Promise((e,r)=>{const n=this.db.transaction(t,"readwrite");for(const e of t)n.objectStore(e).clear();n.oncomplete=()=>e(),n.onerror=()=>r(n.error)})}async close(){this.db&&(this.db.close(),this.db=null)}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class Gc extends qc{constructor(){super(),this.stores=new Map,this.syncState=null,this.version=0,this.config=null}async initialize(t){this.config=t;for(const e of t.eventTypes)this.stores.set(e.name,new Map);t.version>this.version&&(await this.clear(),this.version=t.version)}async putEvents(t){for(const e of t){this.stores.get(e.type)||this.stores.set(e.type,new Map),this.stores.get(e.type).set(e.id,e)}}async getEvent(t,e){const r=this.stores.get(t);return r&&r.get(e)||null}async queryEvents(t,e={}){const r=this.stores.get(t);if(!r)return{events:[],total:0,hasMore:!1};let n=Array.from(r.values());e.where&&(n=n.filter(t=>this._matchesWhere(t,e.where)));const i=n.length,s=e.orderBy||"blockNumber",o=e.order||"desc";n.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100;return{events:n.slice(a,a+l),total:i,hasMore:a+l<i}}async countEvents(t,e){const r=this.stores.get(t);if(!r)return 0;if(!e)return r.size;let n=0;for(const t of r.values())this._matchesWhere(t,e)&&n++;return n}async deleteEvents(t,e){const r=this.stores.get(t);if(r)for(const t of e)r.delete(t)}async deleteEventsAfterBlock(t){for(const e of this.stores.values())for(const[r,n]of e.entries())n.blockNumber>t&&e.delete(r)}async getSyncState(){return this.syncState}async setSyncState(t){this.syncState={...t}}async getVersion(){return this.version}async setVersion(t){this.version=t}async clear(){for(const t of this.stores.values())t.clear();this.syncState=null}async close(){}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}const Hc="mw3_indexer_settings",Wc={get(){try{const t=localStorage.getItem(Hc);return t?JSON.parse(t):this.getDefaults()}catch{return this.getDefaults()}},getDefaults:()=>({storageEnabled:!0,maxStorageMB:50}),set(t){const e={...this.get(),...t};return localStorage.setItem(Hc,JSON.stringify(e)),e},isStorageEnabled(){return this.get().storageEnabled},async clearAllData(){if("undefined"==typeof indexedDB)return;const t=(await(indexedDB.databases?.())||[]).filter(t=>t.name?.startsWith("micro-web3-events-")||t.name?.includes("colasseum-"));for(const e of t)await new Promise((t,r)=>{const n=indexedDB.deleteDatabase(e.name);n.onsuccess=t,n.onerror=r})},getStorageEstimate:async()=>navigator.storage?.estimate?navigator.storage.estimate():{used:0,quota:0}};class Kc{constructor(t,e){this.storage=t,this.eventBus=e,this.subscriptions=new Map,this.nextSubscriptionId=1}async query(t,e={}){return this.storage.queryEvents(t,{where:e.where,orderBy:e.orderBy||"blockNumber",order:e.order||"desc",limit:e.limit||100,offset:e.offset||0})}async get(t,e){return this.storage.getEvent(t,e)}subscribe(t,e){const r=Array.isArray(t)?t:[t],n=this.nextSubscriptionId++;return this.subscriptions.set(n,{eventTypes:new Set(r),callback:e}),()=>{this.subscriptions.delete(n)}}async count(t,e){return this.storage.countEvents(t,e)}notifyNewEvents(t,e){for(const r of this.subscriptions.values())if(r.eventTypes.has(t)||r.eventTypes.has("*"))try{r.callback(e)}catch(t){console.error("[QueryEngine] Subscription callback error:",t)}}async getEventChecker(t={}){const e=new Map;return{has:(r,n={})=>this._getCachedEvents(e,r).some(e=>this._matchesWhere(e,{...t,...n})),get:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})),count:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})).length,prefetch:async t=>{for(const r of t)if(!e.has(r)){const t=await this.storage.queryEvents(r,{limit:1e4});e.set(r,t.events)}}}}_getCachedEvents(t,e){return t.get(e)||[]}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}return!0}_getNestedValue(t,e){return void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class Vc{constructor(t,e,r,n={}){this.storage=t,this.queryEngine=e,this.eventBus=r,this.batchSize=n.batchSize||2e3,this.confirmations=n.confirmations||2,this.realTimeEnabled=!1!==n.realTimeEnabled,this.retryAttempts=n.retryAttempts||3,this.retryDelay=n.retryDelay||1e3,this.pollInterval=n.pollInterval||12e3,this.reorgTracking=n.reorgTracking||!1,this.reorgDepth=n.reorgDepth||100,this.provider=null,this.contract=null,this.eventTypes=[],this.deployBlock=0,this.chainId=null,this.state="initializing",this.currentBlock=0,this.latestBlock=0,this.eventsIndexed=0,this.lastSyncTime=null,this.error=null,this.eventListeners=[],this.pollTimer=null,this.isPaused=!1,this.recentBlocks=new Map}async initialize({provider:t,contract:e,eventTypes:r,deployBlock:n,chainId:i}){this.provider=t,this.contract=e,this.eventTypes=r,this.deployBlock=n,this.chainId=i,await this._validateChainId();const s=await this.storage.getSyncState();s?(this.currentBlock=s.lastSyncedBlock,this.eventsIndexed=Object.values(s.eventCounts||{}).reduce((t,e)=>t+e,0),this.lastSyncTime=s.lastSyncTime):this.currentBlock=this.deployBlock-1}async _validateChainId(){const t=await this.storage.getSyncState();t&&t.chainId!==this.chainId&&(console.warn("[SyncEngine] Chain ID mismatch, clearing data"),await this.storage.clear())}async start(){if("synced"!==this.state&&"syncing"!==this.state)try{await this._syncHistorical(),this.realTimeEnabled&&!this.isPaused&&await this._startRealTimeSync()}catch(t){this.state="error",this.error=t,this.eventBus.emit("indexer:error",{code:"SYNC_ERROR",message:t.message,cause:t,recoverable:!0})}}async _syncHistorical(){this.state="syncing",this.latestBlock=await this.provider.getBlockNumber();const t=this.latestBlock-this.confirmations;if(this.currentBlock>=t)return this.state="synced",void this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:0});const e=Date.now(),r=this.currentBlock+1;this.eventBus.emit("indexer:syncStarted",{fromBlock:r,toBlock:t});for(let e=r;e<=t&&!this.isPaused;e+=this.batchSize){const n=Math.min(e+this.batchSize-1,t);await this._syncBatch(e,n);const i=(n-r+1)/(t-r+1);this.eventBus.emit("indexer:syncProgress",{progress:i,currentBlock:n,latestBlock:this.latestBlock,eventsIndexed:this.eventsIndexed})}this.isPaused||(this.state="synced",this.lastSyncTime=Date.now(),this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:Date.now()-e}))}async _syncBatch(t,e){const r=await this._fetchEventsWithRetry(t,e);if(r.length>0){const t=r.map(t=>this._parseEvent(t));await this.storage.putEvents(t),this.eventsIndexed+=t.length;const e=this._groupByType(t);for(const[t,r]of Object.entries(e))this.queryEngine.notifyNewEvents(t,r)}this.currentBlock=e,await this._saveSyncState()}async _fetchEventsWithRetry(t,e){for(let r=0;r<this.retryAttempts;r++)try{const r=[];for(const n of this.eventTypes){const i=this.contract.filters[n.name](),s=await this.contract.queryFilter(i,t,e);r.push(...s)}return r}catch(t){if(r===this.retryAttempts-1)throw t;const e=this.retryDelay*Math.pow(2,r);await this._sleep(e)}return[]}_parseEvent(t){const e={},r={};if(t.args){const n=t.eventFragment||this.contract.interface.getEvent(t.event);if(n)for(let i=0;i<n.inputs.length;i++){const s=n.inputs[i],o=t.args[i],a=this._serializeValue(o);s.indexed&&(e[s.name]=a),r[s.name]=a}}return{id:`${t.transactionHash}-${t.logIndex}`,type:t.event,blockNumber:t.blockNumber,blockHash:t.blockHash,transactionHash:t.transactionHash,logIndex:t.logIndex,timestamp:0,data:r,indexed:e}}_serializeValue(t){return null==t?null:"bigint"==typeof t||t._isBigNumber?t.toString():Array.isArray(t)?t.map(t=>this._serializeValue(t)):t}_groupByType(t){const e={};for(const r of t)e[r.type]||(e[r.type]=[]),e[r.type].push(r);return e}async _saveSyncState(){await this.storage.setSyncState({lastSyncedBlock:this.currentBlock,lastSyncTime:Date.now(),eventCounts:{},chainId:this.chainId})}async _startRealTimeSync(){try{for(const t of this.eventTypes){const e=this.contract.filters[t.name](),r=async(...t)=>{const e=t[t.length-1];await this._handleNewEvent(e)};this.contract.on(e,r),this.eventListeners.push({filter:e,listener:r})}}catch(t){console.warn("[SyncEngine] WebSocket subscription failed, falling back to polling"),this._startPolling()}this._startPolling()}_startPolling(){this.pollTimer||(this.pollTimer=setInterval(async()=>{if(!this.isPaused)try{const t=await this.provider.getBlockNumber(),e=t-this.confirmations;e>this.currentBlock&&await this._syncBatch(this.currentBlock+1,e),this.latestBlock=t,this.reorgTracking&&await this._checkForReorg(t)}catch(t){console.error("[SyncEngine] Polling error:",t)}},this.pollInterval))}async _handleNewEvent(t){this.confirmations>0&&await this._waitForConfirmations(t.transactionHash);const e=this._parseEvent(t);await this.storage.putEvents([e]),this.eventsIndexed++,e.blockNumber>this.currentBlock&&(this.currentBlock=e.blockNumber,await this._saveSyncState()),this.queryEngine.notifyNewEvents(e.type,[e]),this.eventBus.emit("indexer:newEvents",{eventType:e.type,events:[e]})}async _waitForConfirmations(t){let e=0;for(;e<this.confirmations;){const r=await this.provider.getTransactionReceipt(t);if(!r){await this._sleep(1e3);continue}e=await this.provider.getBlockNumber()-r.blockNumber+1,e<this.confirmations&&await this._sleep(1e3)}}async _checkForReorg(t){const e=await this.provider.getBlock(t);if(!e)return;const r=this.recentBlocks.get(t-1);if(r&&r!==e.parentHash&&await this._handleReorg(t-1),this.recentBlocks.set(t,e.hash),this.recentBlocks.size>this.reorgDepth){const t=Math.min(...this.recentBlocks.keys());this.recentBlocks.delete(t)}}async _handleReorg(t){let e=t;for(;e>this.deployBlock;){const t=this.recentBlocks.get(e),r=await this.provider.getBlock(e);if(t===r?.hash)break;e--}await this.storage.deleteEventsAfterBlock(e),this.currentBlock=e,await this._saveSyncState(),this.eventBus.emit("indexer:reorg",{forkBlock:t,commonAncestor:e,depth:t-e}),await this._syncHistorical()}pause(){this.isPaused=!0,this.state="paused",this.eventBus.emit("indexer:paused",{})}resume(){this.isPaused=!1,this.start(),this.eventBus.emit("indexer:resumed",{})}async resync(t){this.pause(),this.currentBlock=void 0!==t?t-1:this.deployBlock-1,await this.storage.clear(),await this._saveSyncState(),this.eventsIndexed=0,this.resume()}getStatus(){return{state:this.state,currentBlock:this.currentBlock,latestBlock:this.latestBlock,progress:this.latestBlock>0?Math.min(1,(this.currentBlock-this.deployBlock)/(this.latestBlock-this.deployBlock)):0,eventsIndexed:this.eventsIndexed,lastSyncTime:this.lastSyncTime,error:this.error}}async stop(){this.isPaused=!0;for(const{filter:t,listener:e}of this.eventListeners)this.contract.off(t,e);this.eventListeners=[],this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_sleep(t){return new Promise(e=>setTimeout(e,t))}}class Jc{constructor(t,e={}){this.queryEngine=t,this.definitions=e,this.entityAPIs={};for(const[t,r]of Object.entries(e))this.entityAPIs[t]=this._createEntityAPI(t,r)}getEntity(t){return this.entityAPIs[t]}getAllEntities(){return this.entityAPIs}_createEntityAPI(t,e){const r=this;return{query:async(n={})=>r._queryEntities(t,e,n),get:async n=>(await r._queryEntities(t,e,{[e.key]:n}))[0]||null,subscribe(n,i){const s=r._getRelevantEventTypes(e);return r.queryEngine.subscribe(s,async()=>{const s=await r._queryEntities(t,e,n);i(s)})},count:async(n={})=>(await r._queryEntities(t,e,n)).length}}async _queryEntities(t,e,r={}){const n=r.status,i={...r};delete i.status;const s=await this.queryEngine.query(e.source,{where:i,limit:1e4}),o=await this.queryEngine.getEventChecker(),a=this._getRelevantEventTypes(e);await o.prefetch(a);const l=[];for(const r of s.events){const i=await this._buildEntity(t,e,r,o);n&&i.status!==n||l.push(i)}return l}async _buildEntity(t,e,r,n){const i={_type:t,_sourceEvent:r,...r.data};if(i[e.key]=r.data[e.key]||r.indexed[e.key],e.status&&(i.status=this._evaluateStatus(i,e.status,n)),e.computed)for(const[t,r]of Object.entries(e.computed))try{i[t]=r(i,n)}catch(e){console.error(`[EntityResolver] Error computing ${t}:`,e),i[t]=null}if(e.relations)for(const[t,r]of Object.entries(e.relations))Object.defineProperty(i,t,{get:()=>this._resolveRelation(i,r),enumerable:!0});return i}_evaluateStatus(t,e,r){for(const[n,i]of Object.entries(e))if("default"!==n)try{if(i(t,r))return n}catch(t){console.error(`[EntityResolver] Error evaluating status ${n}:`,t)}return e.default||"unknown"}async _resolveRelation(t,e){const r=this.entityAPIs[e.entity];if(!r)return null;const n=t[e.foreignKey];return void 0===n?null:"many"===e.type?r.query({[e.foreignKey]:n}):r.get(n)}_getRelevantEventTypes(t){const e=new Set([t.source]);if(t.status)for(const r of Object.values(t.status))if("function"==typeof r){const t=r.toString().match(/events\.has\(['"](\w+)['"]/g)||[];for(const r of t){const t=r.match(/['"](\w+)['"]/)?.[1];t&&e.add(t)}}return Array.from(e)}}class $c{constructor(t,e){this.queryEngine=t,this.entityResolver=e}async userActivity(t,e={}){const{events:r=[],userFields:n,limit:i=50,offset:s=0}=e,o=t.toLowerCase(),a=[];for(const t of r){const e=await this.queryEngine.query(t,{limit:1e3}),r=n||this._detectAddressFields(e.events[0]);for(const t of e.events){r.some(e=>{const r=t.indexed[e]||t.data[e];return"string"==typeof r&&r.toLowerCase()===o})&&a.push({type:t.type,timestamp:t.timestamp||t.blockNumber,blockNumber:t.blockNumber,transactionHash:t.transactionHash,data:t.data})}}return a.sort((t,e)=>(e.timestamp||e.blockNumber)-(t.timestamp||t.blockNumber)),a.slice(s,s+i)}async refundable(t){const{itemEvent:e,itemKey:r,parentKey:n,cancelEvent:i,claimEvent:s,userField:o,user:a}=t,l=a.toLowerCase(),c=(await this.queryEngine.query(e,{limit:1e4})).events.filter(t=>{const e=t.indexed[o]||t.data[o];return"string"==typeof e&&e.toLowerCase()===l}),h=await this.queryEngine.query(i,{limit:1e4}),u=new Set(h.events.map(t=>t.indexed[n]||t.data[n])),d=await this.queryEngine.query(s,{limit:1e4}),f=new Set(d.events.map(t=>t.indexed[r]||t.data[r]));return c.filter(t=>{const e=t.indexed[r]||t.data[r],i=t.indexed[n]||t.data[n];return u.has(i)&&!f.has(e)})}async leaderboard(t){const{event:e,groupBy:r,aggregate:n,sumField:i,limit:s=10,where:o}=t,a=await this.queryEngine.query(e,{where:o,limit:1e4}),l=new Map;for(const t of a.events){const e=t.indexed[r]||t.data[r];if(void 0===e)continue;const n="string"==typeof e?e.toLowerCase():e;l.has(n)||l.set(n,{key:e,events:[]}),l.get(n).events.push(t)}const c=[];for(const[t,e]of l){let t;"count"===n?t=e.events.length:"sum"===n&&(t=e.events.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),c.push({key:e.key,value:t})}return c.sort((t,e)=>e.value-t.value),c.slice(0,s).map((t,e)=>({...t,rank:e+1}))}async timeSeries(t){const{event:e,interval:r,aggregate:n,sumField:i,where:s,periods:o=30}=t,a=await this.queryEngine.query(e,{where:s,limit:1e5}),l={hour:36e5,day:864e5,week:6048e5}[r];if(!l)throw new Error(`Invalid interval: ${r}`);const c=Date.now(),h=new Map;for(let t=0;t<o;t++){const e=new Date(c-(t+1)*l).toISOString();h.set(e,[])}for(const t of a.events){const e=t.timestamp?1e3*t.timestamp:c,r=Math.floor((c-e)/l);if(r>=0&&r<o){const e=new Date(c-(r+1)*l).toISOString();h.has(e)&&h.get(e).push(t)}}const u=[];for(const[t,e]of h){let r;"count"===n?r=e.length:"sum"===n&&(r=e.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),u.push({period:t,value:r})}return u.sort((t,e)=>new Date(t.period)-new Date(e.period)),u}_detectAddressFields(t){if(!t)return[];const e=[],r={...t.indexed,...t.data};for(const[t,n]of Object.entries(r))"string"==typeof n&&n.match(/^0x[a-fA-F0-9]{40}$/)&&e.push(t);return e}}class Qc extends Error{constructor(t,e,r){super(t),this.name="EventIndexerError",this.code=e,this.cause=r}}const Yc={NOT_INITIALIZED:"NOT_INITIALIZED",STORAGE_ERROR:"STORAGE_ERROR",SYNC_ERROR:"SYNC_ERROR",QUERY_ERROR:"QUERY_ERROR",INVALID_CONFIG:"INVALID_CONFIG",PROVIDER_ERROR:"PROVIDER_ERROR",REORG_DETECTED:"REORG_DETECTED"};class Xc{constructor(t,e={}){if(!t)throw new Qc("EventBus is required",Yc.INVALID_CONFIG);this.eventBus=t,this.blockchainService=e.blockchainService,this.storage=null,this.queryEngine=null,this.syncEngine=null,this.entityResolver=null,this.patternsAPI=null,this.contract=null,this.initialized=!1,this.config=null}async initialize(t){this._validateConfig(t),this.config=t;try{const e=this._getProvider(t),r=await e.getNetwork(),n=Number(r.chainId),i=this._extractEventTypes(t.contract.abi);this.storage=function(t){return"memory"===t?.type?new Gc:Wc.isStorageEnabled()?"undefined"!=typeof indexedDB?new jc:(console.warn("[EventIndexer] IndexedDB not available, falling back to memory storage"),new Gc):(console.log("[EventIndexer] User disabled IndexedDB storage, using memory"),new Gc)}(t.persistence),await this.storage.initialize({dbName:t.persistence?.dbName||`micro-web3-events-${n}`,version:t.persistence?.version||1,eventTypes:i}),this.contract=new Os(t.contract.address,t.contract.abi,e);const s=t.contract.deployBlock||await this._detectDeployBlock(e);this.queryEngine=new Kc(this.storage,this.eventBus),this.syncEngine=new Vc(this.storage,this.queryEngine,this.eventBus,t.sync||{}),await this.syncEngine.initialize({provider:e,contract:this.contract,eventTypes:i,deployBlock:s,chainId:n}),t.entities&&(this.entityResolver=new Jc(this.queryEngine,t.entities)),this.patternsAPI=new $c(this.queryEngine,this.entityResolver),this.initialized=!0,this.eventBus.emit("indexer:initialized",{}),await this.syncEngine.start()}catch(t){throw this.eventBus.emit("indexer:error",{code:Yc.STORAGE_ERROR,message:`Initialization failed: ${t.message}`,cause:t,recoverable:!1}),new Qc(`Failed to initialize EventIndexer: ${t.message}`,Yc.STORAGE_ERROR,t)}}_validateConfig(t){if(!t.contract)throw new Qc("contract config is required",Yc.INVALID_CONFIG);if(!t.contract.address)throw new Qc("contract.address is required",Yc.INVALID_CONFIG);if(!t.contract.abi||!Array.isArray(t.contract.abi))throw new Qc("contract.abi is required and must be an array",Yc.INVALID_CONFIG);if(!t.provider&&!this.blockchainService)throw new Qc("Either provider in config or blockchainService in constructor is required",Yc.INVALID_CONFIG)}_getProvider(t){if(t.provider)return t.provider;if(this.blockchainService?.getProvider)return this.blockchainService.getProvider();if(this.blockchainService?.provider)return this.blockchainService.provider;throw new Qc("No provider available",Yc.PROVIDER_ERROR)}_extractEventTypes(t){const e=[];for(const r of t)if("event"===r.type){const t=r.inputs.filter(t=>t.indexed).map(t=>t.name);e.push({name:r.name,inputs:r.inputs,indexedParams:t})}return e}async _detectDeployBlock(t){return console.warn("[EventIndexer] No deployBlock specified, starting from block 0"),0}get events(){return this._checkInitialized(),{query:(t,e)=>this.queryEngine.query(t,e),get:(t,e)=>this.queryEngine.get(t,e),subscribe:(t,e)=>this.queryEngine.subscribe(t,e),count:(t,e)=>this.queryEngine.count(t,e)}}get entities(){return this._checkInitialized(),this.entityResolver?new Proxy({},{get:(t,e)=>this.entityResolver.getEntity(e)}):(console.warn("[EventIndexer] No entities configured"),{})}get patterns(){return this._checkInitialized(),this.patternsAPI}get sync(){return this._checkInitialized(),{getStatus:()=>this.syncEngine.getStatus(),resync:t=>this.syncEngine.resync(t),clear:()=>this.storage.clear(),pause:()=>this.syncEngine.pause(),resume:()=>this.syncEngine.resume()}}_checkInitialized(){if(!this.initialized)throw new Qc("EventIndexer not initialized. Call initialize() first.",Yc.NOT_INITIALIZED)}async destroy(){this.syncEngine&&await this.syncEngine.stop(),this.storage&&await this.storage.close(),this.initialized=!1}static installHook(t){t.prototype.useIndexer?console.warn("[EventIndexer] useIndexer hook already installed"):t.prototype.useIndexer=function(t,e={},r={}){let n=null,i=!0,s=null;const o=()=>{const t={};for(const[r,n]of Object.entries(e))t[r]="function"==typeof n?n():n;return t},a=async()=>{try{const e=o();if(t.query){const r=await t.query(e);n=Array.isArray(r)?r:r.events}else n=[];i=!1,r.onUpdate&&r.onUpdate(n)}catch(t){i=!1,console.error("[useIndexer] Query error:",t),r.onError&&r.onError(t)}};return a(),t.subscribe&&(s=t.subscribe(o(),()=>{a()})),this.registerCleanup&&this.registerCleanup(()=>{s&&s()}),new Proxy([],{get:(t,e)=>"length"===e?n?.length||0:"isLoading"===e?i:e===Symbol.iterator?function*(){n&&(yield*n)}:"string"!=typeof e||isNaN(e)?n&&"function"==typeof n[e]?n[e].bind(n):n?.[e]:n?.[parseInt(e)]})}}}Xc.EventIndexerError=Qc,Xc.ErrorCodes=Yc;class Zc extends t{constructor(t){super(t),this.state={isVisible:!1}}show(){this.setState({isVisible:!0})}hide(){this.setState({isVisible:!1})}handleWalletClick(t){this.props.onWalletSelected&&this.props.onWalletSelected(t),this.hide()}render(){if(!this.state.isVisible)return e("div",{className:"wallet-modal-container",style:{display:"none"}});const t=Object.keys(this.props.providerMap);return e("div",{className:"wallet-modal-container"},e("div",{className:"wallet-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.hide()}},e("div",{className:"wallet-modal"},e("div",{className:"wallet-modal-header"},e("h3",null,"Select Your Wallet"),e("button",{className:"wallet-modal-close",onClick:this.bind(this.hide)},"×")),e("div",{className:"wallet-options"},t.map(t=>e("button",{key:t,className:"wallet-option","data-wallet":t,onClick:()=>this.handleWalletClick(t)},e("img",{src:this.props.walletIcons[t],alt:t}),e("span",null,t.charAt(0).toUpperCase()+t.slice(1))))))))}}class th extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.overlay=null,this.state={isVisible:!1,storageEnabled:!0,storageUsed:0,storageQuota:0,clearing:!1}}async show(){if(this.state.isVisible)return;const t=Wc.get(),e=await Wc.getStorageEstimate();this.setState({isVisible:!0,storageEnabled:t.storageEnabled,storageUsed:e.used||0,storageQuota:e.quota||0,clearing:!1}),this._createModal()}hide(){this.state.isVisible&&(this.overlay&&this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay),this.overlay=null,this._escHandler&&(document.removeEventListener("keydown",this._escHandler),this._escHandler=null),this.setState({isVisible:!1}))}_createModal(){th.injectStyles(),this.overlay=document.createElement("div"),this.overlay.className="mw3-settings-overlay",this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.hide()});const t=document.createElement("div");t.className="mw3-settings-modal",this.overlay.appendChild(t),document.body.appendChild(this.overlay),r(e(eh,{...this.state,eventBus:this.eventBus,onClose:()=>this.hide(),onStorageToggle:t=>this._handleStorageToggle(t),onClearData:()=>this._handleClearData()}),t),this._escHandler=t=>{"Escape"===t.key&&this.hide()},document.addEventListener("keydown",this._escHandler)}_handleStorageToggle(t){Wc.set({storageEnabled:t}),this.setState({storageEnabled:t}),this.eventBus.emit("settings:storageChanged",{enabled:t}),this._updateModalContent()}async _handleClearData(){if(!this.state.clearing){this.setState({clearing:!0}),this._updateModalContent();try{await Wc.clearAllData();const t=await Wc.getStorageEstimate();this.setState({storageUsed:t.used||0,storageQuota:t.quota||0,clearing:!1}),this.eventBus.emit("settings:dataCleared",{})}catch(t){console.error("[SettingsModal] Failed to clear data:",t),this.setState({clearing:!1})}this._updateModalContent()}}_updateModalContent(){if(this.overlay){const t=this.overlay.querySelector(".mw3-settings-modal");t&&r(e(eh,{...this.state,eventBus:this.eventBus,onClose:()=>this.hide(),onStorageToggle:t=>this._handleStorageToggle(t),onClearData:()=>this._handleClearData()}),t)}}static injectStyles(){if(document.getElementById("mw3-settings-styles"))return;const t=document.createElement("style");t.id="mw3-settings-styles",t.textContent="\n .mw3-settings-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n backdrop-filter: blur(4px);\n }\n\n .mw3-settings-modal {\n background: linear-gradient(135deg, #1a1a2e, #16213e);\n border: 1px solid rgba(218, 165, 32, 0.3);\n border-radius: 12px;\n width: 90%;\n max-width: 400px;\n color: #fff;\n font-family: 'Lato', system-ui, sans-serif;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n }\n\n .mw3-settings-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.25rem;\n border-bottom: 1px solid rgba(218, 165, 32, 0.2);\n }\n\n .mw3-settings-header h2 {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n }\n\n .mw3-settings-close {\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0;\n line-height: 1;\n }\n\n .mw3-settings-close:hover {\n color: #fff;\n }\n\n .mw3-settings-content {\n padding: 1.25rem;\n }\n\n .mw3-settings-section h3 {\n margin: 0 0 0.5rem 0;\n font-size: 0.9rem;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-description {\n margin: 0 0 1rem 0;\n font-size: 0.8rem;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n }\n\n .mw3-settings-row {\n margin-bottom: 1rem;\n }\n\n .mw3-settings-toggle {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n }\n\n .mw3-settings-toggle input {\n display: none;\n }\n\n .mw3-toggle-slider {\n width: 44px;\n height: 24px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n position: relative;\n transition: background 0.2s;\n }\n\n .mw3-toggle-slider::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: #fff;\n border-radius: 50%;\n transition: transform 0.2s;\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider {\n background: rgba(218, 165, 32, 0.8);\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider::after {\n transform: translateX(20px);\n }\n\n .mw3-toggle-label {\n font-size: 0.875rem;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-info {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.5);\n margin-bottom: 1rem;\n }\n\n .mw3-settings-note {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.4);\n margin: 0;\n font-style: italic;\n }\n\n .mw3-settings-btn {\n padding: 0.625rem 1rem;\n border-radius: 6px;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n border: none;\n transition: all 0.2s;\n }\n\n .mw3-settings-btn--primary {\n background: rgba(218, 165, 32, 0.9);\n color: #1a1a2e;\n }\n\n .mw3-settings-btn--primary:hover {\n background: rgba(218, 165, 32, 1);\n }\n\n .mw3-settings-btn--danger {\n background: rgba(255, 99, 71, 0.2);\n color: rgba(255, 99, 71, 0.9);\n border: 1px solid rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn--danger:hover {\n background: rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .mw3-settings-footer {\n padding: 1rem 1.25rem;\n border-top: 1px solid rgba(218, 165, 32, 0.2);\n display: flex;\n justify-content: flex-end;\n }\n ",document.head.appendChild(t)}}class eh extends t{render(){const{storageEnabled:t,storageUsed:r,storageQuota:n,clearing:i,onClose:s,onStorageToggle:o,onClearData:a}=this.props,l=(r/1048576).toFixed(1),c=(n/1048576).toFixed(0);return e("div",null,e("div",{className:"mw3-settings-header"},e("h2",null,"Settings"),e("button",{className:"mw3-settings-close",onClick:s},"×")),e("div",{className:"mw3-settings-content"},e("div",{className:"mw3-settings-section"},e("h3",null,"Data Storage"),e("p",{className:"mw3-settings-description"},"Event data is cached locally to improve performance. You can disable this to save space."),e("div",{className:"mw3-settings-row"},e("label",{className:"mw3-settings-toggle"},e("input",{type:"checkbox",checked:t,onChange:t=>o(t.target.checked)}),e("span",{className:"mw3-toggle-slider"}),e("span",{className:"mw3-toggle-label"},"Enable local event storage"))),e("div",{className:"mw3-settings-info"},e("span",null,`Storage used: ${l} MB${c>0?` / ${c} MB`:""}`)),e("div",{className:"mw3-settings-row"},e("button",{className:"mw3-settings-btn mw3-settings-btn--danger",disabled:i,onClick:a},i?"Clearing...":"Clear All Cached Data")),e("p",{className:"mw3-settings-note"},"Disabling storage means event history will need to be re-fetched each session."))),e("div",{className:"mw3-settings-footer"},e("button",{className:"mw3-settings-btn mw3-settings-btn--primary",onClick:s},"Done")))}}class rh extends t{constructor(t){super(t),this.walletService=t.walletService,this.walletModal=null,this.settingsModal=null,this.state={walletConnected:!1,address:null,balance:"0.00",loading:!0,menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1}}didMount(){console.log("[FloatingWalletButton] didMount called"),this.initialize(),this.setupClickOutsideHandler()}async initialize(){await this.checkWalletConnection(),this.setupEventListeners()}async checkWalletConnection(){console.log("[FloatingWalletButton] checkWalletConnection called");try{this.walletService.isInitialized||await this.walletService.initialize();let t=this.walletService.isConnected(),e=this.walletService.getAddress();if(!t&&void 0!==window.ethereum)try{const r=await window.ethereum.request({method:"eth_accounts"});if(r&&r.length>0){const n=this._detectWalletType();console.log("[FloatingWalletButton] Detected existing connection:",n,r[0]);try{await this.walletService.selectWallet(n),await this.walletService.connect(),t=this.walletService.isConnected(),e=this.walletService.getAddress(),t&&(console.log("[FloatingWalletButton] Auto-connected to existing session:",n),localStorage.setItem("ms2fun_lastWallet",n))}catch(t){console.log("[FloatingWalletButton] Could not auto-connect:",t.message)}}}catch(t){console.log("[FloatingWalletButton] Could not check existing accounts:",t)}t&&e?await this.loadWalletInfo(e):this.setState({loading:!1,walletConnected:!1})}catch(t){console.error("[FloatingWalletButton] Error checking wallet connection:",t),this.setState({loading:!1,walletConnected:!1})}}_detectWalletType(){return void 0===window.ethereum?"metamask":window.ethereum.isRabby?"rabby":window.ethereum.isRainbow?"rainbow":window.phantom?.ethereum?"phantom":"metamask"}async loadWalletInfo(t){try{let e=this.walletService.ethersProvider;e||void 0===window.ethereum||(e=new hc(window.ethereum));let r="0.00";if(e&&t){const n=await e.getBalance(t);r=parseFloat(Sc(n)).toFixed(4)}const n=!1,i=!1;this.setState({walletConnected:!0,address:t,balance:r,loading:!1,hasExecTokens:n,isVaultBenefactor:i})}catch(e){console.error("[FloatingWalletButton] Failed to load wallet info:",e),this.setState({walletConnected:!0,address:t,loading:!1})}}async checkExecTokens(t){return!1}async checkVaultBenefactor(t){return!1}setupEventListeners(){this.subscribe("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),this.subscribe("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),this.subscribe("wallet:changed",async t=>{await this.loadWalletInfo(t.address)})}setupClickOutsideHandler(){const t=t=>{this.element&&!this.element.contains(t.target)&&this.state.menuOpen&&this.setState({menuOpen:!1})};document.addEventListener("click",t),this.registerCleanup(()=>{document.removeEventListener("click",t)})}handleButtonClick(t){t.preventDefault(),t.stopPropagation(),this.state.walletConnected?this.setState({menuOpen:!this.state.menuOpen}):this.showWalletModal()}showWalletModal(){const t={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},n={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),r(e(Zc,{providerMap:t,walletIcons:n,onWalletSelected:async t=>{await this.handleWalletSelection(t)},ref:t=>this.walletModal=t}),this.modalRoot)),this.walletModal?.show()}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect()}catch(t){console.error("[FloatingWalletButton] Error connecting wallet:",t)}}handleMenuItemClick(t){this.setState({menuOpen:!1}),window.router?window.router.navigate(t):window.location.href=t}handleDisconnect(t){t.preventDefault(),t.stopPropagation();try{this.walletService.disconnect(),this.setState({menuOpen:!1})}catch(t){console.error("[FloatingWalletButton] Failed to disconnect:",t)}}static get styles(){return"\n /* FloatingWalletButton - Bottom-right floating wallet connection button with power user dropdown */\n\n .floating-wallet-button {\n position: fixed;\n bottom: 2rem;\n right: 2rem;\n z-index: 9999; /* Above all content */\n }\n\n .floating-wallet-button .wallet-btn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.9), rgba(101, 67, 33, 0.9));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 50px;\n color: #fff;\n font-family: 'Cinzel', serif;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(10px);\n }\n\n .floating-wallet-button .wallet-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(218, 165, 32, 0.4);\n border-color: rgba(218, 165, 32, 0.8);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n\n .floating-wallet-button .wallet-btn:active {\n transform: translateY(0);\n }\n\n /* Wallet icon */\n .floating-wallet-button .wallet-icon {\n font-size: 1.2rem;\n line-height: 1;\n }\n\n /* Wallet text/address */\n .floating-wallet-button .wallet-text,\n .floating-wallet-button .wallet-address {\n font-size: 0.875rem;\n white-space: nowrap;\n }\n\n /* Loading state */\n .floating-wallet-button.loading {\n pointer-events: none;\n }\n\n .floating-wallet-button .wallet-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid rgba(218, 165, 32, 0.3);\n border-top-color: rgba(218, 165, 32, 0.9);\n border-radius: 50%;\n animation: wallet-spin 0.8s linear infinite;\n }\n\n @keyframes wallet-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Dropdown menu */\n .wallet-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 0.5rem);\n right: 0;\n min-width: 240px;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.98), rgba(101, 67, 33, 0.98));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(15px);\n overflow: hidden;\n animation: dropdown-slide-up 0.2s ease-out;\n }\n\n @keyframes dropdown-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Dropdown header */\n .wallet-dropdown-menu .dropdown-header {\n padding: 1rem;\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(218, 165, 32, 0.3);\n }\n\n .wallet-dropdown-menu .dropdown-address {\n font-family: 'Cinzel', serif;\n font-size: 0.875rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n margin-bottom: 0.25rem;\n }\n\n .wallet-dropdown-menu .dropdown-balance {\n font-family: 'Lato', sans-serif;\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.7);\n }\n\n /* Dropdown divider */\n .wallet-dropdown-menu .dropdown-divider {\n height: 1px;\n background: linear-gradient(90deg,\n transparent,\n rgba(218, 165, 32, 0.3) 50%,\n transparent\n );\n margin: 0;\n }\n\n /* Dropdown items */\n .wallet-dropdown-menu .dropdown-items {\n padding: 0.5rem;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 1rem;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.9);\n font-family: 'Lato', sans-serif;\n font-size: 0.875rem;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .wallet-dropdown-menu .dropdown-item:hover {\n background: rgba(218, 165, 32, 0.15);\n color: #fff;\n }\n\n .wallet-dropdown-menu .dropdown-item:active {\n background: rgba(218, 165, 32, 0.25);\n }\n\n .wallet-dropdown-menu .dropdown-item .item-icon {\n font-size: 1.125rem;\n line-height: 1;\n opacity: 0.9;\n }\n\n .wallet-dropdown-menu .dropdown-item .item-label {\n flex: 1;\n }\n\n /* Disconnect button special styling */\n .wallet-dropdown-menu .dropdown-item.disconnect {\n color: rgba(255, 99, 71, 0.9);\n }\n\n .wallet-dropdown-menu .dropdown-item.disconnect:hover {\n background: rgba(255, 99, 71, 0.15);\n color: rgba(255, 99, 71, 1);\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n .floating-wallet-button {\n bottom: 1rem;\n right: 1rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.625rem 1rem;\n font-size: 0.8rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 200px;\n right: 0;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n padding: 0.625rem 0.875rem;\n font-size: 0.8rem;\n }\n }\n\n /* Small screens - even more compact */\n @media (max-width: 480px) {\n .floating-wallet-button {\n bottom: 0.75rem;\n right: 0.75rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.5rem 0.875rem;\n font-size: 0.75rem;\n }\n\n .floating-wallet-button .wallet-icon {\n font-size: 1rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 180px;\n }\n }\n\n /* Ensure menu appears above button when open */\n .floating-wallet-button.menu-open .wallet-btn {\n border-color: rgba(218, 165, 32, 0.9);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n "}render(){if(console.log("[FloatingWalletButton] render called, loading:",this.state.loading,"walletConnected:",this.state.walletConnected),this.state.loading)return e("div",{className:"floating-wallet-button loading"},e("div",{className:"wallet-spinner"}));const{walletConnected:t,address:r,balance:n,menuOpen:i,hasExecTokens:s,isVaultBenefactor:o}=this.state;if(!t)return e("div",{className:"floating-wallet-button disconnected",ref:t=>this.element=t},e("button",{className:"wallet-btn",onClick:this.bind(this.handleButtonClick)},e("span",{className:"wallet-icon"},"🦊"),e("span",{className:"wallet-text"},"Connect")));const a=`${r.slice(0,6)}...${r.slice(-4)}`;return e("div",{className:"floating-wallet-button connected "+(i?"menu-open":""),ref:t=>this.element=t},e("button",{className:"wallet-btn",title:`${this.escapeHtml(r)}\nBalance: ${n} ETH`,onClick:this.bind(this.handleButtonClick)},e("span",{className:"wallet-icon"},"🦊"),e("span",{className:"wallet-address"},this.escapeHtml(a))),i&&this.renderDropdownMenu(r,n,s,o))}renderDropdownMenu(t,r,n,i){const s=`${t.slice(0,6)}...${t.slice(-4)}`;return e("div",{className:"wallet-dropdown-menu"},e("div",{className:"dropdown-header"},e("div",{className:"dropdown-address"},this.escapeHtml(s)),e("div",{className:"dropdown-balance"},`${r} ETH`)),e("div",{className:"dropdown-divider"}),e("div",{className:"dropdown-items"},e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/portfolio")},e("span",{className:"item-icon"},"📊"),e("span",{className:"item-label"},"Portfolio")),n&&e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/governance")},e("span",{className:"item-icon"},"🗳️"),e("span",{className:"item-label"},"Governance")),e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/staking")},e("span",{className:"item-icon"},"🎯"),e("span",{className:"item-label"},"Staking")),i&&e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/portfolio?filter=vaults")},e("span",{className:"item-icon"},"💰"),e("span",{className:"item-label"},"Vault Positions"))),e("div",{className:"dropdown-divider"}),e("div",{className:"dropdown-items"},e("button",{className:"dropdown-item",onClick:()=>{this.setState({menuOpen:!1}),this.openSettings()}},e("span",{className:"item-icon"},"⚙️"),e("span",{className:"item-label"},"Settings")),e("button",{className:"dropdown-item disconnect",onClick:this.bind(this.handleDisconnect)},e("span",{className:"item-icon"},"🔌"),e("span",{className:"item-label"},"Disconnect"))))}openSettings(){this.settingsModal||(this.settingsModal=new th({eventBus:n})),this.settingsModal.show()}willUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null),this.settingsModal&&(this.settingsModal.hide(),this.settingsModal=null)}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}}class nh extends Zc{handleWalletOptionClick(t){this.props.onWalletSelected&&this.props.onWalletSelected(t),this.hide()}render(){if(!this.state.isVisible)return e("div",{className:"wallet-modal-container",style:{display:"none"}});const t=Object.keys(this.props.providerMap);return e("div",{className:"wallet-modal-container"},e("div",{className:"wallet-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.hide()}},e("div",{className:"wallet-modal"},e("div",{className:"wallet-modal-header"},e("h3",null,"Select Your Wallet"),e("button",{className:"wallet-modal-close",onClick:this.bind(this.hide)},"×")),e("div",{className:"wallet-options"},t.map(t=>e("button",{key:t,className:"wallet-option",onClick:()=>this.handleWalletOptionClick(t)},e("img",{src:this.props.walletIcons[t],alt:t}),e("span",null,t.charAt(0).toUpperCase()+t.slice(1))))))))}}class ih extends rh{constructor(t){super(t),this.modalRoot=null}showWalletModal(){const t=this.walletService?.providerMap||{rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},n=this.walletService?.walletIcons||{rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),r(e(nh,{providerMap:t,walletIcons:n,onWalletSelected:async t=>{await this.handleWalletSelection(t)},ref:t=>this.walletModal=t}),this.modalRoot)),this.walletModal?.show()}willUnmount(){this.modalRoot?.parentNode&&(this.modalRoot.parentNode.removeChild(this.modalRoot),this.modalRoot=null),super.willUnmount()}render(){if(this.state.loading)return e("div",{className:"floating-wallet-button loading"},e("div",{className:"wallet-spinner"}));const{walletConnected:t,address:r,balance:n,menuOpen:i}=this.state;if(!t)return e("div",{className:"floating-wallet-button disconnected",ref:t=>this.element=t},e("button",{className:"wallet-btn",onClick:this.bind(this.handleWalletToggle)},e("span",{className:"wallet-mark"}),e("span",{className:"wallet-text"},"Connect Wallet")));const s=`${r.slice(0,6)}...${r.slice(-4)}`,o=["floating-wallet-button","connected"];return i&&o.push("menu-open"),e("div",{className:o.join(" "),ref:t=>this.element=t},e("button",{className:"wallet-btn",title:`${this.escapeHtml(r)}\nBalance: ${n} ETH`,onClick:this.bind(this.handleWalletToggle)},e("span",{className:"wallet-mark wallet-mark--connected"}),e("span",{className:"wallet-address"},this.escapeHtml(s)),e("span",{className:"wallet-disconnect",title:"Disconnect",onClick:this.bind(this.handleInlineDisconnect)},"⏏︎")),this.renderWalletPanel(r,n,i))}renderWalletPanel(t,r,n){const i=`${t.slice(0,6)}...${t.slice(-4)}`;return e("div",{className:"wallet-info-panel","aria-hidden":n?"false":"true"},e("div",{className:"wallet-info-row"},e("span",{className:"wallet-info-label"},"Address"),e("span",{className:"wallet-info-value"},this.escapeHtml(i))),e("div",{className:"wallet-info-row"},e("span",{className:"wallet-info-label"},"ETH Balance"),e("span",{className:"wallet-info-value"},`${r} ETH`)))}didUpdate(){this.state.menuOpen?this.attachOutsideClickListener():this.detachOutsideClickListener()}attachOutsideClickListener(){this.outsideClickHandler||this.outsideClickTimeout||(this.outsideClickHandler=t=>{if(!this.element)return;const e="function"==typeof t.composedPath?t.composedPath():[];e.length&&e.includes(this.element)||t.target&&this.element.contains(t.target)||this.setState({menuOpen:!1})},this.outsideClickTimeout=window.setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler),this.outsideClickTimeout=null},0))}detachOutsideClickListener(){this.outsideClickTimeout&&(window.clearTimeout(this.outsideClickTimeout),this.outsideClickTimeout=null),this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}handleWalletToggle(t){this.handleButtonClick(t)}handleInlineDisconnect(t){t&&(t.preventDefault(),t.stopPropagation()),this.handleDisconnect(t)}}class sh extends t{constructor(t={}){super(t),this.state={gatewayIndex:0,isLoading:!0,hasError:!1,currentSrc:null}}getCurrentUrl(){const{src:t}=this.props;return t?Oc(t)?Lc(t,this.state.gatewayIndex):t:null}handleImageLoad(t){this.setState({isLoading:!1,hasError:!1}),this.props.onLoad&&this.props.onLoad(t)}handleImageError(t){const e=Uc(),{src:r}=this.props;if(!Oc(r)||this.state.gatewayIndex>=e.length-1)return this.setState({isLoading:!1,hasError:!0}),console.error("[IpfsImage] Failed to load image:",r,{triedGateways:this.state.gatewayIndex+1,totalGateways:e.length}),void(this.props.onError&&this.props.onError(t));const n=this.state.gatewayIndex+1;this.setState({gatewayIndex:n})}normalizeStyle(t){return t&&"object"==typeof t?t:{}}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}render(){const{src:t,alt:r="",className:n="",style:i={},loading:s="lazy",placeholder:o,errorPlaceholder:a}=this.props,{isLoading:l,hasError:c}=this.state;if(!t)return e("div",{className:"ipfs-image-empty"});const h=this.getCurrentUrl();if(c)return a||e("div",{className:`ipfs-image-error ${n}`,style:this.normalizeStyle(i)},e("div",{className:"ipfs-image-error-icon"},"⚠️"),e("div",{className:"ipfs-image-error-text"},"IPFS image unavailable"));const u=l?{opacity:0}:{opacity:1,transition:"opacity 0.3s"};return e("div",{className:`ipfs-image-container ${n}`,style:this.normalizeStyle(i)},l&&o,e("img",{src:h||"",alt:r,loading:s,className:"ipfs-image "+(l?"ipfs-image-loading":"ipfs-image-loaded"),style:u,onLoad:this.bind(this.handleImageLoad),onError:this.bind(this.handleImageError)}))}}sh.styles="\n .ipfs-image-container {\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n\n .ipfs-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .ipfs-image-loading {\n opacity: 0;\n }\n\n .ipfs-image-loaded {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n }\n\n .ipfs-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n background-color: #f5f5f5;\n color: #666;\n padding: 1rem;\n text-align: center;\n }\n\n .ipfs-image-error-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n }\n\n .ipfs-image-error-text {\n font-size: 0.875rem;\n }\n\n .ipfs-image-empty {\n display: block;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n\n /* Dark mode support */\n html[data-theme='dark'] .ipfs-image-error {\n background-color: #2a2a2a;\n color: #aaa;\n }\n";class oh extends t{constructor(t){super(t),this.state={nftMintingEnabled:t.nftMintingEnabled||!1,message:t.message||"",isValid:void 0===t.isValid||t.isValid,nftBalance:t.nftBalance||0,swapDirection:t.swapDirection||"buy",lastValidationState:!0,isPhase2:null===t.isPhase2?null:t.isPhase2},this.updateTimer=null}didMount(){this.subscribe("contractData:updated",t=>{const e=t.liquidityPool&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool;this.state.isPhase2!==e&&this.setState({isPhase2:e})})}validateTransaction(){const t=this.state.message.length<=140,e=!this.state.nftMintingEnabled||this.state.nftBalance<10,r=t&&e;this.state.lastValidationState!==r&&(this.setState({lastValidationState:r,isValid:r}),this.props.eventBus?.emit("transactionValidation",{isValid:r,errors:this.getValidationErrors()}))}getValidationErrors(){const t=[];return this.state.message.length>140&&t.push("Message must be 140 characters or less"),this.state.nftMintingEnabled&&this.state.nftBalance>=10&&t.push("Cannot mint more than 10 NFTs"),t}handleMessageInput(t){const e=t.target.value||"";this.setState({message:e}),this.validateTransaction(),this.emitStateUpdate()}handleNFTToggle(t){const e=t.target.checked;this.setState({nftMintingEnabled:e}),this.validateTransaction(),this.emitStateUpdate()}emitStateUpdate(){const t={message:this.state.message,nftMintingEnabled:this.state.nftMintingEnabled};this.props.eventBus?.emit("transactionOptions:update",t)}render(){const{nftMintingEnabled:t,message:r,isValid:n,isPhase2:i,swapDirection:s}=this.state;if(null===i||i)return e("div",{className:"transaction-options empty"});const o=this.getValidationErrors();return e("div",{className:"transaction-options"},e("div",{className:"option-group "+("sell"===s?"hidden":"")},e("label",{className:"nft-toggle"},e("input",{type:"checkbox",checked:t,onChange:this.bind(this.handleNFTToggle)}),"Mint NFT with transaction")),e("div",{className:"option-group"},e("label",{htmlFor:"messageInput"},"Transaction Message"),e("textarea",{id:"messageInput",maxLength:140,placeholder:"Enter optional message...",value:r,onInput:this.bind(this.handleMessageInput)}),e("span",{className:"character-count "+(r.length>140?"error":"")},`${r.length}/140`)),e("div",{className:"validation-status "+(n?"valid":"invalid")},o.map((t,r)=>e("p",{key:r,className:"error"},t))))}}class ah extends t{constructor(t){super(t),this.state={messages:[]}}show(t){const{title:e="",message:r="",type:n="info",duration:i=5e3}=t,s=Date.now()+Math.random(),o={id:s,title:e,message:r,type:n};this.setState({messages:[...this.state.messages,o]}),i>0&&setTimeout(()=>this.close(s),i)}close(t){const e=this.state.messages.filter(e=>e.id!==t);this.setState({messages:e})}error(t,e="Error"){this.show({title:e,message:t,type:"error"})}success(t,e="Success"){this.show({title:e,message:t,type:"success"})}warning(t,e="Warning"){this.show({title:e,message:t,type:"warning"})}info(t,e="Info"){this.show({title:e,message:t,type:"info"})}handleClose(t){this.close(t)}render(){const{messages:t}=this.state;return e("div",{id:"message-popup-container"},t.map(t=>e("div",{key:t.id,className:`message-popup ${t.type}`,"data-id":t.id},e("div",{className:"message-content"},t.title&&e("div",{className:"message-title"},t.title),e("div",{className:"message-text"},t.message)),e("button",{className:"close-button",onClick:()=>this.handleClose(t.id)},"×"))))}static get styles(){return"\n #message-popup-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .message-popup {\n background: #ffffff;\n border-radius: 8px;\n padding: 15px 20px;\n min-width: 300px;\n max-width: 400px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n animation: slideIn 0.3s ease;\n border-left: 4px solid #2196F3;\n }\n\n .message-popup.error {\n border-left-color: #f44336;\n }\n\n .message-popup.success {\n border-left-color: #4CAF50;\n }\n\n .message-popup.warning {\n border-left-color: #ff9800;\n }\n\n .message-content {\n flex-grow: 1;\n margin-right: 10px;\n }\n\n .message-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n .message-text {\n font-size: 14px;\n color: #666;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n line-height: 1;\n }\n\n .close-button:hover {\n color: #666;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n "}}const lh={PRICE:"price:updated",STATUS:"price:status"};class ch extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={price:t.price||0,lastUpdated:t.lastUpdated||null,loading:void 0===t.loading||t.loading,error:t.error||null}}didMount(){this.eventBus&&(this.subscribe(lh.PRICE,this.bind(this.handlePriceUpdate)),this.subscribe(lh.STATUS,this.bind(this.handleStatusUpdate)))}handlePriceUpdate({price:t}){this.setState({price:t||0,loading:!1})}handleStatusUpdate({loading:t,error:e}){this.setState({loading:t,error:e})}render(){const{price:t,lastUpdated:r,loading:n,error:i}=this.state;return n?e("div",{className:"price-display loading marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"loading-indicator"},"Loading..."))):i?e("div",{className:"price-display error marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"error-message"},`Error: ${i}`))):e("div",{className:"price-display marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"price-value"},e("span",{className:"amount"},Number(t).toFixed(8)),e("span",{className:"currency"},"ETH / Cult Exec"))))}static get styles(){return"\n .price-display {\n background: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .price-header h3 {\n margin: 0;\n color: var(--price-display-header-color, var(--color-text-primary, #333));\n font-size: 16px;\n }\n\n .last-updated {\n color: #666;\n font-size: 12px;\n }\n\n .price-content {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 48px;\n }\n\n .price-value {\n font-size: 24px;\n font-weight: bold;\n color: #fff;\n }\n\n .amount {\n margin-right: 8px;\n }\n\n .currency {\n color: var(--price-display-currency-color, var(--color-accent, #764ba2));\n }\n\n .loading-indicator {\n color: #666;\n font-style: italic;\n }\n\n .error-message {\n color: #ff4444;\n font-size: 14px;\n }\n\n /* Loading state animation */\n .price-display.loading .price-content {\n opacity: 0.7;\n }\n\n .price-display.loading .loading-indicator:after {\n content: '';\n animation: loading-dots 1.5s infinite;\n }\n\n @keyframes loading-dots {\n 0% { content: '.'; }\n 33% { content: '..'; }\n 66% { content: '...'; }\n }\n\n /* Error state styles */\n .price-display.error {\n border: 1px solid #ff4444;\n }\n\n /* Mobile responsive styles */\n @media (max-width: 768px) {\n .price-display {\n margin: 8px;\n padding: 12px;\n }\n\n .price-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .last-updated {\n margin-top: 4px;\n }\n\n .price-value {\n font-size: 20px;\n }\n }\n "}}class hh extends t{constructor(t){super(t),console.log("[DEBUG] ApproveModal constructor called with amount:",t.amount,"and address:",t.userAddress),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.amount=t.amount,this.userAddress=t.userAddress,this.messagePopup=new ah("approve-status"),this.isClosing=!1,this.modalId=Math.random().toString(36).substring(2,9),this.state={status:"idle",statusMessage:""},console.log(`[DEBUG] ApproveModal instance created with ID: ${this.modalId}`)}didMount(){console.log(`[DEBUG-${this.modalId}] ApproveModal mounted to DOM`)}async handleApprove(){console.log(`[DEBUG-${this.modalId}] Approve button clicked`);try{if(this.setState({status:"pending",statusMessage:"Waiting for wallet confirmation..."}),this.userAddress)console.log(`[DEBUG-${this.modalId}] Using provided user address: ${this.userAddress}`);else{if(console.log(`[DEBUG-${this.modalId}] No user address provided, attempting to get from signer`),!this.blockchainService||!this.blockchainService.signer)throw console.error(`[DEBUG-${this.modalId}] No blockchain service or signer available`),new Error("No wallet connected. Please connect your wallet first.");try{this.userAddress=await this.blockchainService.signer.getAddress(),console.log(`[DEBUG-${this.modalId}] Retrieved user address for approval: ${this.userAddress}`)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Failed to get user address for approval:`,t),new Error("Could not get wallet address for approval. Please reconnect your wallet.")}}console.log(`[DEBUG-${this.modalId}] Parsing amount: ${this.amount}`);const t=this.blockchainService.parseExec(this.amount);console.log(`[DEBUG-${this.modalId}] Parsed amount: ${t}`);const e=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;console.log(`[DEBUG-${this.modalId}] Router address for approval: ${e}`),console.log(`[DEBUG-${this.modalId}] Approving ${this.amount} EXEC tokens from ${this.userAddress} to ${e}`),this.setState({statusMessage:"Transaction submitted, waiting for confirmation..."}),console.log(`[DEBUG-${this.modalId}] Calling blockchainService.setApproval`);try{const r=await this.blockchainService.setApproval(e,t);console.log(`[DEBUG-${this.modalId}] Approval transaction result:`,r)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Transaction error:`,t),t}this.setState({status:"success",statusMessage:"Approval successful!"}),console.log(`[DEBUG-${this.modalId}] Approval successful, waiting before emitting event`),await new Promise(t=>setTimeout(t,1500)),console.log(`[DEBUG-${this.modalId}] Emitting approve:complete event`),this.eventBus.emit("approve:complete"),console.log(`[DEBUG-${this.modalId}] Calling handleClose after successful approval`),this.handleClose()}catch(t){console.error(`[DEBUG-${this.modalId}] Approval failed:`,t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}this.setState({status:"error",statusMessage:`Error: ${e}`}),this.messagePopup.error(`Approval Failed: ${e}`,"Transaction Failed")}}handleClose(){if(console.log(`[DEBUG-${this.modalId}] handleClose called`),this.isClosing)console.log(`[DEBUG-${this.modalId}] Already closing, skipping`);else{this.isClosing=!0,console.log(`[DEBUG-${this.modalId}] Closing approval modal`);try{this.element&&this.element.parentNode?(console.log(`[DEBUG-${this.modalId}] Removing modal from DOM`),this.element.parentNode.removeChild(this.element)):console.warn(`[DEBUG-${this.modalId}] Modal element or parent not found during close`),console.log(`[DEBUG-${this.modalId}] Emitting approveModal:closed event`),this.eventBus.emit("approveModal:closed"),console.log(`[DEBUG-${this.modalId}] Calling dispose method`),this.dispose()}catch(t){console.error(`[DEBUG-${this.modalId}] Error closing approval modal:`,t)}}}dispose(){console.log(`[DEBUG-${this.modalId}] Disposing component resources`),this.isClosing=!0,this.blockchainService=null,this.userAddress=null,console.log(`[DEBUG-${this.modalId}] Component disposed`)}show(){console.log(`[DEBUG-${this.modalId}] Show method called`),this.isClosing=!1,this.element&&(this.element.style.display="block"),console.log(`[DEBUG-${this.modalId}] Modal set to display:block`)}hide(){console.log(`[DEBUG-${this.modalId}] Hide method called`),this.element&&(this.element.style.display="none")}render(){const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter,r=parseInt(this.amount).toLocaleString(),{status:n,statusMessage:i}=this.state,s="pending"===n;return e("div",{className:"approve-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.handleClose()}},e("div",{className:"approve-modal"},e("button",{className:"approve-modal-close",onClick:this.bind(this.handleClose)},"×"),e("div",{className:"approve-modal-content"},e("h2",null,"Approve Router"),e("p",null,"Before selling your $EXEC tokens, you need to approve the router contract to spend them."),e("div",{className:"approve-details"},e("div",{className:"approve-info"},e("span",{className:"label"},"Amount to Approve:"),e("span",{className:"value"},`${r} $EXEC`)),e("div",{className:"approve-info"},e("span",{className:"label"},"Router Address:"),e("span",{className:"value"},t))),i&&e("div",{className:`status-message ${n}`},i),e("button",{className:"approve-button",disabled:s,onClick:this.bind(this.handleApprove)},s?"Approving...":"Approve"))))}static get styles(){return"\n .approve-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.75);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .approve-modal {\n background-color: #111;\n border-radius: 8px;\n padding: 24px;\n position: relative;\n width: 90%;\n max-width: 500px;\n }\n\n .approve-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #fff;\n }\n\n .approve-modal h2 {\n margin: 0 0 16px 0;\n color: #fff;\n }\n\n .approve-details {\n background-color: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n }\n\n .approve-info {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n word-break: break-all;\n }\n\n .approve-info:last-child {\n margin-bottom: 0;\n }\n\n .approve-info .label {\n color: #888;\n margin-right: 16px;\n }\n\n .approve-info .value {\n color: #fff;\n text-align: right;\n }\n\n .approve-button {\n width: 100%;\n padding: 12px;\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n margin-top: 16px;\n }\n\n .approve-button:disabled {\n background-color: #555;\n cursor: not-allowed;\n }\n\n .approve-button:hover:not(:disabled) {\n background-color: #0056b3;\n }\n\n .status-message {\n margin-top: 12px;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n font-size: 14px;\n }\n\n .status-message.pending {\n background-color: #2c3e50;\n color: #f1c40f;\n }\n\n .status-message.success {\n background-color: #27ae60;\n color: white;\n }\n\n .status-message.error {\n background-color: #c0392b;\n color: white;\n }\n "}}class uh extends t{constructor(t={}){super(t)}handleInput(t,e){const r=t.target.value;this.props.onInput&&this.props.onInput(e,r)}render(){const{direction:t,ethAmount:r,execAmount:n,calculatingAmount:i,freeMint:s,balances:o={eth:"0",exec:"0"}}=this.props,a=parseFloat(o.eth||0).toFixed(6),l=parseInt(o.exec||0).toLocaleString(),c="sell"===t&&s?`Available: ${(parseInt(o.exec||0)-1e6).toLocaleString()}`:`Balance: ${l}`,h="buy"===t?i?"Loading...":n:i?"Loading...":r,u="buy"===t?"ETH":"$EXEC",d="buy"===t?"$EXEC":"ETH",f="buy"===t?`Balance: ${a}`:c,p="buy"===t?`Balance: ${l}`:`Balance: ${a}`;return e("div",{className:"swap-inputs"},e("div",{className:"input-container"},e("input",{type:"text",className:"top-input",value:"buy"===t?r:n,placeholder:"0.0",pattern:"^[0-9]*[.]?[0-9]*$",onInput:t=>this.handleInput(t,"top")}),e("div",{className:"token-info"},e("span",{className:"token-symbol"},u),e("span",{className:"token-balance"},f))),e("div",{className:"direction-switch-slot"}),e("div",{className:"input-container"},e("input",{type:"text",className:"bottom-input",value:h,placeholder:"0.0",pattern:"^[0-9]*[.]?[0-9]*$",onInput:t=>this.handleInput(t,"bottom")}),e("div",{className:"token-info"},e("span",{className:"token-symbol"},d),e("span",{className:"token-balance"},p))))}}class dh extends t{constructor(t={}){super(t)}handleClick(t){t.preventDefault(),!this.props.disabled&&this.props.onClick&&this.props.onClick(t)}render(){const{direction:t,disabled:r}=this.props,n="buy"===t?"Buy $EXEC":"Sell $EXEC";return e("button",{className:"swap-button",disabled:r,onClick:this.bind(this.handleClick)},n)}}class fh extends t{constructor(t){super(t),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.state={direction:t.direction||"buy",ethAmount:"",execAmount:"",activeInput:null,freeMint:t.freeMint||!1,freeSupply:t.freeSupply||0,calculatingAmount:!1,isPhase2:null===t.isPhase2?null:t.isPhase2,dataReady:t.dataReady||!1,balances:t.balances||{eth:"0",exec:"0"},price:t.price||{current:0},contractData:t.contractData||{}},this._address=t.address||null,this.messagePopup=new ah("status-message"),this.messagePopup.initialize?.(),this.calculateTimer=null,this.onDirectionChange=t.onDirectionChange,this.transactionOptionsState={message:"",nftMintingEnabled:!1},this.approveModal=null,this.eventListeners=[],this.instanceId=Math.random().toString(36).substring(2,9),console.log(`[SwapInterface] Instance created: ${this.instanceId}`)}handleBalanceUpdate(t){const e=t.balances||this.props.balances,r=void 0!==t.freeMint?t.freeMint:this.props.freeMint,n=void 0!==t.freeSupply?t.freeSupply:this.props.freeSupply;this.setState({balances:e,freeMint:r,freeSupply:n})}async calculateSwapAmount(t,e){if(!t||isNaN(parseFloat(t)))return"";try{if(this.isLiquidityDeployed()){const r=this.state.price.current;if("eth"===e){const e=parseFloat(t);return(e/r*1e6*.95).toFixed(0)}{const e=parseFloat(t);return(e/1e6*r*1.055).toFixed(6)}}if("eth"===e){const e=await this.blockchainService.getExecForEth(t),{freeSupply:r,freeMint:n}=this.state,i=r>0&&!n?1e6:0;return Math.floor(e+i).toString()}return(await this.blockchainService.getEthForExec(t)).toString()}catch(t){return console.error("Error calculating swap amount:",t),""}}didMount(){console.log(`[${this.instanceId}] SwapInterface didMount called`),this.bindEvents();const t=[["contractData:updated",this.bind(this.handleContractDataUpdate),"high"],["transaction:pending",this.bind(this.handleTransactionEvents),"normal"],["transaction:confirmed",this.bind(this.handleTransactionEvents),"normal"],["transaction:success",this.bind(this.handleTransactionEvents),"normal"],["transaction:error",this.bind(this.handleTransactionEvents),"normal"],["balances:updated",this.bind(this.handleBalanceUpdate),"high"],["transactionOptions:update",this.bind(this.handleTransactionOptionsUpdate),"low"]];this.eventListeners=t.map(([t,e])=>this.eventBus.on(t,e));const{contractData:e}=this.state;if(e&&void 0!==e.liquidityPool){const t=this.isLiquidityDeployed();this.setState({isPhase2:t,dataReady:!0})}}willUnmount(){if(console.log(`[${this.instanceId}] SwapInterface willUnmount called`),this.eventListeners.forEach(t=>{"function"==typeof t&&t()}),this.eventListeners=[],this.approveModal){try{this.approveModal.handleClose()}catch(t){console.warn("Error closing approval modal during unmount:",t)}this.approveModal=null}this.calculateTimer&&(clearTimeout(this.calculateTimer),this.calculateTimer=null)}bindEvents(){}handleTransactionEvents(t){if(t?.handledBy?.includes(this.instanceId))return;t.handledBy||(t.handledBy=[]),t.handledBy.push(this.instanceId);const e="buy"===this.state.direction?"Buy":"Sell";if(t&&t.type){if("buy"!==t.type&&"sell"!==t.type&&"swap"!==t.type||t.error||this.messagePopup.info(`${e} transaction. Simulating...`,"Transaction Pending"),t.hash&&this.messagePopup.info("Transaction confirmed, waiting for completion...","Transaction Confirmed"),t.receipt&&("buy"===t.type||"sell"===t.type||"swap"===t.type)){const t="buy"===this.state.direction?this.state.execAmount+" EXEC":this.state.ethAmount+" ETH";this.messagePopup.success(`Successfully ${"buy"===e.toLowerCase()?"bought":"sold"} ${t}`,"Transaction Complete"),this.setState({ethAmount:"",execAmount:"",calculatingAmount:!1})}if(t.error&&!t.handled){let e=t.error?.message||"Transaction failed";if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed"),t.handled=!0}}}handleTransactionOptionsUpdate(t){this.transactionOptionsState={message:t.message,nftMintingEnabled:t.nftMintingEnabled}}handleInput(t,e){this.calculateTimer&&clearTimeout(this.calculateTimer);const r={activeInput:t,calculatingAmount:!0};"buy"===this.state.direction?"top"===t?r.ethAmount=e:r.execAmount=e:"top"===t?r.execAmount=e:r.ethAmount=e,this.setState(r),this.calculateTimer=setTimeout(async()=>{try{const r="buy"===this.state.direction==("top"===t),n=await this.calculateSwapAmount(e,r?"eth":"exec");r?this.setState({execAmount:n,calculatingAmount:!1}):this.setState({ethAmount:n,calculatingAmount:!1})}catch(t){console.error("Error calculating swap amount:",t),this.setState({calculatingAmount:!1})}},750)}handleDirectionSwitch(t){t&&(t.preventDefault(),t.stopPropagation()),this.calculateTimer&&clearTimeout(this.calculateTimer);const e="buy"===this.state.direction?"sell":"buy";this.setState({direction:e,calculatingAmount:!1,activeInput:null}),this.onDirectionChange&&this.onDirectionChange(e)}handleQuickFill(t,e){let r;if(t)r=t;else if(e){const{balances:t}=this.state,n=t.exec;if(!n||"0"===n)return;let i=BigInt(n)/BigInt(1e18);if(this.state.freeMint&&(i-=BigInt(1e6),i<=0))return void this.messagePopup.info("You only have free mint tokens which cannot be sold.","Cannot Quick Fill");r=(i*BigInt(e)/BigInt(100)).toString()}this.handleInput("top",r)}isLiquidityDeployed(){const{contractData:t}=this.state;return!(!t||!t.liquidityPool)&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool}async handleSwap(){try{if(this.state.calculatingAmount)return void this.messagePopup.info("Please wait for the calculation to complete","Loading");const{ethAmount:t,execAmount:n,direction:i,balances:s,freeMint:o}=this.state;if(!t||!n||parseFloat(t)<=0||parseFloat(n)<=0)return void this.messagePopup.info("Please enter valid amounts","Invalid Input");if("buy"===i){let e=parseFloat(this.blockchainService.formatEther(s.eth||"0"));const r=parseFloat(t);if(isNaN(r)||isNaN(e)||r>e)return void this.messagePopup.info(`Not enough ETH balance. You have ${e.toFixed(6)} ETH, need ${r} ETH`,"Insufficient Balance")}else{const t=n.replace(/,/g,""),e=BigInt(s.exec||0);if(BigInt(parseInt(t)||0)>e){const e=parseInt(s.exec||0).toLocaleString(),r=parseInt(t).toLocaleString();return void this.messagePopup.info(`Not enough EXEC balance. You have ${e} EXEC, need ${r} EXEC`,"Insufficient Balance")}}if("sell"===i&&parseInt(n.replace(/,/g,""))<=1e6&&o)return void this.messagePopup.info("Free minted tokens cannot be sold directly.","Free Mint Restriction");const a=this.isLiquidityDeployed(),l=this.state.execAmount.replace(/,/g,"");if(a){const t=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(l),i=await this.getAddress();if(!i)return void this.messagePopup.error("No wallet address available. Please reconnect your wallet.","Wallet Error");if("buy"===this.state.direction)await this.blockchainService.swapExactEthForTokenSupportingFeeOnTransfer(i,{amount:n},t);else{const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouterAddress,s=await this.blockchainService.getApproval(i,t);if(BigInt(s)<BigInt(n)){if(this.approveModal){try{this.eventBus.off("approve:complete"),this.approveModal.handleClose()}catch(t){}this.approveModal=null}const t=document.createElement("div");return document.body.appendChild(t),r(e(hh,{amount:l,blockchainService:this.blockchainService,userAddress:i,eventBus:this.eventBus,ref:t=>this.approveModal=t}),t),this.eventBus.once("approve:complete",async()=>{try{await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(i,{amount:n})}catch(t){this.messagePopup.error(`Swap Failed: ${t.message}`,"Transaction Failed")}}),this.eventBus.once("approveModal:closed",()=>{t.parentNode&&t.parentNode.removeChild(t),this.approveModal=null}),void this.approveModal?.show()}await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(i,{amount:n})}}else{let t;try{const e=await this.blockchainService.getCurrentTier();if(t=await this.blockchainService.getMerkleProof(this.address,e),!t)return void this.messagePopup.error(`You are not whitelisted for Tier ${e+1}.`,"Not Whitelisted")}catch(t){return void this.messagePopup.error("Failed to verify whitelist status.","Whitelist Check Failed")}let e=l;if("buy"===this.state.direction&&this.state.freeSupply>0&&!this.state.freeMint){const t=parseInt(l);e=Math.max(0,t-1e6).toString()}const r=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(e);if("buy"===this.state.direction)await this.blockchainService.buyBonding({amount:n,maxCost:r,mintNFT:this.transactionOptionsState.nftMintingEnabled,proof:t.proof,message:this.transactionOptionsState.message},r);else{const e=BigInt(r)*BigInt(999)/BigInt(1e3);await this.blockchainService.sellBonding({amount:n,minReturn:e,proof:t.proof,message:this.transactionOptionsState.message})}}}catch(t){console.error("Swap failed:",t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed")}}handleContractDataUpdate(){try{const t=this.state.isPhase2,e=this.state.dataReady,r=this.isLiquidityDeployed();null!==t&&e?t!==r&&this.setState({isPhase2:r}):this.setState({isPhase2:r,dataReady:!0})}catch(t){console.error("Error in handleContractDataUpdate:",t)}}async getAddress(){try{return await Promise.resolve(this._address)}catch(t){return console.error(`[${this.instanceId}] Error resolving address:`,t),null}}setAddress(t){this._address=t}get address(){return this._address}set address(t){this._address=t}render(){const{direction:t,isPhase2:r,dataReady:n,balances:i,freeMint:s,freeSupply:o,ethAmount:a,execAmount:l,calculatingAmount:c}=this.state;return n&&null!==r?(parseFloat(i.eth).toFixed(6),parseInt(i.exec).toLocaleString(),e("div",{className:"swap-interface"},e(ch,{price:this.state.price,contractData:this.state.contractData,eventBus:this.eventBus}),"sell"===t&&s&&!r&&e("div",{className:"free-mint-notice"},"You have 1,000,000 $EXEC you received for free that cannot be sold here."),"buy"===t&&o>0&&!s&&!r&&e("div",{className:"free-mint-notice free-mint-bonus"},"1,000,000 $EXEC will be added to your purchase. Thank you."),e("div",{className:"quick-fill-buttons-container"},e("div",{className:"quick-fill-buttons"},"buy"===t?[e("button",{key:"0.0025",onClick:()=>this.handleQuickFill("0.0025")},"0.0025"),e("button",{key:"0.01",onClick:()=>this.handleQuickFill("0.01")},"0.01"),e("button",{key:"0.05",onClick:()=>this.handleQuickFill("0.05")},"0.05"),e("button",{key:"0.1",onClick:()=>this.handleQuickFill("0.1")},"0.1")]:[e("button",{key:"25",onClick:()=>this.handleQuickFill(null,25)},"25%"),e("button",{key:"50",onClick:()=>this.handleQuickFill(null,50)},"50%"),e("button",{key:"75",onClick:()=>this.handleQuickFill(null,75)},"75%"),e("button",{key:"100",onClick:()=>this.handleQuickFill(null,100)},"100%")])),e(uh,{direction:t,ethAmount:a,execAmount:l,calculatingAmount:c,freeMint:s,balances:i,isPhase2:r,onInput:this.bind(this.handleInput)}),e("div",{className:"direction-switch-container"},e("button",{className:"direction-switch",onClick:this.bind(this.handleDirectionSwitch)},"↕")),!r&&e(oh,{eventBus:this.eventBus,swapDirection:t,isPhase2:r}),e(dh,{direction:t,disabled:c,onClick:this.bind(this.handleSwap)}))):e("div",{className:"swap-interface"},e("div",{className:"price-display-container"}),e("div",{className:"quick-fill-buttons-container"}),e("div",{className:"swap-inputs-container",style:{padding:"20px",textAlign:"center"}},"Loading swap interface..."),e("div",{className:"transaction-options-container"}),e("div",{className:"swap-button-container"}))}}class ph extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={currentPrice:t.price||0,totalBondingSupply:t.contractData?.totalBondingSupply||0,totalMessages:t.contractData?.totalMessages||0,totalNFTs:t.contractData?.totalNFTs||0,dataReady:t.dataReady||!1,contractEthBalance:t.contractData?.contractEthBalance||0,liquidityPool:t.contractData?.liquidityPool||null,chainId:t.chainId||null},this.canvasRef=null}didMount(){this.subscribe("contractData:updated",t=>this.handleContractDataUpdate(t)),this.subscribe("price:updated",t=>this.handlePriceUpdate(t)),this.resizeHandler=()=>requestAnimationFrame(()=>this.drawCurve()),window.addEventListener("resize",this.resizeHandler),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}willUnmount(){this.resizeHandler&&window.removeEventListener("resize",this.resizeHandler)}handleContractDataUpdate(t){const e={totalBondingSupply:t.totalBondingSupply,totalMessages:t.totalMessages,totalNFTs:t.totalNFTs,contractEthBalance:t.contractEthBalance,dataReady:!0};this.state.liquidityPool!==t.liquidityPool&&(e.liquidityPool=t.liquidityPool),this.setState(e),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}handlePriceUpdate(t){this.setState({currentPrice:t.price}),this.isLiquidityDeployed()||this.drawCurve()}isLiquidityDeployed(){const{liquidityPool:t}=this.state;return t&&"0x0000000000000000000000000000000000000000"!==t}renderDexToolsChart(){if(this.containerRef)try{const t=`https://www.dextools.io/widget-chart/en/${this.getNetworkName(this.state.chainId)}/pe-light/${this.state.liquidityPool}?theme=dark&chartType=2&chartResolution=30&drawingToolbars=false`;this.containerRef.innerHTML="";const e=document.createElement("iframe");e.id="dextools-widget",e.title="$EXEC DEXTools Trading Chart",e.width="100%",e.height="100%",e.src=t,e.style.border="none",e.onerror=()=>{this.containerRef.innerHTML='<div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;"><div>Chart unavailable</div></div>'},this.containerRef.appendChild(e)}catch(t){console.error("Error rendering DEXTools chart:",t)}}getNetworkName(t){return{1:"ether",5:"goerli"}[t]||"ether"}drawCurve(){if(!this.canvasRef)return;const t=this.canvasRef,e=t.getContext("2d");t.width=t.offsetWidth,t.height=t.offsetHeight,e.clearRect(0,0,t.width,t.height),this.drawBaseCurve(e,t),this.state.dataReady?this.drawDataElements(e,t):this.drawPlaceholderLabels(e)}drawBaseCurve(t,e){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.strokeStyle=r,t.lineWidth=2;const n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurvePath(t,n)}drawDataElements(t,e){const r=Math.max(.1,Math.min(.9,Math.pow(this.state.currentPrice/.08,1/3.5))),n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurrentPosition(t,n,r),this.drawLabels(t)}drawPlaceholderLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText("Loading price data...",10,20),t.fillText("Loading supply data...",10,40),t.fillText("Loading NFT data...",10,60)}calculateCurvePoints(t,e){const r=[];for(let n=0;n<=100;n++){const i=n/100,s=e(i),o=i*t.width*.8+.1*t.width,a=.9*t.height-s*t.height*.8;r.push({x:o,y:a})}return r}drawCurvePath(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(let r=1;r<e.length;r++)t.lineTo(e[r].x,e[r].y);t.stroke()}drawCurrentPosition(t,e,r){const n=Math.floor((r-.025)*e.length),i=Math.floor((r+.025)*e.length);if(n>=0&&i<e.length){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.beginPath(),t.strokeStyle=r,t.lineWidth=4,t.moveTo(e[n].x,e[n].y);for(let r=n;r<=i;r++)t.lineTo(e[r].x,e[r].y);t.stroke();const s=e[Math.floor((n+i)/2)];t.beginPath(),t.arc(s.x,s.y,4,0,2*Math.PI),t.fillStyle="#FF0000",t.fill()}}drawLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText(`${this.state.currentPrice.toFixed(4)} ETH / EXEC`,10,20),t.fillText(`Total Supply: ${this.state.totalBondingSupply.toLocaleString()} EXEC`,10,40),t.fillText(`Total Messages: ${this.state.totalMessages.toLocaleString()}`,10,60),t.fillText(`Total NFTs: ${this.state.totalNFTs.toLocaleString()}`,10,80),t.fillText(`Contract ETH Balance: ${this.state.contractEthBalance}`,10,100)}render(){const t=this.isLiquidityDeployed();return e("div",{className:"bonding-curve marble-bg",ref:t=>this.containerRef=t},!t&&e("canvas",{id:"curveChart",ref:t=>{this.canvasRef=t,t&&this.drawCurve()}}))}static get styles(){return"\n .bonding-curve {\n width: 100%;\n height: 90%;\n min-height: 400px;\n background: #1a1a1a;\n border-radius: 8px;\n padding: 0px;\n overflow: hidden;\n position: relative;\n }\n\n #curveChart {\n width: 100%;\n height: 100%;\n }\n\n #dextools-widget {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border: none;\n }\n "}}class mh extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={balances:t.balances||{eth:"0",exec:"0",lastUpdated:null},loading:void 0===t.loading||t.loading,error:t.error||null}}didMount(){this.eventBus&&this.subscribe("balances:updated",this.bind(this.handleBalanceUpdate))}handleBalanceUpdate(t){this.setState({balances:t,loading:!1,error:null})}render(){const{balances:t,loading:r,error:n}=this.state,i=["balance-display","marble-bg"];return r&&i.push("loading"),n&&i.push("error"),e("div",{className:i.join(" ")},e("div",{className:"balance-header"},e("h3",null,"Your Balances"),t.lastUpdated&&e("span",{className:"last-updated"},`Last updated: ${new Date(t.lastUpdated).toLocaleTimeString()}`)),e("div",{className:"balance-content"},r?e("div",{className:"loading-indicator"},"Loading balances..."):n?e("div",{className:"error-message"},n):e("div",{className:"balance-grid"},e("div",{className:"balance-item eth"},e("span",{className:"label"},"ETH Balance"),e("span",{className:"amount"},t.eth)),e("div",{className:"balance-item exec"},e("span",{className:"label"},"EXEC Balance"),e("span",{className:"amount"},t.exec)))))}}class gh extends t{constructor(t){if(super(t),!t.indexer)throw new Error("SyncProgressBar requires indexer instance");if(!t.eventBus)throw new Error("SyncProgressBar requires eventBus instance");this.indexer=t.indexer,this.eventBus=t.eventBus,this.state={status:"initializing",progress:0,currentBlock:0,latestBlock:0,error:null}}didMount(){this.subscribe("indexer:syncProgress",t=>{this.setState({status:"syncing",progress:t.progress,currentBlock:t.currentBlock,latestBlock:t.latestBlock})}),this.subscribe("indexer:syncComplete",()=>{this.setState({status:"synced",progress:1})}),this.subscribe("indexer:error",t=>{this.setState({status:"error",error:t.message})}),this.subscribe("indexer:paused",()=>{this.setState({status:"paused"})}),this.subscribe("indexer:resumed",()=>{this.setState({status:"syncing"})});const t=this.indexer.sync?.getStatus?.();t&&this.setState(t)}handleRetry(){this.indexer.sync?.resync?.()}handleResume(){this.indexer.sync?.resume?.()}render(){const{status:t,progress:r,currentBlock:n,latestBlock:i,error:s}=this.state,o=Math.round(100*r);return e("div",{className:`mw3-sync-progress mw3-sync-progress--${t}`},"syncing"===t&&[e("div",{key:"bar",className:"mw3-sync-progress__bar",style:{width:`${o}%`}}),e("span",{key:"text",className:"mw3-sync-progress__text"},`Syncing... ${o}%`)],"synced"===t&&e("span",{className:"mw3-sync-progress__text"},`Synced to block ${i.toLocaleString()}`),"error"===t&&[e("span",{key:"text",className:"mw3-sync-progress__text"},`Sync failed: ${s||"Unknown error"}`),e("button",{key:"retry",className:"mw3-sync-progress__retry",onClick:this.bind(this.handleRetry)},"Retry")],"paused"===t&&[e("span",{key:"text",className:"mw3-sync-progress__text"},"Sync paused"),e("button",{key:"resume",className:"mw3-sync-progress__resume",onClick:this.bind(this.handleResume)},"Resume")],"initializing"===t&&e("span",{className:"mw3-sync-progress__text"},"Initializing..."))}static injectStyles(){if(document.getElementById("mw3-sync-progress-styles"))return;const t=document.createElement("style");t.id="mw3-sync-progress-styles",t.textContent="\n .mw3-sync-progress {\n position: relative;\n height: 24px;\n background: var(--mw3-sync-bg, #f0f0f0);\n border-radius: 4px;\n overflow: hidden;\n font-family: system-ui, sans-serif;\n font-size: 12px;\n }\n\n .mw3-sync-progress__bar {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: var(--mw3-sync-bar, #4caf50);\n transition: width 0.3s ease;\n }\n\n .mw3-sync-progress__text {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mw3-sync-text, #333);\n padding: 0 8px;\n }\n\n .mw3-sync-progress--synced {\n background: var(--mw3-sync-bar, #4caf50);\n }\n\n .mw3-sync-progress--synced .mw3-sync-progress__text {\n color: white;\n }\n\n .mw3-sync-progress--error {\n background: var(--mw3-sync-error, #f44336);\n }\n\n .mw3-sync-progress--error .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n\n .mw3-sync-progress__retry,\n .mw3-sync-progress__resume {\n background: rgba(255,255,255,0.2);\n border: 1px solid rgba(255,255,255,0.4);\n border-radius: 3px;\n color: white;\n padding: 2px 8px;\n cursor: pointer;\n font-size: 11px;\n }\n\n .mw3-sync-progress__retry:hover,\n .mw3-sync-progress__resume:hover {\n background: rgba(255,255,255,0.3);\n }\n\n .mw3-sync-progress--paused {\n background: var(--mw3-sync-paused, #ff9800);\n }\n\n .mw3-sync-progress--paused .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n ",document.head.appendChild(t)}}export{hh as ApprovalModal,mh as BalanceDisplay,Ic as BlockchainService,ph as BondingCurve,Bc as ContractCache,Xc as EventIndexer,rh as FloatingWalletButton,jc as IndexedDBAdapter,Wc as IndexerSettings,sh as IpfsImage,zc as IpfsService,Gc as MemoryAdapter,ah as MessagePopup,ch as PriceDisplay,Mc as PriceService,th as SettingsModal,dh as SwapButton,uh as SwapInputs,fh as SwapInterface,gh as SyncProgressBar,oh as TransactionOptions,ih as WalletButton,Zc as WalletModal,Pc as WalletService};
|
|
9
|
+
*/var te,ee=(Xt||(Xt=1,te=Zt,function(){var t="input is invalid type",e="object"==typeof window,r=e?window:{};r.JS_SHA3_NO_WINDOW&&(e=!1);var n=!e&&"object"==typeof self;!r.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?r=i:n&&(r=self);var s=!r.JS_SHA3_NO_COMMON_JS&&te.exports,o=!r.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),l=[4,1024,262144,67108864],c=[0,8,16,24],h=[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],d=[128,256],f=["hex","buffer","arrayBuffer","array","digest"],p={128:168,256:136};!r.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!o||!r.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var m=function(t,e,r){return function(n){return new I(t,e,t).update(n)[r]()}},g=function(t,e,r){return function(n,i){return new I(t,e,i).update(n)[r]()}},y=function(t,e,r){return function(e,n,i,s){return A["cshake"+t].update(e,n,i,s)[r]()}},w=function(t,e,r){return function(e,n,i,s){return A["kmac"+t].update(e,n,i,s)[r]()}},v=function(t,e,r,n){for(var i=0;i<f.length;++i){var s=f[i];t[s]=e(r,n,s)}return t},b=function(t,e){var r=m(t,e,"hex");return r.create=function(){return new I(t,e,t)},r.update=function(t){return r.create().update(t)},v(r,m,t,e)},E=[{name:"keccak",padding:[1,256,65536,16777216],bits:u,createMethod:b},{name:"sha3",padding:[6,1536,393216,100663296],bits:u,createMethod:b},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=g(t,e,"hex");return r.create=function(r){return new I(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},v(r,g,t,e)}},{name:"cshake",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=y(t,0,"hex");return n.create=function(n,i,s){return i||s?new I(t,e,n).bytepad([i,s],r):A["shake"+t].create(n)},n.update=function(t,e,r,i){return n.create(e,r,i).update(t)},v(n,y,t,e)}},{name:"kmac",padding:l,bits:d,createMethod:function(t,e){var r=p[t],n=w(t,0,"hex");return n.create=function(n,i,s){return new P(t,e,i).bytepad(["KMAC",s],r).bytepad([n],r)},n.update=function(t,e,r,i){return n.create(t,r,i).update(e)},v(n,w,t,e)}}],A={},k=[],S=0;S<E.length;++S)for(var C=E[S],_=C.bits,N=0;N<_.length;++N){var x=C.name+"_"+_[N];if(k.push(x),A[x]=C.createMethod(_[N],C.padding),"sha3"!==C.name){var T=C.name+_[N];k.push(T),A[T]=A[x]}}function I(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function P(t,e,r){I.call(this,t,e,r)}I.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(o&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||o&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,s,a=this.blocks,l=this.byteCount,h=e.length,u=this.blockCount,d=0,f=this.s;d<h;){if(this.reset)for(this.reset=!1,a[0]=this.block,i=1;i<u+1;++i)a[i]=0;if(r)for(i=this.start;d<h&&i<l;++d)a[i>>2]|=e[d]<<c[3&i++];else for(i=this.start;d<h&&i<l;++d)(s=e.charCodeAt(d))<128?a[i>>2]|=s<<c[3&i++]:s<2048?(a[i>>2]|=(192|s>>6)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]):s<55296||s>=57344?(a[i>>2]|=(224|s>>12)<<c[3&i++],a[i>>2]|=(128|s>>6&63)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++d)),a[i>>2]|=(240|s>>18)<<c[3&i++],a[i>>2]|=(128|s>>12&63)<<c[3&i++],a[i>>2]|=(128|s>>6&63)<<c[3&i++],a[i>>2]|=(128|63&s)<<c[3&i++]);if(this.lastByteIndex=i,i>=l){for(this.start=i-l,this.block=a[u],i=0;i<u;++i)f[i]^=a[i];B(f),this.reset=!0}else this.start=i}return this},I.prototype.encode=function(t,e){var r=255&t,n=1,i=[r];for(r=255&(t>>=8);r>0;)i.unshift(r),r=255&(t>>=8),++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},I.prototype.encodeString=function(e){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(o&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||o&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}var i=0,s=e.length;if(r)i=s;else for(var a=0;a<e.length;++a){var l=e.charCodeAt(a);l<128?i+=1:l<2048?i+=2:l<55296||l>=57344?i+=3:(l=65536+((1023&l)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},I.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var i=e-r%e,s=[];return s.length=i,this.update(s),this},I.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];B(n)}},I.prototype.toString=I.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,l="";o<n;){for(s=0;s<e&&o<n;++s,++o)t=r[s],l+=a[t>>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];o%e===0&&(B(r),s=0)}return i&&(t=r[s],l+=a[t>>4&15]+a[15&t],i>1&&(l+=a[t>>12&15]+a[t>>8&15]),i>2&&(l+=a[t>>20&15]+a[t>>16&15])),l},I.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,s=0,o=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);o<n;){for(s=0;s<e&&o<n;++s,++o)l[o]=r[s];o%e===0&&B(r)}return i&&(l[s]=r[s],t=t.slice(0,a)),t},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.digest=I.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,i=this.outputBlocks,s=this.extraBytes,o=0,a=0,l=[];a<i;){for(o=0;o<r&&a<i;++o,++a)t=a<<2,e=n[o],l[t]=255&e,l[t+1]=e>>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%r===0&&B(n)}return s&&(t=a<<2,e=n[o],l[t]=255&e,s>1&&(l[t+1]=e>>8&255),s>2&&(l[t+2]=e>>16&255)),l},P.prototype=new I,P.prototype.finalize=function(){return this.encode(this.outputBits,!0),I.prototype.finalize.call(this)};var B=function(t){var e,r,n,i,s,o,a,l,c,u,d,f,p,m,g,y,w,v,b,E,A,k,S,C,_,N,x,T,I,P,B,M,R,F,O,D,L,U,z,q,j,G,H,W,K,V,J,$,Q,Y,X,Z,tt,et,rt,nt,it,st,ot,at,lt,ct,ht;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],s=t[1]^t[11]^t[21]^t[31]^t[41],o=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],u=t[6]^t[16]^t[26]^t[36]^t[46],d=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(o<<1|a>>>31),r=(p=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|o>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(l<<1|c>>>31),r=s^(c<<1|l>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=o^(u<<1|d>>>31),r=a^(d<<1|u>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=l^(f<<1|p>>>31),r=c^(p<<1|f>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=u^(i<<1|s>>>31),r=d^(s<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],g=t[1],V=t[11]<<4|t[10]>>>28,J=t[10]<<4|t[11]>>>28,T=t[20]<<3|t[21]>>>29,I=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,G=t[40]<<18|t[41]>>>14,H=t[41]<<18|t[40]>>>14,F=t[2]<<1|t[3]>>>31,O=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,w=t[12]<<12|t[13]>>>20,$=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,P=t[33]<<13|t[32]>>>19,B=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ht=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,D=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,v=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,M=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,C=t[6]<<28|t[7]>>>4,_=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,U=t[26]<<25|t[27]>>>7,z=t[27]<<25|t[26]>>>7,E=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Z=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,W=t[8]<<27|t[9]>>>5,K=t[9]<<27|t[8]>>>5,N=t[18]<<20|t[19]>>>12,x=t[19]<<20|t[18]>>>12,st=t[29]<<7|t[28]>>>25,ot=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,j=t[39]<<8|t[38]>>>24,k=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=m^~y&v,t[1]=g^~w&b,t[10]=C^~N&T,t[11]=_^~x&I,t[20]=F^~D&U,t[21]=O^~L&z,t[30]=W^~V&$,t[31]=K^~J&Q,t[40]=et^~nt&st,t[41]=rt^~it&ot,t[2]=y^~v&E,t[3]=w^~b&A,t[12]=N^~T&P,t[13]=x^~I&B,t[22]=D^~U&q,t[23]=L^~z&j,t[32]=V^~$&Y,t[33]=J^~Q&X,t[42]=nt^~st&at,t[43]=it^~ot<,t[4]=v^~E&k,t[5]=b^~A&S,t[14]=T^~P&M,t[15]=I^~B&R,t[24]=U^~q&G,t[25]=z^~j&H,t[34]=$^~Y&Z,t[35]=Q^~X&tt,t[44]=st^~at&ct,t[45]=ot^~lt&ht,t[6]=E^~k&m,t[7]=A^~S&g,t[16]=P^~M&C,t[17]=B^~R&_,t[26]=q^~G&F,t[27]=j^~H&O,t[36]=Y^~Z&W,t[37]=X^~tt&K,t[46]=at^~ct&et,t[47]=lt^~ht&rt,t[8]=k^~m&y,t[9]=S^~g&w,t[18]=M^~C&N,t[19]=R^~_&x,t[28]=G^~F&D,t[29]=H^~O&L,t[38]=Z^~W&V,t[39]=tt^~K&J,t[48]=ct^~et&nt,t[49]=ht^~rt&it,t[0]^=h[n],t[1]^=h[n+1]};if(s)te.exports=A;else for(S=0;S<k.length;++S)r[k[S]]=A[k[S]]}()),Zt.exports),re=s(ee);function ne(t){return"0x"+re.keccak_256(_(t))}const ie=new v("rlp/5.8.0");function se(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function oe(t,e,r){let n=0;for(let i=0;i<r;i++)n=256*n+t[e+i];return n}function ae(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(ae(t))}),e.length<=55)return e.unshift(192+e.length),e;const r=se(e.length);return r.unshift(247+r.length),r.concat(e)}k(t)||ie.throwArgumentError("RLP object must be BytesLike","object",t);const e=Array.prototype.slice.call(_(t));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=se(e.length);return r.unshift(183+r.length),r.concat(e)}function le(t){return B(ae(t))}function ce(t,e,r,n){const i=[];for(;r<e+1+n;){const s=he(t,r);i.push(s.result),(r+=s.consumed)>e+1+n&&ie.throwError("child data too short",v.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function he(t,e){if(0===t.length&&ie.throwError("data too short",v.errors.BUFFER_OVERRUN,{}),t[e]>=248){const r=t[e]-247;e+1+r>t.length&&ie.throwError("data short segment too short",v.errors.BUFFER_OVERRUN,{});const n=oe(t,e+1,r);return e+1+r+n>t.length&&ie.throwError("data long segment too short",v.errors.BUFFER_OVERRUN,{}),ce(t,e,e+1+r,r+n)}if(t[e]>=192){const r=t[e]-192;return e+1+r>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{}),ce(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;e+1+r>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{});const n=oe(t,e+1,r);e+1+r+n>t.length&&ie.throwError("data array too short",v.errors.BUFFER_OVERRUN,{});return{consumed:1+r+n,result:B(t.slice(e+1+r,e+1+r+n))}}if(t[e]>=128){const r=t[e]-128;e+1+r>t.length&&ie.throwError("data too short",v.errors.BUFFER_OVERRUN,{});return{consumed:1+r,result:B(t.slice(e+1,e+1+r))}}return{consumed:1,result:B(t[e])}}function ue(t){const e=_(t),r=he(e,0);return r.consumed!==e.length&&ie.throwArgumentError("invalid rlp data","data",t),r.result}var de=Object.freeze({__proto__:null,decode:ue,encode:le});const fe=new v("address/5.8.0");function pe(t){I(t,20)||fe.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),r=new Uint8Array(40);for(let t=0;t<40;t++)r[t]=e[t].charCodeAt(0);const n=_(ne(r));for(let t=0;t<40;t+=2)n[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const me={};for(let t=0;t<10;t++)me[String(t)]=String(t);for(let t=0;t<26;t++)me[String.fromCharCode(65+t)]=String(10+t);const ge=Math.floor((ye=9007199254740991,Math.log10?Math.log10(ye):Math.log(ye)/Math.LN10));var ye;function we(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>me[t]).join("");for(;e.length>=ge;){let t=e.substring(0,ge);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function ve(t){let e=null;if("string"!=typeof t&&fe.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=pe(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&fe.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==we(t)&&fe.throwArgumentError("bad icap checksum","address",t),r=t.substring(4),e=new j(r,36).toString(16);e.length<40;)e="0"+e;e=pe("0x"+e)}else fe.throwArgumentError("invalid address","address",t);var r;return e}function be(t){let e=null;try{e=ve(t.from)}catch(e){fe.throwArgumentError("missing from address","transaction",t)}return ve(R(ne(le([e,x(_(V.from(t.nonce).toHexString()))])),12))}class Ee extends $t{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=ve(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return ve(L(t.readValue().toHexString(),20))}}class Ae extends $t{constructor(t){super(t.name,t.type,void 0,t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}const ke=new v(kt);function Se(t,e,r){let n=null;if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map(e=>{const n=e.localName;return n||ke.throwError("cannot encode object for signature with missing names",v.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]&&ke.throwError("cannot encode object for signature with duplicate names",v.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:r}),t[n]=!0,r[n]})}else ke.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&ke.throwArgumentError("types/value length mismatch","tuple",r);let i=new Qt(t.wordSize),s=new Qt(t.wordSize),o=[];e.forEach((t,e)=>{let r=n[e];if(t.dynamic){let e=s.length;t.encode(s,r);let n=i.writeUpdatableValue();o.push(t=>{n(t+e)})}else t.encode(i,r)}),o.forEach(t=>{t(i.length)});let a=t.appendWriter(i);return a+=t.appendWriter(s),a}function Ce(t,e){let r=[],n=t.subReader(0);e.forEach(e=>{let i=null;if(e.dynamic){let r=t.readValue(),s=n.subReader(r.toNumber());try{i=e.decode(s)}catch(t){if(t.code===v.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(t.code===v.errors.BUFFER_OVERRUN)throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}null!=i&&r.push(i)});const i=e.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});e.forEach((t,e)=>{let n=t.localName;if(!n||1!==i[n])return;if("length"===n&&(n="_length"),null!=r[n])return;const s=r[e];s instanceof Error?Object.defineProperty(r,n,{enumerable:!0,get:()=>{throw s}}):r[n]=s});for(let t=0;t<r.length;t++){const e=r[t];e instanceof Error&&Object.defineProperty(r,t,{enumerable:!0,get:()=>{throw e}})}return Object.freeze(r)}class _e extends $t{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;r<this.length;r++)e.push(t);return e}encode(t,e){Array.isArray(e)||this._throwError("expected array value",e);let r=this.length;-1===r&&(r=e.length,t.writeValue(e.length)),ke.checkArgumentCount(e.length,r,"coder array"+(this.localName?" "+this.localName:""));let n=[];for(let t=0;t<e.length;t++)n.push(this.coder);return Se(t,n,e)}decode(t){let e=this.length;-1===e&&(e=t.readValue().toNumber(),32*e>t._data.length&&ke.throwError("insufficient data length",v.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let r=[];for(let t=0;t<e;t++)r.push(new Ae(this.coder));return t.coerce(this.name,Ce(t,r))}}class Ne extends $t{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){return t.writeValue(e?1:0)}decode(t){return t.coerce(this.type,!t.readValue().isZero())}}class xe extends $t{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=_(e);let r=t.writeValue(e.length);return r+=t.writeBytes(e),r}decode(t){return t.readBytes(t.readValue().toNumber(),!0)}}class Te extends xe{constructor(t){super("bytes",t)}decode(t){return t.coerce(this.name,B(super.decode(t)))}}class Ie extends $t{constructor(t,e){let r="bytes"+String(t);super(r,r,e,!1),this.size=t}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let r=_(e);return r.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(r)}decode(t){return t.coerce(this.name,B(t.readBytes(this.size)))}}class Pe extends $t{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes([])}decode(t){return t.readBytes(0),t.coerce(this.name,null)}}const Be="0x0000000000000000000000000000000000000000",Me=V.from(-1),Re=V.from(0),Fe=V.from(1),Oe=V.from(2),De=V.from("1000000000000000000"),Le=V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Ue=V.from("-0x8000000000000000000000000000000000000000000000000000000000000000"),ze=V.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),qe="0x0000000000000000000000000000000000000000000000000000000000000000";var je=Object.freeze({__proto__:null,AddressZero:Be,EtherSymbol:"Ξ",HashZero:qe,MaxInt256:ze,MaxUint256:Le,MinInt256:Ue,NegativeOne:Me,One:Fe,Two:Oe,WeiPerEther:De,Zero:Re});class Ge extends $t{constructor(t,e,r){const n=(e?"int":"uint")+8*t;super(n,n,r,!1),this.size=t,this.signed=e}defaultValue(){return 0}encode(t,e){let r=V.from(e),n=Le.mask(8*t.wordSize);if(this.signed){let t=n.mask(8*this.size-1);(r.gt(t)||r.lt(t.add(Fe).mul(Me)))&&this._throwError("value out-of-bounds",e)}else(r.lt(Re)||r.gt(n.mask(8*this.size)))&&this._throwError("value out-of-bounds",e);return r=r.toTwos(8*this.size).mask(8*this.size),this.signed&&(r=r.fromTwos(8*this.size).toTwos(8*t.wordSize)),t.writeValue(r)}decode(t){let e=t.readValue().mask(8*this.size);return this.signed&&(e=e.fromTwos(8*this.size)),t.coerce(this.name,e)}}const He=new v("strings/5.8.0");var We,Ke;function Ve(t,e,r,n,i){if(t===Ke.BAD_PREFIX||t===Ke.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n<r.length&&r[n]>>6==2;n++)t++;return t}return t===Ke.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(We||(We={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(Ke||(Ke={}));const Je=Object.freeze({error:function(t,e,r,n,i){return He.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:Ve,replace:function(t,e,r,n,i){return t===Ke.OVERLONG?(n.push(i),0):(n.push(65533),Ve(t,e,r))}});function $e(t,e){null==e&&(e=Je.error),t=_(t);const r=[];let n=0;for(;n<t.length;){const i=t[n++];if(!(i>>7)){r.push(i);continue}let s=null,o=null;if(192==(224&i))s=1,o=127;else if(224==(240&i))s=2,o=2047;else{if(240!=(248&i)){n+=e(128==(192&i)?Ke.UNEXPECTED_CONTINUE:Ke.BAD_PREFIX,n-1,t,r);continue}s=3,o=65535}if(n-1+s>=t.length){n+=e(Ke.OVERRUN,n-1,t,r);continue}let a=i&(1<<8-s-1)-1;for(let i=0;i<s;i++){let i=t[n];if(128!=(192&i)){n+=e(Ke.MISSING_CONTINUE,n,t,r),a=null;break}a=a<<6|63&i,n++}null!==a&&(a>1114111?n+=e(Ke.OUT_OF_RANGE,n-1-s,t,r,a):a>=55296&&a<=57343?n+=e(Ke.UTF16_SURROGATE,n-1-s,t,r,a):a<=o?n+=e(Ke.OVERLONG,n-1-s,t,r,a):r.push(a))}return r}function Qe(t,e=We.current){e!=We.current&&(He.checkNormalize(),t=t.normalize(e));let r=[];for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<128)r.push(n);else if(n<2048)r.push(n>>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const i=t.charCodeAt(e);if(e>=t.length||56320!=(64512&i))throw new Error("invalid utf-8 string");const s=65536+((1023&n)<<10)+(1023&i);r.push(s>>18|240),r.push(s>>12&63|128),r.push(s>>6&63|128),r.push(63&s|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return _(r)}function Ye(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function Xe(t){return t.map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function Ze(t,e){return Xe($e(t,e))}function tr(t,e=We.current){return $e(Qe(t,e))}function er(t,e){e||(e=function(t){return[parseInt(t,16)]});let r=0,n={};return t.split(",").forEach(t=>{let i=t.split(":");r+=parseInt(i[0],16),n[r]=e(i[1])}),n}function rr(t){let e=0;return t.split(",").map(t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}})}function nr(t,e){let r=0;for(let n=0;n<e.length;n++){let i=e[n];if(r+=i.l,t>=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&-1!==i.e.indexOf(t-r))continue;return i}}return null}const ir=rr("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),sr="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),or=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],ar=er("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),lr=er("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),cr=er("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",function(t){if(t.length%4!=0)throw new Error("bad data");let e=[];for(let r=0;r<t.length;r+=4)e.push(parseInt(t.substring(r,r+4),16));return e}),hr=rr("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");class ur extends xe{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Qe(e))}decode(t){return Ze(super.decode(t))}}class dr extends $t{constructor(t,e){let r=!1;const n=[];t.forEach(t=>{t.dynamic&&(r=!0),n.push(t.type)});super("tuple","tuple("+n.join(",")+")",e,r),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t},{});return this.coders.forEach((r,n)=>{let i=r.localName;i&&1===e[i]&&("length"===i&&(i="_length"),null==t[i]&&(t[i]=t[n]))}),Object.freeze(t)}encode(t,e){return Se(t,this.coders,e)}decode(t){return t.coerce(this.name,Ce(t,this.coders))}}const fr=new v(kt),pr=new RegExp(/^bytes([0-9]*)$/),mr=new RegExp(/^(u?int)([0-9]*)$/);class gr{constructor(t){ft(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new Ee(t.name);case"bool":return new Ne(t.name);case"string":return new ur(t.name);case"bytes":return new Te(t.name);case"array":return new _e(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new dr((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Pe(t.name)}let e=t.type.match(mr);if(e){let r=parseInt(e[2]||"256");return(0===r||r>256||r%8!=0)&&fr.throwArgumentError("invalid "+e[1]+" bit length","param",t),new Ge(r/8,"int"===e[1],t.name)}if(e=t.type.match(pr),e){let r=parseInt(e[1]);return(0===r||r>32)&&fr.throwArgumentError("invalid bytes length","param",t),new Ie(r,t.name)}return fr.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new Yt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new Qt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Bt.from(t)));return new dr(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&fr.throwError("types/values length mismatch",v.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const r=t.map(t=>this._getCoder(Bt.from(t))),n=new dr(r,"_"),i=this._getWriter();return n.encode(i,e),i.data}decode(t,e,r){const n=t.map(t=>this._getCoder(Bt.from(t)));return new dr(n,"_").decode(this._getReader(_(e),r))}}const yr=new gr;function wr(t){return ne(Qe(t))}const vr="hash/5.8.0";function br(t){t=atob(t);const e=[];for(let r=0;r<t.length;r++)e.push(t.charCodeAt(r));return _(e)}function Er(t){t=_(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}var Ar=Object.freeze({__proto__:null,decode:br,encode:Er});function kr(t,e){null==e&&(e=1);const r=[],n=r.forEach,i=function(t,e){n.call(t,function(t){e>0&&Array.isArray(t)?i(t,e-1):r.push(t)})};return i(t,e),r}function Sr(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function r(){return t[e++]<<8|t[e++]}let n=r(),i=1,s=[0,1];for(let t=1;t<n;t++)s.push(i+=r());let o=r(),a=e;e+=o;let l=0,c=0;function h(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&1}const u=Math.pow(2,31),d=u>>>1,f=d>>1,p=u-1;let m=0;for(let t=0;t<31;t++)m=m<<1|h();let g=[],y=0,w=u;for(;;){let t=Math.floor(((m-y+1)*i-1)/w),e=0,r=n;for(;r-e>1;){let n=e+r>>>1;t<s[n]?r=n:e=n}if(0==e)break;g.push(e);let o=y+Math.floor(w*s[e]/i),a=y+Math.floor(w*s[e+1]/i)-1;for(;0==((o^a)&d);)m=m<<1&p|h(),o=o<<1&p,a=a<<1&p|1;for(;o&~a&f;)m=m&d|m<<1&p>>>1|h(),o=o<<1^d,a=(a^d)<<1|d|1;y=o,w=1+a-o}let v=n-4;return g.map(e=>{switch(e-v){case 3:return v+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return v+256+(t[a++]<<8|t[a++]);case 1:return v+t[a++];default:return e-1}})}(t))}function Cr(t){return 1&t?~t>>1:t>>1}function _r(t,e){let r=Array(t);for(let n=0,i=-1;n<t;n++)r[n]=i+=1+e();return r}function Nr(t,e){let r=Array(t);for(let n=0,i=0;n<t;n++)r[n]=i+=Cr(e());return r}function xr(t,e){let r=_r(t(),t),n=t(),i=_r(n,t),s=function(t,e){let r=Array(t);for(let n=0;n<t;n++)r[n]=1+e();return r}(n,t);for(let t=0;t<n;t++)for(let e=0;e<s[t];e++)r.push(i[t]+e);return e?r.map(t=>e[t]):r}function Tr(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;i<e;i++)Nr(t,r).forEach((t,e)=>n[e].push(t));return n}function Ir(t,e){let r=1+e(),n=e(),i=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(r)}return e}(e);return kr(Tr(i.length,1+t,e).map((t,e)=>{const s=t[0],o=t.slice(1);return Array(i[e]).fill(void 0).map((t,e)=>{let i=e*n;return[s+e*r,o.map(t=>t+i)]})}))}function Pr(t,e){return Tr(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}const Br=Sr(br("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA==")),Mr=new Set(xr(Br)),Rr=new Set(xr(Br)),Fr=function(t){let e=[];for(;;){let r=t();if(0==r)break;e.push(Ir(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Pr(r,t))}return function(t){const e={};for(let r=0;r<t.length;r++){const n=t[r];e[n[0]]=n[1]}return e}(kr(e))}(Br),Or=function(t){let e=xr(t).sort((t,e)=>t-e);return function r(){let n=[];for(;;){let i=xr(t,e);if(0==i.length)break;n.push({set:new Set(i),node:r()})}n.sort((t,e)=>e.set.size-t.set.size);let i=t(),s=i%3;i=i/3|0;let o=!!(1&i);return i>>=1,{branches:n,valid:s,fe0f:o,save:1==i,check:2==i}}()}(Br);function Dr(t){return tr(t)}function Lr(t){return t.filter(t=>65039!=t)}function Ur(t){for(let e of t.split(".")){let t=Dr(e);try{for(let e=t.lastIndexOf(95)-1;e>=0;e--)if(95!==t[e])throw new Error("underscore only allowed at start");if(t.length>=4&&t.every(t=>t<128)&&45===t[2]&&45===t[3])throw new Error("invalid label extension")}catch(t){throw new Error(`Invalid label "${e}": ${t.message}`)}}return t}function zr(t){return Ur(function(t,e){let r=Dr(t).reverse(),n=[];for(;r.length;){let t=qr(r);if(t){n.push(...e(t));continue}let i=r.pop();if(Mr.has(i)){n.push(i);continue}if(Rr.has(i))continue;let s=Fr[i];if(!s)throw new Error(`Disallowed codepoint: 0x${i.toString(16).toUpperCase()}`);n.push(...s)}return Ur((i=String.fromCodePoint(...n),i.normalize("NFC")));var i}(t,Lr))}function qr(t,e){var r;let n,i,s=Or,o=[],a=t.length;for(;a;){let e=t[--a];if(s=null===(r=s.branches.find(t=>t.set.has(e)))||void 0===r?void 0:r.node,!s)break;if(s.save)i=e;else if(s.check&&e===i)break;o.push(e),s.fe0f&&(o.push(65039),a>0&&65039==t[a-1]&&a--),s.valid&&(n=o.slice(),2==s.valid&&n.splice(1,1),t.length=a)}return n}const jr=new v(vr),Gr=new Uint8Array(32);function Hr(t){if(0===t.length)throw new Error("invalid ENS name; empty component");return t}function Wr(t){const e=Qe(zr(t)),r=[];if(0===t.length)return r;let n=0;for(let t=0;t<e.length;t++){46===e[t]&&(r.push(Hr(e.slice(n,t))),n=t+1)}if(n>=e.length)throw new Error("invalid ENS name; empty component");return r.push(Hr(e.slice(n))),r}function Kr(t){"string"!=typeof t&&jr.throwArgumentError("invalid ENS name; not a string","name",t);let e=Gr;const r=Wr(t);for(;r.length;)e=ne(N([e,ne(r.pop())]));return B(e)}function Vr(t){return B(N(Wr(t).map(t=>{if(t.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");const e=new Uint8Array(t.length+1);return e.set(t,1),e[0]=e.length-1,e})))+"00"}Gr.fill(0);function Jr(t){return"string"==typeof t&&(t=Qe(t)),ne(N([Qe("Ethereum Signed Message:\n"),Qe(String(t.length)),t]))}var $r=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Qr=new v(vr),Yr=new Uint8Array(32);Yr.fill(0);const Xr=V.from(-1),Zr=V.from(0),tn=V.from(1),en=V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const rn=L(tn.toHexString(),32),nn=L(Zr.toHexString(),32),sn={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},on=["name","version","chainId","verifyingContract","salt"];function an(t){return function(e){return"string"!=typeof e&&Qr.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const ln={name:an("name"),version:an("version"),chainId:function(t){try{return V.from(t).toString()}catch(t){}return Qr.throwArgumentError('invalid domain value for "chainId"',"domain.chainId",t)},verifyingContract:function(t){try{return ve(t).toLowerCase()}catch(t){}return Qr.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){try{const e=_(t);if(32!==e.length)throw new Error("bad length");return B(e)}catch(t){}return Qr.throwArgumentError('invalid domain value "salt"',"domain.salt",t)}};function cn(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Qr.throwArgumentError("invalid numeric width","type",t);const i=en.mask(r?n-1:n),s=r?i.add(tn).mul(Xr):Zr;return function(e){const r=V.from(e);return(r.lt(s)||r.gt(i))&&Qr.throwArgumentError(`value out-of-bounds for ${t}`,"value",e),L(r.toTwos(256).toHexString(),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Qr.throwArgumentError("invalid bytes width","type",t),function(e){return _(e).length!==r&&Qr.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=_(t),r=e.length%32;return r?F([e,Yr.slice(r)]):B(e)}(e)}}}switch(t){case"address":return function(t){return L(ve(t),32)};case"bool":return function(t){return t?rn:nn};case"bytes":return function(t){return ne(t)};case"string":return function(t){return wr(t)}}return null}function hn(t,e){return`${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})`}class un{constructor(t){ft(this,"types",Object.freeze(Et(t))),ft(this,"_encoderCache",{}),ft(this,"_types",{});const e={},r={},n={};Object.keys(t).forEach(t=>{e[t]={},r[t]=[],n[t]={}});for(const n in t){const i={};t[n].forEach(s=>{i[s.name]&&Qr.throwArgumentError(`duplicate variable name ${JSON.stringify(s.name)} in ${JSON.stringify(n)}`,"types",t),i[s.name]=!0;const o=s.type.match(/^([^\x5b]*)(\x5b|$)/)[1];o===n&&Qr.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);cn(o)||(r[o]||Qr.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),r[o].push(n),e[n][o]=!0)})}const i=Object.keys(r).filter(t=>0===r[t].length);0===i.length?Qr.throwArgumentError("missing primary type","types",t):i.length>1&&Qr.throwArgumentError(`ambiguous primary types or unused types: ${i.map(t=>JSON.stringify(t)).join(", ")}`,"types",t),ft(this,"primaryType",i[0]),function i(s,o){o[s]&&Qr.throwArgumentError(`circular type reference to ${JSON.stringify(s)}`,"types",t),o[s]=!0,Object.keys(e[s]).forEach(t=>{r[t]&&(i(t,o),Object.keys(o).forEach(e=>{n[e][t]=!0}))}),delete o[s]}(this.primaryType,{});for(const e in n){const r=Object.keys(n[e]);r.sort(),this._types[e]=hn(e,t[e])+r.map(e=>hn(e,t[e])).join("")}}getEncoder(t){let e=this._encoderCache[t];return e||(e=this._encoderCache[t]=this._getEncoder(t)),e}_getEncoder(t){{const e=cn(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Qr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let i=e.map(r);return this._types[t]&&(i=i.map(ne)),ne(F(i))}}const r=this.types[t];if(r){const e=wr(this._types[t]);return t=>{const n=r.map(({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return this._types[r]?ne(n):n});return n.unshift(e),F(n)}}return Qr.throwArgumentError(`unknown type: ${t}`,"type",t)}encodeType(t){const e=this._types[t];return e||Qr.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return ne(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(cn(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],i=parseInt(n[3]);return i>=0&&e.length!==i&&Qr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map(e=>this._visit(t,e,r))}const i=this.types[t];return i?i.reduce((t,{name:n,type:i})=>(t[n]=this._visit(i,e[n],r),t),{}):Qr.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new un(t)}static getPrimaryType(t){return un.from(t).primaryType}static hashStruct(t,e,r){return un.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=sn[r];n||Qr.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort((t,e)=>on.indexOf(t.name)-on.indexOf(e.name)),un.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return F(["0x1901",un.hashDomain(t),un.from(e).hash(r)])}static hash(t,e,r){return ne(un.encode(t,e,r))}static resolveNames(t,e,r,n){return $r(this,void 0,void 0,function*(){t=yt(t);const i={};t.verifyingContract&&!I(t.verifyingContract,20)&&(i[t.verifyingContract]="0x");const s=un.from(e);s.visit(r,(t,e)=>("address"!==t||I(e,20)||(i[e]="0x"),e));for(const t in i)i[t]=yield n(t);return t.verifyingContract&&i[t.verifyingContract]&&(t.verifyingContract=i[t.verifyingContract]),r=s.visit(r,(t,e)=>"address"===t&&i[e]?i[e]:e),{domain:t,value:r}})}static getPayload(t,e,r){un.hashDomain(t);const n={},i=[];on.forEach(e=>{const r=t[e];null!=r&&(n[e]=ln[e](r),i.push({name:e,type:sn[e]}))});const s=un.from(e),o=yt(e);return o.EIP712Domain?Qr.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=i,s.encode(r),{types:o,domain:n,primaryType:s.primaryType,message:s.visit(r,(t,e)=>{if(t.match(/^bytes(\d*)/))return B(_(e));if(t.match(/^u?int/))return V.from(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Qr.throwArgumentError("invalid string","value",e),e}return Qr.throwArgumentError("unsupported type","type",t)})}}}const dn=new v(kt);class fn extends At{}class pn extends At{}class mn extends At{}class gn extends At{static isIndexed(t){return!(!t||!t._isIndexed)}}const yn={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function wn(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);return r.error=e,r}class vn{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,ft(this,"fragments",e.map(t=>Rt.from(t)).filter(t=>null!=t)),ft(this,"_abiCoder",pt(new.target,"getAbiCoder")()),ft(this,"functions",{}),ft(this,"errors",{}),ft(this,"events",{}),ft(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void dn.warn("duplicate definition - constructor"):void ft(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let r=t.format();e[r]?dn.warn("duplicate definition - "+r):e[r]=t}),this.deploy||ft(this,"deploy",Ut.from({payable:!1,type:"constructor"})),ft(this,"_isInterface",!0)}format(t){t||(t=It.full),t===It.sighash&&dn.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===It.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return yr}static getAddress(t){return ve(t)}static getSighash(t){return R(wr(t.format()),0,4)}static getEventTopic(t){return wr(t.format())}getFunction(t){if(I(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];dn.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching function","name",e):r.length>1&&dn.throwArgumentError("multiple matching functions","name",e),this.functions[r[0]]}const e=this.functions[zt.fromString(t).format()];return e||dn.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(I(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];dn.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching event","name",e):r.length>1&&dn.throwArgumentError("multiple matching events","name",e),this.events[r[0]]}const e=this.events[Ft.fromString(t).format()];return e||dn.throwArgumentError("no matching event","signature",t),e}getError(t){if(I(t)){const e=pt(this.constructor,"getSighash");for(const r in this.errors){if(t===e(this.errors[r]))return this.errors[r]}dn.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),r=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===r.length?dn.throwArgumentError("no matching error","name",e):r.length>1&&dn.throwArgumentError("multiple matching errors","name",e),this.errors[r[0]]}const e=this.errors[zt.fromString(t).format()];return e||dn.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return pt(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),pt(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const r=_(e);return B(r.slice(0,4))!==this.getSighash(t)&&dn.throwArgumentError(`data signature does not match error ${t.name}.`,"data",B(r)),this._decodeParams(t.inputs,r.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),B(N([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const r=_(e);return B(r.slice(0,4))!==this.getSighash(t)&&dn.throwArgumentError(`data signature does not match function ${t.name}.`,"data",B(r)),this._decodeParams(t.inputs,r.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),B(N([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r=_(e),n=null,i="",s=null,o=null,a=null;switch(r.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,r)}catch(t){}break;case 4:{const t=B(r.slice(0,4)),e=yn[t];if(e)s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.signature,e.reason&&(n=s[0]),"Error"===o?i=`; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(s[0])}`:"Panic"===o&&(i=`; VM Exception while processing transaction: reverted with panic code ${s[0]}`);else try{const e=this.getError(t);s=this._abiCoder.decode(e.inputs,r.slice(4)),o=e.name,a=e.format()}catch(t){}break}}return dn.throwError("call revert exception"+i,v.errors.CALL_EXCEPTION,{method:t.format(),data:B(e),errorArgs:s,errorName:o,errorSignature:a,reason:n})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),B(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&dn.throwError("too many arguments for "+t.format(),v.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?wr(e):"bytes"===t.type?ne(B(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=V.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),L(B(e),32));for(e.forEach((e,i)=>{let s=t.inputs[i];s.indexed?null==e?r.push(null):"array"===s.baseType||"tuple"===s.baseType?dn.throwArgumentError("filtering with tuples or arrays not supported","contract."+s.name,e):Array.isArray(e)?r.push(e.map(t=>n(s,t))):r.push(n(s,e)):null!=e&&dn.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+s.name,e)});r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],i=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&dn.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,s)=>{const o=e[s];if(t.indexed)if("string"===t.type)r.push(wr(o));else if("bytes"===t.type)r.push(ne(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(this._abiCoder.encode([t.type],[o]))}else n.push(t),i.push(o)}),{data:this._abiCoder.encode(n,i),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){let e=this.getEventTopic(t);I(r[0],32)&&r[0].toLowerCase()===e||dn.throwError("fragment/topic mismatch",v.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:r[0]}),r=r.slice(1)}let n=[],i=[],s=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(Bt.fromObject({type:"bytes32",name:t.name})),s.push(!0)):(n.push(t),s.push(!1)):(i.push(t),s.push(!1))});let o=null!=r?this._abiCoder.decode(n,N(r)):null,a=this._abiCoder.decode(i,e,!0),l=[],c=0,h=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==o)l[e]=new gn({_isIndexed:!0,hash:null});else if(s[e])l[e]=new gn({_isIndexed:!0,hash:o[h++]});else try{l[e]=o[h++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const r=l[e];r instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw wn(`property ${JSON.stringify(t.name)}`,r)}}):l[t.name]=r}});for(let t=0;t<l.length;t++){const e=l[t];e instanceof Error&&Object.defineProperty(l,t,{enumerable:!0,get:()=>{throw wn(`index ${t}`,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new pn({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:V.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new fn({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=B(t);let r=this.getError(e.substring(0,10).toLowerCase());return r?new mn({args:this._abiCoder.decode(r.inputs,"0x"+e.substring(10)),errorFragment:r,name:r.name,signature:r.format(),sighash:this.getSighash(r)}):null}static isInterface(t){return!(!t||!t._isInterface)}}var bn=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const En=new v("abstract-provider/5.8.0");class An extends At{static isForkEvent(t){return!(!t||!t._isForkEvent)}}class kn{constructor(){En.checkAbstract(new.target,kn),ft(this,"_isProvider",!0)}getFeeData(){return bn(this,void 0,void 0,function*(){const{block:t,gasPrice:e}=yield mt({block:this.getBlock("latest"),gasPrice:this.getGasPrice().catch(t=>null)});let r=null,n=null,i=null;return t&&t.baseFeePerGas&&(r=t.baseFeePerGas,i=V.from("1500000000"),n=t.baseFeePerGas.mul(2).add(i)),{lastBaseFeePerGas:r,maxFeePerGas:n,maxPriorityFeePerGas:i,gasPrice:e}})}addListener(t,e){return this.on(t,e)}removeListener(t,e){return this.off(t,e)}static isProvider(t){return!(!t||!t._isProvider)}}var Sn=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Cn=new v("abstract-signer/5.8.0"),_n=["accessList","ccipReadEnabled","chainId","customData","data","from","gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","to","type","value"],Nn=[v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED];class xn{constructor(){Cn.checkAbstract(new.target,xn),ft(this,"_isSigner",!0)}getBalance(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getBalance"),yield this.provider.getBalance(this.getAddress(),t)})}getTransactionCount(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getTransactionCount"),yield this.provider.getTransactionCount(this.getAddress(),t)})}estimateGas(t){return Sn(this,void 0,void 0,function*(){this._checkProvider("estimateGas");const e=yield mt(this.checkTransaction(t));return yield this.provider.estimateGas(e)})}call(t,e){return Sn(this,void 0,void 0,function*(){this._checkProvider("call");const r=yield mt(this.checkTransaction(t));return yield this.provider.call(r,e)})}sendTransaction(t){return Sn(this,void 0,void 0,function*(){this._checkProvider("sendTransaction");const e=yield this.populateTransaction(t),r=yield this.signTransaction(e);return yield this.provider.sendTransaction(r)})}getChainId(){return Sn(this,void 0,void 0,function*(){this._checkProvider("getChainId");return(yield this.provider.getNetwork()).chainId})}getGasPrice(){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getGasPrice"),yield this.provider.getGasPrice()})}getFeeData(){return Sn(this,void 0,void 0,function*(){return this._checkProvider("getFeeData"),yield this.provider.getFeeData()})}resolveName(t){return Sn(this,void 0,void 0,function*(){return this._checkProvider("resolveName"),yield this.provider.resolveName(t)})}checkTransaction(t){for(const e in t)-1===_n.indexOf(e)&&Cn.throwArgumentError("invalid transaction key: "+e,"transaction",t);const e=yt(t);return null==e.from?e.from=this.getAddress():e.from=Promise.all([Promise.resolve(e.from),this.getAddress()]).then(e=>(e[0].toLowerCase()!==e[1].toLowerCase()&&Cn.throwArgumentError("from address mismatch","transaction",t),e[0])),e}populateTransaction(t){return Sn(this,void 0,void 0,function*(){const e=yield mt(this.checkTransaction(t));null!=e.to&&(e.to=Promise.resolve(e.to).then(t=>Sn(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.resolveName(t);return null==e&&Cn.throwArgumentError("provided ENS name resolves to null","tx.to",t),e})),e.to.catch(t=>{}));const r=null!=e.maxFeePerGas||null!=e.maxPriorityFeePerGas;if(null==e.gasPrice||2!==e.type&&!r?0!==e.type&&1!==e.type||!r||Cn.throwArgumentError("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","transaction",t):Cn.throwArgumentError("eip-1559 transaction do not support gasPrice","transaction",t),2!==e.type&&null!=e.type||null==e.maxFeePerGas||null==e.maxPriorityFeePerGas)if(0===e.type||1===e.type)null==e.gasPrice&&(e.gasPrice=this.getGasPrice());else{const t=yield this.getFeeData();if(null==e.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(e.type=2,null!=e.gasPrice){const t=e.gasPrice;delete e.gasPrice,e.maxFeePerGas=t,e.maxPriorityFeePerGas=t}else null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(r&&Cn.throwError("network does not support EIP-1559",v.errors.UNSUPPORTED_OPERATION,{operation:"populateTransaction"}),null==e.gasPrice&&(e.gasPrice=t.gasPrice),e.type=0):Cn.throwError("failed to get consistent fee data",v.errors.UNSUPPORTED_OPERATION,{operation:"signer.getFeeData"});else 2===e.type&&(null==e.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else e.type=2;return null==e.nonce&&(e.nonce=this.getTransactionCount("pending")),null==e.gasLimit&&(e.gasLimit=this.estimateGas(e).catch(t=>{if(Nn.indexOf(t.code)>=0)throw t;return Cn.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:t,tx:e})})),null==e.chainId?e.chainId=this.getChainId():e.chainId=Promise.all([Promise.resolve(e.chainId),this.getChainId()]).then(e=>(0!==e[1]&&e[0]!==e[1]&&Cn.throwArgumentError("chainId address mismatch","transaction",t),e[0])),yield mt(e)})}_checkProvider(t){this.provider||Cn.throwError("missing provider",v.errors.UNSUPPORTED_OPERATION,{operation:t||"_checkProvider"})}static isSigner(t){return!(!t||!t._isSigner)}}class Tn extends xn{constructor(t,e){super(),ft(this,"address",t),ft(this,"provider",e||null)}getAddress(){return Promise.resolve(this.address)}_fail(t,e){return Promise.resolve().then(()=>{Cn.throwError(t,v.errors.UNSUPPORTED_OPERATION,{operation:e})})}signMessage(t){return this._fail("VoidSigner cannot sign messages","signMessage")}signTransaction(t){return this._fail("VoidSigner cannot sign transactions","signTransaction")}_signTypedData(t,e,r){return this._fail("VoidSigner cannot sign typed data","signTypedData")}connect(t){return new Tn(this.address,t)}}var In,Pn,Bn={},Mn={};function Rn(){if(Pn)return In;function t(t,e){if(!t)throw new Error(e||"Assertion failed")}return Pn=1,In=t,t.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)},In}var Fn,On,Dn,Ln={exports:{}},Un={exports:{}};function zn(){if(On)return Ln.exports;On=1;try{var t=require("util");if("function"!=typeof t.inherits)throw"";Ln.exports=t.inherits}catch(t){Ln.exports=(Fn||(Fn=1,"function"==typeof Object.create?Un.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Un.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}),Un.exports)}return Ln.exports}function qn(){if(Dn)return Mn;Dn=1;var t=Rn(),e=zn();function r(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function n(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function s(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}return Mn.inherits=e,Mn.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),s=0;s<t.length;s+=2)n.push(parseInt(t[s]+t[s+1],16))}else for(var i=0,s=0;s<t.length;s++){var o=t.charCodeAt(s);o<128?n[i++]=o:o<2048?(n[i++]=o>>6|192,n[i++]=63&o|128):r(t,s)?(o=65536+((1023&o)<<10)+(1023&t.charCodeAt(++s)),n[i++]=o>>18|240,n[i++]=o>>12&63|128,n[i++]=o>>6&63|128,n[i++]=63&o|128):(n[i++]=o>>12|224,n[i++]=o>>6&63|128,n[i++]=63&o|128)}else for(s=0;s<t.length;s++)n[s]=0|t[s];return n},Mn.toHex=function(t){for(var e="",r=0;r<t.length;r++)e+=i(t[r].toString(16));return e},Mn.htonl=n,Mn.toHex32=function(t,e){for(var r="",i=0;i<t.length;i++){var o=t[i];"little"===e&&(o=n(o)),r+=s(o.toString(16))}return r},Mn.zero2=i,Mn.zero8=s,Mn.join32=function(e,r,n,i){var s=n-r;t(s%4==0);for(var o=new Array(s/4),a=0,l=r;a<o.length;a++,l+=4){var c;c="big"===i?e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]:e[l+3]<<24|e[l+2]<<16|e[l+1]<<8|e[l],o[a]=c>>>0}return o},Mn.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n<t.length;n++,i+=4){var s=t[n];"big"===e?(r[i]=s>>>24,r[i+1]=s>>>16&255,r[i+2]=s>>>8&255,r[i+3]=255&s):(r[i+3]=s>>>24,r[i+2]=s>>>16&255,r[i+1]=s>>>8&255,r[i]=255&s)}return r},Mn.rotr32=function(t,e){return t>>>e|t<<32-e},Mn.rotl32=function(t,e){return t<<e|t>>>32-e},Mn.sum32=function(t,e){return t+e>>>0},Mn.sum32_3=function(t,e,r){return t+e+r>>>0},Mn.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},Mn.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},Mn.sum64=function(t,e,r,n){var i=t[e],s=n+t[e+1]>>>0,o=(s<n?1:0)+r+i;t[e]=o>>>0,t[e+1]=s},Mn.sum64_hi=function(t,e,r,n){return(e+n>>>0<e?1:0)+t+r>>>0},Mn.sum64_lo=function(t,e,r,n){return e+n>>>0},Mn.sum64_4_hi=function(t,e,r,n,i,s,o,a){var l=0,c=e;return l+=(c=c+n>>>0)<e?1:0,l+=(c=c+s>>>0)<s?1:0,t+r+i+o+(l+=(c=c+a>>>0)<a?1:0)>>>0},Mn.sum64_4_lo=function(t,e,r,n,i,s,o,a){return e+n+s+a>>>0},Mn.sum64_5_hi=function(t,e,r,n,i,s,o,a,l,c){var h=0,u=e;return h+=(u=u+n>>>0)<e?1:0,h+=(u=u+s>>>0)<s?1:0,h+=(u=u+a>>>0)<a?1:0,t+r+i+o+l+(h+=(u=u+c>>>0)<c?1:0)>>>0},Mn.sum64_5_lo=function(t,e,r,n,i,s,o,a,l,c){return e+n+s+a+c>>>0},Mn.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},Mn.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Mn.shr64_hi=function(t,e,r){return t>>>r},Mn.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},Mn}var jn,Gn={};function Hn(){if(jn)return Gn;jn=1;var t=qn(),e=Rn();function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return Gn.BlockHash=r,r.prototype.update=function(e,r){if(e=t.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=t.join32(e,0,e.length-n,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},r.prototype.digest=function(t){return this.update(this._pad()),e(null===this.pending),this._digest(t)},r.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,r=e-(t+this.padLength)%e,n=new Array(r+this.padLength);n[0]=128;for(var i=1;i<r;i++)n[i]=0;if(t<<=3,"big"===this.endian){for(var s=8;s<this.padLength;s++)n[i++]=0;n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=t>>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,s=8;s<this.padLength;s++)n[i++]=0;return n},Gn}var Wn,Kn,Vn,Jn,$n,Qn,Yn,Xn,Zn,ti,ei,ri,ni={},ii={};function si(){if(Wn)return ii;Wn=1;var t=qn().rotr32;function e(t,e,r){return t&e^~t&r}function r(t,e,r){return t&e^t&r^e&r}function n(t,e,r){return t^e^r}return ii.ft_1=function(t,i,s,o){return 0===t?e(i,s,o):1===t||3===t?n(i,s,o):2===t?r(i,s,o):void 0},ii.ch32=e,ii.maj32=r,ii.p32=n,ii.s0_256=function(e){return t(e,2)^t(e,13)^t(e,22)},ii.s1_256=function(e){return t(e,6)^t(e,11)^t(e,25)},ii.g0_256=function(e){return t(e,7)^t(e,18)^e>>>3},ii.g1_256=function(e){return t(e,17)^t(e,19)^e>>>10},ii}function oi(){if($n)return Jn;$n=1;var t=qn(),e=Hn(),r=si(),n=Rn(),i=t.sum32,s=t.sum32_4,o=t.sum32_5,a=r.ch32,l=r.maj32,c=r.s0_256,h=r.s1_256,u=r.g0_256,d=r.g1_256,f=e.BlockHash,p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function m(){if(!(this instanceof m))return new m;f.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}return t.inherits(m,f),Jn=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var r=this.W,f=0;f<16;f++)r[f]=t[e+f];for(;f<r.length;f++)r[f]=s(d(r[f-2]),r[f-7],u(r[f-15]),r[f-16]);var p=this.h[0],m=this.h[1],g=this.h[2],y=this.h[3],w=this.h[4],v=this.h[5],b=this.h[6],E=this.h[7];for(n(this.k.length===r.length),f=0;f<r.length;f++){var A=o(E,h(w),a(w,v,b),this.k[f],r[f]),k=i(c(p),l(p,m,g));E=b,b=v,v=w,w=i(y,A),y=g,g=m,m=p,p=i(A,k)}this.h[0]=i(this.h[0],p),this.h[1]=i(this.h[1],m),this.h[2]=i(this.h[2],g),this.h[3]=i(this.h[3],y),this.h[4]=i(this.h[4],w),this.h[5]=i(this.h[5],v),this.h[6]=i(this.h[6],b),this.h[7]=i(this.h[7],E)},m.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Jn}function ai(){if(Zn)return Xn;Zn=1;var t=qn(),e=Hn(),r=Rn(),n=t.rotr64_hi,i=t.rotr64_lo,s=t.shr64_hi,o=t.shr64_lo,a=t.sum64,l=t.sum64_hi,c=t.sum64_lo,h=t.sum64_4_hi,u=t.sum64_4_lo,d=t.sum64_5_hi,f=t.sum64_5_lo,p=e.BlockHash,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function g(){if(!(this instanceof g))return new g;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function y(t,e,r,n,i){var s=t&r^~t&i;return s<0&&(s+=4294967296),s}function w(t,e,r,n,i,s){var o=e&n^~e&s;return o<0&&(o+=4294967296),o}function v(t,e,r,n,i){var s=t&r^t&i^r&i;return s<0&&(s+=4294967296),s}function b(t,e,r,n,i,s){var o=e&n^e&s^n&s;return o<0&&(o+=4294967296),o}function E(t,e){var r=n(t,e,28)^n(e,t,2)^n(e,t,7);return r<0&&(r+=4294967296),r}function A(t,e){var r=i(t,e,28)^i(e,t,2)^i(e,t,7);return r<0&&(r+=4294967296),r}function k(t,e){var r=n(t,e,14)^n(t,e,18)^n(e,t,9);return r<0&&(r+=4294967296),r}function S(t,e){var r=i(t,e,14)^i(t,e,18)^i(e,t,9);return r<0&&(r+=4294967296),r}function C(t,e){var r=n(t,e,1)^n(t,e,8)^s(t,e,7);return r<0&&(r+=4294967296),r}function _(t,e){var r=i(t,e,1)^i(t,e,8)^o(t,e,7);return r<0&&(r+=4294967296),r}function N(t,e){var r=n(t,e,19)^n(e,t,29)^s(t,e,6);return r<0&&(r+=4294967296),r}function x(t,e){var r=i(t,e,19)^i(e,t,29)^o(t,e,6);return r<0&&(r+=4294967296),r}return t.inherits(g,p),Xn=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(t,e){for(var r=this.W,n=0;n<32;n++)r[n]=t[e+n];for(;n<r.length;n+=2){var i=N(r[n-4],r[n-3]),s=x(r[n-4],r[n-3]),o=r[n-14],a=r[n-13],l=C(r[n-30],r[n-29]),c=_(r[n-30],r[n-29]),d=r[n-32],f=r[n-31];r[n]=h(i,s,o,a,l,c,d,f),r[n+1]=u(i,s,o,a,l,c,d,f)}},g.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,i=this.h[0],s=this.h[1],o=this.h[2],h=this.h[3],u=this.h[4],p=this.h[5],m=this.h[6],g=this.h[7],C=this.h[8],_=this.h[9],N=this.h[10],x=this.h[11],T=this.h[12],I=this.h[13],P=this.h[14],B=this.h[15];r(this.k.length===n.length);for(var M=0;M<n.length;M+=2){var R=P,F=B,O=k(C,_),D=S(C,_),L=y(C,_,N,x,T),U=w(C,_,N,x,T,I),z=this.k[M],q=this.k[M+1],j=n[M],G=n[M+1],H=d(R,F,O,D,L,U,z,q,j,G),W=f(R,F,O,D,L,U,z,q,j,G);R=E(i,s),F=A(i,s),O=v(i,s,o,h,u),D=b(i,s,o,h,u,p);var K=l(R,F,O,D),V=c(R,F,O,D);P=T,B=I,T=N,I=x,N=C,x=_,C=l(m,g,H,W),_=c(g,g,H,W),m=u,g=p,u=o,p=h,o=i,h=s,i=l(H,W,K,V),s=c(H,W,K,V)}a(this.h,0,i,s),a(this.h,2,o,h),a(this.h,4,u,p),a(this.h,6,m,g),a(this.h,8,C,_),a(this.h,10,N,x),a(this.h,12,T,I),a(this.h,14,P,B)},g.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Xn}function li(){return ri||(ri=1,ni.sha1=function(){if(Vn)return Kn;Vn=1;var t=qn(),e=Hn(),r=si(),n=t.rotl32,i=t.sum32,s=t.sum32_5,o=r.ft_1,a=e.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function c(){if(!(this instanceof c))return new c;a.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return t.inherits(c,a),Kn=c,c.blockSize=512,c.outSize=160,c.hmacStrength=80,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.W,a=0;a<16;a++)r[a]=t[e+a];for(;a<r.length;a++)r[a]=n(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var c=this.h[0],h=this.h[1],u=this.h[2],d=this.h[3],f=this.h[4];for(a=0;a<r.length;a++){var p=~~(a/20),m=s(n(c,5),o(p,h,u,d),f,r[a],l[p]);f=d,d=u,u=n(h,30),h=c,c=m}this.h[0]=i(this.h[0],c),this.h[1]=i(this.h[1],h),this.h[2]=i(this.h[2],u),this.h[3]=i(this.h[3],d),this.h[4]=i(this.h[4],f)},c.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"big"):t.split32(this.h,"big")},Kn}(),ni.sha224=function(){if(Yn)return Qn;Yn=1;var t=qn(),e=oi();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}return t.inherits(r,e),Qn=r,r.blockSize=512,r.outSize=224,r.hmacStrength=192,r.padLength=64,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,7),"big"):t.split32(this.h.slice(0,7),"big")},Qn}(),ni.sha256=oi(),ni.sha384=function(){if(ei)return ti;ei=1;var t=qn(),e=ai();function r(){if(!(this instanceof r))return new r;e.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}return t.inherits(r,e),ti=r,r.blockSize=1024,r.outSize=384,r.hmacStrength=192,r.padLength=128,r.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h.slice(0,12),"big"):t.split32(this.h.slice(0,12),"big")},ti}(),ni.sha512=ai()),ni}var ci,hi,ui,di,fi={};var pi=(di||(di=1,function(){var t=Bn;t.utils=qn(),t.common=Hn(),t.sha=li(),t.ripemd=function(){if(ci)return fi;ci=1;var t=qn(),e=Hn(),r=t.rotl32,n=t.sum32,i=t.sum32_3,s=t.sum32_4,o=e.BlockHash;function a(){if(!(this instanceof a))return new a;o.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function c(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function h(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}t.inherits(a,o),fi.ripemd160=a,a.blockSize=512,a.outSize=160,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(t,e){for(var o=this.h[0],a=this.h[1],m=this.h[2],g=this.h[3],y=this.h[4],w=o,v=a,b=m,E=g,A=y,k=0;k<80;k++){var S=n(r(s(o,l(k,a,m,g),t[u[k]+e],c(k)),f[k]),y);o=y,y=g,g=r(m,10),m=a,a=S,S=n(r(s(w,l(79-k,v,b,E),t[d[k]+e],h(k)),p[k]),A),w=A,A=E,E=r(b,10),b=v,v=S}S=i(this.h[1],m,E),this.h[1]=i(this.h[2],g,A),this.h[2]=i(this.h[3],y,w),this.h[3]=i(this.h[4],o,v),this.h[4]=i(this.h[0],a,b),this.h[0]=S},a.prototype._digest=function(e){return"hex"===e?t.toHex32(this.h,"little"):t.split32(this.h,"little")};var u=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],f=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];return fi}(),t.hmac=function(){if(ui)return hi;ui=1;var t=qn(),e=Rn();function r(e,n,i){if(!(this instanceof r))return new r(e,n,i);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(t.toArray(n,i))}return hi=r,r.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),e(t.length<=this.blockSize);for(var r=t.length;r<this.blockSize;r++)t.push(0);for(r=0;r<t.length;r++)t[r]^=54;for(this.inner=(new this.Hash).update(t),r=0;r<t.length;r++)t[r]^=106;this.outer=(new this.Hash).update(t)},r.prototype.update=function(t,e){return this.inner.update(t,e),this},r.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)},hi}(),t.sha1=t.sha.sha1,t.sha256=t.sha.sha256,t.sha224=t.sha.sha224,t.sha384=t.sha.sha384,t.sha512=t.sha.sha512,t.ripemd160=t.ripemd.ripemd160}()),Bn),mi=s(pi);function gi(t,e,r){return r={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&r.path)}},t(r,r.exports),r.exports}var yi=wi;function wi(t,e){if(!t)throw new Error(e||"Assertion failed")}wi.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)};var vi=gi(function(t,e){var r=e;function n(t){return 1===t.length?"0"+t:t}function i(t){for(var e="",r=0;r<t.length;r++)e+=n(t[r].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!=typeof t){for(var n=0;n<t.length;n++)r[n]=0|t[n];return r}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(n=0;n<t.length;n+=2)r.push(parseInt(t[n]+t[n+1],16))}else for(n=0;n<t.length;n++){var i=t.charCodeAt(n),s=i>>8,o=255&i;s?r.push(s,o):r.push(o)}return r},r.zero2=n,r.toHex=i,r.encode=function(t,e){return"hex"===e?i(t):t}}),bi=gi(function(t,e){var r=e;r.assert=yi,r.toArray=vi.toArray,r.zero2=vi.zero2,r.toHex=vi.toHex,r.encode=vi.encode,r.getNAF=function(t,e,r){var n,i=new Array(Math.max(t.bitLength(),r)+1);for(n=0;n<i.length;n+=1)i[n]=0;var s=1<<e+1,o=t.clone();for(n=0;n<i.length;n++){var a,l=o.andln(s-1);o.isOdd()?(a=l>(s>>1)-1?(s>>1)-l:l,o.isubn(a)):a=0,i[n]=a,o.iushrn(1)}return i},r.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n,i=0,s=0;t.cmpn(-i)>0||e.cmpn(-s)>0;){var o,a,l=t.andln(3)+i&3,c=e.andln(3)+s&3;3===l&&(l=-1),3===c&&(c=-1),o=1&l?3!==(n=t.andln(7)+i&7)&&5!==n||2!==c?l:-l:0,r[0].push(o),a=1&c?3!==(n=e.andln(7)+s&7)&&5!==n||2!==l?c:-c:0,r[1].push(a),2*i===o+1&&(i=1-i),2*s===a+1&&(s=1-s),t.iushrn(1),e.iushrn(1)}return r},r.cachedProperty=function(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new c(t,"hex","le")}}),Ei=bi.getNAF,Ai=bi.getJSF,ki=bi.assert;function Si(t,e){this.type=t,this.p=new c(e.p,16),this.red=e.prime?c.red(e.prime):c.mont(this.p),this.zero=new c(0).toRed(this.red),this.one=new c(1).toRed(this.red),this.two=new c(2).toRed(this.red),this.n=e.n&&new c(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ci=Si;function _i(t,e){this.curve=t,this.type=e,this.precomputed=null}Si.prototype.point=function(){throw new Error("Not implemented")},Si.prototype.validate=function(){throw new Error("Not implemented")},Si.prototype._fixedNafMul=function(t,e){ki(t.precomputed);var r=t._getDoubles(),n=Ei(e,1,this._bitLength),i=(1<<r.step+1)-(r.step%2==0?2:1);i/=3;var s,o,a=[];for(s=0;s<n.length;s+=r.step){o=0;for(var l=s+r.step-1;l>=s;l--)o=(o<<1)+n[l];a.push(o)}for(var c=this.jpoint(null,null,null),h=this.jpoint(null,null,null),u=i;u>0;u--){for(s=0;s<a.length;s++)(o=a[s])===u?h=h.mixedAdd(r.points[s]):o===-u&&(h=h.mixedAdd(r.points[s].neg()));c=c.add(h)}return c.toP()},Si.prototype._wnafMul=function(t,e){var r=4,n=t._getNAFPoints(r);r=n.wnd;for(var i=n.points,s=Ei(e,r,this._bitLength),o=this.jpoint(null,null,null),a=s.length-1;a>=0;a--){for(var l=0;a>=0&&0===s[a];a--)l++;if(a>=0&&l++,o=o.dblp(l),a<0)break;var c=s[a];ki(0!==c),o="affine"===t.type?c>0?o.mixedAdd(i[c-1>>1]):o.mixedAdd(i[-c-1>>1].neg()):c>0?o.add(i[c-1>>1]):o.add(i[-c-1>>1].neg())}return"affine"===t.type?o.toP():o},Si.prototype._wnafMulAdd=function(t,e,r,n,i){var s,o,a,l=this._wnafT1,c=this._wnafT2,h=this._wnafT3,u=0;for(s=0;s<n;s++){var d=(a=e[s])._getNAFPoints(t);l[s]=d.wnd,c[s]=d.points}for(s=n-1;s>=1;s-=2){var f=s-1,p=s;if(1===l[f]&&1===l[p]){var m=[e[f],null,null,e[p]];0===e[f].y.cmp(e[p].y)?(m[1]=e[f].add(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg())):0===e[f].y.cmp(e[p].y.redNeg())?(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].add(e[p].neg())):(m[1]=e[f].toJ().mixedAdd(e[p]),m[2]=e[f].toJ().mixedAdd(e[p].neg()));var g=[-3,-1,-5,-7,0,7,5,1,3],y=Ai(r[f],r[p]);for(u=Math.max(y[0].length,u),h[f]=new Array(u),h[p]=new Array(u),o=0;o<u;o++){var w=0|y[0][o],v=0|y[1][o];h[f][o]=g[3*(w+1)+(v+1)],h[p][o]=0,c[f]=m}}else h[f]=Ei(r[f],l[f],this._bitLength),h[p]=Ei(r[p],l[p],this._bitLength),u=Math.max(h[f].length,u),u=Math.max(h[p].length,u)}var b=this.jpoint(null,null,null),E=this._wnafT4;for(s=u;s>=0;s--){for(var A=0;s>=0;){var k=!0;for(o=0;o<n;o++)E[o]=0|h[o][s],0!==E[o]&&(k=!1);if(!k)break;A++,s--}if(s>=0&&A++,b=b.dblp(A),s<0)break;for(o=0;o<n;o++){var S=E[o];0!==S&&(S>0?a=c[o][S-1>>1]:S<0&&(a=c[o][-S-1>>1].neg()),b="affine"===a.type?b.mixedAdd(a):b.add(a))}}for(s=0;s<n;s++)c[s]=null;return i?b:b.toP()},Si.BasePoint=_i,_i.prototype.eq=function(){throw new Error("Not implemented")},_i.prototype.validate=function(){return this.curve.validate(this)},Si.prototype.decodePoint=function(t,e){t=bi.toArray(t,e);var r=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*r)return 6===t[0]?ki(t[t.length-1]%2==0):7===t[0]&&ki(t[t.length-1]%2==1),this.point(t.slice(1,1+r),t.slice(1+r,1+2*r));if((2===t[0]||3===t[0])&&t.length-1===r)return this.pointFromX(t.slice(1,1+r),3===t[0]);throw new Error("Unknown point format")},_i.prototype.encodeCompressed=function(t){return this.encode(t,!0)},_i.prototype._encode=function(t){var e=this.curve.p.byteLength(),r=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",e))},_i.prototype.encode=function(t,e){return bi.encode(this._encode(e),t)},_i.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},_i.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},_i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i<e;i+=t){for(var s=0;s<t;s++)n=n.dbl();r.push(n)}return{step:t,points:r}},_i.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],r=(1<<t)-1,n=1===r?null:this.dbl(),i=1;i<r;i++)e[i]=e[i-1].add(n);return{wnd:t,points:e}},_i.prototype._getBeta=function(){return null},_i.prototype.dblp=function(t){for(var e=this,r=0;r<t;r++)e=e.dbl();return e};var Ni=gi(function(t){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}}),xi=bi.assert;function Ti(t){Ci.call(this,"short",t),this.a=new c(t.a,16).toRed(this.red),this.b=new c(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Ni(Ti,Ci);var Ii=Ti;function Pi(t,e,r,n){Ci.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new c(e,16),this.y=new c(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function Bi(t,e,r,n){Ci.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new c(0)):(this.x=new c(e,16),this.y=new c(r,16),this.z=new c(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Ti.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new c(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=(e=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(t.lambda)r=new c(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],xi(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map(function(t){return{a:new c(t.a,16),b:new c(t.b,16)}}):this._getEndoBasis(r)}}},Ti.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:c.mont(t),r=new c(2).toRed(e).redInvm(),n=r.redNeg(),i=new c(3).toRed(e).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},Ti.prototype._getEndoBasis=function(t){for(var e,r,n,i,s,o,a,l,h,u=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new c(1),m=new c(0),g=new c(0),y=new c(1),w=0;0!==d.cmpn(0);){var v=f.div(d);l=f.sub(v.mul(d)),h=g.sub(v.mul(p));var b=y.sub(v.mul(m));if(!n&&l.cmp(u)<0)e=a.neg(),r=p,n=l.neg(),i=h;else if(n&&2===++w)break;a=l,f=d,d=l,g=p,p=h,y=m,m=b}s=l.neg(),o=h;var E=n.sqr().add(i.sqr());return s.sqr().add(o.sqr()).cmp(E)>=0&&(s=e,o=r),n.negative&&(n=n.neg(),i=i.neg()),s.negative&&(s=s.neg(),o=o.neg()),[{a:n,b:i},{a:s,b:o}]},Ti.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),s=r.b.neg().mul(t).divRound(this.n),o=i.mul(r.a),a=s.mul(n.a),l=i.mul(r.b),c=s.mul(n.b);return{k1:t.sub(o).sub(a),k2:l.add(c).neg()}},Ti.prototype.pointFromX=function(t,e){(t=new c(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},Ti.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},Ti.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,s=0;s<t.length;s++){var o=this._endoSplit(e[s]),a=t[s],l=a._getBeta();o.k1.negative&&(o.k1.ineg(),a=a.neg(!0)),o.k2.negative&&(o.k2.ineg(),l=l.neg(!0)),n[2*s]=a,n[2*s+1]=l,i[2*s]=o.k1,i[2*s+1]=o.k2}for(var c=this._wnafMulAdd(1,n,i,2*s,r),h=0;h<2*s;h++)n[h]=null,i[h]=null;return c},Ni(Pi,Ci.BasePoint),Ti.prototype.point=function(t,e,r){return new Pi(this,t,e,r)},Ti.prototype.pointFromJSON=function(t,e){return Pi.fromJSON(this,t,e)},Pi.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var r=this.curve,n=function(t){return r.point(t.x.redMul(r.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(n)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(n)}}}return e}},Pi.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Pi.fromJSON=function(t,e,r){"string"==typeof e&&(e=JSON.parse(e));var n=t.point(e[0],e[1],r);if(!e[2])return n;function i(e){return t.point(e[0],e[1],r)}var s=e[2];return n.precomputed={beta:null,doubles:s.doubles&&{step:s.doubles.step,points:[n].concat(s.doubles.points.map(i))},naf:s.naf&&{wnd:s.naf.wnd,points:[n].concat(s.naf.points.map(i))}},n},Pi.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Pi.prototype.isInfinity=function(){return this.inf},Pi.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},Pi.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),s=i.redSqr().redISub(this.x.redAdd(this.x)),o=i.redMul(this.x.redSub(s)).redISub(this.y);return this.curve.point(s,o)},Pi.prototype.getX=function(){return this.x.fromRed()},Pi.prototype.getY=function(){return this.y.fromRed()},Pi.prototype.mul=function(t){return t=new c(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Pi.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},Pi.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},Pi.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},Pi.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},Pi.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},Ni(Bi,Ci.BasePoint),Ti.prototype.jpoint=function(t,e,r){return new Bi(this,t,e,r)},Bi.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},Bi.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Bi.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),s=this.y.redMul(e.redMul(t.z)),o=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),l=s.redSub(o);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),h=c.redMul(a),u=n.redMul(c),d=l.redSqr().redIAdd(h).redISub(u).redISub(u),f=l.redMul(u.redISub(d)).redISub(s.redMul(h)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},Bi.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,s=t.y.redMul(e).redMul(this.z),o=r.redSub(n),a=i.redSub(s);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=o.redSqr(),c=l.redMul(o),h=r.redMul(l),u=a.redSqr().redIAdd(c).redISub(h).redISub(h),d=a.redMul(h.redISub(u)).redISub(i.redMul(c)),f=this.z.redMul(o);return this.curve.jpoint(u,d,f)},Bi.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e<t;e++)r=r.dbl();return r}var n=this.curve.a,i=this.curve.tinv,s=this.x,o=this.y,a=this.z,l=a.redSqr().redSqr(),c=o.redAdd(o);for(e=0;e<t;e++){var h=s.redSqr(),u=c.redSqr(),d=u.redSqr(),f=h.redAdd(h).redIAdd(h).redIAdd(n.redMul(l)),p=s.redMul(u),m=f.redSqr().redISub(p.redAdd(p)),g=p.redISub(m),y=f.redMul(g);y=y.redIAdd(y).redISub(d);var w=c.redMul(a);e+1<t&&(l=l.redMul(d)),s=m,a=w,c=y}return this.curve.jpoint(s,c.redMul(i),a)},Bi.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},Bi.prototype._zeroDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n),l=a.redSqr().redISub(o).redISub(o),c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),t=l,e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.x.redSqr(),u=this.y.redSqr(),d=u.redSqr(),f=this.x.redAdd(u).redSqr().redISub(h).redISub(d);f=f.redIAdd(f);var p=h.redAdd(h).redIAdd(h),m=p.redSqr(),g=d.redIAdd(d);g=(g=g.redIAdd(g)).redIAdd(g),t=m.redISub(f).redISub(f),e=p.redMul(f.redISub(t)).redISub(g),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(t,e,r)},Bi.prototype._threeDbl=function(){var t,e,r;if(this.zOne){var n=this.x.redSqr(),i=this.y.redSqr(),s=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(n).redISub(s);o=o.redIAdd(o);var a=n.redAdd(n).redIAdd(n).redIAdd(this.curve.a),l=a.redSqr().redISub(o).redISub(o);t=l;var c=s.redIAdd(s);c=(c=c.redIAdd(c)).redIAdd(c),e=a.redMul(o.redISub(l)).redISub(c),r=this.y.redAdd(this.y)}else{var h=this.z.redSqr(),u=this.y.redSqr(),d=this.x.redMul(u),f=this.x.redSub(h).redMul(this.x.redAdd(h));f=f.redAdd(f).redIAdd(f);var p=d.redIAdd(d),m=(p=p.redIAdd(p)).redAdd(p);t=f.redSqr().redISub(m),r=this.y.redAdd(this.z).redSqr().redISub(u).redISub(h);var g=u.redSqr();g=(g=(g=g.redIAdd(g)).redIAdd(g)).redIAdd(g),e=f.redMul(p.redISub(t)).redISub(g)}return this.curve.jpoint(t,e,r)},Bi.prototype._dbl=function(){var t=this.curve.a,e=this.x,r=this.y,n=this.z,i=n.redSqr().redSqr(),s=e.redSqr(),o=r.redSqr(),a=s.redAdd(s).redIAdd(s).redIAdd(t.redMul(i)),l=e.redAdd(e),c=(l=l.redIAdd(l)).redMul(o),h=a.redSqr().redISub(c.redAdd(c)),u=c.redISub(h),d=o.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=a.redMul(u).redISub(d),p=r.redAdd(r).redMul(n);return this.curve.jpoint(h,f,p)},Bi.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr(),n=e.redSqr(),i=t.redAdd(t).redIAdd(t),s=i.redSqr(),o=this.x.redAdd(e).redSqr().redISub(t).redISub(n),a=(o=(o=(o=o.redIAdd(o)).redAdd(o).redIAdd(o)).redISub(s)).redSqr(),l=n.redIAdd(n);l=(l=(l=l.redIAdd(l)).redIAdd(l)).redIAdd(l);var c=i.redIAdd(o).redSqr().redISub(s).redISub(a).redISub(l),h=e.redMul(c);h=(h=h.redIAdd(h)).redIAdd(h);var u=this.x.redMul(a).redISub(h);u=(u=u.redIAdd(u)).redIAdd(u);var d=this.y.redMul(c.redMul(l.redISub(c)).redISub(o.redMul(a)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var f=this.z.redAdd(o).redSqr().redISub(r).redISub(a);return this.curve.jpoint(u,d,f)},Bi.prototype.mul=function(t,e){return t=new c(t,e),this.curve._wnafMul(this,t)},Bi.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),r=t.z.redSqr();if(0!==this.x.redMul(r).redISub(t.x.redMul(e)).cmpn(0))return!1;var n=e.redMul(this.z),i=r.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(n)).cmpn(0)},Bi.prototype.eqXToP=function(t){var e=this.z.redSqr(),r=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(r))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(e);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},Bi.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},Bi.prototype.isInfinity=function(){return 0===this.z.cmpn(0)};var Mi=gi(function(t,e){var r=e;r.base=Ci,r.short=Ii,r.mont=null,r.edwards=null}),Ri=gi(function(t,e){var r,n=e,i=bi.assert;function s(t){"short"===t.type?this.curve=new Mi.short(t):"edwards"===t.type?this.curve=new Mi.edwards(t):this.curve=new Mi.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function o(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new s(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=s,o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:mi.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:mi.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:mi.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:mi.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:mi.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:mi.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:mi.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=null.crash()}catch(t){r=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:mi.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})});function Fi(t){if(!(this instanceof Fi))return new Fi(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=vi.toArray(t.entropy,t.entropyEnc||"hex"),r=vi.toArray(t.nonce,t.nonceEnc||"hex"),n=vi.toArray(t.pers,t.persEnc||"hex");yi(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var Oi=Fi;Fi.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(n),this._reseed=1,this.reseedInterval=281474976710656},Fi.prototype._hmac=function(){return new mi.hmac(this.hash,this.K)},Fi.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},Fi.prototype.reseed=function(t,e,r,n){"string"!=typeof e&&(n=r,r=e,e=null),t=vi.toArray(t,e),r=vi.toArray(r,n),yi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},Fi.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=vi.toArray(r,n||"hex"),this._update(r));for(var i=[];i.length<t;)this.V=this._hmac().update(this.V).digest(),i=i.concat(this.V);var s=i.slice(0,t);return this._update(r),this._reseed++,vi.encode(s,e)};var Di=bi.assert;function Li(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var Ui=Li;Li.fromPublic=function(t,e,r){return e instanceof Li?e:new Li(t,{pub:e,pubEnc:r})},Li.fromPrivate=function(t,e,r){return e instanceof Li?e:new Li(t,{priv:e,privEnc:r})},Li.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},Li.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Li.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},Li.prototype._importPrivate=function(t,e){this.priv=new c(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},Li.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?Di(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||Di(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},Li.prototype.derive=function(t){return t.validate()||Di(t.validate(),"public point not validated"),t.mul(this.priv).getX()},Li.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},Li.prototype.verify=function(t,e,r){return this.ec.verify(t,e,this,void 0,r)},Li.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var zi=bi.assert;function qi(t,e){if(t instanceof qi)return t;this._importDER(t,e)||(zi(t.r&&t.s,"Signature without r or s"),this.r=new c(t.r,16),this.s=new c(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var ji=qi;function Gi(){this.place=0}function Hi(t,e){var r=t[e.place++];if(!(128&r))return r;var n=15&r;if(0===n||n>4)return!1;if(0===t[e.place])return!1;for(var i=0,s=0,o=e.place;s<n;s++,o++)i<<=8,i|=t[o],i>>>=0;return!(i<=127)&&(e.place=o,i)}function Wi(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e<r;)e++;return 0===e?t:t.slice(e)}function Ki(t,e){if(e<128)t.push(e);else{var r=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}qi.prototype._importDER=function(t,e){t=bi.toArray(t,e);var r=new Gi;if(48!==t[r.place++])return!1;var n=Hi(t,r);if(!1===n)return!1;if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var i=Hi(t,r);if(!1===i)return!1;if(128&t[r.place])return!1;var s=t.slice(r.place,i+r.place);if(r.place+=i,2!==t[r.place++])return!1;var o=Hi(t,r);if(!1===o)return!1;if(t.length!==o+r.place)return!1;if(128&t[r.place])return!1;var a=t.slice(r.place,o+r.place);if(0===s[0]){if(!(128&s[1]))return!1;s=s.slice(1)}if(0===a[0]){if(!(128&a[1]))return!1;a=a.slice(1)}return this.r=new c(s),this.s=new c(a),this.recoveryParam=null,!0},qi.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=Wi(e),r=Wi(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];Ki(n,e.length),(n=n.concat(e)).push(2),Ki(n,r.length);var i=n.concat(r),s=[48];return Ki(s,i.length),s=s.concat(i),bi.encode(s,t)};var Vi=function(){throw new Error("unsupported")},Ji=bi.assert;function $i(t){if(!(this instanceof $i))return new $i(t);"string"==typeof t&&(Ji(Object.prototype.hasOwnProperty.call(Ri,t),"Unknown curve "+t),t=Ri[t]),t instanceof Ri.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Qi=$i;$i.prototype.keyPair=function(t){return new Ui(this,t)},$i.prototype.keyFromPrivate=function(t,e){return Ui.fromPrivate(this,t,e)},$i.prototype.keyFromPublic=function(t,e){return Ui.fromPublic(this,t,e)},$i.prototype.genKeyPair=function(t){t||(t={});for(var e=new Oi({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Vi(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new c(2));;){var i=new c(e.generate(r));if(!(i.cmp(n)>0))return i.iaddn(1),this.keyFromPrivate(i)}},$i.prototype._truncateToN=function(t,e,r){var n;if(c.isBN(t)||"number"==typeof t)n=(t=new c(t,16)).byteLength();else if("object"==typeof t)n=t.length,t=new c(t,16);else{var i=t.toString();n=i.length+1>>>1,t=new c(i,16)}"number"!=typeof r&&(r=8*n);var s=r-this.n.bitLength();return s>0&&(t=t.ushrn(s)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},$i.prototype.sign=function(t,e,r,n){if("object"==typeof r&&(n=r,r=null),n||(n={}),"string"!=typeof t&&"number"!=typeof t&&!c.isBN(t)){Ji("object"==typeof t&&t&&"number"==typeof t.length,"Expected message to be an array-like, a hex string, or a BN instance"),Ji(t.length>>>0===t.length);for(var i=0;i<t.length;i++)Ji((255&t[i])===t[i])}e=this.keyFromPrivate(e,r),t=this._truncateToN(t,!1,n.msgBitLength),Ji(!t.isNeg(),"Can not sign a negative message");var s=this.n.byteLength(),o=e.getPrivate().toArray("be",s),a=t.toArray("be",s);Ji(new c(a).eq(t),"Can not sign message");for(var l=new Oi({hash:this.hash,entropy:o,nonce:a,pers:n.pers,persEnc:n.persEnc||"utf8"}),h=this.n.sub(new c(1)),u=0;;u++){var d=n.k?n.k(u):new c(l.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(h)>=0)){var f=this.g.mul(d);if(!f.isInfinity()){var p=f.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var g=d.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(g=g.umod(this.n)).cmpn(0)){var y=(f.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),y^=1),new ji({r:m,s:g,recoveryParam:y})}}}}}},$i.prototype.verify=function(t,e,r,n,i){i||(i={}),t=this._truncateToN(t,!1,i.msgBitLength),r=this.keyFromPublic(r,n);var s=(e=new ji(e,"hex")).r,o=e.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var a,l=o.invm(this.n),c=l.mul(t).umod(this.n),h=l.mul(s).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,r.getPublic(),h)).isInfinity()&&a.eqXToP(s):!(a=this.g.mulAdd(c,r.getPublic(),h)).isInfinity()&&0===a.getX().umod(this.n).cmp(s)},$i.prototype.recoverPubKey=function(t,e,r,n){Ji((3&r)===r,"The recovery param is more than two bits"),e=new ji(e,n);var i=this.n,s=new c(t),o=e.r,a=e.s,l=1&r,h=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");o=h?this.curve.pointFromX(o.add(this.curve.n),l):this.curve.pointFromX(o,l);var u=e.r.invm(i),d=i.sub(s).mul(u).umod(i),f=a.mul(u).umod(i);return this.g.mulAdd(d,o,f)},$i.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new ji(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var s;try{s=this.recoverPubKey(t,e,i)}catch(t){continue}if(s.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var Yi=gi(function(t,e){var r=e;r.version="6.6.1",r.utils=bi,r.rand=function(){throw new Error("unsupported")},r.curve=Mi,r.curves=Ri,r.ec=Qi,r.eddsa=null}).ec;const Xi=new v("signing-key/5.8.0");let Zi=null;function ts(){return Zi||(Zi=new Yi("secp256k1")),Zi}class es{constructor(t){ft(this,"curve","secp256k1"),ft(this,"privateKey",B(t)),32!==M(this.privateKey)&&Xi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const e=ts().keyFromPrivate(_(this.privateKey));ft(this,"publicKey","0x"+e.getPublic(!1,"hex")),ft(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),ft(this,"_isSigningKey",!0)}_addPoint(t){const e=ts().keyFromPublic(_(this.publicKey)),r=ts().keyFromPublic(_(t));return"0x"+e.pub.add(r.pub).encodeCompressed("hex")}signDigest(t){const e=ts().keyFromPrivate(_(this.privateKey)),r=_(t);32!==r.length&&Xi.throwArgumentError("bad digest length","digest",t);const n=e.sign(r,{canonical:!0});return U({recoveryParam:n.recoveryParam,r:L("0x"+n.r.toString(16),32),s:L("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const e=ts().keyFromPrivate(_(this.privateKey)),r=ts().keyFromPublic(_(ns(t)));return L("0x"+e.derive(r.getPublic()).toString(16),32)}static isSigningKey(t){return!(!t||!t._isSigningKey)}}function rs(t,e){const r=U(e),n={r:_(r.r),s:_(r.s)};return"0x"+ts().recoverPubKey(_(t),n,r.recoveryParam).encode("hex",!1)}function ns(t,e){const r=_(t);if(32===r.length){const t=new es(r);return e?"0x"+ts().keyFromPrivate(r).getPublic(!0,"hex"):t.publicKey}return 33===r.length?e?B(r):"0x"+ts().keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+ts().keyFromPublic(r).getPublic(!0,"hex"):B(r):Xi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const is=new v("transactions/5.8.0");var ss;function os(t){return"0x"===t?null:ve(t)}function as(t){return"0x"===t?Re:V.from(t)}!function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"}(ss||(ss={}));const ls=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],cs={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function hs(t){return ve(R(ne(R(ns(t),1)),12))}function us(t,e){return hs(rs(_(t),e))}function ds(t,e){const r=x(V.from(t).toHexString());return r.length>32&&is.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function fs(t,e){return{address:ve(t),storageKeys:(e||[]).map((e,r)=>(32!==M(e)&&is.throwArgumentError("invalid access list storageKey",`accessList[${t}:${r}]`,e),e.toLowerCase()))}}function ps(t){if(Array.isArray(t))return t.map((t,e)=>Array.isArray(t)?(t.length>2&&is.throwArgumentError("access list expected to be [ address, storageKeys[] ]",`value[${e}]`,t),fs(t[0],t[1])):fs(t.address,t.storageKeys));const e=Object.keys(t).map(e=>{const r=t[e].reduce((t,e)=>(t[e]=!0,t),{});return fs(e,Object.keys(r).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}function ms(t){return ps(t).map(t=>[t.address,t.storageKeys])}function gs(t,e){if(null!=t.gasPrice){const e=V.from(t.gasPrice),r=V.from(t.maxFeePerGas||0);e.eq(r)||is.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:e,maxFeePerGas:r})}const r=[ds(t.chainId||0,"chainId"),ds(t.nonce||0,"nonce"),ds(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),ds(t.maxFeePerGas||0,"maxFeePerGas"),ds(t.gasLimit||0,"gasLimit"),null!=t.to?ve(t.to):"0x",ds(t.value||0,"value"),t.data||"0x",ms(t.accessList||[])];if(e){const t=U(e);r.push(ds(t.recoveryParam,"recoveryParam")),r.push(x(t.r)),r.push(x(t.s))}return F(["0x02",le(r)])}function ys(t,e){const r=[ds(t.chainId||0,"chainId"),ds(t.nonce||0,"nonce"),ds(t.gasPrice||0,"gasPrice"),ds(t.gasLimit||0,"gasLimit"),null!=t.to?ve(t.to):"0x",ds(t.value||0,"value"),t.data||"0x",ms(t.accessList||[])];if(e){const t=U(e);r.push(ds(t.recoveryParam,"recoveryParam")),r.push(x(t.r)),r.push(x(t.s))}return F(["0x01",le(r)])}function ws(t,e){if(null==t.type||0===t.type)return null!=t.accessList&&is.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),function(t,e){gt(t,cs);const r=[];ls.forEach(function(e){let n=t[e.name]||[];const i={};e.numeric&&(i.hexPad="left"),n=_(B(n,i)),e.length&&n.length!==e.length&&n.length>0&&is.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n),e.maxLength&&(n=x(n),n.length>e.maxLength&&is.throwArgumentError("invalid length for "+e.name,"transaction:"+e.name,n)),r.push(B(n))});let n=0;if(null!=t.chainId?(n=t.chainId,"number"!=typeof n&&is.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!k(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),0!==n&&(r.push(B(n)),r.push("0x"),r.push("0x")),!e)return le(r);const i=U(e);let s=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),s+=2*n+8,i.v>28&&i.v!==s&&is.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==s&&is.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push(B(s)),r.push(x(_(i.r))),r.push(x(_(i.s))),le(r)}(t,e);switch(t.type){case 1:return ys(t,e);case 2:return gs(t,e)}return is.throwError(`unsupported transaction type: ${t.type}`,v.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}function vs(t,e,r){try{const r=as(e[0]).toNumber();if(0!==r&&1!==r)throw new Error("bad recid");t.v=r}catch(t){is.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=L(e[1],32),t.s=L(e[2],32);try{const e=ne(r(t));t.from=us(e,{r:t.r,s:t.s,recoveryParam:t.v})}catch(t){}}function bs(t){const e=_(t);if(e[0]>127)return function(t){const e=ue(t);9!==e.length&&6!==e.length&&is.throwArgumentError("invalid raw transaction","rawTransaction",t);const r={nonce:as(e[0]).toNumber(),gasPrice:as(e[1]),gasLimit:as(e[2]),to:os(e[3]),value:as(e[4]),data:e[5],chainId:0};if(6===e.length)return r;try{r.v=V.from(e[6]).toNumber()}catch(t){return r}if(r.r=L(e[7],32),r.s=L(e[8],32),V.from(r.r).isZero()&&V.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let n=r.v-27;const i=e.slice(0,6);0!==r.chainId&&(i.push(B(r.chainId)),i.push("0x"),i.push("0x"),n-=2*r.chainId+8);const s=ne(le(i));try{r.from=us(s,{r:B(r.r),s:B(r.s),recoveryParam:n})}catch(t){}r.hash=ne(t)}return r.type=null,r}(e);switch(e[0]){case 1:return function(t){const e=ue(t.slice(1));8!==e.length&&11!==e.length&&is.throwArgumentError("invalid component count for transaction type: 1","payload",B(t));const r={type:1,chainId:as(e[0]).toNumber(),nonce:as(e[1]).toNumber(),gasPrice:as(e[2]),gasLimit:as(e[3]),to:os(e[4]),value:as(e[5]),data:e[6],accessList:ps(e[7])};return 8===e.length||(r.hash=ne(t),vs(r,e.slice(8),ys)),r}(e);case 2:return function(t){const e=ue(t.slice(1));9!==e.length&&12!==e.length&&is.throwArgumentError("invalid component count for transaction type: 2","payload",B(t));const r=as(e[2]),n=as(e[3]),i={type:2,chainId:as(e[0]).toNumber(),nonce:as(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:as(e[4]),to:os(e[5]),value:as(e[6]),data:e[7],accessList:ps(e[8])};return 9===e.length||(i.hash=ne(t),vs(i,e.slice(9),gs)),i}(e)}return is.throwError(`unsupported transaction type: ${e[0]}`,v.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}var Es=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const As=new v("contracts/5.8.0"),ks={chainId:!0,data:!0,from:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0,customData:!0,ccipReadEnabled:!0};function Ss(t,e){return Es(this,void 0,void 0,function*(){const r=yield e;"string"!=typeof r&&As.throwArgumentError("invalid address or ENS name","name",r);try{return ve(r)}catch(t){}t||As.throwError("a provider or signer is needed to resolve ENS names",v.errors.UNSUPPORTED_OPERATION,{operation:"resolveName"});const n=yield t.resolveName(r);return null==n&&As.throwArgumentError("resolver or addr is not configured for ENS name","name",r),n})}function Cs(t,e,r){return Es(this,void 0,void 0,function*(){return Array.isArray(r)?yield Promise.all(r.map((r,n)=>Cs(t,Array.isArray(e)?e[n]:e[r.name],r))):"address"===r.type?yield Ss(t,e):"tuple"===r.type?yield Cs(t,e,r.components):"array"===r.baseType?Array.isArray(e)?yield Promise.all(e.map(e=>Cs(t,e,r.arrayChildren))):Promise.reject(As.makeError("invalid value for array",v.errors.INVALID_ARGUMENT,{argument:"value",value:e})):e})}function _s(t,e,r){return Es(this,void 0,void 0,function*(){let n={};r.length===e.inputs.length+1&&"object"==typeof r[r.length-1]&&(n=yt(r.pop())),As.checkArgumentCount(r.length,e.inputs.length,"passed to contract"),t.signer?n.from?n.from=mt({override:Ss(t.signer,n.from),signer:t.signer.getAddress()}).then(t=>Es(this,void 0,void 0,function*(){return ve(t.signer)!==t.override&&As.throwError("Contract with a Signer cannot override from",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.from"}),t.override})):n.from=t.signer.getAddress():n.from&&(n.from=Ss(t.provider,n.from));const i=yield mt({args:Cs(t.signer||t.provider,r,e.inputs),address:t.resolvedAddress,overrides:mt(n)||{}}),s=t.interface.encodeFunctionData(e,i.args),o={data:s,to:i.address},a=i.overrides;if(null!=a.nonce&&(o.nonce=V.from(a.nonce).toNumber()),null!=a.gasLimit&&(o.gasLimit=V.from(a.gasLimit)),null!=a.gasPrice&&(o.gasPrice=V.from(a.gasPrice)),null!=a.maxFeePerGas&&(o.maxFeePerGas=V.from(a.maxFeePerGas)),null!=a.maxPriorityFeePerGas&&(o.maxPriorityFeePerGas=V.from(a.maxPriorityFeePerGas)),null!=a.from&&(o.from=a.from),null!=a.type&&(o.type=a.type),null!=a.accessList&&(o.accessList=ps(a.accessList)),null==o.gasLimit&&null!=e.gas){let t=21e3;const r=_(s);for(let e=0;e<r.length;e++)t+=4,r[e]&&(t+=64);o.gasLimit=V.from(e.gas).add(t)}if(a.value){const t=V.from(a.value);t.isZero()||e.payable||As.throwError("non-payable method cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:n.value}),o.value=t}a.customData&&(o.customData=yt(a.customData)),a.ccipReadEnabled&&(o.ccipReadEnabled=!!a.ccipReadEnabled),delete n.nonce,delete n.gasLimit,delete n.gasPrice,delete n.from,delete n.value,delete n.type,delete n.accessList,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.customData,delete n.ccipReadEnabled;const l=Object.keys(n).filter(t=>null!=n[t]);return l.length&&As.throwError(`cannot override ${l.map(t=>JSON.stringify(t)).join(",")}`,v.errors.UNSUPPORTED_OPERATION,{operation:"overrides",overrides:l}),o})}function Ns(t,e){const r=e.wait.bind(e);e.wait=e=>r(e).then(e=>(e.events=e.logs.map(r=>{let n=Et(r),i=null;try{i=t.interface.parseLog(r)}catch(t){}return i&&(n.args=i.args,n.decode=(e,r)=>t.interface.decodeEventLog(i.eventFragment,e,r),n.event=i.name,n.eventSignature=i.signature),n.removeListener=()=>t.provider,n.getBlock=()=>t.provider.getBlock(e.blockHash),n.getTransaction=()=>t.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>Promise.resolve(e),n}),e))}function xs(t,e,r){const n=t.signer||t.provider;return function(...i){return Es(this,void 0,void 0,function*(){let s;if(i.length===e.inputs.length+1&&"object"==typeof i[i.length-1]){const t=yt(i.pop());null!=t.blockTag&&(s=yield t.blockTag),delete t.blockTag,i.push(t)}null!=t.deployTransaction&&(yield t._deployed(s));const o=yield _s(t,e,i),a=yield n.call(o,s);try{let n=t.interface.decodeFunctionResult(e,a);return r&&1===e.outputs.length&&(n=n[0]),n}catch(e){throw e.code===v.errors.CALL_EXCEPTION&&(e.address=t.address,e.args=i,e.transaction=o),e}})}}function Ts(t,e,r){return e.constant?xs(t,e,r):function(t,e){return function(...r){return Es(this,void 0,void 0,function*(){t.signer||As.throwError("sending a transaction requires a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction"}),null!=t.deployTransaction&&(yield t._deployed());const n=yield _s(t,e,r),i=yield t.signer.sendTransaction(n);return Ns(t,i),i})}}(t,e)}function Is(t){return!t.address||null!=t.topics&&0!==t.topics.length?(t.address||"*")+"@"+(t.topics?t.topics.map(t=>Array.isArray(t)?t.join("|"):t).join(":"):""):"*"}class Ps{constructor(t,e){ft(this,"tag",t),ft(this,"filter",e),this._listeners=[]}addListener(t,e){this._listeners.push({listener:t,once:e})}removeListener(t){let e=!1;this._listeners=this._listeners.filter(r=>!(!e&&r.listener===t)||(e=!0,!1))}removeAllListeners(){this._listeners=[]}listeners(){return this._listeners.map(t=>t.listener)}listenerCount(){return this._listeners.length}run(t){const e=this.listenerCount();return this._listeners=this._listeners.filter(e=>{const r=t.slice();return setTimeout(()=>{e.listener.apply(this,r)},0),!e.once}),e}prepareEvent(t){}getEmit(t){return[t]}}class Bs extends Ps{constructor(){super("error",null)}}class Ms extends Ps{constructor(t,e,r,n){const i={address:t};let s=e.getEventTopic(r);n?(s!==n[0]&&As.throwArgumentError("topic mismatch","topics",n),i.topics=n.slice()):i.topics=[s],super(Is(i),i),ft(this,"address",t),ft(this,"interface",e),ft(this,"fragment",r)}prepareEvent(t){super.prepareEvent(t),t.event=this.fragment.name,t.eventSignature=this.fragment.format(),t.decode=(t,e)=>this.interface.decodeEventLog(this.fragment,t,e);try{t.args=this.interface.decodeEventLog(this.fragment,t.data,t.topics)}catch(e){t.args=null,t.decodeError=e}}getEmit(t){const e=Jt(t.args);if(e.length)throw e[0].error;const r=(t.args||[]).slice();return r.push(t),r}}class Rs extends Ps{constructor(t,e){super("*",{address:t}),ft(this,"address",t),ft(this,"interface",e)}prepareEvent(t){super.prepareEvent(t);try{const e=this.interface.parseLog(t);t.event=e.name,t.eventSignature=e.signature,t.decode=(t,r)=>this.interface.decodeEventLog(e.eventFragment,t,r),t.args=e.args}catch(t){}}}class Fs{constructor(t,e,r){ft(this,"interface",pt(new.target,"getInterface")(e)),null==r?(ft(this,"provider",null),ft(this,"signer",null)):xn.isSigner(r)?(ft(this,"provider",r.provider||null),ft(this,"signer",r)):kn.isProvider(r)?(ft(this,"provider",r),ft(this,"signer",null)):As.throwArgumentError("invalid signer or provider","signerOrProvider",r),ft(this,"callStatic",{}),ft(this,"estimateGas",{}),ft(this,"functions",{}),ft(this,"populateTransaction",{}),ft(this,"filters",{});{const t={};Object.keys(this.interface.events).forEach(e=>{const r=this.interface.events[e];ft(this.filters,e,(...t)=>({address:this.address,topics:this.interface.encodeFilterTopics(r,t)})),t[r.name]||(t[r.name]=[]),t[r.name].push(e)}),Object.keys(t).forEach(e=>{const r=t[e];1===r.length?ft(this.filters,e,this.filters[r[0]]):As.warn(`Duplicate definition of ${e} (${r.join(", ")})`)})}if(ft(this,"_runningEvents",{}),ft(this,"_wrappedEmits",{}),null==t&&As.throwArgumentError("invalid contract address or ENS name","addressOrName",t),ft(this,"address",t),this.provider)ft(this,"resolvedAddress",Ss(this.provider,t));else try{ft(this,"resolvedAddress",Promise.resolve(ve(t)))}catch(t){As.throwError("provider is required to use ENS name as contract address",v.errors.UNSUPPORTED_OPERATION,{operation:"new Contract"})}this.resolvedAddress.catch(t=>{});const n={},i={};Object.keys(this.interface.functions).forEach(t=>{const e=this.interface.functions[t];if(i[t])As.warn(`Duplicate ABI entry for ${JSON.stringify(t)}`);else{i[t]=!0;{const r=e.name;n[`%${r}`]||(n[`%${r}`]=[]),n[`%${r}`].push(t)}null==this[t]&&ft(this,t,Ts(this,e,!0)),null==this.functions[t]&&ft(this.functions,t,Ts(this,e,!1)),null==this.callStatic[t]&&ft(this.callStatic,t,xs(this,e,!0)),null==this.populateTransaction[t]&&ft(this.populateTransaction,t,function(t,e){return function(...r){return _s(t,e,r)}}(this,e)),null==this.estimateGas[t]&&ft(this.estimateGas,t,function(t,e){const r=t.signer||t.provider;return function(...n){return Es(this,void 0,void 0,function*(){r||As.throwError("estimate require a provider or signer",v.errors.UNSUPPORTED_OPERATION,{operation:"estimateGas"});const i=yield _s(t,e,n);return yield r.estimateGas(i)})}}(this,e))}}),Object.keys(n).forEach(t=>{const e=n[t];if(e.length>1)return;t=t.substring(1);const r=e[0];try{null==this[t]&&ft(this,t,this[r])}catch(t){}null==this.functions[t]&&ft(this.functions,t,this.functions[r]),null==this.callStatic[t]&&ft(this.callStatic,t,this.callStatic[r]),null==this.populateTransaction[t]&&ft(this.populateTransaction,t,this.populateTransaction[r]),null==this.estimateGas[t]&&ft(this.estimateGas,t,this.estimateGas[r])})}static getContractAddress(t){return be(t)}static getInterface(t){return vn.isInterface(t)?t:new vn(t)}deployed(){return this._deployed()}_deployed(t){return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(()=>this):this._deployedPromise=this.provider.getCode(this.address,t).then(t=>("0x"===t&&As.throwError("contract not deployed",v.errors.UNSUPPORTED_OPERATION,{contractAddress:this.address,operation:"getDeployed"}),this))),this._deployedPromise}fallback(t){this.signer||As.throwError("sending a transactions require a signer",v.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});const e=yt(t||{});return["from","to"].forEach(function(t){null!=e[t]&&As.throwError("cannot override "+t,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.to=this.resolvedAddress,this.deployed().then(()=>this.signer.sendTransaction(e))}connect(t){"string"==typeof t&&(t=new Tn(t,this.provider));const e=new this.constructor(this.address,this.interface,t);return this.deployTransaction&&ft(e,"deployTransaction",this.deployTransaction),e}attach(t){return new this.constructor(t,this.interface,this.signer||this.provider)}static isIndexed(t){return gn.isIndexed(t)}_normalizeRunningEvent(t){return this._runningEvents[t.tag]?this._runningEvents[t.tag]:t}_getRunningEvent(t){if("string"==typeof t){if("error"===t)return this._normalizeRunningEvent(new Bs);if("event"===t)return this._normalizeRunningEvent(new Ps("event",null));if("*"===t)return this._normalizeRunningEvent(new Rs(this.address,this.interface));const e=this.interface.getEvent(t);return this._normalizeRunningEvent(new Ms(this.address,this.interface,e))}if(t.topics&&t.topics.length>0){try{const e=t.topics[0];if("string"!=typeof e)throw new Error("invalid topic");const r=this.interface.getEvent(e);return this._normalizeRunningEvent(new Ms(this.address,this.interface,r,t.topics))}catch(t){}const e={address:this.address,topics:t.topics};return this._normalizeRunningEvent(new Ps(Is(e),e))}return this._normalizeRunningEvent(new Rs(this.address,this.interface))}_checkRunningEvents(t){if(0===t.listenerCount()){delete this._runningEvents[t.tag];const e=this._wrappedEmits[t.tag];e&&t.filter&&(this.provider.off(t.filter,e),delete this._wrappedEmits[t.tag])}}_wrapEvent(t,e,r){const n=Et(e);return n.removeListener=()=>{r&&(t.removeListener(r),this._checkRunningEvents(t))},n.getBlock=()=>this.provider.getBlock(e.blockHash),n.getTransaction=()=>this.provider.getTransaction(e.transactionHash),n.getTransactionReceipt=()=>this.provider.getTransactionReceipt(e.transactionHash),t.prepareEvent(n),n}_addEventListener(t,e,r){if(this.provider||As.throwError("events require a provider or a signer with a provider",v.errors.UNSUPPORTED_OPERATION,{operation:"once"}),t.addListener(e,r),this._runningEvents[t.tag]=t,!this._wrappedEmits[t.tag]){const r=r=>{let n=this._wrapEvent(t,r,e);if(null==n.decodeError)try{const e=t.getEmit(n);this.emit(t.filter,...e)}catch(t){n.decodeError=t.error}null!=t.filter&&this.emit("event",n),null!=n.decodeError&&this.emit("error",n.decodeError,n)};this._wrappedEmits[t.tag]=r,null!=t.filter&&this.provider.on(t.filter,r)}}queryFilter(t,e,r){const n=this._getRunningEvent(t),i=yt(n.filter);return"string"==typeof e&&I(e,32)?(null!=r&&As.throwArgumentError("cannot specify toBlock with blockhash","toBlock",r),i.blockHash=e):(i.fromBlock=null!=e?e:0,i.toBlock=null!=r?r:"latest"),this.provider.getLogs(i).then(t=>t.map(t=>this._wrapEvent(n,t,null)))}on(t,e){return this._addEventListener(this._getRunningEvent(t),e,!1),this}once(t,e){return this._addEventListener(this._getRunningEvent(t),e,!0),this}emit(t,...e){if(!this.provider)return!1;const r=this._getRunningEvent(t),n=r.run(e)>0;return this._checkRunningEvents(r),n}listenerCount(t){return this.provider?null==t?Object.keys(this._runningEvents).reduce((t,e)=>t+this._runningEvents[e].listenerCount(),0):this._getRunningEvent(t).listenerCount():0}listeners(t){if(!this.provider)return[];if(null==t){const t=[];for(let e in this._runningEvents)this._runningEvents[e].listeners().forEach(e=>{t.push(e)});return t}return this._getRunningEvent(t).listeners()}removeAllListeners(t){if(!this.provider)return this;if(null==t){for(const t in this._runningEvents){const e=this._runningEvents[t];e.removeAllListeners(),this._checkRunningEvents(e)}return this}const e=this._getRunningEvent(t);return e.removeAllListeners(),this._checkRunningEvents(e),this}off(t,e){if(!this.provider)return this;const r=this._getRunningEvent(t);return r.removeListener(e),this._checkRunningEvents(r),this}removeListener(t,e){return this.off(t,e)}}class Os extends Fs{}class Ds{constructor(t){ft(this,"alphabet",t),ft(this,"base",t.length),ft(this,"_alphabetMap",{}),ft(this,"_leader",t.charAt(0));for(let e=0;e<t.length;e++)this._alphabetMap[t.charAt(e)]=e}encode(t){let e=_(t);if(0===e.length)return"";let r=[0];for(let t=0;t<e.length;++t){let n=e[t];for(let t=0;t<r.length;++t)n+=r[t]<<8,r[t]=n%this.base,n=n/this.base|0;for(;n>0;)r.push(n%this.base),n=n/this.base|0}let n="";for(let t=0;0===e[t]&&t<e.length-1;++t)n+=this._leader;for(let t=r.length-1;t>=0;--t)n+=this.alphabet[r[t]];return n}decode(t){if("string"!=typeof t)throw new TypeError("Expected String");let e=[];if(0===t.length)return new Uint8Array(e);e.push(0);for(let r=0;r<t.length;r++){let n=this._alphabetMap[t[r]];if(void 0===n)throw new Error("Non-base"+this.base+" character");let i=n;for(let t=0;t<e.length;++t)i+=e[t]*this.base,e[t]=255&i,i>>=8;for(;i>0;)e.push(255&i),i>>=8}for(let r=0;t[r]===this._leader&&r<t.length-1;++r)e.push(0);return _(new Uint8Array(e.reverse()))}}new Ds("abcdefghijklmnopqrstuvwxyz234567");const Ls=new Ds("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");var Us;!function(t){t.sha256="sha256",t.sha512="sha512"}(Us||(Us={}));const zs=new v("sha2/5.8.0");function qs(t){return"0x"+mi.ripemd160().update(_(t)).digest("hex")}function js(t){return"0x"+mi.sha256().update(_(t)).digest("hex")}function Gs(t,e,r){return Us[t]||zs.throwError("unsupported algorithm "+t,v.errors.UNSUPPORTED_OPERATION,{operation:"hmac",algorithm:t}),"0x"+mi.hmac(mi[t],_(e)).update(_(r)).digest("hex")}function Hs(t,e,r,n,i){let s;t=_(t),e=_(e);let o=1;const a=new Uint8Array(n),l=new Uint8Array(e.length+4);let c,h;l.set(e);for(let u=1;u<=o;u++){l[e.length]=u>>24&255,l[e.length+1]=u>>16&255,l[e.length+2]=u>>8&255,l[e.length+3]=255&u;let d=_(Gs(i,t,l));s||(s=d.length,h=new Uint8Array(s),o=Math.ceil(n/s),c=n-(o-1)*s),h.set(d);for(let e=1;e<r;e++){d=_(Gs(i,t,d));for(let t=0;t<s;t++)h[t]^=d[t]}const f=(u-1)*s,p=u===o?c:s;a.set(_(h).slice(0,p),f)}return B(a)}const Ws=new v("wordlists/5.8.0");class Ks{constructor(t){Ws.checkAbstract(new.target,Ks),ft(this,"locale",t)}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}static check(t){const e=[];for(let r=0;r<2048;r++){const n=t.getWord(r);if(r!==t.getWordIndex(n))return"0x";e.push(n)}return wr(e.join("\n")+"\n")}static register(t,e){e||(e=t.locale)}}let Vs=null;function Js(t){if(null==Vs&&(Vs="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo".replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"!==Ks.check(t)))throw Vs=null,new Error("BIP39 Wordlist for en (English) FAILED")}const $s=new class extends Ks{constructor(){super("en")}getWord(t){return Js(this),Vs[t]}getWordIndex(t){return Js(this),Vs.indexOf(t)}};Ks.register($s);const Qs={en:$s},Ys=new v("hdnode/5.8.0"),Xs=V.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Zs=Qe("Bitcoin seed"),to=2147483648;function eo(t){return(1<<t)-1<<8-t}function ro(t){return(1<<t)-1}function no(t){return L(B(t),32)}function io(t){return Ls.encode(N([t,R(js(js(t)),0,4)]))}function so(t){if(null==t)return Qs.en;if("string"==typeof t){const e=Qs[t];return null==e&&Ys.throwArgumentError("unknown locale","wordlist",t),e}return t}const oo={},ao="m/44'/60'/0'/0/0";class lo{constructor(t,e,r,n,i,s,o,a){if(t!==oo)throw new Error("HDNode constructor cannot be called directly");if(e){const t=new es(e);ft(this,"privateKey",t.privateKey),ft(this,"publicKey",t.compressedPublicKey)}else ft(this,"privateKey",null),ft(this,"publicKey",B(r));ft(this,"parentFingerprint",n),ft(this,"fingerprint",R(qs(js(this.publicKey)),0,4)),ft(this,"address",hs(this.publicKey)),ft(this,"chainCode",i),ft(this,"index",s),ft(this,"depth",o),null==a?(ft(this,"mnemonic",null),ft(this,"path",null)):"string"==typeof a?(ft(this,"mnemonic",null),ft(this,"path",a)):(ft(this,"mnemonic",a),ft(this,"path",a.path))}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return io(N([null!=this.privateKey?"0x0488ADE4":"0x0488B21E",B(this.depth),this.parentFingerprint,L(B(this.index),4),this.chainCode,null!=this.privateKey?N(["0x00",this.privateKey]):this.publicKey]))}neuter(){return new lo(oo,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)}_derive(t){if(t>4294967295)throw new Error("invalid index - "+String(t));let e=this.path;e&&(e+="/"+(2147483647&t));const r=new Uint8Array(37);if(t&to){if(!this.privateKey)throw new Error("cannot derive child of neutered node");r.set(_(this.privateKey),1),e&&(e+="'")}else r.set(_(this.publicKey));for(let e=24;e>=0;e-=8)r[33+(e>>3)]=t>>24-e&255;const n=_(Gs(Us.sha512,this.chainCode,r)),i=n.slice(0,32),s=n.slice(32);let o=null,a=null;if(this.privateKey)o=no(V.from(i).add(this.privateKey).mod(Xs));else{a=new es(B(i))._addPoint(this.publicKey)}let l=e;const c=this.mnemonic;return c&&(l=Object.freeze({phrase:c.phrase,path:e,locale:c.locale||"en"})),new lo(oo,o,a,this.fingerprint,no(s),t,this.depth+1,l)}derivePath(t){const e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path - "+t);"m"===e[0]&&e.shift();let r=this;for(let t=0;t<e.length;t++){const n=e[t];if(n.match(/^[0-9]+'$/)){const t=parseInt(n.substring(0,n.length-1));if(t>=to)throw new Error("invalid path index - "+n);r=r._derive(to+t)}else{if(!n.match(/^[0-9]+$/))throw new Error("invalid path component - "+n);{const t=parseInt(n);if(t>=to)throw new Error("invalid path index - "+n);r=r._derive(t)}}}return r}static _fromSeed(t,e){const r=_(t);if(r.length<16||r.length>64)throw new Error("invalid seed");const n=_(Gs(Us.sha512,Zs,r));return new lo(oo,no(n.slice(0,32)),null,"0x00000000",no(n.slice(32)),0,0,e)}static fromMnemonic(t,e,r){return t=uo(ho(t,r=so(r)),r),lo._fromSeed(co(t,e),{phrase:t,path:"m",locale:r.locale})}static fromSeed(t){return lo._fromSeed(t,null)}static fromExtendedKey(t){const e=Ls.decode(t);82===e.length&&io(e.slice(0,78))===t||Ys.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");const r=e[4],n=B(e.slice(5,9)),i=parseInt(B(e.slice(9,13)).substring(2),16),s=B(e.slice(13,45)),o=e.slice(45,78);switch(B(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new lo(oo,null,B(o),n,s,i,r,null);case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new lo(oo,B(o.slice(1)),null,n,s,i,r,null)}return Ys.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")}}function co(t,e){e||(e="");const r=Qe("mnemonic"+e,We.NFKD);return Hs(Qe(t,We.NFKD),r,2048,64,"sha512")}function ho(t,e){e=so(e),Ys.checkNormalize();const r=e.split(t);if(r.length%3!=0)throw new Error("invalid mnemonic");const n=_(new Uint8Array(Math.ceil(11*r.length/8)));let i=0;for(let t=0;t<r.length;t++){let s=e.getWordIndex(r[t].normalize("NFKD"));if(-1===s)throw new Error("invalid mnemonic");for(let t=0;t<11;t++)s&1<<10-t&&(n[i>>3]|=1<<7-i%8),i++}const s=32*r.length/3,o=eo(r.length/3);if((_(js(n.slice(0,s/8)))[0]&o)!==(n[n.length-1]&o))throw new Error("invalid checksum");return B(n.slice(0,s/8))}function uo(t,e){if(e=so(e),(t=_(t)).length%4!=0||t.length<16||t.length>32)throw new Error("invalid entropy");const r=[0];let n=11;for(let e=0;e<t.length;e++)n>8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&ro(8-n)),n+=3);const i=t.length/4,s=_(js(t))[0]&eo(i);return r[r.length-1]<<=i,r[r.length-1]|=s>>8-i,e.join(r.map(t=>e.getWord(t)))}const fo=new v("random/5.8.0");const po=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let mo=po.crypto||po.msCrypto;function go(t){(t<=0||t>1024||t%1||t!=t)&&fo.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return mo.getRandomValues(e),_(e)}function yo(t){for(let e=(t=t.slice()).length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}mo&&mo.getRandomValues||(fo.warn("WARNING: Missing strong random number source"),mo={getRandomValues:function(t){return fo.throwError("no secure random source avaialble",v.errors.UNSUPPORTED_OPERATION,{operation:"crypto.getRandomValues"})}});var wo,vo={exports:{}};var bo=(wo||(wo=1,function(t){!function(){function e(t){return parseInt(t)===t}function r(t){if(!e(t.length))return!1;for(var r=0;r<t.length;r++)if(!e(t[r])||t[r]<0||t[r]>255)return!1;return!0}function n(t,n){if(t.buffer&&ArrayBuffer.isView(t)&&"Uint8Array"===t.name)return n&&(t=t.slice?t.slice():Array.prototype.slice.call(t)),t;if(Array.isArray(t)){if(!r(t))throw new Error("Array contains invalid value: "+t);return new Uint8Array(t)}if(e(t.length)&&r(t))return new Uint8Array(t);throw new Error("unsupported array-like object")}function i(t){return new Uint8Array(t)}function s(t,e,r,n,i){null==n&&null==i||(t=t.slice?t.slice(n,i):Array.prototype.slice.call(t,n,i)),e.set(t,r)}var o,a={toBytes:function(t){var e=[],r=0;for(t=encodeURI(t);r<t.length;){var i=t.charCodeAt(r++);37===i?(e.push(parseInt(t.substr(r,2),16)),r+=2):e.push(i)}return n(e)},fromBytes:function(t){for(var e=[],r=0;r<t.length;){var n=t[r];n<128?(e.push(String.fromCharCode(n)),r++):n>191&&n<224?(e.push(String.fromCharCode((31&n)<<6|63&t[r+1])),r+=2):(e.push(String.fromCharCode((15&n)<<12|(63&t[r+1])<<6|63&t[r+2])),r+=3)}return e.join("")}},l=(o="0123456789abcdef",{toBytes:function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(parseInt(t.substr(r,2),16));return e},fromBytes:function(t){for(var e=[],r=0;r<t.length;r++){var n=t[r];e.push(o[(240&n)>>4]+o[15&n])}return e.join("")}}),c={16:10,24:12,32:14},h=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],u=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],d=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],f=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],m=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],y=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],w=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],v=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],b=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],E=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],A=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],k=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],S=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(t){for(var e=[],r=0;r<t.length;r+=4)e.push(t[r]<<24|t[r+1]<<16|t[r+2]<<8|t[r+3]);return e}var _=function(t){if(!(this instanceof _))throw Error("AES must be instanitated with `new`");Object.defineProperty(this,"key",{value:n(t,!0)}),this._prepare()};_.prototype._prepare=function(){var t=c[this.key.length];if(null==t)throw new Error("invalid key size (must be 16, 24 or 32 bytes)");this._Ke=[],this._Kd=[];for(var e=0;e<=t;e++)this._Ke.push([0,0,0,0]),this._Kd.push([0,0,0,0]);var r,n=4*(t+1),i=this.key.length/4,s=C(this.key);for(e=0;e<i;e++)r=e>>2,this._Ke[r][e%4]=s[e],this._Kd[t-r][e%4]=s[e];for(var o,a=0,l=i;l<n;){if(o=s[i-1],s[0]^=u[o>>16&255]<<24^u[o>>8&255]<<16^u[255&o]<<8^u[o>>24&255]^h[a]<<24,a+=1,8!=i)for(e=1;e<i;e++)s[e]^=s[e-1];else{for(e=1;e<i/2;e++)s[e]^=s[e-1];for(o=s[i/2-1],s[i/2]^=u[255&o]^u[o>>8&255]<<8^u[o>>16&255]<<16^u[o>>24&255]<<24,e=i/2+1;e<i;e++)s[e]^=s[e-1]}for(e=0;e<i&&l<n;)d=l>>2,f=l%4,this._Ke[d][f]=s[e],this._Kd[t-d][f]=s[e++],l++}for(var d=1;d<t;d++)for(var f=0;f<4;f++)o=this._Kd[d][f],this._Kd[d][f]=E[o>>24&255]^A[o>>16&255]^k[o>>8&255]^S[255&o]},_.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Ke[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=f[n[s]>>24&255]^p[n[(s+1)%4]>>16&255]^m[n[(s+2)%4]>>8&255]^g[255&n[(s+3)%4]]^this._Ke[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Ke[e][s],l[4*s]=255&(u[n[s]>>24&255]^a>>24),l[4*s+1]=255&(u[n[(s+1)%4]>>16&255]^a>>16),l[4*s+2]=255&(u[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(u[255&n[(s+3)%4]]^a);return l},_.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=C(t),s=0;s<4;s++)n[s]^=this._Kd[0][s];for(var o=1;o<e;o++){for(s=0;s<4;s++)r[s]=y[n[s]>>24&255]^w[n[(s+3)%4]>>16&255]^v[n[(s+2)%4]>>8&255]^b[255&n[(s+1)%4]]^this._Kd[o][s];n=r.slice()}var a,l=i(16);for(s=0;s<4;s++)a=this._Kd[e][s],l[4*s]=255&(d[n[s]>>24&255]^a>>24),l[4*s+1]=255&(d[n[(s+3)%4]>>16&255]^a>>16),l[4*s+2]=255&(d[n[(s+2)%4]>>8&255]^a>>8),l[4*s+3]=255&(d[255&n[(s+1)%4]]^a);return l};var N=function(t){if(!(this instanceof N))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new _(t)};N.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.encrypt(r),e,o);return e},N.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16)s(t,r,0,o,o+16),s(r=this._aes.decrypt(r),e,o);return e};var x=function(t,e){if(!(this instanceof x))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Block Chaining",this.name="cbc",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastCipherblock=n(e,!0),this._aes=new _(t)};x.prototype.encrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16);for(var a=0;a<16;a++)r[a]^=this._lastCipherblock[a];this._lastCipherblock=this._aes.encrypt(r),s(this._lastCipherblock,e,o)}return e},x.prototype.decrypt=function(t){if((t=n(t)).length%16!=0)throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");for(var e=i(t.length),r=i(16),o=0;o<t.length;o+=16){s(t,r,0,o,o+16),r=this._aes.decrypt(r);for(var a=0;a<16;a++)e[o+a]=r[a]^this._lastCipherblock[a];s(t,this._lastCipherblock,0,o,o+16)}return e};var T=function(t,e,r){if(!(this instanceof T))throw Error("AES must be instanitated with `new`");if(this.description="Cipher Feedback",this.name="cfb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 size)")}else e=i(16);r||(r=1),this.segmentSize=r,this._shiftRegister=n(e,!0),this._aes=new _(t)};T.prototype.encrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid plaintext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(r,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r},T.prototype.decrypt=function(t){if(t.length%this.segmentSize!=0)throw new Error("invalid ciphertext size (must be segmentSize bytes)");for(var e,r=n(t,!0),i=0;i<r.length;i+=this.segmentSize){e=this._aes.encrypt(this._shiftRegister);for(var o=0;o<this.segmentSize;o++)r[i+o]^=e[o];s(this._shiftRegister,this._shiftRegister,0,this.segmentSize),s(t,this._shiftRegister,16-this.segmentSize,i,i+this.segmentSize)}return r};var I=function(t,e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");if(this.description="Output Feedback",this.name="ofb",e){if(16!=e.length)throw new Error("invalid initialation vector size (must be 16 bytes)")}else e=i(16);this._lastPrecipher=n(e,!0),this._lastPrecipherIndex=16,this._aes=new _(t)};I.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._lastPrecipherIndex&&(this._lastPrecipher=this._aes.encrypt(this._lastPrecipher),this._lastPrecipherIndex=0),e[r]^=this._lastPrecipher[this._lastPrecipherIndex++];return e},I.prototype.decrypt=I.prototype.encrypt;var P=function(t){if(!(this instanceof P))throw Error("Counter must be instanitated with `new`");0===t||t||(t=1),"number"==typeof t?(this._counter=i(16),this.setValue(t)):this.setBytes(t)};P.prototype.setValue=function(t){if("number"!=typeof t||parseInt(t)!=t)throw new Error("invalid counter value (must be an integer)");for(var e=15;e>=0;--e)this._counter[e]=t%256,t>>=8},P.prototype.setBytes=function(t){if(16!=(t=n(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},P.prototype.increment=function(){for(var t=15;t>=0;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var B=function(t,e){if(!(this instanceof B))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof P||(e=new P(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new _(t)};B.prototype.encrypt=function(t){for(var e=n(t,!0),r=0;r<e.length;r++)16===this._remainingCounterIndex&&(this._remainingCounter=this._aes.encrypt(this._counter._counter),this._remainingCounterIndex=0,this._counter.increment()),e[r]^=this._remainingCounter[this._remainingCounterIndex++];return e},B.prototype.decrypt=B.prototype.encrypt;var M={AES:_,Counter:P,ModeOfOperation:{ecb:N,cbc:x,cfb:T,ofb:I,ctr:B},utils:{hex:l,utf8:a},padding:{pkcs7:{pad:function(t){var e=16-(t=n(t,!0)).length%16,r=i(t.length+e);s(t,r);for(var o=t.length;o<r.length;o++)r[o]=e;return r},strip:function(t){if((t=n(t,!0)).length<16)throw new Error("PKCS#7 invalid length");var e=t[t.length-1];if(e>16)throw new Error("PKCS#7 padding byte out of range");for(var r=t.length-e,o=0;o<e;o++)if(t[r+o]!==e)throw new Error("PKCS#7 invalid padding byte");var a=i(r);return s(t,a,0,0,r),a}}},_arrayTest:{coerceArray:n,createArray:i,copyArray:s}};t.exports=M}()}(vo)),vo.exports),Eo=s(bo);const Ao="json-wallets/5.8.0";function ko(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),_(t)}function So(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function Co(t){return"string"==typeof t?Qe(t,We.NFKC):_(t)}function _o(t,e){let r=t;const n=e.toLowerCase().split("/");for(let t=0;t<n.length;t++){let e=null;for(const i in r)if(i.toLowerCase()===n[t]){e=r[i];break}if(null===e)return null;r=e}return r}function No(t){const e=_(t);e[6]=15&e[6]|64,e[8]=63&e[8]|128;const r=B(e);return[r.substring(2,10),r.substring(10,14),r.substring(14,18),r.substring(18,22),r.substring(22,34)].join("-")}const xo=new v(Ao);class To extends At{isCrowdsaleAccount(t){return!(!t||!t._isCrowdsaleAccount)}}function Io(t,e){const r=JSON.parse(t);e=Co(e);const n=ve(_o(r,"ethaddr")),i=ko(_o(r,"encseed"));i&&i.length%16==0||xo.throwArgumentError("invalid encseed","json",t);const s=_(Hs(e,e,2e3,32,"sha256")).slice(0,16),o=i.slice(0,16),a=i.slice(16),l=new Eo.ModeOfOperation.cbc(s,o),c=Eo.padding.pkcs7.strip(_(l.decrypt(a)));let h="";for(let t=0;t<c.length;t++)h+=String.fromCharCode(c[t]);const u=ne(Qe(h));return new To({_isCrowdsaleAccount:!0,address:n,privateKey:u})}function Po(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return e.encseed&&e.ethaddr}function Bo(t){let e=null;try{e=JSON.parse(t)}catch(t){return!1}return!(!e.version||parseInt(e.version)!==e.version||3!==parseInt(e.version))}var Mo,Ro={exports:{}};var Fo=(Mo||(Mo=1,function(t){!function(){const e=2147483647;function r(t){const e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);let r=1779033703,n=3144134277,i=1013904242,s=2773480762,o=1359893119,a=2600822924,l=528734635,c=1541459225;const h=new Uint32Array(64);function u(t){let u=0,d=t.length;for(;d>=64;){let f,p,m,g,y,w=r,v=n,b=i,E=s,A=o,k=a,S=l,C=c;for(p=0;p<16;p++)m=u+4*p,h[p]=(255&t[m])<<24|(255&t[m+1])<<16|(255&t[m+2])<<8|255&t[m+3];for(p=16;p<64;p++)f=h[p-2],g=(f>>>17|f<<15)^(f>>>19|f<<13)^f>>>10,f=h[p-15],y=(f>>>7|f<<25)^(f>>>18|f<<14)^f>>>3,h[p]=(g+h[p-7]|0)+(y+h[p-16]|0)|0;for(p=0;p<64;p++)g=(((A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))+(A&k^~A&S)|0)+(C+(e[p]+h[p]|0)|0)|0,y=((w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10))+(w&v^w&b^v&b)|0,C=S,S=k,k=A,A=E+g|0,E=b,b=v,v=w,w=g+y|0;r=r+w|0,n=n+v|0,i=i+b|0,s=s+E|0,o=o+A|0,a=a+k|0,l=l+S|0,c=c+C|0,u+=64,d-=64}}u(t);let d,f=t.length%64,p=t.length/536870912|0,m=t.length<<3,g=f<56?56:120,y=t.slice(t.length-f,t.length);for(y.push(128),d=f+1;d<g;d++)y.push(0);return y.push(p>>>24&255),y.push(p>>>16&255),y.push(p>>>8&255),y.push(p>>>0&255),y.push(m>>>24&255),y.push(m>>>16&255),y.push(m>>>8&255),y.push(m>>>0&255),u(y),[r>>>24&255,r>>>16&255,r>>>8&255,r>>>0&255,n>>>24&255,n>>>16&255,n>>>8&255,n>>>0&255,i>>>24&255,i>>>16&255,i>>>8&255,i>>>0&255,s>>>24&255,s>>>16&255,s>>>8&255,s>>>0&255,o>>>24&255,o>>>16&255,o>>>8&255,o>>>0&255,a>>>24&255,a>>>16&255,a>>>8&255,a>>>0&255,l>>>24&255,l>>>16&255,l>>>8&255,l>>>0&255,c>>>24&255,c>>>16&255,c>>>8&255,c>>>0&255]}function n(t,e,n){t=t.length<=64?t:r(t);const i=64+e.length+4,s=new Array(i),o=new Array(64);let a,l=[];for(a=0;a<64;a++)s[a]=54;for(a=0;a<t.length;a++)s[a]^=t[a];for(a=0;a<e.length;a++)s[64+a]=e[a];for(a=i-4;a<i;a++)s[a]=0;for(a=0;a<64;a++)o[a]=92;for(a=0;a<t.length;a++)o[a]^=t[a];function c(){for(let t=i-1;t>=i-4;t--){if(s[t]++,s[t]<=255)return;s[t]=0}}for(;n>=32;)c(),l=l.concat(r(o.concat(r(s)))),n-=32;return n>0&&(c(),l=l.concat(r(o.concat(r(s))).slice(0,n))),l}function i(t,e,r,n,i){let s;for(l(t,16*(2*r-1),i,0,16),s=0;s<2*r;s++)a(t,16*s,i,16),o(i,n),l(i,0,t,e+16*s,16);for(s=0;s<r;s++)l(t,e+2*s*16,t,16*s,16);for(s=0;s<r;s++)l(t,e+16*(2*s+1),t,16*(s+r),16)}function s(t,e){return t<<e|t>>>32-e}function o(t,e){l(t,0,e,0,16);for(let t=8;t>0;t-=2)e[4]^=s(e[0]+e[12],7),e[8]^=s(e[4]+e[0],9),e[12]^=s(e[8]+e[4],13),e[0]^=s(e[12]+e[8],18),e[9]^=s(e[5]+e[1],7),e[13]^=s(e[9]+e[5],9),e[1]^=s(e[13]+e[9],13),e[5]^=s(e[1]+e[13],18),e[14]^=s(e[10]+e[6],7),e[2]^=s(e[14]+e[10],9),e[6]^=s(e[2]+e[14],13),e[10]^=s(e[6]+e[2],18),e[3]^=s(e[15]+e[11],7),e[7]^=s(e[3]+e[15],9),e[11]^=s(e[7]+e[3],13),e[15]^=s(e[11]+e[7],18),e[1]^=s(e[0]+e[3],7),e[2]^=s(e[1]+e[0],9),e[3]^=s(e[2]+e[1],13),e[0]^=s(e[3]+e[2],18),e[6]^=s(e[5]+e[4],7),e[7]^=s(e[6]+e[5],9),e[4]^=s(e[7]+e[6],13),e[5]^=s(e[4]+e[7],18),e[11]^=s(e[10]+e[9],7),e[8]^=s(e[11]+e[10],9),e[9]^=s(e[8]+e[11],13),e[10]^=s(e[9]+e[8],18),e[12]^=s(e[15]+e[14],7),e[13]^=s(e[12]+e[15],9),e[14]^=s(e[13]+e[12],13),e[15]^=s(e[14]+e[13],18);for(let r=0;r<16;++r)t[r]+=e[r]}function a(t,e,r,n){for(let i=0;i<n;i++)r[i]^=t[e+i]}function l(t,e,r,n,i){for(;i--;)r[n++]=t[e++]}function c(t){if(!t||"number"!=typeof t.length)return!1;for(let e=0;e<t.length;e++){const r=t[e];if("number"!=typeof r||r%1||r<0||r>=256)return!1}return!0}function h(t,e){if("number"!=typeof t||t%1)throw new Error("invalid "+e);return t}function u(t,r,s,o,u,d,f){if(s=h(s,"N"),o=h(o,"r"),u=h(u,"p"),d=h(d,"dkLen"),0===s||s&s-1)throw new Error("N must be power of 2");if(s>e/128/o)throw new Error("N too large");if(o>e/128/u)throw new Error("r too large");if(!c(t))throw new Error("password must be an array or buffer");if(t=Array.prototype.slice.call(t),!c(r))throw new Error("salt must be an array or buffer");r=Array.prototype.slice.call(r);let p=n(t,r,128*u*o);const m=new Uint32Array(32*u*o);for(let t=0;t<m.length;t++){const e=4*t;m[t]=(255&p[e+3])<<24|(255&p[e+2])<<16|(255&p[e+1])<<8|255&p[e+0]}const g=new Uint32Array(64*o),y=new Uint32Array(32*o*s),w=32*o,v=new Uint32Array(16),b=new Uint32Array(16),E=u*s*2;let A,k,S=0,C=null,_=!1,N=0,x=0;const T=f?parseInt(1e3/o):4294967295,I="undefined"!=typeof setImmediate?setImmediate:setTimeout,P=function(){if(_)return f(new Error("cancelled"),S/E);let e;switch(N){case 0:k=32*x*o,l(m,k,g,0,w),N=1,A=0;case 1:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++)l(g,0,y,(A+t)*w,w),i(g,w,o,v,b);if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<s)break;A=0,N=2;case 2:e=s-A,e>T&&(e=T);for(let t=0;t<e;t++){const t=g[16*(2*o-1)]&s-1;a(y,t*w,g,w),i(g,w,o,v,b)}if(A+=e,S+=e,f){const t=parseInt(1e3*S/E);if(t!==C){if(_=f(null,S/E),_)break;C=t}}if(A<s)break;if(l(g,0,m,k,w),x++,x<u){N=0;break}p=[];for(let t=0;t<m.length;t++)p.push(255&m[t]),p.push(m[t]>>8&255),p.push(m[t]>>16&255),p.push(m[t]>>24&255);const r=n(t,p,d);return f&&f(null,1,r),r}f&&I(P)};if(!f)for(;;){const t=P();if(null!=t)return t}P()}const d={scrypt:function(t,e,r,n,i,s,o){return new Promise(function(a,l){let c=0;o&&o(0),u(t,e,r,n,i,s,function(t,e,r){if(t)l(t);else if(r)o&&1!==c&&o(1),a(new Uint8Array(r));else if(o&&e!==c)return c=e,o(e)})})},syncScrypt:function(t,e,r,n,i,s){return new Uint8Array(u(t,e,r,n,i,s))}};t.exports=d}()}(Ro)),Ro.exports),Oo=s(Fo),Do=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Lo=new v(Ao);function Uo(t){return null!=t&&t.mnemonic&&t.mnemonic.phrase}class zo extends At{isKeystoreAccount(t){return!(!t||!t._isKeystoreAccount)}}function qo(t,e){const r=ko(_o(t,"crypto/ciphertext"));if(B(ne(N([e.slice(16,32),r]))).substring(2)!==_o(t,"crypto/mac").toLowerCase())throw new Error("invalid password");const n=function(t,e,r){if("aes-128-ctr"===_o(t,"crypto/cipher")){const n=ko(_o(t,"crypto/cipherparams/iv")),i=new Eo.Counter(n);return _(new Eo.ModeOfOperation.ctr(e,i).decrypt(r))}return null}(t,e.slice(0,16),r);n||Lo.throwError("unsupported cipher",v.errors.UNSUPPORTED_OPERATION,{operation:"decrypt"});const i=e.slice(32,64),s=hs(n);if(t.address){let e=t.address.toLowerCase();if("0x"!==e.substring(0,2)&&(e="0x"+e),ve(e)!==s)throw new Error("address mismatch")}const o={_isKeystoreAccount:!0,address:s,privateKey:B(n)};if("0.1"===_o(t,"x-ethers/version")){const e=ko(_o(t,"x-ethers/mnemonicCiphertext")),r=ko(_o(t,"x-ethers/mnemonicCounter")),n=new Eo.Counter(r),s=new Eo.ModeOfOperation.ctr(i,n),a=_o(t,"x-ethers/path")||ao,l=_o(t,"x-ethers/locale")||"en",c=_(s.decrypt(e));try{const t=uo(c,l),e=lo.fromMnemonic(t,null,l).derivePath(a);if(e.privateKey!=o.privateKey)throw new Error("mnemonic mismatch");o.mnemonic=e.mnemonic}catch(t){if(t.code!==v.errors.INVALID_ARGUMENT||"wordlist"!==t.argument)throw t}}return new zo(o)}function jo(t,e,r,n,i){return _(Hs(t,e,r,n,i))}function Go(t,e,r,n,i){return Promise.resolve(jo(t,e,r,n,i))}function Ho(t,e,r,n,i){const s=Co(e),o=_o(t,"crypto/kdf");if(o&&"string"==typeof o){const e=function(t,e){return Lo.throwArgumentError("invalid key-derivation function parameters",t,e)};if("scrypt"===o.toLowerCase()){const r=ko(_o(t,"crypto/kdfparams/salt")),a=parseInt(_o(t,"crypto/kdfparams/n")),l=parseInt(_o(t,"crypto/kdfparams/r")),c=parseInt(_o(t,"crypto/kdfparams/p"));a&&l&&c||e("kdf",o),a&a-1&&e("N",a);const h=parseInt(_o(t,"crypto/kdfparams/dklen"));return 32!==h&&e("dklen",h),n(s,r,a,l,c,64,i)}if("pbkdf2"===o.toLowerCase()){const n=ko(_o(t,"crypto/kdfparams/salt"));let i=null;const o=_o(t,"crypto/kdfparams/prf");"hmac-sha256"===o?i="sha256":"hmac-sha512"===o?i="sha512":e("prf",o);const a=parseInt(_o(t,"crypto/kdfparams/c")),l=parseInt(_o(t,"crypto/kdfparams/dklen"));return 32!==l&&e("dklen",l),r(s,n,a,l,i)}}return Lo.throwArgumentError("unsupported key-derivation function","kdf",o)}function Wo(t,e,r){if(Po(t)){r&&r(0);const n=Io(t,e);return r&&r(1),Promise.resolve(n)}return Bo(t)?function(t,e,r){return Do(this,void 0,void 0,function*(){const n=JSON.parse(t);return qo(n,yield Ho(n,e,Go,Oo.scrypt,r))})}(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}function Ko(t,e){if(Po(t))return Io(t,e);if(Bo(t))return function(t,e){const r=JSON.parse(t);return qo(r,Ho(r,e,jo,Oo.syncScrypt))}(t,e);throw new Error("invalid JSON wallet")}var Vo=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Jo=new v("wallet/5.8.0");class $o extends xn{constructor(t,e){if(super(),null!=(r=t)&&I(r.privateKey,32)&&null!=r.address){const e=new es(t.privateKey);if(ft(this,"_signingKey",()=>e),ft(this,"address",hs(this.publicKey)),this.address!==ve(t.address)&&Jo.throwArgumentError("privateKey/address mismatch","privateKey","[REDACTED]"),function(t){const e=t.mnemonic;return e&&e.phrase}(t)){const e=t.mnemonic;ft(this,"_mnemonic",()=>({phrase:e.phrase,path:e.path||ao,locale:e.locale||"en"}));const r=this.mnemonic;hs(lo.fromMnemonic(r.phrase,null,r.locale).derivePath(r.path).privateKey)!==this.address&&Jo.throwArgumentError("mnemonic/address mismatch","privateKey","[REDACTED]")}else ft(this,"_mnemonic",()=>null)}else{if(es.isSigningKey(t))"secp256k1"!==t.curve&&Jo.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),ft(this,"_signingKey",()=>t);else{"string"==typeof t&&t.match(/^[0-9a-f]*$/i)&&64===t.length&&(t="0x"+t);const e=new es(t);ft(this,"_signingKey",()=>e)}ft(this,"_mnemonic",()=>null),ft(this,"address",hs(this.publicKey))}var r;e&&!kn.isProvider(e)&&Jo.throwArgumentError("invalid provider","provider",e),ft(this,"provider",e||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(t){return new $o(this,t)}signTransaction(t){return mt(t).then(e=>{null!=e.from&&(ve(e.from)!==this.address&&Jo.throwArgumentError("transaction from address mismatch","transaction.from",t.from),delete e.from);const r=this._signingKey().signDigest(ne(ws(e)));return ws(e,r)})}signMessage(t){return Vo(this,void 0,void 0,function*(){return z(this._signingKey().signDigest(Jr(t)))})}_signTypedData(t,e,r){return Vo(this,void 0,void 0,function*(){const n=yield un.resolveNames(t,e,r,t=>(null==this.provider&&Jo.throwError("cannot resolve ENS names without a provider",v.errors.UNSUPPORTED_OPERATION,{operation:"resolveName",value:t}),this.provider.resolveName(t)));return z(this._signingKey().signDigest(un.hash(n.domain,e,n.value)))})}encrypt(t,e,r){if("function"!=typeof e||r||(r=e,e={}),r&&"function"!=typeof r)throw new Error("invalid callback");return e||(e={}),function(t,e,r,n){try{if(ve(t.address)!==hs(t.privateKey))throw new Error("address/privateKey mismatch");if(Uo(t)){const e=t.mnemonic;if(lo.fromMnemonic(e.phrase,null,e.locale).derivePath(e.path||ao).privateKey!=t.privateKey)throw new Error("mnemonic mismatch")}}catch(t){return Promise.reject(t)}"function"!=typeof r||n||(n=r,r={}),r||(r={});const i=_(t.privateKey),s=Co(e);let o=null,a=null,l=null;if(Uo(t)){const e=t.mnemonic;o=_(ho(e.phrase,e.locale||"en")),a=e.path||ao,l=e.locale||"en"}let c=r.client;c||(c="ethers.js");let h=null;h=r.salt?_(r.salt):go(32);let u=null;if(r.iv){if(u=_(r.iv),16!==u.length)throw new Error("invalid iv")}else u=go(16);let d=null;if(r.uuid){if(d=_(r.uuid),16!==d.length)throw new Error("invalid uuid")}else d=go(16);let f=1<<17,p=8,m=1;return r.scrypt&&(r.scrypt.N&&(f=r.scrypt.N),r.scrypt.r&&(p=r.scrypt.r),r.scrypt.p&&(m=r.scrypt.p)),Oo.scrypt(s,h,f,p,m,64,n).then(e=>{const r=(e=_(e)).slice(0,16),n=e.slice(16,32),s=e.slice(32,64),g=new Eo.Counter(u),y=_(new Eo.ModeOfOperation.ctr(r,g).encrypt(i)),w=ne(N([n,y])),v={address:t.address.substring(2).toLowerCase(),id:No(d),version:3,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:B(u).substring(2)},ciphertext:B(y).substring(2),kdf:"scrypt",kdfparams:{salt:B(h).substring(2),n:f,dklen:32,p:m,r:p},mac:w.substring(2)}};if(o){const t=go(16),e=new Eo.Counter(t),r=_(new Eo.ModeOfOperation.ctr(s,e).encrypt(o)),n=new Date,i=n.getUTCFullYear()+"-"+So(n.getUTCMonth()+1,2)+"-"+So(n.getUTCDate(),2)+"T"+So(n.getUTCHours(),2)+"-"+So(n.getUTCMinutes(),2)+"-"+So(n.getUTCSeconds(),2)+".0Z";v["x-ethers"]={client:c,gethFilename:"UTC--"+i+"--"+v.address,mnemonicCounter:B(t).substring(2),mnemonicCiphertext:B(r).substring(2),path:a,locale:l,version:"0.1"}}return JSON.stringify(v)})}(this,t,e,r)}static createRandom(t){let e=go(16);t||(t={}),t.extraEntropy&&(e=_(R(ne(N([e,t.extraEntropy])),0,16)));const r=uo(e,t.locale);return $o.fromMnemonic(r,t.path,t.locale)}static fromEncryptedJson(t,e,r){return Wo(t,e,r).then(t=>new $o(t))}static fromEncryptedJsonSync(t,e){return new $o(Ko(t,e))}static fromMnemonic(t,e,r){return e||(e=ao),new $o(lo.fromMnemonic(t,null,r).derivePath(e))}}const Qo=new v("networks/5.8.0");function Yo(t){const e=function(e,r){null==r&&(r={});const n=[];if(e.InfuraProvider&&"-"!==r.infura)try{n.push(new e.InfuraProvider(t,r.infura))}catch(t){}if(e.EtherscanProvider&&"-"!==r.etherscan)try{n.push(new e.EtherscanProvider(t,r.etherscan))}catch(t){}if(e.AlchemyProvider&&"-"!==r.alchemy)try{n.push(new e.AlchemyProvider(t,r.alchemy))}catch(t){}if(e.PocketProvider&&"-"!==r.pocket){const i=["goerli","ropsten","rinkeby","sepolia"];try{const s=new e.PocketProvider(t,r.pocket);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}}if(e.CloudflareProvider&&"-"!==r.cloudflare)try{n.push(new e.CloudflareProvider(t))}catch(t){}if(e.AnkrProvider&&"-"!==r.ankr)try{const i=["ropsten"],s=new e.AnkrProvider(t,r.ankr);s.network&&-1===i.indexOf(s.network.name)&&n.push(s)}catch(t){}if(e.QuickNodeProvider&&"-"!==r.quicknode)try{n.push(new e.QuickNodeProvider(t,r.quicknode))}catch(t){}if(0===n.length)return null;if(e.FallbackProvider){let i=1;return null!=r.quorum?i=r.quorum:"homestead"===t&&(i=2),new e.FallbackProvider(n,i)}return n[0]};return e.renetwork=function(t){return Yo(t)},e}function Xo(t,e){const r=function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(t,e):null};return r.renetwork=function(e){return Xo(t,e)},r}const Zo={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:Yo("homestead")},ta={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:Yo("ropsten")},ea={chainId:63,name:"classicMordor",_defaultProvider:Xo("https://www.ethercluster.com/mordor","classicMordor")},ra={unspecified:{chainId:0,name:"unspecified"},homestead:Zo,mainnet:Zo,morden:{chainId:2,name:"morden"},ropsten:ta,testnet:ta,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:Yo("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:Yo("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:Yo("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"sepolia",_defaultProvider:Yo("sepolia")},holesky:{chainId:17e3,name:"holesky",_defaultProvider:Yo("holesky")},classic:{chainId:61,name:"classic",_defaultProvider:Xo("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:ea,classicTestnet:ea,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Xo("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:Yo("matic")},maticmum:{chainId:80001,name:"maticmum",_defaultProvider:Yo("maticmum")},optimism:{chainId:10,name:"optimism",_defaultProvider:Yo("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},"optimism-sepolia":{chainId:11155420,name:"optimism-sepolia"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},"arbitrum-sepolia":{chainId:421614,name:"arbitrum-sepolia"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function na(t){if(null==t)return null;if("number"==typeof t){for(const e in ra){const r=ra[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if("string"==typeof t){const e=ra[t];return null==e?null:{name:e.name,chainId:e.chainId,ensAddress:e.ensAddress,_defaultProvider:e._defaultProvider||null}}const e=ra[t.name];if(!e)return"number"!=typeof t.chainId&&Qo.throwArgumentError("invalid network chainId","network",t),t;0!==t.chainId&&t.chainId!==e.chainId&&Qo.throwArgumentError("network chainId mismatch","network",t);let r=t._defaultProvider||null;var n;return null==r&&e._defaultProvider&&(r=(n=e._defaultProvider)&&"function"==typeof n.renetwork?e._defaultProvider.renetwork(t):e._defaultProvider),{name:t.name,chainId:e.chainId,ensAddress:t.ensAddress||e.ensAddress||null,_defaultProvider:r}}var ia=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};function sa(t,e){return ia(this,void 0,void 0,function*(){null==e&&(e={});const r={method:e.method||"GET",headers:e.headers||{},body:e.body||void 0};if(!0!==e.skipFetchSetup&&(r.mode="cors",r.cache="no-cache",r.credentials="same-origin",r.redirect="follow",r.referrer="client"),null!=e.fetchOptions){const t=e.fetchOptions;t.mode&&(r.mode=t.mode),t.cache&&(r.cache=t.cache),t.credentials&&(r.credentials=t.credentials),t.redirect&&(r.redirect=t.redirect),t.referrer&&(r.referrer=t.referrer)}const n=yield fetch(t,r),i=yield n.arrayBuffer(),s={};return n.headers.forEach?n.headers.forEach((t,e)=>{s[e.toLowerCase()]=t}):n.headers.keys().forEach(t=>{s[t.toLowerCase()]=n.headers.get(t)}),{headers:s,statusCode:n.status,statusMessage:n.statusText,body:_(new Uint8Array(i))}})}var oa=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const aa=new v("web/5.8.0");function la(t){return new Promise(e=>{setTimeout(e,t)})}function ca(t,e){if(null==t)return null;if("string"==typeof t)return t;if(k(t)){if(e&&("text"===e.split("/")[0]||"application/json"===e.split(";")[0].trim()))try{return Ze(t)}catch(t){}return B(t)}return t}function ha(t,e,r){const n="object"==typeof t&&null!=t.throttleLimit?t.throttleLimit:12;aa.assertArgument(n>0&&n%1==0,"invalid connection throttle limit","connection.throttleLimit",n);const i="object"==typeof t?t.throttleCallback:null,s="object"==typeof t&&"number"==typeof t.throttleSlotInterval?t.throttleSlotInterval:100;aa.assertArgument(s>0&&s%1==0,"invalid connection throttle slot interval","connection.throttleSlotInterval",s);const o="object"==typeof t&&!!t.errorPassThrough,a={};let l=null;const c={method:"GET"};let h=!1,u=12e4;if("string"==typeof t)l=t;else if("object"==typeof t){if(null!=t&&null!=t.url||aa.throwArgumentError("missing URL","connection.url",t),l=t.url,"number"==typeof t.timeout&&t.timeout>0&&(u=t.timeout),t.headers)for(const e in t.headers)a[e.toLowerCase()]={key:e,value:String(t.headers[e])},["if-none-match","if-modified-since"].indexOf(e.toLowerCase())>=0&&(h=!0);if(c.allowGzip=!!t.allowGzip,null!=t.user&&null!=t.password){"https:"!==l.substring(0,6)&&!0!==t.allowInsecureAuthentication&&aa.throwError("basic authentication requires a secure https url",v.errors.INVALID_ARGUMENT,{argument:"url",url:l,user:t.user,password:"[REDACTED]"});const e=t.user+":"+t.password;a.authorization={key:"Authorization",value:"Basic "+Er(Qe(e))}}null!=t.skipFetchSetup&&(c.skipFetchSetup=!!t.skipFetchSetup),null!=t.fetchOptions&&(c.fetchOptions=yt(t.fetchOptions))}const d=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),f=l?l.match(d):null;if(f)try{const t={statusCode:200,statusMessage:"OK",headers:{"content-type":f[1]||"text/plain"},body:f[2]?br(f[3]):(p=f[3],Qe(p.replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))};let e=t.body;return r&&(e=r(t.body,t)),Promise.resolve(e)}catch(t){aa.throwError("processing response error",v.errors.SERVER_ERROR,{body:ca(f[1],f[2]),error:t,requestBody:null,requestMethod:"GET",url:l})}var p;e&&(c.method="POST",c.body=e,null==a["content-type"]&&(a["content-type"]={key:"Content-Type",value:"application/octet-stream"}),null==a["content-length"]&&(a["content-length"]={key:"Content-Length",value:String(e.length)}));const m={};Object.keys(a).forEach(t=>{const e=a[t];m[e.key]=e.value}),c.headers=m;const g=function(){let t=null;return{promise:new Promise(function(e,r){u&&(t=setTimeout(()=>{null!=t&&(t=null,r(aa.makeError("timeout",v.errors.TIMEOUT,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,timeout:u,url:l})))},u))}),cancel:function(){null!=t&&(clearTimeout(t),t=null)}}}(),y=function(){return oa(this,void 0,void 0,function*(){for(let t=0;t<n;t++){let e=null;try{if(e=yield sa(l,c),t<n)if(301===e.statusCode||302===e.statusCode){const t=e.headers.location||"";if("GET"===c.method&&t.match(/^https:/)){l=e.headers.location;continue}}else if(429===e.statusCode){let r=!0;if(i&&(r=yield i(t,l)),r){let r=0;const n=e.headers["retry-after"];r="string"==typeof n&&n.match(/^[1-9][0-9]*$/)?1e3*parseInt(n):s*parseInt(String(Math.random()*Math.pow(2,t))),yield la(r);continue}}}catch(t){e=t.response,null==e&&(g.cancel(),aa.throwError("missing response",v.errors.SERVER_ERROR,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,serverError:t,url:l}))}let a=e.body;if(h&&304===e.statusCode?a=null:!o&&(e.statusCode<200||e.statusCode>=300)&&(g.cancel(),aa.throwError("bad response",v.errors.SERVER_ERROR,{status:e.statusCode,headers:e.headers,body:ca(a,e.headers?e.headers["content-type"]:null),requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})),r)try{const t=yield r(a,e);return g.cancel(),t}catch(r){if(r.throttleRetry&&t<n){let e=!0;if(i&&(e=yield i(t,l)),e){const e=s*parseInt(String(Math.random()*Math.pow(2,t)));yield la(e);continue}}g.cancel(),aa.throwError("processing response error",v.errors.SERVER_ERROR,{body:ca(a,e.headers?e.headers["content-type"]:null),error:r,requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})}return g.cancel(),a}return aa.throwError("failed response",v.errors.SERVER_ERROR,{requestBody:ca(c.body,m["content-type"]),requestMethod:c.method,url:l})})}();return Promise.race([g.promise,y])}function ua(t,e,r){let n=null;if(null!=e){n=Qe(e);const r="string"==typeof t?{url:t}:yt(t);if(r.headers){0!==Object.keys(r.headers).filter(t=>"content-type"===t.toLowerCase()).length||(r.headers=yt(r.headers),r.headers["content-type"]="application/json")}else r.headers={"content-type":"application/json"};t=r}return ha(t,n,(t,e)=>{let n=null;if(null!=t)try{n=JSON.parse(Ze(t))}catch(e){aa.throwError("invalid JSON",v.errors.SERVER_ERROR,{body:t,error:e})}return r&&(n=r(n,e)),n})}function da(t,e){return e||(e={}),null==(e=yt(e)).floor&&(e.floor=0),null==e.ceiling&&(e.ceiling=1e4),null==e.interval&&(e.interval=250),new Promise(function(r,n){let i=null,s=!1;const o=()=>!s&&(s=!0,i&&clearTimeout(i),!0);e.timeout&&(i=setTimeout(()=>{o()&&n(new Error("timeout"))},e.timeout));const a=e.retryLimit;let l=0;!function i(){return t().then(function(t){if(void 0!==t)o()&&r(t);else if(e.oncePoll)e.oncePoll.once("poll",i);else if(e.onceBlock)e.onceBlock.once("block",i);else if(!s){if(l++,l>a)return void(o()&&n(new Error("retry limit reached")));let t=e.interval*parseInt(String(Math.random()*Math.pow(2,l)));t<e.floor&&(t=e.floor),t>e.ceiling&&(t=e.ceiling),setTimeout(i,t)}return null},function(t){o()&&n(t)})}()})}var fa,pa;var ma=function(){if(pa)return fa;pa=1;for(var t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",e={},r=0;r<32;r++){var n=t.charAt(r);if(void 0!==e[n])throw new TypeError(n+" is ambiguous");e[n]=r}function i(t){var e=t>>25;return(33554431&t)<<5^996825010&-(1&e)^642813549&-(e>>1&1)^513874426&-(e>>2&1)^1027748829&-(e>>3&1)^705979059&-(e>>4&1)}function s(t){for(var e=1,r=0;r<t.length;++r){var n=t.charCodeAt(r);if(n<33||n>126)return"Invalid prefix ("+t+")";e=i(e)^n>>5}for(e=i(e),r=0;r<t.length;++r){var s=t.charCodeAt(r);e=i(e)^31&s}return e}function o(t,r){if(r=r||90,t.length<8)return t+" too short";if(t.length>r)return"Exceeds length limit";var n=t.toLowerCase(),o=t.toUpperCase();if(t!==n&&t!==o)return"Mixed-case string "+t;var a=(t=n).lastIndexOf("1");if(-1===a)return"No separator character for "+t;if(0===a)return"Missing prefix for "+t;var l=t.slice(0,a),c=t.slice(a+1);if(c.length<6)return"Data too short";var h=s(l);if("string"==typeof h)return h;for(var u=[],d=0;d<c.length;++d){var f=c.charAt(d),p=e[f];if(void 0===p)return"Unknown character "+f;h=i(h)^p,d+6>=c.length||u.push(p)}return 1!==h?"Invalid checksum for "+t:{prefix:l,words:u}}function a(t,e,r,n){for(var i=0,s=0,o=(1<<r)-1,a=[],l=0;l<t.length;++l)for(i=i<<e|t[l],s+=e;s>=r;)s-=r,a.push(i>>s&o);if(n)s>0&&a.push(i<<r-s&o);else{if(s>=e)return"Excess padding";if(i<<r-s&o)return"Non-zero padding"}return a}return fa={decodeUnsafe:function(){var t=o.apply(null,arguments);if("object"==typeof t)return t},decode:function(t){var e=o.apply(null,arguments);if("object"==typeof e)return e;throw new Error(e)},encode:function(e,r,n){if(n=n||90,e.length+7+r.length>n)throw new TypeError("Exceeds length limit");var o=s(e=e.toLowerCase());if("string"==typeof o)throw new Error(o);for(var a=e+"1",l=0;l<r.length;++l){var c=r[l];if(c>>5)throw new Error("Non 5-bit word");o=i(o)^c,a+=t.charAt(c)}for(l=0;l<6;++l)o=i(o);for(o^=1,l=0;l<6;++l){a+=t.charAt(o>>5*(5-l)&31)}return a},toWordsUnsafe:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e},toWords:function(t){var e=a(t,8,5,!0);if(Array.isArray(e))return e;throw new Error(e)},fromWordsUnsafe:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e},fromWords:function(t){var e=a(t,5,8,!1);if(Array.isArray(e))return e;throw new Error(e)}},fa}(),ga=s(ma);const ya="providers/5.8.0",wa=new v(ya);class va{constructor(){this.formats=this.getDefaultFormats()}getDefaultFormats(){const t={},e=this.address.bind(this),r=this.bigNumber.bind(this),n=this.blockTag.bind(this),i=this.data.bind(this),s=this.hash.bind(this),o=this.hex.bind(this),a=this.number.bind(this),l=this.type.bind(this);return t.transaction={hash:s,type:l,accessList:va.allowNull(this.accessList.bind(this),null),blockHash:va.allowNull(s,null),blockNumber:va.allowNull(a,null),transactionIndex:va.allowNull(a,null),confirmations:va.allowNull(a,null),from:e,gasPrice:va.allowNull(r),maxPriorityFeePerGas:va.allowNull(r),maxFeePerGas:va.allowNull(r),gasLimit:r,to:va.allowNull(e,null),value:r,nonce:a,data:i,r:va.allowNull(this.uint256),s:va.allowNull(this.uint256),v:va.allowNull(a),creates:va.allowNull(e,null),raw:va.allowNull(i)},t.transactionRequest={from:va.allowNull(e),nonce:va.allowNull(a),gasLimit:va.allowNull(r),gasPrice:va.allowNull(r),maxPriorityFeePerGas:va.allowNull(r),maxFeePerGas:va.allowNull(r),to:va.allowNull(e),value:va.allowNull(r),data:va.allowNull(t=>this.data(t,!0)),type:va.allowNull(a),accessList:va.allowNull(this.accessList.bind(this),null)},t.receiptLog={transactionIndex:a,blockNumber:a,transactionHash:s,address:e,topics:va.arrayOf(s),data:i,logIndex:a,blockHash:s},t.receipt={to:va.allowNull(this.address,null),from:va.allowNull(this.address,null),contractAddress:va.allowNull(e,null),transactionIndex:a,root:va.allowNull(o),gasUsed:r,logsBloom:va.allowNull(i),blockHash:s,transactionHash:s,logs:va.arrayOf(this.receiptLog.bind(this)),blockNumber:a,confirmations:va.allowNull(a,null),cumulativeGasUsed:r,effectiveGasPrice:va.allowNull(r),status:va.allowNull(a),type:l},t.block={hash:va.allowNull(s),parentHash:s,number:a,timestamp:a,nonce:va.allowNull(o),difficulty:this.difficulty.bind(this),gasLimit:r,gasUsed:r,miner:va.allowNull(e),extraData:i,transactions:va.allowNull(va.arrayOf(s)),baseFeePerGas:va.allowNull(r)},t.blockWithTransactions=yt(t.block),t.blockWithTransactions.transactions=va.allowNull(va.arrayOf(this.transactionResponse.bind(this))),t.filter={fromBlock:va.allowNull(n,void 0),toBlock:va.allowNull(n,void 0),blockHash:va.allowNull(s,void 0),address:va.allowNull(e,void 0),topics:va.allowNull(this.topics.bind(this),void 0)},t.filterLog={blockNumber:va.allowNull(a),blockHash:va.allowNull(s),transactionIndex:a,removed:va.allowNull(this.boolean.bind(this)),address:e,data:va.allowFalsish(i,"0x"),topics:va.arrayOf(s),transactionHash:s,logIndex:a},t}accessList(t){return ps(t||[])}number(t){return"0x"===t?0:V.from(t).toNumber()}type(t){return"0x"===t||null==t?0:V.from(t).toNumber()}bigNumber(t){return V.from(t)}boolean(t){if("boolean"==typeof t)return t;if("string"==typeof t){if("true"===(t=t.toLowerCase()))return!0;if("false"===t)return!1}throw new Error("invalid boolean - "+t)}hex(t,e){return"string"==typeof t&&(e||"0x"===t.substring(0,2)||(t="0x"+t),I(t))?t.toLowerCase():wa.throwArgumentError("invalid hash","value",t)}data(t,e){const r=this.hex(t,e);if(r.length%2!=0)throw new Error("invalid data; odd-length - "+t);return r}address(t){return ve(t)}callAddress(t){if(!I(t,32))return null;const e=ve(R(t,12));return e===Be?null:e}contractAddress(t){return be(t)}blockTag(t){if(null==t)return"latest";if("earliest"===t)return"0x0";switch(t){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return t}if("number"==typeof t||I(t))return O(t);throw new Error("invalid blockTag")}hash(t,e){const r=this.hex(t,e);return 32!==M(r)?wa.throwArgumentError("invalid hash","value",t):r}difficulty(t){if(null==t)return null;const e=V.from(t);try{return e.toNumber()}catch(t){}return null}uint256(t){if(!I(t))throw new Error("invalid uint256");return L(t,32)}_block(t,e){null!=t.author&&null==t.miner&&(t.miner=t.author);const r=null!=t._difficulty?t._difficulty:t.difficulty,n=va.check(e,t);return n._difficulty=null==r?null:V.from(r),n}block(t){return this._block(t,this.formats.block)}blockWithTransactions(t){return this._block(t,this.formats.blockWithTransactions)}transactionRequest(t){return va.check(this.formats.transactionRequest,t)}transactionResponse(t){null!=t.gas&&null==t.gasLimit&&(t.gasLimit=t.gas),t.to&&V.from(t.to).isZero()&&(t.to="0x0000000000000000000000000000000000000000"),null!=t.input&&null==t.data&&(t.data=t.input),null==t.to&&null==t.creates&&(t.creates=this.contractAddress(t)),1!==t.type&&2!==t.type||null!=t.accessList||(t.accessList=[]);const e=va.check(this.formats.transaction,t);if(null!=t.chainId){let r=t.chainId;I(r)&&(r=V.from(r).toNumber()),e.chainId=r}else{let r=t.networkId;null==r&&null==e.v&&(r=t.chainId),I(r)&&(r=V.from(r).toNumber()),"number"!=typeof r&&null!=e.v&&(r=(e.v-35)/2,r<0&&(r=0),r=parseInt(r)),"number"!=typeof r&&(r=0),e.chainId=r}return e.blockHash&&"x"===e.blockHash.replace(/0/g,"")&&(e.blockHash=null),e}transaction(t){return bs(t)}receiptLog(t){return va.check(this.formats.receiptLog,t)}receipt(t){const e=va.check(this.formats.receipt,t);if(null!=e.root)if(e.root.length<=4){const t=V.from(e.root).toNumber();0===t||1===t?(null!=e.status&&e.status!==t&&wa.throwArgumentError("alt-root-status/status mismatch","value",{root:e.root,status:e.status}),e.status=t,delete e.root):wa.throwArgumentError("invalid alt-root-status","value.root",e.root)}else 66!==e.root.length&&wa.throwArgumentError("invalid root hash","value.root",e.root);return null!=e.status&&(e.byzantium=!0),e}topics(t){return Array.isArray(t)?t.map(t=>this.topics(t)):null!=t?this.hash(t,!0):null}filter(t){return va.check(this.formats.filter,t)}filterLog(t){return va.check(this.formats.filterLog,t)}static check(t,e){const r={};for(const n in t)try{const i=t[n](e[n]);void 0!==i&&(r[n]=i)}catch(t){throw t.checkKey=n,t.checkValue=e[n],t}return r}static allowNull(t,e){return function(r){return null==r?e:t(r)}}static allowFalsish(t,e){return function(r){return r?t(r):e}}static arrayOf(t){return function(e){if(!Array.isArray(e))throw new Error("not an array");const r=[];return e.forEach(function(e){r.push(t(e))}),r}}}function ba(t){return t&&"function"==typeof t.isCommunityResource}function Ea(t){return ba(t)&&t.isCommunityResource()}let Aa=!1;function ka(){Aa||(Aa=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Sa=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Ca=new v(ya);function _a(t){return null==t?"null":(32!==M(t)&&Ca.throwArgumentError("invalid topic","topic",t),t.toLowerCase())}function Na(t){for(t=t.slice();t.length>0&&null==t[t.length-1];)t.pop();return t.map(t=>{if(Array.isArray(t)){const e={};t.forEach(t=>{e[_a(t)]=!0});const r=Object.keys(e);return r.sort(),r.join("|")}return _a(t)}).join("&")}function xa(t){if("string"==typeof t){if(32===M(t=t.toLowerCase()))return"tx:"+t;if(-1===t.indexOf(":"))return t}else{if(Array.isArray(t))return"filter:*:"+Na(t);if(An.isForkEvent(t))throw Ca.warn("not implemented"),new Error("not implemented");if(t&&"object"==typeof t)return"filter:"+(t.address||"*")+":"+Na(t.topics||[])}throw new Error("invalid event - "+t)}function Ta(){return(new Date).getTime()}function Ia(t){return new Promise(e=>{setTimeout(e,t)})}const Pa=["block","network","pending","poll"];class Ba{constructor(t,e,r){ft(this,"tag",t),ft(this,"listener",e),ft(this,"once",r),this._lastBlockNumber=-2,this._inflight=!1}get event(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag}get type(){return this.tag.split(":")[0]}get hash(){const t=this.tag.split(":");return"tx"!==t[0]?null:t[1]}get filter(){const t=this.tag.split(":");if("filter"!==t[0])return null;const e=t[1],r=""===(n=t[2])?[]:n.split(/&/g).map(t=>{if(""===t)return[];const e=t.split("|").map(t=>"null"===t?null:t);return 1===e.length?e[0]:e});var n;const i={};return r.length>0&&(i.topics=r),e&&"*"!==e&&(i.address=e),i}pollable(){return this.tag.indexOf(":")>=0||Pa.indexOf(this.tag)>=0}}const Ma={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Ra(t){return L(V.from(t).toHexString(),32)}function Fa(t){return Ls.encode(N([t,R(js(js(t)),0,4)]))}const Oa=new RegExp("^(ipfs)://(.*)$","i"),Da=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Oa,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function La(t,e){try{return Ze(Ua(t,e))}catch(t){}return null}function Ua(t,e){if("0x"===t)return null;const r=V.from(R(t,e,e+32)).toNumber(),n=V.from(R(t,r,r+32)).toNumber();return R(t,r+32,r+32+n)}function za(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):Ca.throwArgumentError("unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}function qa(t){const e=_(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function ja(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function Ga(t){const e=[];let r=0;for(let n=0;n<t.length;n++)e.push(null),r+=32;for(let n=0;n<t.length;n++){const i=_(t[n]);e[n]=qa(r),e.push(qa(i.length)),e.push(ja(i)),r+=32+32*Math.ceil(i.length/32)}return F(e)}class Ha{constructor(t,e,r,n){ft(this,"provider",t),ft(this,"name",r),ft(this,"address",t.formatter.address(e)),ft(this,"_resolvedAddress",n)}supportsWildcard(){return this._supportsEip2544||(this._supportsEip2544=this.provider.call({to:this.address,data:"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"}).then(t=>V.from(t).eq(1)).catch(t=>{if(t.code===v.errors.CALL_EXCEPTION)return!1;throw this._supportsEip2544=null,t})),this._supportsEip2544}_fetch(t,e){return Sa(this,void 0,void 0,function*(){const r={to:this.address,ccipReadEnabled:!0,data:F([t,Kr(this.name),e||"0x"])};let n=!1;(yield this.supportsWildcard())&&(n=!0,r.data=F(["0x9061b923",Ga([Vr(this.name),r.data])]));try{let t=yield this.provider.call(r);return _(t).length%32==4&&Ca.throwError("resolver threw error",v.errors.CALL_EXCEPTION,{transaction:r,data:t}),n&&(t=Ua(t,0)),t}catch(t){if(t.code===v.errors.CALL_EXCEPTION)return null;throw t}})}_fetchBytes(t,e){return Sa(this,void 0,void 0,function*(){const r=yield this._fetch(t,e);return null!=r?Ua(r,0):null})}_getAddress(t,e){const r=Ma[String(t)];if(null==r&&Ca.throwError(`unsupported coin type: ${t}`,v.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`}),"eth"===r.ilk)return this.provider.formatter.address(e);const n=_(e);if(null!=r.p2pkh){const t=e.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Fa(N([[r.p2pkh],"0x"+t[2]]))}}if(null!=r.p2sh){const t=e.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(t){const e=parseInt(t[1],16);if(t[2].length===2*e&&e>=1&&e<=75)return Fa(N([[r.p2sh],"0x"+t[2]]))}}if(null!=r.prefix){const t=n[1];let e=n[0];if(0===e?20!==t&&32!==t&&(e=-1):e=-1,e>=0&&n.length===2+t&&t>=1&&t<=75){const t=ga.toWords(n.slice(2));return t.unshift(e),ga.encode(r.prefix,t)}}return null}getAddress(t){return Sa(this,void 0,void 0,function*(){if(null==t&&(t=60),60===t)try{const t=yield this._fetch("0x3b3b57de");return"0x"===t||t===qe?null:this.provider.formatter.callAddress(t)}catch(t){if(t.code===v.errors.CALL_EXCEPTION)return null;throw t}const e=yield this._fetchBytes("0xf1cb7e06",Ra(t));if(null==e||"0x"===e)return null;const r=this._getAddress(t,e);return null==r&&Ca.throwError("invalid or unsupported coin data",v.errors.UNSUPPORTED_OPERATION,{operation:`getAddress(${t})`,coinType:t,data:e}),r})}getAvatar(){return Sa(this,void 0,void 0,function*(){const t=[{type:"name",content:this.name}];try{const e=yield this.getText("avatar");if(null==e)return null;for(let r=0;r<Da.length;r++){const n=e.match(Da[r]);if(null==n)continue;const i=n[1].toLowerCase();switch(i){case"https":return t.push({type:"url",content:e}),{linkage:t,url:e};case"data":return t.push({type:"data",content:e}),{linkage:t,url:e};case"ipfs":return t.push({type:"ipfs",content:e}),{linkage:t,url:za(e)};case"erc721":case"erc1155":{const r="erc721"===i?"0xc87b56dd":"0x0e89341c";t.push({type:i,content:e});const s=this._resolvedAddress||(yield this.getAddress()),o=(n[2]||"").split("/");if(2!==o.length)return null;const a=yield this.provider.formatter.address(o[0]),l=L(V.from(o[1]).toHexString(),32);if("erc721"===i){const e=this.provider.formatter.callAddress(yield this.provider.call({to:a,data:F(["0x6352211e",l])}));if(s!==e)return null;t.push({type:"owner",content:e})}else if("erc1155"===i){const e=V.from(yield this.provider.call({to:a,data:F(["0x00fdd58e",L(s,32),l])}));if(e.isZero())return null;t.push({type:"balance",content:e.toString()})}const c={to:this.provider.formatter.address(o[0]),data:F([r,l])};let h=La(yield this.provider.call(c),0);if(null==h)return null;t.push({type:"metadata-url-base",content:h}),"erc1155"===i&&(h=h.replace("{id}",l.substring(2)),t.push({type:"metadata-url-expanded",content:h})),h.match(/^ipfs:/i)&&(h=za(h)),t.push({type:"metadata-url",content:h});const u=yield ua(h);if(!u)return null;t.push({type:"metadata",content:JSON.stringify(u)});let d=u.image;if("string"!=typeof d)return null;if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Oa))return null;t.push({type:"url-ipfs",content:d}),d=za(d)}return t.push({type:"url",content:d}),{linkage:t,url:d}}}}}catch(t){}return null})}getContentHash(){return Sa(this,void 0,void 0,function*(){const t=yield this._fetchBytes("0xbc1c58d1");if(null==t||"0x"===t)return null;const e=t.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t=parseInt(e[3],16);if(e[4].length===2*t)return"ipfs://"+Ls.encode("0x"+e[1])}const r=t.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(r){const t=parseInt(r[3],16);if(r[4].length===2*t)return"ipns://"+Ls.encode("0x"+r[1])}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return"bzz://"+n[1];const i=t.match(/^0x90b2c605([0-9a-f]*)$/);if(i&&68===i[1].length){const t={"=":"","+":"-","/":"_"};return"sia://"+Er("0x"+i[1]).replace(/[=+\/]/g,e=>t[e])}return Ca.throwError("invalid or unsupported content hash data",v.errors.UNSUPPORTED_OPERATION,{operation:"getContentHash()",data:t})})}getText(t){return Sa(this,void 0,void 0,function*(){let e=Qe(t);e=N([Ra(64),Ra(e.length),e]),e.length%32!=0&&(e=N([e,L("0x",32-t.length%32)]));const r=yield this._fetchBytes("0x59d1d43c",B(e));return null==r||"0x"===r?null:Ze(r)})}}let Wa=null,Ka=1;class Va extends kn{constructor(t){if(super(),this._events=[],this._emitted={block:-2},this.disableCcipRead=!1,this.formatter=new.target.getFormatter(),ft(this,"anyNetwork","any"===t),this.anyNetwork&&(t=this.detectNetwork()),t instanceof Promise)this._networkPromise=t,t.catch(t=>{}),this._ready().catch(t=>{});else{const e=pt(new.target,"getNetwork")(t);e?(ft(this,"_network",e),this.emit("network",e,null)):Ca.throwArgumentError("invalid network","network",t)}this._maxInternalBlockNumber=-1024,this._lastBlockNumber=-2,this._maxFilterBlockRange=10,this._pollingInterval=4e3,this._fastQueryDate=0}_ready(){return Sa(this,void 0,void 0,function*(){if(null==this._network){let t=null;if(this._networkPromise)try{t=yield this._networkPromise}catch(t){}null==t&&(t=yield this.detectNetwork()),t||Ca.throwError("no network detected",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(this.anyNetwork?this._network=t:ft(this,"_network",t),this.emit("network",t,null))}return this._network})}get ready(){return da(()=>this._ready().then(t=>t,t=>{if(t.code!==v.errors.NETWORK_ERROR||"noNetwork"!==t.event)throw t}))}static getFormatter(){return null==Wa&&(Wa=new va),Wa}static getNetwork(t){return na(null==t?"homestead":t)}ccipReadFetch(t,e,r){return Sa(this,void 0,void 0,function*(){if(this.disableCcipRead||0===r.length)return null;const n=t.to.toLowerCase(),i=e.toLowerCase(),s=[];for(let t=0;t<r.length;t++){const e=r[t],o=e.replace("{sender}",n).replace("{data}",i),a=e.indexOf("{data}")>=0?null:JSON.stringify({data:i,sender:n}),l=yield ua({url:o,errorPassThrough:!0},a,(t,e)=>(t.status=e.statusCode,t));if(l.data)return l.data;const c=l.message||"unknown error";if(l.status>=400&&l.status<500)return Ca.throwError(`response not found during CCIP fetch: ${c}`,v.errors.SERVER_ERROR,{url:e,errorMessage:c});s.push(c)}return Ca.throwError(`error encountered during CCIP fetch: ${s.map(t=>JSON.stringify(t)).join(", ")}`,v.errors.SERVER_ERROR,{urls:r,errorMessages:s})})}_getInternalBlockNumber(t){return Sa(this,void 0,void 0,function*(){if(yield this._ready(),t>0)for(;this._internalBlockNumber;){const e=this._internalBlockNumber;try{const r=yield e;if(Ta()-r.respTime<=t)return r.blockNumber;break}catch(t){if(this._internalBlockNumber===e)break}}const e=Ta(),r=mt({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(t=>null,t=>t)}).then(({blockNumber:t,networkError:n})=>{if(n)throw this._internalBlockNumber===r&&(this._internalBlockNumber=null),n;const i=Ta();return(t=V.from(t).toNumber())<this._maxInternalBlockNumber&&(t=this._maxInternalBlockNumber),this._maxInternalBlockNumber=t,this._setFastBlockNumber(t),{blockNumber:t,reqTime:e,respTime:i}});return this._internalBlockNumber=r,r.catch(t=>{this._internalBlockNumber===r&&(this._internalBlockNumber=null)}),(yield r).blockNumber})}poll(){return Sa(this,void 0,void 0,function*(){const t=Ka++,e=[];let r=null;try{r=yield this._getInternalBlockNumber(100+this.pollingInterval/2)}catch(t){return void this.emit("error",t)}if(this._setFastBlockNumber(r),this.emit("poll",t,r),r!==this._lastBlockNumber){if(-2===this._emitted.block&&(this._emitted.block=r-1),Math.abs(this._emitted.block-r)>1e3)Ca.warn(`network block skew detected; skipping block events (emitted=${this._emitted.block} blockNumber${r})`),this.emit("error",Ca.makeError("network block skew detected",v.errors.NETWORK_ERROR,{blockNumber:r,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",r);else for(let t=this._emitted.block+1;t<=r;t++)this.emit("block",t);this._emitted.block!==r&&(this._emitted.block=r,Object.keys(this._emitted).forEach(t=>{if("block"===t)return;const e=this._emitted[t];"pending"!==e&&r-e>12&&delete this._emitted[t]})),-2===this._lastBlockNumber&&(this._lastBlockNumber=r-1),this._events.forEach(t=>{switch(t.type){case"tx":{const r=t.hash;let n=this.getTransactionReceipt(r).then(t=>t&&null!=t.blockNumber?(this._emitted["t:"+r]=t.blockNumber,this.emit(r,t),null):null).catch(t=>{this.emit("error",t)});e.push(n);break}case"filter":if(!t._inflight){t._inflight=!0,-2===t._lastBlockNumber&&(t._lastBlockNumber=r-1);const n=t.filter;n.fromBlock=t._lastBlockNumber+1,n.toBlock=r;const i=n.toBlock-this._maxFilterBlockRange;i>n.fromBlock&&(n.fromBlock=i),n.fromBlock<0&&(n.fromBlock=0);const s=this.getLogs(n).then(e=>{t._inflight=!1,0!==e.length&&e.forEach(e=>{e.blockNumber>t._lastBlockNumber&&(t._lastBlockNumber=e.blockNumber),this._emitted["b:"+e.blockHash]=e.blockNumber,this._emitted["t:"+e.transactionHash]=e.blockNumber,this.emit(n,e)})}).catch(e=>{this.emit("error",e),t._inflight=!1});e.push(s)}}}),this._lastBlockNumber=r,Promise.all(e).then(()=>{this.emit("didPoll",t)}).catch(t=>{this.emit("error",t)})}else this.emit("didPoll",t)})}resetEventsBlock(t){this._lastBlockNumber=t-1,this.polling&&this.poll()}get network(){return this._network}detectNetwork(){return Sa(this,void 0,void 0,function*(){return Ca.throwError("provider does not support network detection",v.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})})}getNetwork(){return Sa(this,void 0,void 0,function*(){const t=yield this._ready(),e=yield this.detectNetwork();if(t.chainId!==e.chainId){if(this.anyNetwork)return this._network=e,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",e,t),yield Ia(0),this._network;const r=Ca.makeError("underlying network changed",v.errors.NETWORK_ERROR,{event:"changed",network:t,detectedNetwork:e});throw this.emit("error",r),r}return t})}get blockNumber(){return this._getInternalBlockNumber(100+this.pollingInterval/2).then(t=>{this._setFastBlockNumber(t)},t=>{}),null!=this._fastBlockNumber?this._fastBlockNumber:-1}get polling(){return null!=this._poller}set polling(t){t&&!this._poller?(this._poller=setInterval(()=>{this.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(()=>{this.poll(),this._bootstrapPoll=setTimeout(()=>{this._poller||this.poll(),this._bootstrapPoll=null},this.pollingInterval)},0))):!t&&this._poller&&(clearInterval(this._poller),this._poller=null)}get pollingInterval(){return this._pollingInterval}set pollingInterval(t){if("number"!=typeof t||t<=0||parseInt(String(t))!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(()=>{this.poll()},this._pollingInterval))}_getFastBlockNumber(){const t=Ta();return t-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=t,this._fastBlockNumberPromise=this.getBlockNumber().then(t=>((null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t),this._fastBlockNumber))),this._fastBlockNumberPromise}_setFastBlockNumber(t){null!=this._fastBlockNumber&&t<this._fastBlockNumber||(this._fastQueryDate=Ta(),(null==this._fastBlockNumber||t>this._fastBlockNumber)&&(this._fastBlockNumber=t,this._fastBlockNumberPromise=Promise.resolve(t)))}waitForTransaction(t,e,r){return Sa(this,void 0,void 0,function*(){return this._waitForTransaction(t,null==e?1:e,r||0,null)})}_waitForTransaction(t,e,r,n){return Sa(this,void 0,void 0,function*(){const i=yield this.getTransactionReceipt(t);return(i?i.confirmations:0)>=e?i:new Promise((i,s)=>{const o=[];let a=!1;const l=function(){return!!a||(a=!0,o.forEach(t=>{t()}),!1)},c=t=>{t.confirmations<e||l()||i(t)};if(this.on(t,c),o.push(()=>{this.removeListener(t,c)}),n){let r=n.startBlock,i=null;const c=o=>Sa(this,void 0,void 0,function*(){a||(yield Ia(1e3),this.getTransactionCount(n.from).then(h=>Sa(this,void 0,void 0,function*(){if(!a){if(h<=n.nonce)r=o;else{{const e=yield this.getTransaction(t);if(e&&null!=e.blockNumber)return}for(null==i&&(i=r-3,i<n.startBlock&&(i=n.startBlock));i<=o;){if(a)return;const r=yield this.getBlockWithTransactions(i);for(let i=0;i<r.transactions.length;i++){const o=r.transactions[i];if(o.hash===t)return;if(o.from===n.from&&o.nonce===n.nonce){if(a)return;const r=yield this.waitForTransaction(o.hash,e);if(l())return;let i="replaced";return o.data===n.data&&o.to===n.to&&o.value.eq(n.value)?i="repriced":"0x"===o.data&&o.from===o.to&&o.value.isZero()&&(i="cancelled"),void s(Ca.makeError("transaction was replaced",v.errors.TRANSACTION_REPLACED,{cancelled:"replaced"===i||"cancelled"===i,reason:i,replacement:this._wrapTransaction(o),hash:t,receipt:r}))}}i++}}a||this.once("block",c)}}),t=>{a||this.once("block",c)}))});if(a)return;this.once("block",c),o.push(()=>{this.removeListener("block",c)})}if("number"==typeof r&&r>0){const t=setTimeout(()=>{l()||s(Ca.makeError("timeout exceeded",v.errors.TIMEOUT,{timeout:r}))},r);t.unref&&t.unref(),o.push(()=>{clearTimeout(t)})}})})}getBlockNumber(){return Sa(this,void 0,void 0,function*(){return this._getInternalBlockNumber(0)})}getGasPrice(){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const t=yield this.perform("getGasPrice",{});try{return V.from(t)}catch(e){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getGasPrice",result:t,error:e})}})}getBalance(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getBalance",r);try{return V.from(n)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getBalance",params:r,result:n,error:t})}})}getTransactionCount(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getTransactionCount",r);try{return V.from(n).toNumber()}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getTransactionCount",params:r,result:n,error:t})}})}getCode(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(e)}),n=yield this.perform("getCode",r);try{return B(n)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getCode",params:r,result:n,error:t})}})}getStorageAt(t,e,r){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const n=yield mt({address:this._getAddress(t),blockTag:this._getBlockTag(r),position:Promise.resolve(e).then(t=>O(t))}),i=yield this.perform("getStorageAt",n);try{return B(i)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"getStorageAt",params:n,result:i,error:t})}})}_wrapTransaction(t,e,r){if(null!=e&&32!==M(e))throw new Error("invalid response - sendTransaction");const n=t;return null!=e&&t.hash!==e&&Ca.throwError("Transaction hash mismatch from Provider.sendTransaction.",v.errors.UNKNOWN_ERROR,{expectedHash:t.hash,returnedHash:e}),n.wait=(e,n)=>Sa(this,void 0,void 0,function*(){let i;null==e&&(e=1),null==n&&(n=0),0!==e&&null!=r&&(i={data:t.data,from:t.from,nonce:t.nonce,to:t.to,value:t.value,startBlock:r});const s=yield this._waitForTransaction(t.hash,e,n,i);return null==s&&0===e?null:(this._emitted["t:"+t.hash]=s.blockNumber,0===s.status&&Ca.throwError("transaction failed",v.errors.CALL_EXCEPTION,{transactionHash:t.hash,transaction:t,receipt:s}),s)}),n}sendTransaction(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield Promise.resolve(t).then(t=>B(t)),r=this.formatter.transaction(t);null==r.confirmations&&(r.confirmations=0);const n=yield this._getInternalBlockNumber(100+2*this.pollingInterval);try{const t=yield this.perform("sendTransaction",{signedTransaction:e});return this._wrapTransaction(r,t,n)}catch(t){throw t.transaction=r,t.transactionHash=r.hash,t}})}_getTransactionRequest(t){return Sa(this,void 0,void 0,function*(){const e=yield t,r={};return["from","to"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?this._getAddress(t):null))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?V.from(t):null))}),["type"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>null!=t?t:null))}),e.accessList&&(r.accessList=this.formatter.accessList(e.accessList)),["data"].forEach(t=>{null!=e[t]&&(r[t]=Promise.resolve(e[t]).then(t=>t?B(t):null))}),this.formatter.transactionRequest(yield mt(r))})}_getFilter(t){return Sa(this,void 0,void 0,function*(){t=yield t;const e={};return null!=t.address&&(e.address=this._getAddress(t.address)),["blockHash","topics"].forEach(r=>{null!=t[r]&&(e[r]=t[r])}),["fromBlock","toBlock"].forEach(r=>{null!=t[r]&&(e[r]=this._getBlockTag(t[r]))}),this.formatter.filter(yield mt(e))})}_call(t,e,r){return Sa(this,void 0,void 0,function*(){r>=10&&Ca.throwError("CCIP read exceeded maximum redirections",v.errors.SERVER_ERROR,{redirects:r,transaction:t});const n=t.to,i=yield this.perform("call",{transaction:t,blockTag:e});if(r>=0&&"latest"===e&&null!=n&&"0x556f1830"===i.substring(0,10)&&M(i)%32==4)try{const s=R(i,4),o=R(s,0,32);V.from(o).eq(n)||Ca.throwError("CCIP Read sender did not match",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const a=[],l=V.from(R(s,32,64)).toNumber(),c=V.from(R(s,l,l+32)).toNumber(),h=R(s,l+32);for(let e=0;e<c;e++){const r=La(h,32*e);null==r&&Ca.throwError("CCIP Read contained corrupt URL string",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i}),a.push(r)}const u=Ua(s,64);V.from(R(s,100,128)).isZero()||Ca.throwError("CCIP Read callback selector included junk",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const d=R(s,96,100),f=Ua(s,128),p=yield this.ccipReadFetch(t,u,a);null==p&&Ca.throwError("CCIP Read disabled or provided no URLs",v.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:t,data:i});const m={to:n,data:F([d,Ga([p,f])])};return this._call(m,e,r+1)}catch(t){if(t.code===v.errors.SERVER_ERROR)throw t}try{return B(i)}catch(r){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"call",params:{transaction:t,blockTag:e},result:i,error:r})}})}call(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const r=yield mt({transaction:this._getTransactionRequest(t),blockTag:this._getBlockTag(e),ccipReadEnabled:Promise.resolve(t.ccipReadEnabled)});return this._call(r.transaction,r.blockTag,r.ccipReadEnabled?0:-1)})}estimateGas(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield mt({transaction:this._getTransactionRequest(t)}),r=yield this.perform("estimateGas",e);try{return V.from(r)}catch(t){return Ca.throwError("bad result from backend",v.errors.SERVER_ERROR,{method:"estimateGas",params:e,result:r,error:t})}})}_getAddress(t){return Sa(this,void 0,void 0,function*(){"string"!=typeof(t=yield t)&&Ca.throwArgumentError("invalid address or ENS name","name",t);const e=yield this.resolveName(t);return null==e&&Ca.throwError("ENS name not configured",v.errors.UNSUPPORTED_OPERATION,{operation:`resolveName(${JSON.stringify(t)})`}),e})}_getBlock(t,e){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;let r=-128;const n={includeTransactions:!!e};if(I(t,32))n.blockHash=t;else try{n.blockTag=yield this._getBlockTag(t),I(n.blockTag)&&(r=parseInt(n.blockTag.substring(2),16))}catch(e){Ca.throwArgumentError("invalid block hash or block tag","blockHashOrBlockTag",t)}return da(()=>Sa(this,void 0,void 0,function*(){const t=yield this.perform("getBlock",n);if(null==t)return null!=n.blockHash&&null==this._emitted["b:"+n.blockHash]||null!=n.blockTag&&r>this._emitted.block?null:void 0;if(e){let e=null;for(let r=0;r<t.transactions.length;r++){const n=t.transactions[r];if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){null==e&&(e=yield this._getInternalBlockNumber(100+2*this.pollingInterval));let t=e-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}}const r=this.formatter.blockWithTransactions(t);return r.transactions=r.transactions.map(t=>this._wrapTransaction(t)),r}return this.formatter.block(t)}),{oncePoll:this})})}getBlock(t){return this._getBlock(t,!1)}getBlockWithTransactions(t){return this._getBlock(t,!0)}getTransaction(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return da(()=>Sa(this,void 0,void 0,function*(){const r=yield this.perform("getTransaction",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;const n=this.formatter.transactionResponse(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return this._wrapTransaction(n)}),{oncePoll:this})})}getTransactionReceipt(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork(),t=yield t;const e={transactionHash:this.formatter.hash(t,!0)};return da(()=>Sa(this,void 0,void 0,function*(){const r=yield this.perform("getTransactionReceipt",e);if(null==r)return null==this._emitted["t:"+t]?null:void 0;if(null==r.blockHash)return;const n=this.formatter.receipt(r);if(null==n.blockNumber)n.confirmations=0;else if(null==n.confirmations){let t=(yield this._getInternalBlockNumber(100+2*this.pollingInterval))-n.blockNumber+1;t<=0&&(t=1),n.confirmations=t}return n}),{oncePoll:this})})}getLogs(t){return Sa(this,void 0,void 0,function*(){yield this.getNetwork();const e=yield mt({filter:this._getFilter(t)}),r=yield this.perform("getLogs",e);return r.forEach(t=>{null==t.removed&&(t.removed=!1)}),va.arrayOf(this.formatter.filterLog.bind(this.formatter))(r)})}getEtherPrice(){return Sa(this,void 0,void 0,function*(){return yield this.getNetwork(),this.perform("getEtherPrice",{})})}_getBlockTag(t){return Sa(this,void 0,void 0,function*(){if("number"==typeof(t=yield t)&&t<0){t%1&&Ca.throwArgumentError("invalid BlockTag","blockTag",t);let e=yield this._getInternalBlockNumber(100+2*this.pollingInterval);return e+=t,e<0&&(e=0),this.formatter.blockTag(e)}return this.formatter.blockTag(t)})}getResolver(t){return Sa(this,void 0,void 0,function*(){let e=t;for(;;){if(""===e||"."===e)return null;if("eth"!==t&&"eth"===e)return null;const r=yield this._getResolver(e,"getResolver");if(null!=r){const n=new Ha(this,r,t);return e===t||(yield n.supportsWildcard())?n:null}e=e.split(".").slice(1).join(".")}})}_getResolver(t,e){return Sa(this,void 0,void 0,function*(){null==e&&(e="ENS");const r=yield this.getNetwork();r.ensAddress||Ca.throwError("network does not support ENS",v.errors.UNSUPPORTED_OPERATION,{operation:e,network:r.name});try{const e=yield this.call({to:r.ensAddress,data:"0x0178b8bf"+Kr(t).substring(2)});return this.formatter.callAddress(e)}catch(t){}return null})}resolveName(t){return Sa(this,void 0,void 0,function*(){t=yield t;try{return Promise.resolve(this.formatter.address(t))}catch(e){if(I(t))throw e}"string"!=typeof t&&Ca.throwArgumentError("invalid ENS name","name",t);const e=yield this.getResolver(t);return e?yield e.getAddress():null})}lookupAddress(t){return Sa(this,void 0,void 0,function*(){t=yield t;const e=(t=this.formatter.address(t)).substring(2).toLowerCase()+".addr.reverse",r=yield this._getResolver(e,"lookupAddress");if(null==r)return null;const n=La(yield this.call({to:r,data:"0x691f3431"+Kr(e).substring(2)}),0);return(yield this.resolveName(n))!=t?null:n})}getAvatar(t){return Sa(this,void 0,void 0,function*(){let e=null;if(I(t)){const r=this.formatter.address(t).substring(2).toLowerCase()+".addr.reverse",n=yield this._getResolver(r,"getAvatar");if(!n)return null;e=new Ha(this,n,r);try{const t=yield e.getAvatar();if(t)return t.url}catch(t){if(t.code!==v.errors.CALL_EXCEPTION)throw t}try{const t=La(yield this.call({to:n,data:"0x691f3431"+Kr(r).substring(2)}),0);e=yield this.getResolver(t)}catch(t){if(t.code!==v.errors.CALL_EXCEPTION)throw t;return null}}else if(e=yield this.getResolver(t),!e)return null;const r=yield e.getAvatar();return null==r?null:r.url})}perform(t,e){return Ca.throwError(t+" not implemented",v.errors.NOT_IMPLEMENTED,{operation:t})}_startEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_stopEvent(t){this.polling=this._events.filter(t=>t.pollable()).length>0}_addEventListener(t,e,r){const n=new Ba(xa(t),e,r);return this._events.push(n),this._startEvent(n),this}on(t,e){return this._addEventListener(t,e,!1)}once(t,e){return this._addEventListener(t,e,!0)}emit(t,...e){let r=!1,n=[],i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||(setTimeout(()=>{t.listener.apply(this,e)},0),r=!0,!t.once||(n.push(t),!1))),n.forEach(t=>{this._stopEvent(t)}),r}listenerCount(t){if(!t)return this._events.length;let e=xa(t);return this._events.filter(t=>t.tag===e).length}listeners(t){if(null==t)return this._events.map(t=>t.listener);let e=xa(t);return this._events.filter(t=>t.tag===e).map(t=>t.listener)}off(t,e){if(null==e)return this.removeAllListeners(t);const r=[];let n=!1,i=xa(t);return this._events=this._events.filter(t=>t.tag!==i||t.listener!=e||(!!n||(n=!0,r.push(t),!1))),r.forEach(t=>{this._stopEvent(t)}),this}removeAllListeners(t){let e=[];if(null==t)e=this._events,this._events=[];else{const r=xa(t);this._events=this._events.filter(t=>t.tag!==r||(e.push(t),!1))}return e.forEach(t=>{this._stopEvent(t)}),this}}var Ja=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const $a=new v(ya),Qa=["call","estimateGas"];function Ya(t,e){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")){const r=I(t.data)?t.data:null;if(!e||r)return{message:t.message,data:r}}if("object"==typeof t){for(const r in t){const n=Ya(t[r],e);if(n)return n}return null}if("string"==typeof t)try{return Ya(JSON.parse(t),e)}catch(t){}return null}function Xa(t,e,r){const n=r.transaction||r.signedTransaction;if("call"===t){const t=Ya(e,!0);if(t)return t.data;$a.throwError("missing revert data in call exception; Transaction reverted without a reason string",v.errors.CALL_EXCEPTION,{data:"0x",transaction:n,error:e})}if("estimateGas"===t){let r=Ya(e.body,!1);null==r&&(r=Ya(e,!1)),r&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{reason:r.message,method:t,transaction:n,error:e})}let i=e.message;throw e.code===v.errors.SERVER_ERROR&&e.error&&"string"==typeof e.error.message?i=e.error.message:"string"==typeof e.body?i=e.body:"string"==typeof e.responseText&&(i=e.responseText),i=(i||"").toLowerCase(),i.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)&&$a.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:n}),i.match(/nonce (is )?too low/i)&&$a.throwError("nonce has already been used",v.errors.NONCE_EXPIRED,{error:e,method:t,transaction:n}),i.match(/replacement transaction underpriced|transaction gas price.*too low/i)&&$a.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:n}),i.match(/only replay-protected/i)&&$a.throwError("legacy pre-eip-155 transactions not supported",v.errors.UNSUPPORTED_OPERATION,{error:e,method:t,transaction:n}),Qa.indexOf(t)>=0&&i.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&$a.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function Za(t){return new Promise(function(e){setTimeout(e,t)})}function tl(t){if(t.error){const e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function el(t){return t?t.toLowerCase():t}const rl={};class nl extends xn{constructor(t,e,r){if(super(),t!==rl)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");ft(this,"provider",e),null==r&&(r=0),"string"==typeof r?(ft(this,"_address",this.provider.formatter.address(r)),ft(this,"_index",null)):"number"==typeof r?(ft(this,"_index",r),ft(this,"_address",null)):$a.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(t){return $a.throwError("cannot alter JSON-RPC Signer connection",v.errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new il(rl,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(t=>(t.length<=this._index&&$a.throwError("unknown account #"+this._index,v.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(t[this._index])))}sendUncheckedTransaction(t){t=yt(t);const e=this.getAddress().then(t=>(t&&(t=t.toLowerCase()),t));if(null==t.gasLimit){const r=yt(t);r.from=e,t.gasLimit=this.provider.estimateGas(r)}return null!=t.to&&(t.to=Promise.resolve(t.to).then(t=>Ja(this,void 0,void 0,function*(){if(null==t)return null;const e=yield this.provider.resolveName(t);return null==e&&$a.throwArgumentError("provided ENS name resolves to null","tx.to",t),e}))),mt({tx:mt(t),sender:e}).then(({tx:e,sender:r})=>{null!=e.from?e.from.toLowerCase()!==r&&$a.throwArgumentError("from address mismatch","transaction",t):e.from=r;const n=this.provider.constructor.hexlifyTransaction(e,{from:!0});return this.provider.send("eth_sendTransaction",[n]).then(t=>t,t=>("string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected transaction",v.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:e}),Xa("sendTransaction",t,n)))})}signTransaction(t){return $a.throwError("signing transactions is unsupported",v.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(t){return Ja(this,void 0,void 0,function*(){const e=yield this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval),r=yield this.sendUncheckedTransaction(t);try{return yield da(()=>Ja(this,void 0,void 0,function*(){const t=yield this.provider.getTransaction(r);if(null!==t)return this.provider._wrapTransaction(t,r,e)}),{oncePoll:this.provider})}catch(t){throw t.transactionHash=r,t}})}signMessage(t){return Ja(this,void 0,void 0,function*(){const e="string"==typeof t?Qe(t):t,r=yield this.getAddress();try{return yield this.provider.send("personal_sign",[B(e),r.toLowerCase()])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"signMessage",from:r,messageData:t}),e}})}_legacySignMessage(t){return Ja(this,void 0,void 0,function*(){const e="string"==typeof t?Qe(t):t,r=yield this.getAddress();try{return yield this.provider.send("eth_sign",[r.toLowerCase(),B(e)])}catch(e){throw"string"==typeof e.message&&e.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:r,messageData:t}),e}})}_signTypedData(t,e,r){return Ja(this,void 0,void 0,function*(){const n=yield un.resolveNames(t,e,r,t=>this.provider.resolveName(t)),i=yield this.getAddress();try{return yield this.provider.send("eth_signTypedData_v4",[i.toLowerCase(),JSON.stringify(un.getPayload(n.domain,e,n.value))])}catch(t){throw"string"==typeof t.message&&t.message.match(/user denied/i)&&$a.throwError("user rejected signing",v.errors.ACTION_REJECTED,{action:"_signTypedData",from:i,messageData:{domain:n.domain,types:e,value:n.value}}),t}})}unlock(t){return Ja(this,void 0,void 0,function*(){const e=this.provider,r=yield this.getAddress();return e.send("personal_unlockAccount",[r.toLowerCase(),t,null])})}}class il extends nl{sendTransaction(t){return this.sendUncheckedTransaction(t).then(t=>({hash:t,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:e=>this.provider.waitForTransaction(t,e)}))}}const sl={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0};class ol extends Va{constructor(t,e){let r=e;null==r&&(r=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(e=>{t(e)},t=>{e(t)})},0)})),super(r),t||(t=pt(this.constructor,"defaultUrl")()),ft(this,"connection","string"==typeof t?Object.freeze({url:t}):Object.freeze(yt(t))),this._nextId=42}get _cache(){return null==this._eventLoopCache&&(this._eventLoopCache={}),this._eventLoopCache}static defaultUrl(){return"http://localhost:8545"}detectNetwork(){return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(()=>{this._cache.detectNetwork=null},0)),this._cache.detectNetwork}_uncachedDetectNetwork(){return Ja(this,void 0,void 0,function*(){yield Za(0);let t=null;try{t=yield this.send("eth_chainId",[])}catch(e){try{t=yield this.send("net_version",[])}catch(t){}}if(null!=t){const e=pt(this.constructor,"getNetwork");try{return e(V.from(t).toNumber())}catch(e){return $a.throwError("could not detect network",v.errors.NETWORK_ERROR,{chainId:t,event:"invalidNetwork",serverError:e})}}return $a.throwError("could not detect network",v.errors.NETWORK_ERROR,{event:"noNetwork"})})}getSigner(t){return new nl(rl,this,t)}getUncheckedSigner(t){return this.getSigner(t).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(t=>t.map(t=>this.formatter.address(t)))}send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:Et(r),provider:this});const n=["eth_chainId","eth_blockNumber"].indexOf(t)>=0;if(n&&this._cache[t])return this._cache[t];const i=ua(this.connection,JSON.stringify(r),tl).then(t=>(this.emit("debug",{action:"response",request:r,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",error:t,request:r,provider:this}),t});return n&&(this._cache[t]=i,setTimeout(()=>{this._cache[t]=null},0)),i}prepareRequest(t,e){switch(t){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[el(e.address),e.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[el(e.address),e.blockTag]];case"getCode":return["eth_getCode",[el(e.address),e.blockTag]];case"getStorageAt":return["eth_getStorageAt",[el(e.address),L(e.position,32),e.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[e.signedTransaction]];case"getBlock":return e.blockTag?["eth_getBlockByNumber",[e.blockTag,!!e.includeTransactions]]:e.blockHash?["eth_getBlockByHash",[e.blockHash,!!e.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[e.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[e.transactionHash]];case"call":return["eth_call",[pt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0}),e.blockTag]];case"estimateGas":return["eth_estimateGas",[pt(this.constructor,"hexlifyTransaction")(e.transaction,{from:!0})]];case"getLogs":return e.filter&&null!=e.filter.address&&(e.filter.address=el(e.filter.address)),["eth_getLogs",[e.filter]]}return null}perform(t,e){return Ja(this,void 0,void 0,function*(){if("call"===t||"estimateGas"===t){const t=e.transaction;if(t&&null!=t.type&&V.from(t.type).isZero()&&null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas){const r=yield this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&((e=yt(e)).transaction=yt(t),delete e.transaction.type)}}const r=this.prepareRequest(t,e);null==r&&$a.throwError(t+" not implemented",v.errors.NOT_IMPLEMENTED,{operation:t});try{return yield this.send(r[0],r[1])}catch(r){return Xa(t,r,e)}})}_startEvent(t){"pending"===t.tag&&this._startPending(),super._startEvent(t)}_startPending(){if(null!=this._pendingFilter)return;const t=this,e=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=e,e.then(function(r){return function n(){t.send("eth_getFilterChanges",[r]).then(function(r){if(t._pendingFilter!=e)return null;let n=Promise.resolve();return r.forEach(function(e){t._emitted["t:"+e.toLowerCase()]="pending",n=n.then(function(){return t.getTransaction(e).then(function(e){return t.emit("pending",e),null})})}),n.then(function(){return Za(1e3)})}).then(function(){if(t._pendingFilter==e)return setTimeout(function(){n()},0),null;t.send("eth_uninstallFilter",[r])}).catch(t=>{})}(),r}).catch(t=>{})}_stopEvent(t){"pending"===t.tag&&0===this.listenerCount("pending")&&(this._pendingFilter=null),super._stopEvent(t)}static hexlifyTransaction(t,e){const r=yt(sl);if(e)for(const t in e)e[t]&&(r[t]=!0);gt(t,r);const n={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(e){if(null==t[e])return;const r=O(V.from(t[e]));"gasLimit"===e&&(e="gas"),n[e]=r}),["from","to","data"].forEach(function(e){null!=t[e]&&(n[e]=B(t[e]))}),t.accessList&&(n.accessList=ps(t.accessList)),n}}let al=null;try{if(al=WebSocket,null==al)throw new Error("inject please")}catch(t){const e=new v(ya);al=function(){e.throwError("WebSockets not supported in this environment",v.errors.UNSUPPORTED_OPERATION,{operation:"new WebSocket()"})}}var ll=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const cl=new v(ya);let hl=1;class ul extends ol{constructor(t,e){"any"===e&&cl.throwError("WebSocketProvider does not support 'any' network yet",v.errors.UNSUPPORTED_OPERATION,{operation:"network:any"}),super("string"==typeof t?t:"_websocket",e),this._pollingInterval=-1,this._wsReady=!1,ft(this,"_websocket","string"==typeof t?new al(this.connection.url):t),ft(this,"_requests",{}),ft(this,"_subs",{}),ft(this,"_subIds",{}),ft(this,"_detectNetwork",super.detectNetwork()),this.websocket.onopen=()=>{this._wsReady=!0,Object.keys(this._requests).forEach(t=>{this.websocket.send(this._requests[t].payload)})},this.websocket.onmessage=t=>{const e=t.data,r=JSON.parse(e);if(null!=r.id){const t=String(r.id),n=this._requests[t];if(delete this._requests[t],void 0!==r.result)n.callback(null,r.result),this.emit("debug",{action:"response",request:JSON.parse(n.payload),response:r.result,provider:this});else{let t=null;r.error?(t=new Error(r.error.message||"unknown error"),ft(t,"code",r.error.code||null),ft(t,"response",e)):t=new Error("unknown error"),n.callback(t,void 0),this.emit("debug",{action:"response",error:t,request:JSON.parse(n.payload),provider:this})}}else if("eth_subscription"===r.method){const t=this._subs[r.params.subscription];t&&t.processFunc(r.params.result)}else console.warn("this should not happen")};const r=setInterval(()=>{this.emit("poll")},1e3);r.unref&&r.unref()}get websocket(){return this._websocket}detectNetwork(){return this._detectNetwork}get pollingInterval(){return 0}resetEventsBlock(t){cl.throwError("cannot reset events block on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"resetEventBlock"})}set pollingInterval(t){cl.throwError("cannot set polling interval on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"setPollingInterval"})}poll(){return ll(this,void 0,void 0,function*(){return null})}set polling(t){t&&cl.throwError("cannot set polling on WebSocketProvider",v.errors.UNSUPPORTED_OPERATION,{operation:"setPolling"})}send(t,e){const r=hl++;return new Promise((n,i)=>{const s=JSON.stringify({method:t,params:e,id:r,jsonrpc:"2.0"});this.emit("debug",{action:"request",request:JSON.parse(s),provider:this}),this._requests[String(r)]={callback:function(t,e){return t?i(t):n(e)},payload:s},this._wsReady&&this.websocket.send(s)})}static defaultUrl(){return"ws://localhost:8546"}_subscribe(t,e,r){return ll(this,void 0,void 0,function*(){let n=this._subIds[t];null==n&&(n=Promise.all(e).then(t=>this.send("eth_subscribe",t)),this._subIds[t]=n);const i=yield n;this._subs[i]={tag:t,processFunc:r}})}_startEvent(t){switch(t.type){case"block":this._subscribe("block",["newHeads"],t=>{const e=V.from(t.number).toNumber();this._emitted.block=e,this.emit("block",e)});break;case"pending":this._subscribe("pending",["newPendingTransactions"],t=>{this.emit("pending",t)});break;case"filter":this._subscribe(t.tag,["logs",this._getFilter(t.filter)],e=>{null==e.removed&&(e.removed=!1),this.emit(t.filter,this.formatter.filterLog(e))});break;case"tx":{const e=t=>{const e=t.hash;this.getTransactionReceipt(e).then(t=>{t&&this.emit(e,t)})};e(t),this._subscribe("tx",["newHeads"],t=>{this._events.filter(t=>"tx"===t.type).forEach(e)});break}case"debug":case"poll":case"willPoll":case"didPoll":case"error":break;default:console.log("unhandled:",t)}}_stopEvent(t){let e=t.tag;if("tx"===t.type){if(this._events.filter(t=>"tx"===t.type).length)return;e="tx"}else if(this.listenerCount(t.event))return;const r=this._subIds[e];r&&(delete this._subIds[e],r.then(t=>{this._subs[t]&&(delete this._subs[t],this.send("eth_unsubscribe",[t]))}))}destroy(){return ll(this,void 0,void 0,function*(){this.websocket.readyState===al.CONNECTING&&(yield new Promise(t=>{this.websocket.onopen=function(){t(!0)},this.websocket.onerror=function(){t(!1)}})),this.websocket.close(1e3)})}}var dl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const fl=new v(ya);class pl extends ol{detectNetwork(){const t=Object.create(null,{detectNetwork:{get:()=>super.detectNetwork}});return dl(this,void 0,void 0,function*(){let e=this.network;return null==e&&(e=yield t.detectNetwork.call(this),e||fl.throwError("no network detected",v.errors.UNKNOWN_ERROR,{}),null==this._network&&(ft(this,"_network",e),this.emit("network",e,null))),e})}}class ml extends pl{constructor(t,e){fl.checkAbstract(new.target,ml),t=pt(new.target,"getNetwork")(t),e=pt(new.target,"getApiKey")(e);super(pt(new.target,"getUrl")(t,e),t),"string"==typeof e?ft(this,"apiKey",e):null!=e&&Object.keys(e).forEach(t=>{ft(this,t,e[t])})}_startPending(){fl.warn("WARNING: API provider does not support pending filters")}isCommunityResource(){return!1}getSigner(t){return fl.throwError("API provider does not support signing",v.errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(t){return t}static getUrl(t,e){return fl.throwError("not implemented; sub-classes must override getUrl",v.errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const gl=new v(ya),yl="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class wl extends ul{constructor(t,e){const r=new vl(t,e);super(r.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi."),r.network),ft(this,"apiKey",r.apiKey)}isCommunityResource(){return this.apiKey===yl}}class vl extends ml{static getWebSocketProvider(t,e){return new wl(t,e)}static getApiKey(t){return null==t?yl:(t&&"string"!=typeof t&&gl.throwArgumentError("invalid apiKey","apiKey",t),t)}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":r="eth-goerli.g.alchemy.com/v2/";break;case"sepolia":r="eth-sepolia.g.alchemy.com/v2/";break;case"matic":r="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":r="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":r="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":r="arb-goerli.g.alchemy.com/v2/";break;case"arbitrum-sepolia":r="arb-sepolia.g.alchemy.com/v2/";break;case"optimism":r="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":r="opt-goerli.g.alchemy.com/v2/";break;case"optimism-sepolia":r="opt-sepolia.g.alchemy.com/v2/";break;default:gl.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+r+e,throttleCallback:(t,r)=>(e===yl&&ka(),Promise.resolve(!0))}}isCommunityResource(){return this.apiKey===yl}}const bl=new v(ya),El="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function Al(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"sepolia":return"rpc.ankr.com/eth_sepolia/";case"matic":return"rpc.ankr.com/polygon/";case"maticmum":return"rpc.ankr.com/polygon_mumbai/";case"optimism":return"rpc.ankr.com/optimism/";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet/";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return bl.throwArgumentError("unsupported network","name",t)}class kl extends ml{isCommunityResource(){return this.apiKey===El}static getApiKey(t){return null==t?El:t}static getUrl(t,e){null==e&&(e=El);const r={allowGzip:!0,url:"https://"+Al(t.name)+e,throttleCallback:(t,r)=>(e.apiKey===El&&ka(),Promise.resolve(!0))};return null!=e.projectSecret&&(r.user="",r.password=e.projectSecret),r}}var Sl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Cl=new v(ya);class _l extends ml{static getApiKey(t){return null!=t&&Cl.throwArgumentError("apiKey not supported for cloudflare","apiKey",t),null}static getUrl(t,e){let r=null;if("homestead"===t.name)r="https://cloudflare-eth.com/";else Cl.throwArgumentError("unsupported network","network",arguments[0]);return r}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Sl(this,void 0,void 0,function*(){if("getBlockNumber"===t){return(yield r.perform.call(this,"getBlock",{blockTag:"latest"})).number}return r.perform.call(this,t,e)})}}var Nl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const xl=new v(ya);function Tl(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?O(B(n)):"accessList"===r?"["+ps(n).map(t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`).join(",")+"]":B(n),e[r]=n)}return e}function Il(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"string"!=typeof t.message||!t.message.match(/^OK/)){const e=new Error("invalid response");throw e.result=JSON.stringify(t),(t.result||"").toLowerCase().indexOf("rate limit")>=0&&(e.throttleRetry=!0),e}return t.result}function Pl(t){if(t&&0==t.status&&"NOTOK"==t.message&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){const e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if("2.0"!=t.jsonrpc){const e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){const e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function Bl(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}function Ml(t,e,r){if("call"===t&&e.code===v.errors.SERVER_ERROR){const t=e.error;if(t&&(t.message.match(/reverted/i)||t.message.match(/VM execution error/i))){let r=t.data;if(r&&(r="0x"+r.replace(/^.*0x/i,"")),I(r))return r;xl.throwError("missing revert data in call exception",v.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}let n=e.message;throw e.code===v.errors.SERVER_ERROR&&(e.error&&"string"==typeof e.error.message?n=e.error.message:"string"==typeof e.body?n=e.body:"string"==typeof e.responseText&&(n=e.responseText)),n=(n||"").toLowerCase(),n.match(/insufficient funds/)&&xl.throwError("insufficient funds for intrinsic transaction cost",v.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),n.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&xl.throwError("nonce has already been used",v.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),n.match(/another transaction with same nonce/)&&xl.throwError("replacement fee too low",v.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),n.match(/execution failed due to an exception|execution reverted/)&&xl.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",v.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}class Rl extends Va{constructor(t,e){super(t),ft(this,"baseUrl",this.getBaseUrl()),ft(this,"apiKey",e||null)}getBaseUrl(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}return xl.throwArgumentError("unsupported network","network",this.network.name)}getUrl(t,e){const r=Object.keys(e).reduce((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t},""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.baseUrl}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.baseUrl}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}fetch(t,e,r){return Nl(this,void 0,void 0,function*(){const n=r?this.getPostUrl():this.getUrl(t,e),i=r?this.getPostData(t,e):null,s="proxy"===t?Pl:Il;this.emit("debug",{action:"request",request:n,provider:this});const o={url:n,throttleSlotInterval:1e3,throttleCallback:(t,e)=>(this.isCommunityResource()&&ka(),Promise.resolve(!0))};let a=null;i&&(o.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},a=Object.keys(i).map(t=>`${t}=${i[t]}`).join("&"));const l=yield ua(o,a,s||Pl);return this.emit("debug",{action:"response",request:n,response:Et(l),provider:this}),l})}detectNetwork(){return Nl(this,void 0,void 0,function*(){return this.network})}perform(t,e){const r=Object.create(null,{perform:{get:()=>super.perform}});return Nl(this,void 0,void 0,function*(){switch(t){case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:e.address,tag:e.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:e.address,tag:e.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:e.address,tag:e.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:e.address,position:e.position,tag:e.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:e.signedTransaction},!0).catch(t=>Ml("sendTransaction",t,e.signedTransaction));case"getBlock":if(e.blockTag)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:e.blockTag,boolean:e.includeTransactions?"true":"false"});throw new Error("getBlock by blockHash not implemented");case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:e.transactionHash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:e.transactionHash});case"call":{if("latest"!==e.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const t=Tl(e.transaction);t.module="proxy",t.action="eth_call";try{return yield this.fetch("proxy",t,!0)}catch(t){return Ml("call",t,e.transaction)}}case"estimateGas":{const t=Tl(e.transaction);t.module="proxy",t.action="eth_estimateGas";try{return yield this.fetch("proxy",t,!0)}catch(t){return Ml("estimateGas",t,e.transaction)}}case"getLogs":{const t={action:"getLogs"};if(e.filter.fromBlock&&(t.fromBlock=Bl(e.filter.fromBlock)),e.filter.toBlock&&(t.toBlock=Bl(e.filter.toBlock)),e.filter.address&&(t.address=e.filter.address),e.filter.topics&&e.filter.topics.length>0&&(e.filter.topics.length>1&&xl.throwError("unsupported topic count",v.errors.UNSUPPORTED_OPERATION,{topics:e.filter.topics}),1===e.filter.topics.length)){const r=e.filter.topics[0];"string"==typeof r&&66===r.length||xl.throwError("unsupported topic format",v.errors.UNSUPPORTED_OPERATION,{topic0:r}),t.topic0=r}const r=yield this.fetch("logs",t);let n={};for(let t=0;t<r.length;t++){const e=r[t];if(null==e.blockHash){if(null==n[e.blockNumber]){const t=yield this.getBlock(e.blockNumber);t&&(n[e.blockNumber]=t.hash)}e.blockHash=n[e.blockNumber]}}return r}case"getEtherPrice":return"homestead"!==this.network.name?0:parseFloat((yield this.fetch("stats",{action:"ethprice"})).ethusd)}return r.perform.call(this,t,e)})}getHistory(t,e,r){return Nl(this,void 0,void 0,function*(){const n={action:"txlist",address:yield this.resolveName(t),startblock:null==e?0:e,endblock:null==r?99999999:r,sort:"asc"};return(yield this.fetch("account",n)).map(t=>{["contractAddress","to"].forEach(function(e){""==t[e]&&delete t[e]}),null==t.creates&&null!=t.contractAddress&&(t.creates=t.contractAddress);const e=this.formatter.transactionResponse(t);return t.timeStamp&&(e.timestamp=parseInt(t.timeStamp)),e})})}isCommunityResource(){return null==this.apiKey}}var Fl=function(t,e,r,n){return new(r||(r=Promise))(function(i,s){function o(t){try{l(n.next(t))}catch(t){s(t)}}function a(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(o,a)}l((n=n.apply(t,e||[])).next())})};const Ol=new v(ya);function Dl(){return(new Date).getTime()}function Ll(t){let e=null;for(let r=0;r<t.length;r++){const n=t[r];if(null==n)return null;e?e.name===n.name&&e.chainId===n.chainId&&(e.ensAddress===n.ensAddress||null==e.ensAddress&&null==n.ensAddress)||Ol.throwArgumentError("provider mismatch","networks",t):e=n}return e}function Ul(t,e){t=t.slice().sort();const r=Math.floor(t.length/2);if(t.length%2)return t[r];const n=t[r-1],i=t[r];return null!=e&&Math.abs(n-i)>e?null:(n+i)/2}function zl(t){if(null===t)return"null";if("number"==typeof t||"boolean"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t;if(V.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(t=>zl(t)));if("object"==typeof t){const e=Object.keys(t);return e.sort(),"{"+e.map(e=>{let r=t[e];return r="function"==typeof r?"[function]":zl(r),JSON.stringify(e)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}let ql=1;function jl(t){let e=null,r=null,n=new Promise(n=>{e=function(){r&&(clearTimeout(r),r=null),n()},r=setTimeout(e,t)});return{cancel:e,getPromise:function(){return n},wait:t=>(n=n.then(t),n)}}const Gl=[v.errors.CALL_EXCEPTION,v.errors.INSUFFICIENT_FUNDS,v.errors.NONCE_EXPIRED,v.errors.REPLACEMENT_UNDERPRICED,v.errors.UNPREDICTABLE_GAS_LIMIT],Hl=["address","args","errorArgs","errorSignature","method","transaction"];function Wl(t,e){const r={weight:t.weight};return Object.defineProperty(r,"provider",{get:()=>t.provider}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function Kl(t,e,r){let n=zl;switch(e){case"getBlockNumber":return function(e){const r=e.map(t=>t.result);let n=Ul(e.map(t=>t.result),2);if(null!=n)return n=Math.ceil(n),r.indexOf(n+1)>=0&&n++,n>=t._highestBlockNumber&&(t._highestBlockNumber=n),t._highestBlockNumber};case"getGasPrice":return function(t){const e=t.map(t=>t.result);return e.sort(),e[Math.floor(e.length/2)]};case"getEtherPrice":return function(t){return Ul(t.map(t=>t.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(t){return null==t?null:((t=yt(t)).confirmations=-1,zl(t))};break;case"getBlock":n=r.includeTransactions?function(t){return null==t?null:((t=yt(t)).transactions=t.transactions.map(t=>((t=yt(t)).confirmations=-1,t)),zl(t))}:function(t){return null==t?null:zl(t)};break;default:throw new Error("unknown method: "+e)}return function(t,e){return function(r){const n={};r.forEach(e=>{const r=t(e.result);n[r]||(n[r]={count:0,result:e.result}),n[r].count++});const i=Object.keys(n);for(let t=0;t<i.length;t++){const r=n[i[t]];if(r.count>=e)return r.result}}}(n,t.quorum)}function Vl(t,e){return Fl(this,void 0,void 0,function*(){const r=t.provider;return null!=r.blockNumber&&r.blockNumber>=e||-1===e?r:da(()=>new Promise((n,i)=>{setTimeout(function(){return r.blockNumber>=e?n(r):t.cancelled?n(null):n(void 0)},0)}),{oncePoll:r})})}function Jl(t,e,r,n){return Fl(this,void 0,void 0,function*(){let i=t.provider;switch(r){case"getBlockNumber":case"getGasPrice":return i[r]();case"getEtherPrice":if(i.getEtherPrice)return i.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i[r](n.address,n.blockTag||"latest");case"getStorageAt":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i.getStorageAt(n.address,n.position,n.blockTag||"latest");case"getBlock":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash);case"call":case"estimateGas":return n.blockTag&&I(n.blockTag)&&(i=yield Vl(t,e)),"call"===r&&n.blockTag?i[r](n.transaction,n.blockTag):i[r](n.transaction);case"getTransaction":case"getTransactionReceipt":return i[r](n.transactionHash);case"getLogs":{let r=n.filter;return(r.fromBlock&&I(r.fromBlock)||r.toBlock&&I(r.toBlock))&&(i=yield Vl(t,e)),i.getLogs(r)}}return Ol.throwError("unknown method error",v.errors.UNKNOWN_ERROR,{method:r,params:n})})}class $l extends Va{constructor(t,e){0===t.length&&Ol.throwArgumentError("missing providers","providers",t);const r=t.map((t,e)=>{if(kn.isProvider(t)){const e=Ea(t)?2e3:750,r=1;return Object.freeze({provider:t,weight:1,stallTimeout:e,priority:r})}const r=yt(t);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=Ea(t)?2e3:750),null==r.weight&&(r.weight=1);const n=r.weight;return(n%1||n>512||n<1)&&Ol.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${e}].weight`,n),Object.freeze(r)}),n=r.reduce((t,e)=>t+e.weight,0);null==e?e=n/2:e>n&&Ol.throwArgumentError("quorum will always fail; larger than total weight","quorum",e);let i=Ll(r.map(t=>t.provider.network));null==i&&(i=new Promise((t,e)=>{setTimeout(()=>{this.detectNetwork().then(t,e)},0)})),super(i),ft(this,"providerConfigs",Object.freeze(r)),ft(this,"quorum",e),this._highestBlockNumber=-1}detectNetwork(){return Fl(this,void 0,void 0,function*(){return Ll(yield Promise.all(this.providerConfigs.map(t=>t.provider.getNetwork())))})}perform(t,e){return Fl(this,void 0,void 0,function*(){if("sendTransaction"===t){const t=yield Promise.all(this.providerConfigs.map(t=>t.provider.sendTransaction(e.signedTransaction).then(t=>t.hash,t=>t)));for(let e=0;e<t.length;e++){const r=t[e];if("string"==typeof r)return r}throw t[0]}-1===this._highestBlockNumber&&"getBlockNumber"!==t&&(yield this.getBlockNumber());const r=Kl(this,t,e),n=yo(this.providerConfigs.map(yt));n.sort((t,e)=>t.priority-e.priority);const i=this._highestBlockNumber;let s=0,o=!0;for(;;){const a=Dl();let l=n.filter(t=>t.runner&&a-t.start<t.stallTimeout).reduce((t,e)=>t+e.weight,0);for(;l<this.quorum&&s<n.length;){const r=n[s++],o=ql++;r.start=Dl(),r.staller=jl(r.stallTimeout),r.staller.wait(()=>{r.staller=null}),r.runner=Jl(r,i,t,e).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,Dl()),request:{method:t,params:Et(e)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,Dl()),request:{method:t,params:Et(e)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:o,backend:Wl(r,null),request:{method:t,params:Et(e)},provider:this}),l+=r.weight}const c=[];n.forEach(t=>{!t.done&&t.runner&&(c.push(t.runner),t.staller&&c.push(t.staller.getPromise()))}),c.length&&(yield Promise.race(c));const h=n.filter(t=>t.done&&null==t.error);if(h.length>=this.quorum){const t=r(h);if(void 0!==t)return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),t;o||(yield jl(100).getPromise()),o=!1}const u=n.reduce((t,e)=>{if(!e.done||null==e.error)return t;const r=e.error.code;return Gl.indexOf(r)>=0&&(t[r]||(t[r]={error:e.error,weight:0}),t[r].weight+=e.weight),t},{});if(Object.keys(u).forEach(t=>{const e=u[t];if(e.weight<this.quorum)return;n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0});const r=e.error,i={};Hl.forEach(t=>{null!=r[t]&&(i[t]=r[t])}),Ol.throwError(r.reason||r.message,t,i)}),0===n.filter(t=>!t.done).length)break}return n.forEach(t=>{t.staller&&t.staller.cancel(),t.cancelled=!0}),Ol.throwError("failed to meet quorum",v.errors.SERVER_ERROR,{method:t,params:e,results:n.map(t=>Wl(t)),provider:this})})}}const Ql=new v(ya),Yl="84842078b09946638c03157f83405213";class Xl extends ul{constructor(t,e){const r=new Zl(t,e),n=r.connection;n.password&&Ql.throwError("INFURA WebSocket project secrets unsupported",v.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});super(n.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t),ft(this,"apiKey",r.projectId),ft(this,"projectId",r.projectId),ft(this,"projectSecret",r.projectSecret)}isCommunityResource(){return this.projectId===Yl}}class Zl extends ml{static getWebSocketProvider(t,e){return new Xl(t,e)}static getApiKey(t){const e={apiKey:Yl,projectId:Yl,projectSecret:null};return null==t||("string"==typeof t?e.projectId=t:null!=t.projectSecret?(Ql.assertArgument("string"==typeof t.projectId,"projectSecret requires a projectId","projectId",t.projectId),Ql.assertArgument("string"==typeof t.projectSecret,"invalid projectSecret","projectSecret","[REDACTED]"),e.projectId=t.projectId,e.projectSecret=t.projectSecret):t.projectId&&(e.projectId=t.projectId),e.apiKey=e.projectId),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"homestead":r="mainnet.infura.io";break;case"goerli":r="goerli.infura.io";break;case"sepolia":r="sepolia.infura.io";break;case"matic":r="polygon-mainnet.infura.io";break;case"maticmum":r="polygon-mumbai.infura.io";break;case"optimism":r="optimism-mainnet.infura.io";break;case"optimism-goerli":r="optimism-goerli.infura.io";break;case"optimism-sepolia":r="optimism-sepolia.infura.io";break;case"arbitrum":r="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":r="arbitrum-goerli.infura.io";break;case"arbitrum-sepolia":r="arbitrum-sepolia.infura.io";break;default:Ql.throwError("unsupported network",v.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={allowGzip:!0,url:"https://"+r+"/v3/"+e.projectId,throttleCallback:(t,r)=>(e.projectId===Yl&&ka(),Promise.resolve(!0))};return null!=e.projectSecret&&(n.user="",n.password=e.projectSecret),n}isCommunityResource(){return this.projectId===Yl}}const tc=new v(ya);class ec extends ml{static getApiKey(t){return t&&"string"!=typeof t&&tc.throwArgumentError("invalid apiKey","apiKey",t),t||"ETHERS_JS_SHARED"}static getUrl(t,e){tc.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(t.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:tc.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+e}}const rc=new v(ya),nc="62e1ad51b37b8e00394bda3b";class ic extends ml{static getApiKey(t){const e={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return null==t?e.applicationId=nc:"string"==typeof t?e.applicationId=t:null!=t.applicationSecretKey?(e.applicationId=t.applicationId,e.applicationSecretKey=t.applicationSecretKey):t.applicationId?e.applicationId=t.applicationId:rc.throwArgumentError("unsupported PocketProvider apiKey","apiKey",t),e}static getUrl(t,e){let r=null;switch(t?t.name:"unknown"){case"goerli":r="eth-goerli.gateway.pokt.network";break;case"homestead":r="eth-mainnet.gateway.pokt.network";break;case"kovan":r="poa-kovan.gateway.pokt.network";break;case"matic":r="poly-mainnet.gateway.pokt.network";break;case"maticmum":r="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":r="eth-rinkeby.gateway.pokt.network";break;case"ropsten":r="eth-ropsten.gateway.pokt.network";break;default:rc.throwError("unsupported network",v.errors.INVALID_ARGUMENT,{argument:"network",value:t})}const n={headers:{},url:`https://${r}/v1/lb/${e.applicationId}`};return null!=e.applicationSecretKey&&(n.user="",n.password=e.applicationSecretKey),n}isCommunityResource(){return this.applicationId===nc}}const sc=new v(ya);class oc extends ml{static getApiKey(t){return t&&"string"!=typeof t&&sc.throwArgumentError("invalid apiKey","apiKey",t),t||"919b412a057b5e9c9b6dce193c5a60242d6efadb"}static getUrl(t,e){let r=null;switch(t.name){case"homestead":r="ethers.quiknode.pro";break;case"goerli":r="ethers.ethereum-goerli.quiknode.pro";break;case"sepolia":r="ethers.ethereum-sepolia.quiknode.pro";break;case"holesky":r="ethers.ethereum-holesky.quiknode.pro";break;case"arbitrum":r="ethers.arbitrum-mainnet.quiknode.pro";break;case"arbitrum-goerli":r="ethers.arbitrum-goerli.quiknode.pro";break;case"arbitrum-sepolia":r="ethers.arbitrum-sepolia.quiknode.pro";break;case"base":r="ethers.base-mainnet.quiknode.pro";break;case"base-goerli":r="ethers.base-goerli.quiknode.pro";break;case"base-spolia":r="ethers.base-sepolia.quiknode.pro";break;case"bnb":r="ethers.bsc.quiknode.pro";break;case"bnbt":r="ethers.bsc-testnet.quiknode.pro";break;case"matic":r="ethers.matic.quiknode.pro";break;case"maticmum":r="ethers.matic-testnet.quiknode.pro";break;case"optimism":r="ethers.optimism.quiknode.pro";break;case"optimism-goerli":r="ethers.optimism-goerli.quiknode.pro";break;case"optimism-sepolia":r="ethers.optimism-sepolia.quiknode.pro";break;case"xdai":r="ethers.xdai.quiknode.pro";break;default:sc.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+"/"+e}}const ac=new v(ya);let lc=1;function cc(t,e){const r="Web3LegacyFetcher";return function(t,n){const i={method:t,params:n,id:lc++,jsonrpc:"2.0"};return new Promise((t,n)=>{this.emit("debug",{action:"request",fetcher:r,request:Et(i),provider:this}),e(i,(e,s)=>{if(e)return this.emit("debug",{action:"response",fetcher:r,error:e,request:i,provider:this}),n(e);if(this.emit("debug",{action:"response",fetcher:r,request:i,response:s,provider:this}),s.error){const t=new Error(s.error.message);return t.code=s.error.code,t.data=s.error.data,n(t)}t(s.result)})})}}class hc extends ol{constructor(t,e){null==t&&ac.throwArgumentError("missing provider","provider",t);let r=null,n=null,i=null;"function"==typeof t?(r="unknown:",n=t):(r=t.host||t.path||"",!r&&t.isMetaMask&&(r="metamask"),i=t,t.request?(""===r&&(r="eip-1193:"),n=function(t){return function(e,r){null==r&&(r=[]);const n={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:Et(n),provider:this}),t.request(n).then(t=>(this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,response:t,provider:this}),t),t=>{throw this.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:n,error:t,provider:this}),t})}}(t)):t.sendAsync?n=cc(0,t.sendAsync.bind(t)):t.send?n=cc(0,t.send.bind(t)):ac.throwArgumentError("unsupported provider","provider",t),r||(r="unknown:")),super(r,e),ft(this,"jsonRpcFetchFunc",n),ft(this,"provider",i)}send(t,e){return this.jsonRpcFetchFunc(t,e)}}const uc=new v(ya);function dc(t,e){if(null==t&&(t="homestead"),"string"==typeof t){const e=t.match(/^(ws|http)s?:/i);if(e)switch(e[1].toLowerCase()){case"http":case"https":return new ol(t);case"ws":case"wss":return new ul(t);default:uc.throwArgumentError("unsupported URL scheme","network",t)}}const r=na(t);return r&&r._defaultProvider||uc.throwError("unsupported getDefaultProvider network",v.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),r._defaultProvider({FallbackProvider:$l,AlchemyProvider:vl,AnkrProvider:kl,CloudflareProvider:_l,EtherscanProvider:Rl,InfuraProvider:Zl,JsonRpcProvider:ol,NodesmithProvider:ec,PocketProvider:ic,QuickNodeProvider:oc,Web3Provider:hc,IpcProvider:null},e)}var fc=Object.freeze({__proto__:null,AlchemyProvider:vl,AlchemyWebSocketProvider:wl,AnkrProvider:kl,BaseProvider:Va,CloudflareProvider:_l,EtherscanProvider:Rl,FallbackProvider:$l,Formatter:va,InfuraProvider:Zl,InfuraWebSocketProvider:Xl,IpcProvider:null,JsonRpcBatchProvider:class extends ol{send(t,e){const r={method:t,params:e,id:this._nextId++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const n={request:r,resolve:null,reject:null},i=new Promise((t,e)=>{n.resolve=t,n.reject=e});return this._pendingBatch.push(n),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(()=>{const t=this._pendingBatch;this._pendingBatch=null,this._pendingBatchAggregator=null;const e=t.map(t=>t.request);return this.emit("debug",{action:"requestBatch",request:Et(e),provider:this}),ua(this.connection,JSON.stringify(e)).then(r=>{this.emit("debug",{action:"response",request:e,response:r,provider:this}),t.forEach((t,e)=>{const n=r[e];if(n.error){const e=new Error(n.error.message);e.code=n.error.code,e.data=n.error.data,t.reject(e)}else t.resolve(n.result)})},r=>{this.emit("debug",{action:"response",error:r,request:e,provider:this}),t.forEach(t=>{t.reject(r)})})},10)),i}},JsonRpcProvider:ol,JsonRpcSigner:nl,NodesmithProvider:ec,PocketProvider:ic,Provider:kn,QuickNodeProvider:oc,Resolver:Ha,StaticJsonRpcProvider:pl,UrlJsonRpcProvider:ml,Web3Provider:hc,WebSocketProvider:ul,getDefaultProvider:dc,getNetwork:na,isCommunityResourcable:ba,isCommunityResource:Ea,showThrottleMessage:ka});const pc=new RegExp("^bytes([0-9]+)$"),mc=new RegExp("^(u?int)([0-9]*)$"),gc=new RegExp("^(.*)\\[([0-9]*)\\]$"),yc=new v("solidity/5.8.0");function wc(t,e,r){switch(t){case"address":return r?T(e,32):_(e);case"string":return Qe(e);case"bytes":return _(e);case"bool":return e=e?"0x01":"0x00",r?T(e,32):_(e)}let n=t.match(mc);if(n){let i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!=0||0===i||i>256)&&yc.throwArgumentError("invalid number type","type",t),r&&(i=256),T(e=V.from(e).toTwos(i),i/8)}if(n=t.match(pc),n){const i=parseInt(n[1]);return(String(i)!==n[1]||0===i||i>32)&&yc.throwArgumentError("invalid bytes type","type",t),_(e).byteLength!==i&&yc.throwArgumentError(`invalid value for ${t}`,"value",e),r?_((e+"0000000000000000000000000000000000000000000000000000000000000000").substring(0,66)):e}if(n=t.match(gc),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&yc.throwArgumentError(`invalid array length for ${t}`,"value",e);const i=[];return e.forEach(function(t){i.push(wc(r,t,!0))}),N(i)}return yc.throwArgumentError("invalid type","type",t)}function vc(t,e){t.length!=e.length&&yc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach(function(t,n){r.push(wc(t,e[n]))}),B(N(r))}const bc=new v("units/5.8.0"),Ec=["wei","kwei","mwei","gwei","szabo","finney","ether"];function Ac(t,e){if("string"==typeof e){const t=Ec.indexOf(e);-1!==t&&(e=3*t)}return st(t,null!=e?e:18)}function kc(t,e){if("string"!=typeof t&&bc.throwArgumentError("value must be a string","value",t),"string"==typeof e){const t=Ec.indexOf(e);-1!==t&&(e=3*t)}return ot(t,null!=e?e:18)}function Sc(t){return Ac(t,18)}function Cc(t){return kc(t,18)}var _c=Object.freeze({__proto__:null,AbiCoder:gr,ConstructorFragment:Ut,ErrorFragment:jt,EventFragment:Ft,FormatTypes:It,Fragment:Rt,FunctionFragment:zt,HDNode:lo,Indexed:gn,Interface:vn,LogDescription:fn,Logger:v,ParamType:Bt,RLP:de,SigningKey:es,get SupportedAlgorithm(){return Us},TransactionDescription:pn,get TransactionTypes(){return ss},get UnicodeNormalizationForm(){return We},Utf8ErrorFuncs:Je,get Utf8ErrorReason(){return Ke},_TypedDataEncoder:un,_fetchData:ha,_toEscapedUtf8String:function(t,e){return'"'+$e(t,e).map(t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?Ye(t):Ye(55296+((t-=65536)>>10&1023))+Ye(56320+(1023&t))}).join("")+'"'},accessListify:ps,arrayify:_,base58:Ls,base64:Ar,checkProperties:gt,checkResultErrors:Jt,commify:function(t){const e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||"."===t||"-."===t)&&bc.throwArgumentError("invalid value","value",t);let r=e[0],n="";for("-"===r.substring(0,1)&&(n="-",r=r.substring(1));"0"===r.substring(0,1);)r=r.substring(1);""===r&&(r="0");let i="";for(2===e.length&&(i="."+(e[1]||"0"));i.length>2&&"0"===i[i.length-1];)i=i.substring(0,i.length-1);const s=[];for(;r.length;){if(r.length<=3){s.unshift(r);break}{const t=r.length-3;s.unshift(r.substring(t)),r=r.substring(0,t)}}return n+s.join(",")+i},computeAddress:hs,computeHmac:Gs,computePublicKey:ns,concat:N,deepCopy:Et,defaultAbiCoder:yr,defaultPath:ao,defineReadOnly:ft,dnsEncode:Vr,entropyToMnemonic:uo,fetchJson:ua,formatBytes32String:function(t){const e=Qe(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return B(N([e,qe]).slice(0,32))},formatEther:Sc,formatUnits:Ac,getAccountPath:function(t){return("number"!=typeof t||t<0||t>=to||t%1)&&Ys.throwArgumentError("invalid account index","index",t),`m/44'/60'/${t}'/0/0`},getAddress:ve,getContractAddress:be,getCreate2Address:function(t,e,r){return 32!==M(e)&&fe.throwArgumentError("salt must be 32 bytes","salt",e),32!==M(r)&&fe.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ve(R(ne(N(["0xff",ve(t),e,r])),12))},getIcapAddress:function(t){let e=(r=ve(t).substring(2),new j(r,16).toString(36)).toUpperCase();for(var r;e.length<30;)e="0"+e;return"XE"+we("XE00"+e)+e},getJsonWalletAddress:function(t){if(Po(t))try{return ve(JSON.parse(t).ethaddr)}catch(t){return null}if(Bo(t))try{return ve(JSON.parse(t).address)}catch(t){return null}return null},getStatic:pt,hashMessage:Jr,hexConcat:F,hexDataLength:M,hexDataSlice:R,hexStripZeros:D,hexValue:O,hexZeroPad:L,hexlify:B,id:wr,isAddress:function(t){try{return ve(t),!0}catch(t){}return!1},isBytes:C,isBytesLike:k,isHexString:I,isValidMnemonic:function(t,e){try{return ho(t,e),!0}catch(t){}return!1},isValidName:function(t){try{return 0!==Wr(t).length}catch(t){}return!1},joinSignature:z,keccak256:ne,mnemonicToEntropy:ho,mnemonicToSeed:co,namehash:Kr,nameprep:function(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();let e=tr(t);var r;r=e.map(t=>{if(sr.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){let e=nr(t,or);if(e)return[t+e.s];let r=ar[t];if(r)return r;let n=lr[t];return n?[t+n[0]]:cr[t]||null}(t);return e||[t]}),e=r.reduce((t,e)=>(e.forEach(e=>{t.push(e)}),t),[]),e=tr(Xe(e),We.NFKC),e.forEach(t=>{if(nr(t,hr))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(t=>{if(nr(t,ir))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});let n=Xe(e);if("-"===n.substring(0,1)||"--"===n.substring(2,4)||"-"===n.substring(n.length-1))throw new Error("invalid hyphen");return n},parseBytes32String:function(t){const e=_(t);if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return Ze(e.slice(0,r))},parseEther:Cc,parseTransaction:bs,parseUnits:kc,poll:da,randomBytes:go,recoverAddress:us,recoverPublicKey:rs,resolveProperties:mt,ripemd160:qs,serializeTransaction:ws,sha256:js,sha512:function(t){return"0x"+mi.sha512().update(_(t)).digest("hex")},shallowCopy:yt,shuffled:yo,solidityKeccak256:function(t,e){return ne(vc(t,e))},solidityPack:vc,soliditySha256:function(t,e){return js(vc(t,e))},splitSignature:U,stripZeros:x,toUtf8Bytes:Qe,toUtf8CodePoints:tr,toUtf8String:Ze,verifyMessage:function(t,e){return us(Jr(t),e)},verifyTypedData:function(t,e,r,n){return us(un.hash(t,e,r),n)},zeroPad:T});const Nc="ethers/5.8.0",xc=new v(Nc);var Tc=Object.freeze({__proto__:null,BaseContract:Fs,BigNumber:V,Contract:Os,ContractFactory:class{constructor(t,e,r){let n=null;n="string"==typeof e?e:C(e)?B(e):e&&"string"==typeof e.object?e.object:"!","0x"!==n.substring(0,2)&&(n="0x"+n),(!I(n)||n.length%2)&&As.throwArgumentError("invalid bytecode","bytecode",e),r&&!xn.isSigner(r)&&As.throwArgumentError("invalid signer","signer",r),ft(this,"bytecode",n),ft(this,"interface",pt(new.target,"getInterface")(t)),ft(this,"signer",r||null)}getDeployTransaction(...t){let e={};if(t.length===this.interface.deploy.inputs.length+1&&"object"==typeof t[t.length-1]){e=yt(t.pop());for(const t in e)if(!ks[t])throw new Error("unknown transaction override "+t)}if(["data","from","to"].forEach(t=>{null!=e[t]&&As.throwError("cannot override "+t,v.errors.UNSUPPORTED_OPERATION,{operation:t})}),e.value){V.from(e.value).isZero()||this.interface.deploy.payable||As.throwError("non-payable constructor cannot override value",v.errors.UNSUPPORTED_OPERATION,{operation:"overrides.value",value:e.value})}return As.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor"),e.data=B(N([this.bytecode,this.interface.encodeDeploy(t)])),e}deploy(...t){return Es(this,void 0,void 0,function*(){let e={};t.length===this.interface.deploy.inputs.length+1&&(e=t.pop()),As.checkArgumentCount(t.length,this.interface.deploy.inputs.length," in Contract constructor");const r=yield Cs(this.signer,t,this.interface.deploy.inputs);r.push(e);const n=this.getDeployTransaction(...r),i=yield this.signer.sendTransaction(n),s=pt(this.constructor,"getContractAddress")(i),o=pt(this.constructor,"getContract")(s,this.interface,this.signer);return Ns(o,i),ft(o,"deployTransaction",i),o})}attach(t){return this.constructor.getContract(t,this.interface,this.signer)}connect(t){return new this.constructor(this.interface,this.bytecode,t)}static fromSolidity(t,e){null==t&&As.throwError("missing compiler output",v.errors.MISSING_ARGUMENT,{argument:"compilerOutput"}),"string"==typeof t&&(t=JSON.parse(t));const r=t.abi;let n=null;return t.bytecode?n=t.bytecode:t.evm&&t.evm.bytecode&&(n=t.evm.bytecode),new this(r,n,e)}static getInterface(t){return Os.getInterface(t)}static getContractAddress(t){return be(t)}static getContract(t,e,r){return new Os(t,e,r)}},FixedNumber:lt,Signer:xn,VoidSigner:Tn,Wallet:$o,Wordlist:Ks,constants:je,get errors(){return y},getDefaultProvider:dc,logger:xc,providers:fc,utils:_c,version:Nc,wordlists:Qs});try{const t=window;null==t._ethers&&(t._ethers=Tc)}catch(t){}class Ic{constructor(t,e){if(!t||!e)throw new Error("BlockchainService requires eventBus and contractCache instances.");this.provider=null,this.signer=null,this.contract=null,this.mirrorContract=null,this.connectionState="disconnected",this.networkConfig=null,this.ethers=Tc,this.eventBus=t,this.contractCache=e,this.swapRouterAddress="0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",this.swapRouter=null,this.isInternalNetworkChange=!1,this.transactionCounter=0,this.activeTransactions=new Map,this.networkChangeState="idle",this.networkChangeTimeout=null,this.networkChangeTimeoutDuration=3e4,this.pendingNetworkChange=null,this.previousNetworkId=null,this.isInitializing=!1,this.chainChangedHandler=()=>this.handleNetworkChange(),this.accountsChangedHandler=()=>this.handleAccountChange()}async initialize(t){this.isInitializing=!0;try{if(!t)throw new Error("Network configuration is required for initialization.");return this.networkConfig=t,await this.initializeProvider(),this.connectionState="connected",this.setupNetworkListeners(),this.eventBus.emit("blockchain:initialized"),this.isInitializing=!1,!0}catch(t){throw this.connectionState="error",this.isInitializing=!1,this.eventBus.emit("blockchain:error",t),this.wrapError(t,"Blockchain initialization failed")}}setupNetworkListeners(){if(window.ethereum&&this.chainChangedHandler&&this.accountsChangedHandler){try{window.ethereum.removeListener("chainChanged",this.chainChangedHandler),window.ethereum.removeListener("accountsChanged",this.accountsChangedHandler)}catch(t){}window.ethereum.on("chainChanged",this.chainChangedHandler),window.ethereum.on("accountsChanged",this.accountsChangedHandler)}}async initializeProvider(){try{if(window.ethereum){const t=parseInt(this.networkConfig?.network||"1");await this.waitForCorrectNetwork(t);const e=new hc(window.ethereum,"any");this.provider=e,this.signer=e.getSigner();const r=await this.provider.getNetwork();if(r.chainId!==t){this.eventBus.emit("network:switching",{from:r.chainId,to:t,automatic:!0});try{this.isInternalNetworkChange=!0,await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${t.toString(16)}`}]}),this.provider=new hc(window.ethereum),this.signer=this.provider.getSigner(),this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!0})}catch(e){if(this.isInternalNetworkChange=!1,this.eventBus.emit("network:switched",{from:r.chainId,to:t,success:!1,error:e.message}),4902!==e.code)throw e;await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${t.toString(16)}`,rpcUrls:[this.networkConfig.rpcUrl],chainName:this.networkConfig.chainName,nativeCurrency:this.networkConfig.nativeCurrency}]}),this.provider=new hc(window.ethereum),this.signer=this.provider.getSigner()}finally{this.isInternalNetworkChange=!1}}}else this.provider=new ol(this.networkConfig.rpcUrl)}catch(t){throw this.isInternalNetworkChange=!1,this.wrapError(t,"Provider initialization failed")}}async initializeContract(t,e,r,n){try{if(!(t&&e&&r&&n))throw new Error("Contract address and all ABIs are required.");this.contract=new Os(t,e,this.provider);const i=await this.contract.mirrorERC721();this.mirrorContract=new Os(i,r,this.provider),this.swapRouter=new Os(this.swapRouterAddress,n,this.provider);const s=await this.getLiquidityPool();if(s&&"0x0000000000000000000000000000000000000000"!==s){const t=["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)","function token0() external view returns (address)","function token1() external view returns (address)"];this.v2PoolContract=new Os(s,t,this.provider)}else console.warn("Liquidity pool address is zero, skipping V2 pool contract initialization.");this.eventBus.emit("contract:updated")}catch(t){throw this.wrapError(t,"Contract initialization failed")}}async getMerkleProof(t,e=null){return null}async executeContractCall(t,e=[],r={}){try{if(!this.contract)throw new Error("Contract not initialized");let n="mirror"===r.useContract?this.mirrorContract:this.contract;if("router"===r.useContract&&(n=this.swapRouter),"v2pool"===r.useContract&&(n=this.v2PoolContract),r.requiresSigner){if(!this.signer)throw new Error("No wallet connected");n=n.connect(this.signer)}if("function"!=typeof n[t])throw new Error(`Method ${t} not found on contract`);const i=await n[t](...e||[],r.txOptions||{});if(i.wait){const r=await i.wait();return this.eventBus.emit("transaction:confirmed",{hash:r.transactionHash,method:t,args:e}),r}return i}catch(e){throw this.handleContractError(e,t)}}handleContractError(t,e){let r=t.message;if("INSUFFICIENT_FUNDS"===t.code)return new Error("Insufficient funds to complete transaction");if("UNPREDICTABLE_GAS_LIMIT"===t.code){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);return r=e?`Tx Reverted: ${e[1]}`:"Transaction would fail - check your inputs",new Error(r)}if(4001===t.code||"ACTION_REJECTED"===t.code)return new Error("Transaction rejected by user");if(t.message.includes("execution reverted")){const e=t.message.match(/execution reverted: (.*?)(?:\"|$)/);r=e?`Tx Reverted: ${e[1]}`:t.message}return console.error(`Contract error in ${e}:`,t),new Error(r)}wrapError(t,e){const r=new Error(`${e}: ${t.message}`);return r.originalError=t,r.code=t.code,r}async handleNetworkChange(){try{if(this.isInitializing)return void console.log("BlockchainService: Ignoring network change during initialization");if(this.isInternalNetworkChange)return;let t=null;try{const e=await window.ethereum.request({method:"eth_chainId"});t=parseInt(e,16)}catch(e){console.warn("Could not get current network from window.ethereum:",e);try{if(this.provider){t=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get current network from provider:",t)}}this.previousNetworkId=t;const e=parseInt(this.networkConfig?.network||"1");t&&t!==e&&console.log(`User switched to network ${t}, but we need ${e}. Switching back...`),this.networkChangeState="switching",this.pendingNetworkChange={from:t,to:null,startTime:Date.now()},this.eventBus.emit("network:switching",{from:t,to:null,automatic:!0}),this.networkChangeTimeout=setTimeout(()=>{"switching"===this.networkChangeState&&this.handleNetworkChangeTimeout()},this.networkChangeTimeoutDuration),await this.initializeProvider();let r=null;try{const t=await window.ethereum.request({method:"eth_chainId"});r=parseInt(t,16)}catch(t){console.warn("Could not get new network from window.ethereum:",t);try{if(this.provider){r=(await this.provider.getNetwork()).chainId}}catch(t){console.warn("Could not get new network from provider:",t)}}const n=this.pendingNetworkChange?Date.now()-this.pendingNetworkChange.startTime:0;this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="switched";this.pendingNetworkChange;this.pendingNetworkChange=null,this.eventBus.emit("network:switched",{from:t,to:r,success:!0,duration:n}),this.eventBus.emit("network:changed",{automatic:!0}),this.eventBus.emit("contract:updated"),setTimeout(()=>{"switched"===this.networkChangeState&&(this.networkChangeState="idle")},1e3)}catch(t){this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="error",this.eventBus.emit("network:switch:error",{from:this.previousNetworkId,to:null,error:t.message||"Network switch failed",originalError:t}),this.eventBus.emit("blockchain:error",t),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}}handleNetworkChangeTimeout(){console.warn("Network change timed out after",this.networkChangeTimeoutDuration,"ms"),this.networkChangeState="error",this.eventBus.emit("network:switch:timeout",{from:this.previousNetworkId,to:null,timeout:this.networkChangeTimeoutDuration}),this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),setTimeout(()=>{"error"===this.networkChangeState&&(this.networkChangeState="idle",this.pendingNetworkChange=null)},2e3)}cancelNetworkChange(){return"switching"===this.networkChangeState&&(this.networkChangeTimeout&&(clearTimeout(this.networkChangeTimeout),this.networkChangeTimeout=null),this.networkChangeState="idle",this.pendingNetworkChange=null,this.eventBus.emit("network:switch:cancelled",{from:this.previousNetworkId}),!0)}getNetworkChangeState(){return this.networkChangeState}async waitForCorrectNetwork(t,e=5e3){const r=Date.now();for(;Date.now()-r<e;){try{const e=await window.ethereum.request({method:"eth_chainId"});if(parseInt(e,16)===t)return void await new Promise(t=>setTimeout(t,200))}catch(t){}await new Promise(t=>setTimeout(t,100))}console.warn(`Network check timeout: Expected ${t}, will verify in initializeProvider`)}async handleAccountChange(){try{if(window.ethereum){const t=new hc(window.ethereum);this.signer=t.getSigner(),this.eventBus.emit("account:changed"),this.eventBus.emit("contract:updated")}}catch(t){this.eventBus.emit("blockchain:error",t)}}getConnectionState(){return this.connectionState}isConnected(){return"connected"===this.connectionState}getProvider(){return this.provider}getContract(t,e){if(!this.provider)throw new Error("Provider not initialized");return new Os(t,e,this.provider)}async getChainId(){if(!this.provider)throw new Error("Provider not initialized");const t=await this.provider.getNetwork();return Number(t.chainId)}async getBlock(t){if(!this.provider)throw new Error("Provider not initialized");return this.provider.getBlock(t)}async getCurrentTier(){try{const t=this.contractCache.get("getCurrentTier",[]);if(null!==t)return t;const e=await this.executeContractCall("getCurrentTier"),r=parseInt(e.toString());return this.contractCache.set("getCurrentTier",[],r),r}catch(t){throw this.wrapError(t,"Failed to get current tier")}}async getCurrentRoot(){try{return(await this.executeContractCall("getCurrentRoot")).toString()}catch(t){throw this.wrapError(t,"Failed to get current root")}}async getLiquidityPool(){try{const t=this.contractCache.get("getLiquidityPool",[]);if(null!==t)return t;const e=(await this.executeContractCall("liquidityPair")).toString();return this.contractCache.set("getLiquidityPool",[],e),e}catch(t){throw this.wrapError(t,"Failed to get liquidity pool address")}}async getTotalBondingSupply(){try{const t=this.contractCache.get("getTotalBondingSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("totalBondingSupply"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalBondingSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total bonding supply")}}async getTotalMessages(){try{const t=this.contractCache.get("getTotalMessages",[]);if(null!==t)return t;const e=await this.executeContractCall("totalMessages"),r=parseFloat(this.ethers.utils.formatUnits(e,0));return this.contractCache.set("getTotalMessages",[],r),r}catch(t){throw this.wrapError(t,"Failed to get total messages")}}async getMessagesBatch(t,e){return(await this.executeContractCall("getMessagesBatch",[t,e])).map(t=>t.toString())}async getTokenBalance(t){if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getTokenBalance");const e=this.contractCache.get("getTokenBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t]);return this.contractCache.set("getTokenBalance",[t],r),r}async getNFTBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getNFTBalance");const e=this.contractCache.get("getNFTBalance",[t]);if(null!==e)return e;const r=await this.executeContractCall("balanceOf",[t],{useContract:"mirror"}),n=parseInt(r.toString());return this.contractCache.set("getNFTBalance",[t],n),n}catch(t){throw this.wrapError(t,"Failed to get NFT balance")}}async getNFTSupply(){try{return this.executeContractCall("totalSupply",[],{useContract:"mirror"})}catch(t){throw this.wrapError(t,"Failed to get NFT supply")}}async getEthBalance(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getEthBalance");const e=this.contractCache.get("getEthBalance",[t]);if(null!==e)return e;const r=(await this.provider.getBalance(t)).toString();return this.contractCache.set("getEthBalance",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get ETH balance")}}async buyBonding(t,e){try{this.eventBus.emit("transaction:pending",{type:"buy"}),console.log("Buy bonding called with params:",t);const r=await this.executeContractCall("buyBonding",[t.amount,t.maxCost,t.mintNFT,t.proof,t.message],{requiresSigner:!0,txOptions:{value:e}});return this.eventBus.emit("transaction:success",{type:"buy",receipt:r,amount:t.amount}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"buy",error:this.wrapError(t,"Buy bonding failed")}),t}}async sellBonding(t){try{this.eventBus.emit("transaction:pending",{type:"sell"});const e=await this.executeContractCall("sellBonding",[t.amount,t.minReturn,t.proof,t.message],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"sell",receipt:e,amount:t.amount}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"sell",error:this.wrapError(t,"Sell bonding failed")}),t}}async getTokenPrice(){try{if(!this.contract)throw new Error("Contract not initialized");const t=Cc("1000000"),e=await this.executeContractCall("calculateCost",[t]);if(!e||!V.isBigNumber(e))throw new Error("Invalid price format from contract");return parseFloat(this.ethers.utils.formatEther(e))}catch(t){throw this.wrapError(t,"Failed to get token price")}}async getCurrentPrice(){try{const t=this.contractCache.get("getCurrentPrice",[]);if(null!==t)return t;const e=await this.getTokenPrice();return this.contractCache.set("getCurrentPrice",[],e),e}catch(t){throw this.wrapError(t,"Failed to get current price")}}async calculateCost(t){try{return await this.executeContractCall("calculateCost",[t])}catch(t){throw this.wrapError(t,"Failed to calculate cost")}}async getExecForEth(t){try{const e=Cc(t.toString()),r=await this.executeContractCall("getExecForEth",[e]);return this.formatExec(r)}catch(t){throw this.wrapError(t,"Failed to calculate EXEC for ETH amount")}}async getEthForExec(t){try{const e=kc(t.toString(),18),r=await this.executeContractCall("getEthForExec",[e]);return this.formatEther(r)}catch(t){throw this.wrapError(t,"Failed to calculate ETH for EXEC amount")}}async getFreeSupply(){try{const t=this.contractCache.get("getFreeSupply",[]);if(null!==t)return t;const e=await this.executeContractCall("freeSupply"),r=this.formatExec(e);return this.contractCache.set("getFreeSupply",[],r),r}catch(t){throw this.wrapError(t,"Failed to get free supply")}}async getFreeMint(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getFreeMint");const e=this.contractCache.get("getFreeMint",[t]);if(null!==e)return e;const r=await this.executeContractCall("freeMint",[t]);return console.log("FREE MINT",r),this.contractCache.set("getFreeMint",[t],r),r}catch(t){throw this.wrapError(t,"Failed to get free mint")}}async getFreeSituation(t){try{const e=await this.getFreeMint(t),r=await this.getFreeSupply();return{freeMint:e,freeSupply:r}}catch(t){throw this.wrapError(t,"Failed to get free situation")}}async getUserNFTIds(t){try{return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getTokenUri(t){try{return await this.executeContractCall("tokenURI",[t])}catch(t){throw this.wrapError(t,"Failed to get token URI")}}async getContractEthBalance(){try{const t=this.contractCache.get("getContractEthBalance",[]);if(null!==t)return t;const e=await this.provider.getBalance(this.contract.address),r=this.formatEther(e);return console.log("CONTRACT ETH BALANCE",r),this.contractCache.set("getContractEthBalance",[],r),r}catch(t){throw this.wrapError(t,"Failed to get contract ETH balance")}}async getUserNFTs(t){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTs");return await this.executeContractCall("getOwnerTokens",[t])}catch(t){throw this.wrapError(t,"Failed to get user NFT IDs")}}async getNFTMetadata(t){try{const e=await this.executeContractCall("tokenURI",[t]);return console.log("NFT METADATA",e),e}catch(t){throw this.wrapError(t,"Failed to get NFT metadata")}}async getNFTMetadataBatch(t){try{const e=t.map(t=>this.executeContractCall("tokenURI",[t])),r=await Promise.all(e);return console.log("Batch NFT Metadata:",r),r}catch(t){throw this.wrapError(t,"Failed to get NFT metadata batch")}}async getUserNFTsWithMetadata(t,e=5){try{if(!t||"string"!=typeof t)throw new Error("Invalid address provided to getUserNFTsWithMetadata");const r=await this.getUserNFTs(t);if(!r||0===r.length)return[];const n=r.slice(0,e),i=await this.getNFTMetadataBatch(n),s=n.map((t,e)=>({tokenId:t,metadata:i[e]}));return console.log("NFTs with metadata:",s),s}catch(t){throw this.wrapError(t,"Failed to get user NFTs with metadata")}}async balanceMint(t){try{this.eventBus.emit("transaction:pending",{type:"mint"});const e=await this.executeContractCall("balanceMint",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"mint",receipt:e,amount:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"mint",error:this.wrapError(t,"Failed to mint NFTs")}),t}}async transferNFT(t,e,r){try{this.eventBus.emit("transaction:pending",{type:"send"});const n=await this.executeContractCall("transferFrom",[t,e,r],{requiresSigner:!0,useContract:"mirror"});return this.eventBus.emit("transaction:success",{type:"send",receipt:n,tokenId:r,recipient:e}),n}catch(t){throw this.eventBus.emit("transaction:error",{type:"send",error:this.wrapError(t,"Failed to send NFT")}),t}}async getSkipNFT(t){try{return await this.executeContractCall("getSkipNFT",[t])}catch(t){throw this.wrapError(t,"Failed to get skipNFT status")}}async setSkipNFT(t){try{if(!this.signer)throw new Error("No wallet connected");this.eventBus.emit("transaction:pending",{type:"setSkipNFT",skipNFT:t});const e=await this.executeContractCall("setSkipNFT",[t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"setSkipNFT",receipt:e,skipNFT:t}),e}catch(t){throw this.eventBus.emit("transaction:error",{type:"setSkipNFT",error:this.wrapError(t,"Failed to set skipNFT")}),t}}async transferTokensToSelf(t){try{if(!this.signer)throw new Error("No wallet connected");const e=await this.signer.getAddress();this.eventBus.emit("transaction:pending",{type:"reroll"});const r=await this.executeContractCall("transfer",[e,t],{requiresSigner:!0});return this.eventBus.emit("transaction:success",{type:"reroll",receipt:r,amount:t}),r}catch(t){throw this.eventBus.emit("transaction:error",{type:"reroll",error:this.wrapError(t,"Failed to re-roll NFTs")}),t}}parseEther(t){return Cc(t).toString()}formatEther(t){return parseFloat(Sc(t))}parseExec(t){return kc(t,18).toString()}formatExec(t){return parseFloat(Ac(t,18))}async getToken0PriceInToken1(t){try{const e=new this.ethers.Contract(t,["function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)"],this.provider,{useContract:"v2pool"}),[r,n]=await e.getReserves();return n/r}catch(t){throw this.wrapError(t,"Failed to get token0 price in terms of token1")}}async isToken0(t,e){try{const r=new this.ethers.Contract(t,["function token0() external view returns (address)","function token1() external view returns (address)"],this.provider,{useContract:"v2pool"});return(await r.token0()).toLowerCase()===e.toLowerCase()}catch(t){throw this.wrapError(t,"Failed to check if token is token0")}}async getApproval(t,e=null){try{if(!t)throw new Error("User address is required for approval check");let r;if(null===e)r=this.swapRouter.address||this.swapRouter;else if("string"==typeof e)r=e;else{if(!e||"object"!=typeof e||!e.address)throw new Error("Invalid target for approval check");r=e.address}console.log(`Checking allowance for ${t} to spend tokens at ${r}`);return(await this.executeContractCall("allowance",[t,r])).toString()}catch(t){throw this.wrapError(t,"Failed to get approval")}}async setApproval(t=null,e){try{let r;if(null===t)r=this.swapRouter.address;else if("string"==typeof t)r=t;else{if(!t||"object"!=typeof t||!t.address)throw new Error("Invalid target for approval");r=t.address}console.log(`Setting approval for ${r} to spend ${e} tokens`);const n=`tx_approve_${++this.transactionCounter}_${Date.now()}`,i={type:"approve",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for approve ${n}`),this.eventBus.emit("transaction:pending",i);const s=await this.executeContractCall("approve",[r,e],{requiresSigner:!0}),o={type:"approve",id:n,receipt:s,amount:e};return this.activeTransactions.set(n,o),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",o),s}catch(t){const e={type:"approve",id:`error_approve_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to set approval")};throw console.log("[BlockchainService] Emitting transaction:error for approval error"),this.eventBus.emit("transaction:error",e),t}}async swapExactTokenForEthSupportingFeeOnTransferV2(t,e){try{const r=`tx_${++this.transactionCounter}_${Date.now()}`,n={type:"swap",id:r,pending:!0};this.activeTransactions.set(r,n),console.log(`[BlockchainService] Emitting transaction:pending for ${r}`),this.eventBus.emit("transaction:pending",n);const i=["0x185485bF2e26e0Da48149aee0A8032c8c2060Db2","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],s=t,o=Math.floor(Date.now()/1e3)+1200,a=(await this.executeContractCall("getAmountsOut",[e.amount,i],{useContract:"router"}))[1],l=BigInt(a)*BigInt(940)/BigInt(1e3);console.log("Sell transaction parameters:",{amountIn:e.amount.toString(),amountOutMin:l.toString(),path:i,txId:r});const c=await this.executeContractCall("swapExactTokensForETHSupportingFeeOnTransferTokens",[e.amount,l,i,s,o],{useContract:"router",requiresSigner:!0}),h={type:"swap",id:r,receipt:c,amount:e.amount};return this.activeTransactions.set(r,h),console.log(`[BlockchainService] Emitting transaction:success for ${r}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(r)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap tokens for ETH")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async swapExactEthForTokenSupportingFeeOnTransfer(t,e,r){try{const n=`tx_${++this.transactionCounter}_${Date.now()}`,i={type:"swap",id:n,pending:!0};this.activeTransactions.set(n,i),console.log(`[BlockchainService] Emitting transaction:pending for ${n}`),this.eventBus.emit("transaction:pending",i);const s=["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0x185485bF2e26e0Da48149aee0A8032c8c2060Db2"],o=t,a=Math.floor(Date.now()/1e3)+1200,l=BigInt(e.amount)*BigInt(940)/BigInt(1e3);console.log("Buy transaction parameters:",{amountOutMin:l.toString(),ethValue:r.toString(),path:s,txId:n});const c=await this.executeContractCall("swapExactETHForTokensSupportingFeeOnTransferTokens",[l,s,o,a],{useContract:"router",requiresSigner:!0,txOptions:{value:r}}),h={type:"swap",id:n,receipt:c,amount:e.amount};return this.activeTransactions.set(n,h),console.log(`[BlockchainService] Emitting transaction:success for ${n}`),this.eventBus.emit("transaction:success",h),setTimeout(()=>{this.activeTransactions.delete(n)},1e3),c}catch(t){const e={type:"swap",id:`error_${++this.transactionCounter}_${Date.now()}`,error:this.wrapError(t,"Failed to swap ETH for tokens")};throw console.log("[BlockchainService] Emitting transaction:error for error transaction"),this.eventBus.emit("transaction:error",e),t}}async getCurrentBlockInfo(){try{const t=await this.provider.getBlockNumber(),e=await this.provider.getBlock(t);return{number:t,timestamp:e.timestamp,hash:e.hash,date:new Date(1e3*e.timestamp)}}catch(t){throw this.wrapError(t,"Failed to get current block info")}}}class Pc{constructor(t){if(!t)throw new Error("WalletService requires an eventBus instance.");this.eventBus=t,this.provider=null,this.signer=null,this.connectedAddress=null,this.selectedWallet=null,this.connected=!1,this.ethers=Tc,this.isInitialized=!1,this.providerMap={rabby:()=>window.ethereum&&window.ethereum.isRabby?window.ethereum:null,rainbow:()=>window.ethereum&&window.ethereum.isRainbow?window.ethereum:window.rainbow||null,phantom:()=>window.phantom&&window.phantom.ethereum?window.phantom.ethereum:null,metamask:()=>(console.log("Checking for MetaMask with direct window.ethereum access"),window.ethereum||null)},this.walletIcons={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"}}async initialize(t={}){const{autoReconnect:e=!0}=t;try{if(console.log("Initializing WalletService..."),void 0===window.ethereum)return console.log("No Ethereum provider found"),this.eventBus.emit("wallet:notdetected"),this.isInitialized=!0,!0;if(console.log("Found Ethereum provider"),this.eventBus.emit("wallet:detected"),this.isMetaMask=window.ethereum.isMetaMask,e){const t=await window.ethereum.request({method:"eth_accounts"});if(t?.length>0){console.log("[WalletService] Found authorized account:",t[0]);const e=this._detectWalletType();this.selectedWallet=e,this.provider=window.ethereum,this.connectedAddress=t[0],this.connected=!0,this.ethersProvider=new hc(window.ethereum,"any"),this.signer=this.ethersProvider.getSigner(),this.setupEventListeners(),localStorage.setItem("ms2fun_lastWallet",e),console.log("[WalletService] Auto-connected to:",t[0]),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer})}}return this.connected||this.setupEventListeners(),this.isInitialized=!0,!0}catch(t){throw console.error("Error initializing WalletService:",t),this.isInitialized=!0,t}}async tryAutoConnect(){try{if(void 0===window.ethereum)return null;const t=await window.ethereum.request({method:"eth_accounts"});if(!t||0===t.length)return console.log("[WalletService] No previously authorized accounts found"),null;console.log("[WalletService] Found authorized account:",t[0]);const e=this._detectWalletType();console.log("[WalletService] Detected wallet type:",e),await this.selectWallet(e);const r=await this.connect();return console.log("[WalletService] Auto-reconnected to:",r),r}catch(t){return console.warn("[WalletService] Auto-connect failed:",t.message),null}}_detectWalletType(){if(void 0===window.ethereum)return"metamask";if(window.ethereum.isRabby)return"rabby";if(window.ethereum.isRainbow)return"rainbow";if(window.phantom?.ethereum)return"phantom";const t=localStorage.getItem("ms2fun_lastWallet");return t&&this.providerMap[t]?t:"metamask"}formatError(t,e=""){if("string"==typeof t)return new Error(`${e}: ${t}`);if(t&&t.message){const r=this.getUserFriendlyErrorMessage(t,e),n=new Error(r);return n.code=t.code,n.originalError=t,n}return new Error(`${e}: Unknown error`)}getUserFriendlyErrorMessage(t,e){const r=t.message||"Unknown error";return 4001===t.code?"Connection request rejected by user":4902===t.code?"Network needs to be added to your wallet":r.includes("redefine property")||r.includes("which has only a getter")?"Wallet conflict detected. Please disable all wallet extensions except the one you want to use, then refresh.":r.includes("user rejected")?"Connection rejected by user":r.includes("already pending")?"A wallet request is already pending, please check your wallet":e?`${e}: ${r}`:r}getAvailableWallets(){const t={};console.log("Checking for available wallets..."),window.ethereum?console.log("window.ethereum is available"):console.log("window.ethereum is not available");for(const[e,r]of Object.entries(this.providerMap))try{console.log(`Checking for ${e} wallet...`);const n=r();n?(console.log(`Found ${e} wallet`),t[e]={name:e,icon:this.walletIcons[e],provider:n}):console.log(`${e} wallet not detected`)}catch(t){console.warn(`Error detecting ${e} wallet:`,t)}return 0===Object.keys(t).length&&window.ethereum?(console.log("No specific wallets detected, but window.ethereum exists. Adding MetaMask as fallback."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}):!t.metamask&&window.ethereum&&(console.log("window.ethereum exists. Adding MetaMask option regardless of detection."),t.metamask={name:"metamask",icon:this.walletIcons.metamask,provider:window.ethereum}),console.log("Available wallets:",Object.keys(t)),t}async selectWallet(t){try{if(this.cleanup(),!this.providerMap[t])throw new Error(`Unsupported wallet: ${t}`);const e=this.providerMap[t]();if(!e)throw new Error(`${t} not detected. Please install it first.`);return this.selectedWallet=t,this.provider=e,this.setupEventListeners(),this.eventBus.emit("wallet:selected",{type:t,provider:e}),t}catch(t){const e=this.formatError(t,"Wallet selection failed");throw this.eventBus.emit("wallet:error",e),e}}setupEventListeners(){if(this.provider){try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider.on("chainChanged",()=>this.handleNetworkChange()),this.provider.on("accountsChanged",t=>this.handleAccountChange(t))}}cleanup(){if(this.provider)try{this.provider.removeListener("chainChanged",this.handleNetworkChange),this.provider.removeListener("accountsChanged",this.handleAccountChange)}catch(t){}this.provider=null,this.signer=null,this.connectedAddress=null,this.connected=!1,this.ethersProvider=null}async connect(t){try{if(t&&await this.selectWallet(t),!this.selectedWallet||!this.provider)throw new Error("Please select a wallet first");let e;this.eventBus.emit("wallet:connecting"),console.log(`Attempting to connect to ${this.selectedWallet}...`);try{if(await new Promise(t=>setTimeout(t,500)),"phantom"===this.selectedWallet&&window.phantom&&window.phantom.ethereum)console.log("Using phantom-specific connection method"),e=await window.phantom.ethereum.request({method:"eth_requestAccounts"});else{console.log(`Using standard connection method for ${this.selectedWallet}`);try{const t=await this.provider.request({method:"eth_accounts"});console.log("Existing accounts:",t),t&&0!==t.length||console.log("No existing accounts found, requesting user approval...")}catch(t){console.warn("Error checking existing accounts:",t)}e=await this.provider.request({method:"eth_requestAccounts",params:[]})}}catch(t){throw console.error("Error requesting accounts:",t),t&&4001===t.code?this.formatError(t,"Wallet connection rejected"):t&&t.message&&t.message.includes("wallet must has at least one account")?new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again."):t}if(console.log("Accounts received:",e),!e||!e[0])throw new Error("No accounts found. Please unlock your wallet and make sure you have at least one account set up.");return this.connectedAddress=e[0],this.connected=!0,console.log(`Successfully connected to account: ${this.connectedAddress}`),this.selectedWallet&&localStorage.setItem("ms2fun_lastWallet",this.selectedWallet),this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer}),this.connectedAddress}catch(t){if(console.error("Wallet connection error:",t),t.message&&(t.message.includes("at least one account")||t.message.includes("wallet must has")||t.message.includes("no accounts"))){const e=new Error("Your wallet has no accounts. Please create at least one account in your wallet and try again.");throw e.code=t.code,e.originalError=t,this.eventBus.emit("wallet:error",e),e}const e=this.formatError(t,"Wallet connection failed");throw this.eventBus.emit("wallet:error",e),e}}async switchNetwork(t){try{if(!this.provider)throw new Error("No wallet connected");const e=`0x${Number(t).toString(16)}`;this.eventBus.emit("network:switching",{to:t,automatic:!1});try{return await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:e}]}),this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner(),this.eventBus.emit("network:switched",{to:t,success:!0}),!0}catch(t){throw 4902===t.code?new Error("Network needs to be added first"):t}}catch(e){const r=this.formatError(e,"Network switch failed");throw this.eventBus.emit("network:switch:error",{from:null,to:t,error:r.message,originalError:e}),this.eventBus.emit("network:switched",{to:t,success:!1,error:r.message}),r}}getAddress(){return this.connectedAddress}isConnected(){return this.connected&&!!this.connectedAddress}getProviderAndSigner(){return{provider:this.ethersProvider,signer:this.signer}}setConnectedState({address:t,provider:e,ethersProvider:r,signer:n,walletType:i="metamask"},s=!0){if(!t)throw new Error("setConnectedState requires an address");if(!e)throw new Error("setConnectedState requires a provider");this.provider=e,this.connectedAddress=t,this.connected=!0,this.selectedWallet=i,this.ethersProvider=r||new hc(e,"any"),this.signer=n||this.ethersProvider.getSigner(),this.setupEventListeners(),localStorage.setItem("ms2fun_lastWallet",i),console.log("[WalletService] State set programmatically:",t),s&&this.eventBus.emit("wallet:connected",{address:this.connectedAddress,walletType:this.selectedWallet,provider:this.provider,ethersProvider:this.ethersProvider,signer:this.signer})}handleNetworkChange(){this.provider&&(this.ethersProvider=new hc(this.provider,"any"),this.signer=this.ethersProvider.getSigner())}handleAccountChange(t){t&&Array.isArray(t)&&(0===t.length?(this.connected=!1,this.connectedAddress=null,this.eventBus.emit("wallet:disconnected")):t[0]!==this.connectedAddress&&(this.connectedAddress=t[0],this.eventBus.emit("wallet:changed",{address:t[0]})))}async disconnect(){this.cleanup(),this.eventBus.emit("wallet:disconnected")}}class Bc{constructor(t,e={}){if(!t)throw new Error("ContractCache requires an eventBus instance.");this.eventBus=t,this.cache=new Map,this.stats={hits:0,misses:0,invalidations:0,sets:0},this.defaultTTLs={price:5e3,balance:3e3,contractData:1e4,supply:1e4,metadata:6e4,tier:3e4,default:5e3},this.noCacheMethods=new Set(["executeContractCall","swapExactETHForTokens","swapExactTokensForETH","buy","sell","mint"]),this.setupEventListeners(),e.eventInvalidation&&this.setupEventInvalidation(e.eventInvalidation),this.debug=!1}setupEventListeners(){this.eventBus.on("transaction:confirmed",()=>{this.invalidateByPattern("balance","price","contractData"),this.debug&&console.log("[ContractCache] Invalidated cache due to transaction confirmation")}),this.eventBus.on("account:changed",()=>{this.invalidateByPattern("balance"),this.debug&&console.log("[ContractCache] Invalidated cache due to account change")}),this.eventBus.on("network:changed",()=>{this.clear(),this.debug&&console.log("[ContractCache] Cleared cache due to network change")}),this.eventBus.on("contractData:updated",()=>{this.invalidateByPattern("contractData","price","supply"),this.debug&&console.log("[ContractCache] Invalidated cache due to contract data update")})}setupEventInvalidation(t){this.eventBus.on("indexer:newEvents",({eventType:e})=>{const r=t[e];r&&Array.isArray(r)&&this.invalidateByPattern(...r)})}generateKey(t,e=[]){return`${t}:${e.length>0?JSON.stringify(e.map(t=>t&&"object"==typeof t&&t.toString?t.toString():t)):""}`}get(t,e=[]){if(this.noCacheMethods.has(t))return null;const r=this.generateKey(t,e),n=this.cache.get(r);return n?Date.now()>n.expiresAt?(this.cache.delete(r),this.stats.misses++,null):(n.accessCount++,this.stats.hits++,this.debug&&console.log(`[ContractCache] Cache HIT for ${t}`,e),n.value):(this.stats.misses++,null)}set(t,e=[],r,n=null){if(this.noCacheMethods.has(t))return;null===n&&(n=this.getTTLForMethod(t));const i=this.generateKey(t,e),s=Date.now()+n;this.cache.set(i,{value:r,expiresAt:s,accessCount:0,method:t,args:e,cachedAt:Date.now()}),this.stats.sets++,this.debug&&console.log(`[ContractCache] Cached ${t}`,e,`TTL: ${n}ms`)}getTTLForMethod(t){const e=t.toLowerCase();return e.includes("price")||e.includes("cost")?this.defaultTTLs.price:e.includes("balance")?this.defaultTTLs.balance:e.includes("supply")||e.includes("total")?this.defaultTTLs.supply:e.includes("metadata")||e.includes("uri")?this.defaultTTLs.metadata:e.includes("tier")||e.includes("merkle")||e.includes("proof")?this.defaultTTLs.tier:e.includes("contract")||e.includes("pool")||e.includes("liquidity")?this.defaultTTLs.contractData:this.defaultTTLs.default}invalidateByPattern(...t){let e=0;for(const[r,n]of this.cache.entries()){const i=n.method.toLowerCase();t.some(t=>i.includes(t.toLowerCase()))&&(this.cache.delete(r),e++)}this.stats.invalidations+=e,this.debug&&e>0&&console.log(`[ContractCache] Invalidated ${e} entries matching patterns:`,t)}invalidate(t,e=[]){const r=this.generateKey(t,e);this.cache.delete(r)&&(this.stats.invalidations++,this.debug&&console.log(`[ContractCache] Invalidated ${t}`,e))}clear(){const t=this.cache.size;this.cache.clear(),this.stats.invalidations+=t,this.debug&&console.log("[ContractCache] Cleared all cache")}getStats(){const t=this.stats.hits+this.stats.misses,e=t>0?(this.stats.hits/t*100).toFixed(2):0;return{...this.stats,hitRate:`${e}%`,cacheSize:this.cache.size,totalRequests:t}}async warmCache(t,e=[]){this.debug&&console.log("[ContractCache] Warming cache for methods:",e);const r=e.map(async e=>{try{return await t(e)}catch(t){return console.warn(`[ContractCache] Failed to warm cache for ${e}:`,t),null}});await Promise.all(r)}setDebug(t){this.debug=t}cleanup(){const t=Date.now();let e=0;for(const[r,n]of this.cache.entries())t>n.expiresAt&&(this.cache.delete(r),e++);return this.debug&&e>0&&console.log(`[ContractCache] Cleaned up ${e} expired entries`),e}}class Mc{constructor(t,e,r=6e4){if(!t||!e)throw new Error("PriceService requires blockchainService and eventBus instances.");this._blockchainService=t,this.eventBus=e,this._cache=new Map,this._contractUpdateInterval=null,this._updateIntervalTime=r,this._cacheExpirationTime=3e5,this._updateDebounceTimeout=null,this._updateDebounceDelay=2e3,this._lastEmittedData=null,this.getCurrentPrice=this.getCurrentPrice.bind(this),this.startContractUpdates=this.startContractUpdates.bind(this),this.stopContractUpdates=this.stopContractUpdates.bind(this),this.debouncedUpdateContractData=this.debouncedUpdateContractData.bind(this)}initialize(t=null){console.log("PriceService: Fetching initial data immediately",t?`for address: ${t}`:"(no address yet)"),this.updateContractData(t).catch(t=>{console.error("Failed to fetch initial contract data:",t)}),this.startContractUpdates(t)}async getCurrentPrice(){try{if(!this._blockchainService)throw new Error("PriceService not initialized");const t=this._getCacheValue("currentPrice");if(null!==t)return t;const e=await this._blockchainService.getTokenPrice();if("number"!=typeof e||isNaN(e)||e<=0)throw console.error("Invalid price value:",e),new Error("Invalid price value received");return this._setCacheValue("currentPrice",e),this.eventBus.emit("price:updated",{price:e}),e}catch(t){throw console.error("Error fetching price:",t),t}}async calculateCost(t){try{if(!this._blockchainService)throw new Error("PriceService not initialized");return await this._blockchainService.calculateCost(t)}catch(t){throw console.error("Error calculating cost:",t),t}}async updateContractData(t=null){try{const e=[this._blockchainService.getCurrentPrice(),this._blockchainService.getTotalBondingSupply(),this._blockchainService.getTotalMessages(),this._blockchainService.getNFTSupply(),this._blockchainService.getFreeSupply(),this._blockchainService.getContractEthBalance(),this._blockchainService.getCurrentTier(),this._blockchainService.getLiquidityPool()];t&&e.push(this._blockchainService.getEthBalance(t),this._blockchainService.getTokenBalance(t),this._blockchainService.getNFTBalance(t),this._blockchainService.getFreeMint(t));const[r,n,i,s,o,a,l,c,h,u,d,f]=await Promise.all(e),p={totalBondingSupply:n,currentPrice:r,totalMessages:i,totalNFTs:s,freeSupply:o,freeMint:void 0!==f&&f,contractEthBalance:a,currentTier:l,liquidityPool:c},m={eth:h||"0",exec:u||"0",nfts:d||0},g=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.contractData)!==JSON.stringify(p),y=!this._lastEmittedData||JSON.stringify(this._lastEmittedData.balances)!==JSON.stringify(m);g&&this.eventBus.emit("contractData:updated",p),y&&this.eventBus.emit("balances:updated",m),this._lastEmittedData&&this._lastEmittedData.contractData.currentPrice===r||this.eventBus.emit("price:updated",{price:r}),this._lastEmittedData={contractData:p,balances:m}}catch(t){console.error("Error updating contract data:",t),this.eventBus.emit("price:error",{error:t.message})}}startContractUpdates(){this.stopContractUpdates(),this.debouncedUpdateContractData(),this._contractUpdateInterval=setInterval(()=>{this.debouncedUpdateContractData()},this._updateIntervalTime)}stopContractUpdates(){this._contractUpdateInterval&&(clearInterval(this._contractUpdateInterval),this._contractUpdateInterval=null)}_setCacheValue(t,e){this._cache.set(t,{value:e,timestamp:Date.now()})}debouncedUpdateContractData(t=null){this._updateDebounceTimeout&&clearTimeout(this._updateDebounceTimeout),this._updateDebounceTimeout=setTimeout(()=>{this.updateContractData(t).catch(t=>{console.error("Failed to update contract data:",t)})},this._updateDebounceDelay)}}const Rc=["https://w3s.link/ipfs/","https://cloudflare-ipfs.com/ipfs/","https://ipfs.io/ipfs/","https://gateway.pinata.cloud/ipfs/","https://dweb.link/ipfs/"];function Fc(){const t=function(){try{const t=localStorage.getItem("customIpfsGatewayBaseUrl");if(t&&"string"==typeof t&&t.trim()){const e=t.trim();return e.endsWith("/ipfs/")?e:e.endsWith("/")?e+"ipfs/":e+"/ipfs/"}}catch(t){console.warn("[IpfsService] Failed to read custom gateway from localStorage:",t)}return null}();return t?[t,...Rc]:Rc}function Oc(t){return!(!t||"string"!=typeof t)&&t.toLowerCase().startsWith("ipfs://")}function Dc(t){if(!Oc(t))return t;const e=t.substring(7);return e.startsWith("/")?e.substring(1):e}function Lc(t,e=0){if(!Oc(t))return t;const r=Fc();if(e<0||e>=r.length)return null;const n=Dc(t);return r[e]+n}function Uc(){return Fc()}var zc=Object.freeze({__proto__:null,fetchJsonWithIpfsSupport:async function(t,e={}){const{timeout:r=1e4,...n}=e;if(!Oc(t)){const e=new AbortController,i=setTimeout(()=>e.abort(),r);try{const r=await fetch(t,{...n,signal:e.signal});if(!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return clearTimeout(i),s}catch(t){if(clearTimeout(i),"AbortError"===t.name)throw new Error(`Request timeout after ${r}ms`);throw t}}const i=Fc(),s=Dc(t),o=[];for(let t=0;t<i.length;t++){const e=i[t],a=e+s,l=new AbortController,c=setTimeout(()=>l.abort(),r);try{const r=await fetch(a,{...n,signal:l.signal});if(clearTimeout(c),!r.ok)throw new Error(`HTTP ${r.status}: ${r.statusText}`);const s=await r.json();return t>0&&console.log(`[IpfsService] Resolved IPFS via gateway ${t+1}/${i.length}: ${e}`),s}catch(n){clearTimeout(c);const i="AbortError"===n.name?`Timeout after ${r}ms`:n.message||"Unknown error";o.push(`Gateway ${t+1} (${e}): ${i}`);continue}}throw new Error(`Failed to fetch IPFS content after trying ${i.length} gateways:\n`+o.join("\n"))},getAvailableGateways:Uc,isIpfsUri:Oc,normalizeIpfsPath:Dc,resolveIpfsToHttp:Lc,setCustomGateway:function(t){try{t?localStorage.setItem("customIpfsGatewayBaseUrl",t):localStorage.removeItem("customIpfsGatewayBaseUrl")}catch(t){console.warn("[IpfsService] Failed to save custom gateway to localStorage:",t)}},testImageLoad:function(t,e=5e3){return new Promise(r=>{const n=new Image,i=setTimeout(()=>{n.onload=null,n.onerror=null,r(!1)},e);n.onload=()=>{clearTimeout(i),r(!0)},n.onerror=()=>{clearTimeout(i),r(!1)},n.src=t})}});class qc{async initialize(t){throw new Error("StorageAdapter.initialize() must be implemented")}async putEvents(t){throw new Error("StorageAdapter.putEvents() must be implemented")}async getEvent(t,e){throw new Error("StorageAdapter.getEvent() must be implemented")}async queryEvents(t,e){throw new Error("StorageAdapter.queryEvents() must be implemented")}async countEvents(t,e){throw new Error("StorageAdapter.countEvents() must be implemented")}async deleteEvents(t,e){throw new Error("StorageAdapter.deleteEvents() must be implemented")}async deleteEventsAfterBlock(t){throw new Error("StorageAdapter.deleteEventsAfterBlock() must be implemented")}async getSyncState(){throw new Error("StorageAdapter.getSyncState() must be implemented")}async setSyncState(t){throw new Error("StorageAdapter.setSyncState() must be implemented")}async getVersion(){throw new Error("StorageAdapter.getVersion() must be implemented")}async setVersion(t){throw new Error("StorageAdapter.setVersion() must be implemented")}async clear(){throw new Error("StorageAdapter.clear() must be implemented")}async close(){throw new Error("StorageAdapter.close() must be implemented")}}class jc extends qc{constructor(){super(),this.db=null,this.config=null,this.dbName=null}async initialize(t){this.config=t,this.dbName=t.dbName;const e=await this._getStoredVersion();return null!==e&&t.version>e&&(console.log(`[IndexedDBAdapter] Migrating from v${e} to v${t.version}`),await this._deleteDatabase()),new Promise((e,r)=>{const n=indexedDB.open(this.dbName,t.version);n.onerror=()=>{r(new Error(`Failed to open IndexedDB: ${n.error?.message}`))},n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=e=>{const r=e.target.result;this._createStores(r,t.eventTypes)}})}_createStores(t,e){for(const r of e){const e=`events_${r.name}`;if(!t.objectStoreNames.contains(e)){const n=t.createObjectStore(e,{keyPath:"id"});for(const t of r.indexedParams||[])n.createIndex(`param_${t}`,`indexed.${t}`,{unique:!1});n.createIndex("blockNumber","blockNumber",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1})}}t.objectStoreNames.contains("syncState")||t.createObjectStore("syncState",{keyPath:"id"}),t.objectStoreNames.contains("meta")||t.createObjectStore("meta",{keyPath:"key"})}async _getStoredVersion(){return new Promise(t=>{const e=indexedDB.open(this.dbName);e.onsuccess=()=>{const r=e.result,n=r.version;r.close(),t(n)},e.onerror=()=>t(null)})}async _deleteDatabase(){return new Promise((t,e)=>{this.db&&(this.db.close(),this.db=null);const r=indexedDB.deleteDatabase(this.dbName);r.onsuccess=()=>t(),r.onerror=()=>e(r.error)})}async putEvents(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");if(0===t.length)return;const e=new Map;for(const r of t)e.has(r.type)||e.set(r.type,[]),e.get(r.type).push(r);const r=[];for(const[t,n]of e)r.push(this._putEventsOfType(t,n));await Promise.all(r)}async _putEventsOfType(t,e){const r=`events_${t}`;return this.db.objectStoreNames.contains(r)||await this._addStore(t),new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.put(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async _addStore(t){const e=this.db.version;return this.db.close(),new Promise((r,n)=>{const i=indexedDB.open(this.dbName,e+1);i.onupgradeneeded=e=>{const r=e.target.result,n=`events_${t}`;if(!r.objectStoreNames.contains(n)){const t=r.createObjectStore(n,{keyPath:"id"});t.createIndex("blockNumber","blockNumber",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}},i.onsuccess=()=>{this.db=i.result,r()},i.onerror=()=>n(i.error)})}async getEvent(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).get(e);i.onsuccess=()=>t(i.result||null),i.onerror=()=>n(i.error)}):null}async queryEvents(t,e={}){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r).getAll();i.onsuccess=()=>{let r=i.result;e.where&&(r=r.filter(t=>this._matchesWhere(t,e.where)));const n=r.length,s=e.orderBy||"blockNumber",o=e.order||"desc";r.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100,c=r.slice(a,a+l);t({events:c,total:n,hasMore:a+l<n})},i.onerror=()=>n(i.error)}):{events:[],total:0,hasMore:!1}}async countEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;return this.db.objectStoreNames.contains(r)?new Promise((t,n)=>{const i=this.db.transaction(r,"readonly").objectStore(r);if(e){const r=i.getAll();r.onsuccess=()=>{const n=r.result.filter(t=>this._matchesWhere(t,e)).length;t(n)},r.onerror=()=>n(r.error)}else{const e=i.count();e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)}}):0}async deleteEvents(t,e){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const r=`events_${t}`;if(this.db.objectStoreNames.contains(r))return new Promise((t,n)=>{const i=this.db.transaction(r,"readwrite"),s=i.objectStore(r);for(const t of e)s.delete(t);i.oncomplete=()=>t(),i.onerror=()=>n(i.error)})}async deleteEventsAfterBlock(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");const e=Array.from(this.db.objectStoreNames).filter(t=>t.startsWith("events_"));for(const r of e)await this._deleteEventsAfterBlockInStore(r,t)}async _deleteEventsAfterBlockInStore(t,e){return new Promise((r,n)=>{const i=this.db.transaction(t,"readwrite"),s=i.objectStore(t).index("blockNumber"),o=IDBKeyRange.lowerBound(e,!0);s.openCursor(o).onsuccess=t=>{const e=t.target.result;e&&(e.delete(),e.continue())},i.oncomplete=()=>r(),i.onerror=()=>n(i.error)})}async getSyncState(){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((t,e)=>{const r=this.db.transaction("syncState","readonly").objectStore("syncState").get("current");r.onsuccess=()=>t(r.result||null),r.onerror=()=>e(r.error)})}async setSyncState(t){if(!this.db)throw new Error("IndexedDBAdapter not initialized");return new Promise((e,r)=>{const n=this.db.transaction("syncState","readwrite").objectStore("syncState").put({id:"current",...t});n.onsuccess=()=>e(),n.onerror=()=>r(n.error)})}async getVersion(){return this.db?this.db.version:0}async setVersion(t){}async clear(){if(!this.db)return;const t=Array.from(this.db.objectStoreNames);return new Promise((e,r)=>{const n=this.db.transaction(t,"readwrite");for(const e of t)n.objectStore(e).clear();n.oncomplete=()=>e(),n.onerror=()=>r(n.error)})}async close(){this.db&&(this.db.close(),this.db=null)}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class Gc extends qc{constructor(){super(),this.stores=new Map,this.syncState=null,this.version=0,this.config=null}async initialize(t){this.config=t;for(const e of t.eventTypes)this.stores.set(e.name,new Map);t.version>this.version&&(await this.clear(),this.version=t.version)}async putEvents(t){for(const e of t){this.stores.get(e.type)||this.stores.set(e.type,new Map),this.stores.get(e.type).set(e.id,e)}}async getEvent(t,e){const r=this.stores.get(t);return r&&r.get(e)||null}async queryEvents(t,e={}){const r=this.stores.get(t);if(!r)return{events:[],total:0,hasMore:!1};let n=Array.from(r.values());e.where&&(n=n.filter(t=>this._matchesWhere(t,e.where)));const i=n.length,s=e.orderBy||"blockNumber",o=e.order||"desc";n.sort((t,e)=>{const r=this._getNestedValue(t,s),n=this._getNestedValue(e,s);return r<n?"asc"===o?-1:1:r>n?"asc"===o?1:-1:0});const a=e.offset||0,l=e.limit||100;return{events:n.slice(a,a+l),total:i,hasMore:a+l<i}}async countEvents(t,e){const r=this.stores.get(t);if(!r)return 0;if(!e)return r.size;let n=0;for(const t of r.values())this._matchesWhere(t,e)&&n++;return n}async deleteEvents(t,e){const r=this.stores.get(t);if(r)for(const t of e)r.delete(t)}async deleteEventsAfterBlock(t){for(const e of this.stores.values())for(const[r,n]of e.entries())n.blockNumber>t&&e.delete(r)}async getSyncState(){return this.syncState}async setSyncState(t){this.syncState={...t}}async getVersion(){return this.version}async setVersion(t){this.version=t}async clear(){for(const t of this.stores.values())t.clear();this.syncState=null}async close(){}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(Array.isArray(n)){if(!n.includes(e))return!1}else if("object"==typeof n&&null!==n){if(void 0!==n.$gt&&!(e>n.$gt))return!1;if(void 0!==n.$gte&&!(e>=n.$gte))return!1;if(void 0!==n.$lt&&!(e<n.$lt))return!1;if(void 0!==n.$lte&&!(e<=n.$lte))return!1;if(void 0!==n.$ne&&e===n.$ne)return!1}else{if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}}return!0}_getNestedValue(t,e){return e.startsWith("indexed.")?t.indexed?.[e.slice(8)]:e.startsWith("data.")?t.data?.[e.slice(5)]:void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}const Hc="mw3_indexer_settings",Wc={get(){try{const t=localStorage.getItem(Hc);return t?JSON.parse(t):this.getDefaults()}catch{return this.getDefaults()}},getDefaults:()=>({storageEnabled:!0,maxStorageMB:50}),set(t){const e={...this.get(),...t};return localStorage.setItem(Hc,JSON.stringify(e)),e},isStorageEnabled(){return this.get().storageEnabled},async clearAllData(){if("undefined"==typeof indexedDB)return;const t=(await(indexedDB.databases?.())||[]).filter(t=>t.name?.startsWith("micro-web3-events-")||t.name?.includes("colasseum-"));for(const e of t)await new Promise((t,r)=>{const n=indexedDB.deleteDatabase(e.name);n.onsuccess=t,n.onerror=r})},getStorageEstimate:async()=>navigator.storage?.estimate?navigator.storage.estimate():{used:0,quota:0}};class Kc{constructor(t,e){this.storage=t,this.eventBus=e,this.subscriptions=new Map,this.nextSubscriptionId=1}async query(t,e={}){return this.storage.queryEvents(t,{where:e.where,orderBy:e.orderBy||"blockNumber",order:e.order||"desc",limit:e.limit||100,offset:e.offset||0})}async get(t,e){return this.storage.getEvent(t,e)}subscribe(t,e){const r=Array.isArray(t)?t:[t],n=this.nextSubscriptionId++;return this.subscriptions.set(n,{eventTypes:new Set(r),callback:e}),()=>{this.subscriptions.delete(n)}}async count(t,e){return this.storage.countEvents(t,e)}notifyNewEvents(t,e){for(const r of this.subscriptions.values())if(r.eventTypes.has(t)||r.eventTypes.has("*"))try{r.callback(e)}catch(t){console.error("[QueryEngine] Subscription callback error:",t)}}async getEventChecker(t={}){const e=new Map;return{has:(r,n={})=>this._getCachedEvents(e,r).some(e=>this._matchesWhere(e,{...t,...n})),get:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})),count:(r,n={})=>this._getCachedEvents(e,r).filter(e=>this._matchesWhere(e,{...t,...n})).length,prefetch:async t=>{for(const r of t)if(!e.has(r)){const t=await this.storage.queryEvents(r,{limit:1e4});e.set(r,t.events)}}}}_getCachedEvents(t,e){return t.get(e)||[]}_matchesWhere(t,e){for(const[r,n]of Object.entries(e)){const e=this._getNestedValue(t,r);if(("string"==typeof e?e.toLowerCase():e)!==("string"==typeof n?n.toLowerCase():n))return!1}return!0}_getNestedValue(t,e){return void 0!==t.indexed?.[e]?t.indexed[e]:void 0!==t.data?.[e]?t.data[e]:t[e]}}class Vc{constructor(t,e,r,n={}){this.storage=t,this.queryEngine=e,this.eventBus=r,this.batchSize=n.batchSize||2e3,this.confirmations=n.confirmations||2,this.realTimeEnabled=!1!==n.realTimeEnabled,this.retryAttempts=n.retryAttempts||3,this.retryDelay=n.retryDelay||1e3,this.pollInterval=n.pollInterval||12e3,this.reorgTracking=n.reorgTracking||!1,this.reorgDepth=n.reorgDepth||100,this.provider=null,this.contract=null,this.eventTypes=[],this.deployBlock=0,this.chainId=null,this.state="initializing",this.currentBlock=0,this.latestBlock=0,this.eventsIndexed=0,this.lastSyncTime=null,this.error=null,this.eventListeners=[],this.pollTimer=null,this.isPaused=!1,this.recentBlocks=new Map}async initialize({provider:t,contract:e,eventTypes:r,deployBlock:n,chainId:i}){this.provider=t,this.contract=e,this.eventTypes=r,this.deployBlock=n,this.chainId=i,await this._validateChainId();const s=await this.storage.getSyncState();s?(this.currentBlock=s.lastSyncedBlock,this.eventsIndexed=Object.values(s.eventCounts||{}).reduce((t,e)=>t+e,0),this.lastSyncTime=s.lastSyncTime):this.currentBlock=this.deployBlock-1}async _validateChainId(){const t=await this.storage.getSyncState();t&&t.chainId!==this.chainId&&(console.warn("[SyncEngine] Chain ID mismatch, clearing data"),await this.storage.clear())}async start(){if("synced"!==this.state&&"syncing"!==this.state)try{await this._syncHistorical(),this.realTimeEnabled&&!this.isPaused&&await this._startRealTimeSync()}catch(t){this.state="error",this.error=t,this.eventBus.emit("indexer:error",{code:"SYNC_ERROR",message:t.message,cause:t,recoverable:!0})}}async _syncHistorical(){this.state="syncing",this.latestBlock=await this.provider.getBlockNumber();const t=this.latestBlock-this.confirmations;if(this.currentBlock>=t)return this.state="synced",void this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:0});const e=Date.now(),r=this.currentBlock+1;this.eventBus.emit("indexer:syncStarted",{fromBlock:r,toBlock:t});for(let e=r;e<=t&&!this.isPaused;e+=this.batchSize){const n=Math.min(e+this.batchSize-1,t);await this._syncBatch(e,n);const i=(n-r+1)/(t-r+1);this.eventBus.emit("indexer:syncProgress",{progress:i,currentBlock:n,latestBlock:this.latestBlock,eventsIndexed:this.eventsIndexed})}this.isPaused||(this.state="synced",this.lastSyncTime=Date.now(),this.eventBus.emit("indexer:syncComplete",{eventsIndexed:this.eventsIndexed,duration:Date.now()-e}))}async _syncBatch(t,e){const r=await this._fetchEventsWithRetry(t,e);if(r.length>0){const t=r.map(t=>this._parseEvent(t));await this.storage.putEvents(t),this.eventsIndexed+=t.length;const e=this._groupByType(t);for(const[t,r]of Object.entries(e))this.queryEngine.notifyNewEvents(t,r)}this.currentBlock=e,await this._saveSyncState()}async _fetchEventsWithRetry(t,e){for(let r=0;r<this.retryAttempts;r++)try{const r=[];for(const n of this.eventTypes){const i=this.contract.filters[n.name](),s=await this.contract.queryFilter(i,t,e);r.push(...s)}return r}catch(t){if(r===this.retryAttempts-1)throw t;const e=this.retryDelay*Math.pow(2,r);await this._sleep(e)}return[]}_parseEvent(t){const e={},r={};if(t.args){const n=t.eventFragment||this.contract.interface.getEvent(t.event);if(n)for(let i=0;i<n.inputs.length;i++){const s=n.inputs[i],o=t.args[i],a=this._serializeValue(o);s.indexed&&(e[s.name]=a),r[s.name]=a}}return{id:`${t.transactionHash}-${t.logIndex}`,type:t.event,blockNumber:t.blockNumber,blockHash:t.blockHash,transactionHash:t.transactionHash,logIndex:t.logIndex,timestamp:0,data:r,indexed:e}}_serializeValue(t){return null==t?null:"bigint"==typeof t||t._isBigNumber?t.toString():Array.isArray(t)?t.map(t=>this._serializeValue(t)):t}_groupByType(t){const e={};for(const r of t)e[r.type]||(e[r.type]=[]),e[r.type].push(r);return e}async _saveSyncState(){await this.storage.setSyncState({lastSyncedBlock:this.currentBlock,lastSyncTime:Date.now(),eventCounts:{},chainId:this.chainId})}async _startRealTimeSync(){try{for(const t of this.eventTypes){const e=this.contract.filters[t.name](),r=async(...t)=>{const e=t[t.length-1];await this._handleNewEvent(e)};this.contract.on(e,r),this.eventListeners.push({filter:e,listener:r})}}catch(t){console.warn("[SyncEngine] WebSocket subscription failed, falling back to polling"),this._startPolling()}this._startPolling()}_startPolling(){this.pollTimer||(this.pollTimer=setInterval(async()=>{if(!this.isPaused)try{const t=await this.provider.getBlockNumber(),e=t-this.confirmations;e>this.currentBlock&&await this._syncBatch(this.currentBlock+1,e),this.latestBlock=t,this.reorgTracking&&await this._checkForReorg(t)}catch(t){console.error("[SyncEngine] Polling error:",t)}},this.pollInterval))}async _handleNewEvent(t){this.confirmations>0&&await this._waitForConfirmations(t.transactionHash);const e=this._parseEvent(t);await this.storage.putEvents([e]),this.eventsIndexed++,e.blockNumber>this.currentBlock&&(this.currentBlock=e.blockNumber,await this._saveSyncState()),this.queryEngine.notifyNewEvents(e.type,[e]),this.eventBus.emit("indexer:newEvents",{eventType:e.type,events:[e]})}async _waitForConfirmations(t){let e=0;for(;e<this.confirmations;){const r=await this.provider.getTransactionReceipt(t);if(!r){await this._sleep(1e3);continue}e=await this.provider.getBlockNumber()-r.blockNumber+1,e<this.confirmations&&await this._sleep(1e3)}}async _checkForReorg(t){const e=await this.provider.getBlock(t);if(!e)return;const r=this.recentBlocks.get(t-1);if(r&&r!==e.parentHash&&await this._handleReorg(t-1),this.recentBlocks.set(t,e.hash),this.recentBlocks.size>this.reorgDepth){const t=Math.min(...this.recentBlocks.keys());this.recentBlocks.delete(t)}}async _handleReorg(t){let e=t;for(;e>this.deployBlock;){const t=this.recentBlocks.get(e),r=await this.provider.getBlock(e);if(t===r?.hash)break;e--}await this.storage.deleteEventsAfterBlock(e),this.currentBlock=e,await this._saveSyncState(),this.eventBus.emit("indexer:reorg",{forkBlock:t,commonAncestor:e,depth:t-e}),await this._syncHistorical()}pause(){this.isPaused=!0,this.state="paused",this.eventBus.emit("indexer:paused",{})}resume(){this.isPaused=!1,this.start(),this.eventBus.emit("indexer:resumed",{})}async resync(t){this.pause(),this.currentBlock=void 0!==t?t-1:this.deployBlock-1,await this.storage.clear(),await this._saveSyncState(),this.eventsIndexed=0,this.resume()}getStatus(){return{state:this.state,currentBlock:this.currentBlock,latestBlock:this.latestBlock,progress:this.latestBlock>0?Math.min(1,(this.currentBlock-this.deployBlock)/(this.latestBlock-this.deployBlock)):0,eventsIndexed:this.eventsIndexed,lastSyncTime:this.lastSyncTime,error:this.error}}async stop(){this.isPaused=!0;for(const{filter:t,listener:e}of this.eventListeners)this.contract.off(t,e);this.eventListeners=[],this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_sleep(t){return new Promise(e=>setTimeout(e,t))}}class Jc{constructor(t,e={}){this.queryEngine=t,this.definitions=e,this.entityAPIs={};for(const[t,r]of Object.entries(e))this.entityAPIs[t]=this._createEntityAPI(t,r)}getEntity(t){return this.entityAPIs[t]}getAllEntities(){return this.entityAPIs}_createEntityAPI(t,e){const r=this;return{query:async(n={})=>r._queryEntities(t,e,n),get:async n=>(await r._queryEntities(t,e,{[e.key]:n}))[0]||null,subscribe(n,i){const s=r._getRelevantEventTypes(e);return r.queryEngine.subscribe(s,async()=>{const s=await r._queryEntities(t,e,n);i(s)})},count:async(n={})=>(await r._queryEntities(t,e,n)).length}}async _queryEntities(t,e,r={}){const n=r.status,i={...r};delete i.status;const s=await this.queryEngine.query(e.source,{where:i,limit:1e4}),o=await this.queryEngine.getEventChecker(),a=this._getRelevantEventTypes(e);await o.prefetch(a);const l=[];for(const r of s.events){const i=await this._buildEntity(t,e,r,o);n&&i.status!==n||l.push(i)}return l}async _buildEntity(t,e,r,n){const i={_type:t,_sourceEvent:r,...r.data};if(i[e.key]=r.data[e.key]||r.indexed[e.key],e.status&&(i.status=this._evaluateStatus(i,e.status,n)),e.computed)for(const[t,r]of Object.entries(e.computed))try{i[t]=r(i,n)}catch(e){console.error(`[EntityResolver] Error computing ${t}:`,e),i[t]=null}if(e.relations)for(const[t,r]of Object.entries(e.relations))Object.defineProperty(i,t,{get:()=>this._resolveRelation(i,r),enumerable:!0});return i}_evaluateStatus(t,e,r){for(const[n,i]of Object.entries(e))if("default"!==n)try{if(i(t,r))return n}catch(t){console.error(`[EntityResolver] Error evaluating status ${n}:`,t)}return e.default||"unknown"}async _resolveRelation(t,e){const r=this.entityAPIs[e.entity];if(!r)return null;const n=t[e.foreignKey];return void 0===n?null:"many"===e.type?r.query({[e.foreignKey]:n}):r.get(n)}_getRelevantEventTypes(t){const e=new Set([t.source]);if(t.status)for(const r of Object.values(t.status))if("function"==typeof r){const t=r.toString().match(/events\.has\(['"](\w+)['"]/g)||[];for(const r of t){const t=r.match(/['"](\w+)['"]/)?.[1];t&&e.add(t)}}return Array.from(e)}}class $c{constructor(t,e){this.queryEngine=t,this.entityResolver=e}async userActivity(t,e={}){const{events:r=[],userFields:n,limit:i=50,offset:s=0}=e,o=t.toLowerCase(),a=[];for(const t of r){const e=await this.queryEngine.query(t,{limit:1e3}),r=n||this._detectAddressFields(e.events[0]);for(const t of e.events){r.some(e=>{const r=t.indexed[e]||t.data[e];return"string"==typeof r&&r.toLowerCase()===o})&&a.push({type:t.type,timestamp:t.timestamp||t.blockNumber,blockNumber:t.blockNumber,transactionHash:t.transactionHash,data:t.data})}}return a.sort((t,e)=>(e.timestamp||e.blockNumber)-(t.timestamp||t.blockNumber)),a.slice(s,s+i)}async refundable(t){const{itemEvent:e,itemKey:r,parentKey:n,cancelEvent:i,claimEvent:s,userField:o,user:a}=t,l=a.toLowerCase(),c=(await this.queryEngine.query(e,{limit:1e4})).events.filter(t=>{const e=t.indexed[o]||t.data[o];return"string"==typeof e&&e.toLowerCase()===l}),h=await this.queryEngine.query(i,{limit:1e4}),u=new Set(h.events.map(t=>t.indexed[n]||t.data[n])),d=await this.queryEngine.query(s,{limit:1e4}),f=new Set(d.events.map(t=>t.indexed[r]||t.data[r]));return c.filter(t=>{const e=t.indexed[r]||t.data[r],i=t.indexed[n]||t.data[n];return u.has(i)&&!f.has(e)})}async leaderboard(t){const{event:e,groupBy:r,aggregate:n,sumField:i,limit:s=10,where:o}=t,a=await this.queryEngine.query(e,{where:o,limit:1e4}),l=new Map;for(const t of a.events){const e=t.indexed[r]||t.data[r];if(void 0===e)continue;const n="string"==typeof e?e.toLowerCase():e;l.has(n)||l.set(n,{key:e,events:[]}),l.get(n).events.push(t)}const c=[];for(const[t,e]of l){let t;"count"===n?t=e.events.length:"sum"===n&&(t=e.events.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),c.push({key:e.key,value:t})}return c.sort((t,e)=>e.value-t.value),c.slice(0,s).map((t,e)=>({...t,rank:e+1}))}async timeSeries(t){const{event:e,interval:r,aggregate:n,sumField:i,where:s,periods:o=30}=t,a=await this.queryEngine.query(e,{where:s,limit:1e5}),l={hour:36e5,day:864e5,week:6048e5}[r];if(!l)throw new Error(`Invalid interval: ${r}`);const c=Date.now(),h=new Map;for(let t=0;t<o;t++){const e=new Date(c-(t+1)*l).toISOString();h.set(e,[])}for(const t of a.events){const e=t.timestamp?1e3*t.timestamp:c,r=Math.floor((c-e)/l);if(r>=0&&r<o){const e=new Date(c-(r+1)*l).toISOString();h.has(e)&&h.get(e).push(t)}}const u=[];for(const[t,e]of h){let r;"count"===n?r=e.length:"sum"===n&&(r=e.reduce((t,e)=>{const r=e.indexed[i]||e.data[i],n="string"==typeof r?parseFloat(r):r;return t+(isNaN(n)?0:n)},0)),u.push({period:t,value:r})}return u.sort((t,e)=>new Date(t.period)-new Date(e.period)),u}_detectAddressFields(t){if(!t)return[];const e=[],r={...t.indexed,...t.data};for(const[t,n]of Object.entries(r))"string"==typeof n&&n.match(/^0x[a-fA-F0-9]{40}$/)&&e.push(t);return e}}class Qc extends Error{constructor(t,e,r){super(t),this.name="EventIndexerError",this.code=e,this.cause=r}}const Yc={NOT_INITIALIZED:"NOT_INITIALIZED",STORAGE_ERROR:"STORAGE_ERROR",SYNC_ERROR:"SYNC_ERROR",QUERY_ERROR:"QUERY_ERROR",INVALID_CONFIG:"INVALID_CONFIG",PROVIDER_ERROR:"PROVIDER_ERROR",REORG_DETECTED:"REORG_DETECTED"};class Xc{constructor(t,e={}){if(!t)throw new Qc("EventBus is required",Yc.INVALID_CONFIG);this.eventBus=t,this.blockchainService=e.blockchainService,this.storage=null,this.queryEngine=null,this.syncEngine=null,this.entityResolver=null,this.patternsAPI=null,this.contract=null,this.initialized=!1,this.config=null}async initialize(t){this._validateConfig(t),this.config=t;try{const e=this._getProvider(t),r=await e.getNetwork(),n=Number(r.chainId),i=this._extractEventTypes(t.contract.abi);this.storage=function(t){return"memory"===t?.type?new Gc:Wc.isStorageEnabled()?"undefined"!=typeof indexedDB?new jc:(console.warn("[EventIndexer] IndexedDB not available, falling back to memory storage"),new Gc):(console.log("[EventIndexer] User disabled IndexedDB storage, using memory"),new Gc)}(t.persistence),await this.storage.initialize({dbName:t.persistence?.dbName||`micro-web3-events-${n}`,version:t.persistence?.version||1,eventTypes:i}),this.contract=new Os(t.contract.address,t.contract.abi,e);const s=t.contract.deployBlock||await this._detectDeployBlock(e);this.queryEngine=new Kc(this.storage,this.eventBus),this.syncEngine=new Vc(this.storage,this.queryEngine,this.eventBus,t.sync||{}),await this.syncEngine.initialize({provider:e,contract:this.contract,eventTypes:i,deployBlock:s,chainId:n}),t.entities&&(this.entityResolver=new Jc(this.queryEngine,t.entities)),this.patternsAPI=new $c(this.queryEngine,this.entityResolver),this.initialized=!0,this.eventBus.emit("indexer:initialized",{}),await this.syncEngine.start()}catch(t){throw this.eventBus.emit("indexer:error",{code:Yc.STORAGE_ERROR,message:`Initialization failed: ${t.message}`,cause:t,recoverable:!1}),new Qc(`Failed to initialize EventIndexer: ${t.message}`,Yc.STORAGE_ERROR,t)}}_validateConfig(t){if(!t.contract)throw new Qc("contract config is required",Yc.INVALID_CONFIG);if(!t.contract.address)throw new Qc("contract.address is required",Yc.INVALID_CONFIG);if(!t.contract.abi||!Array.isArray(t.contract.abi))throw new Qc("contract.abi is required and must be an array",Yc.INVALID_CONFIG);if(!t.provider&&!this.blockchainService)throw new Qc("Either provider in config or blockchainService in constructor is required",Yc.INVALID_CONFIG)}_getProvider(t){if(t.provider)return t.provider;if(this.blockchainService?.getProvider)return this.blockchainService.getProvider();if(this.blockchainService?.provider)return this.blockchainService.provider;throw new Qc("No provider available",Yc.PROVIDER_ERROR)}_extractEventTypes(t){const e=[];for(const r of t)if("event"===r.type){const t=r.inputs.filter(t=>t.indexed).map(t=>t.name);e.push({name:r.name,inputs:r.inputs,indexedParams:t})}return e}async _detectDeployBlock(t){return console.warn("[EventIndexer] No deployBlock specified, starting from block 0"),0}get events(){return this._checkInitialized(),{query:(t,e)=>this.queryEngine.query(t,e),get:(t,e)=>this.queryEngine.get(t,e),subscribe:(t,e)=>this.queryEngine.subscribe(t,e),count:(t,e)=>this.queryEngine.count(t,e)}}get entities(){return this._checkInitialized(),this.entityResolver?new Proxy({},{get:(t,e)=>this.entityResolver.getEntity(e)}):(console.warn("[EventIndexer] No entities configured"),{})}get patterns(){return this._checkInitialized(),this.patternsAPI}get sync(){return this._checkInitialized(),{getStatus:()=>this.syncEngine.getStatus(),resync:t=>this.syncEngine.resync(t),clear:()=>this.storage.clear(),pause:()=>this.syncEngine.pause(),resume:()=>this.syncEngine.resume()}}_checkInitialized(){if(!this.initialized)throw new Qc("EventIndexer not initialized. Call initialize() first.",Yc.NOT_INITIALIZED)}async destroy(){this.syncEngine&&await this.syncEngine.stop(),this.storage&&await this.storage.close(),this.initialized=!1}static installHook(t){t.prototype.useIndexer?console.warn("[EventIndexer] useIndexer hook already installed"):t.prototype.useIndexer=function(t,e={},r={}){let n=null,i=!0,s=null;const o=()=>{const t={};for(const[r,n]of Object.entries(e))t[r]="function"==typeof n?n():n;return t},a=async()=>{try{const e=o();if(t.query){const r=await t.query(e);n=Array.isArray(r)?r:r.events}else n=[];i=!1,r.onUpdate&&r.onUpdate(n)}catch(t){i=!1,console.error("[useIndexer] Query error:",t),r.onError&&r.onError(t)}};return a(),t.subscribe&&(s=t.subscribe(o(),()=>{a()})),this.registerCleanup&&this.registerCleanup(()=>{s&&s()}),new Proxy([],{get:(t,e)=>"length"===e?n?.length||0:"isLoading"===e?i:e===Symbol.iterator?function*(){n&&(yield*n)}:"string"!=typeof e||isNaN(e)?n&&"function"==typeof n[e]?n[e].bind(n):n?.[e]:n?.[parseInt(e)]})}}}Xc.EventIndexerError=Qc,Xc.ErrorCodes=Yc;class Zc extends t{constructor(t){super(t),this.state={isVisible:!1}}show(){this.setState({isVisible:!0})}hide(){this.setState({isVisible:!1})}handleWalletClick(t){this.props.onWalletSelected&&this.props.onWalletSelected(t),this.hide()}render(){if(!this.state.isVisible)return e("div",{className:"wallet-modal-container",style:{display:"none"}});const t=Object.keys(this.props.providerMap);return e("div",{className:"wallet-modal-container"},e("div",{className:"wallet-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.hide()}},e("div",{className:"wallet-modal"},e("div",{className:"wallet-modal-header"},e("h3",null,"Select Your Wallet"),e("button",{className:"wallet-modal-close",onClick:this.bind(this.hide)},"×")),e("div",{className:"wallet-options"},t.map(t=>e("button",{key:t,className:"wallet-option","data-wallet":t,onClick:()=>this.handleWalletClick(t)},e("img",{src:this.props.walletIcons[t],alt:t}),e("span",null,t.charAt(0).toUpperCase()+t.slice(1))))))))}}class th extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.overlay=null,this.state={isVisible:!1,storageEnabled:!0,storageUsed:0,storageQuota:0,clearing:!1}}async show(){if(this.state.isVisible)return;const t=Wc.get(),e=await Wc.getStorageEstimate();this.setState({isVisible:!0,storageEnabled:t.storageEnabled,storageUsed:e.used||0,storageQuota:e.quota||0,clearing:!1}),this._createModal()}hide(){this.state.isVisible&&(this.overlay&&this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay),this.overlay=null,this._escHandler&&(document.removeEventListener("keydown",this._escHandler),this._escHandler=null),this.setState({isVisible:!1}))}_createModal(){th.injectStyles(),this.overlay=document.createElement("div"),this.overlay.className="mw3-settings-overlay",this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.hide()});const t=document.createElement("div");t.className="mw3-settings-modal",this.overlay.appendChild(t),document.body.appendChild(this.overlay),r(e(eh,{...this.state,eventBus:this.eventBus,onClose:()=>this.hide(),onStorageToggle:t=>this._handleStorageToggle(t),onClearData:()=>this._handleClearData()}),t),this._escHandler=t=>{"Escape"===t.key&&this.hide()},document.addEventListener("keydown",this._escHandler)}_handleStorageToggle(t){Wc.set({storageEnabled:t}),this.setState({storageEnabled:t}),this.eventBus.emit("settings:storageChanged",{enabled:t}),this._updateModalContent()}async _handleClearData(){if(!this.state.clearing){this.setState({clearing:!0}),this._updateModalContent();try{await Wc.clearAllData();const t=await Wc.getStorageEstimate();this.setState({storageUsed:t.used||0,storageQuota:t.quota||0,clearing:!1}),this.eventBus.emit("settings:dataCleared",{})}catch(t){console.error("[SettingsModal] Failed to clear data:",t),this.setState({clearing:!1})}this._updateModalContent()}}_updateModalContent(){if(this.overlay){const t=this.overlay.querySelector(".mw3-settings-modal");t&&r(e(eh,{...this.state,eventBus:this.eventBus,onClose:()=>this.hide(),onStorageToggle:t=>this._handleStorageToggle(t),onClearData:()=>this._handleClearData()}),t)}}static injectStyles(){if(document.getElementById("mw3-settings-styles"))return;const t=document.createElement("style");t.id="mw3-settings-styles",t.textContent="\n .mw3-settings-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n backdrop-filter: blur(4px);\n }\n\n .mw3-settings-modal {\n background: linear-gradient(135deg, #1a1a2e, #16213e);\n border: 1px solid rgba(218, 165, 32, 0.3);\n border-radius: 12px;\n width: 90%;\n max-width: 400px;\n color: #fff;\n font-family: 'Lato', system-ui, sans-serif;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n }\n\n .mw3-settings-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.25rem;\n border-bottom: 1px solid rgba(218, 165, 32, 0.2);\n }\n\n .mw3-settings-header h2 {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n }\n\n .mw3-settings-close {\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0;\n line-height: 1;\n }\n\n .mw3-settings-close:hover {\n color: #fff;\n }\n\n .mw3-settings-content {\n padding: 1.25rem;\n }\n\n .mw3-settings-section h3 {\n margin: 0 0 0.5rem 0;\n font-size: 0.9rem;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-description {\n margin: 0 0 1rem 0;\n font-size: 0.8rem;\n color: rgba(255, 255, 255, 0.6);\n line-height: 1.4;\n }\n\n .mw3-settings-row {\n margin-bottom: 1rem;\n }\n\n .mw3-settings-toggle {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n }\n\n .mw3-settings-toggle input {\n display: none;\n }\n\n .mw3-toggle-slider {\n width: 44px;\n height: 24px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n position: relative;\n transition: background 0.2s;\n }\n\n .mw3-toggle-slider::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: #fff;\n border-radius: 50%;\n transition: transform 0.2s;\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider {\n background: rgba(218, 165, 32, 0.8);\n }\n\n .mw3-settings-toggle input:checked + .mw3-toggle-slider::after {\n transform: translateX(20px);\n }\n\n .mw3-toggle-label {\n font-size: 0.875rem;\n color: rgba(255, 255, 255, 0.9);\n }\n\n .mw3-settings-info {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.5);\n margin-bottom: 1rem;\n }\n\n .mw3-settings-note {\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.4);\n margin: 0;\n font-style: italic;\n }\n\n .mw3-settings-btn {\n padding: 0.625rem 1rem;\n border-radius: 6px;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n border: none;\n transition: all 0.2s;\n }\n\n .mw3-settings-btn--primary {\n background: rgba(218, 165, 32, 0.9);\n color: #1a1a2e;\n }\n\n .mw3-settings-btn--primary:hover {\n background: rgba(218, 165, 32, 1);\n }\n\n .mw3-settings-btn--danger {\n background: rgba(255, 99, 71, 0.2);\n color: rgba(255, 99, 71, 0.9);\n border: 1px solid rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn--danger:hover {\n background: rgba(255, 99, 71, 0.3);\n }\n\n .mw3-settings-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .mw3-settings-footer {\n padding: 1rem 1.25rem;\n border-top: 1px solid rgba(218, 165, 32, 0.2);\n display: flex;\n justify-content: flex-end;\n }\n ",document.head.appendChild(t)}}class eh extends t{render(){const{storageEnabled:t,storageUsed:r,storageQuota:n,clearing:i,onClose:s,onStorageToggle:o,onClearData:a}=this.props,l=(r/1048576).toFixed(1),c=(n/1048576).toFixed(0);return e("div",null,e("div",{className:"mw3-settings-header"},e("h2",null,"Settings"),e("button",{className:"mw3-settings-close",onClick:s},"×")),e("div",{className:"mw3-settings-content"},e("div",{className:"mw3-settings-section"},e("h3",null,"Data Storage"),e("p",{className:"mw3-settings-description"},"Event data is cached locally to improve performance. You can disable this to save space."),e("div",{className:"mw3-settings-row"},e("label",{className:"mw3-settings-toggle"},e("input",{type:"checkbox",checked:t,onChange:t=>o(t.target.checked)}),e("span",{className:"mw3-toggle-slider"}),e("span",{className:"mw3-toggle-label"},"Enable local event storage"))),e("div",{className:"mw3-settings-info"},e("span",null,`Storage used: ${l} MB${c>0?` / ${c} MB`:""}`)),e("div",{className:"mw3-settings-row"},e("button",{className:"mw3-settings-btn mw3-settings-btn--danger",disabled:i,onClick:a},i?"Clearing...":"Clear All Cached Data")),e("p",{className:"mw3-settings-note"},"Disabling storage means event history will need to be re-fetched each session."))),e("div",{className:"mw3-settings-footer"},e("button",{className:"mw3-settings-btn mw3-settings-btn--primary",onClick:s},"Done")))}}class rh extends t{constructor(t){super(t),this.walletService=t.walletService,this.walletModal=null,this.settingsModal=null,this.state={walletConnected:!1,address:null,balance:"0.00",loading:!0,menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1}}didMount(){console.log("[FloatingWalletButton] didMount called"),this.initialize(),this.setupClickOutsideHandler()}async initialize(){await this.checkWalletConnection(),this.setupEventListeners()}async checkWalletConnection(){console.log("[FloatingWalletButton] checkWalletConnection called");try{this.walletService.isInitialized||await this.walletService.initialize();let t=this.walletService.isConnected(),e=this.walletService.getAddress();if(!t&&void 0!==window.ethereum)try{const r=await window.ethereum.request({method:"eth_accounts"});if(r&&r.length>0){const n=this._detectWalletType();console.log("[FloatingWalletButton] Detected existing connection:",n,r[0]);try{await this.walletService.selectWallet(n),await this.walletService.connect(),t=this.walletService.isConnected(),e=this.walletService.getAddress(),t&&(console.log("[FloatingWalletButton] Auto-connected to existing session:",n),localStorage.setItem("ms2fun_lastWallet",n))}catch(t){console.log("[FloatingWalletButton] Could not auto-connect:",t.message)}}}catch(t){console.log("[FloatingWalletButton] Could not check existing accounts:",t)}t&&e?await this.loadWalletInfo(e):this.setState({loading:!1,walletConnected:!1})}catch(t){console.error("[FloatingWalletButton] Error checking wallet connection:",t),this.setState({loading:!1,walletConnected:!1})}}_detectWalletType(){return void 0===window.ethereum?"metamask":window.ethereum.isRabby?"rabby":window.ethereum.isRainbow?"rainbow":window.ethereum.isPhantom||window.ethereum===window.phantom?.ethereum?"phantom":"metamask"}async loadWalletInfo(t){try{let e=this.walletService.ethersProvider;e||void 0===window.ethereum||(e=new hc(window.ethereum));let r="0.00";if(e&&t){const n=await e.getBalance(t);r=parseFloat(Sc(n)).toFixed(4)}const n=!1,i=!1;this.setState({walletConnected:!0,address:t,balance:r,loading:!1,hasExecTokens:n,isVaultBenefactor:i})}catch(e){console.error("[FloatingWalletButton] Failed to load wallet info:",e),this.setState({walletConnected:!0,address:t,loading:!1})}}async checkExecTokens(t){return!1}async checkVaultBenefactor(t){return!1}setupEventListeners(){this.subscribe("wallet:connected",async t=>{await this.loadWalletInfo(t.address)}),this.subscribe("wallet:disconnected",()=>{this.setState({walletConnected:!1,address:null,balance:"0.00",menuOpen:!1,hasExecTokens:!1,isVaultBenefactor:!1})}),this.subscribe("wallet:changed",async t=>{await this.loadWalletInfo(t.address)})}setupClickOutsideHandler(){const t=t=>{this.element&&!this.element.contains(t.target)&&this.state.menuOpen&&this.setState({menuOpen:!1})};document.addEventListener("click",t),this.registerCleanup(()=>{document.removeEventListener("click",t)})}handleButtonClick(t){t.preventDefault(),t.stopPropagation(),this.state.walletConnected?this.setState({menuOpen:!this.state.menuOpen}):this.showWalletModal()}showWalletModal(){const t={rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},n={rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),r(e(Zc,{providerMap:t,walletIcons:n,onWalletSelected:async t=>{await this.handleWalletSelection(t)},ref:t=>this.walletModal=t}),this.modalRoot)),this.walletModal?.show()}async handleWalletSelection(t){try{await this.walletService.selectWallet(t),localStorage.setItem("ms2fun_lastWallet",t),await this.walletService.connect()}catch(t){console.error("[FloatingWalletButton] Error connecting wallet:",t)}}handleMenuItemClick(t){this.setState({menuOpen:!1}),window.router?window.router.navigate(t):window.location.href=t}handleDisconnect(t){t.preventDefault(),t.stopPropagation();try{this.walletService.disconnect(),this.setState({menuOpen:!1})}catch(t){console.error("[FloatingWalletButton] Failed to disconnect:",t)}}static get styles(){return"\n /* FloatingWalletButton - Bottom-right floating wallet connection button with power user dropdown */\n\n .floating-wallet-button {\n position: fixed;\n bottom: 2rem;\n right: 2rem;\n z-index: 9999; /* Above all content */\n }\n\n .floating-wallet-button .wallet-btn {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.9), rgba(101, 67, 33, 0.9));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 50px;\n color: #fff;\n font-family: 'Cinzel', serif;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(10px);\n }\n\n .floating-wallet-button .wallet-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(218, 165, 32, 0.4);\n border-color: rgba(218, 165, 32, 0.8);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n\n .floating-wallet-button .wallet-btn:active {\n transform: translateY(0);\n }\n\n /* Wallet icon */\n .floating-wallet-button .wallet-icon {\n font-size: 1.2rem;\n line-height: 1;\n }\n\n /* Wallet text/address */\n .floating-wallet-button .wallet-text,\n .floating-wallet-button .wallet-address {\n font-size: 0.875rem;\n white-space: nowrap;\n }\n\n /* Loading state */\n .floating-wallet-button.loading {\n pointer-events: none;\n }\n\n .floating-wallet-button .wallet-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid rgba(218, 165, 32, 0.3);\n border-top-color: rgba(218, 165, 32, 0.9);\n border-radius: 50%;\n animation: wallet-spin 0.8s linear infinite;\n }\n\n @keyframes wallet-spin {\n to { transform: rotate(360deg); }\n }\n\n /* Dropdown menu */\n .wallet-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 0.5rem);\n right: 0;\n min-width: 240px;\n background: linear-gradient(135deg, rgba(139, 69, 19, 0.98), rgba(101, 67, 33, 0.98));\n border: 2px solid rgba(218, 165, 32, 0.6);\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(15px);\n overflow: hidden;\n animation: dropdown-slide-up 0.2s ease-out;\n }\n\n @keyframes dropdown-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Dropdown header */\n .wallet-dropdown-menu .dropdown-header {\n padding: 1rem;\n background: rgba(0, 0, 0, 0.3);\n border-bottom: 1px solid rgba(218, 165, 32, 0.3);\n }\n\n .wallet-dropdown-menu .dropdown-address {\n font-family: 'Cinzel', serif;\n font-size: 0.875rem;\n font-weight: 600;\n color: rgba(218, 165, 32, 0.95);\n margin-bottom: 0.25rem;\n }\n\n .wallet-dropdown-menu .dropdown-balance {\n font-family: 'Lato', sans-serif;\n font-size: 0.75rem;\n color: rgba(255, 255, 255, 0.7);\n }\n\n /* Dropdown divider */\n .wallet-dropdown-menu .dropdown-divider {\n height: 1px;\n background: linear-gradient(90deg,\n transparent,\n rgba(218, 165, 32, 0.3) 50%,\n transparent\n );\n margin: 0;\n }\n\n /* Dropdown items */\n .wallet-dropdown-menu .dropdown-items {\n padding: 0.5rem;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.75rem 1rem;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: rgba(255, 255, 255, 0.9);\n font-family: 'Lato', sans-serif;\n font-size: 0.875rem;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .wallet-dropdown-menu .dropdown-item:hover {\n background: rgba(218, 165, 32, 0.15);\n color: #fff;\n }\n\n .wallet-dropdown-menu .dropdown-item:active {\n background: rgba(218, 165, 32, 0.25);\n }\n\n .wallet-dropdown-menu .dropdown-item .item-icon {\n font-size: 1.125rem;\n line-height: 1;\n opacity: 0.9;\n }\n\n .wallet-dropdown-menu .dropdown-item .item-label {\n flex: 1;\n }\n\n /* Disconnect button special styling */\n .wallet-dropdown-menu .dropdown-item.disconnect {\n color: rgba(255, 99, 71, 0.9);\n }\n\n .wallet-dropdown-menu .dropdown-item.disconnect:hover {\n background: rgba(255, 99, 71, 0.15);\n color: rgba(255, 99, 71, 1);\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n .floating-wallet-button {\n bottom: 1rem;\n right: 1rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.625rem 1rem;\n font-size: 0.8rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 200px;\n right: 0;\n }\n\n .wallet-dropdown-menu .dropdown-item {\n padding: 0.625rem 0.875rem;\n font-size: 0.8rem;\n }\n }\n\n /* Small screens - even more compact */\n @media (max-width: 480px) {\n .floating-wallet-button {\n bottom: 0.75rem;\n right: 0.75rem;\n }\n\n .floating-wallet-button .wallet-btn {\n padding: 0.5rem 0.875rem;\n font-size: 0.75rem;\n }\n\n .floating-wallet-button .wallet-icon {\n font-size: 1rem;\n }\n\n .wallet-dropdown-menu {\n min-width: 180px;\n }\n }\n\n /* Ensure menu appears above button when open */\n .floating-wallet-button.menu-open .wallet-btn {\n border-color: rgba(218, 165, 32, 0.9);\n background: linear-gradient(135deg, rgba(160, 82, 45, 0.95), rgba(120, 80, 50, 0.95));\n }\n "}render(){if(console.log("[FloatingWalletButton] render called, loading:",this.state.loading,"walletConnected:",this.state.walletConnected),this.state.loading)return e("div",{className:"floating-wallet-button loading"},e("div",{className:"wallet-spinner"}));const{walletConnected:t,address:r,balance:n,menuOpen:i,hasExecTokens:s,isVaultBenefactor:o}=this.state;if(!t)return e("div",{className:"floating-wallet-button disconnected",ref:t=>this.element=t},e("button",{className:"wallet-btn",onClick:this.bind(this.handleButtonClick)},e("span",{className:"wallet-icon"},"🦊"),e("span",{className:"wallet-text"},"Connect")));const a=`${r.slice(0,6)}...${r.slice(-4)}`;return e("div",{className:"floating-wallet-button connected "+(i?"menu-open":""),ref:t=>this.element=t},e("button",{className:"wallet-btn",title:`${this.escapeHtml(r)}\nBalance: ${n} ETH`,onClick:this.bind(this.handleButtonClick)},e("span",{className:"wallet-icon"},"🦊"),e("span",{className:"wallet-address"},this.escapeHtml(a))),i&&this.renderDropdownMenu(r,n,s,o))}renderDropdownMenu(t,r,n,i){const s=`${t.slice(0,6)}...${t.slice(-4)}`;return e("div",{className:"wallet-dropdown-menu"},e("div",{className:"dropdown-header"},e("div",{className:"dropdown-address"},this.escapeHtml(s)),e("div",{className:"dropdown-balance"},`${r} ETH`)),e("div",{className:"dropdown-divider"}),e("div",{className:"dropdown-items"},e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/portfolio")},e("span",{className:"item-icon"},"📊"),e("span",{className:"item-label"},"Portfolio")),n&&e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/governance")},e("span",{className:"item-icon"},"🗳️"),e("span",{className:"item-label"},"Governance")),e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/staking")},e("span",{className:"item-icon"},"🎯"),e("span",{className:"item-label"},"Staking")),i&&e("button",{className:"dropdown-item",onClick:()=>this.handleMenuItemClick("/portfolio?filter=vaults")},e("span",{className:"item-icon"},"💰"),e("span",{className:"item-label"},"Vault Positions"))),e("div",{className:"dropdown-divider"}),e("div",{className:"dropdown-items"},e("button",{className:"dropdown-item",onClick:()=>{this.setState({menuOpen:!1}),this.openSettings()}},e("span",{className:"item-icon"},"⚙️"),e("span",{className:"item-label"},"Settings")),e("button",{className:"dropdown-item disconnect",onClick:this.bind(this.handleDisconnect)},e("span",{className:"item-icon"},"🔌"),e("span",{className:"item-label"},"Disconnect"))))}openSettings(){this.settingsModal||(this.settingsModal=new th({eventBus:n})),this.settingsModal.show()}willUnmount(){this.walletModal&&(this.walletModal.hide(),this.walletModal=null),this.settingsModal&&(this.settingsModal.hide(),this.settingsModal=null)}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}}class nh extends Zc{handleWalletOptionClick(t){this.props.onWalletSelected&&this.props.onWalletSelected(t),this.hide()}render(){if(!this.state.isVisible)return e("div",{className:"wallet-modal-container",style:{display:"none"}});const t=Object.keys(this.props.providerMap);return e("div",{className:"wallet-modal-container"},e("div",{className:"wallet-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.hide()}},e("div",{className:"wallet-modal"},e("div",{className:"wallet-modal-header"},e("h3",null,"Select Your Wallet"),e("button",{className:"wallet-modal-close",onClick:this.bind(this.hide)},"×")),e("div",{className:"wallet-options"},t.map(t=>e("button",{key:t,className:"wallet-option",onClick:()=>this.handleWalletOptionClick(t)},e("img",{src:this.props.walletIcons[t],alt:t}),e("span",null,t.charAt(0).toUpperCase()+t.slice(1))))))))}}class ih extends rh{constructor(t){super(t),this.modalRoot=null}showWalletModal(){const t=this.walletService?.providerMap||{rabby:()=>window.ethereum?.isRabby?window.ethereum:null,rainbow:()=>window.ethereum?.isRainbow?window.ethereum:null,phantom:()=>window.phantom?.ethereum||null,metamask:()=>window.ethereum||null},n=this.walletService?.walletIcons||{rabby:"/public/wallets/rabby.webp",rainbow:"/public/wallets/rainbow.webp",phantom:"/public/wallets/phantom.webp",metamask:"/public/wallets/MetaMask.webp"};this.walletModal||(this.modalRoot||(this.modalRoot=document.createElement("div"),document.body.appendChild(this.modalRoot)),r(e(nh,{providerMap:t,walletIcons:n,onWalletSelected:async t=>{await this.handleWalletSelection(t)},ref:t=>this.walletModal=t}),this.modalRoot)),this.walletModal?.show()}willUnmount(){this.modalRoot?.parentNode&&(this.modalRoot.parentNode.removeChild(this.modalRoot),this.modalRoot=null),super.willUnmount()}render(){if(this.state.loading)return e("div",{className:"floating-wallet-button loading"},e("div",{className:"wallet-spinner"}));const{walletConnected:t,address:r,balance:n,menuOpen:i}=this.state;if(!t)return e("div",{className:"floating-wallet-button disconnected",ref:t=>this.element=t},e("button",{className:"wallet-btn",onClick:this.bind(this.handleWalletToggle)},e("span",{className:"wallet-mark"}),e("span",{className:"wallet-text"},"Connect Wallet")));const s=`${r.slice(0,6)}...${r.slice(-4)}`,o=["floating-wallet-button","connected"];return i&&o.push("menu-open"),e("div",{className:o.join(" "),ref:t=>this.element=t},e("button",{className:"wallet-btn",title:`${this.escapeHtml(r)}\nBalance: ${n} ETH`,onClick:this.bind(this.handleWalletToggle)},e("span",{className:"wallet-mark wallet-mark--connected"}),e("span",{className:"wallet-address"},this.escapeHtml(s)),e("span",{className:"wallet-disconnect",title:"Disconnect",onClick:this.bind(this.handleInlineDisconnect)},"⏏︎")),this.renderWalletPanel(r,n,i))}renderWalletPanel(t,r,n){const i=`${t.slice(0,6)}...${t.slice(-4)}`;return e("div",{className:"wallet-info-panel","aria-hidden":n?"false":"true"},e("div",{className:"wallet-info-row"},e("span",{className:"wallet-info-label"},"Address"),e("span",{className:"wallet-info-value"},this.escapeHtml(i))),e("div",{className:"wallet-info-row"},e("span",{className:"wallet-info-label"},"ETH Balance"),e("span",{className:"wallet-info-value"},`${r} ETH`)))}didUpdate(){this.state.menuOpen?this.attachOutsideClickListener():this.detachOutsideClickListener()}attachOutsideClickListener(){this.outsideClickHandler||this.outsideClickTimeout||(this.outsideClickHandler=t=>{if(!this.element)return;const e="function"==typeof t.composedPath?t.composedPath():[];e.length&&e.includes(this.element)||t.target&&this.element.contains(t.target)||this.setState({menuOpen:!1})},this.outsideClickTimeout=window.setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler),this.outsideClickTimeout=null},0))}detachOutsideClickListener(){this.outsideClickTimeout&&(window.clearTimeout(this.outsideClickTimeout),this.outsideClickTimeout=null),this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null)}handleWalletToggle(t){this.handleButtonClick(t)}handleInlineDisconnect(t){t&&(t.preventDefault(),t.stopPropagation()),this.handleDisconnect(t)}}class sh extends t{constructor(t={}){super(t),this.state={gatewayIndex:0,isLoading:!0,hasError:!1,currentSrc:null}}getCurrentUrl(){const{src:t}=this.props;return t?Oc(t)?Lc(t,this.state.gatewayIndex):t:null}handleImageLoad(t){this.setState({isLoading:!1,hasError:!1}),this.props.onLoad&&this.props.onLoad(t)}handleImageError(t){const e=Uc(),{src:r}=this.props;if(!Oc(r)||this.state.gatewayIndex>=e.length-1)return this.setState({isLoading:!1,hasError:!0}),console.error("[IpfsImage] Failed to load image:",r,{triedGateways:this.state.gatewayIndex+1,totalGateways:e.length}),void(this.props.onError&&this.props.onError(t));const n=this.state.gatewayIndex+1;this.setState({gatewayIndex:n})}normalizeStyle(t){return t&&"object"==typeof t?t:{}}escapeHtml(t){if(!t)return"";const e=document.createElement("div");return e.textContent=t,e.innerHTML}render(){const{src:t,alt:r="",className:n="",style:i={},loading:s="lazy",placeholder:o,errorPlaceholder:a}=this.props,{isLoading:l,hasError:c}=this.state;if(!t)return e("div",{className:"ipfs-image-empty"});const h=this.getCurrentUrl();if(c)return a||e("div",{className:`ipfs-image-error ${n}`,style:this.normalizeStyle(i)},e("div",{className:"ipfs-image-error-icon"},"⚠️"),e("div",{className:"ipfs-image-error-text"},"IPFS image unavailable"));const u=l?{opacity:0}:{opacity:1,transition:"opacity 0.3s"};return e("div",{className:`ipfs-image-container ${n}`,style:this.normalizeStyle(i)},l&&o,e("img",{src:h||"",alt:r,loading:s,className:"ipfs-image "+(l?"ipfs-image-loading":"ipfs-image-loaded"),style:u,onLoad:this.bind(this.handleImageLoad),onError:this.bind(this.handleImageError)}))}}sh.styles="\n .ipfs-image-container {\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n\n .ipfs-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .ipfs-image-loading {\n opacity: 0;\n }\n\n .ipfs-image-loaded {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n }\n\n .ipfs-image-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n background-color: #f5f5f5;\n color: #666;\n padding: 1rem;\n text-align: center;\n }\n\n .ipfs-image-error-icon {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n }\n\n .ipfs-image-error-text {\n font-size: 0.875rem;\n }\n\n .ipfs-image-empty {\n display: block;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n\n /* Dark mode support */\n html[data-theme='dark'] .ipfs-image-error {\n background-color: #2a2a2a;\n color: #aaa;\n }\n";class oh extends t{constructor(t){super(t),this.state={nftMintingEnabled:t.nftMintingEnabled||!1,message:t.message||"",isValid:void 0===t.isValid||t.isValid,nftBalance:t.nftBalance||0,swapDirection:t.swapDirection||"buy",lastValidationState:!0,isPhase2:null===t.isPhase2?null:t.isPhase2},this.updateTimer=null}didMount(){this.subscribe("contractData:updated",t=>{const e=t.liquidityPool&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool;this.state.isPhase2!==e&&this.setState({isPhase2:e})})}validateTransaction(){const t=this.state.message.length<=140,e=!this.state.nftMintingEnabled||this.state.nftBalance<10,r=t&&e;this.state.lastValidationState!==r&&(this.setState({lastValidationState:r,isValid:r}),this.props.eventBus?.emit("transactionValidation",{isValid:r,errors:this.getValidationErrors()}))}getValidationErrors(){const t=[];return this.state.message.length>140&&t.push("Message must be 140 characters or less"),this.state.nftMintingEnabled&&this.state.nftBalance>=10&&t.push("Cannot mint more than 10 NFTs"),t}handleMessageInput(t){const e=t.target.value||"";this.setState({message:e}),this.validateTransaction(),this.emitStateUpdate()}handleNFTToggle(t){const e=t.target.checked;this.setState({nftMintingEnabled:e}),this.validateTransaction(),this.emitStateUpdate()}emitStateUpdate(){const t={message:this.state.message,nftMintingEnabled:this.state.nftMintingEnabled};this.props.eventBus?.emit("transactionOptions:update",t)}render(){const{nftMintingEnabled:t,message:r,isValid:n,isPhase2:i,swapDirection:s}=this.state;if(null===i||i)return e("div",{className:"transaction-options empty"});const o=this.getValidationErrors();return e("div",{className:"transaction-options"},e("div",{className:"option-group "+("sell"===s?"hidden":"")},e("label",{className:"nft-toggle"},e("input",{type:"checkbox",checked:t,onChange:this.bind(this.handleNFTToggle)}),"Mint NFT with transaction")),e("div",{className:"option-group"},e("label",{htmlFor:"messageInput"},"Transaction Message"),e("textarea",{id:"messageInput",maxLength:140,placeholder:"Enter optional message...",value:r,onInput:this.bind(this.handleMessageInput)}),e("span",{className:"character-count "+(r.length>140?"error":"")},`${r.length}/140`)),e("div",{className:"validation-status "+(n?"valid":"invalid")},o.map((t,r)=>e("p",{key:r,className:"error"},t))))}}class ah extends t{constructor(t){super(t),this.state={messages:[]}}show(t){const{title:e="",message:r="",type:n="info",duration:i=5e3}=t,s=Date.now()+Math.random(),o={id:s,title:e,message:r,type:n};this.setState({messages:[...this.state.messages,o]}),i>0&&setTimeout(()=>this.close(s),i)}close(t){const e=this.state.messages.filter(e=>e.id!==t);this.setState({messages:e})}error(t,e="Error"){this.show({title:e,message:t,type:"error"})}success(t,e="Success"){this.show({title:e,message:t,type:"success"})}warning(t,e="Warning"){this.show({title:e,message:t,type:"warning"})}info(t,e="Info"){this.show({title:e,message:t,type:"info"})}handleClose(t){this.close(t)}render(){const{messages:t}=this.state;return e("div",{id:"message-popup-container"},t.map(t=>e("div",{key:t.id,className:`message-popup ${t.type}`,"data-id":t.id},e("div",{className:"message-content"},t.title&&e("div",{className:"message-title"},t.title),e("div",{className:"message-text"},t.message)),e("button",{className:"close-button",onClick:()=>this.handleClose(t.id)},"×"))))}static get styles(){return"\n #message-popup-container {\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .message-popup {\n background: #ffffff;\n border-radius: 8px;\n padding: 15px 20px;\n min-width: 300px;\n max-width: 400px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n animation: slideIn 0.3s ease;\n border-left: 4px solid #2196F3;\n }\n\n .message-popup.error {\n border-left-color: #f44336;\n }\n\n .message-popup.success {\n border-left-color: #4CAF50;\n }\n\n .message-popup.warning {\n border-left-color: #ff9800;\n }\n\n .message-content {\n flex-grow: 1;\n margin-right: 10px;\n }\n\n .message-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n .message-text {\n font-size: 14px;\n color: #666;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n line-height: 1;\n }\n\n .close-button:hover {\n color: #666;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes fadeOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n "}}const lh={PRICE:"price:updated",STATUS:"price:status"};class ch extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={price:t.price||0,lastUpdated:t.lastUpdated||null,loading:void 0===t.loading||t.loading,error:t.error||null}}didMount(){this.eventBus&&(this.subscribe(lh.PRICE,this.bind(this.handlePriceUpdate)),this.subscribe(lh.STATUS,this.bind(this.handleStatusUpdate)))}handlePriceUpdate({price:t}){this.setState({price:t||0,loading:!1})}handleStatusUpdate({loading:t,error:e}){this.setState({loading:t,error:e})}render(){const{price:t,lastUpdated:r,loading:n,error:i}=this.state;return n?e("div",{className:"price-display loading marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"loading-indicator"},"Loading..."))):i?e("div",{className:"price-display error marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"error-message"},`Error: ${i}`))):e("div",{className:"price-display marble-bg"},e("div",{className:"price-header"},e("h3",null,"Cult Exec "),e("h3",null,"Bonding Curve Presale")),e("div",{className:"price-content"},e("div",{className:"price-value"},e("span",{className:"amount"},Number(t).toFixed(8)),e("span",{className:"currency"},"ETH / Cult Exec"))))}static get styles(){return"\n .price-display {\n background: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .price-header h3 {\n margin: 0;\n color: var(--price-display-header-color, var(--color-text-primary, #333));\n font-size: 16px;\n }\n\n .last-updated {\n color: #666;\n font-size: 12px;\n }\n\n .price-content {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 48px;\n }\n\n .price-value {\n font-size: 24px;\n font-weight: bold;\n color: #fff;\n }\n\n .amount {\n margin-right: 8px;\n }\n\n .currency {\n color: var(--price-display-currency-color, var(--color-accent, #764ba2));\n }\n\n .loading-indicator {\n color: #666;\n font-style: italic;\n }\n\n .error-message {\n color: #ff4444;\n font-size: 14px;\n }\n\n /* Loading state animation */\n .price-display.loading .price-content {\n opacity: 0.7;\n }\n\n .price-display.loading .loading-indicator:after {\n content: '';\n animation: loading-dots 1.5s infinite;\n }\n\n @keyframes loading-dots {\n 0% { content: '.'; }\n 33% { content: '..'; }\n 66% { content: '...'; }\n }\n\n /* Error state styles */\n .price-display.error {\n border: 1px solid #ff4444;\n }\n\n /* Mobile responsive styles */\n @media (max-width: 768px) {\n .price-display {\n margin: 8px;\n padding: 12px;\n }\n\n .price-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .last-updated {\n margin-top: 4px;\n }\n\n .price-value {\n font-size: 20px;\n }\n }\n "}}class hh extends t{constructor(t){super(t),console.log("[DEBUG] ApproveModal constructor called with amount:",t.amount,"and address:",t.userAddress),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.amount=t.amount,this.userAddress=t.userAddress,this.messagePopup=new ah("approve-status"),this.isClosing=!1,this.modalId=Math.random().toString(36).substring(2,9),this.state={status:"idle",statusMessage:""},console.log(`[DEBUG] ApproveModal instance created with ID: ${this.modalId}`)}didMount(){console.log(`[DEBUG-${this.modalId}] ApproveModal mounted to DOM`)}async handleApprove(){console.log(`[DEBUG-${this.modalId}] Approve button clicked`);try{if(this.setState({status:"pending",statusMessage:"Waiting for wallet confirmation..."}),this.userAddress)console.log(`[DEBUG-${this.modalId}] Using provided user address: ${this.userAddress}`);else{if(console.log(`[DEBUG-${this.modalId}] No user address provided, attempting to get from signer`),!this.blockchainService||!this.blockchainService.signer)throw console.error(`[DEBUG-${this.modalId}] No blockchain service or signer available`),new Error("No wallet connected. Please connect your wallet first.");try{this.userAddress=await this.blockchainService.signer.getAddress(),console.log(`[DEBUG-${this.modalId}] Retrieved user address for approval: ${this.userAddress}`)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Failed to get user address for approval:`,t),new Error("Could not get wallet address for approval. Please reconnect your wallet.")}}console.log(`[DEBUG-${this.modalId}] Parsing amount: ${this.amount}`);const t=this.blockchainService.parseExec(this.amount);console.log(`[DEBUG-${this.modalId}] Parsed amount: ${t}`);const e=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter;console.log(`[DEBUG-${this.modalId}] Router address for approval: ${e}`),console.log(`[DEBUG-${this.modalId}] Approving ${this.amount} EXEC tokens from ${this.userAddress} to ${e}`),this.setState({statusMessage:"Transaction submitted, waiting for confirmation..."}),console.log(`[DEBUG-${this.modalId}] Calling blockchainService.setApproval`);try{const r=await this.blockchainService.setApproval(e,t);console.log(`[DEBUG-${this.modalId}] Approval transaction result:`,r)}catch(t){throw console.error(`[DEBUG-${this.modalId}] Transaction error:`,t),t}this.setState({status:"success",statusMessage:"Approval successful!"}),console.log(`[DEBUG-${this.modalId}] Approval successful, waiting before emitting event`),await new Promise(t=>setTimeout(t,1500)),console.log(`[DEBUG-${this.modalId}] Emitting approve:complete event`),this.eventBus.emit("approve:complete"),console.log(`[DEBUG-${this.modalId}] Calling handleClose after successful approval`),this.handleClose()}catch(t){console.error(`[DEBUG-${this.modalId}] Approval failed:`,t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}this.setState({status:"error",statusMessage:`Error: ${e}`}),this.messagePopup.error(`Approval Failed: ${e}`,"Transaction Failed")}}handleClose(){if(console.log(`[DEBUG-${this.modalId}] handleClose called`),this.isClosing)console.log(`[DEBUG-${this.modalId}] Already closing, skipping`);else{this.isClosing=!0,console.log(`[DEBUG-${this.modalId}] Closing approval modal`);try{this.element&&this.element.parentNode?(console.log(`[DEBUG-${this.modalId}] Removing modal from DOM`),this.element.parentNode.removeChild(this.element)):console.warn(`[DEBUG-${this.modalId}] Modal element or parent not found during close`),console.log(`[DEBUG-${this.modalId}] Emitting approveModal:closed event`),this.eventBus.emit("approveModal:closed"),console.log(`[DEBUG-${this.modalId}] Calling dispose method`),this.dispose()}catch(t){console.error(`[DEBUG-${this.modalId}] Error closing approval modal:`,t)}}}dispose(){console.log(`[DEBUG-${this.modalId}] Disposing component resources`),this.isClosing=!0,this.blockchainService=null,this.userAddress=null,console.log(`[DEBUG-${this.modalId}] Component disposed`)}show(){console.log(`[DEBUG-${this.modalId}] Show method called`),this.isClosing=!1,this.element&&(this.element.style.display="block"),console.log(`[DEBUG-${this.modalId}] Modal set to display:block`)}hide(){console.log(`[DEBUG-${this.modalId}] Hide method called`),this.element&&(this.element.style.display="none")}render(){const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouter,r=parseInt(this.amount).toLocaleString(),{status:n,statusMessage:i}=this.state,s="pending"===n;return e("div",{className:"approve-modal-overlay",onClick:t=>{t.target===t.currentTarget&&this.handleClose()}},e("div",{className:"approve-modal"},e("button",{className:"approve-modal-close",onClick:this.bind(this.handleClose)},"×"),e("div",{className:"approve-modal-content"},e("h2",null,"Approve Router"),e("p",null,"Before selling your $EXEC tokens, you need to approve the router contract to spend them."),e("div",{className:"approve-details"},e("div",{className:"approve-info"},e("span",{className:"label"},"Amount to Approve:"),e("span",{className:"value"},`${r} $EXEC`)),e("div",{className:"approve-info"},e("span",{className:"label"},"Router Address:"),e("span",{className:"value"},t))),i&&e("div",{className:`status-message ${n}`},i),e("button",{className:"approve-button",disabled:s,onClick:this.bind(this.handleApprove)},s?"Approving...":"Approve"))))}static get styles(){return"\n .approve-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.75);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .approve-modal {\n background-color: #111;\n border-radius: 8px;\n padding: 24px;\n position: relative;\n width: 90%;\n max-width: 500px;\n }\n\n .approve-modal-close {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #fff;\n }\n\n .approve-modal h2 {\n margin: 0 0 16px 0;\n color: #fff;\n }\n\n .approve-details {\n background-color: #1a1a1a;\n border-radius: 8px;\n padding: 16px;\n margin: 16px 0;\n }\n\n .approve-info {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n word-break: break-all;\n }\n\n .approve-info:last-child {\n margin-bottom: 0;\n }\n\n .approve-info .label {\n color: #888;\n margin-right: 16px;\n }\n\n .approve-info .value {\n color: #fff;\n text-align: right;\n }\n\n .approve-button {\n width: 100%;\n padding: 12px;\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n margin-top: 16px;\n }\n\n .approve-button:disabled {\n background-color: #555;\n cursor: not-allowed;\n }\n\n .approve-button:hover:not(:disabled) {\n background-color: #0056b3;\n }\n\n .status-message {\n margin-top: 12px;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n font-size: 14px;\n }\n\n .status-message.pending {\n background-color: #2c3e50;\n color: #f1c40f;\n }\n\n .status-message.success {\n background-color: #27ae60;\n color: white;\n }\n\n .status-message.error {\n background-color: #c0392b;\n color: white;\n }\n "}}class uh extends t{constructor(t={}){super(t)}handleInput(t,e){const r=t.target.value;this.props.onInput&&this.props.onInput(e,r)}render(){const{direction:t,ethAmount:r,execAmount:n,calculatingAmount:i,freeMint:s,balances:o={eth:"0",exec:"0"}}=this.props,a=parseFloat(o.eth||0).toFixed(6),l=parseInt(o.exec||0).toLocaleString(),c="sell"===t&&s?`Available: ${(parseInt(o.exec||0)-1e6).toLocaleString()}`:`Balance: ${l}`,h="buy"===t?i?"Loading...":n:i?"Loading...":r,u="buy"===t?"ETH":"$EXEC",d="buy"===t?"$EXEC":"ETH",f="buy"===t?`Balance: ${a}`:c,p="buy"===t?`Balance: ${l}`:`Balance: ${a}`;return e("div",{className:"swap-inputs"},e("div",{className:"input-container"},e("input",{type:"text",className:"top-input",value:"buy"===t?r:n,placeholder:"0.0",pattern:"^[0-9]*[.]?[0-9]*$",onInput:t=>this.handleInput(t,"top")}),e("div",{className:"token-info"},e("span",{className:"token-symbol"},u),e("span",{className:"token-balance"},f))),e("div",{className:"direction-switch-slot"}),e("div",{className:"input-container"},e("input",{type:"text",className:"bottom-input",value:h,placeholder:"0.0",pattern:"^[0-9]*[.]?[0-9]*$",onInput:t=>this.handleInput(t,"bottom")}),e("div",{className:"token-info"},e("span",{className:"token-symbol"},d),e("span",{className:"token-balance"},p))))}}class dh extends t{constructor(t={}){super(t)}handleClick(t){t.preventDefault(),!this.props.disabled&&this.props.onClick&&this.props.onClick(t)}render(){const{direction:t,disabled:r}=this.props,n="buy"===t?"Buy $EXEC":"Sell $EXEC";return e("button",{className:"swap-button",disabled:r,onClick:this.bind(this.handleClick)},n)}}class fh extends t{constructor(t){super(t),this.blockchainService=t.blockchainService,this.eventBus=t.eventBus,this.state={direction:t.direction||"buy",ethAmount:"",execAmount:"",activeInput:null,freeMint:t.freeMint||!1,freeSupply:t.freeSupply||0,calculatingAmount:!1,isPhase2:null===t.isPhase2?null:t.isPhase2,dataReady:t.dataReady||!1,balances:t.balances||{eth:"0",exec:"0"},price:t.price||{current:0},contractData:t.contractData||{}},this._address=t.address||null,this.messagePopup=new ah("status-message"),this.messagePopup.initialize?.(),this.calculateTimer=null,this.onDirectionChange=t.onDirectionChange,this.transactionOptionsState={message:"",nftMintingEnabled:!1},this.approveModal=null,this.eventListeners=[],this.instanceId=Math.random().toString(36).substring(2,9),console.log(`[SwapInterface] Instance created: ${this.instanceId}`)}handleBalanceUpdate(t){const e=t.balances||this.props.balances,r=void 0!==t.freeMint?t.freeMint:this.props.freeMint,n=void 0!==t.freeSupply?t.freeSupply:this.props.freeSupply;this.setState({balances:e,freeMint:r,freeSupply:n})}async calculateSwapAmount(t,e){if(!t||isNaN(parseFloat(t)))return"";try{if(this.isLiquidityDeployed()){const r=this.state.price.current;if("eth"===e){const e=parseFloat(t);return(e/r*1e6*.95).toFixed(0)}{const e=parseFloat(t);return(e/1e6*r*1.055).toFixed(6)}}if("eth"===e){const e=await this.blockchainService.getExecForEth(t),{freeSupply:r,freeMint:n}=this.state,i=r>0&&!n?1e6:0;return Math.floor(e+i).toString()}return(await this.blockchainService.getEthForExec(t)).toString()}catch(t){return console.error("Error calculating swap amount:",t),""}}didMount(){console.log(`[${this.instanceId}] SwapInterface didMount called`),this.bindEvents();const t=[["contractData:updated",this.bind(this.handleContractDataUpdate),"high"],["transaction:pending",this.bind(this.handleTransactionEvents),"normal"],["transaction:confirmed",this.bind(this.handleTransactionEvents),"normal"],["transaction:success",this.bind(this.handleTransactionEvents),"normal"],["transaction:error",this.bind(this.handleTransactionEvents),"normal"],["balances:updated",this.bind(this.handleBalanceUpdate),"high"],["transactionOptions:update",this.bind(this.handleTransactionOptionsUpdate),"low"]];this.eventListeners=t.map(([t,e])=>this.eventBus.on(t,e));const{contractData:e}=this.state;if(e&&void 0!==e.liquidityPool){const t=this.isLiquidityDeployed();this.setState({isPhase2:t,dataReady:!0})}}willUnmount(){if(console.log(`[${this.instanceId}] SwapInterface willUnmount called`),this.eventListeners.forEach(t=>{"function"==typeof t&&t()}),this.eventListeners=[],this.approveModal){try{this.approveModal.handleClose()}catch(t){console.warn("Error closing approval modal during unmount:",t)}this.approveModal=null}this.calculateTimer&&(clearTimeout(this.calculateTimer),this.calculateTimer=null)}bindEvents(){}handleTransactionEvents(t){if(t?.handledBy?.includes(this.instanceId))return;t.handledBy||(t.handledBy=[]),t.handledBy.push(this.instanceId);const e="buy"===this.state.direction?"Buy":"Sell";if(t&&t.type){if("buy"!==t.type&&"sell"!==t.type&&"swap"!==t.type||t.error||this.messagePopup.info(`${e} transaction. Simulating...`,"Transaction Pending"),t.hash&&this.messagePopup.info("Transaction confirmed, waiting for completion...","Transaction Confirmed"),t.receipt&&("buy"===t.type||"sell"===t.type||"swap"===t.type)){const t="buy"===this.state.direction?this.state.execAmount+" EXEC":this.state.ethAmount+" ETH";this.messagePopup.success(`Successfully ${"buy"===e.toLowerCase()?"bought":"sold"} ${t}`,"Transaction Complete"),this.setState({ethAmount:"",execAmount:"",calculatingAmount:!1})}if(t.error&&!t.handled){let e=t.error?.message||"Transaction failed";if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed"),t.handled=!0}}}handleTransactionOptionsUpdate(t){this.transactionOptionsState={message:t.message,nftMintingEnabled:t.nftMintingEnabled}}handleInput(t,e){this.calculateTimer&&clearTimeout(this.calculateTimer);const r={activeInput:t,calculatingAmount:!0};"buy"===this.state.direction?"top"===t?r.ethAmount=e:r.execAmount=e:"top"===t?r.execAmount=e:r.ethAmount=e,this.setState(r),this.calculateTimer=setTimeout(async()=>{try{const r="buy"===this.state.direction==("top"===t),n=await this.calculateSwapAmount(e,r?"eth":"exec");r?this.setState({execAmount:n,calculatingAmount:!1}):this.setState({ethAmount:n,calculatingAmount:!1})}catch(t){console.error("Error calculating swap amount:",t),this.setState({calculatingAmount:!1})}},750)}handleDirectionSwitch(t){t&&(t.preventDefault(),t.stopPropagation()),this.calculateTimer&&clearTimeout(this.calculateTimer);const e="buy"===this.state.direction?"sell":"buy";this.setState({direction:e,calculatingAmount:!1,activeInput:null}),this.onDirectionChange&&this.onDirectionChange(e)}handleQuickFill(t,e){let r;if(t)r=t;else if(e){const{balances:t}=this.state,n=t.exec;if(!n||"0"===n)return;let i=BigInt(n)/BigInt(1e18);if(this.state.freeMint&&(i-=BigInt(1e6),i<=0))return void this.messagePopup.info("You only have free mint tokens which cannot be sold.","Cannot Quick Fill");r=(i*BigInt(e)/BigInt(100)).toString()}this.handleInput("top",r)}isLiquidityDeployed(){const{contractData:t}=this.state;return!(!t||!t.liquidityPool)&&"0x0000000000000000000000000000000000000000"!==t.liquidityPool}async handleSwap(){try{if(this.state.calculatingAmount)return void this.messagePopup.info("Please wait for the calculation to complete","Loading");const{ethAmount:t,execAmount:n,direction:i,balances:s,freeMint:o}=this.state;if(!t||!n||parseFloat(t)<=0||parseFloat(n)<=0)return void this.messagePopup.info("Please enter valid amounts","Invalid Input");if("buy"===i){let e=parseFloat(this.blockchainService.formatEther(s.eth||"0"));const r=parseFloat(t);if(isNaN(r)||isNaN(e)||r>e)return void this.messagePopup.info(`Not enough ETH balance. You have ${e.toFixed(6)} ETH, need ${r} ETH`,"Insufficient Balance")}else{const t=n.replace(/,/g,""),e=BigInt(s.exec||0);if(BigInt(parseInt(t)||0)>e){const e=parseInt(s.exec||0).toLocaleString(),r=parseInt(t).toLocaleString();return void this.messagePopup.info(`Not enough EXEC balance. You have ${e} EXEC, need ${r} EXEC`,"Insufficient Balance")}}if("sell"===i&&parseInt(n.replace(/,/g,""))<=1e6&&o)return void this.messagePopup.info("Free minted tokens cannot be sold directly.","Free Mint Restriction");const a=this.isLiquidityDeployed(),l=this.state.execAmount.replace(/,/g,"");if(a){const t=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(l),i=await this.getAddress();if(!i)return void this.messagePopup.error("No wallet address available. Please reconnect your wallet.","Wallet Error");if("buy"===this.state.direction)await this.blockchainService.swapExactEthForTokenSupportingFeeOnTransfer(i,{amount:n},t);else{const t=this.blockchainService.swapRouter?.address||this.blockchainService.swapRouterAddress,s=await this.blockchainService.getApproval(i,t);if(BigInt(s)<BigInt(n)){if(this.approveModal){try{this.eventBus.off("approve:complete"),this.approveModal.handleClose()}catch(t){}this.approveModal=null}const t=document.createElement("div");return document.body.appendChild(t),r(e(hh,{amount:l,blockchainService:this.blockchainService,userAddress:i,eventBus:this.eventBus,ref:t=>this.approveModal=t}),t),this.eventBus.once("approve:complete",async()=>{try{await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(i,{amount:n})}catch(t){this.messagePopup.error(`Swap Failed: ${t.message}`,"Transaction Failed")}}),this.eventBus.once("approveModal:closed",()=>{t.parentNode&&t.parentNode.removeChild(t),this.approveModal=null}),void this.approveModal?.show()}await this.blockchainService.swapExactTokenForEthSupportingFeeOnTransferV2(i,{amount:n})}}else{let t;try{const e=await this.blockchainService.getCurrentTier();if(t=await this.blockchainService.getMerkleProof(this.address,e),!t)return void this.messagePopup.error(`You are not whitelisted for Tier ${e+1}.`,"Not Whitelisted")}catch(t){return void this.messagePopup.error("Failed to verify whitelist status.","Whitelist Check Failed")}let e=l;if("buy"===this.state.direction&&this.state.freeSupply>0&&!this.state.freeMint){const t=parseInt(l);e=Math.max(0,t-1e6).toString()}const r=this.blockchainService.parseEther(this.state.ethAmount),n=this.blockchainService.parseExec(e);if("buy"===this.state.direction)await this.blockchainService.buyBonding({amount:n,maxCost:r,mintNFT:this.transactionOptionsState.nftMintingEnabled,proof:t.proof,message:this.transactionOptionsState.message},r);else{const e=BigInt(r)*BigInt(999)/BigInt(1e3);await this.blockchainService.sellBonding({amount:n,minReturn:e,proof:t.proof,message:this.transactionOptionsState.message})}}}catch(t){console.error("Swap failed:",t);let e=t.message;if(e.includes("Contract call")){const t=e.split(": ");e=t[t.length-1]}const r="buy"===this.state.direction?"Buy Failed":"Sell Failed";this.messagePopup.error(`${r}: ${e}`,"Transaction Failed")}}handleContractDataUpdate(){try{const t=this.state.isPhase2,e=this.state.dataReady,r=this.isLiquidityDeployed();null!==t&&e?t!==r&&this.setState({isPhase2:r}):this.setState({isPhase2:r,dataReady:!0})}catch(t){console.error("Error in handleContractDataUpdate:",t)}}async getAddress(){try{return await Promise.resolve(this._address)}catch(t){return console.error(`[${this.instanceId}] Error resolving address:`,t),null}}setAddress(t){this._address=t}get address(){return this._address}set address(t){this._address=t}render(){const{direction:t,isPhase2:r,dataReady:n,balances:i,freeMint:s,freeSupply:o,ethAmount:a,execAmount:l,calculatingAmount:c}=this.state;return n&&null!==r?(parseFloat(i.eth).toFixed(6),parseInt(i.exec).toLocaleString(),e("div",{className:"swap-interface"},e(ch,{price:this.state.price,contractData:this.state.contractData,eventBus:this.eventBus}),"sell"===t&&s&&!r&&e("div",{className:"free-mint-notice"},"You have 1,000,000 $EXEC you received for free that cannot be sold here."),"buy"===t&&o>0&&!s&&!r&&e("div",{className:"free-mint-notice free-mint-bonus"},"1,000,000 $EXEC will be added to your purchase. Thank you."),e("div",{className:"quick-fill-buttons-container"},e("div",{className:"quick-fill-buttons"},"buy"===t?[e("button",{key:"0.0025",onClick:()=>this.handleQuickFill("0.0025")},"0.0025"),e("button",{key:"0.01",onClick:()=>this.handleQuickFill("0.01")},"0.01"),e("button",{key:"0.05",onClick:()=>this.handleQuickFill("0.05")},"0.05"),e("button",{key:"0.1",onClick:()=>this.handleQuickFill("0.1")},"0.1")]:[e("button",{key:"25",onClick:()=>this.handleQuickFill(null,25)},"25%"),e("button",{key:"50",onClick:()=>this.handleQuickFill(null,50)},"50%"),e("button",{key:"75",onClick:()=>this.handleQuickFill(null,75)},"75%"),e("button",{key:"100",onClick:()=>this.handleQuickFill(null,100)},"100%")])),e(uh,{direction:t,ethAmount:a,execAmount:l,calculatingAmount:c,freeMint:s,balances:i,isPhase2:r,onInput:this.bind(this.handleInput)}),e("div",{className:"direction-switch-container"},e("button",{className:"direction-switch",onClick:this.bind(this.handleDirectionSwitch)},"↕")),!r&&e(oh,{eventBus:this.eventBus,swapDirection:t,isPhase2:r}),e(dh,{direction:t,disabled:c,onClick:this.bind(this.handleSwap)}))):e("div",{className:"swap-interface"},e("div",{className:"price-display-container"}),e("div",{className:"quick-fill-buttons-container"}),e("div",{className:"swap-inputs-container",style:{padding:"20px",textAlign:"center"}},"Loading swap interface..."),e("div",{className:"transaction-options-container"}),e("div",{className:"swap-button-container"}))}}class ph extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={currentPrice:t.price||0,totalBondingSupply:t.contractData?.totalBondingSupply||0,totalMessages:t.contractData?.totalMessages||0,totalNFTs:t.contractData?.totalNFTs||0,dataReady:t.dataReady||!1,contractEthBalance:t.contractData?.contractEthBalance||0,liquidityPool:t.contractData?.liquidityPool||null,chainId:t.chainId||null},this.canvasRef=null}didMount(){this.subscribe("contractData:updated",t=>this.handleContractDataUpdate(t)),this.subscribe("price:updated",t=>this.handlePriceUpdate(t)),this.resizeHandler=()=>requestAnimationFrame(()=>this.drawCurve()),window.addEventListener("resize",this.resizeHandler),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}willUnmount(){this.resizeHandler&&window.removeEventListener("resize",this.resizeHandler)}handleContractDataUpdate(t){const e={totalBondingSupply:t.totalBondingSupply,totalMessages:t.totalMessages,totalNFTs:t.totalNFTs,contractEthBalance:t.contractEthBalance,dataReady:!0};this.state.liquidityPool!==t.liquidityPool&&(e.liquidityPool=t.liquidityPool),this.setState(e),this.isLiquidityDeployed()?this.renderDexToolsChart():this.drawCurve()}handlePriceUpdate(t){this.setState({currentPrice:t.price}),this.isLiquidityDeployed()||this.drawCurve()}isLiquidityDeployed(){const{liquidityPool:t}=this.state;return t&&"0x0000000000000000000000000000000000000000"!==t}renderDexToolsChart(){if(this.containerRef)try{const t=`https://www.dextools.io/widget-chart/en/${this.getNetworkName(this.state.chainId)}/pe-light/${this.state.liquidityPool}?theme=dark&chartType=2&chartResolution=30&drawingToolbars=false`;this.containerRef.innerHTML="";const e=document.createElement("iframe");e.id="dextools-widget",e.title="$EXEC DEXTools Trading Chart",e.width="100%",e.height="100%",e.src=t,e.style.border="none",e.onerror=()=>{this.containerRef.innerHTML='<div style="display: flex; align-items: center; justify-content: center; height: 100%; color: #888;"><div>Chart unavailable</div></div>'},this.containerRef.appendChild(e)}catch(t){console.error("Error rendering DEXTools chart:",t)}}getNetworkName(t){return{1:"ether",5:"goerli"}[t]||"ether"}drawCurve(){if(!this.canvasRef)return;const t=this.canvasRef,e=t.getContext("2d");t.width=t.offsetWidth,t.height=t.offsetHeight,e.clearRect(0,0,t.width,t.height),this.drawBaseCurve(e,t),this.state.dataReady?this.drawDataElements(e,t):this.drawPlaceholderLabels(e)}drawBaseCurve(t,e){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.strokeStyle=r,t.lineWidth=2;const n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurvePath(t,n)}drawDataElements(t,e){const r=Math.max(.1,Math.min(.9,Math.pow(this.state.currentPrice/.08,1/3.5))),n=this.calculateCurvePoints(e,t=>Math.pow(.1+.8*t,3.5));this.drawCurrentPosition(t,n,r),this.drawLabels(t)}drawPlaceholderLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText("Loading price data...",10,20),t.fillText("Loading supply data...",10,40),t.fillText("Loading NFT data...",10,60)}calculateCurvePoints(t,e){const r=[];for(let n=0;n<=100;n++){const i=n/100,s=e(i),o=i*t.width*.8+.1*t.width,a=.9*t.height-s*t.height*.8;r.push({x:o,y:a})}return r}drawCurvePath(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(let r=1;r<e.length;r++)t.lineTo(e[r].x,e[r].y);t.stroke()}drawCurrentPosition(t,e,r){const n=Math.floor((r-.025)*e.length),i=Math.floor((r+.025)*e.length);if(n>=0&&i<e.length){const r=getComputedStyle(document.documentElement).getPropertyValue("--bonding-curve-color").trim()||"#764ba2";t.beginPath(),t.strokeStyle=r,t.lineWidth=4,t.moveTo(e[n].x,e[n].y);for(let r=n;r<=i;r++)t.lineTo(e[r].x,e[r].y);t.stroke();const s=e[Math.floor((n+i)/2)];t.beginPath(),t.arc(s.x,s.y,4,0,2*Math.PI),t.fillStyle="#FF0000",t.fill()}}drawLabels(t){t.fillStyle="#666666",t.font="12px Courier New",t.fillText(`${this.state.currentPrice.toFixed(4)} ETH / EXEC`,10,20),t.fillText(`Total Supply: ${this.state.totalBondingSupply.toLocaleString()} EXEC`,10,40),t.fillText(`Total Messages: ${this.state.totalMessages.toLocaleString()}`,10,60),t.fillText(`Total NFTs: ${this.state.totalNFTs.toLocaleString()}`,10,80),t.fillText(`Contract ETH Balance: ${this.state.contractEthBalance}`,10,100)}render(){const t=this.isLiquidityDeployed();return e("div",{className:"bonding-curve marble-bg",ref:t=>this.containerRef=t},!t&&e("canvas",{id:"curveChart",ref:t=>{this.canvasRef=t,t&&this.drawCurve()}}))}static get styles(){return"\n .bonding-curve {\n width: 100%;\n height: 90%;\n min-height: 400px;\n background: #1a1a1a;\n border-radius: 8px;\n padding: 0px;\n overflow: hidden;\n position: relative;\n }\n\n #curveChart {\n width: 100%;\n height: 100%;\n }\n\n #dextools-widget {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n border: none;\n }\n "}}class mh extends t{constructor(t){super(t),this.eventBus=t.eventBus,this.state={balances:t.balances||{eth:"0",exec:"0",lastUpdated:null},loading:void 0===t.loading||t.loading,error:t.error||null}}didMount(){this.eventBus&&this.subscribe("balances:updated",this.bind(this.handleBalanceUpdate))}handleBalanceUpdate(t){this.setState({balances:t,loading:!1,error:null})}render(){const{balances:t,loading:r,error:n}=this.state,i=["balance-display","marble-bg"];return r&&i.push("loading"),n&&i.push("error"),e("div",{className:i.join(" ")},e("div",{className:"balance-header"},e("h3",null,"Your Balances"),t.lastUpdated&&e("span",{className:"last-updated"},`Last updated: ${new Date(t.lastUpdated).toLocaleTimeString()}`)),e("div",{className:"balance-content"},r?e("div",{className:"loading-indicator"},"Loading balances..."):n?e("div",{className:"error-message"},n):e("div",{className:"balance-grid"},e("div",{className:"balance-item eth"},e("span",{className:"label"},"ETH Balance"),e("span",{className:"amount"},t.eth)),e("div",{className:"balance-item exec"},e("span",{className:"label"},"EXEC Balance"),e("span",{className:"amount"},t.exec)))))}}class gh extends t{constructor(t){if(super(t),!t.indexer)throw new Error("SyncProgressBar requires indexer instance");if(!t.eventBus)throw new Error("SyncProgressBar requires eventBus instance");this.indexer=t.indexer,this.eventBus=t.eventBus,this.state={status:"initializing",progress:0,currentBlock:0,latestBlock:0,error:null}}didMount(){this.subscribe("indexer:syncProgress",t=>{this.setState({status:"syncing",progress:t.progress,currentBlock:t.currentBlock,latestBlock:t.latestBlock})}),this.subscribe("indexer:syncComplete",()=>{this.setState({status:"synced",progress:1})}),this.subscribe("indexer:error",t=>{this.setState({status:"error",error:t.message})}),this.subscribe("indexer:paused",()=>{this.setState({status:"paused"})}),this.subscribe("indexer:resumed",()=>{this.setState({status:"syncing"})});const t=this.indexer.sync?.getStatus?.();t&&this.setState(t)}handleRetry(){this.indexer.sync?.resync?.()}handleResume(){this.indexer.sync?.resume?.()}render(){const{status:t,progress:r,currentBlock:n,latestBlock:i,error:s}=this.state,o=Math.round(100*r);return e("div",{className:`mw3-sync-progress mw3-sync-progress--${t}`},"syncing"===t&&[e("div",{key:"bar",className:"mw3-sync-progress__bar",style:{width:`${o}%`}}),e("span",{key:"text",className:"mw3-sync-progress__text"},`Syncing... ${o}%`)],"synced"===t&&e("span",{className:"mw3-sync-progress__text"},`Synced to block ${i.toLocaleString()}`),"error"===t&&[e("span",{key:"text",className:"mw3-sync-progress__text"},`Sync failed: ${s||"Unknown error"}`),e("button",{key:"retry",className:"mw3-sync-progress__retry",onClick:this.bind(this.handleRetry)},"Retry")],"paused"===t&&[e("span",{key:"text",className:"mw3-sync-progress__text"},"Sync paused"),e("button",{key:"resume",className:"mw3-sync-progress__resume",onClick:this.bind(this.handleResume)},"Resume")],"initializing"===t&&e("span",{className:"mw3-sync-progress__text"},"Initializing..."))}static injectStyles(){if(document.getElementById("mw3-sync-progress-styles"))return;const t=document.createElement("style");t.id="mw3-sync-progress-styles",t.textContent="\n .mw3-sync-progress {\n position: relative;\n height: 24px;\n background: var(--mw3-sync-bg, #f0f0f0);\n border-radius: 4px;\n overflow: hidden;\n font-family: system-ui, sans-serif;\n font-size: 12px;\n }\n\n .mw3-sync-progress__bar {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: var(--mw3-sync-bar, #4caf50);\n transition: width 0.3s ease;\n }\n\n .mw3-sync-progress__text {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--mw3-sync-text, #333);\n padding: 0 8px;\n }\n\n .mw3-sync-progress--synced {\n background: var(--mw3-sync-bar, #4caf50);\n }\n\n .mw3-sync-progress--synced .mw3-sync-progress__text {\n color: white;\n }\n\n .mw3-sync-progress--error {\n background: var(--mw3-sync-error, #f44336);\n }\n\n .mw3-sync-progress--error .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n\n .mw3-sync-progress__retry,\n .mw3-sync-progress__resume {\n background: rgba(255,255,255,0.2);\n border: 1px solid rgba(255,255,255,0.4);\n border-radius: 3px;\n color: white;\n padding: 2px 8px;\n cursor: pointer;\n font-size: 11px;\n }\n\n .mw3-sync-progress__retry:hover,\n .mw3-sync-progress__resume:hover {\n background: rgba(255,255,255,0.3);\n }\n\n .mw3-sync-progress--paused {\n background: var(--mw3-sync-paused, #ff9800);\n }\n\n .mw3-sync-progress--paused .mw3-sync-progress__text {\n color: white;\n justify-content: space-between;\n }\n ",document.head.appendChild(t)}}export{hh as ApprovalModal,mh as BalanceDisplay,Ic as BlockchainService,ph as BondingCurve,Bc as ContractCache,Xc as EventIndexer,rh as FloatingWalletButton,jc as IndexedDBAdapter,Wc as IndexerSettings,sh as IpfsImage,zc as IpfsService,Gc as MemoryAdapter,ah as MessagePopup,ch as PriceDisplay,Mc as PriceService,th as SettingsModal,dh as SwapButton,uh as SwapInputs,fh as SwapInterface,gh as SyncProgressBar,oh as TransactionOptions,ih as WalletButton,Zc as WalletModal,Pc as WalletService};
|
|
10
10
|
//# sourceMappingURL=micro-web3.esm.js.map
|