/! For license information please see app.js.LICENSE.txt /
(()=>{"use strict";const t={d:(e,n)=>{if(Array.isArray(n))for(var r=0;r<n.length;){var s=n[r++],i=n[r++];t.o(e,s)?0===i&&r++:0===i?Object.defineProperty(e,s,{enumerable:!0,value:n[r++]}):Object.defineProperty(e,s,{enumerable:!0,get:i})}else for(var s in n)t.o(n,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:n[s]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var e={};function n(t,e,n){const r=e.split("|").map(t=>t.trim());for(let n=0;n<r.length;n++)switch(e){case"any":return;case"bigint":case"boolean":case"number":case"string":if(typeof t===e)return}const s=new Error(invalid value for type ${e});throw s.code="INVALID_ARGUMENT",s.argument=value.${n},s.value=t,s}async function r(t){const e=Object.keys(t);return(await Promise.all(e.map(e=>Promise.resolve(t[e])))).reduce((t,n,r)=>(t[e[r]]=n,t),{})}function s(t,e,r){for(let s in e){let i=e[s];const a=r?r[s]:null;a&&n(i,a,s),Object.defineProperty(t,s,{enumerable:!0,value:i,writable:!1})}}function i(t,e){if(null==t)return"null";if(null==e&&(e=new Set),"object"==typeof t){if(e.has(t))return"[Circular]";e.add(t)}if(Array.isArray(t))return"[ "+t.map(t=>i(t,e)).join(", ")+" ]";if(t instanceof Uint8Array){const e="0123456789abcdef";let n="0x";for(let r=0;r<t.length;r++)n+=e[t[r]>>4],n+=e[15&t[r]];return n}if("object"==typeof t&&"function"==typeof t.toJSON)return i(t.toJSON(),e);switch(typeof t){case"boolean":case"number":case"symbol":return t.toString();case"bigint":return BigInt(t).toString();case"string":return JSON.stringify(t);case"object":{const n=Object.keys(t);return n.sort(),"{ "+n.map(n=>${i(n,e)}: ${i(t[n],e)}).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function a(t,e){return t&&t.code===e}function o(t){return a(t,"CALL_EXCEPTION")}function l(t,e,n){let r,a=t;{const r=[];if(n){if("message"in n||"code"in n||"name"in n)throw new Error(value will overwrite populated values: ${i(n)});for(const t in n){if("shortMessage"===t)continue;const e=n[t];r.push(t+"="+i(e))}}r.push(code=${e}),r.push("version=6.17.0"),r.length&&(t+=" ("+r.join(", ")+")")}switch(e){case"INVALID_ARGUMENT":r=new TypeError(t);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":r=new RangeError(t);break;default:r=new Error(t)}return s(r,{code:e}),n&&Object.assign(r,n),null==r.shortMessage&&s(r,{shortMessage:a}),r}function c(t,e,n,r){if(!t)throw l(e,n,r)}function u(t,e,n,r){c(t,e,"INVALID_ARGUMENT",{argument:n,value:r})}function h(t,e,n){null==n&&(n=""),n&&(n=": "+n),c(t>=e,"missing argument"+n,"MISSING_ARGUMENT",{count:t,expectedCount:e}),c(t<=e,"too many arguments"+n,"UNEXPECTED_ARGUMENT",{count:t,expectedCount:e})}t.r(e),t.d(e,{OG:()=>Xs,My:()=>js,Ph:()=>Ks,lX:()=>qs,Id:()=>Zs,fg:()=>ei,qj:()=>Ys,aT:()=>zs,lq:()=>_s,z:()=>Ws,Q5:()=>ri});const f=["NFD","NFC","NFKD","NFKC"].reduce((t,e)=>{try{if("test"!=="test".normalize(e))throw new Error("bad");if("NFD"===e){if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken")}t.push(e)}catch(t){}return t},[]);function d(t,e,n){if(null==n&&(n=""),t!==e){let t=n,e="new";n&&(t+=".",e+=" "+n),c(!1,private constructor; use ${t}from* methods,"UNSUPPORTED_OPERATION",{operation:e})}}const p={};function g(t,e){let n=!1;return e<0&&(n=!0,e=-1),new w(p,${n?"":"u"}int${e},t,{signed:n,width:e})}function m(t,e){return new w(p,bytes${e||""},t,{size:e})}const y=Symbol.for("_ethers_typed");class w{type;value;#t;_typedSymbol;constructor(t,e,n,r){null==r&&(r=null),d(p,t,"Typed"),s(this,{_typedSymbol:y,type:e,value:n}),this.#t=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.#t}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===this.#t?-1:!1===this.#t?this.value.length:null}static from(t,e){return new w(p,t,e)}static uint8(t){return g(t,8)}static uint16(t){return g(t,16)}static uint24(t){return g(t,24)}static uint32(t){return g(t,32)}static uint40(t){return g(t,40)}static uint48(t){return g(t,48)}static uint56(t){return g(t,56)}static uint64(t){return g(t,64)}static uint72(t){return g(t,72)}static uint80(t){return g(t,80)}static uint88(t){return g(t,88)}static uint96(t){return g(t,96)}static uint104(t){return g(t,104)}static uint112(t){return g(t,112)}static uint120(t){return g(t,120)}static uint128(t){return g(t,128)}static uint136(t){return g(t,136)}static uint144(t){return g(t,144)}static uint152(t){return g(t,152)}static uint160(t){return g(t,160)}static uint168(t){return g(t,168)}static uint176(t){return g(t,176)}static uint184(t){return g(t,184)}static uint192(t){return g(t,192)}static uint200(t){return g(t,200)}static uint208(t){return g(t,208)}static uint216(t){return g(t,216)}static uint224(t){return g(t,224)}static uint232(t){return g(t,232)}static uint240(t){return g(t,240)}static uint248(t){return g(t,248)}static uint256(t){return g(t,256)}static uint(t){return g(t,256)}static int8(t){return g(t,-8)}static int16(t){return g(t,-16)}static int24(t){return g(t,-24)}static int32(t){return g(t,-32)}static int40(t){return g(t,-40)}static int48(t){return g(t,-48)}static int56(t){return g(t,-56)}static int64(t){return g(t,-64)}static int72(t){return g(t,-72)}static int80(t){return g(t,-80)}static int88(t){return g(t,-88)}static int96(t){return g(t,-96)}static int104(t){return g(t,-104)}static int112(t){return g(t,-112)}static int120(t){return g(t,-120)}static int128(t){return g(t,-128)}static int136(t){return g(t,-136)}static int144(t){return g(t,-144)}static int152(t){return g(t,-152)}static int160(t){return g(t,-160)}static int168(t){return g(t,-168)}static int176(t){return g(t,-176)}static int184(t){return g(t,-184)}static int192(t){return g(t,-192)}static int200(t){return g(t,-200)}static int208(t){return g(t,-208)}static int216(t){return g(t,-216)}static int224(t){return g(t,-224)}static int232(t){return g(t,-232)}static int240(t){return g(t,-240)}static int248(t){return g(t,-248)}static int256(t){return g(t,-256)}static int(t){return g(t,-256)}static bytes1(t){return m(t,1)}static bytes2(t){return m(t,2)}static bytes3(t){return m(t,3)}static bytes4(t){return m(t,4)}static bytes5(t){return m(t,5)}static bytes6(t){return m(t,6)}static bytes7(t){return m(t,7)}static bytes8(t){return m(t,8)}static bytes9(t){return m(t,9)}static bytes10(t){return m(t,10)}static bytes11(t){return m(t,11)}static bytes12(t){return m(t,12)}static bytes13(t){return m(t,13)}static bytes14(t){return m(t,14)}static bytes15(t){return m(t,15)}static bytes16(t){return m(t,16)}static bytes17(t){return m(t,17)}static bytes18(t){return m(t,18)}static bytes19(t){return m(t,19)}static bytes20(t){return m(t,20)}static bytes21(t){return m(t,21)}static bytes22(t){return m(t,22)}static bytes23(t){return m(t,23)}static bytes24(t){return m(t,24)}static bytes25(t){return m(t,25)}static bytes26(t){return m(t,26)}static bytes27(t){return m(t,27)}static bytes28(t){return m(t,28)}static bytes29(t){return m(t,29)}static bytes30(t){return m(t,30)}static bytes31(t){return m(t,31)}static bytes32(t){return m(t,32)}static address(t){return new w(p,"address",t)}static bool(t){return new w(p,"bool",!!t)}static bytes(t){return new w(p,"bytes",t)}static string(t){return new w(p,"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 w(p,"overrides",Object.assign({},t))}static isTyped(t){return t&&"object"==typeof t&&"_typedSymbol"in t&&t._typedSymbol===y}static dereference(t,e){if(w.isTyped(t)){if(t.type!==e)throw new Error(invalid type: expecetd ${e}, got ${t.type});return t.value}return t}}function b(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(Wrong positive integer: ${t})}function A(t,...e){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(t.length))throw new Error(Expected Uint8Array of length ${e}, not of length=${t.length})}function v(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function E(t,e){A(t);const n=e.outputLen;if(t.length<n)throw new Error(digestInto() expects output buffer of length at least ${n})}const x=BigInt(232-1),k=BigInt(32);function P(t,e=!1){return e?{h:Number(t&x),l:Number(t>>k&x)}:{h:0|Number(t>>k&x),l:0|Number(t&x)}}function B(t,e=!1){let n=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let s=0;s<t.length;s++){const{h:i,l:a}=P(t[s],e);[n[s],r[s]]=[i,a]}return[n,r]}const N=(t,e,n)=>t<<n|e>>>32-n,I=(t,e,n)=>e<<n|t>>>32-n,C=(t,e,n)=>e<<n-32|t>>>64-n,T=(t,e,n)=>t<<n-32|e>>>64-n,R={fromBig:P,split:B,toBig:(t,e)=>BigInt(t>>>0)<<k|BigInt(e>>>0),shrSH:(t,e,n)=>t>>>n,shrSL:(t,e,n)=>t<<32-n|e>>>n,rotrSH:(t,e,n)=>t>>>n|e<<32-n,rotrSL:(t,e,n)=>t<<32-n|e>>>n,rotrBH:(t,e,n)=>t<<64-n|e>>>n-32,rotrBL:(t,e,n)=>t>>>n-32|e<<64-n,rotr32H:(t,e)=>e,rotr32L:(t,e)=>t,rotlSH:N,rotlSL:I,rotlBH:C,rotlBL:T,add:function(t,e,n,r){const s=(e>>>0)+(r>>>0);return{h:t+n+(s/232|0)|0,l:0|s}},add3L:(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),add3H:(t,e,n,r)=>e+n+r+(t/232|0)|0,add4L:(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),add4H:(t,e,n,r,s)=>e+n+r+s+(t/232|0)|0,add5H:(t,e,n,r,s,i)=>e+n+r+s+i+(t/2**32|0)|0,add5L:(t,e,n,r,s)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(s>>>0)},O="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,S=t=>t instanceof Uint8Array,F=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),L=(t,e)=>t<<32-e|t>>>e;if(68!==new Uint8Array(new Uint32Array([287454020]).buffer)[0])throw new Error("Non little-endian hardware is not supported");function U(t){if("string"==typeof t&&(t=function(t){if("string"!=typeof t)throw new Error("utf8ToBytes expected string, got "+typeof t);return new Uint8Array((new TextEncoder).encode(t))}(t)),!S(t))throw new Error("expected Uint8Array, got "+typeof t);return t}class D{clone(){return this.cloneInto()}}function G(t){const e=e=>t().update(U(e)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function M(t=32){if(O&&"function"==typeof O.getRandomValues)return O.getRandomValues(new Uint8Array(t));throw new Error("crypto.getRandomValues must be defined")}const[H,Q,V]=[[],[],[]],j=BigInt(0),J=BigInt(1),z=BigInt(2),K=BigInt(7),q=BigInt(256),=BigInt(113);for(let t=0,e=J,n=1,r=0;t<24;t++){[n,r]=[r,(2n+3r)%5],H.push(2(5r+n)),Q.push((t+1)(t+2)/2%64);let s=j;for(let t=0;t<7;t++)e=(e<<J^(e>>K)_)%q,e&z&&(s^=J<<(J<<BigInt(t))-J);V.push(s)}const[W,Y]=B(V,!0),Z=(t,e,n)=>n>32?C(t,e,n):N(t,e,n),X=(t,e,n)=>n>32?T(t,e,n):I(t,e,n);class $ extends D{constructor(t,e,n,r=!1,s=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=n,this.enableXOF=r,this.rounds=s,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,b(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");var i;this.state=new Uint8Array(200),this.state32=(i=this.state,new Uint32Array(i.buffer,i.byteOffset,Math.floor(i.byteLength/4)))}keccak(){!function(t,e=24){const n=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let e=0;e<10;e++)n[e]=t[e]^t[e+10]^t[e+20]^t[e+30]^t[e+40];for(let e=0;e<10;e+=2){const r=(e+8)%10,s=(e+2)%10,i=n[s],a=n[s+1],o=Z(i,a,1)^n[r],l=X(i,a,1)^n[r+1];for(let n=0;n<50;n+=10)t[e+n]^=o,t[e+n+1]^=l}let e=t[2],s=t[3];for(let n=0;n<24;n++){const r=Q[n],i=Z(e,s,r),a=X(e,s,r),o=H[n];e=t[o],s=t[o+1],t[o]=i,t[o+1]=a}for(let e=0;e<50;e+=10){for(let r=0;r<10;r++)n[r]=t[e+r];for(let r=0;r<10;r++)t[e+r]^=~n[(r+2)%10]&n[(r+4)%10]}t[0]^=W[r],t[1]^=Y[r]}n.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){v(this);const{blockLen:e,state:n}=this,r=(t=U(t)).length;for(let s=0;s<r;){const i=Math.min(e-this.pos,r-s);for(let e=0;e<i;e++)n[this.pos++]^=t[s++];this.pos===e&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:t,suffix:e,pos:n,blockLen:r}=this;t[n]^=e,128&e&&n===r-1&&this.keccak(),t[r-1]^=128,this.keccak()}writeInto(t){v(this,!1),A(t),this.finish();const e=this.state,{blockLen:n}=this;for(let r=0,s=t.length;r<s;){this.posOut>=n&&this.keccak();const i=Math.min(n-this.posOut,s-r);t.set(e.subarray(this.posOut,this.posOut+i),r),this.posOut+=i,r+=i}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return b(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(E(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){const{blockLen:e,suffix:n,outputLen:r,rounds:s,enableXOF:i}=this;return t||(t=new $(e,n,r,i,s)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=s,t.suffix=n,t.outputLen=r,t.enableXOF=i,t.destroyed=this.destroyed,t}}const tt=((t,e,n)=>G(()=>new $(e,t,n)))(1,136,32);function et(t,e,n){if(t instanceof Uint8Array)return n?new Uint8Array(t):t;if("string"==typeof t&&t.length%2==0&&t.match(/^0x[0-9a-f]$/i)){const e=new Uint8Array((t.length-2)/2);let n=2;for(let r=0;r<e.length;r++)e[r]=parseInt(t.substring(n,n+2),16),n+=2;return e}u(!1,"invalid BytesLike value",e||"value",t)}function nt(t,e){return et(t,e,!1)}function rt(t,e){return et(t,e,!0)}function st(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]$/)||"number"==typeof e&&t.length!==2+2e||!0===e&&t.length%2!=0)}function it(t){return st(t,!0)||t instanceof Uint8Array}const at="0123456789abcdef";function ot(t){const e=nt(t);let n="0x";for(let t=0;t<e.length;t++){const r=e[t];n+=at[(240&r)>>4]+at[15&r]}return n}function lt(t){return"0x"+t.map(t=>ot(t).substring(2)).join("")}function ct(t){return st(t,!0)?(t.length-2)/2:nt(t).length}function ut(t,e,n){const r=nt(t);return null!=n&&n>r.length&&c(!1,"cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:r,length:r.length,offset:n}),ot(r.slice(e??0,n??r.length))}function ht(t,e,n){const r=nt(t);c(e>=r.length,"padding exceeds data length","BUFFER_OVERRUN",{buffer:new Uint8Array(r),length:e,offset:e+1});const s=new Uint8Array(e);return s.fill(0),n?s.set(r,e-r.length):s.set(r,0),ot(s)}function ft(t,e){return ht(t,e,!0)}let dt=!1;const pt=function(t){return tt(t)};let gt=pt;function mt(t){const e=nt(t,"data");return ot(gt(e))}function yt(t,e,n,r,s){if("BAD_PREFIX"===t||"UNEXPECTED_CONTINUE"===t){let t=0;for(let r=e+1;r<n.length&&n[r]>>6==2;r++)t++;return t}return"OVERRUN"===t?n.length-e-1:0}mt.=pt,mt.lock=function(){dt=!0},mt.register=function(t){if(dt)throw new TypeError("keccak256 is locked");gt=t},Object.freeze(mt);const wt=Object.freeze({error:function(t,e,n,r,s){u(!1,invalid codepoint at offset ${e}; ${t},"bytes",n)},ignore:yt,replace:function(t,e,n,r,s){return"OVERLONG"===t?(u("number"==typeof s,"invalid bad code point for replacement","badCodepoint",s),r.push(s),0):(r.push(65533),yt(t,e,n))}});function bt(t,e){u("string"==typeof t,"invalid string value","str",t),null!=e&&(function(t){c(f.indexOf(t)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:t}})}(e),t=t.normalize(e));let n=[];for(let e=0;e<t.length;e++){const r=t.charCodeAt(e);if(r<128)n.push(r);else if(r<2048)n.push(r>>6|192),n.push(63&r|128);else if(55296==(64512&r)){e++;const s=t.charCodeAt(e);u(e<t.length&&56320==(64512&s),"invalid surrogate pair","str",t);const i=65536+((1023&r)<<10)+(1023&s);n.push(i>>18|240),n.push(i>>12&63|128),n.push(i>>6&63|128),n.push(63&i|128)}else n.push(r>>12|224),n.push(r>>6&63|128),n.push(63&r|128)}return new Uint8Array(n)}function At(t,e){return function(t,e){null==e&&(e=wt.error);const n=nt(t,"bytes"),r=[];let s=0;for(;s<n.length;){const t=n[s++];if(!(t>>7)){r.push(t);continue}let i=null,a=null;if(192==(224&t))i=1,a=127;else if(224==(240&t))i=2,a=2047;else{if(240!=(248&t)){s+=e(128==(192&t)?"UNEXPECTED_CONTINUE":"BAD_PREFIX",s-1,n,r);continue}i=3,a=65535}if(s-1+i>=n.length){s+=e("OVERRUN",s-1,n,r);continue}let o=t&(1<<8-i-1)-1;for(let t=0;t<i;t++){let t=n[s];if(128!=(192&t)){s+=e("MISSING_CONTINUE",s,n,r),o=null;break}o=o<<6|63&t,s++}null!==o&&(o>1114111?s+=e("OUT_OF_RANGE",s-1-i,n,r,o):o>=55296&&o<=57343?s+=e("UTF16_SURROGATE",s-1-i,n,r,o):o<=a?s+=e("OVERLONG",s-1-i,n,r,o):r.push(o))}return r}(t,e).map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}function vt(t){return mt(bt(t))}const Et=BigInt(0),xt=BigInt(1),kt=9007199254740991;function Pt(t,e){const n=Ct(t,"value"),r=BigInt(Ot(e,"width"));return c(n>>r===Et,"overflow","NUMERIC_FAULT",{operation:"fromTwos",fault:"overflow",value:t}),n>>r-xt?-((~n&(xt<<r)-xt)+xt):n}function Bt(t,e){let n=It(t,"value");const r=BigInt(Ot(e,"width")),s=xt<<r-xt;return n<Et?(n=-n,c(n<=s,"too low","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:t}),(~n&(xt<<r)-xt)+xt):(c(n<s,"too high","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:t}),n)}function Nt(t,e){const n=Ct(t,"value"),r=BigInt(Ot(e,"bits"));return n&(xt<<r)-xt}function It(t,e){switch(typeof t){case"bigint":return t;case"number":return u(Number.isInteger(t),"underflow",e||"value",t),u(t>=-kt&&t<=kt,"overflow",e||"value",t),BigInt(t);case"string":try{if(""===t)throw new Error("empty string");return"-"===t[0]&&"-"!==t[1]?-BigInt(t.substring(1)):BigInt(t)}catch(n){u(!1,invalid BigNumberish string: ${n.message},e||"value",t)}}u(!1,"invalid BigNumberish value",e||"value",t)}function Ct(t,e){const n=It(t,e);return c(n>=Et,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:t}),n}const Tt="0123456789abcdef";function Rt(t){if(t instanceof Uint8Array){let e="0x0";for(const n of t)e+=Tt[n>>4],e+=Tt[15&n];return BigInt(e)}return It(t)}function Ot(t,e){switch(typeof t){case"bigint":return u(t>=-kt&&t<=kt,"overflow",e||"value",t),Number(t);case"number":return u(Number.isInteger(t),"underflow",e||"value",t),u(t>=-kt&&t<=kt,"overflow",e||"value",t),t;case"string":try{if(""===t)throw new Error("empty string");return Ot(BigInt(t),e)}catch(n){u(!1,invalid numeric string: ${n.message},e||"value",t)}}u(!1,"invalid numeric value",e||"value",t)}function St(t,e){const n=Ct(t,"value");let r=n.toString(16);if(null==e)r.length%2&&(r="0"+r);else{const s=Ot(e,"width");if(0===s&&n===Et)return"0x";for(c(2s>=r.length,value exceeds width (${s} bytes),"NUMERIC_FAULT",{operation:"toBeHex",fault:"overflow",value:t});r.length<2s;)r="0"+r}return"0x"+r}function Ft(t,e){const n=Ct(t,"value");if(n===Et){const t=null!=e?Ot(e,"width"):0;return new Uint8Array(t)}let r=n.toString(16);if(r.length%2&&(r="0"+r),null!=e){const n=Ot(e,"width");for(;r.length<2n;)r="00"+r;c(2n===r.length,value exceeds width (${n} bytes),"NUMERIC_FAULT",{operation:"toBeArray",fault:"overflow",value:t})}const s=new Uint8Array(r.length/2);for(let t=0;t<s.length;t++){const e=2t;s[t]=parseInt(r.substring(e,e+2),16)}return s}function Lt(t){let e=ot(it(t)?t:Ft(t)).substring(2);for(;e.startsWith("0");)e=e.substring(1);return""===e&&(e="0"),"0x"+e}const Ut=32,Dt=new Uint8Array(Ut),Gt=["then"],Mt={},Ht=new WeakMap;function Qt(t){return Ht.get(t)}function Vt(t,e){Ht.set(t,e)}function jt(t,e){const n=new Error(deferred error during ABI decoding triggered accessing ${t});throw n.error=e,n}function Jt(t,e,n){return t.indexOf(null)>=0?e.map((t,e)=>t instanceof zt?Jt(Qt(t),t,n):t):t.reduce((t,r,s)=>{let i=e.getValue(r);return r in t||(n&&i instanceof zt&&(i=Jt(Qt(i),i,n)),t[r]=i),t},{})}class zt extends Array{#e;constructor(...t){const e=t[0];let n=t[1],r=(t[2]||[]).slice(),s=!0;e!==Mt&&(n=t,r=[],s=!1),super(n.length),n.forEach((t,e)=>{this[e]=t});const i=r.reduce((t,e)=>("string"==typeof e&&t.set(e,(t.get(e)||0)+1),t),new Map);if(Vt(this,Object.freeze(n.map((t,e)=>{const n=r[e];return null!=n&&1===i.get(n)?n:null}))),this.#e=[],null==this.#e&&this.#e,!s)return;Object.freeze(this);const a=new Proxy(this,{get:(t,e,n)=>{if("string"==typeof e){if(e.match(/^[0-9]+$/)){const n=Ot(e,"%index");if(n<0||n>=this.length)throw new RangeError("out of result range");const r=t[n];return r instanceof Error&&jt(index ${n},r),r}if(Gt.indexOf(e)>=0)return Reflect.get(t,e,n);const r=t[e];if(r instanceof Function)return function(...e){return r.apply(this===n?t:this,e)};if(!(e in t))return t.getValue.apply(this===n?t:this,[e])}return Reflect.get(t,e,n)}});return Vt(a,Qt(this)),a}toArray(t){const e=[];return this.forEach((n,r)=>{n instanceof Error&&jt(index ${r},n),t&&n instanceof zt&&(n=n.toArray(t)),e.push(n)}),e}toObject(t){const e=Qt(this);return e.reduce((n,r,s)=>(c(null!=r,value at index ${s} unnamed,"UNSUPPORTED_OPERATION",{operation:"toObject()"}),Jt(e,this,t)),{})}slice(t,e){null==t&&(t=0),t<0&&(t+=this.length)<0&&(t=0),null==e&&(e=this.length),e<0&&(e+=this.length)<0&&(e=0),e>this.length&&(e=this.length);const n=Qt(this),r=[],s=[];for(let i=t;i<e;i++)r.push(this[i]),s.push(n[i]);return new zt(Mt,r,s)}filter(t,e){const n=Qt(this),r=[],s=[];for(let i=0;i<this.length;i++){const a=this[i];a instanceof Error&&jt(index ${i},a),t.call(e,a,i,this)&&(r.push(a),s.push(n[i]))}return new zt(Mt,r,s)}map(t,e){const n=[];for(let r=0;r<this.length;r++){const s=this[r];s instanceof Error&&jt(index ${r},s),n.push(t.call(e,s,r,this))}return n}getValue(t){const e=Qt(this).indexOf(t);if(-1===e)return;const n=this[e];return n instanceof Error&&jt(property ${JSON.stringify(t)},n.error),n}static fromItems(t,e){return new zt(Mt,t,e)}}function Kt(t){let e=Ft(t);return c(e.length<=Ut,"value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:Ut,offset:e.length}),e.length!==Ut&&(e=rt(lt([Dt.slice(e.length%Ut),e]))),e}class qt{name;type;localName;dynamic;constructor(t,e,n,r){s(this,{name:t,type:e,localName:n,dynamic:r},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(t,e){u(!1,t,this.localName,e)}}class _t{#n;#r;constructor(){this.#n=[],this.#r=0}get data(){return lt(this.#n)}get length(){return this.#r}#s(t){return this.#n.push(t),this.#r+=t.length,t.length}appendWriter(t){return this.#s(rt(t.data))}writeBytes(t){let e=rt(t);const n=e.length%Ut;return n&&(e=rt(lt([e,Dt.slice(n)]))),this.#s(e)}writeValue(t){return this.#s(Kt(t))}writeUpdatableValue(){const t=this.#n.length;return this.#n.push(Dt),this.#r+=Ut,e=>{this.#n[t]=Kt(e)}}}class Wt{allowLoose;#n;#i;#a;#o;#l;constructor(t,e,n){s(this,{allowLoose:!!e}),this.#n=rt(t),this.#a=0,this.#o=null,this.#l=null!=n?n:1024,this.#i=0}get data(){return ot(this.#n)}get dataLength(){return this.#n.length}get consumed(){return this.#i}get bytes(){return new Uint8Array(this.#n)}#c(t){if(this.#o)return this.#o.#c(t);this.#a+=t,c(this.#l<1||this.#a<=this.#lthis.dataLength,compressed ABI data exceeds inflation ratio of ${this.#l} ( see: https://github.com/ethers-io/ethers.js/issues/4537 ),"BUFFER_OVERRUN",{buffer:rt(this.#n),offset:this.#i,length:t,info:{bytesRead:this.#a,dataLength:this.dataLength}})}#u(t,e,n){let r=Math.ceil(e/Ut)Ut;return this.#i+r>this.#n.length&&(this.allowLoose&&n&&this.#i+e<=this.#n.length?r=e:c(!1,"data out-of-bounds","BUFFER_OVERRUN",{buffer:rt(this.#n),length:this.#n.length,offset:this.#i+r})),this.#n.slice(this.#i,this.#i+r)}subReader(t){const e=new Wt(this.#n.slice(this.#i+t),this.allowLoose,this.#l);return e.#o=this,e}readBytes(t,e){let n=this.#u(0,t,!!e);return this.#c(t),this.#i+=n.length,n.slice(0,t)}readValue(){return Rt(this.readBytes(Ut))}readIndex(){return Ot(Rt(this.readBytes(Ut)))}}const Yt=BigInt(0),Zt=BigInt(36);function Xt(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=nt(mt(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 $t={};for(let t=0;t<10;t++)$t[String(t)]=String(t);for(let t=0;t<26;t++)$t[String.fromCharCode(65+t)]=String(10+t);const te=function(){const t={};for(let e=0;e<36;e++)t["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e);return t}();function ee(t){if(u("string"==typeof t,"invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/)){t.startsWith("0x")||(t="0x"+t);const e=Xt(t);return u(!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}$/)){u(t.substring(2,4)===function(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>$t[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=Yt;for(let n=0;n<t.length;n++)e=eZt+te[t[n]];return e}(t.substring(4)).toString(16);for(;e.length<40;)e="0"+e;return Xt("0x"+e)}u(!1,"invalid address","address",t)}class ne extends qt{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){let n=w.dereference(e,"string");try{n=ee(n)}catch(t){return this.throwError(t.message,e)}return t.writeValue(n)}decode(t){return ee(St(t.readValue(),20))}}class re extends qt{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 se(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 c(r,"cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:n}),c(!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 u(!1,"invalid tuple value","tuple",n);u(e.length===r.length,"types/value length mismatch","tuple",n);let s=new t,i=new t,a=[];e.forEach((t,e)=>{let n=r[e];if(t.dynamic){let e=i.length;t.encode(i,n);let r=s.writeUpdatableValue();a.push(t=>{r(t+e)})}else t.encode(s,n)}),a.forEach(t=>{t(s.length)});let o=t.appendWriter(s);return o+=t.appendWriter(i),o}function ie(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(a(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(a(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)}),zt.fromItems(n,r)}class ae extends qt{coder;length;constructor(t,e,n){super("array",t.type+"["+(e>=0?e:"")+"]",n,-1===e||t.dynamic),s(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=w.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)),h(n.length,r,"coder array"+(this.localName?" "+this.localName:""));let s=[];for(let t=0;t<n.length;t++)s.push(this.coder);return se(t,s,n)}decode(t){let e=this.length;-1===e&&(e=t.readIndex(),c(32e<=t.dataLength,"insufficient data length","BUFFER_OVERRUN",{buffer:t.bytes,offset:32e,length:t.dataLength}));let n=[];for(let t=0;t<e;t++)n.push(new re(this.coder));return ie(t,n)}}class oe extends qt{constructor(t){super("bool","bool",t,!1)}defaultValue(){return!1}encode(t,e){const n=w.dereference(e,"bool");return t.writeValue(n?1:0)}decode(t){return!!t.readValue()}}class le extends qt{constructor(t,e){super(t,t,e,!0)}defaultValue(){return"0x"}encode(t,e){e=rt(e);let n=t.writeValue(e.length);return n+=t.writeBytes(e),n}decode(t){return t.readBytes(t.readIndex(),!0)}}class ce extends le{constructor(t){super("bytes",t)}decode(t){return ot(super.decode(t))}}class ue extends qt{size;constructor(t,e){let n="bytes"+String(t);super(n,n,e,!1),s(this,{size:t},{size:"number"})}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2this.size)}encode(t,e){let n=rt(w.dereference(e,this.type));return n.length!==this.size&&this._throwError("incorrect data length",e),t.writeBytes(n)}decode(t){return ot(t.readBytes(this.size))}}const he=new Uint8Array([]);class fe extends qt{constructor(t){super("null","",t,!1)}defaultValue(){return null}encode(t,e){return null!=e&&this._throwError("not null",e),t.writeBytes(he)}decode(t){return t.readBytes(0),null}}const de=BigInt(0),pe=BigInt(1),ge=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class me extends qt{size;signed;constructor(t,e,n){const r=(e?"int":"uint")+8t;super(r,r,n,!1),s(this,{size:t,signed:e},{size:"number",signed:"boolean"})}defaultValue(){return 0}encode(t,e){let n=It(w.dereference(e,this.type)),r=Nt(ge,256);if(this.signed){let t=Nt(r,8this.size-1);(n>t||n<-(t+pe))&&this._throwError("value out-of-bounds",e),n=Bt(n,256)}else(n<de||n>Nt(r,8this.size))&&this.throwError("value out-of-bounds",e);return t.writeValue(n)}decode(t){let e=Nt(t.readValue(),8this.size);return this.signed&&(e=Pt(e,8this.size)),e}}class ye extends le{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,bt(w.dereference(e,"string")))}decode(t){return At(super.decode(t))}}class we extends qt{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),s(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=w.dereference(e,"tuple");return se(t,this.coders,n)}decode(t){return ie(t,this.coders)}}function be(t){const e=new Set;return t.forEach(t=>e.add(t)),Object.freeze(e)}const Ae=be("external public payable override".split(" ")),ve="constant external internal payable private public pure view override",Ee=be(ve.split(" ")),xe="constructor error event fallback function receive struct",ke=be(xe.split(" ")),Pe="calldata memory storage payable indexed",Be=be(Pe.split(" ")),Ne=be([xe,Pe,"tuple returns",ve].join(" ").split(" ")),Ie={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},Ce=new RegExp("^(\s*)"),Te=new RegExp("^([0-9]+)"),Re=new RegExp("^([a-zA-Z$][a-zA-Z0-9$]*)"),Oe=new RegExp("^([a-zA-Z$][a-zA-Z0-9$])$"),Se=new RegExp("^(address|bool|bytes([0-9])|string|u?int([0-9]))$");class Fe{#i;#h;get offset(){return this.#i}get length(){return this.#h.length-this.#i}constructor(t){this.#i=0,this.#h=t.slice()}clone(){return new Fe(this.#h)}reset(){this.#i=0}#f(t=0,e=0){return new Fe(this.#h.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.#f(this.#i+1,t.match+1);return this.#i=t.match+1,e}popParams(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=[];for(;this.#i<t.match-1;){const t=this.peek().linkNext;e.push(this.#f(this.#i+1,t)),this.#i=t}return this.#i=t.match+1,e}peek(){if(this.#i>=this.#h.length)throw new Error("out-of-bounds");return this.#h[this.#i]}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.#i++,t}toString(){const t=[];for(let e=this.#i;e<this.#h.length;e++){const n=this.#h[e];t.push(${n.type}:${n.text})}return<TokenString ${t.join(" ")}>}}function Le(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 a=t.substring(i),o=a.match(Ce);o&&(i+=o[1].length,a=t.substring(i));const l={depth:r.length,linkBack:-1,linkNext:-1,match:-1,type:"",text:"",offset:i,value:-1};e.push(l);let c=Ie[a[0]]||"";if(c){if(l.type=c,l.text=a[0],i++,"OPEN_PAREN"===c)r.push(e.length-1),s.push(e.length-1);else if("CLOSE_PAREN"==c)0===r.length&&n("no matching open bracket"),l.match=r.pop(),e[l.match].match=e.length-1,l.depth--,l.linkBack=s.pop(),e[l.linkBack].linkNext=e.length-1;else if("COMMA"===c)l.linkBack=s.pop(),e[l.linkBack].linkNext=e.length-1,s.push(e.length-1);else if("OPEN_BRACKET"===c)l.type="BRACKET";else if("CLOSE_BRACKET"===c){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=Ot(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(o=a.match(Re),o){if(l.text=o[1],i+=l.text.length,Ne.has(l.text)){l.type="KEYWORD";continue}if(l.text.match(Se)){l.type="TYPE";continue}l.type="ID"}else{if(o=a.match(Te),!o)throw new Error(unexpected token ${JSON.stringify(a[0])} at position ${i});l.text=o[1],l.type="NUMBER",i+=l.text.length}}return new Fe(e.map(t=>Object.freeze(t)))}function Ue(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 De(t,e){if(e.peekKeyword(ke)){const n=e.pop().text;if(n!==t)throw new Error(expected ${t}, got ${n})}return e.popType("ID")}function Ge(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 Me(t){let e=Ge(t,Ee);return Ue(e,be("constant payable nonpayable".split(" "))),Ue(e,be("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 He(t,e){return t.popParams().map(t=>tn.from(t,e))}function Qe(t){if(t.peekType("AT")){if(t.pop(),t.peekType("NUMBER"))return It(t.pop().text);throw new Error("invalid gas")}return null}function Ve(t){if(t.length)throw new Error(unexpected tokens at offset ${t.offset}: ${t.toString()})}const je=new RegExp(/^(.)[([0-9])]$/);function Je(t){const e=t.match(Se);if(u(e,"invalid type","type",t),"uint"===t)return"uint256";if("int"===t)return"int256";if(e[2]){const n=parseInt(e[2]);u(0!==n&&n<=32,"invalid bytes length","type",t)}else if(e[3]){const n=parseInt(e[3]);u(0!==n&&n<=256&&n%8==0,"invalid numeric width","type",t)}return t}const ze={},Ke=Symbol.for("_ethers_internal"),qe="_ParamTypeInternal",_e="_ErrorInternal",We="_EventInternal",Ye="_ConstructorInternal",Ze="_FallbackInternal",Xe="_FunctionInternal",$e="_StructInternal";class tn{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(t,e,n,r,i,a,o,l){if(d(t,ze,"ParamType"),Object.defineProperty(this,Ke,{value:qe}),a&&(a=Object.freeze(a.slice())),"array"===r){if(null==o||null==l)throw new Error("")}else if(null!=o||null!=l)throw new Error("");if("tuple"===r){if(null==a)throw new Error("")}else if(null!=a)throw new Error("");s(this,{name:e,type:n,baseType:r,indexed:i,components:a,arrayLength:o,arrayChildren:l})}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)}#d(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.#d(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].#d(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.#d(n,t,e,t=>{r[0]=t}),n.length&&await Promise.all(n),r[0]}static from(t,e){if(tn.isParamType(t))return t;if("string"==typeof t)try{return tn.from(Le(t),e)}catch(e){u(!1,"invalid param type","obj",t)}else if(t instanceof Fe){let n="",r="",s=null;Ge(t,be(["tuple"])).has("tuple")||t.peekType("OPEN_PAREN")?(r="tuple",s=t.popParams().map(t=>tn.from(t)),n=tuple(${s.map(t=>t.format()).join(",")})):(n=Je(t.popType("TYPE")),r=n);let i=null,a=null;for(;t.length&&t.peekType("BRACKET");){const e=t.pop();i=new tn(ze,"",n,r,null,s,a,i),a=e.value,n+=e.text,r="array",s=null}let o=null;if(Ge(t,Be).has("indexed")){if(!e)throw new Error("");o=!0}const l=t.peekType("ID")?t.pop().text:"";if(t.length)throw new Error("leftover tokens");return new tn(ze,l,n,r,o,s,a,i)}const n=t.name;u(!n||"string"==typeof n&&n.match(Oe),"invalid name","obj.name",n);let r=t.indexed;null!=r&&(u(e,"parameter cannot be indexed","obj.indexed",t.indexed),r=!!r);let s=t.type,i=s.match(je);if(i){const e=parseInt(i[2]||"-1"),a=tn.from({type:i[1],components:t.components});return new tn(ze,n||"",s,"array",r,null,e,a)}if("tuple"===s||s.startsWith("tuple(")||s.startsWith("(")){const e=null!=t.components?t.components.map(t=>tn.from(t)):null;return new tn(ze,n||"",s,"tuple",r,e,null,null)}return s=Je(t.type),new tn(ze,n||"",s,s,r,null,null,null)}static isParamType(t){return t&&t[Ke]===qe}}class en{type;inputs;constructor(t,e,n){d(t,ze,"Fragment"),s(this,{type:e,inputs:n=Object.freeze(n.slice())})}static from(t){if("string"==typeof t){try{en.from(JSON.parse(t))}catch(t){}return en.from(Le(t))}if(t instanceof Fe)switch(t.peekKeyword(ke)){case"constructor":return on.from(t);case"error":return sn.from(t);case"event":return an.from(t);case"fallback":case"receive":return ln.from(t);case"function":return cn.from(t);case"struct":return un.from(t)}else if("object"==typeof t){switch(t.type){case"constructor":return on.from(t);case"error":return sn.from(t);case"event":return an.from(t);case"fallback":case"receive":return ln.from(t);case"function":return cn.from(t);case"struct":return un.from(t)}c(!1,unsupported type: ${t.type},"UNSUPPORTED_OPERATION",{operation:"Fragment.from"})}u(!1,"unsupported frgament object","obj",t)}static isConstructor(t){return on.isFragment(t)}static isError(t){return sn.isFragment(t)}static isEvent(t){return an.isFragment(t)}static isFunction(t){return cn.isFragment(t)}static isStruct(t){return un.isFragment(t)}}class nn extends en{name;constructor(t,e,n,r){super(t,e,r),u("string"==typeof n&&n.match(Oe),"invalid identifier","name",n),r=Object.freeze(r.slice()),s(this,{name:n})}}function rn(t,e){return"("+e.map(e=>e.format(t)).join("full"===t?", ":",")+")"}class sn extends nn{constructor(t,e,n){super(t,"error",e,n),Object.defineProperty(this,Ke,{value:_e})}get selector(){return vt(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+rn(t,this.inputs)),e.join(" ")}static from(t){if(sn.isFragment(t))return t;if("string"==typeof t)return sn.from(Le(t));if(t instanceof Fe){const e=De("error",t),n=He(t);return Ve(t),new sn(ze,e,n)}return new sn(ze,t.name,t.inputs?t.inputs.map(tn.from):[])}static isFragment(t){return t&&t[Ke]===_e}}class an extends nn{anonymous;constructor(t,e,n,r){super(t,"event",e,n),Object.defineProperty(this,Ke,{value:We}),s(this,{anonymous:r})}get topicHash(){return vt(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+rn(t,this.inputs)),"sighash"!==t&&this.anonymous&&e.push("anonymous"),e.join(" ")}static getTopicHash(t,e){return e=(e||[]).map(t=>tn.from(t)),new an(ze,t,e,!1).topicHash}static from(t){if(an.isFragment(t))return t;if("string"==typeof t)try{return an.from(Le(t))}catch(e){u(!1,"invalid event fragment","obj",t)}else if(t instanceof Fe){const e=De("event",t),n=He(t,!0),r=!!Ge(t,be(["anonymous"])).has("anonymous");return Ve(t),new an(ze,e,n,r)}return new an(ze,t.name,t.inputs?t.inputs.map(t=>tn.from(t,!0)):[],!!t.anonymous)}static isFragment(t){return t&&t[Ke]===We}}class on extends en{payable;gas;constructor(t,e,n,r,i){super(t,e,n),Object.defineProperty(this,Ke,{value:Ye}),s(this,{payable:r,gas:i})}format(t){if(c(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${rn(t,this.inputs)}];return this.payable&&e.push("payable"),null!=this.gas&&e.push(@${this.gas.toString()}),e.join(" ")}static from(t){if(on.isFragment(t))return t;if("string"==typeof t)try{return on.from(Le(t))}catch(e){u(!1,"invalid constuctor fragment","obj",t)}else if(t instanceof Fe){Ge(t,be(["constructor"]));const e=He(t),n=!!Ge(t,Ae).has("payable"),r=Qe(t);return Ve(t),new on(ze,"constructor",e,n,r)}return new on(ze,"constructor",t.inputs?t.inputs.map(tn.from):[],!!t.payable,null!=t.gas?t.gas:null)}static isFragment(t){return t&&t[Ke]===Ye}}class ln extends en{payable;constructor(t,e,n){super(t,"fallback",e),Object.defineProperty(this,Ke,{value:Ze}),s(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(ln.isFragment(t))return t;if("string"==typeof t)try{return ln.from(Le(t))}catch(e){u(!1,"invalid fallback fragment","obj",t)}else if(t instanceof Fe){const e=t.toString();if(u(t.peekKeyword(be(["fallback","receive"])),"type must be fallback or receive","obj",e),"receive"===t.popKeyword(be(["fallback","receive"]))){const e=He(t);return u(0===e.length,"receive cannot have arguments","obj.inputs",e),Ge(t,be(["payable"])),Ve(t),new ln(ze,[],!0)}let n=He(t);n.length?u(1===n.length&&"bytes"===n[0].type,"invalid fallback inputs","obj.inputs",n.map(t=>t.format("minimal")).join(", ")):n=[tn.from("bytes")];const r=Me(t);if(u("nonpayable"===r||"payable"===r,"fallback cannot be constants","obj.stateMutability",r),Ge(t,be(["returns"])).has("returns")){const e=He(t);u(1===e.length&&"bytes"===e[0].type,"invalid fallback outputs","obj.outputs",e.map(t=>t.format("minimal")).join(", "))}return Ve(t),new ln(ze,n,"payable"===r)}if("receive"===t.type)return new ln(ze,[],!0);if("fallback"===t.type){const e=[tn.from("bytes")],n="payable"===t.stateMutability;return new ln(ze,e,n)}u(!1,"invalid fallback description","obj",t)}static isFragment(t){return t&&t[Ke]===Ze}}class cn extends nn{constant;outputs;stateMutability;payable;gas;constructor(t,e,n,r,i,a){super(t,"function",e,r),Object.defineProperty(this,Ke,{value:Xe}),s(this,{constant:"view"===n||"pure"===n,gas:a,outputs:i=Object.freeze(i.slice()),payable:"payable"===n,stateMutability:n})}get selector(){return vt(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+rn(t,this.inputs)),"sighash"!==t&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(rn(t,this.outputs))),null!=this.gas&&e.push(@${this.gas.toString()})),e.join(" ")}static getSelector(t,e){return e=(e||[]).map(t=>tn.from(t)),new cn(ze,t,"view",e,[],null).selector}static from(t){if(cn.isFragment(t))return t;if("string"==typeof t)try{return cn.from(Le(t))}catch(e){u(!1,"invalid function fragment","obj",t)}else if(t instanceof Fe){const e=De("function",t),n=He(t),r=Me(t);let s=[];Ge(t,be(["returns"])).has("returns")&&(s=He(t));const i=Qe(t);return Ve(t),new cn(ze,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 cn(ze,t.name,e,t.inputs?t.inputs.map(tn.from):[],t.outputs?t.outputs.map(tn.from):[],null!=t.gas?t.gas:null)}static isFragment(t){return t&&t[Ke]===Xe}}class un extends nn{constructor(t,e,n){super(t,"struct",e,n),Object.defineProperty(this,Ke,{value:$e})}format(){throw new Error("@TODO")}static from(t){if("string"==typeof t)try{return un.from(Le(t))}catch(e){u(!1,"invalid struct fragment","obj",t)}else if(t instanceof Fe){const e=De("struct",t),n=He(t);return Ve(t),new un(ze,e,n)}return new un(ze,t.name,t.inputs?t.inputs.map(tn.from):[])}static isFragment(t){return t&&t[Ke]===$e}}const hn=new Map;hn.set(0,"GENERIC_PANIC"),hn.set(1,"ASSERT_FALSE"),hn.set(17,"OVERFLOW"),hn.set(18,"DIVIDE_BY_ZERO"),hn.set(33,"ENUM_RANGE_ERROR"),hn.set(34,"BAD_STORAGE_DATA"),hn.set(49,"STACK_UNDERFLOW"),hn.set(50,"ARRAY_RANGE_ERROR"),hn.set(65,"OUT_OF_MEMORY"),hn.set(81,"UNINITIALIZED_FUNCTION_CALL");const fn=new RegExp(/^bytes([0-9])$/),dn=new RegExp(/^(u?int)([0-9]*)$/);let pn=null,gn=1024;class mn{#p(t){if(t.isArray())return new ae(this.#p(t.arrayChildren),t.arrayLength,t.name);if(t.isTuple())return new we(t.components.map(t=>this.#p(t)),t.name);switch(t.baseType){case"address":return new ne(t.name);case"bool":return new oe(t.name);case"string":return new ye(t.name);case"bytes":return new ce(t.name);case"":return new fe(t.name)}let e=t.type.match(dn);if(e){let n=parseInt(e[2]||"256");return u(0!==n&&n<=256&&n%8==0,"invalid "+e[1]+" bit length","param",t),new me(n/8,"int"===e[1],t.name)}if(e=t.type.match(fn),e){let n=parseInt(e[1]);return u(0!==n&&n<=32,"invalid bytes length","param",t),new ue(n,t.name)}u(!1,"invalid type","type",t.type)}getDefaultValue(t){const e=t.map(t=>this.#p(tn.from(t)));return new we(e,"").defaultValue()}encode(t,e){h(e.length,t.length,"types/values length mismatch");const n=t.map(t=>this.#p(tn.from(t))),r=new we(n,""),s=new t;return r.encode(s,e),s.data}decode(t,e,n){const r=t.map(t=>this.#p(tn.from(t)));return new we(r,"").decode(new Wt(e,n,gn))}static _setDefaultMaxInflation(t){u("number"==typeof t&&Number.isInteger(t),"invalid defaultMaxInflation factor","value",t),gn=t}static defaultAbiCoder(){return null==pn&&(pn=new mn),pn}static getBuiltinCallException(t,e,n){return function(t,e,n,r){let s="missing revert data",i=null,a=null;if(n){s="execution reverted";const t=nt(n);if(n=ot(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"===ot(t.slice(0,4)))try{i=r.decode(["string"],t.slice(4))[0],a={signature:"Error(string)",name:"Error",args:[i]},s+=: ${JSON.stringify(i)}}catch(t){s+=" (could not decode reason; invalid string data)"}else if("0x4e487b71"===ot(t.slice(0,4)))try{const e=Number(r.decode(["uint256"],t.slice(4))[0]);a={signature:"Panic(uint256)",name:"Panic",args:[e]},i=Panic due to ${hn.get(e)||"UNKNOWN"}(${e}),s+=: ${i}}catch(t){s+=" (could not decode panic code)"}else s+=" (unknown custom error)"}const o={to:e.to?ee(e.to):null,data:e.data||"0x"};return e.from&&(o.from=ee(e.from)),l(s,"CALL_EXCEPTION",{action:t,data:n,reason:i,transaction:o,invocation:null,revert:a})}(t,e,n,mn.defaultAbiCoder())}}class yn{fragment;name;signature;topic;args;constructor(t,e,n){const r=t.name,i=t.format();s(this,{fragment:t,name:r,signature:i,topic:e,args:n})}}class wn{fragment;name;args;signature;selector;value;constructor(t,e,n,r){const i=t.name,a=t.format();s(this,{fragment:t,name:i,args:n,signature:a,selector:e,value:r})}}class bn{fragment;name;args;signature;selector;constructor(t,e,n){const r=t.name,i=t.format();s(this,{fragment:t,name:r,args:n,signature:i,selector:e})}}class An{hash;_isIndexed;static isIndexed(t){return!(!t||!t._isIndexed)}constructor(t){s(this,{hash:t,_isIndexed:!0})}}const vn={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"},En={"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&&vn[t.toString()]&&(e=vn[t.toString()]),reverted with panic code 0x${t.toString(16)} (${e})}}};class xn{fragments;deploy;fallback;receive;#g;#m;#y;#w;constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,this.#y=new Map,this.#g=new Map,this.#m=new Map;const n=[];for(const t of e)try{n.push(en.from(t))}catch(e){console.log([Warning] Invalid Fragment ${JSON.stringify(t)}:,e.message)}s(this,{fragments:Object.freeze(n)});let r=null,i=!1;this.#w=this.getAbiCoder(),this.fragments.forEach((t,e)=>{let n;switch(t.type){case"constructor":return this.deploy?void console.log("duplicate definition - constructor"):void s(this,{deploy:t});case"fallback":return void(0===t.inputs.length?i=!0:(u(!r||t.payable!==r.payable,"conflicting fallback fragments",fragments[${e}],t),r=t,i=r.payable));case"function":n=this.#y;break;case"event":n=this.#m;break;case"error":n=this.#g;break;default:return}const a=t.format();n.has(a)||n.set(a,t)}),this.deploy||s(this,{deploy:on.from("constructor()")}),s(this,{fallback:r,receive:i})}format(t){const e=t?"minimal":"full";return this.fragments.map(t=>t.format(e))}formatJson(){const t=this.fragments.map(t=>t.format("json"));return JSON.stringify(t.map(t=>JSON.parse(t)))}getAbiCoder(){return mn.defaultAbiCoder()}#b(t,e,n){if(st(t)){const e=t.toLowerCase();for(const t of this.#y.values())if(e===t.selector)return t;return null}if(-1===t.indexOf("(")){const r=[];for(const[e,n]of this.#y)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;w.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(w.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)}return 0===r.length?null:(r.length>1&&n&&u(!1,ambiguous function description (i.e. matches ${r.map(t=>JSON.stringify(t.format())).join(", ")}),"key",t),r[0])}return this.#y.get(cn.from(t).format())||null}getFunctionName(t){const e=this.#b(t,null,!1);return u(e,"no matching function","key",t),e.name}hasFunction(t){return!!this.#b(t,null,!1)}getFunction(t,e){return this.#b(t,e||null,!0)}forEachFunction(t){const e=Array.from(this.#y.keys());e.sort((t,e)=>t.localeCompare(e));for(let n=0;n<e.length;n++){const r=e[n];t(this.#y.get(r),n)}}#A(t,e,n){if(st(t)){const e=t.toLowerCase();for(const t of this.#m.values())if(e===t.topicHash)return t;return null}if(-1===t.indexOf("(")){const r=[];for(const[e,n]of this.#m)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(w.isTyped(e[s])&&e[s].type!==n[s].baseType){r.splice(t,1);break}}}return 0===r.length?null:(r.length>1&&n&&u(!1,ambiguous event description (i.e. matches ${r.map(t=>JSON.stringify(t.format())).join(", ")}),"key",t),r[0])}return this.#m.get(an.from(t).format())||null}getEventName(t){const e=this.#A(t,null,!1);return u(e,"no matching event","key",t),e.name}hasEvent(t){return!!this.#A(t,null,!1)}getEvent(t,e){return this.#A(t,e||null,!0)}forEachEvent(t){const e=Array.from(this.#m.keys());e.sort((t,e)=>t.localeCompare(e));for(let n=0;n<e.length;n++){const r=e[n];t(this.#m.get(r),n)}}getError(t,e){if(st(t)){const e=t.toLowerCase();if(En[e])return sn.from(En[e].signature);for(const t of this.#g.values())if(e===t.selector)return t;return null}if(-1===t.indexOf("(")){const e=[];for(const[n,r]of this.#g)n.split("(")[0]===t&&e.push(r);return 0===e.length?"Error"===t?sn.from("error Error(string)"):"Panic"===t?sn.from("error Panic(uint256)"):null:(e.length>1&&u(!1,ambiguous error description (i.e. ${e.map(t=>JSON.stringify(t.format())).join(", ")}),"name",t),e[0])}if("Error(string)"===(t=sn.from(t).format()))return sn.from("error Error(string)");if("Panic(uint256)"===t)return sn.from("error Panic(uint256)");return this.#g.get(t)||null}forEachError(t){const e=Array.from(this.#g.keys());e.sort((t,e)=>t.localeCompare(e));for(let n=0;n<e.length;n++){const r=e[n];t(this.#g.get(r),n)}}_decodeParams(t,e){return this.#w.decode(t,e)}_encodeParams(t,e){return this.#w.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){if("string"==typeof t){const e=this.getError(t);u(e,"unknown error","fragment",t),t=e}return u(ut(e,0,4)===t.selector,data signature does not match error ${t.name}.,"data",e),this._decodeParams(t.inputs,ut(e,4))}encodeErrorResult(t,e){if("string"==typeof t){const e=this.getError(t);u(e,"unknown error","fragment",t),t=e}return lt([t.selector,this._encodeParams(t.inputs,e||[])])}decodeFunctionData(t,e){if("string"==typeof t){const e=this.getFunction(t);u(e,"unknown function","fragment",t),t=e}return u(ut(e,0,4)===t.selector,data signature does not match function ${t.name}.,"data",e),this._decodeParams(t.inputs,ut(e,4))}encodeFunctionData(t,e){if("string"==typeof t){const e=this.getFunction(t);u(e,"unknown function","fragment",t),t=e}return lt([t.selector,this._encodeParams(t.inputs,e||[])])}decodeFunctionResult(t,e){if("string"==typeof t){const e=this.getFunction(t);u(e,"unknown function","fragment",t),t=e}let n="invalid length for result data";const r=rt(e);if(r.length%32==0)try{return this.#w.decode(t.outputs,r)}catch(t){n="could not decode result data"}c(!1,n,"BAD_DATA",{value:ot(r),info:{method:t.name,signature:t.format()}})}makeError(t,e){const n=nt(t,"data"),r=mn.getBuiltinCallException("call",e,n);if(r.message.startsWith("execution reverted (unknown custom error)")){const t=ot(n.slice(0,4)),e=this.getError(t);if(e)try{const t=this.#w.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);u(e,"unknown function","fragment",t),t=e}return ot(this.#w.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){if("string"==typeof t){const e=this.getEvent(t);u(e,"unknown event","eventFragment",t),t=e}c(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?vt(e):"bytes"===t.type?mt(ot(e)):("bool"===t.type&&"boolean"==typeof e?e=e?"0x01":"0x00":t.type.match(/^u?int/)?e=St(e):t.type.match(/^bytes/)?e=ht(e,32,!1):"address"===t.type&&this.#w.encode(["address"],[e]),ft(ot(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?u(!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)):u(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);u(e,"unknown event","eventFragment",t),t=e}const n=[],r=[],s=[];return t.anonymous||n.push(t.topicHash),u(e.length===t.inputs.length,"event arguments/values mismatch","values",e),t.inputs.forEach((t,i)=>{const a=e[i];if(t.indexed)if("string"===t.type)n.push(vt(a));else if("bytes"===t.type)n.push(mt(a));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");n.push(this.#w.encode([t.type],[a]))}else r.push(t),s.push(a)}),{data:this.#w.encode(r,s),topics:n}}decodeEventLog(t,e,n){if("string"==typeof t){const e=this.getEvent(t);u(e,"unknown event","eventFragment",t),t=e}if(null!=n&&!t.anonymous){const e=t.topicHash;u(st(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(tn.from({type:"bytes32",name:t.name})),i.push(!0)):(r.push(t),i.push(!1)):(s.push(t),i.push(!1))});const a=null!=n?this.#w.decode(r,lt(n)):null,o=this.#w.decode(s,e,!0),l=[],c=[];let h=0,f=0;return t.inputs.forEach((t,e)=>{let n=null;if(t.indexed)if(null==a)n=new An(null);else if(i[e])n=new An(a[f++]);else try{n=a[f++]}catch(t){n=t}else try{n=o[h++]}catch(t){n=t}l.push(n),c.push(t.name||null)}),zt.fromItems(l,c)}parseTransaction(t){const e=nt(t.data,"tx.data"),n=It(null!=t.value?t.value:0,"tx.value"),r=this.getFunction(ot(e.slice(0,4)));if(!r)return null;const s=this.#w.decode(r.inputs,e.slice(4));return new wn(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 yn(e,e.topicHash,this.decodeEventLog(e,t.data,t.topics))}parseError(t){const e=ot(t),n=this.getError(ut(e,0,4));if(!n)return null;const r=this.#w.decode(n.inputs,ut(e,4));return new bn(n,n.selector,r)}static from(t){return t instanceof xn?t:"string"==typeof t?new xn(JSON.parse(t)):"function"==typeof t.formatJson?new xn(t.formatJson()):"function"==typeof t.format?new xn(t.format("json")):new xn(t)}}function kn(t){return t&&"function"==typeof t.getAddress}async function Pn(t,e){const n=await e;return null!=n&&"0x0000000000000000000000000000000000000000"!==n||(c("string"!=typeof t,"unconfigured name","UNCONFIGURED_NAME",{value:t}),u(!1,"invalid AddressLike value; did not resolve to a value address","target",t)),ee(n)}function Bn(t,e){return"string"==typeof t?t.match(/^0x[0-9a-f]{40}$/i)?ee(t):(c(null!=e,"ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"}),Pn(t,e.resolveName(t))):kn(t)?Pn(t,t.getAddress()):t&&"function"==typeof t.then?Pn(t,t):void u(!1,"unsupported addressable value","target",t)}function Nn(t,e){return{address:ee(t),storageKeys:e.map((t,e)=>(u(st(t,32),"invalid slot",storageKeys[${e}],t),t.toLowerCase()))}}function In(t){if(Array.isArray(t))return t.map((e,n)=>Array.isArray(e)?(u(2===e.length,"invalid slot set",value[${n}],e),Nn(e[0],e[1])):(u(null!=e&&"object"==typeof e,"invalid address-slot set","value",t),Nn(e.address,e.storageKeys)));u(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 Nn(e,Object.keys(n).sort())});return e.sort((t,e)=>t.address.localeCompare(e.address)),e}const Cn=BigInt(0);function Tn(t){return t??null}function Rn(t){return null==t?null:t.toString()}class On{gasPrice;maxFeePerGas;maxPriorityFeePerGas;constructor(t,e,n){s(this,{gasPrice:Tn(t),maxFeePerGas:Tn(e),maxPriorityFeePerGas:Tn(n)})}toJSON(){const{gasPrice:t,maxFeePerGas:e,maxPriorityFeePerGas:n}=this;return{_type:"FeeData",gasPrice:Rn(t),maxFeePerGas:Rn(e),maxPriorityFeePerGas:Rn(n)}}}function Sn(t){const e={};t.to&&(e.to=t.to),t.from&&(e.from=t.from),t.data&&(e.data=ot(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]=It(t[r],request.${r}));const r="type,nonce".split(/,/);for(const n of r)n in t&&null!=t[n]&&(e[n]=Ot(t[n],request.${n}));return t.accessList&&(e.accessList=In(t.accessList)),t.authorizationList&&(e.authorizationList=t.authorizationList.slice()),"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),"blobWrapperVersion"in t&&(e.blobWrapperVersion=t.blobWrapperVersion),"blobs"in t&&t.blobs&&(e.blobs=t.blobs.map(t=>it(t)?ot(t):Object.assign({},t))),e}class Fn{provider;number;hash;timestamp;parentHash;parentBeaconBlockRoot;nonce;difficulty;gasLimit;gasUsed;stateRoot;receiptsRoot;transactionsRoot;blobGasUsed;excessBlobGas;miner;prevRandao;extraData;baseFeePerGas;#v;constructor(t,e){this.#v=t.transactions.map(t=>"string"!=typeof t?new Dn(t,e):t),s(this,{provider:e,hash:Tn(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:Tn(t.prevRandao),extraData:t.extraData,baseFeePerGas:Tn(t.baseFeePerGas),stateRoot:t.stateRoot,receiptsRoot:t.receiptsRoot,transactionsRoot:t.transactionsRoot})}get transactions(){return this.#v.map(t=>"string"==typeof t?t:t.hash)}get prefetchedTransactions(){const t=this.#v.slice();return 0===t.length?[]:(c("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:a,prevRandao:o,nonce:l,number:c,parentHash:u,parentBeaconBlockRoot:h,stateRoot:f,receiptsRoot:d,transactionsRoot:p,timestamp:g,transactions:m}=this;return{_type:"Block",baseFeePerGas:Rn(t),difficulty:Rn(e),extraData:n,gasLimit:Rn(r),gasUsed:Rn(s),blobGasUsed:Rn(this.blobGasUsed),excessBlobGas:Rn(this.excessBlobGas),hash:i,miner:a,prevRandao:o,nonce:l,number:c,parentHash:u,timestamp:g,parentBeaconBlockRoot:h,stateRoot:f,receiptsRoot:d,transactionsRoot:p,transactions:m}}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.#v.length}get date(){return null==this.timestamp?null:new Date(1e3this.timestamp)}async getTransaction(t){let e;if("number"==typeof t)e=this.#v[t];else{const n=t.toLowerCase();for(const t of this.#v){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;u(!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:this.hash,number:this.number}}}class Ln{provider;transactionHash;blockHash;blockNumber;removed;address;data;topics;index;transactionIndex;constructor(t,e){this.provider=e;const n=Object.freeze(t.topics.slice());s(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:a,transactionHash:o,transactionIndex:l}=this;return{_type:"log",address:t,blockHash:e,blockNumber:n,data:r,index:s,removed:i,topics:a,transactionHash:o,transactionIndex:l}}async getBlock(){const t=await this.provider.getBlock(this.blockHash);return c(!!t,"failed to find transaction","UNKNOWN_ERROR",{}),t}async getTransaction(){const t=await this.provider.getTransaction(this.transactionHash);return c(!!t,"failed to find transaction","UNKNOWN_ERROR",{}),t}async getTransactionReceipt(){const t=await this.provider.getTransactionReceipt(this.transactionHash);return c(!!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 Un{provider;to;from;contractAddress;hash;index;blockHash;blockNumber;logsBloom;gasUsed;blobGasUsed;cumulativeGasUsed;gasPrice;blobGasPrice;type;status;root;#E;constructor(t,e){this.#E=Object.freeze(t.logs.map(t=>new Ln(t,e)));let n=Cn;null!=t.effectiveGasPrice?n=t.effectiveGasPrice:null!=t.gasPrice&&(n=t.gasPrice),s(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.#E}toJSON(){const{to:t,from:e,contractAddress:n,hash:r,index:s,blockHash:i,blockNumber:a,logsBloom:o,logs:l,status:c,root:u}=this;return{_type:"TransactionReceipt",blockHash:i,blockNumber:a,contractAddress:n,cumulativeGasUsed:Rn(this.cumulativeGasUsed),from:e,gasPrice:Rn(this.gasPrice),blobGasUsed:Rn(this.blobGasUsed),blobGasPrice:Rn(this.blobGasPrice),gasUsed:Rn(this.gasUsed),hash:r,index:s,logs:l,logsBloom:o,root:u,status:c,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.gasUsedthis.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 Mn(this)}reorderedEvent(t){return c(!t||t.isMined(),"unmined 'other' transction cannot be orphaned","UNSUPPORTED_OPERATION",{operation:"reorderedEvent(other)"}),Gn(this,t)}}class Dn{provider;blockNumber;blockHash;index;hash;type;to;from;nonce;gasLimit;gasPrice;maxPriorityFeePerGas;maxFeePerGas;maxFeePerBlobGas;data;value;chainId;signature;accessList;blobVersionedHashes;authorizationList;#x;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.authorizationList=null!=t.authorizationList?t.authorizationList:null,this.#x=-1}toJSON(){const{blockNumber:t,blockHash:e,index:n,hash:r,type:s,to:i,from:a,nonce:o,data:l,signature:c,accessList:u,blobVersionedHashes:h}=this;return{_type:"TransactionResponse",accessList:u,blockNumber:t,blockHash:e,blobVersionedHashes:h,chainId:Rn(this.chainId),data:l,from:a,gasLimit:Rn(this.gasLimit),gasPrice:Rn(this.gasPrice),hash:r,maxFeePerGas:Rn(this.maxFeePerGas),maxPriorityFeePerGas:Rn(this.maxPriorityFeePerGas),maxFeePerBlobGas:Rn(this.maxFeePerBlobGas),nonce:o,signature:c,to:i,index:n,type:s,value:Rn(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 r({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=t??1,s=e??0;let i=this.#x,o=-1,u=-1===i;const h=async()=>{if(u)return null;const{blockNumber:t,nonce:e}=await r({blockNumber:this.provider.getBlockNumber(),nonce:this.provider.getTransactionCount(this.from)});if(e<this.nonce)return void(i=t);if(u)return null;const s=await this.getTransaction();if(!s||null==s.blockNumber)for(-1===o&&(o=i-3,o<this.#x&&(o=this.#x));o<=t;){if(u)return null;const e=await this.provider.getBlock(o,!0);if(null==e)return;for(const t of e)if(t===this.hash)return;for(let r=0;r<e.length;r++){const s=await e.getTransaction(r);if(s.from===this.from&&s.nonce===this.nonce){if(u)return null;const e=await this.provider.getTransactionReceipt(s.hash);if(null==e)return;if(t-e.blockNumber+1<n)return;let r="replaced";s.data===this.data&&s.to===this.to&&s.value===this.value?r="repriced":"0x"===s.data&&s.from===s.to&&s.value===Cn&&(r="cancelled"),c(!1,"transaction was replaced","TRANSACTION_REPLACED",{cancelled:"replaced"===r||"cancelled"===r,reason:r,replacement:s.replaceableTransaction(i),hash:s.hash,receipt:e})}}o++}},f=t=>{if(null==t||0!==t.status)return t;c(!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})},d=await this.provider.getTransactionReceipt(this.hash);if(0===n)return f(d);if(d){if(1===n||await d.confirmations()>=n)return f(d)}else if(await h(),0===n)return null;const p=new Promise((t,e)=>{const r=[],o=()=>{r.forEach(t=>t())};if(r.push(()=>{u=!0}),s>0){const t=setTimeout(()=>{o(),e(l("wait for transaction timeout","TIMEOUT"))},s);r.push(()=>{clearTimeout(t)})}const c=async r=>{if(await r.confirmations()>=n){o();try{t(f(r))}catch(t){e(t)}}};if(r.push(()=>{this.provider.off(this.hash,c)}),this.provider.on(this.hash,c),i>=0){const t=async()=>{try{await h()}catch(t){if(a(t,"TRANSACTION_REPLACED"))return o(),void e(t)}u||this.provider.once("block",t)};r.push(()=>{this.provider.off("block",t)}),this.provider.once("block",t)}});return await p}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 c(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Mn(this)}reorderedEvent(t){return c(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),c(!t||t.isMined(),"unmined 'other' transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Gn(this,t)}replaceableTransaction(t){u(Number.isInteger(t)&&t>=0,"invalid startBlock","startBlock",t);const e=new Dn(this,this.provider);return e.#x=t,e}}function Gn(t,e){return{orphan:"reorder-transaction",tx:t,other:e}}function Mn(t){return{orphan:"drop-transaction",tx:t}}class Hn{filter;emitter;#k;constructor(t,e,n){this.#k=e,s(this,{emitter:t,filter:n})}async removeListener(){null!=this.#k&&await this.emitter.off(this.filter,this.#k)}}class Qn extends Ln{interface;fragment;args;constructor(t,e,n){super(t,t.provider),s(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 Vn extends Ln{error;constructor(t,e){super(t,t.provider),s(this,{error:e})}}class jn extends Un{#P;constructor(t,e,n){super(n,e),this.#P=t}get logs(){return super.logs.map(t=>{const e=t.topics.length?this.#P.getEvent(t.topics[0]):null;if(e)try{return new Qn(t,this.#P,e)}catch(e){return new Vn(t,e)}return t})}}class Jn extends Dn{#P;constructor(t,e,n){super(n,e),this.#P=t}async wait(t,e){const n=await super.wait(t,e);return null==n?null:new jn(this.#P,this.provider,n)}}class zn extends Hn{log;constructor(t,e,n,r){super(t,e,n),s(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 Kn extends zn{constructor(t,e,n,r,i){super(t,e,n,new Qn(i,t.interface,r)),s(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 qn=BigInt(0);function _n(t){return t&&"function"==typeof t.call}function Wn(t){return t&&"function"==typeof t.estimateGas}function Yn(t){return t&&"function"==typeof t.resolveName}function Zn(t){return t&&"function"==typeof t.sendTransaction}function Xn(t){if(null!=t){if(Yn(t))return t;if(t.provider)return t.provider}}class $n{#B;fragment;constructor(t,e,n){if(s(this,{fragment:e}),e.inputs.length<n.length)throw new Error("too many arguments");const r=tr(t.runner,"resolveName"),i=Yn(r)?r:null;this.#B=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=>Bn(t,i))):Bn(e,i):e)));return t.interface.encodeFilterTopics(e,r)}()}getTopicFilter(){return this.#B}}function tr(t,e){return null==t?null:"function"==typeof t[e]?t:t.provider&&"function"==typeof t.provider[e]?t.provider:null}function er(t){return null==t?null:t.provider||null}async function nr(t,e){const n=w.dereference(t,"overrides");u("object"==typeof n,"invalid overrides parameter","overrides",t);const r=Sn(n);return u(null==r.to||(e||[]).indexOf("to")>=0,"cannot override to","overrides.to",r.to),u(null==r.data||(e||[]).indexOf("data")>=0,"cannot override data","overrides.data",r.data),r.from&&(r.from=r.from),r}function rr(t){const e=async function(e){const n=await nr(e,["data"]);n.to=await t.getAddress(),n.from&&(n.from=await Bn(n.from,Xn(t.runner)));const r=t.interface,s=It(n.value||qn,"overrides.value")===qn,i="0x"===(n.data||"0x");return!r.fallback||r.fallback.payable||!r.receive||i||s||u(!1,"cannot send data to receive or send value to non-payable fallback","overrides",e),u(r.fallback||i,"cannot send data to receive-only contract","overrides.data",n.data),u(r.receive||r.fallback&&r.fallback.payable||s,"cannot send value to non-payable fallback","overrides.value",n.value),u(r.fallback||i,"cannot send data to receive-only contract","overrides.data",n.data),n},n=async function(n){const r=t.runner;c(Zn(r),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const s=await r.sendTransaction(await e(n)),i=er(t.runner);return new Jn(t.interface,i,s)},r=async t=>await n(t);return s(r,{_contract:t,estimateGas:async function(n){const r=tr(t.runner,"estimateGas");return c(Wn(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=tr(t.runner,"call");c(_n(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(o(e)&&e.data)throw t.interface.makeError(e.data,s);throw e}}}),r}const sr=Symbol.for("_ethersInternal_contract"),ir=new WeakMap;function ar(t){return ir.get(t[sr])}async function or(t,e){let n,r=null;if(Array.isArray(e)){const r=function(e){if(st(e,32))return e;const n=t.interface.getEvent(e);return u(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?st(e,32)?n=[e]:(r=t.interface.getEvent(e),u(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]):u(!1,"unknown event name","event",e);var s;return 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()}),{fragment:r,tag:n.map(t=>null==t?"null":Array.isArray(t)?t.join("|"):t).join("&"),topics:n}}async function lr(t,e){const{subs:n}=ar(t);return n.get((await or(t,e)).tag)||null}async function cr(t,e,n){const r=er(t.runner);c(r,"contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:e});const{fragment:s,tag:i,topics:a}=await or(t,n),{addr:o,subs:l}=ar(t);let u=l.get(i);if(!u){const e={address:o||t,topics:a},c=e=>{let r=s;if(null==r)try{r=t.interface.getEvent(e.topics[0])}catch(t){}if(r){const i=r,a=s?t.interface.decodeEventLog(s,e.data,e.topics):[];hr(t,n,a,r=>new Kn(t,r,n,i,e))}else hr(t,n,[],r=>new zn(t,r,n,e))};let h=[];u={tag:i,listeners:[],start:()=>{h.length||h.push(r.on(e,c))},stop:async()=>{if(0==h.length)return;let t=h;h=[],await Promise.all(t),r.off(e,c)}},l.set(i,u)}return u}let ur=Promise.resolve();async function hr(t,e,n,r){try{await ur}catch(t){}const s=async function(t,e,n,r){await ur;const s=await lr(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(),ar(t).subs.delete(s.tag)),i>0}(t,e,n,r);return ur=s,await s}const fr=["then"];class dr{target;interface;runner;filters;[sr];fallback;constructor(t,e,n,r){u("string"==typeof t||kn(t),"invalid value for Contract target","target",t),null==n&&(n=null);const i=xn.from(e);let o;s(this,{target:t,runner:n,interface:i}),Object.defineProperty(this,sr,{value:{}});let c=null,h=null;if(r){const t=er(n);h=new Jn(this.interface,t,r)}let f=new Map;if("string"==typeof t)if(st(t))c=t,o=Promise.resolve(t);else{const e=tr(n,"resolveName");if(!Yn(e))throw l("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});o=e.resolveName(t).then(e=>{if(null==e)throw l("an ENS name used for a contract target must be correctly configured","UNCONFIGURED_NAME",{value:t});return ar(this).addr=e,e})}else o=t.getAddress().then(t=>{if(null==t)throw new Error("TODO");return ar(this).addr=t,t});var d;d={addrPromise:o,addr:c,deployTx:h,subs:f},ir.set(this[sr],d);const p=new Proxy({},{get:(t,e,n)=>{if("symbol"==typeof e||fr.indexOf(e)>=0)return Reflect.get(t,e,n);try{return this.getEvent(e)}catch(t){if(!a(t,"INVALID_ARGUMENT")||"key"!==t.argument)throw t}},has:(t,e)=>fr.indexOf(e)>=0?Reflect.has(t,e):Reflect.has(t,e)||this.interface.hasEvent(String(e))});return s(this,{filters:p}),s(this,{fallback:i.receive||i.fallback?rr(this):null}),new Proxy(this,{get:(t,e,n)=>{if("symbol"==typeof e||e in t||fr.indexOf(e)>=0)return Reflect.get(t,e,n);try{return t.getFunction(e)}catch(t){if(!a(t,"INVALID_ARGUMENT")||"key"!==t.argument)throw t}},has:(t,e)=>"symbol"==typeof e||e in t||fr.indexOf(e)>=0?Reflect.has(t,e):t.interface.hasFunction(e)})}connect(t){return new dr(this.target,this.interface,t)}attach(t){return new dr(t,this.interface,this.runner)}async getAddress(){return await ar(this).addrPromise}async getDeployedCode(){const t=er(this.runner);c(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=er(this.runner);return c(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 ar(this).deployTx}getFunction(t){return"string"!=typeof t&&(t=t.format()),function(t,e){const n=function(...n){const r=t.interface.getFunction(e,n);return c(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:n}}),r},i=async function(...e){const s=n(...e);let i={};if(s.inputs.length+1===e.length&&(i=await nr(e.pop()),i.from&&(i.from=await Bn(i.from,Xn(t.runner)))),s.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const a=await async function(t,e,n){const r=tr(t,"resolveName"),s=Yn(r)?r:null;return await Promise.all(e.map((t,e)=>t.walkAsync(n[e],(t,e)=>(e=w.dereference(e,t),"address"===t?Bn(e,s):e))))}(t.runner,s.inputs,e);return Object.assign({},i,await r({to:t.getAddress(),data:t.interface.encodeFunctionData(s,a)}))},a=async function(...t){const e=await u(...t);return 1===e.length?e[0]:e},l=async function(...e){const n=t.runner;c(Zn(n),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const r=await n.sendTransaction(await i(...e)),s=er(t.runner);return new Jn(t.interface,s,r)},u=async function(...e){const r=tr(t.runner,"call");c(_n(r),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const s=await i(...e);let a="0x";try{a=await r.call(s)}catch(e){if(o(e)&&e.data)throw t.interface.makeError(e.data,s);throw e}const l=n(...e);return t.interface.decodeFunctionResult(l,a)},h=async(...t)=>n(...t).constant?await a(...t):await l(...t);return s(h,{name:t.interface.getFunctionName(e),_contract:t,_key:e,getFragment:n,estimateGas:async function(...e){const n=tr(t.runner,"estimateGas");return c(Wn(n),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await n.estimateGas(await i(...e))},populateTransaction:i,send:l,staticCall:a,staticCallResult:u}),Object.defineProperty(h,"fragment",{configurable:!1,enumerable:!0,get:()=>{const n=t.interface.getFunction(e);return c(n,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),n}}),h}(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 c(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:n}}),r},r=function(...e){return new $n(t,n(...e),e)};return s(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 c(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}=ar(this),i=r||await s,{fragment:a,topics:o}=await or(this,t),l={address:i,topics:o,fromBlock:e,toBlock:n},u=er(this.runner);return c(u,"contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"}),(await u.getLogs(l)).map(t=>{let e=a;if(null==e)try{e=this.interface.getEvent(t.topics[0])}catch(t){}if(e)try{return new Qn(t,this.interface,e)}catch(e){return new Vn(t,e)}return new Ln(t,u)})}async on(t,e){const n=await cr(this,"on",t);return n.listeners.push({listener:e,once:!1}),n.start(),this}async once(t,e){const n=await cr(this,"once",t);return n.listeners.push({listener:e,once:!0}),n.start(),this}async emit(t,...e){return await hr(this,t,e,null)}async listenerCount(t){if(t){const e=await lr(this,t);return e?e.listeners.length:0}const{subs:e}=ar(this);let n=0;for(const{listeners:t}of e.values())n+=t.length;return n}async listeners(t){if(t){const e=await lr(this,t);return e?e.listeners.map(({listener:t})=>t):[]}const{subs:e}=ar(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 lr(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(),ar(this).subs.delete(n.tag)),this}async removeAllListeners(t){if(t){const e=await lr(this,t);if(!e)return this;e.stop(),ar(this).subs.delete(e.tag)}else{const{subs:t}=ar(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 dr{constructor(e,n=null){super(e,t,n)}}}static from(t,e,n){return null==n&&(n=null),new this(t,e,n)}}class pr extends(function(){return dr}()){}const gr=BigInt(-1),mr=BigInt(0),yr=BigInt(1),wr=BigInt(5),br={};let Ar="0000";for(;Ar.length<80;)Ar+=Ar;function vr(t){let e=Ar;for(;e.length<t;)e+=e;return BigInt("1"+e.substring(0,t))}function Er(t,e,n){const r=BigInt(e.width);if(e.signed){const e=yr<<r-yr;c(null==n||t>=-e&&t<e,"overflow","NUMERIC_FAULT",{operation:n,fault:"overflow",value:t}),t=t>mr?Pt(Nt(t,r),r):-Pt(Nt(-t,r),r)}else{const e=yr<<r;c(null==n||t>=0&&t<e,"overflow","NUMERIC_FAULT",{operation:n,fault:"overflow",value:t}),t=(t%e+e)%e&e-yr}return t}function xr(t){"number"==typeof t&&(t=fixed128x${t});let e=!0,n=128,r=18;if("string"==typeof t)if("fixed"===t);else if("ufixed"===t)e=!1;else{const s=t.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);u(s,"invalid fixed format","format",t),e="u"!==s[1],n=parseInt(s[2]),r=parseInt(s[3])}else if(t){const s=t,i=(t,e,n)=>null==s[t]?n:(u(typeof s[t]===e,"invalid fixed format ("+t+" not "+e+")","format."+t,s[t]),s[t]);e=i("signed","boolean",e),n=i("width","number",n),r=i("decimals","number",r)}return u(n%8==0,"invalid FixedNumber width (not byte aligned)","format.width",n),u(r<=80,"invalid FixedNumber decimals (too large)","format.decimals",r),{signed:e,width:n,decimals:r,name:(e?"":"u")+"fixed"+String(n)+"x"+String(r)}}class kr{format;#N;#I;#C;_value;constructor(t,e,n){d(t,br,"FixedNumber"),this.#I=e,this.#N=n;const r=function(t,e){let n="";t<mr&&(n="-",t=gr);let r=t.toString();if(0===e)return n+r;for(;r.length<=e;)r=Ar+r;const s=r.length-e;for(r=r.substring(0,s)+"."+r.substring(s);"0"===r[0]&&"."!==r[1];)r=r.substring(1);for(;"0"===r[r.length-1]&&"."!==r[r.length-2];)r=r.substring(0,r.length-1);return n+r}(e,n.decimals);s(this,{format:n.name,_value:r}),this.#C=vr(n.decimals)}get signed(){return this.#N.signed}get width(){return this.#N.width}get decimals(){return this.#N.decimals}get value(){return this.#I}#T(t){u(this.format===t.format,"incompatible format; use fixedNumber.toFormat","other",t)}#R(t,e){return t=Er(t,this.#N,e),new kr(br,t,this.#N)}#O(t,e){return this.#T(t),this.#R(this.#I+t.#I,e)}addUnsafe(t){return this.#O(t)}add(t){return this.#O(t,"add")}#S(t,e){return this.#T(t),this.#R(this.#I-t.#I,e)}subUnsafe(t){return this.#S(t)}sub(t){return this.#S(t,"sub")}#F(t,e){return this.#T(t),this.#R(this.#It.#I/this.#C,e)}mulUnsafe(t){return this.#F(t)}mul(t){return this.#F(t,"mul")}mulSignal(t){this.#T(t);const e=this.#It.#I;return c(e%this.#C===mr,"precision lost during signalling mul","NUMERIC_FAULT",{operation:"mulSignal",fault:"underflow",value:this}),this.#R(e/this.#C,"mulSignal")}#L(t,e){return c(t.#I!==mr,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#T(t),this.#R(this.#Ithis.#C/t.#I,e)}divUnsafe(t){return this.#L(t)}div(t){return this.#L(t,"div")}divSignal(t){c(t.#I!==mr,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#T(t);const e=this.#Ithis.#C;return c(e%t.#I===mr,"precision lost during signalling div","NUMERIC_FAULT",{operation:"divSignal",fault:"underflow",value:this}),this.#R(e/t.#I,"divSignal")}cmp(t){let e=this.value,n=t.value;const r=this.decimals-t.decimals;return r>0?n*=vr(r):r<0&&(e*=vr(-r)),e<n?-1:e>n?1:0}eq(t){return 0===this.cmp(t)}lt(t){return this.cmp(t)<0}lte(t){return this.cmp(t)<=0}gt(t){return this.cmp(t)>0}gte(t){return this.cmp(t)>=0}floor(){let t=this.#I;return this.#I<mr&&(t-=this.#C-yr),t=this.#I/this.#Cthis.#C,this.#R(t,"floor")}ceiling(){let t=this.#I;return this.#I>mr&&(t+=this.#C-yr),t=this.#I/this.#Cthis.#C,this.#R(t,"ceiling")}round(t){if(null==t&&(t=0),t>=this.decimals)return this;const e=this.decimals-t,n=wrvr(e-1);let r=this.value+n;const s=vr(e);return r=r/ss,Er(r,this.#N,"round"),new kr(br,r,this.#N)}isZero(){return this.#I===mr}isNegative(){return this.#I<mr}toString(){return this.value}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return kr.fromString(this.toString(),t)}static fromValue(t,e,n){const r=null==e?0:Ot(e),s=xr(n);let i=It(t,"value");const a=r-s.decimals;if(a>0){const e=vr(a);c(i%e===mr,"value loses precision for format","NUMERIC_FAULT",{operation:"fromValue",fault:"underflow",value:t}),i/=e}else a<0&&(i*=vr(-a));return Er(i,s,"fromValue"),new kr(br,i,s)}static fromString(t,e){const n=t.match(/^(-?)([0-9]).?([0-9])$/);u(n&&n[2].length+n[3].length>0,"invalid FixedNumber string value","value",t);const r=xr(e);let s=n[2]||"0",i=n[3]||"";for(;i.length<r.decimals;)i+=Ar;c(i.substring(r.decimals).match(/^0*$/),"too many decimals for format","NUMERIC_FAULT",{operation:"fromString",fault:"underflow",value:t}),i=i.substring(0,r.decimals);const a=BigInt(n[1]+s+i);return Er(a,r,"fromString"),new kr(br,a,r)}static fromBytes(t,e){let n=Rt(nt(t,"value"));const r=xr(e);return r.signed&&(n=Pt(n,r.width)),Er(n,r,"fromBytes"),new kr(br,n,r)}}const Pr=new Uint8Array(32);Pr.fill(0);const Br=BigInt(-1),Nr=BigInt(0),Ir=BigInt(1),Cr=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Tr=St(Ir,32),Rr=St(Nr,32),Or={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},Sr=["name","version","chainId","verifyingContract","salt"];function Fr(t){return function(e){return u("string"==typeof e,invalid domain value for ${JSON.stringify(t)},domain.${t},e),e}}const Lr={name:Fr("name"),version:Fr("version"),chainId:function(t){const e=It(t,"domain.chainId");return u(e>=0,"invalid chain ID","domain.chainId",t),Number.isSafeInteger(e)?Number(e):Lt(e)},verifyingContract:function(t){try{return ee(t).toLowerCase()}catch(t){}u(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){const e=nt(t,"domain.salt");return u(32===e.length,'invalid domain value "salt"',"domain.salt",t),ot(e)}};function Ur(t){{const e=t.match(/^(u?)int(\d+)$/);if(e){const n=""===e[1],r=parseInt(e[2]);u(r%8==0&&0!==r&&r<=256&&e[2]===String(r),"invalid numeric width","type",t);const s=Nt(Cr,n?r-1:r),i=n?(s+Ir)Br:Nr;return function(e){const r=It(e,"value");return u(r>=i&&r<=s,value out-of-bounds for ${t},"value",r),St(n?Bt(r,256):r,32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const n=parseInt(e[1]);return u(0!==n&&n<=32&&e[1]===String(n),"invalid bytes width","type",t),function(e){return u(nt(e).length===n,invalid length for ${t},"value",e),function(t){const e=nt(t),n=e.length%32;return n?lt([e,Pr.slice(n)]):ot(e)}(e)}}}switch(t){case"address":return function(t){return ft(ee(t),32)};case"bool":return function(t){return t?Tr:Rr};case"bytes":return function(t){return mt(t)};case"string":return function(t){return vt(t)}}return null}function Dr(t,e){return${t}(${e.map(({name:t,type:e})=>e+" "+t).join(",")})}function Gr(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 Mr{primaryType;#U;get types(){return JSON.parse(this.#U)}#D;#G;constructor(t){this.#D=new Map,this.#G=new Map;const e=new Map,n=new Map,r=new Map,i={};Object.keys(t).forEach(s=>{i[s]=t[s].map(({name:e,type:n})=>{let{base:r,index:s}=Gr(n);return"int"!==r||t.int||(r="int256"),"uint"!==r||t.uint||(r="uint256"),{name:e,type:r+(s||"")}}),e.set(s,new Set),n.set(s,[]),r.set(s,new Set)}),this.#U=JSON.stringify(i);for(const r in i){const s=new Set;for(const a of i[r]){u(!s.has(a.name),duplicate variable name ${JSON.stringify(a.name)} in ${JSON.stringify(r)},"types",t),s.add(a.name);const i=Gr(a.type).base;u(i!==r,circular type reference to ${JSON.stringify(i)},"types",t),Ur(i)||(u(n.has(i),unknown type ${JSON.stringify(i)},"types",t),n.get(i).push(r),e.get(r).add(i))}}const a=Array.from(n.keys()).filter(t=>0===n.get(t).length);u(0!==a.length,"missing primary type","types",t),u(1===a.length,ambiguous primary types or unused types: ${a.map(t=>JSON.stringify(t)).join(", ")},"types",t),s(this,{primaryType:a[0]}),function s(i,a){u(!a.has(i),circular type reference to ${JSON.stringify(i)},"types",t),a.add(i);for(const t of e.get(i))if(n.has(t)){s(t,a);for(const e of a)r.get(e).add(t)}a.delete(i)}(this.primaryType,new Set);for(const[t,e]of r){const n=Array.from(e);n.sort(),this.#D.set(t,Dr(t,i[t])+n.map(t=>Dr(t,i[t])).join(""))}}getEncoder(t){let e=this.#G.get(t);return e||(e=this.#M(t),this.#G.set(t,e)),e}#M(t){{const e=Ur(t);if(e)return e}const e=Gr(t).array;if(e){const t=e.prefix,n=this.getEncoder(t);return r=>{u(-1===e.count||e.count===r.length,array length mismatch; expected length ${e.count},"value",r);let s=r.map(n);return this.#D.has(t)&&(s=s.map(mt)),mt(lt(s))}}const n=this.types[t];if(n){const e=vt(this.#D.get(t));return t=>{const r=n.map(({name:e,type:n})=>{const r=this.getEncoder(n)(t[e]);return this.#D.has(n)?mt(r):r});return r.unshift(e),lt(r)}}u(!1,unknown type: ${t},"type",t)}encodeType(t){const e=this.#D.get(t);return u(e,unknown type: ${JSON.stringify(t)},"name",t),e}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return mt(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(Ur(t))return n(t,e);const r=Gr(t).array;if(r)return u(-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),{});u(!1,unknown type: ${t},"type",t)}visit(t,e){return this.visit(this.primaryType,t,e)}static from(t){return new Mr(t)}static getPrimaryType(t){return Mr.from(t).primaryType}static hashStruct(t,e,n){return Mr.from(e).hashStruct(t,n)}static hashDomain(t){const e=[];for(const n in t){if(null==t[n])continue;const r=Or[n];u(r,invalid typed-data domain key: ${JSON.stringify(n)},"domain",t),e.push({name:n,type:r})}return e.sort((t,e)=>Sr.indexOf(t.name)-Sr.indexOf(e.name)),Mr.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,n){return lt(["0x1901",Mr.hashDomain(t),Mr.from(e).hash(n)])}static hash(t,e,n){return mt(Mr.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&&!st(t.verifyingContract,20)&&(s[t.verifyingContract]="0x");const i=Mr.from(e);i.visit(n,(t,e)=>("address"!==t||st(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){Mr.hashDomain(t);const r={},s=[];Sr.forEach(e=>{const n=t[e];null!=n&&(r[e]=Lre,s.push({name:e,type:Or[e]}))});const i=Mr.from(e);e=i.types;const a=Object.assign({},e);return u(null==a.EIP712Domain,"types must not contain EIP712Domain type","types.EIP712Domain",e),a.EIP712Domain=s,i.encode(n),{types:a,domain:r,primaryType:i.primaryType,message:i.visit(n,(t,e)=>{if(t.match(/^bytes(\d*)/))return ot(nt(e));if(t.match(/^u?int/))return It(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return u("string"==typeof e,"invalid string","value",e),e}u(!1,"unsupported type","type",t)})}}}const Hr="0x0000000000000000000000000000000000000000000000000000000000000000",Qr=BigInt(0),Vr=BigInt(1),jr=BigInt(2),Jr=BigInt(27),zr=BigInt(28),Kr=BigInt(35),qr=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),r=qr/jr,Wr=Symbol.for("nodejs.util.inspect.custom"),Yr={};function Zr(t){return ft(Ft(t),32)}class Xr{#H;#Q;#V;#j;get r(){return this.#H}set r(t){u(32===ct(t),"invalid r","value",t),this.#H=ot(t)}get s(){return u(parseInt(this.#Q.substring(0,3))<8,"non-canonical s; use .s","s",this.#Q),this.#Q}set s(t){u(32===ct(t),"invalid s","value",t),this.#Q=ot(t)}get s(){return this.#Q}isValid(){return BigInt(this.#Q)<=r}get v(){return this.#V}set v(t){const e=Ot(t,"value");u(27===e||28===e,"invalid v","v",t),this.#V=e}get networkV(){return this.#j}get legacyChainId(){const t=this.networkV;return null==t?null:Xr.getChainId(t)}get yParity(){return 27===this.v?0:1}get yParityAndS(){const t=nt(this.s);return this.yParity&&(t[0]|=128),ot(t)}get compactSerialized(){return lt([this.r,this.yParityAndS])}get serialized(){return lt([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(t,e,n,r){d(t,Yr,"Signature"),this.#H=e,this.#Q=n,this.#V=r,this.#j=null}getCanonical(){if(this.isValid())return this;const t=qr-BigInt(this.s),e=55-this.v,n=new Xr(Yr,this.r,Zr(t),e);return this.networkV&&(n.#j=this.networkV),n}clone(){const t=new Xr(Yr,this.r,this.s,this.v);return this.networkV&&(t.#j=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}}Wr{return this.toString()}toString(){return this.isValid()?Signature { r: ${this.r}, s: ${this._s}, v: ${this.v} }:Signature { r: ${this.r}, s: ${this._s}, v: ${this.v}, valid: false }}static getChainId(t){const e=It(t,"v");return e==Jr||e==zr?Qr:(u(e>=Kr,"invalid EIP-155 v","v",t),(e-Kr)/jr)}static getChainIdV(t,e){return It(t)jr+BigInt(35+e-27)}static getNormalizedV(t){const e=It(t);return e===Qr||e===Jr?27:e===Vr||e===zr?28:(u(e>=Kr,"invalid v","v",t),e&Vr?27:28)}static from(t){function e(e,n){u(e,n,"signature",t)}if(null==t)return new Xr(Yr,Hr,Hr,27);if("string"==typeof t){const n=nt(t,"signature");if(64===n.length){const t=ot(n.slice(0,32)),e=n.slice(32,64),r=128&e[0]?28:27;return e[0]&=127,new Xr(Yr,t,ot(e),r)}if(65===n.length){const t=ot(n.slice(0,32)),e=ot(n.slice(32,64)),r=Xr.getNormalizedV(n[64]);return new Xr(Yr,t,e,r)}e(!1,"invalid raw signature length")}if(t instanceof Xr)return t.clone();const n=t.r;e(null!=n,"missing r");const r=Zr(n),s=function(t,n){if(null!=t)return Zr(t);if(null!=n){e(st(n,32),"invalid yParityAndS");const t=nt(n);return t[0]&=127,ot(t)}e(!1,"missing s")}(t.s,t.yParityAndS),{networkV:i,v:a}=function(t,n,r){if(null!=t){const e=It(t);return{networkV:e>=Kr?e:void 0,v:Xr.getNormalizedV(e)}}if(null!=n)return e(st(n,32),"invalid yParityAndS"),{v:128&nt(n)[0]?28:27};if(null!=r){switch(Ot(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),o=new Xr(Yr,r,s,a);return i&&(o.#j=i),e(null==t.yParity||Ot(t.yParity,"sig.yParity")===o.yParity,"yParity mismatch"),e(null==t.yParityAndS||t.yParityAndS===o.yParityAndS,"yParityAndS mismatch"),o}}function $r(t){return{address:ee(t.address),nonce:It(null!=t.nonce?t.nonce:0),chainId:It(null!=t.chainId?t.chainId:0),signature:Xr.from(t.signature)}}function ts(t){return async function(e,n){c(null==n||!n.cancelled,"request cancelled before sending","CANCELLED");const r=e.url.split(":")[0].toLowerCase();c("http"===r||"https"===r,unsupported protocol ${r},"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),c("https"===r||!e.credentials||e.allowInsecureAuthentication,"insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});let s=null;const i=new AbortController,a=setTimeout(()=>{s=l("request timeout","TIMEOUT"),i.abort()},e.timeout);n&&n.addListener(()=>{s=l("request cancelled","CANCELLED"),i.abort()});const o=Object.assign({},t,{method:e.method,headers:new Headers(Array.from(e)),body:e.body||void 0,signal:i.signal});let u;try{u=await fetch(e.url,o)}catch(t){if(clearTimeout(a),s)throw s;throw t}clearTimeout(a);const h={};u.headers.forEach((t,e)=>{h[e.toLowerCase()]=t});const f=await u.arrayBuffer(),d=null==f?null:new Uint8Array(f);return{statusCode:u.status,statusMessage:u.statusText,headers:h,body:d}}}ts({});let es=ts();const ns=new RegExp("^data:([^;:])?(;base64)?,(.)$","i"),rs=new RegExp("^ipfs://(ipfs/)?(.)$","i");let ss=!1;async function is(t,e){try{const e=t.match(ns);if(!e)throw new Error("invalid data");return new fs(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?function(t){t=atob(t);const e=new Uint8Array(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return nt(e)}(e[3]):bt(e[3].replace(/%([0-9a-f][0-9a-f])/gi,(t,e)=>String.fromCharCode(parseInt(e,16)))))}catch(e){return new fs(599,"BAD REQUEST (invalid data: URI)",{},null,new hs(t))}}function as(t){return async function(e,n){try{const n=e.match(rs);if(!n)throw new Error("invalid link");return new hs(${t}${n[2]})}catch(t){return new fs(599,"BAD REQUEST (invalid IPFS URI)",{},null,new hs(e))}}}const os={data:is,ipfs:as("https://gateway.ipfs.io/ipfs/")},ls=new WeakMap;class cs{#J;#z;constructor(t){this.#J=[],this.#z=!1,ls.set(t,()=>{if(!this.#z){this.#z=!0;for(const t of this.#J)setTimeout(()=>{t()},0);this.#J=[]}})}addListener(t){c(!this.#z,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#J.push(t)}get cancelled(){return this.#z}checkSignal(){c(!this.cancelled,"cancelled","CANCELLED",{})}}function us(t){if(null==t)throw new Error("missing signal; should not happen");return t.checkSignal(),t}class hs{#K;#q;#;#W;#Y;#Z;#X;#$;#tt;#et;#nt;#rt;#st;#it;#at;get url(){return this.#Z}set url(t){this.#Z=String(t)}get body(){return null==this.#X?null:new Uint8Array(this.#X)}set body(t){if(null==t)this.#X=void 0,this.#$=void 0;else if("string"==typeof t)this.#X=bt(t),this.#$="text/plain";else if(t instanceof Uint8Array)this.#X=t,this.#$="application/octet-stream";else{if("object"!=typeof t)throw new Error("invalid body");this.#X=bt(JSON.stringify(t)),this.#$="application/json"}}hasBody(){return null!=this.#X}get method(){return this.#W?this.#W:this.hasBody()?"POST":"GET"}set method(t){null==t&&(t=""),this.#W=String(t).toUpperCase()}get headers(){const t=Object.assign({},this.#);return this.#tt&&(t.authorization=Basic ${function(t){const e=nt(t);let n="";for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return btoa(n)}(bt(this.#tt))}),this.allowGzip&&(t["accept-encoding"]="gzip"),null==t["content-type"]&&this.#$&&(t["content-type"]=this.#$),this.body&&(t["content-length"]=String(this.body.length)),t}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){this.#[String(t).toLowerCase()]=String(e)}clearHeaders(){this.#={}}Symbol.iterator{const t=this.headers,e=Object.keys(t);let n=0;return{next:()=>{if(n<e.length){const r=e[n++];return{value:[r,t[r]],done:!1}}return{value:void 0,done:!0}}}}get credentials(){return this.#tt||null}setCredentials(t,e){u(!t.match(/:/),"invalid basic authentication username","username","[REDACTED]"),this.#tt=${t}:${e}}get allowGzip(){return this.#q}set allowGzip(t){this.#q=!!t}get allowInsecureAuthentication(){return!!this.#K}set allowInsecureAuthentication(t){this.#K=!!t}get timeout(){return this.#Y}set timeout(t){u(t>=0,"timeout must be non-zero","timeout",t),this.#Y=t}get preflightFunc(){return this.#et||null}set preflightFunc(t){this.#et=t}get processFunc(){return this.#nt||null}set processFunc(t){this.#nt=t}get retryFunc(){return this.#rt||null}set retryFunc(t){this.#rt=t}get getUrlFunc(){return this.#at||es}set getUrlFunc(t){this.#at=t}constructor(t){this.#Z=String(t),this.#K=!1,this.#q=!0,this.#={},this.#W="",this.#Y=3e5,this.#it={slotInterval:250,maxAttempts:12},this.#at=null}toString(){return<FetchRequest method=${JSON.stringify(this.method)} url=${JSON.stringify(this.url)} headers=${JSON.stringify(this.headers)} body=${this.#X?ot(this.#X):"null"}>}setThrottleParams(t){null!=t.slotInterval&&(this.#it.slotInterval=t.slotInterval),null!=t.maxAttempts&&(this.#it.maxAttempts=t.maxAttempts)}async#ot(t,e,n,r,s){if(t>=this.#it.maxAttempts)return s.makeServerError("exceeded maximum retry limit");c(ds()<=e,"timeout","TIMEOUT",{operation:"request.send",reason:"timeout",request:r}),n>0&&await function(t){return new Promise(e=>setTimeout(e,t))}(n);let i=this.clone();const a=(i.url.split(":")[0]||"").toLowerCase();if(a in os){const t=await osa;if(t instanceof fs){let e=t;if(this.processFunc){us(r.#st);try{e=await this.processFunc(i,e)}catch(t){null!=t.throttle&&"number"==typeof t.stall||e.makeServerError("error in post-processing function",t).assertOk()}}return e}i=t}this.preflightFunc&&(i=await this.preflightFunc(i));const o=await this.getUrlFunc(i,us(r.#st));let l=new fs(o.statusCode,o.statusMessage,o.headers,o.body,r);if([301,302,307,308].indexOf(l.statusCode)>=0){try{const n=l.headers.location||"";return i.redirect(n).#ot(t+1,e,0,r,l)}catch(t){}return l}if(429===l.statusCode&&(null==this.retryFunc||await this.retryFunc(i,l,t))){const n=l.headers["retry-after"];let s=this.#it.slotIntervalMath.trunc(Math.random()Math.pow(2,t));return"string"==typeof n&&n.match(/^[1-9][0-9]$/)&&(s=parseInt(n)),i.clone().#ot(t+1,e,s,r,l)}if(this.processFunc){us(r.#st);try{l=await this.processFunc(i,l)}catch(n){null!=n.throttle&&"number"==typeof n.stall||l.makeServerError("error in post-processing function",n).assertOk();let s=this.#it.slotIntervalMath.trunc(Math.random()*Math.pow(2,t));return n.stall>=0&&(s=n.stall),i.clone().#ot(t+1,e,s,r,l)}}return l}send(){return c(null==this.#st,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#st=new cs(this),this.#ot(0,ds()+this.timeout,0,this,new fs(0,"",{},null,this))}cancel(){c(null!=this.#st,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});const t=ls.get(this);if(!t)throw new Error("missing signal; should not happen");t()}redirect(t){const e=this.url.split(":")[0].toLowerCase(),n=t.split(":")[0].toLowerCase();c(("https"!==e||"http"!==n)&&t.match(/^https?:/),"unsupported redirect","UNSUPPORTED_OPERATION",{operation:redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(t)})});const r=new hs(t);return r.method=this.method,r.allowGzip=this.allowGzip,r.timeout=this.timeout,r.#=Object.assign({},this.#),this.#X&&(r.#X=new Uint8Array(this.#X)),r.#$=this.#$,r}clone(){const t=new hs(this.url);return t.#W=this.#W,this.#X&&(t.#X=this.#X),t.#$=this.#$,t.#=Object.assign({},this.#),t.#tt=this.#tt,this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t.#et=this.#et,t.#nt=this.#nt,t.#rt=this.#rt,t.#it=Object.assign({},this.#it),t.#at=this.#at,t}static lockConfig(){ss=!0}static getGateway(t){return os[t.toLowerCase()]||null}static registerGateway(t,e){if("http"===(t=t.toLowerCase())||"https"===t)throw new Error(cannot intercept ${t}; use registerGetUrl);if(ss)throw new Error("gateways locked");os[t]=e}static registerGetUrl(t){if(ss)throw new Error("gateways locked");es=t}static createGetUrlFunc(t){return ts(t)}static createDataGateway(){return is}static createIpfsGatewayFunc(t){return as(t)}}class fs{#lt;#ct;#;#X;#ut;#ht;toString(){return<FetchResponse status=${this.statusCode} body=${this.#X?ot(this.#X):"null"}>}get statusCode(){return this.#lt}get statusMessage(){return this.#ct}get headers(){return Object.assign({},this.#)}get body(){return null==this.#X?null:new Uint8Array(this.#X)}get bodyText(){try{return null==this.#X?"":At(this.#X)}catch(t){c(!1,"response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch(t){c(!1,"response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}Symbol.iterator{const t=this.headers,e=Object.keys(t);let n=0;return{next:()=>{if(n<e.length){const r=e[n++];return{value:[r,t[r]],done:!1}}return{value:void 0,done:!0}}}}constructor(t,e,n,r,s){this.#lt=t,this.#ct=e,this.#=Object.keys(n).reduce((t,e)=>(t[e.toLowerCase()]=String(n[e]),t),{}),this.#X=null==r?null:new Uint8Array(r),this.#ut=s||null,this.#ht={message:""}}makeServerError(t,e){let n;n=t?CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${t}):CLIENT ESCALATED SERVER ERROR (${t=${this.statusCode} ${this.statusMessage}});const r=new fs(599,n,this.headers,this.body,this.#ut||void 0);return r.#ht={message:t,error:e},r}throwThrottleError(t,e){null==e?e=-1:u(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);const n=new Error(t||"throttling requests");throw s(n,{stall:e,throttle:!0}),n}getHeader(t){return this.headers[t.toLowerCase()]}hasBody(){return null!=this.#X}get request(){return this.#ut}ok(){return""===this.#ht.message&&this.statusCode>=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=this.#ht;""===t&&(t=server response ${this.statusCode} ${this.statusMessage});let n=null;this.request&&(n=this.request.url);let r=null;try{this.#X&&(r=At(this.#X))}catch(t){}c(!1,t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:n,responseBody:r,responseStatus:${this.statusCode} ${this.statusMessage}}})}}function ds(){return(new Date).getTime()}const ps="0x0000000000000000000000000000000000000000";class gs extends D{constructor(t,e,n,r){super(),this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=F(this.buffer)}update(t){v(this);const{view:e,buffer:n,blockLen:r}=this,s=(t=U(t)).length;for(let i=0;i<s;){const a=Math.min(r-this.pos,s-i);if(a===r){const e=F(t);for(;r<=s-i;i+=r)this.process(e,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){v(this),E(t,this),this.finished=!0;const{buffer:e,view:n,blockLen:r,isLE:s}=this;let{pos:i}=this;e[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>r-i&&(this.process(n,0),i=0);for(let t=i;t<r;t++)e[t]=0;!function(t,e,n,r){if("function"==typeof t.setBigUint64)return t.setBigUint64(e,n,r);const s=BigInt(32),i=BigInt(4294967295),a=Number(n>>s&i),o=Number(n&i),l=r?4:0,c=r?0:4;t.setUint32(e+l,a,r),t.setUint32(e+c,o,r)}(n,r-8,BigInt(8this.length),s),this.process(n,0);const a=F(t),o=this.outputLen;if(o%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=o/4,c=this.get();if(l>c.length)throw new Error("_sha2: outputLen bigger than state");for(let t=0;t<l;t++)a.setUint32(4t,c[t],s)}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const n=t.slice(0,e);return this.destroy(),n}cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:n,length:r,finished:s,destroyed:i,pos:a}=this;return t.length=r,t.pos=a,t.finished=s,t.destroyed=i,r%e&&t.buffer.set(n),t}}const ms=(t,e,n)=>t&e^~t&n,ys=(t,e,n)=>t&e^t&n^e&n,ws=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),bs=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),As=new Uint32Array(64);class vs extends gs{constructor(){super(64,32,8,!1),this.A=0|bs[0],this.B=0|bs[1],this.C=0|bs[2],this.D=0|bs[3],this.E=0|bs[4],this.F=0|bs[5],this.G=0|bs[6],this.H=0|bs[7]}get(){const{A:t,B:e,C:n,D:r,E:s,F:i,G:a,H:o}=this;return[t,e,n,r,s,i,a,o]}set(t,e,n,r,s,i,a,o){this.A=0|t,this.B=0|e,this.C=0|n,this.D=0|r,this.E=0|s,this.F=0|i,this.G=0|a,this.H=0|o}process(t,e){for(let n=0;n<16;n++,e+=4)As[n]=t.getUint32(e,!1);for(let t=16;t<64;t++){const e=As[t-15],n=As[t-2],r=L(e,7)^L(e,18)^e>>>3,s=L(n,17)^L(n,19)^n>>>10;As[t]=s+As[t-7]+r+As[t-16]|0}let{A:n,B:r,C:s,D:i,E:a,F:o,G:l,H:c}=this;for(let t=0;t<64;t++){const e=c+(L(a,6)^L(a,11)^L(a,25))+ms(a,o,l)+ws[t]+As[t]|0,u=(L(n,2)^L(n,13)^L(n,22))+ys(n,r,s)|0;c=l,l=o,o=a,a=i+e|0,i=s,s=r,r=n,n=e+u|0}n=n+this.A|0,r=r+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,o=o+this.F|0,l=l+this.G|0,c=c+this.H|0,this.set(n,r,s,i,a,o,l,c)}roundClean(){As.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Es=G(()=>new vs),[xs,ks]=(()=>R.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))))(),Ps=new Uint32Array(80),Bs=new Uint32Array(80);class Ns extends gs{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:t,Al:e,Bh:n,Bl:r,Ch:s,Cl:i,Dh:a,Dl:o,Eh:l,El:c,Fh:u,Fl:h,Gh:f,Gl:d,Hh:p,Hl:g}=this;return[t,e,n,r,s,i,a,o,l,c,u,h,f,d,p,g]}set(t,e,n,r,s,i,a,o,l,c,u,h,f,d,p,g){this.Ah=0|t,this.Al=0|e,this.Bh=0|n,this.Bl=0|r,this.Ch=0|s,this.Cl=0|i,this.Dh=0|a,this.Dl=0|o,this.Eh=0|l,this.El=0|c,this.Fh=0|u,this.Fl=0|h,this.Gh=0|f,this.Gl=0|d,this.Hh=0|p,this.Hl=0|g}process(t,e){for(let n=0;n<16;n++,e+=4)Ps[n]=t.getUint32(e),Bs[n]=t.getUint32(e+=4);for(let t=16;t<80;t++){const e=0|Ps[t-15],n=0|Bs[t-15],r=R.rotrSH(e,n,1)^R.rotrSH(e,n,8)^R.shrSH(e,n,7),s=R.rotrSL(e,n,1)^R.rotrSL(e,n,8)^R.shrSL(e,n,7),i=0|Ps[t-2],a=0|Bs[t-2],o=R.rotrSH(i,a,19)^R.rotrBH(i,a,61)^R.shrSH(i,a,6),l=R.rotrSL(i,a,19)^R.rotrBL(i,a,61)^R.shrSL(i,a,6),c=R.add4L(s,l,Bs[t-7],Bs[t-16]),u=R.add4H(c,r,o,Ps[t-7],Ps[t-16]);Ps[t]=0|u,Bs[t]=0|c}let{Ah:n,Al:r,Bh:s,Bl:i,Ch:a,Cl:o,Dh:l,Dl:c,Eh:u,El:h,Fh:f,Fl:d,Gh:p,Gl:g,Hh:m,Hl:y}=this;for(let t=0;t<80;t++){const e=R.rotrSH(u,h,14)^R.rotrSH(u,h,18)^R.rotrBH(u,h,41),w=R.rotrSL(u,h,14)^R.rotrSL(u,h,18)^R.rotrBL(u,h,41),b=u&f^~u&p,A=h&d^~h&g,v=R.add5L(y,w,A,ks[t],Bs[t]),E=R.add5H(v,m,e,b,xs[t],Ps[t]),x=0|v,k=R.rotrSH(n,r,28)^R.rotrBH(n,r,34)^R.rotrBH(n,r,39),P=R.rotrSL(n,r,28)^R.rotrBL(n,r,34)^R.rotrBL(n,r,39),B=n&s^n&a^s&a,N=r&i^r&o^i&o;m=0|p,y=0|g,p=0|f,g=0|d,f=0|u,d=0|h,({h:u,l:h}=R.add(0|l,0|c,0|E,0|x)),l=0|a,c=0|o,a=0|s,o=0|i,s=0|n,i=0|r;const I=R.add3L(x,P,N);n=R.add3H(I,E,k,B),r=0|I}({h:n,l:r}=R.add(0|this.Ah,0|this.Al,0|n,0|r)),({h:s,l:i}=R.add(0|this.Bh,0|this.Bl,0|s,0|i)),({h:a,l:o}=R.add(0|this.Ch,0|this.Cl,0|a,0|o)),({h:l,l:c}=R.add(0|this.Dh,0|this.Dl,0|l,0|c)),({h:u,l:h}=R.add(0|this.Eh,0|this.El,0|u,0|h)),({h:f,l:d}=R.add(0|this.Fh,0|this.Fl,0|f,0|d)),({h:p,l:g}=R.add(0|this.Gh,0|this.Gl,0|p,0|g)),({h:m,l:y}=R.add(0|this.Hh,0|this.Hl,0|m,0|y)),this.set(n,r,s,i,a,o,l,c,u,h,f,d,p,g,m,y)}roundClean(){Ps.fill(0),Bs.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Is=G(()=>new Ns),Cs=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==t.g)return t.g;throw new Error("unable to locate global object")}();function Ts(t){switch(t){case"sha256":return Es.create();case"sha512":return Is.create()}u(!1,"invalid hashing algorithm name","algorithm",t)}Cs.crypto||Cs.msCrypto;const Rs=function(t){return Ts("sha256").update(t).digest()},Os=function(t){return Ts("sha512").update(t).digest()};let Ss=Rs,Fs=Os,Ls=!1,Us=!1;function Ds(t){const e=nt(t,"data");return ot(Ss(e))}function Gs(t){const e=nt(t,"data");return ot(Fs(e))}Ds.=Rs,Ds.lock=function(){Ls=!0},Ds.register=function(t){if(Ls)throw new Error("sha256 is locked");Ss=t},Object.freeze(Ds),Gs.=Os,Gs.lock=function(){Us=!0},Gs.register=function(t){if(Us)throw new Error("sha512 is locked");Fs=t},Object.freeze(Ds),BigInt(0);const Ms=BigInt(1),Hs=BigInt(2),Qs=t=>t instanceof Uint8Array,Vs=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function js(t){if(!Qs(t))throw new Error("Uint8Array expected");let e="";for(let n=0;n<t.length;n++)e+=Vs[t[n]];return e}function Js(t){if("string"!=typeof t)throw new Error("hex string expected, got "+typeof t);return BigInt(""===t?"0":0x${t})}function zs(t){if("string"!=typeof t)throw new Error("hex string expected, got "+typeof t);const e=t.length;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(e/2);for(let e=0;e<n.length;e++){const r=2e,s=t.slice(r,r+2),i=Number.parseInt(s,16);if(Number.isNaN(i)||i<0)throw new Error("Invalid byte sequence");n[e]=i}return n}function Ks(t){return Js(js(t))}function qs(t){if(!Qs(t))throw new Error("Uint8Array expected");return Js(js(Uint8Array.from(t).reverse()))}function _s(t,e){return zs(t.toString(16).padStart(2e,"0"))}function Ws(t,e){return _s(t,e).reverse()}function Ys(t,e,n){let r;if("string"==typeof e)try{r=zs(e)}catch(n){throw new Error(${t} must be valid hex string, got "${e}". Cause: ${n})}else{if(!Qs(e))throw new Error(${t} must be hex string or Uint8Array);r=Uint8Array.from(e)}const s=r.length;if("number"==typeof n&&s!==n)throw new Error(${t} expected ${n} bytes, got ${s});return r}function Zs(...t){const e=new Uint8Array(t.reduce((t,e)=>t+e.length,0));let n=0;return t.forEach(t=>{if(!Qs(t))throw new Error("Uint8Array expected");e.set(t,n),n+=t.length}),e}const Xs=t=>(Hs<<BigInt(t-1))-Ms,$s=t=>new Uint8Array(t),ti=t=>Uint8Array.from(t);function ei(t,e,n){if("number"!=typeof t||t<2)throw new Error("hashLen must be a number");if("number"!=typeof e||e<2)throw new Error("qByteLen must be a number");if("function"!=typeof n)throw new Error("hmacFn must be a function");let r=$s(t),s=$s(t),i=0;const a=()=>{r.fill(1),s.fill(0),i=0},o=(...t)=>n(s,r,...t),l=(t=$s())=>{s=o(ti([0]),t),r=o(),0!==t.length&&(s=o(ti([1]),t),r=o())},c=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let t=0;const n=[];for(;t<e;){r=o();const e=r.slice();n.push(e),t+=r.length}return Zs(...n)};return(t,e)=>{let n;for(a(),l(t);!(n=e(c()));)l();return a(),n}}const ni={bigint:t=>"bigint"==typeof t,function:t=>"function"==typeof t,boolean:t=>"boolean"==typeof t,string:t=>"string"==typeof t,stringOrUint8Array:t=>"string"==typeof t||t instanceof Uint8Array,isSafeInteger:t=>Number.isSafeInteger(t),array:t=>Array.isArray(t),field:(t,e)=>e.Fp.isValid(t),hash:t=>"function"==typeof t&&Number.isSafeInteger(t.outputLen)};function ri(t,e,n={}){const r=(e,n,r)=>{const s=ni[n];if("function"!=typeof s)throw new Error(Invalid validator "${n}", expected function);const i=t[e];if(!(r&&void 0===i||s(i,t)))throw new Error(Invalid param ${String(e)}=${i} (${typeof i}), expected ${n})};for(const[t,n]of Object.entries(e))r(t,n,!1);for(const[t,e]of Object.entries(n))r(t,e,!0);return t}const si=BigInt(0),ii=BigInt(1),ai=BigInt(2),oi=BigInt(3),li=BigInt(4),ci=BigInt(5),ui=BigInt(8);function hi(t,e){const n=t%e;return n>=si?n:e+n}function fi(t,e,n){if(n<=si||e<si)throw new Error("Expected power/modulo > 0");if(n===ii)return si;let r=ii;for(;e>si;)e&ii&&(r=rt%n),t=tt%n,e>>=ii;return r}function di(t,e,n){let r=t;for(;e-- >si;)r*=r,r%=n;return r}function pi(t,e){if(t===si||e<=si)throw new Error(invert: expected positive integers, got n=${t} mod=${e});let n=hi(t,e),r=e,s=si,i=ii,a=ii,o=si;for(;n!==si;){const t=r/n,e=r%n,l=s-at,c=i-ot;r=n,n=e,s=a,i=o,a=l,o=c}if(r!==ii)throw new Error("invert: does not exist");return hi(s,e)}BigInt(9),BigInt(16);const gi=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function mi(t,e){const n=void 0!==e?e:t.toString(2).length;return{nBitLength:n,nByteLength:Math.ceil(n/8)}}function yi(t){if("bigint"!=typeof t)throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function wi(t){const e=yi(t);return e+Math.ceil(e/2)}class bi extends D{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,function(t){if("function"!=typeof t||"function"!=typeof t.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");b(t.outputLen),b(t.blockLen)}(t);const n=U(e);if(this.iHash=t.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,s=new Uint8Array(r);s.set(n.length>r?t.create().update(n).digest():n);for(let t=0;t<s.length;t++)s[t]^=54;this.iHash.update(s),this.oHash=t.create();for(let t=0;t<s.length;t++)s[t]^=106;this.oHash.update(s),s.fill(0)}update(t){return v(this),this.iHash.update(t),this}digestInto(t){v(this),A(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){const t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));const{oHash:e,iHash:n,finished:r,destroyed:s,blockLen:i,outputLen:a}=this;return t.finished=r,t.destroyed=s,t.blockLen=i,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ai=(t,e,n)=>new bi(t,e).update(n).digest();Ai.create=(t,e)=>new bi(t,e);const vi=BigInt(0),Ei=BigInt(1);function xi(t){return ri(t.Fp,gi.reduce((t,e)=>(t[e]="function",t),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),ri(t,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...mi(t.n,t.nBitLength),...t,p:t.Fp.ORDER})}const{Ph:ki,aT:Pi}=e,Bi={Err:class extends Error{constructor(t=""){super(t)}},_parseInt(t){const{Err:e}=Bi;if(t.length<2||2!==t[0])throw new e("Invalid signature integer tag");const n=t[1],r=t.subarray(2,n+2);if(!n||r.length!==n)throw new e("Invalid signature integer: wrong length");if(128&r[0])throw new e("Invalid signature integer: negative");if(0===r[0]&&!(128&r[1]))throw new e("Invalid signature integer: unnecessary leading zero");return{d:ki(r),l:t.subarray(n+2)}},toSig(t){const{Err:e}=Bi,n="string"==typeof t?Pi(t):t;if(!(n instanceof Uint8Array))throw new Error("ui8a expected");let r=n.length;if(r<2||48!=n[0])throw new e("Invalid signature tag");if(n[1]!==r-2)throw new e("Invalid signature: incorrect length");const{d:s,l:i}=Bi._parseInt(n.subarray(2)),{d:a,l:o}=Bi._parseInt(i);if(o.length)throw new e("Invalid signature: left bytes after parsing");return{r:s,s:a}},hexFromSig(t){const e=t=>8&Number.parseInt(t[0],16)?"00"+t:t,n=t=>{const e=t.toString(16);return 1&e.length?0${e}:e},r=e(n(t.s)),s=e(n(t.r)),i=r.length/2,a=s.length/2,o=n(i),l=n(a);return30${n(a+i+4)}02${l}${s}02${o}${r}}},Ni=BigInt(0),Ii=BigInt(1),Ci=(BigInt(2),BigInt(3));function Ti(t){const e=function(t){const e=xi(t);return ri(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}(t),{Fp:n,n:r}=e,s=n.BYTES+1,i=2n.BYTES+1;function a(t){return hi(t,r)}function o(t){return pi(t,r)}const{ProjectivePoint:l,normPrivateKeyToScalar:c,weierstrassEquation:u,isWithinCurveOrder:h}=function(t){const e=function(t){const e=xi(t);ri(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:n,Fp:r,a:s}=e;if(n){if(!r.eql(s,r.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if("object"!=typeof n||"bigint"!=typeof n.beta||"function"!=typeof n.splitScalar)throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}(t),{Fp:n}=e,r=e.toBytes||((t,e,r)=>{const s=e.toAffine();return Zs(Uint8Array.from([4]),n.toBytes(s.x),n.toBytes(s.y))}),s=e.fromBytes||(t=>{const e=t.subarray(1);return{x:n.fromBytes(e.subarray(0,n.BYTES)),y:n.fromBytes(e.subarray(n.BYTES,2n.BYTES))}});function i(t){const{a:r,b:s}=e,i=n.sqr(t),a=n.mul(i,t);return n.add(n.add(a,n.mul(t,r)),s)}if(!n.eql(n.sqr(e.Gy),i(e.Gx)))throw new Error("bad generator point: equation left != right");function a(t){return"bigint"==typeof t&&Ni<t&&t<e.n}function o(t){if(!a(t))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function l(t){const{allowedPrivateKeyLengths:n,nByteLength:r,wrapPrivateKey:s,n:i}=e;if(n&&"bigint"!=typeof t){if(t instanceof Uint8Array&&(t=js(t)),"string"!=typeof t||!n.includes(t.length))throw new Error("Invalid key");t=t.padStart(2r,"0")}let a;try{a="bigint"==typeof t?t:Ks(Ys("private key",t,r))}catch(e){throw new Error(private key must be ${r} bytes, hex or bigint, not ${typeof t})}return s&&(a=hi(a,i)),o(a),a}const c=new Map;function u(t){if(!(t instanceof h))throw new Error("ProjectivePoint expected")}class h{constructor(t,e,r){if(this.px=t,this.py=e,this.pz=r,null==t||!n.isValid(t))throw new Error("x required");if(null==e||!n.isValid(e))throw new Error("y required");if(null==r||!n.isValid(r))throw new Error("z required")}static fromAffine(t){const{x:e,y:r}=t||{};if(!t||!n.isValid(e)||!n.isValid(r))throw new Error("invalid affine point");if(t instanceof h)throw new Error("projective point not allowed");const s=t=>n.eql(t,n.ZERO);return s(e)&&s(r)?h.ZERO:new h(e,r,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(t){const e=n.invertBatch(t.map(t=>t.pz));return t.map((t,n)=>t.toAffine(e[n])).map(h.fromAffine)}static fromHex(t){const e=h.fromAffine(s(Ys("pointHex",t)));return e.assertValidity(),e}static fromPrivateKey(t){return h.BASE.multiply(l(t))}_setWindowSize(t){this._WINDOW_SIZE=t,c.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!n.is0(this.py))return;throw new Error("bad point: ZERO")}const{x:t,y:r}=this.toAffine();if(!n.isValid(t)||!n.isValid(r))throw new Error("bad point: x or y not FE");const s=n.sqr(r),a=i(t);if(!n.eql(s,a))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){const{y:t}=this.toAffine();if(n.isOdd)return!n.isOdd(t);throw new Error("Field doesn't support isOdd")}equals(t){u(t);const{px:e,py:r,pz:s}=this,{px:i,py:a,pz:o}=t,l=n.eql(n.mul(e,o),n.mul(i,s)),c=n.eql(n.mul(r,o),n.mul(a,s));return l&&c}negate(){return new h(this.px,n.neg(this.py),this.pz)}double(){const{a:t,b:r}=e,s=n.mul(r,Ci),{px:i,py:a,pz:o}=this;let l=n.ZERO,c=n.ZERO,u=n.ZERO,f=n.mul(i,i),d=n.mul(a,a),p=n.mul(o,o),g=n.mul(i,a);return g=n.add(g,g),u=n.mul(i,o),u=n.add(u,u),l=n.mul(t,u),c=n.mul(s,p),c=n.add(l,c),l=n.sub(d,c),c=n.add(d,c),c=n.mul(l,c),l=n.mul(g,l),u=n.mul(s,u),p=n.mul(t,p),g=n.sub(f,p),g=n.mul(t,g),g=n.add(g,u),u=n.add(f,f),f=n.add(u,f),f=n.add(f,p),f=n.mul(f,g),c=n.add(c,f),p=n.mul(a,o),p=n.add(p,p),f=n.mul(p,g),l=n.sub(l,f),u=n.mul(p,d),u=n.add(u,u),u=n.add(u,u),new h(l,c,u)}add(t){u(t);const{px:r,py:s,pz:i}=this,{px:a,py:o,pz:l}=t;let c=n.ZERO,f=n.ZERO,d=n.ZERO;const p=e.a,g=n.mul(e.b,Ci);let m=n.mul(r,a),y=n.mul(s,o),w=n.mul(i,l),b=n.add(r,s),A=n.add(a,o);b=n.mul(b,A),A=n.add(m,y),b=n.sub(b,A),A=n.add(r,i);let v=n.add(a,l);return A=n.mul(A,v),v=n.add(m,w),A=n.sub(A,v),v=n.add(s,i),c=n.add(o,l),v=n.mul(v,c),c=n.add(y,w),v=n.sub(v,c),d=n.mul(p,A),c=n.mul(g,w),d=n.add(c,d),c=n.sub(y,d),d=n.add(y,d),f=n.mul(c,d),y=n.add(m,m),y=n.add(y,m),w=n.mul(p,w),A=n.mul(g,A),y=n.add(y,w),w=n.sub(m,w),w=n.mul(p,w),A=n.add(A,w),m=n.mul(y,A),f=n.add(f,m),m=n.mul(v,A),c=n.mul(b,c),c=n.sub(c,m),m=n.mul(b,y),d=n.mul(v,d),d=n.add(d,m),new h(c,f,d)}subtract(t){return this.add(t.negate())}is0(){return this.equals(h.ZERO)}wNAF(t){return d.wNAFCached(this,c,t,t=>{const e=n.invertBatch(t.map(t=>t.pz));return t.map((t,n)=>t.toAffine(e[n])).map(h.fromAffine)})}multiplyUnsafe(t){const r=h.ZERO;if(t===Ni)return r;if(o(t),t===Ii)return this;const{endo:s}=e;if(!s)return d.unsafeLadder(this,t);let{k1neg:i,k1:a,k2neg:l,k2:c}=s.splitScalar(t),u=r,f=r,p=this;for(;a>Ni||c>Ni;)a&Ii&&(u=u.add(p)),c&Ii&&(f=f.add(p)),p=p.double(),a>>=Ii,c>>=Ii;return i&&(u=u.negate()),l&&(f=f.negate()),f=new h(n.mul(f.px,s.beta),f.py,f.pz),u.add(f)}multiply(t){o(t);let r,s,i=t;const{endo:a}=e;if(a){const{k1neg:t,k1:e,k2neg:o,k2:l}=a.splitScalar(i);let{p:c,f:u}=this.wNAF(e),{p:f,f:p}=this.wNAF(l);c=d.constTimeNegate(t,c),f=d.constTimeNegate(o,f),f=new h(n.mul(f.px,a.beta),f.py,f.pz),r=c.add(f),s=u.add(p)}else{const{p:t,f:e}=this.wNAF(i);r=t,s=e}return h.normalizeZ([r,s])[0]}multiplyAndAddUnsafe(t,e,n){const r=h.BASE,s=(t,e)=>e!==Ni&&e!==Ii&&t.equals(r)?t.multiply(e):t.multiplyUnsafe(e),i=s(this,e).add(s(t,n));return i.is0()?void 0:i}toAffine(t){const{px:e,py:r,pz:s}=this,i=this.is0();null==t&&(t=i?n.ONE:n.inv(s));const a=n.mul(e,t),o=n.mul(r,t),l=n.mul(s,t);if(i)return{x:n.ZERO,y:n.ZERO};if(!n.eql(l,n.ONE))throw new Error("invZ was invalid");return{x:a,y:o}}isTorsionFree(){const{h:t,isTorsionFree:n}=e;if(t===Ii)return!0;if(n)return n(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:t,clearCofactor:n}=e;return t===Ii?this:n?n(h,this):this.multiplyUnsafe(e.h)}toRawBytes(t=!0){return this.assertValidity(),r(h,this,t)}toHex(t=!0){return js(this.toRawBytes(t))}}h.BASE=new h(e.Gx,e.Gy,n.ONE),h.ZERO=new h(n.ZERO,n.ONE,n.ZERO);const f=e.nBitLength,d=function(t,e){const n=(t,e)=>{const n=e.negate();return t?n:e},r=t=>({windows:Math.ceil(e/t)+1,windowSize:2**(t-1)});return{constTimeNegate:n,unsafeLadder(e,n){let r=t.ZERO,s=e;for(;n>vi;)n&Ei&&(r=r.add(s)),s=s.double(),n>>=Ei;return r},precomputeWindow(t,e){const{windows:n,windowSize:s}=r(e),i=[];let a=t,o=a;for(let t=0;t<n;t++){o=a,i.push(o);for(let t=1;t<s;t++)o=o.add(a),i.push(o);a=o.double()}return i},wNAF(e,s,i){const{windows:a,windowSize:o}=r(e);let l=t.ZERO,c=t.BASE;const u=BigInt(2e-1),h=2e,f=BigInt(e);for(let t=0;t<a;t++){const e=to;let r=Number(i&u);i>>=f,r>o&&(r-=h,i+=Ei);const a=e,d=e+Math.abs(r)-1,p=t%2!=0,g=r<0;0===r?c=c.add(n(p,s[a])):l=l.add(n(g,s[d]))}return{p:l,f:c}},wNAFCached(t,e,n,r){const s=t._WINDOW_SIZE||1;let i=e.get(t);return i||(i=this.precomputeWindow(t,s),1!==s&&e.set(t,r(i))),this.wNAF(s,i,n)}}}(h,e.endo?Math.ceil(f/2):f);return{CURVE:e,ProjectivePoint:h,normPrivateKeyToScalar:l,weierstrassEquation:i,isWithinCurveOrder:a}}({...e,toBytes(t,e,r){const s=e.toAffine(),i=n.toBytes(s.x),a=Zs;return r?a(Uint8Array.from([e.hasEvenY()?2:3]),i):a(Uint8Array.from([4]),i,n.toBytes(s.y))},fromBytes(t){const e=t.length,r=t[0],a=t.subarray(1);if(e!==s||2!==r&&3!==r){if(e===i&&4===r)return{x:n.fromBytes(a.subarray(0,n.BYTES)),y:n.fromBytes(a.subarray(n.BYTES,2n.BYTES))};throw new Error(Point of length ${e} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes)}{const t=Ks(a);if(!(Ni<(o=t)&&o<n.ORDER))throw new Error("Point is not on curve");const e=u(t);let s=n.sqrt(e);return!(1&~r)!=((s&Ii)===Ii)&&(s=n.neg(s)),{x:t,y:s}}var o}}),f=t=>js(_s(t,e.nByteLength));function d(t){return t>r>>Ii}const p=(t,e,n)=>Ks(t.slice(e,n));class g{constructor(t,e,n){this.r=t,this.s=e,this.recovery=n,this.assertValidity()}static fromCompact(t){const n=e.nByteLength;return t=Ys("compactSignature",t,2n),new g(p(t,0,n),p(t,n,2n))}static fromDER(t){const{r:e,s:n}=Bi.toSig(Ys("DER",t));return new g(e,n)}assertValidity(){if(!h(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!h(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(t){return new g(this.r,this.s,t)}recoverPublicKey(t){const{r,s,recovery:i}=this,c=b(Ys("msgHash",t));if(null==i||![0,1,2,3].includes(i))throw new Error("recovery id invalid");const u=2===i||3===i?r+e.n:r;if(u>=n.ORDER)throw new Error("recovery id 2 or 3 invalid");const h=1&i?"03":"02",d=l.fromHex(h+f(u)),p=o(u),g=a(-cp),m=a(sp),y=l.BASE.multiplyAndAddUnsafe(d,g,m);if(!y)throw new Error("point at infinify");return y.assertValidity(),y}hasHighS(){return d(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return zs(this.toDERHex())}toDERHex(){return Bi.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return zs(this.toCompactHex())}toCompactHex(){return f(this.r)+f(this.s)}}const m={isValidPrivateKey(t){try{return c(t),!0}catch(t){return!1}},normPrivateKeyToScalar:c,randomPrivateKey:()=>{const t=wi(e.n);return function(t,e,n=!1){const r=t.length,s=yi(e),i=wi(e);if(r<16||r<i||r>1024)throw new Error(expected ${i}-1024 bytes of input, got ${r});const a=hi(n?Ks(t):qs(t),e-ii)+ii;return n?Ws(a,s):_s(a,s)}(e.randomBytes(t),e.n)},precompute:(t=8,e=l.BASE)=>(e._setWindowSize(t),e.multiply(BigInt(3)),e)};function y(t){const e=t instanceof Uint8Array,n="string"==typeof t,r=(e||n)&&t.length;return e?r===s||r===i:n?r===2s||r===2i:t instanceof l}const w=e.bits2int||function(t){const n=Ks(t),r=8t.length-e.nBitLength;return r>0?n>>BigInt(r):n},b=e.bits2int_modN||function(t){return a(w(t))},A=Xs(e.nBitLength);function v(t){if("bigint"!=typeof t)throw new Error("bigint expected");if(!(Ni<=t&&t<A))throw new Error(bigint expected < 2^${e.nBitLength});return _s(t,e.nByteLength)}const E={lowS:e.lowS,prehash:!1},x={lowS:e.lowS,prehash:!1};return l.BASE._setWindowSize(8),{CURVE:e,getPublicKey:function(t,e=!0){return l.fromPrivateKey(t).toRawBytes(e)},getSharedSecret:function(t,e,n=!0){if(y(t))throw new Error("first arg must be private key");if(!y(e))throw new Error("second arg must be public key");return l.fromHex(e).multiply(c(t)).toRawBytes(n)},sign:function(t,r,s=E){const{seed:i,k2sig:u}=function(t,r,s=E){if(["recovered","canonical"].some(t=>t in s))throw new Error("sign() legacy options not supported");const{hash:i,randomBytes:u}=e;let{lowS:f,prehash:p,extraEntropy:m}=s;null==f&&(f=!0),t=Ys("msgHash",t),p&&(t=Ys("prehashed msgHash",i(t)));const y=b(t),A=c(r),x=[v(A),v(y)];if(null!=m){const t=!0===m?u(n.BYTES):m;x.push(Ys("extraEntropy",t))}const k=Zs(...x),P=y;return{seed:k,k2sig:function(t){const e=w(t);if(!h(e))return;const n=o(e),r=l.BASE.multiply(e).toAffine(),s=a(r.x);if(s===Ni)return;const i=a(na(P+sA));if(i===Ni)return;let c=(r.x===s?0:2)|Number(r.y&Ii),u=i;return f&&d(i)&&(u=function(t){return d(t)?a(-t):t}(i),c^=1),new g(s,u,c)}}}(t,r,s),f=e;return ei(f.hash.outputLen,f.nByteLength,f.hmac)(i,u)},verify:function(t,n,r,s=x){const i=t;if(n=Ys("msgHash",n),r=Ys("publicKey",r),"strict"in s)throw new Error("options.strict was renamed to lowS");const{lowS:c,prehash:u}=s;let h,f;try{if("string"==typeof i||i instanceof Uint8Array)try{h=g.fromDER(i)}catch(t){if(!(t instanceof Bi.Err))throw t;h=g.fromCompact(i)}else{if("object"!=typeof i||"bigint"!=typeof i.r||"bigint"!=typeof i.s)throw new Error("PARSE");{const{r:t,s:e}=i;h=new g(t,e)}}f=l.fromHex(r)}catch(t){if("PARSE"===t.message)throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(c&&h.hasHighS())return!1;u&&(n=e.hash(n));const{r:d,s:p}=h,m=b(n),y=o(p),w=a(my),A=a(dy),v=l.BASE.multiplyAndAddUnsafe(f,w,A)?.toAffine();return!!v&&a(v.x)===d},ProjectivePoint:l,Signature:g,utils:m}}function Ri(t){return{hash:t,hmac:(e,...n)=>Ai(t,e,function(...t){const e=new Uint8Array(t.reduce((t,e)=>t+e.length,0));let n=0;return t.forEach(t=>{if(!S(t))throw new Error("Uint8Array expected");e.set(t,n),n+=t.length}),e}(...n)),randomBytes:M}}BigInt(4);const Oi=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Si=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Fi=BigInt(1),Li=BigInt(2),Ui=(t,e)=>(t+e/Li)/e;const Di=function(t,e,n=!1,r={}){if(t<=si)throw new Error(Expected Field ORDER > 0, got ${t});const{nBitLength:s,nByteLength:i}=mi(t,e);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");const a=function(t){if(t%li===oi){const e=(t+ii)/li;return function(t,n){const r=t.pow(n,e);if(!t.eql(t.sqr(r),n))throw new Error("Cannot find square root");return r}}if(t%ui===ci){const e=(t-ci)/ui;return function(t,n){const r=t.mul(n,ai),s=t.pow(r,e),i=t.mul(n,s),a=t.mul(t.mul(i,ai),s),o=t.mul(i,t.sub(a,t.ONE));if(!t.eql(t.sqr(o),n))throw new Error("Cannot find square root");return o}}return function(t){const e=(t-ii)/ai;let n,r,s;for(n=t-ii,r=0;n%ai===si;n/=ai,r++);for(s=ai;s<t&&fi(s,e,t)!==t-ii;s++);if(1===r){const e=(t+ii)/li;return function(t,n){const r=t.pow(n,e);if(!t.eql(t.sqr(r),n))throw new Error("Cannot find square root");return r}}const i=(n+ii)/ai;return function(t,a){if(t.pow(a,e)===t.neg(t.ONE))throw new Error("Cannot find square root");let o=r,l=t.pow(t.mul(t.ONE,s),n),c=t.pow(a,i),u=t.pow(a,n);for(;!t.eql(u,t.ONE);){if(t.eql(u,t.ZERO))return t.ZERO;let e=1;for(let n=t.sqr(u);e<o&&!t.eql(n,t.ONE);e++)n=t.sqr(n);const n=t.pow(l,ii<<BigInt(o-e-1));l=t.sqr(n),c=t.mul(c,n),u=t.mul(u,l),o=e}return c}}(t)}(t),o=Object.freeze({ORDER:t,BITS:s,BYTES:i,MASK:Xs(s),ZERO:si,ONE:ii,create:e=>hi(e,t),isValid:e=>{if("bigint"!=typeof e)throw new Error("Invalid field element: expected bigint, got "+typeof e);return si<=e&&e<t},is0:t=>t===si,isOdd:t=>(t&ii)===ii,neg:e=>hi(-e,t),eql:(t,e)=>t===e,sqr:e=>hi(ee,t),add:(e,n)=>hi(e+n,t),sub:(e,n)=>hi(e-n,t),mul:(e,n)=>hi(en,t),pow:(t,e)=>function(t,e,n){if(n<si)throw new Error("Expected power > 0");if(n===si)return t.ONE;if(n===ii)return e;let r=t.ONE,s=e;for(;n>si;)n&ii&&(r=t.mul(r,s)),s=t.sqr(s),n>>=ii;return r}(o,t,e),div:(e,n)=>hi(epi(n,t),t),sqrN:t=>tt,addN:(t,e)=>t+e,subN:(t,e)=>t-e,mulN:(t,e)=>te,inv:e=>pi(e,t),sqrt:r.sqrt||(t=>a(o,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}(o,t),cmov:(t,e,n)=>n?e:t,toBytes:t=>n?Ws(t,i):_s(t,i),fromBytes:t=>{if(t.length!==i)throw new Error(Fp.fromBytes: expected ${i}, got ${t.length});return n?qs(t):Ks(t)}});return Object.freeze(o)}(Oi,void 0,void 0,{sqrt:function(t){const e=Oi,n=BigInt(3),r=BigInt(6),s=BigInt(11),i=BigInt(22),a=BigInt(23),o=BigInt(44),l=BigInt(88),c=ttt%e,u=cct%e,h=di(u,n,e)u%e,f=di(h,n,e)u%e,d=di(f,Li,e)c%e,p=di(d,s,e)d%e,g=di(p,i,e)p%e,m=di(g,o,e)g%e,y=di(m,l,e)m%e,w=di(y,o,e)g%e,b=di(w,n,e)u%e,A=di(b,a,e)p%e,v=di(A,r,e)c%e,E=di(v,Li,e);if(!Di.eql(Di.sqr(E),t))throw new Error("Cannot find square root");return E}}),Gi=function(t,e){const n=e=>Ti({...t,...Ri(e)});return Object.freeze({...n(e),create:n})}({a:BigInt(0),b:BigInt(7),Fp:Di,n:Si,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:t=>{const e=Si,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-FiBigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=n,a=BigInt("0x100000000000000000000000000000000"),o=Ui(it,e),l=Ui(-rt,e);let c=hi(t-on-ls,e),u=hi(-or-li,e);const h=c>a,f=u>a;if(h&&(c=e-c),f&&(u=e-u),c>a||u>a)throw new Error("splitScalar: Endomorphism failed, k="+t);return{k1neg:h,k1:c,k2neg:f,k2:u}}}},Es);BigInt(0),Gi.ProjectivePoint;class Mi{#ft;constructor(t){u(32===ct(t),"invalid private key","privateKey","[REDACTED]"),this.#ft=ot(t)}get privateKey(){return this.#ft}get publicKey(){return Mi.computePublicKey(this.#ft)}get compressedPublicKey(){return Mi.computePublicKey(this.#ft,!0)}sign(t){u(32===ct(t),"invalid digest length","digest",t);const e=Gi.sign(rt(t),rt(this.#ft),{lowS:!0});return Xr.from({r:St(e.r,32),s:St(e.s,32),v:e.recovery?28:27})}computeSharedSecret(t){const e=Mi.computePublicKey(t);return ot(Gi.getSharedSecret(rt(this.#ft),nt(e),!1))}static computePublicKey(t,e){let n=nt(t,"key");if(32===n.length)return ot(Gi.getPublicKey(n,!!e));if(64===n.length){const t=new Uint8Array(65);t[0]=4,t.set(n,1),n=t}return ot(Gi.ProjectivePoint.fromHex(n).toRawBytes(e))}static recoverPublicKey(t,e){u(32===ct(t),"invalid digest length","digest",t);const n=Xr.from(e);let r=Gi.Signature.fromCompact(rt(lt([n.r,n.s])));r=r.addRecoveryBit(n.yParity);const s=r.recoverPublicKey(rt(t));return u(null!=s,"invalid signature for digest","signature",e),"0x"+s.toHex(!1)}static addPoints(t,e,n){const r=Gi.ProjectivePoint.fromHex(Mi.computePublicKey(t).substring(2)),s=Gi.ProjectivePoint.fromHex(Mi.computePublicKey(e).substring(2));return"0x"+r.add(s).toHex(!!n)}}function Hi(t){let e=t.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function Qi(t,e,n){let r=0;for(let s=0;s<n;s++)r=256r+t[e+s];return r}function Vi(t,e,n,r){const s=[];for(;n<e+1+r;){const i=ji(t,n);s.push(i.result),c((n+=i.consumed)<=e+1+r,"child data too short","BUFFER_OVERRUN",{buffer:t,length:r,offset:e})}return{consumed:1+r,result:s}}function ji(t,e){c(0!==t.length,"data too short","BUFFER_OVERRUN",{buffer:t,length:0,offset:1});const n=e=>{c(e<=t.length,"data short segment too short","BUFFER_OVERRUN",{buffer:t,length:t.length,offset:e})};if(t[e]>=248){const r=t[e]-247;n(e+1+r);const s=Qi(t,e+1,r);return n(e+1+r+s),Vi(t,e,e+1+r,r+s)}if(t[e]>=192){const r=t[e]-192;return n(e+1+r),Vi(t,e,e+1,r)}if(t[e]>=184){const r=t[e]-183;n(e+1+r);const s=Qi(t,e+1,r);return n(e+1+r+s),{consumed:1+r+s,result:ot(t.slice(e+1+r,e+1+r+s))}}if(t[e]>=128){const r=t[e]-128;return n(e+1+r),{consumed:1+r,result:ot(t.slice(e+1,e+1+r))}}return{consumed:1,result:Hi(t[e])}}function Ji(t){const e=nt(t,"data"),n=ji(e,0);return u(n.consumed===e.length,"unexpected junk after rlp payload","data",t),n.result}function zi(t){const e=[];for(;t;)e.unshift(255&t),t>>=8;return e}function Ki(t){if(Array.isArray(t)){let e=[];if(t.forEach(function(t){e=e.concat(Ki(t))}),e.length<=55)return e.unshift(192+e.length),e;const n=zi(e.length);return n.unshift(247+n.length),n.concat(e)}const e=Array.prototype.slice.call(nt(t,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const n=zi(e.length);return n.unshift(183+n.length),n.concat(e)}const qi="0123456789abcdef";function _i(t){let e="0x";for(const n of Ki(t))e+=qi[n>>4],e+=qi[15&n];return e}const Wi=BigInt(0),Yi=BigInt(2),Zi=BigInt(27),Xi=BigInt(28),$i=BigInt(35),ta=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),ea=Symbol.for("nodejs.util.inspect.custom"),na=131072,ra=128;function sa(t,e){let n=t.toString(16);for(;n.length<2;)n="0"+n;return n+=Ds(e).substring(4),"0x"+n}function ia(t){return"0x"===t?null:ee(t)}function aa(t,e){try{return In(t)}catch(n){u(!1,n.message,e,t)}}function oa(t,e){try{if(!Array.isArray(t))throw new Error("authorizationList: invalid array");const e=[];for(let n=0;n<t.length;n++){const r=t[n];if(!Array.isArray(r))throw new Error(authorization[${n}]: invalid array);if(6!==r.length)throw new Error(authorization[${n}]: wrong length);if(!r[1])throw new Error(authorization[${n}]: null address);e.push({address:ia(r[1]),nonce:ca(r[2],"nonce"),chainId:ca(r[0],"chainId"),signature:Xr.from({yParity:la(r[3],"yParity"),r:ft(r[4],32),s:ft(r[5],32)})})}return e}catch(n){u(!1,n.message,e,t)}}function la(t,e){return"0x"===t?0:Ot(t,e)}function ca(t,e){if("0x"===t)return Wi;const n=It(t,e);return u(n<=ta,"value exceeds uint size",e,n),n}function ua(t,e){const n=It(t,"value"),r=Ft(n);return u(r.length<=32,"value too large",tx.${e},n),r}function ha(t){return In(t).map(t=>[t.address,t.storageKeys])}function fa(t,e){u(Array.isArray(t),invalid ${e},"value",t);for(let e=0;e<t.length;e++)u(st(t[e],32),"invalid ${ param } hash",value[${e}],t[e]);return t}function da(t,e){let n;try{if(n=la(e[0],"yParity"),0!==n&&1!==n)throw new Error("bad yParity")}catch(t){u(!1,"invalid yParity","yParity",e[0])}const r=ft(e[1],32),s=ft(e[2],32),i=Xr.from({r,s,yParity:n});t.signature=i}class pa{#dt;#pt;#n;#gt;#mt;#yt;#wt;#bt;#At;#vt;#Et;#xt;#kt;#Pt;#Bt;#Nt;#It;#Ct;get type(){return this.#dt}set type(t){switch(t){case null:this.#dt=null;break;case 0:case"legacy":this.#dt=0;break;case 1:case"berlin":case"eip-2930":this.#dt=1;break;case 2:case"london":case"eip-1559":this.#dt=2;break;case 3:case"cancun":case"eip-4844":this.#dt=3;break;case 4:case"pectra":case"eip-7702":this.#dt=4;break;default:u(!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";case 4:return"eip-7702"}return null}get to(){const t=this.#pt;return null==t&&3===this.type?ps:t}set to(t){this.#pt=null==t?null:ee(t)}get nonce(){return this.#gt}set nonce(t){this.#gt=Ot(t,"value")}get gasLimit(){return this.#mt}set gasLimit(t){this.#mt=It(t)}get gasPrice(){const t=this.#yt;return null!=t||0!==this.type&&1!==this.type?t:Wi}set gasPrice(t){this.#yt=null==t?null:It(t,"gasPrice")}get maxPriorityFeePerGas(){return this.#wt??(2===this.type||3===this.type?Wi:null)}set maxPriorityFeePerGas(t){this.#wt=null==t?null:It(t,"maxPriorityFeePerGas")}get maxFeePerGas(){return this.#bt??(2===this.type||3===this.type?Wi:null)}set maxFeePerGas(t){this.#bt=null==t?null:It(t,"maxFeePerGas")}get data(){return this.#n}set data(t){this.#n=ot(t)}get value(){return this.#At}set value(t){this.#At=It(t,"value")}get chainId(){return this.#vt}set chainId(t){this.#vt=It(t)}get signature(){return this.#Et||null}set signature(t){this.#Et=null==t?null:Xr.from(t)}isValid(){const t=this.signature;if(t&&!t.isValid())return!1;const e=this.authorizationList;if(e)for(const t of e)if(!t.signature.isValid())return!1;return!0}get accessList(){return(this.#xt||null)??(1===this.type||2===this.type||3===this.type?[]:null)}set accessList(t){this.#xt=null==t?null:In(t)}get authorizationList(){const t=this.#It||null;return null==t&&4===this.type?[]:t}set authorizationList(t){this.#It=null==t?null:t.map(t=>$r(t))}get maxFeePerBlobGas(){const t=this.#kt;return null==t&&3===this.type?Wi:t}set maxFeePerBlobGas(t){this.#kt=null==t?null:It(t,"maxFeePerBlobGas")}get blobVersionedHashes(){let t=this.#Pt;return null==t&&3===this.type?[]:t}set blobVersionedHashes(t){if(null!=t){u(Array.isArray(t),"blobVersionedHashes must be an Array","value",t),t=t.slice();for(let e=0;e<t.length;e++)u(st(t[e],32),"invalid blobVersionedHash",value[${e}],t[e])}this.#Pt=t}get blobs(){return null==this.#Nt?null:this.#Nt.map(t=>Object.assign({},t))}set blobs(t){if(null==t)return void(this.#Nt=null);const e=[],n=[];for(let r=0;r<t.length;r++){const s=t[r];if(it(s)){c(this.#Bt,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let t=nt(s);if(u(t.length<=na,"blob is too large",blobs[${r}],s),t.length!==na){const e=new Uint8Array(na);e.set(t),t=e}const i=this.#Bt.blobToKzgCommitment(t),a=ot(this.#Bt.computeBlobKzgProof(t,i));e.push({data:ot(t),commitment:ot(i),proof:a}),n.push(sa(1,i))}else{const t=ot(s.data),r=ot(s.commitment),i=ot(s.proof);e.push({data:t,commitment:r,proof:i}),n.push(sa(1,r))}}this.#Nt=e,this.#Pt=n}get kzg(){return this.#Bt}set kzg(t){this.#Bt=null==t?null:function(t){return{blobToKzgCommitment:e=>{if("computeBlobProof"in t){if("blobToKzgCommitment"in t&&"function"==typeof t.blobToKzgCommitment)return nt(t.blobToKzgCommitment(ot(e)))}else if("blobToKzgCommitment"in t&&"function"==typeof t.blobToKzgCommitment)return nt(t.blobToKzgCommitment(e));if("blobToKZGCommitment"in t&&"function"==typeof t.blobToKZGCommitment)return nt(t.blobToKZGCommitment(ot(e)));u(!1,"unsupported KZG library","kzg",t)},computeBlobKzgProof:(e,n)=>"computeBlobProof"in t&&"function"==typeof t.computeBlobProof?nt(t.computeBlobProof(ot(e),ot(n))):"computeBlobKzgProof"in t&&"function"==typeof t.computeBlobKzgProof?t.computeBlobKzgProof(e,n):"computeBlobKZGProof"in t&&"function"==typeof t.computeBlobKZGProof?nt(t.computeBlobKZGProof(ot(e),ot(n))):void u(!1,"unsupported KZG library","kzg",t)}}(t)}get blobWrapperVersion(){return this.#Ct}set blobWrapperVersion(t){this.#Ct=t}constructor(){this.#dt=null,this.#pt=null,this.#gt=0,this.#mt=Wi,this.#yt=null,this.#wt=null,this.#bt=null,this.#n="0x",this.#At=Wi,this.#vt=Wi,this.#Et=null,this.#xt=null,this.#kt=null,this.#Pt=null,this.#Bt=null,this.#Nt=null,this.#It=null,this.#Ct=null}get hash(){return null==this.signature?null:mt(this.#Tt(!0,!1))}get unsignedHash(){return mt(this.unsignedSerialized)}get from(){return null==this.signature?null:(t=this.unsignedHash,e=this.signature.getCanonical(),function(t){let e;return e="string"==typeof t?Mi.computePublicKey(t,!1):t.publicKey,ee(mt("0x"+e.substring(4)).substring(26))}(Mi.recoverPublicKey(t,e)));var t,e}get fromPublicKey(){return null==this.signature?null:Mi.recoverPublicKey(this.unsignedHash,this.signature.getCanonical())}isSigned(){return null!=this.signature}#Tt(t,e){c(!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=[ua(t.nonce,"nonce"),ua(t.gasPrice||0,"gasPrice"),ua(t.gasLimit,"gasLimit"),t.to||"0x",ua(t.value,"value"),t.data];let r=Wi;if(t.chainId!=Wi)r=It(t.chainId,"tx.chainId"),u(!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!==Wi&&(n.push(Ft(r)),n.push("0x"),n.push("0x")),_i(n);let s=BigInt(27+e.yParity);return r!==Wi?s=Xr.getChainIdV(r,e.v):BigInt(e.v)!==s&&u(!1,"tx.chainId/sig.v mismatch","sig",e),n.push(Ft(s)),n.push(Ft(e.r)),n.push(Ft(e._s)),_i(n)}(this,n);case 1:return function(t,e){const n=[ua(t.chainId,"chainId"),ua(t.nonce,"nonce"),ua(t.gasPrice||0,"gasPrice"),ua(t.gasLimit,"gasLimit"),t.to||"0x",ua(t.value,"value"),t.data,ha(t.accessList||[])];return e&&(n.push(ua(e.yParity,"recoveryParam")),n.push(Ft(e.r)),n.push(Ft(e.s))),lt(["0x01",_i(n)])}(this,n);case 2:return function(t,e){const n=[ua(t.chainId,"chainId"),ua(t.nonce,"nonce"),ua(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),ua(t.maxFeePerGas||0,"maxFeePerGas"),ua(t.gasLimit,"gasLimit"),t.to||"0x",ua(t.value,"value"),t.data,ha(t.accessList||[])];return e&&(n.push(ua(e.yParity,"yParity")),n.push(Ft(e.r)),n.push(Ft(e.s))),lt(["0x02",_i(n)])}(this,n);case 3:return function(t,e,n){const r=[ua(t.chainId,"chainId"),ua(t.nonce,"nonce"),ua(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),ua(t.maxFeePerGas||0,"maxFeePerGas"),ua(t.gasLimit,"gasLimit"),t.to||ps,ua(t.value,"value"),t.data,ha(t.accessList||[]),ua(t.maxFeePerBlobGas||0,"maxFeePerBlobGas"),fa(t.blobVersionedHashes||[],"blobVersionedHashes")];if(e&&(r.push(ua(e.yParity,"yParity")),r.push(Ft(e.r)),r.push(Ft(e.s)),n)){if(null!=t.blobWrapperVersion){const e=Ft(t.blobWrapperVersion),s=[];for(const{proof:t}of n){const e=nt(t),n=e.length/ra;for(let t=0;t<e.length;t+=n)s.push(e.subarray(t,t+n))}return lt(["0x03",_i([r,e,n.map(t=>t.data),n.map(t=>t.commitment),s])])}return lt(["0x03",_i([r,n.map(t=>t.data),n.map(t=>t.commitment),n.map(t=>t.proof)])])}return lt(["0x03",_i(r)])}(this,n,e?this.blobs:null);case 4:return function(t,e){const n=[ua(t.chainId,"chainId"),ua(t.nonce,"nonce"),ua(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),ua(t.maxFeePerGas||0,"maxFeePerGas"),ua(t.gasLimit,"gasLimit"),t.to||"0x",ua(t.value,"value"),t.data,ha(t.accessList||[]),(r=t.authorizationList||[],r.map(t=>[ua(t.chainId,"chainId"),t.address,ua(t.nonce,"nonce"),ua(t.signature.yParity,"yParity"),Ft(t.signature.r),Ft(t.signature._s)]))];var r;return e&&(n.push(ua(e.yParity,"yParity")),n.push(Ft(e.r)),n.push(Ft(e.s))),lt(["0x04",_i(n)])}(this,n)}c(!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.#kt||this.#Pt;null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&c(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),c(!e||0!==this.type&&1!==this.type,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),c(0!==this.type||!n,"legacy transaction cannot have accessList","BAD_DATA",{value:this});const s=[];return null!=this.type?s.push(this.type):this.authorizationList&&this.authorizationList.length?s.push(4):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 pa.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}}ea{return this.toString()}toString(){const t=[],e=e=>{let n=this[e];"string"==typeof n&&(n=JSON.stringify(n)),t.push(${e}: ${n})};this.type&&e("type"),e("to"),e("data"),e("nonce"),e("gasLimit"),e("value"),null!=this.chainId&&e("chainId"),this.signature&&(e("from"),t.push(signature: ${this.signature.toString()}));const n=this.authorizationList;if(n){const e=[];for(const t of n){const n=[];n.push(address: ${JSON.stringify(t.address)}),null!=t.nonce&&n.push(nonce: ${t.nonce}),null!=t.chainId&&n.push(chainId: ${t.chainId}),t.signature&&n.push(signature: ${t.signature.toString()}),e.push(Authorization { ${n.join(", ")} })}t.push(authorizations: [ ${e.join(", ")} ])}returnTransaction { ${t.join(", ")} }}static from(t){if(null==t)return new pa;if("string"==typeof t){const e=nt(t);if(e[0]>=127)return pa.from(function(t){const e=Ji(t);u(Array.isArray(e)&&(9===e.length||6===e.length),"invalid field count for legacy transaction","data",t);const n={type:0,nonce:la(e[0],"nonce"),gasPrice:ca(e[1],"gasPrice"),gasLimit:ca(e[2],"gasLimit"),to:ia(e[3]),value:ca(e[4],"value"),data:ot(e[5]),chainId:Wi};if(6===e.length)return n;const r=ca(e[6],"v"),s=ca(e[7],"r"),i=ca(e[8],"s");if(s===Wi&&i===Wi)n.chainId=r;else{let t=(r-$i)/Yi;t<Wi&&(t=Wi),n.chainId=t,u(t!==Wi||r===Zi||r===Xi,"non-canonical legacy v","v",e[6]),n.signature=Xr.from({r:ft(e[7],32),s:ft(e[8],32),v:r})}return n}(e));switch(e[0]){case 1:return pa.from(function(t){const e=Ji(nt(t).slice(1));u(Array.isArray(e)&&(8===e.length||11===e.length),"invalid field count for transaction type: 1","data",ot(t));const n={type:1,chainId:ca(e[0],"chainId"),nonce:la(e[1],"nonce"),gasPrice:ca(e[2],"gasPrice"),gasLimit:ca(e[3],"gasLimit"),to:ia(e[4]),value:ca(e[5],"value"),data:ot(e[6]),accessList:aa(e[7],"accessList")};return 8===e.length||da(n,e.slice(8)),n}(e));case 2:return pa.from(function(t){const e=Ji(nt(t).slice(1));u(Array.isArray(e)&&(9===e.length||12===e.length),"invalid field count for transaction type: 2","data",ot(t));const n={type:2,chainId:ca(e[0],"chainId"),nonce:la(e[1],"nonce"),maxPriorityFeePerGas:ca(e[2],"maxPriorityFeePerGas"),maxFeePerGas:ca(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:ca(e[4],"gasLimit"),to:ia(e[5]),value:ca(e[6],"value"),data:ot(e[7]),accessList:aa(e[8],"accessList")};return 9===e.length||da(n,e.slice(9)),n}(e));case 3:return pa.from(function(t){let e=Ji(nt(t).slice(1)),n="3",r=null,s=null;if(4===e.length&&Array.isArray(e[0])){n="3 (network format)";const t=e[1],r=e[2],i=e[3];u(Array.isArray(t),"invalid network format: blobs not an array","fields[1]",t),u(Array.isArray(r),"invalid network format: commitments not an array","fields[2]",r),u(Array.isArray(i),"invalid network format: proofs not an array","fields[3]",i),u(t.length===r.length,"invalid network format: blobs/commitments length mismatch","fields",e),u(t.length===i.length,"invalid network format: blobs/proofs length mismatch","fields",e),s=[];for(let n=0;n<e[1].length;n++)s.push({data:t[n],commitment:r[n],proof:i[n]});e=e[0]}else if(5===e.length&&Array.isArray(e[0])){n="3 (EIP-7594 network format)",r=Ot(e[1]);const t=e[2],i=e[3],a=e[4];u(1===r,unsupported EIP-7594 network format version: ${r},"fields[1]",r),u(Array.isArray(t),"invalid EIP-7594 network format: blobs not an array","fields[2]",t),u(Array.isArray(i),"invalid EIP-7594 network format: commitments not an array","fields[3]",i),u(Array.isArray(a),"invalid EIP-7594 network format: proofs not an array","fields[4]",a),u(t.length===i.length,"invalid network format: blobs/commitments length mismatch","fields",e),u(t.lengthra===a.length,"invalid network format: blobs/proofs length mismatch","fields",e),s=[];for(let e=0;e<t.length;e++){const n=[];for(let t=0;t<ra;t++)n.push(a[era+t]);s.push({data:t[e],commitment:i[e],proof:lt(n)})}e=e[0]}u(Array.isArray(e)&&(11===e.length||14===e.length),invalid field count for transaction type: ${n},"data",ot(t));const i={type:3,chainId:ca(e[0],"chainId"),nonce:la(e[1],"nonce"),maxPriorityFeePerGas:ca(e[2],"maxPriorityFeePerGas"),maxFeePerGas:ca(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:ca(e[4],"gasLimit"),to:ia(e[5]),value:ca(e[6],"value"),data:ot(e[7]),accessList:aa(e[8],"accessList"),maxFeePerBlobGas:ca(e[9],"maxFeePerBlobGas"),blobVersionedHashes:e[10],blobWrapperVersion:r};s&&(i.blobs=s),u(null!=i.to,invalid address for transaction type: ${n},"data",t),u(Array.isArray(i.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",t);for(let e=0;e<i.blobVersionedHashes.length;e++)u(st(i.blobVersionedHashes[e],32),invalid blobVersionedHash at index ${e}: must be length 32,"data",t);return 11===e.length||da(i,e.slice(11)),i}(e));case 4:return pa.from(function(t){const e=Ji(nt(t).slice(1));u(Array.isArray(e)&&(10===e.length||13===e.length),"invalid field count for transaction type: 4","data",ot(t));const n={type:4,chainId:ca(e[0],"chainId"),nonce:la(e[1],"nonce"),maxPriorityFeePerGas:ca(e[2],"maxPriorityFeePerGas"),maxFeePerGas:ca(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:ca(e[4],"gasLimit"),to:ia(e[5]),value:ca(e[6],"value"),data:ot(e[7]),accessList:aa(e[8],"accessList"),authorizationList:oa(e[9],"authorizationList")};return 10===e.length||da(n,e.slice(10)),n}(e))}c(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new pa;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=Xr.from(t.signature)),null!=t.accessList&&(e.accessList=t.accessList),null!=t.authorizationList&&(e.authorizationList=t.authorizationList),null!=t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes),null!=t.kzg&&(e.kzg=t.kzg),null!=t.blobWrapperVersion&&(e.blobWrapperVersion=t.blobWrapperVersion),null!=t.blobs&&(e.blobs=t.blobs),null!=t.hash&&(u(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",t),u(e.hash===t.hash,"hash mismatch","tx",t)),null!=t.from&&(u(e.isSigned(),"unsigned transaction cannot define '.from'","tx",t),u(e.from.toLowerCase()===(t.from||"").toLowerCase(),"from mismatch","tx",t)),e}}const ga=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]);function ma(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 a=n(),o=e;e+=a;let l=0,c=0;function u(){return 0==l&&(c=c<<8|t[e++],l=8),c>>--l&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|u();let m=[],y=0,w=h;for(;;){let t=Math.floor(((g-y+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;m.push(e);let a=y+Math.floor(wi[e]/s),o=y+Math.floor(wi[e+1]/s)-1;for(;0==((a^o)&f);)g=g<<1&p|u(),a=a<<1&p,o=o<<1&p|1;for(;a&~o&d;)g=g&f|g<<1&p>>>1|u(),a=a<<1^f,o=(o^f)<<1|f|1;y=a,w=1+o-a}let b=r-4;return m.map(e=>{switch(e-b){case 3:return b+65792+(t[o++]<<16|t[o++]<<8|t[o++]);case 2:return b+256+(t[o++]<<8|t[o++]);case 1:return b+t[o++];default:return e-1}})}(function(t){let e=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach((t,n)=>e[t.charCodeAt(0)]=n);let n=t.length,r=new Uint8Array(6n>>3);for(let s=0,i=0,a=0,o=0;s<n;s++)o=o<<6|e[t.charCodeAt(s)],a+=6,a>=8&&(r[i++]=o>>(a-=8));return r}(t)))}function ya(t){return 1&t?~t>>1:t>>1}function wa(t,e){let n=Array(t);for(let r=0,s=0;r<t;r++)n[r]=s+=ya(e());return n}function ba(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 Aa(t){return Ea(()=>{let e=ba(t);if(e.length)return e})}function va(t){let e=[];for(;;){let n=t();if(0==n)break;e.push(ka(n,t))}for(;;){let n=t()-1;if(n<0)break;e.push(Pa(n,t))}return e.flat()}function Ea(t){let e=[];for(;;){let n=t(e.length);if(!n)break;e.push(n)}return e}function xa(t,e,n){let r=Array(t).fill().map(()=>[]);for(let s=0;s<e;s++)wa(t,n).forEach((t,e)=>r[e].push(t));return r}function ka(t,e){let n=1+e(),r=e(),s=Ea(e);return xa(s.length,1+t,e).flatMap((t,e)=>{let[i,...a]=t;return Array(s[e]).fill().map((t,e)=>{let s=er;return[i+en,a.map(t=>t+s)]})})}function Pa(t,e){return xa(1+e(),1+t,e).map(t=>[t[0],t.slice(1)])}function Ba(t){return{${function(t){return t.toString(16).toUpperCase().padStart(2,"0")}(t)}}}function Na(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 Ia(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 Ca=44032,Ta=4352,Ra=4449,Oa=4519;function Sa(t){return t>>24&255}function Fa(t){return 16777215&t}let La,Ua,Da,Ga;function Ma(t){return t>=Ca&&t<55204}function Ha(t,e){if(t>=Ta&&t<4371&&e>=Ra&&e<4470)return Ca+588*(t-Ta)+28*(e-Ra);if(Ma(t)&&e>Oa&&e<4547&&(t-Ca)%28==0)return t+(e-Oa);{let n=Ga.get(t);return n&&(n=n.get(e),n)?n:-1}}function Qa(t){La||function(){let t=ma("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");La=new Map(Aa(t).flatMap((t,e)=>t.map(t=>[t,e+1<<24]))),Ua=new Set(ba(t)),Da=new Map,Ga=new Map;for(let[e,n]of va(t)){if(!Ua.has(e)&&2==n.length){let[t,r]=n,s=Ga.get(t);s||(s=new Map,Ga.set(t,s)),s.set(r,e)}Da.set(e,n.reverse())}}();let e=[],n=[],r=!1;function s(t){let n=La.get(t);n&&(r=!0,t|=n),e.push(t)}for(let r of t)for(;;){if(r<128)e.push(r);else if(Ma(r)){let t=r-Ca,e=t%588/28|0,n=t%28;s(Ta+(t/588|0)),s(Ra+e),n>0&&s(Oa+n)}else{let t=Da.get(r);t?n.push(...t):s(r)}if(!n.length)break;r=n.pop()}if(r&&e.length>1){let t=Sa(e[0]);for(let n=1;n<e.length;n++){let r=Sa(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=Sa(e[--s]),t<=r)break}t=Sa(e[n])}}return e}function Va(t){return Qa(t).map(Fa)}function ja(t){return function(t){let e=[],n=[],r=-1,s=0;for(let i of t){let t=Sa(i),a=Fa(i);if(-1==r)0==t?r=a:e.push(a);else if(s>0&&s>=t)0==t?(e.push(r,...n),n.length=0,r=a):n.push(a),s=t;else{let i=Ha(r,a);i>=0?r=i:0==s&&0==t?(e.push(r),r=a):(n.push(a),s=t)}}return r>=0&&e.push(r,...n),e}(Qa(t))}const Ja=t=>Array.from(t);function za(t,e){return t.P.has(e)||t.Q.has(e)}class Ka extends Array{get is_emoji(){return!0}}let qa,_a,Wa,Ya,Za,Xa,$a,to,eo,no,ro,so;function io(){if(qa)return;let t=ma("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");const e=()=>ba(t),n=()=>new Set(e()),r=(t,e)=>e.forEach(e=>t.add(e));qa=new Map(va(t)),_a=n(),Wa=e(),Ya=new Set(e().map(t=>Wa[t])),Wa=new Set(Wa),Za=n(),Xa=n();let s=Aa(t),i=t();const a=()=>{let t=new Set;return e().forEach(e=>r(t,s[e])),r(t,e()),t};$a=Ea(e=>{let n=Ea(t).map(t=>t+96);if(n.length){let r=e>=i;return n[0]-=32,n=Na(n),r&&(n=Restricted[${n}]),{N:n,P:a(),Q:a(),M:!t(),R:r}}}),to=n(),eo=new Map;let o=e().concat(Ja(to)).sort((t,e)=>t-e);o.forEach((e,n)=>{let r=t(),s=o[n]=r?o[n-r]:{V:[],M:new Map};s.V.push(e),to.has(e)||eo.set(e,s)});for(let{V:t,M:e}of new Set(eo.values())){let n=[];for(let e of t){let t=$a.filter(t=>za(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=>Ja(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)}}no=new Set;let l=new Set;const c=t=>no.has(t)?l.add(t):no.add(t);for(let t of $a){for(let e of t.P)c(e);for(let e of t.Q)c(e)}for(let t of no)eo.has(t)||l.has(t)||eo.set(t,1);r(no,Va(no)),ro=function(t){let e=[],n=ba(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:Ea(()=>{let r=ba(t).map(t=>n[t]);if(r.length)return e(r)}),Q:r}}([]),[]),e}(t).map(t=>Ka.from(t)).sort(Ia),so=new Map;for(let t of ro){let e=[so];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 ao(t){return(co(t)?"":${oo(lo([t]))} )+Ba(t)}function oo(t){return"${t}"‎}function lo(t,e=1/0,n=Ba){let r=[];var s;s=t[0],io(),Wa.has(s)&&r.push("◌"),t.length>e&&(e>>=1,t=[...t.slice(0,e),8230,...t.slice(-e)]);let i=0,a=t.length;for(let e=0;e<a;e++){let s=t[e];co(s)&&(r.push(Na(t.slice(i,e))),r.push(n(s)),i=e+1)}return r.push(Na(t.slice(i,a))),r.join("")}function co(t){return io(),Za.has(t)}function uo(t,e,n){if(!t)return[];io();let r=0;return t.split(".").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=[];for(t=t.slice().reverse();t.length;){let i=mo(t);if(i)s.length&&(r.push(e(s)),s=[]),r.push(n(i));else{let e=t.pop();if(no.has(e))s.push(e);else{let t=qa.get(e);if(t)s.push(...t);else if(!_a.has(e))throw ho(e)}}}return s.length&&r.push(e(s)),r}(s,e,n),a=r.length;if(!a)throw new Error("empty label");let o=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")}(o),!(i.emoji=a>1||r[0].is_emoji)&&o.every(t=>t<128))!function(t){if(t.length>=4&&45==t[2]&&45==t[3])throw new Error(invalid label extension: "${Na(t.slice(0,4))}")}(o),t="ASCII";else{let e=r.flatMap(t=>t.is_emoji?[]:t);if(e.length){if(Wa.has(o[0]))throw po("leading combining mark");for(let t=1;t<a;t++){let e=r[t];if(!e.is_emoji&&Wa.has(e[0]))throw po(emoji + combining mark: "${Na(r[t-1])} + ${lo([e[0]])}")}!function(t){let e=t[0],n=ga.get(e);if(n)throw po(leading ${n});let r=t.length,s=-1;for(let i=1;i<r;i++){e=t[i];let r=ga.get(e);if(r){if(s==i)throw po(${n} + ${r});s=i+1,n=r}}if(s==r)throw po(trailing ${n})}(o);let n=Ja(new Set(e)),[s]=function(t){let e=$a;for(let n of t){let t=e.filter(t=>za(t,n));if(!t.length)throw $a.some(t=>za(t,n))?fo(e[0],n):ho(n);if(e=t,1==t.length)break}return e}(n);!function(t,e){for(let n of e)if(!za(t,n))throw fo(t,n);if(t.M){let t=Va(e);for(let e=1,n=t.length;e<n;e++)if(Ya.has(t[e])){let r=e+1;for(let s;r<n&&Ya.has(s=t[r]);r++)for(let n=e;n<r;n++)if(t[n]==s)throw new Error(duplicate non-spacing marks: ${ao(s)});if(r-e>4)throw new Error(excessive non-spacing marks: ${oo(lo(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=eo.get(t);if(1===e)return;if(e){let r=e.M.get(t);if(n=n?n.filter(t=>r.has(t)):Ja(r),!n.length)return}else r.push(t)}if(n)for(let e of n)if(r.every(t=>za(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})}function ho(t){return new Error(disallowed character: ${ao(t)})}function fo(t,e){let n=ao(e),r=$a.find(t=>t.P.has(e));return r&&(n=${r.N} ${n}),new Error(illegal mixture: ${t.N} + ${n})}function po(t){return new Error(illegal placement: ${t})}function go(t){return t.filter(t=>65039!=t)}function mo(t,e){let n,r=so,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 yo=new Uint8Array(32);function wo(t){return u(0!==t.length,"invalid ENS name; empty component","comp",t),t}function bo(t){const e=bt(Ao(t)),n=[];if(0===t.length)return n;let r=0;for(let t=0;t<e.length;t++)46===e[t]&&(n.push(wo(e.slice(r,t))),r=t+1);return u(r<e.length,"invalid ENS name; empty component","name",t),n.push(wo(e.slice(r))),n}function Ao(t){try{if(0===t.length)throw new Error("empty label");return function(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 ${oo(lo(e,63))}: ${r})}return Na(r)}).join(".")}(uo(t,ja,go))}(t)}catch(e){u(!1,invalid ENS name (${e.message}),"name",t)}}function vo(t){try{return 0!==bo(t).length}catch(t){}return!1}function Eo(t){u("string"==typeof t,"invalid ENS name; not a string","name",t),u(t.length,"invalid ENS name (empty label)","name",t);let e=yo;const n=bo(t);for(;n.length;)e=mt(lt([e,mt(n.pop())]));return ot(e)}function xo(t,e){const n=null!=e?e:63;return u(n<=255,"DNS encoded label cannot exceed 255","length",n),ot(lt(bo(t).map(e=>{u(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"}yo.fill(0);const ko="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";BigInt(0);const Po=BigInt(58),Bo=BigInt(60);function No(t){return t.match(/^ipfs://ipfs//i)?t=t.substring(12):t.match(/^ipfs:///i)?t=t.substring(7):u(!1,"unsupported IPFS format","link",t),https://gateway.ipfs.io/ipfs/${t}}class Io{name;constructor(t){s(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 Co=new RegExp("^(ipfs)://(.)$","i"),To=[new RegExp("^(https)://(.)$","i"),new RegExp("^(data):(.)$","i"),Co,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.)$","i")];function Ro(t){return t===Bo||t>=2147483648&&t<=4294967295}class Oo{provider;address;name;#Rt;#Ot;constructor(t,e,n,r){s(this,{provider:t,address:e,name:n}),this.#Rt=null!=r?Promise.resolve(r):null,this.#Ot=new pr(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)","function name(bytes32) view returns (string)"],t)}async supportsWildcard(){return null==this.#Rt&&(this.#Rt=(async()=>{try{return await this.#Ot.supportsInterface("0x9061b923")}catch(t){if(a(t,"CALL_EXCEPTION"))return!1;throw this.#Rt=null,t}})()),await this.#Rt}async#St(t,e){e=(e||[]).slice();const n=this.#Ot.interface;e.unshift(Eo(this.name));let r=null;await this.supportsWildcard()&&(r=n.getFunction(t),c(r,"missing fragment","UNKNOWN_ERROR",{info:{funcName:t}}),e=[xo(this.name,255),n.encodeFunctionData(r,e)],t="resolve(bytes,bytes)"),e.push({enableCcipRead:!0});try{const s=await this.#Ott;return r?n.decodeFunctionResult(r,s)[0]:s}catch(t){if(!a(t,"CALL_EXCEPTION"))throw t}return null}async getAddress(t){const e=null==t?Bo:It(t);if(e===Bo)try{const t=await this.#St("addr(bytes32)");return null==t||t===ps?null:t}catch(t){if(a(t,"CALL_EXCEPTION"))return null;throw t}if(Ro(e)){const t=await this.#St("addr(bytes32,uint)",[e]);return st(t,20)?ee(t):null}if(e>=0&&e<2147483648){let t=e+BigInt(2147483648);const n=await this.#St("addr(bytes32,uint)",[t]);if(st(n,20))return ee(n)}let n=null;for(const t of this.provider.plugins)if(t instanceof Io&&e<=2147483648&&t.supportsCoinType(Number(e))){n=t;break}if(null==n)return null;const r=await this.#St("addr(bytes32,uint)",[e]);if(null==r||"0x"===r)return null;if(e<2147483648){const t=await n.decodeAddress(Number(e),r);if(null!=t)return t}c(!1,"invalid coin data","UNSUPPORTED_OPERATION",{operation:getAddress(${e}),info:{coinType:e,data:r}})}async getText(t){const e=await this.#St("text(bytes32,string)",[t]);return null==e||"0x"===e?null:e}async getContentHash(){const t=await this.#St("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===2n)return${t}://${function(t){const e=nt(t);let n=Rt(e),r="";for(;n;)r=ko[Number(n%Po)]+r,n/=Po;for(let t=0;t<e.length&&!e[t];t++)r=ko[0]+r;return r}("0x"+e[2])}}const n=t.match(/^0xe40101fa011b20([0-9a-f])$/);if(n&&64===n[1].length)returnbzz://${n[1]};c(!1,"invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getName(){return await this.#St("name(bytes32)")}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<To.length;n++){const r=e.match(To[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=No(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 a=(r[2]||"").split("/");if(2!==a.length)return t.push({type:!${s}caip,value:r[2]||""}),{url:null,linkage:t};const o=a[1],l=new pr(a[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 l.ownerOf(o);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 l.balanceOf(i,o);if(!e)return t.push({type:"!balance",value:"0"}),{url:null,linkage:t};t.push({type:"balance",value:e.toString()})}let c=await ln;if(null==c||"0x"===c)return t.push({type:"!metadata-url",value:""}),{url:null,linkage:t};t.push({type:"metadata-url-base",value:c}),"erc1155"===s&&(c=c.replace("{id}",St(o,32).substring(2)),t.push({type:"metadata-url-expanded",value:c})),c.match(/^ipfs:/i)&&(c=No(c)),t.push({type:"metadata-url",value:c});let u={};const h=await new hs(c).send();h.assertOk();try{u=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:ot(n)}),{url:null,linkage:t}}return{url:null,linkage:t}}if(!u)return t.push({type:"!metadata",value:""}),{url:null,linkage:t};t.push({type:"metadata",value:JSON.stringify(u)});let f=u.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(Co))return t.push({type:"!imageUrl-ipfs",value:f}),{url:null,linkage:t};t.push({type:"imageUrl-ipfs",value:f}),f=No(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 c(n,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),n.address}static async getUniversalResolverAddress(t){const e=(await t.getNetwork()).getPlugin("org.ethers.plugins.network.Ens");return e&&e.universalResolver?e.universalResolver:null}static async#Ft(t,e){const n=await Oo.getEnsAddress(t);try{const r=new pr(n,["function resolver(bytes32) view returns (address)"],t),s=await r.resolver(Eo(e),{enableCcipRead:!0});return s===ps?null:s}catch(t){throw t}}static async lookupAddress(t,e,n){const r=null==n?Bo:It(n);Ro(r)&&(e=ee(e));const s=await So(t);if(s)try{const t=(await s.reverse(e,r,{enableCcipRead:!0})).primary;return vo(t)?t:null}catch(t){if(a(t,"CALL_EXCEPTION")&&"ResolverNotFound(bytes)"===t.reason)return null;throw t}c(r===Bo,"lookupAddress coinType requires ENS Universal Resolver","UNSUPPORTED_OPERATION",{operation:"lookupAddress"});try{const n=await Oo.fromName(t,${e.toLowerCase().substring(2)}.addr.reverse);if(!n)return null;const r=await n.getName();return null!=r&&vo(r)?await t.resolveName(r)!==e?null:r:null}catch(t){if(a(t,"BAD_DATA")&&"0x"===t.value)return null;if(a(t,"CALL_EXCEPTION"))return null;throw t}}static async fromName(t,e){const n=await So(t);if(n){let r;try{r=xo(Ao(e),255)}catch(t){return null}const s=await n.requireResolver(r);return new Oo(t,s.resolver,e,s.extended)}let r=e;for(;;){if(""===r||"."===r)return null;if("eth"!==e&&"eth"===r)return null;const n=await Oo.#Ft(t,r);if(null!=n){const s=new Oo(t,n,e);return r===e||await s.supportsWildcard()?s:null}r=r.split(".").slice(1).join(".")}}}async function So(t){const e=await Oo.getUniversalResolverAddress(t);return e?new pr(e,["function requireResolver(bytes) view returns ((bytes name, uint256 offset, bytes32 node, address resolver, bool extended))","function findResolver(bytes) view returns (address resolver, bytes32 node, uint offset)","function resolve(bytes name, bytes data) view returns (bytes result, address resolver)","function reverse(bytes name, uint coinType) view returns (string primary, address resolver, address reverseResolver)","error ResolverNotFound(bytes name)","error ResolverNotContract(bytes name, address resolver)","error ReverseAddressMismatch(string primary, bytes primaryAddress)","error HttpError(uint16 statusCode, string statusMessage)"],t):null}const Fo=BigInt(0);function Lo(t,e){return function(n){return null==n?e:t(n)}}function Uo(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 Do(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=ts;void 0!==e&&(r[s]=e)}catch(t){c(!1,invalid value for value.${s} (${t instanceof Error?t.message:"not-an-error"}),"BAD_DATA",{value:n})}}return r}}function Go(t){return u(st(t,!0),"invalid data","value",t),t}function Mo(t){return u(st(t,32),"invalid hash","value",t),t}const Ho=Do({address:ee,blockHash:Mo,blockNumber:Ot,data:Go,index:Ot,removed:Lo(function(t){switch(t){case!0:case"true":return!0;case!1:case"false":return!1}u(!1,invalid boolean; ${JSON.stringify(t)},"value",t)},!1),topics:Uo(Mo),transactionHash:Mo,transactionIndex:Ot},{index:["logIndex"]}),Qo=Do({hash:Lo(Mo),parentHash:Mo,parentBeaconBlockRoot:Lo(Mo,null),number:Ot,timestamp:Ot,nonce:Lo(Go),difficulty:It,gasLimit:It,gasUsed:It,stateRoot:Lo(Mo,null),receiptsRoot:Lo(Mo,null),transactionsRoot:Lo(Mo,null),blobGasUsed:Lo(It,null),excessBlobGas:Lo(It,null),miner:Lo(ee),prevRandao:Lo(Mo,null),extraData:Go,baseFeePerGas:Lo(It)},{prevRandao:["mixHash"]}),Vo=Do({transactionIndex:Ot,blockNumber:Ot,transactionHash:Mo,address:ee,topics:Uo(Mo),data:Go,index:Ot,blockHash:Mo},{index:["logIndex"]}),jo=Do({to:Lo(ee,null),from:Lo(ee,null),contractAddress:Lo(ee,null),index:Ot,root:Lo(ot),gasUsed:It,blobGasUsed:Lo(It,null),logsBloom:Lo(Go),blockHash:Mo,hash:Mo,logs:Uo(function(t){return Vo(t)}),blockNumber:Ot,cumulativeGasUsed:It,effectiveGasPrice:Lo(It),blobGasPrice:Lo(It,null),status:Lo(Ot),type:Lo(Ot,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function Jo(t){t.to&&It(t.to)===Fo&&(t.to="0x0000000000000000000000000000000000000000");const e=Do({hash:Mo,index:Lo(Ot,void 0),type:t=>"0x"===t||null==t?0:Ot(t),accessList:Lo(In,null),blobVersionedHashes:Lo(Uo(Mo,!0),null),authorizationList:Lo(Uo(t=>{let e;if(t.signature)e=t.signature;else{let n=t.yParity;"0x1b"===n?n=0:"0x1c"===n&&(n=1),e=Object.assign({},t,{yParity:n})}return{address:ee(t.address),chainId:It(t.chainId),nonce:It(t.nonce),signature:Xr.from(e)}},!1),null),blockHash:Lo(Mo,null),blockNumber:Lo(Ot,null),transactionIndex:Lo(Ot,null),from:ee,gasPrice:Lo(It),maxPriorityFeePerGas:Lo(It),maxFeePerGas:Lo(It),maxFeePerBlobGas:Lo(It,null),gasLimit:It,to:Lo(ee,null),value:It,nonce:Ot,data:Go,creates:Lo(ee,null),chainId:Lo(It,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(t);if(null==e.to&&null==e.creates&&(e.creates=function(t){const e=ee(t.from);let n=It(t.nonce,"tx.nonce").toString(16);return n="0"===n?"0x":n.length%2?"0x0"+n:"0x"+n,ee(ut(mt(_i([e,n])),12))}(e)),1!==t.type&&2!==t.type||null!=t.accessList||(e.accessList=[]),t.signature?e.signature=Xr.from(t.signature):e.signature=Xr.from(t),null==e.chainId){const t=e.signature.legacyChainId;null!=t&&(e.chainId=t)}return e.blockHash&&It(e.blockHash)===Fo&&(e.blockHash=null),e}const zo=Symbol.for("nodejs.util.inspect.custom");class Ko{name;constructor(t){s(this,{name:t})}zo{return this.toString()}toString(){return${this.name} { }}clone(){return new Ko(this.name)}}class qo extends Ko{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),u("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),s(this,n)}toString(){return${this.name} { txBase: ${this.txBase}, txCreate: ${this.txCreate}, txDataZero: ${this.txDataZero}, txAccessListStorageKey: ${this.txAccessListStorageKey}, txAccessListAddress: ${this.txAccessListAddress} }}clone(){return new qo(this.effectiveBlock,this)}}class _o extends Ko{address;targetNetwork;universalResolver;constructor(t,e,n){super("org.ethers.plugins.network.Ens"),s(this,{address:t||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:e??1,universalResolver:n})}toString(){return${this.name} { address: ${this.address}, targetNetwork: ${this.targetNetwork}, universalResolver: ${this.universalResolver} }}clone(){return new _o(this.address,this.targetNetwork,this.universalResolver)}}class Wo extends Ko{#Z;#Lt;get url(){return this.#Z}get processFunc(){return this.#Lt}constructor(t,e){super("org.ethers.plugins.network.FetchUrlFeeDataPlugin"),this.#Z=t,this.#Lt=e}toString(){return${this.name} { url: ${this.url} }}clone(){return this}}const Yo=Symbol.for("nodejs.util.inspect.custom"),Zo=new Map;class Xo{#Ut;#vt;#Dt;constructor(t,e){this.#Ut=t,this.#vt=It(e),this.#Dt=new Map}Yo{return this.toString()}toString(){const t=[];for(const e of this.#Dt.values())t.push(e.toString());returnNetwork { name: ${this.name}, chainId: ${this.chainId}, plugins: [ ${t.join(", ")} ] }}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#Ut}set name(t){this.#Ut=t}get chainId(){return this.#vt}set chainId(t){this.#vt=It(t,"chainId")}matches(t){if(null==t)return!1;if("string"==typeof t){try{return this.chainId===It(t)}catch(t){}return this.name===t}if("number"==typeof t||"bigint"==typeof t){try{return this.chainId===It(t)}catch(t){}return!1}if("object"==typeof t){if(null!=t.chainId){try{return this.chainId===It(t.chainId)}catch(t){}return!1}return null!=t.name&&this.name===t.name}return!1}get plugins(){return Array.from(this.#Dt.values())}attachPlugin(t){if(this.#Dt.get(t.name))throw new Error(cannot replace existing plugin: ${t.name} );return this.#Dt.set(t.name,t.clone()),this}getPlugin(t){return this.#Dt.get(t)||null}getPlugins(t){return this.plugins.filter(e=>e.name.split("#")[0]===t)}clone(){const t=new Xo(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 qo;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=In(t.accessList);for(const t in r)n+=e.txAccessListAddress+e.txAccessListStorageKeyr[t].storageKeys.length}return n}static from(t){if(function(){if(el)return;function t(t,e,n){const r=function(){const r=new Xo(t,e);return null!=n.ensNetwork&&r.attachPlugin(new _o(null,n.ensNetwork,n.ensUniversalResolver)),r.attachPlugin(new qo),(n.plugins||[]).forEach(t=>{r.attachPlugin(t)}),r};Xo.register(t,r),Xo.register(e,r),n.altNames&&n.altNames.forEach(t=>{Xo.register(t,r)})}el=!0;const e="0xeEeEEEeE14D718C2B47D9923Deab1335E144EeEe";t("mainnet",1,{ensUniversalResolver:e,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,{ensUniversalResolver:e,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("filecoin",314,{}),t("filecoin-calibration",314159,{}),t("linea",59144,{ensNetwork:1}),t("linea-goerli",59140,{}),t("linea-sepolia",59141,{}),t("matic",137,{ensNetwork:1,plugins:[tl("https://gasstation.polygon.technology/v2")]}),t("matic-amoy",80002,{}),t("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[tl("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 Xo.from("mainnet");if("number"==typeof t&&(t=BigInt(t)),"string"==typeof t||"bigint"==typeof t){const e=Zo.get(t);if(e)return e();if("bigint"==typeof t)return new Xo("unknown",t);u(!1,"unknown network","network",t)}if("function"==typeof t.clone)return t.clone();if("object"==typeof t){u("string"==typeof t.name&&"number"==typeof t.chainId,"invalid network object name or chainId","network",t);const e=new Xo(t.name,t.chainId),n=t;return(n.ensAddress||null!=n.ensNetwork||n.ensUniversalResolver)&&e.attachPlugin(new _o(n.ensAddress,n.ensNetwork,n.ensUniversalResolver)),e}u(!1,"invalid network","network",t)}static register(t,e){"number"==typeof t&&(t=BigInt(t));const n=Zo.get(t);n&&u(!1,conflicting network for ${JSON.stringify(n.name)},"nameOrChainId",t),Zo.set(t,e)}}function $o(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 tl(t){return new Wo(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:$o(i.maxFee,9),maxPriorityFeePerGas:$o(i.maxPriorityFee,9)}}catch(t){c(!1,error encountered with polygon gas station (${JSON.stringify(n.url)}),"SERVER_ERROR",{request:n,response:r,error:t})}})}let el=!1;function nl(t){return JSON.parse(JSON.stringify(t))}class rl{#Gt;#Mt;#Ht;#Qt;constructor(t){this.#Gt=t,this.#Mt=null,this.#Ht=4e3,this.#Qt=-2}get pollingInterval(){return this.#Ht}set pollingInterval(t){this.#Ht=t}async#Vt(){try{const t=await this.#Gt.getBlockNumber();if(-2===this.#Qt)return void(this.#Qt=t);if(t!==this.#Qt){for(let e=this.#Qt+1;e<=t;e++){if(null==this.#Mt)return;await this.#Gt.emit("block",e)}this.#Qt=t}}catch(t){}null!=this.#Mt&&(this.#Mt=this.#Gt._setTimeout(this.#Vt.bind(this),this.#Ht))}start(){this.#Mt||(this.#Mt=this.#Gt._setTimeout(this.#Vt.bind(this),this.#Ht),this.#Vt())}stop(){this.#Mt&&(this.#Gt._clearTimeout(this.#Mt),this.#Mt=null)}pause(t){this.stop(),t&&(this.#Qt=-2)}resume(){this.start()}}class sl{#Gt;#Vt;#jt;constructor(t){this.#Gt=t,this.#jt=!1,this.#Vt=t=>{this._poll(t,this.#Gt)}}async _poll(t,e){throw new Error("sub-classes must override this")}start(){this.#jt||(this.#jt=!0,this.#Vt(-2),this.#Gt.on("block",this.#Vt))}stop(){this.#jt&&(this.#jt=!1,this.#Gt.off("block",this.#Vt))}pause(t){this.stop()}resume(){this.start()}}class il extends sl{#Jt;#zt;constructor(t,e){super(t),this.#Jt=e,this.#zt=-2}pause(t){t&&(this.#zt=-2),super.pause(t)}async _poll(t,e){const n=await e.getBlock(this.#Jt);null!=n&&(-2===this.#zt?this.#zt=n.number:n.number>this.#zt&&(e.emit(this.#Jt,n.number),this.#zt=n.number))}}class al extends sl{#B;constructor(t,e){super(t),this.#B=nl(e)}async _poll(t,e){throw new Error("@TODO")}}class ol extends sl{#Kt;constructor(t,e){super(t),this.#Kt=e}async _poll(t,e){const n=await e.getTransactionReceipt(this.#Kt);n&&e.emit(this.#Kt,n)}}class ll{#Gt;#B;#Mt;#jt;#Qt;constructor(t,e){this.#Gt=t,this.#B=nl(e),this.#Mt=this.#Vt.bind(this),this.#jt=!1,this.#Qt=-2}async#Vt(t){if(-2===this.#Qt)return;const e=nl(this.#B);e.fromBlock=this.#Qt+1,e.toBlock=t;const n=await this.#Gt.getLogs(e);if(0!==n.length)for(const t of n)this.#Gt.emit(this.#B,t),this.#Qt=t.blockNumber;else this.#Qt<t-60&&(this.#Qt=t-60)}start(){this.#jt||(this.#jt=!0,-2===this.#Qt&&this.#Gt.getBlockNumber().then(t=>{this.#Qt=t}),this.#Gt.on("block",this.#Mt))}stop(){this.#jt&&(this.#jt=!1,this.#Gt.off("block",this.#Mt))}pause(t){this.stop(),t&&(this.#Qt=-2)}resume(){this.start()}}const cl=BigInt(2);function ul(t){return new Promise(e=>{setTimeout(e,t)})}function hl(t){return t&&"function"==typeof t.then}function fl(t,e){return t+":"+JSON.stringify(e,(t,e)=>{if(null==e)return"null";if("bigint"==typeof e)returnbigint:${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 dl{name;constructor(t){s(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function pl(t){return(t=Array.from(new Set(t).values())).sort(),t}async function gl(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(st(t,32)){const e=t.toLowerCase();return{type:"transaction",tag:fl("tx",{hash:e}),hash:e}}if(t.orphan){const e=t;return{type:"orphan",tag:fl("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)?pl(t.map(t=>t.toLowerCase())):t.toLowerCase())};if(n.address){const t=[],s=[],i=n=>{st(n)?t.push(n):s.push((async()=>{t.push(await Bn(n,e))})())};Array.isArray(n.address)?n.address.forEach(i):i(n.address),s.length&&await Promise.all(s),r.address=pl(t.map(t=>t.toLowerCase()))}return{filter:r,tag:fl("event",r),type:"event"}}u(!1,"unknown ProviderEvent","event",t)}function ml(){return(new Date).getTime()}const yl={cacheTimeout:250,pollingInterval:4e3};class wl{#qt;#Dt;#_t;#Wt;#Yt;#Zt;#Xt;#$t;#te;#ee;#ne;#re;#se;#t;constructor(t,e){if(this.#t=Object.assign({},yl,e||{}),"any"===t)this.#Zt=!0,this.#Yt=null;else if(t){const e=Xo.from(t);this.#Zt=!1,this.#Yt=Promise.resolve(e),setTimeout(()=>{this.emit("network",e,null)},0)}else this.#Zt=!1,this.#Yt=null;this.#$t=-1,this.#Xt=new Map,this.#qt=new Map,this.#Dt=new Map,this.#_t=null,this.#Wt=!1,this.#te=1,this.#ee=new Map,this.#ne=!1,this.#re=0,this.#se=[]}get _requestRate(){const t=this.#re;return 0==t?null:t}set _requestRate(t){(null==t||t<0)&&(t=0),this.#re=Ot(t)}get pollingInterval(){return this.#t.pollingInterval}get provider(){return this}get plugins(){return Array.from(this.#Dt.values())}attachPlugin(t){if(this.#Dt.get(t.name))throw new Error(cannot replace existing plugin: ${t.name} );return this.#Dt.set(t.name,t.connect(this)),this}getPlugin(t){return this.#Dt.get(t)||null}get disableCcipRead(){return this.#ne}set disableCcipRead(t){this.#ne=!!t}#ie(){let t=this.#re;if(0===t)return 0;const e=this.#se,n=ml();e.push(n);const r=n-1e3;for(;e.length&&e[0]<r;)e.shift();return e.length<t?0:e[0]+1e3-n}async#ae(t){const e=this.#t.cacheTimeout;if(e<0){const e=this.#ie();return e&&await ul(e),await this._perform(t)}const n=fl(t.method,t);let r=this.#Xt.get(n);if(!r){const s=this.#ie();s&&await ul(s),r=this._perform(t),this.#Xt.set(n,r),setTimeout(()=>{this.#Xt.get(n)===r&&this.#Xt.delete(n)},e)}return 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 a=n[e],o=a.replace("{sender}",r).replace("{data}",s),l=new hs(o);-1===a.indexOf("{data}")&&(l.body={data:s,sender:r}),this.emit("debug",{action:"sendCcipReadFetchRequest",request:l,index:e,urls:n});let u,h="unknown error";try{u=await l.send()}catch(t){i.push(t.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:l,result:{error:t}});continue}try{const t=u.bodyJson;if(t.data)return this.emit("debug",{action:"receiveCcipReadFetchResult",request:l,result:t}),t.data;t.message&&(h=t.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:l,result:t})}catch(t){}c(u.statusCode<400||u.statusCode>=500,response not found during CCIP fetch: ${h},"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:a,errorMessage:h}}),i.push(h)}c(!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 Fn(function(t){const e=Qo(t);return e.transactions=t.transactions.map(t=>"string"==typeof t?t:Jo(t)),e}(t),this)}_wrapLog(t,e){return new Ln(function(t){return Ho(t)}(t),this)}_wrapTransactionReceipt(t,e){return new Un(function(t){return jo(t)}(t),this)}_wrapTransactionResponse(t,e){return new Dn(Jo(t),this)}_detectNetwork(){c(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){c(!1,unsupported method: ${t.method},"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){const t=Ot(await this.#ae({method:"getBlockNumber"}),"%response");return this.#$t>=0&&(this.#$t=t),t}_getAddress(t){return Bn(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 st(t)?st(t,32)?t:Lt(t):("bigint"==typeof t&&(t=Ot(t,"blockTag")),"number"==typeof t?t>=0?Lt(t):this.#$t>=0?Lt(this.#$t+t):this.getBlockNumber().then(e=>Lt(e+t)):void u(!1,"invalid blockTag","blockTag",t))}_getFilter(t){const e=(t.topics||[]).map(t=>null==t?null:Array.isArray(t)?pl(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 a={};return i&&(a.address=i),e.length&&(a.topics=e),r&&(a.fromBlock=r),s&&(a.toBlock=s),n&&(a.blockHash=n),a};let s,i,a=[];if(t.address)if(Array.isArray(t.address))for(const e of t.address)a.push(this._getAddress(e));else a.push(this._getAddress(t.address));return"fromBlock"in t&&(s=this._getBlockTag(t.fromBlock)),"toBlock"in t&&(i=this._getBlockTag(t.toBlock)),a.filter(t=>"string"!=typeof t).length||null!=s&&"string"!=typeof s||null!=i&&"string"!=typeof i?Promise.all([Promise.all(a),s,i]).then(t=>r(t[0],t[1],t[2])):r(a,s,i)}_getTransactionRequest(t){const e=Sn(t),n=[];if(["to","from"].forEach(t=>{if(null==e[t])return;const r=Bn(e[t],this);hl(r)?n.push(async function(){e[t]=await r}()):e[t]=r}),null!=e.blockTag){const t=this._getBlockTag(e.blockTag);hl(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.#Yt){const t=(async()=>{try{const t=await this._detectNetwork();return this.emit("network",t,null),t}catch(e){throw this.#Yt===t&&(this.#Yt=null),e}})();return this.#Yt=t,(await t).clone()}const t=this.#Yt,[e,n]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==n.chainId&&(this.#Zt?(this.emit("network",n,e),this.#Yt===t&&(this.#Yt=Promise.resolve(n))):c(!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:s}=await r({_block:this.#oe("latest",!1),gasPrice:(async()=>{try{return It(await this.#ae({method:"getGasPrice"}),"%response")}catch(t){}return null})(),priorityFee:(async()=>{try{return It(await this.#ae({method:"getPriorityFee"}),"%response")}catch(t){}return null})()});let i=null,a=null;const o=this._wrapBlock(e,t);return o&&o.baseFeePerGas&&(a=null!=s?s:BigInt("1000000000"),i=o.baseFeePerGascl+a),new On(n,i,a)},n=t.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(n){const t=new hs(n.url),r=await n.processFunc(e,this,t);return new On(r.gasPrice,r.maxFeePerGas,r.maxPriorityFeePerGas)}return await e()}async estimateGas(t){let e=this._getTransactionRequest(t);return hl(e)&&(e=await e),It(await this.#ae({method:"estimateGas",transaction:e}),"%response")}async#le(t,e,n){c(n<10,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},t,{blockTag:e,enableCcipRead:!0})});const r=Sn(t);try{const t=this.#ie();return t&&await ul(t),ot(await this._perform({method:"call",transaction:r,blockTag:e}))}catch(t){if(!this.disableCcipRead&&o(t)&&t.data&&n>=0&&"latest"===e&&null!=r.to&&"0x556f1830"===ut(t.data,0,4)){const s=t.data,i=await Bn(r.to,this);let a;try{a=function(t){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};c(ct(t)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const n=ut(t,0,32);c(ut(n,0,12)===ut(Pl,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),e.sender=ut(n,12);try{const n=[],r=Ot(ut(t,32,64)),s=Ot(ut(t,r,r+32)),i=ut(t,r+32);for(let t=0;t<s;t++){const e=bl(i,32t);if(null==e)throw new Error("abort");n.push(e)}e.urls=n}catch(t){c(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const n=Al(t,64);if(null==n)throw new Error("abort");e.calldata=n}catch(t){c(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}c(ut(t,100,128)===ut(Pl,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),e.selector=ut(t,96,100);try{const n=Al(t,128);if(null==n)throw new Error("abort");e.extraData=n}catch(t){c(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return e.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map(t=>e[t]),e}(ut(t.data,4))}catch(t){c(!1,t.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:r,info:{data:s}})}c(a.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:a.errorArgs}});const o=await this.ccipReadFetch(r,a.calldata,a.urls);c(null!=o,"CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:r,info:{data:t.data,errorArgs:a.errorArgs}});const l={to:i,data:lt([a.selector,kl([o,a.extraData])])};this.emit("debug",{action:"sendCcipReadCall",transaction:l});try{const t=await this.#le(l,e,n+1);return this.emit("debug",{action:"receiveCcipReadCallResult",transaction:Object.assign({},l),result:t}),t}catch(t){throw this.emit("debug",{action:"receiveCcipReadCallError",transaction:Object.assign({},l),error:t}),t}}throw t}}async#ce(t){const{value:e}=await r({network:this.getNetwork(),value:t});return e}async call(t){const{tx:e,blockTag:n}=await r({tx:this._getTransactionRequest(t),blockTag:this._getBlockTag(t.blockTag)});return await this.#ce(this.#le(e,n,t.enableCcipRead?0:-1))}async#ue(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.#ce(this.#ae(Object.assign(t,{address:r,blockTag:s})))}async getBalance(t,e){return It(await this.#ue({method:"getBalance"},t,e),"%response")}async getTransactionCount(t,e){return Ot(await this.#ue({method:"getTransactionCount"},t,e),"%response")}async getCode(t,e){return ot(await this.#ue({method:"getCode"},t,e))}async getStorage(t,e,n){const r=It(e,"position");return ot(await this.#ue({method:"getStorage",position:r},t,n))}async broadcastTransaction(t){const{blockNumber:e,hash:n,network:s}=await r({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:t}),network:this.getNetwork()}),i=pa.from(t);if(i.hash!==n)throw new Error("@TODO: the returned hash did not match");return this._wrapTransactionResponse(i,s).replaceableTransaction(e)}async#oe(t,e){if(st(t,32))return await this.#ae({method:"getBlock",blockHash:t,includeTransactions:e});let n=this._getBlockTag(t);return"string"!=typeof n&&(n=await n),await this.#ae({method:"getBlock",blockTag:n,includeTransactions:e})}async getBlock(t,e){const{network:n,params:s}=await r({network:this.getNetwork(),params:this.#oe(t,!!e)});return null==s?null:this._wrapBlock(s,n)}async getTransaction(t){const{network:e,params:n}=await r({network:this.getNetwork(),params:this.#ae({method:"getTransaction",hash:t})});return null==n?null:this._wrapTransactionResponse(n,e)}async getTransactionReceipt(t){const{network:e,params:n}=await r({network:this.getNetwork(),params:this.#ae({method:"getTransactionReceipt",hash:t})});if(null==n)return null;if(null==n.gasPrice&&null==n.effectiveGasPrice){const e=await this.#ae({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 r({network:this.getNetwork(),result:this.#ae({method:"getTransactionResult",hash:t})});return null==e?null:ot(e)}async getLogs(t){let e=this._getFilter(t);hl(e)&&(e=await e);const{network:n,params:s}=await r({network:this.getNetwork(),params:this.#ae({method:"getLogs",filter:e})});return s.map(t=>this._wrapLog(t,n))}_getProvider(t){c(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await Oo.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t,e){const n=await this.getResolver(t);return n?await n.getAddress(e):null}async lookupAddress(t,e){return await Oo.lookupAddress(this,t,e)}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 a=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",a)};null!=n&&(i=setTimeout(()=>{null!=i&&(i=null,this.off("block",a),s(l("timeout","TIMEOUT",{reason:"timeout"})))},n)),a(await this.getBlockNumber())})}async waitForBlock(t){c(!1,"not implemented yet","NOT_IMPLEMENTED",{operation:"waitForBlock"})}_clearTimeout(t){const e=this.#ee.get(t);e&&(e.timer&&clearTimeout(e.timer),this.#ee.delete(t))}_setTimeout(t,e){null==e&&(e=0);const n=this.#te++,r=()=>{this.#ee.delete(n),t()};if(this.paused)this.#ee.set(n,{timer:null,func:r,time:e});else{const t=setTimeout(r,e);this.#ee.set(n,{timer:t,func:r,time:ml()})}return n}_forEachSubscriber(t){for(const e of this.#qt.values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"error":case"network":return new dl(t.type);case"block":{const t=new rl(this);return t.pollingInterval=this.pollingInterval,t}case"safe":case"finalized":return new il(this,t.type);case"event":return new ll(this,t.filter);case"transaction":return new ol(this,t.hash);case"orphan":return new al(this,t.filter)}throw new Error(unsupported event: ${t.type})}_recoverSubscriber(t,e){for(const n of this.#qt.values())if(n.subscriber===t){n.started&&n.subscriber.stop(),n.subscriber=e,n.started&&e.start(),null!=this.#_t&&e.pause(this.#_t);break}}async#he(t,e){let n=await gl(t,this);return"event"===n.type&&e&&e.length>0&&!0===e[0].removed&&(n=await gl({orphan:"drop-log",log:e[0]},this)),this.#qt.get(n.tag)||null}async#fe(t){const e=await gl(t,this),n=e.tag;let r=this.#qt.get(n);return r||(r={subscriber:this._getSubscriber(e),tag:n,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},this.#qt.set(n,r)),r}async on(t,e){const n=await this.#fe(t);return n.listeners.push({listener:e,once:!1}),n.started||(n.subscriber.start(),n.started=!0,null!=this.#_t&&n.subscriber.pause(this.#_t)),this}async once(t,e){const n=await this.#fe(t);return n.listeners.push({listener:e,once:!0}),n.started||(n.subscriber.start(),n.started=!0,null!=this.#_t&&n.subscriber.pause(this.#_t)),this}async emit(t,...e){const n=await this.#he(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 Hn(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.#qt.delete(n.tag)),r>0}async listenerCount(t){if(t){const e=await this.#he(t);return e?e.listeners.length:0}let e=0;for(const{listeners:t}of this.#qt.values())e+=t.length;return e}async listeners(t){if(t){const e=await this.#he(t);return e?e.listeners.map(({listener:t})=>t):[]}let e=[];for(const{listeners:t}of this.#qt.values())e=e.concat(t.map(({listener:t})=>t));return e}async off(t,e){const n=await this.#he(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.#qt.delete(n.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:n,subscriber:r}=await this.#fe(t);n&&r.stop(),this.#qt.delete(e)}else for(const[t,{started:e,subscriber:n}]of this.#qt)e&&n.stop(),this.#qt.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.#Wt}destroy(){this.removeAllListeners();for(const t of this.#ee.keys())this._clearTimeout(t);this.#Wt=!0}get paused(){return null!=this.#_t}set paused(t){!!t!==this.paused&&(this.paused?this.resume():this.pause(!1))}pause(t){if(this.#$t=-1,null!=this.#_t){if(this.#_t==!!t)return;c(!1,"cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber(e=>e.pause(t)),this.#_t=!!t;for(const t of this.#ee.values())t.timer&&clearTimeout(t.timer),t.time=ml()-t.time}resume(){if(null!=this.#_t){this._forEachSubscriber(t=>t.resume()),this.#_t=null;for(const t of this.#ee.values()){let e=t.time;e<0&&(e=0),t.time=ml(),setTimeout(t.func,e)}}}}function bl(t,e){try{const n=Al(t,e);if(n)return At(n)}catch(t){}return null}function Al(t,e){if("0x"===t)return null;try{const n=Ot(ut(t,e,e+32)),r=Ot(ut(t,n,n+32));return ut(t,n+32,n+32+r)}catch(t){}return null}function vl(t){const e=Ft(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 El(t){if(t.length%32==0)return t;const e=new Uint8Array(32Math.ceil(t.length/32));return e.set(t),e}const xl=new Uint8Array([]);function kl(t){const e=[];let n=0;for(let r=0;r<t.length;r++)e.push(xl),n+=32;for(let r=0;r<t.length;r++){const s=nt(t[r]);e[r]=vl(n),e.push(vl(s.length)),e.push(El(s)),n+=32+32Math.ceil(s.length/32)}return lt(e)}const Pl="0x0000000000000000000000000000000000000000000000000000000000000000";function Bl(t,e){if(t.provider)return t.provider;c(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:e})}async function Nl(t,e){let n=Sn(e);if(null!=n.to&&(n.to=Bn(n.to,t)),null!=n.from){const e=n.from;n.from=Promise.all([t.getAddress(),Bn(e,t)]).then(([t,e])=>(u(t.toLowerCase()===e.toLowerCase(),"transaction from mismatch","tx.from",e),t))}else n.from=t.getAddress();return await r(n)}class Il{provider;constructor(t){s(this,{provider:t||null})}async getNonce(t){return Bl(this,"getTransactionCount").getTransactionCount(await this.getAddress(),t)}async populateCall(t){return await Nl(this,t)}async populateTransaction(t){const e=Bl(this,"populateTransaction"),n=await Nl(this,t);null==n.nonce&&(n.nonce=await this.getNonce("pending")),null==n.gasLimit&&(n.gasLimit=await this.estimateGas(n));const s=await this.provider.getNetwork();null!=n.chainId?u(It(n.chainId)===s.chainId,"transaction chainId mismatch","tx.chainId",t.chainId):n.chainId=s.chainId;const i=null!=n.maxFeePerGas||null!=n.maxPriorityFeePerGas;if(null==n.gasPrice||2!==n.type&&!i?0!==n.type&&1!==n.type||!i||u(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",t):u(!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();c(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.authorizationList&&n.authorizationList.length?n.type=4: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?(c(!i,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),null==n.gasPrice&&(n.gasPrice=t.gasPrice),n.type=0):c(!1,"failed to get consistent fee data","UNSUPPORTED_OPERATION",{operation:"signer.getFeeData"});else 2!==n.type&&3!==n.type&&4!==n.type||(null==n.maxFeePerGas&&(n.maxFeePerGas=t.maxFeePerGas),null==n.maxPriorityFeePerGas&&(n.maxPriorityFeePerGas=t.maxPriorityFeePerGas))}else n.type=2;return await r(n)}async populateAuthorization(t){const e=Object.assign({},t);return null==e.chainId&&(e.chainId=(await Bl(this,"getNetwork").getNetwork()).chainId),null==e.nonce&&(e.nonce=await this.getNonce()),e}async estimateGas(t){return Bl(this,"estimateGas").estimateGas(await this.populateCall(t))}async call(t){return Bl(this,"call").call(await this.populateCall(t))}async resolveName(t){const e=Bl(this,"resolveName");return await e.resolveName(t)}async sendTransaction(t){const e=Bl(this,"sendTransaction"),n=await this.populateTransaction(t);delete n.from;const r=pa.from(n);return await e.broadcastTransaction(await this.signTransaction(r))}authorize(t){c(!1,"authorization not implemented for this signer","UNSUPPORTED_OPERATION",{operation:"authorize"})}}class Cl{#Gt;#de;#Mt;#jt;#pe;#ge;constructor(t){this.#Gt=t,this.#de=null,this.#Mt=this.#Vt.bind(this),this.#jt=!1,this.#pe=null,this.#ge=!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#Vt(t){try{null==this.#de&&(this.#de=this._subscribe(this.#Gt));let t=null;try{t=await this.#de}catch(t){if(!a(t,"UNSUPPORTED_OPERATION")||"eth_newFilter"!==t.operation)throw t}if(null==t)return this.#de=null,void this.#Gt._recoverSubscriber(this,this._recover(this.#Gt));const e=await this.#Gt.getNetwork();if(this.#pe||(this.#pe=e),this.#pe.chainId!==e.chainId)throw new Error("chaid changed");if(this.#ge)return;const n=await this.#Gt.send("eth_getFilterChanges",[t]);await this._emitResults(this.#Gt,n)}catch(t){console.log("@TODO",t)}this.#Gt.once("block",this.#Mt)}#me(){const t=this.#de;t&&(this.#de=null,t.then(t=>{this.#Gt.destroyed||this.#Gt.send("eth_uninstallFilter",[t])}))}start(){this.#jt||(this.#jt=!0,this.#Vt(-2))}stop(){this.#jt&&(this.#jt=!1,this.#ge=!0,this.#me(),this.#Gt.off("block",this.#Mt))}pause(t){t&&this.#me(),this.#Gt.off("block",this.#Mt)}resume(){this.start()}}class Tl extends Cl{#ye;constructor(t,e){var n;super(t),this.#ye=(n=e,JSON.parse(JSON.stringify(n)))}_recover(t){return new ll(t,this.#ye)}async _subscribe(t){return await t.send("eth_newFilter",[this.#ye])}async _emitResults(t,e){for(const n of e)t.emit(this.#ye,t._wrapLog(n,t._network))}}class Rl extends Cl{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){for(const n of e)t.emit("pending",n)}}const Ol="bigint,boolean,function,number,string,symbol".split(/,/g);function Sl(t){if(null==t||Ol.indexOf(typeof t)>=0)return t;if("function"==typeof t.getAddress)return t;if(Array.isArray(t))return t.map(Sl);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 Fl(t){return new Promise(e=>{setTimeout(e,t)})}function Ll(t){return t?t.toLowerCase():t}function Ul(t){return t&&"number"==typeof t.pollingInterval}const Dl={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class Gl extends Il{address;constructor(t,e){super(t),s(this,{address:e=ee(e)})}connect(t){c(!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=Sl(t),n=[];if(e.from){const r=e.from;n.push((async()=>{const n=await Bn(r,this.provider);u(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 Bn(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(a(t,"CANCELLED")||a(t,"BAD_DATA")||a(t,"NETWORK_ERROR")||a(t,"UNSUPPORTED_OPERATION"))return null==t.info&&(t.info={}),t.info.sendTransactionHash=n,void r(t);if(a(t,"INVALID_ARGUMENT")&&(i++,null==t.info&&(t.info={}),t.info.sendTransactionHash=n,i>10))return void r(t);this.provider.emit("error",l("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=Sl(t);if(e.from){const n=await Bn(e.from,this.provider);u(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?bt(t):t;return await this.provider.send("personal_sign",[ot(e),this.address.toLowerCase()])}async signTypedData(t,e,n){const r=Sl(n),s=await Mr.resolveNames(t,e,r,async t=>{const e=await Bn(t);return u(null!=e,"TypedData does not support null address","value",t),e});return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(Mr.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?bt(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),ot(e)])}}class Ml extends wl{#t;#we;#be;#Ae;#ve;#pe;#Ee;#xe(){if(this.#Ae)return;const t=1===this._getOption("batchMaxCount")?0:this._getOption("batchStallTime");this.#Ae=setTimeout(()=>{this.#Ae=null;const t=this.#be;for(this.#be=[];t.length;){const e=[t.shift()];for(;t.length&&e.length!==this.#t.batchMaxCount;)if(e.push(t.shift()),JSON.stringify(e.map(t=>t.payload)).length>this.#t.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(l("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:s.method}));continue}const e=n.filter(t=>t.id===s.id)[0];if(null==e){const t=l("missing response for request","BAD_DATA",{value:n,info:{payload:s}});this.emit("error",t),r(t);continue}"error"in e?r(this.getRpcError(s,e)):t(e.result)}}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.#we=1,this.#t=Object.assign({},Dl,e||{}),this.#be=[],this.#Ae=null,this.#pe=null,this.#Ee=null;{let t=null;const e=new Promise(e=>{t=e});this.#ve={promise:e,resolve:t}}const n=this._getOption("staticNetwork");"boolean"==typeof n?(u(!n||"any"!==t,"staticNetwork cannot be used on special network 'any'","options",e),n&&null!=t&&(this.#pe=Xo.from(t))):n&&(u(null==t||n.matches(t),"staticNetwork MUST match network object","options",e),this.#pe=n)}_getOption(t){return this.#t[t]}get _network(){return c(this.#pe,"network is not available yet","NETWORK_ERROR"),this.#pe}async _perform(t){if("call"===t.method||"estimateGas"===t.method){let e=t.transaction;if(e&&null!=e.type&&It(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.#pe)return this.#pe}return this.#Ee?await this.#Ee:this.ready?(this.#Ee=(async()=>{try{const t=Xo.from(It(await this.send("eth_chainId",[])));return this.#Ee=null,t}catch(t){throw this.#Ee=null,t}})(),await this.#Ee):(this.#Ee=(async()=>{const t={id:this.#we++,method:"eth_chainId",params:[],jsonrpc:"2.0"};let e;this.emit("debug",{action:"sendRpcPayload",payload:t});try{e=(await this._send(t))[0],this.#Ee=null}catch(t){throw this.#Ee=null,this.emit("debug",{action:"receiveRpcError",error:t}),t}if(this.emit("debug",{action:"receiveRpcResult",result:e}),"result"in e)return Xo.from(It(e.result));throw this.getRpcError(t,e)})(),await this.#Ee)}_start(){null!=this.#ve&&null!=this.#ve.resolve&&(this.#ve.resolve(),this.#ve=null,(async()=>{for(;null==this.#pe&&!this.destroyed;)try{this.#pe=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",l("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:t}})),await Fl(1e3)}this.#xe()})())}async _waitUntilReady(){if(null!=this.#ve)return await this.#ve.promise}_getSubscriber(t){return"pending"===t.type?new Rl(this):"event"===t.type?this._getOption("polling")?new ll(this,t.filter):new Tl(this,t.filter):"orphan"===t.type&&"drop-log"===t.filter.orphan?new dl("orphan"):super._getSubscriber(t)}get ready(){return null==this.#ve}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]=Lt(It(t[n],tx.${n}))}),["from","to","data"].forEach(n=>{null!=t[n]&&(e[n]=ot(t[n]))}),t.accessList&&(e.accessList=In(t.accessList)),t.blobVersionedHashes&&(e.blobVersionedHashes=t.blobVersionedHashes.map(t=>t.toLowerCase())),t.authorizationList&&(e.authorizationList=t.authorizationList.map(t=>{const e=$r(t);return{address:e.address,nonce:Lt(e.nonce),chainId:Lt(e.chainId),yParity:Lt(e.signature.yParity),r:Lt(e.signature.r),s:Lt(e.signature.s)}})),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:[Ll(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[Ll(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[Ll(t.address),t.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[Ll(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(Ll):t.filter.address=Ll(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 l("insufficient funds","INSUFFICIENT_FUNDS",{transaction:t.params[0],info:{payload:t,error:r}});if(e.match(/nonce/i)&&e.match(/too low/i))return l("nonce has already been used","NONCE_EXPIRED",{transaction:t.params[0],info:{payload:t,error:r}})}if("eth_call"===n||"eth_estimateGas"===n){const e=Ql(r),s=mn.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 Vl(t,e),e}(r));if("string"==typeof r.message&&r.message.match(/user denied|ethers-user-denied/i))return l("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 l("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e,info:{error:r}});if(s.match(/nonce/i)&&s.match(/too low/i))return l("nonce has already been used","NONCE_EXPIRED",{transaction:e,info:{error:r}});if(s.match(/replacement transaction/i)&&s.match(/underpriced/i))return l("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e,info:{error:r}});if(s.match(/only replay-protected/i))return l("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?l("unsupported operation","UNSUPPORTED_OPERATION",{operation:t.method,info:{error:r,payload:t}}):l("could not coalesce error","UNKNOWN_ERROR",{error:r,payload:t})}send(t,e){if(this.destroyed)return Promise.reject(l("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t}));const n=this.#we++,r=new Promise((r,s)=>{this.#be.push({resolve:r,reject:s,payload:{method:t,params:e,id:n,jsonrpc:"2.0"}})});return this.#xe(),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 Gl(this,n[t])}const{accounts:n}=await r({network:this.getNetwork(),accounts:e});t=ee(t);for(const e of n)if(ee(e)===t)return new Gl(this,t);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map(t=>new Gl(this,t))}destroy(){this.#Ae&&(clearTimeout(this.#Ae),this.#Ae=null);for(const{payload:t,reject:e}of this.#be)e(l("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:t.method}));this.#be=[],super.destroy()}}class Hl extends Ml{#ke;constructor(t,e){super(t,e);let n=this._getOption("pollingInterval");null==n&&(n=Dl.pollingInterval),this.#ke=n}_getSubscriber(t){const e=super._getSubscriber(t);return Ul(e)&&(e.pollingInterval=this.#ke),e}get pollingInterval(){return this.#ke}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");this.#ke=t,this._forEachSubscriber(t=>{Ul(t)&&(t.pollingInterval=this.#ke)})}}function Ql(t){if(null==t)return null;if("string"==typeof t.message&&t.message.match(/revert/i)&&st(t.data))return{message:t.message,data:t.data};if("object"==typeof t){for(const e in t){const n=Ql(t[e]);if(n)return n}return null}if("string"==typeof t)try{return Ql(JSON.parse(t))}catch(t){}return null}function Vl(t,e){if(null!=t){if("string"==typeof t.message&&e.push(t.message),"object"==typeof t)for(const n in t)Vl(t[n],e);if("string"==typeof t)try{return Vl(JSON.parse(t),e)}catch(t){}}}class jl extends Hl{#ut;#Pe;constructor(t,e,n){const r=Object.assign({},null!=n?n:{},{batchMaxCount:1});u(t&&t.request,"invalid EIP-1193 provider","ethereum",t),super(e,r),this.#Pe=null,n&&n.providerInfo&&(this.#Pe=n.providerInfo),this.#ut=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}}}get providerInfo(){return this.#Pe}async send(t,e){return await this._start(),await super.send(t,e)}async _send(t){u(!Array.isArray(t),"EIP-1193 does not support batch request","payload",t);try{const e=await this.#ut(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.#ut("eth_requestAccounts",[])}catch(t){const e=t.payload;throw this.getRpcError(e,{id:e.id,error:t})}return await super.getSigner(t)}static async discover(t){if(null==t&&(t={}),t.provider)return new jl(t.provider);const e=t.window?t.window:"undefined"!=typeof window?window:null;if(null==e)return null;const n=t.anyProvider;if(n&&e.ethereum)return new jl(e.ethereum);if(!("addEventListener"in e&&"dispatchEvent"in e&&"removeEventListener"in e))return null;const r=t.timeout?t.timeout:300;return 0===r?null:await new Promise((s,i)=>{let a=[];const o=t=>{a.push(t.detail),n&&c()},c=()=>{if(clearTimeout(u),a.length)if(t&&t.filter){const e=t.filter(a.map(t=>Object.assign({},t.info)));if(null==e)s(null);else if(e instanceof jl)s(e);else{let t=null;if(e.uuid&&(t=a.filter(t=>e.uuid===t.info.uuid)[0]),t){const{provider:e,info:n}=t;s(new jl(e,void 0,{providerInfo:n}))}else i(l("filter returned unknown info","UNSUPPORTED_OPERATION",{value:e}))}}else{const{provider:t,info:e}=a[0];s(new jl(t,void 0,{providerInfo:e}))}else s(null);e.removeEventListener("eip6963:announceProvider",o)},u=setTimeout(()=>{c()},r);e.addEventListener("eip6963:announceProvider",o),e.dispatchEvent(new Event("eip6963:requestProvider"))})}}const Jl="0x3de0c040705d50d62d1c36bde0ccbad20606515a",zl=[{constant:!0,inputs:[{name:"",type:"uint256"}],name:"proposals",outputs:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"},{name:"description",type:"string"},{name:"minExecutionDate",type:"uint256"},{name:"executed",type:"bool"},{name:"proposalPassed",type:"bool"},{name:"numberOfVotes",type:"uint256"},{name:"currentResult",type:"int256"},{name:"proposalHash",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"members",outputs:[{name:"isMember",type:"bool"},{name:"name",type:"string"},{name:"memberSince",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"minimumQuorum",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"majorityMargin",outputs:[{name:"",type:"int256"}],payable:!1,stateMutability:"view",type:"function"},{anonymous:!1,inputs:[{indexed:!1,name:"ID",type:"uint256"},{indexed:!1,name:"recipient",type:"address"},{indexed:!1,name:"amount",type:"uint256"},{indexed:!1,name:"description",type:"string"},{indexed:!1,name:"numProposals",type:"uint256"}],name:"LogProposalAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"proposalID",type:"uint256"},{indexed:!1,name:"position",type:"bool"},{indexed:!0,name:"voter",type:"address"},{indexed:!1,name:"justification",type:"string"}],name:"LogVoted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"proposalID",type:"uint256"},{indexed:!1,name:"result",type:"int256"},{indexed:!1,name:"quorum",type:"uint256"},{indexed:!0,name:"active",type:"bool"}],name:"LogProposalTallied",type:"event"},{constant:!1,inputs:[{name:"targetMember",type:"address"},{name:"memberName",type:"string"}],name:"addMember",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"targetMember",type:"address"}],name:"removeMember",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"minimumQuorumForProposals",type:"uint256"},{name:"minutesForDebate",type:"uint256"},{name:"marginOfVotesForMajority",type:"int256"}],name:"changeVotingRules",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"beneficiary",type:"address"},{name:"weiAmount",type:"uint256"},{name:"jobDescription",type:"string"},{name:"transactionBytecode",type:"bytes"}],name:"newProposal",outputs:[{name:"proposalID",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"proposalNumber",type:"uint256"},{name:"beneficiary",type:"address"},{name:"weiAmount",type:"uint256"},{name:"transactionBytecode",type:"bytes"}],name:"checkProposalCode",outputs:[{name:"codeChecksOut",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"proposalNumber",type:"uint256"},{name:"supportsProposal",type:"bool"},{name:"justificationText",type:"string"}],name:"vote",outputs:[{name:"voteID",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"proposalNumber",type:"uint256"},{name:"transactionBytecode",type:"bytes"}],name:"executeProposal",outputs:[],payable:!0,stateMutability:"payable",type:"function"}];let Kl,ql,_l,Wl;const Yl=["addMember","removeMember","changeVotingRules"];class Zl{constructor(t){let e="0x",n=Number(t[4]),r=Number(t[5]),s=t[6],i=document.createElement("tr");i.innerHTML='
last updated: