From 998a621601036dba73e6f5dda3ea117853ce2ccd Mon Sep 17 00:00:00 2001 From: stjet <49297268+stjet@users.noreply.github.com> Date: Tue, 10 Sep 2024 20:01:18 +0000 Subject: [PATCH] spec now at 1.0.0 release candidate added domain freezing, suggest tld as domain receive rep, bug fixes --- LICENSE | 7 ++++ bns-browser.js | 2 +- bns_protocol.md | 11 +++++-- browser-main.ts | 1 + browser_test/index.html | 27 +++++++++++++--- constants.ts | 8 +++++ docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/bns-browser.js | 2 +- docs/browser_test/index.html | 27 +++++++++++++--- docs/classes/DomainAccount.html | 4 +-- docs/classes/DomainAccountManager.html | 5 +-- docs/classes/Resolver.html | 4 +-- docs/classes/TLDAccount.html | 4 +-- docs/classes/TLDAccountManager.html | 7 ++-- docs/functions/address_to_cid_v0.html | 3 +- docs/functions/base58_to_hex.html | 2 +- docs/functions/bigint_to_uint8array.html | 2 +- docs/functions/cid_v0_to_address.html | 3 +- docs/functions/decode_domain_name.html | 2 +- docs/functions/encode_domain_name.html | 2 +- docs/functions/hex_to_base58.html | 2 +- docs/hierarchy.html | 2 +- docs/interfaces/Domain.html | 4 +-- docs/interfaces/DomainBlock.html | 4 +-- docs/interfaces/DomainFreeze.html | 3 ++ docs/interfaces/DomainMetadata.html | 4 +-- docs/interfaces/DomainReceive.html | 4 +-- docs/interfaces/DomainResolver.html | 4 +-- docs/interfaces/DomainTransfer.html | 4 +-- docs/modules.html | 7 +++- docs/types/DomainBlocks.html | 2 +- docs/variables/FREEZE_PUB_KEY.html | 1 + docs/variables/FREEZE_REP.html | 1 + docs/variables/LOG.html | 2 +- docs/variables/TRANS_MAX.html | 1 + docs/variables/TRANS_MIN.html | 1 + main.ts | 1 + manager.ts | 26 +++++++++------ node_test/index.js | 28 +++++++++++++--- package.json | 2 +- resolver.ts | 41 +++++++++++++----------- types.ts | 8 +++-- util.ts | 2 ++ 44 files changed, 195 insertions(+), 86 deletions(-) create mode 100644 LICENSE create mode 100644 constants.ts create mode 100644 docs/interfaces/DomainFreeze.html create mode 100644 docs/variables/FREEZE_PUB_KEY.html create mode 100644 docs/variables/FREEZE_REP.html create mode 100644 docs/variables/TRANS_MAX.html create mode 100644 docs/variables/TRANS_MIN.html diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..76f4ea8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright 2024 stjet/Prussia + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bns-browser.js b/bns-browser.js index 96e5d22..72a3daf 100644 --- a/bns-browser.js +++ b/bns-browser.js @@ -1,4 +1,4 @@ -(()=>{var Rn=Object.create;var Je=Object.defineProperty;var jn=Object.getOwnPropertyDescriptor;var Jn=Object.getOwnPropertyNames;var Xn=Object.getPrototypeOf,qn=Object.prototype.hasOwnProperty;var I=(e,r)=>Je(e,"name",{value:r,configurable:!0}),_r=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var U=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Dt=(e,r)=>{for(var t in r)Je(e,t,{get:r[t],enumerable:!0})},Wn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Jn(r))!qn.call(e,s)&&s!==t&&Je(e,s,{get:()=>r[s],enumerable:!(n=jn(r,s))||n.enumerable});return e};var Xe=(e,r,t)=>(t=e!=null?Rn(Xn(e)):{},Wn(r||!e||!e.__esModule?Je(t,"default",{value:e,enumerable:!0}):t,e));var mt=U((wo,wr)=>{wr.exports=dr;var qe=class extends Error{static{I(this,"AssertionError")}};qe.prototype.name="AssertionError";function dr(e,r){if(!e){var t=new qe(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,dr),t}}I(dr,"assert")});var Br=U((xo,xr)=>{function Er(e){return e.length}I(Er,"byteLength");function zn(e){let r=e.byteLength,t="";for(let n=0;n{var ue="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",oe=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Qr,"byteLength");function $n(e){let r=e.byteLength,t="";for(let n=0;n>2]+ue[(e[n]&3)<<4|e[n+1]>>4]+ue[(e[n+1]&15)<<2|e[n+2]>>6]+ue[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I($n,"toString");function ei(e,r,t=0,n=Qr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(w&15)<<4|x>>2,e[l++]=(x&3)<<6|Q&63}return s}I(ei,"write");br.exports={byteLength:Qr,toString:$n,write:ei}});var Ur=U((po,Sr)=>{function mr(e){return e.length>>>1}I(mr,"byteLength");function ti(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Dr,"hexValue")});var Fr=U((mo,vr)=>{function St(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(St,"byteLength");var Ut;if(typeof TextDecoder<"u"){let e=new TextDecoder;Ut=I(function(t){return e.decode(t)},"toString")}else Ut=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let w=0;for(;w>x,x-=6;x>=0;)r[_++]=128|w>>x&63,x-=6;l+=w>=65536?2:1}return g},"write");vr.exports={byteLength:St,toString:Ut,write:vt}});var kr=U((Uo,Yr)=>{function Kr(e){return e.length*2}I(Kr,"byteLength");function ni(e){let r=e.byteLength,t="";for(let n=0;n>8,x=_%256;e[t+l*2]=x,e[t+l*2+1]=w}return s}I(ii,"write");Yr.exports={byteLength:Kr,toString:ni,write:ii}});var Vr=U((Kt,Pr)=>{var oi=Br(),Ai=pr(),ai=Ur(),si=Fr(),Ii=kr(),We=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Se(e){switch(e){case"ascii":return oi;case"base64":return Ai;case"hex":return ai;case"utf8":case"utf-8":case void 0:return si;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ii;default:throw new Error(`Unknown encoding: ${e}`)}}I(Se,"codecFor");function Lr(e){return e instanceof Uint8Array}I(Lr,"isBuffer");function hi(e){try{return Se(e),!0}catch{return!1}}I(hi,"isEncoding");function ci(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Kt.fill(n,r,0,n.byteLength,t),n}I(ci,"alloc");function gi(e){return new Uint8Array(e)}I(gi,"allocUnsafe");function fi(e){return new Uint8Array(e)}I(fi,"allocUnsafeSlow");function ui(e,r){return Se(r).byteLength(e)}I(ui,"byteLength");function Ci(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(li,"concat");function yi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Ft(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Vi=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),Oi=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=w<<4|x>>2,s[l++]=x<<6|Q}return s}})(),Gi=Vi({"wasm-binary:./blake2b.wat"(e,r){r.exports=Oi("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")}}),Ni=Gi(),Ti=WebAssembly.compile(Ni);Or.exports=async e=>(await WebAssembly.instantiate(await Ti,e)).exports});var Wr=U((Mo,X)=>{var H=mt(),Ri=Vr(),Z=null,Nr=typeof WebAssembly<"u"&&Gr()().then(e=>{Z=e}),z=64,ze=[];X.exports=k;var Tr=X.exports.BYTES_MIN=16,Rr=X.exports.BYTES_MAX=64,ko=X.exports.BYTES=32,jr=X.exports.KEYBYTES_MIN=16,Jr=X.exports.KEYBYTES_MAX=64,Lo=X.exports.KEYBYTES=32,Xr=X.exports.SALTBYTES=16,qr=X.exports.PERSONALBYTES=16;function k(e,r,t,n,s){if(!(this instanceof k))return new k(e,r,t,n,s);if(!Z)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(H(e>=Tr,"digestLength must be at least "+Tr+", was given "+e),H(e<=Rr,"digestLength must be at most "+Rr+", was given "+e),r!=null&&(H(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),H(r.length>=jr,"key must be at least "+jr+", was given "+r.length),H(r.length<=Jr,"key must be at least "+Jr+", was given "+r.length)),t!=null&&(H(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),H(t.length===Xr,"salt must be exactly "+Xr+", was given "+t.length)),n!=null&&(H(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),H(n.length===qr,"personal must be exactly "+qr+", was given "+n.length))),ze.length||(ze.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=ze.pop(),this._memory=new Uint8Array(Z.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),Z.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(k,"Blake2b");k.prototype._realloc=function(e){Z.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(Z.memory.buffer)};k.prototype.update=function(e){return H(this.finalized===!1,"Hash instance finalized"),H(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),Z.blake2b_update(this.pointer,z,z+e.length),this};k.prototype.digest=function(e){if(H(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,ze.push(this.pointer),Z.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return Ri.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);H(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};k.prototype.ready=k.ready;k.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};k.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function ji(){}I(ji,"noop")});var Yt=U((Oo,L)=>{var O=mt(),ve=Wr();function Ze(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(Ze,"ADD64AA");function zr(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(zr,"ADD64AC");function on(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(on,"B2B_GET32");function re(e,r,t,n,s,g){var l=Ue[s],_=Ue[s+1],w=Ue[g],x=Ue[g+1];Ze(B,e,r),zr(B,e,l,_);var Q=B[n]^B[e],m=B[n+1]^B[e+1];B[n]=m,B[n+1]=Q,Ze(B,t,n),Q=B[r]^B[t],m=B[r+1]^B[t+1],B[r]=Q>>>24^m<<8,B[r+1]=m>>>24^Q<<8,Ze(B,e,r),zr(B,e,w,x),Q=B[n]^B[e],m=B[n+1]^B[e+1],B[n]=Q>>>16^m<<16,B[n+1]=m>>>16^Q<<16,Ze(B,t,n),Q=B[r]^B[t],m=B[r+1]^B[t+1],B[r]=m>>>31^Q<<1,B[r+1]=Q>>>31^m<<1}I(re,"B2B_G");var An=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Ji=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],F=new Uint8Array(Ji.map(function(e){return e*2})),B=new Uint32Array(32),Ue=new Uint32Array(32);function an(e,r){var t=0;for(t=0;t<16;t++)B[t]=e.h[t],B[t+16]=An[t];for(B[24]=B[24]^e.t,B[25]=B[25]^e.t/4294967296,r&&(B[28]=~B[28],B[29]=~B[29]),t=0;t<32;t++)Ue[t]=on(e.b,4*t);for(t=0;t<12;t++)re(0,8,16,24,F[t*16+0],F[t*16+1]),re(2,10,18,26,F[t*16+2],F[t*16+3]),re(4,12,20,28,F[t*16+4],F[t*16+5]),re(6,14,22,30,F[t*16+6],F[t*16+7]),re(0,10,20,30,F[t*16+8],F[t*16+9]),re(2,12,22,24,F[t*16+10],F[t*16+11]),re(4,14,16,26,F[t*16+12],F[t*16+13]),re(6,8,18,28,F[t*16+14],F[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^B[t]^B[t+16]}I(an,"blake2bCompress");var ne=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Ce(e,r,t,n){ne.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,ne[0]=e,r&&(ne[1]=r.length),ne[2]=1,ne[3]=1,t&&ne.set(t,32),n&&ne.set(n,48);for(var s=0;s<16;s++)this.h[s]=An[s]^on(ne,s*4);r&&(sn(this,r),this.c=128)}I(Ce,"Blake2b");Ce.prototype.update=function(e){return O(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),sn(this,e),this};Ce.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return O(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),O(r.length>=this.outlen,"out must have at least outlen bytes of space"),Xi(this,r),e==="hex"?qi(r):r};Ce.prototype.final=Ce.prototype.digest;Ce.ready=function(e){ve.ready(function(){e()})};function sn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I(Xi,"blake2bFinal");function qi(e){for(var r="",t=0;t=Zr,"outlen must be at least "+Zr+", was given "+r),O(r<=$r,"outlen must be at most "+$r+", was given "+r),t!=null&&(O(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),O(t.length>=en,"key must be at least "+en+", was given "+t.length),O(t.length<=tn,"key must be at most "+tn+", was given "+t.length)),n!=null&&(O(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),O(n.length===rn,"salt must be exactly "+rn+", was given "+n.length)),s!=null&&(O(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),O(s.length===nn,"personal must be exactly "+nn+", was given "+s.length))),new zi(r,t,n,s)},"createHash");L.exports.ready=function(e){ve.ready(function(){e()})};L.exports.WASM_SUPPORTED=ve.SUPPORTED;L.exports.WASM_LOADED=!1;var Zr=L.exports.BYTES_MIN=16,$r=L.exports.BYTES_MAX=64,Po=L.exports.BYTES=32,en=L.exports.KEYBYTES_MIN=16,tn=L.exports.KEYBYTES_MAX=64,Vo=L.exports.KEYBYTES=32,rn=L.exports.SALTBYTES=16,nn=L.exports.PERSONALBYTES=16;ve.ready(function(e){e||(L.exports.WASM_LOADED=!0,L.exports=ve)})});var In=U((No,$e)=>{(function(e){"use strict";let r=Yt();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(te,"L32");function ae(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(ae,"ld32");function qt(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(qt,"dl64");function st(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(st,"st32");function Wt(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(Wt,"ts64");function It(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(It,"vn");function zt(i,A,o,a){return It(i,A,o,a,16)}I(zt,"crypto_verify_16");function ht(i,A,o,a){return It(i,A,o,a,32)}I(ht,"crypto_verify_32");function Zt(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,d,p;for(u=0;u<4;u++)C[5*u]=ae(a,4*u),C[1+u]=ae(o,4*u),C[6+u]=ae(A,4*u),C[11+u]=ae(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(d=0;d<4;d++){for(p=0;p<4;p++)f[p]=C[(5*d+4*p)%16];for(f[1]^=te(f[0]+f[3]|0,7),f[2]^=te(f[1]+f[0]|0,9),f[3]^=te(f[2]+f[1]|0,13),f[0]^=te(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*d+(d+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-ae(a,4*u)|0,C[6+u]=C[6+u]-ae(A,4*u)|0;for(u=0;u<4;u++)st(i,4*u,C[5*u]),st(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)st(i,4*u,C[u]+y[u]|0)}I(Zt,"core");function $t(i,A,o,a){return Zt(i,A,o,a,!1),0}I($t,"crypto_core_salsa20");function Me(i,A,o,a){return Zt(i,A,o,a,!0),0}I(Me,"crypto_core_hsalsa20");var Ee=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,d;if(!h)return 0;for(d=0;d<16;d++)y[d]=0;for(d=0;d<8;d++)y[d]=c[d];for(;h>=64;){for($t(f,y,C,Ee),d=0;d<64;d++)i[A+d]=(o?o[a+d]:0)^f[d];for(u=1,d=8;d<16;d++)u=u+(y[d]&255)|0,y[d]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for($t(f,y,C,Ee),d=0;d>>=8}I(ft,"add1305");var Sn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function ut(i,A,o,a,h,c){var C,y,f,u,d=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),R=new Uint32Array(17),fe=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)R[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)fe[f]=D[f];for(ft(D,Sn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(fe[f]^D[f]);for(f=0;f<16;f++)R[f]=c[f+16];for(R[16]=0,ft(D,R),f=0;f<16;f++)i[A+f]=D[f];return 0}I(ut,"crypto_onetimeauth");function rr(i,A,o,a,h,c){var C=new Uint8Array(16);return ut(C,0,o,a,h,c),zt(i,A,C,0)}I(rr,"crypto_onetimeauth_verify");function Ct(i,A,o,a,h){var c;if(o<32)return-1;for(gt(i,0,A,0,o,a,h),ut(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(Ct,"crypto_secretbox");function lt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(tr(C,0,32,a,h),rr(A,16,A,32,o-32,C)!==0))return-1;for(gt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(lt,"crypto_secretbox_open");function q(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(q,"set25519");function xe(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(xe,"car25519");function se(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(se,"sel25519");function Ie(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(xe(C),xe(C),xe(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,se(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(Ie,"pack25519");function nr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return Ie(o,i),Ie(a,A),ht(o,0,a,0)}I(nr,"neq25519");function ir(i){var A=new Uint8Array(32);return Ie(A,i),A[0]&1}I(ir,"par25519");function yt(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(yt,"unpack25519");function N(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(N,"A");function T(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(T,"Z");function b(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];xe(i),xe(i)}I(b,"M");function V(i,A){b(i,A,A)}I(V,"S");function or(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)V(o,o),a!==2&&a!==4&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(or,"inv25519");function Ar(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)V(o,o),a!==1&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(Ar,"pow2523");function He(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),d=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,yt(h,o),C=0;C<16;C++)f[C]=h[C],d[C]=y[C]=u[C]=0;for(y[0]=d[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,se(y,f,c),se(u,d,c),N(p,y,u),T(y,y,u),N(u,f,d),T(f,f,d),V(d,p),V(D,y),b(y,u,y),b(u,f,p),N(p,y,u),T(y,y,u),V(f,y),T(u,d,D),b(y,u,x),N(y,y,d),b(u,u,y),b(y,d,D),b(d,f,h),V(f,p),se(y,f,c),se(u,d,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=d[C];var R=h.subarray(32),fe=h.subarray(16);return or(R,R),b(fe,fe,R),Ie(i,fe),0}I(He,"crypto_scalarmult");function Pe(i,A){return He(i,A,l)}I(Pe,"crypto_scalarmult_base");function ar(i,A){return s(A,32),Pe(i,A)}I(ar,"crypto_box_keypair");function Ve(i,A,o){var a=new Uint8Array(32);return He(a,o,A),Me(i,g,a,Ee)}I(Ve,"crypto_box_beforenm");var sr=Ct,Un=lt;function vn(i,A,o,a,h,c){var C=new Uint8Array(32);return Ve(C,h,c),sr(i,A,o,a,C)}I(vn,"crypto_box");function Fn(i,A,o,a,h,c){var C=new Uint8Array(32);return Ve(C,h,c),Un(i,A,o,a,C)}I(Fn,"crypto_box_open");function Be(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(Be,"add64");function Ir(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(Ir,"shr64");function Oe(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=qt(A,8*f+d);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=Be(c[7],Ln(c[4]),Kn(c[4],c[5],c[6]),Pn[f],C[f%16]),h[7]=Be(y,kn(c[0]),Yn(c[0],c[1],c[2])),h[3]=Be(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=Be(C[u],C[(u+9)%16],Mn(C[(u+1)%16]),Hn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=Be(c[f],a[f]),a[f]=c[f];d+=128,o-=128}for(f=0;f<8;f++)Wt(i,8*f,a[f]);return o}I(hr,"crypto_hashblocks");let he=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Vn=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function cr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Vn[c];for(hr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,gr(i,A,a),Ge(A,i),Ge(i,i),gr(i,A,a)}I(_t,"scalarmult");function Qe(i,A){var o=[n(),n(),n(),n()];q(o[0],Y),q(o[1],ee),q(o[2],w),b(o[3],Y,ee),_t(i,o,A)}I(Qe,"scalarbase");function dt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=he(A,64),a[0]&=248,a[31]&=127,a[31]|=64,Qe(h,a),Ne(i,h);return 0}I(dt,"crypto_sign_keypair");var Te=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function wt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*Te[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*Te[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(wt,"modL");function Et(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;wt(i,A)}I(Et,"reduce");function fr(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),d=[n(),n(),n(),n()];let p=yr(a);h=he(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&T(i[0],_,i[0]),b(i[3],i[0],i[1]),0)}I(On,"unpackneg");function xt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||On(f,a))return-1;for(h=0;h=0};function yr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=he(i,64),A[0]&=248,A[31]&=127,A[31]|=64,Qe(o,A),Ne(h,o),h}I(yr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(ie),A=new Uint8Array(ge);return dt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(M(i),i.length!==ge)throw new Error("bad secret key size");var A=new Uint8Array(ie);return A=yr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(M(i),i.length!==bt)throw new Error("bad seed size");for(var A=new Uint8Array(ie),o=new Uint8Array(ge),a=0;a<32;a++)o[a]=i[a];return dt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=ie,e.sign.secretKeyLength=ge,e.sign.seedLength=bt,e.sign.signatureLength=W,e.hash=function(i){M(i);var A=new Uint8Array(pt);return cr(A,i,i.length),A},e.hash.hashLength=pt,e.verify=function(i,A){return M(i,A),i.length===0||A.length===0||i.length!==A.length?!1:It(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var Zi=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),$i=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),eo=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&Zi(r,e,t);return $i(r,e),r},to=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Lt=eo(In()),tt=to(Yt()),ro="0000000000000000000000000000000000000000000000000000000000000006",Mt="62616E616E6F6D73672D",Fe=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function Ke(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(hn,"int_to_uint8array");E.int_to_uint8array=hn;var cn=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function kt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let w=5-_;l=(e[s]<>8-w&2**(8-w)-1)}r+=cn[l]}return r}I(kt,"uint8array_to_base32");E.uint8array_to_base32=kt;function no(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I(no,"int_to_binary");function io(e){let r=0;for(let t=0;tno(cn.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(oo,"whole_to_raw");E.whole_to_raw=oo;function Ao(e,r=un){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.RPCWithBackup=le.RPC=void 0;var ho=rt(),nt=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?"true":void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?"true":void 0,head:s,offset:g?`${g}`:void 0,reverse:l?"true":void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?"true":void 0,weight:s?"true":void 0,pending:g?"true":void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,ho.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?"true":void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};le.RPC=nt;var Vt=class extends nt{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};le.RPCWithBackup=Vt});var En=U(wn=>{"use strict";Object.defineProperty(wn,"__esModule",{value:!0})});var xn=U(G=>{"use strict";var co=G&&G.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),go=G&&G.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),fo=G&&G.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&co(r,e,t);return go(r,e),r};Object.defineProperty(G,"__esModule",{value:!0});G.PrivateKeyAccount=G.Wallet=void 0;var K=fo(rt()),it=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=K.uint8array_to_hex(t);return new e(r,n)}get private_key(){return K.get_private_key_from_seed(this.seed,this.index)}get public_key(){return K.get_public_key_from_private_key(this.private_key)}get address(){return K.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=K.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),w=K.get_public_key_from_address(r);s||(s=_.representative);let x=BigInt(_.balance),Q=x-l;if(Q<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${x}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:Q.toString(),link:w,link_as_account:r},Y=K.hash_block(m),ee;n&&(ee=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),te={...m,signature:we,work:ee};return await this.send_process(te,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,K.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let Y=await this.get_account_info(void 0,!0);l=Y.frontier,n=Y.representative,g=BigInt(Y.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},w=K.hash_block(_),x;t&&(x=await this.work_function(w));let Q=K.sign_block_hash(this.private_key,w),m={..._,signature:Q,work:x};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let x=await this.get_account_info(void 0,!0);g=x.frontier,l=x.representative,_=BigInt(x.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let w=[];for(let x of Object.keys(s)){let Q=(_+BigInt(s[x].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:Q,link:x},Y=K.hash_block(m),ee;n&&(ee=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),te={...m,signature:we,work:ee};await this.send_process(te,"receive"),w.push(Y),g=Y,_=BigInt(Q)}return w}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=K.hash_block(s),l;t&&(l=await this.work_function(g));let _=K.sign_block_hash(this.private_key,g),w={...s,signature:_,work:l};return await this.send_process(w,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return K.sign_message(this.private_key,r)}};G.Wallet=it;var Ot=class extends it{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};G.PrivateKeyAccount=Ot});var Bn=U(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.RPCWorkProvider=void 0;var Gt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};ot.RPCWorkProvider=Gt});var ke=U(j=>{"use strict";var uo=j&&j.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Ye=j&&j.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&uo(r,e,t)};Object.defineProperty(j,"__esModule",{value:!0});Ye(rt(),j);Ye(dn(),j);Ye(En(),j);Ye(xn(),j);Ye(Bn(),j)});var Nt={};Dt(Nt,{LOG:()=>Le,address_to_cid_v0:()=>lo,base58_to_hex:()=>Dn,bigint_to_uint8array:()=>pn,cid_v0_to_address:()=>Co,decode_domain_name:()=>ye,encode_domain_name:()=>At,hex_to_base58:()=>bn});var $=Xe(ke());var Le=!0;function At(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,$.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(At,"encode_domain_name");function ye(e){return new TextDecoder().decode((0,$.hex_to_uint8array)(e)).replaceAll("\0","")}I(ye,"decode_domain_name");var Qn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function bn(e){let r=BigInt(`0x${e}`),t="";for(;t+=Qn[Number(r%BigInt(58))],r=r/BigInt(58),r!==0n;);return t.split("").reverse().join("")}I(bn,"hex_to_base58");function pn(e,r){let t=new Uint8Array(r),n=e;for(let s=1;s<=r;s++)t[r-s]=Number(n%256n),n/=256n;return t}I(pn,"bigint_to_uint8array");function Dn(e){let r=0n;for(let t=0;tde,Resolver:()=>Tt,TLDAccount:()=>_e});var S=Xe(ke());var at=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},_e=class extends at{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0),w=(0,S.whole_to_raw)("0.0012070301"),x=(0,S.whole_to_raw)("0.00120703011");if(_>=w&&_<=x){let Q=ye((0,S.get_public_key_from_address)(l.representative));if(r===Q)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,S.get_address_from_public_key)(l.link)}]}}if(l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0),w=(0,S.whole_to_raw)("0.0012070301"),x=(0,S.whole_to_raw)("0.00120703011");if(l.subtype==="send"&&_>=w&&_<=x){let Q=ye((0,S.get_public_key_from_address)(l.representative));if(s[Q]?Le&&console.log(`"${Q}" already issued but TLD tried to issue again. Invalid.`):s[Q]={tld:this.address,name:Q,history:[{type:"transfer",block:l,to:(0,S.get_address_from_public_key)(l.link)}]},l.hash===t)return this.all_issued=Object.values(s),this.all_issued}}n=g[g.length-1].hash}}},de=class extends at{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return Le&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0),_=(0,S.whole_to_raw)("0.0012070301"),w=(0,S.whole_to_raw)("0.00120703011");if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return Le&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=_&&l<=w){let x=ye((0,S.get_public_key_from_address)(g.representative));if(this.domain.name===x)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,S.get_address_from_public_key)(g.link)}),this.domain}else g.subtype==="change"?(this.domain.metadata_hash=(0,S.get_public_key_from_address)(g.representative),this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,S.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}));if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},Tt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new _e(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new de(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=ye((0,S.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if(_.history.reverse().find(x=>x.type==="transfer").to===r)return _}};var Xt={};Dt(Xt,{DomainAccountManager:()=>Jt,TLDAccountManager:()=>jt});var P=Xe(ke());var jt=class extends _e{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,P.get_address_from_public_key)(At(r)))}async receive(){await this.wallet.receive_all()}},Jt=class extends de{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t){let n=!1,{history:s}=await this.rpc.get_account_history(this.address,1);if(s.length>1&&!t)throw n=!0,new Error("`allow_burning` must be true in order to receive this domain");let g=await this.rpc.get_block_info(r),l=(0,P.whole_to_raw)("0.0012070301"),_=(0,P.whole_to_raw)("0.00120703011"),w=BigInt(g.amount);if(w_)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,P.whole_to_raw)("0.0012070301"),g=(0,P.whole_to_raw)("0.00120703011"),l=(0,P.raw_to_whole)(g);return g>BigInt(n)&&s<=BigInt(n)&&(l=(0,P.raw_to_whole)(BigInt(n))),await this.wallet.send(t,l,void 0,(0,P.get_address_from_public_key)(At(r)))}async declare_domain_metadata(r){await this.wallet.change_representative((0,P.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,P.raw_to_whole)(4224n))}};var mn={};var yo=Xe(ke());window.bns={...Nt,...Rt,...Xt,...mn,banani:yo};})(); +(()=>{var zn=Object.create;var Ze=Object.defineProperty;var Wn=Object.getOwnPropertyDescriptor;var Zn=Object.getOwnPropertyNames;var $n=Object.getPrototypeOf,ei=Object.prototype.hasOwnProperty;var I=(e,r)=>Ze(e,"name",{value:r,configurable:!0}),Br=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),vt=(e,r)=>{for(var t in r)Ze(e,t,{get:r[t],enumerable:!0})},ti=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Zn(r))!ei.call(e,s)&&s!==t&&Ze(e,s,{get:()=>r[s],enumerable:!(n=Wn(r,s))||n.enumerable});return e};var Ke=(e,r,t)=>(t=e!=null?zn($n(e)):{},ti(r||!e||!e.__esModule?Ze(t,"default",{value:e,enumerable:!0}):t,e));var Ft=S((po,pr)=>{pr.exports=Qr;var $e=class extends Error{static{I(this,"AssertionError")}};$e.prototype.name="AssertionError";function Qr(e,r){if(!e){var t=new $e(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,Qr),t}}I(Qr,"assert")});var mr=S((Do,Dr)=>{function br(e){return e.length}I(br,"byteLength");function ri(e){let r=e.byteLength,t="";for(let n=0;n{var ye="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ae=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Sr,"byteLength");function ii(e){let r=e.byteLength,t="";for(let n=0;n>2]+ye[(e[n]&3)<<4|e[n+1]>>4]+ye[(e[n+1]&15)<<2|e[n+2]>>6]+ye[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I(ii,"toString");function oi(e,r,t=0,n=Sr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(w&15)<<4|B>>2,e[l++]=(B&3)<<6|b&63}return s}I(oi,"write");Ur.exports={byteLength:Sr,toString:ii,write:oi}});var kr=S((vo,Yr)=>{function Kr(e){return e.length>>>1}I(Kr,"byteLength");function Ai(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Fr,"hexValue")});var Mr=S((Ko,Lr)=>{function Kt(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(Kt,"byteLength");var Yt;if(typeof TextDecoder<"u"){let e=new TextDecoder;Yt=I(function(t){return e.decode(t)},"toString")}else Yt=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let w=0;for(;w>B,B-=6;B>=0;)r[_++]=128|w>>B&63,B-=6;l+=w>=65536?2:1}return g},"write");Lr.exports={byteLength:Kt,toString:Yt,write:kt}});var Vr=S((ko,Pr)=>{function Hr(e){return e.length*2}I(Hr,"byteLength");function si(e){let r=e.byteLength,t="";for(let n=0;n>8,B=_%256;e[t+l*2]=B,e[t+l*2+1]=w}return s}I(Ii,"write");Pr.exports={byteLength:Hr,toString:si,write:Ii}});var Tr=S((Mt,Rr)=>{var hi=mr(),ci=vr(),gi=kr(),fi=Mr(),ui=Vr(),et=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Ye(e){switch(e){case"ascii":return hi;case"base64":return ci;case"hex":return gi;case"utf8":case"utf-8":case void 0:return fi;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ui;default:throw new Error(`Unknown encoding: ${e}`)}}I(Ye,"codecFor");function Or(e){return e instanceof Uint8Array}I(Or,"isBuffer");function Ci(e){try{return Ye(e),!0}catch{return!1}}I(Ci,"isEncoding");function li(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Mt.fill(n,r,0,n.byteLength,t),n}I(li,"alloc");function yi(e){return new Uint8Array(e)}I(yi,"allocUnsafe");function _i(e){return new Uint8Array(e)}I(_i,"allocUnsafeSlow");function di(e,r){return Ye(r).byteLength(e)}I(di,"byteLength");function wi(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(Ei,"concat");function xi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Lt(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Ti=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),ji=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=w<<4|B>>2,s[l++]=B<<6|b}return s}})(),Ji=Ti({"wasm-binary:./blake2b.wat"(e,r){r.exports=ji("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")}}),Xi=Ji(),qi=WebAssembly.compile(Xi);jr.exports=async e=>(await WebAssembly.instantiate(await qi,e)).exports});var tn=S((Go,J)=>{var M=Ft(),zi=Tr(),W=null,Xr=typeof WebAssembly<"u"&&Jr()().then(e=>{W=e}),z=64,tt=[];J.exports=Y;var qr=J.exports.BYTES_MIN=16,zr=J.exports.BYTES_MAX=64,Vo=J.exports.BYTES=32,Wr=J.exports.KEYBYTES_MIN=16,Zr=J.exports.KEYBYTES_MAX=64,Oo=J.exports.KEYBYTES=32,$r=J.exports.SALTBYTES=16,en=J.exports.PERSONALBYTES=16;function Y(e,r,t,n,s){if(!(this instanceof Y))return new Y(e,r,t,n,s);if(!W)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(M(e>=qr,"digestLength must be at least "+qr+", was given "+e),M(e<=zr,"digestLength must be at most "+zr+", was given "+e),r!=null&&(M(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),M(r.length>=Wr,"key must be at least "+Wr+", was given "+r.length),M(r.length<=Zr,"key must be at least "+Zr+", was given "+r.length)),t!=null&&(M(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),M(t.length===$r,"salt must be exactly "+$r+", was given "+t.length)),n!=null&&(M(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),M(n.length===en,"personal must be exactly "+en+", was given "+n.length))),tt.length||(tt.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=tt.pop(),this._memory=new Uint8Array(W.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),W.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(Y,"Blake2b");Y.prototype._realloc=function(e){W.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(W.memory.buffer)};Y.prototype.update=function(e){return M(this.finalized===!1,"Hash instance finalized"),M(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),W.blake2b_update(this.pointer,z,z+e.length),this};Y.prototype.digest=function(e){if(M(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,tt.push(this.pointer),W.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return zi.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);M(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};Y.prototype.ready=Y.ready;Y.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};Y.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function Wi(){}I(Wi,"noop")});var Ht=S((jo,k)=>{var P=Ft(),Le=tn();function rt(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(rt,"ADD64AA");function rn(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(rn,"ADD64AC");function hn(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(hn,"B2B_GET32");function te(e,r,t,n,s,g){var l=ke[s],_=ke[s+1],w=ke[g],B=ke[g+1];rt(x,e,r),rn(x,e,l,_);var b=x[n]^x[e],m=x[n+1]^x[e+1];x[n]=m,x[n+1]=b,rt(x,t,n),b=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=b>>>24^m<<8,x[r+1]=m>>>24^b<<8,rt(x,e,r),rn(x,e,w,B),b=x[n]^x[e],m=x[n+1]^x[e+1],x[n]=b>>>16^m<<16,x[n+1]=m>>>16^b<<16,rt(x,t,n),b=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=m>>>31^b<<1,x[r+1]=b>>>31^m<<1}I(te,"B2B_G");var cn=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Zi=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],v=new Uint8Array(Zi.map(function(e){return e*2})),x=new Uint32Array(32),ke=new Uint32Array(32);function gn(e,r){var t=0;for(t=0;t<16;t++)x[t]=e.h[t],x[t+16]=cn[t];for(x[24]=x[24]^e.t,x[25]=x[25]^e.t/4294967296,r&&(x[28]=~x[28],x[29]=~x[29]),t=0;t<32;t++)ke[t]=hn(e.b,4*t);for(t=0;t<12;t++)te(0,8,16,24,v[t*16+0],v[t*16+1]),te(2,10,18,26,v[t*16+2],v[t*16+3]),te(4,12,20,28,v[t*16+4],v[t*16+5]),te(6,14,22,30,v[t*16+6],v[t*16+7]),te(0,10,20,30,v[t*16+8],v[t*16+9]),te(2,12,22,24,v[t*16+10],v[t*16+11]),te(4,14,16,26,v[t*16+12],v[t*16+13]),te(6,8,18,28,v[t*16+14],v[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^x[t]^x[t+16]}I(gn,"blake2bCompress");var re=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function _e(e,r,t,n){re.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,re[0]=e,r&&(re[1]=r.length),re[2]=1,re[3]=1,t&&re.set(t,32),n&&re.set(n,48);for(var s=0;s<16;s++)this.h[s]=cn[s]^hn(re,s*4);r&&(fn(this,r),this.c=128)}I(_e,"Blake2b");_e.prototype.update=function(e){return P(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),fn(this,e),this};_e.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return P(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),P(r.length>=this.outlen,"out must have at least outlen bytes of space"),$i(this,r),e==="hex"?eo(r):r};_e.prototype.final=_e.prototype.digest;_e.ready=function(e){Le.ready(function(){e()})};function fn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I($i,"blake2bFinal");function eo(e){for(var r="",t=0;t=nn,"outlen must be at least "+nn+", was given "+r),P(r<=on,"outlen must be at most "+on+", was given "+r),t!=null&&(P(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),P(t.length>=An,"key must be at least "+An+", was given "+t.length),P(t.length<=an,"key must be at most "+an+", was given "+t.length)),n!=null&&(P(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),P(n.length===sn,"salt must be exactly "+sn+", was given "+n.length)),s!=null&&(P(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),P(s.length===In,"personal must be exactly "+In+", was given "+s.length))),new ro(r,t,n,s)},"createHash");k.exports.ready=function(e){Le.ready(function(){e()})};k.exports.WASM_SUPPORTED=Le.SUPPORTED;k.exports.WASM_LOADED=!1;var nn=k.exports.BYTES_MIN=16,on=k.exports.BYTES_MAX=64,Ro=k.exports.BYTES=32,An=k.exports.KEYBYTES_MIN=16,an=k.exports.KEYBYTES_MAX=64,To=k.exports.KEYBYTES=32,sn=k.exports.SALTBYTES=16,In=k.exports.PERSONALBYTES=16;Le.ready(function(e){e||(k.exports.WASM_LOADED=!0,k.exports=Le)})});var un=S((Xo,nt)=>{(function(e){"use strict";let r=Ht();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(ee,"L32");function he(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(he,"ld32");function er(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(er,"dl64");function gt(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(gt,"st32");function tr(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(tr,"ts64");function ft(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(ft,"vn");function rr(i,A,o,a){return ft(i,A,o,a,16)}I(rr,"crypto_verify_16");function ut(i,A,o,a){return ft(i,A,o,a,32)}I(ut,"crypto_verify_32");function nr(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,d,p;for(u=0;u<4;u++)C[5*u]=he(a,4*u),C[1+u]=he(o,4*u),C[6+u]=he(A,4*u),C[11+u]=he(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(d=0;d<4;d++){for(p=0;p<4;p++)f[p]=C[(5*d+4*p)%16];for(f[1]^=ee(f[0]+f[3]|0,7),f[2]^=ee(f[1]+f[0]|0,9),f[3]^=ee(f[2]+f[1]|0,13),f[0]^=ee(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*d+(d+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-he(a,4*u)|0,C[6+u]=C[6+u]-he(A,4*u)|0;for(u=0;u<4;u++)gt(i,4*u,C[5*u]),gt(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)gt(i,4*u,C[u]+y[u]|0)}I(nr,"core");function ir(i,A,o,a){return nr(i,A,o,a,!1),0}I(ir,"crypto_core_salsa20");function Ge(i,A,o,a){return nr(i,A,o,a,!0),0}I(Ge,"crypto_core_hsalsa20");var pe=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,d;if(!h)return 0;for(d=0;d<16;d++)y[d]=0;for(d=0;d<8;d++)y[d]=c[d];for(;h>=64;){for(ir(f,y,C,pe),d=0;d<64;d++)i[A+d]=(o?o[a+d]:0)^f[d];for(u=1,d=8;d<16;d++)u=u+(y[d]&255)|0,y[d]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for(ir(f,y,C,pe),d=0;d>>=8}I(yt,"add1305");var Yn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function _t(i,A,o,a,h,c){var C,y,f,u,d=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),N=new Uint32Array(17),le=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)N[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)le[f]=D[f];for(yt(D,Yn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(le[f]^D[f]);for(f=0;f<16;f++)N[f]=c[f+16];for(N[16]=0,yt(D,N),f=0;f<16;f++)i[A+f]=D[f];return 0}I(_t,"crypto_onetimeauth");function ar(i,A,o,a,h,c){var C=new Uint8Array(16);return _t(C,0,o,a,h,c),rr(i,A,C,0)}I(ar,"crypto_onetimeauth_verify");function dt(i,A,o,a,h){var c;if(o<32)return-1;for(lt(i,0,A,0,o,a,h),_t(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(dt,"crypto_secretbox");function wt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(Ar(C,0,32,a,h),ar(A,16,A,32,o-32,C)!==0))return-1;for(lt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(wt,"crypto_secretbox_open");function X(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(X,"set25519");function be(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(be,"car25519");function ce(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(ce,"sel25519");function ge(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(be(C),be(C),be(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,ce(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(ge,"pack25519");function sr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return ge(o,i),ge(a,A),ut(o,0,a,0)}I(sr,"neq25519");function Ir(i){var A=new Uint8Array(32);return ge(A,i),A[0]&1}I(Ir,"par25519");function Et(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(Et,"unpack25519");function O(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(O,"A");function G(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(G,"Z");function Q(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];be(i),be(i)}I(Q,"M");function H(i,A){Q(i,A,A)}I(H,"S");function hr(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)H(o,o),a!==2&&a!==4&&Q(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(hr,"inv25519");function cr(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)H(o,o),a!==1&&Q(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(cr,"pow2523");function Ne(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),d=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,Et(h,o),C=0;C<16;C++)f[C]=h[C],d[C]=y[C]=u[C]=0;for(y[0]=d[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,ce(y,f,c),ce(u,d,c),O(p,y,u),G(y,y,u),O(u,f,d),G(f,f,d),H(d,p),H(D,y),Q(y,u,y),Q(u,f,p),O(p,y,u),G(y,y,u),H(f,y),G(u,d,D),Q(y,u,B),O(y,y,d),Q(u,u,y),Q(y,d,D),Q(d,f,h),H(f,p),ce(y,f,c),ce(u,d,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=d[C];var N=h.subarray(32),le=h.subarray(16);return hr(N,N),Q(le,le,N),ge(i,le),0}I(Ne,"crypto_scalarmult");function Re(i,A){return Ne(i,A,l)}I(Re,"crypto_scalarmult_base");function gr(i,A){return s(A,32),Re(i,A)}I(gr,"crypto_box_keypair");function Te(i,A,o){var a=new Uint8Array(32);return Ne(a,o,A),Ge(i,g,a,pe)}I(Te,"crypto_box_beforenm");var fr=dt,kn=wt;function Ln(i,A,o,a,h,c){var C=new Uint8Array(32);return Te(C,h,c),fr(i,A,o,a,C)}I(Ln,"crypto_box");function Mn(i,A,o,a,h,c){var C=new Uint8Array(32);return Te(C,h,c),kn(i,A,o,a,C)}I(Mn,"crypto_box_open");function De(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(De,"add64");function ur(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(ur,"shr64");function je(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=er(A,8*f+d);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=De(c[7],On(c[4]),Hn(c[4],c[5],c[6]),Rn[f],C[f%16]),h[7]=De(y,Vn(c[0]),Pn(c[0],c[1],c[2])),h[3]=De(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=De(C[u],C[(u+9)%16],Gn(C[(u+1)%16]),Nn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=De(c[f],a[f]),a[f]=c[f];d+=128,o-=128}for(f=0;f<8;f++)tr(i,8*f,a[f]);return o}I(Cr,"crypto_hashblocks");let fe=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Tn=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function lr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Tn[c];for(Cr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,yr(i,A,a),Je(A,i),Je(i,i),yr(i,A,a)}I(xt,"scalarmult");function me(i,A){var o=[n(),n(),n(),n()];X(o[0],K),X(o[1],$),X(o[2],w),Q(o[3],K,$),xt(i,o,A)}I(me,"scalarbase");function Bt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=fe(A,64),a[0]&=248,a[31]&=127,a[31]|=64,me(h,a),Xe(i,h);return 0}I(Bt,"crypto_sign_keypair");var qe=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Qt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*qe[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*qe[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(Qt,"modL");function pt(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;Qt(i,A)}I(pt,"reduce");function _r(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),d=[n(),n(),n(),n()];let p=xr(a);h=fe(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&G(i[0],_,i[0]),Q(i[3],i[0],i[1]),0)}I(jn,"unpackneg");function bt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||jn(f,a))return-1;for(h=0;h=0};function xr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=fe(i,64),A[0]&=248,A[31]&=127,A[31]|=64,me(o,A),Xe(h,o),h}I(xr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(oe),A=new Uint8Array(Ce);return Bt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(L(i),i.length!==Ce)throw new Error("bad secret key size");var A=new Uint8Array(oe);return A=xr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(L(i),i.length!==St)throw new Error("bad seed size");for(var A=new Uint8Array(oe),o=new Uint8Array(Ce),a=0;a<32;a++)o[a]=i[a];return Bt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=oe,e.sign.secretKeyLength=Ce,e.sign.seedLength=St,e.sign.signatureLength=q,e.hash=function(i){L(i);var A=new Uint8Array(Ut);return lr(A,i,i.length),A},e.hash.hashLength=Ut,e.verify=function(i,A){return L(i,A),i.length===0||A.length===0||i.length!==A.length?!1:ft(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var no=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),io=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),oo=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&no(r,e,t);return io(r,e),r},Ao=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Vt=oo(un()),ot=Ao(Ht()),ao="0000000000000000000000000000000000000000000000000000000000000006",Ot="62616E616E6F6D73672D",Me=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function He(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(Cn,"int_to_uint8array");E.int_to_uint8array=Cn;var ln=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function Pt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let w=5-_;l=(e[s]<>8-w&2**(8-w)-1)}r+=ln[l]}return r}I(Pt,"uint8array_to_base32");E.uint8array_to_base32=Pt;function so(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I(so,"int_to_binary");function Io(e){let r=0;for(let t=0;tso(ln.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(ho,"whole_to_raw");E.whole_to_raw=ho;function co(e,r=dn){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.RPCWithBackup=de.RPC=void 0;var Co=At(),at=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?"true":void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?"true":void 0,head:s,offset:g?`${g}`:void 0,reverse:l?"true":void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?"true":void 0,weight:s?"true":void 0,pending:g?"true":void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,Co.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?"true":void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};de.RPC=at;var Rt=class extends at{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};de.RPCWithBackup=Rt});var bn=S(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0})});var Dn=S(V=>{"use strict";var lo=V&&V.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),yo=V&&V.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),_o=V&&V.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&lo(r,e,t);return yo(r,e),r};Object.defineProperty(V,"__esModule",{value:!0});V.PrivateKeyAccount=V.Wallet=void 0;var F=_o(At()),st=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=F.uint8array_to_hex(t);return new e(r,n)}get private_key(){return F.get_private_key_from_seed(this.seed,this.index)}get public_key(){return F.get_public_key_from_private_key(this.private_key)}get address(){return F.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=F.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),w=F.get_public_key_from_address(r);s||(s=_.representative);let B=BigInt(_.balance),b=B-l;if(b<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${B}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:b.toString(),link:w,link_as_account:r},K=F.hash_block(m),$;n&&($=await this.work_function(K));let Qe=F.sign_block_hash(this.private_key,K),ee={...m,signature:Qe,work:$};return await this.send_process(ee,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,F.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let K=await this.get_account_info(void 0,!0);l=K.frontier,n=K.representative,g=BigInt(K.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},w=F.hash_block(_),B;t&&(B=await this.work_function(w));let b=F.sign_block_hash(this.private_key,w),m={..._,signature:b,work:B};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let B=await this.get_account_info(void 0,!0);g=B.frontier,l=B.representative,_=BigInt(B.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let w=[];for(let B of Object.keys(s)){let b=(_+BigInt(s[B].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:b,link:B},K=F.hash_block(m),$;n&&($=await this.work_function(K));let Qe=F.sign_block_hash(this.private_key,K),ee={...m,signature:Qe,work:$};await this.send_process(ee,"receive"),w.push(K),g=K,_=BigInt(b)}return w}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=F.hash_block(s),l;t&&(l=await this.work_function(g));let _=F.sign_block_hash(this.private_key,g),w={...s,signature:_,work:l};return await this.send_process(w,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return F.sign_message(this.private_key,r)}};V.Wallet=st;var Tt=class extends st{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};V.PrivateKeyAccount=Tt});var mn=S(It=>{"use strict";Object.defineProperty(It,"__esModule",{value:!0});It.RPCWorkProvider=void 0;var jt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};It.RPCWorkProvider=jt});var we=S(R=>{"use strict";var wo=R&&R.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Pe=R&&R.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&wo(r,e,t)};Object.defineProperty(R,"__esModule",{value:!0});Pe(At(),R);Pe(Qn(),R);Pe(bn(),R);Pe(Dn(),R);Pe(mn(),R)});var Jt={};vt(Jt,{LOG:()=>Ve,address_to_cid_v0:()=>xo,base58_to_hex:()=>Fn,bigint_to_uint8array:()=>vn,cid_v0_to_address:()=>Eo,decode_domain_name:()=>Ee,encode_domain_name:()=>ht,hex_to_base58:()=>Un});var Z=Ke(we());var Ve=!0;function ht(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,Z.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(ht,"encode_domain_name");function Ee(e){return new TextDecoder().decode((0,Z.hex_to_uint8array)(e)).replaceAll("\0","")}I(Ee,"decode_domain_name");var Sn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function Un(e){let r=BigInt(`0x${e}`),t="";for(;t+=Sn[Number(r%BigInt(58))],r=r/BigInt(58),r!==0n;);return t.split("").reverse().join("")}I(Un,"hex_to_base58");function vn(e,r){let t=new Uint8Array(r),n=e;for(let s=1;s<=r;s++)t[r-s]=Number(n%256n),n/=256n;return t}I(vn,"bigint_to_uint8array");function Fn(e){let r=0n;for(let t=0;tBe,Resolver:()=>qt,TLDAccount:()=>xe});var T=Ke(we());var ct=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},xe=class extends ct{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0);if(l.subtype==="send"&&_>=se&&_<=ne){let w=Ee((0,T.get_public_key_from_address)(l.representative));if(r===w)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,T.get_address_from_public_key)(l.link)}]}}if(l.representative===Ie&&l.subtype==="change"||l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0);if(l.subtype==="send"&&_>=se&&_<=ne){let w=Ee((0,T.get_public_key_from_address)(l.representative));s[w]?Ve&&console.log(`"${w}" already issued but TLD tried to issue again. Invalid.`):s[w]={tld:this.address,name:w,history:[{type:"transfer",block:l,to:(0,T.get_address_from_public_key)(l.link)}]}}if(l.representative===Ie&&l.subtype==="change"||l.hash===t)return this.all_issued=Object.values(s),this.all_issued}n=g[g.length-1].hash}}},Be=class extends ct{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return Ve&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0);if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return Ve&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=se&&l<=ne){let _=Ee((0,T.get_public_key_from_address)(g.representative));if(this.domain.name===_)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,T.get_address_from_public_key)(g.link)}),this.domain}else{if(g.subtype==="change"&&g.representative===Ie)return this.domain.history.push({type:"freeze",block:g}),this.domain;g.subtype==="change"?(this.domain.metadata_hash=(0,T.get_public_key_from_address)(g.representative),this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,T.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}))}if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},qt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new xe(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new Be(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=Ee((0,T.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if((_?.history.slice().reverse().find(B=>B.type==="transfer")).to===r)return _}};var $t={};vt($t,{DomainAccountManager:()=>Zt,TLDAccountManager:()=>Wt});var ie=Ke(we());var Wt=class extends xe{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,ie.get_address_from_public_key)(ht(r)))}async freeze(){await this.wallet.change_representative(Ie)}async receive(){await this.wallet.receive_all()}},Zt=class extends Be{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t,n){let s=!1,{history:g}=await this.rpc.get_account_history(this.address,1);if(g.length>1&&!n)throw s=!0,new Error("`allow_burning` must be true in order to receive this domain");let l=await this.rpc.get_block_info(r),_=BigInt(l.amount);if(_ne)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r,void 0,t)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,ie.raw_to_whole)(ne);return ne>BigInt(n)&&se<=BigInt(n)&&(s=(0,ie.raw_to_whole)(BigInt(n))),await this.wallet.send(t,s,void 0,(0,ie.get_address_from_public_key)(ht(r)))}async declare_domain_metadata(r){if(r===Xt)throw new Error("A metadata hash of all 1s freezes the domain");await this.wallet.change_representative((0,ie.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,ie.raw_to_whole)(4224n))}async freeze(){await this.wallet.change_representative(Ie)}};var Kn={};var Bo=Ke(we());window.bns={...Jt,...zt,...$t,...Kn,banani:Bo};})(); /*! Bundled license information: banani/tweetnacl_mod.js: diff --git a/bns_protocol.md b/bns_protocol.md index a94dc95..1a409b5 100644 --- a/bns_protocol.md +++ b/bns_protocol.md @@ -1,3 +1,5 @@ +*Version 1.0.0 release-candidate* + Very similar to [Airtune's Banano NFT protocol](https://github.com/Airtune/73-meta-tokens) In fact, though it is meant to be for domain names, it can actually be considered a sort of very limited NFT protocol. @@ -69,13 +71,14 @@ Receives a Domain Transfer block. If not the opening block of the account, the r - Subtype: send - Link (send block hash): Hash of the Domain Transfer block +- Representative: Can *optionally* be the TLD account in order to make resolving backwards easier ## Domain Metadata block To convey metadata associated with a block. Can only be sent by Domain Accounts - Subtype: change -- Representative: Hash of the metadata +- Representative: Hash of the metadata (**cannot be all 1s, then it is Domain Freeze**) > Currently, it is recommended that this metadata hash be a translated IPFS v0 Cid, so metadata files should be hosted on IPFS. IPFS is not mandated by the protocol, and it is perfectly acceptable to use something that is not IPFS to store metadata and use a regular SHA-256 hash of the file. However, clients will likely only support finding IPFS metadata. @@ -87,12 +90,12 @@ To change the what address the domain resolves to - Change in balance: 4224 raw - Link (recepient): Banano address the domain should resolve to (typically the actual Banano address of the owner) -## Maybe: Domain Freeze block +## Domain Freeze block All Domain Transfer blocks sent after this block are to be ignored. The domain becomes an "frozen domain". For a TLD account, prevents issuance of new domains for that TLD. For a Domain Account, prevents transfer of the domain currently held by it, as well as any change in resolving and metadata. Not the same as a burned domain for a Domain Account as frozen domains can still resolve to an address and have metadata, while burned domains cannot - Subtype: change -- Representative: Pub key of all 0s +- Representative: Pub key (in hexadecimal) of "451", followed by sixty-two 1s # Domain Metadata @@ -127,6 +130,8 @@ To resolve a domain to a Domain Account (after checking the domain name for vali The resolver should then go to the recipient of the Domain Transfer. If the opening block (height 1) is not a Domain Receive block for that Domain Transfer, then the resolver knows the domain has been burned, and the resolving process is over. The burned domain has no domain metadata or resolved address. If it does find the opening block is the Domain Receive block for that Domain Transfer, it should then crawl up the chain again, keeping note of any Domain Metadata or Domain Resolver blocks. Newer blocks replace the older ones. If it encounters a Domain Transfer block, it should discard the noted domain metadata and resolved address, and repeat. If it does not encounter a Domain Transfer block, and reaches the frontier (latest) block, then it should return the noted domain metadata and resolved address (or lack thereof). +Resolving backwards is also possible, but slightly more complicated. In the resolved address, look for any receives or pending transactions of 4242 raw in order to find Domain Accounts. If the resolver know what TLD address the domain is supposed to be, great. If not, try finding out by looking at the representative of the opening block (Domain Receive) of the found Domain Account. From the opening block's corresponding send (Domain Transfer), the resolver can find the domain name. Then, resolve like normal since the resolver now has the TLD address and domain name. After resolving, the resolver must check to make sure that the found domain account actually owns the domain. + ## TLD (Issuing domains) A TLD operator can use whatever system it wants for issuing domain names. Some ideas are taking payments or issuing based on certain criteria (eg, citizenship). It should not issue invalid domain names. Even if it does, clients will ignore them. TLDs should also refuse to send to Banano accounts that already have blocks, because otherwise the domain name will be burned, which is probably not what the purchaser of the domain wants. diff --git a/browser-main.ts b/browser-main.ts index 04e303f..1815c06 100644 --- a/browser-main.ts +++ b/browser-main.ts @@ -1,4 +1,5 @@ import * as util from "./util"; +export * from "./constants"; import * as resolver from "./resolver"; import * as manager from "./manager"; import * as types from "./types"; diff --git a/browser_test/index.html b/browser_test/index.html index 56fa1c3..1ad8869 100644 --- a/browser_test/index.html +++ b/browser_test/index.html @@ -12,6 +12,9 @@ #main div { max-width: 50vw; } + .danger { + color: red; + } @media only screen and (max-width: 900px) { #main { grid-template-columns: auto; @@ -67,6 +70,8 @@
+

+

Domain Account Manager

@@ -104,8 +109,8 @@
-

Upload metadata to IPFS

- // +

+
@@ -279,11 +284,16 @@ async function get_domain_account_domain() { const resolver = new bns.Resolver(rpc2, tld_mapping); - domain_account_domain = resolver.resolve_backwards_ish(wallet.address, d.g("rc-tld").value); - domain_account_domain = await domain_account_domain; + domain_account_domain = await resolver.resolve_backwards_ish(wallet.address, d.g("rc-tld").value); + let frozen = false; + if (domain_account_domain.history[domain_account_domain.history.length - 1].type === "freeze") { + alert("This domain is frozen! That means you can't do anything with it."); + frozen = true; + } const { name, resolved_address, metadata_hash } = domain_account_domain; console.log(domain_account_domain); - d.g("found-name").textContent = name + d.g("found-name").textContent = name; + if (frozen) d.g("found-name").classList.add("danger"); d.g("found-address").textContent = resolved_address; const cid_v0 = metadata_hash ? get_cid_v0_from_public_key(metadata_hash) : "none"; d.g("found-metadata").innerHTML = `${metadata_hash} (IPFS translation: ${cid_v0})`; @@ -308,6 +318,13 @@ d.g("transfer-link").href = `https://creeper.banano.cc/hash/${transfer_hash}`; } + async function freeze(is_tld) { + if (await prompt(`Are you sure you want to freeze the ${ is_tld ? "TLD" : "domain" }? This will mean you can no longer transfer it, change the resolved address, or the metadata hash. Respond 'I am super sure' to proceed.`).trim() === "I am super sure") { + is_tld ? await tld_account.freeze() : await domain_account.freeze(); + alert(`The ${ is_tld ? "TLD" : "domain" } should now be frozen`); + } + } + function seed_proceed() { d.g("start-2").style.display = "none"; d.g("main").style.display = "grid"; diff --git a/constants.ts b/constants.ts new file mode 100644 index 0000000..bfc22aa --- /dev/null +++ b/constants.ts @@ -0,0 +1,8 @@ +import { whole_to_raw, get_address_from_public_key } from "banani"; + +export const TRANS_MIN = whole_to_raw("0.0012070301"); +export const TRANS_MAX = whole_to_raw("0.00120703011"); + +export const FREEZE_PUB_KEY = "451" + "1".repeat(61); +export const FREEZE_REP = get_address_from_public_key(FREEZE_PUB_KEY); + diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 102f494..82a7073 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA62ZXU/bMBSG/0uv2RcbjHEHTNvQ2IYAiQuEolPntLGaOpXtFKpp/31O0zZO7TiuncvW73mf468TO3n6O5L4KkfnozEwYHR0NFqAzNTveZGWOYp39f9vMznPVeOMsnR0/uloRHIQQsmkSN9Q8UZ5IGdQSUhG85QjG50/7cxvOV2CxJ+4uiCkKJlsOGujhmMo2+QPx2fd7H9HO+Dd7VUnQrUFmz5SmV0CmZULl32jCgcVfHbLiyVNkTtRmi4M9gh5jt0TUjeHWW+m8BJyYARbc0KZkk+ANCBD3GYen5wewvxBhSz46jIvyMyDqsuH4Pr1tREPwoSXA7u7jRiIflin1/oo8jWbFH7MjTKKdocEVW0a554LuaUfiHxflNx3I1miBsriIeMosiJPD01ED4zMZaGckEmQdOk9HnsxURk8Ip1m0o+800YRxaYyCj+oLo/jtgfOF29GhWXRW9IiKtg69Gq9ONydagkjWB4VS9dFkH4X93TKQJYce2maNoIofDsn4nvXtwh3ojDGV8xxCuopJXwWh6mOpXoDg1kq8Hrr60LpukBSuw78YTllfRW7K2bADLzqtztykGwOyyCYar9OmLzu64T3UyNVlz8l2kHkaqE9HerWPev3Xz5/ODk+xP6W44S+uiG1Jhy1LiIXef5QeXegWppI1CUISnphjSoS9wNE5gJV7ZGIG1WmyKq3S5osEniv9gleZcCm2Evd18aiy3HFcBJrSTjoUZ2duwjrtghrtfG/lYxIWrAugiYJB41B4MfjRBZJqcrPGXAOqwY42fjvoDZ5G37qeBulcYkylbwkMpmr2gBTTMbVnCTA0iRrbQUjh77QoHymKBOoC1Uy4cU8WZTjnJJkhq7hcEQFZ7GoX7lVHrWnQEx7crDGhGew60RtBvvPEHsO9qjBstD6eGAmWmRQNtWiqteYA9yIwhj46r0JDW0QUUV7Ew1tEJHDS+Xy0i6bBkyXBXGEuj5takJPKdlThtM2lagPtZEFcZrBr0anLsQOnk0+AFetPW+o0oYR5eTMe2ma4iDmEjmdrPxWjaGNIVbrAlOPBWTVB5HXO6saM7XTHEBddgDnWb9DF3OgrPMjU6vZ+KbR5fNLpTe1fYaxqVyudyiKfGlz2ra4oh9uvnZ2rGnzc+jskiHpHyXrfbJuMq6QRnD36z2tvd/mF0pIQYLDaSvpN6tfWNvfi7QUPlb7M27xsk29zeyBAxMTp9lW4jnwxgVJb7Oe8TWfmz/fm/AlcFq94hfv1N/tyI960PbwqnY5oWmyfG+rB4Zovxrs3SdOzpxPCk3gMqJTvxOKReewrTtQyR2nWkPkMEyRFCkm6XqmEgZzaw03VQ5LZD6WpsphuTky1oNvc2sJDKPn/7j8/9qZIAAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA62ZYXPaOBCG/wuf02ubXnq5fAspuWaapAzhJu11Oh4hL1iDkRlJJqE3999PxgbLSJaF5I/Jvvs+K3m9RvaPfwcCXsXgajBDFFEyOBuskUjk36sszlPgb8v//5aIVSqDS0LjwdXvZwOcIs6lTPD4DeFvpAcwigoJTkgaM6CDqx8H8zEjGyTgC2yvMc5yKmrOzqjmaMom+f35ZTv7v7MDcDK+aUXImLfpMxHJEOFlvrbZ1yp/UMaWY5ZtSAzMilJ0frBnlKbQfkHKsJ91dQmHKEUUQ+OaECrlc4RrkCZuMs8vPp7C/Ey4yNh2mGZ46UBV5X1w3dZai3thopcTl7vP6Il+2qJ3+iDyHZ1nbsxKGUSbAAY5m2apYyM39D2Rn7Kcud5IhqyeqpgmDHiSpfGphaiJgbWspRNQgQTZOO/HUU5QBc9AFolwIx+0QUReTUbuBlXlYdzmxrni9Sy/KjpHWsAE26Xe7JrDvqiGMIDlMLFUXQDpMXsiC4pEzqCTpmgDiNx1cTx8dV1NeBD5MT5BCgskn1LcpTl0dSjVGejNkol3e18bStV5kppz4CtNCe2a2G05PVbgNL/tmb1Uc1oF3lTzcULntR8nnJ8asTz8SdEBIrZr5elQRo+s3/35x/uL81Psxwzm5NUOKTX+qN0QuU7TaeHdgmpoAlFDxAnuhNWqQNxnxBMbqIgHIu7lmMLbziUpskDgk7xP4CZBdAGd1GNtKDqfFQwrsZT4g57lb+c2wi4WYC1v/NucYkEy2kZQJP6gGeLw4TwSWZTL8XOJGEPbGjiv/A9Qk7wJ/2h5G6VwsTQVLMciWsnZgBYQzYprEiEaR0njVtBq6Er1qmcBIkLloIrmLFtF63yWEhwtwbYdlizvKtblK7fCo/TkAHFHDcYc/woOiyjN0PEzxFyDOau3KpQ1nliJkulVTdFUZY9ZwLXIjwGvzjehpvUiymxnoqb1IjL0Uri8NMemBlNlXhwuj0/VTOgYJUdKf1o1ibpQlcyLU29+sTvlILbwTPIeuLL3nKFS60cU80vn1tTFXswNMDLfunWNpg0hFn0BsUMDGfVe5N2dVeyZvNMsQFV2AueneobOVojQ1o9MjbD2TaPN50GWtzB9hjGpbK4T4Fm6MTntI7bs6f2n1oXVMTeH1iVpku5dMp4ny5B2hNSS21/vKfFum1sG8Mv8JkMVdBs9gEAxEshitZd0m5Vvvm1lVQoXq+PWMXiZeshkNmWI8rnVbC9xvILaSUuNGQ8Lis/tZDT6ZxSN/x5GX0bfa6cNYqT4bMDfNhVNvw8Gq8lobLGRUYvF/de/TLny35ak6eT68Sl6uP5mSj0Euw3uHi0Gd48Wg/2pQI5PTOJo8840aDXR8Zg9OqhdXFofwYrAZkQWbj/9DDqLbbmAQm45Lmgii2EMOIshinedG1G0Mj4cdZXFEqiLpa6yWFa/xcvNN7k1BJrRz/8Bki4U8PIhAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 2b8576d..0e71d21 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/bns-browser.js b/docs/bns-browser.js index 96e5d22..72a3daf 100644 --- a/docs/bns-browser.js +++ b/docs/bns-browser.js @@ -1,4 +1,4 @@ -(()=>{var Rn=Object.create;var Je=Object.defineProperty;var jn=Object.getOwnPropertyDescriptor;var Jn=Object.getOwnPropertyNames;var Xn=Object.getPrototypeOf,qn=Object.prototype.hasOwnProperty;var I=(e,r)=>Je(e,"name",{value:r,configurable:!0}),_r=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var U=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Dt=(e,r)=>{for(var t in r)Je(e,t,{get:r[t],enumerable:!0})},Wn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Jn(r))!qn.call(e,s)&&s!==t&&Je(e,s,{get:()=>r[s],enumerable:!(n=jn(r,s))||n.enumerable});return e};var Xe=(e,r,t)=>(t=e!=null?Rn(Xn(e)):{},Wn(r||!e||!e.__esModule?Je(t,"default",{value:e,enumerable:!0}):t,e));var mt=U((wo,wr)=>{wr.exports=dr;var qe=class extends Error{static{I(this,"AssertionError")}};qe.prototype.name="AssertionError";function dr(e,r){if(!e){var t=new qe(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,dr),t}}I(dr,"assert")});var Br=U((xo,xr)=>{function Er(e){return e.length}I(Er,"byteLength");function zn(e){let r=e.byteLength,t="";for(let n=0;n{var ue="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",oe=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Qr,"byteLength");function $n(e){let r=e.byteLength,t="";for(let n=0;n>2]+ue[(e[n]&3)<<4|e[n+1]>>4]+ue[(e[n+1]&15)<<2|e[n+2]>>6]+ue[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I($n,"toString");function ei(e,r,t=0,n=Qr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(w&15)<<4|x>>2,e[l++]=(x&3)<<6|Q&63}return s}I(ei,"write");br.exports={byteLength:Qr,toString:$n,write:ei}});var Ur=U((po,Sr)=>{function mr(e){return e.length>>>1}I(mr,"byteLength");function ti(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Dr,"hexValue")});var Fr=U((mo,vr)=>{function St(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(St,"byteLength");var Ut;if(typeof TextDecoder<"u"){let e=new TextDecoder;Ut=I(function(t){return e.decode(t)},"toString")}else Ut=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let w=0;for(;w>x,x-=6;x>=0;)r[_++]=128|w>>x&63,x-=6;l+=w>=65536?2:1}return g},"write");vr.exports={byteLength:St,toString:Ut,write:vt}});var kr=U((Uo,Yr)=>{function Kr(e){return e.length*2}I(Kr,"byteLength");function ni(e){let r=e.byteLength,t="";for(let n=0;n>8,x=_%256;e[t+l*2]=x,e[t+l*2+1]=w}return s}I(ii,"write");Yr.exports={byteLength:Kr,toString:ni,write:ii}});var Vr=U((Kt,Pr)=>{var oi=Br(),Ai=pr(),ai=Ur(),si=Fr(),Ii=kr(),We=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Se(e){switch(e){case"ascii":return oi;case"base64":return Ai;case"hex":return ai;case"utf8":case"utf-8":case void 0:return si;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ii;default:throw new Error(`Unknown encoding: ${e}`)}}I(Se,"codecFor");function Lr(e){return e instanceof Uint8Array}I(Lr,"isBuffer");function hi(e){try{return Se(e),!0}catch{return!1}}I(hi,"isEncoding");function ci(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Kt.fill(n,r,0,n.byteLength,t),n}I(ci,"alloc");function gi(e){return new Uint8Array(e)}I(gi,"allocUnsafe");function fi(e){return new Uint8Array(e)}I(fi,"allocUnsafeSlow");function ui(e,r){return Se(r).byteLength(e)}I(ui,"byteLength");function Ci(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(li,"concat");function yi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Ft(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Vi=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),Oi=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=w<<4|x>>2,s[l++]=x<<6|Q}return s}})(),Gi=Vi({"wasm-binary:./blake2b.wat"(e,r){r.exports=Oi("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMKvz8EwAIAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIABCADcDeCAAQoiS853/zPmE6gBBACkDAIU3A4ABIABCu86qptjQ67O7f0EIKQMAhTcDiAEgAEKr8NP0r+68tzxBECkDAIU3A5ABIABC8e30+KWn/aelf0EYKQMAhTcDmAEgAELRhZrv+s+Uh9EAQSApAwCFNwOgASAAQp/Y+dnCkdqCm39BKCkDAIU3A6gBIABC6/qG2r+19sEfQTApAwCFNwOwASAAQvnC+JuRo7Pw2wBBOCkDAIU3A7gBIABCADcDwAEgAEIANwPIASAAQgA3A9ABC20BA38gAEHAAWohAyAAQcgBaiEEIAQpAwCnIQUCQANAIAEgAkYNASAFQYABRgRAIAMgAykDACAFrXw3AwBBACEFIAAQAwsgACAFaiABLQAAOgAAIAVBAWohBSABQQFqIQEMAAsLIAQgBa03AwALYQEDfyAAQcABaiEBIABByAFqIQIgASABKQMAIAIpAwB8NwMAIABCfzcD0AEgAikDAKchAwJAA0AgA0GAAUYNASAAIANqQQA6AAAgA0EBaiEDDAALCyACIAOtNwMAIAAQAwuqOwIgfgl/IABBgAFqISEgAEGIAWohIiAAQZABaiEjIABBmAFqISQgAEGgAWohJSAAQagBaiEmIABBsAFqIScgAEG4AWohKCAhKQMAIQEgIikDACECICMpAwAhAyAkKQMAIQQgJSkDACEFICYpAwAhBiAnKQMAIQcgKCkDACEIQoiS853/zPmE6gAhCUK7zqqm2NDrs7t/IQpCq/DT9K/uvLc8IQtC8e30+KWn/aelfyEMQtGFmu/6z5SH0QAhDUKf2PnZwpHagpt/IQ5C6/qG2r+19sEfIQ9C+cL4m5Gjs/DbACEQIAApAwAhESAAKQMIIRIgACkDECETIAApAxghFCAAKQMgIRUgACkDKCEWIAApAzAhFyAAKQM4IRggACkDQCEZIAApA0ghGiAAKQNQIRsgACkDWCEcIAApA2AhHSAAKQNoIR4gACkDcCEfIAApA3ghICANIAApA8ABhSENIA8gACkD0AGFIQ8gASAFIBF8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSASfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgE3x8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBR8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAVfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgFnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBd8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAYfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgGXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBp8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAbfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgHHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIB18fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAefHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgH3x8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFICB8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAffHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgG3x8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBV8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAZfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgGnx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHICB8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAefHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggF3x8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBJ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAdfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgEXx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBN8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAcfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGHx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBZ8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAUfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgHHx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBl8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAdfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgEXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBZ8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByATfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggIHx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIB58fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAbfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgH3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBR8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAXfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggGHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBJ8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAafHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFXx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBh8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAafHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgFHx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBJ8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAefHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHXx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBx8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAffHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgE3x8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBd8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAWfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgG3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBV8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCARfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgIHx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBl8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAafHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEXx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBZ8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAYfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgE3x8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBV8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAbfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggIHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIB98fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiASfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgHHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIB18fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAXfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGXx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBR8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAefHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgE3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIB18fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAXfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgG3x8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBF8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAcfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggGXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBR8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAVfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHnx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBh8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAWfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggIHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIB98fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSASfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgGnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIB18fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAWfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgEnx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGICB8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAffHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBV8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAbfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgEXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBh8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAXfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgFHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBp8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCATfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgGXx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBx8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAefHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgHHx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBh8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAffHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgHXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBJ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAUfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGnx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBZ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiARfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgIHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBV8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAZfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggF3x8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBN8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAbfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgF3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFICB8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAffHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGnx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBx8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAUfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggEXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBl8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAdfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgE3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIB58fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAYfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggEnx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBV8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAbfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBt8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSATfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgGXx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBV8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAYfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgF3x8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBJ8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAWfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgIHx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBx8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAafHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgH3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBR8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAdfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgHnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBF8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSARfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBN8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAUfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgFXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBZ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAXfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBl8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAafHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgG3x8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBx8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAdfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggHnx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIB98fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAgfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgH3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBt8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAVfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBp8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAgfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggHnx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBd8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiASfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHXx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBF8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByATfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggHHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBh8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAWfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFHx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgISAhKQMAIAEgCYWFNwMAICIgIikDACACIAqFhTcDACAjICMpAwAgAyALhYU3AwAgJCAkKQMAIAQgDIWFNwMAICUgJSkDACAFIA2FhTcDACAmICYpAwAgBiAOhYU3AwAgJyAnKQMAIAcgD4WFNwMAICggKCkDACAIIBCFhTcDAAs=")}}),Ni=Gi(),Ti=WebAssembly.compile(Ni);Or.exports=async e=>(await WebAssembly.instantiate(await Ti,e)).exports});var Wr=U((Mo,X)=>{var H=mt(),Ri=Vr(),Z=null,Nr=typeof WebAssembly<"u"&&Gr()().then(e=>{Z=e}),z=64,ze=[];X.exports=k;var Tr=X.exports.BYTES_MIN=16,Rr=X.exports.BYTES_MAX=64,ko=X.exports.BYTES=32,jr=X.exports.KEYBYTES_MIN=16,Jr=X.exports.KEYBYTES_MAX=64,Lo=X.exports.KEYBYTES=32,Xr=X.exports.SALTBYTES=16,qr=X.exports.PERSONALBYTES=16;function k(e,r,t,n,s){if(!(this instanceof k))return new k(e,r,t,n,s);if(!Z)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(H(e>=Tr,"digestLength must be at least "+Tr+", was given "+e),H(e<=Rr,"digestLength must be at most "+Rr+", was given "+e),r!=null&&(H(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),H(r.length>=jr,"key must be at least "+jr+", was given "+r.length),H(r.length<=Jr,"key must be at least "+Jr+", was given "+r.length)),t!=null&&(H(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),H(t.length===Xr,"salt must be exactly "+Xr+", was given "+t.length)),n!=null&&(H(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),H(n.length===qr,"personal must be exactly "+qr+", was given "+n.length))),ze.length||(ze.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=ze.pop(),this._memory=new Uint8Array(Z.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),Z.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(k,"Blake2b");k.prototype._realloc=function(e){Z.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(Z.memory.buffer)};k.prototype.update=function(e){return H(this.finalized===!1,"Hash instance finalized"),H(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),Z.blake2b_update(this.pointer,z,z+e.length),this};k.prototype.digest=function(e){if(H(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,ze.push(this.pointer),Z.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return Ri.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);H(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};k.prototype.ready=k.ready;k.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};k.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function ji(){}I(ji,"noop")});var Yt=U((Oo,L)=>{var O=mt(),ve=Wr();function Ze(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(Ze,"ADD64AA");function zr(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(zr,"ADD64AC");function on(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(on,"B2B_GET32");function re(e,r,t,n,s,g){var l=Ue[s],_=Ue[s+1],w=Ue[g],x=Ue[g+1];Ze(B,e,r),zr(B,e,l,_);var Q=B[n]^B[e],m=B[n+1]^B[e+1];B[n]=m,B[n+1]=Q,Ze(B,t,n),Q=B[r]^B[t],m=B[r+1]^B[t+1],B[r]=Q>>>24^m<<8,B[r+1]=m>>>24^Q<<8,Ze(B,e,r),zr(B,e,w,x),Q=B[n]^B[e],m=B[n+1]^B[e+1],B[n]=Q>>>16^m<<16,B[n+1]=m>>>16^Q<<16,Ze(B,t,n),Q=B[r]^B[t],m=B[r+1]^B[t+1],B[r]=m>>>31^Q<<1,B[r+1]=Q>>>31^m<<1}I(re,"B2B_G");var An=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Ji=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],F=new Uint8Array(Ji.map(function(e){return e*2})),B=new Uint32Array(32),Ue=new Uint32Array(32);function an(e,r){var t=0;for(t=0;t<16;t++)B[t]=e.h[t],B[t+16]=An[t];for(B[24]=B[24]^e.t,B[25]=B[25]^e.t/4294967296,r&&(B[28]=~B[28],B[29]=~B[29]),t=0;t<32;t++)Ue[t]=on(e.b,4*t);for(t=0;t<12;t++)re(0,8,16,24,F[t*16+0],F[t*16+1]),re(2,10,18,26,F[t*16+2],F[t*16+3]),re(4,12,20,28,F[t*16+4],F[t*16+5]),re(6,14,22,30,F[t*16+6],F[t*16+7]),re(0,10,20,30,F[t*16+8],F[t*16+9]),re(2,12,22,24,F[t*16+10],F[t*16+11]),re(4,14,16,26,F[t*16+12],F[t*16+13]),re(6,8,18,28,F[t*16+14],F[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^B[t]^B[t+16]}I(an,"blake2bCompress");var ne=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Ce(e,r,t,n){ne.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,ne[0]=e,r&&(ne[1]=r.length),ne[2]=1,ne[3]=1,t&&ne.set(t,32),n&&ne.set(n,48);for(var s=0;s<16;s++)this.h[s]=An[s]^on(ne,s*4);r&&(sn(this,r),this.c=128)}I(Ce,"Blake2b");Ce.prototype.update=function(e){return O(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),sn(this,e),this};Ce.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return O(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),O(r.length>=this.outlen,"out must have at least outlen bytes of space"),Xi(this,r),e==="hex"?qi(r):r};Ce.prototype.final=Ce.prototype.digest;Ce.ready=function(e){ve.ready(function(){e()})};function sn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I(Xi,"blake2bFinal");function qi(e){for(var r="",t=0;t=Zr,"outlen must be at least "+Zr+", was given "+r),O(r<=$r,"outlen must be at most "+$r+", was given "+r),t!=null&&(O(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),O(t.length>=en,"key must be at least "+en+", was given "+t.length),O(t.length<=tn,"key must be at most "+tn+", was given "+t.length)),n!=null&&(O(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),O(n.length===rn,"salt must be exactly "+rn+", was given "+n.length)),s!=null&&(O(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),O(s.length===nn,"personal must be exactly "+nn+", was given "+s.length))),new zi(r,t,n,s)},"createHash");L.exports.ready=function(e){ve.ready(function(){e()})};L.exports.WASM_SUPPORTED=ve.SUPPORTED;L.exports.WASM_LOADED=!1;var Zr=L.exports.BYTES_MIN=16,$r=L.exports.BYTES_MAX=64,Po=L.exports.BYTES=32,en=L.exports.KEYBYTES_MIN=16,tn=L.exports.KEYBYTES_MAX=64,Vo=L.exports.KEYBYTES=32,rn=L.exports.SALTBYTES=16,nn=L.exports.PERSONALBYTES=16;ve.ready(function(e){e||(L.exports.WASM_LOADED=!0,L.exports=ve)})});var In=U((No,$e)=>{(function(e){"use strict";let r=Yt();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(te,"L32");function ae(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(ae,"ld32");function qt(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(qt,"dl64");function st(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(st,"st32");function Wt(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(Wt,"ts64");function It(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(It,"vn");function zt(i,A,o,a){return It(i,A,o,a,16)}I(zt,"crypto_verify_16");function ht(i,A,o,a){return It(i,A,o,a,32)}I(ht,"crypto_verify_32");function Zt(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,d,p;for(u=0;u<4;u++)C[5*u]=ae(a,4*u),C[1+u]=ae(o,4*u),C[6+u]=ae(A,4*u),C[11+u]=ae(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(d=0;d<4;d++){for(p=0;p<4;p++)f[p]=C[(5*d+4*p)%16];for(f[1]^=te(f[0]+f[3]|0,7),f[2]^=te(f[1]+f[0]|0,9),f[3]^=te(f[2]+f[1]|0,13),f[0]^=te(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*d+(d+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-ae(a,4*u)|0,C[6+u]=C[6+u]-ae(A,4*u)|0;for(u=0;u<4;u++)st(i,4*u,C[5*u]),st(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)st(i,4*u,C[u]+y[u]|0)}I(Zt,"core");function $t(i,A,o,a){return Zt(i,A,o,a,!1),0}I($t,"crypto_core_salsa20");function Me(i,A,o,a){return Zt(i,A,o,a,!0),0}I(Me,"crypto_core_hsalsa20");var Ee=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,d;if(!h)return 0;for(d=0;d<16;d++)y[d]=0;for(d=0;d<8;d++)y[d]=c[d];for(;h>=64;){for($t(f,y,C,Ee),d=0;d<64;d++)i[A+d]=(o?o[a+d]:0)^f[d];for(u=1,d=8;d<16;d++)u=u+(y[d]&255)|0,y[d]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for($t(f,y,C,Ee),d=0;d>>=8}I(ft,"add1305");var Sn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function ut(i,A,o,a,h,c){var C,y,f,u,d=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),R=new Uint32Array(17),fe=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)R[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)fe[f]=D[f];for(ft(D,Sn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(fe[f]^D[f]);for(f=0;f<16;f++)R[f]=c[f+16];for(R[16]=0,ft(D,R),f=0;f<16;f++)i[A+f]=D[f];return 0}I(ut,"crypto_onetimeauth");function rr(i,A,o,a,h,c){var C=new Uint8Array(16);return ut(C,0,o,a,h,c),zt(i,A,C,0)}I(rr,"crypto_onetimeauth_verify");function Ct(i,A,o,a,h){var c;if(o<32)return-1;for(gt(i,0,A,0,o,a,h),ut(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(Ct,"crypto_secretbox");function lt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(tr(C,0,32,a,h),rr(A,16,A,32,o-32,C)!==0))return-1;for(gt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(lt,"crypto_secretbox_open");function q(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(q,"set25519");function xe(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(xe,"car25519");function se(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(se,"sel25519");function Ie(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(xe(C),xe(C),xe(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,se(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(Ie,"pack25519");function nr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return Ie(o,i),Ie(a,A),ht(o,0,a,0)}I(nr,"neq25519");function ir(i){var A=new Uint8Array(32);return Ie(A,i),A[0]&1}I(ir,"par25519");function yt(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(yt,"unpack25519");function N(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(N,"A");function T(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(T,"Z");function b(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];xe(i),xe(i)}I(b,"M");function V(i,A){b(i,A,A)}I(V,"S");function or(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)V(o,o),a!==2&&a!==4&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(or,"inv25519");function Ar(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)V(o,o),a!==1&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(Ar,"pow2523");function He(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),d=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,yt(h,o),C=0;C<16;C++)f[C]=h[C],d[C]=y[C]=u[C]=0;for(y[0]=d[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,se(y,f,c),se(u,d,c),N(p,y,u),T(y,y,u),N(u,f,d),T(f,f,d),V(d,p),V(D,y),b(y,u,y),b(u,f,p),N(p,y,u),T(y,y,u),V(f,y),T(u,d,D),b(y,u,x),N(y,y,d),b(u,u,y),b(y,d,D),b(d,f,h),V(f,p),se(y,f,c),se(u,d,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=d[C];var R=h.subarray(32),fe=h.subarray(16);return or(R,R),b(fe,fe,R),Ie(i,fe),0}I(He,"crypto_scalarmult");function Pe(i,A){return He(i,A,l)}I(Pe,"crypto_scalarmult_base");function ar(i,A){return s(A,32),Pe(i,A)}I(ar,"crypto_box_keypair");function Ve(i,A,o){var a=new Uint8Array(32);return He(a,o,A),Me(i,g,a,Ee)}I(Ve,"crypto_box_beforenm");var sr=Ct,Un=lt;function vn(i,A,o,a,h,c){var C=new Uint8Array(32);return Ve(C,h,c),sr(i,A,o,a,C)}I(vn,"crypto_box");function Fn(i,A,o,a,h,c){var C=new Uint8Array(32);return Ve(C,h,c),Un(i,A,o,a,C)}I(Fn,"crypto_box_open");function Be(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(Be,"add64");function Ir(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(Ir,"shr64");function Oe(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=qt(A,8*f+d);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=Be(c[7],Ln(c[4]),Kn(c[4],c[5],c[6]),Pn[f],C[f%16]),h[7]=Be(y,kn(c[0]),Yn(c[0],c[1],c[2])),h[3]=Be(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=Be(C[u],C[(u+9)%16],Mn(C[(u+1)%16]),Hn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=Be(c[f],a[f]),a[f]=c[f];d+=128,o-=128}for(f=0;f<8;f++)Wt(i,8*f,a[f]);return o}I(hr,"crypto_hashblocks");let he=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Vn=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function cr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Vn[c];for(hr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,gr(i,A,a),Ge(A,i),Ge(i,i),gr(i,A,a)}I(_t,"scalarmult");function Qe(i,A){var o=[n(),n(),n(),n()];q(o[0],Y),q(o[1],ee),q(o[2],w),b(o[3],Y,ee),_t(i,o,A)}I(Qe,"scalarbase");function dt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=he(A,64),a[0]&=248,a[31]&=127,a[31]|=64,Qe(h,a),Ne(i,h);return 0}I(dt,"crypto_sign_keypair");var Te=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function wt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*Te[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*Te[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(wt,"modL");function Et(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;wt(i,A)}I(Et,"reduce");function fr(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),d=[n(),n(),n(),n()];let p=yr(a);h=he(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&T(i[0],_,i[0]),b(i[3],i[0],i[1]),0)}I(On,"unpackneg");function xt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||On(f,a))return-1;for(h=0;h=0};function yr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=he(i,64),A[0]&=248,A[31]&=127,A[31]|=64,Qe(o,A),Ne(h,o),h}I(yr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(ie),A=new Uint8Array(ge);return dt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(M(i),i.length!==ge)throw new Error("bad secret key size");var A=new Uint8Array(ie);return A=yr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(M(i),i.length!==bt)throw new Error("bad seed size");for(var A=new Uint8Array(ie),o=new Uint8Array(ge),a=0;a<32;a++)o[a]=i[a];return dt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=ie,e.sign.secretKeyLength=ge,e.sign.seedLength=bt,e.sign.signatureLength=W,e.hash=function(i){M(i);var A=new Uint8Array(pt);return cr(A,i,i.length),A},e.hash.hashLength=pt,e.verify=function(i,A){return M(i,A),i.length===0||A.length===0||i.length!==A.length?!1:It(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var Zi=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),$i=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),eo=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&Zi(r,e,t);return $i(r,e),r},to=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Lt=eo(In()),tt=to(Yt()),ro="0000000000000000000000000000000000000000000000000000000000000006",Mt="62616E616E6F6D73672D",Fe=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function Ke(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(hn,"int_to_uint8array");E.int_to_uint8array=hn;var cn=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function kt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let w=5-_;l=(e[s]<>8-w&2**(8-w)-1)}r+=cn[l]}return r}I(kt,"uint8array_to_base32");E.uint8array_to_base32=kt;function no(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I(no,"int_to_binary");function io(e){let r=0;for(let t=0;tno(cn.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(oo,"whole_to_raw");E.whole_to_raw=oo;function Ao(e,r=un){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.RPCWithBackup=le.RPC=void 0;var ho=rt(),nt=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?"true":void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?"true":void 0,head:s,offset:g?`${g}`:void 0,reverse:l?"true":void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?"true":void 0,weight:s?"true":void 0,pending:g?"true":void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,ho.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?"true":void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};le.RPC=nt;var Vt=class extends nt{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};le.RPCWithBackup=Vt});var En=U(wn=>{"use strict";Object.defineProperty(wn,"__esModule",{value:!0})});var xn=U(G=>{"use strict";var co=G&&G.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),go=G&&G.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),fo=G&&G.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&co(r,e,t);return go(r,e),r};Object.defineProperty(G,"__esModule",{value:!0});G.PrivateKeyAccount=G.Wallet=void 0;var K=fo(rt()),it=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=K.uint8array_to_hex(t);return new e(r,n)}get private_key(){return K.get_private_key_from_seed(this.seed,this.index)}get public_key(){return K.get_public_key_from_private_key(this.private_key)}get address(){return K.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=K.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),w=K.get_public_key_from_address(r);s||(s=_.representative);let x=BigInt(_.balance),Q=x-l;if(Q<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${x}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:Q.toString(),link:w,link_as_account:r},Y=K.hash_block(m),ee;n&&(ee=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),te={...m,signature:we,work:ee};return await this.send_process(te,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,K.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let Y=await this.get_account_info(void 0,!0);l=Y.frontier,n=Y.representative,g=BigInt(Y.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},w=K.hash_block(_),x;t&&(x=await this.work_function(w));let Q=K.sign_block_hash(this.private_key,w),m={..._,signature:Q,work:x};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let x=await this.get_account_info(void 0,!0);g=x.frontier,l=x.representative,_=BigInt(x.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let w=[];for(let x of Object.keys(s)){let Q=(_+BigInt(s[x].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:Q,link:x},Y=K.hash_block(m),ee;n&&(ee=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),te={...m,signature:we,work:ee};await this.send_process(te,"receive"),w.push(Y),g=Y,_=BigInt(Q)}return w}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=K.hash_block(s),l;t&&(l=await this.work_function(g));let _=K.sign_block_hash(this.private_key,g),w={...s,signature:_,work:l};return await this.send_process(w,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return K.sign_message(this.private_key,r)}};G.Wallet=it;var Ot=class extends it{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};G.PrivateKeyAccount=Ot});var Bn=U(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.RPCWorkProvider=void 0;var Gt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};ot.RPCWorkProvider=Gt});var ke=U(j=>{"use strict";var uo=j&&j.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Ye=j&&j.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&uo(r,e,t)};Object.defineProperty(j,"__esModule",{value:!0});Ye(rt(),j);Ye(dn(),j);Ye(En(),j);Ye(xn(),j);Ye(Bn(),j)});var Nt={};Dt(Nt,{LOG:()=>Le,address_to_cid_v0:()=>lo,base58_to_hex:()=>Dn,bigint_to_uint8array:()=>pn,cid_v0_to_address:()=>Co,decode_domain_name:()=>ye,encode_domain_name:()=>At,hex_to_base58:()=>bn});var $=Xe(ke());var Le=!0;function At(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,$.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(At,"encode_domain_name");function ye(e){return new TextDecoder().decode((0,$.hex_to_uint8array)(e)).replaceAll("\0","")}I(ye,"decode_domain_name");var Qn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function bn(e){let r=BigInt(`0x${e}`),t="";for(;t+=Qn[Number(r%BigInt(58))],r=r/BigInt(58),r!==0n;);return t.split("").reverse().join("")}I(bn,"hex_to_base58");function pn(e,r){let t=new Uint8Array(r),n=e;for(let s=1;s<=r;s++)t[r-s]=Number(n%256n),n/=256n;return t}I(pn,"bigint_to_uint8array");function Dn(e){let r=0n;for(let t=0;tde,Resolver:()=>Tt,TLDAccount:()=>_e});var S=Xe(ke());var at=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},_e=class extends at{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0),w=(0,S.whole_to_raw)("0.0012070301"),x=(0,S.whole_to_raw)("0.00120703011");if(_>=w&&_<=x){let Q=ye((0,S.get_public_key_from_address)(l.representative));if(r===Q)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,S.get_address_from_public_key)(l.link)}]}}if(l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0),w=(0,S.whole_to_raw)("0.0012070301"),x=(0,S.whole_to_raw)("0.00120703011");if(l.subtype==="send"&&_>=w&&_<=x){let Q=ye((0,S.get_public_key_from_address)(l.representative));if(s[Q]?Le&&console.log(`"${Q}" already issued but TLD tried to issue again. Invalid.`):s[Q]={tld:this.address,name:Q,history:[{type:"transfer",block:l,to:(0,S.get_address_from_public_key)(l.link)}]},l.hash===t)return this.all_issued=Object.values(s),this.all_issued}}n=g[g.length-1].hash}}},de=class extends at{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return Le&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0),_=(0,S.whole_to_raw)("0.0012070301"),w=(0,S.whole_to_raw)("0.00120703011");if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return Le&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=_&&l<=w){let x=ye((0,S.get_public_key_from_address)(g.representative));if(this.domain.name===x)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,S.get_address_from_public_key)(g.link)}),this.domain}else g.subtype==="change"?(this.domain.metadata_hash=(0,S.get_public_key_from_address)(g.representative),this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,S.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}));if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},Tt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new _e(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new de(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=ye((0,S.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if(_.history.reverse().find(x=>x.type==="transfer").to===r)return _}};var Xt={};Dt(Xt,{DomainAccountManager:()=>Jt,TLDAccountManager:()=>jt});var P=Xe(ke());var jt=class extends _e{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,P.get_address_from_public_key)(At(r)))}async receive(){await this.wallet.receive_all()}},Jt=class extends de{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t){let n=!1,{history:s}=await this.rpc.get_account_history(this.address,1);if(s.length>1&&!t)throw n=!0,new Error("`allow_burning` must be true in order to receive this domain");let g=await this.rpc.get_block_info(r),l=(0,P.whole_to_raw)("0.0012070301"),_=(0,P.whole_to_raw)("0.00120703011"),w=BigInt(g.amount);if(w_)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,P.whole_to_raw)("0.0012070301"),g=(0,P.whole_to_raw)("0.00120703011"),l=(0,P.raw_to_whole)(g);return g>BigInt(n)&&s<=BigInt(n)&&(l=(0,P.raw_to_whole)(BigInt(n))),await this.wallet.send(t,l,void 0,(0,P.get_address_from_public_key)(At(r)))}async declare_domain_metadata(r){await this.wallet.change_representative((0,P.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,P.raw_to_whole)(4224n))}};var mn={};var yo=Xe(ke());window.bns={...Nt,...Rt,...Xt,...mn,banani:yo};})(); +(()=>{var zn=Object.create;var Ze=Object.defineProperty;var Wn=Object.getOwnPropertyDescriptor;var Zn=Object.getOwnPropertyNames;var $n=Object.getPrototypeOf,ei=Object.prototype.hasOwnProperty;var I=(e,r)=>Ze(e,"name",{value:r,configurable:!0}),Br=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),vt=(e,r)=>{for(var t in r)Ze(e,t,{get:r[t],enumerable:!0})},ti=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Zn(r))!ei.call(e,s)&&s!==t&&Ze(e,s,{get:()=>r[s],enumerable:!(n=Wn(r,s))||n.enumerable});return e};var Ke=(e,r,t)=>(t=e!=null?zn($n(e)):{},ti(r||!e||!e.__esModule?Ze(t,"default",{value:e,enumerable:!0}):t,e));var Ft=S((po,pr)=>{pr.exports=Qr;var $e=class extends Error{static{I(this,"AssertionError")}};$e.prototype.name="AssertionError";function Qr(e,r){if(!e){var t=new $e(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,Qr),t}}I(Qr,"assert")});var mr=S((Do,Dr)=>{function br(e){return e.length}I(br,"byteLength");function ri(e){let r=e.byteLength,t="";for(let n=0;n{var ye="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ae=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Sr,"byteLength");function ii(e){let r=e.byteLength,t="";for(let n=0;n>2]+ye[(e[n]&3)<<4|e[n+1]>>4]+ye[(e[n+1]&15)<<2|e[n+2]>>6]+ye[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I(ii,"toString");function oi(e,r,t=0,n=Sr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(w&15)<<4|B>>2,e[l++]=(B&3)<<6|b&63}return s}I(oi,"write");Ur.exports={byteLength:Sr,toString:ii,write:oi}});var kr=S((vo,Yr)=>{function Kr(e){return e.length>>>1}I(Kr,"byteLength");function Ai(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Fr,"hexValue")});var Mr=S((Ko,Lr)=>{function Kt(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(Kt,"byteLength");var Yt;if(typeof TextDecoder<"u"){let e=new TextDecoder;Yt=I(function(t){return e.decode(t)},"toString")}else Yt=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let w=0;for(;w>B,B-=6;B>=0;)r[_++]=128|w>>B&63,B-=6;l+=w>=65536?2:1}return g},"write");Lr.exports={byteLength:Kt,toString:Yt,write:kt}});var Vr=S((ko,Pr)=>{function Hr(e){return e.length*2}I(Hr,"byteLength");function si(e){let r=e.byteLength,t="";for(let n=0;n>8,B=_%256;e[t+l*2]=B,e[t+l*2+1]=w}return s}I(Ii,"write");Pr.exports={byteLength:Hr,toString:si,write:Ii}});var Tr=S((Mt,Rr)=>{var hi=mr(),ci=vr(),gi=kr(),fi=Mr(),ui=Vr(),et=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Ye(e){switch(e){case"ascii":return hi;case"base64":return ci;case"hex":return gi;case"utf8":case"utf-8":case void 0:return fi;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ui;default:throw new Error(`Unknown encoding: ${e}`)}}I(Ye,"codecFor");function Or(e){return e instanceof Uint8Array}I(Or,"isBuffer");function Ci(e){try{return Ye(e),!0}catch{return!1}}I(Ci,"isEncoding");function li(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Mt.fill(n,r,0,n.byteLength,t),n}I(li,"alloc");function yi(e){return new Uint8Array(e)}I(yi,"allocUnsafe");function _i(e){return new Uint8Array(e)}I(_i,"allocUnsafeSlow");function di(e,r){return Ye(r).byteLength(e)}I(di,"byteLength");function wi(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(Ei,"concat");function xi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Lt(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Ti=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),ji=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=w<<4|B>>2,s[l++]=B<<6|b}return s}})(),Ji=Ti({"wasm-binary:./blake2b.wat"(e,r){r.exports=ji("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")}}),Xi=Ji(),qi=WebAssembly.compile(Xi);jr.exports=async e=>(await WebAssembly.instantiate(await qi,e)).exports});var tn=S((Go,J)=>{var M=Ft(),zi=Tr(),W=null,Xr=typeof WebAssembly<"u"&&Jr()().then(e=>{W=e}),z=64,tt=[];J.exports=Y;var qr=J.exports.BYTES_MIN=16,zr=J.exports.BYTES_MAX=64,Vo=J.exports.BYTES=32,Wr=J.exports.KEYBYTES_MIN=16,Zr=J.exports.KEYBYTES_MAX=64,Oo=J.exports.KEYBYTES=32,$r=J.exports.SALTBYTES=16,en=J.exports.PERSONALBYTES=16;function Y(e,r,t,n,s){if(!(this instanceof Y))return new Y(e,r,t,n,s);if(!W)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(M(e>=qr,"digestLength must be at least "+qr+", was given "+e),M(e<=zr,"digestLength must be at most "+zr+", was given "+e),r!=null&&(M(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),M(r.length>=Wr,"key must be at least "+Wr+", was given "+r.length),M(r.length<=Zr,"key must be at least "+Zr+", was given "+r.length)),t!=null&&(M(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),M(t.length===$r,"salt must be exactly "+$r+", was given "+t.length)),n!=null&&(M(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),M(n.length===en,"personal must be exactly "+en+", was given "+n.length))),tt.length||(tt.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=tt.pop(),this._memory=new Uint8Array(W.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),W.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(Y,"Blake2b");Y.prototype._realloc=function(e){W.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(W.memory.buffer)};Y.prototype.update=function(e){return M(this.finalized===!1,"Hash instance finalized"),M(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),W.blake2b_update(this.pointer,z,z+e.length),this};Y.prototype.digest=function(e){if(M(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,tt.push(this.pointer),W.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return zi.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);M(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};Y.prototype.ready=Y.ready;Y.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};Y.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function Wi(){}I(Wi,"noop")});var Ht=S((jo,k)=>{var P=Ft(),Le=tn();function rt(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(rt,"ADD64AA");function rn(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(rn,"ADD64AC");function hn(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(hn,"B2B_GET32");function te(e,r,t,n,s,g){var l=ke[s],_=ke[s+1],w=ke[g],B=ke[g+1];rt(x,e,r),rn(x,e,l,_);var b=x[n]^x[e],m=x[n+1]^x[e+1];x[n]=m,x[n+1]=b,rt(x,t,n),b=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=b>>>24^m<<8,x[r+1]=m>>>24^b<<8,rt(x,e,r),rn(x,e,w,B),b=x[n]^x[e],m=x[n+1]^x[e+1],x[n]=b>>>16^m<<16,x[n+1]=m>>>16^b<<16,rt(x,t,n),b=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=m>>>31^b<<1,x[r+1]=b>>>31^m<<1}I(te,"B2B_G");var cn=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Zi=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],v=new Uint8Array(Zi.map(function(e){return e*2})),x=new Uint32Array(32),ke=new Uint32Array(32);function gn(e,r){var t=0;for(t=0;t<16;t++)x[t]=e.h[t],x[t+16]=cn[t];for(x[24]=x[24]^e.t,x[25]=x[25]^e.t/4294967296,r&&(x[28]=~x[28],x[29]=~x[29]),t=0;t<32;t++)ke[t]=hn(e.b,4*t);for(t=0;t<12;t++)te(0,8,16,24,v[t*16+0],v[t*16+1]),te(2,10,18,26,v[t*16+2],v[t*16+3]),te(4,12,20,28,v[t*16+4],v[t*16+5]),te(6,14,22,30,v[t*16+6],v[t*16+7]),te(0,10,20,30,v[t*16+8],v[t*16+9]),te(2,12,22,24,v[t*16+10],v[t*16+11]),te(4,14,16,26,v[t*16+12],v[t*16+13]),te(6,8,18,28,v[t*16+14],v[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^x[t]^x[t+16]}I(gn,"blake2bCompress");var re=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function _e(e,r,t,n){re.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,re[0]=e,r&&(re[1]=r.length),re[2]=1,re[3]=1,t&&re.set(t,32),n&&re.set(n,48);for(var s=0;s<16;s++)this.h[s]=cn[s]^hn(re,s*4);r&&(fn(this,r),this.c=128)}I(_e,"Blake2b");_e.prototype.update=function(e){return P(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),fn(this,e),this};_e.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return P(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),P(r.length>=this.outlen,"out must have at least outlen bytes of space"),$i(this,r),e==="hex"?eo(r):r};_e.prototype.final=_e.prototype.digest;_e.ready=function(e){Le.ready(function(){e()})};function fn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I($i,"blake2bFinal");function eo(e){for(var r="",t=0;t=nn,"outlen must be at least "+nn+", was given "+r),P(r<=on,"outlen must be at most "+on+", was given "+r),t!=null&&(P(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),P(t.length>=An,"key must be at least "+An+", was given "+t.length),P(t.length<=an,"key must be at most "+an+", was given "+t.length)),n!=null&&(P(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),P(n.length===sn,"salt must be exactly "+sn+", was given "+n.length)),s!=null&&(P(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),P(s.length===In,"personal must be exactly "+In+", was given "+s.length))),new ro(r,t,n,s)},"createHash");k.exports.ready=function(e){Le.ready(function(){e()})};k.exports.WASM_SUPPORTED=Le.SUPPORTED;k.exports.WASM_LOADED=!1;var nn=k.exports.BYTES_MIN=16,on=k.exports.BYTES_MAX=64,Ro=k.exports.BYTES=32,An=k.exports.KEYBYTES_MIN=16,an=k.exports.KEYBYTES_MAX=64,To=k.exports.KEYBYTES=32,sn=k.exports.SALTBYTES=16,In=k.exports.PERSONALBYTES=16;Le.ready(function(e){e||(k.exports.WASM_LOADED=!0,k.exports=Le)})});var un=S((Xo,nt)=>{(function(e){"use strict";let r=Ht();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(ee,"L32");function he(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(he,"ld32");function er(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(er,"dl64");function gt(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(gt,"st32");function tr(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(tr,"ts64");function ft(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(ft,"vn");function rr(i,A,o,a){return ft(i,A,o,a,16)}I(rr,"crypto_verify_16");function ut(i,A,o,a){return ft(i,A,o,a,32)}I(ut,"crypto_verify_32");function nr(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,d,p;for(u=0;u<4;u++)C[5*u]=he(a,4*u),C[1+u]=he(o,4*u),C[6+u]=he(A,4*u),C[11+u]=he(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(d=0;d<4;d++){for(p=0;p<4;p++)f[p]=C[(5*d+4*p)%16];for(f[1]^=ee(f[0]+f[3]|0,7),f[2]^=ee(f[1]+f[0]|0,9),f[3]^=ee(f[2]+f[1]|0,13),f[0]^=ee(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*d+(d+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-he(a,4*u)|0,C[6+u]=C[6+u]-he(A,4*u)|0;for(u=0;u<4;u++)gt(i,4*u,C[5*u]),gt(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)gt(i,4*u,C[u]+y[u]|0)}I(nr,"core");function ir(i,A,o,a){return nr(i,A,o,a,!1),0}I(ir,"crypto_core_salsa20");function Ge(i,A,o,a){return nr(i,A,o,a,!0),0}I(Ge,"crypto_core_hsalsa20");var pe=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,d;if(!h)return 0;for(d=0;d<16;d++)y[d]=0;for(d=0;d<8;d++)y[d]=c[d];for(;h>=64;){for(ir(f,y,C,pe),d=0;d<64;d++)i[A+d]=(o?o[a+d]:0)^f[d];for(u=1,d=8;d<16;d++)u=u+(y[d]&255)|0,y[d]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for(ir(f,y,C,pe),d=0;d>>=8}I(yt,"add1305");var Yn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function _t(i,A,o,a,h,c){var C,y,f,u,d=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),N=new Uint32Array(17),le=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)N[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)le[f]=D[f];for(yt(D,Yn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(le[f]^D[f]);for(f=0;f<16;f++)N[f]=c[f+16];for(N[16]=0,yt(D,N),f=0;f<16;f++)i[A+f]=D[f];return 0}I(_t,"crypto_onetimeauth");function ar(i,A,o,a,h,c){var C=new Uint8Array(16);return _t(C,0,o,a,h,c),rr(i,A,C,0)}I(ar,"crypto_onetimeauth_verify");function dt(i,A,o,a,h){var c;if(o<32)return-1;for(lt(i,0,A,0,o,a,h),_t(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(dt,"crypto_secretbox");function wt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(Ar(C,0,32,a,h),ar(A,16,A,32,o-32,C)!==0))return-1;for(lt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(wt,"crypto_secretbox_open");function X(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(X,"set25519");function be(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(be,"car25519");function ce(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(ce,"sel25519");function ge(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(be(C),be(C),be(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,ce(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(ge,"pack25519");function sr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return ge(o,i),ge(a,A),ut(o,0,a,0)}I(sr,"neq25519");function Ir(i){var A=new Uint8Array(32);return ge(A,i),A[0]&1}I(Ir,"par25519");function Et(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(Et,"unpack25519");function O(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(O,"A");function G(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(G,"Z");function Q(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];be(i),be(i)}I(Q,"M");function H(i,A){Q(i,A,A)}I(H,"S");function hr(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)H(o,o),a!==2&&a!==4&&Q(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(hr,"inv25519");function cr(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)H(o,o),a!==1&&Q(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(cr,"pow2523");function Ne(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),d=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,Et(h,o),C=0;C<16;C++)f[C]=h[C],d[C]=y[C]=u[C]=0;for(y[0]=d[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,ce(y,f,c),ce(u,d,c),O(p,y,u),G(y,y,u),O(u,f,d),G(f,f,d),H(d,p),H(D,y),Q(y,u,y),Q(u,f,p),O(p,y,u),G(y,y,u),H(f,y),G(u,d,D),Q(y,u,B),O(y,y,d),Q(u,u,y),Q(y,d,D),Q(d,f,h),H(f,p),ce(y,f,c),ce(u,d,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=d[C];var N=h.subarray(32),le=h.subarray(16);return hr(N,N),Q(le,le,N),ge(i,le),0}I(Ne,"crypto_scalarmult");function Re(i,A){return Ne(i,A,l)}I(Re,"crypto_scalarmult_base");function gr(i,A){return s(A,32),Re(i,A)}I(gr,"crypto_box_keypair");function Te(i,A,o){var a=new Uint8Array(32);return Ne(a,o,A),Ge(i,g,a,pe)}I(Te,"crypto_box_beforenm");var fr=dt,kn=wt;function Ln(i,A,o,a,h,c){var C=new Uint8Array(32);return Te(C,h,c),fr(i,A,o,a,C)}I(Ln,"crypto_box");function Mn(i,A,o,a,h,c){var C=new Uint8Array(32);return Te(C,h,c),kn(i,A,o,a,C)}I(Mn,"crypto_box_open");function De(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(De,"add64");function ur(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(ur,"shr64");function je(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=er(A,8*f+d);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=De(c[7],On(c[4]),Hn(c[4],c[5],c[6]),Rn[f],C[f%16]),h[7]=De(y,Vn(c[0]),Pn(c[0],c[1],c[2])),h[3]=De(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=De(C[u],C[(u+9)%16],Gn(C[(u+1)%16]),Nn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=De(c[f],a[f]),a[f]=c[f];d+=128,o-=128}for(f=0;f<8;f++)tr(i,8*f,a[f]);return o}I(Cr,"crypto_hashblocks");let fe=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Tn=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function lr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Tn[c];for(Cr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,yr(i,A,a),Je(A,i),Je(i,i),yr(i,A,a)}I(xt,"scalarmult");function me(i,A){var o=[n(),n(),n(),n()];X(o[0],K),X(o[1],$),X(o[2],w),Q(o[3],K,$),xt(i,o,A)}I(me,"scalarbase");function Bt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=fe(A,64),a[0]&=248,a[31]&=127,a[31]|=64,me(h,a),Xe(i,h);return 0}I(Bt,"crypto_sign_keypair");var qe=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Qt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*qe[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*qe[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(Qt,"modL");function pt(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;Qt(i,A)}I(pt,"reduce");function _r(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),d=[n(),n(),n(),n()];let p=xr(a);h=fe(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&G(i[0],_,i[0]),Q(i[3],i[0],i[1]),0)}I(jn,"unpackneg");function bt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||jn(f,a))return-1;for(h=0;h=0};function xr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=fe(i,64),A[0]&=248,A[31]&=127,A[31]|=64,me(o,A),Xe(h,o),h}I(xr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(oe),A=new Uint8Array(Ce);return Bt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(L(i),i.length!==Ce)throw new Error("bad secret key size");var A=new Uint8Array(oe);return A=xr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(L(i),i.length!==St)throw new Error("bad seed size");for(var A=new Uint8Array(oe),o=new Uint8Array(Ce),a=0;a<32;a++)o[a]=i[a];return Bt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=oe,e.sign.secretKeyLength=Ce,e.sign.seedLength=St,e.sign.signatureLength=q,e.hash=function(i){L(i);var A=new Uint8Array(Ut);return lr(A,i,i.length),A},e.hash.hashLength=Ut,e.verify=function(i,A){return L(i,A),i.length===0||A.length===0||i.length!==A.length?!1:ft(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var no=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),io=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),oo=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&no(r,e,t);return io(r,e),r},Ao=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Vt=oo(un()),ot=Ao(Ht()),ao="0000000000000000000000000000000000000000000000000000000000000006",Ot="62616E616E6F6D73672D",Me=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function He(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(Cn,"int_to_uint8array");E.int_to_uint8array=Cn;var ln=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function Pt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let w=5-_;l=(e[s]<>8-w&2**(8-w)-1)}r+=ln[l]}return r}I(Pt,"uint8array_to_base32");E.uint8array_to_base32=Pt;function so(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I(so,"int_to_binary");function Io(e){let r=0;for(let t=0;tso(ln.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(ho,"whole_to_raw");E.whole_to_raw=ho;function co(e,r=dn){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.RPCWithBackup=de.RPC=void 0;var Co=At(),at=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?"true":void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?"true":void 0,head:s,offset:g?`${g}`:void 0,reverse:l?"true":void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?"true":void 0,weight:s?"true":void 0,pending:g?"true":void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,Co.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?"true":void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};de.RPC=at;var Rt=class extends at{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};de.RPCWithBackup=Rt});var bn=S(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0})});var Dn=S(V=>{"use strict";var lo=V&&V.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),yo=V&&V.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),_o=V&&V.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&lo(r,e,t);return yo(r,e),r};Object.defineProperty(V,"__esModule",{value:!0});V.PrivateKeyAccount=V.Wallet=void 0;var F=_o(At()),st=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=F.uint8array_to_hex(t);return new e(r,n)}get private_key(){return F.get_private_key_from_seed(this.seed,this.index)}get public_key(){return F.get_public_key_from_private_key(this.private_key)}get address(){return F.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=F.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),w=F.get_public_key_from_address(r);s||(s=_.representative);let B=BigInt(_.balance),b=B-l;if(b<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${B}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:b.toString(),link:w,link_as_account:r},K=F.hash_block(m),$;n&&($=await this.work_function(K));let Qe=F.sign_block_hash(this.private_key,K),ee={...m,signature:Qe,work:$};return await this.send_process(ee,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,F.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let K=await this.get_account_info(void 0,!0);l=K.frontier,n=K.representative,g=BigInt(K.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},w=F.hash_block(_),B;t&&(B=await this.work_function(w));let b=F.sign_block_hash(this.private_key,w),m={..._,signature:b,work:B};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let B=await this.get_account_info(void 0,!0);g=B.frontier,l=B.representative,_=BigInt(B.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let w=[];for(let B of Object.keys(s)){let b=(_+BigInt(s[B].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:b,link:B},K=F.hash_block(m),$;n&&($=await this.work_function(K));let Qe=F.sign_block_hash(this.private_key,K),ee={...m,signature:Qe,work:$};await this.send_process(ee,"receive"),w.push(K),g=K,_=BigInt(b)}return w}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=F.hash_block(s),l;t&&(l=await this.work_function(g));let _=F.sign_block_hash(this.private_key,g),w={...s,signature:_,work:l};return await this.send_process(w,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return F.sign_message(this.private_key,r)}};V.Wallet=st;var Tt=class extends st{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};V.PrivateKeyAccount=Tt});var mn=S(It=>{"use strict";Object.defineProperty(It,"__esModule",{value:!0});It.RPCWorkProvider=void 0;var jt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};It.RPCWorkProvider=jt});var we=S(R=>{"use strict";var wo=R&&R.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Pe=R&&R.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&wo(r,e,t)};Object.defineProperty(R,"__esModule",{value:!0});Pe(At(),R);Pe(Qn(),R);Pe(bn(),R);Pe(Dn(),R);Pe(mn(),R)});var Jt={};vt(Jt,{LOG:()=>Ve,address_to_cid_v0:()=>xo,base58_to_hex:()=>Fn,bigint_to_uint8array:()=>vn,cid_v0_to_address:()=>Eo,decode_domain_name:()=>Ee,encode_domain_name:()=>ht,hex_to_base58:()=>Un});var Z=Ke(we());var Ve=!0;function ht(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,Z.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(ht,"encode_domain_name");function Ee(e){return new TextDecoder().decode((0,Z.hex_to_uint8array)(e)).replaceAll("\0","")}I(Ee,"decode_domain_name");var Sn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function Un(e){let r=BigInt(`0x${e}`),t="";for(;t+=Sn[Number(r%BigInt(58))],r=r/BigInt(58),r!==0n;);return t.split("").reverse().join("")}I(Un,"hex_to_base58");function vn(e,r){let t=new Uint8Array(r),n=e;for(let s=1;s<=r;s++)t[r-s]=Number(n%256n),n/=256n;return t}I(vn,"bigint_to_uint8array");function Fn(e){let r=0n;for(let t=0;tBe,Resolver:()=>qt,TLDAccount:()=>xe});var T=Ke(we());var ct=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},xe=class extends ct{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0);if(l.subtype==="send"&&_>=se&&_<=ne){let w=Ee((0,T.get_public_key_from_address)(l.representative));if(r===w)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,T.get_address_from_public_key)(l.link)}]}}if(l.representative===Ie&&l.subtype==="change"||l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0);if(l.subtype==="send"&&_>=se&&_<=ne){let w=Ee((0,T.get_public_key_from_address)(l.representative));s[w]?Ve&&console.log(`"${w}" already issued but TLD tried to issue again. Invalid.`):s[w]={tld:this.address,name:w,history:[{type:"transfer",block:l,to:(0,T.get_address_from_public_key)(l.link)}]}}if(l.representative===Ie&&l.subtype==="change"||l.hash===t)return this.all_issued=Object.values(s),this.all_issued}n=g[g.length-1].hash}}},Be=class extends ct{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return Ve&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0);if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return Ve&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=se&&l<=ne){let _=Ee((0,T.get_public_key_from_address)(g.representative));if(this.domain.name===_)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,T.get_address_from_public_key)(g.link)}),this.domain}else{if(g.subtype==="change"&&g.representative===Ie)return this.domain.history.push({type:"freeze",block:g}),this.domain;g.subtype==="change"?(this.domain.metadata_hash=(0,T.get_public_key_from_address)(g.representative),this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,T.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}))}if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},qt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new xe(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new Be(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=Ee((0,T.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if((_?.history.slice().reverse().find(B=>B.type==="transfer")).to===r)return _}};var $t={};vt($t,{DomainAccountManager:()=>Zt,TLDAccountManager:()=>Wt});var ie=Ke(we());var Wt=class extends xe{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,ie.get_address_from_public_key)(ht(r)))}async freeze(){await this.wallet.change_representative(Ie)}async receive(){await this.wallet.receive_all()}},Zt=class extends Be{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t,n){let s=!1,{history:g}=await this.rpc.get_account_history(this.address,1);if(g.length>1&&!n)throw s=!0,new Error("`allow_burning` must be true in order to receive this domain");let l=await this.rpc.get_block_info(r),_=BigInt(l.amount);if(_ne)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r,void 0,t)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,ie.raw_to_whole)(ne);return ne>BigInt(n)&&se<=BigInt(n)&&(s=(0,ie.raw_to_whole)(BigInt(n))),await this.wallet.send(t,s,void 0,(0,ie.get_address_from_public_key)(ht(r)))}async declare_domain_metadata(r){if(r===Xt)throw new Error("A metadata hash of all 1s freezes the domain");await this.wallet.change_representative((0,ie.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,ie.raw_to_whole)(4224n))}async freeze(){await this.wallet.change_representative(Ie)}};var Kn={};var Bo=Ke(we());window.bns={...Jt,...zt,...$t,...Kn,banani:Bo};})(); /*! Bundled license information: banani/tweetnacl_mod.js: diff --git a/docs/browser_test/index.html b/docs/browser_test/index.html index 56fa1c3..1ad8869 100644 --- a/docs/browser_test/index.html +++ b/docs/browser_test/index.html @@ -12,6 +12,9 @@ #main div { max-width: 50vw; } + .danger { + color: red; + } @media only screen and (max-width: 900px) { #main { grid-template-columns: auto; @@ -67,6 +70,8 @@
+

+

Domain Account Manager

@@ -104,8 +109,8 @@
-

Upload metadata to IPFS

- // +

+
@@ -279,11 +284,16 @@ async function get_domain_account_domain() { const resolver = new bns.Resolver(rpc2, tld_mapping); - domain_account_domain = resolver.resolve_backwards_ish(wallet.address, d.g("rc-tld").value); - domain_account_domain = await domain_account_domain; + domain_account_domain = await resolver.resolve_backwards_ish(wallet.address, d.g("rc-tld").value); + let frozen = false; + if (domain_account_domain.history[domain_account_domain.history.length - 1].type === "freeze") { + alert("This domain is frozen! That means you can't do anything with it."); + frozen = true; + } const { name, resolved_address, metadata_hash } = domain_account_domain; console.log(domain_account_domain); - d.g("found-name").textContent = name + d.g("found-name").textContent = name; + if (frozen) d.g("found-name").classList.add("danger"); d.g("found-address").textContent = resolved_address; const cid_v0 = metadata_hash ? get_cid_v0_from_public_key(metadata_hash) : "none"; d.g("found-metadata").innerHTML = `${metadata_hash} (IPFS translation: ${cid_v0})`; @@ -308,6 +318,13 @@ d.g("transfer-link").href = `https://creeper.banano.cc/hash/${transfer_hash}`; } + async function freeze(is_tld) { + if (await prompt(`Are you sure you want to freeze the ${ is_tld ? "TLD" : "domain" }? This will mean you can no longer transfer it, change the resolved address, or the metadata hash. Respond 'I am super sure' to proceed.`).trim() === "I am super sure") { + is_tld ? await tld_account.freeze() : await domain_account.freeze(); + alert(`The ${ is_tld ? "TLD" : "domain" } should now be frozen`); + } + } + function seed_proceed() { d.g("start-2").style.display = "none"; d.g("main").style.display = "grid"; diff --git a/docs/classes/DomainAccount.html b/docs/classes/DomainAccount.html index ab32303..f5e80d8 100644 --- a/docs/classes/DomainAccount.html +++ b/docs/classes/DomainAccount.html @@ -1,8 +1,8 @@ -DomainAccount | bns

Class DomainAccount

Hierarchy (view full)

Constructors

constructor +DomainAccount | bns

Class DomainAccount

Hierarchy (view full)

Constructors

Properties

address: `ban_${string}` | `nano_${string}`
domain?: Domain
rpc: RPC

Methods

  • Returns Promise<[string, string]>

\ No newline at end of file +

Constructors

Properties

address: `ban_${string}` | `nano_${string}`
domain?: Domain
rpc: RPC

Methods

  • Returns Promise<[string, string]>

\ No newline at end of file diff --git a/docs/classes/DomainAccountManager.html b/docs/classes/DomainAccountManager.html index 121157f..b110e2f 100644 --- a/docs/classes/DomainAccountManager.html +++ b/docs/classes/DomainAccountManager.html @@ -1,4 +1,4 @@ -DomainAccountManager | bns

Class DomainAccountManager

Hierarchy (view full)

Constructors

constructor +DomainAccountManager | bns

Class DomainAccountManager

Hierarchy (view full)

Constructors

Properties

address: `ban_${string}` | `nano_${string}`
domain?: Domain
rpc: RPC
wallet: Wallet

Methods

  • Parameters

    • metadata_hash: string

    Returns Promise<void>

  • Parameters

    • address: `ban_${string}` | `nano_${string}`

    Returns Promise<void>

  • Parameters

    • receive_hash: string
    • Optional allow_burning: boolean

    Returns Promise<void>

  • Parameters

    • domain_name: string
    • to: `ban_${string}` | `nano_${string}`

    Returns Promise<string>

\ No newline at end of file +

Constructors

Properties

address: `ban_${string}` | `nano_${string}`
domain?: Domain
rpc: RPC
wallet: Wallet

Methods

  • Parameters

    • metadata_hash: string

    Returns Promise<void>

  • Parameters

    • address: `ban_${string}` | `nano_${string}`

    Returns Promise<void>

  • Returns Promise<void>

  • Parameters

    • receive_hash: string
    • Optional tld: `ban_${string}` | `nano_${string}`
    • Optional allow_burning: boolean

    Returns Promise<void>

  • Parameters

    • domain_name: string
    • to: `ban_${string}` | `nano_${string}`

    Returns Promise<string>

\ No newline at end of file diff --git a/docs/classes/Resolver.html b/docs/classes/Resolver.html index 152f97a..bb022c9 100644 --- a/docs/classes/Resolver.html +++ b/docs/classes/Resolver.html @@ -1,6 +1,6 @@ -Resolver | bns

Class Resolver

Constructors

constructor +Resolver | bns

Class Resolver

Constructors

Properties

rpc: RPC
tld_mapping: Record<string, `ban_${string}` | `nano_${string}`>

Methods

  • Parameters

    • domain_account_address: `ban_${string}` | `nano_${string}`
    • tld: string

    Returns Promise<Domain>

\ No newline at end of file +

Constructors

Properties

rpc: RPC
tld_mapping: Record<string, `ban_${string}` | `nano_${string}`>

Methods

  • Parameters

    • domain_account_address: `ban_${string}` | `nano_${string}`
    • tld: string

    Returns Promise<Domain>

\ No newline at end of file diff --git a/docs/classes/TLDAccount.html b/docs/classes/TLDAccount.html index e2efb15..d0a3f9a 100644 --- a/docs/classes/TLDAccount.html +++ b/docs/classes/TLDAccount.html @@ -1,4 +1,4 @@ -TLDAccount | bns

Class TLDAccount

Hierarchy (view full)

Constructors

constructor +TLDAccount | bns

Class TLDAccount

Hierarchy (view full)

Constructors

Properties

address: `ban_${string}` | `nano_${string}`
all_issued: Domain[]
rpc: RPC

Methods

  • Returns Promise<[string, string]>

\ No newline at end of file +

Constructors

Properties

address: `ban_${string}` | `nano_${string}`
all_issued: Domain[]
rpc: RPC

Methods

  • Returns Promise<[string, string]>

\ No newline at end of file diff --git a/docs/classes/TLDAccountManager.html b/docs/classes/TLDAccountManager.html index efed34a..00203bd 100644 --- a/docs/classes/TLDAccountManager.html +++ b/docs/classes/TLDAccountManager.html @@ -1,12 +1,13 @@ -TLDAccountManager | bns

Class TLDAccountManager

Hierarchy (view full)

Constructors

constructor +TLDAccountManager | bns

Class TLDAccountManager

Hierarchy (view full)

Constructors

Properties

address: `ban_${string}` | `nano_${string}`
all_issued: Domain[]
rpc: RPC
wallet: Wallet

Methods

  • Parameters

    • domain_name: string
    • to: `ban_${string}` | `nano_${string}`

    Returns Promise<string>

  • Returns Promise<void>

\ No newline at end of file +

Constructors

Properties

address: `ban_${string}` | `nano_${string}`
all_issued: Domain[]
rpc: RPC
wallet: Wallet

Methods

  • Returns Promise<void>

  • Parameters

    • domain_name: string
    • to: `ban_${string}` | `nano_${string}`

    Returns Promise<string>

  • Returns Promise<void>

\ No newline at end of file diff --git a/docs/functions/address_to_cid_v0.html b/docs/functions/address_to_cid_v0.html index d92b3b0..bbb2bcd 100644 --- a/docs/functions/address_to_cid_v0.html +++ b/docs/functions/address_to_cid_v0.html @@ -1 +1,2 @@ -address_to_cid_v0 | bns

Function address_to_cid_v0

  • Parameters

    • address: `ban_${string}` | `nano_${string}`

    Returns string

\ No newline at end of file +address_to_cid_v0 | bns

Function address_to_cid_v0

  • Banano address to IPFS CID v0

    +

    Parameters

    • address: `ban_${string}` | `nano_${string}`

    Returns string

\ No newline at end of file diff --git a/docs/functions/base58_to_hex.html b/docs/functions/base58_to_hex.html index a00f778..570d9d3 100644 --- a/docs/functions/base58_to_hex.html +++ b/docs/functions/base58_to_hex.html @@ -1 +1 @@ -base58_to_hex | bns

Function base58_to_hex

  • Parameters

    • base58: string

    Returns string

\ No newline at end of file +base58_to_hex | bns

Function base58_to_hex

  • Parameters

    • base58: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/bigint_to_uint8array.html b/docs/functions/bigint_to_uint8array.html index 257a66c..e78dd51 100644 --- a/docs/functions/bigint_to_uint8array.html +++ b/docs/functions/bigint_to_uint8array.html @@ -1 +1 @@ -bigint_to_uint8array | bns

Function bigint_to_uint8array

  • Parameters

    • bint: bigint
    • len: number

    Returns Uint8Array

\ No newline at end of file +bigint_to_uint8array | bns

Function bigint_to_uint8array

  • Parameters

    • bint: bigint
    • len: number

    Returns Uint8Array

\ No newline at end of file diff --git a/docs/functions/cid_v0_to_address.html b/docs/functions/cid_v0_to_address.html index f9952c5..7f1db7e 100644 --- a/docs/functions/cid_v0_to_address.html +++ b/docs/functions/cid_v0_to_address.html @@ -1 +1,2 @@ -cid_v0_to_address | bns

Function cid_v0_to_address

\ No newline at end of file +cid_v0_to_address | bns

Function cid_v0_to_address

  • IPFS CID v0 to Banano address

    +

    Parameters

    • cid_v0: string

    Returns Address

\ No newline at end of file diff --git a/docs/functions/decode_domain_name.html b/docs/functions/decode_domain_name.html index 5dd2aaa..ecf7950 100644 --- a/docs/functions/decode_domain_name.html +++ b/docs/functions/decode_domain_name.html @@ -1 +1 @@ -decode_domain_name | bns

Function decode_domain_name

  • Parameters

    • encoded_domain_name: string

    Returns string

\ No newline at end of file +decode_domain_name | bns

Function decode_domain_name

  • Parameters

    • encoded_domain_name: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/encode_domain_name.html b/docs/functions/encode_domain_name.html index 4990e44..1de11af 100644 --- a/docs/functions/encode_domain_name.html +++ b/docs/functions/encode_domain_name.html @@ -1 +1 @@ -encode_domain_name | bns

Function encode_domain_name

  • Parameters

    • domain_name: string

    Returns string

\ No newline at end of file +encode_domain_name | bns

Function encode_domain_name

  • Parameters

    • domain_name: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/hex_to_base58.html b/docs/functions/hex_to_base58.html index 1c5a18b..617e0fd 100644 --- a/docs/functions/hex_to_base58.html +++ b/docs/functions/hex_to_base58.html @@ -1 +1 @@ -hex_to_base58 | bns

Function hex_to_base58

  • Parameters

    • hex: string

    Returns string

\ No newline at end of file +hex_to_base58 | bns

Function hex_to_base58

  • Parameters

    • hex: string

    Returns string

\ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 31691ef..5100ca6 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -bns
\ No newline at end of file +bns
\ No newline at end of file diff --git a/docs/interfaces/Domain.html b/docs/interfaces/Domain.html index cc31704..79cd257 100644 --- a/docs/interfaces/Domain.html +++ b/docs/interfaces/Domain.html @@ -1,7 +1,7 @@ -Domain | bns

Interface Domain

interface Domain {
    burned?: boolean;
    history: DomainBlocks[];
    metadata_hash?: string;
    name: string;
    resolved_address?: `ban_${string}` | `nano_${string}`;
    tld: `ban_${string}` | `nano_${string}`;
}

Properties

burned? +Domain | bns

Interface Domain

interface Domain {
    burned?: boolean;
    history: DomainBlocks[];
    metadata_hash?: string;
    name: string;
    resolved_address?: `ban_${string}` | `nano_${string}`;
    tld: `ban_${string}` | `nano_${string}`;
}

Properties

burned?: boolean
history: DomainBlocks[]
metadata_hash?: string
name: string
resolved_address?: `ban_${string}` | `nano_${string}`
tld: `ban_${string}` | `nano_${string}`
\ No newline at end of file +

Properties

burned?: boolean
history: DomainBlocks[]
metadata_hash?: string
name: string
resolved_address?: `ban_${string}` | `nano_${string}`
tld: `ban_${string}` | `nano_${string}`
\ No newline at end of file diff --git a/docs/interfaces/DomainBlock.html b/docs/interfaces/DomainBlock.html index 7fe3c3e..6ba1e15 100644 --- a/docs/interfaces/DomainBlock.html +++ b/docs/interfaces/DomainBlock.html @@ -1,3 +1,3 @@ -DomainBlock | bns

Interface DomainBlock

interface DomainBlock {
    block: AccountHistoryRawBlock;
    type: string;
}

Hierarchy (view full)

Properties

block +DomainBlock | bns

Interface DomainBlock

interface DomainBlock {
    block: AccountHistoryRawBlock;
    type: "receive" | "transfer" | "metadata" | "resolver" | "freeze";
}

Hierarchy (view full)

Properties

Properties

type: string
\ No newline at end of file +

Properties

type: "receive" | "transfer" | "metadata" | "resolver" | "freeze"
\ No newline at end of file diff --git a/docs/interfaces/DomainFreeze.html b/docs/interfaces/DomainFreeze.html new file mode 100644 index 0000000..bcd8f43 --- /dev/null +++ b/docs/interfaces/DomainFreeze.html @@ -0,0 +1,3 @@ +DomainFreeze | bns

Interface DomainFreeze

interface DomainFreeze {
    block: AccountHistoryRawBlock;
    type: "freeze";
}

Hierarchy (view full)

Properties

Properties

type: "freeze"
\ No newline at end of file diff --git a/docs/interfaces/DomainMetadata.html b/docs/interfaces/DomainMetadata.html index 1ed0b96..bbe0bf1 100644 --- a/docs/interfaces/DomainMetadata.html +++ b/docs/interfaces/DomainMetadata.html @@ -1,4 +1,4 @@ -DomainMetadata | bns

Interface DomainMetadata

interface DomainMetadata {
    block: AccountHistoryRawBlock;
    metadata_hash: string;
    type: "metadata";
}

Hierarchy (view full)

Properties

block +DomainMetadata | bns

Interface DomainMetadata

interface DomainMetadata {
    block: AccountHistoryRawBlock;
    metadata_hash: string;
    type: "metadata";
}

Hierarchy (view full)

Properties

metadata_hash: string
type: "metadata"
\ No newline at end of file +

Properties

metadata_hash: string
type: "metadata"
\ No newline at end of file diff --git a/docs/interfaces/DomainReceive.html b/docs/interfaces/DomainReceive.html index bf89ca9..a6720e0 100644 --- a/docs/interfaces/DomainReceive.html +++ b/docs/interfaces/DomainReceive.html @@ -1,3 +1,3 @@ -DomainReceive | bns

Interface DomainReceive

interface DomainReceive {
    block: AccountHistoryRawBlock;
    type: "receive";
}

Hierarchy (view full)

Properties

block +DomainReceive | bns

Interface DomainReceive

interface DomainReceive {
    block: AccountHistoryRawBlock;
    type: "receive";
}

Hierarchy (view full)

Properties

Properties

type: "receive"
\ No newline at end of file +

Properties

type: "receive"
\ No newline at end of file diff --git a/docs/interfaces/DomainResolver.html b/docs/interfaces/DomainResolver.html index 131314e..b3fa5bd 100644 --- a/docs/interfaces/DomainResolver.html +++ b/docs/interfaces/DomainResolver.html @@ -1,4 +1,4 @@ -DomainResolver | bns

Interface DomainResolver

interface DomainResolver {
    block: AccountHistoryRawBlock;
    resolved_address: `ban_${string}` | `nano_${string}`;
    type: "resolver";
}

Hierarchy (view full)

Properties

block +DomainResolver | bns

Interface DomainResolver

interface DomainResolver {
    block: AccountHistoryRawBlock;
    resolved_address: `ban_${string}` | `nano_${string}`;
    type: "resolver";
}

Hierarchy (view full)

Properties

resolved_address: `ban_${string}` | `nano_${string}`
type: "resolver"
\ No newline at end of file +

Properties

resolved_address: `ban_${string}` | `nano_${string}`
type: "resolver"
\ No newline at end of file diff --git a/docs/interfaces/DomainTransfer.html b/docs/interfaces/DomainTransfer.html index 02531e8..d2efb8e 100644 --- a/docs/interfaces/DomainTransfer.html +++ b/docs/interfaces/DomainTransfer.html @@ -1,4 +1,4 @@ -DomainTransfer | bns

Interface DomainTransfer

interface DomainTransfer {
    block: AccountHistoryRawBlock;
    to: `ban_${string}` | `nano_${string}`;
    type: "transfer";
}

Hierarchy (view full)

Properties

block +DomainTransfer | bns

Interface DomainTransfer

interface DomainTransfer {
    block: AccountHistoryRawBlock;
    to: `ban_${string}` | `nano_${string}`;
    type: "transfer";
}

Hierarchy (view full)

Properties

Properties

to: `ban_${string}` | `nano_${string}`
type: "transfer"
\ No newline at end of file +

Properties

to: `ban_${string}` | `nano_${string}`
type: "transfer"
\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index 4660ab8..ee5040f 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -6,12 +6,17 @@ TLDAccountManager

Interfaces

Type Aliases

Variables

LOG +

Variables

Functions

address_to_cid_v0 base58_to_hex bigint_to_uint8array diff --git a/docs/types/DomainBlocks.html b/docs/types/DomainBlocks.html index ccfe82e..9b15e66 100644 --- a/docs/types/DomainBlocks.html +++ b/docs/types/DomainBlocks.html @@ -1 +1 @@ -DomainBlocks | bns

Type alias DomainBlocks

\ No newline at end of file +DomainBlocks | bns
\ No newline at end of file diff --git a/docs/variables/FREEZE_PUB_KEY.html b/docs/variables/FREEZE_PUB_KEY.html new file mode 100644 index 0000000..7f25a6f --- /dev/null +++ b/docs/variables/FREEZE_PUB_KEY.html @@ -0,0 +1 @@ +FREEZE_PUB_KEY | bns

Variable FREEZE_PUB_KEYConst

FREEZE_PUB_KEY: string = ...
\ No newline at end of file diff --git a/docs/variables/FREEZE_REP.html b/docs/variables/FREEZE_REP.html new file mode 100644 index 0000000..c16bfd5 --- /dev/null +++ b/docs/variables/FREEZE_REP.html @@ -0,0 +1 @@ +FREEZE_REP | bns

Variable FREEZE_REPConst

FREEZE_REP: `ban_${string}` | `nano_${string}` = ...
\ No newline at end of file diff --git a/docs/variables/LOG.html b/docs/variables/LOG.html index f712a85..9df2673 100644 --- a/docs/variables/LOG.html +++ b/docs/variables/LOG.html @@ -1 +1 @@ -LOG | bns

Variable LOGConst

LOG: boolean = true
\ No newline at end of file +LOG | bns

Variable LOGConst

LOG: boolean = true
\ No newline at end of file diff --git a/docs/variables/TRANS_MAX.html b/docs/variables/TRANS_MAX.html new file mode 100644 index 0000000..ad7a09a --- /dev/null +++ b/docs/variables/TRANS_MAX.html @@ -0,0 +1 @@ +TRANS_MAX | bns

Variable TRANS_MAXConst

TRANS_MAX: bigint = ...
\ No newline at end of file diff --git a/docs/variables/TRANS_MIN.html b/docs/variables/TRANS_MIN.html new file mode 100644 index 0000000..1d8f010 --- /dev/null +++ b/docs/variables/TRANS_MIN.html @@ -0,0 +1 @@ +TRANS_MIN | bns

Variable TRANS_MINConst

TRANS_MIN: bigint = ...
\ No newline at end of file diff --git a/main.ts b/main.ts index c5617bf..6a7ce93 100644 --- a/main.ts +++ b/main.ts @@ -1,4 +1,5 @@ export * from "./util"; +export * from "./constants"; export * from "./resolver"; export * from "./manager"; export * from "./types"; diff --git a/manager.ts b/manager.ts index aa4c823..4ed4d4c 100644 --- a/manager.ts +++ b/manager.ts @@ -4,6 +4,7 @@ import { get_address_from_public_key, raw_to_whole, whole_to_raw, Wallet } from import type { Domain } from "./types"; import { DomainAccount, TLDAccount } from "./resolver"; import { decode_domain_name, encode_domain_name, LOG } from "./util"; +import { TRANS_MAX, TRANS_MIN, FREEZE_REP, FREEZE_PUB_KEY } from "./constants"; export class TLDAccountManager extends TLDAccount { wallet: Wallet; @@ -22,6 +23,11 @@ export class TLDAccountManager extends TLDAccount { return block_hash; } + async freeze() { + await this.wallet.change_representative(FREEZE_REP); + // + } + //ideally tld starts out with say, 100 Banano to open with, and never needs to receive anything ever again. 100 Banano is over for over 80k domain issuances. async receive() { //up to 20, technically @@ -39,7 +45,7 @@ export class DomainAccountManager extends DomainAccount { this.domain = domain; } - async receive_domain(receive_hash: string, allow_burning?: boolean) { + async receive_domain(receive_hash: string, tld?: Address, allow_burning?: boolean) { let burning = false; const { history } = await this.rpc.get_account_history(this.address, 1); if (history.length > 1 && !allow_burning) { @@ -47,26 +53,23 @@ export class DomainAccountManager extends DomainAccount { throw new Error("`allow_burning` must be true in order to receive this domain"); } const block_info = await this.rpc.get_block_info(receive_hash); - const min = whole_to_raw("0.0012070301"); - const max = whole_to_raw("0.00120703011"); const amount = BigInt(block_info.amount); - if (amount < min || amount > max) throw new Error("`receive_hash` is not a Domain Transfer block"); - await this.wallet.receive(receive_hash); + if (amount < TRANS_MIN || amount > TRANS_MAX) throw new Error("`receive_hash` is not a Domain Transfer block"); + await this.wallet.receive(receive_hash, undefined, tld); // } async transfer_domain(domain_name: string, to: Address): Promise { const balance = (await this.wallet.get_account_info()).balance; - const min = whole_to_raw("0.0012070301"); - const max = whole_to_raw("0.00120703011"); - let send_amount = raw_to_whole(max); - if (max > BigInt(balance) && min <= BigInt(balance)) send_amount = raw_to_whole(BigInt(balance)); + let send_amount = raw_to_whole(TRANS_MAX); + if (TRANS_MAX > BigInt(balance) && TRANS_MIN <= BigInt(balance)) send_amount = raw_to_whole(BigInt(balance)); const block_hash = await this.wallet.send(to, send_amount, undefined, get_address_from_public_key(encode_domain_name(domain_name))); // return block_hash; } async declare_domain_metadata(metadata_hash: string) { + if (metadata_hash === FREEZE_PUB_KEY) throw new Error("A metadata hash of all 1s freezes the domain"); await this.wallet.change_representative(get_address_from_public_key(metadata_hash)); // } @@ -75,5 +78,10 @@ export class DomainAccountManager extends DomainAccount { await this.wallet.send(address, raw_to_whole(4224n)); // } + + async freeze() { + await this.wallet.change_representative(FREEZE_REP); + // + } } diff --git a/node_test/index.js b/node_test/index.js index 9df5045..0e4c341 100644 --- a/node_test/index.js +++ b/node_test/index.js @@ -13,6 +13,8 @@ import * as crypto from "crypto"; let tld_wallet = new bns.banani.Wallet(rpc, test_seed); + console.log(await new bns.Resolver(rpc2, { "test": tld_wallet.address }).resolve("chicken", "test")); //freeze test + console.log(await new bns.Resolver(rpc2, { "test": tld_wallet.address }).resolve_backwards_ish("ban_1119d44eg3fey3mxpk8mshn7gf5dfzsuiaz1ypoh5nqy8bxbao54zzc5rnka", "test")); let tld = new bns.TLDAccountManager(rpc, tld_wallet); @@ -21,7 +23,7 @@ import * as crypto from "crypto"; const rand_wallet = bns.banani.Wallet.gen_random_wallet(rpc); - const rand_name = `test${String(Math.random()).replaceAll(".", "")}`; + const rand_name = `rc-test${String(Math.random()).replaceAll(".", "")}`; const issue_hash = await tld.issue_domain_name(rand_name, rand_wallet.address); @@ -31,7 +33,7 @@ import * as crypto from "crypto"; await rand_dam.declare_domain_resolve_to("ban_3346kkobb11qqpo17imgiybmwrgibr7yi34mwn5j6uywyke8f7fnfp94uyps"); - await rand_dam.declare_domain_metadata("1".repeat(64)); + await rand_dam.declare_domain_metadata("6".repeat(64)); await rand_dam.declare_domain_resolve_to("ban_1burnbabyburndiscoinferno111111111111111111111111111aj49sw3w"); @@ -43,8 +45,26 @@ import * as crypto from "crypto"; await rand_dam2.receive_domain(transfer_hash); - await rand_dam2.declare_domain_metadata("0".repeat(64)); - + await rand_dam2.declare_domain_metadata("2".repeat(64)); + + /* + //freeze test + await rand_dam2.freeze(); + + const rand_wallet3 = bns.banani.Wallet.gen_random_wallet(rpc); + console.log(rand_wallet3.seed); + + const transfer_hash2 = await rand_dam2.transfer_domain(rand_name, rand_wallet3.address); + + const rand_dam3 = new bns.DomainAccountManager(rpc, rand_wallet3); + + await rand_dam3.receive_domain(transfer_hash2); + + await rand_dam3.declare_domain_metadata("4".repeat(64)); + + await rand_dam3.declare_domain_resolve_to("ban_3fzpw7pb9xt64qhwi47oa47x9zj713fkshntdk5y7khmn54n18szb7ymybdt"); + */ + //await rand_dam2.declare_domain_resolve_to("ban_1o7ija3mdbmpzt8qfnck583tn99fiupgbyzxtbk5h4g6j57a7rawge6yzxqp"); const resolver = new bns.Resolver(rpc2, { "test": tld_wallet.address }); diff --git a/package.json b/package.json index 775dff1..bc4dcc9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "banani-bns", - "version": "0.0.2", + "version": "0.0.3", "description": "JS/TS library for the Banano cryptocurrency's currently unofficial Banano Name System (BNS)", "main": "main.js", "scripts": { diff --git a/resolver.ts b/resolver.ts index 92fe1ed..2690847 100644 --- a/resolver.ts +++ b/resolver.ts @@ -1,10 +1,9 @@ -import type { RPC } from "banani"; +import type { Address, AccountHistoryRawRPC, RPC } from "banani"; import { get_address_from_public_key, get_public_key_from_address, whole_to_raw } from "banani"; -import type { Address, AccountHistoryRawRPC } from "banani"; - import type { Domain, DomainTransfer } from "./types"; import { decode_domain_name, encode_domain_name, LOG } from "./util"; +import { FREEZE_REP, TRANS_MAX, TRANS_MIN } from "./constants"; class Account { readonly rpc: RPC; @@ -27,6 +26,8 @@ class Account { } } + + export class TLDAccount extends Account { all_issued: Domain[]; @@ -42,9 +43,7 @@ export class TLDAccount extends Account { const { history } = await this.get_history_from_open(head_hash, 100); for (const block of history) { const amount = BigInt(block.amount ?? 0); //no amount if is change rep only - const min = whole_to_raw("0.0012070301"); - const max = whole_to_raw("0.00120703011"); - if (amount >= min && amount <= max) { + if (block.subtype === "send" && amount >= TRANS_MIN && amount <= TRANS_MAX) { const found_name = decode_domain_name(get_public_key_from_address(block.representative)); //if already in issued, this one is invalid if (name === found_name) { @@ -61,7 +60,8 @@ export class TLDAccount extends Account { }; } } - if (block.hash === frontier_hash) { + //again, no else if because of block.hash === frontier_hash + if ((block.representative === FREEZE_REP && block.subtype === "change") || (block.hash === frontier_hash)) { return; } } @@ -77,9 +77,7 @@ export class TLDAccount extends Account { const { history } = await this.get_history_from_open(head_hash, 100); for (const block of history) { const amount = BigInt(block.amount ?? 0); //no amount if change rep only - const min = whole_to_raw("0.0012070301"); - const max = whole_to_raw("0.00120703011"); - if (block.subtype === "send" && amount >= min && amount <= max) { + if (block.subtype === "send" && amount >= TRANS_MIN && amount <= TRANS_MAX) { const name = decode_domain_name(get_public_key_from_address(block.representative)); //if already in issued, this one is invalid if (!issued[name]) { @@ -97,10 +95,11 @@ export class TLDAccount extends Account { } else if (LOG) { console.log(`"${name}" already issued but TLD tried to issue again. Invalid.`); } - if (block.hash === frontier_hash) { - this.all_issued = Object.values(issued); - return this.all_issued; - } + } + //cannot be "else if" because of the block.hash === frontier_hash thing + if ((block.representative === FREEZE_REP && block.subtype === "change") || (block.hash === frontier_hash)) { + this.all_issued = Object.values(issued); + return this.all_issued; } } head_hash = history[history.length - 1].hash; @@ -131,8 +130,6 @@ export class DomainAccount extends Account { const { history } = await this.get_history_from_open(head_hash, 1000) as AccountHistoryRawRPC; for (const block of history) { const amount = BigInt(block.amount ?? 0); //amount is 0 if change rep only, apparently - const min = whole_to_raw("0.0012070301"); - const max = whole_to_raw("0.00120703011"); if (block.height === "1") { //domain burned due to not being received as the opening block //? is in case fake domain @@ -146,7 +143,7 @@ export class DomainAccount extends Account { type: "receive", block, }); - } else if (block.subtype === "send" && amount >= min && amount <= max) { + } else if (block.subtype === "send" && amount >= TRANS_MIN && amount <= TRANS_MAX) { const name = decode_domain_name(get_public_key_from_address(block.representative)); if (this.domain.name === name) { //domain is transferred away, this domain account no longer owns it @@ -160,6 +157,12 @@ export class DomainAccount extends Account { }); return this.domain; } + } else if (block.subtype === "change" && block.representative === FREEZE_REP) { + this.domain.history.push({ + type: "freeze", + block, + }); + return this.domain; } else if (block.subtype === "change") { this.domain.metadata_hash = get_public_key_from_address(block.representative); this.domain.history.push({ @@ -167,7 +170,6 @@ export class DomainAccount extends Account { block, metadata_hash: this.domain.metadata_hash, }); - // } else if (block.subtype === "send" && amount === 4224n) { this.domain.resolved_address = get_address_from_public_key(block.link); this.domain.history.push({ @@ -214,7 +216,8 @@ export class Resolver { const transfer_block = await this.rpc.get_block_info(transfer_hash); const domain_name = decode_domain_name(get_public_key_from_address(transfer_block.contents.representative)); let domain = await this.resolve(domain_name, tld); - const last_transfer = domain.history.reverse().find((b): b is DomainTransfer => b.type === "transfer"); + //.reverse() mutates the original array, evil bastards! + const last_transfer = domain?.history.slice().reverse().find((b): b is DomainTransfer => b.type === "transfer"); if (last_transfer.to === domain_account_address) return domain; } } diff --git a/types.ts b/types.ts index b03939e..1032e8d 100644 --- a/types.ts +++ b/types.ts @@ -1,7 +1,7 @@ import type { Address, AccountHistoryRawBlock } from "banani"; export interface DomainBlock { - type: string; + type: "transfer" | "receive" | "metadata" | "resolver" | "freeze"; block: AccountHistoryRawBlock; } @@ -24,7 +24,11 @@ export interface DomainResolver extends DomainBlock { resolved_address: Address; } -export type DomainBlocks = DomainTransfer | DomainReceive | DomainMetadata | DomainResolver; +export interface DomainFreeze extends DomainBlock { + type: "freeze"; +} + +export type DomainBlocks = DomainTransfer | DomainReceive | DomainMetadata | DomainResolver | DomainFreeze; export interface Domain { tld: Address; diff --git a/util.ts b/util.ts index 4a15b9c..bb7d931 100644 --- a/util.ts +++ b/util.ts @@ -52,10 +52,12 @@ export function base58_to_hex(base58: string): string { return uint8array_to_hex(bigint_to_uint8array(bint, 34)); } +/** IPFS CID v0 to Banano address */ export function cid_v0_to_address(cid_v0: string): Address { return get_address_from_public_key(base58_to_hex(cid_v0).slice(4)); } +/** Banano address to IPFS CID v0 */ export function address_to_cid_v0(address: Address): string { return hex_to_base58("1220" + get_public_key_from_address(address)); }