gun-eth 1.4.12 → 1.4.13
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/gun-eth.min.js +1 -1
- package/package.json +1 -1
package/dist/gun-eth.min.js
CHANGED
@@ -9,4 +9,4 @@ const Br=BigInt(0),Dr=BigInt(1);function Ur(t){return gr(t.Fp,Pr.reduce(((t,e)=>
|
|
9
9
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function Vr(t){return{hash:t,hmac:(e,...n)=>ce(t,e,function(...t){const e=new Uint8Array(t.reduce(((t,e)=>t+e.length),0));let n=0;return t.forEach((t=>{if(!$t(t))throw new Error("Uint8Array expected");e.set(t,n),n+=t.length})),e}(...n)),randomBytes:oe}}BigInt(4);
|
10
10
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
11
11
|
const Qr=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Jr=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),zr=BigInt(1),qr=BigInt(2),$r=(t,e)=>(t+e/qr)/e;const Wr=function(t,e,n=!1,r={}){if(t<=mr)throw new Error(`Expected Field ORDER > 0, got ${t}`);const{nBitLength:s,nByteLength:i}=Rr(t,e);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");const o=Sr(t),a=Object.freeze({ORDER:t,BITS:s,BYTES:i,MASK:lr(s),ZERO:mr,ONE:wr,create:e=>Nr(e,t),isValid:e=>{if("bigint"!=typeof e)throw new Error("Invalid field element: expected bigint, got "+typeof e);return mr<=e&&e<t},is0:t=>t===mr,isOdd:t=>(t&wr)===wr,neg:e=>Nr(-e,t),eql:(t,e)=>t===e,sqr:e=>Nr(e*e,t),add:(e,n)=>Nr(e+n,t),sub:(e,n)=>Nr(e-n,t),mul:(e,n)=>Nr(e*n,t),pow:(t,e)=>function(t,e,n){if(n<mr)throw new Error("Expected power > 0");if(n===mr)return t.ONE;if(n===wr)return e;let r=t.ONE,s=e;for(;n>mr;)n&wr&&(r=t.mul(r,s)),s=t.sqr(s),n>>=wr;return r}(a,t,e),div:(e,n)=>Nr(e*Or(n,t),t),sqrN:t=>t*t,addN:(t,e)=>t+e,subN:(t,e)=>t-e,mulN:(t,e)=>t*e,inv:e=>Or(e,t),sqrt:r.sqrt||(t=>o(a,t)),invertBatch:t=>function(t,e){const n=new Array(e.length),r=e.reduce(((e,r,s)=>t.is0(r)?e:(n[s]=e,t.mul(e,r))),t.ONE),s=t.inv(r);return e.reduceRight(((e,r,s)=>t.is0(r)?e:(n[s]=t.mul(e,n[s]),t.mul(e,r))),s),n}(a,t),cmov:(t,e,n)=>n?e:t,toBytes:t=>n?ar(t,i):or(t,i),fromBytes:t=>{if(t.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${t.length}`);return n?ir(t):sr(t)}});return Object.freeze(a)}(Qr,void 0,void 0,{sqrt:function(t){const e=Qr,n=BigInt(3),r=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),u=t*t*t%e,l=u*u*t%e,h=Tr(l,n,e)*l%e,f=Tr(h,n,e)*l%e,d=Tr(f,qr,e)*u%e,p=Tr(d,s,e)*d%e,g=Tr(p,i,e)*p%e,y=Tr(g,a,e)*g%e,m=Tr(y,c,e)*y%e,w=Tr(m,a,e)*g%e,b=Tr(w,n,e)*l%e,A=Tr(b,o,e)*p%e,v=Tr(A,r,e)*u%e,E=Tr(v,qr,e);if(!Wr.eql(Wr.sqr(E),t))throw new Error("Cannot find square root");return E}}),Yr=function(t,e){const n=e=>Kr({...t,...Vr(e)});return Object.freeze({...n(e),create:n})}({a:BigInt(0),b:BigInt(7),Fp:Wr,n:Jr,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:t=>{const e=Jr,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-zr*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=n,o=BigInt("0x100000000000000000000000000000000"),a=$r(i*t,e),c=$r(-r*t,e);let u=Nr(t-a*n-c*s,e),l=Nr(-a*r-c*i,e);const h=u>o,f=l>o;if(h&&(u=e-u),f&&(l=e-l),u>o||l>o)throw new Error("splitScalar: Endomorphism failed, k="+t);return{k1neg:h,k1:u,k2neg:f,k2:l}}}},we);BigInt(0),Yr.ProjectivePoint;const Zr="0x0000000000000000000000000000000000000000",Xr="0x0000000000000000000000000000000000000000000000000000000000000000",ts=BigInt(0),es=BigInt(1),ns=BigInt(2),rs=BigInt(27),ss=BigInt(28),is=BigInt(35),os={};function as(t){return D(J(t),32)}class cs{#B;#D;#U;#L;get r(){return this.#B}set r(t){w(32===I(t),"invalid r","value",t),this.#B=P(t)}get s(){return this.#D}set s(t){w(32===I(t),"invalid s","value",t);const e=P(t);w(parseInt(e.substring(0,3))<8,"non-canonical s","value",e),this.#D=e}get v(){return this.#U}set v(t){const e=V(t,"value");w(27===e||28===e,"invalid v","v",t),this.#U=e}get networkV(){return this.#L}get legacyChainId(){const t=this.networkV;return null==t?null:cs.getChainId(t)}get yParity(){return 27===this.v?0:1}get yParityAndS(){const t=N(this.s);return this.yParity&&(t[0]|=128),P(t)}get compactSerialized(){return R([this.r,this.yParityAndS])}get serialized(){return R([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(t,e,n,r){E(t,os,"Signature"),this.#B=e,this.#D=n,this.#U=r,this.#L=null}[Symbol.for("nodejs.util.inspect.custom")](){return`Signature { r: "${this.r}", s: "${this.s}", yParity: ${this.yParity}, networkV: ${this.networkV} }`}clone(){const t=new cs(os,this.r,this.s,this.v);return this.networkV&&(t.#L=this.networkV),t}toJSON(){const t=this.networkV;return{_type:"signature",networkV:null!=t?t.toString():null,r:this.r,s:this.s,v:this.v}}static getChainId(t){const e=j(t,"v");return e==rs||e==ss?ts:(w(e>=is,"invalid EIP-155 v","v",t),(e-is)/ns)}static getChainIdV(t,e){return j(t)*ns+BigInt(35+e-27)}static getNormalizedV(t){const e=j(t);return e===ts||e===rs?27:e===es||e===ss?28:(w(e>=is,"invalid v","v",t),e&es?27:28)}static from(t){function e(e,n){w(e,n,"signature",t)}if(null==t)return new cs(os,Xr,Xr,27);if("string"==typeof t){const n=N(t,"signature");if(64===n.length){const t=P(n.slice(0,32)),e=n.slice(32,64),r=128&e[0]?28:27;return e[0]&=127,new cs(os,t,P(e),r)}if(65===n.length){const t=P(n.slice(0,32)),r=n.slice(32,64);e(!(128&r[0]),"non-canonical s");const s=cs.getNormalizedV(n[64]);return new cs(os,t,P(r),s)}e(!1,"invalid raw signature length")}if(t instanceof cs)return t.clone();const n=t.r;e(null!=n,"missing r");const r=as(n),s=function(t,n){if(null!=t)return as(t);if(null!=n){e(T(n,32),"invalid yParityAndS");const t=N(n);return t[0]&=127,P(t)}e(!1,"missing s")}(t.s,t.yParityAndS);e(!(128&N(s)[0]),"non-canonical s");const{networkV:i,v:o}=function(t,n,r){if(null!=t){const e=j(t);return{networkV:e>=is?e:void 0,v:cs.getNormalizedV(e)}}if(null!=n)return e(T(n,32),"invalid yParityAndS"),{v:128&N(n)[0]?28:27};if(null!=r){switch(V(r,"sig.yParity")){case 0:return{v:27};case 1:return{v:28}}e(!1,"invalid yParity")}e(!1,"missing v")}(t.v,t.yParityAndS,t.yParity),a=new cs(os,r,s,o);return i&&(a.#L=i),e(null==t.yParity||V(t.yParity,"sig.yParity")===a.yParity,"yParity mismatch"),e(null==t.yParityAndS||t.yParityAndS===a.yParityAndS,"yParityAndS mismatch"),a}}class us{#F;constructor(t){w(32===I(t),"invalid private key","privateKey","[REDACTED]"),this.#F=P(t)}get privateKey(){return this.#F}get publicKey(){return us.computePublicKey(this.#F)}get compressedPublicKey(){return us.computePublicKey(this.#F,!0)}sign(t){w(32===I(t),"invalid digest length","digest",t);const e=Yr.sign(x(t),x(this.#F),{lowS:!0});return cs.from({r:Q(e.r,32),s:Q(e.s,32),v:e.recovery?28:27})}computeSharedSecret(t){const e=us.computePublicKey(t);return P(Yr.getSharedSecret(x(this.#F),N(e),!1))}static computePublicKey(t,e){let n=N(t,"key");if(32===n.length){return P(Yr.getPublicKey(n,!!e))}if(64===n.length){const t=new Uint8Array(65);t[0]=4,t.set(n,1),n=t}return P(Yr.ProjectivePoint.fromHex(n).toRawBytes(e))}static recoverPublicKey(t,e){w(32===I(t),"invalid digest length","digest",t);const n=cs.from(e);let r=Yr.Signature.fromCompact(x(R([n.r,n.s])));r=r.addRecoveryBit(n.yParity);const s=r.recoverPublicKey(x(t));return w(null!=s,"invalid signautre for digest","signature",e),"0x"+s.toHex(!1)}static addPoints(t,e,n){const r=Yr.ProjectivePoint.fromHex(us.computePublicKey(t).substring(2)),s=Yr.ProjectivePoint.fromHex(us.computePublicKey(e).substring(2));return"0x"+r.add(s).toHex(!!n)}}const ls=BigInt(0),hs=BigInt(36);function fs(t){const e=(t=t.toLowerCase()).substring(2).split(""),n=new Uint8Array(40);for(let t=0;t<40;t++)n[t]=e[t].charCodeAt(0);const r=N(sn(n));for(let t=0;t<40;t+=2)r[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&r[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const ds={};for(let t=0;t<10;t++)ds[String(t)]=String(t);for(let t=0;t<26;t++)ds[String.fromCharCode(65+t)]=String(10+t);const ps=function(){const t={};for(let e=0;e<36;e++){t["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return t}();function gs(t){if(w("string"==typeof t,"invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/)){t.startsWith("0x")||(t="0x"+t);const e=fs(t);return w(!t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)||e===t,"bad address checksum","address",t),e}if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){w(t.substring(2,4)===function(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map((t=>ds[t])).join("");for(;e.length>=15;){let t=e.substring(0,15);e=parseInt(t,10)%97+e.substring(t.length)}let n=String(98-parseInt(e,10)%97);for(;n.length<2;)n="0"+n;return n}(t),"bad icap checksum","address",t);let e=function(t){t=t.toLowerCase();let e=ls;for(let n=0;n<t.length;n++)e=e*hs+ps[t[n]];return e}(t.substring(4)).toString(16);for(;e.length<40;)e="0"+e;return fs("0x"+e)}w(!1,"invalid address","address",t)}function ys(t){return t&&"function"==typeof t.getAddress}async function ms(t,e){const n=await e;return null!=n&&"0x0000000000000000000000000000000000000000"!==n||(m("string"!=typeof t,"unconfigured name","UNCONFIGURED_NAME",{value:t}),w(!1,"invalid AddressLike value; did not resolve to a value address","target",t)),gs(n)}function ws(t,e){return"string"==typeof t?t.match(/^0x[0-9a-f]{40}$/i)?gs(t):(m(null!=e,"ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"}),ms(t,e.resolveName(t))):ys(t)?ms(t,t.getAddress()):t&&"function"==typeof t.then?ms(t,t):void w(!1,"unsupported addressable value","target",t)}const bs={};function As(t,e){let n=!1;return e<0&&(n=!0,e*=-1),new ks(bs,`${n?"":"u"}int${e}`,t,{signed:n,width:e})}function vs(t,e){return new ks(bs,`bytes${e||""}`,t,{size:e})}const Es=Symbol.for("_ethers_typed");class ks{type;value;#M;_typedSymbol;constructor(t,e,n,r){null==r&&(r=null),E(bs,t,"Typed"),f(this,{_typedSymbol:Es,type:e,value:n}),this.#M=r,this.format()}format(){if("array"===this.type)throw new Error("");if("dynamicArray"===this.type)throw new Error("");return"tuple"===this.type?`tuple(${this.value.map((t=>t.format())).join(",")})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return this.type.startsWith("bytes")}isString(){return"string"===this.type}get tupleName(){if("tuple"!==this.type)throw TypeError("not a tuple");return this.#M}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===this.#M?-1:!1===this.#M?this.value.length:null}static from(t,e){return new ks(bs,t,e)}static uint8(t){return As(t,8)}static uint16(t){return As(t,16)}static uint24(t){return As(t,24)}static uint32(t){return As(t,32)}static uint40(t){return As(t,40)}static uint48(t){return As(t,48)}static uint56(t){return As(t,56)}static uint64(t){return As(t,64)}static uint72(t){return As(t,72)}static uint80(t){return As(t,80)}static uint88(t){return As(t,88)}static uint96(t){return As(t,96)}static uint104(t){return As(t,104)}static uint112(t){return As(t,112)}static uint120(t){return As(t,120)}static uint128(t){return As(t,128)}static uint136(t){return As(t,136)}static uint144(t){return As(t,144)}static uint152(t){return As(t,152)}static uint160(t){return As(t,160)}static uint168(t){return As(t,168)}static uint176(t){return As(t,176)}static uint184(t){return As(t,184)}static uint192(t){return As(t,192)}static uint200(t){return As(t,200)}static uint208(t){return As(t,208)}static uint216(t){return As(t,216)}static uint224(t){return As(t,224)}static uint232(t){return As(t,232)}static uint240(t){return As(t,240)}static uint248(t){return As(t,248)}static uint256(t){return As(t,256)}static uint(t){return As(t,256)}static int8(t){return As(t,-8)}static int16(t){return As(t,-16)}static int24(t){return As(t,-24)}static int32(t){return As(t,-32)}static int40(t){return As(t,-40)}static int48(t){return As(t,-48)}static int56(t){return As(t,-56)}static int64(t){return As(t,-64)}static int72(t){return As(t,-72)}static int80(t){return As(t,-80)}static int88(t){return As(t,-88)}static int96(t){return As(t,-96)}static int104(t){return As(t,-104)}static int112(t){return As(t,-112)}static int120(t){return As(t,-120)}static int128(t){return As(t,-128)}static int136(t){return As(t,-136)}static int144(t){return As(t,-144)}static int152(t){return As(t,-152)}static int160(t){return As(t,-160)}static int168(t){return As(t,-168)}static int176(t){return As(t,-176)}static int184(t){return As(t,-184)}static int192(t){return As(t,-192)}static int200(t){return As(t,-200)}static int208(t){return As(t,-208)}static int216(t){return As(t,-216)}static int224(t){return As(t,-224)}static int232(t){return As(t,-232)}static int240(t){return As(t,-240)}static int248(t){return As(t,-248)}static int256(t){return As(t,-256)}static int(t){return As(t,-256)}static bytes1(t){return vs(t,1)}static bytes2(t){return vs(t,2)}static bytes3(t){return vs(t,3)}static bytes4(t){return vs(t,4)}static bytes5(t){return vs(t,5)}static bytes6(t){return vs(t,6)}static bytes7(t){return vs(t,7)}static bytes8(t){return vs(t,8)}static bytes9(t){return vs(t,9)}static bytes10(t){return vs(t,10)}static bytes11(t){return vs(t,11)}static bytes12(t){return vs(t,12)}static bytes13(t){return vs(t,13)}static bytes14(t){return vs(t,14)}static bytes15(t){return vs(t,15)}static bytes16(t){return vs(t,16)}static bytes17(t){return vs(t,17)}static bytes18(t){return vs(t,18)}static bytes19(t){return vs(t,19)}static bytes20(t){return vs(t,20)}static bytes21(t){return vs(t,21)}static bytes22(t){return vs(t,22)}static bytes23(t){return vs(t,23)}static bytes24(t){return vs(t,24)}static bytes25(t){return vs(t,25)}static bytes26(t){return vs(t,26)}static bytes27(t){return vs(t,27)}static bytes28(t){return vs(t,28)}static bytes29(t){return vs(t,29)}static bytes30(t){return vs(t,30)}static bytes31(t){return vs(t,31)}static bytes32(t){return vs(t,32)}static address(t){return new ks(bs,"address",t)}static bool(t){return new ks(bs,"bool",!!t)}static bytes(t){return new ks(bs,"bytes",t)}static string(t){return new ks(bs,"string",t)}static array(t,e){throw new Error("not implemented yet")}static tuple(t,e){throw new Error("not implemented yet")}static overrides(t){return new ks(bs,"overrides",Object.assign({},t))}static isTyped(t){return t&&"object"==typeof t&&"_typedSymbol"in t&&t._typedSymbol===Es}static dereference(t,e){if(ks.isTyped(t)){if(t.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${t.type}`);return t.value}return t}}class Ns extends jt{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){let n=ks.dereference(e,"string");try{n=gs(n)}catch(t){return this._throwError(t.message,e)}return t.writeValue(n)}decode(t){return gs(Q(t.readValue(),20))}}class xs extends jt{coder;constructor(t){super(t.name,t.type,"_",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)}}function Ts(t,e,n){let r=[];if(Array.isArray(n))r=n;else if(n&&"object"==typeof n){let t={};r=e.map((e=>{const r=e.localName;return m(r,"cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:n}),m(!t[r],"cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:n}),t[r]=!0,n[r]}))}else w(!1,"invalid tuple value","tuple",n);w(e.length===r.length,"types/value length mismatch","tuple",n);let s=new _t,i=new _t,o=[];e.forEach(((t,e)=>{let n=r[e];if(t.dynamic){let e=i.length;t.encode(i,n);let r=s.writeUpdatableValue();o.push((t=>{r(t+e)}))}else t.encode(s,n)})),o.forEach((t=>{t(s.length)}));let a=t.appendWriter(s);return a+=t.appendWriter(i),a}function Os(t,e){let n=[],r=[],s=t.subReader(0);return e.forEach((e=>{let i=null;if(e.dynamic){let n=t.readIndex(),r=s.subReader(n);try{i=e.decode(r)}catch(t){if(p(t,"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(p(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}if(null==i)throw new Error("investigate");n.push(i),r.push(e.localName||null)})),Mt.fromItems(n,r)}class Ss extends jt{coder;length;constructor(t,e,n){super("array",t.type+"["+(e>=0?e:"")+"]",n,-1===e||t.dynamic),f(this,{coder:t,length:e})}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let n=0;n<this.length;n++)e.push(t);return e}encode(t,e){const n=ks.dereference(e,"array");Array.isArray(n)||this._throwError("expected array value",n);let r=this.length;-1===r&&(r=n.length,t.writeValue(n.length)),b(n.length,r,"coder array"+(this.localName?" "+this.localName:""));let s=[];for(let t=0;t<n.length;t++)s.push(this.coder);return Ts(t,s,n)}decode(t){let e=this.length;-1===e&&(e=t.readIndex(),m(e*Pt<=t.dataLength,"insufficient data length","BUFFER_OVERRUN",{buffer:t.bytes,offset:e*Pt,length:t.dataLength}));let n=[];for(let t=0;t<e;t++)n.push(new xs(this.coder));return Os(t,n)}}class Ps extends jt{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){const n=ks.dereference(e,"bool");return t.writeValue(n?1:0)}decode(t){return!!t.readValue()}}class Rs extends jt{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=x(e);let n=t.writeValue(e.length);return n+=t.writeBytes(e),n}decode(t){return t.readBytes(t.readIndex(),!0)}}class Is extends Rs{constructor(t){super("bytes",t)}decode(t){return P(super.decode(t))}}class Cs extends jt{size;constructor(t,e){let n="bytes"+String(t);super(n,n,e,!1),f(this,{size:t},{size:"number"})}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(t,e){let n=x(ks.dereference(e,this.type));return n.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(n)}decode(t){return P(t.readBytes(this.size))}}const Bs=new Uint8Array([]);class Ds extends jt{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes(Bs)}decode(t){return t.readBytes(0),null}}const Us=BigInt(0),Ls=BigInt(1),Fs=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class Ms extends jt{size;signed;constructor(t,e,n){const r=(e?"int":"uint")+8*t;super(r,r,n,!1),f(this,{size:t,signed:e},{size:"number",signed:"boolean"})}defaultValue(){return 0}encode(t,e){let n=j(ks.dereference(e,this.type)),r=G(Fs,256);if(this.signed){let t=G(r,8*this.size-1);(n>t||n<-(t+Ls))&&this._throwError("value out-of-bounds",e),n=M(n,256)}else(n<Us||n>G(r,8*this.size))&&this._throwError("value out-of-bounds",e);return t.writeValue(n)}decode(t){let e=G(t.readValue(),8*this.size);return this.signed&&(e=function(t,e){const n=_(t,"value"),r=BigInt(V(e,"width"));if(m(n>>r===U,"overflow","NUMERIC_FAULT",{operation:"fromTwos",fault:"overflow",value:t}),n>>r-L)return-((~n&(L<<r)-L)+L);return n}(e,8*this.size)),e}}class Gs extends Rs{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,rt(ks.dereference(e,"string")))}decode(t){return st(super.decode(t))}}class js extends jt{coders;constructor(t,e){let n=!1;const r=[];t.forEach((t=>{t.dynamic&&(n=!0),r.push(t.type)}));super("tuple","tuple("+r.join(",")+")",e,n),f(this,{coders:Object.freeze(t.slice())})}defaultValue(){const t=[];this.coders.forEach((e=>{t.push(e.defaultValue())}));const e=this.coders.reduce(((t,e)=>{const n=e.localName;return n&&(t[n]||(t[n]=0),t[n]++),t}),{});return this.coders.forEach(((n,r)=>{let s=n.localName;s&&1===e[s]&&("length"===s&&(s="_length"),null==t[s]&&(t[s]=t[r]))})),Object.freeze(t)}encode(t,e){const n=ks.dereference(e,"tuple");return Ts(t,this.coders,n)}decode(t){return Os(t,this.coders)}}function _s(t){return sn(rt(t))}const Hs=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]);function Ks(t){return function(t){let e=0;return()=>t[e++]}(function(t){let e=0;function n(){return t[e++]<<8|t[e++]}let r=n(),s=1,i=[0,1];for(let t=1;t<r;t++)i.push(s+=n());let o=n(),a=e;e+=o;let c=0,u=0;function l(){return 0==c&&(u=u<<8|t[e++],c=8),u>>--c&1}const h=2**31,f=h>>>1,d=f>>1,p=h-1;let g=0;for(let t=0;t<31;t++)g=g<<1|l();let y=[],m=0,w=h;for(;;){let t=Math.floor(((g-m+1)*s-1)/w),e=0,n=r;for(;n-e>1;){let r=e+n>>>1;t<i[r]?n=r:e=r}if(0==e)break;y.push(e);let o=m+Math.floor(w*i[e]/s),a=m+Math.floor(w*i[e+1]/s)-1;for(;!((o^a)&f);)g=g<<1&p|l(),o=o<<1&p,a=a<<1&p|1;for(;o&~a&d;)g=g&f|g<<1&p>>>1|l(),o=o<<1^f,a=(a^f)<<1|f|1;m=o,w=1+a-o}let b=r-4;return y.map((e=>{switch(e-b){case 3:return b+65792+(t[a++]<<16|t[a++]<<8|t[a++]);case 2:return b+256+(t[a++]<<8|t[a++]);case 1:return b+t[a++];default:return e-1}}))}(function(t){let e=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach(((t,n)=>e[t.charCodeAt(0)]=n));let n=t.length,r=new Uint8Array(6*n>>3);for(let s=0,i=0,o=0,a=0;s<n;s++)a=a<<6|e[t.charCodeAt(s)],o+=6,o>=8&&(r[i++]=a>>(o-=8));return r}(t)))}function Vs(t){return 1&t?~t>>1:t>>1}function Qs(t,e){let n=Array(t);for(let r=0,s=0;r<t;r++)n[r]=s+=Vs(e());return n}function Js(t,e=0){let n=[];for(;;){let r=t(),s=t();if(!s)break;e+=r;for(let t=0;t<s;t++)n.push(e+t);e+=s+1}return n}function zs(t){return $s((()=>{let e=Js(t);if(e.length)return e}))}function qs(t){let e=[];for(;;){let n=t();if(0==n)break;e.push(Ys(n,t))}for(;;){let n=t()-1;if(n<0)break;e.push(Zs(n,t))}return e.flat()}function $s(t){let e=[];for(;;){let n=t(e.length);if(!n)break;e.push(n)}return e}function Ws(t,e,n){let r=Array(t).fill().map((()=>[]));for(let s=0;s<e;s++)Qs(t,n).forEach(((t,e)=>r[e].push(t)));return r}function Ys(t,e){let n=1+e(),r=e(),s=$s(e);return Ws(s.length,1+t,e).flatMap(((t,e)=>{let[i,...o]=t;return Array(s[e]).fill().map(((t,e)=>{let s=e*r;return[i+e*n,o.map((t=>t+s))]}))}))}function Zs(t,e){return Ws(1+e(),1+t,e).map((t=>[t[0],t.slice(1)]))}function Xs(t){return`{${function(t){return t.toString(16).toUpperCase().padStart(2,"0")}(t)}}`}function ti(t){let e=t.length;if(e<4096)return String.fromCodePoint(...t);let n=[];for(let r=0;r<e;)n.push(String.fromCodePoint(...t.slice(r,r+=4096)));return n.join("")}function ei(t,e){let n=t.length,r=n-e.length;for(let s=0;0==r&&s<n;s++)r=t[s]-e[s];return r}const ni=44032,ri=4352,si=4449,ii=4519,oi=28,ai=588;function ci(t){return t>>24&255}function ui(t){return 16777215&t}let li,hi,fi,di;function pi(t){return t>=ni&&t<55204}function gi(t,e){if(t>=ri&&t<4371&&e>=si&&e<4470)return ni+(t-ri)*ai+(e-si)*oi;if(pi(t)&&e>ii&&e<4547&&(t-ni)%oi==0)return t+(e-ii);{let n=di.get(t);return n&&(n=n.get(e),n)?n:-1}}function yi(t){li||function(){let t=Ks("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");li=new Map(zs(t).flatMap(((t,e)=>t.map((t=>[t,e+1<<24]))))),hi=new Set(Js(t)),fi=new Map,di=new Map;for(let[e,n]of qs(t)){if(!hi.has(e)&&2==n.length){let[t,r]=n,s=di.get(t);s||(s=new Map,di.set(t,s)),s.set(r,e)}fi.set(e,n.reverse())}}();let e=[],n=[],r=!1;function s(t){let n=li.get(t);n&&(r=!0,t|=n),e.push(t)}for(let r of t)for(;;){if(r<128)e.push(r);else if(pi(r)){let t=r-ni,e=t%ai/oi|0,n=t%oi;s(ri+(t/ai|0)),s(si+e),n>0&&s(ii+n)}else{let t=fi.get(r);t?n.push(...t):s(r)}if(!n.length)break;r=n.pop()}if(r&&e.length>1){let t=ci(e[0]);for(let n=1;n<e.length;n++){let r=ci(e[n]);if(0==r||t<=r){t=r;continue}let s=n-1;for(;;){let n=e[s+1];if(e[s+1]=e[s],e[s]=n,!s)break;if(t=ci(e[--s]),t<=r)break}t=ci(e[n])}}return e}function mi(t){return yi(t).map(ui)}function wi(t){return function(t){let e=[],n=[],r=-1,s=0;for(let i of t){let t=ci(i),o=ui(i);if(-1==r)0==t?r=o:e.push(o);else if(s>0&&s>=t)0==t?(e.push(r,...n),n.length=0,r=o):n.push(o),s=t;else{let i=gi(r,o);i>=0?r=i:0==s&&0==t?(e.push(r),r=o):(n.push(o),s=t)}}return r>=0&&e.push(r,...n),e}(yi(t))}const bi=".",Ai=t=>Array.from(t);function vi(t,e){return t.P.has(e)||t.Q.has(e)}class Ei extends Array{get is_emoji(){return!0}}let ki,Ni,xi,Ti,Oi,Si,Pi,Ri,Ii,Ci,Bi;function Di(){if(ki)return;let t=Ks("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");const e=()=>Js(t),n=()=>new Set(e()),r=(t,e)=>e.forEach((e=>t.add(e)));ki=new Map(qs(t)),Ni=n(),xi=e(),Ti=new Set(e().map((t=>xi[t]))),xi=new Set(xi),Oi=n(),n();let s=zs(t),i=t();const o=()=>{let t=new Set;return e().forEach((e=>r(t,s[e]))),r(t,e()),t};Si=$s((e=>{let n=$s(t).map((t=>t+96));if(n.length){let r=e>=i;return n[0]-=32,n=ti(n),r&&(n=`Restricted[${n}]`),{N:n,P:o(),Q:o(),M:!t(),R:r}}})),Pi=n(),Ri=new Map;let a=e().concat(Ai(Pi)).sort(((t,e)=>t-e));a.forEach(((e,n)=>{let r=t(),s=a[n]=r?a[n-r]:{V:[],M:new Map};s.V.push(e),Pi.has(e)||Ri.set(e,s)}));for(let{V:t,M:e}of new Set(Ri.values())){let n=[];for(let e of t){let t=Si.filter((t=>vi(t,e))),s=n.find((({G:e})=>t.some((t=>e.has(t)))));s||(s={G:new Set,V:[]},n.push(s)),s.V.push(e),r(s.G,t)}let s=n.flatMap((t=>Ai(t.G)));for(let{G:t,V:r}of n){let n=new Set(s.filter((e=>!t.has(e))));for(let t of r)e.set(t,n)}}Ii=new Set;let c=new Set;const u=t=>Ii.has(t)?c.add(t):Ii.add(t);for(let t of Si){for(let e of t.P)u(e);for(let e of t.Q)u(e)}for(let t of Ii)Ri.has(t)||c.has(t)||Ri.set(t,1);r(Ii,mi(Ii)),Ci=function(t){let e=[],n=Js(t);return function t({S:n,B:r},s,i){if(!(4&n&&i===s[s.length-1])){2&n&&(i=s[s.length-1]),1&n&&e.push(s);for(let e of r)for(let n of e.Q)t(e,[...s,n],i)}}(function e(r){return{S:t(),B:$s((()=>{let r=Js(t).map((t=>n[t]));if(r.length)return e(r)})),Q:r}}([]),[]),e}(t).map((t=>Ei.from(t))).sort(ei),Bi=new Map;for(let t of Ci){let e=[Bi];for(let n of t){let t=e.map((t=>{let e=t.get(n);return e||(e=new Map,t.set(n,e)),e}));65039===n?e.push(...t):e=t}for(let n of e)n.V=t}}function Ui(t){return(Mi(t)?"":`${Li(Fi([t]))} `)+Xs(t)}function Li(t){return`"${t}"`}function Fi(t,e=1/0,n=Xs){let r=[];var s;s=t[0],Di(),xi.has(s)&&r.push("◌"),t.length>e&&(e>>=1,t=[...t.slice(0,e),8230,...t.slice(-e)]);let i=0,o=t.length;for(let e=0;e<o;e++){let s=t[e];Mi(s)&&(r.push(ti(t.slice(i,e))),r.push(n(s)),i=e+1)}return r.push(ti(t.slice(i,o))),r.join("")}function Mi(t){return Di(),Oi.has(t)}function Gi(t){return function(t){return t.map((({input:e,error:n,output:r})=>{if(n){let r=n.message;throw new Error(1==t.length?r:`Invalid label ${Li(Fi(e,63))}: ${r}`)}return ti(r)})).join(bi)}(function(t,e,n){if(!t)return[];Di();let r=0;return t.split(bi).map((t=>{let s=function(t){let e=[];for(let n=0,r=t.length;n<r;){let r=t.codePointAt(n);n+=r<65536?1:2,e.push(r)}return e}(t),i={input:s,offset:r};r+=s.length+1;try{let t,r=i.tokens=function(t,e,n){let r=[],s=[];t=t.slice().reverse();for(;t.length;){let i=Vi(t);if(i)s.length&&(r.push(e(s)),s=[]),r.push(n(i));else{let e=t.pop();if(Ii.has(e))s.push(e);else{let t=ki.get(e);if(t)s.push(...t);else if(!Ni.has(e))throw ji(e)}}}s.length&&r.push(e(s));return r}(s,e,n),o=r.length;if(!o)throw new Error("empty label");let a=i.output=r.flat();if(function(t){for(let e=t.lastIndexOf(95);e>0;)if(95!==t[--e])throw new Error("underscore allowed only at start")}(a),!(i.emoji=o>1||r[0].is_emoji)&&a.every((t=>t<128)))!function(t){if(t.length>=4&&45==t[2]&&45==t[3])throw new Error(`invalid label extension: "${ti(t.slice(0,4))}"`)}(a),t="ASCII";else{let e=r.flatMap((t=>t.is_emoji?[]:t));if(e.length){if(xi.has(a[0]))throw Hi("leading combining mark");for(let t=1;t<o;t++){let e=r[t];if(!e.is_emoji&&xi.has(e[0]))throw Hi(`emoji + combining mark: "${ti(r[t-1])} + ${Fi([e[0]])}"`)}!function(t){let e=t[0],n=Hs.get(e);if(n)throw Hi(`leading ${n}`);let r=t.length,s=-1;for(let i=1;i<r;i++){e=t[i];let r=Hs.get(e);if(r){if(s==i)throw Hi(`${n} + ${r}`);s=i+1,n=r}}if(s==r)throw Hi(`trailing ${n}`)}(a);let n=Ai(new Set(e)),[s]=function(t){let e=Si;for(let n of t){let t=e.filter((t=>vi(t,n)));if(!t.length)throw Si.some((t=>vi(t,n)))?_i(e[0],n):ji(n);if(e=t,1==t.length)break}return e}(n);!function(t,e){for(let n of e)if(!vi(t,n))throw _i(t,n);if(t.M){let t=mi(e);for(let e=1,n=t.length;e<n;e++)if(Ti.has(t[e])){let r=e+1;for(let s;r<n&&Ti.has(s=t[r]);r++)for(let n=e;n<r;n++)if(t[n]==s)throw new Error(`duplicate non-spacing marks: ${Ui(s)}`);if(r-e>4)throw new Error(`excessive non-spacing marks: ${Li(Fi(t.slice(e-1,r)))} (${r-e}/4)`);e=r}}}(s,e),function(t,e){let n,r=[];for(let t of e){let e=Ri.get(t);if(1===e)return;if(e){let r=e.M.get(t);if(n=n?n.filter((t=>r.has(t))):Ai(r),!n.length)return}else r.push(t)}if(n)for(let e of n)if(r.every((t=>vi(e,t))))throw new Error(`whole-script confusable: ${t.N}/${e.N}`)}(s,n),t=s.N}else t="Emoji"}i.type=t}catch(t){i.error=t}return i}))}(t,wi,Ki))}function ji(t){return new Error(`disallowed character: ${Ui(t)}`)}function _i(t,e){let n=Ui(e),r=Si.find((t=>t.P.has(e)));return r&&(n=`${r.N} ${n}`),new Error(`illegal mixture: ${t.N} + ${n}`)}function Hi(t){return new Error(`illegal placement: ${t}`)}function Ki(t){return t.filter((t=>65039!=t))}function Vi(t,e){let n,r=Bi,s=t.length;for(;s&&(r=r.get(t[--s]),r);){let{V:i}=r;i&&(n=i,e&&e.push(...t.slice(s).reverse()),t.length=s)}return n}const Qi=new Uint8Array(32);function Ji(t){return w(0!==t.length,"invalid ENS name; empty component","comp",t),t}function zi(t){const e=rt(function(t){try{if(0===t.length)throw new Error("empty label");return Gi(t)}catch(e){w(!1,`invalid ENS name (${e.message})`,"name",t)}}(t)),n=[];if(0===t.length)return n;let r=0;for(let t=0;t<e.length;t++){46===e[t]&&(n.push(Ji(e.slice(r,t))),r=t+1)}return w(r<e.length,"invalid ENS name; empty component","name",t),n.push(Ji(e.slice(r))),n}function qi(t){w("string"==typeof t,"invalid ENS name; not a string","name",t),w(t.length,"invalid ENS name (empty label)","name",t);let e=Qi;const n=zi(t);for(;n.length;)e=sn(R([e,sn(n.pop())]));return P(e)}function $i(t,e){const n=null!=e?e:63;return w(n<=255,"DNS encoded label cannot exceed 255","length",n),P(R(zi(t).map((e=>{w(e.length<=n,`label ${JSON.stringify(t)} exceeds ${n} bytes`,"name",t);const r=new Uint8Array(e.length+1);return r.set(e,1),r[0]=r.length-1,r}))))+"00"}function Wi(t,e){return{address:gs(t),storageKeys:e.map(((t,e)=>(w(T(t,32),"invalid slot",`storageKeys[${e}]`,t),t.toLowerCase())))}}function Yi(t){if(Array.isArray(t))return t.map(((e,n)=>Array.isArray(e)?(w(2===e.length,"invalid slot set",`value[${n}]`,e),Wi(e[0],e[1])):(w(null!=e&&"object"==typeof e,"invalid address-slot set","value",t),Wi(e.address,e.storageKeys))));w(null!=t&&"object"==typeof t,"invalid access list","value",t);const e=Object.keys(t).map((e=>{const n=t[e].reduce(((t,e)=>(t[e]=!0,t)),{});return Wi(e,Object.keys(n).sort())}));return e.sort(((t,e)=>t.address.localeCompare(e.address))),e}function Zi(t){let e;return e="string"==typeof t?us.computePublicKey(t,!1):t.publicKey,gs(sn("0x"+e.substring(4)).substring(26))}function Xi(t,e){return Zi(us.recoverPublicKey(t,e))}Qi.fill(0);const to=BigInt(0),eo=BigInt(2),no=BigInt(27),ro=BigInt(28),so=BigInt(35),io=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),oo=131072;function ao(t,e){let n=t.toString(16);for(;n.length<2;)n="0"+n;return n+=qn(e).substring(4),"0x"+n}function co(t){return"0x"===t?null:gs(t)}function uo(t,e){try{return Yi(t)}catch(n){w(!1,n.message,e,t)}}function lo(t,e){return"0x"===t?0:V(t,e)}function ho(t,e){if("0x"===t)return to;const n=j(t,e);return w(n<=io,"value exceeds uint size",e,n),n}function fo(t,e){const n=j(t,"value"),r=J(n);return w(r.length<=32,"value too large",`tx.${e}`,n),r}function po(t){return Yi(t).map((t=>[t.address,t.storageKeys]))}function go(t,e){w(Array.isArray(t),`invalid ${e}`,"value",t);for(let e=0;e<t.length;e++)w(T(t[e],32),"invalid ${ param } hash",`value[${e}]`,t[e]);return t}function yo(t,e){let n;try{if(n=lo(e[0],"yParity"),0!==n&&1!==n)throw new Error("bad yParity")}catch(t){w(!1,"invalid yParity","yParity",e[0])}const r=D(e[1],32),s=D(e[2],32),i=cs.from({r:r,s:s,yParity:n});t.signature=i}class mo{#G;#j;#N;#_;#H;#K;#V;#Q;#J;#z;#q;#$;#W;#Y;#Z;#X;get type(){return this.#G}set type(t){switch(t){case null:this.#G=null;break;case 0:case"legacy":this.#G=0;break;case 1:case"berlin":case"eip-2930":this.#G=1;break;case 2:case"london":case"eip-1559":this.#G=2;break;case 3:case"cancun":case"eip-4844":this.#G=3;break;default:w(!1,"unsupported transaction type","type",t)}}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559";case 3:return"eip-4844"}return null}get to(){const t=this.#j;return null==t&&3===this.type?Zr:t}set to(t){this.#j=null==t?null:gs(t)}get nonce(){return this.#_}set nonce(t){this.#_=V(t,"value")}get gasLimit(){return this.#H}set gasLimit(t){this.#H=j(t)}get gasPrice(){const t=this.#K;return null!=t||0!==this.type&&1!==this.type?t:to}set gasPrice(t){this.#K=null==t?null:j(t,"gasPrice")}get maxPriorityFeePerGas(){const t=this.#V;return null==t?2===this.type||3===this.type?to:null:t}set maxPriorityFeePerGas(t){this.#V=null==t?null:j(t,"maxPriorityFeePerGas")}get maxFeePerGas(){const t=this.#Q;return null==t?2===this.type||3===this.type?to:null:t}set maxFeePerGas(t){this.#Q=null==t?null:j(t,"maxFeePerGas")}get data(){return this.#N}set data(t){this.#N=P(t)}get value(){return this.#J}set value(t){this.#J=j(t,"value")}get chainId(){return this.#z}set chainId(t){this.#z=j(t)}get signature(){return this.#q||null}set signature(t){this.#q=null==t?null:cs.from(t)}get accessList(){const t=this.#$||null;return null==t?1===this.type||2===this.type||3===this.type?[]:null:t}set accessList(t){this.#$=null==t?null:Yi(t)}get maxFeePerBlobGas(){const t=this.#W;return null==t&&3===this.type?to:t}set maxFeePerBlobGas(t){this.#W=null==t?null:j(t,"maxFeePerBlobGas")}get blobVersionedHashes(){let t=this.#Y;return null==t&&3===this.type?[]:t}set blobVersionedHashes(t){if(null!=t){w(Array.isArray(t),"blobVersionedHashes must be an Array","value",t),t=t.slice();for(let e=0;e<t.length;e++)w(T(t[e],32),"invalid blobVersionedHash",`value[${e}]`,t[e])}this.#Y=t}get blobs(){return null==this.#X?null:this.#X.map((t=>Object.assign({},t)))}set blobs(t){if(null==t)return void(this.#X=null);const e=[],n=[];for(let r=0;r<t.length;r++){const s=t[r];if(O(s)){m(this.#Z,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let t=N(s);if(w(t.length<=oo,"blob is too large",`blobs[${r}]`,s),t.length!==oo){const e=new Uint8Array(oo);e.set(t),t=e}const i=this.#Z.blobToKzgCommitment(t),o=P(this.#Z.computeBlobKzgProof(t,i));e.push({data:P(t),commitment:P(i),proof:o}),n.push(ao(1,i))}else{const t=P(s.commitment);e.push({data:P(s.data),commitment:t,proof:P(s.proof)}),n.push(ao(1,t))}}this.#X=e,this.#Y=n}get kzg(){return this.#Z}set kzg(t){this.#Z=t}constructor(){this.#G=null,this.#j=null,this.#_=0,this.#H=to,this.#K=null,this.#V=null,this.#Q=null,this.#N="0x",this.#J=to,this.#z=to,this.#q=null,this.#$=null,this.#W=null,this.#Y=null,this.#X=null,this.#Z=null}get hash(){return null==this.signature?null:sn(this.#tt(!0,!1))}get unsignedHash(){return sn(this.unsignedSerialized)}get from(){return null==this.signature?null:Xi(this.unsignedHash,this.signature)}get fromPublicKey(){return null==this.signature?null:us.recoverPublicKey(this.unsignedHash,this.signature)}isSigned(){return null!=this.signature}#tt(t,e){m(!t||null!=this.signature,"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized","UNSUPPORTED_OPERATION",{operation:".serialized"});const n=t?this.signature:null;switch(this.inferType()){case 0:return function(t,e){const n=[fo(t.nonce,"nonce"),fo(t.gasPrice||0,"gasPrice"),fo(t.gasLimit,"gasLimit"),t.to||"0x",fo(t.value,"value"),t.data];let r=to;if(t.chainId!=to)r=j(t.chainId,"tx.chainId"),w(!e||null==e.networkV||e.legacyChainId===r,"tx.chainId/sig.v mismatch","sig",e);else if(t.signature){const e=t.signature.legacyChainId;null!=e&&(r=e)}if(!e)return r!==to&&(n.push(J(r)),n.push("0x"),n.push("0x")),Ot(n);let s=BigInt(27+e.yParity);return r!==to?s=cs.getChainIdV(r,e.v):BigInt(e.v)!==s&&w(!1,"tx.chainId/sig.v mismatch","sig",e),n.push(J(s)),n.push(J(e.r)),n.push(J(e.s)),Ot(n)}(this,n);case 1:return function(t,e){const n=[fo(t.chainId,"chainId"),fo(t.nonce,"nonce"),fo(t.gasPrice||0,"gasPrice"),fo(t.gasLimit,"gasLimit"),t.to||"0x",fo(t.value,"value"),t.data,po(t.accessList||[])];return e&&(n.push(fo(e.yParity,"recoveryParam")),n.push(J(e.r)),n.push(J(e.s))),R(["0x01",Ot(n)])}(this,n);case 2:return function(t,e){const n=[fo(t.chainId,"chainId"),fo(t.nonce,"nonce"),fo(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),fo(t.maxFeePerGas||0,"maxFeePerGas"),fo(t.gasLimit,"gasLimit"),t.to||"0x",fo(t.value,"value"),t.data,po(t.accessList||[])];return e&&(n.push(fo(e.yParity,"yParity")),n.push(J(e.r)),n.push(J(e.s))),R(["0x02",Ot(n)])}(this,n);case 3:return function(t,e,n){const r=[fo(t.chainId,"chainId"),fo(t.nonce,"nonce"),fo(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),fo(t.maxFeePerGas||0,"maxFeePerGas"),fo(t.gasLimit,"gasLimit"),t.to||Zr,fo(t.value,"value"),t.data,po(t.accessList||[]),fo(t.maxFeePerBlobGas||0,"maxFeePerBlobGas"),go(t.blobVersionedHashes||[],"blobVersionedHashes")];return e&&(r.push(fo(e.yParity,"yParity")),r.push(J(e.r)),r.push(J(e.s)),n)?R(["0x03",Ot([r,n.map((t=>t.data)),n.map((t=>t.commitment)),n.map((t=>t.proof))])]):R(["0x03",Ot(r)])}(this,n,e?this.blobs:null)}m(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:".serialized"})}get serialized(){return this.#tt(!0,!0)}get unsignedSerialized(){return this.#tt(!1,!1)}inferType(){const t=this.inferTypes();return t.indexOf(2)>=0?2:t.pop()}inferTypes(){const t=null!=this.gasPrice,e=null!=this.maxFeePerGas||null!=this.maxPriorityFeePerGas,n=null!=this.accessList,r=null!=this.#W||this.#Y;null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&m(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),m(!e||0!==this.type&&1!==this.type,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),m(0!==this.type||!n,"legacy transaction cannot have accessList","BAD_DATA",{value:this});const s=[];return null!=this.type?s.push(this.type):e?s.push(2):t?(s.push(1),n||s.push(0)):n?(s.push(1),s.push(2)):(r&&this.to||(s.push(0),s.push(1),s.push(2)),s.push(3)),s.sort(),s}isLegacy(){return 0===this.type}isBerlin(){return 1===this.type}isLondon(){return 2===this.type}isCancun(){return 3===this.type}clone(){return mo.from(this)}toJSON(){const t=t=>null==t?null:t.toString();return{type:this.type,to:this.to,data:this.data,nonce:this.nonce,gasLimit:t(this.gasLimit),gasPrice:t(this.gasPrice),maxPriorityFeePerGas:t(this.maxPriorityFeePerGas),maxFeePerGas:t(this.maxFeePerGas),value:t(this.value),chainId:t(this.chainId),sig:this.signature?this.signature.toJSON():null,accessList:this.accessList}}static from(t){if(null==t)return new mo;if("string"==typeof t){const e=N(t);if(e[0]>=127)return mo.from(function(t){const e=kt(t);w(Array.isArray(e)&&(9===e.length||6===e.length),"invalid field count for legacy transaction","data",t);const n={type:0,nonce:lo(e[0],"nonce"),gasPrice:ho(e[1],"gasPrice"),gasLimit:ho(e[2],"gasLimit"),to:co(e[3]),value:ho(e[4],"value"),data:P(e[5]),chainId:to};if(6===e.length)return n;const r=ho(e[6],"v"),s=ho(e[7],"r"),i=ho(e[8],"s");if(s===to&&i===to)n.chainId=r;else{let t=(r-so)/eo;t<to&&(t=to),n.chainId=t,w(t!==to||r===no||r===ro,"non-canonical legacy v","v",e[6]),n.signature=cs.from({r:D(e[7],32),s:D(e[8],32),v:r})}return n}(e));switch(e[0]){case 1:return mo.from(function(t){const e=kt(N(t).slice(1));w(Array.isArray(e)&&(8===e.length||11===e.length),"invalid field count for transaction type: 1","data",P(t));const n={type:1,chainId:ho(e[0],"chainId"),nonce:lo(e[1],"nonce"),gasPrice:ho(e[2],"gasPrice"),gasLimit:ho(e[3],"gasLimit"),to:co(e[4]),value:ho(e[5],"value"),data:P(e[6]),accessList:uo(e[7],"accessList")};return 8===e.length||yo(n,e.slice(8)),n}(e));case 2:return mo.from(function(t){const e=kt(N(t).slice(1));w(Array.isArray(e)&&(9===e.length||12===e.length),"invalid field count for transaction type: 2","data",P(t));const n={type:2,chainId:ho(e[0],"chainId"),nonce:lo(e[1],"nonce"),maxPriorityFeePerGas:ho(e[2],"maxPriorityFeePerGas"),maxFeePerGas:ho(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:ho(e[4],"gasLimit"),to:co(e[5]),value:ho(e[6],"value"),data:P(e[7]),accessList:uo(e[8],"accessList")};return 9===e.length||yo(n,e.slice(9)),n}(e));case 3:return mo.from(function(t){let e=kt(N(t).slice(1)),n="3",r=null;if(4===e.length&&Array.isArray(e[0])){n="3 (network format)";const t=e[1],s=e[2],i=e[3];w(Array.isArray(t),"invalid network format: blobs not an array","fields[1]",t),w(Array.isArray(s),"invalid network format: commitments not an array","fields[2]",s),w(Array.isArray(i),"invalid network format: proofs not an array","fields[3]",i),w(t.length===s.length,"invalid network format: blobs/commitments length mismatch","fields",e),w(t.length===i.length,"invalid network format: blobs/proofs length mismatch","fields",e),r=[];for(let n=0;n<e[1].length;n++)r.push({data:t[n],commitment:s[n],proof:i[n]});e=e[0]}w(Array.isArray(e)&&(11===e.length||14===e.length),`invalid field count for transaction type: ${n}`,"data",P(t));const s={type:3,chainId:ho(e[0],"chainId"),nonce:lo(e[1],"nonce"),maxPriorityFeePerGas:ho(e[2],"maxPriorityFeePerGas"),maxFeePerGas:ho(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:ho(e[4],"gasLimit"),to:co(e[5]),value:ho(e[6],"value"),data:P(e[7]),accessList:uo(e[8],"accessList"),maxFeePerBlobGas:ho(e[9],"maxFeePerBlobGas"),blobVersionedHashes:e[10]};r&&(s.blobs=r),w(null!=s.to,`invalid address for transaction type: ${n}`,"data",t),w(Array.isArray(s.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",t);for(let e=0;e<s.blobVersionedHashes.length;e++)w(T(s.blobVersionedHashes[e],32),`invalid blobVersionedHash at index ${e}: must be length 32`,"data",t);return 11===e.length||yo(s,e.slice(11)),s}(e))}m(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new mo;return null!=t.type&&(e.type=t.type),null!=t.to&&(e.to=t.to),null!=t.nonce&&(e.nonce=t.nonce),null!=t.gasLimit&&(e.gasLimit=t.gasLimit),null!=t.gasPrice&&(e.gasPrice=t.gasPrice),null!=t.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),null!=t.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null!=t.maxFeePerBlobGas&&(e.maxFeePerBlobGas=t.maxFeePerBlobGas),null!=t.data&&(e.data=t.data),null!=t.value&&(e.value=t.value),null!=t.chainId&&(e.chainId=t.chainId),null!=t.signature&&(e.signature=cs.from(t.signature)),null!=t.accessList&&(e.accessList=t.accessList),null!=t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes),null!=t.kzg&&(e.kzg=t.kzg),null!=t.blobs&&(e.blobs=t.blobs),null!=t.hash&&(w(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",t),w(e.hash===t.hash,"hash mismatch","tx",t)),null!=t.from&&(w(e.isSigned(),"unsigned transaction cannot define '.from'","tx",t),w(e.from.toLowerCase()===(t.from||"").toLowerCase(),"from mismatch","tx",t)),e}}function wo(t){return"string"==typeof t&&(t=rt(t)),sn(R([rt("Ethereum Signed Message:\n"),rt(String(t.length)),t]))}const bo=new Uint8Array(32);bo.fill(0);const Ao=BigInt(-1),vo=BigInt(0),Eo=BigInt(1),ko=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const No=Q(Eo,32),xo=Q(vo,32),To={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},Oo=["name","version","chainId","verifyingContract","salt"];function So(t){return function(e){return w("string"==typeof e,`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const Po={name:So("name"),version:So("version"),chainId:function(t){const e=j(t,"domain.chainId");return w(e>=0,"invalid chain ID","domain.chainId",t),Number.isSafeInteger(e)?Number(e):z(e)},verifyingContract:function(t){try{return gs(t).toLowerCase()}catch(t){}w(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){const e=N(t,"domain.salt");return w(32===e.length,'invalid domain value "salt"',"domain.salt",t),P(e)}};function Ro(t){{const e=t.match(/^(u?)int(\d+)$/);if(e){const n=""===e[1],r=parseInt(e[2]);w(r%8==0&&0!==r&&r<=256&&e[2]===String(r),"invalid numeric width","type",t);const s=G(ko,n?r-1:r),i=n?(s+Eo)*Ao:vo;return function(e){const r=j(e,"value");return w(r>=i&&r<=s,`value out-of-bounds for ${t}`,"value",r),Q(n?M(r,256):r,32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const n=parseInt(e[1]);return w(0!==n&&n<=32&&e[1]===String(n),"invalid bytes width","type",t),function(e){return w(N(e).length===n,`invalid length for ${t}`,"value",e),function(t){const e=N(t),n=e.length%32;return n?R([e,bo.slice(n)]):P(e)}(e)}}}switch(t){case"address":return function(t){return D(gs(t),32)};case"bool":return function(t){return t?No:xo};case"bytes":return function(t){return sn(t)};case"string":return function(t){return _s(t)}}return null}function Io(t,e){return`${t}(${e.map((({name:t,type:e})=>e+" "+t)).join(",")})`}function Co(t){const e=t.match(/^([^\x5b]*)((\x5b\d*\x5d)*)(\x5b(\d*)\x5d)$/);return e?{base:e[1],index:e[2]+e[4],array:{base:e[1],prefix:e[1]+e[2],count:e[5]?parseInt(e[5]):-1}}:{base:t}}class Bo{primaryType;#et;get types(){return JSON.parse(this.#et)}#nt;#rt;constructor(t){this.#nt=new Map,this.#rt=new Map;const e=new Map,n=new Map,r=new Map,s={};Object.keys(t).forEach((i=>{s[i]=t[i].map((({name:e,type:n})=>{let{base:r,index:s}=Co(n);return"int"!==r||t.int||(r="int256"),"uint"!==r||t.uint||(r="uint256"),{name:e,type:r+(s||"")}})),e.set(i,new Set),n.set(i,[]),r.set(i,new Set)})),this.#et=JSON.stringify(s);for(const r in s){const i=new Set;for(const o of s[r]){w(!i.has(o.name),`duplicate variable name ${JSON.stringify(o.name)} in ${JSON.stringify(r)}`,"types",t),i.add(o.name);const s=Co(o.type).base;w(s!==r,`circular type reference to ${JSON.stringify(s)}`,"types",t);Ro(s)||(w(n.has(s),`unknown type ${JSON.stringify(s)}`,"types",t),n.get(s).push(r),e.get(r).add(s))}}const i=Array.from(n.keys()).filter((t=>0===n.get(t).length));w(0!==i.length,"missing primary type","types",t),w(1===i.length,`ambiguous primary types or unused types: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"types",t),f(this,{primaryType:i[0]}),function s(i,o){w(!o.has(i),`circular type reference to ${JSON.stringify(i)}`,"types",t),o.add(i);for(const t of e.get(i))if(n.has(t)){s(t,o);for(const e of o)r.get(e).add(t)}o.delete(i)}(this.primaryType,new Set);for(const[t,e]of r){const n=Array.from(e);n.sort(),this.#nt.set(t,Io(t,s[t])+n.map((t=>Io(t,s[t]))).join(""))}}getEncoder(t){let e=this.#rt.get(t);return e||(e=this.#st(t),this.#rt.set(t,e)),e}#st(t){{const e=Ro(t);if(e)return e}const e=Co(t).array;if(e){const t=e.prefix,n=this.getEncoder(t);return r=>{w(-1===e.count||e.count===r.length,`array length mismatch; expected length ${e.count}`,"value",r);let s=r.map(n);return this.#nt.has(t)&&(s=s.map(sn)),sn(R(s))}}const n=this.types[t];if(n){const e=_s(this.#nt.get(t));return t=>{const r=n.map((({name:e,type:n})=>{const r=this.getEncoder(n)(t[e]);return this.#nt.has(n)?sn(r):r}));return r.unshift(e),R(r)}}w(!1,`unknown type: ${t}`,"type",t)}encodeType(t){const e=this.#nt.get(t);return w(e,`unknown type: ${JSON.stringify(t)}`,"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return sn(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,n){if(Ro(t))return n(t,e);const r=Co(t).array;if(r)return w(-1===r.count||r.count===e.length,`array length mismatch; expected length ${r.count}`,"value",e),e.map((t=>this._visit(r.prefix,t,n)));const s=this.types[t];if(s)return s.reduce(((t,{name:r,type:s})=>(t[r]=this._visit(s,e[r],n),t)),{});w(!1,`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new Bo(t)}static getPrimaryType(t){return Bo.from(t).primaryType}static hashStruct(t,e,n){return Bo.from(e).hashStruct(t,n)}static hashDomain(t){const e=[];for(const n in t){if(null==t[n])continue;const r=To[n];w(r,`invalid typed-data domain key: ${JSON.stringify(n)}`,"domain",t),e.push({name:n,type:r})}return e.sort(((t,e)=>Oo.indexOf(t.name)-Oo.indexOf(e.name))),Bo.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,n){return R(["0x1901",Bo.hashDomain(t),Bo.from(e).hash(n)])}static hash(t,e,n){return sn(Bo.encode(t,e,n))}static async resolveNames(t,e,n,r){t=Object.assign({},t);for(const e in t)null==t[e]&&delete t[e];const s={};t.verifyingContract&&!T(t.verifyingContract,20)&&(s[t.verifyingContract]="0x");const i=Bo.from(e);i.visit(n,((t,e)=>("address"!==t||T(e,20)||(s[e]="0x"),e)));for(const t in s)s[t]=await r(t);return t.verifyingContract&&s[t.verifyingContract]&&(t.verifyingContract=s[t.verifyingContract]),{domain:t,value:n=i.visit(n,((t,e)=>"address"===t&&s[e]?s[e]:e))}}static getPayload(t,e,n){Bo.hashDomain(t);const r={},s=[];Oo.forEach((e=>{const n=t[e];null!=n&&(r[e]=Po[e](n),s.push({name:e,type:To[e]}))}));const i=Bo.from(e);e=i.types;const o=Object.assign({},e);return w(null==o.EIP712Domain,"types must not contain EIP712Domain type","types.EIP712Domain",e),o.EIP712Domain=s,i.encode(n),{types:o,domain:r,primaryType:i.primaryType,message:i.visit(n,((t,e)=>{if(t.match(/^bytes(\d*)/))return P(N(e));if(t.match(/^u?int/))return j(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return w("string"==typeof e,"invalid string","value",e),e}w(!1,"unsupported type","type",t)}))}}}function Do(t){const e=new Set;return t.forEach((t=>e.add(t))),Object.freeze(e)}const Uo=Do("external public payable override".split(" ")),Lo="constant external internal payable private public pure view override",Fo=Do(Lo.split(" ")),Mo="constructor error event fallback function receive struct",Go=Do(Mo.split(" ")),jo="calldata memory storage payable indexed",_o=Do(jo.split(" ")),Ho=Do([Mo,jo,"tuple returns",Lo].join(" ").split(" ")),Ko={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},Vo=new RegExp("^(\\s*)"),Qo=new RegExp("^([0-9]+)"),Jo=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),zo=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)$"),qo=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$");class $o{#O;#it;get offset(){return this.#O}get length(){return this.#it.length-this.#O}constructor(t){this.#O=0,this.#it=t.slice()}clone(){return new $o(this.#it)}reset(){this.#O=0}#ot(t=0,e=0){return new $o(this.#it.slice(t,e).map((e=>Object.freeze(Object.assign({},e,{match:e.match-t,linkBack:e.linkBack-t,linkNext:e.linkNext-t})))))}popKeyword(t){const e=this.peek();if("KEYWORD"!==e.type||!t.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(t){if(this.peek().type!==t){const e=this.peek();throw new Error(`expected ${t}; got ${e.type} ${JSON.stringify(e.text)}`)}return this.pop().text}popParen(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=this.#ot(this.#O+1,t.match+1);return this.#O=t.match+1,e}popParams(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=[];for(;this.#O<t.match-1;){const t=this.peek().linkNext;e.push(this.#ot(this.#O+1,t)),this.#O=t}return this.#O=t.match+1,e}peek(){if(this.#O>=this.#it.length)throw new Error("out-of-bounds");return this.#it[this.#O]}peekKeyword(t){const e=this.peekType("KEYWORD");return null!=e&&t.has(e)?e:null}peekType(t){if(0===this.length)return null;const e=this.peek();return e.type===t?e.text:null}pop(){const t=this.peek();return this.#O++,t}toString(){const t=[];for(let e=this.#O;e<this.#it.length;e++){const n=this.#it[e];t.push(`${n.type}:${n.text}`)}return`<TokenString ${t.join(" ")}>`}}function Wo(t){const e=[],n=e=>{const n=i<t.length?JSON.stringify(t[i]):"$EOI";throw new Error(`invalid token ${n} at ${i}: ${e}`)};let r=[],s=[],i=0;for(;i<t.length;){let o=t.substring(i),a=o.match(Vo);a&&(i+=a[1].length,o=t.substring(i));const c={depth:r.length,linkBack:-1,linkNext:-1,match:-1,type:"",text:"",offset:i,value:-1};e.push(c);let u=Ko[o[0]]||"";if(u){if(c.type=u,c.text=o[0],i++,"OPEN_PAREN"===u)r.push(e.length-1),s.push(e.length-1);else if("CLOSE_PAREN"==u)0===r.length&&n("no matching open bracket"),c.match=r.pop(),e[c.match].match=e.length-1,c.depth--,c.linkBack=s.pop(),e[c.linkBack].linkNext=e.length-1;else if("COMMA"===u)c.linkBack=s.pop(),e[c.linkBack].linkNext=e.length-1,s.push(e.length-1);else if("OPEN_BRACKET"===u)c.type="BRACKET";else if("CLOSE_BRACKET"===u){let t=e.pop().text;if(e.length>0&&"NUMBER"===e[e.length-1].type){const n=e.pop().text;t=n+t,e[e.length-1].value=V(n)}if(0===e.length||"BRACKET"!==e[e.length-1].type)throw new Error("missing opening bracket");e[e.length-1].text+=t}}else if(a=o.match(Jo),a){if(c.text=a[1],i+=c.text.length,Ho.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(qo)){c.type="TYPE";continue}c.type="ID"}else{if(a=o.match(Qo),!a)throw new Error(`unexpected token ${JSON.stringify(o[0])} at position ${i}`);c.text=a[1],c.type="NUMBER",i+=c.text.length}}return new $o(e.map((t=>Object.freeze(t))))}function Yo(t,e){let n=[];for(const r in e.keys())t.has(r)&&n.push(r);if(n.length>1)throw new Error(`conflicting types: ${n.join(", ")}`)}function Zo(t,e){if(e.peekKeyword(Go)){const n=e.pop().text;if(n!==t)throw new Error(`expected ${t}, got ${n}`)}return e.popType("ID")}function Xo(t,e){const n=new Set;for(;;){const r=t.peekType("KEYWORD");if(null==r||e&&!e.has(r))break;if(t.pop(),n.has(r))throw new Error(`duplicate keywords: ${JSON.stringify(r)}`);n.add(r)}return Object.freeze(n)}function ta(t){let e=Xo(t,Fo);return Yo(e,Do("constant payable nonpayable".split(" "))),Yo(e,Do("pure view payable nonpayable".split(" "))),e.has("view")?"view":e.has("pure")?"pure":e.has("payable")?"payable":e.has("nonpayable")?"nonpayable":e.has("constant")?"view":"nonpayable"}function ea(t,e){return t.popParams().map((t=>ga.from(t,e)))}function na(t){if(t.peekType("AT")){if(t.pop(),t.peekType("NUMBER"))return j(t.pop().text);throw new Error("invalid gas")}return null}function ra(t){if(t.length)throw new Error(`unexpected tokens at offset ${t.offset}: ${t.toString()}`)}const sa=new RegExp(/^(.*)\[([0-9]*)\]$/);function ia(t){const e=t.match(qo);if(w(e,"invalid type","type",t),"uint"===t)return"uint256";if("int"===t)return"int256";if(e[2]){const n=parseInt(e[2]);w(0!==n&&n<=32,"invalid bytes length","type",t)}else if(e[3]){const n=parseInt(e[3]);w(0!==n&&n<=256&&n%8==0,"invalid numeric width","type",t)}return t}const oa={},aa=Symbol.for("_ethers_internal"),ca="_ParamTypeInternal",ua="_ErrorInternal",la="_EventInternal",ha="_ConstructorInternal",fa="_FallbackInternal",da="_FunctionInternal",pa="_StructInternal";class ga{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(t,e,n,r,s,i,o,a){if(E(t,oa,"ParamType"),Object.defineProperty(this,aa,{value:ca}),i&&(i=Object.freeze(i.slice())),"array"===r){if(null==o||null==a)throw new Error("")}else if(null!=o||null!=a)throw new Error("");if("tuple"===r){if(null==i)throw new Error("")}else if(null!=i)throw new Error("");f(this,{name:e,type:n,baseType:r,indexed:s,components:i,arrayLength:o,arrayChildren:a})}format(t){if(null==t&&(t="sighash"),"json"===t){const e=this.name||"";if(this.isArray()){const t=JSON.parse(this.arrayChildren.format("json"));return t.name=e,t.type+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`,JSON.stringify(t)}const n={type:"tuple"===this.baseType?"tuple":this.type,name:e};return"boolean"==typeof this.indexed&&(n.indexed=this.indexed),this.isTuple()&&(n.components=this.components.map((e=>JSON.parse(e.format(t))))),JSON.stringify(n)}let e="";return this.isArray()?(e+=this.arrayChildren.format(t),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?e+="("+this.components.map((e=>e.format(t))).join("full"===t?", ":",")+")":e+=this.type,"sighash"!==t&&(!0===this.indexed&&(e+=" indexed"),"full"===t&&this.name&&(e+=" "+this.name)),e}isArray(){return"array"===this.baseType}isTuple(){return"tuple"===this.baseType}isIndexable(){return null!=this.indexed}walk(t,e){if(this.isArray()){if(!Array.isArray(t))throw new Error("invalid array value");if(-1!==this.arrayLength&&t.length!==this.arrayLength)throw new Error("array is wrong length");const n=this;return t.map((t=>n.arrayChildren.walk(t,e)))}if(this.isTuple()){if(!Array.isArray(t))throw new Error("invalid tuple value");if(t.length!==this.components.length)throw new Error("array is wrong length");const n=this;return t.map(((t,r)=>n.components[r].walk(t,e)))}return e(this.type,t)}#at(t,e,n,r){if(this.isArray()){if(!Array.isArray(e))throw new Error("invalid array value");if(-1!==this.arrayLength&&e.length!==this.arrayLength)throw new Error("array is wrong length");const s=this.arrayChildren,i=e.slice();return i.forEach(((e,r)=>{s.#at(t,e,n,(t=>{i[r]=t}))})),void r(i)}if(this.isTuple()){const s=this.components;let i;if(Array.isArray(e))i=e.slice();else{if(null==e||"object"!=typeof e)throw new Error("invalid tuple value");i=s.map((t=>{if(!t.name)throw new Error("cannot use object value with unnamed components");if(!(t.name in e))throw new Error(`missing value for component ${t.name}`);return e[t.name]}))}if(i.length!==this.components.length)throw new Error("array is wrong length");return i.forEach(((e,r)=>{s[r].#at(t,e,n,(t=>{i[r]=t}))})),void r(i)}const s=n(this.type,e);s.then?t.push(async function(){r(await s)}()):r(s)}async walkAsync(t,e){const n=[],r=[t];return this.#at(n,t,e,(t=>{r[0]=t})),n.length&&await Promise.all(n),r[0]}static from(t,e){if(ga.isParamType(t))return t;if("string"==typeof t)try{return ga.from(Wo(t),e)}catch(e){w(!1,"invalid param type","obj",t)}else if(t instanceof $o){let n="",r="",s=null;Xo(t,Do(["tuple"])).has("tuple")||t.peekType("OPEN_PAREN")?(r="tuple",s=t.popParams().map((t=>ga.from(t))),n=`tuple(${s.map((t=>t.format())).join(",")})`):(n=ia(t.popType("TYPE")),r=n);let i=null,o=null;for(;t.length&&t.peekType("BRACKET");){const e=t.pop();i=new ga(oa,"",n,r,null,s,o,i),o=e.value,n+=e.text,r="array",s=null}let a=null;if(Xo(t,_o).has("indexed")){if(!e)throw new Error("");a=!0}const c=t.peekType("ID")?t.pop().text:"";if(t.length)throw new Error("leftover tokens");return new ga(oa,c,n,r,a,s,o,i)}const n=t.name;w(!n||"string"==typeof n&&n.match(zo),"invalid name","obj.name",n);let r=t.indexed;null!=r&&(w(e,"parameter cannot be indexed","obj.indexed",t.indexed),r=!!r);let s=t.type,i=s.match(sa);if(i){const e=parseInt(i[2]||"-1"),o=ga.from({type:i[1],components:t.components});return new ga(oa,n||"",s,"array",r,null,e,o)}if("tuple"===s||s.startsWith("tuple(")||s.startsWith("(")){const e=null!=t.components?t.components.map((t=>ga.from(t))):null;return new ga(oa,n||"",s,"tuple",r,e,null,null)}return s=ia(t.type),new ga(oa,n||"",s,s,r,null,null,null)}static isParamType(t){return t&&t[aa]===ca}}class ya{type;inputs;constructor(t,e,n){E(t,oa,"Fragment"),f(this,{type:e,inputs:n=Object.freeze(n.slice())})}static from(t){if("string"==typeof t){try{ya.from(JSON.parse(t))}catch(t){}return ya.from(Wo(t))}if(t instanceof $o){switch(t.peekKeyword(Go)){case"constructor":return va.from(t);case"error":return ba.from(t);case"event":return Aa.from(t);case"fallback":case"receive":return Ea.from(t);case"function":return ka.from(t);case"struct":return Na.from(t)}}else if("object"==typeof t){switch(t.type){case"constructor":return va.from(t);case"error":return ba.from(t);case"event":return Aa.from(t);case"fallback":case"receive":return Ea.from(t);case"function":return ka.from(t);case"struct":return Na.from(t)}m(!1,`unsupported type: ${t.type}`,"UNSUPPORTED_OPERATION",{operation:"Fragment.from"})}w(!1,"unsupported frgament object","obj",t)}static isConstructor(t){return va.isFragment(t)}static isError(t){return ba.isFragment(t)}static isEvent(t){return Aa.isFragment(t)}static isFunction(t){return ka.isFragment(t)}static isStruct(t){return Na.isFragment(t)}}class ma extends ya{name;constructor(t,e,n,r){super(t,e,r),w("string"==typeof n&&n.match(zo),"invalid identifier","name",n),r=Object.freeze(r.slice()),f(this,{name:n})}}function wa(t,e){return"("+e.map((e=>e.format(t))).join("full"===t?", ":",")+")"}class ba extends ma{constructor(t,e,n){super(t,"error",e,n),Object.defineProperty(this,aa,{value:ua})}get selector(){return _s(this.format("sighash")).substring(0,10)}format(t){if(null==t&&(t="sighash"),"json"===t)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return"sighash"!==t&&e.push("error"),e.push(this.name+wa(t,this.inputs)),e.join(" ")}static from(t){if(ba.isFragment(t))return t;if("string"==typeof t)return ba.from(Wo(t));if(t instanceof $o){const e=Zo("error",t),n=ea(t);return ra(t),new ba(oa,e,n)}return new ba(oa,t.name,t.inputs?t.inputs.map(ga.from):[])}static isFragment(t){return t&&t[aa]===ua}}class Aa extends ma{anonymous;constructor(t,e,n,r){super(t,"event",e,n),Object.defineProperty(this,aa,{value:la}),f(this,{anonymous:r})}get topicHash(){return _s(this.format("sighash"))}format(t){if(null==t&&(t="sighash"),"json"===t)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return"sighash"!==t&&e.push("event"),e.push(this.name+wa(t,this.inputs)),"sighash"!==t&&this.anonymous&&e.push("anonymous"),e.join(" ")}static getTopicHash(t,e){e=(e||[]).map((t=>ga.from(t)));return new Aa(oa,t,e,!1).topicHash}static from(t){if(Aa.isFragment(t))return t;if("string"==typeof t)try{return Aa.from(Wo(t))}catch(e){w(!1,"invalid event fragment","obj",t)}else if(t instanceof $o){const e=Zo("event",t),n=ea(t,!0),r=!!Xo(t,Do(["anonymous"])).has("anonymous");return ra(t),new Aa(oa,e,n,r)}return new Aa(oa,t.name,t.inputs?t.inputs.map((t=>ga.from(t,!0))):[],!!t.anonymous)}static isFragment(t){return t&&t[aa]===la}}class va extends ya{payable;gas;constructor(t,e,n,r,s){super(t,e,n),Object.defineProperty(this,aa,{value:ha}),f(this,{payable:r,gas:s})}format(t){if(m(null!=t&&"sighash"!==t,"cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),"json"===t)return JSON.stringify({type:"constructor",stateMutability:this.payable?"payable":"undefined",payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[`constructor${wa(t,this.inputs)}`];return this.payable&&e.push("payable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static from(t){if(va.isFragment(t))return t;if("string"==typeof t)try{return va.from(Wo(t))}catch(e){w(!1,"invalid constuctor fragment","obj",t)}else if(t instanceof $o){Xo(t,Do(["constructor"]));const e=ea(t),n=!!Xo(t,Uo).has("payable"),r=na(t);return ra(t),new va(oa,"constructor",e,n,r)}return new va(oa,"constructor",t.inputs?t.inputs.map(ga.from):[],!!t.payable,null!=t.gas?t.gas:null)}static isFragment(t){return t&&t[aa]===ha}}class Ea extends ya{payable;constructor(t,e,n){super(t,"fallback",e),Object.defineProperty(this,aa,{value:fa}),f(this,{payable:n})}format(t){const e=0===this.inputs.length?"receive":"fallback";if("json"===t){const t=this.payable?"payable":"nonpayable";return JSON.stringify({type:e,stateMutability:t})}return`${e}()${this.payable?" payable":""}`}static from(t){if(Ea.isFragment(t))return t;if("string"==typeof t)try{return Ea.from(Wo(t))}catch(e){w(!1,"invalid fallback fragment","obj",t)}else if(t instanceof $o){const e=t.toString();w(t.peekKeyword(Do(["fallback","receive"])),"type must be fallback or receive","obj",e);if("receive"===t.popKeyword(Do(["fallback","receive"]))){const e=ea(t);return w(0===e.length,"receive cannot have arguments","obj.inputs",e),Xo(t,Do(["payable"])),ra(t),new Ea(oa,[],!0)}let n=ea(t);n.length?w(1===n.length&&"bytes"===n[0].type,"invalid fallback inputs","obj.inputs",n.map((t=>t.format("minimal"))).join(", ")):n=[ga.from("bytes")];const r=ta(t);if(w("nonpayable"===r||"payable"===r,"fallback cannot be constants","obj.stateMutability",r),Xo(t,Do(["returns"])).has("returns")){const e=ea(t);w(1===e.length&&"bytes"===e[0].type,"invalid fallback outputs","obj.outputs",e.map((t=>t.format("minimal"))).join(", "))}return ra(t),new Ea(oa,n,"payable"===r)}if("receive"===t.type)return new Ea(oa,[],!0);if("fallback"===t.type){const e=[ga.from("bytes")],n="payable"===t.stateMutability;return new Ea(oa,e,n)}w(!1,"invalid fallback description","obj",t)}static isFragment(t){return t&&t[aa]===fa}}class ka extends ma{constant;outputs;stateMutability;payable;gas;constructor(t,e,n,r,s,i){super(t,"function",e,r),Object.defineProperty(this,aa,{value:da});f(this,{constant:"view"===n||"pure"===n,gas:i,outputs:s=Object.freeze(s.slice()),payable:"payable"===n,stateMutability:n})}get selector(){return _s(this.format("sighash")).substring(0,10)}format(t){if(null==t&&(t="sighash"),"json"===t)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t)))),outputs:this.outputs.map((e=>JSON.parse(e.format(t))))});const e=[];return"sighash"!==t&&e.push("function"),e.push(this.name+wa(t,this.inputs)),"sighash"!==t&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(wa(t,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static getSelector(t,e){e=(e||[]).map((t=>ga.from(t)));return new ka(oa,t,"view",e,[],null).selector}static from(t){if(ka.isFragment(t))return t;if("string"==typeof t)try{return ka.from(Wo(t))}catch(e){w(!1,"invalid function fragment","obj",t)}else if(t instanceof $o){const e=Zo("function",t),n=ea(t),r=ta(t);let s=[];Xo(t,Do(["returns"])).has("returns")&&(s=ea(t));const i=na(t);return ra(t),new ka(oa,e,r,n,s,i)}let e=t.stateMutability;return null==e&&(e="payable","boolean"==typeof t.constant?(e="view",t.constant||(e="payable","boolean"!=typeof t.payable||t.payable||(e="nonpayable"))):"boolean"!=typeof t.payable||t.payable||(e="nonpayable")),new ka(oa,t.name,e,t.inputs?t.inputs.map(ga.from):[],t.outputs?t.outputs.map(ga.from):[],null!=t.gas?t.gas:null)}static isFragment(t){return t&&t[aa]===da}}class Na extends ma{constructor(t,e,n){super(t,"struct",e,n),Object.defineProperty(this,aa,{value:pa})}format(){throw new Error("@TODO")}static from(t){if("string"==typeof t)try{return Na.from(Wo(t))}catch(e){w(!1,"invalid struct fragment","obj",t)}else if(t instanceof $o){const e=Zo("struct",t),n=ea(t);return ra(t),new Na(oa,e,n)}return new Na(oa,t.name,t.inputs?t.inputs.map(ga.from):[])}static isFragment(t){return t&&t[aa]===pa}}const xa=new Map;xa.set(0,"GENERIC_PANIC"),xa.set(1,"ASSERT_FALSE"),xa.set(17,"OVERFLOW"),xa.set(18,"DIVIDE_BY_ZERO"),xa.set(33,"ENUM_RANGE_ERROR"),xa.set(34,"BAD_STORAGE_DATA"),xa.set(49,"STACK_UNDERFLOW"),xa.set(50,"ARRAY_RANGE_ERROR"),xa.set(65,"OUT_OF_MEMORY"),xa.set(81,"UNINITIALIZED_FUNCTION_CALL");const Ta=new RegExp(/^bytes([0-9]*)$/),Oa=new RegExp(/^(u?int)([0-9]*)$/);let Sa=null,Pa=1024;class Ra{#ct(t){if(t.isArray())return new Ss(this.#ct(t.arrayChildren),t.arrayLength,t.name);if(t.isTuple())return new js(t.components.map((t=>this.#ct(t))),t.name);switch(t.baseType){case"address":return new Ns(t.name);case"bool":return new Ps(t.name);case"string":return new Gs(t.name);case"bytes":return new Is(t.name);case"":return new Ds(t.name)}let e=t.type.match(Oa);if(e){let n=parseInt(e[2]||"256");return w(0!==n&&n<=256&&n%8==0,"invalid "+e[1]+" bit length","param",t),new Ms(n/8,"int"===e[1],t.name)}if(e=t.type.match(Ta),e){let n=parseInt(e[1]);return w(0!==n&&n<=32,"invalid bytes length","param",t),new Cs(n,t.name)}w(!1,"invalid type","type",t.type)}getDefaultValue(t){const e=t.map((t=>this.#ct(ga.from(t))));return new js(e,"_").defaultValue()}encode(t,e){b(e.length,t.length,"types/values length mismatch");const n=t.map((t=>this.#ct(ga.from(t)))),r=new js(n,"_"),s=new _t;return r.encode(s,e),s.data}decode(t,e,n){const r=t.map((t=>this.#ct(ga.from(t))));return new js(r,"_").decode(new Ht(e,n,Pa))}static _setDefaultMaxInflation(t){w("number"==typeof t&&Number.isInteger(t),"invalid defaultMaxInflation factor","value",t),Pa=t}static defaultAbiCoder(){return null==Sa&&(Sa=new Ra),Sa}static getBuiltinCallException(t,e,n){return function(t,e,n,r){let s="missing revert data",i=null,o=null;if(n){s="execution reverted";const t=N(n);if(n=P(n),0===t.length)s+=" (no data present; likely require(false) occurred",i="require(false)";else if(t.length%32!=4)s+=" (could not decode reason; invalid data length)";else if("0x08c379a0"===P(t.slice(0,4)))try{i=r.decode(["string"],t.slice(4))[0],o={signature:"Error(string)",name:"Error",args:[i]},s+=`: ${JSON.stringify(i)}`}catch(t){s+=" (could not decode reason; invalid string data)"}else if("0x4e487b71"===P(t.slice(0,4)))try{const e=Number(r.decode(["uint256"],t.slice(4))[0]);o={signature:"Panic(uint256)",name:"Panic",args:[e]},i=`Panic due to ${xa.get(e)||"UNKNOWN"}(${e})`,s+=`: ${i}`}catch(t){s+=" (could not decode panic code)"}else s+=" (unknown custom error)"}const a={to:e.to?gs(e.to):null,data:e.data||"0x"};return e.from&&(a.from=gs(e.from)),y(s,"CALL_EXCEPTION",{action:t,data:n,reason:i,transaction:a,invocation:null,revert:o})}(t,e,n,Ra.defaultAbiCoder())}}class Ia{fragment;name;signature;topic;args;constructor(t,e,n){const r=t.name,s=t.format();f(this,{fragment:t,name:r,signature:s,topic:e,args:n})}}class Ca{fragment;name;args;signature;selector;value;constructor(t,e,n,r){const s=t.name,i=t.format();f(this,{fragment:t,name:s,args:n,signature:i,selector:e,value:r})}}class Ba{fragment;name;args;signature;selector;constructor(t,e,n){const r=t.name,s=t.format();f(this,{fragment:t,name:r,args:n,signature:s,selector:e})}}class Da{hash;_isIndexed;static isIndexed(t){return!(!t||!t._isIndexed)}constructor(t){f(this,{hash:t,_isIndexed:!0})}}const Ua={0:"generic panic",1:"assert(false)",17:"arithmetic overflow",18:"division or modulo by zero",33:"enum overflow",34:"invalid encoded storage byte array accessed",49:"out-of-bounds array access; popping on an empty array",50:"out-of-bounds access of an array or bytesN",65:"out of memory",81:"uninitialized function"},La={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:t=>`reverted with reason string ${JSON.stringify(t)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:t=>{let e="unknown panic code";return t>=0&&t<=255&&Ua[t.toString()]&&(e=Ua[t.toString()]),`reverted with panic code 0x${t.toString(16)} (${e})`}}};class Fa{fragments;deploy;fallback;receive;#ut;#lt;#ht;#ft;constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,this.#ht=new Map,this.#ut=new Map,this.#lt=new Map;const n=[];for(const t of e)try{n.push(ya.from(t))}catch(e){console.log(`[Warning] Invalid Fragment ${JSON.stringify(t)}:`,e.message)}f(this,{fragments:Object.freeze(n)});let r=null,s=!1;this.#ft=this.getAbiCoder(),this.fragments.forEach(((t,e)=>{let n;switch(t.type){case"constructor":return this.deploy?void console.log("duplicate definition - constructor"):void f(this,{deploy:t});case"fallback":return void(0===t.inputs.length?s=!0:(w(!r||t.payable!==r.payable,"conflicting fallback fragments",`fragments[${e}]`,t),r=t,s=r.payable));case"function":n=this.#ht;break;case"event":n=this.#lt;break;case"error":n=this.#ut;break;default:return}const i=t.format();n.has(i)||n.set(i,t)})),this.deploy||f(this,{deploy:va.from("constructor()")}),f(this,{fallback:r,receive:s})}format(t){const e=t?"minimal":"full",n=this.fragments.map((t=>t.format(e)));return n}formatJson(){const t=this.fragments.map((t=>t.format("json")));return JSON.stringify(t.map((t=>JSON.parse(t))))}getAbiCoder(){return Ra.defaultAbiCoder()}#dt(t,e,n){if(T(t)){const e=t.toLowerCase();for(const t of this.#ht.values())if(e===t.selector)return t;return null}if(-1===t.indexOf("(")){const r=[];for(const[e,n]of this.#ht)e.split("(")[0]===t&&r.push(n);if(e){const t=e.length>0?e[e.length-1]:null;let n=e.length,s=!0;ks.isTyped(t)&&"overrides"===t.type&&(s=!1,n--);for(let t=r.length-1;t>=0;t--){const e=r[t].inputs.length;e===n||s&&e===n-1||r.splice(t,1)}for(let t=r.length-1;t>=0;t--){const n=r[t].inputs;for(let s=0;s<e.length;s++)if(ks.isTyped(e[s])){if(s>=n.length){if("overrides"===e[s].type)continue;r.splice(t,1);break}if(e[s].type!==n[s].baseType){r.splice(t,1);break}}}}if(1===r.length&&e&&e.length!==r[0].inputs.length){const t=e[e.length-1];(null==t||Array.isArray(t)||"object"!=typeof t)&&r.splice(0,1)}if(0===r.length)return null;if(r.length>1&&n){w(!1,`ambiguous function description (i.e. matches ${r.map((t=>JSON.stringify(t.format()))).join(", ")})`,"key",t)}return r[0]}const r=this.#ht.get(ka.from(t).format());return r||null}getFunctionName(t){const e=this.#dt(t,null,!1);return w(e,"no matching function","key",t),e.name}hasFunction(t){return!!this.#dt(t,null,!1)}getFunction(t,e){return this.#dt(t,e||null,!0)}forEachFunction(t){const e=Array.from(this.#ht.keys());e.sort(((t,e)=>t.localeCompare(e)));for(let n=0;n<e.length;n++){const r=e[n];t(this.#ht.get(r),n)}}#pt(t,e,n){if(T(t)){const e=t.toLowerCase();for(const t of this.#lt.values())if(e===t.topicHash)return t;return null}if(-1===t.indexOf("(")){const r=[];for(const[e,n]of this.#lt)e.split("(")[0]===t&&r.push(n);if(e){for(let t=r.length-1;t>=0;t--)r[t].inputs.length<e.length&&r.splice(t,1);for(let t=r.length-1;t>=0;t--){const n=r[t].inputs;for(let s=0;s<e.length;s++)if(ks.isTyped(e[s])&&e[s].type!==n[s].baseType){r.splice(t,1);break}}}if(0===r.length)return null;if(r.length>1&&n){w(!1,`ambiguous event description (i.e. matches ${r.map((t=>JSON.stringify(t.format()))).join(", ")})`,"key",t)}return r[0]}const r=this.#lt.get(Aa.from(t).format());return r||null}getEventName(t){const e=this.#pt(t,null,!1);return w(e,"no matching event","key",t),e.name}hasEvent(t){return!!this.#pt(t,null,!1)}getEvent(t,e){return this.#pt(t,e||null,!0)}forEachEvent(t){const e=Array.from(this.#lt.keys());e.sort(((t,e)=>t.localeCompare(e)));for(let n=0;n<e.length;n++){const r=e[n];t(this.#lt.get(r),n)}}getError(t,e){if(T(t)){const e=t.toLowerCase();if(La[e])return ba.from(La[e].signature);for(const t of this.#ut.values())if(e===t.selector)return t;return null}if(-1===t.indexOf("(")){const e=[];for(const[n,r]of this.#ut)n.split("(")[0]===t&&e.push(r);if(0===e.length)return"Error"===t?ba.from("error Error(string)"):"Panic"===t?ba.from("error Panic(uint256)"):null;if(e.length>1){w(!1,`ambiguous error description (i.e. ${e.map((t=>JSON.stringify(t.format()))).join(", ")})`,"name",t)}return e[0]}if("Error(string)"===(t=ba.from(t).format()))return ba.from("error Error(string)");if("Panic(uint256)"===t)return ba.from("error Panic(uint256)");const n=this.#ut.get(t);return n||null}forEachError(t){const e=Array.from(this.#ut.keys());e.sort(((t,e)=>t.localeCompare(e)));for(let n=0;n<e.length;n++){const r=e[n];t(this.#ut.get(r),n)}}_decodeParams(t,e){return this.#ft.decode(t,e)}_encodeParams(t,e){return this.#ft.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){if("string"==typeof t){const e=this.getError(t);w(e,"unknown error","fragment",t),t=e}return w(C(e,0,4)===t.selector,`data signature does not match error ${t.name}.`,"data",e),this._decodeParams(t.inputs,C(e,4))}encodeErrorResult(t,e){if("string"==typeof t){const e=this.getError(t);w(e,"unknown error","fragment",t),t=e}return R([t.selector,this._encodeParams(t.inputs,e||[])])}decodeFunctionData(t,e){if("string"==typeof t){const e=this.getFunction(t);w(e,"unknown function","fragment",t),t=e}return w(C(e,0,4)===t.selector,`data signature does not match function ${t.name}.`,"data",e),this._decodeParams(t.inputs,C(e,4))}encodeFunctionData(t,e){if("string"==typeof t){const e=this.getFunction(t);w(e,"unknown function","fragment",t),t=e}return R([t.selector,this._encodeParams(t.inputs,e||[])])}decodeFunctionResult(t,e){if("string"==typeof t){const e=this.getFunction(t);w(e,"unknown function","fragment",t),t=e}let n="invalid length for result data";const r=x(e);if(r.length%32==0)try{return this.#ft.decode(t.outputs,r)}catch(t){n="could not decode result data"}m(!1,n,"BAD_DATA",{value:P(r),info:{method:t.name,signature:t.format()}})}makeError(t,e){const n=N(t,"data"),r=Ra.getBuiltinCallException("call",e,n);if(r.message.startsWith("execution reverted (unknown custom error)")){const t=P(n.slice(0,4)),e=this.getError(t);if(e)try{const t=this.#ft.decode(e.inputs,n.slice(4));r.revert={name:e.name,signature:e.format(),args:t},r.reason=r.revert.signature,r.message=`execution reverted: ${r.reason}`}catch(t){r.message="execution reverted (coult not decode custom error)"}}const s=this.parseTransaction(e);return s&&(r.invocation={method:s.name,signature:s.signature,args:s.args}),r}encodeFunctionResult(t,e){if("string"==typeof t){const e=this.getFunction(t);w(e,"unknown function","fragment",t),t=e}return P(this.#ft.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){if("string"==typeof t){const e=this.getEvent(t);w(e,"unknown event","eventFragment",t),t=e}m(e.length<=t.inputs.length,`too many arguments for ${t.format()}`,"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:t.inputs.length});const n=[];t.anonymous||n.push(t.topicHash);const r=(t,e)=>"string"===t.type?_s(e):"bytes"===t.type?sn(P(e)):("bool"===t.type&&"boolean"==typeof e?e=e?"0x01":"0x00":t.type.match(/^u?int/)?e=Q(e):t.type.match(/^bytes/)?e=B(e,32,!1):"address"===t.type&&this.#ft.encode(["address"],[e]),D(P(e),32));for(e.forEach(((e,s)=>{const i=t.inputs[s];i.indexed?null==e?n.push(null):"array"===i.baseType||"tuple"===i.baseType?w(!1,"filtering with tuples or arrays not supported","contract."+i.name,e):Array.isArray(e)?n.push(e.map((t=>r(i,t)))):n.push(r(i,e)):w(null==e,"cannot filter non-indexed parameters; must be null","contract."+i.name,e)}));n.length&&null===n[n.length-1];)n.pop();return n}encodeEventLog(t,e){if("string"==typeof t){const e=this.getEvent(t);w(e,"unknown event","eventFragment",t),t=e}const n=[],r=[],s=[];return t.anonymous||n.push(t.topicHash),w(e.length===t.inputs.length,"event arguments/values mismatch","values",e),t.inputs.forEach(((t,i)=>{const o=e[i];if(t.indexed)if("string"===t.type)n.push(_s(o));else if("bytes"===t.type)n.push(sn(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");n.push(this.#ft.encode([t.type],[o]))}else r.push(t),s.push(o)})),{data:this.#ft.encode(r,s),topics:n}}decodeEventLog(t,e,n){if("string"==typeof t){const e=this.getEvent(t);w(e,"unknown event","eventFragment",t),t=e}if(null!=n&&!t.anonymous){const e=t.topicHash;w(T(n[0],32)&&n[0].toLowerCase()===e,"fragment/topic mismatch","topics[0]",n[0]),n=n.slice(1)}const r=[],s=[],i=[];t.inputs.forEach(((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(r.push(ga.from({type:"bytes32",name:t.name})),i.push(!0)):(r.push(t),i.push(!1)):(s.push(t),i.push(!1))}));const o=null!=n?this.#ft.decode(r,R(n)):null,a=this.#ft.decode(s,e,!0),c=[],u=[];let l=0,h=0;return t.inputs.forEach(((t,e)=>{let n=null;if(t.indexed)if(null==o)n=new Da(null);else if(i[e])n=new Da(o[h++]);else try{n=o[h++]}catch(t){n=t}else try{n=a[l++]}catch(t){n=t}c.push(n),u.push(t.name||null)})),Mt.fromItems(c,u)}parseTransaction(t){const e=N(t.data,"tx.data"),n=j(null!=t.value?t.value:0,"tx.value"),r=this.getFunction(P(e.slice(0,4)));if(!r)return null;const s=this.#ft.decode(r.inputs,e.slice(4));return new Ca(r,r.selector,s,n)}parseCallResult(t){throw new Error("@TODO")}parseLog(t){const e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new Ia(e,e.topicHash,this.decodeEventLog(e,t.data,t.topics))}parseError(t){const e=P(t),n=this.getError(C(e,0,4));if(!n)return null;const r=this.#ft.decode(n.inputs,C(e,4));return new Ba(n,n.selector,r)}static from(t){return t instanceof Fa?t:"string"==typeof t?new Fa(JSON.parse(t)):"function"==typeof t.formatJson?new Fa(t.formatJson()):"function"==typeof t.format?new Fa(t.format("json")):new Fa(t)}}const Ma=BigInt(0);function Ga(t){return null==t?null:t}function ja(t){return null==t?null:t.toString()}class _a{gasPrice;maxFeePerGas;maxPriorityFeePerGas;constructor(t,e,n){f(this,{gasPrice:Ga(t),maxFeePerGas:Ga(e),maxPriorityFeePerGas:Ga(n)})}toJSON(){const{gasPrice:t,maxFeePerGas:e,maxPriorityFeePerGas:n}=this;return{_type:"FeeData",gasPrice:ja(t),maxFeePerGas:ja(e),maxPriorityFeePerGas:ja(n)}}}function Ha(t){const e={};t.to&&(e.to=t.to),t.from&&(e.from=t.from),t.data&&(e.data=P(t.data));const n="chainId,gasLimit,gasPrice,maxFeePerBlobGas,maxFeePerGas,maxPriorityFeePerGas,value".split(/,/);for(const r of n)r in t&&null!=t[r]&&(e[r]=j(t[r],`request.${r}`));const r="type,nonce".split(/,/);for(const n of r)n in t&&null!=t[n]&&(e[n]=V(t[n],`request.${n}`));return t.accessList&&(e.accessList=Yi(t.accessList)),"blockTag"in t&&(e.blockTag=t.blockTag),"enableCcipRead"in t&&(e.enableCcipRead=!!t.enableCcipRead),"customData"in t&&(e.customData=t.customData),"blobVersionedHashes"in t&&t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes.slice()),"kzg"in t&&(e.kzg=t.kzg),"blobs"in t&&t.blobs&&(e.blobs=t.blobs.map((t=>O(t)?P(t):Object.assign({},t)))),e}class Ka{provider;number;hash;timestamp;parentHash;parentBeaconBlockRoot;nonce;difficulty;gasLimit;gasUsed;stateRoot;receiptsRoot;blobGasUsed;excessBlobGas;miner;prevRandao;extraData;baseFeePerGas;#gt;constructor(t,e){this.#gt=t.transactions.map((t=>"string"!=typeof t?new Ja(t,e):t)),f(this,{provider:e,hash:Ga(t.hash),number:t.number,timestamp:t.timestamp,parentHash:t.parentHash,parentBeaconBlockRoot:t.parentBeaconBlockRoot,nonce:t.nonce,difficulty:t.difficulty,gasLimit:t.gasLimit,gasUsed:t.gasUsed,blobGasUsed:t.blobGasUsed,excessBlobGas:t.excessBlobGas,miner:t.miner,prevRandao:Ga(t.prevRandao),extraData:t.extraData,baseFeePerGas:Ga(t.baseFeePerGas),stateRoot:t.stateRoot,receiptsRoot:t.receiptsRoot})}get transactions(){return this.#gt.map((t=>"string"==typeof t?t:t.hash))}get prefetchedTransactions(){const t=this.#gt.slice();return 0===t.length?[]:(m("object"==typeof t[0],"transactions were not prefetched with block request","UNSUPPORTED_OPERATION",{operation:"transactionResponses()"}),t)}toJSON(){const{baseFeePerGas:t,difficulty:e,extraData:n,gasLimit:r,gasUsed:s,hash:i,miner:o,prevRandao:a,nonce:c,number:u,parentHash:l,parentBeaconBlockRoot:h,stateRoot:f,receiptsRoot:d,timestamp:p,transactions:g}=this;return{_type:"Block",baseFeePerGas:ja(t),difficulty:ja(e),extraData:n,gasLimit:ja(r),gasUsed:ja(s),blobGasUsed:ja(this.blobGasUsed),excessBlobGas:ja(this.excessBlobGas),hash:i,miner:o,prevRandao:a,nonce:c,number:u,parentHash:l,timestamp:p,parentBeaconBlockRoot:h,stateRoot:f,receiptsRoot:d,transactions:g}}[Symbol.iterator](){let t=0;const e=this.transactions;return{next:()=>t<this.length?{value:e[t++],done:!1}:{value:void 0,done:!0}}}get length(){return this.#gt.length}get date(){return null==this.timestamp?null:new Date(1e3*this.timestamp)}async getTransaction(t){let e;if("number"==typeof t)e=this.#gt[t];else{const n=t.toLowerCase();for(const t of this.#gt){if("string"==typeof t){if(t!==n)continue;e=t;break}if(t.hash!==n){e=t;break}}}if(null==e)throw new Error("no such tx");return"string"==typeof e?await this.provider.getTransaction(e):e}getPrefetchedTransaction(t){const e=this.prefetchedTransactions;if("number"==typeof t)return e[t];t=t.toLowerCase();for(const n of e)if(n.hash===t)return n;w(!1,"no matching transaction","indexOrHash",t)}isMined(){return!!this.hash}isLondon(){return!!this.baseFeePerGas}orphanedEvent(){if(!this.isMined())throw new Error("");return{orphan:"drop-block",hash:(t=this).hash,number:t.number};var t}}class Va{provider;transactionHash;blockHash;blockNumber;removed;address;data;topics;index;transactionIndex;constructor(t,e){this.provider=e;const n=Object.freeze(t.topics.slice());f(this,{transactionHash:t.transactionHash,blockHash:t.blockHash,blockNumber:t.blockNumber,removed:t.removed,address:t.address,data:t.data,topics:n,index:t.index,transactionIndex:t.transactionIndex})}toJSON(){const{address:t,blockHash:e,blockNumber:n,data:r,index:s,removed:i,topics:o,transactionHash:a,transactionIndex:c}=this;return{_type:"log",address:t,blockHash:e,blockNumber:n,data:r,index:s,removed:i,topics:o,transactionHash:a,transactionIndex:c}}async getBlock(){const t=await this.provider.getBlock(this.blockHash);return m(!!t,"failed to find transaction","UNKNOWN_ERROR",{}),t}async getTransaction(){const t=await this.provider.getTransaction(this.transactionHash);return m(!!t,"failed to find transaction","UNKNOWN_ERROR",{}),t}async getTransactionReceipt(){const t=await this.provider.getTransactionReceipt(this.transactionHash);return m(!!t,"failed to find transaction receipt","UNKNOWN_ERROR",{}),t}removedEvent(){return{orphan:"drop-log",log:{transactionHash:(t=this).transactionHash,blockHash:t.blockHash,blockNumber:t.blockNumber,address:t.address,data:t.data,topics:Object.freeze(t.topics.slice()),index:t.index}};var t}}class Qa{provider;to;from;contractAddress;hash;index;blockHash;blockNumber;logsBloom;gasUsed;blobGasUsed;cumulativeGasUsed;gasPrice;blobGasPrice;type;status;root;#yt;constructor(t,e){this.#yt=Object.freeze(t.logs.map((t=>new Va(t,e))));let n=Ma;null!=t.effectiveGasPrice?n=t.effectiveGasPrice:null!=t.gasPrice&&(n=t.gasPrice),f(this,{provider:e,to:t.to,from:t.from,contractAddress:t.contractAddress,hash:t.hash,index:t.index,blockHash:t.blockHash,blockNumber:t.blockNumber,logsBloom:t.logsBloom,gasUsed:t.gasUsed,cumulativeGasUsed:t.cumulativeGasUsed,blobGasUsed:t.blobGasUsed,gasPrice:n,blobGasPrice:t.blobGasPrice,type:t.type,status:t.status,root:t.root})}get logs(){return this.#yt}toJSON(){const{to:t,from:e,contractAddress:n,hash:r,index:s,blockHash:i,blockNumber:o,logsBloom:a,logs:c,status:u,root:l}=this;return{_type:"TransactionReceipt",blockHash:i,blockNumber:o,contractAddress:n,cumulativeGasUsed:ja(this.cumulativeGasUsed),from:e,gasPrice:ja(this.gasPrice),blobGasUsed:ja(this.blobGasUsed),blobGasPrice:ja(this.blobGasPrice),gasUsed:ja(this.gasUsed),hash:r,index:s,logs:c,logsBloom:a,root:l,status:u,to:t}}get length(){return this.logs.length}[Symbol.iterator](){let t=0;return{next:()=>t<this.length?{value:this.logs[t++],done:!1}:{value:void 0,done:!0}}}get fee(){return this.gasUsed*this.gasPrice}async getBlock(){const t=await this.provider.getBlock(this.blockHash);if(null==t)throw new Error("TODO");return t}async getTransaction(){const t=await this.provider.getTransaction(this.hash);if(null==t)throw new Error("TODO");return t}async getResult(){return await this.provider.getTransactionResult(this.hash)}async confirmations(){return await this.provider.getBlockNumber()-this.blockNumber+1}removedEvent(){return qa(this)}reorderedEvent(t){return m(!t||t.isMined(),"unmined 'other' transction cannot be orphaned","UNSUPPORTED_OPERATION",{operation:"reorderedEvent(other)"}),za(this,t)}}class Ja{provider;blockNumber;blockHash;index;hash;type;to;from;nonce;gasLimit;gasPrice;maxPriorityFeePerGas;maxFeePerGas;maxFeePerBlobGas;data;value;chainId;signature;accessList;blobVersionedHashes;#mt;constructor(t,e){this.provider=e,this.blockNumber=null!=t.blockNumber?t.blockNumber:null,this.blockHash=null!=t.blockHash?t.blockHash:null,this.hash=t.hash,this.index=t.index,this.type=t.type,this.from=t.from,this.to=t.to||null,this.gasLimit=t.gasLimit,this.nonce=t.nonce,this.data=t.data,this.value=t.value,this.gasPrice=t.gasPrice,this.maxPriorityFeePerGas=null!=t.maxPriorityFeePerGas?t.maxPriorityFeePerGas:null,this.maxFeePerGas=null!=t.maxFeePerGas?t.maxFeePerGas:null,this.maxFeePerBlobGas=null!=t.maxFeePerBlobGas?t.maxFeePerBlobGas:null,this.chainId=t.chainId,this.signature=t.signature,this.accessList=null!=t.accessList?t.accessList:null,this.blobVersionedHashes=null!=t.blobVersionedHashes?t.blobVersionedHashes:null,this.#mt=-1}toJSON(){const{blockNumber:t,blockHash:e,index:n,hash:r,type:s,to:i,from:o,nonce:a,data:c,signature:u,accessList:l,blobVersionedHashes:h}=this;return{_type:"TransactionResponse",accessList:l,blockNumber:t,blockHash:e,blobVersionedHashes:h,chainId:ja(this.chainId),data:c,from:o,gasLimit:ja(this.gasLimit),gasPrice:ja(this.gasPrice),hash:r,maxFeePerGas:ja(this.maxFeePerGas),maxPriorityFeePerGas:ja(this.maxPriorityFeePerGas),maxFeePerBlobGas:ja(this.maxFeePerBlobGas),nonce:a,signature:u,to:i,index:n,type:s,value:ja(this.value)}}async getBlock(){let t=this.blockNumber;if(null==t){const e=await this.getTransaction();e&&(t=e.blockNumber)}if(null==t)return null;const e=this.provider.getBlock(t);if(null==e)throw new Error("TODO");return e}async getTransaction(){return this.provider.getTransaction(this.hash)}async confirmations(){if(null==this.blockNumber){const{tx:t,blockNumber:e}=await h({tx:this.getTransaction(),blockNumber:this.provider.getBlockNumber()});return null==t||null==t.blockNumber?0:e-t.blockNumber+1}return await this.provider.getBlockNumber()-this.blockNumber+1}async wait(t,e){const n=null==t?1:t,r=null==e?0:e;let s=this.#mt,i=-1,o=-1===s;const a=async()=>{if(o)return null;const{blockNumber:t,nonce:e}=await h({blockNumber:this.provider.getBlockNumber(),nonce:this.provider.getTransactionCount(this.from)});if(e<this.nonce)return void(s=t);if(o)return null;const r=await this.getTransaction();if(!r||null==r.blockNumber)for(-1===i&&(i=s-3,i<this.#mt&&(i=this.#mt));i<=t;){if(o)return null;const e=await this.provider.getBlock(i,!0);if(null==e)return;for(const t of e)if(t===this.hash)return;for(let r=0;r<e.length;r++){const i=await e.getTransaction(r);if(i.from===this.from&&i.nonce===this.nonce){if(o)return null;const e=await this.provider.getTransactionReceipt(i.hash);if(null==e)return;if(t-e.blockNumber+1<n)return;let r="replaced";i.data===this.data&&i.to===this.to&&i.value===this.value?r="repriced":"0x"===i.data&&i.from===i.to&&i.value===Ma&&(r="cancelled"),m(!1,"transaction was replaced","TRANSACTION_REPLACED",{cancelled:"replaced"===r||"cancelled"===r,reason:r,replacement:i.replaceableTransaction(s),hash:i.hash,receipt:e})}}i++}},c=t=>{if(null==t||0!==t.status)return t;m(!1,"transaction execution reverted","CALL_EXCEPTION",{action:"sendTransaction",data:null,reason:null,invocation:null,revert:null,transaction:{to:t.to,from:t.from,data:""},receipt:t})},u=await this.provider.getTransactionReceipt(this.hash);if(0===n)return c(u);if(u){if(await u.confirmations()>=n)return c(u)}else if(await a(),0===n)return null;const l=new Promise(((t,e)=>{const i=[],u=()=>{i.forEach((t=>t()))};if(i.push((()=>{o=!0})),r>0){const t=setTimeout((()=>{u(),e(y("wait for transaction timeout","TIMEOUT"))}),r);i.push((()=>{clearTimeout(t)}))}const l=async r=>{if(await r.confirmations()>=n){u();try{t(c(r))}catch(t){e(t)}}};if(i.push((()=>{this.provider.off(this.hash,l)})),this.provider.on(this.hash,l),s>=0){const t=async()=>{try{await a()}catch(t){if(p(t,"TRANSACTION_REPLACED"))return u(),void e(t)}o||this.provider.once("block",t)};i.push((()=>{this.provider.off("block",t)})),this.provider.once("block",t)}}));return await l}isMined(){return null!=this.blockHash}isLegacy(){return 0===this.type}isBerlin(){return 1===this.type}isLondon(){return 2===this.type}isCancun(){return 3===this.type}removedEvent(){return m(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),qa(this)}reorderedEvent(t){return m(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),m(!t||t.isMined(),"unmined 'other' transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),za(this,t)}replaceableTransaction(t){w(Number.isInteger(t)&&t>=0,"invalid startBlock","startBlock",t);const e=new Ja(this,this.provider);return e.#mt=t,e}}function za(t,e){return{orphan:"reorder-transaction",tx:t,other:e}}function qa(t){return{orphan:"drop-transaction",tx:t}}class $a extends Va{interface;fragment;args;constructor(t,e,n){super(t,t.provider);f(this,{args:e.decodeEventLog(n,t.data,t.topics),fragment:n,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}class Wa extends Va{error;constructor(t,e){super(t,t.provider),f(this,{error:e})}}class Ya extends Qa{#wt;constructor(t,e,n){super(n,e),this.#wt=t}get logs(){return super.logs.map((t=>{const e=t.topics.length?this.#wt.getEvent(t.topics[0]):null;if(e)try{return new $a(t,this.#wt,e)}catch(e){return new Wa(t,e)}return t}))}}class Za extends Ja{#wt;constructor(t,e,n){super(n,e),this.#wt=t}async wait(t,e){const n=await super.wait(t,e);return null==n?null:new Ya(this.#wt,this.provider,n)}}class Xa extends tt{log;constructor(t,e,n,r){super(t,e,n),f(this,{log:r})}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}}class tc extends Xa{constructor(t,e,n,r,s){super(t,e,n,new $a(s,t.interface,r));f(this,{args:t.interface.decodeEventLog(r,this.log.data,this.log.topics),fragment:r})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}const ec=BigInt(0);function nc(t){return t&&"function"==typeof t.call}function rc(t){return t&&"function"==typeof t.estimateGas}function sc(t){return t&&"function"==typeof t.resolveName}function ic(t){return t&&"function"==typeof t.sendTransaction}function oc(t){if(null!=t){if(sc(t))return t;if(t.provider)return t.provider}}class ac{#bt;fragment;constructor(t,e,n){if(f(this,{fragment:e}),e.inputs.length<n.length)throw new Error("too many arguments");const r=cc(t.runner,"resolveName"),s=sc(r)?r:null;this.#bt=async function(){const r=await Promise.all(e.inputs.map(((t,e)=>null==n[e]?null:t.walkAsync(n[e],((t,e)=>"address"===t?Array.isArray(e)?Promise.all(e.map((t=>ws(t,s)))):ws(e,s):e)))));return t.interface.encodeFilterTopics(e,r)}()}getTopicFilter(){return this.#bt}}function cc(t,e){return null==t?null:"function"==typeof t[e]?t:t.provider&&"function"==typeof t.provider[e]?t.provider:null}function uc(t){return null==t?null:t.provider||null}async function lc(t,e){const n=ks.dereference(t,"overrides");w("object"==typeof n,"invalid overrides parameter","overrides",t);const r=Ha(n);return w(null==r.to||(e||[]).indexOf("to")>=0,"cannot override to","overrides.to",r.to),w(null==r.data||(e||[]).indexOf("data")>=0,"cannot override data","overrides.data",r.data),r.from&&(r.from=r.from),r}function hc(t){const e=async function(e){const n=await lc(e,["data"]);n.to=await t.getAddress(),n.from&&(n.from=await ws(n.from,oc(t.runner)));const r=t.interface,s=j(n.value||ec,"overrides.value")===ec,i="0x"===(n.data||"0x");!r.fallback||r.fallback.payable||!r.receive||i||s||w(!1,"cannot send data to receive or send value to non-payable fallback","overrides",e),w(r.fallback||i,"cannot send data to receive-only contract","overrides.data",n.data);return w(r.receive||r.fallback&&r.fallback.payable||s,"cannot send value to non-payable fallback","overrides.value",n.value),w(r.fallback||i,"cannot send data to receive-only contract","overrides.data",n.data),n},n=async function(n){const r=t.runner;m(ic(r),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const s=await r.sendTransaction(await e(n)),i=uc(t.runner);return new Za(t.interface,i,s)},r=async t=>await n(t);return f(r,{_contract:t,estimateGas:async function(n){const r=cc(t.runner,"estimateGas");return m(rc(r),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await r.estimateGas(await e(n))},populateTransaction:e,send:n,staticCall:async function(n){const r=cc(t.runner,"call");m(nc(r),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const s=await e(n);try{return await r.call(s)}catch(e){if(g(e)&&e.data)throw t.interface.makeError(e.data,s);throw e}}}),r}function fc(t,e){const n=function(...n){const r=t.interface.getFunction(e,n);return m(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:n}}),r},r=async function(...e){const r=n(...e);let s={};if(r.inputs.length+1===e.length&&(s=await lc(e.pop()),s.from&&(s.from=await ws(s.from,oc(t.runner)))),r.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const i=await async function(t,e,n){const r=cc(t,"resolveName"),s=sc(r)?r:null;return await Promise.all(e.map(((t,e)=>t.walkAsync(n[e],((t,e)=>(e=ks.dereference(e,t),"address"===t?ws(e,s):e))))))}(t.runner,r.inputs,e);return Object.assign({},s,await h({to:t.getAddress(),data:t.interface.encodeFunctionData(r,i)}))},s=async function(...t){const e=await o(...t);return 1===e.length?e[0]:e},i=async function(...e){const n=t.runner;m(ic(n),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const s=await n.sendTransaction(await r(...e)),i=uc(t.runner);return new Za(t.interface,i,s)},o=async function(...e){const s=cc(t.runner,"call");m(nc(s),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const i=await r(...e);let o="0x";try{o=await s.call(i)}catch(e){if(g(e)&&e.data)throw t.interface.makeError(e.data,i);throw e}const a=n(...e);return t.interface.decodeFunctionResult(a,o)},a=async(...t)=>n(...t).constant?await s(...t):await i(...t);return f(a,{name:t.interface.getFunctionName(e),_contract:t,_key:e,getFragment:n,estimateGas:async function(...e){const n=cc(t.runner,"estimateGas");return m(rc(n),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await n.estimateGas(await r(...e))},populateTransaction:r,send:i,staticCall:s,staticCallResult:o}),Object.defineProperty(a,"fragment",{configurable:!1,enumerable:!0,get:()=>{const n=t.interface.getFunction(e);return m(n,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),n}}),a}const dc=Symbol.for("_ethersInternal_contract"),pc=new WeakMap;function gc(t){return pc.get(t[dc])}async function yc(t,e){let n,r=null;if(Array.isArray(e)){const r=function(e){if(T(e,32))return e;const n=t.interface.getEvent(e);return w(n,"unknown fragment","name",e),n.topicHash};n=e.map((t=>null==t?null:Array.isArray(t)?t.map(r):r(t)))}else"*"===e?n=[null]:"string"==typeof e?T(e,32)?n=[e]:(r=t.interface.getEvent(e),w(r,"unknown fragment","event",e),n=[r.topicHash]):(s=e)&&"object"==typeof s&&"getTopicFilter"in s&&"function"==typeof s.getTopicFilter&&s.fragment?n=await e.getTopicFilter():"fragment"in e?(r=e.fragment,n=[r.topicHash]):w(!1,"unknown event name","event",e);var s;n=n.map((t=>{if(null==t)return null;if(Array.isArray(t)){const e=Array.from(new Set(t.map((t=>t.toLowerCase()))).values());return 1===e.length?e[0]:(e.sort(),e)}return t.toLowerCase()}));return{fragment:r,tag:n.map((t=>null==t?"null":Array.isArray(t)?t.join("|"):t)).join("&"),topics:n}}async function mc(t,e){const{subs:n}=gc(t);return n.get((await yc(t,e)).tag)||null}async function wc(t,e,n){const r=uc(t.runner);m(r,"contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:e});const{fragment:s,tag:i,topics:o}=await yc(t,n),{addr:a,subs:c}=gc(t);let u=c.get(i);if(!u){const e={address:a||t,topics:o},l=e=>{let r=s;if(null==r)try{r=t.interface.getEvent(e.topics[0])}catch(t){}if(r){const i=r,o=s?t.interface.decodeEventLog(s,e.data,e.topics):[];Ac(t,n,o,(r=>new tc(t,r,n,i,e)))}else Ac(t,n,[],(r=>new Xa(t,r,n,e)))};let h=[];u={tag:i,listeners:[],start:()=>{h.length||h.push(r.on(e,l))},stop:async()=>{if(0==h.length)return;let t=h;h=[],await Promise.all(t),r.off(e,l)}},c.set(i,u)}return u}let bc=Promise.resolve();async function Ac(t,e,n,r){try{await bc}catch(t){}const s=async function(t,e,n,r){await bc;const s=await mc(t,e);if(!s)return!1;const i=s.listeners.length;return s.listeners=s.listeners.filter((({listener:e,once:s})=>{const i=Array.from(n);r&&i.push(r(s?null:e));try{e.call(t,...i)}catch(t){}return!s})),0===s.listeners.length&&(s.stop(),gc(t).subs.delete(s.tag)),i>0}(t,e,n,r);return bc=s,await s}const vc=["then"];class Ec{target;interface;runner;filters;[dc];fallback;constructor(t,e,n,r){w("string"==typeof t||ys(t),"invalid value for Contract target","target",t),null==n&&(n=null);const s=Fa.from(e);let i;f(this,{target:t,runner:n,interface:s}),Object.defineProperty(this,dc,{value:{}});let o=null,a=null;if(r){const t=uc(n);a=new Za(this.interface,t,r)}let c=new Map;if("string"==typeof t)if(T(t))o=t,i=Promise.resolve(t);else{const e=cc(n,"resolveName");if(!sc(e))throw y("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});i=e.resolveName(t).then((e=>{if(null==e)throw y("an ENS name used for a contract target must be correctly configured","UNCONFIGURED_NAME",{value:t});return gc(this).addr=e,e}))}else i=t.getAddress().then((t=>{if(null==t)throw new Error("TODO");return gc(this).addr=t,t}));var u,l;u=this,l={addrPromise:i,addr:o,deployTx:a,subs:c},pc.set(u[dc],l);const h=new Proxy({},{get:(t,e,n)=>{if("symbol"==typeof e||vc.indexOf(e)>=0)return Reflect.get(t,e,n);try{return this.getEvent(e)}catch(t){if(!p(t,"INVALID_ARGUMENT")||"key"!==t.argument)throw t}},has:(t,e)=>vc.indexOf(e)>=0?Reflect.has(t,e):Reflect.has(t,e)||this.interface.hasEvent(String(e))});return f(this,{filters:h}),f(this,{fallback:s.receive||s.fallback?hc(this):null}),new Proxy(this,{get:(t,e,n)=>{if("symbol"==typeof e||e in t||vc.indexOf(e)>=0)return Reflect.get(t,e,n);try{return t.getFunction(e)}catch(t){if(!p(t,"INVALID_ARGUMENT")||"key"!==t.argument)throw t}},has:(t,e)=>"symbol"==typeof e||e in t||vc.indexOf(e)>=0?Reflect.has(t,e):t.interface.hasFunction(e)})}connect(t){return new Ec(this.target,this.interface,t)}attach(t){return new Ec(t,this.interface,this.runner)}async getAddress(){return await gc(this).addrPromise}async getDeployedCode(){const t=uc(this.runner);m(t,"runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});const e=await t.getCode(await this.getAddress());return"0x"===e?null:e}async waitForDeployment(){const t=this.deploymentTransaction();if(t)return await t.wait(),this;if(null!=await this.getDeployedCode())return this;const e=uc(this.runner);return m(null!=e,"contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}),new Promise(((t,n)=>{const r=async()=>{try{if(null!=await this.getDeployedCode())return t(this);e.once("block",r)}catch(t){n(t)}};r()}))}deploymentTransaction(){return gc(this).deployTx}getFunction(t){"string"!=typeof t&&(t=t.format());return fc(this,t)}getEvent(t){return"string"!=typeof t&&(t=t.format()),function(t,e){const n=function(...n){const r=t.interface.getEvent(e,n);return m(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:n}}),r},r=function(...e){return new ac(t,n(...e),e)};return f(r,{name:t.interface.getEventName(e),_contract:t,_key:e,getFragment:n}),Object.defineProperty(r,"fragment",{configurable:!1,enumerable:!0,get:()=>{const n=t.interface.getEvent(e);return m(n,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),n}}),r}(this,t)}async queryTransaction(t){throw new Error("@TODO")}async queryFilter(t,e,n){null==e&&(e=0),null==n&&(n="latest");const{addr:r,addrPromise:s}=gc(this),i=r||await s,{fragment:o,topics:a}=await yc(this,t),c={address:i,topics:a,fromBlock:e,toBlock:n},u=uc(this.runner);return m(u,"contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"}),(await u.getLogs(c)).map((t=>{let e=o;if(null==e)try{e=this.interface.getEvent(t.topics[0])}catch(t){}if(e)try{return new $a(t,this.interface,e)}catch(e){return new Wa(t,e)}return new Va(t,u)}))}async on(t,e){const n=await wc(this,"on",t);return n.listeners.push({listener:e,once:!1}),n.start(),this}async once(t,e){const n=await wc(this,"once",t);return n.listeners.push({listener:e,once:!0}),n.start(),this}async emit(t,...e){return await Ac(this,t,e,null)}async listenerCount(t){if(t){const e=await mc(this,t);return e?e.listeners.length:0}const{subs:e}=gc(this);let n=0;for(const{listeners:t}of e.values())n+=t.length;return n}async listeners(t){if(t){const e=await mc(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}const{subs:e}=gc(this);let n=[];for(const{listeners:t}of e.values())n=n.concat(t.map((({listener:t})=>t)));return n}async off(t,e){const n=await mc(this,t);if(!n)return this;if(e){const t=n.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&n.listeners.splice(t,1)}return null!=e&&0!==n.listeners.length||(n.stop(),gc(this).subs.delete(n.tag)),this}async removeAllListeners(t){if(t){const e=await mc(this,t);if(!e)return this;e.stop(),gc(this).subs.delete(e.tag)}else{const{subs:t}=gc(this);for(const{tag:e,stop:n}of t.values())n(),t.delete(e)}return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return await this.off(t,e)}static buildClass(t){return class extends Ec{constructor(e,n=null){super(e,t,n)}}}static from(t,e,n){null==n&&(n=null);return new this(t,e,n)}}class kc extends(function(){return Ec}()){}function Nc(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):w(!1,"unsupported IPFS format","link",t),`https://gateway.ipfs.io/ipfs/${t}`}class xc{name;constructor(t){f(this,{name:t})}connect(t){return this}supportsCoinType(t){return!1}async encodeAddress(t,e){throw new Error("unsupported coin")}async decodeAddress(t,e){throw new Error("unsupported coin")}}const Tc=new RegExp("^(ipfs)://(.*)$","i"),Oc=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Tc,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];class Sc{provider;address;name;#At;#vt;constructor(t,e,n){f(this,{provider:t,address:e,name:n}),this.#At=null,this.#vt=new kc(e,["function supportsInterface(bytes4) view returns (bool)","function resolve(bytes, bytes) view returns (bytes)","function addr(bytes32) view returns (address)","function addr(bytes32, uint) view returns (bytes)","function text(bytes32, string) view returns (string)","function contenthash(bytes32) view returns (bytes)"],t)}async supportsWildcard(){return null==this.#At&&(this.#At=(async()=>{try{return await this.#vt.supportsInterface("0x9061b923")}catch(t){if(p(t,"CALL_EXCEPTION"))return!1;throw this.#At=null,t}})()),await this.#At}async#Et(t,e){e=(e||[]).slice();const n=this.#vt.interface;e.unshift(qi(this.name));let r=null;await this.supportsWildcard()&&(r=n.getFunction(t),m(r,"missing fragment","UNKNOWN_ERROR",{info:{funcName:t}}),e=[$i(this.name,255),n.encodeFunctionData(r,e)],t="resolve(bytes,bytes)"),e.push({enableCcipRead:!0});try{const s=await this.#vt[t](...e);return r?n.decodeFunctionResult(r,s)[0]:s}catch(t){if(!p(t,"CALL_EXCEPTION"))throw t}return null}async getAddress(t){if(null==t&&(t=60),60===t)try{const t=await this.#Et("addr(bytes32)");return null==t||t===Zr?null:t}catch(t){if(p(t,"CALL_EXCEPTION"))return null;throw t}if(t>=0&&t<2147483648){let e=t+2147483648;const n=await this.#Et("addr(bytes32,uint)",[e]);if(T(n,20))return gs(n)}let e=null;for(const n of this.provider.plugins)if(n instanceof xc&&n.supportsCoinType(t)){e=n;break}if(null==e)return null;const n=await this.#Et("addr(bytes32,uint)",[t]);if(null==n||"0x"===n)return null;const r=await e.decodeAddress(t,n);if(null!=r)return r;m(!1,"invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:n}})}async getText(t){const e=await this.#Et("text(bytes32,string)",[t]);return null==e||"0x"===e?null:e}async getContentHash(){const t=await this.#Et("contenthash(bytes32)");if(null==t||"0x"===t)return null;const e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t="e3010170"===e[1]?"ipfs":"ipns",n=parseInt(e[4],16);if(e[5].length===2*n)return`${t}://${X("0x"+e[2])}`}const n=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(n&&64===n[1].length)return`bzz://${n[1]}`;m(!1,"invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const t=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(null==e)return t.push({type:"!avatar",value:""}),{url:null,linkage:t};t.push({type:"avatar",value:e});for(let n=0;n<Oc.length;n++){const r=e.match(Oc[n]);if(null==r)continue;const s=r[1].toLowerCase();switch(s){case"https":case"data":return t.push({type:"url",value:e}),{linkage:t,url:e};case"ipfs":{const n=Nc(e);return t.push({type:"ipfs",value:e}),t.push({type:"url",value:n}),{linkage:t,url:n}}case"erc721":case"erc1155":{const n="erc721"===s?"tokenURI(uint256)":"uri(uint256)";t.push({type:s,value:e});const i=await this.getAddress();if(null==i)return t.push({type:"!owner",value:""}),{url:null,linkage:t};const o=(r[2]||"").split("/");if(2!==o.length)return t.push({type:`!${s}caip`,value:r[2]||""}),{url:null,linkage:t};const a=o[1],c=new kc(o[0],["function tokenURI(uint) view returns (string)","function ownerOf(uint) view returns (address)","function uri(uint) view returns (string)","function balanceOf(address, uint256) view returns (uint)"],this.provider);if("erc721"===s){const e=await c.ownerOf(a);if(i!==e)return t.push({type:"!owner",value:e}),{url:null,linkage:t};t.push({type:"owner",value:e})}else if("erc1155"===s){const e=await c.balanceOf(i,a);if(!e)return t.push({type:"!balance",value:"0"}),{url:null,linkage:t};t.push({type:"balance",value:e.toString()})}let u=await c[n](a);if(null==u||"0x"===u)return t.push({type:"!metadata-url",value:""}),{url:null,linkage:t};t.push({type:"metadata-url-base",value:u}),"erc1155"===s&&(u=u.replace("{id}",Q(a,32).substring(2)),t.push({type:"metadata-url-expanded",value:u})),u.match(/^ipfs:/i)&&(u=Nc(u)),t.push({type:"metadata-url",value:u});let l={};const h=await new yt(u).send();h.assertOk();try{l=h.bodyJson}catch(e){try{t.push({type:"!metadata",value:h.bodyText})}catch(e){const n=h.body;return n&&t.push({type:"!metadata",value:P(n)}),{url:null,linkage:t}}return{url:null,linkage:t}}if(!l)return t.push({type:"!metadata",value:""}),{url:null,linkage:t};t.push({type:"metadata",value:JSON.stringify(l)});let f=l.image;if("string"!=typeof f)return t.push({type:"!imageUrl",value:""}),{url:null,linkage:t};if(f.match(/^(https:\/\/|data:)/i));else{if(null==f.match(Tc))return t.push({type:"!imageUrl-ipfs",value:f}),{url:null,linkage:t};t.push({type:"imageUrl-ipfs",value:f}),f=Nc(f)}return t.push({type:"url",value:f}),{linkage:t,url:f}}}}}catch(t){}return{linkage:t,url:null}}static async getEnsAddress(t){const e=await t.getNetwork(),n=e.getPlugin("org.ethers.plugins.network.Ens");return m(n,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),n.address}static async#kt(t,e){const n=await Sc.getEnsAddress(t);try{const r=new kc(n,["function resolver(bytes32) view returns (address)"],t),s=await r.resolver(qi(e),{enableCcipRead:!0});return s===Zr?null:s}catch(t){throw t}return null}static async fromName(t,e){let n=e;for(;;){if(""===n||"."===n)return null;if("eth"!==e&&"eth"===n)return null;const r=await Sc.#kt(t,n);if(null!=r){const s=new Sc(t,r,e);return n===e||await s.supportsWildcard()?s:null}n=n.split(".").slice(1).join(".")}}}const Pc=BigInt(0);function Rc(t,e){return function(n){return null==n?e:t(n)}}function Ic(t,e){return n=>{if(e&&null==n)return null;if(!Array.isArray(n))throw new Error("not an array");return n.map((e=>t(e)))}}function Cc(t,e){return n=>{const r={};for(const s in t){let i=s;if(e&&s in e&&!(i in n))for(const t of e[s])if(t in n){i=t;break}try{const e=t[s](n[i]);void 0!==e&&(r[s]=e)}catch(t){m(!1,`invalid value for value.${s} (${t instanceof Error?t.message:"not-an-error"})`,"BAD_DATA",{value:n})}}return r}}function Bc(t){return w(T(t,!0),"invalid data","value",t),t}function Dc(t){return w(T(t,32),"invalid hash","value",t),t}const Uc=Cc({address:gs,blockHash:Dc,blockNumber:V,data:Bc,index:V,removed:Rc((function(t){switch(t){case!0:case"true":return!0;case!1:case"false":return!1}w(!1,`invalid boolean; ${JSON.stringify(t)}`,"value",t)}),!1),topics:Ic(Dc),transactionHash:Dc,transactionIndex:V},{index:["logIndex"]});const Lc=Cc({hash:Rc(Dc),parentHash:Dc,parentBeaconBlockRoot:Rc(Dc,null),number:V,timestamp:V,nonce:Rc(Bc),difficulty:j,gasLimit:j,gasUsed:j,stateRoot:Rc(Dc,null),receiptsRoot:Rc(Dc,null),blobGasUsed:Rc(j,null),excessBlobGas:Rc(j,null),miner:Rc(gs),prevRandao:Rc(Dc,null),extraData:Bc,baseFeePerGas:Rc(j)},{prevRandao:["mixHash"]});const Fc=Cc({transactionIndex:V,blockNumber:V,transactionHash:Dc,address:gs,topics:Ic(Dc),data:Bc,index:V,blockHash:Dc},{index:["logIndex"]});const Mc=Cc({to:Rc(gs,null),from:Rc(gs,null),contractAddress:Rc(gs,null),index:V,root:Rc(P),gasUsed:j,blobGasUsed:Rc(j,null),logsBloom:Rc(Bc),blockHash:Dc,hash:Dc,logs:Ic((function(t){return Fc(t)})),blockNumber:V,cumulativeGasUsed:j,effectiveGasPrice:Rc(j),blobGasPrice:Rc(j,null),status:Rc(V),type:Rc(V,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function Gc(t){t.to&&j(t.to)===Pc&&(t.to="0x0000000000000000000000000000000000000000");const e=Cc({hash:Dc,index:Rc(V,void 0),type:t=>"0x"===t||null==t?0:V(t),accessList:Rc(Yi,null),blobVersionedHashes:Rc(Ic(Dc,!0),null),blockHash:Rc(Dc,null),blockNumber:Rc(V,null),transactionIndex:Rc(V,null),from:gs,gasPrice:Rc(j),maxPriorityFeePerGas:Rc(j),maxFeePerGas:Rc(j),maxFeePerBlobGas:Rc(j,null),gasLimit:j,to:Rc(gs,null),value:j,nonce:V,data:Bc,creates:Rc(gs,null),chainId:Rc(j,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(t);if(null==e.to&&null==e.creates&&(e.creates=function(t){const e=gs(t.from);let n=j(t.nonce,"tx.nonce").toString(16);return n="0"===n?"0x":n.length%2?"0x0"+n:"0x"+n,gs(C(sn(Ot([e,n])),12))}(e)),1!==t.type&&2!==t.type||null!=t.accessList||(e.accessList=[]),t.signature?e.signature=cs.from(t.signature):e.signature=cs.from(t),null==e.chainId){const t=e.signature.legacyChainId;null!=t&&(e.chainId=t)}return e.blockHash&&j(e.blockHash)===Pc&&(e.blockHash=null),e}class jc{name;constructor(t){f(this,{name:t})}clone(){return new jc(this.name)}}class _c extends jc{effectiveBlock;txBase;txCreate;txDataZero;txDataNonzero;txAccessListStorageKey;txAccessListAddress;constructor(t,e){null==t&&(t=0),super(`org.ethers.network.plugins.GasCost#${t||0}`);const n={effectiveBlock:t};function r(t,r){let s=(e||{})[t];null==s&&(s=r),w("number"==typeof s,`invalud value for ${t}`,"costs",e),n[t]=s}r("txBase",21e3),r("txCreate",32e3),r("txDataZero",4),r("txDataNonzero",16),r("txAccessListStorageKey",1900),r("txAccessListAddress",2400),f(this,n)}clone(){return new _c(this.effectiveBlock,this)}}class Hc extends jc{address;targetNetwork;constructor(t,e){super("org.ethers.plugins.network.Ens"),f(this,{address:t||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new Hc(this.address,this.targetNetwork)}}class Kc extends jc{#c;#Nt;get url(){return this.#c}get processFunc(){return this.#Nt}constructor(t,e){super("org.ethers.plugins.network.FetchUrlFeeDataPlugin"),this.#c=t,this.#Nt=e}clone(){return this}}const Vc=new Map;class Qc{#xt;#z;#Tt;constructor(t,e){this.#xt=t,this.#z=j(e),this.#Tt=new Map}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#xt}set name(t){this.#xt=t}get chainId(){return this.#z}set chainId(t){this.#z=j(t,"chainId")}matches(t){if(null==t)return!1;if("string"==typeof t){try{return this.chainId===j(t)}catch(t){}return this.name===t}if("number"==typeof t||"bigint"==typeof t){try{return this.chainId===j(t)}catch(t){}return!1}if("object"==typeof t){if(null!=t.chainId){try{return this.chainId===j(t.chainId)}catch(t){}return!1}return null!=t.name&&this.name===t.name}return!1}get plugins(){return Array.from(this.#Tt.values())}attachPlugin(t){if(this.#Tt.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#Tt.set(t.name,t.clone()),this}getPlugin(t){return this.#Tt.get(t)||null}getPlugins(t){return this.plugins.filter((e=>e.name.split("#")[0]===t))}clone(){const t=new Qc(this.name,this.chainId);return this.plugins.forEach((e=>{t.attachPlugin(e.clone())})),t}computeIntrinsicGas(t){const e=this.getPlugin("org.ethers.plugins.network.GasCost")||new _c;let n=e.txBase;if(null==t.to&&(n+=e.txCreate),t.data)for(let r=2;r<t.data.length;r+=2)"00"===t.data.substring(r,r+2)?n+=e.txDataZero:n+=e.txDataNonzero;if(t.accessList){const r=Yi(t.accessList);for(const t in r)n+=e.txAccessListAddress+e.txAccessListStorageKey*r[t].storageKeys.length}return n}static from(t){if(function(){if(qc)return;function t(t,e,n){const r=function(){const r=new Qc(t,e);return null!=n.ensNetwork&&r.attachPlugin(new Hc(null,n.ensNetwork)),r.attachPlugin(new _c),(n.plugins||[]).forEach((t=>{r.attachPlugin(t)})),r};Qc.register(t,r),Qc.register(e,r),n.altNames&&n.altNames.forEach((t=>{Qc.register(t,r)}))}qc=!0,t("mainnet",1,{ensNetwork:1,altNames:["homestead"]}),t("ropsten",3,{ensNetwork:3}),t("rinkeby",4,{ensNetwork:4}),t("goerli",5,{ensNetwork:5}),t("kovan",42,{ensNetwork:42}),t("sepolia",11155111,{ensNetwork:11155111}),t("holesky",17e3,{ensNetwork:17e3}),t("classic",61,{}),t("classicKotti",6,{}),t("arbitrum",42161,{ensNetwork:1}),t("arbitrum-goerli",421613,{}),t("arbitrum-sepolia",421614,{}),t("base",8453,{ensNetwork:1}),t("base-goerli",84531,{}),t("base-sepolia",84532,{}),t("bnb",56,{ensNetwork:1}),t("bnbt",97,{}),t("linea",59144,{ensNetwork:1}),t("linea-goerli",59140,{}),t("linea-sepolia",59141,{}),t("matic",137,{ensNetwork:1,plugins:[zc("https://gasstation.polygon.technology/v2")]}),t("matic-amoy",80002,{}),t("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[zc("https://gasstation-testnet.polygon.technology/v2")]}),t("optimism",10,{ensNetwork:1,plugins:[]}),t("optimism-goerli",420,{}),t("optimism-sepolia",11155420,{}),t("xdai",100,{ensNetwork:1})}(),null==t)return Qc.from("mainnet");if("number"==typeof t&&(t=BigInt(t)),"string"==typeof t||"bigint"==typeof t){const e=Vc.get(t);if(e)return e();if("bigint"==typeof t)return new Qc("unknown",t);w(!1,"unknown network","network",t)}if("function"==typeof t.clone){return t.clone()}if("object"==typeof t){w("string"==typeof t.name&&"number"==typeof t.chainId,"invalid network object name or chainId","network",t);const e=new Qc(t.name,t.chainId);return(t.ensAddress||null!=t.ensNetwork)&&e.attachPlugin(new Hc(t.ensAddress,t.ensNetwork)),e}w(!1,"invalid network","network",t)}static register(t,e){"number"==typeof t&&(t=BigInt(t));const n=Vc.get(t);n&&w(!1,`conflicting network for ${JSON.stringify(n.name)}`,"nameOrChainId",t),Vc.set(t,e)}}function Jc(t,e){const n=String(t);if(!n.match(/^[0-9.]+$/))throw new Error(`invalid gwei value: ${t}`);const r=n.split(".");if(1===r.length&&r.push(""),2!==r.length)throw new Error(`invalid gwei value: ${t}`);for(;r[1].length<e;)r[1]+="0";if(r[1].length>9){let t=BigInt(r[1].substring(0,9));r[1].substring(9).match(/^0+$/)||t++,r[1]=t.toString()}return BigInt(r[0]+r[1])}function zc(t){return new Kc(t,(async(t,e,n)=>{let r;n.setHeader("User-Agent","ethers");try{const[e,s]=await Promise.all([n.send(),t()]);r=e;const i=r.bodyJson.standard;return{gasPrice:s.gasPrice,maxFeePerGas:Jc(i.maxFee,9),maxPriorityFeePerGas:Jc(i.maxPriorityFee,9)}}catch(t){m(!1,`error encountered with polygon gas station (${JSON.stringify(n.url)})`,"SERVER_ERROR",{request:n,response:r,error:t})}}))}let qc=!1;function $c(t){return JSON.parse(JSON.stringify(t))}class Wc{#Ot;#St;#Pt;#Rt;constructor(t){this.#Ot=t,this.#St=null,this.#Pt=4e3,this.#Rt=-2}get pollingInterval(){return this.#Pt}set pollingInterval(t){this.#Pt=t}async#It(){try{const t=await this.#Ot.getBlockNumber();if(-2===this.#Rt)return void(this.#Rt=t);if(t!==this.#Rt){for(let e=this.#Rt+1;e<=t;e++){if(null==this.#St)return;await this.#Ot.emit("block",e)}this.#Rt=t}}catch(t){}null!=this.#St&&(this.#St=this.#Ot._setTimeout(this.#It.bind(this),this.#Pt))}start(){this.#St||(this.#St=this.#Ot._setTimeout(this.#It.bind(this),this.#Pt),this.#It())}stop(){this.#St&&(this.#Ot._clearTimeout(this.#St),this.#St=null)}pause(t){this.stop(),t&&(this.#Rt=-2)}resume(){this.start()}}class Yc{#Ot;#It;#Ct;constructor(t){this.#Ot=t,this.#Ct=!1,this.#It=t=>{this._poll(t,this.#Ot)}}async _poll(t,e){throw new Error("sub-classes must override this")}start(){this.#Ct||(this.#Ct=!0,this.#It(-2),this.#Ot.on("block",this.#It))}stop(){this.#Ct&&(this.#Ct=!1,this.#Ot.off("block",this.#It))}pause(t){this.stop()}resume(){this.start()}}class Zc extends Yc{#Bt;#Dt;constructor(t,e){super(t),this.#Bt=e,this.#Dt=-2}pause(t){t&&(this.#Dt=-2),super.pause(t)}async _poll(t,e){const n=await e.getBlock(this.#Bt);null!=n&&(-2===this.#Dt?this.#Dt=n.number:n.number>this.#Dt&&(e.emit(this.#Bt,n.number),this.#Dt=n.number))}}class Xc extends Yc{#bt;constructor(t,e){super(t),this.#bt=$c(e)}async _poll(t,e){throw new Error("@TODO")}}class tu extends Yc{#Ut;constructor(t,e){super(t),this.#Ut=e}async _poll(t,e){const n=await e.getTransactionReceipt(this.#Ut);n&&e.emit(this.#Ut,n)}}class eu{#Ot;#bt;#St;#Ct;#Rt;constructor(t,e){this.#Ot=t,this.#bt=$c(e),this.#St=this.#It.bind(this),this.#Ct=!1,this.#Rt=-2}async#It(t){if(-2===this.#Rt)return;const e=$c(this.#bt);e.fromBlock=this.#Rt+1,e.toBlock=t;const n=await this.#Ot.getLogs(e);if(0!==n.length)for(const t of n)this.#Ot.emit(this.#bt,t),this.#Rt=t.blockNumber;else this.#Rt<t-60&&(this.#Rt=t-60)}start(){this.#Ct||(this.#Ct=!0,-2===this.#Rt&&this.#Ot.getBlockNumber().then((t=>{this.#Rt=t})),this.#Ot.on("block",this.#St))}stop(){this.#Ct&&(this.#Ct=!1,this.#Ot.off("block",this.#St))}pause(t){this.stop(),t&&(this.#Rt=-2)}resume(){this.start()}}const nu=BigInt(2);function ru(t){return t&&"function"==typeof t.then}function su(t,e){return t+":"+JSON.stringify(e,((t,e)=>{if(null==e)return"null";if("bigint"==typeof e)return`bigint:${e.toString()}`;if("string"==typeof e)return e.toLowerCase();if("object"==typeof e&&!Array.isArray(e)){const t=Object.keys(e);return t.sort(),t.reduce(((t,n)=>(t[n]=e[n],t)),{})}return e}))}class iu{name;constructor(t){f(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function ou(t){return(t=Array.from(new Set(t).values())).sort(),t}async function au(t,e){if(null==t)throw new Error("invalid event");if(Array.isArray(t)&&(t={topics:t}),"string"==typeof t)switch(t){case"block":case"debug":case"error":case"finalized":case"network":case"pending":case"safe":return{type:t,tag:t}}if(T(t,32)){const e=t.toLowerCase();return{type:"transaction",tag:su("tx",{hash:e}),hash:e}}if(t.orphan){const e=t;return{type:"orphan",tag:su("orphan",e),filter:(n=e,JSON.parse(JSON.stringify(n)))}}var n;if(t.address||t.topics){const n=t,r={topics:(n.topics||[]).map((t=>null==t?null:Array.isArray(t)?ou(t.map((t=>t.toLowerCase()))):t.toLowerCase()))};if(n.address){const t=[],s=[],i=n=>{T(n)?t.push(n):s.push((async()=>{t.push(await ws(n,e))})())};Array.isArray(n.address)?n.address.forEach(i):i(n.address),s.length&&await Promise.all(s),r.address=ou(t.map((t=>t.toLowerCase())))}return{filter:r,tag:su("event",r),type:"event"}}w(!1,"unknown ProviderEvent","event",t)}function cu(){return(new Date).getTime()}const uu={cacheTimeout:250,pollingInterval:4e3};class lu{#Lt;#Tt;#Ft;#Mt;#Gt;#jt;#_t;#Ht;#Kt;#Vt;#Qt;#M;constructor(t,e){if(this.#M=Object.assign({},uu,e||{}),"any"===t)this.#jt=!0,this.#Gt=null;else if(t){const e=Qc.from(t);this.#jt=!1,this.#Gt=Promise.resolve(e),setTimeout((()=>{this.emit("network",e,null)}),0)}else this.#jt=!1,this.#Gt=null;this.#Ht=-1,this.#_t=new Map,this.#Lt=new Map,this.#Tt=new Map,this.#Ft=null,this.#Mt=!1,this.#Kt=1,this.#Vt=new Map,this.#Qt=!1}get pollingInterval(){return this.#M.pollingInterval}get provider(){return this}get plugins(){return Array.from(this.#Tt.values())}attachPlugin(t){if(this.#Tt.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return this.#Tt.set(t.name,t.connect(this)),this}getPlugin(t){return this.#Tt.get(t)||null}get disableCcipRead(){return this.#Qt}set disableCcipRead(t){this.#Qt=!!t}async#Jt(t){const e=this.#M.cacheTimeout;if(e<0)return await this._perform(t);const n=su(t.method,t);let r=this.#_t.get(n);return r||(r=this._perform(t),this.#_t.set(n,r),setTimeout((()=>{this.#_t.get(n)===r&&this.#_t.delete(n)}),e)),await r}async ccipReadFetch(t,e,n){if(this.disableCcipRead||0===n.length||null==t.to)return null;const r=t.to.toLowerCase(),s=e.toLowerCase(),i=[];for(let e=0;e<n.length;e++){const o=n[e],a=o.replace("{sender}",r).replace("{data}",s),c=new yt(a);-1===o.indexOf("{data}")&&(c.body={data:s,sender:r}),this.emit("debug",{action:"sendCcipReadFetchRequest",request:c,index:e,urls:n});let u,l="unknown error";try{u=await c.send()}catch(t){i.push(t.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:c,result:{error:t}});continue}try{const t=u.bodyJson;if(t.data)return this.emit("debug",{action:"receiveCcipReadFetchResult",request:c,result:t}),t.data;t.message&&(l=t.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:c,result:t})}catch(t){}m(u.statusCode<400||u.statusCode>=500,`response not found during CCIP fetch: ${l}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:o,errorMessage:l}}),i.push(l)}m(!1,`error encountered during CCIP fetch: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:n,errorMessages:i}})}_wrapBlock(t,e){return new Ka(function(t){const e=Lc(t);return e.transactions=t.transactions.map((t=>"string"==typeof t?t:Gc(t))),e}(t),this)}_wrapLog(t,e){return new Va(function(t){return Uc(t)}(t),this)}_wrapTransactionReceipt(t,e){return new Qa(function(t){return Mc(t)}(t),this)}_wrapTransactionResponse(t,e){return new Ja(Gc(t),this)}_detectNetwork(){m(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){m(!1,`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){const t=V(await this.#Jt({method:"getBlockNumber"}),"%response");return this.#Ht>=0&&(this.#Ht=t),t}_getAddress(t){return ws(t,this)}_getBlockTag(t){if(null==t)return"latest";switch(t){case"earliest":return"0x0";case"finalized":case"latest":case"pending":case"safe":return t}return T(t)?T(t,32)?t:z(t):("bigint"==typeof t&&(t=V(t,"blockTag")),"number"==typeof t?t>=0?z(t):this.#Ht>=0?z(this.#Ht+t):this.getBlockNumber().then((e=>z(e+t))):void w(!1,"invalid blockTag","blockTag",t))}_getFilter(t){const e=(t.topics||[]).map((t=>null==t?null:Array.isArray(t)?ou(t.map((t=>t.toLowerCase()))):t.toLowerCase())),n="blockHash"in t?t.blockHash:void 0,r=(t,r,s)=>{let i;switch(t.length){case 0:break;case 1:i=t[0];break;default:t.sort(),i=t}if(n&&(null!=r||null!=s))throw new Error("invalid filter");const o={};return i&&(o.address=i),e.length&&(o.topics=e),r&&(o.fromBlock=r),s&&(o.toBlock=s),n&&(o.blockHash=n),o};let s,i,o=[];if(t.address)if(Array.isArray(t.address))for(const e of t.address)o.push(this._getAddress(e));else o.push(this._getAddress(t.address));return"fromBlock"in t&&(s=this._getBlockTag(t.fromBlock)),"toBlock"in t&&(i=this._getBlockTag(t.toBlock)),o.filter((t=>"string"!=typeof t)).length||null!=s&&"string"!=typeof s||null!=i&&"string"!=typeof i?Promise.all([Promise.all(o),s,i]).then((t=>r(t[0],t[1],t[2]))):r(o,s,i)}_getTransactionRequest(t){const e=Ha(t),n=[];if(["to","from"].forEach((t=>{if(null==e[t])return;const r=ws(e[t],this);ru(r)?n.push(async function(){e[t]=await r}()):e[t]=r})),null!=e.blockTag){const t=this._getBlockTag(e.blockTag);ru(t)?n.push(async function(){e.blockTag=await t}()):e.blockTag=t}return n.length?async function(){return await Promise.all(n),e}():e}async getNetwork(){if(null==this.#Gt){const t=(async()=>{try{const t=await this._detectNetwork();return this.emit("network",t,null),t}catch(e){throw this.#Gt===t&&(this.#Gt=null),e}})();return this.#Gt=t,(await t).clone()}const t=this.#Gt,[e,n]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==n.chainId&&(this.#jt?(this.emit("network",n,e),this.#Gt===t&&(this.#Gt=Promise.resolve(n))):m(!1,`network changed: ${e.chainId} => ${n.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone()}async getFeeData(){const t=await this.getNetwork(),e=async()=>{const{_block:e,gasPrice:n,priorityFee:r}=await h({_block:this.#zt("latest",!1),gasPrice:(async()=>{try{return j(await this.#Jt({method:"getGasPrice"}),"%response")}catch(t){}return null})(),priorityFee:(async()=>{try{return j(await this.#Jt({method:"getPriorityFee"}),"%response")}catch(t){}return null})()});let s=null,i=null;const o=this._wrapBlock(e,t);return o&&o.baseFeePerGas&&(i=null!=r?r:BigInt("1000000000"),s=o.baseFeePerGas*nu+i),new _a(n,s,i)},n=t.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(n){const t=new yt(n.url),r=await n.processFunc(e,this,t);return new _a(r.gasPrice,r.maxFeePerGas,r.maxPriorityFeePerGas)}return await e()}async estimateGas(t){let e=this._getTransactionRequest(t);return ru(e)&&(e=await e),j(await this.#Jt({method:"estimateGas",transaction:e}),"%response")}async#qt(t,e,n){m(n<10,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},t,{blockTag:e,enableCcipRead:!0})});const r=Ha(t);try{return P(await this._perform({method:"call",transaction:r,blockTag:e}))}catch(t){if(!this.disableCcipRead&&g(t)&&t.data&&n>=0&&"latest"===e&&null!=r.to&&"0x556f1830"===C(t.data,0,4)){const s=t.data,i=await ws(r.to,this);let o;try{o=function(t){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};m(I(t)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const n=C(t,0,32);m(C(n,0,12)===C(mu,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),e.sender=C(n,12);try{const n=[],r=V(C(t,32,64)),s=V(C(t,r,r+32)),i=C(t,r+32);for(let t=0;t<s;t++){const e=hu(i,32*t);if(null==e)throw new Error("abort");n.push(e)}e.urls=n}catch(t){m(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const n=fu(t,64);if(null==n)throw new Error("abort");e.calldata=n}catch(t){m(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}m(C(t,100,128)===C(mu,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),e.selector=C(t,96,100);try{const n=fu(t,128);if(null==n)throw new Error("abort");e.extraData=n}catch(t){m(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return e.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map((t=>e[t])),e}(C(t.data,4))}catch(t){m(!1,t.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:r,info:{data:s}})}m(o.sender.toLowerCase()===i.toLowerCase(),"CCIP Read sender mismatch","CALL_EXCEPTION",{action:"call",data:s,reason:"OffchainLookup",transaction:r,invocation:null,revert:{signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",name:"OffchainLookup",args:o.errorArgs}});const a=await this.ccipReadFetch(r,o.calldata,o.urls);m(null!=a,"CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:r,info:{data:t.data,errorArgs:o.errorArgs}});const c={to:i,data:R([o.selector,yu([a,o.extraData])])};this.emit("debug",{action:"sendCcipReadCall",transaction:c});try{const t=await this.#qt(c,e,n+1);return this.emit("debug",{action:"receiveCcipReadCallResult",transaction:Object.assign({},c),result:t}),t}catch(t){throw this.emit("debug",{action:"receiveCcipReadCallError",transaction:Object.assign({},c),error:t}),t}}throw t}}async#$t(t){const{value:e}=await h({network:this.getNetwork(),value:t});return e}async call(t){const{tx:e,blockTag:n}=await h({tx:this._getTransactionRequest(t),blockTag:this._getBlockTag(t.blockTag)});return await this.#$t(this.#qt(e,n,t.enableCcipRead?0:-1))}async#Wt(t,e,n){let r=this._getAddress(e),s=this._getBlockTag(n);return"string"==typeof r&&"string"==typeof s||([r,s]=await Promise.all([r,s])),await this.#$t(this.#Jt(Object.assign(t,{address:r,blockTag:s})))}async getBalance(t,e){return j(await this.#Wt({method:"getBalance"},t,e),"%response")}async getTransactionCount(t,e){return V(await this.#Wt({method:"getTransactionCount"},t,e),"%response")}async getCode(t,e){return P(await this.#Wt({method:"getCode"},t,e))}async getStorage(t,e,n){const r=j(e,"position");return P(await this.#Wt({method:"getStorage",position:r},t,n))}async broadcastTransaction(t){const{blockNumber:e,hash:n,network:r}=await h({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:t}),network:this.getNetwork()}),s=mo.from(t);if(s.hash!==n)throw new Error("@TODO: the returned hash did not match");return this._wrapTransactionResponse(s,r).replaceableTransaction(e)}async#zt(t,e){if(T(t,32))return await this.#Jt({method:"getBlock",blockHash:t,includeTransactions:e});let n=this._getBlockTag(t);return"string"!=typeof n&&(n=await n),await this.#Jt({method:"getBlock",blockTag:n,includeTransactions:e})}async getBlock(t,e){const{network:n,params:r}=await h({network:this.getNetwork(),params:this.#zt(t,!!e)});return null==r?null:this._wrapBlock(r,n)}async getTransaction(t){const{network:e,params:n}=await h({network:this.getNetwork(),params:this.#Jt({method:"getTransaction",hash:t})});return null==n?null:this._wrapTransactionResponse(n,e)}async getTransactionReceipt(t){const{network:e,params:n}=await h({network:this.getNetwork(),params:this.#Jt({method:"getTransactionReceipt",hash:t})});if(null==n)return null;if(null==n.gasPrice&&null==n.effectiveGasPrice){const e=await this.#Jt({method:"getTransaction",hash:t});if(null==e)throw new Error("report this; could not find tx or effectiveGasPrice");n.effectiveGasPrice=e.gasPrice}return this._wrapTransactionReceipt(n,e)}async getTransactionResult(t){const{result:e}=await h({network:this.getNetwork(),result:this.#Jt({method:"getTransactionResult",hash:t})});return null==e?null:P(e)}async getLogs(t){let e=this._getFilter(t);ru(e)&&(e=await e);const{network:n,params:r}=await h({network:this.getNetwork(),params:this.#Jt({method:"getLogs",filter:e})});return r.map((t=>this._wrapLog(t,n)))}_getProvider(t){m(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await Sc.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){const e=await this.getResolver(t);return e?await e.getAddress():null}async lookupAddress(t){const e=qi((t=gs(t)).substring(2).toLowerCase()+".addr.reverse");try{const n=await Sc.getEnsAddress(this),r=new kc(n,["function resolver(bytes32) view returns (address)"],this),s=await r.resolver(e);if(null==s||s===Zr)return null;const i=new kc(s,["function name(bytes32) view returns (string)"],this),o=await i.name(e);return await this.resolveName(o)!==t?null:o}catch(t){if(p(t,"BAD_DATA")&&"0x"===t.value)return null;if(p(t,"CALL_EXCEPTION"))return null;throw t}return null}async waitForTransaction(t,e,n){const r=null!=e?e:1;return 0===r?this.getTransactionReceipt(t):new Promise((async(e,s)=>{let i=null;const o=async n=>{try{const s=await this.getTransactionReceipt(t);if(null!=s&&n-s.blockNumber+1>=r)return e(s),void(i&&(clearTimeout(i),i=null))}catch(t){console.log("EEE",t)}this.once("block",o)};null!=n&&(i=setTimeout((()=>{null!=i&&(i=null,this.off("block",o),s(y("timeout","TIMEOUT",{reason:"timeout"})))}),n)),o(await this.getBlockNumber())}))}async waitForBlock(t){m(!1,"not implemented yet","NOT_IMPLEMENTED",{operation:"waitForBlock"})}_clearTimeout(t){const e=this.#Vt.get(t);e&&(e.timer&&clearTimeout(e.timer),this.#Vt.delete(t))}_setTimeout(t,e){null==e&&(e=0);const n=this.#Kt++,r=()=>{this.#Vt.delete(n),t()};if(this.paused)this.#Vt.set(n,{timer:null,func:r,time:e});else{const t=setTimeout(r,e);this.#Vt.set(n,{timer:t,func:r,time:cu()})}return n}_forEachSubscriber(t){for(const e of this.#Lt.values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"error":case"network":return new iu(t.type);case"block":{const t=new Wc(this);return t.pollingInterval=this.pollingInterval,t}case"safe":case"finalized":return new Zc(this,t.type);case"event":return new eu(this,t.filter);case"transaction":return new tu(this,t.hash);case"orphan":return new Xc(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(const n of this.#Lt.values())if(n.subscriber===t){n.started&&n.subscriber.stop(),n.subscriber=e,n.started&&e.start(),null!=this.#Ft&&e.pause(this.#Ft);break}}async#Yt(t,e){let n=await au(t,this);return"event"===n.type&&e&&e.length>0&&!0===e[0].removed&&(n=await au({orphan:"drop-log",log:e[0]},this)),this.#Lt.get(n.tag)||null}async#Zt(t){const e=await au(t,this),n=e.tag;let r=this.#Lt.get(n);if(!r){r={subscriber:this._getSubscriber(e),tag:n,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},this.#Lt.set(n,r)}return r}async on(t,e){const n=await this.#Zt(t);return n.listeners.push({listener:e,once:!1}),n.started||(n.subscriber.start(),n.started=!0,null!=this.#Ft&&n.subscriber.pause(this.#Ft)),this}async once(t,e){const n=await this.#Zt(t);return n.listeners.push({listener:e,once:!0}),n.started||(n.subscriber.start(),n.started=!0,null!=this.#Ft&&n.subscriber.pause(this.#Ft)),this}async emit(t,...e){const n=await this.#Yt(t,e);if(!n||0===n.listeners.length)return!1;const r=n.listeners.length;return n.listeners=n.listeners.filter((({listener:n,once:r})=>{const s=new tt(this,r?null:n,t);try{n.call(this,...e,s)}catch(t){}return!r})),0===n.listeners.length&&(n.started&&n.subscriber.stop(),this.#Lt.delete(n.tag)),r>0}async listenerCount(t){if(t){const e=await this.#Yt(t);return e?e.listeners.length:0}let e=0;for(const{listeners:t}of this.#Lt.values())e+=t.length;return e}async listeners(t){if(t){const e=await this.#Yt(t);return e?e.listeners.map((({listener:t})=>t)):[]}let e=[];for(const{listeners:t}of this.#Lt.values())e=e.concat(t.map((({listener:t})=>t)));return e}async off(t,e){const n=await this.#Yt(t);if(!n)return this;if(e){const t=n.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&n.listeners.splice(t,1)}return e&&0!==n.listeners.length||(n.started&&n.subscriber.stop(),this.#Lt.delete(n.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:n,subscriber:r}=await this.#Zt(t);n&&r.stop(),this.#Lt.delete(e)}else for(const[t,{started:e,subscriber:n}]of this.#Lt)e&&n.stop(),this.#Lt.delete(t);return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return this.off(t,e)}get destroyed(){return this.#Mt}destroy(){this.removeAllListeners();for(const t of this.#Vt.keys())this._clearTimeout(t);this.#Mt=!0}get paused(){return null!=this.#Ft}set paused(t){!!t!==this.paused&&(this.paused?this.resume():this.pause(!1))}pause(t){if(this.#Ht=-1,null!=this.#Ft){if(this.#Ft==!!t)return;m(!1,"cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber((e=>e.pause(t))),this.#Ft=!!t;for(const t of this.#Vt.values())t.timer&&clearTimeout(t.timer),t.time=cu()-t.time}resume(){if(null!=this.#Ft){this._forEachSubscriber((t=>t.resume())),this.#Ft=null;for(const t of this.#Vt.values()){let e=t.time;e<0&&(e=0),t.time=cu(),setTimeout(t.func,e)}}}}function hu(t,e){try{const n=fu(t,e);if(n)return st(n)}catch(t){}return null}function fu(t,e){if("0x"===t)return null;try{const n=V(C(t,e,e+32)),r=V(C(t,n,n+32));return C(t,n+32,n+32+r)}catch(t){}return null}function du(t){const e=J(t);if(e.length>32)throw new Error("internal; should not happen");const n=new Uint8Array(32);return n.set(e,32-e.length),n}function pu(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}const gu=new Uint8Array([]);function yu(t){const e=[];let n=0;for(let r=0;r<t.length;r++)e.push(gu),n+=32;for(let r=0;r<t.length;r++){const s=N(t[r]);e[r]=du(n),e.push(du(s.length)),e.push(pu(s)),n+=32+32*Math.ceil(s.length/32)}return R(e)}const mu="0x0000000000000000000000000000000000000000000000000000000000000000";function wu(t,e){if(t.provider)return t.provider;m(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:e})}async function bu(t,e){let n=Ha(e);if(null!=n.to&&(n.to=ws(n.to,t)),null!=n.from){const e=n.from;n.from=Promise.all([t.getAddress(),ws(e,t)]).then((([t,e])=>(w(t.toLowerCase()===e.toLowerCase(),"transaction from mismatch","tx.from",e),t)))}else n.from=t.getAddress();return await h(n)}class Au{provider;constructor(t){f(this,{provider:t||null})}async getNonce(t){return wu(this,"getTransactionCount").getTransactionCount(await this.getAddress(),t)}async populateCall(t){return await bu(this,t)}async populateTransaction(t){const e=wu(this,"populateTransaction"),n=await bu(this,t);null==n.nonce&&(n.nonce=await this.getNonce("pending")),null==n.gasLimit&&(n.gasLimit=await this.estimateGas(n));const r=await this.provider.getNetwork();if(null!=n.chainId){w(j(n.chainId)===r.chainId,"transaction chainId mismatch","tx.chainId",t.chainId)}else n.chainId=r.chainId;const s=null!=n.maxFeePerGas||null!=n.maxPriorityFeePerGas;if(null==n.gasPrice||2!==n.type&&!s?0!==n.type&&1!==n.type||!s||w(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",t):w(!1,"eip-1559 transaction do not support gasPrice","tx",t),2!==n.type&&null!=n.type||null==n.maxFeePerGas||null==n.maxPriorityFeePerGas)if(0===n.type||1===n.type){const t=await e.getFeeData();m(null!=t.gasPrice,"network does not support gasPrice","UNSUPPORTED_OPERATION",{operation:"getGasPrice"}),null==n.gasPrice&&(n.gasPrice=t.gasPrice)}else{const t=await e.getFeeData();if(null==n.type)if(null!=t.maxFeePerGas&&null!=t.maxPriorityFeePerGas)if(n.type=2,null!=n.gasPrice){const t=n.gasPrice;delete n.gasPrice,n.maxFeePerGas=t,n.maxPriorityFeePerGas=t}else null==n.maxFeePerGas&&(n.maxFeePerGas=t.maxFeePerGas),null==n.maxPriorityFeePerGas&&(n.maxPriorityFeePerGas=t.maxPriorityFeePerGas);else null!=t.gasPrice?(m(!s,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),null==n.gasPrice&&(n.gasPrice=t.gasPrice),n.type=0):m(!1,"failed to get consistent fee data","UNSUPPORTED_OPERATION",{operation:"signer.getFeeData"});else 2!==n.type&&3!==n.type||(null==n.maxFeePerGas&&(n.maxFeePerGas=t.maxFeePerGas),null==n.maxPriorityFeePerGas&&(n.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else n.type=2;return await h(n)}async estimateGas(t){return wu(this,"estimateGas").estimateGas(await this.populateCall(t))}async call(t){return wu(this,"call").call(await this.populateCall(t))}async resolveName(t){const e=wu(this,"resolveName");return await e.resolveName(t)}async sendTransaction(t){const e=wu(this,"sendTransaction"),n=await this.populateTransaction(t);delete n.from;const r=mo.from(n);return await e.broadcastTransaction(await this.signTransaction(r))}}class vu extends Au{address;constructor(t,e){super(e),f(this,{address:t})}async getAddress(){return this.address}connect(t){return new vu(this.address,t)}#Xt(t,e){m(!1,`VoidSigner cannot sign ${t}`,"UNSUPPORTED_OPERATION",{operation:e})}async signTransaction(t){this.#Xt("transactions","signTransaction")}async signMessage(t){this.#Xt("messages","signMessage")}async signTypedData(t,e,n){this.#Xt("typed-data","signTypedData")}}class Eu{#Ot;#te;#St;#Ct;#ee;#ne;constructor(t){this.#Ot=t,this.#te=null,this.#St=this.#It.bind(this),this.#Ct=!1,this.#ee=null,this.#ne=!1}_subscribe(t){throw new Error("subclasses must override this")}_emitResults(t,e){throw new Error("subclasses must override this")}_recover(t){throw new Error("subclasses must override this")}async#It(t){try{null==this.#te&&(this.#te=this._subscribe(this.#Ot));let t=null;try{t=await this.#te}catch(t){if(!p(t,"UNSUPPORTED_OPERATION")||"eth_newFilter"!==t.operation)throw t}if(null==t)return this.#te=null,void this.#Ot._recoverSubscriber(this,this._recover(this.#Ot));const e=await this.#Ot.getNetwork();if(this.#ee||(this.#ee=e),this.#ee.chainId!==e.chainId)throw new Error("chaid changed");if(this.#ne)return;const n=await this.#Ot.send("eth_getFilterChanges",[t]);await this._emitResults(this.#Ot,n)}catch(t){console.log("@TODO",t)}this.#Ot.once("block",this.#St)}#re(){const t=this.#te;t&&(this.#te=null,t.then((t=>{this.#Ot.destroyed||this.#Ot.send("eth_uninstallFilter",[t])})))}start(){this.#Ct||(this.#Ct=!0,this.#It(-2))}stop(){this.#Ct&&(this.#Ct=!1,this.#ne=!0,this.#re(),this.#Ot.off("block",this.#St))}pause(t){t&&this.#re(),this.#Ot.off("block",this.#St)}resume(){this.start()}}class ku extends Eu{#se;constructor(t,e){var n;super(t),this.#se=(n=e,JSON.parse(JSON.stringify(n)))}_recover(t){return new eu(t,this.#se)}async _subscribe(t){return await t.send("eth_newFilter",[this.#se])}async _emitResults(t,e){for(const n of e)t.emit(this.#se,t._wrapLog(n,t._network))}}class Nu extends Eu{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){for(const n of e)t.emit("pending",n)}}const xu="bigint,boolean,function,number,string,symbol".split(/,/g);function Tu(t){if(null==t||xu.indexOf(typeof t)>=0)return t;if("function"==typeof t.getAddress)return t;if(Array.isArray(t))return t.map(Tu);if("object"==typeof t)return Object.keys(t).reduce(((e,n)=>(e[n]=t[n],e)),{});throw new Error(`should not happen: ${t} (${typeof t})`)}function Ou(t){return new Promise((e=>{setTimeout(e,t)}))}function Su(t){return t?t.toLowerCase():t}function Pu(t){return t&&"number"==typeof t.pollingInterval}const Ru={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class Iu extends Au{address;constructor(t,e){super(t),f(this,{address:e=gs(e)})}connect(t){m(!1,"cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async populateTransaction(t){return await this.populateCall(t)}async sendUncheckedTransaction(t){const e=Tu(t),n=[];if(e.from){const r=e.from;n.push((async()=>{const n=await ws(r,this.provider);w(null!=n&&n.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=n})())}else e.from=this.address;if(null==e.gasLimit&&n.push((async()=>{e.gasLimit=await this.provider.estimateGas({...e,from:this.address})})()),null!=e.to){const t=e.to;n.push((async()=>{e.to=await ws(t,this.provider)})())}n.length&&await Promise.all(n);const r=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[r])}async sendTransaction(t){const e=await this.provider.getBlockNumber(),n=await this.sendUncheckedTransaction(t);return await new Promise(((t,r)=>{const s=[1e3,100];let i=0;const o=async()=>{try{const r=await this.provider.getTransaction(n);if(null!=r)return void t(r.replaceableTransaction(e))}catch(t){if(p(t,"CANCELLED")||p(t,"BAD_DATA")||p(t,"NETWORK_ERROR")||p(t,"UNSUPPORTED_OPERATION"))return null==t.info&&(t.info={}),t.info.sendTransactionHash=n,void r(t);if(p(t,"INVALID_ARGUMENT")&&(i++,null==t.info&&(t.info={}),t.info.sendTransactionHash=n,i>10))return void r(t);this.provider.emit("error",y("failed to fetch transation after sending (will try again)","UNKNOWN_ERROR",{error:t}))}this.provider._setTimeout((()=>{o()}),s.pop()||4e3)};o()}))}async signTransaction(t){const e=Tu(t);if(e.from){const n=await ws(e.from,this.provider);w(null!=n&&n.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",t),e.from=n}else e.from=this.address;const n=this.provider.getRpcTransaction(e);return await this.provider.send("eth_signTransaction",[n])}async signMessage(t){const e="string"==typeof t?rt(t):t;return await this.provider.send("personal_sign",[P(e),this.address.toLowerCase()])}async signTypedData(t,e,n){const r=Tu(n),s=await Bo.resolveNames(t,e,r,(async t=>{const e=await ws(t);return w(null!=e,"TypedData does not support null address","value",t),e}));return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(Bo.getPayload(s.domain,e,s.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){const e="string"==typeof t?rt(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),P(e)])}}class Cu extends lu{#M;#ie;#oe;#ae;#ce;#ee;#ue;#le(){if(this.#ae)return;const t=1===this._getOption("batchMaxCount")?0:this._getOption("batchStallTime");this.#ae=setTimeout((()=>{this.#ae=null;const t=this.#oe;for(this.#oe=[];t.length;){const e=[t.shift()];for(;t.length&&e.length!==this.#M.batchMaxCount;){e.push(t.shift());if(JSON.stringify(e.map((t=>t.payload))).length>this.#M.batchMaxSize){t.unshift(e.pop());break}}(async()=>{const t=1===e.length?e[0].payload:e.map((t=>t.payload));this.emit("debug",{action:"sendRpcPayload",payload:t});try{const n=await this._send(t);this.emit("debug",{action:"receiveRpcResult",result:n});for(const{resolve:t,reject:r,payload:s}of e){if(this.destroyed){r(y("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:s.method}));continue}const e=n.filter((t=>t.id===s.id))[0];if(null!=e)"error"in e?r(this.getRpcError(s,e)):t(e.result);else{const t=y("missing response for request","BAD_DATA",{value:n,info:{payload:s}});this.emit("error",t),r(t)}}}catch(t){this.emit("debug",{action:"receiveRpcError",error:t});for(const{reject:n}of e)n(t)}})()}}),t)}constructor(t,e){super(t,e),this.#ie=1,this.#M=Object.assign({},Ru,e||{}),this.#oe=[],this.#ae=null,this.#ee=null,this.#ue=null;{let t=null;const e=new Promise((e=>{t=e}));this.#ce={promise:e,resolve:t}}const n=this._getOption("staticNetwork");"boolean"==typeof n?(w(!n||"any"!==t,"staticNetwork cannot be used on special network 'any'","options",e),n&&null!=t&&(this.#ee=Qc.from(t))):n&&(w(null==t||n.matches(t),"staticNetwork MUST match network object","options",e),this.#ee=n)}_getOption(t){return this.#M[t]}get _network(){return m(this.#ee,"network is not available yet","NETWORK_ERROR"),this.#ee}async _perform(t){if("call"===t.method||"estimateGas"===t.method){let e=t.transaction;if(e&&null!=e.type&&j(e.type)&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const n=await this.getFeeData();null==n.maxFeePerGas&&null==n.maxPriorityFeePerGas&&(t=Object.assign({},t,{transaction:Object.assign({},e,{type:void 0})}))}}const e=this.getRpcRequest(t);return null!=e?await this.send(e.method,e.args):super._perform(t)}async _detectNetwork(){const t=this._getOption("staticNetwork");if(t){if(!0!==t)return t;if(this.#ee)return this.#ee}return this.#ue?await this.#ue:this.ready?(this.#ue=(async()=>{try{const t=Qc.from(j(await this.send("eth_chainId",[])));return this.#ue=null,t}catch(t){throw this.#ue=null,t}})(),await this.#ue):(this.#ue=(async()=>{const t={id:this.#ie++,method:"eth_chainId",params:[],jsonrpc:"2.0"};let e;this.emit("debug",{action:"sendRpcPayload",payload:t});try{e=(await this._send(t))[0],this.#ue=null}catch(t){throw this.#ue=null,this.emit("debug",{action:"receiveRpcError",error:t}),t}if(this.emit("debug",{action:"receiveRpcResult",result:e}),"result"in e)return Qc.from(j(e.result));throw this.getRpcError(t,e)})(),await this.#ue)}_start(){null!=this.#ce&&null!=this.#ce.resolve&&(this.#ce.resolve(),this.#ce=null,(async()=>{for(;null==this.#ee&&!this.destroyed;)try{this.#ee=await this._detectNetwork()}catch(t){if(this.destroyed)break;console.log("JsonRpcProvider failed to detect network and cannot start up; retry in 1s (perhaps the URL is wrong or the node is not started)"),this.emit("error",y("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:t}})),await Ou(1e3)}this.#le()})())}async _waitUntilReady(){if(null!=this.#ce)return await this.#ce.promise}_getSubscriber(t){return"pending"===t.type?new Nu(this):"event"===t.type?this._getOption("polling")?new eu(this,t.filter):new ku(this,t.filter):"orphan"===t.type&&"drop-log"===t.filter.orphan?new iu("orphan"):super._getSubscriber(t)}get ready(){return null==this.#ce}getRpcTransaction(t){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach((n=>{if(null==t[n])return;let r=n;"gasLimit"===n&&(r="gas"),e[r]=z(j(t[n],`tx.${n}`))})),["from","to","data"].forEach((n=>{null!=t[n]&&(e[n]=P(t[n]))})),t.accessList&&(e.accessList=Yi(t.accessList)),t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes.map((t=>t.toLowerCase()))),e}getRpcRequest(t){switch(t.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getPriorityFee":return{method:"eth_maxPriorityFeePerGas",args:[]};case"getBalance":return{method:"eth_getBalance",args:[Su(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[Su(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[Su(t.address),t.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[Su(t.address),"0x"+t.position.toString(16),t.blockTag]};case"broadcastTransaction":return{method:"eth_sendRawTransaction",args:[t.signedTransaction]};case"getBlock":if("blockTag"in t)return{method:"eth_getBlockByNumber",args:[t.blockTag,!!t.includeTransactions]};if("blockHash"in t)return{method:"eth_getBlockByHash",args:[t.blockHash,!!t.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[t.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[t.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(t.transaction),t.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(t.transaction)]};case"getLogs":return t.filter&&null!=t.filter.address&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(Su):t.filter.address=Su(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e){const{method:n}=t,{error:r}=e;if("eth_estimateGas"===n&&r.message){const e=r.message;if(!e.match(/revert/i)&&e.match(/insufficient funds/i))return y("insufficient funds","INSUFFICIENT_FUNDS",{transaction:t.params[0],info:{payload:t,error:r}})}if("eth_call"===n||"eth_estimateGas"===n){const e=Uu(r),s=Ra.getBuiltinCallException("eth_call"===n?"call":"estimateGas",t.params[0],e?e.data:null);return s.info={error:r,payload:t},s}const s=JSON.stringify(function(t){const e=[];return Lu(t,e),e}(r));if("string"==typeof r.message&&r.message.match(/user denied|ethers-user-denied/i)){return y("user rejected action","ACTION_REJECTED",{action:{eth_sign:"signMessage",personal_sign:"signMessage",eth_signTypedData_v4:"signTypedData",eth_signTransaction:"signTransaction",eth_sendTransaction:"sendTransaction",eth_requestAccounts:"requestAccess",wallet_requestAccounts:"requestAccess"}[n]||"unknown",reason:"rejected",info:{payload:t,error:r}})}if("eth_sendRawTransaction"===n||"eth_sendTransaction"===n){const e=t.params[0];if(s.match(/insufficient funds|base fee exceeds gas limit/i))return y("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e,info:{error:r}});if(s.match(/nonce/i)&&s.match(/too low/i))return y("nonce has already been used","NONCE_EXPIRED",{transaction:e,info:{error:r}});if(s.match(/replacement transaction/i)&&s.match(/underpriced/i))return y("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e,info:{error:r}});if(s.match(/only replay-protected/i))return y("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:n,info:{transaction:e,info:{error:r}}})}let i=!!s.match(/the method .* does not exist/i);return i||r&&r.details&&r.details.startsWith("Unauthorized method:")&&(i=!0),i?y("unsupported operation","UNSUPPORTED_OPERATION",{operation:t.method,info:{error:r,payload:t}}):y("could not coalesce error","UNKNOWN_ERROR",{error:r,payload:t})}send(t,e){if(this.destroyed)return Promise.reject(y("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t}));const n=this.#ie++,r=new Promise(((r,s)=>{this.#oe.push({resolve:r,reject:s,payload:{method:t,params:e,id:n,jsonrpc:"2.0"}})}));return this.#le(),r}async getSigner(t){null==t&&(t=0);const e=this.send("eth_accounts",[]);if("number"==typeof t){const n=await e;if(t>=n.length)throw new Error("no such account");return new Iu(this,n[t])}const{accounts:n}=await h({network:this.getNetwork(),accounts:e});t=gs(t);for(const e of n)if(gs(e)===t)return new Iu(this,t);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map((t=>new Iu(this,t)))}destroy(){this.#ae&&(clearTimeout(this.#ae),this.#ae=null);for(const{payload:t,reject:e}of this.#oe)e(y("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t.method}));this.#oe=[],super.destroy()}}class Bu extends Cu{#he;constructor(t,e){super(t,e);let n=this._getOption("pollingInterval");null==n&&(n=Ru.pollingInterval),this.#he=n}_getSubscriber(t){const e=super._getSubscriber(t);return Pu(e)&&(e.pollingInterval=this.#he),e}get pollingInterval(){return this.#he}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");this.#he=t,this._forEachSubscriber((t=>{Pu(t)&&(t.pollingInterval=this.#he)}))}}class Du extends Bu{#fe;constructor(t,e,n){null==t&&(t="http://localhost:8545"),super(e,n),this.#fe="string"==typeof t?new yt(t):t.clone()}_getConnection(){return this.#fe.clone()}async send(t,e){return await this._start(),await super.send(t,e)}async _send(t){const e=this._getConnection();e.body=JSON.stringify(t),e.setHeader("content-type","application/json");const n=await e.send();n.assertOk();let r=n.bodyJson;return Array.isArray(r)||(r=[r]),r}}function Uu(t){if(null==t)return null;if("string"==typeof t.message&&t.message.match(/revert/i)&&T(t.data))return{message:t.message,data:t.data};if("object"==typeof t){for(const e in t){const n=Uu(t[e]);if(n)return n}return null}if("string"==typeof t)try{return Uu(JSON.parse(t))}catch(t){}return null}function Lu(t,e){if(null!=t){if("string"==typeof t.message&&e.push(t.message),"object"==typeof t)for(const n in t)Lu(t[n],e);if("string"==typeof t)try{return Lu(JSON.parse(t),e)}catch(t){}}}class Fu extends Bu{#v;constructor(t,e,n){const r=Object.assign({},null!=n?n:{},{batchMaxCount:1});w(t&&t.request,"invalid EIP-1193 provider","ethereum",t),super(e,r),this.#v=async(e,n)=>{const r={method:e,params:n};this.emit("debug",{action:"sendEip1193Request",payload:r});try{const e=await t.request(r);return this.emit("debug",{action:"receiveEip1193Result",result:e}),e}catch(t){const e=new Error(t.message);throw e.code=t.code,e.data=t.data,e.payload=r,this.emit("debug",{action:"receiveEip1193Error",error:e}),e}}}async send(t,e){return await this._start(),await super.send(t,e)}async _send(t){w(!Array.isArray(t),"EIP-1193 does not support batch request","payload",t);try{const e=await this.#v(t.method,t.params||[]);return[{id:t.id,result:e}]}catch(e){return[{id:t.id,error:{code:e.code,data:e.data,message:e.message}}]}}getRpcError(t,e){switch((e=JSON.parse(JSON.stringify(e))).error.code||-1){case 4001:e.error.message=`ethers-user-denied: ${e.error.message}`;break;case 4200:e.error.message=`ethers-unsupported: ${e.error.message}`}return super.getRpcError(t,e)}async hasSigner(t){null==t&&(t=0);const e=await this.send("eth_accounts",[]);return"number"==typeof t?e.length>t:(t=t.toLowerCase(),0!==e.filter((e=>e.toLowerCase()===t)).length)}async getSigner(t){if(null==t&&(t=0),!await this.hasSigner(t))try{await this.#v("eth_requestAccounts",[])}catch(t){const e=t.payload;throw this.getRpcError(e,{id:e.id,error:t})}return await super.getSigner(t)}}class Mu extends Au{address;#de;constructor(t,e){super(e),w(t&&"function"==typeof t.sign,"invalid private key","privateKey","[ REDACTED ]"),this.#de=t;f(this,{address:Zi(this.signingKey.publicKey)})}get signingKey(){return this.#de}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(t){return new Mu(this.#de,t)}async signTransaction(t){t=Ha(t);const{to:e,from:n}=await h({to:t.to?ws(t.to,this.provider):void 0,from:t.from?ws(t.from,this.provider):void 0});null!=e&&(t.to=e),null!=n&&(t.from=n),null!=t.from&&(w(gs(t.from)===this.address,"transaction from address mismatch","tx.from",t.from),delete t.from);const r=mo.from(t);return r.signature=this.signingKey.sign(r.unsignedHash),r.serialized}async signMessage(t){return this.signMessageSync(t)}signMessageSync(t){return this.signingKey.sign(wo(t)).serialized}async signTypedData(t,e,n){const r=await Bo.resolveNames(t,e,n,(async t=>{m(null!=this.provider,"cannot resolve ENS names without a provider","UNSUPPORTED_OPERATION",{operation:"resolveName",info:{name:t}});const e=await this.provider.resolveName(t);return m(null!=e,"unconfigured ENS name","UNCONFIGURED_NAME",{value:t}),e}));return this.signingKey.sign(Bo.hash(r.domain,e,r.value)).serialized}}const Gu=" !#$%&'()*+,-./<=>?@[]^_`{|}~",ju=/^[a-z]*$/i;function _u(t,e){let n=97;return t.reduce(((t,r)=>(r===e?n++:r.match(ju)?t.push(String.fromCharCode(n)+r):(n=97,t.push(r)),t)),[])}function Hu(t){return w("0"===t[0],"unsupported auwl data","data",t),function(t,e){for(let n=28;n>=0;n--)t=t.split(Gu[n]).join(e.substring(2*n,2*n+2));const n=[],r=t.replace(/(:|([0-9])|([A-Z][a-z]*))/g,((t,e,r,s)=>{if(r)for(let t=parseInt(r);t>=0;t--)n.push(";");else n.push(e.toLowerCase());return""}));if(r)throw new Error(`leftovers: ${JSON.stringify(r)}`);return _u(_u(n,";"),":")}(t.substring(59),t.substring(1,59))}class Ku{locale;constructor(t){f(this,{locale:t})}split(t){return t.toLowerCase().split(/\s+/g)}join(t){return t.join(" ")}}class Vu extends Ku{#N;#pe;constructor(t,e,n){super(t),this.#N=e,this.#pe=n,this.#ge=null}get _data(){return this.#N}_decodeWords(){return Hu(this.#N)}#ge;#ye(){if(null==this.#ge){const t=this._decodeWords();if(_s(t.join("\n")+"\n")!==this.#pe)throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);this.#ge=t}return this.#ge}getWord(t){const e=this.#ye();return w(t>=0&&t<e.length,`invalid word index: ${t}`,"index",t),e[t]}getWordIndex(t){return this.#ye().indexOf(t)}}let Qu=null;class Ju extends Vu{constructor(){super("en","0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN<aNn RRelyRga(R*lSeS-SketTt!3A^AnAutyCau'ComeEfF%eG(Ha=H(dLie=LowLtN^Nef./TrayTt Twe&Y#d3Cyc!DKeNdOlogyRdR`Tt _{AdeAmeAnketA,EakE[IndOodO[omOu'UeUrUsh_rdAtDyIlMbNeNusOkO,Rd R(gRrowSsTtomUn)XY_{etA(AndA[A=EadEezeI{Id+IefIghtIngIskOccoliOk&OnzeOomO` OwnUsh2Bb!DdyD+tFf$oIldLbLkL!tNd!Nk Rd&Rg R,SS(e[SyTt Y Zz:Bba+B(B!CtusGeKe~LmM aMpNN$N)lNdyNn#NoeNvasNy#Pab!P.$Pta(RRb#RdRgoRpetRryRtSeShS(o/!Su$TT$ogT^Teg%yTt!UghtU'Ut]Ve3Il(gL yM|NsusNturyRe$Rta(_irAlkAmp]An+AosApt Ar+A'AtEapE{Ee'EfErryE,I{&IefIldIm}yOi)Oo'R#-U{!UnkUrn0G?Nnam#Rc!Tiz&TyVil_imApArifyAwAyE<ErkEv I{I|IffImbIn-IpO{OgO'O`OudOwnUbUmpU, Ut^_^A,C#utDeFfeeIlInL!@L%LumnMb(eMeMf%tM-Mm#Mp<yNc tNdu@NfirmNg*[N}@Nsid NtrolNv()OkOlPp PyR$ReRnR*@/Tt#U^UntryUp!Ur'Us(V Yo>_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M<dMi'Ni$Nti,NyP?tP&dPos.P`PutyRi=ScribeS tSignSkSpair/royTailTe@VelopVi)Vo>3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-Eg<tEm|Eph<tEvat%I>Se0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-P<dPe@Pi*Pla(Po'P*[T&dTra0EEbrow:Br-CeCultyDeIntI`~L'MeMilyMousNNcyNtasyRmSh]TT$Th TigueUltV%.e3Atu*Bru?yD $EEdElMa!N)/iv$T^V W3B Ct]EldGu*LeLmLt N$NdNeNg NishReRmR,Sc$ShTT}[X_gAmeAshAtAv%EeIghtIpOatO{O%Ow UidUshY_mCusGIlLd~owOdOtR)Re,R+tRkRtu}RumRw?dSsil/ UndX_gi!AmeEqu|EshI&dIn+OgOntO,OwnOz&U.2ElNNnyRna)RyTu*:D+tInLaxy~ yMePRa+Rba+Rd&Rl-Rm|SSpTeTh U+Ze3N $NiusN*Nt!Nu(e/u*2O,0AntFtGg!Ng RaffeRlVe_dAn)A*A[IdeImp'ObeOomOryO=OwUe_tDde[LdOdO'RillaSpelSsipV nWn_bA)A(AntApeA[Av.yEatE&IdIefItOc yOupOwUnt_rdE[IdeIltIt?N3M:B.IrLfMm M, NdPpyRb%RdRshR=,TVeWkZ?d3AdAl`ArtAvyD+hogIght~oLmetLpNRo3Dd&Gh~NtPRe/%y5BbyCkeyLdLeLiday~owMeNeyOdPeRnRr%R'Sp.$/TelUrV 5BGeM<Mb!M%Nd*dNgryNtRd!RryRtSb<d3Brid:1EOn0EaEntifyLe2N%e4LLeg$L}[0A+Ita>M&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryF<tFl-tF%mHa!H .Iti$Je@JuryMa>N Noc|PutQuiryS<eSe@SideSpi*/$lTa@T e,ToVe,V.eVol=3On0L<dOla>Sue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurE<Tob 0Or1FF Fi)T&2L1Ay0DI=Ymp-0It0CeEI#L(eLy1EnEraIn]Po'T]1An+B.Ch?dD D(?yG<I|Ig($Ph<0Tr-h0H 0Tdo%T TputTside0AlEnEr0NN 0Yg&0/ 0O}:CtDd!GeIrLa)LmNdaNelN-N` P RadeR|RkRrotRtySsT^ThTi|TrolTt nU'VeYm|3A)AnutArAs<tL-<NN$tyNcilOp!Pp Rfe@Rm.Rs#T2O}OtoRa'Ys-$0AnoCn-Ctu*E)GGe#~LotNkO} Pe/olT^Zza_)A}tA,-A>AyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOg<OtOwUsh0AllArtI!OkeOo`0A{AkeApIffOw0ApCc Ci$CkDaFtL?Ldi LidLut]L=Me#eNgOnRryRtUlUndUpUr)U`0A)A*Ati$AwnEakEci$EedEllEndH eI)Id IkeInIr.L.OilOns%O#OrtOtRayReadR(gY0Ua*UeezeUir*l_b!AdiumAffA+AirsAmpAndArtA>AyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NN<tNnisNtRm/Xt_nkAtEmeEnE%yE*EyIngIsOughtReeRi=RowUmbUnd 0CketDeG LtMb MeNyPRedSsueT!5A,BaccoDayDdl EGe` I!tK&MatoM%rowNeNgueNightOlO`PP-Pp!R^RnadoRtoi'SsT$Uri,W?dW WnY_{AdeAff-Ag-A(Ansf ApAshA=lAyEatEeEndI$IbeI{Igg ImIpOphyOub!U{UeUlyUmpetU,U`Y2BeIt]Mb!NaN}lRkeyRnRt!1El=EntyI)InI,O1PeP-$:5Ly5B*lla0Ab!Awa*C!Cov D DoFairFoldHappyIf%mIqueItIv 'KnownLo{TilUsu$Veil1Da>GradeHoldOnP Set1B<Ge0A+EEdEfulE![U$0Il.y:C<tCuumGueLidL!yL=NNishP%Rious/Ult3H-!L=tNd%Ntu*NueRbRifyRs]RyS'lT <3Ab!Br<tCiousCt%yDeoEw~a+Nta+Ol(Rtu$RusSaS.Su$T$Vid5C$I)IdLc<oLumeTeYa+:GeG#ItLk~LnutNtRfa*RmRri%ShSp/eT VeY3Al`Ap#ArA'lA` BDd(gEk&dIrdLcome/T_!AtEatEelEnE*IpIsp 0DeD`FeLd~NNdowNeNgNkNn Nt ReSdomSeShT}[5LfM<Nd OdOlRdRkRldRryR`_pE{E,!I,I>Ong::Rd3Ar~ow9UUngU`:3BraRo9NeO","0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60")}static wordlist(){return null==Qu&&(Qu=new Ju),Qu}}function zu(t){return(1<<t)-1<<8-t&255}function qu(t,e){v("NFKD"),null==e&&(e=Ju.wordlist());const n=e.split(t);w(n.length%3==0&&n.length>=12&&n.length<=24,"invalid mnemonic length","mnemonic","[ REDACTED ]");const r=new Uint8Array(Math.ceil(11*n.length/8));let s=0;for(let t=0;t<n.length;t++){let i=e.getWordIndex(n[t].normalize("NFKD"));w(i>=0,`invalid mnemonic word at index ${t}`,"mnemonic","[ REDACTED ]");for(let t=0;t<11;t++)i&1<<10-t&&(r[s>>3]|=1<<7-s%8),s++}const i=32*n.length/3,o=zu(n.length/3);return w((N(qn(r.slice(0,i/8)))[0]&o)===(r[r.length-1]&o),"invalid mnemonic checksum","mnemonic","[ REDACTED ]"),P(r.slice(0,i/8))}function $u(t,e){w(t.length%4==0&&t.length>=16&&t.length<=32,"invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=Ju.wordlist());const n=[0];let r=11;for(let e=0;e<t.length;e++)r>8?(n[n.length-1]<<=8,n[n.length-1]|=t[e],r-=8):(n[n.length-1]<<=r,n[n.length-1]|=t[e]>>8-r,n.push(t[e]&((1<<8-r)-1&255)),r+=3);const s=t.length/4,i=parseInt(qn(t).substring(2,4),16)&zu(s);return n[n.length-1]<<=s,n[n.length-1]|=i>>8-s,e.join(n.map((t=>e.getWord(t))))}const Wu={};class Yu{phrase;password;wordlist;entropy;constructor(t,e,n,r,s){null==r&&(r=""),null==s&&(s=Ju.wordlist()),E(t,Wu,"Mnemonic"),f(this,{phrase:n,password:r,wordlist:s,entropy:e})}computeSeed(){const t=rt("mnemonic"+this.password,"NFKD");return On(rt(this.phrase,"NFKD"),t,2048,64,"sha512")}static fromPhrase(t,e,n){const r=qu(t,n);return t=$u(N(r),n),new Yu(Wu,r,t,e,n)}static fromEntropy(t,e,n){const r=N(t,"entropy"),s=$u(r,n);return new Yu(Wu,P(r),s,e,n)}static entropyToPhrase(t,e){return $u(N(t,"entropy"),e)}static phraseToEntropy(t,e){return qu(t,e)}static isValidMnemonic(t,e){try{return qu(t,e),!0}catch(t){}return!1}}
|
12
|
-
/*! MIT License. Copyright 2015-2022 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */var Zu,Xu,tl,el=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)},nl=function(t,e,n,r,s){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?s.call(t,n):s?s.value=n:e.set(t,n),n};const rl={16:10,24:12,32:14},sl=[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],il=[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],ol=[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],al=[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],cl=[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],ul=[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],ll=[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],hl=[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],fl=[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],dl=[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],pl=[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],gl=[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],yl=[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],ml=[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],wl=[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 bl(t){const e=[];for(let n=0;n<t.length;n+=4)e.push(t[n]<<24|t[n+1]<<16|t[n+2]<<8|t[n+3]);return e}class Al{get key(){return el(this,Zu,"f").slice()}constructor(t){if(Zu.set(this,void 0),Xu.set(this,void 0),tl.set(this,void 0),!(this instanceof Al))throw Error("AES must be instanitated with `new`");nl(this,Zu,new Uint8Array(t),"f");const e=rl[this.key.length];if(null==e)throw new TypeError("invalid key size (must be 16, 24 or 32 bytes)");nl(this,tl,[],"f"),nl(this,Xu,[],"f");for(let t=0;t<=e;t++)el(this,tl,"f").push([0,0,0,0]),el(this,Xu,"f").push([0,0,0,0]);const n=4*(e+1),r=this.key.length/4,s=bl(this.key);let i;for(let t=0;t<r;t++)i=t>>2,el(this,tl,"f")[i][t%4]=s[t],el(this,Xu,"f")[e-i][t%4]=s[t];let o,a=0,c=r;for(;c<n;){if(o=s[r-1],s[0]^=il[o>>16&255]<<24^il[o>>8&255]<<16^il[255&o]<<8^il[o>>24&255]^sl[a]<<24,a+=1,8!=r)for(let t=1;t<r;t++)s[t]^=s[t-1];else{for(let t=1;t<r/2;t++)s[t]^=s[t-1];o=s[r/2-1],s[r/2]^=il[255&o]^il[o>>8&255]<<8^il[o>>16&255]<<16^il[o>>24&255]<<24;for(let t=r/2+1;t<r;t++)s[t]^=s[t-1]}let t,i,u=0;for(;u<r&&c<n;)t=c>>2,i=c%4,el(this,tl,"f")[t][i]=s[u],el(this,Xu,"f")[e-t][i]=s[u++],c++}for(let t=1;t<e;t++)for(let e=0;e<4;e++)o=el(this,Xu,"f")[t][e],el(this,Xu,"f")[t][e]=gl[o>>24&255]^yl[o>>16&255]^ml[o>>8&255]^wl[255&o]}encrypt(t){if(16!=t.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=el(this,tl,"f").length-1,n=[0,0,0,0];let r=bl(t);for(let t=0;t<4;t++)r[t]^=el(this,tl,"f")[0][t];for(let t=1;t<e;t++){for(let e=0;e<4;e++)n[e]=al[r[e]>>24&255]^cl[r[(e+1)%4]>>16&255]^ul[r[(e+2)%4]>>8&255]^ll[255&r[(e+3)%4]]^el(this,tl,"f")[t][e];r=n.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=el(this,tl,"f")[e][t],s[4*t]=255&(il[r[t]>>24&255]^i>>24),s[4*t+1]=255&(il[r[(t+1)%4]>>16&255]^i>>16),s[4*t+2]=255&(il[r[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(il[255&r[(t+3)%4]]^i);return s}decrypt(t){if(16!=t.length)throw new TypeError("invalid ciphertext size (must be 16 bytes)");const e=el(this,Xu,"f").length-1,n=[0,0,0,0];let r=bl(t);for(let t=0;t<4;t++)r[t]^=el(this,Xu,"f")[0][t];for(let t=1;t<e;t++){for(let e=0;e<4;e++)n[e]=hl[r[e]>>24&255]^fl[r[(e+3)%4]>>16&255]^dl[r[(e+2)%4]>>8&255]^pl[255&r[(e+1)%4]]^el(this,Xu,"f")[t][e];r=n.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=el(this,Xu,"f")[e][t],s[4*t]=255&(ol[r[t]>>24&255]^i>>24),s[4*t+1]=255&(ol[r[(t+3)%4]>>16&255]^i>>16),s[4*t+2]=255&(ol[r[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(ol[255&r[(t+1)%4]]^i);return s}}Zu=new WeakMap,Xu=new WeakMap,tl=new WeakMap;class vl{constructor(t,e,n){if(n&&!(this instanceof n))throw new Error(`${t} must be instantiated with "new"`);Object.defineProperties(this,{aes:{enumerable:!0,value:new Al(e)},name:{enumerable:!0,value:t}})}}var El,kl,Nl=function(t,e,n,r,s){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?s.call(t,n):s?s.value=n:e.set(t,n),n},xl=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)};class Tl extends vl{constructor(t,e){if(super("ECC",t,Tl),El.set(this,void 0),kl.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");Nl(this,El,new Uint8Array(e),"f")}else Nl(this,El,new Uint8Array(16),"f");Nl(this,kl,this.iv,"f")}get iv(){return new Uint8Array(xl(this,El,"f"))}encrypt(t){if(t.length%16)throw new TypeError("invalid plaintext size (must be multiple of 16 bytes)");const e=new Uint8Array(t.length);for(let n=0;n<t.length;n+=16){for(let e=0;e<16;e++)xl(this,kl,"f")[e]^=t[n+e];Nl(this,kl,this.aes.encrypt(xl(this,kl,"f")),"f"),e.set(xl(this,kl,"f"),n)}return e}decrypt(t){if(t.length%16)throw new TypeError("invalid ciphertext size (must be multiple of 16 bytes)");const e=new Uint8Array(t.length);for(let n=0;n<t.length;n+=16){const r=this.aes.decrypt(t.subarray(n,n+16));for(let s=0;s<16;s++)e[n+s]=r[s]^xl(this,kl,"f")[s],xl(this,kl,"f")[s]=t[n+s]}return e}}El=new WeakMap,kl=new WeakMap;var Ol,Sl,Pl,Rl=function(t,e,n,r,s){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?s.call(t,n):s?s.value=n:e.set(t,n),n},Il=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)};class Cl extends vl{constructor(t,e){super("CTR",t,Cl),Ol.set(this,void 0),Sl.set(this,void 0),Pl.set(this,void 0),Rl(this,Pl,new Uint8Array(16),"f"),Il(this,Pl,"f").fill(0),Rl(this,Ol,Il(this,Pl,"f"),"f"),Rl(this,Sl,16,"f"),null==e&&(e=1),"number"==typeof e?this.setCounterValue(e):this.setCounterBytes(e)}get counter(){return new Uint8Array(Il(this,Pl,"f"))}setCounterValue(t){if(!Number.isInteger(t)||t<0||t>Number.MAX_SAFE_INTEGER)throw new TypeError("invalid counter initial integer value");for(let e=15;e>=0;--e)Il(this,Pl,"f")[e]=t%256,t=Math.floor(t/256)}setCounterBytes(t){if(16!==t.length)throw new TypeError("invalid counter initial Uint8Array value length");Il(this,Pl,"f").set(t)}increment(){for(let t=15;t>=0;t--){if(255!==Il(this,Pl,"f")[t]){Il(this,Pl,"f")[t]++;break}Il(this,Pl,"f")[t]=0}}encrypt(t){var e,n;const r=new Uint8Array(t);for(let t=0;t<r.length;t++)16===Il(this,Sl,"f")&&(Rl(this,Ol,this.aes.encrypt(Il(this,Pl,"f")),"f"),Rl(this,Sl,0,"f"),this.increment()),r[t]^=Il(this,Ol,"f")[(Rl(this,Sl,(n=Il(this,Sl,"f"),e=n++,n),"f"),e)];return r}decrypt(t){return this.encrypt(t)}}function Bl(t){return"string"!=typeof t||t.startsWith("0x")||(t="0x"+t),x(t)}function Dl(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function Ul(t){return"string"==typeof t?rt(t,"NFKC"):x(t)}function Ll(t,e){const n=e.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);w(null!=n,"invalid path","path",e);const r=n[1],s=n[3],i="!"===n[4];let o=t;for(const t of r.toLowerCase().split(".")){if(Array.isArray(o)){if(!t.match(/^[0-9]+$/))break;o=o[parseInt(t)]}else if("object"==typeof o){let e=null;for(const n in o)if(n.toLowerCase()===t){e=o[n];break}o=e}else o=null;if(null==o)break}if(w(!i||null!=o,"missing required value","path",r),s&&null!=o){if("int"===s){if("string"==typeof o&&o.match(/^-?[0-9]+$/))return parseInt(o);if(Number.isSafeInteger(o))return o}if("number"===s&&"string"==typeof o&&o.match(/^-?[0-9.]*$/))return parseFloat(o);if("data"===s&&"string"==typeof o)return Bl(o);if("array"===s&&Array.isArray(o))return o;if(s===typeof o)return o;w(!1,`wrong type found for ${s} `,"path",r)}return o}Ol=new WeakMap,Sl=new WeakMap,Pl=new WeakMap;const Fl="m/44'/60'/0'/0/0";function Ml(t){try{const e=JSON.parse(t);if(3===(null!=e.version?parseInt(e.version):0))return!0}catch(t){}return!1}function Gl(t,e){const n=N(e),r=Ll(t,"crypto.ciphertext:data!");w(P(sn(R([n.slice(16,32),r]))).substring(2)===Ll(t,"crypto.mac:string!").toLowerCase(),"incorrect password","password","[ REDACTED ]");const s=function(t,e,n){if("aes-128-ctr"===Ll(t,"crypto.cipher:string")){const r=Ll(t,"crypto.cipherparams.iv:data!");return P(new Cl(e,r).decrypt(n))}m(!1,"unsupported cipher","UNSUPPORTED_OPERATION",{operation:"decrypt"})}(t,n.slice(0,16),r),i=Zi(s);if(t.address){let e=t.address.toLowerCase();e.startsWith("0x")||(e="0x"+e),w(gs(e)===i,"keystore address/privateKey mismatch","address",t.address)}const o={address:i,privateKey:s};if("0.1"===Ll(t,"x-ethers.version:string")){const e=n.slice(32,64),r=Ll(t,"x-ethers.mnemonicCiphertext:data!"),s=Ll(t,"x-ethers.mnemonicCounter:data!"),i=new Cl(e,s);o.mnemonic={path:Ll(t,"x-ethers.path:string")||Fl,locale:Ll(t,"x-ethers.locale:string")||"en",entropy:P(N(i.decrypt(r)))}}return o}function jl(t){const e=Ll(t,"crypto.kdf:string");if(e&&"string"==typeof e){if("scrypt"===e.toLowerCase()){const n=Ll(t,"crypto.kdfparams.salt:data!"),r=Ll(t,"crypto.kdfparams.n:int!"),s=Ll(t,"crypto.kdfparams.r:int!"),i=Ll(t,"crypto.kdfparams.p:int!");w(r>0&&!(r&r-1),"invalid kdf.N","kdf.N",r),w(s>0&&i>0,"invalid kdf","kdf",e);const o=Ll(t,"crypto.kdfparams.dklen:int!");return w(32===o,"invalid kdf.dklen","kdf.dflen",o),{name:"scrypt",salt:n,N:r,r:s,p:i,dkLen:64}}if("pbkdf2"===e.toLowerCase()){const e=Ll(t,"crypto.kdfparams.salt:data!"),n=Ll(t,"crypto.kdfparams.prf:string!"),r=n.split("-").pop();w("sha256"===r||"sha512"===r,"invalid kdf.pdf","kdf.pdf",n);const s=Ll(t,"crypto.kdfparams.c:int!"),i=Ll(t,"crypto.kdfparams.dklen:int!");return w(32===i,"invalid kdf.dklen","kdf.dklen",i),{name:"pbkdf2",salt:e,count:s,dkLen:i,algorithm:r}}}w(!1,"unsupported key-derivation function","kdf",e)}function _l(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}function Hl(t){const e=null!=t.salt?N(t.salt,"options.salt"):In(32);let n=1<<17,r=8,s=1;return t.scrypt&&(t.scrypt.N&&(n=t.scrypt.N),t.scrypt.r&&(r=t.scrypt.r),t.scrypt.p&&(s=t.scrypt.p)),w("number"==typeof n&&n>0&&Number.isSafeInteger(n)&&(BigInt(n)&BigInt(n-1))===BigInt(0),"invalid scrypt N parameter","options.N",n),w("number"==typeof r&&r>0&&Number.isSafeInteger(r),"invalid scrypt r parameter","options.r",r),w("number"==typeof s&&s>0&&Number.isSafeInteger(s),"invalid scrypt p parameter","options.p",s),{name:"scrypt",dkLen:32,salt:e,N:n,r:r,p:s}}function Kl(t,e,n,r){const s=N(n.privateKey,"privateKey"),i=null!=r.iv?N(r.iv,"options.iv"):In(16);w(16===i.length,"invalid options.iv length","options.iv",r.iv);const o=null!=r.uuid?N(r.uuid,"options.uuid"):In(16);w(16===o.length,"invalid options.uuid length","options.uuid",r.iv);const a=t.slice(0,16),c=t.slice(16,32),l=N(new Cl(a,i).encrypt(s)),h=sn(R([c,l])),f={address:n.address.substring(2).toLowerCase(),id:St(o),version:3,Crypto:{cipher:"aes-128-ctr",cipherparams:{iv:P(i).substring(2)},ciphertext:P(l).substring(2),kdf:"scrypt",kdfparams:{salt:P(e.salt).substring(2),n:e.N,dklen:32,p:e.p,r:e.r},mac:h.substring(2)}};if(n.mnemonic){const e=null!=r.client?r.client:`ethers/${u}`,s=n.mnemonic.path||Fl,i=n.mnemonic.locale||"en",o=t.slice(32,64),a=N(n.mnemonic.entropy,"account.mnemonic.entropy"),c=In(16),l=N(new Cl(o,c).encrypt(a)),h=new Date,d="UTC--"+(h.getUTCFullYear()+"-"+Dl(h.getUTCMonth()+1,2)+"-"+Dl(h.getUTCDate(),2)+"T"+Dl(h.getUTCHours(),2)+"-"+Dl(h.getUTCMinutes(),2)+"-"+Dl(h.getUTCSeconds(),2)+".0Z")+"--"+f.address;f["x-ethers"]={client:e,gethFilename:d,path:s,locale:i,mnemonicCounter:P(c).substring(2),mnemonicCiphertext:P(l).substring(2),version:"0.1"}}return JSON.stringify(f)}function Vl(t,e,n){null==n&&(n={});const r=Ul(e),s=Hl(n);return Kl(N(Vn(r,s.salt,s.N,s.r,s.p,64)),s,t,n)}async function Ql(t,e,n){null==n&&(n={});const r=Ul(e),s=Hl(n);return Kl(N(await Kn(r,s.salt,s.N,s.r,s.p,64,n.progressCallback)),s,t,n)}const Jl="m/44'/60'/0'/0/0",zl=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),ql=2147483648,$l=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Wl(t,e){let n="";for(;t;)n="0123456789abcdef"[t%16]+n,t=Math.trunc(t/16);for(;n.length<2*e;)n="0"+n;return"0x"+n}function Yl(t){const e=N(t);return X(R([e,C(qn(qn(e)),0,4)]))}const Zl={};function Xl(t,e,n,r){const s=new Uint8Array(37);t&ql?(m(null!=r,"cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"}),s.set(N(r),1)):s.set(N(n));for(let e=24;e>=0;e-=8)s[33+(e>>3)]=t>>24-e&255;const i=N(Ge("sha512",e,s));return{IL:i.slice(0,32),IR:i.slice(32)}}function th(t,e){const n=e.split("/");w(n.length>0,"invalid path","path",e),"m"===n[0]&&(w(0===t.depth,`cannot derive root path (i.e. path starting with "m/") for a node at non-zero depth ${t.depth}`,"path",e),n.shift());let r=t;for(let t=0;t<n.length;t++){const e=n[t];if(e.match(/^[0-9]+'$/)){const n=parseInt(e.substring(0,e.length-1));w(n<ql,"invalid path index",`path[${t}]`,e),r=r.deriveChild(ql+n)}else if(e.match(/^[0-9]+$/)){const n=parseInt(e);w(n<ql,"invalid path index",`path[${t}]`,e),r=r.deriveChild(n)}else w(!1,"invalid path component",`path[${t}]`,e)}return r}class eh extends Mu{publicKey;fingerprint;parentFingerprint;mnemonic;chainCode;path;index;depth;constructor(t,e,n,r,s,i,o,a,c){super(e,c),E(t,Zl,"HDNodeWallet"),f(this,{publicKey:e.compressedPublicKey});f(this,{parentFingerprint:n,fingerprint:C(kn(qn(this.publicKey)),0,4),chainCode:r,path:s,index:i,depth:o}),f(this,{mnemonic:a})}connect(t){return new eh(Zl,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,t)}#me(){const t={address:this.address,privateKey:this.privateKey},e=this.mnemonic;return this.path&&e&&"en"===e.wordlist.locale&&""===e.password&&(t.mnemonic={path:this.path,locale:"en",entropy:e.entropy}),t}async encrypt(t,e){return await Ql(this.#me(),t,{progressCallback:e})}encryptSync(t){return Vl(this.#me(),t)}get extendedKey(){return m(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Yl(R(["0x0488ADE4",Wl(this.depth,1),this.parentFingerprint,Wl(this.index,4),this.chainCode,R(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new nh(Zl,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(t){const e=V(t,"index");w(e<=4294967295,"invalid index","index",e);let n=this.path;n&&(n+="/"+(2147483647&e),e&ql&&(n+="'"));const{IR:r,IL:s}=Xl(e,this.chainCode,this.publicKey,this.privateKey),i=new us(Q((K(s)+BigInt(this.privateKey))%$l,32));return new eh(Zl,i,this.fingerprint,P(r),n,e,this.depth+1,this.mnemonic,this.provider)}derivePath(t){return th(this,t)}static#we(t,e){w(O(t),"invalid seed","seed","[REDACTED]");const n=N(t,"seed");w(n.length>=16&&n.length<=64,"invalid seed","seed","[REDACTED]");const r=N(Ge("sha512",zl,n)),s=new us(P(r.slice(0,32)));return new eh(Zl,s,"0x00000000",P(r.slice(32)),"m",0,0,e,null)}static fromExtendedKey(t){const e=J(function(t){let e=Y;for(let n=0;n<t.length;n++)e*=Z,e+=W(t[n]);return e}(t));w(82===e.length||Yl(e.slice(0,78))===t,"invalid extended key","extendedKey","[ REDACTED ]");const n=e[4],r=P(e.slice(5,9)),s=parseInt(P(e.slice(9,13)).substring(2),16),i=P(e.slice(13,45)),o=e.slice(45,78);switch(P(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const t=P(o);return new nh(Zl,Zi(t),t,r,i,null,s,n,null)}case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new eh(Zl,new us(o.slice(1)),r,i,null,s,n,null,null)}w(!1,"invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(t,e,n){null==t&&(t=""),null==e&&(e=Jl),null==n&&(n=Ju.wordlist());const r=Yu.fromEntropy(In(16),t,n);return eh.#we(r.computeSeed(),r).derivePath(e)}static fromMnemonic(t,e){return e||(e=Jl),eh.#we(t.computeSeed(),t).derivePath(e)}static fromPhrase(t,e,n,r){null==e&&(e=""),null==n&&(n=Jl),null==r&&(r=Ju.wordlist());const s=Yu.fromPhrase(t,e,r);return eh.#we(s.computeSeed(),s).derivePath(n)}static fromSeed(t){return eh.#we(t,null)}}class nh extends vu{publicKey;fingerprint;parentFingerprint;chainCode;path;index;depth;constructor(t,e,n,r,s,i,o,a,c){super(e,c),E(t,Zl,"HDNodeVoidWallet"),f(this,{publicKey:n});f(this,{publicKey:n,fingerprint:C(kn(qn(n)),0,4),parentFingerprint:r,chainCode:s,path:i,index:o,depth:a})}connect(t){return new nh(Zl,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,t)}get extendedKey(){return m(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Yl(R(["0x0488B21E",Wl(this.depth,1),this.parentFingerprint,Wl(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(t){const e=V(t,"index");w(e<=4294967295,"invalid index","index",e);let n=this.path;n&&(n+="/"+(2147483647&e),e&ql&&(n+="'"));const{IR:r,IL:s}=Xl(e,this.chainCode,this.publicKey,null),i=us.addPoints(s,this.publicKey,!0),o=Zi(i);return new nh(Zl,o,i,this.fingerprint,P(r),n,e,this.depth+1,this.provider)}derivePath(t){return th(this,t)}}function rh(t){try{if(JSON.parse(t).encseed)return!0}catch(t){}return!1}function sh(t,e){const n=JSON.parse(t),r=Ul(e),s=gs(Ll(n,"ethaddr:string!")),i=Bl(Ll(n,"encseed:string!"));w(i&&i.length%16==0,"invalid encseed","json",t);const o=N(On(r,r,2e3,32,"sha256")).slice(0,16),a=i.slice(0,16),c=i.slice(16),u=function(t){if(t.length<16)throw new TypeError("PKCS#7 invalid length");const e=t[t.length-1];if(e>16)throw new TypeError("PKCS#7 padding byte out of range");const n=t.length-e;for(let r=0;r<e;r++)if(t[n+r]!==e)throw new TypeError("PKCS#7 invalid padding byte");return new Uint8Array(t.subarray(0,n))}(N(new Tl(o,a).decrypt(c)));let l="";for(let t=0;t<u.length;t++)l+=String.fromCharCode(u[t]);return{address:s,privateKey:_s(l)}}function ih(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}class oh extends Mu{constructor(t,e){"string"!=typeof t||t.startsWith("0x")||(t="0x"+t),super("string"==typeof t?new us(t):t,e)}connect(t){return new oh(this.signingKey,t)}async encrypt(t,e){const n={address:this.address,privateKey:this.privateKey};return await Ql(n,t,{progressCallback:e})}encryptSync(t){return Vl({address:this.address,privateKey:this.privateKey},t)}static#be(t){if(w(t,"invalid JSON wallet","json","[ REDACTED ]"),"mnemonic"in t&&t.mnemonic&&"en"===t.mnemonic.locale){const e=Yu.fromEntropy(t.mnemonic.entropy),n=eh.fromMnemonic(e,t.mnemonic.path);if(n.address===t.address&&n.privateKey===t.privateKey)return n;console.log("WARNING: JSON mismatch address/privateKey != mnemonic; fallback onto private key")}const e=new oh(t.privateKey);return w(e.address===t.address,"address/privateKey mismatch","json","[ REDACTED ]"),e}static async fromEncryptedJson(t,e,n){let r=null;return Ml(t)?r=await async function(t,e,n){const r=JSON.parse(t),s=Ul(e),i=jl(r);if("pbkdf2"===i.name){n&&(n(0),await _l(0));const{salt:t,count:e,dkLen:o,algorithm:a}=i,c=On(s,t,e,o,a);return n&&(n(1),await _l(0)),Gl(r,c)}m("scrypt"===i.name,"cannot be reached","UNKNOWN_ERROR",{params:i});const{salt:o,N:a,r:c,p:u,dkLen:l}=i;return Gl(r,await Kn(s,o,a,c,u,l,n))}(t,e,n):rh(t)&&(n&&(n(0),await ih(0)),r=sh(t,e),n&&(n(1),await ih(0))),oh.#be(r)}static fromEncryptedJsonSync(t,e){let n=null;return Ml(t)?n=function(t,e){const n=JSON.parse(t),r=Ul(e),s=jl(n);if("pbkdf2"===s.name){const{salt:t,count:e,dkLen:i,algorithm:o}=s;return Gl(n,On(r,t,e,i,o))}m("scrypt"===s.name,"cannot be reached","UNKNOWN_ERROR",{params:s});const{salt:i,N:o,r:a,p:c,dkLen:u}=s;return Gl(n,Vn(r,i,o,a,c,u))}(t,e):rh(t)?n=sh(t,e):w(!1,"invalid JSON wallet","json","[ REDACTED ]"),oh.#be(n)}static createRandom(t){const e=eh.createRandom();return t?e.connect(t):e}static fromPhrase(t,e){const n=eh.fromPhrase(t);return e?n.connect(e):n}}let ah={PROOF_OF_INTEGRITY_ADDRESS:"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",STEALTH_ANNOUNCER_ADDRESS:"0x5FbDB2315678afecb367f032d93F642f64180aa3"};if("undefined"==typeof window){const{fileURLToPath:t}=require("url"),{dirname:n}=require("path"),{readFileSync:r}=require("fs"),{join:s}=require("path");try{const i=t("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(i).href:"undefined"==typeof document?location.href:e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("gun-eth.min.js",document.baseURI).href),o=r(s(n(i),"contract-address.json"),"utf8");ah=JSON.parse(o),console.log("Loaded contract addresses:",ah)}catch(t){console.warn("Warning: contract-address.json not found or invalid")}}const ch={CHAIN_ID:1337,PROOF_OF_INTEGRITY_ADDRESS:ah.PROOF_OF_INTEGRITY_ADDRESS,STEALTH_ANNOUNCER_ADDRESS:ah.STEALTH_ANNOUNCER_ADDRESS,RPC_URL:"http://127.0.0.1:8545",GUN_PEER:"http://localhost:8765/gun"};process.env.NODE_ENV;const uh="development"===process.env.NODE_ENV?ch.PROOF_OF_INTEGRITY_ADDRESS:"0x...";process.env.NODE_ENV;const lh=[{inputs:[{internalType:"bytes[]",name:"nodeIds",type:"bytes[]"},{internalType:"bytes32[]",name:"contentHashes",type:"bytes32[]"}],name:"batchUpdateData",outputs:[],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes",name:"nodeId",type:"bytes"},{indexed:!1,internalType:"bytes32",name:"contentHash",type:"bytes32"},{indexed:!1,internalType:"address",name:"updater",type:"address"}],name:"DataUpdated",type:"event"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"}],name:"getLatestRecord",outputs:[{internalType:"bytes32",name:"",type:"bytes32"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"},{internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"updateData",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"},{internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"verifyData",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}];let hh,fh="",dh="";const ph="Access GunDB with Ethereum";let gh={PROOF_OF_INTEGRITY_ADDRESS:null,STEALTH_ANNOUNCER_ADDRESS:null};if("undefined"==typeof window){const{fileURLToPath:t}=require("url"),{dirname:n}=require("path"),{readFileSync:r}=require("fs"),s=require("path"),i=t("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(i).href:"undefined"==typeof document?location.href:e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("gun-eth.min.js",document.baseURI).href),o=n(i);try{const t=r(s.join(o,"contract-address.json"),"utf8");gh=JSON.parse(t),console.log("Loaded contract addresses:",gh)}catch(t){console.warn("Warning: contract-address.json not found or invalid")}}function yh(){return P(In(32)).slice(2)}function mh(t){try{const e=sn(P(t));return console.log("Generated password:",e),e}catch(t){return console.error("Error generating password:",t),null}}function wh(t){const e="0x"+(t=>{const e="=".repeat((4-t.length%4)%4),n=t.replace(/-/g,"+").replace(/_/g,"/")+e,r=atob(n);return Array.from(r,(t=>t.charCodeAt(0).toString(16).padStart(2,"0"))).join("")})(t),n=new oh(e);return{account:n,publicKey:n.address,privateKey:e}}const bh=async()=>{if(fh&&dh){const t=new Du(fh,{chainId:ch.CHAIN_ID,name:"localhost"});return new oh(dh,t)}if("undefined"!=typeof window&&void 0!==window.ethereum){await window.ethereum.request({method:"eth_requestAccounts"});return new Fu(window.ethereum).getSigner()}throw new Error("No valid Ethereum provider found")};function Ah(t,e){try{const n=Buffer.from(t,"base64"),r=sn(R([n,N(e)])),s=new oh(r);return console.log("Debug deriveStealthAddress:",{sharedSecretHex:P(n),spendingPublicKey:e,stealthPrivateKey:r,stealthAddress:s.address}),{stealthPrivateKey:r,stealthAddress:s.address,wallet:s}}catch(t){throw console.error("Error in deriveStealthAddress:",t),t}}o.chain.MESSAGE_TO_SIGN=ph,o.chain.setSigner=function(t,e){return fh=t,dh=e,console.log("Standalone configuration set"),this},o.chain.verifySignature=async function(t,e){try{const n=function(t,e){return Xi(wo(t),e)}(t,e);return n}catch(t){return console.error("Error verifying signature:",t),null}},o.chain.generatePassword=function(t){return mh(t)},o.chain.createSignature=async function(t){try{if(t!==ph)throw new Error("Invalid message, valid message is: "+ph);const e=await bh(),n=await e.signMessage(t);return console.log("Signature created:",n),n}catch(t){return console.error("Error creating signature:",t),null}},o.chain.createAndStoreEncryptedPair=async function(t,e){try{const n=this,r=await c.pair(),s=await c.pair(),i=await c.pair(),o=mh(e),a=await c.encrypt(JSON.stringify(r),o),u=await c.encrypt(JSON.stringify(s),o),l=await c.encrypt(JSON.stringify(i),o),h=wh(s.priv),f=wh(i.priv);await n.get("gun-eth").get("users").get(t).put({pair:a,v_pair:u,s_pair:l,publicKeys:{viewingPublicKey:s.epub,viewingPublicKey:s.epub,spendingPublicKey:f.publicKey,ethViewingAddress:h.publicKey}}),console.log("Encrypted pairs and public keys stored for:",t)}catch(t){throw console.error("Error creating and storing encrypted pair:",t),t}},o.chain.getAndDecryptPair=async function(t,e){try{const n=this,r=await n.get("gun-eth").get("users").get(t).get("pair").then();if(!r)throw new Error("No encrypted data found for this address");const s=await c.decrypt(r,e);return console.log(s),s}catch(t){return console.error("Error retrieving and decrypting pair:",t),null}},o.chain.proof=function(t,e,n,r){if(console.log("Proof plugin called with:",{chain:t,nodeId:e,data:n}),"function"!=typeof r)return console.error("Callback must be a function"),this;const s=this;if("optimismSepolia"!==t&&"localhost"!==t)return r({err:"Chain not supported"}),this;if(hh="development"===process.env.NODE_ENV?ch.PROOF_OF_INTEGRITY_ADDRESS:uh,console.log("Using contract address:",hh),!hh)return r({err:"Contract address not found. Did you deploy the contract?"}),this;if(e&&!n)s.get(e).once((async t=>{if(!t)return void(r&&r({err:"Node not found in GunDB"}));console.log("existingData",t);const n=t._contentHash;if(console.log("contentHash",n),n)try{const{isValid:t,timestamp:s,updater:i}=await(async(t,e)=>{console.log("Verifying on chain:",{nodeId:t,contentHash:e});const n=await bh(),r=new kc(hh,lh,n),[s,i,o]=await r.verifyData(rt(t),e);return console.log("Verification result:",{isValid:s,timestamp:i,updater:o}),{isValid:s,timestamp:i,updater:o}})(e,n),o=await(async t=>{const e=await bh(),n=new kc(hh,lh,e),[r,s,i]=await n.getLatestRecord(rt(t));return console.log("Latest record from blockchain:",{nodeId:t,contentHash:r,timestamp:s,updater:i}),{contentHash:r,timestamp:s,updater:i}})(e);t?r&&r({ok:!0,message:"Data verified on blockchain",timestamp:s,updater:i,latestRecord:o}):r&&r({ok:!1,message:"Data not verified on blockchain",latestRecord:o})}catch(t){r&&r({err:t.message})}else r&&r({err:"No content hash found for this node"})}));else if(n&&!e){const t=yh(),e=sn(rt(JSON.stringify(n)));s.get(t).put({...n,_contentHash:e},(async n=>{if(console.log("ack",n),n.err)r&&r({err:"Error saving data to GunDB"});else try{const n=await(async(t,e)=>{console.log("Writing on chain:",{nodeId:t,contentHash:e});const n=await bh(),r=new kc(hh,lh,n),s=await r.updateData(rt(t),e);console.log("Transaction sent:",s.hash);const i=await s.wait();return console.log("Transaction confirmed:",i),s})(t,e);r&&r({ok:!0,message:"Data written to GunDB and blockchain",nodeId:t,txHash:n.hash})}catch(t){r&&r({err:t.message})}}))}else r&&r({err:"Invalid input. Provide either nodeId or data, not both."});return s},o.chain.gunToEthAccount=function(t){return wh(t)},o.chain.generateStealthAddress=async function(t,e){try{const n=this,r=await n.get("gun-eth").get("users").get(t).get("publicKeys").then();if(!r||!r.viewingPublicKey||!r.spendingPublicKey)throw new Error("Recipient's public keys not found");const s=await this.verifySignature(ph,e),i=mh(e),o=await n.get("gun-eth").get("users").get(s).then();if(!o||!o.s_pair)throw new Error("Sender's keys not found");let a;try{const t=await c.decrypt(o.s_pair,i);a="string"==typeof t?JSON.parse(t):t}catch(t){throw console.error("Error decrypting spending pair:",t),new Error("Unable to decrypt spending pair")}const u=await c.secret(r.viewingPublicKey,a);if(!u)throw new Error("Unable to generate shared secret");console.log("Generate shared secret:",u);const{stealthAddress:l}=Ah(u,r.spendingPublicKey);return{stealthAddress:l,senderPublicKey:a.epub,spendingPublicKey:r.spendingPublicKey}}catch(t){throw console.error("Error generating stealth address:",t),t}},o.chain.publishStealthKeys=async function(t){try{const e=this,n=await this.verifySignature(ph,t),r=mh(t),s=await e.get("gun-eth").get("users").get(n).then();if(!s||!s.v_pair||!s.s_pair)throw new Error("Keys not found");const i=JSON.parse(await c.decrypt(s.v_pair,r)),o=JSON.parse(await c.decrypt(s.s_pair,r)),a=wh(i.priv),u=wh(o.priv);await e.get("gun-eth").get("users").get(n).get("publicKeys").put({viewingPublicKey:a.publicKey,spendingPublicKey:u.publicKey}),console.log("Stealth public keys published successfully")}catch(t){throw console.error("Error publishing stealth keys:",t),t}},o.chain.recoverStealthFunds=async function(t,e,n,r){try{const s=this,i=mh(n),o=await this.verifySignature(ph,n),a=await s.get("gun-eth").get("users").get(o).then();if(!a||!a.v_pair||!a.s_pair)throw new Error("Keys not found");let u;try{const t=await c.decrypt(a.v_pair,i);u="string"==typeof t?JSON.parse(t):t}catch(t){throw console.error("Error decrypting keys:",t),new Error("Unable to decrypt keys")}const l=await c.secret(e,u);if(!l)throw new Error("Unable to generate shared secret");console.log("Recover shared secret:",l);const{wallet:h,stealthAddress:f}=Ah(l,r);if(f.toLowerCase()!==t.toLowerCase())throw console.error("Mismatch:",{recovered:f,expected:t,sharedSecret:l}),new Error("Recovered stealth address does not match");return{wallet:h,address:f}}catch(t){throw console.error("Error recovering stealth funds:",t),t}},o.chain.announceStealthPayment=async function(t,e,n,r,s={onChain:!1}){try{const i=this,o=await this.verifySignature(ph,r);if(s.onChain){const r=await bh(),s="development"===process.env.NODE_ENV?ch.STEALTH_ANNOUNCER_ADDRESS:STEALTH_ANNOUNCER_ADDRESS;console.log("Using contract address:",s);const i=new kc(s,STEALTH_ANNOUNCER_ABI,r),o=await i.devFee();console.log("Dev fee:",o.toString());const a=await i.announcePayment(e,n,t,{value:o});console.log("Transaction sent:",a.hash);const c=await a.wait();console.log("Transaction confirmed:",c.hash),console.log("Stealth payment announced on-chain (dev fee paid)")}else await i.get("gun-eth").get("stealth-payments").set({stealthAddress:t,senderAddress:o,senderPublicKey:e,spendingPublicKey:n,timestamp:Date.now()}),console.log("Stealth payment announced off-chain")}catch(t){throw console.error("Error announcing stealth payment:",t),console.error("Error details:",t.stack),t}},o.chain.getStealthPayments=async function(t,e={source:"both"}){try{const n=[];if("onChain"===e.source||"both"===e.source){const e=await bh(),r="development"===process.env.NODE_ENV?ch.STEALTH_ANNOUNCER_ADDRESS:STEALTH_ANNOUNCER_ADDRESS,s=new kc(r,STEALTH_ANNOUNCER_ABI,e);try{const e=await s.getAnnouncementsCount(),r=Number(e.toString());if(console.log("Total on-chain announcements:",r),r>0){const e=100,i=r-1;for(let r=0;r<=i;r+=e){const o=Math.min(r+e-1,i),a=await s.getAnnouncementsInRange(r,o);for(const e of a)try{if(!(e&&e.stealthAddress&&e.senderPublicKey&&e.spendingPublicKey)){console.log("Invalid announcement:",e);continue}const r=await this.recoverStealthFunds(e.stealthAddress,e.senderPublicKey,t,e.spendingPublicKey);n.push({stealthAddress:e.stealthAddress,senderPublicKey:e.senderPublicKey,spendingPublicKey:e.spendingPublicKey,timestamp:Number(e.timestamp),source:"onChain",wallet:r})}catch(t){console.log(`Announcement not for us: ${e.stealthAddress}`);continue}}}}catch(t){console.error("Error retrieving on-chain announcements:",t)}}if("offChain"===e.source||"both"===e.source){const t=this,e=await new Promise((e=>{const n=[];t.get("gun-eth").get("stealth-payments").get(recipientAddress).map().once(((t,e)=>{t?.stealthAddress&&n.push({...t,id:e,source:"offChain"})})),setTimeout((()=>e(n)),2e3)}));n.push(...e)}return console.log(`Found ${n.length} stealth payments`),n}catch(t){throw console.error("Error retrieving stealth payments:",t),t}},o.chain.cleanStealthPayments=async function(t){try{const e=this,n=await e.get("gun-eth").get("stealth-payments").get(t).map().once().then();n&&Object.keys(n).forEach((async r=>{const s=n[r];s&&s.stealthAddress&&s.senderPublicKey&&s.spendingPublicKey||await e.get("gun-eth").get("stealth-payments").get(t).get(r).put(null)}))}catch(t){console.error("Error cleaning stealth payments:",t)}};class vh{static generateRandomId=yh;static generatePassword=mh;static gunToEthAccount=wh;static getSigner=bh;static deriveStealthAddress=Ah;static chainMethods={setSigner:o.chain.setSigner,verifySignature:o.chain.verifySignature,generatePassword:o.chain.generatePassword,createSignature:o.chain.createSignature,createAndStoreEncryptedPair:o.chain.createAndStoreEncryptedPair,getAndDecryptPair:o.chain.getAndDecryptPair,proof:o.chain.proof,gunToEthAccount:o.chain.gunToEthAccount,generateStealthAddress:o.chain.generateStealthAddress,publishStealthKeys:o.chain.publishStealthKeys,recoverStealthFunds:o.chain.recoverStealthFunds,announceStealthPayment:o.chain.announceStealthPayment,getStealthPayments:o.chain.getStealthPayments,cleanStealthPayments:o.chain.cleanStealthPayments};static MESSAGE_TO_SIGN=ph;static PROOF_CONTRACT_ADDRESS=hh;static LOCAL_CONFIG=ch}t.GunEth=vh,t.MESSAGE_TO_SIGN=ph,t.default=o,t.generatePassword=mh,t.gunToEthAccount=wh,Object.defineProperty(t,"__esModule",{value:!0})}));
|
12
|
+
/*! MIT License. Copyright 2015-2022 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */var Zu,Xu,tl,el=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)},nl=function(t,e,n,r,s){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?s.call(t,n):s?s.value=n:e.set(t,n),n};const rl={16:10,24:12,32:14},sl=[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],il=[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],ol=[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],al=[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],cl=[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],ul=[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],ll=[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],hl=[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],fl=[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],dl=[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],pl=[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],gl=[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],yl=[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],ml=[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],wl=[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 bl(t){const e=[];for(let n=0;n<t.length;n+=4)e.push(t[n]<<24|t[n+1]<<16|t[n+2]<<8|t[n+3]);return e}class Al{get key(){return el(this,Zu,"f").slice()}constructor(t){if(Zu.set(this,void 0),Xu.set(this,void 0),tl.set(this,void 0),!(this instanceof Al))throw Error("AES must be instanitated with `new`");nl(this,Zu,new Uint8Array(t),"f");const e=rl[this.key.length];if(null==e)throw new TypeError("invalid key size (must be 16, 24 or 32 bytes)");nl(this,tl,[],"f"),nl(this,Xu,[],"f");for(let t=0;t<=e;t++)el(this,tl,"f").push([0,0,0,0]),el(this,Xu,"f").push([0,0,0,0]);const n=4*(e+1),r=this.key.length/4,s=bl(this.key);let i;for(let t=0;t<r;t++)i=t>>2,el(this,tl,"f")[i][t%4]=s[t],el(this,Xu,"f")[e-i][t%4]=s[t];let o,a=0,c=r;for(;c<n;){if(o=s[r-1],s[0]^=il[o>>16&255]<<24^il[o>>8&255]<<16^il[255&o]<<8^il[o>>24&255]^sl[a]<<24,a+=1,8!=r)for(let t=1;t<r;t++)s[t]^=s[t-1];else{for(let t=1;t<r/2;t++)s[t]^=s[t-1];o=s[r/2-1],s[r/2]^=il[255&o]^il[o>>8&255]<<8^il[o>>16&255]<<16^il[o>>24&255]<<24;for(let t=r/2+1;t<r;t++)s[t]^=s[t-1]}let t,i,u=0;for(;u<r&&c<n;)t=c>>2,i=c%4,el(this,tl,"f")[t][i]=s[u],el(this,Xu,"f")[e-t][i]=s[u++],c++}for(let t=1;t<e;t++)for(let e=0;e<4;e++)o=el(this,Xu,"f")[t][e],el(this,Xu,"f")[t][e]=gl[o>>24&255]^yl[o>>16&255]^ml[o>>8&255]^wl[255&o]}encrypt(t){if(16!=t.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=el(this,tl,"f").length-1,n=[0,0,0,0];let r=bl(t);for(let t=0;t<4;t++)r[t]^=el(this,tl,"f")[0][t];for(let t=1;t<e;t++){for(let e=0;e<4;e++)n[e]=al[r[e]>>24&255]^cl[r[(e+1)%4]>>16&255]^ul[r[(e+2)%4]>>8&255]^ll[255&r[(e+3)%4]]^el(this,tl,"f")[t][e];r=n.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=el(this,tl,"f")[e][t],s[4*t]=255&(il[r[t]>>24&255]^i>>24),s[4*t+1]=255&(il[r[(t+1)%4]>>16&255]^i>>16),s[4*t+2]=255&(il[r[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(il[255&r[(t+3)%4]]^i);return s}decrypt(t){if(16!=t.length)throw new TypeError("invalid ciphertext size (must be 16 bytes)");const e=el(this,Xu,"f").length-1,n=[0,0,0,0];let r=bl(t);for(let t=0;t<4;t++)r[t]^=el(this,Xu,"f")[0][t];for(let t=1;t<e;t++){for(let e=0;e<4;e++)n[e]=hl[r[e]>>24&255]^fl[r[(e+3)%4]>>16&255]^dl[r[(e+2)%4]>>8&255]^pl[255&r[(e+1)%4]]^el(this,Xu,"f")[t][e];r=n.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=el(this,Xu,"f")[e][t],s[4*t]=255&(ol[r[t]>>24&255]^i>>24),s[4*t+1]=255&(ol[r[(t+3)%4]>>16&255]^i>>16),s[4*t+2]=255&(ol[r[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(ol[255&r[(t+1)%4]]^i);return s}}Zu=new WeakMap,Xu=new WeakMap,tl=new WeakMap;class vl{constructor(t,e,n){if(n&&!(this instanceof n))throw new Error(`${t} must be instantiated with "new"`);Object.defineProperties(this,{aes:{enumerable:!0,value:new Al(e)},name:{enumerable:!0,value:t}})}}var El,kl,Nl=function(t,e,n,r,s){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?s.call(t,n):s?s.value=n:e.set(t,n),n},xl=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)};class Tl extends vl{constructor(t,e){if(super("ECC",t,Tl),El.set(this,void 0),kl.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");Nl(this,El,new Uint8Array(e),"f")}else Nl(this,El,new Uint8Array(16),"f");Nl(this,kl,this.iv,"f")}get iv(){return new Uint8Array(xl(this,El,"f"))}encrypt(t){if(t.length%16)throw new TypeError("invalid plaintext size (must be multiple of 16 bytes)");const e=new Uint8Array(t.length);for(let n=0;n<t.length;n+=16){for(let e=0;e<16;e++)xl(this,kl,"f")[e]^=t[n+e];Nl(this,kl,this.aes.encrypt(xl(this,kl,"f")),"f"),e.set(xl(this,kl,"f"),n)}return e}decrypt(t){if(t.length%16)throw new TypeError("invalid ciphertext size (must be multiple of 16 bytes)");const e=new Uint8Array(t.length);for(let n=0;n<t.length;n+=16){const r=this.aes.decrypt(t.subarray(n,n+16));for(let s=0;s<16;s++)e[n+s]=r[s]^xl(this,kl,"f")[s],xl(this,kl,"f")[s]=t[n+s]}return e}}El=new WeakMap,kl=new WeakMap;var Ol,Sl,Pl,Rl=function(t,e,n,r,s){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?s.call(t,n):s?s.value=n:e.set(t,n),n},Il=function(t,e,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(t):r?r.value:e.get(t)};class Cl extends vl{constructor(t,e){super("CTR",t,Cl),Ol.set(this,void 0),Sl.set(this,void 0),Pl.set(this,void 0),Rl(this,Pl,new Uint8Array(16),"f"),Il(this,Pl,"f").fill(0),Rl(this,Ol,Il(this,Pl,"f"),"f"),Rl(this,Sl,16,"f"),null==e&&(e=1),"number"==typeof e?this.setCounterValue(e):this.setCounterBytes(e)}get counter(){return new Uint8Array(Il(this,Pl,"f"))}setCounterValue(t){if(!Number.isInteger(t)||t<0||t>Number.MAX_SAFE_INTEGER)throw new TypeError("invalid counter initial integer value");for(let e=15;e>=0;--e)Il(this,Pl,"f")[e]=t%256,t=Math.floor(t/256)}setCounterBytes(t){if(16!==t.length)throw new TypeError("invalid counter initial Uint8Array value length");Il(this,Pl,"f").set(t)}increment(){for(let t=15;t>=0;t--){if(255!==Il(this,Pl,"f")[t]){Il(this,Pl,"f")[t]++;break}Il(this,Pl,"f")[t]=0}}encrypt(t){var e,n;const r=new Uint8Array(t);for(let t=0;t<r.length;t++)16===Il(this,Sl,"f")&&(Rl(this,Ol,this.aes.encrypt(Il(this,Pl,"f")),"f"),Rl(this,Sl,0,"f"),this.increment()),r[t]^=Il(this,Ol,"f")[(Rl(this,Sl,(n=Il(this,Sl,"f"),e=n++,n),"f"),e)];return r}decrypt(t){return this.encrypt(t)}}function Bl(t){return"string"!=typeof t||t.startsWith("0x")||(t="0x"+t),x(t)}function Dl(t,e){for(t=String(t);t.length<e;)t="0"+t;return t}function Ul(t){return"string"==typeof t?rt(t,"NFKC"):x(t)}function Ll(t,e){const n=e.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);w(null!=n,"invalid path","path",e);const r=n[1],s=n[3],i="!"===n[4];let o=t;for(const t of r.toLowerCase().split(".")){if(Array.isArray(o)){if(!t.match(/^[0-9]+$/))break;o=o[parseInt(t)]}else if("object"==typeof o){let e=null;for(const n in o)if(n.toLowerCase()===t){e=o[n];break}o=e}else o=null;if(null==o)break}if(w(!i||null!=o,"missing required value","path",r),s&&null!=o){if("int"===s){if("string"==typeof o&&o.match(/^-?[0-9]+$/))return parseInt(o);if(Number.isSafeInteger(o))return o}if("number"===s&&"string"==typeof o&&o.match(/^-?[0-9.]*$/))return parseFloat(o);if("data"===s&&"string"==typeof o)return Bl(o);if("array"===s&&Array.isArray(o))return o;if(s===typeof o)return o;w(!1,`wrong type found for ${s} `,"path",r)}return o}Ol=new WeakMap,Sl=new WeakMap,Pl=new WeakMap;const Fl="m/44'/60'/0'/0/0";function Ml(t){try{const e=JSON.parse(t);if(3===(null!=e.version?parseInt(e.version):0))return!0}catch(t){}return!1}function Gl(t,e){const n=N(e),r=Ll(t,"crypto.ciphertext:data!");w(P(sn(R([n.slice(16,32),r]))).substring(2)===Ll(t,"crypto.mac:string!").toLowerCase(),"incorrect password","password","[ REDACTED ]");const s=function(t,e,n){if("aes-128-ctr"===Ll(t,"crypto.cipher:string")){const r=Ll(t,"crypto.cipherparams.iv:data!");return P(new Cl(e,r).decrypt(n))}m(!1,"unsupported cipher","UNSUPPORTED_OPERATION",{operation:"decrypt"})}(t,n.slice(0,16),r),i=Zi(s);if(t.address){let e=t.address.toLowerCase();e.startsWith("0x")||(e="0x"+e),w(gs(e)===i,"keystore address/privateKey mismatch","address",t.address)}const o={address:i,privateKey:s};if("0.1"===Ll(t,"x-ethers.version:string")){const e=n.slice(32,64),r=Ll(t,"x-ethers.mnemonicCiphertext:data!"),s=Ll(t,"x-ethers.mnemonicCounter:data!"),i=new Cl(e,s);o.mnemonic={path:Ll(t,"x-ethers.path:string")||Fl,locale:Ll(t,"x-ethers.locale:string")||"en",entropy:P(N(i.decrypt(r)))}}return o}function jl(t){const e=Ll(t,"crypto.kdf:string");if(e&&"string"==typeof e){if("scrypt"===e.toLowerCase()){const n=Ll(t,"crypto.kdfparams.salt:data!"),r=Ll(t,"crypto.kdfparams.n:int!"),s=Ll(t,"crypto.kdfparams.r:int!"),i=Ll(t,"crypto.kdfparams.p:int!");w(r>0&&!(r&r-1),"invalid kdf.N","kdf.N",r),w(s>0&&i>0,"invalid kdf","kdf",e);const o=Ll(t,"crypto.kdfparams.dklen:int!");return w(32===o,"invalid kdf.dklen","kdf.dflen",o),{name:"scrypt",salt:n,N:r,r:s,p:i,dkLen:64}}if("pbkdf2"===e.toLowerCase()){const e=Ll(t,"crypto.kdfparams.salt:data!"),n=Ll(t,"crypto.kdfparams.prf:string!"),r=n.split("-").pop();w("sha256"===r||"sha512"===r,"invalid kdf.pdf","kdf.pdf",n);const s=Ll(t,"crypto.kdfparams.c:int!"),i=Ll(t,"crypto.kdfparams.dklen:int!");return w(32===i,"invalid kdf.dklen","kdf.dklen",i),{name:"pbkdf2",salt:e,count:s,dkLen:i,algorithm:r}}}w(!1,"unsupported key-derivation function","kdf",e)}function _l(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}function Hl(t){const e=null!=t.salt?N(t.salt,"options.salt"):In(32);let n=1<<17,r=8,s=1;return t.scrypt&&(t.scrypt.N&&(n=t.scrypt.N),t.scrypt.r&&(r=t.scrypt.r),t.scrypt.p&&(s=t.scrypt.p)),w("number"==typeof n&&n>0&&Number.isSafeInteger(n)&&(BigInt(n)&BigInt(n-1))===BigInt(0),"invalid scrypt N parameter","options.N",n),w("number"==typeof r&&r>0&&Number.isSafeInteger(r),"invalid scrypt r parameter","options.r",r),w("number"==typeof s&&s>0&&Number.isSafeInteger(s),"invalid scrypt p parameter","options.p",s),{name:"scrypt",dkLen:32,salt:e,N:n,r:r,p:s}}function Kl(t,e,n,r){const s=N(n.privateKey,"privateKey"),i=null!=r.iv?N(r.iv,"options.iv"):In(16);w(16===i.length,"invalid options.iv length","options.iv",r.iv);const o=null!=r.uuid?N(r.uuid,"options.uuid"):In(16);w(16===o.length,"invalid options.uuid length","options.uuid",r.iv);const a=t.slice(0,16),c=t.slice(16,32),l=N(new Cl(a,i).encrypt(s)),h=sn(R([c,l])),f={address:n.address.substring(2).toLowerCase(),id:St(o),version:3,Crypto:{cipher:"aes-128-ctr",cipherparams:{iv:P(i).substring(2)},ciphertext:P(l).substring(2),kdf:"scrypt",kdfparams:{salt:P(e.salt).substring(2),n:e.N,dklen:32,p:e.p,r:e.r},mac:h.substring(2)}};if(n.mnemonic){const e=null!=r.client?r.client:`ethers/${u}`,s=n.mnemonic.path||Fl,i=n.mnemonic.locale||"en",o=t.slice(32,64),a=N(n.mnemonic.entropy,"account.mnemonic.entropy"),c=In(16),l=N(new Cl(o,c).encrypt(a)),h=new Date,d="UTC--"+(h.getUTCFullYear()+"-"+Dl(h.getUTCMonth()+1,2)+"-"+Dl(h.getUTCDate(),2)+"T"+Dl(h.getUTCHours(),2)+"-"+Dl(h.getUTCMinutes(),2)+"-"+Dl(h.getUTCSeconds(),2)+".0Z")+"--"+f.address;f["x-ethers"]={client:e,gethFilename:d,path:s,locale:i,mnemonicCounter:P(c).substring(2),mnemonicCiphertext:P(l).substring(2),version:"0.1"}}return JSON.stringify(f)}function Vl(t,e,n){null==n&&(n={});const r=Ul(e),s=Hl(n);return Kl(N(Vn(r,s.salt,s.N,s.r,s.p,64)),s,t,n)}async function Ql(t,e,n){null==n&&(n={});const r=Ul(e),s=Hl(n);return Kl(N(await Kn(r,s.salt,s.N,s.r,s.p,64,n.progressCallback)),s,t,n)}const Jl="m/44'/60'/0'/0/0",zl=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),ql=2147483648,$l=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Wl(t,e){let n="";for(;t;)n="0123456789abcdef"[t%16]+n,t=Math.trunc(t/16);for(;n.length<2*e;)n="0"+n;return"0x"+n}function Yl(t){const e=N(t);return X(R([e,C(qn(qn(e)),0,4)]))}const Zl={};function Xl(t,e,n,r){const s=new Uint8Array(37);t&ql?(m(null!=r,"cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"}),s.set(N(r),1)):s.set(N(n));for(let e=24;e>=0;e-=8)s[33+(e>>3)]=t>>24-e&255;const i=N(Ge("sha512",e,s));return{IL:i.slice(0,32),IR:i.slice(32)}}function th(t,e){const n=e.split("/");w(n.length>0,"invalid path","path",e),"m"===n[0]&&(w(0===t.depth,`cannot derive root path (i.e. path starting with "m/") for a node at non-zero depth ${t.depth}`,"path",e),n.shift());let r=t;for(let t=0;t<n.length;t++){const e=n[t];if(e.match(/^[0-9]+'$/)){const n=parseInt(e.substring(0,e.length-1));w(n<ql,"invalid path index",`path[${t}]`,e),r=r.deriveChild(ql+n)}else if(e.match(/^[0-9]+$/)){const n=parseInt(e);w(n<ql,"invalid path index",`path[${t}]`,e),r=r.deriveChild(n)}else w(!1,"invalid path component",`path[${t}]`,e)}return r}class eh extends Mu{publicKey;fingerprint;parentFingerprint;mnemonic;chainCode;path;index;depth;constructor(t,e,n,r,s,i,o,a,c){super(e,c),E(t,Zl,"HDNodeWallet"),f(this,{publicKey:e.compressedPublicKey});f(this,{parentFingerprint:n,fingerprint:C(kn(qn(this.publicKey)),0,4),chainCode:r,path:s,index:i,depth:o}),f(this,{mnemonic:a})}connect(t){return new eh(Zl,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,t)}#me(){const t={address:this.address,privateKey:this.privateKey},e=this.mnemonic;return this.path&&e&&"en"===e.wordlist.locale&&""===e.password&&(t.mnemonic={path:this.path,locale:"en",entropy:e.entropy}),t}async encrypt(t,e){return await Ql(this.#me(),t,{progressCallback:e})}encryptSync(t){return Vl(this.#me(),t)}get extendedKey(){return m(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Yl(R(["0x0488ADE4",Wl(this.depth,1),this.parentFingerprint,Wl(this.index,4),this.chainCode,R(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new nh(Zl,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(t){const e=V(t,"index");w(e<=4294967295,"invalid index","index",e);let n=this.path;n&&(n+="/"+(2147483647&e),e&ql&&(n+="'"));const{IR:r,IL:s}=Xl(e,this.chainCode,this.publicKey,this.privateKey),i=new us(Q((K(s)+BigInt(this.privateKey))%$l,32));return new eh(Zl,i,this.fingerprint,P(r),n,e,this.depth+1,this.mnemonic,this.provider)}derivePath(t){return th(this,t)}static#we(t,e){w(O(t),"invalid seed","seed","[REDACTED]");const n=N(t,"seed");w(n.length>=16&&n.length<=64,"invalid seed","seed","[REDACTED]");const r=N(Ge("sha512",zl,n)),s=new us(P(r.slice(0,32)));return new eh(Zl,s,"0x00000000",P(r.slice(32)),"m",0,0,e,null)}static fromExtendedKey(t){const e=J(function(t){let e=Y;for(let n=0;n<t.length;n++)e*=Z,e+=W(t[n]);return e}(t));w(82===e.length||Yl(e.slice(0,78))===t,"invalid extended key","extendedKey","[ REDACTED ]");const n=e[4],r=P(e.slice(5,9)),s=parseInt(P(e.slice(9,13)).substring(2),16),i=P(e.slice(13,45)),o=e.slice(45,78);switch(P(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const t=P(o);return new nh(Zl,Zi(t),t,r,i,null,s,n,null)}case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new eh(Zl,new us(o.slice(1)),r,i,null,s,n,null,null)}w(!1,"invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(t,e,n){null==t&&(t=""),null==e&&(e=Jl),null==n&&(n=Ju.wordlist());const r=Yu.fromEntropy(In(16),t,n);return eh.#we(r.computeSeed(),r).derivePath(e)}static fromMnemonic(t,e){return e||(e=Jl),eh.#we(t.computeSeed(),t).derivePath(e)}static fromPhrase(t,e,n,r){null==e&&(e=""),null==n&&(n=Jl),null==r&&(r=Ju.wordlist());const s=Yu.fromPhrase(t,e,r);return eh.#we(s.computeSeed(),s).derivePath(n)}static fromSeed(t){return eh.#we(t,null)}}class nh extends vu{publicKey;fingerprint;parentFingerprint;chainCode;path;index;depth;constructor(t,e,n,r,s,i,o,a,c){super(e,c),E(t,Zl,"HDNodeVoidWallet"),f(this,{publicKey:n});f(this,{publicKey:n,fingerprint:C(kn(qn(n)),0,4),parentFingerprint:r,chainCode:s,path:i,index:o,depth:a})}connect(t){return new nh(Zl,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,t)}get extendedKey(){return m(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Yl(R(["0x0488B21E",Wl(this.depth,1),this.parentFingerprint,Wl(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(t){const e=V(t,"index");w(e<=4294967295,"invalid index","index",e);let n=this.path;n&&(n+="/"+(2147483647&e),e&ql&&(n+="'"));const{IR:r,IL:s}=Xl(e,this.chainCode,this.publicKey,null),i=us.addPoints(s,this.publicKey,!0),o=Zi(i);return new nh(Zl,o,i,this.fingerprint,P(r),n,e,this.depth+1,this.provider)}derivePath(t){return th(this,t)}}function rh(t){try{if(JSON.parse(t).encseed)return!0}catch(t){}return!1}function sh(t,e){const n=JSON.parse(t),r=Ul(e),s=gs(Ll(n,"ethaddr:string!")),i=Bl(Ll(n,"encseed:string!"));w(i&&i.length%16==0,"invalid encseed","json",t);const o=N(On(r,r,2e3,32,"sha256")).slice(0,16),a=i.slice(0,16),c=i.slice(16),u=function(t){if(t.length<16)throw new TypeError("PKCS#7 invalid length");const e=t[t.length-1];if(e>16)throw new TypeError("PKCS#7 padding byte out of range");const n=t.length-e;for(let r=0;r<e;r++)if(t[n+r]!==e)throw new TypeError("PKCS#7 invalid padding byte");return new Uint8Array(t.subarray(0,n))}(N(new Tl(o,a).decrypt(c)));let l="";for(let t=0;t<u.length;t++)l+=String.fromCharCode(u[t]);return{address:s,privateKey:_s(l)}}function ih(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}class oh extends Mu{constructor(t,e){"string"!=typeof t||t.startsWith("0x")||(t="0x"+t),super("string"==typeof t?new us(t):t,e)}connect(t){return new oh(this.signingKey,t)}async encrypt(t,e){const n={address:this.address,privateKey:this.privateKey};return await Ql(n,t,{progressCallback:e})}encryptSync(t){return Vl({address:this.address,privateKey:this.privateKey},t)}static#be(t){if(w(t,"invalid JSON wallet","json","[ REDACTED ]"),"mnemonic"in t&&t.mnemonic&&"en"===t.mnemonic.locale){const e=Yu.fromEntropy(t.mnemonic.entropy),n=eh.fromMnemonic(e,t.mnemonic.path);if(n.address===t.address&&n.privateKey===t.privateKey)return n;console.log("WARNING: JSON mismatch address/privateKey != mnemonic; fallback onto private key")}const e=new oh(t.privateKey);return w(e.address===t.address,"address/privateKey mismatch","json","[ REDACTED ]"),e}static async fromEncryptedJson(t,e,n){let r=null;return Ml(t)?r=await async function(t,e,n){const r=JSON.parse(t),s=Ul(e),i=jl(r);if("pbkdf2"===i.name){n&&(n(0),await _l(0));const{salt:t,count:e,dkLen:o,algorithm:a}=i,c=On(s,t,e,o,a);return n&&(n(1),await _l(0)),Gl(r,c)}m("scrypt"===i.name,"cannot be reached","UNKNOWN_ERROR",{params:i});const{salt:o,N:a,r:c,p:u,dkLen:l}=i;return Gl(r,await Kn(s,o,a,c,u,l,n))}(t,e,n):rh(t)&&(n&&(n(0),await ih(0)),r=sh(t,e),n&&(n(1),await ih(0))),oh.#be(r)}static fromEncryptedJsonSync(t,e){let n=null;return Ml(t)?n=function(t,e){const n=JSON.parse(t),r=Ul(e),s=jl(n);if("pbkdf2"===s.name){const{salt:t,count:e,dkLen:i,algorithm:o}=s;return Gl(n,On(r,t,e,i,o))}m("scrypt"===s.name,"cannot be reached","UNKNOWN_ERROR",{params:s});const{salt:i,N:o,r:a,p:c,dkLen:u}=s;return Gl(n,Vn(r,i,o,a,c,u))}(t,e):rh(t)?n=sh(t,e):w(!1,"invalid JSON wallet","json","[ REDACTED ]"),oh.#be(n)}static createRandom(t){const e=eh.createRandom();return t?e.connect(t):e}static fromPhrase(t,e){const n=eh.fromPhrase(t);return e?n.connect(e):n}}let ah={PROOF_OF_INTEGRITY_ADDRESS:"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",STEALTH_ANNOUNCER_ADDRESS:"0x5FbDB2315678afecb367f032d93F642f64180aa3"};if("undefined"==typeof window){const{fileURLToPath:t}=require("url"),{dirname:n}=require("path"),{readFileSync:r}=require("fs"),{join:s}=require("path");try{const i=t("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(i).href:"undefined"==typeof document?location.href:e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("gun-eth.min.js",document.baseURI).href),o=r(s(n(i),"contract-address.json"),"utf8");ah=JSON.parse(o),console.log("Loaded contract addresses:",ah)}catch(t){console.warn("Warning: contract-address.json not found or invalid")}}const ch={CHAIN_ID:1337,PROOF_OF_INTEGRITY_ADDRESS:ah.PROOF_OF_INTEGRITY_ADDRESS,STEALTH_ANNOUNCER_ADDRESS:ah.STEALTH_ANNOUNCER_ADDRESS,RPC_URL:"http://127.0.0.1:8545",GUN_PEER:"http://localhost:8765/gun"};process.env.NODE_ENV;const uh="development"===process.env.NODE_ENV?ch.PROOF_OF_INTEGRITY_ADDRESS:"0x...";process.env.NODE_ENV;const lh=[{inputs:[{internalType:"bytes[]",name:"nodeIds",type:"bytes[]"},{internalType:"bytes32[]",name:"contentHashes",type:"bytes32[]"}],name:"batchUpdateData",outputs:[],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes",name:"nodeId",type:"bytes"},{indexed:!1,internalType:"bytes32",name:"contentHash",type:"bytes32"},{indexed:!1,internalType:"address",name:"updater",type:"address"}],name:"DataUpdated",type:"event"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"}],name:"getLatestRecord",outputs:[{internalType:"bytes32",name:"",type:"bytes32"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"},{internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"updateData",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"nodeId",type:"bytes"},{internalType:"bytes32",name:"contentHash",type:"bytes32"}],name:"verifyData",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}];let hh,fh="",dh="";const ph="Access GunDB with Ethereum";let gh={PROOF_OF_INTEGRITY_ADDRESS:null,STEALTH_ANNOUNCER_ADDRESS:null};if("undefined"==typeof window){const{fileURLToPath:t}=require("url"),{dirname:n}=require("path"),{readFileSync:r}=require("fs"),s=require("path"),i=t("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(i).href:"undefined"==typeof document?location.href:e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("gun-eth.min.js",document.baseURI).href),o=n(i);try{const t=r(s.join(o,"contract-address.json"),"utf8");gh=JSON.parse(t),console.log("Loaded contract addresses:",gh)}catch(t){console.warn("Warning: contract-address.json not found or invalid")}}function yh(){return P(In(32)).slice(2)}function mh(t){try{const e=sn(P(t));return console.log("Generated password:",e),e}catch(t){return console.error("Error generating password:",t),null}}function wh(t){const e="0x"+(t=>{const e="=".repeat((4-t.length%4)%4),n=t.replace(/-/g,"+").replace(/_/g,"/")+e,r=atob(n);return Array.from(r,(t=>t.charCodeAt(0).toString(16).padStart(2,"0"))).join("")})(t),n=new oh(e);return{account:n,publicKey:n.address,privateKey:e}}const bh=async()=>{if(fh&&dh){const t=new Du(fh,{chainId:ch.CHAIN_ID,name:"localhost"});return new oh(dh,t)}if("undefined"!=typeof window&&void 0!==window.ethereum){await window.ethereum.request({method:"eth_requestAccounts"});return new Fu(window.ethereum).getSigner()}throw new Error("No valid Ethereum provider found")};function Ah(t,e){try{const n=Buffer.from(t,"base64"),r=sn(R([n,N(e)])),s=new oh(r);return console.log("Debug deriveStealthAddress:",{sharedSecretHex:P(n),spendingPublicKey:e,stealthPrivateKey:r,stealthAddress:s.address}),{stealthPrivateKey:r,stealthAddress:s.address,wallet:s}}catch(t){throw console.error("Error in deriveStealthAddress:",t),t}}o.chain.MESSAGE_TO_SIGN=ph,o.chain.setSigner=function(t,e){return fh=t,dh=e,console.log("Standalone configuration set"),this},o.chain.getSigner=bh(),o.chain.verifySignature=async function(t,e){try{const n=function(t,e){return Xi(wo(t),e)}(t,e);return n}catch(t){return console.error("Error verifying signature:",t),null}},o.chain.generatePassword=function(t){return mh(t)},o.chain.createSignature=async function(t){try{if(t!==ph)throw new Error("Invalid message, valid message is: "+ph);const e=await bh(),n=await e.signMessage(t);return console.log("Signature created:",n),n}catch(t){return console.error("Error creating signature:",t),null}},o.chain.createAndStoreEncryptedPair=async function(t,e){try{const n=this,r=await c.pair(),s=await c.pair(),i=await c.pair(),o=mh(e),a=await c.encrypt(JSON.stringify(r),o),u=await c.encrypt(JSON.stringify(s),o),l=await c.encrypt(JSON.stringify(i),o),h=wh(s.priv),f=wh(i.priv);await n.get("gun-eth").get("users").get(t).put({pair:a,v_pair:u,s_pair:l,publicKeys:{viewingPublicKey:s.epub,viewingPublicKey:s.epub,spendingPublicKey:f.publicKey,ethViewingAddress:h.publicKey}}),console.log("Encrypted pairs and public keys stored for:",t)}catch(t){throw console.error("Error creating and storing encrypted pair:",t),t}},o.chain.getAndDecryptPair=async function(t,e){try{const n=this,r=await n.get("gun-eth").get("users").get(t).get("pair").then();if(!r)throw new Error("No encrypted data found for this address");const s=await c.decrypt(r,e);return console.log(s),s}catch(t){return console.error("Error retrieving and decrypting pair:",t),null}},o.chain.proof=function(t,e,n,r){if(console.log("Proof plugin called with:",{chain:t,nodeId:e,data:n}),"function"!=typeof r)return console.error("Callback must be a function"),this;const s=this;if("optimismSepolia"!==t&&"localhost"!==t)return r({err:"Chain not supported"}),this;if(hh="development"===process.env.NODE_ENV?ch.PROOF_OF_INTEGRITY_ADDRESS:uh,console.log("Using contract address:",hh),!hh)return r({err:"Contract address not found. Did you deploy the contract?"}),this;if(e&&!n)s.get(e).once((async t=>{if(!t)return void(r&&r({err:"Node not found in GunDB"}));console.log("existingData",t);const n=t._contentHash;if(console.log("contentHash",n),n)try{const{isValid:t,timestamp:s,updater:i}=await(async(t,e)=>{console.log("Verifying on chain:",{nodeId:t,contentHash:e});const n=await bh(),r=new kc(hh,lh,n),[s,i,o]=await r.verifyData(rt(t),e);return console.log("Verification result:",{isValid:s,timestamp:i,updater:o}),{isValid:s,timestamp:i,updater:o}})(e,n),o=await(async t=>{const e=await bh(),n=new kc(hh,lh,e),[r,s,i]=await n.getLatestRecord(rt(t));return console.log("Latest record from blockchain:",{nodeId:t,contentHash:r,timestamp:s,updater:i}),{contentHash:r,timestamp:s,updater:i}})(e);t?r&&r({ok:!0,message:"Data verified on blockchain",timestamp:s,updater:i,latestRecord:o}):r&&r({ok:!1,message:"Data not verified on blockchain",latestRecord:o})}catch(t){r&&r({err:t.message})}else r&&r({err:"No content hash found for this node"})}));else if(n&&!e){const t=yh(),e=sn(rt(JSON.stringify(n)));s.get(t).put({...n,_contentHash:e},(async n=>{if(console.log("ack",n),n.err)r&&r({err:"Error saving data to GunDB"});else try{const n=await(async(t,e)=>{console.log("Writing on chain:",{nodeId:t,contentHash:e});const n=await bh(),r=new kc(hh,lh,n),s=await r.updateData(rt(t),e);console.log("Transaction sent:",s.hash);const i=await s.wait();return console.log("Transaction confirmed:",i),s})(t,e);r&&r({ok:!0,message:"Data written to GunDB and blockchain",nodeId:t,txHash:n.hash})}catch(t){r&&r({err:t.message})}}))}else r&&r({err:"Invalid input. Provide either nodeId or data, not both."});return s},o.chain.gunToEthAccount=function(t){return wh(t)},o.chain.generateStealthAddress=async function(t,e){try{const n=this,r=await n.get("gun-eth").get("users").get(t).get("publicKeys").then();if(!r||!r.viewingPublicKey||!r.spendingPublicKey)throw new Error("Recipient's public keys not found");const s=await this.verifySignature(ph,e),i=mh(e),o=await n.get("gun-eth").get("users").get(s).then();if(!o||!o.s_pair)throw new Error("Sender's keys not found");let a;try{const t=await c.decrypt(o.s_pair,i);a="string"==typeof t?JSON.parse(t):t}catch(t){throw console.error("Error decrypting spending pair:",t),new Error("Unable to decrypt spending pair")}const u=await c.secret(r.viewingPublicKey,a);if(!u)throw new Error("Unable to generate shared secret");console.log("Generate shared secret:",u);const{stealthAddress:l}=Ah(u,r.spendingPublicKey);return{stealthAddress:l,senderPublicKey:a.epub,spendingPublicKey:r.spendingPublicKey}}catch(t){throw console.error("Error generating stealth address:",t),t}},o.chain.publishStealthKeys=async function(t){try{const e=this,n=await this.verifySignature(ph,t),r=mh(t),s=await e.get("gun-eth").get("users").get(n).then();if(!s||!s.v_pair||!s.s_pair)throw new Error("Keys not found");const i=JSON.parse(await c.decrypt(s.v_pair,r)),o=JSON.parse(await c.decrypt(s.s_pair,r)),a=wh(i.priv),u=wh(o.priv);await e.get("gun-eth").get("users").get(n).get("publicKeys").put({viewingPublicKey:a.publicKey,spendingPublicKey:u.publicKey}),console.log("Stealth public keys published successfully")}catch(t){throw console.error("Error publishing stealth keys:",t),t}},o.chain.recoverStealthFunds=async function(t,e,n,r){try{const s=this,i=mh(n),o=await this.verifySignature(ph,n),a=await s.get("gun-eth").get("users").get(o).then();if(!a||!a.v_pair||!a.s_pair)throw new Error("Keys not found");let u;try{const t=await c.decrypt(a.v_pair,i);u="string"==typeof t?JSON.parse(t):t}catch(t){throw console.error("Error decrypting keys:",t),new Error("Unable to decrypt keys")}const l=await c.secret(e,u);if(!l)throw new Error("Unable to generate shared secret");console.log("Recover shared secret:",l);const{wallet:h,stealthAddress:f}=Ah(l,r);if(f.toLowerCase()!==t.toLowerCase())throw console.error("Mismatch:",{recovered:f,expected:t,sharedSecret:l}),new Error("Recovered stealth address does not match");return{wallet:h,address:f}}catch(t){throw console.error("Error recovering stealth funds:",t),t}},o.chain.announceStealthPayment=async function(t,e,n,r,s={onChain:!1}){try{const i=this,o=await this.verifySignature(ph,r);if(s.onChain){const r=await bh(),s="development"===process.env.NODE_ENV?ch.STEALTH_ANNOUNCER_ADDRESS:STEALTH_ANNOUNCER_ADDRESS;console.log("Using contract address:",s);const i=new kc(s,STEALTH_ANNOUNCER_ABI,r),o=await i.devFee();console.log("Dev fee:",o.toString());const a=await i.announcePayment(e,n,t,{value:o});console.log("Transaction sent:",a.hash);const c=await a.wait();console.log("Transaction confirmed:",c.hash),console.log("Stealth payment announced on-chain (dev fee paid)")}else await i.get("gun-eth").get("stealth-payments").set({stealthAddress:t,senderAddress:o,senderPublicKey:e,spendingPublicKey:n,timestamp:Date.now()}),console.log("Stealth payment announced off-chain")}catch(t){throw console.error("Error announcing stealth payment:",t),console.error("Error details:",t.stack),t}},o.chain.getStealthPayments=async function(t,e={source:"both"}){try{const n=[];if("onChain"===e.source||"both"===e.source){const e=await bh(),r="development"===process.env.NODE_ENV?ch.STEALTH_ANNOUNCER_ADDRESS:STEALTH_ANNOUNCER_ADDRESS,s=new kc(r,STEALTH_ANNOUNCER_ABI,e);try{const e=await s.getAnnouncementsCount(),r=Number(e.toString());if(console.log("Total on-chain announcements:",r),r>0){const e=100,i=r-1;for(let r=0;r<=i;r+=e){const o=Math.min(r+e-1,i),a=await s.getAnnouncementsInRange(r,o);for(const e of a)try{if(!(e&&e.stealthAddress&&e.senderPublicKey&&e.spendingPublicKey)){console.log("Invalid announcement:",e);continue}const r=await this.recoverStealthFunds(e.stealthAddress,e.senderPublicKey,t,e.spendingPublicKey);n.push({stealthAddress:e.stealthAddress,senderPublicKey:e.senderPublicKey,spendingPublicKey:e.spendingPublicKey,timestamp:Number(e.timestamp),source:"onChain",wallet:r})}catch(t){console.log(`Announcement not for us: ${e.stealthAddress}`);continue}}}}catch(t){console.error("Error retrieving on-chain announcements:",t)}}if("offChain"===e.source||"both"===e.source){const t=this,e=await new Promise((e=>{const n=[];t.get("gun-eth").get("stealth-payments").get(recipientAddress).map().once(((t,e)=>{t?.stealthAddress&&n.push({...t,id:e,source:"offChain"})})),setTimeout((()=>e(n)),2e3)}));n.push(...e)}return console.log(`Found ${n.length} stealth payments`),n}catch(t){throw console.error("Error retrieving stealth payments:",t),t}},o.chain.cleanStealthPayments=async function(t){try{const e=this,n=await e.get("gun-eth").get("stealth-payments").get(t).map().once().then();n&&Object.keys(n).forEach((async r=>{const s=n[r];s&&s.stealthAddress&&s.senderPublicKey&&s.spendingPublicKey||await e.get("gun-eth").get("stealth-payments").get(t).get(r).put(null)}))}catch(t){console.error("Error cleaning stealth payments:",t)}};class vh{static generateRandomId=yh;static generatePassword=mh;static gunToEthAccount=wh;static getSigner=bh;static deriveStealthAddress=Ah;static chainMethods={setSigner:o.chain.setSigner,getSigner:o.chain.getSigner,verifySignature:o.chain.verifySignature,generatePassword:o.chain.generatePassword,createSignature:o.chain.createSignature,createAndStoreEncryptedPair:o.chain.createAndStoreEncryptedPair,getAndDecryptPair:o.chain.getAndDecryptPair,proof:o.chain.proof,gunToEthAccount:o.chain.gunToEthAccount,generateStealthAddress:o.chain.generateStealthAddress,publishStealthKeys:o.chain.publishStealthKeys,recoverStealthFunds:o.chain.recoverStealthFunds,announceStealthPayment:o.chain.announceStealthPayment,getStealthPayments:o.chain.getStealthPayments,cleanStealthPayments:o.chain.cleanStealthPayments};static MESSAGE_TO_SIGN=ph;static PROOF_CONTRACT_ADDRESS=hh;static LOCAL_CONFIG=ch}t.GunEth=vh,t.MESSAGE_TO_SIGN=ph,t.default=o,t.deriveStealthAddress=Ah,t.generatePassword=mh,t.generateRandomId=yh,t.getSigner=bh,t.gunToEthAccount=wh,Object.defineProperty(t,"__esModule",{value:!0})}));
|