signet-login 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/modal.js CHANGED
@@ -10,6 +10,7 @@ import { waitForAuthResponse } from 'signet-verify';
10
10
  import { schnorr } from '@noble/curves/secp256k1';
11
11
  import { bytesToHex } from '@noble/hashes/utils';
12
12
  import { startRedirect } from './redirect.js';
13
+ import QRCode from 'qrcode';
13
14
  function escapeHtml(str) {
14
15
  return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
15
16
  }
@@ -183,9 +184,7 @@ async function runRedirectFlow(refs, opts) {
183
184
  <h2 style="margin:0 0 8px;font-size:1.2rem;">Sign in with Signet</h2>
184
185
  <p style="margin:0 0 16px;color:${muted};font-size:0.85rem;">Open the link on your phone, or scan the QR if rendered.</p>
185
186
  <div style="background:${dark ? '#0f0f1f' : '#f5f5f8'};border-radius:8px;padding:16px;margin-bottom:16px;">
186
- <div id="signet-login-qr" style="width:200px;height:200px;margin:0 auto 12px;background:${dark ? '#1a1a2e' : '#ffffff'};border-radius:6px;display:flex;align-items:center;justify-content:center;color:${muted};font-size:0.8rem;text-align:center;padding:12px;box-sizing:border-box;">
187
- QR placeholder<br><span style="font-size:0.7rem;">(bundle qr lib for production)</span>
188
- </div>
187
+ <canvas id="signet-login-qr" width="200" height="200" style="display:block;width:200px;height:200px;margin:0 auto 12px;background:#ffffff;border-radius:6px;box-sizing:border-box;"></canvas>
189
188
  <a href="${escapeHtml(authUrl)}" target="_blank" rel="noopener" style="display:block;color:#5b6dff;font-size:0.75rem;word-break:break-all;text-decoration:none;">${escapeHtml(authUrl.slice(0, 80))}…</a>
190
189
  </div>
191
190
  <p id="signet-login-status" style="margin:0 0 12px;color:${muted};font-size:0.85rem;">Waiting for approval…</p>
@@ -194,6 +193,21 @@ async function runRedirectFlow(refs, opts) {
194
193
  <button data-action="cancel" style="${buttonStyle(dark)}width:auto;flex:0 0 auto;padding:8px 16px;">Cancel</button>
195
194
  </div>
196
195
  `;
196
+ // Render the auth URL into the QR canvas. Async, but the dialog has already
197
+ // surfaced the visible link as a fallback so a slow encode doesn't block UX.
198
+ // M error correction tolerates ~15% damage — comfortable for camera scans.
199
+ const qrCanvas = refs.dialog.querySelector('#signet-login-qr');
200
+ if (qrCanvas) {
201
+ void QRCode.toCanvas(qrCanvas, authUrl, {
202
+ width: 200,
203
+ margin: 1,
204
+ errorCorrectionLevel: 'M',
205
+ color: { dark: '#0a0418', light: '#ffffff' },
206
+ }).catch(() => {
207
+ // Encoding failure (URL too long for QR L-Q levels, canvas inaccessible)
208
+ // — the visible link below the canvas still gets the user across.
209
+ });
210
+ }
197
211
  return new Promise(resolve => {
198
212
  let settled = false;
199
213
  const settle = (v) => {
@@ -1,20 +1,27 @@
1
- "use strict";var __SignetLoginIIFE=(()=>{var Gt=Object.defineProperty;var ds=Object.getOwnPropertyDescriptor;var hs=Object.getOwnPropertyNames;var ps=Object.prototype.hasOwnProperty;var gs=(t,e,r)=>e in t?Gt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var bs=(t,e)=>{for(var r in e)Gt(t,r,{get:e[r],enumerable:!0})},ys=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of hs(e))!ps.call(t,o)&&o!==r&&Gt(t,o,{get:()=>e[o],enumerable:!(n=ds(e,o))||n.enumerable});return t};var ms=t=>ys(Gt({},"__esModule",{value:!0}),t);var v=(t,e,r)=>gs(t,typeof e!="symbol"?e+"":e,r);var Ua={};bs(Ua,{handleCallback:()=>fs,handleRedirectCallback:()=>ls,login:()=>cs,logout:()=>us,restoreSession:()=>as});var He={relayUrl:"wss://relay.damus.io",signetAppOrigin:"https://mysignet.app",timeout:12e4,theme:"auto",persist:!0,mode:"relay"},Gr=300*1e3,X={pubkey:"signet:login.pubkey",method:"signet:login.method",authEvent:"signet:login.authEvent",bunkerUri:"signet:login.bunkerUri",bunkerClientSk:"signet:login.bunkerClientSk",expiresAt:"signet:login.expiresAt",displayName:"signet:login.displayName",pendingRedirect:"signet:login.pendingRedirect"};function kt(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function he(t,e=""){if(!Number.isSafeInteger(t)||t<0){let r=e&&`"${e}" `;throw new Error(`${r}expected integer >= 0, got ${t}`)}}function W(t,e,r=""){let n=kt(t),o=t?.length,i=e!==void 0;if(!n||i&&o!==e){let s=r&&`"${r}" `,c=i?` of length ${e}`:"",a=n?`length=${o}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+c+", got "+a)}return t}function Ye(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash must wrapped by utils.createHasher");he(t.outputLen),he(t.blockLen)}function ct(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Yr(t,e){W(t,void 0,"digestInto() output");let r=e.outputLen;if(t.length<r)throw new Error('"digestInto() output" expected to be of length >='+r)}function Be(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Wt(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function ge(t,e){return t<<32-e|t>>>e}var Xr=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",xs=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function pe(t){if(W(t),Xr)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=xs[t[r]];return e}var Se={_0:48,_9:57,A:65,F:70,a:97,f:102};function Wr(t){if(t>=Se._0&&t<=Se._9)return t-Se._0;if(t>=Se.A&&t<=Se.F)return t-(Se.A-10);if(t>=Se.a&&t<=Se.f)return t-(Se.a-10)}function ne(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(Xr)return Uint8Array.fromHex(t);let e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(r);for(let o=0,i=0;o<r;o++,i+=2){let s=Wr(t.charCodeAt(i)),c=Wr(t.charCodeAt(i+1));if(s===void 0||c===void 0){let a=t[i]+t[i+1];throw new Error('hex string expected, got non-hex character "'+a+'" at index '+i)}n[o]=s*16+c}return n}function F(...t){let e=0;for(let n=0;n<t.length;n++){let o=t[n];W(o),e+=o.length}let r=new Uint8Array(e);for(let n=0,o=0;n<t.length;n++){let i=t[n];r.set(i,o),o+=i.length}return r}function Jr(t,e={}){let r=(o,i)=>t(i).update(o).digest(),n=t(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.create=o=>t(o),Object.assign(r,e),Object.freeze(r)}function xe(t=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(t))}var Qr=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function Fr(t,e,r){return t&e^~t&r}function eo(t,e,r){return t&e^t&r^e&r}var Yt=class{constructor(e,r,n,o){v(this,"blockLen");v(this,"outputLen");v(this,"padOffset");v(this,"isLE");v(this,"buffer");v(this,"view");v(this,"finished",!1);v(this,"length",0);v(this,"pos",0);v(this,"destroyed",!1);this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Wt(this.buffer)}update(e){ct(this),W(e);let{view:r,buffer:n,blockLen:o}=this,i=e.length;for(let s=0;s<i;){let c=Math.min(o-this.pos,i-s);if(c===o){let a=Wt(e);for(;o<=i-s;s+=o)this.process(a,s);continue}n.set(e.subarray(s,s+c),this.pos),this.pos+=c,s+=c,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ct(this),Yr(e,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;r[s++]=128,Be(this.buffer.subarray(s)),this.padOffset>o-s&&(this.process(n,0),s=0);for(let g=s;g<o;g++)r[g]=0;n.setBigUint64(o-8,BigInt(this.length*8),i),this.process(n,0);let c=Wt(e),a=this.outputLen;if(a%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let f=a/4,p=this.get();if(f>p.length)throw new Error("_sha2: outputLen bigger than state");for(let g=0;g<f;g++)c.setUint32(4*g,p[g],i)}digest(){let{buffer:e,outputLen:r}=this;this.digestInto(e);let n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:i,destroyed:s,pos:c}=this;return e.destroyed=s,e.finished=i,e.length=o,e.pos=c,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}},ke=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var ws=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Pe=new Uint32Array(64),Nn=class extends Yt{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:r,C:n,D:o,E:i,F:s,G:c,H:a}=this;return[e,r,n,o,i,s,c,a]}set(e,r,n,o,i,s,c,a){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=c|0,this.H=a|0}process(e,r){for(let g=0;g<16;g++,r+=4)Pe[g]=e.getUint32(r,!1);for(let g=16;g<64;g++){let d=Pe[g-15],l=Pe[g-2],b=ge(d,7)^ge(d,18)^d>>>3,E=ge(l,17)^ge(l,19)^l>>>10;Pe[g]=E+Pe[g-7]+b+Pe[g-16]|0}let{A:n,B:o,C:i,D:s,E:c,F:a,G:f,H:p}=this;for(let g=0;g<64;g++){let d=ge(c,6)^ge(c,11)^ge(c,25),l=p+d+Fr(c,a,f)+ws[g]+Pe[g]|0,E=(ge(n,2)^ge(n,13)^ge(n,22))+eo(n,o,i)|0;p=f,f=a,a=c,c=s+l|0,s=i,i=o,o=n,n=l+E|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,c=c+this.E|0,a=a+this.F|0,f=f+this.G|0,p=p+this.H|0,this.set(n,o,i,s,c,a,f,p)}roundClean(){Be(Pe)}destroy(){this.set(0,0,0,0,0,0,0,0),Be(this.buffer)}},Hn=class extends Nn{constructor(){super(32);v(this,"A",ke[0]|0);v(this,"B",ke[1]|0);v(this,"C",ke[2]|0);v(this,"D",ke[3]|0);v(this,"E",ke[4]|0);v(this,"F",ke[5]|0);v(this,"G",ke[6]|0);v(this,"H",ke[7]|0)}};var ae=Jr(()=>new Hn,Qr(1));var qn=BigInt(0),Pn=BigInt(1);function At(t,e=""){if(typeof t!="boolean"){let r=e&&`"${e}" `;throw new Error(r+"expected boolean, got type="+typeof t)}return t}function to(t){if(typeof t=="bigint"){if(!Xt(t))throw new Error("positive bigint expected, got "+t)}else he(t);return t}function Rt(t){let e=to(t).toString(16);return e.length&1?"0"+e:e}function no(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?qn:BigInt("0x"+t)}function qe(t){return no(pe(t))}function Mn(t){return no(pe(Es(W(t)).reverse()))}function Jt(t,e){he(e),t=to(t);let r=ne(t.toString(16).padStart(e*2,"0"));if(r.length!==e)throw new Error("number too large");return r}function $n(t,e){return Jt(t,e).reverse()}function Es(t){return Uint8Array.from(t)}function ro(t){return Uint8Array.from(t,(e,r)=>{let n=e.charCodeAt(0);if(e.length!==1||n>127)throw new Error(`string contains non-ASCII character "${t[r]}" with code ${n} at position ${r}`);return n})}var Xt=t=>typeof t=="bigint"&&qn<=t;function vs(t,e,r){return Xt(t)&&Xt(e)&&Xt(r)&&e<=t&&t<r}function oo(t,e,r,n){if(!vs(e,r,n))throw new Error("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function Dn(t){let e;for(e=0;t>qn;t>>=Pn,e+=1);return e}var _t=t=>(Pn<<BigInt(t))-Pn;function io(t,e,r){if(he(t,"hashLen"),he(e,"qByteLen"),typeof r!="function")throw new Error("hmacFn must be a function");let n=B=>new Uint8Array(B),o=Uint8Array.of(),i=Uint8Array.of(0),s=Uint8Array.of(1),c=1e3,a=n(t),f=n(t),p=0,g=()=>{a.fill(1),f.fill(0),p=0},d=(...B)=>r(f,F(a,...B)),l=(B=o)=>{f=d(i,B),a=d(),B.length!==0&&(f=d(s,B),a=d())},b=()=>{if(p++>=c)throw new Error("drbg: tried max amount of iterations");let B=0,_=[];for(;B<e;){a=d();let N=a.slice();_.push(N),B+=a.length}return F(..._)};return(B,_)=>{g(),l(B);let N;for(;!(N=_(b()));)l();return g(),N}}function Lt(t,e={},r={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function n(i,s,c){let a=t[i];if(c&&a===void 0)return;let f=typeof a;if(f!==s||a===null)throw new Error(`param "${i}" is invalid: expected ${s}, got ${f}`)}let o=(i,s)=>Object.entries(i).forEach(([c,a])=>n(c,a,s));o(e,!1),o(r,!0)}function Vn(t){let e=new WeakMap;return(r,...n)=>{let o=e.get(r);if(o!==void 0)return o;let i=t(r,...n);return e.set(r,i),i}}var ie=BigInt(0),re=BigInt(1),Xe=BigInt(2),ao=BigInt(3),fo=BigInt(4),lo=BigInt(5),Ss=BigInt(7),uo=BigInt(8),Bs=BigInt(9),ho=BigInt(16);function be(t,e){let r=t%e;return r>=ie?r:e+r}function le(t,e,r){let n=t;for(;e-- >ie;)n*=n,n%=r;return n}function so(t,e){if(t===ie)throw new Error("invert: expected non-zero number");if(e<=ie)throw new Error("invert: expected positive modulus, got "+e);let r=be(t,e),n=e,o=ie,i=re,s=re,c=ie;for(;r!==ie;){let f=n/r,p=n%r,g=o-s*f,d=i-c*f;n=r,r=p,o=s,i=c,s=g,c=d}if(n!==re)throw new Error("invert: does not exist");return be(o,e)}function jn(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}function po(t,e){let r=(t.ORDER+re)/fo,n=t.pow(e,r);return jn(t,n,e),n}function ks(t,e){let r=(t.ORDER-lo)/uo,n=t.mul(e,Xe),o=t.pow(n,r),i=t.mul(e,o),s=t.mul(t.mul(i,Xe),o),c=t.mul(i,t.sub(s,t.ONE));return jn(t,c,e),c}function As(t){let e=at(t),r=go(t),n=r(e,e.neg(e.ONE)),o=r(e,n),i=r(e,e.neg(n)),s=(t+Ss)/ho;return(c,a)=>{let f=c.pow(a,s),p=c.mul(f,n),g=c.mul(f,o),d=c.mul(f,i),l=c.eql(c.sqr(p),a),b=c.eql(c.sqr(g),a);f=c.cmov(f,p,l),p=c.cmov(d,g,b);let E=c.eql(c.sqr(p),a),B=c.cmov(f,p,E);return jn(c,B,a),B}}function go(t){if(t<ao)throw new Error("sqrt is not defined for small field");let e=t-re,r=0;for(;e%Xe===ie;)e/=Xe,r++;let n=Xe,o=at(t);for(;co(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return po;let i=o.pow(n,e),s=(e+re)/Xe;return function(a,f){if(a.is0(f))return f;if(co(a,f)!==1)throw new Error("Cannot find square root");let p=r,g=a.mul(a.ONE,i),d=a.pow(f,e),l=a.pow(f,s);for(;!a.eql(d,a.ONE);){if(a.is0(d))return a.ZERO;let b=1,E=a.sqr(d);for(;!a.eql(E,a.ONE);)if(b++,E=a.sqr(E),b===p)throw new Error("Cannot find square root");let B=re<<BigInt(p-b-1),_=a.pow(g,B);p=b,g=a.sqr(_),d=a.mul(d,g),l=a.mul(l,_)}return l}}function Rs(t){return t%fo===ao?po:t%uo===lo?ks:t%ho===Bs?As(t):go(t)}var _s=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Zn(t){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},r=_s.reduce((n,o)=>(n[o]="function",n),e);return Lt(t,r),t}function Ls(t,e,r){if(r<ie)throw new Error("invalid exponent, negatives unsupported");if(r===ie)return t.ONE;if(r===re)return e;let n=t.ONE,o=e;for(;r>ie;)r&re&&(n=t.mul(n,o)),o=t.sqr(o),r>>=re;return n}function Qt(t,e,r=!1){let n=new Array(e.length).fill(r?t.ZERO:void 0),o=e.reduce((s,c,a)=>t.is0(c)?s:(n[a]=s,t.mul(s,c)),t.ONE),i=t.inv(o);return e.reduceRight((s,c,a)=>t.is0(c)?s:(n[a]=t.mul(s,n[a]),t.mul(s,c)),i),n}function co(t,e){let r=(t.ORDER-re)/Xe,n=t.pow(e,r),o=t.eql(n,t.ONE),i=t.eql(n,t.ZERO),s=t.eql(n,t.neg(t.ONE));if(!o&&!i&&!s)throw new Error("invalid Legendre symbol result");return o?1:i?0:-1}function Os(t,e){e!==void 0&&he(e);let r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}var Kn=class{constructor(e,r={}){v(this,"ORDER");v(this,"BITS");v(this,"BYTES");v(this,"isLE");v(this,"ZERO",ie);v(this,"ONE",re);v(this,"_lengths");v(this,"_sqrt");v(this,"_mod");if(e<=ie)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,r!=null&&typeof r=="object"&&(typeof r.BITS=="number"&&(n=r.BITS),typeof r.sqrt=="function"&&(this.sqrt=r.sqrt),typeof r.isLE=="boolean"&&(this.isLE=r.isLE),r.allowedLengths&&(this._lengths=r.allowedLengths?.slice()),typeof r.modFromBytes=="boolean"&&(this._mod=r.modFromBytes));let{nBitLength:o,nByteLength:i}=Os(e,n);if(i>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=i,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return be(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return ie<=e&&e<this.ORDER}is0(e){return e===ie}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&re)===re}neg(e){return be(-e,this.ORDER)}eql(e,r){return e===r}sqr(e){return be(e*e,this.ORDER)}add(e,r){return be(e+r,this.ORDER)}sub(e,r){return be(e-r,this.ORDER)}mul(e,r){return be(e*r,this.ORDER)}pow(e,r){return Ls(this,e,r)}div(e,r){return be(e*so(r,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,r){return e+r}subN(e,r){return e-r}mulN(e,r){return e*r}inv(e){return so(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=Rs(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?$n(e,this.BYTES):Jt(e,this.BYTES)}fromBytes(e,r=!1){W(e);let{_lengths:n,BYTES:o,isLE:i,ORDER:s,_mod:c}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let f=new Uint8Array(o);f.set(e,i?0:f.length-e.length),e=f}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let a=i?Mn(e):qe(e);if(c&&(a=be(a,s)),!r&&!this.isValid(a))throw new Error("invalid field element: outside of range 0..ORDER");return a}invertBatch(e){return Qt(this,e)}cmov(e,r,n){return n?r:e}};function at(t,e={}){return new Kn(t,e)}function bo(t){if(typeof t!="bigint")throw new Error("field order must be bigint");let e=t.toString(2).length;return Math.ceil(e/8)}function zn(t){let e=bo(t);return e+Math.ceil(e/2)}function Ft(t,e,r=!1){W(t);let n=t.length,o=bo(e),i=zn(e);if(n<16||n<i||n>1024)throw new Error("expected "+i+"-1024 bytes of input, got "+n);let s=r?Mn(t):qe(t),c=be(s,e-re)+re;return r?$n(c,o):Jt(c,o)}var ft=BigInt(0),Je=BigInt(1);function Ot(t,e){let r=e.negate();return t?r:e}function Xn(t,e){let r=Qt(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function wo(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Gn(t,e){wo(t,e);let r=Math.ceil(e/t)+1,n=2**(t-1),o=2**t,i=_t(t),s=BigInt(t);return{windows:r,windowSize:n,mask:i,maxNumber:o,shiftBy:s}}function yo(t,e,r){let{windowSize:n,mask:o,maxNumber:i,shiftBy:s}=r,c=Number(t&o),a=t>>s;c>n&&(c-=i,a+=Je);let f=e*n,p=f+Math.abs(c)-1,g=c===0,d=c<0,l=e%2!==0;return{nextN:a,offset:p,isZero:g,isNeg:d,isNegF:l,offsetF:f}}var Wn=new WeakMap,Eo=new WeakMap;function Yn(t){return Eo.get(t)||1}function mo(t){if(t!==ft)throw new Error("invalid wNAF")}var en=class{constructor(e,r){v(this,"BASE");v(this,"ZERO");v(this,"Fn");v(this,"bits");this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=r}_unsafeLadder(e,r,n=this.ZERO){let o=e;for(;r>ft;)r&Je&&(n=n.add(o)),o=o.double(),r>>=Je;return n}precomputeWindow(e,r){let{windows:n,windowSize:o}=Gn(r,this.bits),i=[],s=e,c=s;for(let a=0;a<n;a++){c=s,i.push(c);for(let f=1;f<o;f++)c=c.add(s),i.push(c);s=c.double()}return i}wNAF(e,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,i=this.BASE,s=Gn(e,this.bits);for(let c=0;c<s.windows;c++){let{nextN:a,offset:f,isZero:p,isNeg:g,isNegF:d,offsetF:l}=yo(n,c,s);n=a,p?i=i.add(Ot(d,r[l])):o=o.add(Ot(g,r[f]))}return mo(n),{p:o,f:i}}wNAFUnsafe(e,r,n,o=this.ZERO){let i=Gn(e,this.bits);for(let s=0;s<i.windows&&n!==ft;s++){let{nextN:c,offset:a,isZero:f,isNeg:p}=yo(n,s,i);if(n=c,!f){let g=r[a];o=o.add(p?g.negate():g)}}return mo(n),o}getPrecomputes(e,r,n){let o=Wn.get(r);return o||(o=this.precomputeWindow(r,e),e!==1&&(typeof n=="function"&&(o=n(o)),Wn.set(r,o))),o}cached(e,r,n){let o=Yn(e);return this.wNAF(o,this.getPrecomputes(o,e,n),r)}unsafe(e,r,n,o){let i=Yn(e);return i===1?this._unsafeLadder(e,r,o):this.wNAFUnsafe(i,this.getPrecomputes(i,e,n),r,o)}createCache(e,r){wo(r,this.bits),Eo.set(e,r),Wn.delete(e)}hasCache(e){return Yn(e)!==1}};function vo(t,e,r,n){let o=e,i=t.ZERO,s=t.ZERO;for(;r>ft||n>ft;)r&Je&&(i=i.add(o)),n&Je&&(s=s.add(o)),o=o.double(),r>>=Je,n>>=Je;return{p1:i,p2:s}}function xo(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Zn(e),e}else return at(t,{isLE:r})}function So(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(let a of["p","n","h"]){let f=e[a];if(!(typeof f=="bigint"&&f>ft))throw new Error(`CURVE.${a} must be positive bigint`)}let o=xo(e.p,r.Fp,n),i=xo(e.n,r.Fn,n),c=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(let a of c)if(!o.isValid(e[a]))throw new Error(`CURVE.${a} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:i}}function tn(t,e){return function(n){let o=t(n);return{secretKey:o,publicKey:e(o)}}}var nn=class{constructor(e,r){v(this,"oHash");v(this,"iHash");v(this,"blockLen");v(this,"outputLen");v(this,"finished",!1);v(this,"destroyed",!1);if(Ye(e),W(r,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?e.create().update(r).digest():r);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=e.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),Be(o)}update(e){return ct(this),this.iHash.update(e),this}digestInto(e){ct(this),W(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:r,iHash:n,finished:o,destroyed:i,blockLen:s,outputLen:c}=this;return e=e,e.finished=o,e.destroyed=i,e.blockLen=s,e.outputLen=c,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},we=(t,e,r)=>new nn(t,e).update(r).digest();we.create=(t,e)=>new nn(t,e);var Bo=(t,e)=>(t+(t>=0?e:-e)/ko)/e;function Is(t,e,r){let[[n,o],[i,s]]=e,c=Bo(s*t,r),a=Bo(-o*t,r),f=t-c*n-a*i,p=-c*o-a*s,g=f<Ae,d=p<Ae;g&&(f=-f),d&&(p=-p);let l=_t(Math.ceil(Dn(r)/2))+lt;if(f<Ae||f>=l||p<Ae||p>=l)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:g,k1:f,k2neg:d,k2:p}}function Qn(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function Jn(t,e){let r={};for(let n of Object.keys(e))r[n]=t[n]===void 0?e[n]:t[n];return At(r.lowS,"lowS"),At(r.prehash,"prehash"),r.format!==void 0&&Qn(r.format),r}var Fn=class extends Error{constructor(e=""){super(e)}},Me={Err:Fn,_tlv:{encode:(t,e)=>{let{Err:r}=Me;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length&1)throw new r("tlv.encode: unpadded data");let n=e.length/2,o=Rt(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");let i=n>127?Rt(o.length/2|128):"";return Rt(t)+i+o+e},decode(t,e){let{Err:r}=Me,n=0;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length<2||e[n++]!==t)throw new r("tlv.decode: wrong tlv");let o=e[n++],i=!!(o&128),s=0;if(!i)s=o;else{let a=o&127;if(!a)throw new r("tlv.decode(long): indefinite length not supported");if(a>4)throw new r("tlv.decode(long): byte length is too big");let f=e.subarray(n,n+a);if(f.length!==a)throw new r("tlv.decode: length bytes not complete");if(f[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(let p of f)s=s<<8|p;if(n+=a,s<128)throw new r("tlv.decode(long): not minimal encoding")}let c=e.subarray(n,n+s);if(c.length!==s)throw new r("tlv.decode: wrong value length");return{v:c,l:e.subarray(n+s)}}},_int:{encode(t){let{Err:e}=Me;if(t<Ae)throw new e("integer: negative integers are not allowed");let r=Rt(t);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return r},decode(t){let{Err:e}=Me;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return qe(t)}},toSig(t){let{Err:e,_int:r,_tlv:n}=Me,o=W(t,void 0,"signature"),{v:i,l:s}=n.decode(48,o);if(s.length)throw new e("invalid signature: left bytes after parsing");let{v:c,l:a}=n.decode(2,i),{v:f,l:p}=n.decode(2,a);if(p.length)throw new e("invalid signature: left bytes after parsing");return{r:r.decode(c),s:r.decode(f)}},hexFromSig(t){let{_tlv:e,_int:r}=Me,n=e.encode(2,r.encode(t.r)),o=e.encode(2,r.encode(t.s)),i=n+o;return e.encode(48,i)}},Ae=BigInt(0),lt=BigInt(1),ko=BigInt(2),rn=BigInt(3),Ts=BigInt(4);function Ao(t,e={}){let r=So("weierstrass",t,e),{Fp:n,Fn:o}=r,i=r.CURVE,{h:s,n:c}=i;Lt(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:a}=e;if(a&&(!n.is0(i.a)||typeof a.beta!="bigint"||!Array.isArray(a.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let f=_o(n,o);function p(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function g(x,u,h){let{x:y,y:w}=u.toAffine(),k=n.toBytes(y);if(At(h,"isCompressed"),h){p();let m=!n.isOdd(w);return F(Ro(m),k)}else return F(Uint8Array.of(4),k,n.toBytes(w))}function d(x){W(x,void 0,"Point");let{publicKey:u,publicKeyUncompressed:h}=f,y=x.length,w=x[0],k=x.subarray(1);if(y===u&&(w===2||w===3)){let m=n.fromBytes(k);if(!n.isValid(m))throw new Error("bad point: is not on curve, wrong x");let A=E(m),S;try{S=n.sqrt(A)}catch(M){let C=M instanceof Error?": "+M.message:"";throw new Error("bad point: is not on curve, sqrt error"+C)}p();let R=n.isOdd(S);return(w&1)===1!==R&&(S=n.neg(S)),{x:m,y:S}}else if(y===h&&w===4){let m=n.BYTES,A=n.fromBytes(k.subarray(0,m)),S=n.fromBytes(k.subarray(m,m*2));if(!B(A,S))throw new Error("bad point: is not on curve");return{x:A,y:S}}else throw new Error(`bad point: got length ${y}, expected compressed=${u} or uncompressed=${h}`)}let l=e.toBytes||g,b=e.fromBytes||d;function E(x){let u=n.sqr(x),h=n.mul(u,x);return n.add(n.add(h,n.mul(x,i.a)),i.b)}function B(x,u){let h=n.sqr(u),y=E(x);return n.eql(h,y)}if(!B(i.Gx,i.Gy))throw new Error("bad curve params: generator point");let _=n.mul(n.pow(i.a,rn),Ts),N=n.mul(n.sqr(i.b),BigInt(27));if(n.is0(n.add(_,N)))throw new Error("bad curve params: a or b");function H(x,u,h=!1){if(!n.isValid(u)||h&&n.is0(u))throw new Error(`bad point coordinate ${x}`);return u}function P(x){if(!(x instanceof O))throw new Error("Weierstrass Point expected")}function q(x){if(!a||!a.basises)throw new Error("no endo");return Is(x,a.basises,o.ORDER)}let Z=Vn((x,u)=>{let{X:h,Y:y,Z:w}=x;if(n.eql(w,n.ONE))return{x:h,y};let k=x.is0();u==null&&(u=k?n.ONE:n.inv(w));let m=n.mul(h,u),A=n.mul(y,u),S=n.mul(w,u);if(k)return{x:n.ZERO,y:n.ZERO};if(!n.eql(S,n.ONE))throw new Error("invZ was invalid");return{x:m,y:A}}),Y=Vn(x=>{if(x.is0()){if(e.allowInfinityPoint&&!n.is0(x.Y))return;throw new Error("bad point: ZERO")}let{x:u,y:h}=x.toAffine();if(!n.isValid(u)||!n.isValid(h))throw new Error("bad point: x or y not field elements");if(!B(u,h))throw new Error("bad point: equation left != right");if(!x.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function G(x,u,h,y,w){return h=new O(n.mul(h.X,x),h.Y,h.Z),u=Ot(y,u),h=Ot(w,h),u.add(h)}let L=class L{constructor(u,h,y){v(this,"X");v(this,"Y");v(this,"Z");this.X=H("x",u),this.Y=H("y",h,!0),this.Z=H("z",y),Object.freeze(this)}static CURVE(){return i}static fromAffine(u){let{x:h,y}=u||{};if(!u||!n.isValid(h)||!n.isValid(y))throw new Error("invalid affine point");if(u instanceof L)throw new Error("projective point not allowed");return n.is0(h)&&n.is0(y)?L.ZERO:new L(h,y,n.ONE)}static fromBytes(u){let h=L.fromAffine(b(W(u,void 0,"point")));return h.assertValidity(),h}static fromHex(u){return L.fromBytes(ne(u))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(u=8,h=!0){return $.createCache(this,u),h||this.multiply(rn),this}assertValidity(){Y(this)}hasEvenY(){let{y:u}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(u)}equals(u){P(u);let{X:h,Y:y,Z:w}=this,{X:k,Y:m,Z:A}=u,S=n.eql(n.mul(h,A),n.mul(k,w)),R=n.eql(n.mul(y,A),n.mul(m,w));return S&&R}negate(){return new L(this.X,n.neg(this.Y),this.Z)}double(){let{a:u,b:h}=i,y=n.mul(h,rn),{X:w,Y:k,Z:m}=this,A=n.ZERO,S=n.ZERO,R=n.ZERO,T=n.mul(w,w),M=n.mul(k,k),C=n.mul(m,m),I=n.mul(w,k);return I=n.add(I,I),R=n.mul(w,m),R=n.add(R,R),A=n.mul(u,R),S=n.mul(y,C),S=n.add(A,S),A=n.sub(M,S),S=n.add(M,S),S=n.mul(A,S),A=n.mul(I,A),R=n.mul(y,R),C=n.mul(u,C),I=n.sub(T,C),I=n.mul(u,I),I=n.add(I,R),R=n.add(T,T),T=n.add(R,T),T=n.add(T,C),T=n.mul(T,I),S=n.add(S,T),C=n.mul(k,m),C=n.add(C,C),T=n.mul(C,I),A=n.sub(A,T),R=n.mul(C,M),R=n.add(R,R),R=n.add(R,R),new L(A,S,R)}add(u){P(u);let{X:h,Y:y,Z:w}=this,{X:k,Y:m,Z:A}=u,S=n.ZERO,R=n.ZERO,T=n.ZERO,M=i.a,C=n.mul(i.b,rn),I=n.mul(h,k),D=n.mul(y,m),z=n.mul(w,A),V=n.add(h,y),j=n.add(k,m);V=n.mul(V,j),j=n.add(I,D),V=n.sub(V,j),j=n.add(h,w);let Q=n.add(k,A);return j=n.mul(j,Q),Q=n.add(I,z),j=n.sub(j,Q),Q=n.add(y,w),S=n.add(m,A),Q=n.mul(Q,S),S=n.add(D,z),Q=n.sub(Q,S),T=n.mul(M,j),S=n.mul(C,z),T=n.add(S,T),S=n.sub(D,T),T=n.add(D,T),R=n.mul(S,T),D=n.add(I,I),D=n.add(D,I),z=n.mul(M,z),j=n.mul(C,j),D=n.add(D,z),z=n.sub(I,z),z=n.mul(M,z),j=n.add(j,z),I=n.mul(D,j),R=n.add(R,I),I=n.mul(Q,j),S=n.mul(V,S),S=n.sub(S,I),I=n.mul(V,D),T=n.mul(Q,T),T=n.add(T,I),new L(S,R,T)}subtract(u){return this.add(u.negate())}is0(){return this.equals(L.ZERO)}multiply(u){let{endo:h}=e;if(!o.isValidNot0(u))throw new Error("invalid scalar: out of range");let y,w,k=m=>$.cached(this,m,A=>Xn(L,A));if(h){let{k1neg:m,k1:A,k2neg:S,k2:R}=q(u),{p:T,f:M}=k(A),{p:C,f:I}=k(R);w=M.add(I),y=G(h.beta,T,C,m,S)}else{let{p:m,f:A}=k(u);y=m,w=A}return Xn(L,[y,w])[0]}multiplyUnsafe(u){let{endo:h}=e,y=this;if(!o.isValid(u))throw new Error("invalid scalar: out of range");if(u===Ae||y.is0())return L.ZERO;if(u===lt)return y;if($.hasCache(this))return this.multiply(u);if(h){let{k1neg:w,k1:k,k2neg:m,k2:A}=q(u),{p1:S,p2:R}=vo(L,y,k,A);return G(h.beta,S,R,w,m)}else return $.unsafe(y,u)}toAffine(u){return Z(this,u)}isTorsionFree(){let{isTorsionFree:u}=e;return s===lt?!0:u?u(L,this):$.unsafe(this,c).is0()}clearCofactor(){let{clearCofactor:u}=e;return s===lt?this:u?u(L,this):this.multiplyUnsafe(s)}isSmallOrder(){return this.multiplyUnsafe(s).is0()}toBytes(u=!0){return At(u,"isCompressed"),this.assertValidity(),l(L,this,u)}toHex(u=!0){return pe(this.toBytes(u))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}};v(L,"BASE",new L(i.Gx,i.Gy,n.ONE)),v(L,"ZERO",new L(n.ZERO,n.ONE,n.ZERO)),v(L,"Fp",n),v(L,"Fn",o);let O=L,K=o.BITS,$=new en(O,e.endo?Math.ceil(K/2):K);return O.BASE.precompute(8),O}function Ro(t){return Uint8Array.of(t?2:3)}function _o(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function Us(t,e={}){let{Fn:r}=t,n=e.randomBytes||xe,o=Object.assign(_o(t.Fp,r),{seed:zn(r.ORDER)});function i(l){try{let b=r.fromBytes(l);return r.isValidNot0(b)}catch{return!1}}function s(l,b){let{publicKey:E,publicKeyUncompressed:B}=o;try{let _=l.length;return b===!0&&_!==E||b===!1&&_!==B?!1:!!t.fromBytes(l)}catch{return!1}}function c(l=n(o.seed)){return Ft(W(l,o.seed,"seed"),r.ORDER)}function a(l,b=!0){return t.BASE.multiply(r.fromBytes(l)).toBytes(b)}function f(l){let{secretKey:b,publicKey:E,publicKeyUncompressed:B}=o;if(!kt(l)||"_lengths"in r&&r._lengths||b===E)return;let _=W(l,void 0,"key").length;return _===E||_===B}function p(l,b,E=!0){if(f(l)===!0)throw new Error("first arg must be private key");if(f(b)===!1)throw new Error("second arg must be public key");let B=r.fromBytes(l);return t.fromBytes(b).multiply(B).toBytes(E)}let g={isValidSecretKey:i,isValidPublicKey:s,randomSecretKey:c},d=tn(c,a);return Object.freeze({getPublicKey:a,getSharedSecret:p,keygen:d,Point:t,utils:g,lengths:o})}function Lo(t,e,r={}){Ye(e),Lt(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),r=Object.assign({},r);let n=r.randomBytes||xe,o=r.hmac||((u,h)=>we(e,u,h)),{Fp:i,Fn:s}=t,{ORDER:c,BITS:a}=s,{keygen:f,getPublicKey:p,getSharedSecret:g,utils:d,lengths:l}=Us(t,r),b={prehash:!0,lowS:typeof r.lowS=="boolean"?r.lowS:!0,format:"compact",extraEntropy:!1},E=c*ko<i.ORDER;function B(u){let h=c>>lt;return u>h}function _(u,h){if(!s.isValidNot0(h))throw new Error(`invalid signature ${u}: out of range 1..Point.Fn.ORDER`);return h}function N(){if(E)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function H(u,h){Qn(h);let y=l.signature,w=h==="compact"?y:h==="recovered"?y+1:void 0;return W(u,w)}class P{constructor(h,y,w){v(this,"r");v(this,"s");v(this,"recovery");if(this.r=_("r",h),this.s=_("s",y),w!=null){if(N(),![0,1,2,3].includes(w))throw new Error("invalid recovery id");this.recovery=w}Object.freeze(this)}static fromBytes(h,y=b.format){H(h,y);let w;if(y==="der"){let{r:S,s:R}=Me.toSig(W(h));return new P(S,R)}y==="recovered"&&(w=h[0],y="compact",h=h.subarray(1));let k=l.signature/2,m=h.subarray(0,k),A=h.subarray(k,k*2);return new P(s.fromBytes(m),s.fromBytes(A),w)}static fromHex(h,y){return this.fromBytes(ne(h),y)}assertRecovery(){let{recovery:h}=this;if(h==null)throw new Error("invalid recovery id: must be present");return h}addRecoveryBit(h){return new P(this.r,this.s,h)}recoverPublicKey(h){let{r:y,s:w}=this,k=this.assertRecovery(),m=k===2||k===3?y+c:y;if(!i.isValid(m))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let A=i.toBytes(m),S=t.fromBytes(F(Ro((k&1)===0),A)),R=s.inv(m),T=Z(W(h,void 0,"msgHash")),M=s.create(-T*R),C=s.create(w*R),I=t.BASE.multiplyUnsafe(M).add(S.multiplyUnsafe(C));if(I.is0())throw new Error("invalid recovery: point at infinify");return I.assertValidity(),I}hasHighS(){return B(this.s)}toBytes(h=b.format){if(Qn(h),h==="der")return ne(Me.hexFromSig(this));let{r:y,s:w}=this,k=s.toBytes(y),m=s.toBytes(w);return h==="recovered"?(N(),F(Uint8Array.of(this.assertRecovery()),k,m)):F(k,m)}toHex(h){return pe(this.toBytes(h))}}let q=r.bits2int||function(h){if(h.length>8192)throw new Error("input is too large");let y=qe(h),w=h.length*8-a;return w>0?y>>BigInt(w):y},Z=r.bits2int_modN||function(h){return s.create(q(h))},Y=_t(a);function G(u){return oo("num < 2^"+a,u,Ae,Y),s.toBytes(u)}function O(u,h){return W(u,void 0,"message"),h?W(e(u),void 0,"prehashed message"):u}function K(u,h,y){let{lowS:w,prehash:k,extraEntropy:m}=Jn(y,b);u=O(u,k);let A=Z(u),S=s.fromBytes(h);if(!s.isValidNot0(S))throw new Error("invalid private key");let R=[G(S),G(A)];if(m!=null&&m!==!1){let I=m===!0?n(l.secretKey):m;R.push(W(I,void 0,"extraEntropy"))}let T=F(...R),M=A;function C(I){let D=q(I);if(!s.isValidNot0(D))return;let z=s.inv(D),V=t.BASE.multiply(D).toAffine(),j=s.create(V.x);if(j===Ae)return;let Q=s.create(z*s.create(M+j*S));if(Q===Ae)return;let St=(V.x===j?0:2)|Number(V.y&lt),Bt=Q;return w&&B(Q)&&(Bt=s.neg(Q),St^=1),new P(j,Bt,E?void 0:St)}return{seed:T,k2sig:C}}function $(u,h,y={}){let{seed:w,k2sig:k}=K(u,h,y);return io(e.outputLen,s.BYTES,o)(w,k).toBytes(y.format)}function L(u,h,y,w={}){let{lowS:k,prehash:m,format:A}=Jn(w,b);if(y=W(y,void 0,"publicKey"),h=O(h,m),!kt(u)){let S=u instanceof P?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+S)}H(u,A);try{let S=P.fromBytes(u,A),R=t.fromBytes(y);if(k&&S.hasHighS())return!1;let{r:T,s:M}=S,C=Z(h),I=s.inv(M),D=s.create(C*I),z=s.create(T*I),V=t.BASE.multiplyUnsafe(D).add(R.multiplyUnsafe(z));return V.is0()?!1:s.create(V.x)===T}catch{return!1}}function x(u,h,y={}){let{prehash:w}=Jn(y,b);return h=O(h,w),P.fromBytes(u,"recovered").recoverPublicKey(h).toBytes()}return Object.freeze({keygen:f,getPublicKey:p,getSharedSecret:g,utils:d,lengths:l,Point:t,sign:$,verify:L,recoverPublicKey:x,Signature:P,hash:e})}var cn={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Cs={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Ns=BigInt(0),er=BigInt(2);function Hs(t){let e=cn.p,r=BigInt(3),n=BigInt(6),o=BigInt(11),i=BigInt(22),s=BigInt(23),c=BigInt(44),a=BigInt(88),f=t*t*t%e,p=f*f*t%e,g=le(p,r,e)*p%e,d=le(g,r,e)*p%e,l=le(d,er,e)*f%e,b=le(l,o,e)*l%e,E=le(b,i,e)*b%e,B=le(E,c,e)*E%e,_=le(B,a,e)*B%e,N=le(_,c,e)*E%e,H=le(N,r,e)*p%e,P=le(H,s,e)*b%e,q=le(P,n,e)*f%e,Z=le(q,er,e);if(!on.eql(on.sqr(Z),t))throw new Error("Cannot find square root");return Z}var on=at(cn.p,{sqrt:Hs}),Qe=Ao(cn,{Fp:on,endo:Cs}),an=Lo(Qe,ae),Oo={};function sn(t,...e){let r=Oo[t];if(r===void 0){let n=ae(ro(t));r=F(n,n),Oo[t]=r}return ae(F(r,...e))}var nr=t=>t.toBytes(!0).slice(1),rr=t=>t%er===Ns;function tr(t){let{Fn:e,BASE:r}=Qe,n=e.fromBytes(t),o=r.multiply(n);return{scalar:rr(o.y)?n:e.neg(n),bytes:nr(o)}}function To(t){let e=on;if(!e.isValidNot0(t))throw new Error("invalid x: Fail if x \u2265 p");let r=e.create(t*t),n=e.create(r*t+BigInt(7)),o=e.sqrt(n);rr(o)||(o=e.neg(o));let i=Qe.fromAffine({x:t,y:o});return i.assertValidity(),i}var It=qe;function Uo(...t){return Qe.Fn.create(It(sn("BIP0340/challenge",...t)))}function Io(t){return tr(t).bytes}function Ps(t,e,r=xe(32)){let{Fn:n}=Qe,o=W(t,void 0,"message"),{bytes:i,scalar:s}=tr(e),c=W(r,32,"auxRand"),a=n.toBytes(s^It(sn("BIP0340/aux",c))),f=sn("BIP0340/nonce",a,i,o),{bytes:p,scalar:g}=tr(f),d=Uo(p,i,o),l=new Uint8Array(64);if(l.set(p,0),l.set(n.toBytes(n.create(g+d*s)),32),!Co(l,o,i))throw new Error("sign: Invalid signature produced");return l}function Co(t,e,r){let{Fp:n,Fn:o,BASE:i}=Qe,s=W(t,64,"signature"),c=W(e,void 0,"message"),a=W(r,32,"publicKey");try{let f=To(It(a)),p=It(s.subarray(0,32));if(!n.isValidNot0(p))return!1;let g=It(s.subarray(32,64));if(!o.isValidNot0(g))return!1;let d=Uo(o.toBytes(p),nr(f),c),l=i.multiplyUnsafe(g).add(f.multiplyUnsafe(o.neg(d))),{x:b,y:E}=l.toAffine();return!(l.is0()||!rr(E)||b!==p)}catch{return!1}}var ut=(()=>{let r=(n=xe(48))=>Ft(n,cn.n);return{keygen:tn(r,Io),getPublicKey:Io,sign:Ps,verify:Co,Point:Qe,utils:{randomSecretKey:r,taggedHash:sn,lift_x:To,pointToBytes:nr},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();function qs(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function fn(t){if(typeof t!="boolean")throw new Error(`boolean expected, not ${t}`)}function ln(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function ee(t,e,r=""){let n=qs(t),o=t?.length,i=e!==void 0;if(!n||i&&o!==e){let s=r&&`"${r}" `,c=i?` of length ${e}`:"",a=n?`length=${o}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+c+", got "+a)}return t}function or(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function No(t,e){ee(t,void 0,"output");let r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function Re(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function _e(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Ms(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}var $s=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ho(t,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(t,e)}function dt(t,e){if(t.length!==e.length)return!1;let r=0;for(let n=0;n<t.length;n++)r|=t[n]^e[n];return r===0}var ir=(t,e)=>{function r(n,...o){if(ee(n,void 0,"key"),!$s)throw new Error("Non little-endian hardware is not yet supported");if(t.nonceLength!==void 0){let p=o[0];ee(p,t.varSizeNonce?void 0:t.nonceLength,"nonce")}let i=t.tagLength;i&&o[1]!==void 0&&ee(o[1],void 0,"AAD");let s=e(n,...o),c=(p,g)=>{if(g!==void 0){if(p!==2)throw new Error("cipher output not supported");ee(g,void 0,"output")}},a=!1;return{encrypt(p,g){if(a)throw new Error("cannot encrypt() twice with same key + nonce");return a=!0,ee(p),c(s.encrypt.length,g),s.encrypt(p,g)},decrypt(p,g){if(ee(p),i&&p.length<i)throw new Error('"ciphertext" expected length bigger than tagLength='+i);return c(s.decrypt.length,g),s.decrypt(p,g)}}}return Object.assign(r,t),r};function sr(t,e,r=!0){if(e===void 0)return new Uint8Array(t);if(e.length!==t)throw new Error('"output" expected Uint8Array of length '+t+", got: "+e.length);if(r&&!Ds(e))throw new Error("invalid output, must be aligned");return e}function Po(t,e,r){fn(r);let n=new Uint8Array(16),o=Ms(n);return o.setBigUint64(0,BigInt(e),r),o.setBigUint64(8,BigInt(t),r),n}function Ds(t){return t.byteOffset%4===0}function ht(t){return Uint8Array.from(t)}var Mo=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),Vs=Mo("expand 16-byte k"),Ks=Mo("expand 32-byte k"),js=Re(Vs),Zs=Re(Ks);function U(t,e){return t<<e|t>>>32-e}function cr(t){return t.byteOffset%4===0}var un=64,zs=16,$o=2**32-1,qo=Uint32Array.of();function Gs(t,e,r,n,o,i,s,c){let a=o.length,f=new Uint8Array(un),p=Re(f),g=cr(o)&&cr(i),d=g?Re(o):qo,l=g?Re(i):qo;for(let b=0;b<a;s++){if(t(e,r,n,p,s,c),s>=$o)throw new Error("arx: counter overflow");let E=Math.min(un,a-b);if(g&&E===un){let B=b/4;if(b%4!==0)throw new Error("arx: invalid block position");for(let _=0,N;_<zs;_++)N=B+_,l[N]=d[N]^p[_];b+=un;continue}for(let B=0,_;B<E;B++)_=b+B,i[_]=o[_]^f[B];b+=E}}function ar(t,e){let{allowShortKeys:r,extendNonceFn:n,counterLength:o,counterRight:i,rounds:s}=Ho({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return ln(o),ln(s),fn(i),fn(r),(c,a,f,p,g=0)=>{ee(c,void 0,"key"),ee(a,void 0,"nonce"),ee(f,void 0,"data");let d=f.length;if(p===void 0&&(p=new Uint8Array(d)),ee(p,void 0,"output"),ln(g),g<0||g>=$o)throw new Error("arx: counter overflow");if(p.length<d)throw new Error(`arx: output (${p.length}) is shorter than data (${d})`);let l=[],b=c.length,E,B;if(b===32)l.push(E=ht(c)),B=Zs;else if(b===16&&r)E=new Uint8Array(32),E.set(c),E.set(c,16),B=js,l.push(E);else throw ee(c,32,"arx key"),new Error("invalid key size");cr(a)||l.push(a=ht(a));let _=Re(E);if(n){if(a.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(B,_,Re(a.subarray(0,16)),_),a=a.subarray(16)}let N=16-o;if(N!==a.length)throw new Error(`arx: nonce must be ${N} or 16 bytes`);if(N!==12){let P=new Uint8Array(12);P.set(a,i?0:12-a.length),a=P,l.push(a)}let H=Re(a);return Gs(t,B,_,H,f,p,g,s),_e(...l),p}}function te(t,e){return t[e++]&255|(t[e++]&255)<<8}var fr=class{constructor(e){v(this,"blockLen",16);v(this,"outputLen",16);v(this,"buffer",new Uint8Array(16));v(this,"r",new Uint16Array(10));v(this,"h",new Uint16Array(10));v(this,"pad",new Uint16Array(8));v(this,"pos",0);v(this,"finished",!1);e=ht(ee(e,32,"key"));let r=te(e,0),n=te(e,2),o=te(e,4),i=te(e,6),s=te(e,8),c=te(e,10),a=te(e,12),f=te(e,14);this.r[0]=r&8191,this.r[1]=(r>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|i<<9)&8191,this.r[4]=(i>>>4|s<<12)&255,this.r[5]=s>>>1&8190,this.r[6]=(s>>>14|c<<2)&8191,this.r[7]=(c>>>11|a<<5)&8065,this.r[8]=(a>>>8|f<<8)&8191,this.r[9]=f>>>5&127;for(let p=0;p<8;p++)this.pad[p]=te(e,16+2*p)}process(e,r,n=!1){let o=n?0:2048,{h:i,r:s}=this,c=s[0],a=s[1],f=s[2],p=s[3],g=s[4],d=s[5],l=s[6],b=s[7],E=s[8],B=s[9],_=te(e,r+0),N=te(e,r+2),H=te(e,r+4),P=te(e,r+6),q=te(e,r+8),Z=te(e,r+10),Y=te(e,r+12),G=te(e,r+14),O=i[0]+(_&8191),K=i[1]+((_>>>13|N<<3)&8191),$=i[2]+((N>>>10|H<<6)&8191),L=i[3]+((H>>>7|P<<9)&8191),x=i[4]+((P>>>4|q<<12)&8191),u=i[5]+(q>>>1&8191),h=i[6]+((q>>>14|Z<<2)&8191),y=i[7]+((Z>>>11|Y<<5)&8191),w=i[8]+((Y>>>8|G<<8)&8191),k=i[9]+(G>>>5|o),m=0,A=m+O*c+K*(5*B)+$*(5*E)+L*(5*b)+x*(5*l);m=A>>>13,A&=8191,A+=u*(5*d)+h*(5*g)+y*(5*p)+w*(5*f)+k*(5*a),m+=A>>>13,A&=8191;let S=m+O*a+K*c+$*(5*B)+L*(5*E)+x*(5*b);m=S>>>13,S&=8191,S+=u*(5*l)+h*(5*d)+y*(5*g)+w*(5*p)+k*(5*f),m+=S>>>13,S&=8191;let R=m+O*f+K*a+$*c+L*(5*B)+x*(5*E);m=R>>>13,R&=8191,R+=u*(5*b)+h*(5*l)+y*(5*d)+w*(5*g)+k*(5*p),m+=R>>>13,R&=8191;let T=m+O*p+K*f+$*a+L*c+x*(5*B);m=T>>>13,T&=8191,T+=u*(5*E)+h*(5*b)+y*(5*l)+w*(5*d)+k*(5*g),m+=T>>>13,T&=8191;let M=m+O*g+K*p+$*f+L*a+x*c;m=M>>>13,M&=8191,M+=u*(5*B)+h*(5*E)+y*(5*b)+w*(5*l)+k*(5*d),m+=M>>>13,M&=8191;let C=m+O*d+K*g+$*p+L*f+x*a;m=C>>>13,C&=8191,C+=u*c+h*(5*B)+y*(5*E)+w*(5*b)+k*(5*l),m+=C>>>13,C&=8191;let I=m+O*l+K*d+$*g+L*p+x*f;m=I>>>13,I&=8191,I+=u*a+h*c+y*(5*B)+w*(5*E)+k*(5*b),m+=I>>>13,I&=8191;let D=m+O*b+K*l+$*d+L*g+x*p;m=D>>>13,D&=8191,D+=u*f+h*a+y*c+w*(5*B)+k*(5*E),m+=D>>>13,D&=8191;let z=m+O*E+K*b+$*l+L*d+x*g;m=z>>>13,z&=8191,z+=u*p+h*f+y*a+w*c+k*(5*B),m+=z>>>13,z&=8191;let V=m+O*B+K*E+$*b+L*l+x*d;m=V>>>13,V&=8191,V+=u*g+h*p+y*f+w*a+k*c,m+=V>>>13,V&=8191,m=(m<<2)+m|0,m=m+A|0,A=m&8191,m=m>>>13,S+=m,i[0]=A,i[1]=S,i[2]=R,i[3]=T,i[4]=M,i[5]=C,i[6]=I,i[7]=D,i[8]=z,i[9]=V}finalize(){let{h:e,pad:r}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let c=2;c<10;c++)e[c]+=o,o=e[c]>>>13,e[c]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let c=1;c<10;c++)n[c]=e[c]+o,o=n[c]>>>13,n[c]&=8191;n[9]-=8192;let i=(o^1)-1;for(let c=0;c<10;c++)n[c]&=i;i=~i;for(let c=0;c<10;c++)e[c]=e[c]&i|n[c];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let s=e[0]+r[0];e[0]=s&65535;for(let c=1;c<8;c++)s=(e[c]+r[c]|0)+(s>>>16)|0,e[c]=s&65535;_e(n)}update(e){or(this),ee(e),e=ht(e);let{buffer:r,blockLen:n}=this,o=e.length;for(let i=0;i<o;){let s=Math.min(n-this.pos,o-i);if(s===n){for(;n<=o-i;i+=n)this.process(e,i);continue}r.set(e.subarray(i,i+s),this.pos),this.pos+=s,i+=s,this.pos===n&&(this.process(r,0,!1),this.pos=0)}return this}destroy(){_e(this.h,this.r,this.buffer,this.pad)}digestInto(e){or(this),No(e,this),this.finished=!0;let{buffer:r,h:n}=this,{pos:o}=this;if(o){for(r[o++]=1;o<16;o++)r[o]=0;this.process(r,0,!0)}this.finalize();let i=0;for(let s=0;s<8;s++)e[i++]=n[s]>>>0,e[i++]=n[s]>>>8;return e}digest(){let{buffer:e,outputLen:r}=this;this.digestInto(e);let n=e.slice(0,r);return this.destroy(),n}};function Ws(t){let e=(n,o)=>t(o).update(n).digest(),r=t(new Uint8Array(32));return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=n=>t(n),e}var Do=Ws(t=>new fr(t));function jo(t,e,r,n,o,i=20){let s=t[0],c=t[1],a=t[2],f=t[3],p=e[0],g=e[1],d=e[2],l=e[3],b=e[4],E=e[5],B=e[6],_=e[7],N=o,H=r[0],P=r[1],q=r[2],Z=s,Y=c,G=a,O=f,K=p,$=g,L=d,x=l,u=b,h=E,y=B,w=_,k=N,m=H,A=P,S=q;for(let T=0;T<i;T+=2)Z=Z+K|0,k=U(k^Z,16),u=u+k|0,K=U(K^u,12),Z=Z+K|0,k=U(k^Z,8),u=u+k|0,K=U(K^u,7),Y=Y+$|0,m=U(m^Y,16),h=h+m|0,$=U($^h,12),Y=Y+$|0,m=U(m^Y,8),h=h+m|0,$=U($^h,7),G=G+L|0,A=U(A^G,16),y=y+A|0,L=U(L^y,12),G=G+L|0,A=U(A^G,8),y=y+A|0,L=U(L^y,7),O=O+x|0,S=U(S^O,16),w=w+S|0,x=U(x^w,12),O=O+x|0,S=U(S^O,8),w=w+S|0,x=U(x^w,7),Z=Z+$|0,S=U(S^Z,16),y=y+S|0,$=U($^y,12),Z=Z+$|0,S=U(S^Z,8),y=y+S|0,$=U($^y,7),Y=Y+L|0,k=U(k^Y,16),w=w+k|0,L=U(L^w,12),Y=Y+L|0,k=U(k^Y,8),w=w+k|0,L=U(L^w,7),G=G+x|0,m=U(m^G,16),u=u+m|0,x=U(x^u,12),G=G+x|0,m=U(m^G,8),u=u+m|0,x=U(x^u,7),O=O+K|0,A=U(A^O,16),h=h+A|0,K=U(K^h,12),O=O+K|0,A=U(A^O,8),h=h+A|0,K=U(K^h,7);let R=0;n[R++]=s+Z|0,n[R++]=c+Y|0,n[R++]=a+G|0,n[R++]=f+O|0,n[R++]=p+K|0,n[R++]=g+$|0,n[R++]=d+L|0,n[R++]=l+x|0,n[R++]=b+u|0,n[R++]=E+h|0,n[R++]=B+y|0,n[R++]=_+w|0,n[R++]=N+k|0,n[R++]=H+m|0,n[R++]=P+A|0,n[R++]=q+S|0}function Ys(t,e,r,n){let o=t[0],i=t[1],s=t[2],c=t[3],a=e[0],f=e[1],p=e[2],g=e[3],d=e[4],l=e[5],b=e[6],E=e[7],B=r[0],_=r[1],N=r[2],H=r[3];for(let q=0;q<20;q+=2)o=o+a|0,B=U(B^o,16),d=d+B|0,a=U(a^d,12),o=o+a|0,B=U(B^o,8),d=d+B|0,a=U(a^d,7),i=i+f|0,_=U(_^i,16),l=l+_|0,f=U(f^l,12),i=i+f|0,_=U(_^i,8),l=l+_|0,f=U(f^l,7),s=s+p|0,N=U(N^s,16),b=b+N|0,p=U(p^b,12),s=s+p|0,N=U(N^s,8),b=b+N|0,p=U(p^b,7),c=c+g|0,H=U(H^c,16),E=E+H|0,g=U(g^E,12),c=c+g|0,H=U(H^c,8),E=E+H|0,g=U(g^E,7),o=o+f|0,H=U(H^o,16),b=b+H|0,f=U(f^b,12),o=o+f|0,H=U(H^o,8),b=b+H|0,f=U(f^b,7),i=i+p|0,B=U(B^i,16),E=E+B|0,p=U(p^E,12),i=i+p|0,B=U(B^i,8),E=E+B|0,p=U(p^E,7),s=s+g|0,_=U(_^s,16),d=d+_|0,g=U(g^d,12),s=s+g|0,_=U(_^s,8),d=d+_|0,g=U(g^d,7),c=c+a|0,N=U(N^c,16),l=l+N|0,a=U(a^l,12),c=c+a|0,N=U(N^c,8),l=l+N|0,a=U(a^l,7);let P=0;n[P++]=o,n[P++]=i,n[P++]=s,n[P++]=c,n[P++]=B,n[P++]=_,n[P++]=N,n[P++]=H}var pt=ar(jo,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Xs=ar(jo,{counterRight:!1,counterLength:8,extendNonceFn:Ys,allowShortKeys:!1});var Js=new Uint8Array(16),Vo=(t,e)=>{t.update(e);let r=e.length%16;r&&t.update(Js.subarray(r))},Qs=new Uint8Array(32);function Ko(t,e,r,n,o){o!==void 0&&ee(o,void 0,"AAD");let i=t(e,r,Qs),s=Po(n.length,o?o.length:0,!0),c=Do.create(i);o&&Vo(c,o),Vo(c,n),c.update(s);let a=c.digest();return _e(i,s),a}var Zo=t=>(e,r,n)=>({encrypt(i,s){let c=i.length;s=sr(c+16,s,!1),s.set(i);let a=s.subarray(0,-16);t(e,r,a,a,1);let f=Ko(t,e,r,a,n);return s.set(f,c),_e(f),s},decrypt(i,s){s=sr(i.length-16,s,!1);let c=i.subarray(0,-16),a=i.subarray(-16),f=Ko(t,e,r,c,n);if(!dt(a,f))throw new Error("invalid tag");return s.set(i.subarray(0,-16)),t(e,r,s,s,1),_e(f),s}}),qf=ir({blockSize:64,nonceLength:12,tagLength:16},Zo(pt)),Mf=ir({blockSize:64,nonceLength:24,tagLength:16},Zo(Xs));function dn(t,e,r){return Ye(t),r===void 0&&(r=new Uint8Array(t.outputLen)),we(t,r,e)}var lr=Uint8Array.of(0),zo=Uint8Array.of();function hn(t,e,r,n=32){Ye(t),he(n,"length");let o=t.outputLen;if(n>255*o)throw new Error("Length must be <= 255*HashLen");let i=Math.ceil(n/o);r===void 0?r=zo:W(r,void 0,"info");let s=new Uint8Array(i*o),c=we.create(t,e),a=c._cloneInto(),f=new Uint8Array(c.outputLen);for(let p=0;p<i;p++)lr[0]=p+1,a.update(p===0?zo:f).update(r).update(lr).digestInto(f),s.set(f,o*p),c._cloneInto(a);return c.destroy(),a.destroy(),Be(f,lr),s.slice(0,n)}function Wo(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Fs(t){if(!Wo(t))throw new Error("Uint8Array expected")}function Yo(t,e){return Array.isArray(e)?e.length===0?!0:t?e.every(r=>typeof r=="string"):e.every(r=>Number.isSafeInteger(r)):!1}function Tt(t,e){if(typeof e!="string")throw new Error(`${t}: string expected`);return!0}function hr(t){if(!Number.isSafeInteger(t))throw new Error(`invalid integer: ${t}`)}function dr(t){if(!Array.isArray(t))throw new Error("array expected")}function pn(t,e){if(!Yo(!0,e))throw new Error(`${t}: array of strings expected`)}function ec(t,e){if(!Yo(!1,e))throw new Error(`${t}: array of numbers expected`)}function tc(...t){let e=i=>i,r=(i,s)=>c=>i(s(c)),n=t.map(i=>i.encode).reduceRight(r,e),o=t.map(i=>i.decode).reduce(r,e);return{encode:n,decode:o}}function nc(t){let e=typeof t=="string"?t.split(""):t,r=e.length;pn("alphabet",e);let n=new Map(e.map((o,i)=>[o,i]));return{encode:o=>(dr(o),o.map(i=>{if(!Number.isSafeInteger(i)||i<0||i>=r)throw new Error(`alphabet.encode: digit index outside alphabet "${i}". Allowed: ${t}`);return e[i]})),decode:o=>(dr(o),o.map(i=>{Tt("alphabet.decode",i);let s=n.get(i);if(s===void 0)throw new Error(`Unknown letter: "${i}". Allowed: ${t}`);return s}))}}function rc(t=""){return Tt("join",t),{encode:e=>(pn("join.decode",e),e.join(t)),decode:e=>(Tt("join.decode",e),e.split(t))}}function oc(t,e="="){return hr(t),Tt("padding",e),{encode(r){for(pn("padding.encode",r);r.length*t%8;)r.push(e);return r},decode(r){pn("padding.decode",r);let n=r.length;if(n*t%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;n>0&&r[n-1]===e;n--)if((n-1)*t%8===0)throw new Error("padding: invalid, string has too much padding");return r.slice(0,n)}}}var Xo=(t,e)=>e===0?t:Xo(e,t%e),gn=(t,e)=>t+(e-Xo(t,e)),ur=(()=>{let t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function Go(t,e,r,n){if(dr(t),e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(r<=0||r>32)throw new Error(`convertRadix2: wrong to=${r}`);if(gn(e,r)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${r} carryBits=${gn(e,r)}`);let o=0,i=0,s=ur[e],c=ur[r]-1,a=[];for(let f of t){if(hr(f),f>=s)throw new Error(`convertRadix2: invalid data word=${f} from=${e}`);if(o=o<<e|f,i+e>32)throw new Error(`convertRadix2: carry overflow pos=${i} from=${e}`);for(i+=e;i>=r;i-=r)a.push((o>>i-r&c)>>>0);let p=ur[i];if(p===void 0)throw new Error("invalid carry");o&=p-1}if(o=o<<r-i&c,!n&&i>=e)throw new Error("Excess padding");if(!n&&o>0)throw new Error(`Non-zero padding: ${o}`);return n&&i>0&&a.push(o>>>0),a}function ic(t,e=!1){if(hr(t),t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(gn(8,t)>32||gn(t,8)>32)throw new Error("radix2: carry overflow");return{encode:r=>{if(!Wo(r))throw new Error("radix2.encode input should be Uint8Array");return Go(Array.from(r),8,t,!e)},decode:r=>(ec("radix2.decode",r),Uint8Array.from(Go(r,t,8,e)))}}var sc=typeof Uint8Array.from([]).toBase64=="function"&&typeof Uint8Array.fromBase64=="function",cc=(t,e)=>{Tt("base64",t);let r=e?/^[A-Za-z0-9=_-]+$/:/^[A-Za-z0-9=+/]+$/,n=e?"base64url":"base64";if(t.length>0&&!r.test(t))throw new Error("invalid base64");return Uint8Array.fromBase64(t,{alphabet:n,lastChunkHandling:"strict"})},Ut=sc?{encode(t){return Fs(t),t.toBase64()},decode(t){return cc(t,!1)}}:tc(ic(6),nc("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),oc(6),rc(""));var Fe=Symbol("verified"),ac=t=>t instanceof Object;function fc(t){if(!ac(t)||typeof t.kind!="number"||typeof t.content!="string"||typeof t.created_at!="number"||typeof t.pubkey!="string"||!t.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(t.tags))return!1;for(let e=0;e<t.tags.length;e++){let r=t.tags[e];if(!Array.isArray(r))return!1;for(let n=0;n<r.length;n++)if(typeof r[n]!="string")return!1}return!0}var lc=new TextDecoder("utf-8"),yr=new TextEncoder;function Ct(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}var uc=class{generateSecretKey(){return ut.utils.randomSecretKey()}getPublicKey(t){return pe(ut.getPublicKey(t))}finalizeEvent(t,e){let r=t;return r.pubkey=pe(ut.getPublicKey(e)),r.id=pr(r),r.sig=pe(ut.sign(ne(pr(r)),e)),r[Fe]=!0,r}verifyEvent(t){if(typeof t[Fe]=="boolean")return t[Fe];try{let e=pr(t);if(e!==t.id)return t[Fe]=!1,!1;let r=ut.verify(ne(t.sig),ne(e),ne(t.pubkey));return t[Fe]=r,r}catch{return t[Fe]=!1,!1}}};function dc(t){if(!fc(t))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content])}function pr(t){let e=ae(yr.encode(dc(t)));return pe(e)}var yn=new uc,Wf=yn.generateSecretKey,Jo=yn.getPublicKey,hc=yn.finalizeEvent,Fo=yn.verifyEvent,ei=1,ti=65535;function gr(t,e){let r=an.getSharedSecret(t,ne("02"+e)).subarray(1,33);return dn(ae,r,yr.encode("nip44-v2"))}function ni(t,e){let r=hn(ae,t,e,76);return{chacha_key:r.subarray(0,32),chacha_nonce:r.subarray(32,44),hmac_key:r.subarray(44,76)}}function ri(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("expected positive integer");if(t<=32)return 32;let e=1<<Math.floor(Math.log2(t-1))+1,r=e<=256?32:e/8;return r*(Math.floor((t-1)/r)+1)}function pc(t){if(!Number.isSafeInteger(t)||t<ei||t>ti)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");let e=new Uint8Array(2);return new DataView(e.buffer).setUint16(0,t,!1),e}function gc(t){let e=yr.encode(t),r=e.length,n=pc(r),o=new Uint8Array(ri(r)-r);return F(n,e,o)}function bc(t){let e=new DataView(t.buffer).getUint16(0),r=t.subarray(2,2+e);if(e<ei||e>ti||r.length!==e||t.length!==2+ri(e))throw new Error("invalid padding");return lc.decode(r)}function oi(t,e,r){if(r.length!==32)throw new Error("AAD associated data must be 32 bytes");let n=F(r,e);return we(ae,t,n)}function yc(t){if(typeof t!="string")throw new Error("payload must be a valid string");let e=t.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(t[0]==="#")throw new Error("unknown encryption version");let r;try{r=Ut.decode(t)}catch(i){throw new Error("invalid base64: "+i.message)}let n=r.length;if(n<99||n>65603)throw new Error("invalid data length: "+n);let o=r[0];if(o!==2)throw new Error("unknown encryption version "+o);return{nonce:r.subarray(1,33),ciphertext:r.subarray(33,-32),mac:r.subarray(-32)}}function mc(t,e,r=xe(32)){let{chacha_key:n,chacha_nonce:o,hmac_key:i}=ni(e,r),s=gc(t),c=pt(n,o,s),a=oi(i,c,r);return Ut.encode(F(new Uint8Array([2]),r,c,a))}function Qo(t,e){let{nonce:r,ciphertext:n,mac:o}=yc(t),{chacha_key:i,chacha_nonce:s,hmac_key:c}=ni(e,r),a=oi(c,n,r);if(!dt(a,o))throw new Error("invalid MAC");let f=pt(i,s,n);return bc(f)}var xc=/^(?:([\w.+-]+)@)?([\w_-]+(\.[\w_-]+)+)$/,wc;try{wc=fetch}catch{}var Ec=22242,br=24133;function vc(t,e){if(t.ids&&t.ids.indexOf(e.id)===-1||t.kinds&&t.kinds.indexOf(e.kind)===-1||t.authors&&t.authors.indexOf(e.pubkey)===-1)return!1;for(let r in t)if(r[0]==="#"){let n=r.slice(1),o=t[`#${n}`];if(o&&!e.tags.find(([i,s])=>i===r.slice(1)&&o.indexOf(s)!==-1))return!1}return!(t.since&&e.created_at<t.since||t.until&&e.created_at>t.until)}function Sc(t,e){for(let r=0;r<t.length;r++)if(vc(t[r],e))return!0;return!1}function Bc(t,e){let r=e.length+3,n=t.indexOf(`"${e}":`)+r,o=t.slice(n).indexOf('"')+n+1;return t.slice(o,o+64)}function kc(t){let e=t.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let r=t.slice(e+7+1).indexOf('"');if(r===-1)return null;let n=e+7+1+r,o=t.slice(n+1,80).indexOf('"');if(o===-1)return null;let i=n+1+o;return t.slice(n+1,i)}function Ac(t,e){return{kind:Ec,created_at:Math.floor(Date.now()/1e3),tags:[["relay",t],["challenge",e]],content:""}}var ii=class extends Error{constructor(t,e){super(`Tried to send message '${t} on a closed connection to ${e}.`),this.name="SendingOnClosedConnection"}},si=class{constructor(t,e){v(this,"url");v(this,"_connected",!1);v(this,"onclose",null);v(this,"onnotice",t=>console.debug(`NOTICE from ${this.url}: ${t}`));v(this,"onauth");v(this,"baseEoseTimeout",4400);v(this,"publishTimeout",4400);v(this,"pingFrequency",29e3);v(this,"pingTimeout",2e4);v(this,"resubscribeBackoff",[1e4,1e4,1e4,2e4,2e4,3e4,6e4]);v(this,"openSubs",new Map);v(this,"enablePing");v(this,"enableReconnect");v(this,"idleSince",Date.now());v(this,"ongoingOperations",0);v(this,"reconnectTimeoutHandle");v(this,"pingIntervalHandle");v(this,"reconnectAttempts",0);v(this,"skipReconnection",!1);v(this,"connectionPromise");v(this,"openCountRequests",new Map);v(this,"openEventPublishes",new Map);v(this,"ws");v(this,"challenge");v(this,"authPromise");v(this,"serial",0);v(this,"verifyEvent");v(this,"_WebSocket");this.url=Ct(t),this.verifyEvent=e.verifyEvent,this._WebSocket=e.websocketImplementation||WebSocket,this.enablePing=e.enablePing,this.enableReconnect=e.enableReconnect||!1}static async connect(t,e){let r=new si(t,e);return await r.connect(e),r}closeAllSubscriptions(t){for(let[e,r]of this.openSubs)r.close(t);this.openSubs.clear();for(let[e,r]of this.openEventPublishes)r.reject(new Error(t));this.openEventPublishes.clear();for(let[e,r]of this.openCountRequests)r.reject(new Error(t));this.openCountRequests.clear()}get connected(){return this._connected}async reconnect(){let t=this.resubscribeBackoff[Math.min(this.reconnectAttempts,this.resubscribeBackoff.length-1)];this.reconnectAttempts++,this.reconnectTimeoutHandle=setTimeout(async()=>{try{await this.connect()}catch{}},t)}handleHardClose(t){this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this._connected=!1,this.connectionPromise=void 0,this.idleSince=void 0,this.enableReconnect&&!this.skipReconnection?this.reconnect():(this.onclose?.(),this.closeAllSubscriptions(t))}async connect(t){let e;return this.connectionPromise?this.connectionPromise:(this.challenge=void 0,this.authPromise=void 0,this.skipReconnection=!1,this.connectionPromise=new Promise((r,n)=>{t?.timeout&&(e=setTimeout(()=>{n("connection timed out"),this.connectionPromise=void 0,this.skipReconnection=!0,this.onclose?.(),this.handleHardClose("relay connection timed out")},t.timeout)),t?.abort&&(t.abort.onabort=n);try{this.ws=new this._WebSocket(this.url)}catch(o){clearTimeout(e),n(o);return}this.ws.onopen=()=>{this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),clearTimeout(e),this._connected=!0;let o=this.reconnectAttempts>0;this.reconnectAttempts=0;for(let i of this.openSubs.values()){if(i.eosed=!1,o)for(let s=0;s<i.filters.length;s++)i.lastEmitted&&(i.filters[s].since=i.lastEmitted+1);i.fire()}this.enablePing&&(this.pingIntervalHandle=setInterval(()=>this.pingpong(),this.pingFrequency)),r()},this.ws.onerror=()=>{clearTimeout(e),n("connection failed"),this.connectionPromise=void 0,this.skipReconnection=!0,this.onclose?.(),this.handleHardClose("relay connection failed")},this.ws.onclose=o=>{clearTimeout(e),n(o.message||"websocket closed"),this.handleHardClose("relay connection closed")},this.ws.onmessage=this._onmessage.bind(this)}),this.connectionPromise)}waitForPingPong(){return new Promise(t=>{this.ws.once("pong",()=>t(!0)),this.ws.ping()})}waitForDummyReq(){return new Promise((t,e)=>{if(!this.connectionPromise)return e(new Error(`no connection to ${this.url}, can't ping`));try{let r=this.subscribe([{ids:["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],limit:0}],{label:"<forced-ping>",oneose:()=>{t(!0),r.close()},onclose(){t(!0)},eoseTimeout:this.pingTimeout+1e3})}catch(r){e(r)}})}async pingpong(){this.ws?.readyState===1&&(await Promise.any([this.ws&&this.ws.ping&&this.ws.once?this.waitForPingPong():this.waitForDummyReq(),new Promise(e=>setTimeout(()=>e(!1),this.pingTimeout))])||this.ws?.readyState===this._WebSocket.OPEN&&this.ws?.close())}async send(t){if(!this.connectionPromise)throw new ii(t,this.url);this.connectionPromise.then(()=>{this.ws?.send(t)})}async auth(t){let e=this.challenge;if(!e)throw new Error("can't perform auth, no challenge was received");return this.authPromise?this.authPromise:(this.authPromise=new Promise(async(r,n)=>{try{let o=await t(Ac(this.url,e)),i=setTimeout(()=>{let s=this.openEventPublishes.get(o.id);s&&(s.reject(new Error("auth timed out")),this.openEventPublishes.delete(o.id))},this.publishTimeout);this.openEventPublishes.set(o.id,{resolve:r,reject:n,timeout:i}),this.send('["AUTH",'+JSON.stringify(o)+"]")}catch(o){console.warn("subscribe auth function failed:",o)}}),this.authPromise)}async publish(t){this.idleSince=void 0,this.ongoingOperations++;let e=new Promise((r,n)=>{let o=setTimeout(()=>{let i=this.openEventPublishes.get(t.id);i&&(i.reject(new Error("publish timed out")),this.openEventPublishes.delete(t.id))},this.publishTimeout);this.openEventPublishes.set(t.id,{resolve:r,reject:n,timeout:o})});return this.send('["EVENT",'+JSON.stringify(t)+"]"),this.ongoingOperations--,this.ongoingOperations===0&&(this.idleSince=Date.now()),e}async count(t,e){this.serial++;let r=e?.id||"count:"+this.serial,n=new Promise((o,i)=>{this.openCountRequests.set(r,{resolve:o,reject:i})});return this.send('["COUNT","'+r+'",'+JSON.stringify(t).substring(1)),n}subscribe(t,e){e.label!=="<forced-ping>"&&(this.idleSince=void 0,this.ongoingOperations++);let r=this.prepareSubscription(t,e);return r.fire(),e.abort&&(e.abort.onabort=()=>r.close(String(e.abort.reason||"<aborted>"))),r}prepareSubscription(t,e){this.serial++;let r=e.id||(e.label?e.label+":":"sub:")+this.serial,n=new Rc(this,r,t,e);return this.openSubs.set(r,n),n}close(){this.skipReconnection=!0,this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this.closeAllSubscriptions("relay connection closed by us"),this._connected=!1,this.idleSince=void 0,this.onclose?.(),this.ws?.readyState===this._WebSocket.OPEN&&this.ws?.close()}_onmessage(t){let e=t.data;if(!e)return;let r=kc(e);if(r){let n=this.openSubs.get(r);if(!n)return;let o=Bc(e,"id"),i=n.alreadyHaveEvent?.(o);if(n.receivedEvent?.(this,o),i)return}try{let n=JSON.parse(e);switch(n[0]){case"EVENT":{let o=this.openSubs.get(n[1]),i=n[2];this.verifyEvent(i)&&Sc(o.filters,i)?o.onevent(i):o.oninvalidevent?.(i),(!o.lastEmitted||o.lastEmitted<i.created_at)&&(o.lastEmitted=i.created_at);return}case"COUNT":{let o=n[1],i=n[2],s=this.openCountRequests.get(o);s&&(s.resolve(i.count),this.openCountRequests.delete(o));return}case"EOSE":{let o=this.openSubs.get(n[1]);if(!o)return;o.receivedEose();return}case"OK":{let o=n[1],i=n[2],s=n[3],c=this.openEventPublishes.get(o);c&&(clearTimeout(c.timeout),i?c.resolve(s):c.reject(new Error(s)),this.openEventPublishes.delete(o));return}case"CLOSED":{let o=n[1],i=this.openSubs.get(o);if(!i)return;i.closed=!0,i.close(n[2]);return}case"NOTICE":{this.onnotice(n[1]);return}case"AUTH":{this.challenge=n[1],this.onauth&&this.auth(this.onauth);return}default:{this.openSubs.get(n[1])?.oncustom?.(n);return}}}catch(n){try{let[o,i,s]=JSON.parse(e);console.warn(`[nostr] relay ${this.url} error processing message:`,n,s)}catch{console.warn(`[nostr] relay ${this.url} error processing message:`,n)}return}}},Rc=class{constructor(t,e,r,n){v(this,"relay");v(this,"id");v(this,"lastEmitted");v(this,"closed",!1);v(this,"eosed",!1);v(this,"filters");v(this,"alreadyHaveEvent");v(this,"receivedEvent");v(this,"onevent");v(this,"oninvalidevent");v(this,"oneose");v(this,"onclose");v(this,"oncustom");v(this,"eoseTimeout");v(this,"eoseTimeoutHandle");if(r.length===0)throw new Error("subscription can't be created with zero filters");this.relay=t,this.filters=r,this.id=e,this.alreadyHaveEvent=n.alreadyHaveEvent,this.receivedEvent=n.receivedEvent,this.eoseTimeout=n.eoseTimeout||t.baseEoseTimeout,this.oneose=n.oneose,this.onclose=n.onclose,this.oninvalidevent=n.oninvalidevent,this.onevent=n.onevent||(o=>{console.warn(`onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,o)})}fire(){this.relay.send('["REQ","'+this.id+'",'+JSON.stringify(this.filters).substring(1)),this.eoseTimeoutHandle=setTimeout(this.receivedEose.bind(this),this.eoseTimeout)}receivedEose(){this.eosed||(clearTimeout(this.eoseTimeoutHandle),this.eosed=!0,this.oneose?.())}close(t="closed by caller"){if(!this.closed&&this.relay.connected){try{this.relay.send('["CLOSE",'+JSON.stringify(this.id)+"]")}catch(e){if(!(e instanceof ii))throw e}this.closed=!0}this.relay.openSubs.delete(this.id),this.relay.ongoingOperations--,this.relay.ongoingOperations===0&&(this.relay.idleSince=Date.now()),this.onclose?.(t)}},_c=t=>(t[Fe]=!0,!0),Lc=class{constructor(t){v(this,"relays",new Map);v(this,"seenOn",new Map);v(this,"trackRelays",!1);v(this,"verifyEvent");v(this,"enablePing");v(this,"enableReconnect");v(this,"automaticallyAuth");v(this,"trustedRelayURLs",new Set);v(this,"onRelayConnectionFailure");v(this,"onRelayConnectionSuccess");v(this,"allowConnectingToRelay");v(this,"maxWaitForConnection");v(this,"_WebSocket");this.verifyEvent=t.verifyEvent,this._WebSocket=t.websocketImplementation,this.enablePing=t.enablePing,this.enableReconnect=t.enableReconnect||!1,this.automaticallyAuth=t.automaticallyAuth,this.onRelayConnectionFailure=t.onRelayConnectionFailure,this.onRelayConnectionSuccess=t.onRelayConnectionSuccess,this.allowConnectingToRelay=t.allowConnectingToRelay,this.maxWaitForConnection=t.maxWaitForConnection||3e3}async ensureRelay(t,e){t=Ct(t);let r=this.relays.get(t);if(r||(r=new si(t,{verifyEvent:this.trustedRelayURLs.has(t)?_c:this.verifyEvent,websocketImplementation:this._WebSocket,enablePing:this.enablePing,enableReconnect:this.enableReconnect}),r.onclose=()=>{this.relays.delete(t)},this.relays.set(t,r)),this.automaticallyAuth){let n=this.automaticallyAuth(t);n&&(r.onauth=n)}try{await r.connect({timeout:e?.connectionTimeout,abort:e?.abort})}catch(n){throw this.relays.delete(t),n}return r}close(t){t.map(Ct).forEach(e=>{this.relays.get(e)?.close(),this.relays.delete(e)})}subscribe(t,e,r){let n=[],o=[];for(let i=0;i<t.length;i++){let s=Ct(t[i]);n.find(c=>c.url===s)||o.indexOf(s)===-1&&(o.push(s),n.push({url:s,filter:e}))}return this.subscribeMap(n,r)}subscribeMany(t,e,r){return this.subscribe(t,e,r)}subscribeMap(t,e){let r=new Map;for(let d of t){let{url:l,filter:b}=d;r.has(l)||r.set(l,[]),r.get(l).push(b)}let n=Array.from(r.entries()).map(([d,l])=>({url:d,filters:l}));this.trackRelays&&(e.receivedEvent=(d,l)=>{let b=this.seenOn.get(l);b||(b=new Set,this.seenOn.set(l,b)),b.add(d)});let o=new Set,i=[],s=[],c=d=>{s[d]||(s[d]=!0,s.filter(l=>l).length===n.length&&(e.oneose?.(),c=()=>{}))},a=[],f=(d,l)=>{a[d]||(c(d),a[d]=l,a.filter(b=>b).length===n.length&&(e.onclose?.(a),f=()=>{}))},p=d=>{if(e.alreadyHaveEvent?.(d))return!0;let l=o.has(d);return o.add(d),l},g=Promise.all(n.map(async({url:d,filters:l},b)=>{if(this.allowConnectingToRelay?.(d,["read",l])===!1){f(b,"connection skipped by allowConnectingToRelay");return}let E;try{E=await this.ensureRelay(d,{connectionTimeout:this.maxWaitForConnection<(e.maxWait||0)?Math.max(e.maxWait*.8,e.maxWait-1e3):this.maxWaitForConnection,abort:e.abort})}catch(_){this.onRelayConnectionFailure?.(d),f(b,_?.message||String(_));return}this.onRelayConnectionSuccess?.(d);let B=E.subscribe(l,{...e,oneose:()=>c(b),onclose:_=>{_.startsWith("auth-required: ")&&e.onauth?E.auth(e.onauth).then(()=>{E.subscribe(l,{...e,oneose:()=>c(b),onclose:N=>{f(b,N)},alreadyHaveEvent:p,eoseTimeout:e.maxWait,abort:e.abort})}).catch(N=>{f(b,`auth was required and attempted, but failed with: ${N}`)}):f(b,_)},alreadyHaveEvent:p,eoseTimeout:e.maxWait,abort:e.abort});i.push(B)}));return{async close(d){await g,i.forEach(l=>{l.close(d)})}}}subscribeEose(t,e,r){let n;return n=this.subscribe(t,e,{...r,oneose(){let o="closed automatically on eose";n?n.close(o):r.onclose?.(t.map(i=>o))}}),n}subscribeManyEose(t,e,r){return this.subscribeEose(t,e,r)}async querySync(t,e,r){return new Promise(async n=>{let o=[];this.subscribeEose(t,e,{...r,onevent(i){o.push(i)},onclose(i){n(o)}})})}async get(t,e,r){e.limit=1;let n=await this.querySync(t,e,r);return n.sort((o,i)=>i.created_at-o.created_at),n[0]||null}publish(t,e,r){return t.map(Ct).map(async(n,o,i)=>{if(i.indexOf(n)!==o)return Promise.reject("duplicate url");if(this.allowConnectingToRelay?.(n,["write",e])===!1)return Promise.reject("connection skipped by allowConnectingToRelay");let s;try{s=await this.ensureRelay(n,{connectionTimeout:this.maxWaitForConnection<(r?.maxWait||0)?Math.max(r.maxWait*.8,r.maxWait-1e3):this.maxWaitForConnection,abort:r?.abort})}catch(c){return this.onRelayConnectionFailure?.(n),"connection failure: "+String(c)}return s.publish(e).catch(async c=>{if(c instanceof Error&&c.message.startsWith("auth-required: ")&&r?.onauth)return await s.auth(r.onauth),s.publish(e);throw c}).then(c=>{if(this.trackRelays){let a=this.seenOn.get(e.id);a||(a=new Set,this.seenOn.set(e.id,a)),a.add(s)}return c})})}listConnectionStatus(){let t=new Map;return this.relays.forEach((e,r)=>t.set(r,e.connected)),t}destroy(){this.relays.forEach(t=>t.close()),this.relays=new Map}pruneIdleRelays(t=1e4){let e=[];for(let[r,n]of this.relays)n.idleSince&&Date.now()-n.idleSince>=t&&(this.relays.delete(r),e.push(r),n.close());return e}},ci;try{ci=WebSocket}catch{}var Oc=class extends Lc{constructor(t){super({verifyEvent:Fo,websocketImplementation:ci,maxWaitForConnection:3e3,...t})}},ai;try{ai=fetch}catch{}var Ic=/^bunker:\/\/([0-9a-f]{64})\??([?\/\w:.=&%-]*)$/;async function fi(t){let e=t.match(Ic);if(e)try{let r=e[1],n=new URLSearchParams(e[2]);return{pubkey:r,relays:n.getAll("relay"),secret:n.get("secret")}}catch{}return Tc(t)}async function Tc(t){let e=t.match(xc);if(!e)return null;let[r,n="_",o]=e;try{let i=`https://${o}/.well-known/nostr.json?name=${n}`,s=await(await ai(i,{redirect:"error"})).json(),c=s.names[n],a=s.nip46[c]||[];return{pubkey:c,relays:a,secret:null}}catch{return null}}var bn=class{constructor(t,e){v(this,"params");v(this,"pool");v(this,"subCloser");v(this,"isOpen");v(this,"serial");v(this,"idPrefix");v(this,"listeners");v(this,"waitingForAuth");v(this,"secretKey");v(this,"conversationKey");v(this,"bp");v(this,"cachedPubKey");this.params=e,this.pool=e.pool||new Oc,this.secretKey=t,this.isOpen=!1,this.idPrefix=Math.random().toString(36).substring(7),this.serial=0,this.listeners={},this.waitingForAuth={}}static fromBunker(t,e,r={}){if(e.relays.length===0)throw new Error("no relays specified for this bunker");let n=new bn(t,r);return n.conversationKey=gr(t,e.pubkey),n.bp=e,n.setupSubscription(),n}static async fromURI(t,e,r={},n=3e5){let o=new bn(t,r),i=new URL(e),s=Jo(t);return new Promise((c,a)=>{let f=!1,p=o.pool.subscribe(i.searchParams.getAll("relay"),{kinds:[br],"#p":[s],limit:0},{onevent:async g=>{try{let d=gr(t,g.pubkey),l=Qo(g.content,d);JSON.parse(l).result===i.searchParams.get("secret")&&(p.close(),o.bp={pubkey:g.pubkey,relays:i.searchParams.getAll("relay"),secret:i.searchParams.get("secret")},o.conversationKey=gr(t,g.pubkey),o.setupSubscription(),f=!0,await Promise.race([new Promise(E=>setTimeout(E,1e3)),o.switchRelays()]),c(o))}catch(d){console.warn("failed to process potential connection event",d)}},onclose:()=>{f||a(new Error("subscription closed before connection was established."))},maxWait:typeof n=="number"?n:void 0,abort:typeof n!="number"?n:void 0})})}setupSubscription(){let t=this.listeners,e=this.waitingForAuth,r=this.conversationKey;this.subCloser=this.pool.subscribe(this.bp.relays,{kinds:[br],authors:[this.bp.pubkey],"#p":[Jo(this.secretKey)],limit:0},{onevent:async n=>{let o=JSON.parse(Qo(n.content,r)),{id:i,result:s,error:c}=o;if(s==="auth_url"&&e[i]){delete e[i],this.params.onauth?this.params.onauth(c):console.warn(`nostr-tools/nip46: remote signer ${this.bp.pubkey} tried to send an "auth_url"='${c}' but there was no onauth() callback configured.`);return}let a=t[i];a&&(c?a.reject(c):s&&a.resolve(s),delete t[i])},onclose:()=>{this.subCloser=void 0}}),this.isOpen=!0}async switchRelays(){try{let t=await this.sendRequest("switch_relays",[]),e=JSON.parse(t);if(!e||JSON.stringify(e.sort())===JSON.stringify(this.bp.relays))return!1;this.bp.relays=e;let r=this.subCloser;return setTimeout(()=>{r.close()},5e3),this.subCloser=void 0,this.setupSubscription(),!0}catch{return!1}}async close(){this.isOpen=!1,this.subCloser.close()}async sendRequest(t,e){return new Promise(async(r,n)=>{try{if(!this.isOpen)throw new Error("this signer is not open anymore, create a new one");this.subCloser||this.setupSubscription(),this.serial++;let o=`${this.idPrefix}-${this.serial}`,i=mc(JSON.stringify({id:o,method:t,params:e}),this.conversationKey),s=hc({kind:br,tags:[["p",this.bp.pubkey]],content:i,created_at:Math.floor(Date.now()/1e3)},this.secretKey);this.listeners[o]={resolve:r,reject:n},this.waitingForAuth[o]=!0,await Promise.any(this.pool.publish(this.bp.relays,s))}catch(o){n(o)}})}async ping(){let t=await this.sendRequest("ping",[]);if(t!=="pong")throw new Error(`result is not pong: ${t}`)}async connect(){await this.sendRequest("connect",[this.bp.pubkey,this.bp.secret||""])}async getPublicKey(){return this.cachedPubKey||(this.cachedPubKey=await this.sendRequest("get_public_key",[])),this.cachedPubKey}async signEvent(t){let e=await this.sendRequest("sign_event",[JSON.stringify(t)]),r=JSON.parse(e);if(Fo(r))return r;throw new Error(`event returned from bunker is improperly signed: ${JSON.stringify(r)}`)}async nip04Encrypt(t,e){return await this.sendRequest("nip04_encrypt",[t,e])}async nip04Decrypt(t,e){return await this.sendRequest("nip04_decrypt",[t,e])}async nip44Encrypt(t,e){return await this.sendRequest("nip44_encrypt",[t,e])}async nip44Decrypt(t,e){return await this.sendRequest("nip44_decrypt",[t,e])}};function Nt(){return typeof window<"u"&&!!window.nostr&&typeof window.nostr.signEvent=="function"}var mr=class{constructor(e,r){this.pubkey=e;this.provider=r;this.method="nip07";this.capabilities={canSignEvents:!0,hasNip44:!!r.nip44},r.nip44&&(this.nip44={encrypt:(n,o)=>r.nip44.encrypt(n,o),decrypt:(n,o)=>r.nip44.decrypt(n,o)})}async signEvent(e){return this.provider.signEvent(e)}async close(){}};async function Ht(){if(!Nt())throw new Error("no-nip07-provider");let t=window.nostr,e=await t.getPublicKey();if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("invalid-pubkey-from-nip07");return new mr(e.toLowerCase(),t)}var xr=class{constructor(e,r,n,o){this.pubkey=e;this.bunker=r;this.bunkerUri=n;this.clientSecretKey=o;this.method="bunker";this.capabilities={canSignEvents:!0,hasNip44:!0};this.nip44={encrypt:(i,s)=>r.nip44Encrypt(i,s),decrypt:(i,s)=>r.nip44Decrypt(i,s)}}async signEvent(e){let{pubkey:r,...n}=e,o={kind:n.kind,content:n.content,created_at:n.created_at??Math.floor(Date.now()/1e3),tags:n.tags??[]};return await this.bunker.signEvent(o)}async close(){await this.bunker.close()}};async function Pt(t){let e=t.uri.trim();if(!e)throw new Error("empty-bunker-uri");let r=await fi(e);if(!r)throw new Error("invalid-bunker-uri");let n=t.clientSecretKey??Uc();if(n.length!==32)throw new Error("invalid-client-secret-key");let o=bn.fromBunker(n,r,{onauth:t.onauth});await o.connect();let i=await o.getPublicKey();if(!/^[0-9a-f]{64}$/i.test(i))throw await o.close().catch(()=>{}),new Error("invalid-pubkey-from-bunker");return new xr(i.toLowerCase(),o,e,n)}function Uc(){let t=new Uint8Array(32);return crypto.getRandomValues(t),t}var Ee=class{constructor(e,r){this.pubkey=e;this.authEvent=r;this.method="redirect";this.capabilities={canSignEvents:!1,hasNip44:!1}}async signEvent(e){throw new Error("signer-auth-only: this session was established via redirect and cannot sign new events. Install a NIP-07 extension (bark, Alby) or paste a bunker URI to upgrade.")}async close(){}};var et=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function tt(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function qt(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function ye(t,...e){if(!tt(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function mn(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");qt(t.outputLen),qt(t.blockLen)}function bt(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function ui(t,e){ye(t);let r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function nt(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function xn(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function me(t,e){return t<<32-e|t>>>e}var di=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Cc=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function se(t){if(ye(t),di)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=Cc[t[r]];return e}var Le={_0:48,_9:57,A:65,F:70,a:97,f:102};function li(t){if(t>=Le._0&&t<=Le._9)return t-Le._0;if(t>=Le.A&&t<=Le.F)return t-(Le.A-10);if(t>=Le.a&&t<=Le.f)return t-(Le.a-10)}function rt(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(di)return Uint8Array.fromHex(t);let e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(r);for(let o=0,i=0;o<r;o++,i+=2){let s=li(t.charCodeAt(i)),c=li(t.charCodeAt(i+1));if(s===void 0||c===void 0){let a=t[i]+t[i+1];throw new Error('hex string expected, got non-hex character "'+a+'" at index '+i)}n[o]=s*16+c}return n}function wn(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function Mt(t){return typeof t=="string"&&(t=wn(t)),ye(t),t}function fe(...t){let e=0;for(let n=0;n<t.length;n++){let o=t[n];ye(o),e+=o.length}let r=new Uint8Array(e);for(let n=0,o=0;n<t.length;n++){let i=t[n];r.set(i,o),o+=i.length}return r}var gt=class{};function hi(t){let e=n=>t().update(Mt(n)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}function ot(t=32){if(et&&typeof et.getRandomValues=="function")return et.getRandomValues(new Uint8Array(t));if(et&&typeof et.randomBytes=="function")return Uint8Array.from(et.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function Nc(t,e,r,n){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,r,n);let o=BigInt(32),i=BigInt(4294967295),s=Number(r>>o&i),c=Number(r&i),a=n?4:0,f=n?0:4;t.setUint32(e+a,s,n),t.setUint32(e+f,c,n)}function pi(t,e,r){return t&e^~t&r}function gi(t,e,r){return t&e^t&r^e&r}var En=class extends gt{constructor(e,r,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=xn(this.buffer)}update(e){bt(this),e=Mt(e),ye(e);let{view:r,buffer:n,blockLen:o}=this,i=e.length;for(let s=0;s<i;){let c=Math.min(o-this.pos,i-s);if(c===o){let a=xn(e);for(;o<=i-s;s+=o)this.process(a,s);continue}n.set(e.subarray(s,s+c),this.pos),this.pos+=c,s+=c,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){bt(this),ui(e,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;r[s++]=128,nt(this.buffer.subarray(s)),this.padOffset>o-s&&(this.process(n,0),s=0);for(let g=s;g<o;g++)r[g]=0;Nc(n,o-8,BigInt(this.length*8),i),this.process(n,0);let c=xn(e),a=this.outputLen;if(a%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let f=a/4,p=this.get();if(f>p.length)throw new Error("_sha2: outputLen bigger than state");for(let g=0;g<f;g++)c.setUint32(4*g,p[g],i)}digest(){let{buffer:e,outputLen:r}=this;this.digestInto(e);let n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:i,destroyed:s,pos:c}=this;return e.destroyed=s,e.finished=i,e.length=o,e.pos=c,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Oe=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var Hc=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),$e=new Uint32Array(64),vn=class extends En{constructor(e=32){super(64,e,8,!1),this.A=Oe[0]|0,this.B=Oe[1]|0,this.C=Oe[2]|0,this.D=Oe[3]|0,this.E=Oe[4]|0,this.F=Oe[5]|0,this.G=Oe[6]|0,this.H=Oe[7]|0}get(){let{A:e,B:r,C:n,D:o,E:i,F:s,G:c,H:a}=this;return[e,r,n,o,i,s,c,a]}set(e,r,n,o,i,s,c,a){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=c|0,this.H=a|0}process(e,r){for(let g=0;g<16;g++,r+=4)$e[g]=e.getUint32(r,!1);for(let g=16;g<64;g++){let d=$e[g-15],l=$e[g-2],b=me(d,7)^me(d,18)^d>>>3,E=me(l,17)^me(l,19)^l>>>10;$e[g]=E+$e[g-7]+b+$e[g-16]|0}let{A:n,B:o,C:i,D:s,E:c,F:a,G:f,H:p}=this;for(let g=0;g<64;g++){let d=me(c,6)^me(c,11)^me(c,25),l=p+d+pi(c,a,f)+Hc[g]+$e[g]|0,E=(me(n,2)^me(n,13)^me(n,22))+gi(n,o,i)|0;p=f,f=a,a=c,c=s+l|0,s=i,i=o,o=n,n=l+E|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,c=c+this.E|0,a=a+this.F|0,f=f+this.G|0,p=p+this.H|0,this.set(n,o,i,s,c,a,f,p)}roundClean(){nt($e)}destroy(){this.set(0,0,0,0,0,0,0,0),nt(this.buffer)}};var yt=hi(()=>new vn);var Sn=class extends gt{constructor(e,r){super(),this.finished=!1,this.destroyed=!1,mn(e);let n=Mt(r);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,i=new Uint8Array(o);i.set(n.length>o?e.create().update(n).digest():n);for(let s=0;s<i.length;s++)i[s]^=54;this.iHash.update(i),this.oHash=e.create();for(let s=0;s<i.length;s++)i[s]^=106;this.oHash.update(i),nt(i)}update(e){return bt(this),this.iHash.update(e),this}digestInto(e){bt(this),ye(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:r,iHash:n,finished:o,destroyed:i,blockLen:s,outputLen:c}=this;return e=e,e.finished=o,e.destroyed=i,e.blockLen=s,e.outputLen=c,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},wr=(t,e,r)=>new Sn(t,e).update(r).digest();wr.create=(t,e)=>new Sn(t,e);var Sr=BigInt(0),vr=BigInt(1);function $t(t,e=""){if(typeof t!="boolean"){let r=e&&`"${e}"`;throw new Error(r+"expected boolean, got type="+typeof t)}return t}function De(t,e,r=""){let n=tt(t),o=t?.length,i=e!==void 0;if(!n||i&&o!==e){let s=r&&`"${r}" `,c=i?` of length ${e}`:"",a=n?`length=${o}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+c+", got "+a)}return t}function Dt(t){let e=t.toString(16);return e.length&1?"0"+e:e}function bi(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?Sr:BigInt("0x"+t)}function Ie(t){return bi(se(t))}function Br(t){return ye(t),bi(se(Uint8Array.from(t).reverse()))}function mt(t,e){return rt(t.toString(16).padStart(e*2,"0"))}function kr(t,e){return mt(t,e).reverse()}function J(t,e,r){let n;if(typeof e=="string")try{n=rt(e)}catch(i){throw new Error(t+" must be hex string or Uint8Array, cause: "+i)}else if(tt(e))n=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");let o=n.length;if(typeof r=="number"&&o!==r)throw new Error(t+" of length "+r+" expected, got "+o);return n}var Er=t=>typeof t=="bigint"&&Sr<=t;function Vt(t,e,r){return Er(t)&&Er(e)&&Er(r)&&e<=t&&t<r}function yi(t,e,r,n){if(!Vt(e,r,n))throw new Error("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function Bn(t){let e;for(e=0;t>Sr;t>>=vr,e+=1);return e}var Ve=t=>(vr<<BigInt(t))-vr;function mi(t,e,r){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof r!="function")throw new Error("hmacFn must be a function");let n=l=>new Uint8Array(l),o=l=>Uint8Array.of(l),i=n(t),s=n(t),c=0,a=()=>{i.fill(1),s.fill(0),c=0},f=(...l)=>r(s,i,...l),p=(l=n(0))=>{s=f(o(0),l),i=f(),l.length!==0&&(s=f(o(1),l),i=f())},g=()=>{if(c++>=1e3)throw new Error("drbg: tried 1000 values");let l=0,b=[];for(;l<e;){i=f();let E=i.slice();b.push(E),l+=i.length}return fe(...b)};return(l,b)=>{a(),p(l);let E;for(;!(E=b(g()));)p();return a(),E}}function Kt(t,e,r={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function n(o,i,s){let c=t[o];if(s&&c===void 0)return;let a=typeof c;if(a!==i||c===null)throw new Error(`param "${o}" is invalid: expected ${i}, got ${a}`)}Object.entries(e).forEach(([o,i])=>n(o,i,!1)),Object.entries(r).forEach(([o,i])=>n(o,i,!0))}function Ar(t){let e=new WeakMap;return(r,...n)=>{let o=e.get(r);if(o!==void 0)return o;let i=t(r,...n);return e.set(r,i),i}}var ce=BigInt(0),oe=BigInt(1),it=BigInt(2),Ei=BigInt(3),vi=BigInt(4),Si=BigInt(5),Pc=BigInt(7),Bi=BigInt(8),qc=BigInt(9),ki=BigInt(16);function ue(t,e){let r=t%e;return r>=ce?r:e+r}function de(t,e,r){let n=t;for(;e-- >ce;)n*=n,n%=r;return n}function xi(t,e){if(t===ce)throw new Error("invert: expected non-zero number");if(e<=ce)throw new Error("invert: expected positive modulus, got "+e);let r=ue(t,e),n=e,o=ce,i=oe,s=oe,c=ce;for(;r!==ce;){let f=n/r,p=n%r,g=o-s*f,d=i-c*f;n=r,r=p,o=s,i=c,s=g,c=d}if(n!==oe)throw new Error("invert: does not exist");return ue(o,e)}function Rr(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}function Ai(t,e){let r=(t.ORDER+oe)/vi,n=t.pow(e,r);return Rr(t,n,e),n}function Mc(t,e){let r=(t.ORDER-Si)/Bi,n=t.mul(e,it),o=t.pow(n,r),i=t.mul(e,o),s=t.mul(t.mul(i,it),o),c=t.mul(i,t.sub(s,t.ONE));return Rr(t,c,e),c}function $c(t){let e=Ke(t),r=Ri(t),n=r(e,e.neg(e.ONE)),o=r(e,n),i=r(e,e.neg(n)),s=(t+Pc)/ki;return(c,a)=>{let f=c.pow(a,s),p=c.mul(f,n),g=c.mul(f,o),d=c.mul(f,i),l=c.eql(c.sqr(p),a),b=c.eql(c.sqr(g),a);f=c.cmov(f,p,l),p=c.cmov(d,g,b);let E=c.eql(c.sqr(p),a),B=c.cmov(f,p,E);return Rr(c,B,a),B}}function Ri(t){if(t<Ei)throw new Error("sqrt is not defined for small field");let e=t-oe,r=0;for(;e%it===ce;)e/=it,r++;let n=it,o=Ke(t);for(;wi(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return Ai;let i=o.pow(n,e),s=(e+oe)/it;return function(a,f){if(a.is0(f))return f;if(wi(a,f)!==1)throw new Error("Cannot find square root");let p=r,g=a.mul(a.ONE,i),d=a.pow(f,e),l=a.pow(f,s);for(;!a.eql(d,a.ONE);){if(a.is0(d))return a.ZERO;let b=1,E=a.sqr(d);for(;!a.eql(E,a.ONE);)if(b++,E=a.sqr(E),b===p)throw new Error("Cannot find square root");let B=oe<<BigInt(p-b-1),_=a.pow(g,B);p=b,g=a.sqr(_),d=a.mul(d,g),l=a.mul(l,_)}return l}}function Dc(t){return t%vi===Ei?Ai:t%Bi===Si?Mc:t%ki===qc?$c(t):Ri(t)}var Vc=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function _r(t){let e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},r=Vc.reduce((n,o)=>(n[o]="function",n),e);return Kt(t,r),t}function Kc(t,e,r){if(r<ce)throw new Error("invalid exponent, negatives unsupported");if(r===ce)return t.ONE;if(r===oe)return e;let n=t.ONE,o=e;for(;r>ce;)r&oe&&(n=t.mul(n,o)),o=t.sqr(o),r>>=oe;return n}function kn(t,e,r=!1){let n=new Array(e.length).fill(r?t.ZERO:void 0),o=e.reduce((s,c,a)=>t.is0(c)?s:(n[a]=s,t.mul(s,c)),t.ONE),i=t.inv(o);return e.reduceRight((s,c,a)=>t.is0(c)?s:(n[a]=t.mul(s,n[a]),t.mul(s,c)),i),n}function wi(t,e){let r=(t.ORDER-oe)/it,n=t.pow(e,r),o=t.eql(n,t.ONE),i=t.eql(n,t.ZERO),s=t.eql(n,t.neg(t.ONE));if(!o&&!i&&!s)throw new Error("invalid Legendre symbol result");return o?1:i?0:-1}function An(t,e){e!==void 0&&qt(e);let r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}function Ke(t,e,r=!1,n={}){if(t<=ce)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,i,s=!1,c;if(typeof e=="object"&&e!=null){if(n.sqrt||r)throw new Error("cannot specify opts in two arguments");let d=e;d.BITS&&(o=d.BITS),d.sqrt&&(i=d.sqrt),typeof d.isLE=="boolean"&&(r=d.isLE),typeof d.modFromBytes=="boolean"&&(s=d.modFromBytes),c=d.allowedLengths}else typeof e=="number"&&(o=e),n.sqrt&&(i=n.sqrt);let{nBitLength:a,nByteLength:f}=An(t,o);if(f>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let p,g=Object.freeze({ORDER:t,isLE:r,BITS:a,BYTES:f,MASK:Ve(a),ZERO:ce,ONE:oe,allowedLengths:c,create:d=>ue(d,t),isValid:d=>{if(typeof d!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof d);return ce<=d&&d<t},is0:d=>d===ce,isValidNot0:d=>!g.is0(d)&&g.isValid(d),isOdd:d=>(d&oe)===oe,neg:d=>ue(-d,t),eql:(d,l)=>d===l,sqr:d=>ue(d*d,t),add:(d,l)=>ue(d+l,t),sub:(d,l)=>ue(d-l,t),mul:(d,l)=>ue(d*l,t),pow:(d,l)=>Kc(g,d,l),div:(d,l)=>ue(d*xi(l,t),t),sqrN:d=>d*d,addN:(d,l)=>d+l,subN:(d,l)=>d-l,mulN:(d,l)=>d*l,inv:d=>xi(d,t),sqrt:i||(d=>(p||(p=Dc(t)),p(g,d))),toBytes:d=>r?kr(d,f):mt(d,f),fromBytes:(d,l=!0)=>{if(c){if(!c.includes(d.length)||d.length>f)throw new Error("Field.fromBytes: expected "+c+" bytes, got "+d.length);let E=new Uint8Array(f);E.set(d,r?0:E.length-d.length),d=E}if(d.length!==f)throw new Error("Field.fromBytes: expected "+f+" bytes, got "+d.length);let b=r?Br(d):Ie(d);if(s&&(b=ue(b,t)),!l&&!g.isValid(b))throw new Error("invalid field element: outside of range 0..ORDER");return b},invertBatch:d=>kn(g,d),cmov:(d,l,b)=>b?l:d});return Object.freeze(g)}function _i(t){if(typeof t!="bigint")throw new Error("field order must be bigint");let e=t.toString(2).length;return Math.ceil(e/8)}function Lr(t){let e=_i(t);return e+Math.ceil(e/2)}function Rn(t,e,r=!1){let n=t.length,o=_i(e),i=Lr(e);if(n<16||n<i||n>1024)throw new Error("expected "+i+"-1024 bytes of input, got "+n);let s=r?Br(t):Ie(t),c=ue(s,e-oe)+oe;return r?kr(c,o):mt(c,o)}var xt=BigInt(0),st=BigInt(1);function jt(t,e){let r=e.negate();return t?r:e}function Ln(t,e){let r=kn(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function Ti(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Or(t,e){Ti(t,e);let r=Math.ceil(e/t)+1,n=2**(t-1),o=2**t,i=Ve(t),s=BigInt(t);return{windows:r,windowSize:n,mask:i,maxNumber:o,shiftBy:s}}function Li(t,e,r){let{windowSize:n,mask:o,maxNumber:i,shiftBy:s}=r,c=Number(t&o),a=t>>s;c>n&&(c-=i,a+=st);let f=e*n,p=f+Math.abs(c)-1,g=c===0,d=c<0,l=e%2!==0;return{nextN:a,offset:p,isZero:g,isNeg:d,isNegF:l,offsetF:f}}function jc(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function Zc(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,n)=>{if(!e.isValid(r))throw new Error("invalid scalar at index "+n)})}var Ir=new WeakMap,Ui=new WeakMap;function Tr(t){return Ui.get(t)||1}function Oi(t){if(t!==xt)throw new Error("invalid wNAF")}var _n=class{constructor(e,r){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=r}_unsafeLadder(e,r,n=this.ZERO){let o=e;for(;r>xt;)r&st&&(n=n.add(o)),o=o.double(),r>>=st;return n}precomputeWindow(e,r){let{windows:n,windowSize:o}=Or(r,this.bits),i=[],s=e,c=s;for(let a=0;a<n;a++){c=s,i.push(c);for(let f=1;f<o;f++)c=c.add(s),i.push(c);s=c.double()}return i}wNAF(e,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,i=this.BASE,s=Or(e,this.bits);for(let c=0;c<s.windows;c++){let{nextN:a,offset:f,isZero:p,isNeg:g,isNegF:d,offsetF:l}=Li(n,c,s);n=a,p?i=i.add(jt(d,r[l])):o=o.add(jt(g,r[f]))}return Oi(n),{p:o,f:i}}wNAFUnsafe(e,r,n,o=this.ZERO){let i=Or(e,this.bits);for(let s=0;s<i.windows&&n!==xt;s++){let{nextN:c,offset:a,isZero:f,isNeg:p}=Li(n,s,i);if(n=c,!f){let g=r[a];o=o.add(p?g.negate():g)}}return Oi(n),o}getPrecomputes(e,r,n){let o=Ir.get(r);return o||(o=this.precomputeWindow(r,e),e!==1&&(typeof n=="function"&&(o=n(o)),Ir.set(r,o))),o}cached(e,r,n){let o=Tr(e);return this.wNAF(o,this.getPrecomputes(o,e,n),r)}unsafe(e,r,n,o){let i=Tr(e);return i===1?this._unsafeLadder(e,r,o):this.wNAFUnsafe(i,this.getPrecomputes(i,e,n),r,o)}createCache(e,r){Ti(r,this.bits),Ui.set(e,r),Ir.delete(e)}hasCache(e){return Tr(e)!==1}};function Ci(t,e,r,n){let o=e,i=t.ZERO,s=t.ZERO;for(;r>xt||n>xt;)r&st&&(i=i.add(o)),n&st&&(s=s.add(o)),o=o.double(),r>>=st,n>>=st;return{p1:i,p2:s}}function Ni(t,e,r,n){jc(r,t),Zc(n,e);let o=r.length,i=n.length;if(o!==i)throw new Error("arrays of points and scalars must have equal length");let s=t.ZERO,c=Bn(BigInt(o)),a=1;c>12?a=c-3:c>4?a=c-2:c>0&&(a=2);let f=Ve(a),p=new Array(Number(f)+1).fill(s),g=Math.floor((e.BITS-1)/a)*a,d=s;for(let l=g;l>=0;l-=a){p.fill(s);for(let E=0;E<i;E++){let B=n[E],_=Number(B>>BigInt(l)&f);p[_]=p[_].add(r[E])}let b=s;for(let E=p.length-1,B=s;E>0;E--)B=B.add(p[E]),b=b.add(B);if(d=d.add(b),l!==0)for(let E=0;E<a;E++)d=d.double()}return d}function Ii(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return _r(e),e}else return Ke(t,{isLE:r})}function Hi(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(let a of["p","n","h"]){let f=e[a];if(!(typeof f=="bigint"&&f>xt))throw new Error(`CURVE.${a} must be positive bigint`)}let o=Ii(e.p,r.Fp,n),i=Ii(e.n,r.Fn,n),c=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(let a of c)if(!o.isValid(e[a]))throw new Error(`CURVE.${a} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:i}}var Pi=(t,e)=>(t+(t>=0?e:-e)/qi)/e;function zc(t,e,r){let[[n,o],[i,s]]=e,c=Pi(s*t,r),a=Pi(-o*t,r),f=t-c*n-a*i,p=-c*o-a*s,g=f<Ue,d=p<Ue;g&&(f=-f),d&&(p=-p);let l=Ve(Math.ceil(Bn(r)/2))+wt;if(f<Ue||f>=l||p<Ue||p>=l)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:g,k1:f,k2neg:d,k2:p}}function Cr(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function Ur(t,e){let r={};for(let n of Object.keys(e))r[n]=t[n]===void 0?e[n]:t[n];return $t(r.lowS,"lowS"),$t(r.prehash,"prehash"),r.format!==void 0&&Cr(r.format),r}var Nr=class extends Error{constructor(e=""){super(e)}},Te={Err:Nr,_tlv:{encode:(t,e)=>{let{Err:r}=Te;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length&1)throw new r("tlv.encode: unpadded data");let n=e.length/2,o=Dt(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");let i=n>127?Dt(o.length/2|128):"";return Dt(t)+i+o+e},decode(t,e){let{Err:r}=Te,n=0;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length<2||e[n++]!==t)throw new r("tlv.decode: wrong tlv");let o=e[n++],i=!!(o&128),s=0;if(!i)s=o;else{let a=o&127;if(!a)throw new r("tlv.decode(long): indefinite length not supported");if(a>4)throw new r("tlv.decode(long): byte length is too big");let f=e.subarray(n,n+a);if(f.length!==a)throw new r("tlv.decode: length bytes not complete");if(f[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(let p of f)s=s<<8|p;if(n+=a,s<128)throw new r("tlv.decode(long): not minimal encoding")}let c=e.subarray(n,n+s);if(c.length!==s)throw new r("tlv.decode: wrong value length");return{v:c,l:e.subarray(n+s)}}},_int:{encode(t){let{Err:e}=Te;if(t<Ue)throw new e("integer: negative integers are not allowed");let r=Dt(t);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return r},decode(t){let{Err:e}=Te;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Ie(t)}},toSig(t){let{Err:e,_int:r,_tlv:n}=Te,o=J("signature",t),{v:i,l:s}=n.decode(48,o);if(s.length)throw new e("invalid signature: left bytes after parsing");let{v:c,l:a}=n.decode(2,i),{v:f,l:p}=n.decode(2,a);if(p.length)throw new e("invalid signature: left bytes after parsing");return{r:r.decode(c),s:r.decode(f)}},hexFromSig(t){let{_tlv:e,_int:r}=Te,n=e.encode(2,r.encode(t.r)),o=e.encode(2,r.encode(t.s)),i=n+o;return e.encode(48,i)}},Ue=BigInt(0),wt=BigInt(1),qi=BigInt(2),On=BigInt(3),Gc=BigInt(4);function je(t,e){let{BYTES:r}=t,n;if(typeof e=="bigint")n=e;else{let o=J("private key",e);try{n=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${r}, got ${typeof e}`)}}if(!t.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function Wc(t,e={}){let r=Hi("weierstrass",t,e),{Fp:n,Fn:o}=r,i=r.CURVE,{h:s,n:c}=i;Kt(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:a}=e;if(a&&(!n.is0(i.a)||typeof a.beta!="bigint"||!Array.isArray(a.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let f=$i(n,o);function p(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function g(L,x,u){let{x:h,y}=x.toAffine(),w=n.toBytes(h);if($t(u,"isCompressed"),u){p();let k=!n.isOdd(y);return fe(Mi(k),w)}else return fe(Uint8Array.of(4),w,n.toBytes(y))}function d(L){De(L,void 0,"Point");let{publicKey:x,publicKeyUncompressed:u}=f,h=L.length,y=L[0],w=L.subarray(1);if(h===x&&(y===2||y===3)){let k=n.fromBytes(w);if(!n.isValid(k))throw new Error("bad point: is not on curve, wrong x");let m=E(k),A;try{A=n.sqrt(m)}catch(T){let M=T instanceof Error?": "+T.message:"";throw new Error("bad point: is not on curve, sqrt error"+M)}p();let S=n.isOdd(A);return(y&1)===1!==S&&(A=n.neg(A)),{x:k,y:A}}else if(h===u&&y===4){let k=n.BYTES,m=n.fromBytes(w.subarray(0,k)),A=n.fromBytes(w.subarray(k,k*2));if(!B(m,A))throw new Error("bad point: is not on curve");return{x:m,y:A}}else throw new Error(`bad point: got length ${h}, expected compressed=${x} or uncompressed=${u}`)}let l=e.toBytes||g,b=e.fromBytes||d;function E(L){let x=n.sqr(L),u=n.mul(x,L);return n.add(n.add(u,n.mul(L,i.a)),i.b)}function B(L,x){let u=n.sqr(x),h=E(L);return n.eql(u,h)}if(!B(i.Gx,i.Gy))throw new Error("bad curve params: generator point");let _=n.mul(n.pow(i.a,On),Gc),N=n.mul(n.sqr(i.b),BigInt(27));if(n.is0(n.add(_,N)))throw new Error("bad curve params: a or b");function H(L,x,u=!1){if(!n.isValid(x)||u&&n.is0(x))throw new Error(`bad point coordinate ${L}`);return x}function P(L){if(!(L instanceof O))throw new Error("ProjectivePoint expected")}function q(L){if(!a||!a.basises)throw new Error("no endo");return zc(L,a.basises,o.ORDER)}let Z=Ar((L,x)=>{let{X:u,Y:h,Z:y}=L;if(n.eql(y,n.ONE))return{x:u,y:h};let w=L.is0();x==null&&(x=w?n.ONE:n.inv(y));let k=n.mul(u,x),m=n.mul(h,x),A=n.mul(y,x);if(w)return{x:n.ZERO,y:n.ZERO};if(!n.eql(A,n.ONE))throw new Error("invZ was invalid");return{x:k,y:m}}),Y=Ar(L=>{if(L.is0()){if(e.allowInfinityPoint&&!n.is0(L.Y))return;throw new Error("bad point: ZERO")}let{x,y:u}=L.toAffine();if(!n.isValid(x)||!n.isValid(u))throw new Error("bad point: x or y not field elements");if(!B(x,u))throw new Error("bad point: equation left != right");if(!L.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function G(L,x,u,h,y){return u=new O(n.mul(u.X,L),u.Y,u.Z),x=jt(h,x),u=jt(y,u),x.add(u)}class O{constructor(x,u,h){this.X=H("x",x),this.Y=H("y",u,!0),this.Z=H("z",h),Object.freeze(this)}static CURVE(){return i}static fromAffine(x){let{x:u,y:h}=x||{};if(!x||!n.isValid(u)||!n.isValid(h))throw new Error("invalid affine point");if(x instanceof O)throw new Error("projective point not allowed");return n.is0(u)&&n.is0(h)?O.ZERO:new O(u,h,n.ONE)}static fromBytes(x){let u=O.fromAffine(b(De(x,void 0,"point")));return u.assertValidity(),u}static fromHex(x){return O.fromBytes(J("pointHex",x))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(x=8,u=!0){return $.createCache(this,x),u||this.multiply(On),this}assertValidity(){Y(this)}hasEvenY(){let{y:x}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(x)}equals(x){P(x);let{X:u,Y:h,Z:y}=this,{X:w,Y:k,Z:m}=x,A=n.eql(n.mul(u,m),n.mul(w,y)),S=n.eql(n.mul(h,m),n.mul(k,y));return A&&S}negate(){return new O(this.X,n.neg(this.Y),this.Z)}double(){let{a:x,b:u}=i,h=n.mul(u,On),{X:y,Y:w,Z:k}=this,m=n.ZERO,A=n.ZERO,S=n.ZERO,R=n.mul(y,y),T=n.mul(w,w),M=n.mul(k,k),C=n.mul(y,w);return C=n.add(C,C),S=n.mul(y,k),S=n.add(S,S),m=n.mul(x,S),A=n.mul(h,M),A=n.add(m,A),m=n.sub(T,A),A=n.add(T,A),A=n.mul(m,A),m=n.mul(C,m),S=n.mul(h,S),M=n.mul(x,M),C=n.sub(R,M),C=n.mul(x,C),C=n.add(C,S),S=n.add(R,R),R=n.add(S,R),R=n.add(R,M),R=n.mul(R,C),A=n.add(A,R),M=n.mul(w,k),M=n.add(M,M),R=n.mul(M,C),m=n.sub(m,R),S=n.mul(M,T),S=n.add(S,S),S=n.add(S,S),new O(m,A,S)}add(x){P(x);let{X:u,Y:h,Z:y}=this,{X:w,Y:k,Z:m}=x,A=n.ZERO,S=n.ZERO,R=n.ZERO,T=i.a,M=n.mul(i.b,On),C=n.mul(u,w),I=n.mul(h,k),D=n.mul(y,m),z=n.add(u,h),V=n.add(w,k);z=n.mul(z,V),V=n.add(C,I),z=n.sub(z,V),V=n.add(u,y);let j=n.add(w,m);return V=n.mul(V,j),j=n.add(C,D),V=n.sub(V,j),j=n.add(h,y),A=n.add(k,m),j=n.mul(j,A),A=n.add(I,D),j=n.sub(j,A),R=n.mul(T,V),A=n.mul(M,D),R=n.add(A,R),A=n.sub(I,R),R=n.add(I,R),S=n.mul(A,R),I=n.add(C,C),I=n.add(I,C),D=n.mul(T,D),V=n.mul(M,V),I=n.add(I,D),D=n.sub(C,D),D=n.mul(T,D),V=n.add(V,D),C=n.mul(I,V),S=n.add(S,C),C=n.mul(j,V),A=n.mul(z,A),A=n.sub(A,C),C=n.mul(z,I),R=n.mul(j,R),R=n.add(R,C),new O(A,S,R)}subtract(x){return this.add(x.negate())}is0(){return this.equals(O.ZERO)}multiply(x){let{endo:u}=e;if(!o.isValidNot0(x))throw new Error("invalid scalar: out of range");let h,y,w=k=>$.cached(this,k,m=>Ln(O,m));if(u){let{k1neg:k,k1:m,k2neg:A,k2:S}=q(x),{p:R,f:T}=w(m),{p:M,f:C}=w(S);y=T.add(C),h=G(u.beta,R,M,k,A)}else{let{p:k,f:m}=w(x);h=k,y=m}return Ln(O,[h,y])[0]}multiplyUnsafe(x){let{endo:u}=e,h=this;if(!o.isValid(x))throw new Error("invalid scalar: out of range");if(x===Ue||h.is0())return O.ZERO;if(x===wt)return h;if($.hasCache(this))return this.multiply(x);if(u){let{k1neg:y,k1:w,k2neg:k,k2:m}=q(x),{p1:A,p2:S}=Ci(O,h,w,m);return G(u.beta,A,S,y,k)}else return $.unsafe(h,x)}multiplyAndAddUnsafe(x,u,h){let y=this.multiplyUnsafe(u).add(x.multiplyUnsafe(h));return y.is0()?void 0:y}toAffine(x){return Z(this,x)}isTorsionFree(){let{isTorsionFree:x}=e;return s===wt?!0:x?x(O,this):$.unsafe(this,c).is0()}clearCofactor(){let{clearCofactor:x}=e;return s===wt?this:x?x(O,this):this.multiplyUnsafe(s)}isSmallOrder(){return this.multiplyUnsafe(s).is0()}toBytes(x=!0){return $t(x,"isCompressed"),this.assertValidity(),l(O,this,x)}toHex(x=!0){return se(this.toBytes(x))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(x=!0){return this.toBytes(x)}_setWindowSize(x){this.precompute(x)}static normalizeZ(x){return Ln(O,x)}static msm(x,u){return Ni(O,o,x,u)}static fromPrivateKey(x){return O.BASE.multiply(je(o,x))}}O.BASE=new O(i.Gx,i.Gy,n.ONE),O.ZERO=new O(n.ZERO,n.ONE,n.ZERO),O.Fp=n,O.Fn=o;let K=o.BITS,$=new _n(O,e.endo?Math.ceil(K/2):K);return O.BASE.precompute(8),O}function Mi(t){return Uint8Array.of(t?2:3)}function $i(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function Yc(t,e={}){let{Fn:r}=t,n=e.randomBytes||ot,o=Object.assign($i(t.Fp,r),{seed:Lr(r.ORDER)});function i(l){try{return!!je(r,l)}catch{return!1}}function s(l,b){let{publicKey:E,publicKeyUncompressed:B}=o;try{let _=l.length;return b===!0&&_!==E||b===!1&&_!==B?!1:!!t.fromBytes(l)}catch{return!1}}function c(l=n(o.seed)){return Rn(De(l,o.seed,"seed"),r.ORDER)}function a(l,b=!0){return t.BASE.multiply(je(r,l)).toBytes(b)}function f(l){let b=c(l);return{secretKey:b,publicKey:a(b)}}function p(l){if(typeof l=="bigint")return!1;if(l instanceof t)return!0;let{secretKey:b,publicKey:E,publicKeyUncompressed:B}=o;if(r.allowedLengths||b===E)return;let _=J("key",l).length;return _===E||_===B}function g(l,b,E=!0){if(p(l)===!0)throw new Error("first arg must be private key");if(p(b)===!1)throw new Error("second arg must be public key");let B=je(r,l);return t.fromHex(b).multiply(B).toBytes(E)}return Object.freeze({getPublicKey:a,getSharedSecret:g,keygen:f,Point:t,utils:{isValidSecretKey:i,isValidPublicKey:s,randomSecretKey:c,isValidPrivateKey:i,randomPrivateKey:c,normPrivateKeyToScalar:l=>je(r,l),precompute(l=8,b=t.BASE){return b.precompute(l,!1)}},lengths:o})}function Xc(t,e,r={}){mn(e),Kt(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let n=r.randomBytes||ot,o=r.hmac||((u,...h)=>wr(e,u,fe(...h))),{Fp:i,Fn:s}=t,{ORDER:c,BITS:a}=s,{keygen:f,getPublicKey:p,getSharedSecret:g,utils:d,lengths:l}=Yc(t,r),b={prehash:!1,lowS:typeof r.lowS=="boolean"?r.lowS:!1,format:void 0,extraEntropy:!1},E="compact";function B(u){let h=c>>wt;return u>h}function _(u,h){if(!s.isValidNot0(h))throw new Error(`invalid signature ${u}: out of range 1..Point.Fn.ORDER`);return h}function N(u,h){Cr(h);let y=l.signature,w=h==="compact"?y:h==="recovered"?y+1:void 0;return De(u,w,`${h} signature`)}class H{constructor(h,y,w){this.r=_("r",h),this.s=_("s",y),w!=null&&(this.recovery=w),Object.freeze(this)}static fromBytes(h,y=E){N(h,y);let w;if(y==="der"){let{r:S,s:R}=Te.toSig(De(h));return new H(S,R)}y==="recovered"&&(w=h[0],y="compact",h=h.subarray(1));let k=s.BYTES,m=h.subarray(0,k),A=h.subarray(k,k*2);return new H(s.fromBytes(m),s.fromBytes(A),w)}static fromHex(h,y){return this.fromBytes(rt(h),y)}addRecoveryBit(h){return new H(this.r,this.s,h)}recoverPublicKey(h){let y=i.ORDER,{r:w,s:k,recovery:m}=this;if(m==null||![0,1,2,3].includes(m))throw new Error("recovery id invalid");if(c*qi<y&&m>1)throw new Error("recovery id is ambiguous for h>1 curve");let S=m===2||m===3?w+c:w;if(!i.isValid(S))throw new Error("recovery id 2 or 3 invalid");let R=i.toBytes(S),T=t.fromBytes(fe(Mi((m&1)===0),R)),M=s.inv(S),C=q(J("msgHash",h)),I=s.create(-C*M),D=s.create(k*M),z=t.BASE.multiplyUnsafe(I).add(T.multiplyUnsafe(D));if(z.is0())throw new Error("point at infinify");return z.assertValidity(),z}hasHighS(){return B(this.s)}toBytes(h=E){if(Cr(h),h==="der")return rt(Te.hexFromSig(this));let y=s.toBytes(this.r),w=s.toBytes(this.s);if(h==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return fe(Uint8Array.of(this.recovery),y,w)}return fe(y,w)}toHex(h){return se(this.toBytes(h))}assertValidity(){}static fromCompact(h){return H.fromBytes(J("sig",h),"compact")}static fromDER(h){return H.fromBytes(J("sig",h),"der")}normalizeS(){return this.hasHighS()?new H(this.r,s.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return se(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return se(this.toBytes("compact"))}}let P=r.bits2int||function(h){if(h.length>8192)throw new Error("input is too large");let y=Ie(h),w=h.length*8-a;return w>0?y>>BigInt(w):y},q=r.bits2int_modN||function(h){return s.create(P(h))},Z=Ve(a);function Y(u){return yi("num < 2^"+a,u,Ue,Z),s.toBytes(u)}function G(u,h){return De(u,void 0,"message"),h?De(e(u),void 0,"prehashed message"):u}function O(u,h,y){if(["recovered","canonical"].some(I=>I in y))throw new Error("sign() legacy options not supported");let{lowS:w,prehash:k,extraEntropy:m}=Ur(y,b);u=G(u,k);let A=q(u),S=je(s,h),R=[Y(S),Y(A)];if(m!=null&&m!==!1){let I=m===!0?n(l.secretKey):m;R.push(J("extraEntropy",I))}let T=fe(...R),M=A;function C(I){let D=P(I);if(!s.isValidNot0(D))return;let z=s.inv(D),V=t.BASE.multiply(D).toAffine(),j=s.create(V.x);if(j===Ue)return;let Q=s.create(z*s.create(M+j*S));if(Q===Ue)return;let St=(V.x===j?0:2)|Number(V.y&wt),Bt=Q;return w&&B(Q)&&(Bt=s.neg(Q),St^=1),new H(j,Bt,St)}return{seed:T,k2sig:C}}function K(u,h,y={}){u=J("message",u);let{seed:w,k2sig:k}=O(u,h,y);return mi(e.outputLen,s.BYTES,o)(w,k)}function $(u){let h,y=typeof u=="string"||tt(u),w=!y&&u!==null&&typeof u=="object"&&typeof u.r=="bigint"&&typeof u.s=="bigint";if(!y&&!w)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(w)h=new H(u.r,u.s);else if(y){try{h=H.fromBytes(J("sig",u),"der")}catch(k){if(!(k instanceof Te.Err))throw k}if(!h)try{h=H.fromBytes(J("sig",u),"compact")}catch{return!1}}return h||!1}function L(u,h,y,w={}){let{lowS:k,prehash:m,format:A}=Ur(w,b);if(y=J("publicKey",y),h=G(J("message",h),m),"strict"in w)throw new Error("options.strict was renamed to lowS");let S=A===void 0?$(u):H.fromBytes(J("sig",u),A);if(S===!1)return!1;try{let R=t.fromBytes(y);if(k&&S.hasHighS())return!1;let{r:T,s:M}=S,C=q(h),I=s.inv(M),D=s.create(C*I),z=s.create(T*I),V=t.BASE.multiplyUnsafe(D).add(R.multiplyUnsafe(z));return V.is0()?!1:s.create(V.x)===T}catch{return!1}}function x(u,h,y={}){let{prehash:w}=Ur(y,b);return h=G(h,w),H.fromBytes(u,"recovered").recoverPublicKey(h).toBytes()}return Object.freeze({keygen:f,getPublicKey:p,getSharedSecret:g,utils:d,lengths:l,Point:t,sign:K,verify:L,recoverPublicKey:x,Signature:H,hash:e})}function Jc(t){let e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},r=t.Fp,n=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(s=>Math.ceil(s/2)))):void 0,o=Ke(e.n,{BITS:t.nBitLength,allowedLengths:n,modFromBytes:t.wrapPrivateKey}),i={Fp:r,Fn:o,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:i}}function Qc(t){let{CURVE:e,curveOpts:r}=Jc(t),n={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:r,hash:t.hash,ecdsaOpts:n}}function Fc(t,e){let r=e.Point;return Object.assign({},e,{ProjectivePoint:r,CURVE:Object.assign({},t,An(r.Fn.ORDER,r.Fn.BITS))})}function Di(t){let{CURVE:e,curveOpts:r,hash:n,ecdsaOpts:o}=Qc(t),i=Wc(e,r),s=Xc(i,n,o);return Fc(t,s)}function Vi(t,e){let r=n=>Di({...t,hash:n});return{...r(e),create:r}}var Et={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},ea={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},ta=BigInt(0),Ki=BigInt(1),Hr=BigInt(2);function na(t){let e=Et.p,r=BigInt(3),n=BigInt(6),o=BigInt(11),i=BigInt(22),s=BigInt(23),c=BigInt(44),a=BigInt(88),f=t*t*t%e,p=f*f*t%e,g=de(p,r,e)*p%e,d=de(g,r,e)*p%e,l=de(d,Hr,e)*f%e,b=de(l,o,e)*l%e,E=de(b,i,e)*b%e,B=de(E,c,e)*E%e,_=de(B,a,e)*B%e,N=de(_,c,e)*E%e,H=de(N,r,e)*p%e,P=de(H,s,e)*b%e,q=de(P,n,e)*f%e,Z=de(q,Hr,e);if(!In.eql(In.sqr(Z),t))throw new Error("Cannot find square root");return Z}var In=Ke(Et.p,{sqrt:na}),zi=Vi({...Et,Fp:In,lowS:!0,endo:ea},yt),ji={};function Tn(t,...e){let r=ji[t];if(r===void 0){let n=yt(wn(t));r=fe(n,n),ji[t]=r}return yt(fe(r,...e))}var qr=t=>t.toBytes(!0).slice(1),vt=zi.Point,Mr=t=>t%Hr===ta;function Pr(t){let{Fn:e,BASE:r}=vt,n=je(e,t),o=r.multiply(n);return{scalar:Mr(o.y)?n:e.neg(n),bytes:qr(o)}}function Gi(t){let e=In;if(!e.isValidNot0(t))throw new Error("invalid x: Fail if x \u2265 p");let r=e.create(t*t),n=e.create(r*t+BigInt(7)),o=e.sqrt(n);Mr(o)||(o=e.neg(o));let i=vt.fromAffine({x:t,y:o});return i.assertValidity(),i}var Zt=Ie;function Wi(...t){return vt.Fn.create(Zt(Tn("BIP0340/challenge",...t)))}function Zi(t){return Pr(t).bytes}function ra(t,e,r=ot(32)){let{Fn:n}=vt,o=J("message",t),{bytes:i,scalar:s}=Pr(e),c=J("auxRand",r,32),a=n.toBytes(s^Zt(Tn("BIP0340/aux",c))),f=Tn("BIP0340/nonce",a,i,o),{bytes:p,scalar:g}=Pr(f),d=Wi(p,i,o),l=new Uint8Array(64);if(l.set(p,0),l.set(n.toBytes(n.create(g+d*s)),32),!Yi(l,o,i))throw new Error("sign: Invalid signature produced");return l}function Yi(t,e,r){let{Fn:n,BASE:o}=vt,i=J("signature",t,64),s=J("message",e),c=J("publicKey",r,32);try{let a=Gi(Zt(c)),f=Zt(i.subarray(0,32));if(!Vt(f,Ki,Et.p))return!1;let p=Zt(i.subarray(32,64));if(!Vt(p,Ki,Et.n))return!1;let g=Wi(n.toBytes(f),qr(a),s),d=o.multiplyUnsafe(p).add(a.multiplyUnsafe(n.neg(g))),{x:l,y:b}=d.toAffine();return!(d.is0()||!Mr(b)||l!==f)}catch{return!1}}var Ze=(()=>{let r=(o=ot(48))=>Rn(o,Et.n);zi.utils.randomSecretKey;function n(o){let i=r(o);return{secretKey:i,publicKey:Zi(i)}}return{keygen:n,getPublicKey:Zi,sign:ra,verify:Yi,Point:vt,utils:{randomSecretKey:r,randomPrivateKey:r,taggedHash:Tn,lift_x:Gi,pointToBytes:qr,numberToBytesBE:mt,bytesToNumberBE:Ie,mod:ue},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var $r=yt;var oa=new TextDecoder("utf-8"),ia=new TextEncoder,sa=1,ca=65535;function Dr(t,e){let r=an.getSharedSecret(t,ne("02"+e)).subarray(1,33);return dn(ae,r,ia.encode("nip44-v2"))}function aa(t,e){let r=hn(ae,t,e,76);return{chacha_key:r.subarray(0,32),chacha_nonce:r.subarray(32,44),hmac_key:r.subarray(44,76)}}function fa(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("expected positive integer");if(t<=32)return 32;let e=1<<Math.floor(Math.log2(t-1))+1,r=e<=256?32:e/8;return r*(Math.floor((t-1)/r)+1)}function la(t){let e=new DataView(t.buffer).getUint16(0),r=t.subarray(2,2+e);if(e<sa||e>ca||r.length!==e||t.length!==2+fa(e))throw new Error("invalid padding");return oa.decode(r)}function ua(t,e,r){if(r.length!==32)throw new Error("AAD associated data must be 32 bytes");let n=F(r,e);return we(ae,t,n)}function da(t){if(typeof t!="string")throw new Error("payload must be a valid string");let e=t.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(t[0]==="#")throw new Error("unknown encryption version");let r;try{r=Ut.decode(t)}catch(i){throw new Error("invalid base64: "+i.message)}let n=r.length;if(n<99||n>65603)throw new Error("invalid data length: "+n);let o=r[0];if(o!==2)throw new Error("unknown encryption version "+o);return{nonce:r.subarray(1,33),ciphertext:r.subarray(33,-32),mac:r.subarray(-32)}}function Vr(t,e){let{nonce:r,ciphertext:n,mac:o}=da(t),{chacha_key:i,chacha_nonce:s,hmac_key:c}=aa(e,r),a=ua(c,n,r);if(!dt(a,o))throw new Error("invalid MAC");let f=pt(i,s,n);return la(f)}function ha(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function pa(){let t=new Uint8Array(16);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}function Un(t,e){let r=t.find(n=>n[0]===e);return r?r[1]:void 0}function Ce(t){let e=new Uint8Array(t.length/2);for(let r=0;r<e.length;r++)e[r]=parseInt(t.substr(r*2,2),16);return e}async function ga(t){if(!t.id||!t.pubkey||!t.sig||!t.tags||t.kind!==30470||!/^[0-9a-f]{128}$/i.test(t.sig)||!/^[0-9a-f]{64}$/i.test(t.pubkey)||!/^[0-9a-f]{64}$/i.test(t.id)||t.tags.length>100||t.content.length>65536||t.tags.some(s=>s.some(c=>c.length>1024)))return!1;let e=t.tags.map(s=>s[0]);if(!e.includes("tier")||!e.includes("age-range")||!e.includes("entity-type"))return!1;let r=JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content]),n=new TextEncoder,o=$r(n.encode(r));if(se(o)!==t.id.toLowerCase())return!1;try{let s=Ce(t.sig),c=Ce(t.id),a=Ce(t.pubkey);return Ze.verify(s,c,a)}catch{return!1}}function ba(t,e){if(t===e||t==="18+"&&e==="18+")return!0;let r=["0-3","4-7","8-12","13-17","18+"],n=r.indexOf(t),o=r.indexOf(e);return n===-1||o===-1?!1:e==="18+"?t==="18+":t===e}async function ya(t,e){if(e==null||!/^https:\/\//i.test(e)||!/^[0-9a-f]{64}$/i.test(t))return null;try{let r=await fetch(`${e}/status/${t}`,{signal:AbortSignal.timeout(5e3)});if(!r.ok)return null;let n=await r.json();if(typeof n!="object"||n===null)return null;let o=n;return{confirmed:o.confirmed===!0,method:["A","B","C","D"].includes(o.method)?o.method:null,profession:typeof o.profession=="string"?o.profession:void 0,jurisdiction:typeof o.jurisdiction=="string"?o.jurisdiction:void 0}}catch{return null}}async function ma(t,e){if(!["0-3","4-7","8-12","13-17","18+"].includes(t))return{verified:!1,ageRange:null,tier:null,entityType:null,credentialId:null,verifierPubkey:null,verifierConfirmed:null,verifierMethod:null,issuedAt:null,expiresAt:null,error:"invalid-age-range"};let n={requiredAgeRange:t,relayUrl:e?.relayUrl||"wss://relay.damus.io",theme:e?.theme||"auto",timeout:e?.timeout||12e4,verifierCheckUrl:e?.verifierCheckUrl!==void 0?e.verifierCheckUrl:"https://verify.signet.forgesworn.dev",acceptUnconfirmed:e?.acceptUnconfirmed||!1,...e};n.timeout=Math.max(5e3,Math.min(n.timeout??12e4,6e5));let o=pa(),i={type:"signet-verify-request",requestId:o,requiredAgeRange:n.requiredAgeRange,relayUrl:n.relayUrl,timestamp:Math.floor(Date.now()/1e3)},s=JSON.stringify(i),c=btoa(s);return new Promise(a=>{let f=document.createElement("style");f.textContent="#signet-verify-dialog::backdrop{background:rgba(0,0,0,0.7)}",document.head.appendChild(f);let p=n.theme==="dark"||n.theme==="auto"&&window.matchMedia("(prefers-color-scheme: dark)").matches,g=p?"#1a1a2e":"#ffffff",d=p?"#e0e0e0":"#1a1a2e",l=p?"#888":"#666",b=document.createElement("dialog");b.id="signet-verify-dialog",b.style.cssText=`border:none;border-radius:16px;padding:32px;max-width:380px;width:90%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,0.3);background:${g};color:${d};font-family:system-ui,-apple-system,sans-serif;`,b.innerHTML=`
1
+ "use strict";var __SignetLoginIIFE=(()=>{var Ea=Object.create;var jt=Object.defineProperty;var va=Object.getOwnPropertyDescriptor;var Ba=Object.getOwnPropertyNames;var Sa=Object.getPrototypeOf,ka=Object.prototype.hasOwnProperty;var Aa=(t,e,r)=>e in t?jt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var X=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Ra=(t,e)=>{for(var r in e)jt(t,r,{get:e[r],enumerable:!0})},ti=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ba(e))!ka.call(t,o)&&o!==r&&jt(t,o,{get:()=>e[o],enumerable:!(n=va(e,o))||n.enumerable});return t};var Ca=(t,e,r)=>(r=t!=null?Ea(Sa(t)):{},ti(e||!t||!t.__esModule?jt(r,"default",{value:t,enumerable:!0}):r,t)),Ia=t=>ti(jt({},"__esModule",{value:!0}),t);var v=(t,e,r)=>Aa(t,typeof e!="symbol"?e+"":e,r);var gc=X((R0,hc)=>{hc.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var tt=X(bt=>{var To,Hl=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];bt.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};bt.getSymbolTotalCodewords=function(e){return Hl[e]};bt.getBCHDigit=function(t){let e=0;for(;t!==0;)e++,t>>>=1;return e};bt.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');To=e};bt.isKanjiModeEnabled=function(){return typeof To<"u"};bt.toSJIS=function(e){return To(e)}});var ar=X(we=>{we.L={bit:1};we.M={bit:0};we.Q={bit:3};we.H={bit:2};function Pl(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return we.L;case"m":case"medium":return we.M;case"q":case"quartile":return we.Q;case"h":case"high":return we.H;default:throw new Error("Unknown EC Level: "+t)}}we.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};we.from=function(e,r){if(we.isValid(e))return e;try{return Pl(e)}catch{return r}}});var bc=X((T0,yc)=>{function pc(){this.buffer=[],this.length=0}pc.prototype={get:function(t){let e=Math.floor(t/8);return(this.buffer[e]>>>7-t%8&1)===1},put:function(t,e){for(let r=0;r<e;r++)this.putBit((t>>>e-r-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(t){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};yc.exports=pc});var wc=X((L0,mc)=>{function hn(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}hn.prototype.set=function(t,e,r,n){let o=t*this.size+e;this.data[o]=r,n&&(this.reservedBit[o]=!0)};hn.prototype.get=function(t,e){return this.data[t*this.size+e]};hn.prototype.xor=function(t,e,r){this.data[t*this.size+e]^=r};hn.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]};mc.exports=hn});var xc=X(fr=>{var ql=tt().getSymbolSize;fr.getRowColCoords=function(e){if(e===1)return[];let r=Math.floor(e/7)+2,n=ql(e),o=n===145?26:Math.ceil((n-13)/(2*r-2))*2,i=[n-7];for(let s=1;s<r-1;s++)i[s]=i[s-1]-o;return i.push(6),i.reverse()};fr.getPositions=function(e){let r=[],n=fr.getRowColCoords(e),o=n.length;for(let i=0;i<o;i++)for(let s=0;s<o;s++)i===0&&s===0||i===0&&s===o-1||i===o-1&&s===0||r.push([n[i],n[s]]);return r}});var Bc=X(vc=>{var Ml=tt().getSymbolSize,Ec=7;vc.getPositions=function(e){let r=Ml(e);return[[0,0],[r-Ec,0],[0,r-Ec]]}});var Sc=X(F=>{F.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var mt={N1:3,N2:3,N3:40,N4:10};F.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};F.from=function(e){return F.isValid(e)?parseInt(e,10):void 0};F.getPenaltyN1=function(e){let r=e.size,n=0,o=0,i=0,s=null,c=null;for(let a=0;a<r;a++){o=i=0,s=c=null;for(let f=0;f<r;f++){let d=e.get(a,f);d===s?o++:(o>=5&&(n+=mt.N1+(o-5)),s=d,o=1),d=e.get(f,a),d===c?i++:(i>=5&&(n+=mt.N1+(i-5)),c=d,i=1)}o>=5&&(n+=mt.N1+(o-5)),i>=5&&(n+=mt.N1+(i-5))}return n};F.getPenaltyN2=function(e){let r=e.size,n=0;for(let o=0;o<r-1;o++)for(let i=0;i<r-1;i++){let s=e.get(o,i)+e.get(o,i+1)+e.get(o+1,i)+e.get(o+1,i+1);(s===4||s===0)&&n++}return n*mt.N2};F.getPenaltyN3=function(e){let r=e.size,n=0,o=0,i=0;for(let s=0;s<r;s++){o=i=0;for(let c=0;c<r;c++)o=o<<1&2047|e.get(s,c),c>=10&&(o===1488||o===93)&&n++,i=i<<1&2047|e.get(c,s),c>=10&&(i===1488||i===93)&&n++}return n*mt.N3};F.getPenaltyN4=function(e){let r=0,n=e.data.length;for(let i=0;i<n;i++)r+=e.data[i];return Math.abs(Math.ceil(r*100/n/5)-10)*mt.N4};function Dl(t,e,r){switch(t){case F.Patterns.PATTERN000:return(e+r)%2===0;case F.Patterns.PATTERN001:return e%2===0;case F.Patterns.PATTERN010:return r%3===0;case F.Patterns.PATTERN011:return(e+r)%3===0;case F.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(r/3))%2===0;case F.Patterns.PATTERN101:return e*r%2+e*r%3===0;case F.Patterns.PATTERN110:return(e*r%2+e*r%3)%2===0;case F.Patterns.PATTERN111:return(e*r%3+(e+r)%2)%2===0;default:throw new Error("bad maskPattern:"+t)}}F.applyMask=function(e,r){let n=r.size;for(let o=0;o<n;o++)for(let i=0;i<n;i++)r.isReserved(i,o)||r.xor(i,o,Dl(e,i,o))};F.getBestMask=function(e,r){let n=Object.keys(F.Patterns).length,o=0,i=1/0;for(let s=0;s<n;s++){r(s),F.applyMask(s,e);let c=F.getPenaltyN1(e)+F.getPenaltyN2(e)+F.getPenaltyN3(e)+F.getPenaltyN4(e);F.applyMask(s,e),c<i&&(i=c,o=s)}return o}});var No=X(Lo=>{var nt=ar(),lr=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],ur=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];Lo.getBlocksCount=function(e,r){switch(r){case nt.L:return lr[(e-1)*4+0];case nt.M:return lr[(e-1)*4+1];case nt.Q:return lr[(e-1)*4+2];case nt.H:return lr[(e-1)*4+3];default:return}};Lo.getTotalCodewordsCount=function(e,r){switch(r){case nt.L:return ur[(e-1)*4+0];case nt.M:return ur[(e-1)*4+1];case nt.Q:return ur[(e-1)*4+2];case nt.H:return ur[(e-1)*4+3];default:return}}});var kc=X(hr=>{var gn=new Uint8Array(512),dr=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)gn[r]=e,dr[e]=r,e<<=1,e&256&&(e^=285);for(let r=255;r<512;r++)gn[r]=gn[r-255]})();hr.log=function(e){if(e<1)throw new Error("log("+e+")");return dr[e]};hr.exp=function(e){return gn[e]};hr.mul=function(e,r){return e===0||r===0?0:gn[dr[e]+dr[r]]}});var Ac=X(pn=>{var _o=kc();pn.mul=function(e,r){let n=new Uint8Array(e.length+r.length-1);for(let o=0;o<e.length;o++)for(let i=0;i<r.length;i++)n[o+i]^=_o.mul(e[o],r[i]);return n};pn.mod=function(e,r){let n=new Uint8Array(e);for(;n.length-r.length>=0;){let o=n[0];for(let s=0;s<r.length;s++)n[s]^=_o.mul(r[s],o);let i=0;for(;i<n.length&&n[i]===0;)i++;n=n.slice(i)}return n};pn.generateECPolynomial=function(e){let r=new Uint8Array([1]);for(let n=0;n<e;n++)r=pn.mul(r,new Uint8Array([1,_o.exp(n)]));return r}});var Ic=X((q0,Cc)=>{var Rc=Ac();function Uo(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}Uo.prototype.initialize=function(e){this.degree=e,this.genPoly=Rc.generateECPolynomial(this.degree)};Uo.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let r=new Uint8Array(e.length+this.degree);r.set(e);let n=Rc.mod(r,this.genPoly),o=this.degree-n.length;if(o>0){let i=new Uint8Array(this.degree);return i.set(n,o),i}return n};Cc.exports=Uo});var Oo=X(Tc=>{Tc.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Ho=X($e=>{var Lc="[0-9]+",$l="[A-Z $%*+\\-./:]+",yn="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";yn=yn.replace(/u/g,"\\u");var Vl="(?:(?![A-Z0-9 $%*+\\-./:]|"+yn+`)(?:.|[\r
2
+ ]))+`;$e.KANJI=new RegExp(yn,"g");$e.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");$e.BYTE=new RegExp(Vl,"g");$e.NUMERIC=new RegExp(Lc,"g");$e.ALPHANUMERIC=new RegExp($l,"g");var Kl=new RegExp("^"+yn+"$"),jl=new RegExp("^"+Lc+"$"),zl=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");$e.testKanji=function(e){return Kl.test(e)};$e.testNumeric=function(e){return jl.test(e)};$e.testAlphanumeric=function(e){return zl.test(e)}});var rt=X(re=>{var Zl=Oo(),Po=Ho();re.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};re.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};re.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};re.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};re.MIXED={bit:-1};re.getCharCountIndicator=function(e,r){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Zl.isValid(r))throw new Error("Invalid version: "+r);return r>=1&&r<10?e.ccBits[0]:r<27?e.ccBits[1]:e.ccBits[2]};re.getBestModeForData=function(e){return Po.testNumeric(e)?re.NUMERIC:Po.testAlphanumeric(e)?re.ALPHANUMERIC:Po.testKanji(e)?re.KANJI:re.BYTE};re.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};re.isValid=function(e){return e&&e.bit&&e.ccBits};function Gl(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return re.NUMERIC;case"alphanumeric":return re.ALPHANUMERIC;case"kanji":return re.KANJI;case"byte":return re.BYTE;default:throw new Error("Unknown mode: "+t)}}re.from=function(e,r){if(re.isValid(e))return e;try{return Gl(e)}catch{return r}}});var Hc=X(wt=>{var gr=tt(),Yl=No(),Nc=ar(),ot=rt(),qo=Oo(),Uc=7973,_c=gr.getBCHDigit(Uc);function Wl(t,e,r){for(let n=1;n<=40;n++)if(e<=wt.getCapacity(n,r,t))return n}function Oc(t,e){return ot.getCharCountIndicator(t,e)+4}function Jl(t,e){let r=0;return t.forEach(function(n){let o=Oc(n.mode,e);r+=o+n.getBitsLength()}),r}function Xl(t,e){for(let r=1;r<=40;r++)if(Jl(t,r)<=wt.getCapacity(r,e,ot.MIXED))return r}wt.from=function(e,r){return qo.isValid(e)?parseInt(e,10):r};wt.getCapacity=function(e,r,n){if(!qo.isValid(e))throw new Error("Invalid QR Code version");typeof n>"u"&&(n=ot.BYTE);let o=gr.getSymbolTotalCodewords(e),i=Yl.getTotalCodewordsCount(e,r),s=(o-i)*8;if(n===ot.MIXED)return s;let c=s-Oc(n,e);switch(n){case ot.NUMERIC:return Math.floor(c/10*3);case ot.ALPHANUMERIC:return Math.floor(c/11*2);case ot.KANJI:return Math.floor(c/13);case ot.BYTE:default:return Math.floor(c/8)}};wt.getBestVersionForData=function(e,r){let n,o=Nc.from(r,Nc.M);if(Array.isArray(e)){if(e.length>1)return Xl(e,o);if(e.length===0)return 1;n=e[0]}else n=e;return Wl(n.mode,n.getLength(),o)};wt.getEncodedBits=function(e){if(!qo.isValid(e)||e<7)throw new Error("Invalid QR Code version");let r=e<<12;for(;gr.getBCHDigit(r)-_c>=0;)r^=Uc<<gr.getBCHDigit(r)-_c;return e<<12|r}});var Dc=X(Mc=>{var Mo=tt(),qc=1335,Fl=21522,Pc=Mo.getBCHDigit(qc);Mc.getEncodedBits=function(e,r){let n=e.bit<<3|r,o=n<<10;for(;Mo.getBCHDigit(o)-Pc>=0;)o^=qc<<Mo.getBCHDigit(o)-Pc;return(n<<10|o)^Fl}});var Vc=X((j0,$c)=>{var Ql=rt();function Pt(t){this.mode=Ql.NUMERIC,this.data=t.toString()}Pt.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};Pt.prototype.getLength=function(){return this.data.length};Pt.prototype.getBitsLength=function(){return Pt.getBitsLength(this.data.length)};Pt.prototype.write=function(e){let r,n,o;for(r=0;r+3<=this.data.length;r+=3)n=this.data.substr(r,3),o=parseInt(n,10),e.put(o,10);let i=this.data.length-r;i>0&&(n=this.data.substr(r),o=parseInt(n,10),e.put(o,i*3+1))};$c.exports=Pt});var jc=X((z0,Kc)=>{var eu=rt(),Do=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function qt(t){this.mode=eu.ALPHANUMERIC,this.data=t}qt.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};qt.prototype.getLength=function(){return this.data.length};qt.prototype.getBitsLength=function(){return qt.getBitsLength(this.data.length)};qt.prototype.write=function(e){let r;for(r=0;r+2<=this.data.length;r+=2){let n=Do.indexOf(this.data[r])*45;n+=Do.indexOf(this.data[r+1]),e.put(n,11)}this.data.length%2&&e.put(Do.indexOf(this.data[r]),6)};Kc.exports=qt});var Zc=X((Z0,zc)=>{var tu=rt();function Mt(t){this.mode=tu.BYTE,typeof t=="string"?this.data=new TextEncoder().encode(t):this.data=new Uint8Array(t)}Mt.getBitsLength=function(e){return e*8};Mt.prototype.getLength=function(){return this.data.length};Mt.prototype.getBitsLength=function(){return Mt.getBitsLength(this.data.length)};Mt.prototype.write=function(t){for(let e=0,r=this.data.length;e<r;e++)t.put(this.data[e],8)};zc.exports=Mt});var Yc=X((G0,Gc)=>{var nu=rt(),ru=tt();function Dt(t){this.mode=nu.KANJI,this.data=t}Dt.getBitsLength=function(e){return e*13};Dt.prototype.getLength=function(){return this.data.length};Dt.prototype.getBitsLength=function(){return Dt.getBitsLength(this.data.length)};Dt.prototype.write=function(t){let e;for(e=0;e<this.data.length;e++){let r=ru.toSJIS(this.data[e]);if(r>=33088&&r<=40956)r-=33088;else if(r>=57408&&r<=60351)r-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
3
+ Make sure your charset is UTF-8`);r=(r>>>8&255)*192+(r&255),t.put(r,13)}};Gc.exports=Dt});var Wc=X((Y0,$o)=>{"use strict";var bn={single_source_shortest_paths:function(t,e,r){var n={},o={};o[e]=0;var i=bn.PriorityQueue.make();i.push(e,0);for(var s,c,a,f,d,p,l,u,y;!i.empty();){s=i.pop(),c=s.value,f=s.cost,d=t[c]||{};for(a in d)d.hasOwnProperty(a)&&(p=d[a],l=f+p,u=o[a],y=typeof o[a]>"u",(y||u>l)&&(o[a]=l,i.push(a,l),n[a]=c))}if(typeof r<"u"&&typeof o[r]>"u"){var x=["Could not find a path from ",e," to ",r,"."].join("");throw new Error(x)}return n},extract_shortest_path_from_predecessor_list:function(t,e){for(var r=[],n=e,o;n;)r.push(n),o=t[n],n=t[n];return r.reverse(),r},find_path:function(t,e,r){var n=bn.single_source_shortest_paths(t,e,r);return bn.extract_shortest_path_from_predecessor_list(n,r)},PriorityQueue:{make:function(t){var e=bn.PriorityQueue,r={},n;t=t||{};for(n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return r.queue=[],r.sorter=t.sorter||e.default_sorter,r},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var r={value:t,cost:e};this.queue.push(r),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof $o<"u"&&($o.exports=bn)});var ra=X($t=>{var J=rt(),Fc=Vc(),Qc=jc(),ea=Zc(),ta=Yc(),mn=Ho(),pr=tt(),ou=Wc();function Jc(t){return unescape(encodeURIComponent(t)).length}function wn(t,e,r){let n=[],o;for(;(o=t.exec(r))!==null;)n.push({data:o[0],index:o.index,mode:e,length:o[0].length});return n}function na(t){let e=wn(mn.NUMERIC,J.NUMERIC,t),r=wn(mn.ALPHANUMERIC,J.ALPHANUMERIC,t),n,o;return pr.isKanjiModeEnabled()?(n=wn(mn.BYTE,J.BYTE,t),o=wn(mn.KANJI,J.KANJI,t)):(n=wn(mn.BYTE_KANJI,J.BYTE,t),o=[]),e.concat(r,n,o).sort(function(s,c){return s.index-c.index}).map(function(s){return{data:s.data,mode:s.mode,length:s.length}})}function Vo(t,e){switch(e){case J.NUMERIC:return Fc.getBitsLength(t);case J.ALPHANUMERIC:return Qc.getBitsLength(t);case J.KANJI:return ta.getBitsLength(t);case J.BYTE:return ea.getBitsLength(t)}}function iu(t){return t.reduce(function(e,r){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===r.mode?(e[e.length-1].data+=r.data,e):(e.push(r),e)},[])}function su(t){let e=[];for(let r=0;r<t.length;r++){let n=t[r];switch(n.mode){case J.NUMERIC:e.push([n,{data:n.data,mode:J.ALPHANUMERIC,length:n.length},{data:n.data,mode:J.BYTE,length:n.length}]);break;case J.ALPHANUMERIC:e.push([n,{data:n.data,mode:J.BYTE,length:n.length}]);break;case J.KANJI:e.push([n,{data:n.data,mode:J.BYTE,length:Jc(n.data)}]);break;case J.BYTE:e.push([{data:n.data,mode:J.BYTE,length:Jc(n.data)}])}}return e}function cu(t,e){let r={},n={start:{}},o=["start"];for(let i=0;i<t.length;i++){let s=t[i],c=[];for(let a=0;a<s.length;a++){let f=s[a],d=""+i+a;c.push(d),r[d]={node:f,lastCount:0},n[d]={};for(let p=0;p<o.length;p++){let l=o[p];r[l]&&r[l].node.mode===f.mode?(n[l][d]=Vo(r[l].lastCount+f.length,f.mode)-Vo(r[l].lastCount,f.mode),r[l].lastCount+=f.length):(r[l]&&(r[l].lastCount=f.length),n[l][d]=Vo(f.length,f.mode)+4+J.getCharCountIndicator(f.mode,e))}}o=c}for(let i=0;i<o.length;i++)n[o[i]].end=0;return{map:n,table:r}}function Xc(t,e){let r,n=J.getBestModeForData(t);if(r=J.from(e,n),r!==J.BYTE&&r.bit<n.bit)throw new Error('"'+t+'" cannot be encoded with mode '+J.toString(r)+`.
4
+ Suggested mode is: `+J.toString(n));switch(r===J.KANJI&&!pr.isKanjiModeEnabled()&&(r=J.BYTE),r){case J.NUMERIC:return new Fc(t);case J.ALPHANUMERIC:return new Qc(t);case J.KANJI:return new ta(t);case J.BYTE:return new ea(t)}}$t.fromArray=function(e){return e.reduce(function(r,n){return typeof n=="string"?r.push(Xc(n,null)):n.data&&r.push(Xc(n.data,n.mode)),r},[])};$t.fromString=function(e,r){let n=na(e,pr.isKanjiModeEnabled()),o=su(n),i=cu(o,r),s=ou.find_path(i.map,"start","end"),c=[];for(let a=1;a<s.length-1;a++)c.push(i.table[s[a]].node);return $t.fromArray(iu(c))};$t.rawSplit=function(e){return $t.fromArray(na(e,pr.isKanjiModeEnabled()))}});var ia=X(oa=>{var br=tt(),Ko=ar(),au=bc(),fu=wc(),lu=xc(),uu=Bc(),Zo=Sc(),Go=No(),du=Ic(),yr=Hc(),hu=Dc(),gu=rt(),jo=ra();function pu(t,e){let r=t.size,n=uu.getPositions(e);for(let o=0;o<n.length;o++){let i=n[o][0],s=n[o][1];for(let c=-1;c<=7;c++)if(!(i+c<=-1||r<=i+c))for(let a=-1;a<=7;a++)s+a<=-1||r<=s+a||(c>=0&&c<=6&&(a===0||a===6)||a>=0&&a<=6&&(c===0||c===6)||c>=2&&c<=4&&a>=2&&a<=4?t.set(i+c,s+a,!0,!0):t.set(i+c,s+a,!1,!0))}}function yu(t){let e=t.size;for(let r=8;r<e-8;r++){let n=r%2===0;t.set(r,6,n,!0),t.set(6,r,n,!0)}}function bu(t,e){let r=lu.getPositions(e);for(let n=0;n<r.length;n++){let o=r[n][0],i=r[n][1];for(let s=-2;s<=2;s++)for(let c=-2;c<=2;c++)s===-2||s===2||c===-2||c===2||s===0&&c===0?t.set(o+s,i+c,!0,!0):t.set(o+s,i+c,!1,!0)}}function mu(t,e){let r=t.size,n=yr.getEncodedBits(e),o,i,s;for(let c=0;c<18;c++)o=Math.floor(c/3),i=c%3+r-8-3,s=(n>>c&1)===1,t.set(o,i,s,!0),t.set(i,o,s,!0)}function zo(t,e,r){let n=t.size,o=hu.getEncodedBits(e,r),i,s;for(i=0;i<15;i++)s=(o>>i&1)===1,i<6?t.set(i,8,s,!0):i<8?t.set(i+1,8,s,!0):t.set(n-15+i,8,s,!0),i<8?t.set(8,n-i-1,s,!0):i<9?t.set(8,15-i-1+1,s,!0):t.set(8,15-i-1,s,!0);t.set(n-8,8,1,!0)}function wu(t,e){let r=t.size,n=-1,o=r-1,i=7,s=0;for(let c=r-1;c>0;c-=2)for(c===6&&c--;;){for(let a=0;a<2;a++)if(!t.isReserved(o,c-a)){let f=!1;s<e.length&&(f=(e[s]>>>i&1)===1),t.set(o,c-a,f),i--,i===-1&&(s++,i=7)}if(o+=n,o<0||r<=o){o-=n,n=-n;break}}}function xu(t,e,r){let n=new au;r.forEach(function(a){n.put(a.mode.bit,4),n.put(a.getLength(),gu.getCharCountIndicator(a.mode,t)),a.write(n)});let o=br.getSymbolTotalCodewords(t),i=Go.getTotalCodewordsCount(t,e),s=(o-i)*8;for(n.getLengthInBits()+4<=s&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(0);let c=(s-n.getLengthInBits())/8;for(let a=0;a<c;a++)n.put(a%2?17:236,8);return Eu(n,t,e)}function Eu(t,e,r){let n=br.getSymbolTotalCodewords(e),o=Go.getTotalCodewordsCount(e,r),i=n-o,s=Go.getBlocksCount(e,r),c=n%s,a=s-c,f=Math.floor(n/s),d=Math.floor(i/s),p=d+1,l=f-d,u=new du(l),y=0,x=new Array(s),B=new Array(s),C=0,H=new Uint8Array(t.buffer);for(let z=0;z<s;z++){let Z=z<a?d:p;x[z]=H.slice(y,y+Z),B[z]=u.encode(x[z]),y+=Z,C=Math.max(C,Z)}let P=new Uint8Array(n),q=0,N,D;for(N=0;N<C;N++)for(D=0;D<s;D++)N<x[D].length&&(P[q++]=x[D][N]);for(N=0;N<l;N++)for(D=0;D<s;D++)P[q++]=B[D][N];return P}function vu(t,e,r,n){let o;if(Array.isArray(t))o=jo.fromArray(t);else if(typeof t=="string"){let f=e;if(!f){let d=jo.rawSplit(t);f=yr.getBestVersionForData(d,r)}o=jo.fromString(t,f||40)}else throw new Error("Invalid data");let i=yr.getBestVersionForData(o,r);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=i;else if(e<i)throw new Error(`
5
+ The chosen QR Code version cannot contain this amount of data.
6
+ Minimum version required to store current data is: `+i+`.
7
+ `);let s=xu(e,r,o),c=br.getSymbolSize(e),a=new fu(c);return pu(a,e),yu(a),bu(a,e),zo(a,r,0),e>=7&&mu(a,e),wu(a,s),isNaN(n)&&(n=Zo.getBestMask(a,zo.bind(null,a,r))),Zo.applyMask(n,a),zo(a,r,n),{modules:a,version:e,errorCorrectionLevel:r,maskPattern:n,segments:o}}oa.create=function(e,r){if(typeof e>"u"||e==="")throw new Error("No input text");let n=Ko.M,o,i;return typeof r<"u"&&(n=Ko.from(r.errorCorrectionLevel,Ko.M),o=yr.from(r.version),i=Zo.from(r.maskPattern),r.toSJISFunc&&br.setToSJISFunction(r.toSJISFunc)),vu(e,o,n,i)}});var Yo=X(xt=>{function sa(t){if(typeof t=="number"&&(t=t.toString()),typeof t!="string")throw new Error("Color should be defined as hex string");let e=t.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+t);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(n){return[n,n]}))),e.length===6&&e.push("F","F");let r=parseInt(e.join(""),16);return{r:r>>24&255,g:r>>16&255,b:r>>8&255,a:r&255,hex:"#"+e.slice(0,6).join("")}}xt.getOptions=function(e){e||(e={}),e.color||(e.color={});let r=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,n=e.width&&e.width>=21?e.width:void 0,o=e.scale||4;return{width:n,scale:n?4:o,margin:r,color:{dark:sa(e.color.dark||"#000000ff"),light:sa(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};xt.getScale=function(e,r){return r.width&&r.width>=e+r.margin*2?r.width/(e+r.margin*2):r.scale};xt.getImageWidth=function(e,r){let n=xt.getScale(e,r);return Math.floor((e+r.margin*2)*n)};xt.qrToImageData=function(e,r,n){let o=r.modules.size,i=r.modules.data,s=xt.getScale(o,n),c=Math.floor((o+n.margin*2)*s),a=n.margin*s,f=[n.color.light,n.color.dark];for(let d=0;d<c;d++)for(let p=0;p<c;p++){let l=(d*c+p)*4,u=n.color.light;if(d>=a&&p>=a&&d<c-a&&p<c-a){let y=Math.floor((d-a)/s),x=Math.floor((p-a)/s);u=f[i[y*o+x]?1:0]}e[l++]=u.r,e[l++]=u.g,e[l++]=u.b,e[l]=u.a}}});var ca=X(mr=>{var Wo=Yo();function Bu(t,e,r){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=r,e.width=r,e.style.height=r+"px",e.style.width=r+"px"}function Su(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}mr.render=function(e,r,n){let o=n,i=r;typeof o>"u"&&(!r||!r.getContext)&&(o=r,r=void 0),r||(i=Su()),o=Wo.getOptions(o);let s=Wo.getImageWidth(e.modules.size,o),c=i.getContext("2d"),a=c.createImageData(s,s);return Wo.qrToImageData(a.data,e,o),Bu(c,i,s),c.putImageData(a,0,0),i};mr.renderToDataURL=function(e,r,n){let o=n;typeof o>"u"&&(!r||!r.getContext)&&(o=r,r=void 0),o||(o={});let i=mr.render(e,r,o),s=o.type||"image/png",c=o.rendererOpts||{};return i.toDataURL(s,c.quality)}});var la=X(fa=>{var ku=Yo();function aa(t,e){let r=t.a/255,n=e+'="'+t.hex+'"';return r<1?n+" "+e+'-opacity="'+r.toFixed(2).slice(1)+'"':n}function Jo(t,e,r){let n=t+e;return typeof r<"u"&&(n+=" "+r),n}function Au(t,e,r){let n="",o=0,i=!1,s=0;for(let c=0;c<t.length;c++){let a=Math.floor(c%e),f=Math.floor(c/e);!a&&!i&&(i=!0),t[c]?(s++,c>0&&a>0&&t[c-1]||(n+=i?Jo("M",a+r,.5+f+r):Jo("m",o,0),o=0,i=!1),a+1<e&&t[c+1]||(n+=Jo("h",s),s=0)):o++}return n}fa.render=function(e,r,n){let o=ku.getOptions(r),i=e.modules.size,s=e.modules.data,c=i+o.margin*2,a=o.color.light.a?"<path "+aa(o.color.light,"fill")+' d="M0 0h'+c+"v"+c+'H0z"/>':"",f="<path "+aa(o.color.dark,"stroke")+' d="'+Au(s,i,o.margin)+'"/>',d='viewBox="0 0 '+c+" "+c+'"',l='<svg xmlns="http://www.w3.org/2000/svg" '+(o.width?'width="'+o.width+'" height="'+o.width+'" ':"")+d+' shape-rendering="crispEdges">'+a+f+`</svg>
8
+ `;return typeof n=="function"&&n(null,l),l}});var da=X(xn=>{var Ru=gc(),Xo=ia(),ua=ca(),Cu=la();function Fo(t,e,r,n,o){let i=[].slice.call(arguments,1),s=i.length,c=typeof i[s-1]=="function";if(!c&&!Ru())throw new Error("Callback required as last argument");if(c){if(s<2)throw new Error("Too few arguments provided");s===2?(o=r,r=e,e=n=void 0):s===3&&(e.getContext&&typeof o>"u"?(o=n,n=void 0):(o=n,n=r,r=e,e=void 0))}else{if(s<1)throw new Error("Too few arguments provided");return s===1?(r=e,e=n=void 0):s===2&&!e.getContext&&(n=r,r=e,e=void 0),new Promise(function(a,f){try{let d=Xo.create(r,n);a(t(d,e,n))}catch(d){f(d)}})}try{let a=Xo.create(r,n);o(null,t(a,e,n))}catch(a){o(a)}}xn.create=Xo.create;xn.toCanvas=Fo.bind(null,ua.render);xn.toDataURL=Fo.bind(null,ua.renderToDataURL);xn.toString=Fo.bind(null,function(t,e,r){return Cu.render(t,r)})});var qu={};Ra(qu,{handleCallback:()=>ma,handleRedirectCallback:()=>wa,login:()=>ya,logout:()=>xa,restoreSession:()=>ba});var Ve={relayUrl:"wss://relay.damus.io",signetAppOrigin:"https://mysignet.app",timeout:12e4,theme:"auto",persist:!0,mode:"relay"},ni=300*1e3,Q={pubkey:"signet:login.pubkey",method:"signet:login.method",authEvent:"signet:login.authEvent",bunkerUri:"signet:login.bunkerUri",bunkerClientSk:"signet:login.bunkerClientSk",expiresAt:"signet:login.expiresAt",displayName:"signet:login.displayName",pendingRedirect:"signet:login.pendingRedirect"};function zt(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function be(t,e=""){if(!Number.isSafeInteger(t)||t<0){let r=e&&`"${e}" `;throw new Error(`${r}expected integer >= 0, got ${t}`)}}function W(t,e,r=""){let n=zt(t),o=t?.length,i=e!==void 0;if(!n||i&&o!==e){let s=r&&`"${r}" `,c=i?` of length ${e}`:"",a=n?`length=${o}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+c+", got "+a)}return t}function it(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash must wrapped by utils.createHasher");be(t.outputLen),be(t.blockLen)}function Et(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function oi(t,e){W(t,void 0,"digestInto() output");let r=e.outputLen;if(t.length<r)throw new Error('"digestInto() output" expected to be of length >='+r)}function Ie(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function vn(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function xe(t,e){return t<<32-e|t>>>e}var ii=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Ta=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function me(t){if(W(t),ii)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=Ta[t[r]];return e}var Ce={_0:48,_9:57,A:65,F:70,a:97,f:102};function ri(t){if(t>=Ce._0&&t<=Ce._9)return t-Ce._0;if(t>=Ce.A&&t<=Ce.F)return t-(Ce.A-10);if(t>=Ce.a&&t<=Ce.f)return t-(Ce.a-10)}function se(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(ii)return Uint8Array.fromHex(t);let e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(r);for(let o=0,i=0;o<r;o++,i+=2){let s=ri(t.charCodeAt(i)),c=ri(t.charCodeAt(i+1));if(s===void 0||c===void 0){let a=t[i]+t[i+1];throw new Error('hex string expected, got non-hex character "'+a+'" at index '+i)}n[o]=s*16+c}return n}function ne(...t){let e=0;for(let n=0;n<t.length;n++){let o=t[n];W(o),e+=o.length}let r=new Uint8Array(e);for(let n=0,o=0;n<t.length;n++){let i=t[n];r.set(i,o),o+=i.length}return r}function si(t,e={}){let r=(o,i)=>t(i).update(o).digest(),n=t(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.create=o=>t(o),Object.assign(r,e),Object.freeze(r)}function Se(t=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(t))}var ci=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function ai(t,e,r){return t&e^~t&r}function fi(t,e,r){return t&e^t&r^e&r}var Bn=class{constructor(e,r,n,o){v(this,"blockLen");v(this,"outputLen");v(this,"padOffset");v(this,"isLE");v(this,"buffer");v(this,"view");v(this,"finished",!1);v(this,"length",0);v(this,"pos",0);v(this,"destroyed",!1);this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=vn(this.buffer)}update(e){Et(this),W(e);let{view:r,buffer:n,blockLen:o}=this,i=e.length;for(let s=0;s<i;){let c=Math.min(o-this.pos,i-s);if(c===o){let a=vn(e);for(;o<=i-s;s+=o)this.process(a,s);continue}n.set(e.subarray(s,s+c),this.pos),this.pos+=c,s+=c,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Et(this),oi(e,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;r[s++]=128,Ie(this.buffer.subarray(s)),this.padOffset>o-s&&(this.process(n,0),s=0);for(let p=s;p<o;p++)r[p]=0;n.setBigUint64(o-8,BigInt(this.length*8),i),this.process(n,0);let c=vn(e),a=this.outputLen;if(a%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let f=a/4,d=this.get();if(f>d.length)throw new Error("_sha2: outputLen bigger than state");for(let p=0;p<f;p++)c.setUint32(4*p,d[p],i)}digest(){let{buffer:e,outputLen:r}=this;this.digestInto(e);let n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:i,destroyed:s,pos:c}=this;return e.destroyed=s,e.finished=i,e.length=o,e.pos=c,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Te=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var La=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ke=new Uint32Array(64),wr=class extends Bn{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:r,C:n,D:o,E:i,F:s,G:c,H:a}=this;return[e,r,n,o,i,s,c,a]}set(e,r,n,o,i,s,c,a){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=c|0,this.H=a|0}process(e,r){for(let p=0;p<16;p++,r+=4)Ke[p]=e.getUint32(r,!1);for(let p=16;p<64;p++){let l=Ke[p-15],u=Ke[p-2],y=xe(l,7)^xe(l,18)^l>>>3,x=xe(u,17)^xe(u,19)^u>>>10;Ke[p]=x+Ke[p-7]+y+Ke[p-16]|0}let{A:n,B:o,C:i,D:s,E:c,F:a,G:f,H:d}=this;for(let p=0;p<64;p++){let l=xe(c,6)^xe(c,11)^xe(c,25),u=d+l+ai(c,a,f)+La[p]+Ke[p]|0,x=(xe(n,2)^xe(n,13)^xe(n,22))+fi(n,o,i)|0;d=f,f=a,a=c,c=s+u|0,s=i,i=o,o=n,n=u+x|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,c=c+this.E|0,a=a+this.F|0,f=f+this.G|0,d=d+this.H|0,this.set(n,o,i,s,c,a,f,d)}roundClean(){Ie(Ke)}destroy(){this.set(0,0,0,0,0,0,0,0),Ie(this.buffer)}},xr=class extends wr{constructor(){super(32);v(this,"A",Te[0]|0);v(this,"B",Te[1]|0);v(this,"C",Te[2]|0);v(this,"D",Te[3]|0);v(this,"E",Te[4]|0);v(this,"F",Te[5]|0);v(this,"G",Te[6]|0);v(this,"H",Te[7]|0)}};var de=si(()=>new xr,ci(1));var vr=BigInt(0),Er=BigInt(1);function Zt(t,e=""){if(typeof t!="boolean"){let r=e&&`"${e}" `;throw new Error(r+"expected boolean, got type="+typeof t)}return t}function li(t){if(typeof t=="bigint"){if(!Sn(t))throw new Error("positive bigint expected, got "+t)}else be(t);return t}function Gt(t){let e=li(t).toString(16);return e.length&1?"0"+e:e}function ui(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?vr:BigInt("0x"+t)}function je(t){return ui(me(t))}function Br(t){return ui(me(Na(W(t)).reverse()))}function kn(t,e){be(e),t=li(t);let r=se(t.toString(16).padStart(e*2,"0"));if(r.length!==e)throw new Error("number too large");return r}function Sr(t,e){return kn(t,e).reverse()}function Na(t){return Uint8Array.from(t)}function di(t){return Uint8Array.from(t,(e,r)=>{let n=e.charCodeAt(0);if(e.length!==1||n>127)throw new Error(`string contains non-ASCII character "${t[r]}" with code ${n} at position ${r}`);return n})}var Sn=t=>typeof t=="bigint"&&vr<=t;function _a(t,e,r){return Sn(t)&&Sn(e)&&Sn(r)&&e<=t&&t<r}function hi(t,e,r,n){if(!_a(e,r,n))throw new Error("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function kr(t){let e;for(e=0;t>vr;t>>=Er,e+=1);return e}var Yt=t=>(Er<<BigInt(t))-Er;function gi(t,e,r){if(be(t,"hashLen"),be(e,"qByteLen"),typeof r!="function")throw new Error("hmacFn must be a function");let n=B=>new Uint8Array(B),o=Uint8Array.of(),i=Uint8Array.of(0),s=Uint8Array.of(1),c=1e3,a=n(t),f=n(t),d=0,p=()=>{a.fill(1),f.fill(0),d=0},l=(...B)=>r(f,ne(a,...B)),u=(B=o)=>{f=l(i,B),a=l(),B.length!==0&&(f=l(s,B),a=l())},y=()=>{if(d++>=c)throw new Error("drbg: tried max amount of iterations");let B=0,C=[];for(;B<e;){a=l();let H=a.slice();C.push(H),B+=a.length}return ne(...C)};return(B,C)=>{p(),u(B);let H;for(;!(H=C(y()));)u();return p(),H}}function Wt(t,e={},r={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function n(i,s,c){let a=t[i];if(c&&a===void 0)return;let f=typeof a;if(f!==s||a===null)throw new Error(`param "${i}" is invalid: expected ${s}, got ${f}`)}let o=(i,s)=>Object.entries(i).forEach(([c,a])=>n(c,a,s));o(e,!1),o(r,!0)}function Ar(t){let e=new WeakMap;return(r,...n)=>{let o=e.get(r);if(o!==void 0)return o;let i=t(r,...n);return e.set(r,i),i}}var fe=BigInt(0),ce=BigInt(1),st=BigInt(2),bi=BigInt(3),mi=BigInt(4),wi=BigInt(5),Ua=BigInt(7),xi=BigInt(8),Oa=BigInt(9),Ei=BigInt(16);function Ee(t,e){let r=t%e;return r>=fe?r:e+r}function ge(t,e,r){let n=t;for(;e-- >fe;)n*=n,n%=r;return n}function pi(t,e){if(t===fe)throw new Error("invert: expected non-zero number");if(e<=fe)throw new Error("invert: expected positive modulus, got "+e);let r=Ee(t,e),n=e,o=fe,i=ce,s=ce,c=fe;for(;r!==fe;){let f=n/r,d=n%r,p=o-s*f,l=i-c*f;n=r,r=d,o=s,i=c,s=p,c=l}if(n!==ce)throw new Error("invert: does not exist");return Ee(o,e)}function Cr(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}function vi(t,e){let r=(t.ORDER+ce)/mi,n=t.pow(e,r);return Cr(t,n,e),n}function Ha(t,e){let r=(t.ORDER-wi)/xi,n=t.mul(e,st),o=t.pow(n,r),i=t.mul(e,o),s=t.mul(t.mul(i,st),o),c=t.mul(i,t.sub(s,t.ONE));return Cr(t,c,e),c}function Pa(t){let e=vt(t),r=Bi(t),n=r(e,e.neg(e.ONE)),o=r(e,n),i=r(e,e.neg(n)),s=(t+Ua)/Ei;return(c,a)=>{let f=c.pow(a,s),d=c.mul(f,n),p=c.mul(f,o),l=c.mul(f,i),u=c.eql(c.sqr(d),a),y=c.eql(c.sqr(p),a);f=c.cmov(f,d,u),d=c.cmov(l,p,y);let x=c.eql(c.sqr(d),a),B=c.cmov(f,d,x);return Cr(c,B,a),B}}function Bi(t){if(t<bi)throw new Error("sqrt is not defined for small field");let e=t-ce,r=0;for(;e%st===fe;)e/=st,r++;let n=st,o=vt(t);for(;yi(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return vi;let i=o.pow(n,e),s=(e+ce)/st;return function(a,f){if(a.is0(f))return f;if(yi(a,f)!==1)throw new Error("Cannot find square root");let d=r,p=a.mul(a.ONE,i),l=a.pow(f,e),u=a.pow(f,s);for(;!a.eql(l,a.ONE);){if(a.is0(l))return a.ZERO;let y=1,x=a.sqr(l);for(;!a.eql(x,a.ONE);)if(y++,x=a.sqr(x),y===d)throw new Error("Cannot find square root");let B=ce<<BigInt(d-y-1),C=a.pow(p,B);d=y,p=a.sqr(C),l=a.mul(l,p),u=a.mul(u,C)}return u}}function qa(t){return t%mi===bi?vi:t%xi===wi?Ha:t%Ei===Oa?Pa(t):Bi(t)}var Ma=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ir(t){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},r=Ma.reduce((n,o)=>(n[o]="function",n),e);return Wt(t,r),t}function Da(t,e,r){if(r<fe)throw new Error("invalid exponent, negatives unsupported");if(r===fe)return t.ONE;if(r===ce)return e;let n=t.ONE,o=e;for(;r>fe;)r&ce&&(n=t.mul(n,o)),o=t.sqr(o),r>>=ce;return n}function An(t,e,r=!1){let n=new Array(e.length).fill(r?t.ZERO:void 0),o=e.reduce((s,c,a)=>t.is0(c)?s:(n[a]=s,t.mul(s,c)),t.ONE),i=t.inv(o);return e.reduceRight((s,c,a)=>t.is0(c)?s:(n[a]=t.mul(s,n[a]),t.mul(s,c)),i),n}function yi(t,e){let r=(t.ORDER-ce)/st,n=t.pow(e,r),o=t.eql(n,t.ONE),i=t.eql(n,t.ZERO),s=t.eql(n,t.neg(t.ONE));if(!o&&!i&&!s)throw new Error("invalid Legendre symbol result");return o?1:i?0:-1}function $a(t,e){e!==void 0&&be(e);let r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}var Rr=class{constructor(e,r={}){v(this,"ORDER");v(this,"BITS");v(this,"BYTES");v(this,"isLE");v(this,"ZERO",fe);v(this,"ONE",ce);v(this,"_lengths");v(this,"_sqrt");v(this,"_mod");if(e<=fe)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,r!=null&&typeof r=="object"&&(typeof r.BITS=="number"&&(n=r.BITS),typeof r.sqrt=="function"&&(this.sqrt=r.sqrt),typeof r.isLE=="boolean"&&(this.isLE=r.isLE),r.allowedLengths&&(this._lengths=r.allowedLengths?.slice()),typeof r.modFromBytes=="boolean"&&(this._mod=r.modFromBytes));let{nBitLength:o,nByteLength:i}=$a(e,n);if(i>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=i,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return Ee(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return fe<=e&&e<this.ORDER}is0(e){return e===fe}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ce)===ce}neg(e){return Ee(-e,this.ORDER)}eql(e,r){return e===r}sqr(e){return Ee(e*e,this.ORDER)}add(e,r){return Ee(e+r,this.ORDER)}sub(e,r){return Ee(e-r,this.ORDER)}mul(e,r){return Ee(e*r,this.ORDER)}pow(e,r){return Da(this,e,r)}div(e,r){return Ee(e*pi(r,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,r){return e+r}subN(e,r){return e-r}mulN(e,r){return e*r}inv(e){return pi(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=qa(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?Sr(e,this.BYTES):kn(e,this.BYTES)}fromBytes(e,r=!1){W(e);let{_lengths:n,BYTES:o,isLE:i,ORDER:s,_mod:c}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let f=new Uint8Array(o);f.set(e,i?0:f.length-e.length),e=f}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let a=i?Br(e):je(e);if(c&&(a=Ee(a,s)),!r&&!this.isValid(a))throw new Error("invalid field element: outside of range 0..ORDER");return a}invertBatch(e){return An(this,e)}cmov(e,r,n){return n?r:e}};function vt(t,e={}){return new Rr(t,e)}function Si(t){if(typeof t!="bigint")throw new Error("field order must be bigint");let e=t.toString(2).length;return Math.ceil(e/8)}function Tr(t){let e=Si(t);return e+Math.ceil(e/2)}function Rn(t,e,r=!1){W(t);let n=t.length,o=Si(e),i=Tr(e);if(n<16||n<i||n>1024)throw new Error("expected "+i+"-1024 bytes of input, got "+n);let s=r?Br(t):je(t),c=Ee(s,e-ce)+ce;return r?Sr(c,o):kn(c,o)}var Bt=BigInt(0),ct=BigInt(1);function Jt(t,e){let r=e.negate();return t?r:e}function Ur(t,e){let r=An(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function Ci(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Lr(t,e){Ci(t,e);let r=Math.ceil(e/t)+1,n=2**(t-1),o=2**t,i=Yt(t),s=BigInt(t);return{windows:r,windowSize:n,mask:i,maxNumber:o,shiftBy:s}}function ki(t,e,r){let{windowSize:n,mask:o,maxNumber:i,shiftBy:s}=r,c=Number(t&o),a=t>>s;c>n&&(c-=i,a+=ct);let f=e*n,d=f+Math.abs(c)-1,p=c===0,l=c<0,u=e%2!==0;return{nextN:a,offset:d,isZero:p,isNeg:l,isNegF:u,offsetF:f}}var Nr=new WeakMap,Ii=new WeakMap;function _r(t){return Ii.get(t)||1}function Ai(t){if(t!==Bt)throw new Error("invalid wNAF")}var Cn=class{constructor(e,r){v(this,"BASE");v(this,"ZERO");v(this,"Fn");v(this,"bits");this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=r}_unsafeLadder(e,r,n=this.ZERO){let o=e;for(;r>Bt;)r&ct&&(n=n.add(o)),o=o.double(),r>>=ct;return n}precomputeWindow(e,r){let{windows:n,windowSize:o}=Lr(r,this.bits),i=[],s=e,c=s;for(let a=0;a<n;a++){c=s,i.push(c);for(let f=1;f<o;f++)c=c.add(s),i.push(c);s=c.double()}return i}wNAF(e,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,i=this.BASE,s=Lr(e,this.bits);for(let c=0;c<s.windows;c++){let{nextN:a,offset:f,isZero:d,isNeg:p,isNegF:l,offsetF:u}=ki(n,c,s);n=a,d?i=i.add(Jt(l,r[u])):o=o.add(Jt(p,r[f]))}return Ai(n),{p:o,f:i}}wNAFUnsafe(e,r,n,o=this.ZERO){let i=Lr(e,this.bits);for(let s=0;s<i.windows&&n!==Bt;s++){let{nextN:c,offset:a,isZero:f,isNeg:d}=ki(n,s,i);if(n=c,!f){let p=r[a];o=o.add(d?p.negate():p)}}return Ai(n),o}getPrecomputes(e,r,n){let o=Nr.get(r);return o||(o=this.precomputeWindow(r,e),e!==1&&(typeof n=="function"&&(o=n(o)),Nr.set(r,o))),o}cached(e,r,n){let o=_r(e);return this.wNAF(o,this.getPrecomputes(o,e,n),r)}unsafe(e,r,n,o){let i=_r(e);return i===1?this._unsafeLadder(e,r,o):this.wNAFUnsafe(i,this.getPrecomputes(i,e,n),r,o)}createCache(e,r){Ci(r,this.bits),Ii.set(e,r),Nr.delete(e)}hasCache(e){return _r(e)!==1}};function Ti(t,e,r,n){let o=e,i=t.ZERO,s=t.ZERO;for(;r>Bt||n>Bt;)r&ct&&(i=i.add(o)),n&ct&&(s=s.add(o)),o=o.double(),r>>=ct,n>>=ct;return{p1:i,p2:s}}function Ri(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Ir(e),e}else return vt(t,{isLE:r})}function Li(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(let a of["p","n","h"]){let f=e[a];if(!(typeof f=="bigint"&&f>Bt))throw new Error(`CURVE.${a} must be positive bigint`)}let o=Ri(e.p,r.Fp,n),i=Ri(e.n,r.Fn,n),c=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(let a of c)if(!o.isValid(e[a]))throw new Error(`CURVE.${a} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:i}}function In(t,e){return function(n){let o=t(n);return{secretKey:o,publicKey:e(o)}}}var Tn=class{constructor(e,r){v(this,"oHash");v(this,"iHash");v(this,"blockLen");v(this,"outputLen");v(this,"finished",!1);v(this,"destroyed",!1);if(it(e),W(r,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?e.create().update(r).digest():r);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=e.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),Ie(o)}update(e){return Et(this),this.iHash.update(e),this}digestInto(e){Et(this),W(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:r,iHash:n,finished:o,destroyed:i,blockLen:s,outputLen:c}=this;return e=e,e.finished=o,e.destroyed=i,e.blockLen=s,e.outputLen=c,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ke=(t,e,r)=>new Tn(t,e).update(r).digest();ke.create=(t,e)=>new Tn(t,e);var Ni=(t,e)=>(t+(t>=0?e:-e)/_i)/e;function Va(t,e,r){let[[n,o],[i,s]]=e,c=Ni(s*t,r),a=Ni(-o*t,r),f=t-c*n-a*i,d=-c*o-a*s,p=f<Le,l=d<Le;p&&(f=-f),l&&(d=-d);let u=Yt(Math.ceil(kr(r)/2))+St;if(f<Le||f>=u||d<Le||d>=u)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:p,k1:f,k2neg:l,k2:d}}function Hr(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function Or(t,e){let r={};for(let n of Object.keys(e))r[n]=t[n]===void 0?e[n]:t[n];return Zt(r.lowS,"lowS"),Zt(r.prehash,"prehash"),r.format!==void 0&&Hr(r.format),r}var Pr=class extends Error{constructor(e=""){super(e)}},ze={Err:Pr,_tlv:{encode:(t,e)=>{let{Err:r}=ze;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length&1)throw new r("tlv.encode: unpadded data");let n=e.length/2,o=Gt(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");let i=n>127?Gt(o.length/2|128):"";return Gt(t)+i+o+e},decode(t,e){let{Err:r}=ze,n=0;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length<2||e[n++]!==t)throw new r("tlv.decode: wrong tlv");let o=e[n++],i=!!(o&128),s=0;if(!i)s=o;else{let a=o&127;if(!a)throw new r("tlv.decode(long): indefinite length not supported");if(a>4)throw new r("tlv.decode(long): byte length is too big");let f=e.subarray(n,n+a);if(f.length!==a)throw new r("tlv.decode: length bytes not complete");if(f[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(let d of f)s=s<<8|d;if(n+=a,s<128)throw new r("tlv.decode(long): not minimal encoding")}let c=e.subarray(n,n+s);if(c.length!==s)throw new r("tlv.decode: wrong value length");return{v:c,l:e.subarray(n+s)}}},_int:{encode(t){let{Err:e}=ze;if(t<Le)throw new e("integer: negative integers are not allowed");let r=Gt(t);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return r},decode(t){let{Err:e}=ze;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return je(t)}},toSig(t){let{Err:e,_int:r,_tlv:n}=ze,o=W(t,void 0,"signature"),{v:i,l:s}=n.decode(48,o);if(s.length)throw new e("invalid signature: left bytes after parsing");let{v:c,l:a}=n.decode(2,i),{v:f,l:d}=n.decode(2,a);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:r.decode(c),s:r.decode(f)}},hexFromSig(t){let{_tlv:e,_int:r}=ze,n=e.encode(2,r.encode(t.r)),o=e.encode(2,r.encode(t.s)),i=n+o;return e.encode(48,i)}},Le=BigInt(0),St=BigInt(1),_i=BigInt(2),Ln=BigInt(3),Ka=BigInt(4);function Ui(t,e={}){let r=Li("weierstrass",t,e),{Fp:n,Fn:o}=r,i=r.CURVE,{h:s,n:c}=i;Wt(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:a}=e;if(a&&(!n.is0(i.a)||typeof a.beta!="bigint"||!Array.isArray(a.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let f=Hi(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function p(w,h,g){let{x:b,y:E}=h.toAffine(),k=n.toBytes(b);if(Zt(g,"isCompressed"),g){d();let m=!n.isOdd(E);return ne(Oi(m),k)}else return ne(Uint8Array.of(4),k,n.toBytes(E))}function l(w){W(w,void 0,"Point");let{publicKey:h,publicKeyUncompressed:g}=f,b=w.length,E=w[0],k=w.subarray(1);if(b===h&&(E===2||E===3)){let m=n.fromBytes(k);if(!n.isValid(m))throw new Error("bad point: is not on curve, wrong x");let A=x(m),S;try{S=n.sqrt(A)}catch(M){let O=M instanceof Error?": "+M.message:"";throw new Error("bad point: is not on curve, sqrt error"+O)}d();let R=n.isOdd(S);return(E&1)===1!==R&&(S=n.neg(S)),{x:m,y:S}}else if(b===g&&E===4){let m=n.BYTES,A=n.fromBytes(k.subarray(0,m)),S=n.fromBytes(k.subarray(m,m*2));if(!B(A,S))throw new Error("bad point: is not on curve");return{x:A,y:S}}else throw new Error(`bad point: got length ${b}, expected compressed=${h} or uncompressed=${g}`)}let u=e.toBytes||p,y=e.fromBytes||l;function x(w){let h=n.sqr(w),g=n.mul(h,w);return n.add(n.add(g,n.mul(w,i.a)),i.b)}function B(w,h){let g=n.sqr(h),b=x(w);return n.eql(g,b)}if(!B(i.Gx,i.Gy))throw new Error("bad curve params: generator point");let C=n.mul(n.pow(i.a,Ln),Ka),H=n.mul(n.sqr(i.b),BigInt(27));if(n.is0(n.add(C,H)))throw new Error("bad curve params: a or b");function P(w,h,g=!1){if(!n.isValid(h)||g&&n.is0(h))throw new Error(`bad point coordinate ${w}`);return h}function q(w){if(!(w instanceof T))throw new Error("Weierstrass Point expected")}function N(w){if(!a||!a.basises)throw new Error("no endo");return Va(w,a.basises,o.ORDER)}let D=Ar((w,h)=>{let{X:g,Y:b,Z:E}=w;if(n.eql(E,n.ONE))return{x:g,y:b};let k=w.is0();h==null&&(h=k?n.ONE:n.inv(E));let m=n.mul(g,h),A=n.mul(b,h),S=n.mul(E,h);if(k)return{x:n.ZERO,y:n.ZERO};if(!n.eql(S,n.ONE))throw new Error("invZ was invalid");return{x:m,y:A}}),z=Ar(w=>{if(w.is0()){if(e.allowInfinityPoint&&!n.is0(w.Y))return;throw new Error("bad point: ZERO")}let{x:h,y:g}=w.toAffine();if(!n.isValid(h)||!n.isValid(g))throw new Error("bad point: x or y not field elements");if(!B(h,g))throw new Error("bad point: equation left != right");if(!w.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function Z(w,h,g,b,E){return g=new T(n.mul(g.X,w),g.Y,g.Z),h=Jt(b,h),g=Jt(E,g),h.add(g)}let I=class I{constructor(h,g,b){v(this,"X");v(this,"Y");v(this,"Z");this.X=P("x",h),this.Y=P("y",g,!0),this.Z=P("z",b),Object.freeze(this)}static CURVE(){return i}static fromAffine(h){let{x:g,y:b}=h||{};if(!h||!n.isValid(g)||!n.isValid(b))throw new Error("invalid affine point");if(h instanceof I)throw new Error("projective point not allowed");return n.is0(g)&&n.is0(b)?I.ZERO:new I(g,b,n.ONE)}static fromBytes(h){let g=I.fromAffine(y(W(h,void 0,"point")));return g.assertValidity(),g}static fromHex(h){return I.fromBytes(se(h))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(h=8,g=!0){return $.createCache(this,h),g||this.multiply(Ln),this}assertValidity(){z(this)}hasEvenY(){let{y:h}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(h)}equals(h){q(h);let{X:g,Y:b,Z:E}=this,{X:k,Y:m,Z:A}=h,S=n.eql(n.mul(g,A),n.mul(k,E)),R=n.eql(n.mul(b,A),n.mul(m,E));return S&&R}negate(){return new I(this.X,n.neg(this.Y),this.Z)}double(){let{a:h,b:g}=i,b=n.mul(g,Ln),{X:E,Y:k,Z:m}=this,A=n.ZERO,S=n.ZERO,R=n.ZERO,_=n.mul(E,E),M=n.mul(k,k),O=n.mul(m,m),L=n.mul(E,k);return L=n.add(L,L),R=n.mul(E,m),R=n.add(R,R),A=n.mul(h,R),S=n.mul(b,O),S=n.add(A,S),A=n.sub(M,S),S=n.add(M,S),S=n.mul(A,S),A=n.mul(L,A),R=n.mul(b,R),O=n.mul(h,O),L=n.sub(_,O),L=n.mul(h,L),L=n.add(L,R),R=n.add(_,_),_=n.add(R,_),_=n.add(_,O),_=n.mul(_,L),S=n.add(S,_),O=n.mul(k,m),O=n.add(O,O),_=n.mul(O,L),A=n.sub(A,_),R=n.mul(O,M),R=n.add(R,R),R=n.add(R,R),new I(A,S,R)}add(h){q(h);let{X:g,Y:b,Z:E}=this,{X:k,Y:m,Z:A}=h,S=n.ZERO,R=n.ZERO,_=n.ZERO,M=i.a,O=n.mul(i.b,Ln),L=n.mul(g,k),V=n.mul(b,m),Y=n.mul(E,A),K=n.add(g,b),G=n.add(k,m);K=n.mul(K,G),G=n.add(L,V),K=n.sub(K,G),G=n.add(g,E);let te=n.add(k,A);return G=n.mul(G,te),te=n.add(L,Y),G=n.sub(G,te),te=n.add(b,E),S=n.add(m,A),te=n.mul(te,S),S=n.add(V,Y),te=n.sub(te,S),_=n.mul(M,G),S=n.mul(O,Y),_=n.add(S,_),S=n.sub(V,_),_=n.add(V,_),R=n.mul(S,_),V=n.add(L,L),V=n.add(V,L),Y=n.mul(M,Y),G=n.mul(O,G),V=n.add(V,Y),Y=n.sub(L,Y),Y=n.mul(M,Y),G=n.add(G,Y),L=n.mul(V,G),R=n.add(R,L),L=n.mul(te,G),S=n.mul(K,S),S=n.sub(S,L),L=n.mul(K,V),_=n.mul(te,_),_=n.add(_,L),new I(S,R,_)}subtract(h){return this.add(h.negate())}is0(){return this.equals(I.ZERO)}multiply(h){let{endo:g}=e;if(!o.isValidNot0(h))throw new Error("invalid scalar: out of range");let b,E,k=m=>$.cached(this,m,A=>Ur(I,A));if(g){let{k1neg:m,k1:A,k2neg:S,k2:R}=N(h),{p:_,f:M}=k(A),{p:O,f:L}=k(R);E=M.add(L),b=Z(g.beta,_,O,m,S)}else{let{p:m,f:A}=k(h);b=m,E=A}return Ur(I,[b,E])[0]}multiplyUnsafe(h){let{endo:g}=e,b=this;if(!o.isValid(h))throw new Error("invalid scalar: out of range");if(h===Le||b.is0())return I.ZERO;if(h===St)return b;if($.hasCache(this))return this.multiply(h);if(g){let{k1neg:E,k1:k,k2neg:m,k2:A}=N(h),{p1:S,p2:R}=Ti(I,b,k,A);return Z(g.beta,S,R,E,m)}else return $.unsafe(b,h)}toAffine(h){return D(this,h)}isTorsionFree(){let{isTorsionFree:h}=e;return s===St?!0:h?h(I,this):$.unsafe(this,c).is0()}clearCofactor(){let{clearCofactor:h}=e;return s===St?this:h?h(I,this):this.multiplyUnsafe(s)}isSmallOrder(){return this.multiplyUnsafe(s).is0()}toBytes(h=!0){return Zt(h,"isCompressed"),this.assertValidity(),u(I,this,h)}toHex(h=!0){return me(this.toBytes(h))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}};v(I,"BASE",new I(i.Gx,i.Gy,n.ONE)),v(I,"ZERO",new I(n.ZERO,n.ONE,n.ZERO)),v(I,"Fp",n),v(I,"Fn",o);let T=I,j=o.BITS,$=new Cn(T,e.endo?Math.ceil(j/2):j);return T.BASE.precompute(8),T}function Oi(t){return Uint8Array.of(t?2:3)}function Hi(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function ja(t,e={}){let{Fn:r}=t,n=e.randomBytes||Se,o=Object.assign(Hi(t.Fp,r),{seed:Tr(r.ORDER)});function i(u){try{let y=r.fromBytes(u);return r.isValidNot0(y)}catch{return!1}}function s(u,y){let{publicKey:x,publicKeyUncompressed:B}=o;try{let C=u.length;return y===!0&&C!==x||y===!1&&C!==B?!1:!!t.fromBytes(u)}catch{return!1}}function c(u=n(o.seed)){return Rn(W(u,o.seed,"seed"),r.ORDER)}function a(u,y=!0){return t.BASE.multiply(r.fromBytes(u)).toBytes(y)}function f(u){let{secretKey:y,publicKey:x,publicKeyUncompressed:B}=o;if(!zt(u)||"_lengths"in r&&r._lengths||y===x)return;let C=W(u,void 0,"key").length;return C===x||C===B}function d(u,y,x=!0){if(f(u)===!0)throw new Error("first arg must be private key");if(f(y)===!1)throw new Error("second arg must be public key");let B=r.fromBytes(u);return t.fromBytes(y).multiply(B).toBytes(x)}let p={isValidSecretKey:i,isValidPublicKey:s,randomSecretKey:c},l=In(c,a);return Object.freeze({getPublicKey:a,getSharedSecret:d,keygen:l,Point:t,utils:p,lengths:o})}function Pi(t,e,r={}){it(e),Wt(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),r=Object.assign({},r);let n=r.randomBytes||Se,o=r.hmac||((h,g)=>ke(e,h,g)),{Fp:i,Fn:s}=t,{ORDER:c,BITS:a}=s,{keygen:f,getPublicKey:d,getSharedSecret:p,utils:l,lengths:u}=ja(t,r),y={prehash:!0,lowS:typeof r.lowS=="boolean"?r.lowS:!0,format:"compact",extraEntropy:!1},x=c*_i<i.ORDER;function B(h){let g=c>>St;return h>g}function C(h,g){if(!s.isValidNot0(g))throw new Error(`invalid signature ${h}: out of range 1..Point.Fn.ORDER`);return g}function H(){if(x)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function P(h,g){Hr(g);let b=u.signature,E=g==="compact"?b:g==="recovered"?b+1:void 0;return W(h,E)}class q{constructor(g,b,E){v(this,"r");v(this,"s");v(this,"recovery");if(this.r=C("r",g),this.s=C("s",b),E!=null){if(H(),![0,1,2,3].includes(E))throw new Error("invalid recovery id");this.recovery=E}Object.freeze(this)}static fromBytes(g,b=y.format){P(g,b);let E;if(b==="der"){let{r:S,s:R}=ze.toSig(W(g));return new q(S,R)}b==="recovered"&&(E=g[0],b="compact",g=g.subarray(1));let k=u.signature/2,m=g.subarray(0,k),A=g.subarray(k,k*2);return new q(s.fromBytes(m),s.fromBytes(A),E)}static fromHex(g,b){return this.fromBytes(se(g),b)}assertRecovery(){let{recovery:g}=this;if(g==null)throw new Error("invalid recovery id: must be present");return g}addRecoveryBit(g){return new q(this.r,this.s,g)}recoverPublicKey(g){let{r:b,s:E}=this,k=this.assertRecovery(),m=k===2||k===3?b+c:b;if(!i.isValid(m))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let A=i.toBytes(m),S=t.fromBytes(ne(Oi((k&1)===0),A)),R=s.inv(m),_=D(W(g,void 0,"msgHash")),M=s.create(-_*R),O=s.create(E*R),L=t.BASE.multiplyUnsafe(M).add(S.multiplyUnsafe(O));if(L.is0())throw new Error("invalid recovery: point at infinify");return L.assertValidity(),L}hasHighS(){return B(this.s)}toBytes(g=y.format){if(Hr(g),g==="der")return se(ze.hexFromSig(this));let{r:b,s:E}=this,k=s.toBytes(b),m=s.toBytes(E);return g==="recovered"?(H(),ne(Uint8Array.of(this.assertRecovery()),k,m)):ne(k,m)}toHex(g){return me(this.toBytes(g))}}let N=r.bits2int||function(g){if(g.length>8192)throw new Error("input is too large");let b=je(g),E=g.length*8-a;return E>0?b>>BigInt(E):b},D=r.bits2int_modN||function(g){return s.create(N(g))},z=Yt(a);function Z(h){return hi("num < 2^"+a,h,Le,z),s.toBytes(h)}function T(h,g){return W(h,void 0,"message"),g?W(e(h),void 0,"prehashed message"):h}function j(h,g,b){let{lowS:E,prehash:k,extraEntropy:m}=Or(b,y);h=T(h,k);let A=D(h),S=s.fromBytes(g);if(!s.isValidNot0(S))throw new Error("invalid private key");let R=[Z(S),Z(A)];if(m!=null&&m!==!1){let L=m===!0?n(u.secretKey):m;R.push(W(L,void 0,"extraEntropy"))}let _=ne(...R),M=A;function O(L){let V=N(L);if(!s.isValidNot0(V))return;let Y=s.inv(V),K=t.BASE.multiply(V).toAffine(),G=s.create(K.x);if(G===Le)return;let te=s.create(Y*s.create(M+G*S));if(te===Le)return;let Vt=(K.x===G?0:2)|Number(K.y&St),Kt=te;return E&&B(te)&&(Kt=s.neg(te),Vt^=1),new q(G,Kt,x?void 0:Vt)}return{seed:_,k2sig:O}}function $(h,g,b={}){let{seed:E,k2sig:k}=j(h,g,b);return gi(e.outputLen,s.BYTES,o)(E,k).toBytes(b.format)}function I(h,g,b,E={}){let{lowS:k,prehash:m,format:A}=Or(E,y);if(b=W(b,void 0,"publicKey"),g=T(g,m),!zt(h)){let S=h instanceof q?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+S)}P(h,A);try{let S=q.fromBytes(h,A),R=t.fromBytes(b);if(k&&S.hasHighS())return!1;let{r:_,s:M}=S,O=D(g),L=s.inv(M),V=s.create(O*L),Y=s.create(_*L),K=t.BASE.multiplyUnsafe(V).add(R.multiplyUnsafe(Y));return K.is0()?!1:s.create(K.x)===_}catch{return!1}}function w(h,g,b={}){let{prehash:E}=Or(b,y);return g=T(g,E),q.fromBytes(h,"recovered").recoverPublicKey(g).toBytes()}return Object.freeze({keygen:f,getPublicKey:d,getSharedSecret:p,utils:l,lengths:u,Point:t,sign:$,verify:I,recoverPublicKey:w,Signature:q,hash:e})}var Un={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},za={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Za=BigInt(0),qr=BigInt(2);function Ga(t){let e=Un.p,r=BigInt(3),n=BigInt(6),o=BigInt(11),i=BigInt(22),s=BigInt(23),c=BigInt(44),a=BigInt(88),f=t*t*t%e,d=f*f*t%e,p=ge(d,r,e)*d%e,l=ge(p,r,e)*d%e,u=ge(l,qr,e)*f%e,y=ge(u,o,e)*u%e,x=ge(y,i,e)*y%e,B=ge(x,c,e)*x%e,C=ge(B,a,e)*B%e,H=ge(C,c,e)*x%e,P=ge(H,r,e)*d%e,q=ge(P,s,e)*y%e,N=ge(q,n,e)*f%e,D=ge(N,qr,e);if(!Nn.eql(Nn.sqr(D),t))throw new Error("Cannot find square root");return D}var Nn=vt(Un.p,{sqrt:Ga}),at=Ui(Un,{Fp:Nn,endo:za}),On=Pi(at,de),qi={};function _n(t,...e){let r=qi[t];if(r===void 0){let n=de(di(t));r=ne(n,n),qi[t]=r}return de(ne(r,...e))}var Dr=t=>t.toBytes(!0).slice(1),$r=t=>t%qr===Za;function Mr(t){let{Fn:e,BASE:r}=at,n=e.fromBytes(t),o=r.multiply(n);return{scalar:$r(o.y)?n:e.neg(n),bytes:Dr(o)}}function Di(t){let e=Nn;if(!e.isValidNot0(t))throw new Error("invalid x: Fail if x \u2265 p");let r=e.create(t*t),n=e.create(r*t+BigInt(7)),o=e.sqrt(n);$r(o)||(o=e.neg(o));let i=at.fromAffine({x:t,y:o});return i.assertValidity(),i}var Xt=je;function $i(...t){return at.Fn.create(Xt(_n("BIP0340/challenge",...t)))}function Mi(t){return Mr(t).bytes}function Ya(t,e,r=Se(32)){let{Fn:n}=at,o=W(t,void 0,"message"),{bytes:i,scalar:s}=Mr(e),c=W(r,32,"auxRand"),a=n.toBytes(s^Xt(_n("BIP0340/aux",c))),f=_n("BIP0340/nonce",a,i,o),{bytes:d,scalar:p}=Mr(f),l=$i(d,i,o),u=new Uint8Array(64);if(u.set(d,0),u.set(n.toBytes(n.create(p+l*s)),32),!Vi(u,o,i))throw new Error("sign: Invalid signature produced");return u}function Vi(t,e,r){let{Fp:n,Fn:o,BASE:i}=at,s=W(t,64,"signature"),c=W(e,void 0,"message"),a=W(r,32,"publicKey");try{let f=Di(Xt(a)),d=Xt(s.subarray(0,32));if(!n.isValidNot0(d))return!1;let p=Xt(s.subarray(32,64));if(!o.isValidNot0(p))return!1;let l=$i(o.toBytes(d),Dr(f),c),u=i.multiplyUnsafe(p).add(f.multiplyUnsafe(o.neg(l))),{x:y,y:x}=u.toAffine();return!(u.is0()||!$r(x)||y!==d)}catch{return!1}}var kt=(()=>{let r=(n=Se(48))=>Rn(n,Un.n);return{keygen:In(r,Mi),getPublicKey:Mi,sign:Ya,verify:Vi,Point:at,utils:{randomSecretKey:r,taggedHash:_n,lift_x:Di,pointToBytes:Dr},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();function Wa(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Hn(t){if(typeof t!="boolean")throw new Error(`boolean expected, not ${t}`)}function Pn(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function oe(t,e,r=""){let n=Wa(t),o=t?.length,i=e!==void 0;if(!n||i&&o!==e){let s=r&&`"${r}" `,c=i?` of length ${e}`:"",a=n?`length=${o}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+c+", got "+a)}return t}function Vr(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Ki(t,e){oe(t,void 0,"output");let r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function Ne(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function _e(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Ja(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}var Xa=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ji(t,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(t,e)}function At(t,e){if(t.length!==e.length)return!1;let r=0;for(let n=0;n<t.length;n++)r|=t[n]^e[n];return r===0}var Kr=(t,e)=>{function r(n,...o){if(oe(n,void 0,"key"),!Xa)throw new Error("Non little-endian hardware is not yet supported");if(t.nonceLength!==void 0){let d=o[0];oe(d,t.varSizeNonce?void 0:t.nonceLength,"nonce")}let i=t.tagLength;i&&o[1]!==void 0&&oe(o[1],void 0,"AAD");let s=e(n,...o),c=(d,p)=>{if(p!==void 0){if(d!==2)throw new Error("cipher output not supported");oe(p,void 0,"output")}},a=!1;return{encrypt(d,p){if(a)throw new Error("cannot encrypt() twice with same key + nonce");return a=!0,oe(d),c(s.encrypt.length,p),s.encrypt(d,p)},decrypt(d,p){if(oe(d),i&&d.length<i)throw new Error('"ciphertext" expected length bigger than tagLength='+i);return c(s.decrypt.length,p),s.decrypt(d,p)}}}return Object.assign(r,t),r};function jr(t,e,r=!0){if(e===void 0)return new Uint8Array(t);if(e.length!==t)throw new Error('"output" expected Uint8Array of length '+t+", got: "+e.length);if(r&&!Fa(e))throw new Error("invalid output, must be aligned");return e}function zi(t,e,r){Hn(r);let n=new Uint8Array(16),o=Ja(n);return o.setBigUint64(0,BigInt(e),r),o.setBigUint64(8,BigInt(t),r),n}function Fa(t){return t.byteOffset%4===0}function Rt(t){return Uint8Array.from(t)}var Gi=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),Qa=Gi("expand 16-byte k"),ef=Gi("expand 32-byte k"),tf=Ne(Qa),nf=Ne(ef);function U(t,e){return t<<e|t>>>32-e}function zr(t){return t.byteOffset%4===0}var qn=64,rf=16,Yi=2**32-1,Zi=Uint32Array.of();function of(t,e,r,n,o,i,s,c){let a=o.length,f=new Uint8Array(qn),d=Ne(f),p=zr(o)&&zr(i),l=p?Ne(o):Zi,u=p?Ne(i):Zi;for(let y=0;y<a;s++){if(t(e,r,n,d,s,c),s>=Yi)throw new Error("arx: counter overflow");let x=Math.min(qn,a-y);if(p&&x===qn){let B=y/4;if(y%4!==0)throw new Error("arx: invalid block position");for(let C=0,H;C<rf;C++)H=B+C,u[H]=l[H]^d[C];y+=qn;continue}for(let B=0,C;B<x;B++)C=y+B,i[C]=o[C]^f[B];y+=x}}function Zr(t,e){let{allowShortKeys:r,extendNonceFn:n,counterLength:o,counterRight:i,rounds:s}=ji({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return Pn(o),Pn(s),Hn(i),Hn(r),(c,a,f,d,p=0)=>{oe(c,void 0,"key"),oe(a,void 0,"nonce"),oe(f,void 0,"data");let l=f.length;if(d===void 0&&(d=new Uint8Array(l)),oe(d,void 0,"output"),Pn(p),p<0||p>=Yi)throw new Error("arx: counter overflow");if(d.length<l)throw new Error(`arx: output (${d.length}) is shorter than data (${l})`);let u=[],y=c.length,x,B;if(y===32)u.push(x=Rt(c)),B=nf;else if(y===16&&r)x=new Uint8Array(32),x.set(c),x.set(c,16),B=tf,u.push(x);else throw oe(c,32,"arx key"),new Error("invalid key size");zr(a)||u.push(a=Rt(a));let C=Ne(x);if(n){if(a.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(B,C,Ne(a.subarray(0,16)),C),a=a.subarray(16)}let H=16-o;if(H!==a.length)throw new Error(`arx: nonce must be ${H} or 16 bytes`);if(H!==12){let q=new Uint8Array(12);q.set(a,i?0:12-a.length),a=q,u.push(a)}let P=Ne(a);return of(t,B,C,P,f,d,p,s),_e(...u),d}}function ie(t,e){return t[e++]&255|(t[e++]&255)<<8}var Gr=class{constructor(e){v(this,"blockLen",16);v(this,"outputLen",16);v(this,"buffer",new Uint8Array(16));v(this,"r",new Uint16Array(10));v(this,"h",new Uint16Array(10));v(this,"pad",new Uint16Array(8));v(this,"pos",0);v(this,"finished",!1);e=Rt(oe(e,32,"key"));let r=ie(e,0),n=ie(e,2),o=ie(e,4),i=ie(e,6),s=ie(e,8),c=ie(e,10),a=ie(e,12),f=ie(e,14);this.r[0]=r&8191,this.r[1]=(r>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|i<<9)&8191,this.r[4]=(i>>>4|s<<12)&255,this.r[5]=s>>>1&8190,this.r[6]=(s>>>14|c<<2)&8191,this.r[7]=(c>>>11|a<<5)&8065,this.r[8]=(a>>>8|f<<8)&8191,this.r[9]=f>>>5&127;for(let d=0;d<8;d++)this.pad[d]=ie(e,16+2*d)}process(e,r,n=!1){let o=n?0:2048,{h:i,r:s}=this,c=s[0],a=s[1],f=s[2],d=s[3],p=s[4],l=s[5],u=s[6],y=s[7],x=s[8],B=s[9],C=ie(e,r+0),H=ie(e,r+2),P=ie(e,r+4),q=ie(e,r+6),N=ie(e,r+8),D=ie(e,r+10),z=ie(e,r+12),Z=ie(e,r+14),T=i[0]+(C&8191),j=i[1]+((C>>>13|H<<3)&8191),$=i[2]+((H>>>10|P<<6)&8191),I=i[3]+((P>>>7|q<<9)&8191),w=i[4]+((q>>>4|N<<12)&8191),h=i[5]+(N>>>1&8191),g=i[6]+((N>>>14|D<<2)&8191),b=i[7]+((D>>>11|z<<5)&8191),E=i[8]+((z>>>8|Z<<8)&8191),k=i[9]+(Z>>>5|o),m=0,A=m+T*c+j*(5*B)+$*(5*x)+I*(5*y)+w*(5*u);m=A>>>13,A&=8191,A+=h*(5*l)+g*(5*p)+b*(5*d)+E*(5*f)+k*(5*a),m+=A>>>13,A&=8191;let S=m+T*a+j*c+$*(5*B)+I*(5*x)+w*(5*y);m=S>>>13,S&=8191,S+=h*(5*u)+g*(5*l)+b*(5*p)+E*(5*d)+k*(5*f),m+=S>>>13,S&=8191;let R=m+T*f+j*a+$*c+I*(5*B)+w*(5*x);m=R>>>13,R&=8191,R+=h*(5*y)+g*(5*u)+b*(5*l)+E*(5*p)+k*(5*d),m+=R>>>13,R&=8191;let _=m+T*d+j*f+$*a+I*c+w*(5*B);m=_>>>13,_&=8191,_+=h*(5*x)+g*(5*y)+b*(5*u)+E*(5*l)+k*(5*p),m+=_>>>13,_&=8191;let M=m+T*p+j*d+$*f+I*a+w*c;m=M>>>13,M&=8191,M+=h*(5*B)+g*(5*x)+b*(5*y)+E*(5*u)+k*(5*l),m+=M>>>13,M&=8191;let O=m+T*l+j*p+$*d+I*f+w*a;m=O>>>13,O&=8191,O+=h*c+g*(5*B)+b*(5*x)+E*(5*y)+k*(5*u),m+=O>>>13,O&=8191;let L=m+T*u+j*l+$*p+I*d+w*f;m=L>>>13,L&=8191,L+=h*a+g*c+b*(5*B)+E*(5*x)+k*(5*y),m+=L>>>13,L&=8191;let V=m+T*y+j*u+$*l+I*p+w*d;m=V>>>13,V&=8191,V+=h*f+g*a+b*c+E*(5*B)+k*(5*x),m+=V>>>13,V&=8191;let Y=m+T*x+j*y+$*u+I*l+w*p;m=Y>>>13,Y&=8191,Y+=h*d+g*f+b*a+E*c+k*(5*B),m+=Y>>>13,Y&=8191;let K=m+T*B+j*x+$*y+I*u+w*l;m=K>>>13,K&=8191,K+=h*p+g*d+b*f+E*a+k*c,m+=K>>>13,K&=8191,m=(m<<2)+m|0,m=m+A|0,A=m&8191,m=m>>>13,S+=m,i[0]=A,i[1]=S,i[2]=R,i[3]=_,i[4]=M,i[5]=O,i[6]=L,i[7]=V,i[8]=Y,i[9]=K}finalize(){let{h:e,pad:r}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let c=2;c<10;c++)e[c]+=o,o=e[c]>>>13,e[c]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let c=1;c<10;c++)n[c]=e[c]+o,o=n[c]>>>13,n[c]&=8191;n[9]-=8192;let i=(o^1)-1;for(let c=0;c<10;c++)n[c]&=i;i=~i;for(let c=0;c<10;c++)e[c]=e[c]&i|n[c];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let s=e[0]+r[0];e[0]=s&65535;for(let c=1;c<8;c++)s=(e[c]+r[c]|0)+(s>>>16)|0,e[c]=s&65535;_e(n)}update(e){Vr(this),oe(e),e=Rt(e);let{buffer:r,blockLen:n}=this,o=e.length;for(let i=0;i<o;){let s=Math.min(n-this.pos,o-i);if(s===n){for(;n<=o-i;i+=n)this.process(e,i);continue}r.set(e.subarray(i,i+s),this.pos),this.pos+=s,i+=s,this.pos===n&&(this.process(r,0,!1),this.pos=0)}return this}destroy(){_e(this.h,this.r,this.buffer,this.pad)}digestInto(e){Vr(this),Ki(e,this),this.finished=!0;let{buffer:r,h:n}=this,{pos:o}=this;if(o){for(r[o++]=1;o<16;o++)r[o]=0;this.process(r,0,!0)}this.finalize();let i=0;for(let s=0;s<8;s++)e[i++]=n[s]>>>0,e[i++]=n[s]>>>8;return e}digest(){let{buffer:e,outputLen:r}=this;this.digestInto(e);let n=e.slice(0,r);return this.destroy(),n}};function sf(t){let e=(n,o)=>t(o).update(n).digest(),r=t(new Uint8Array(32));return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=n=>t(n),e}var Wi=sf(t=>new Gr(t));function Fi(t,e,r,n,o,i=20){let s=t[0],c=t[1],a=t[2],f=t[3],d=e[0],p=e[1],l=e[2],u=e[3],y=e[4],x=e[5],B=e[6],C=e[7],H=o,P=r[0],q=r[1],N=r[2],D=s,z=c,Z=a,T=f,j=d,$=p,I=l,w=u,h=y,g=x,b=B,E=C,k=H,m=P,A=q,S=N;for(let _=0;_<i;_+=2)D=D+j|0,k=U(k^D,16),h=h+k|0,j=U(j^h,12),D=D+j|0,k=U(k^D,8),h=h+k|0,j=U(j^h,7),z=z+$|0,m=U(m^z,16),g=g+m|0,$=U($^g,12),z=z+$|0,m=U(m^z,8),g=g+m|0,$=U($^g,7),Z=Z+I|0,A=U(A^Z,16),b=b+A|0,I=U(I^b,12),Z=Z+I|0,A=U(A^Z,8),b=b+A|0,I=U(I^b,7),T=T+w|0,S=U(S^T,16),E=E+S|0,w=U(w^E,12),T=T+w|0,S=U(S^T,8),E=E+S|0,w=U(w^E,7),D=D+$|0,S=U(S^D,16),b=b+S|0,$=U($^b,12),D=D+$|0,S=U(S^D,8),b=b+S|0,$=U($^b,7),z=z+I|0,k=U(k^z,16),E=E+k|0,I=U(I^E,12),z=z+I|0,k=U(k^z,8),E=E+k|0,I=U(I^E,7),Z=Z+w|0,m=U(m^Z,16),h=h+m|0,w=U(w^h,12),Z=Z+w|0,m=U(m^Z,8),h=h+m|0,w=U(w^h,7),T=T+j|0,A=U(A^T,16),g=g+A|0,j=U(j^g,12),T=T+j|0,A=U(A^T,8),g=g+A|0,j=U(j^g,7);let R=0;n[R++]=s+D|0,n[R++]=c+z|0,n[R++]=a+Z|0,n[R++]=f+T|0,n[R++]=d+j|0,n[R++]=p+$|0,n[R++]=l+I|0,n[R++]=u+w|0,n[R++]=y+h|0,n[R++]=x+g|0,n[R++]=B+b|0,n[R++]=C+E|0,n[R++]=H+k|0,n[R++]=P+m|0,n[R++]=q+A|0,n[R++]=N+S|0}function cf(t,e,r,n){let o=t[0],i=t[1],s=t[2],c=t[3],a=e[0],f=e[1],d=e[2],p=e[3],l=e[4],u=e[5],y=e[6],x=e[7],B=r[0],C=r[1],H=r[2],P=r[3];for(let N=0;N<20;N+=2)o=o+a|0,B=U(B^o,16),l=l+B|0,a=U(a^l,12),o=o+a|0,B=U(B^o,8),l=l+B|0,a=U(a^l,7),i=i+f|0,C=U(C^i,16),u=u+C|0,f=U(f^u,12),i=i+f|0,C=U(C^i,8),u=u+C|0,f=U(f^u,7),s=s+d|0,H=U(H^s,16),y=y+H|0,d=U(d^y,12),s=s+d|0,H=U(H^s,8),y=y+H|0,d=U(d^y,7),c=c+p|0,P=U(P^c,16),x=x+P|0,p=U(p^x,12),c=c+p|0,P=U(P^c,8),x=x+P|0,p=U(p^x,7),o=o+f|0,P=U(P^o,16),y=y+P|0,f=U(f^y,12),o=o+f|0,P=U(P^o,8),y=y+P|0,f=U(f^y,7),i=i+d|0,B=U(B^i,16),x=x+B|0,d=U(d^x,12),i=i+d|0,B=U(B^i,8),x=x+B|0,d=U(d^x,7),s=s+p|0,C=U(C^s,16),l=l+C|0,p=U(p^l,12),s=s+p|0,C=U(C^s,8),l=l+C|0,p=U(p^l,7),c=c+a|0,H=U(H^c,16),u=u+H|0,a=U(a^u,12),c=c+a|0,H=U(H^c,8),u=u+H|0,a=U(a^u,7);let q=0;n[q++]=o,n[q++]=i,n[q++]=s,n[q++]=c,n[q++]=B,n[q++]=C,n[q++]=H,n[q++]=P}var Ct=Zr(Fi,{counterRight:!1,counterLength:4,allowShortKeys:!1}),af=Zr(Fi,{counterRight:!1,counterLength:8,extendNonceFn:cf,allowShortKeys:!1});var ff=new Uint8Array(16),Ji=(t,e)=>{t.update(e);let r=e.length%16;r&&t.update(ff.subarray(r))},lf=new Uint8Array(32);function Xi(t,e,r,n,o){o!==void 0&&oe(o,void 0,"AAD");let i=t(e,r,lf),s=zi(n.length,o?o.length:0,!0),c=Wi.create(i);o&&Ji(c,o),Ji(c,n),c.update(s);let a=c.digest();return _e(i,s),a}var Qi=t=>(e,r,n)=>({encrypt(i,s){let c=i.length;s=jr(c+16,s,!1),s.set(i);let a=s.subarray(0,-16);t(e,r,a,a,1);let f=Xi(t,e,r,a,n);return s.set(f,c),_e(f),s},decrypt(i,s){s=jr(i.length-16,s,!1);let c=i.subarray(0,-16),a=i.subarray(-16),f=Xi(t,e,r,c,n);if(!At(a,f))throw new Error("invalid tag");return s.set(i.subarray(0,-16)),t(e,r,s,s,1),_e(f),s}}),Vd=Kr({blockSize:64,nonceLength:12,tagLength:16},Qi(Ct)),Kd=Kr({blockSize:64,nonceLength:24,tagLength:16},Qi(af));function Mn(t,e,r){return it(t),r===void 0&&(r=new Uint8Array(t.outputLen)),ke(t,r,e)}var Yr=Uint8Array.of(0),es=Uint8Array.of();function Dn(t,e,r,n=32){it(t),be(n,"length");let o=t.outputLen;if(n>255*o)throw new Error("Length must be <= 255*HashLen");let i=Math.ceil(n/o);r===void 0?r=es:W(r,void 0,"info");let s=new Uint8Array(i*o),c=ke.create(t,e),a=c._cloneInto(),f=new Uint8Array(c.outputLen);for(let d=0;d<i;d++)Yr[0]=d+1,a.update(d===0?es:f).update(r).update(Yr).digestInto(f),s.set(f,o*d),c._cloneInto(a);return c.destroy(),a.destroy(),Ie(f,Yr),s.slice(0,n)}function ns(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function uf(t){if(!ns(t))throw new Error("Uint8Array expected")}function rs(t,e){return Array.isArray(e)?e.length===0?!0:t?e.every(r=>typeof r=="string"):e.every(r=>Number.isSafeInteger(r)):!1}function Ft(t,e){if(typeof e!="string")throw new Error(`${t}: string expected`);return!0}function Xr(t){if(!Number.isSafeInteger(t))throw new Error(`invalid integer: ${t}`)}function Jr(t){if(!Array.isArray(t))throw new Error("array expected")}function $n(t,e){if(!rs(!0,e))throw new Error(`${t}: array of strings expected`)}function df(t,e){if(!rs(!1,e))throw new Error(`${t}: array of numbers expected`)}function hf(...t){let e=i=>i,r=(i,s)=>c=>i(s(c)),n=t.map(i=>i.encode).reduceRight(r,e),o=t.map(i=>i.decode).reduce(r,e);return{encode:n,decode:o}}function gf(t){let e=typeof t=="string"?t.split(""):t,r=e.length;$n("alphabet",e);let n=new Map(e.map((o,i)=>[o,i]));return{encode:o=>(Jr(o),o.map(i=>{if(!Number.isSafeInteger(i)||i<0||i>=r)throw new Error(`alphabet.encode: digit index outside alphabet "${i}". Allowed: ${t}`);return e[i]})),decode:o=>(Jr(o),o.map(i=>{Ft("alphabet.decode",i);let s=n.get(i);if(s===void 0)throw new Error(`Unknown letter: "${i}". Allowed: ${t}`);return s}))}}function pf(t=""){return Ft("join",t),{encode:e=>($n("join.decode",e),e.join(t)),decode:e=>(Ft("join.decode",e),e.split(t))}}function yf(t,e="="){return Xr(t),Ft("padding",e),{encode(r){for($n("padding.encode",r);r.length*t%8;)r.push(e);return r},decode(r){$n("padding.decode",r);let n=r.length;if(n*t%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;n>0&&r[n-1]===e;n--)if((n-1)*t%8===0)throw new Error("padding: invalid, string has too much padding");return r.slice(0,n)}}}var os=(t,e)=>e===0?t:os(e,t%e),Vn=(t,e)=>t+(e-os(t,e)),Wr=(()=>{let t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function ts(t,e,r,n){if(Jr(t),e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(r<=0||r>32)throw new Error(`convertRadix2: wrong to=${r}`);if(Vn(e,r)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${r} carryBits=${Vn(e,r)}`);let o=0,i=0,s=Wr[e],c=Wr[r]-1,a=[];for(let f of t){if(Xr(f),f>=s)throw new Error(`convertRadix2: invalid data word=${f} from=${e}`);if(o=o<<e|f,i+e>32)throw new Error(`convertRadix2: carry overflow pos=${i} from=${e}`);for(i+=e;i>=r;i-=r)a.push((o>>i-r&c)>>>0);let d=Wr[i];if(d===void 0)throw new Error("invalid carry");o&=d-1}if(o=o<<r-i&c,!n&&i>=e)throw new Error("Excess padding");if(!n&&o>0)throw new Error(`Non-zero padding: ${o}`);return n&&i>0&&a.push(o>>>0),a}function bf(t,e=!1){if(Xr(t),t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(Vn(8,t)>32||Vn(t,8)>32)throw new Error("radix2: carry overflow");return{encode:r=>{if(!ns(r))throw new Error("radix2.encode input should be Uint8Array");return ts(Array.from(r),8,t,!e)},decode:r=>(df("radix2.decode",r),Uint8Array.from(ts(r,t,8,e)))}}var mf=typeof Uint8Array.from([]).toBase64=="function"&&typeof Uint8Array.fromBase64=="function",wf=(t,e)=>{Ft("base64",t);let r=e?/^[A-Za-z0-9=_-]+$/:/^[A-Za-z0-9=+/]+$/,n=e?"base64url":"base64";if(t.length>0&&!r.test(t))throw new Error("invalid base64");return Uint8Array.fromBase64(t,{alphabet:n,lastChunkHandling:"strict"})},Qt=mf?{encode(t){return uf(t),t.toBase64()},decode(t){return wf(t,!1)}}:hf(bf(6),gf("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),yf(6),pf(""));var ft=Symbol("verified"),xf=t=>t instanceof Object;function Ef(t){if(!xf(t)||typeof t.kind!="number"||typeof t.content!="string"||typeof t.created_at!="number"||typeof t.pubkey!="string"||!t.pubkey.match(/^[a-f0-9]{64}$/)||!Array.isArray(t.tags))return!1;for(let e=0;e<t.tags.length;e++){let r=t.tags[e];if(!Array.isArray(r))return!1;for(let n=0;n<r.length;n++)if(typeof r[n]!="string")return!1}return!0}var vf=new TextDecoder("utf-8"),to=new TextEncoder;function en(t){try{t.indexOf("://")===-1&&(t="wss://"+t);let e=new URL(t);return e.protocol==="http:"?e.protocol="ws:":e.protocol==="https:"&&(e.protocol="wss:"),e.pathname=e.pathname.replace(/\/+/g,"/"),e.pathname.endsWith("/")&&(e.pathname=e.pathname.slice(0,-1)),(e.port==="80"&&e.protocol==="ws:"||e.port==="443"&&e.protocol==="wss:")&&(e.port=""),e.searchParams.sort(),e.hash="",e.toString()}catch{throw new Error(`Invalid URL: ${t}`)}}var Bf=class{generateSecretKey(){return kt.utils.randomSecretKey()}getPublicKey(t){return me(kt.getPublicKey(t))}finalizeEvent(t,e){let r=t;return r.pubkey=me(kt.getPublicKey(e)),r.id=Fr(r),r.sig=me(kt.sign(se(Fr(r)),e)),r[ft]=!0,r}verifyEvent(t){if(typeof t[ft]=="boolean")return t[ft];try{let e=Fr(t);if(e!==t.id)return t[ft]=!1,!1;let r=kt.verify(se(t.sig),se(e),se(t.pubkey));return t[ft]=r,r}catch{return t[ft]=!1,!1}}};function Sf(t){if(!Ef(t))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content])}function Fr(t){let e=de(to.encode(Sf(t)));return me(e)}var jn=new Bf,Fd=jn.generateSecretKey,is=jn.getPublicKey,kf=jn.finalizeEvent,cs=jn.verifyEvent,as=1,fs=65535;function Qr(t,e){let r=On.getSharedSecret(t,se("02"+e)).subarray(1,33);return Mn(de,r,to.encode("nip44-v2"))}function ls(t,e){let r=Dn(de,t,e,76);return{chacha_key:r.subarray(0,32),chacha_nonce:r.subarray(32,44),hmac_key:r.subarray(44,76)}}function us(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("expected positive integer");if(t<=32)return 32;let e=1<<Math.floor(Math.log2(t-1))+1,r=e<=256?32:e/8;return r*(Math.floor((t-1)/r)+1)}function Af(t){if(!Number.isSafeInteger(t)||t<as||t>fs)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");let e=new Uint8Array(2);return new DataView(e.buffer).setUint16(0,t,!1),e}function Rf(t){let e=to.encode(t),r=e.length,n=Af(r),o=new Uint8Array(us(r)-r);return ne(n,e,o)}function Cf(t){let e=new DataView(t.buffer).getUint16(0),r=t.subarray(2,2+e);if(e<as||e>fs||r.length!==e||t.length!==2+us(e))throw new Error("invalid padding");return vf.decode(r)}function ds(t,e,r){if(r.length!==32)throw new Error("AAD associated data must be 32 bytes");let n=ne(r,e);return ke(de,t,n)}function If(t){if(typeof t!="string")throw new Error("payload must be a valid string");let e=t.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(t[0]==="#")throw new Error("unknown encryption version");let r;try{r=Qt.decode(t)}catch(i){throw new Error("invalid base64: "+i.message)}let n=r.length;if(n<99||n>65603)throw new Error("invalid data length: "+n);let o=r[0];if(o!==2)throw new Error("unknown encryption version "+o);return{nonce:r.subarray(1,33),ciphertext:r.subarray(33,-32),mac:r.subarray(-32)}}function Tf(t,e,r=Se(32)){let{chacha_key:n,chacha_nonce:o,hmac_key:i}=ls(e,r),s=Rf(t),c=Ct(n,o,s),a=ds(i,c,r);return Qt.encode(ne(new Uint8Array([2]),r,c,a))}function ss(t,e){let{nonce:r,ciphertext:n,mac:o}=If(t),{chacha_key:i,chacha_nonce:s,hmac_key:c}=ls(e,r),a=ds(c,n,r);if(!At(a,o))throw new Error("invalid MAC");let f=Ct(i,s,n);return Cf(f)}var Lf=/^(?:([\w.+-]+)@)?([\w_-]+(\.[\w_-]+)+)$/,Nf;try{Nf=fetch}catch{}var _f=22242,eo=24133;function Uf(t,e){if(t.ids&&t.ids.indexOf(e.id)===-1||t.kinds&&t.kinds.indexOf(e.kind)===-1||t.authors&&t.authors.indexOf(e.pubkey)===-1)return!1;for(let r in t)if(r[0]==="#"){let n=r.slice(1),o=t[`#${n}`];if(o&&!e.tags.find(([i,s])=>i===r.slice(1)&&o.indexOf(s)!==-1))return!1}return!(t.since&&e.created_at<t.since||t.until&&e.created_at>t.until)}function Of(t,e){for(let r=0;r<t.length;r++)if(Uf(t[r],e))return!0;return!1}function Hf(t,e){let r=e.length+3,n=t.indexOf(`"${e}":`)+r,o=t.slice(n).indexOf('"')+n+1;return t.slice(o,o+64)}function Pf(t){let e=t.slice(0,22).indexOf('"EVENT"');if(e===-1)return null;let r=t.slice(e+7+1).indexOf('"');if(r===-1)return null;let n=e+7+1+r,o=t.slice(n+1,80).indexOf('"');if(o===-1)return null;let i=n+1+o;return t.slice(n+1,i)}function qf(t,e){return{kind:_f,created_at:Math.floor(Date.now()/1e3),tags:[["relay",t],["challenge",e]],content:""}}var hs=class extends Error{constructor(t,e){super(`Tried to send message '${t} on a closed connection to ${e}.`),this.name="SendingOnClosedConnection"}},gs=class{constructor(t,e){v(this,"url");v(this,"_connected",!1);v(this,"onclose",null);v(this,"onnotice",t=>console.debug(`NOTICE from ${this.url}: ${t}`));v(this,"onauth");v(this,"baseEoseTimeout",4400);v(this,"publishTimeout",4400);v(this,"pingFrequency",29e3);v(this,"pingTimeout",2e4);v(this,"resubscribeBackoff",[1e4,1e4,1e4,2e4,2e4,3e4,6e4]);v(this,"openSubs",new Map);v(this,"enablePing");v(this,"enableReconnect");v(this,"idleSince",Date.now());v(this,"ongoingOperations",0);v(this,"reconnectTimeoutHandle");v(this,"pingIntervalHandle");v(this,"reconnectAttempts",0);v(this,"skipReconnection",!1);v(this,"connectionPromise");v(this,"openCountRequests",new Map);v(this,"openEventPublishes",new Map);v(this,"ws");v(this,"challenge");v(this,"authPromise");v(this,"serial",0);v(this,"verifyEvent");v(this,"_WebSocket");this.url=en(t),this.verifyEvent=e.verifyEvent,this._WebSocket=e.websocketImplementation||WebSocket,this.enablePing=e.enablePing,this.enableReconnect=e.enableReconnect||!1}static async connect(t,e){let r=new gs(t,e);return await r.connect(e),r}closeAllSubscriptions(t){for(let[e,r]of this.openSubs)r.close(t);this.openSubs.clear();for(let[e,r]of this.openEventPublishes)r.reject(new Error(t));this.openEventPublishes.clear();for(let[e,r]of this.openCountRequests)r.reject(new Error(t));this.openCountRequests.clear()}get connected(){return this._connected}async reconnect(){let t=this.resubscribeBackoff[Math.min(this.reconnectAttempts,this.resubscribeBackoff.length-1)];this.reconnectAttempts++,this.reconnectTimeoutHandle=setTimeout(async()=>{try{await this.connect()}catch{}},t)}handleHardClose(t){this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this._connected=!1,this.connectionPromise=void 0,this.idleSince=void 0,this.enableReconnect&&!this.skipReconnection?this.reconnect():(this.onclose?.(),this.closeAllSubscriptions(t))}async connect(t){let e;return this.connectionPromise?this.connectionPromise:(this.challenge=void 0,this.authPromise=void 0,this.skipReconnection=!1,this.connectionPromise=new Promise((r,n)=>{t?.timeout&&(e=setTimeout(()=>{n("connection timed out"),this.connectionPromise=void 0,this.skipReconnection=!0,this.onclose?.(),this.handleHardClose("relay connection timed out")},t.timeout)),t?.abort&&(t.abort.onabort=n);try{this.ws=new this._WebSocket(this.url)}catch(o){clearTimeout(e),n(o);return}this.ws.onopen=()=>{this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),clearTimeout(e),this._connected=!0;let o=this.reconnectAttempts>0;this.reconnectAttempts=0;for(let i of this.openSubs.values()){if(i.eosed=!1,o)for(let s=0;s<i.filters.length;s++)i.lastEmitted&&(i.filters[s].since=i.lastEmitted+1);i.fire()}this.enablePing&&(this.pingIntervalHandle=setInterval(()=>this.pingpong(),this.pingFrequency)),r()},this.ws.onerror=()=>{clearTimeout(e),n("connection failed"),this.connectionPromise=void 0,this.skipReconnection=!0,this.onclose?.(),this.handleHardClose("relay connection failed")},this.ws.onclose=o=>{clearTimeout(e),n(o.message||"websocket closed"),this.handleHardClose("relay connection closed")},this.ws.onmessage=this._onmessage.bind(this)}),this.connectionPromise)}waitForPingPong(){return new Promise(t=>{this.ws.once("pong",()=>t(!0)),this.ws.ping()})}waitForDummyReq(){return new Promise((t,e)=>{if(!this.connectionPromise)return e(new Error(`no connection to ${this.url}, can't ping`));try{let r=this.subscribe([{ids:["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],limit:0}],{label:"<forced-ping>",oneose:()=>{t(!0),r.close()},onclose(){t(!0)},eoseTimeout:this.pingTimeout+1e3})}catch(r){e(r)}})}async pingpong(){this.ws?.readyState===1&&(await Promise.any([this.ws&&this.ws.ping&&this.ws.once?this.waitForPingPong():this.waitForDummyReq(),new Promise(e=>setTimeout(()=>e(!1),this.pingTimeout))])||this.ws?.readyState===this._WebSocket.OPEN&&this.ws?.close())}async send(t){if(!this.connectionPromise)throw new hs(t,this.url);this.connectionPromise.then(()=>{this.ws?.send(t)})}async auth(t){let e=this.challenge;if(!e)throw new Error("can't perform auth, no challenge was received");return this.authPromise?this.authPromise:(this.authPromise=new Promise(async(r,n)=>{try{let o=await t(qf(this.url,e)),i=setTimeout(()=>{let s=this.openEventPublishes.get(o.id);s&&(s.reject(new Error("auth timed out")),this.openEventPublishes.delete(o.id))},this.publishTimeout);this.openEventPublishes.set(o.id,{resolve:r,reject:n,timeout:i}),this.send('["AUTH",'+JSON.stringify(o)+"]")}catch(o){console.warn("subscribe auth function failed:",o)}}),this.authPromise)}async publish(t){this.idleSince=void 0,this.ongoingOperations++;let e=new Promise((r,n)=>{let o=setTimeout(()=>{let i=this.openEventPublishes.get(t.id);i&&(i.reject(new Error("publish timed out")),this.openEventPublishes.delete(t.id))},this.publishTimeout);this.openEventPublishes.set(t.id,{resolve:r,reject:n,timeout:o})});return this.send('["EVENT",'+JSON.stringify(t)+"]"),this.ongoingOperations--,this.ongoingOperations===0&&(this.idleSince=Date.now()),e}async count(t,e){this.serial++;let r=e?.id||"count:"+this.serial,n=new Promise((o,i)=>{this.openCountRequests.set(r,{resolve:o,reject:i})});return this.send('["COUNT","'+r+'",'+JSON.stringify(t).substring(1)),n}subscribe(t,e){e.label!=="<forced-ping>"&&(this.idleSince=void 0,this.ongoingOperations++);let r=this.prepareSubscription(t,e);return r.fire(),e.abort&&(e.abort.onabort=()=>r.close(String(e.abort.reason||"<aborted>"))),r}prepareSubscription(t,e){this.serial++;let r=e.id||(e.label?e.label+":":"sub:")+this.serial,n=new Mf(this,r,t,e);return this.openSubs.set(r,n),n}close(){this.skipReconnection=!0,this.reconnectTimeoutHandle&&(clearTimeout(this.reconnectTimeoutHandle),this.reconnectTimeoutHandle=void 0),this.pingIntervalHandle&&(clearInterval(this.pingIntervalHandle),this.pingIntervalHandle=void 0),this.closeAllSubscriptions("relay connection closed by us"),this._connected=!1,this.idleSince=void 0,this.onclose?.(),this.ws?.readyState===this._WebSocket.OPEN&&this.ws?.close()}_onmessage(t){let e=t.data;if(!e)return;let r=Pf(e);if(r){let n=this.openSubs.get(r);if(!n)return;let o=Hf(e,"id"),i=n.alreadyHaveEvent?.(o);if(n.receivedEvent?.(this,o),i)return}try{let n=JSON.parse(e);switch(n[0]){case"EVENT":{let o=this.openSubs.get(n[1]),i=n[2];this.verifyEvent(i)&&Of(o.filters,i)?o.onevent(i):o.oninvalidevent?.(i),(!o.lastEmitted||o.lastEmitted<i.created_at)&&(o.lastEmitted=i.created_at);return}case"COUNT":{let o=n[1],i=n[2],s=this.openCountRequests.get(o);s&&(s.resolve(i.count),this.openCountRequests.delete(o));return}case"EOSE":{let o=this.openSubs.get(n[1]);if(!o)return;o.receivedEose();return}case"OK":{let o=n[1],i=n[2],s=n[3],c=this.openEventPublishes.get(o);c&&(clearTimeout(c.timeout),i?c.resolve(s):c.reject(new Error(s)),this.openEventPublishes.delete(o));return}case"CLOSED":{let o=n[1],i=this.openSubs.get(o);if(!i)return;i.closed=!0,i.close(n[2]);return}case"NOTICE":{this.onnotice(n[1]);return}case"AUTH":{this.challenge=n[1],this.onauth&&this.auth(this.onauth);return}default:{this.openSubs.get(n[1])?.oncustom?.(n);return}}}catch(n){try{let[o,i,s]=JSON.parse(e);console.warn(`[nostr] relay ${this.url} error processing message:`,n,s)}catch{console.warn(`[nostr] relay ${this.url} error processing message:`,n)}return}}},Mf=class{constructor(t,e,r,n){v(this,"relay");v(this,"id");v(this,"lastEmitted");v(this,"closed",!1);v(this,"eosed",!1);v(this,"filters");v(this,"alreadyHaveEvent");v(this,"receivedEvent");v(this,"onevent");v(this,"oninvalidevent");v(this,"oneose");v(this,"onclose");v(this,"oncustom");v(this,"eoseTimeout");v(this,"eoseTimeoutHandle");if(r.length===0)throw new Error("subscription can't be created with zero filters");this.relay=t,this.filters=r,this.id=e,this.alreadyHaveEvent=n.alreadyHaveEvent,this.receivedEvent=n.receivedEvent,this.eoseTimeout=n.eoseTimeout||t.baseEoseTimeout,this.oneose=n.oneose,this.onclose=n.onclose,this.oninvalidevent=n.oninvalidevent,this.onevent=n.onevent||(o=>{console.warn(`onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,o)})}fire(){this.relay.send('["REQ","'+this.id+'",'+JSON.stringify(this.filters).substring(1)),this.eoseTimeoutHandle=setTimeout(this.receivedEose.bind(this),this.eoseTimeout)}receivedEose(){this.eosed||(clearTimeout(this.eoseTimeoutHandle),this.eosed=!0,this.oneose?.())}close(t="closed by caller"){if(!this.closed&&this.relay.connected){try{this.relay.send('["CLOSE",'+JSON.stringify(this.id)+"]")}catch(e){if(!(e instanceof hs))throw e}this.closed=!0}this.relay.openSubs.delete(this.id),this.relay.ongoingOperations--,this.relay.ongoingOperations===0&&(this.relay.idleSince=Date.now()),this.onclose?.(t)}},Df=t=>(t[ft]=!0,!0),$f=class{constructor(t){v(this,"relays",new Map);v(this,"seenOn",new Map);v(this,"trackRelays",!1);v(this,"verifyEvent");v(this,"enablePing");v(this,"enableReconnect");v(this,"automaticallyAuth");v(this,"trustedRelayURLs",new Set);v(this,"onRelayConnectionFailure");v(this,"onRelayConnectionSuccess");v(this,"allowConnectingToRelay");v(this,"maxWaitForConnection");v(this,"_WebSocket");this.verifyEvent=t.verifyEvent,this._WebSocket=t.websocketImplementation,this.enablePing=t.enablePing,this.enableReconnect=t.enableReconnect||!1,this.automaticallyAuth=t.automaticallyAuth,this.onRelayConnectionFailure=t.onRelayConnectionFailure,this.onRelayConnectionSuccess=t.onRelayConnectionSuccess,this.allowConnectingToRelay=t.allowConnectingToRelay,this.maxWaitForConnection=t.maxWaitForConnection||3e3}async ensureRelay(t,e){t=en(t);let r=this.relays.get(t);if(r||(r=new gs(t,{verifyEvent:this.trustedRelayURLs.has(t)?Df:this.verifyEvent,websocketImplementation:this._WebSocket,enablePing:this.enablePing,enableReconnect:this.enableReconnect}),r.onclose=()=>{this.relays.delete(t)},this.relays.set(t,r)),this.automaticallyAuth){let n=this.automaticallyAuth(t);n&&(r.onauth=n)}try{await r.connect({timeout:e?.connectionTimeout,abort:e?.abort})}catch(n){throw this.relays.delete(t),n}return r}close(t){t.map(en).forEach(e=>{this.relays.get(e)?.close(),this.relays.delete(e)})}subscribe(t,e,r){let n=[],o=[];for(let i=0;i<t.length;i++){let s=en(t[i]);n.find(c=>c.url===s)||o.indexOf(s)===-1&&(o.push(s),n.push({url:s,filter:e}))}return this.subscribeMap(n,r)}subscribeMany(t,e,r){return this.subscribe(t,e,r)}subscribeMap(t,e){let r=new Map;for(let l of t){let{url:u,filter:y}=l;r.has(u)||r.set(u,[]),r.get(u).push(y)}let n=Array.from(r.entries()).map(([l,u])=>({url:l,filters:u}));this.trackRelays&&(e.receivedEvent=(l,u)=>{let y=this.seenOn.get(u);y||(y=new Set,this.seenOn.set(u,y)),y.add(l)});let o=new Set,i=[],s=[],c=l=>{s[l]||(s[l]=!0,s.filter(u=>u).length===n.length&&(e.oneose?.(),c=()=>{}))},a=[],f=(l,u)=>{a[l]||(c(l),a[l]=u,a.filter(y=>y).length===n.length&&(e.onclose?.(a),f=()=>{}))},d=l=>{if(e.alreadyHaveEvent?.(l))return!0;let u=o.has(l);return o.add(l),u},p=Promise.all(n.map(async({url:l,filters:u},y)=>{if(this.allowConnectingToRelay?.(l,["read",u])===!1){f(y,"connection skipped by allowConnectingToRelay");return}let x;try{x=await this.ensureRelay(l,{connectionTimeout:this.maxWaitForConnection<(e.maxWait||0)?Math.max(e.maxWait*.8,e.maxWait-1e3):this.maxWaitForConnection,abort:e.abort})}catch(C){this.onRelayConnectionFailure?.(l),f(y,C?.message||String(C));return}this.onRelayConnectionSuccess?.(l);let B=x.subscribe(u,{...e,oneose:()=>c(y),onclose:C=>{C.startsWith("auth-required: ")&&e.onauth?x.auth(e.onauth).then(()=>{x.subscribe(u,{...e,oneose:()=>c(y),onclose:H=>{f(y,H)},alreadyHaveEvent:d,eoseTimeout:e.maxWait,abort:e.abort})}).catch(H=>{f(y,`auth was required and attempted, but failed with: ${H}`)}):f(y,C)},alreadyHaveEvent:d,eoseTimeout:e.maxWait,abort:e.abort});i.push(B)}));return{async close(l){await p,i.forEach(u=>{u.close(l)})}}}subscribeEose(t,e,r){let n;return n=this.subscribe(t,e,{...r,oneose(){let o="closed automatically on eose";n?n.close(o):r.onclose?.(t.map(i=>o))}}),n}subscribeManyEose(t,e,r){return this.subscribeEose(t,e,r)}async querySync(t,e,r){return new Promise(async n=>{let o=[];this.subscribeEose(t,e,{...r,onevent(i){o.push(i)},onclose(i){n(o)}})})}async get(t,e,r){e.limit=1;let n=await this.querySync(t,e,r);return n.sort((o,i)=>i.created_at-o.created_at),n[0]||null}publish(t,e,r){return t.map(en).map(async(n,o,i)=>{if(i.indexOf(n)!==o)return Promise.reject("duplicate url");if(this.allowConnectingToRelay?.(n,["write",e])===!1)return Promise.reject("connection skipped by allowConnectingToRelay");let s;try{s=await this.ensureRelay(n,{connectionTimeout:this.maxWaitForConnection<(r?.maxWait||0)?Math.max(r.maxWait*.8,r.maxWait-1e3):this.maxWaitForConnection,abort:r?.abort})}catch(c){return this.onRelayConnectionFailure?.(n),"connection failure: "+String(c)}return s.publish(e).catch(async c=>{if(c instanceof Error&&c.message.startsWith("auth-required: ")&&r?.onauth)return await s.auth(r.onauth),s.publish(e);throw c}).then(c=>{if(this.trackRelays){let a=this.seenOn.get(e.id);a||(a=new Set,this.seenOn.set(e.id,a)),a.add(s)}return c})})}listConnectionStatus(){let t=new Map;return this.relays.forEach((e,r)=>t.set(r,e.connected)),t}destroy(){this.relays.forEach(t=>t.close()),this.relays=new Map}pruneIdleRelays(t=1e4){let e=[];for(let[r,n]of this.relays)n.idleSince&&Date.now()-n.idleSince>=t&&(this.relays.delete(r),e.push(r),n.close());return e}},ps;try{ps=WebSocket}catch{}var Vf=class extends $f{constructor(t){super({verifyEvent:cs,websocketImplementation:ps,maxWaitForConnection:3e3,...t})}},ys;try{ys=fetch}catch{}var Kf=/^bunker:\/\/([0-9a-f]{64})\??([?\/\w:.=&%-]*)$/;async function bs(t){let e=t.match(Kf);if(e)try{let r=e[1],n=new URLSearchParams(e[2]);return{pubkey:r,relays:n.getAll("relay"),secret:n.get("secret")}}catch{}return jf(t)}async function jf(t){let e=t.match(Lf);if(!e)return null;let[r,n="_",o]=e;try{let i=`https://${o}/.well-known/nostr.json?name=${n}`,s=await(await ys(i,{redirect:"error"})).json(),c=s.names[n],a=s.nip46[c]||[];return{pubkey:c,relays:a,secret:null}}catch{return null}}var Kn=class{constructor(t,e){v(this,"params");v(this,"pool");v(this,"subCloser");v(this,"isOpen");v(this,"serial");v(this,"idPrefix");v(this,"listeners");v(this,"waitingForAuth");v(this,"secretKey");v(this,"conversationKey");v(this,"bp");v(this,"cachedPubKey");this.params=e,this.pool=e.pool||new Vf,this.secretKey=t,this.isOpen=!1,this.idPrefix=Math.random().toString(36).substring(7),this.serial=0,this.listeners={},this.waitingForAuth={}}static fromBunker(t,e,r={}){if(e.relays.length===0)throw new Error("no relays specified for this bunker");let n=new Kn(t,r);return n.conversationKey=Qr(t,e.pubkey),n.bp=e,n.setupSubscription(),n}static async fromURI(t,e,r={},n=3e5){let o=new Kn(t,r),i=new URL(e),s=is(t);return new Promise((c,a)=>{let f=!1,d=o.pool.subscribe(i.searchParams.getAll("relay"),{kinds:[eo],"#p":[s],limit:0},{onevent:async p=>{try{let l=Qr(t,p.pubkey),u=ss(p.content,l);JSON.parse(u).result===i.searchParams.get("secret")&&(d.close(),o.bp={pubkey:p.pubkey,relays:i.searchParams.getAll("relay"),secret:i.searchParams.get("secret")},o.conversationKey=Qr(t,p.pubkey),o.setupSubscription(),f=!0,await Promise.race([new Promise(x=>setTimeout(x,1e3)),o.switchRelays()]),c(o))}catch(l){console.warn("failed to process potential connection event",l)}},onclose:()=>{f||a(new Error("subscription closed before connection was established."))},maxWait:typeof n=="number"?n:void 0,abort:typeof n!="number"?n:void 0})})}setupSubscription(){let t=this.listeners,e=this.waitingForAuth,r=this.conversationKey;this.subCloser=this.pool.subscribe(this.bp.relays,{kinds:[eo],authors:[this.bp.pubkey],"#p":[is(this.secretKey)],limit:0},{onevent:async n=>{let o=JSON.parse(ss(n.content,r)),{id:i,result:s,error:c}=o;if(s==="auth_url"&&e[i]){delete e[i],this.params.onauth?this.params.onauth(c):console.warn(`nostr-tools/nip46: remote signer ${this.bp.pubkey} tried to send an "auth_url"='${c}' but there was no onauth() callback configured.`);return}let a=t[i];a&&(c?a.reject(c):s&&a.resolve(s),delete t[i])},onclose:()=>{this.subCloser=void 0}}),this.isOpen=!0}async switchRelays(){try{let t=await this.sendRequest("switch_relays",[]),e=JSON.parse(t);if(!e||JSON.stringify(e.sort())===JSON.stringify(this.bp.relays))return!1;this.bp.relays=e;let r=this.subCloser;return setTimeout(()=>{r.close()},5e3),this.subCloser=void 0,this.setupSubscription(),!0}catch{return!1}}async close(){this.isOpen=!1,this.subCloser.close()}async sendRequest(t,e){return new Promise(async(r,n)=>{try{if(!this.isOpen)throw new Error("this signer is not open anymore, create a new one");this.subCloser||this.setupSubscription(),this.serial++;let o=`${this.idPrefix}-${this.serial}`,i=Tf(JSON.stringify({id:o,method:t,params:e}),this.conversationKey),s=kf({kind:eo,tags:[["p",this.bp.pubkey]],content:i,created_at:Math.floor(Date.now()/1e3)},this.secretKey);this.listeners[o]={resolve:r,reject:n},this.waitingForAuth[o]=!0,await Promise.any(this.pool.publish(this.bp.relays,s))}catch(o){n(o)}})}async ping(){let t=await this.sendRequest("ping",[]);if(t!=="pong")throw new Error(`result is not pong: ${t}`)}async connect(){await this.sendRequest("connect",[this.bp.pubkey,this.bp.secret||""])}async getPublicKey(){return this.cachedPubKey||(this.cachedPubKey=await this.sendRequest("get_public_key",[])),this.cachedPubKey}async signEvent(t){let e=await this.sendRequest("sign_event",[JSON.stringify(t)]),r=JSON.parse(e);if(cs(r))return r;throw new Error(`event returned from bunker is improperly signed: ${JSON.stringify(r)}`)}async nip04Encrypt(t,e){return await this.sendRequest("nip04_encrypt",[t,e])}async nip04Decrypt(t,e){return await this.sendRequest("nip04_decrypt",[t,e])}async nip44Encrypt(t,e){return await this.sendRequest("nip44_encrypt",[t,e])}async nip44Decrypt(t,e){return await this.sendRequest("nip44_decrypt",[t,e])}};function tn(){return typeof window<"u"&&!!window.nostr&&typeof window.nostr.signEvent=="function"}var no=class{constructor(e,r){this.pubkey=e;this.provider=r;this.method="nip07";this.capabilities={canSignEvents:!0,hasNip44:!!r.nip44},r.nip44&&(this.nip44={encrypt:(n,o)=>r.nip44.encrypt(n,o),decrypt:(n,o)=>r.nip44.decrypt(n,o)})}async signEvent(e){return this.provider.signEvent(e)}async close(){}};async function nn(){if(!tn())throw new Error("no-nip07-provider");let t=window.nostr,e=await t.getPublicKey();if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("invalid-pubkey-from-nip07");return new no(e.toLowerCase(),t)}var ro=class{constructor(e,r,n,o){this.pubkey=e;this.bunker=r;this.bunkerUri=n;this.clientSecretKey=o;this.method="bunker";this.capabilities={canSignEvents:!0,hasNip44:!0};this.nip44={encrypt:(i,s)=>r.nip44Encrypt(i,s),decrypt:(i,s)=>r.nip44Decrypt(i,s)}}async signEvent(e){let{pubkey:r,...n}=e,o={kind:n.kind,content:n.content,created_at:n.created_at??Math.floor(Date.now()/1e3),tags:n.tags??[]};return await this.bunker.signEvent(o)}async close(){await this.bunker.close()}};async function rn(t){let e=t.uri.trim();if(!e)throw new Error("empty-bunker-uri");let r=await bs(e);if(!r)throw new Error("invalid-bunker-uri");let n=t.clientSecretKey??zf();if(n.length!==32)throw new Error("invalid-client-secret-key");let o=Kn.fromBunker(n,r,{onauth:t.onauth});await o.connect();let i=await o.getPublicKey();if(!/^[0-9a-f]{64}$/i.test(i))throw await o.close().catch(()=>{}),new Error("invalid-pubkey-from-bunker");return new ro(i.toLowerCase(),o,e,n)}function zf(){let t=new Uint8Array(32);return crypto.getRandomValues(t),t}var Ae=class{constructor(e,r){this.pubkey=e;this.authEvent=r;this.method="redirect";this.capabilities={canSignEvents:!1,hasNip44:!1}}async signEvent(e){throw new Error("signer-auth-only: this session was established via redirect and cannot sign new events. Install a NIP-07 extension (bark, Alby) or paste a bunker URI to upgrade.")}async close(){}};var lt=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function ut(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function on(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function ve(t,...e){if(!ut(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function zn(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");on(t.outputLen),on(t.blockLen)}function Tt(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function ws(t,e){ve(t);let r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function dt(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Zn(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function Be(t,e){return t<<32-e|t>>>e}var xs=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Zf=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function le(t){if(ve(t),xs)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=Zf[t[r]];return e}var Ue={_0:48,_9:57,A:65,F:70,a:97,f:102};function ms(t){if(t>=Ue._0&&t<=Ue._9)return t-Ue._0;if(t>=Ue.A&&t<=Ue.F)return t-(Ue.A-10);if(t>=Ue.a&&t<=Ue.f)return t-(Ue.a-10)}function ht(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(xs)return Uint8Array.fromHex(t);let e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(r);for(let o=0,i=0;o<r;o++,i+=2){let s=ms(t.charCodeAt(i)),c=ms(t.charCodeAt(i+1));if(s===void 0||c===void 0){let a=t[i]+t[i+1];throw new Error('hex string expected, got non-hex character "'+a+'" at index '+i)}n[o]=s*16+c}return n}function Gn(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function sn(t){return typeof t=="string"&&(t=Gn(t)),ve(t),t}function he(...t){let e=0;for(let n=0;n<t.length;n++){let o=t[n];ve(o),e+=o.length}let r=new Uint8Array(e);for(let n=0,o=0;n<t.length;n++){let i=t[n];r.set(i,o),o+=i.length}return r}var It=class{};function Es(t){let e=n=>t().update(sn(n)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}function gt(t=32){if(lt&&typeof lt.getRandomValues=="function")return lt.getRandomValues(new Uint8Array(t));if(lt&&typeof lt.randomBytes=="function")return Uint8Array.from(lt.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function Gf(t,e,r,n){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,r,n);let o=BigInt(32),i=BigInt(4294967295),s=Number(r>>o&i),c=Number(r&i),a=n?4:0,f=n?0:4;t.setUint32(e+a,s,n),t.setUint32(e+f,c,n)}function vs(t,e,r){return t&e^~t&r}function Bs(t,e,r){return t&e^t&r^e&r}var Yn=class extends It{constructor(e,r,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Zn(this.buffer)}update(e){Tt(this),e=sn(e),ve(e);let{view:r,buffer:n,blockLen:o}=this,i=e.length;for(let s=0;s<i;){let c=Math.min(o-this.pos,i-s);if(c===o){let a=Zn(e);for(;o<=i-s;s+=o)this.process(a,s);continue}n.set(e.subarray(s,s+c),this.pos),this.pos+=c,s+=c,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Tt(this),ws(e,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;r[s++]=128,dt(this.buffer.subarray(s)),this.padOffset>o-s&&(this.process(n,0),s=0);for(let p=s;p<o;p++)r[p]=0;Gf(n,o-8,BigInt(this.length*8),i),this.process(n,0);let c=Zn(e),a=this.outputLen;if(a%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let f=a/4,d=this.get();if(f>d.length)throw new Error("_sha2: outputLen bigger than state");for(let p=0;p<f;p++)c.setUint32(4*p,d[p],i)}digest(){let{buffer:e,outputLen:r}=this;this.digestInto(e);let n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:i,destroyed:s,pos:c}=this;return e.destroyed=s,e.finished=i,e.length=o,e.pos=c,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Oe=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var Yf=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ze=new Uint32Array(64),Wn=class extends Yn{constructor(e=32){super(64,e,8,!1),this.A=Oe[0]|0,this.B=Oe[1]|0,this.C=Oe[2]|0,this.D=Oe[3]|0,this.E=Oe[4]|0,this.F=Oe[5]|0,this.G=Oe[6]|0,this.H=Oe[7]|0}get(){let{A:e,B:r,C:n,D:o,E:i,F:s,G:c,H:a}=this;return[e,r,n,o,i,s,c,a]}set(e,r,n,o,i,s,c,a){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=c|0,this.H=a|0}process(e,r){for(let p=0;p<16;p++,r+=4)Ze[p]=e.getUint32(r,!1);for(let p=16;p<64;p++){let l=Ze[p-15],u=Ze[p-2],y=Be(l,7)^Be(l,18)^l>>>3,x=Be(u,17)^Be(u,19)^u>>>10;Ze[p]=x+Ze[p-7]+y+Ze[p-16]|0}let{A:n,B:o,C:i,D:s,E:c,F:a,G:f,H:d}=this;for(let p=0;p<64;p++){let l=Be(c,6)^Be(c,11)^Be(c,25),u=d+l+vs(c,a,f)+Yf[p]+Ze[p]|0,x=(Be(n,2)^Be(n,13)^Be(n,22))+Bs(n,o,i)|0;d=f,f=a,a=c,c=s+u|0,s=i,i=o,o=n,n=u+x|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,c=c+this.E|0,a=a+this.F|0,f=f+this.G|0,d=d+this.H|0,this.set(n,o,i,s,c,a,f,d)}roundClean(){dt(Ze)}destroy(){this.set(0,0,0,0,0,0,0,0),dt(this.buffer)}};var Lt=Es(()=>new Wn);var Jn=class extends It{constructor(e,r){super(),this.finished=!1,this.destroyed=!1,zn(e);let n=sn(r);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,i=new Uint8Array(o);i.set(n.length>o?e.create().update(n).digest():n);for(let s=0;s<i.length;s++)i[s]^=54;this.iHash.update(i),this.oHash=e.create();for(let s=0;s<i.length;s++)i[s]^=106;this.oHash.update(i),dt(i)}update(e){return Tt(this),this.iHash.update(e),this}digestInto(e){Tt(this),ve(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:r,iHash:n,finished:o,destroyed:i,blockLen:s,outputLen:c}=this;return e=e,e.finished=o,e.destroyed=i,e.blockLen=s,e.outputLen=c,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},oo=(t,e,r)=>new Jn(t,e).update(r).digest();oo.create=(t,e)=>new Jn(t,e);var co=BigInt(0),so=BigInt(1);function cn(t,e=""){if(typeof t!="boolean"){let r=e&&`"${e}"`;throw new Error(r+"expected boolean, got type="+typeof t)}return t}function Ge(t,e,r=""){let n=ut(t),o=t?.length,i=e!==void 0;if(!n||i&&o!==e){let s=r&&`"${r}" `,c=i?` of length ${e}`:"",a=n?`length=${o}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+c+", got "+a)}return t}function an(t){let e=t.toString(16);return e.length&1?"0"+e:e}function Ss(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?co:BigInt("0x"+t)}function He(t){return Ss(le(t))}function ao(t){return ve(t),Ss(le(Uint8Array.from(t).reverse()))}function Nt(t,e){return ht(t.toString(16).padStart(e*2,"0"))}function fo(t,e){return Nt(t,e).reverse()}function ee(t,e,r){let n;if(typeof e=="string")try{n=ht(e)}catch(i){throw new Error(t+" must be hex string or Uint8Array, cause: "+i)}else if(ut(e))n=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");let o=n.length;if(typeof r=="number"&&o!==r)throw new Error(t+" of length "+r+" expected, got "+o);return n}var io=t=>typeof t=="bigint"&&co<=t;function fn(t,e,r){return io(t)&&io(e)&&io(r)&&e<=t&&t<r}function ks(t,e,r,n){if(!fn(e,r,n))throw new Error("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function Xn(t){let e;for(e=0;t>co;t>>=so,e+=1);return e}var Ye=t=>(so<<BigInt(t))-so;function As(t,e,r){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof r!="function")throw new Error("hmacFn must be a function");let n=u=>new Uint8Array(u),o=u=>Uint8Array.of(u),i=n(t),s=n(t),c=0,a=()=>{i.fill(1),s.fill(0),c=0},f=(...u)=>r(s,i,...u),d=(u=n(0))=>{s=f(o(0),u),i=f(),u.length!==0&&(s=f(o(1),u),i=f())},p=()=>{if(c++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,y=[];for(;u<e;){i=f();let x=i.slice();y.push(x),u+=i.length}return he(...y)};return(u,y)=>{a(),d(u);let x;for(;!(x=y(p()));)d();return a(),x}}function ln(t,e,r={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function n(o,i,s){let c=t[o];if(s&&c===void 0)return;let a=typeof c;if(a!==i||c===null)throw new Error(`param "${o}" is invalid: expected ${i}, got ${a}`)}Object.entries(e).forEach(([o,i])=>n(o,i,!1)),Object.entries(r).forEach(([o,i])=>n(o,i,!0))}function lo(t){let e=new WeakMap;return(r,...n)=>{let o=e.get(r);if(o!==void 0)return o;let i=t(r,...n);return e.set(r,i),i}}var ue=BigInt(0),ae=BigInt(1),pt=BigInt(2),Is=BigInt(3),Ts=BigInt(4),Ls=BigInt(5),Wf=BigInt(7),Ns=BigInt(8),Jf=BigInt(9),_s=BigInt(16);function pe(t,e){let r=t%e;return r>=ue?r:e+r}function ye(t,e,r){let n=t;for(;e-- >ue;)n*=n,n%=r;return n}function Rs(t,e){if(t===ue)throw new Error("invert: expected non-zero number");if(e<=ue)throw new Error("invert: expected positive modulus, got "+e);let r=pe(t,e),n=e,o=ue,i=ae,s=ae,c=ue;for(;r!==ue;){let f=n/r,d=n%r,p=o-s*f,l=i-c*f;n=r,r=d,o=s,i=c,s=p,c=l}if(n!==ae)throw new Error("invert: does not exist");return pe(o,e)}function uo(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}function Us(t,e){let r=(t.ORDER+ae)/Ts,n=t.pow(e,r);return uo(t,n,e),n}function Xf(t,e){let r=(t.ORDER-Ls)/Ns,n=t.mul(e,pt),o=t.pow(n,r),i=t.mul(e,o),s=t.mul(t.mul(i,pt),o),c=t.mul(i,t.sub(s,t.ONE));return uo(t,c,e),c}function Ff(t){let e=We(t),r=Os(t),n=r(e,e.neg(e.ONE)),o=r(e,n),i=r(e,e.neg(n)),s=(t+Wf)/_s;return(c,a)=>{let f=c.pow(a,s),d=c.mul(f,n),p=c.mul(f,o),l=c.mul(f,i),u=c.eql(c.sqr(d),a),y=c.eql(c.sqr(p),a);f=c.cmov(f,d,u),d=c.cmov(l,p,y);let x=c.eql(c.sqr(d),a),B=c.cmov(f,d,x);return uo(c,B,a),B}}function Os(t){if(t<Is)throw new Error("sqrt is not defined for small field");let e=t-ae,r=0;for(;e%pt===ue;)e/=pt,r++;let n=pt,o=We(t);for(;Cs(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return Us;let i=o.pow(n,e),s=(e+ae)/pt;return function(a,f){if(a.is0(f))return f;if(Cs(a,f)!==1)throw new Error("Cannot find square root");let d=r,p=a.mul(a.ONE,i),l=a.pow(f,e),u=a.pow(f,s);for(;!a.eql(l,a.ONE);){if(a.is0(l))return a.ZERO;let y=1,x=a.sqr(l);for(;!a.eql(x,a.ONE);)if(y++,x=a.sqr(x),y===d)throw new Error("Cannot find square root");let B=ae<<BigInt(d-y-1),C=a.pow(p,B);d=y,p=a.sqr(C),l=a.mul(l,p),u=a.mul(u,C)}return u}}function Qf(t){return t%Ts===Is?Us:t%Ns===Ls?Xf:t%_s===Jf?Ff(t):Os(t)}var el=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function ho(t){let e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},r=el.reduce((n,o)=>(n[o]="function",n),e);return ln(t,r),t}function tl(t,e,r){if(r<ue)throw new Error("invalid exponent, negatives unsupported");if(r===ue)return t.ONE;if(r===ae)return e;let n=t.ONE,o=e;for(;r>ue;)r&ae&&(n=t.mul(n,o)),o=t.sqr(o),r>>=ae;return n}function Fn(t,e,r=!1){let n=new Array(e.length).fill(r?t.ZERO:void 0),o=e.reduce((s,c,a)=>t.is0(c)?s:(n[a]=s,t.mul(s,c)),t.ONE),i=t.inv(o);return e.reduceRight((s,c,a)=>t.is0(c)?s:(n[a]=t.mul(s,n[a]),t.mul(s,c)),i),n}function Cs(t,e){let r=(t.ORDER-ae)/pt,n=t.pow(e,r),o=t.eql(n,t.ONE),i=t.eql(n,t.ZERO),s=t.eql(n,t.neg(t.ONE));if(!o&&!i&&!s)throw new Error("invalid Legendre symbol result");return o?1:i?0:-1}function Qn(t,e){e!==void 0&&on(e);let r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}function We(t,e,r=!1,n={}){if(t<=ue)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,i,s=!1,c;if(typeof e=="object"&&e!=null){if(n.sqrt||r)throw new Error("cannot specify opts in two arguments");let l=e;l.BITS&&(o=l.BITS),l.sqrt&&(i=l.sqrt),typeof l.isLE=="boolean"&&(r=l.isLE),typeof l.modFromBytes=="boolean"&&(s=l.modFromBytes),c=l.allowedLengths}else typeof e=="number"&&(o=e),n.sqrt&&(i=n.sqrt);let{nBitLength:a,nByteLength:f}=Qn(t,o);if(f>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d,p=Object.freeze({ORDER:t,isLE:r,BITS:a,BYTES:f,MASK:Ye(a),ZERO:ue,ONE:ae,allowedLengths:c,create:l=>pe(l,t),isValid:l=>{if(typeof l!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof l);return ue<=l&&l<t},is0:l=>l===ue,isValidNot0:l=>!p.is0(l)&&p.isValid(l),isOdd:l=>(l&ae)===ae,neg:l=>pe(-l,t),eql:(l,u)=>l===u,sqr:l=>pe(l*l,t),add:(l,u)=>pe(l+u,t),sub:(l,u)=>pe(l-u,t),mul:(l,u)=>pe(l*u,t),pow:(l,u)=>tl(p,l,u),div:(l,u)=>pe(l*Rs(u,t),t),sqrN:l=>l*l,addN:(l,u)=>l+u,subN:(l,u)=>l-u,mulN:(l,u)=>l*u,inv:l=>Rs(l,t),sqrt:i||(l=>(d||(d=Qf(t)),d(p,l))),toBytes:l=>r?fo(l,f):Nt(l,f),fromBytes:(l,u=!0)=>{if(c){if(!c.includes(l.length)||l.length>f)throw new Error("Field.fromBytes: expected "+c+" bytes, got "+l.length);let x=new Uint8Array(f);x.set(l,r?0:x.length-l.length),l=x}if(l.length!==f)throw new Error("Field.fromBytes: expected "+f+" bytes, got "+l.length);let y=r?ao(l):He(l);if(s&&(y=pe(y,t)),!u&&!p.isValid(y))throw new Error("invalid field element: outside of range 0..ORDER");return y},invertBatch:l=>Fn(p,l),cmov:(l,u,y)=>y?u:l});return Object.freeze(p)}function Hs(t){if(typeof t!="bigint")throw new Error("field order must be bigint");let e=t.toString(2).length;return Math.ceil(e/8)}function go(t){let e=Hs(t);return e+Math.ceil(e/2)}function er(t,e,r=!1){let n=t.length,o=Hs(e),i=go(e);if(n<16||n<i||n>1024)throw new Error("expected "+i+"-1024 bytes of input, got "+n);let s=r?ao(t):He(t),c=pe(s,e-ae)+ae;return r?fo(c,o):Nt(c,o)}var _t=BigInt(0),yt=BigInt(1);function un(t,e){let r=e.negate();return t?r:e}function nr(t,e){let r=Fn(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function Ds(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function po(t,e){Ds(t,e);let r=Math.ceil(e/t)+1,n=2**(t-1),o=2**t,i=Ye(t),s=BigInt(t);return{windows:r,windowSize:n,mask:i,maxNumber:o,shiftBy:s}}function Ps(t,e,r){let{windowSize:n,mask:o,maxNumber:i,shiftBy:s}=r,c=Number(t&o),a=t>>s;c>n&&(c-=i,a+=yt);let f=e*n,d=f+Math.abs(c)-1,p=c===0,l=c<0,u=e%2!==0;return{nextN:a,offset:d,isZero:p,isNeg:l,isNegF:u,offsetF:f}}function nl(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function rl(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,n)=>{if(!e.isValid(r))throw new Error("invalid scalar at index "+n)})}var yo=new WeakMap,$s=new WeakMap;function bo(t){return $s.get(t)||1}function qs(t){if(t!==_t)throw new Error("invalid wNAF")}var tr=class{constructor(e,r){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=r}_unsafeLadder(e,r,n=this.ZERO){let o=e;for(;r>_t;)r&yt&&(n=n.add(o)),o=o.double(),r>>=yt;return n}precomputeWindow(e,r){let{windows:n,windowSize:o}=po(r,this.bits),i=[],s=e,c=s;for(let a=0;a<n;a++){c=s,i.push(c);for(let f=1;f<o;f++)c=c.add(s),i.push(c);s=c.double()}return i}wNAF(e,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,i=this.BASE,s=po(e,this.bits);for(let c=0;c<s.windows;c++){let{nextN:a,offset:f,isZero:d,isNeg:p,isNegF:l,offsetF:u}=Ps(n,c,s);n=a,d?i=i.add(un(l,r[u])):o=o.add(un(p,r[f]))}return qs(n),{p:o,f:i}}wNAFUnsafe(e,r,n,o=this.ZERO){let i=po(e,this.bits);for(let s=0;s<i.windows&&n!==_t;s++){let{nextN:c,offset:a,isZero:f,isNeg:d}=Ps(n,s,i);if(n=c,!f){let p=r[a];o=o.add(d?p.negate():p)}}return qs(n),o}getPrecomputes(e,r,n){let o=yo.get(r);return o||(o=this.precomputeWindow(r,e),e!==1&&(typeof n=="function"&&(o=n(o)),yo.set(r,o))),o}cached(e,r,n){let o=bo(e);return this.wNAF(o,this.getPrecomputes(o,e,n),r)}unsafe(e,r,n,o){let i=bo(e);return i===1?this._unsafeLadder(e,r,o):this.wNAFUnsafe(i,this.getPrecomputes(i,e,n),r,o)}createCache(e,r){Ds(r,this.bits),$s.set(e,r),yo.delete(e)}hasCache(e){return bo(e)!==1}};function Vs(t,e,r,n){let o=e,i=t.ZERO,s=t.ZERO;for(;r>_t||n>_t;)r&yt&&(i=i.add(o)),n&yt&&(s=s.add(o)),o=o.double(),r>>=yt,n>>=yt;return{p1:i,p2:s}}function Ks(t,e,r,n){nl(r,t),rl(n,e);let o=r.length,i=n.length;if(o!==i)throw new Error("arrays of points and scalars must have equal length");let s=t.ZERO,c=Xn(BigInt(o)),a=1;c>12?a=c-3:c>4?a=c-2:c>0&&(a=2);let f=Ye(a),d=new Array(Number(f)+1).fill(s),p=Math.floor((e.BITS-1)/a)*a,l=s;for(let u=p;u>=0;u-=a){d.fill(s);for(let x=0;x<i;x++){let B=n[x],C=Number(B>>BigInt(u)&f);d[C]=d[C].add(r[x])}let y=s;for(let x=d.length-1,B=s;x>0;x--)B=B.add(d[x]),y=y.add(B);if(l=l.add(y),u!==0)for(let x=0;x<a;x++)l=l.double()}return l}function Ms(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return ho(e),e}else return We(t,{isLE:r})}function js(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(let a of["p","n","h"]){let f=e[a];if(!(typeof f=="bigint"&&f>_t))throw new Error(`CURVE.${a} must be positive bigint`)}let o=Ms(e.p,r.Fp,n),i=Ms(e.n,r.Fn,n),c=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(let a of c)if(!o.isValid(e[a]))throw new Error(`CURVE.${a} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:i}}var zs=(t,e)=>(t+(t>=0?e:-e)/Zs)/e;function ol(t,e,r){let[[n,o],[i,s]]=e,c=zs(s*t,r),a=zs(-o*t,r),f=t-c*n-a*i,d=-c*o-a*s,p=f<qe,l=d<qe;p&&(f=-f),l&&(d=-d);let u=Ye(Math.ceil(Xn(r)/2))+Ut;if(f<qe||f>=u||d<qe||d>=u)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:p,k1:f,k2neg:l,k2:d}}function wo(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function mo(t,e){let r={};for(let n of Object.keys(e))r[n]=t[n]===void 0?e[n]:t[n];return cn(r.lowS,"lowS"),cn(r.prehash,"prehash"),r.format!==void 0&&wo(r.format),r}var xo=class extends Error{constructor(e=""){super(e)}},Pe={Err:xo,_tlv:{encode:(t,e)=>{let{Err:r}=Pe;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length&1)throw new r("tlv.encode: unpadded data");let n=e.length/2,o=an(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");let i=n>127?an(o.length/2|128):"";return an(t)+i+o+e},decode(t,e){let{Err:r}=Pe,n=0;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length<2||e[n++]!==t)throw new r("tlv.decode: wrong tlv");let o=e[n++],i=!!(o&128),s=0;if(!i)s=o;else{let a=o&127;if(!a)throw new r("tlv.decode(long): indefinite length not supported");if(a>4)throw new r("tlv.decode(long): byte length is too big");let f=e.subarray(n,n+a);if(f.length!==a)throw new r("tlv.decode: length bytes not complete");if(f[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(let d of f)s=s<<8|d;if(n+=a,s<128)throw new r("tlv.decode(long): not minimal encoding")}let c=e.subarray(n,n+s);if(c.length!==s)throw new r("tlv.decode: wrong value length");return{v:c,l:e.subarray(n+s)}}},_int:{encode(t){let{Err:e}=Pe;if(t<qe)throw new e("integer: negative integers are not allowed");let r=an(t);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return r},decode(t){let{Err:e}=Pe;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return He(t)}},toSig(t){let{Err:e,_int:r,_tlv:n}=Pe,o=ee("signature",t),{v:i,l:s}=n.decode(48,o);if(s.length)throw new e("invalid signature: left bytes after parsing");let{v:c,l:a}=n.decode(2,i),{v:f,l:d}=n.decode(2,a);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:r.decode(c),s:r.decode(f)}},hexFromSig(t){let{_tlv:e,_int:r}=Pe,n=e.encode(2,r.encode(t.r)),o=e.encode(2,r.encode(t.s)),i=n+o;return e.encode(48,i)}},qe=BigInt(0),Ut=BigInt(1),Zs=BigInt(2),rr=BigInt(3),il=BigInt(4);function Je(t,e){let{BYTES:r}=t,n;if(typeof e=="bigint")n=e;else{let o=ee("private key",e);try{n=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${r}, got ${typeof e}`)}}if(!t.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function sl(t,e={}){let r=js("weierstrass",t,e),{Fp:n,Fn:o}=r,i=r.CURVE,{h:s,n:c}=i;ln(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:a}=e;if(a&&(!n.is0(i.a)||typeof a.beta!="bigint"||!Array.isArray(a.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let f=Ys(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function p(I,w,h){let{x:g,y:b}=w.toAffine(),E=n.toBytes(g);if(cn(h,"isCompressed"),h){d();let k=!n.isOdd(b);return he(Gs(k),E)}else return he(Uint8Array.of(4),E,n.toBytes(b))}function l(I){Ge(I,void 0,"Point");let{publicKey:w,publicKeyUncompressed:h}=f,g=I.length,b=I[0],E=I.subarray(1);if(g===w&&(b===2||b===3)){let k=n.fromBytes(E);if(!n.isValid(k))throw new Error("bad point: is not on curve, wrong x");let m=x(k),A;try{A=n.sqrt(m)}catch(_){let M=_ instanceof Error?": "+_.message:"";throw new Error("bad point: is not on curve, sqrt error"+M)}d();let S=n.isOdd(A);return(b&1)===1!==S&&(A=n.neg(A)),{x:k,y:A}}else if(g===h&&b===4){let k=n.BYTES,m=n.fromBytes(E.subarray(0,k)),A=n.fromBytes(E.subarray(k,k*2));if(!B(m,A))throw new Error("bad point: is not on curve");return{x:m,y:A}}else throw new Error(`bad point: got length ${g}, expected compressed=${w} or uncompressed=${h}`)}let u=e.toBytes||p,y=e.fromBytes||l;function x(I){let w=n.sqr(I),h=n.mul(w,I);return n.add(n.add(h,n.mul(I,i.a)),i.b)}function B(I,w){let h=n.sqr(w),g=x(I);return n.eql(h,g)}if(!B(i.Gx,i.Gy))throw new Error("bad curve params: generator point");let C=n.mul(n.pow(i.a,rr),il),H=n.mul(n.sqr(i.b),BigInt(27));if(n.is0(n.add(C,H)))throw new Error("bad curve params: a or b");function P(I,w,h=!1){if(!n.isValid(w)||h&&n.is0(w))throw new Error(`bad point coordinate ${I}`);return w}function q(I){if(!(I instanceof T))throw new Error("ProjectivePoint expected")}function N(I){if(!a||!a.basises)throw new Error("no endo");return ol(I,a.basises,o.ORDER)}let D=lo((I,w)=>{let{X:h,Y:g,Z:b}=I;if(n.eql(b,n.ONE))return{x:h,y:g};let E=I.is0();w==null&&(w=E?n.ONE:n.inv(b));let k=n.mul(h,w),m=n.mul(g,w),A=n.mul(b,w);if(E)return{x:n.ZERO,y:n.ZERO};if(!n.eql(A,n.ONE))throw new Error("invZ was invalid");return{x:k,y:m}}),z=lo(I=>{if(I.is0()){if(e.allowInfinityPoint&&!n.is0(I.Y))return;throw new Error("bad point: ZERO")}let{x:w,y:h}=I.toAffine();if(!n.isValid(w)||!n.isValid(h))throw new Error("bad point: x or y not field elements");if(!B(w,h))throw new Error("bad point: equation left != right");if(!I.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function Z(I,w,h,g,b){return h=new T(n.mul(h.X,I),h.Y,h.Z),w=un(g,w),h=un(b,h),w.add(h)}class T{constructor(w,h,g){this.X=P("x",w),this.Y=P("y",h,!0),this.Z=P("z",g),Object.freeze(this)}static CURVE(){return i}static fromAffine(w){let{x:h,y:g}=w||{};if(!w||!n.isValid(h)||!n.isValid(g))throw new Error("invalid affine point");if(w instanceof T)throw new Error("projective point not allowed");return n.is0(h)&&n.is0(g)?T.ZERO:new T(h,g,n.ONE)}static fromBytes(w){let h=T.fromAffine(y(Ge(w,void 0,"point")));return h.assertValidity(),h}static fromHex(w){return T.fromBytes(ee("pointHex",w))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,h=!0){return $.createCache(this,w),h||this.multiply(rr),this}assertValidity(){z(this)}hasEvenY(){let{y:w}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(w)}equals(w){q(w);let{X:h,Y:g,Z:b}=this,{X:E,Y:k,Z:m}=w,A=n.eql(n.mul(h,m),n.mul(E,b)),S=n.eql(n.mul(g,m),n.mul(k,b));return A&&S}negate(){return new T(this.X,n.neg(this.Y),this.Z)}double(){let{a:w,b:h}=i,g=n.mul(h,rr),{X:b,Y:E,Z:k}=this,m=n.ZERO,A=n.ZERO,S=n.ZERO,R=n.mul(b,b),_=n.mul(E,E),M=n.mul(k,k),O=n.mul(b,E);return O=n.add(O,O),S=n.mul(b,k),S=n.add(S,S),m=n.mul(w,S),A=n.mul(g,M),A=n.add(m,A),m=n.sub(_,A),A=n.add(_,A),A=n.mul(m,A),m=n.mul(O,m),S=n.mul(g,S),M=n.mul(w,M),O=n.sub(R,M),O=n.mul(w,O),O=n.add(O,S),S=n.add(R,R),R=n.add(S,R),R=n.add(R,M),R=n.mul(R,O),A=n.add(A,R),M=n.mul(E,k),M=n.add(M,M),R=n.mul(M,O),m=n.sub(m,R),S=n.mul(M,_),S=n.add(S,S),S=n.add(S,S),new T(m,A,S)}add(w){q(w);let{X:h,Y:g,Z:b}=this,{X:E,Y:k,Z:m}=w,A=n.ZERO,S=n.ZERO,R=n.ZERO,_=i.a,M=n.mul(i.b,rr),O=n.mul(h,E),L=n.mul(g,k),V=n.mul(b,m),Y=n.add(h,g),K=n.add(E,k);Y=n.mul(Y,K),K=n.add(O,L),Y=n.sub(Y,K),K=n.add(h,b);let G=n.add(E,m);return K=n.mul(K,G),G=n.add(O,V),K=n.sub(K,G),G=n.add(g,b),A=n.add(k,m),G=n.mul(G,A),A=n.add(L,V),G=n.sub(G,A),R=n.mul(_,K),A=n.mul(M,V),R=n.add(A,R),A=n.sub(L,R),R=n.add(L,R),S=n.mul(A,R),L=n.add(O,O),L=n.add(L,O),V=n.mul(_,V),K=n.mul(M,K),L=n.add(L,V),V=n.sub(O,V),V=n.mul(_,V),K=n.add(K,V),O=n.mul(L,K),S=n.add(S,O),O=n.mul(G,K),A=n.mul(Y,A),A=n.sub(A,O),O=n.mul(Y,L),R=n.mul(G,R),R=n.add(R,O),new T(A,S,R)}subtract(w){return this.add(w.negate())}is0(){return this.equals(T.ZERO)}multiply(w){let{endo:h}=e;if(!o.isValidNot0(w))throw new Error("invalid scalar: out of range");let g,b,E=k=>$.cached(this,k,m=>nr(T,m));if(h){let{k1neg:k,k1:m,k2neg:A,k2:S}=N(w),{p:R,f:_}=E(m),{p:M,f:O}=E(S);b=_.add(O),g=Z(h.beta,R,M,k,A)}else{let{p:k,f:m}=E(w);g=k,b=m}return nr(T,[g,b])[0]}multiplyUnsafe(w){let{endo:h}=e,g=this;if(!o.isValid(w))throw new Error("invalid scalar: out of range");if(w===qe||g.is0())return T.ZERO;if(w===Ut)return g;if($.hasCache(this))return this.multiply(w);if(h){let{k1neg:b,k1:E,k2neg:k,k2:m}=N(w),{p1:A,p2:S}=Vs(T,g,E,m);return Z(h.beta,A,S,b,k)}else return $.unsafe(g,w)}multiplyAndAddUnsafe(w,h,g){let b=this.multiplyUnsafe(h).add(w.multiplyUnsafe(g));return b.is0()?void 0:b}toAffine(w){return D(this,w)}isTorsionFree(){let{isTorsionFree:w}=e;return s===Ut?!0:w?w(T,this):$.unsafe(this,c).is0()}clearCofactor(){let{clearCofactor:w}=e;return s===Ut?this:w?w(T,this):this.multiplyUnsafe(s)}isSmallOrder(){return this.multiplyUnsafe(s).is0()}toBytes(w=!0){return cn(w,"isCompressed"),this.assertValidity(),u(T,this,w)}toHex(w=!0){return le(this.toBytes(w))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(w=!0){return this.toBytes(w)}_setWindowSize(w){this.precompute(w)}static normalizeZ(w){return nr(T,w)}static msm(w,h){return Ks(T,o,w,h)}static fromPrivateKey(w){return T.BASE.multiply(Je(o,w))}}T.BASE=new T(i.Gx,i.Gy,n.ONE),T.ZERO=new T(n.ZERO,n.ONE,n.ZERO),T.Fp=n,T.Fn=o;let j=o.BITS,$=new tr(T,e.endo?Math.ceil(j/2):j);return T.BASE.precompute(8),T}function Gs(t){return Uint8Array.of(t?2:3)}function Ys(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function cl(t,e={}){let{Fn:r}=t,n=e.randomBytes||gt,o=Object.assign(Ys(t.Fp,r),{seed:go(r.ORDER)});function i(u){try{return!!Je(r,u)}catch{return!1}}function s(u,y){let{publicKey:x,publicKeyUncompressed:B}=o;try{let C=u.length;return y===!0&&C!==x||y===!1&&C!==B?!1:!!t.fromBytes(u)}catch{return!1}}function c(u=n(o.seed)){return er(Ge(u,o.seed,"seed"),r.ORDER)}function a(u,y=!0){return t.BASE.multiply(Je(r,u)).toBytes(y)}function f(u){let y=c(u);return{secretKey:y,publicKey:a(y)}}function d(u){if(typeof u=="bigint")return!1;if(u instanceof t)return!0;let{secretKey:y,publicKey:x,publicKeyUncompressed:B}=o;if(r.allowedLengths||y===x)return;let C=ee("key",u).length;return C===x||C===B}function p(u,y,x=!0){if(d(u)===!0)throw new Error("first arg must be private key");if(d(y)===!1)throw new Error("second arg must be public key");let B=Je(r,u);return t.fromHex(y).multiply(B).toBytes(x)}return Object.freeze({getPublicKey:a,getSharedSecret:p,keygen:f,Point:t,utils:{isValidSecretKey:i,isValidPublicKey:s,randomSecretKey:c,isValidPrivateKey:i,randomPrivateKey:c,normPrivateKeyToScalar:u=>Je(r,u),precompute(u=8,y=t.BASE){return y.precompute(u,!1)}},lengths:o})}function al(t,e,r={}){zn(e),ln(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let n=r.randomBytes||gt,o=r.hmac||((h,...g)=>oo(e,h,he(...g))),{Fp:i,Fn:s}=t,{ORDER:c,BITS:a}=s,{keygen:f,getPublicKey:d,getSharedSecret:p,utils:l,lengths:u}=cl(t,r),y={prehash:!1,lowS:typeof r.lowS=="boolean"?r.lowS:!1,format:void 0,extraEntropy:!1},x="compact";function B(h){let g=c>>Ut;return h>g}function C(h,g){if(!s.isValidNot0(g))throw new Error(`invalid signature ${h}: out of range 1..Point.Fn.ORDER`);return g}function H(h,g){wo(g);let b=u.signature,E=g==="compact"?b:g==="recovered"?b+1:void 0;return Ge(h,E,`${g} signature`)}class P{constructor(g,b,E){this.r=C("r",g),this.s=C("s",b),E!=null&&(this.recovery=E),Object.freeze(this)}static fromBytes(g,b=x){H(g,b);let E;if(b==="der"){let{r:S,s:R}=Pe.toSig(Ge(g));return new P(S,R)}b==="recovered"&&(E=g[0],b="compact",g=g.subarray(1));let k=s.BYTES,m=g.subarray(0,k),A=g.subarray(k,k*2);return new P(s.fromBytes(m),s.fromBytes(A),E)}static fromHex(g,b){return this.fromBytes(ht(g),b)}addRecoveryBit(g){return new P(this.r,this.s,g)}recoverPublicKey(g){let b=i.ORDER,{r:E,s:k,recovery:m}=this;if(m==null||![0,1,2,3].includes(m))throw new Error("recovery id invalid");if(c*Zs<b&&m>1)throw new Error("recovery id is ambiguous for h>1 curve");let S=m===2||m===3?E+c:E;if(!i.isValid(S))throw new Error("recovery id 2 or 3 invalid");let R=i.toBytes(S),_=t.fromBytes(he(Gs((m&1)===0),R)),M=s.inv(S),O=N(ee("msgHash",g)),L=s.create(-O*M),V=s.create(k*M),Y=t.BASE.multiplyUnsafe(L).add(_.multiplyUnsafe(V));if(Y.is0())throw new Error("point at infinify");return Y.assertValidity(),Y}hasHighS(){return B(this.s)}toBytes(g=x){if(wo(g),g==="der")return ht(Pe.hexFromSig(this));let b=s.toBytes(this.r),E=s.toBytes(this.s);if(g==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return he(Uint8Array.of(this.recovery),b,E)}return he(b,E)}toHex(g){return le(this.toBytes(g))}assertValidity(){}static fromCompact(g){return P.fromBytes(ee("sig",g),"compact")}static fromDER(g){return P.fromBytes(ee("sig",g),"der")}normalizeS(){return this.hasHighS()?new P(this.r,s.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return le(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return le(this.toBytes("compact"))}}let q=r.bits2int||function(g){if(g.length>8192)throw new Error("input is too large");let b=He(g),E=g.length*8-a;return E>0?b>>BigInt(E):b},N=r.bits2int_modN||function(g){return s.create(q(g))},D=Ye(a);function z(h){return ks("num < 2^"+a,h,qe,D),s.toBytes(h)}function Z(h,g){return Ge(h,void 0,"message"),g?Ge(e(h),void 0,"prehashed message"):h}function T(h,g,b){if(["recovered","canonical"].some(L=>L in b))throw new Error("sign() legacy options not supported");let{lowS:E,prehash:k,extraEntropy:m}=mo(b,y);h=Z(h,k);let A=N(h),S=Je(s,g),R=[z(S),z(A)];if(m!=null&&m!==!1){let L=m===!0?n(u.secretKey):m;R.push(ee("extraEntropy",L))}let _=he(...R),M=A;function O(L){let V=q(L);if(!s.isValidNot0(V))return;let Y=s.inv(V),K=t.BASE.multiply(V).toAffine(),G=s.create(K.x);if(G===qe)return;let te=s.create(Y*s.create(M+G*S));if(te===qe)return;let Vt=(K.x===G?0:2)|Number(K.y&Ut),Kt=te;return E&&B(te)&&(Kt=s.neg(te),Vt^=1),new P(G,Kt,Vt)}return{seed:_,k2sig:O}}function j(h,g,b={}){h=ee("message",h);let{seed:E,k2sig:k}=T(h,g,b);return As(e.outputLen,s.BYTES,o)(E,k)}function $(h){let g,b=typeof h=="string"||ut(h),E=!b&&h!==null&&typeof h=="object"&&typeof h.r=="bigint"&&typeof h.s=="bigint";if(!b&&!E)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(E)g=new P(h.r,h.s);else if(b){try{g=P.fromBytes(ee("sig",h),"der")}catch(k){if(!(k instanceof Pe.Err))throw k}if(!g)try{g=P.fromBytes(ee("sig",h),"compact")}catch{return!1}}return g||!1}function I(h,g,b,E={}){let{lowS:k,prehash:m,format:A}=mo(E,y);if(b=ee("publicKey",b),g=Z(ee("message",g),m),"strict"in E)throw new Error("options.strict was renamed to lowS");let S=A===void 0?$(h):P.fromBytes(ee("sig",h),A);if(S===!1)return!1;try{let R=t.fromBytes(b);if(k&&S.hasHighS())return!1;let{r:_,s:M}=S,O=N(g),L=s.inv(M),V=s.create(O*L),Y=s.create(_*L),K=t.BASE.multiplyUnsafe(V).add(R.multiplyUnsafe(Y));return K.is0()?!1:s.create(K.x)===_}catch{return!1}}function w(h,g,b={}){let{prehash:E}=mo(b,y);return g=Z(g,E),P.fromBytes(h,"recovered").recoverPublicKey(g).toBytes()}return Object.freeze({keygen:f,getPublicKey:d,getSharedSecret:p,utils:l,lengths:u,Point:t,sign:j,verify:I,recoverPublicKey:w,Signature:P,hash:e})}function fl(t){let e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},r=t.Fp,n=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(s=>Math.ceil(s/2)))):void 0,o=We(e.n,{BITS:t.nBitLength,allowedLengths:n,modFromBytes:t.wrapPrivateKey}),i={Fp:r,Fn:o,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:i}}function ll(t){let{CURVE:e,curveOpts:r}=fl(t),n={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:r,hash:t.hash,ecdsaOpts:n}}function ul(t,e){let r=e.Point;return Object.assign({},e,{ProjectivePoint:r,CURVE:Object.assign({},t,Qn(r.Fn.ORDER,r.Fn.BITS))})}function Ws(t){let{CURVE:e,curveOpts:r,hash:n,ecdsaOpts:o}=ll(t),i=sl(e,r),s=al(i,n,o);return ul(t,s)}function Js(t,e){let r=n=>Ws({...t,hash:n});return{...r(e),create:r}}var Ot={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},dl={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},hl=BigInt(0),Xs=BigInt(1),Eo=BigInt(2);function gl(t){let e=Ot.p,r=BigInt(3),n=BigInt(6),o=BigInt(11),i=BigInt(22),s=BigInt(23),c=BigInt(44),a=BigInt(88),f=t*t*t%e,d=f*f*t%e,p=ye(d,r,e)*d%e,l=ye(p,r,e)*d%e,u=ye(l,Eo,e)*f%e,y=ye(u,o,e)*u%e,x=ye(y,i,e)*y%e,B=ye(x,c,e)*x%e,C=ye(B,a,e)*B%e,H=ye(C,c,e)*x%e,P=ye(H,r,e)*d%e,q=ye(P,s,e)*y%e,N=ye(q,n,e)*f%e,D=ye(N,Eo,e);if(!or.eql(or.sqr(D),t))throw new Error("Cannot find square root");return D}var or=We(Ot.p,{sqrt:gl}),ec=Js({...Ot,Fp:or,lowS:!0,endo:dl},Lt),Fs={};function ir(t,...e){let r=Fs[t];if(r===void 0){let n=Lt(Gn(t));r=he(n,n),Fs[t]=r}return Lt(he(r,...e))}var Bo=t=>t.toBytes(!0).slice(1),Ht=ec.Point,So=t=>t%Eo===hl;function vo(t){let{Fn:e,BASE:r}=Ht,n=Je(e,t),o=r.multiply(n);return{scalar:So(o.y)?n:e.neg(n),bytes:Bo(o)}}function tc(t){let e=or;if(!e.isValidNot0(t))throw new Error("invalid x: Fail if x \u2265 p");let r=e.create(t*t),n=e.create(r*t+BigInt(7)),o=e.sqrt(n);So(o)||(o=e.neg(o));let i=Ht.fromAffine({x:t,y:o});return i.assertValidity(),i}var dn=He;function nc(...t){return Ht.Fn.create(dn(ir("BIP0340/challenge",...t)))}function Qs(t){return vo(t).bytes}function pl(t,e,r=gt(32)){let{Fn:n}=Ht,o=ee("message",t),{bytes:i,scalar:s}=vo(e),c=ee("auxRand",r,32),a=n.toBytes(s^dn(ir("BIP0340/aux",c))),f=ir("BIP0340/nonce",a,i,o),{bytes:d,scalar:p}=vo(f),l=nc(d,i,o),u=new Uint8Array(64);if(u.set(d,0),u.set(n.toBytes(n.create(p+l*s)),32),!rc(u,o,i))throw new Error("sign: Invalid signature produced");return u}function rc(t,e,r){let{Fn:n,BASE:o}=Ht,i=ee("signature",t,64),s=ee("message",e),c=ee("publicKey",r,32);try{let a=tc(dn(c)),f=dn(i.subarray(0,32));if(!fn(f,Xs,Ot.p))return!1;let d=dn(i.subarray(32,64));if(!fn(d,Xs,Ot.n))return!1;let p=nc(n.toBytes(f),Bo(a),s),l=o.multiplyUnsafe(d).add(a.multiplyUnsafe(n.neg(p))),{x:u,y}=l.toAffine();return!(l.is0()||!So(y)||u!==f)}catch{return!1}}var Xe=(()=>{let r=(o=gt(48))=>er(o,Ot.n);ec.utils.randomSecretKey;function n(o){let i=r(o);return{secretKey:i,publicKey:Qs(i)}}return{keygen:n,getPublicKey:Qs,sign:pl,verify:rc,Point:Ht,utils:{randomSecretKey:r,randomPrivateKey:r,taggedHash:ir,lift_x:tc,pointToBytes:Bo,numberToBytesBE:Nt,bytesToNumberBE:He,mod:pe},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var ko=Lt;var yl=new TextDecoder("utf-8"),bl=new TextEncoder,ml=1,wl=65535;function Ao(t,e){let r=On.getSharedSecret(t,se("02"+e)).subarray(1,33);return Mn(de,r,bl.encode("nip44-v2"))}function xl(t,e){let r=Dn(de,t,e,76);return{chacha_key:r.subarray(0,32),chacha_nonce:r.subarray(32,44),hmac_key:r.subarray(44,76)}}function El(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("expected positive integer");if(t<=32)return 32;let e=1<<Math.floor(Math.log2(t-1))+1,r=e<=256?32:e/8;return r*(Math.floor((t-1)/r)+1)}function vl(t){let e=new DataView(t.buffer).getUint16(0),r=t.subarray(2,2+e);if(e<ml||e>wl||r.length!==e||t.length!==2+El(e))throw new Error("invalid padding");return yl.decode(r)}function Bl(t,e,r){if(r.length!==32)throw new Error("AAD associated data must be 32 bytes");let n=ne(r,e);return ke(de,t,n)}function Sl(t){if(typeof t!="string")throw new Error("payload must be a valid string");let e=t.length;if(e<132||e>87472)throw new Error("invalid payload length: "+e);if(t[0]==="#")throw new Error("unknown encryption version");let r;try{r=Qt.decode(t)}catch(i){throw new Error("invalid base64: "+i.message)}let n=r.length;if(n<99||n>65603)throw new Error("invalid data length: "+n);let o=r[0];if(o!==2)throw new Error("unknown encryption version "+o);return{nonce:r.subarray(1,33),ciphertext:r.subarray(33,-32),mac:r.subarray(-32)}}function Ro(t,e){let{nonce:r,ciphertext:n,mac:o}=Sl(t),{chacha_key:i,chacha_nonce:s,hmac_key:c}=xl(e,r),a=Bl(c,n,r);if(!At(a,o))throw new Error("invalid MAC");let f=Ct(i,s,n);return vl(f)}function kl(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Al(){let t=new Uint8Array(16);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}function sr(t,e){let r=t.find(n=>n[0]===e);return r?r[1]:void 0}function Me(t){let e=new Uint8Array(t.length/2);for(let r=0;r<e.length;r++)e[r]=parseInt(t.substr(r*2,2),16);return e}async function Rl(t){if(!t.id||!t.pubkey||!t.sig||!t.tags||t.kind!==30470||!/^[0-9a-f]{128}$/i.test(t.sig)||!/^[0-9a-f]{64}$/i.test(t.pubkey)||!/^[0-9a-f]{64}$/i.test(t.id)||t.tags.length>100||t.content.length>65536||t.tags.some(s=>s.some(c=>c.length>1024)))return!1;let e=t.tags.map(s=>s[0]);if(!e.includes("tier")||!e.includes("age-range")||!e.includes("entity-type"))return!1;let r=JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content]),n=new TextEncoder,o=ko(n.encode(r));if(le(o)!==t.id.toLowerCase())return!1;try{let s=Me(t.sig),c=Me(t.id),a=Me(t.pubkey);return Xe.verify(s,c,a)}catch{return!1}}function Cl(t,e){if(t===e||t==="18+"&&e==="18+")return!0;let r=["0-3","4-7","8-12","13-17","18+"],n=r.indexOf(t),o=r.indexOf(e);return n===-1||o===-1?!1:e==="18+"?t==="18+":t===e}async function Il(t,e){if(e==null||!/^https:\/\//i.test(e)||!/^[0-9a-f]{64}$/i.test(t))return null;try{let r=await fetch(`${e}/status/${t}`,{signal:AbortSignal.timeout(5e3)});if(!r.ok)return null;let n=await r.json();if(typeof n!="object"||n===null)return null;let o=n;return{confirmed:o.confirmed===!0,method:["A","B","C","D"].includes(o.method)?o.method:null,profession:typeof o.profession=="string"?o.profession:void 0,jurisdiction:typeof o.jurisdiction=="string"?o.jurisdiction:void 0}}catch{return null}}async function Tl(t,e){if(!["0-3","4-7","8-12","13-17","18+"].includes(t))return{verified:!1,ageRange:null,tier:null,entityType:null,credentialId:null,verifierPubkey:null,verifierConfirmed:null,verifierMethod:null,issuedAt:null,expiresAt:null,error:"invalid-age-range"};let n={requiredAgeRange:t,relayUrl:e?.relayUrl||"wss://relay.damus.io",theme:e?.theme||"auto",timeout:e?.timeout||12e4,verifierCheckUrl:e?.verifierCheckUrl!==void 0?e.verifierCheckUrl:"https://verify.signet.forgesworn.dev",acceptUnconfirmed:e?.acceptUnconfirmed||!1,...e};n.timeout=Math.max(5e3,Math.min(n.timeout??12e4,6e5));let o=Al(),i={type:"signet-verify-request",requestId:o,requiredAgeRange:n.requiredAgeRange,relayUrl:n.relayUrl,timestamp:Math.floor(Date.now()/1e3)},s=JSON.stringify(i),c=btoa(s);return new Promise(a=>{let f=document.createElement("style");f.textContent="#signet-verify-dialog::backdrop{background:rgba(0,0,0,0.7)}",document.head.appendChild(f);let d=n.theme==="dark"||n.theme==="auto"&&window.matchMedia("(prefers-color-scheme: dark)").matches,p=d?"#1a1a2e":"#ffffff",l=d?"#e0e0e0":"#1a1a2e",u=d?"#888":"#666",y=document.createElement("dialog");y.id="signet-verify-dialog",y.style.cssText=`border:none;border-radius:16px;padding:32px;max-width:380px;width:90%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,0.3);background:${p};color:${l};font-family:system-ui,-apple-system,sans-serif;`,y.innerHTML=`
2
9
  <h2 style="margin:0 0 8px;font-size:1.3rem;">Verify your age with Signet</h2>
3
- <p style="margin:0 0 24px;color:${l};font-size:0.9rem;">Scan this QR code with your Signet app to prove you are ${ha(t)}. No personal data is shared.</p>
10
+ <p style="margin:0 0 24px;color:${u};font-size:0.9rem;">Scan this QR code with your Signet app to prove you are ${kl(t)}. No personal data is shared.</p>
4
11
  <div id="signet-qr" style="display:flex;justify-content:center;margin-bottom:24px;"></div>
5
- <p style="margin:0 0 16px;color:${l};font-size:0.8rem;">Waiting for verification...</p>
6
- <button id="signet-cancel" style="background:none;border:1px solid ${l};color:${d};padding:10px 24px;border-radius:8px;cursor:pointer;font-size:0.9rem;">Cancel</button>
7
- `,document.body.appendChild(b),b.showModal();let E=b.querySelector("#signet-qr");if(E){let _=document.createElement("div");_.style.cssText=`width:200px;height:200px;background:${p?"#2a2a3e":"#f0f0f0"};border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:0.75rem;color:${l};word-break:break-all;padding:12px;`,_.textContent=`signet:verify:${c.slice(0,40)}...`,E.appendChild(_)}let B=new BroadcastChannel("signet-verify-"+o);b.querySelector("#signet-cancel")?.addEventListener("click",()=>{B.close(),b.close(),b.remove(),f.remove(),a({verified:!1,ageRange:null,tier:null,entityType:null,credentialId:null,verifierPubkey:null,verifierConfirmed:null,verifierMethod:null,issuedAt:null,expiresAt:null,error:"cancelled"})}),B.onmessage=async _=>{let N=_.data;if(typeof N!="object"||N===null)return;let H=N;if(H.type!=="signet-verify-response"||H.requestId!==o||!H.credential||typeof H.credential!="object"||!Array.isArray(H.credential.tags))return;let P=H.credential,q=await ga(P),Z=Un(P.tags,"age-range"),Y=Un(P.tags,"tier"),G=Un(P.tags,"entity-type"),O=Un(P.tags,"expires"),K=Z?ba(Z,n.requiredAgeRange):!1,$=await ya(P.pubkey,n.verifierCheckUrl),L=$?.confirmed??null,x=$?.method??null,u=n.acceptUnconfirmed||L===!0;b.close(),b.remove(),f.remove(),B.close();let h=Y?parseInt(Y,10):null,y=O?parseInt(O,10):null,w=Math.floor(Date.now()/1e3),k=y===null||!isNaN(y)&&y>w,m;q?k?K?u||(m=L===!1?"verifier-not-confirmed":"verifier-check-unavailable"):m="age-range-not-met":m="credential-expired":m="invalid-credential",a({verified:q&&k&&K&&u,ageRange:Z||null,tier:h!==null&&!isNaN(h)?h:null,entityType:G||null,credentialId:P.id,verifierPubkey:P.pubkey,verifierConfirmed:L,verifierMethod:x,issuedAt:P.created_at,expiresAt:y!==null&&!isNaN(y)?y:null,error:m})},setTimeout(()=>{b.close(),b.remove(),f.remove(),B.close(),a({verified:!1,ageRange:null,tier:null,entityType:null,credentialId:null,verifierPubkey:null,verifierConfirmed:null,verifierMethod:null,issuedAt:null,expiresAt:null,error:"timeout"})},n.timeout)})}function Kr(t){let e=JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content]),r=$r(new TextEncoder().encode(e));return se(r)}async function xa(t,e){try{let r=Dr(e,t.pubkey),n=Vr(t.content,r),o=JSON.parse(n);if(typeof o!="object"||o===null)return null;let i=o;if(i.kind!==13||typeof i.pubkey!="string"||!/^[0-9a-f]{64}$/i.test(i.pubkey)||typeof i.created_at!="number"||!Array.isArray(i.tags)||typeof i.content!="string"||typeof i.id!="string"||!/^[0-9a-f]{64}$/i.test(i.id)||typeof i.sig!="string"||!/^[0-9a-f]{128}$/i.test(i.sig)||Kr({pubkey:i.pubkey,created_at:i.created_at,kind:13,tags:i.tags,content:i.content})!==i.id.toLowerCase())return null;let c=Ce(i.sig),a=Ce(i.id),f=Ce(i.pubkey);if(!Ze.verify(c,a,f))return null;let p=Dr(e,i.pubkey),g=Vr(i.content,p),d=JSON.parse(g);if(typeof d!="object"||d===null)return null;let l=d;if(typeof l.pubkey!="string"||l.pubkey!==i.pubkey||typeof l.kind!="number"||typeof l.created_at!="number"||!Array.isArray(l.tags)||typeof l.content!="string")return null;let b=typeof l.id=="string"?l.id:Kr({pubkey:l.pubkey,created_at:l.created_at,kind:l.kind,tags:l.tags,content:l.content});return{pubkey:l.pubkey,id:b,kind:l.kind,created_at:l.created_at,tags:l.tags,content:l.content}}catch{return null}}function wa(t){if(typeof t!="string")return;let e=t.replace(/[\x00-\x1f\x7f-\x9f\u200b-\u200f\u2028-\u202e\u2066-\u2069]/g,"").trim().slice(0,64);return e.length>0?e:void 0}async function jr(t){if(!/^[0-9a-f]{64}$/i.test(t.requestId))throw new Error("invalid-request-id");if(!(t.sessionPrivKey instanceof Uint8Array)||t.sessionPrivKey.length!==32)throw new Error("invalid-session-privkey");if(!/^wss:\/\//i.test(t.relayUrl)&&!/^ws:\/\/(localhost|127\.0\.0\.1)([:\/]|$)/i.test(t.relayUrl))throw new Error("invalid-relay-url");if(typeof t.expectedOrigin!="string"||t.expectedOrigin.length===0)throw new Error("invalid-expected-origin");let e=se(Ze.getPublicKey(t.sessionPrivKey)),r=Math.max(5e3,Math.min(t.timeout??12e4,6e5)),n=t.requestId.toLowerCase(),o=t.expectedOrigin;return new Promise((i,s)=>{let c=`sa-${Math.random().toString(36).slice(2,12)}`,a=!1,f;try{f=new WebSocket(t.relayUrl)}catch{s(new Error("relay-error"));return}let p=d=>{if(!a){a=!0,clearTimeout(g);try{f.close()}catch{}d()}},g=setTimeout(()=>{p(()=>s(new Error("timeout")))},r);f.onopen=()=>{let d=Math.floor(Date.now()/1e3)-60;f.send(JSON.stringify(["REQ",c,{kinds:[1059],"#p":[e],since:d}]))},f.onmessage=async d=>{if(a)return;let l;try{l=JSON.parse(typeof d.data=="string"?d.data:"")}catch{return}if(!Array.isArray(l)||l[0]!=="EVENT"||l[1]!==c)return;let b=l[2];if(typeof b!="object"||b===null)return;let E=b;if(E.kind!==1059||typeof E.pubkey!="string"||typeof E.content!="string")return;let B=await xa({pubkey:E.pubkey,content:E.content},t.sessionPrivKey);if(!B||B.kind!==29999)return;let _=B.tags.find(u=>u[0]==="session");if(!_||_[1]!==n)return;let N=B.tags.find(u=>u[0]==="status");if(N?.[1]==="rejected"){p(()=>s(new Error("denied")));return}if(N?.[1]!=="approved"||Math.abs(Date.now()/1e3-B.created_at)>300)return;let P;try{let u=JSON.parse(B.content);if(typeof u!="object"||u===null)return;P=u}catch{return}if(P.type!=="signet-auth-response"||P.requestId!==n||typeof P.authEvent!="object"||P.authEvent===null)return;let q=P.authEvent;if(typeof q.id!="string"||!/^[0-9a-f]{64}$/i.test(q.id)||typeof q.pubkey!="string"||!/^[0-9a-f]{64}$/i.test(q.pubkey)||typeof q.sig!="string"||!/^[0-9a-f]{128}$/i.test(q.sig)||q.kind!==21236||typeof q.created_at!="number"||!Array.isArray(q.tags)||typeof q.content!="string"||q.pubkey.toLowerCase()!==B.pubkey.toLowerCase()||Kr({pubkey:q.pubkey,created_at:q.created_at,kind:21236,tags:q.tags,content:q.content})!==q.id.toLowerCase())return;let Y=!1;try{let u=Ce(q.sig),h=Ce(q.id),y=Ce(q.pubkey);Y=Ze.verify(u,h,y)}catch{Y=!1}if(!Y)return;let G=q.tags,O=G.find(u=>Array.isArray(u)&&u[0]==="challenge");if(!O||typeof O[1]!="string"||O[1].toLowerCase()!==n)return;let K=G.find(u=>Array.isArray(u)&&u[0]==="origin");if(!K||K[1]!==o||Math.abs(Date.now()/1e3-q.created_at)>300)return;let L={id:q.id.toLowerCase(),pubkey:q.pubkey.toLowerCase(),kind:21236,created_at:q.created_at,tags:G,content:q.content,sig:q.sig},x=wa(P.displayName);p(()=>i({pubkey:L.pubkey,authEvent:L,credential:P.credential,...x!==void 0?{displayName:x}:{},createdAt:L.created_at}))},f.onerror=()=>{p(()=>s(new Error("relay-error")))}})}typeof window<"u"&&(window.Signet={verifyAge:ma,waitForAuthResponse:jr});function ze(t){try{return typeof localStorage<"u"?localStorage.getItem(t):null}catch{return null}}function Ge(t,e){try{typeof localStorage<"u"&&localStorage.setItem(t,e)}catch{}}function We(t){try{typeof localStorage<"u"&&localStorage.removeItem(t)}catch{}}function Xi(t){Ge(X.pubkey,t.pubkey),Ge(X.method,t.method),Ge(X.authEvent,t.authEventJson),t.bunkerUri!==void 0&&Ge(X.bunkerUri,t.bunkerUri),t.bunkerClientSkHex!==void 0&&Ge(X.bunkerClientSk,t.bunkerClientSkHex),t.expiresAt!==void 0&&Ge(X.expiresAt,String(t.expiresAt)),t.displayName!==void 0&&Ge(X.displayName,t.displayName)}function Ji(){let t=ze(X.pubkey),e=ze(X.method),r=ze(X.authEvent);if(!t||!e||!r||!/^[0-9a-f]{64}$/i.test(t)||e!=="nip07"&&e!=="redirect"&&e!=="bunker")return null;let n;try{if(n=JSON.parse(r),typeof n!="object"||n===null||n.pubkey!==t)return null}catch{return null}let o=ze(X.expiresAt),i=o?Number(o):void 0;if(i!==void 0&&Number.isFinite(i)&&Date.now()>i)return Ne(),null;let s={pubkey:t,method:e,authEventJson:r},c=ze(X.bunkerUri),a=ze(X.bunkerClientSk),f=ze(X.displayName);return c&&(s.bunkerUri=c),a&&(s.bunkerClientSkHex=a),i!==void 0&&Number.isFinite(i)&&(s.expiresAt=i),f&&(s.displayName=f),s}function Ne(){We(X.pubkey),We(X.method),We(X.authEvent),We(X.bunkerUri),We(X.bunkerClientSk),We(X.expiresAt),We(X.displayName)}function Qi(t){Ge(X.pendingRedirect,JSON.stringify(t))}function Fi(){let t=ze(X.pendingRedirect);if(!t)return null;try{let e=JSON.parse(t),r=e.challenge,n=e.origin,o=e.appName,i=e.createdAt;return typeof r!="string"||!/^[0-9a-f]{64}$/i.test(r)||typeof n!="string"||n.length===0||typeof o!="string"||o.length===0||typeof i!="number"||!Number.isFinite(i)?null:{challenge:r,origin:n,appName:o,createdAt:i}}catch{return null}}function es(){We(X.pendingRedirect)}function ts(t){let e="";for(let r=0;r<t.length;r++)e+=t[r].toString(16).padStart(2,"0");return e}function ns(t){if(t.length%2!==0)throw new Error("odd-hex-length");let e=new Uint8Array(t.length/2);for(let r=0;r<e.length;r++)e[r]=parseInt(t.slice(r*2,r*2+2),16);return e}var rs=/^[0-9a-f]{64}$/i,Ea=/^[0-9a-f]{128}$/i;function va(t){let e=t.redirectCallback??`${t.origin}/`,r=new URLSearchParams({auth:"1",challenge:t.challenge,origin:t.origin,name:t.appName,callback:e,t:String(Math.floor(Date.now()/1e3))});return`${t.signetAppOrigin}/?${r.toString()}`}function Cn(t){if(typeof window>"u")throw new Error("signet-login: redirect mode requires a browser environment");let e={challenge:t.challenge,origin:t.origin,appName:t.appName,createdAt:Date.now()};Qi(e);let r=va(t);return window.location.href=r,new Promise(()=>{})}function Sa(){if(typeof window>"u")return;let t=new URL(window.location.href),e=["pubkey","npub","signature","eventId","error","warnings","fromNP","display_name","t","bunker"],r=!1;for(let o of e)t.searchParams.has(o)&&(t.searchParams.delete(o),r=!0);if(!r)return;let n=t.pathname+(t.search?t.search:"")+t.hash;try{window.history.replaceState(window.history.state,document.title,n)}catch{}}function os(){if(typeof window>"u")return{kind:"no-callback"};let t=new URLSearchParams(window.location.search),e=t.get("error"),r=t.get("pubkey"),n=t.get("signature"),o=t.get("eventId");if(!e&&!r&&!n&&!o)return{kind:"no-callback"};let i=Fi(),s=N=>(es(),Sa(),N);if(e==="denied")return s({kind:"denied"});if(!i)return s({kind:"invalid",reason:"no-pending-state"});if(i.origin!==window.location.origin)return s({kind:"invalid",reason:"origin-mismatch"});if(Date.now()-i.createdAt>Gr)return s({kind:"invalid",reason:"pending-stale"});if(!r||!rs.test(r))return s({kind:"invalid",reason:"pubkey-malformed"});if(!n||!Ea.test(n))return s({kind:"invalid",reason:"signature-malformed"});if(!o||!rs.test(o))return s({kind:"invalid",reason:"eventId-malformed"});let c,a=t.get("t");if(a&&/^\d+$/.test(a)){let N=Number(a);if(!Number.isFinite(N))return s({kind:"invalid",reason:"t-malformed"});c=N}else c=Math.floor(Date.now()/1e3),typeof console<"u"&&console.warn("signet-login: redirect callback missing `t` param \u2014 auth event created_at approximated. Server-side verification may reject. Upgrade signet-app to emit `t` in the redirect URL.");let f=r.toLowerCase(),p=n.toLowerCase(),d={id:o.toLowerCase(),pubkey:f,kind:21236,created_at:c,tags:[["challenge",i.challenge],["origin",i.origin],["app",i.appName]],content:"",sig:p},l=t.get("display_name")||void 0,b=new Ee(f,d),E={pubkey:f,method:"redirect",signer:b,authEvent:d};l&&(E.displayName=l);let B=t.get("bunker"),_;return B&&B.length>=9&&B.length<=8192&&B.slice(0,9).toLowerCase()==="bunker://"&&(_=B),s(_?{kind:"session",session:E,bunkerUri:_}:{kind:"session",session:E})}function Zr(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Ba(){let t=new Uint8Array(32);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}function zt(t){return t==="dark"?!0:t==="light"?!1:typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches}function ka(t){let e=document.createElement("style");e.textContent="#signet-login-dialog::backdrop{background:rgba(0,0,0,0.7)}",document.head.appendChild(e);let r=zt(t),n=r?"#1a1a2e":"#ffffff",o=r?"#e0e0e0":"#1a1a2e",i=document.createElement("dialog");return i.id="signet-login-dialog",i.style.cssText=`border:none;border-radius:16px;padding:32px;max-width:380px;width:90%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,0.3);background:${n};color:${o};font-family:system-ui,-apple-system,sans-serif;`,document.body.appendChild(i),i.showModal(),{dialog:i,style:e}}function Aa(t){try{t.dialog.close()}catch{}t.dialog.remove(),t.style.remove()}function ve(t,e=!1){return e?"background:#2c3e8f;color:white;border:0;padding:12px 16px;border-radius:8px;cursor:pointer;font-size:0.95rem;width:100%;margin-bottom:8px;text-align:left;display:flex;align-items:center;gap:12px;":`background:transparent;color:${t?"#e0e0e0":"#1a1a2e"};border:1px solid ${t?"#3a3a4e":"#d0d0d0"};padding:12px 16px;border-radius:8px;cursor:pointer;font-size:0.95rem;width:100%;margin-bottom:8px;text-align:left;display:flex;align-items:center;gap:12px;`}function Ra(t,e,r){let n=zt(r),o=n?"#888":"#666",i=Nt();return t.dialog.innerHTML=`
8
- <h2 style="margin:0 0 8px;font-size:1.3rem;">Sign in to ${Zr(e)}</h2>
12
+ <p style="margin:0 0 16px;color:${u};font-size:0.8rem;">Waiting for verification...</p>
13
+ <button id="signet-cancel" style="background:none;border:1px solid ${u};color:${l};padding:10px 24px;border-radius:8px;cursor:pointer;font-size:0.9rem;">Cancel</button>
14
+ `,document.body.appendChild(y),y.showModal();let x=y.querySelector("#signet-qr");if(x){let C=document.createElement("div");C.style.cssText=`width:200px;height:200px;background:${d?"#2a2a3e":"#f0f0f0"};border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:0.75rem;color:${u};word-break:break-all;padding:12px;`,C.textContent=`signet:verify:${c.slice(0,40)}...`,x.appendChild(C)}let B=new BroadcastChannel("signet-verify-"+o);y.querySelector("#signet-cancel")?.addEventListener("click",()=>{B.close(),y.close(),y.remove(),f.remove(),a({verified:!1,ageRange:null,tier:null,entityType:null,credentialId:null,verifierPubkey:null,verifierConfirmed:null,verifierMethod:null,issuedAt:null,expiresAt:null,error:"cancelled"})}),B.onmessage=async C=>{let H=C.data;if(typeof H!="object"||H===null)return;let P=H;if(P.type!=="signet-verify-response"||P.requestId!==o||!P.credential||typeof P.credential!="object"||!Array.isArray(P.credential.tags))return;let q=P.credential,N=await Rl(q),D=sr(q.tags,"age-range"),z=sr(q.tags,"tier"),Z=sr(q.tags,"entity-type"),T=sr(q.tags,"expires"),j=D?Cl(D,n.requiredAgeRange):!1,$=await Il(q.pubkey,n.verifierCheckUrl),I=$?.confirmed??null,w=$?.method??null,h=n.acceptUnconfirmed||I===!0;y.close(),y.remove(),f.remove(),B.close();let g=z?parseInt(z,10):null,b=T?parseInt(T,10):null,E=Math.floor(Date.now()/1e3),k=b===null||!isNaN(b)&&b>E,m;N?k?j?h||(m=I===!1?"verifier-not-confirmed":"verifier-check-unavailable"):m="age-range-not-met":m="credential-expired":m="invalid-credential",a({verified:N&&k&&j&&h,ageRange:D||null,tier:g!==null&&!isNaN(g)?g:null,entityType:Z||null,credentialId:q.id,verifierPubkey:q.pubkey,verifierConfirmed:I,verifierMethod:w,issuedAt:q.created_at,expiresAt:b!==null&&!isNaN(b)?b:null,error:m})},setTimeout(()=>{y.close(),y.remove(),f.remove(),B.close(),a({verified:!1,ageRange:null,tier:null,entityType:null,credentialId:null,verifierPubkey:null,verifierConfirmed:null,verifierMethod:null,issuedAt:null,expiresAt:null,error:"timeout"})},n.timeout)})}function Co(t){let e=JSON.stringify([0,t.pubkey,t.created_at,t.kind,t.tags,t.content]),r=ko(new TextEncoder().encode(e));return le(r)}async function Ll(t,e){try{let r=Ao(e,t.pubkey),n=Ro(t.content,r),o=JSON.parse(n);if(typeof o!="object"||o===null)return null;let i=o;if(i.kind!==13||typeof i.pubkey!="string"||!/^[0-9a-f]{64}$/i.test(i.pubkey)||typeof i.created_at!="number"||!Array.isArray(i.tags)||typeof i.content!="string"||typeof i.id!="string"||!/^[0-9a-f]{64}$/i.test(i.id)||typeof i.sig!="string"||!/^[0-9a-f]{128}$/i.test(i.sig)||Co({pubkey:i.pubkey,created_at:i.created_at,kind:13,tags:i.tags,content:i.content})!==i.id.toLowerCase())return null;let c=Me(i.sig),a=Me(i.id),f=Me(i.pubkey);if(!Xe.verify(c,a,f))return null;let d=Ao(e,i.pubkey),p=Ro(i.content,d),l=JSON.parse(p);if(typeof l!="object"||l===null)return null;let u=l;if(typeof u.pubkey!="string"||u.pubkey!==i.pubkey||typeof u.kind!="number"||typeof u.created_at!="number"||!Array.isArray(u.tags)||typeof u.content!="string")return null;let y=typeof u.id=="string"?u.id:Co({pubkey:u.pubkey,created_at:u.created_at,kind:u.kind,tags:u.tags,content:u.content});return{pubkey:u.pubkey,id:y,kind:u.kind,created_at:u.created_at,tags:u.tags,content:u.content}}catch{return null}}function Nl(t){if(typeof t!="string")return;let e=t.replace(/[\x00-\x1f\x7f-\x9f\u200b-\u200f\u2028-\u202e\u2066-\u2069]/g,"").trim().slice(0,64);return e.length>0?e:void 0}async function Io(t){if(!/^[0-9a-f]{64}$/i.test(t.requestId))throw new Error("invalid-request-id");if(!(t.sessionPrivKey instanceof Uint8Array)||t.sessionPrivKey.length!==32)throw new Error("invalid-session-privkey");if(!/^wss:\/\//i.test(t.relayUrl)&&!/^ws:\/\/(localhost|127\.0\.0\.1)([:\/]|$)/i.test(t.relayUrl))throw new Error("invalid-relay-url");if(typeof t.expectedOrigin!="string"||t.expectedOrigin.length===0)throw new Error("invalid-expected-origin");let e=le(Xe.getPublicKey(t.sessionPrivKey)),r=Math.max(5e3,Math.min(t.timeout??12e4,6e5)),n=t.requestId.toLowerCase(),o=t.expectedOrigin;return new Promise((i,s)=>{let c=`sa-${Math.random().toString(36).slice(2,12)}`,a=!1,f;try{f=new WebSocket(t.relayUrl)}catch{s(new Error("relay-error"));return}let d=l=>{if(!a){a=!0,clearTimeout(p);try{f.close()}catch{}l()}},p=setTimeout(()=>{d(()=>s(new Error("timeout")))},r);f.onopen=()=>{let l=Math.floor(Date.now()/1e3)-60;f.send(JSON.stringify(["REQ",c,{kinds:[1059],"#p":[e],since:l}]))},f.onmessage=async l=>{if(a)return;let u;try{u=JSON.parse(typeof l.data=="string"?l.data:"")}catch{return}if(!Array.isArray(u)||u[0]!=="EVENT"||u[1]!==c)return;let y=u[2];if(typeof y!="object"||y===null)return;let x=y;if(x.kind!==1059||typeof x.pubkey!="string"||typeof x.content!="string")return;let B=await Ll({pubkey:x.pubkey,content:x.content},t.sessionPrivKey);if(!B||B.kind!==29999)return;let C=B.tags.find(h=>h[0]==="session");if(!C||C[1]!==n)return;let H=B.tags.find(h=>h[0]==="status");if(H?.[1]==="rejected"){d(()=>s(new Error("denied")));return}if(H?.[1]!=="approved"||Math.abs(Date.now()/1e3-B.created_at)>300)return;let q;try{let h=JSON.parse(B.content);if(typeof h!="object"||h===null)return;q=h}catch{return}if(q.type!=="signet-auth-response"||q.requestId!==n||typeof q.authEvent!="object"||q.authEvent===null)return;let N=q.authEvent;if(typeof N.id!="string"||!/^[0-9a-f]{64}$/i.test(N.id)||typeof N.pubkey!="string"||!/^[0-9a-f]{64}$/i.test(N.pubkey)||typeof N.sig!="string"||!/^[0-9a-f]{128}$/i.test(N.sig)||N.kind!==21236||typeof N.created_at!="number"||!Array.isArray(N.tags)||typeof N.content!="string"||N.pubkey.toLowerCase()!==B.pubkey.toLowerCase()||Co({pubkey:N.pubkey,created_at:N.created_at,kind:21236,tags:N.tags,content:N.content})!==N.id.toLowerCase())return;let z=!1;try{let h=Me(N.sig),g=Me(N.id),b=Me(N.pubkey);z=Xe.verify(h,g,b)}catch{z=!1}if(!z)return;let Z=N.tags,T=Z.find(h=>Array.isArray(h)&&h[0]==="challenge");if(!T||typeof T[1]!="string"||T[1].toLowerCase()!==n)return;let j=Z.find(h=>Array.isArray(h)&&h[0]==="origin");if(!j||j[1]!==o||Math.abs(Date.now()/1e3-N.created_at)>300)return;let I={id:N.id.toLowerCase(),pubkey:N.pubkey.toLowerCase(),kind:21236,created_at:N.created_at,tags:Z,content:N.content,sig:N.sig},w=Nl(q.displayName);d(()=>i({pubkey:I.pubkey,authEvent:I,credential:q.credential,...w!==void 0?{displayName:w}:{},createdAt:I.created_at}))},f.onerror=()=>{d(()=>s(new Error("relay-error")))}})}typeof window<"u"&&(window.Signet={verifyAge:Tl,waitForAuthResponse:Io});function Fe(t){try{return typeof localStorage<"u"?localStorage.getItem(t):null}catch{return null}}function Qe(t,e){try{typeof localStorage<"u"&&localStorage.setItem(t,e)}catch{}}function et(t){try{typeof localStorage<"u"&&localStorage.removeItem(t)}catch{}}function oc(t){Qe(Q.pubkey,t.pubkey),Qe(Q.method,t.method),Qe(Q.authEvent,t.authEventJson),t.bunkerUri!==void 0&&Qe(Q.bunkerUri,t.bunkerUri),t.bunkerClientSkHex!==void 0&&Qe(Q.bunkerClientSk,t.bunkerClientSkHex),t.expiresAt!==void 0&&Qe(Q.expiresAt,String(t.expiresAt)),t.displayName!==void 0&&Qe(Q.displayName,t.displayName)}function ic(){let t=Fe(Q.pubkey),e=Fe(Q.method),r=Fe(Q.authEvent);if(!t||!e||!r||!/^[0-9a-f]{64}$/i.test(t)||e!=="nip07"&&e!=="redirect"&&e!=="bunker")return null;let n;try{if(n=JSON.parse(r),typeof n!="object"||n===null||n.pubkey!==t)return null}catch{return null}let o=Fe(Q.expiresAt),i=o?Number(o):void 0;if(i!==void 0&&Number.isFinite(i)&&Date.now()>i)return De(),null;let s={pubkey:t,method:e,authEventJson:r},c=Fe(Q.bunkerUri),a=Fe(Q.bunkerClientSk),f=Fe(Q.displayName);return c&&(s.bunkerUri=c),a&&(s.bunkerClientSkHex=a),i!==void 0&&Number.isFinite(i)&&(s.expiresAt=i),f&&(s.displayName=f),s}function De(){et(Q.pubkey),et(Q.method),et(Q.authEvent),et(Q.bunkerUri),et(Q.bunkerClientSk),et(Q.expiresAt),et(Q.displayName)}function sc(t){Qe(Q.pendingRedirect,JSON.stringify(t))}function cc(){let t=Fe(Q.pendingRedirect);if(!t)return null;try{let e=JSON.parse(t),r=e.challenge,n=e.origin,o=e.appName,i=e.createdAt;return typeof r!="string"||!/^[0-9a-f]{64}$/i.test(r)||typeof n!="string"||n.length===0||typeof o!="string"||o.length===0||typeof i!="number"||!Number.isFinite(i)?null:{challenge:r,origin:n,appName:o,createdAt:i}}catch{return null}}function ac(){et(Q.pendingRedirect)}function fc(t){let e="";for(let r=0;r<t.length;r++)e+=t[r].toString(16).padStart(2,"0");return e}function lc(t){if(t.length%2!==0)throw new Error("odd-hex-length");let e=new Uint8Array(t.length/2);for(let r=0;r<e.length;r++)e[r]=parseInt(t.slice(r*2,r*2+2),16);return e}var uc=/^[0-9a-f]{64}$/i,_l=/^[0-9a-f]{128}$/i;function Ul(t){let e=t.redirectCallback??`${t.origin}/`,r=new URLSearchParams({auth:"1",challenge:t.challenge,origin:t.origin,name:t.appName,callback:e,t:String(Math.floor(Date.now()/1e3))});return`${t.signetAppOrigin}/?${r.toString()}`}function cr(t){if(typeof window>"u")throw new Error("signet-login: redirect mode requires a browser environment");let e={challenge:t.challenge,origin:t.origin,appName:t.appName,createdAt:Date.now()};sc(e);let r=Ul(t);return window.location.href=r,new Promise(()=>{})}function Ol(){if(typeof window>"u")return;let t=new URL(window.location.href),e=["pubkey","npub","signature","eventId","error","warnings","fromNP","display_name","t","bunker"],r=!1;for(let o of e)t.searchParams.has(o)&&(t.searchParams.delete(o),r=!0);if(!r)return;let n=t.pathname+(t.search?t.search:"")+t.hash;try{window.history.replaceState(window.history.state,document.title,n)}catch{}}function dc(){if(typeof window>"u")return{kind:"no-callback"};let t=new URLSearchParams(window.location.search),e=t.get("error"),r=t.get("pubkey"),n=t.get("signature"),o=t.get("eventId");if(!e&&!r&&!n&&!o)return{kind:"no-callback"};let i=cc(),s=H=>(ac(),Ol(),H);if(e==="denied")return s({kind:"denied"});if(!i)return s({kind:"invalid",reason:"no-pending-state"});if(i.origin!==window.location.origin)return s({kind:"invalid",reason:"origin-mismatch"});if(Date.now()-i.createdAt>ni)return s({kind:"invalid",reason:"pending-stale"});if(!r||!uc.test(r))return s({kind:"invalid",reason:"pubkey-malformed"});if(!n||!_l.test(n))return s({kind:"invalid",reason:"signature-malformed"});if(!o||!uc.test(o))return s({kind:"invalid",reason:"eventId-malformed"});let c,a=t.get("t");if(a&&/^\d+$/.test(a)){let H=Number(a);if(!Number.isFinite(H))return s({kind:"invalid",reason:"t-malformed"});c=H}else c=Math.floor(Date.now()/1e3),typeof console<"u"&&console.warn("signet-login: redirect callback missing `t` param \u2014 auth event created_at approximated. Server-side verification may reject. Upgrade signet-app to emit `t` in the redirect URL.");let f=r.toLowerCase(),d=n.toLowerCase(),l={id:o.toLowerCase(),pubkey:f,kind:21236,created_at:c,tags:[["challenge",i.challenge],["origin",i.origin],["app",i.appName]],content:"",sig:d},u=t.get("display_name")||void 0,y=new Ae(f,l),x={pubkey:f,method:"redirect",signer:y,authEvent:l};u&&(x.displayName=u);let B=t.get("bunker"),C;return B&&B.length>=9&&B.length<=8192&&B.slice(0,9).toLowerCase()==="bunker://"&&(C=B),s(C?{kind:"session",session:x,bunkerUri:C}:{kind:"session",session:x})}var ha=Ca(da(),1);function Qo(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Iu(){let t=new Uint8Array(32);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}function En(t){return t==="dark"?!0:t==="light"?!1:typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches}function Tu(t){let e=document.createElement("style");e.textContent="#signet-login-dialog::backdrop{background:rgba(0,0,0,0.7)}",document.head.appendChild(e);let r=En(t),n=r?"#1a1a2e":"#ffffff",o=r?"#e0e0e0":"#1a1a2e",i=document.createElement("dialog");return i.id="signet-login-dialog",i.style.cssText=`border:none;border-radius:16px;padding:32px;max-width:380px;width:90%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,0.3);background:${n};color:${o};font-family:system-ui,-apple-system,sans-serif;`,document.body.appendChild(i),i.showModal(),{dialog:i,style:e}}function Lu(t){try{t.dialog.close()}catch{}t.dialog.remove(),t.style.remove()}function Re(t,e=!1){return e?"background:#2c3e8f;color:white;border:0;padding:12px 16px;border-radius:8px;cursor:pointer;font-size:0.95rem;width:100%;margin-bottom:8px;text-align:left;display:flex;align-items:center;gap:12px;":`background:transparent;color:${t?"#e0e0e0":"#1a1a2e"};border:1px solid ${t?"#3a3a4e":"#d0d0d0"};padding:12px 16px;border-radius:8px;cursor:pointer;font-size:0.95rem;width:100%;margin-bottom:8px;text-align:left;display:flex;align-items:center;gap:12px;`}function Nu(t,e,r){let n=En(r),o=n?"#888":"#666",i=tn();return t.dialog.innerHTML=`
15
+ <h2 style="margin:0 0 8px;font-size:1.3rem;">Sign in to ${Qo(e)}</h2>
9
16
  <p style="margin:0 0 24px;color:${o};font-size:0.9rem;">Choose how you want to sign in. Your keys never leave your control.</p>
10
17
  <div style="display:flex;flex-direction:column;">
11
- ${i?`<button data-choice="nip07" style="${ve(n,!0)}"><span style="font-size:1.2rem;">\u{1F310}</span><span><strong>Browser extension</strong><br><span style="font-size:0.8rem;opacity:0.8;">bark, Alby, nos2x</span></span></button>`:""}
12
- <button data-choice="redirect" style="${ve(n)}"><span style="font-size:1.2rem;">\u{1FAAA}</span><span><strong>Sign in with Signet</strong><br><span style="font-size:0.8rem;color:${o};">Open Signet on this device</span></span></button>
13
- <button data-choice="qr" style="${ve(n)}"><span style="font-size:1.2rem;">\u{1F4F1}</span><span><strong>Signet on another device</strong><br><span style="font-size:0.8rem;color:${o};">Scan QR with your phone</span></span></button>
14
- <button data-choice="bunker" style="${ve(n)}"><span style="font-size:1.2rem;">\u{1F511}</span><span><strong>Paste bunker URI</strong><br><span style="font-size:0.8rem;color:${o};">For NIP-46 power users</span></span></button>
18
+ ${i?`<button data-choice="nip07" style="${Re(n,!0)}"><span style="font-size:1.2rem;">\u{1F310}</span><span><strong>Browser extension</strong><br><span style="font-size:0.8rem;opacity:0.8;">bark, Alby, nos2x</span></span></button>`:""}
19
+ <button data-choice="redirect" style="${Re(n)}"><span style="font-size:1.2rem;">\u{1FAAA}</span><span><strong>Sign in with Signet</strong><br><span style="font-size:0.8rem;color:${o};">Open Signet on this device</span></span></button>
20
+ <button data-choice="qr" style="${Re(n)}"><span style="font-size:1.2rem;">\u{1F4F1}</span><span><strong>Signet on another device</strong><br><span style="font-size:0.8rem;color:${o};">Scan QR with your phone</span></span></button>
21
+ <button data-choice="bunker" style="${Re(n)}"><span style="font-size:1.2rem;">\u{1F511}</span><span><strong>Paste bunker URI</strong><br><span style="font-size:0.8rem;color:${o};">For NIP-46 power users</span></span></button>
15
22
  </div>
16
23
  <button data-choice="cancel" style="background:none;border:0;color:${o};padding:12px;cursor:pointer;font-size:0.85rem;margin-top:8px;">Cancel</button>
17
- `,new Promise(s=>{t.dialog.querySelectorAll("button[data-choice]").forEach(c=>{c.addEventListener("click",()=>{let a=c.dataset.choice;s(a)})})})}async function _a(t,e){let r=zt(e.theme),n=r?"#888":"#666",o=r?"#e0e0e0":"#1a1a2e";t.dialog.innerHTML=`
24
+ `,new Promise(s=>{t.dialog.querySelectorAll("button[data-choice]").forEach(c=>{c.addEventListener("click",()=>{let a=c.dataset.choice;s(a)})})})}async function _u(t,e){let r=En(e.theme),n=r?"#888":"#666",o=r?"#e0e0e0":"#1a1a2e";t.dialog.innerHTML=`
18
25
  <h2 style="margin:0 0 8px;font-size:1.2rem;">Waiting for your extension</h2>
19
26
  <p style="margin:0 0 20px;color:${n};font-size:0.85rem;">Approve the sign-in prompt in bark, Alby, nos2x, or whichever NIP-07 extension you use. Cold-start can take a few seconds.</p>
20
27
  <div style="display:flex;align-items:center;justify-content:center;gap:14px;margin:0 0 24px;color:${o};">
@@ -22,34 +29,32 @@
22
29
  <span id="signet-login-nip07-elapsed" style="font-variant-numeric:tabular-nums;font-size:0.95rem;">Connecting\u2026</span>
23
30
  </div>
24
31
  <div style="display:flex;gap:8px;justify-content:space-between;">
25
- <button data-action="back" style="${ve(r)}width:auto;flex:0 0 auto;padding:8px 16px;">\u2190 Back</button>
26
- <button data-action="cancel" style="${ve(r)}width:auto;flex:0 0 auto;padding:8px 16px;">Cancel</button>
32
+ <button data-action="back" style="${Re(r)}width:auto;flex:0 0 auto;padding:8px 16px;">\u2190 Back</button>
33
+ <button data-action="cancel" style="${Re(r)}width:auto;flex:0 0 auto;padding:8px 16px;">Cancel</button>
27
34
  </div>
28
35
  <style>@keyframes signet-login-spin{to{transform:rotate(360deg)}}</style>
29
- `;let i=t.dialog.querySelector("#signet-login-nip07-elapsed"),s=0,c=window.setInterval(()=>{s+=1,i&&(i.textContent=`Waiting for your signer (${s}s)\u2026`)},1e3),a=new Promise(f=>{t.dialog.querySelector('[data-action="back"]')?.addEventListener("click",()=>f(null)),t.dialog.querySelector('[data-action="cancel"]')?.addEventListener("click",()=>f(null))});try{let f=await Promise.race([Ht(),a]);if(!f)return null;let p=await Promise.race([f.signEvent({kind:21236,content:"",tags:[["challenge",e.challenge],["origin",e.origin],["app",e.appName]]}),a]);if(!p){try{await f.close()}catch{}return null}return{pubkey:f.pubkey,authEvent:p}}catch(f){return i&&(i.textContent=`\u2717 ${f instanceof Error?f.message:String(f)}`,i.style.color="#d04848"),await Promise.race([new Promise(p=>setTimeout(p,2500)),a]),null}finally{window.clearInterval(c)}}async function La(t,e){let r=zt(e.theme),n=r?"#888":"#666",o=Ze.utils.randomPrivateKey(),i=se(Ze.getPublicKey(o)),s=new URLSearchParams({auth:"1",challenge:e.challenge,origin:e.origin,name:e.appName,callback:e.redirectCallback??`${e.origin}/`,t:String(Math.floor(Date.now()/1e3)),relay:e.relayUrl,sessionPubkey:i}),c=`${e.signetAppOrigin}/?${s.toString()}`;return t.dialog.innerHTML=`
36
+ `;let i=t.dialog.querySelector("#signet-login-nip07-elapsed"),s=0,c=window.setInterval(()=>{s+=1,i&&(i.textContent=`Waiting for your signer (${s}s)\u2026`)},1e3),a=new Promise(f=>{t.dialog.querySelector('[data-action="back"]')?.addEventListener("click",()=>f(null)),t.dialog.querySelector('[data-action="cancel"]')?.addEventListener("click",()=>f(null))});try{let f=await Promise.race([nn(),a]);if(!f)return null;let d=await Promise.race([f.signEvent({kind:21236,content:"",tags:[["challenge",e.challenge],["origin",e.origin],["app",e.appName]]}),a]);if(!d){try{await f.close()}catch{}return null}return{pubkey:f.pubkey,authEvent:d}}catch(f){return i&&(i.textContent=`\u2717 ${f instanceof Error?f.message:String(f)}`,i.style.color="#d04848"),await Promise.race([new Promise(d=>setTimeout(d,2500)),a]),null}finally{window.clearInterval(c)}}async function Uu(t,e){let r=En(e.theme),n=r?"#888":"#666",o=Xe.utils.randomPrivateKey(),i=le(Xe.getPublicKey(o)),s=new URLSearchParams({auth:"1",challenge:e.challenge,origin:e.origin,name:e.appName,callback:e.redirectCallback??`${e.origin}/`,t:String(Math.floor(Date.now()/1e3)),relay:e.relayUrl,sessionPubkey:i}),c=`${e.signetAppOrigin}/?${s.toString()}`;t.dialog.innerHTML=`
30
37
  <h2 style="margin:0 0 8px;font-size:1.2rem;">Sign in with Signet</h2>
31
38
  <p style="margin:0 0 16px;color:${n};font-size:0.85rem;">Open the link on your phone, or scan the QR if rendered.</p>
32
39
  <div style="background:${r?"#0f0f1f":"#f5f5f8"};border-radius:8px;padding:16px;margin-bottom:16px;">
33
- <div id="signet-login-qr" style="width:200px;height:200px;margin:0 auto 12px;background:${r?"#1a1a2e":"#ffffff"};border-radius:6px;display:flex;align-items:center;justify-content:center;color:${n};font-size:0.8rem;text-align:center;padding:12px;box-sizing:border-box;">
34
- QR placeholder<br><span style="font-size:0.7rem;">(bundle qr lib for production)</span>
35
- </div>
36
- <a href="${Zr(c)}" target="_blank" rel="noopener" style="display:block;color:#5b6dff;font-size:0.75rem;word-break:break-all;text-decoration:none;">${Zr(c.slice(0,80))}\u2026</a>
40
+ <canvas id="signet-login-qr" width="200" height="200" style="display:block;width:200px;height:200px;margin:0 auto 12px;background:#ffffff;border-radius:6px;box-sizing:border-box;"></canvas>
41
+ <a href="${Qo(c)}" target="_blank" rel="noopener" style="display:block;color:#5b6dff;font-size:0.75rem;word-break:break-all;text-decoration:none;">${Qo(c.slice(0,80))}\u2026</a>
37
42
  </div>
38
43
  <p id="signet-login-status" style="margin:0 0 12px;color:${n};font-size:0.85rem;">Waiting for approval\u2026</p>
39
44
  <div style="display:flex;gap:8px;justify-content:space-between;">
40
- <button data-action="back" style="${ve(r)}width:auto;flex:0 0 auto;padding:8px 16px;">\u2190 Back</button>
41
- <button data-action="cancel" style="${ve(r)}width:auto;flex:0 0 auto;padding:8px 16px;">Cancel</button>
45
+ <button data-action="back" style="${Re(r)}width:auto;flex:0 0 auto;padding:8px 16px;">\u2190 Back</button>
46
+ <button data-action="cancel" style="${Re(r)}width:auto;flex:0 0 auto;padding:8px 16px;">Cancel</button>
42
47
  </div>
43
- `,new Promise(a=>{let f=!1,p=g=>{f||(f=!0,a(g))};t.dialog.querySelector('[data-action="back"]')?.addEventListener("click",()=>{p(null)}),t.dialog.querySelector('[data-action="cancel"]')?.addEventListener("click",()=>{p(null)}),jr({requestId:e.challenge,relayUrl:e.relayUrl,sessionPrivKey:o,expectedOrigin:e.origin,timeout:e.timeout}).then(g=>{let d={id:g.authEvent.id,pubkey:g.authEvent.pubkey,kind:21236,created_at:g.authEvent.created_at,tags:g.authEvent.tags,content:g.authEvent.content,sig:g.authEvent.sig},l={pubkey:g.pubkey,authEvent:d};g.displayName&&(l.displayName=g.displayName),p(l)}).catch(g=>{let d=t.dialog.querySelector("#signet-login-status");d&&(d.textContent=`\u2717 ${g instanceof Error?g.message:String(g)}`,d.style.color="#d04848")})})}async function Oa(t,e){let r=zt(e.theme),n=r?"#888":"#666",o=r?"#0f0f1f":"#f5f5f8",i=r?"#e0e0e0":"#1a1a2e";return t.dialog.innerHTML=`
48
+ `;let a=t.dialog.querySelector("#signet-login-qr");return a&&ha.default.toCanvas(a,c,{width:200,margin:1,errorCorrectionLevel:"M",color:{dark:"#0a0418",light:"#ffffff"}}).catch(()=>{}),new Promise(f=>{let d=!1,p=l=>{d||(d=!0,f(l))};t.dialog.querySelector('[data-action="back"]')?.addEventListener("click",()=>{p(null)}),t.dialog.querySelector('[data-action="cancel"]')?.addEventListener("click",()=>{p(null)}),Io({requestId:e.challenge,relayUrl:e.relayUrl,sessionPrivKey:o,expectedOrigin:e.origin,timeout:e.timeout}).then(l=>{let u={id:l.authEvent.id,pubkey:l.authEvent.pubkey,kind:21236,created_at:l.authEvent.created_at,tags:l.authEvent.tags,content:l.authEvent.content,sig:l.authEvent.sig},y={pubkey:l.pubkey,authEvent:u};l.displayName&&(y.displayName=l.displayName),p(y)}).catch(l=>{let u=t.dialog.querySelector("#signet-login-status");u&&(u.textContent=`\u2717 ${l instanceof Error?l.message:String(l)}`,u.style.color="#d04848")})})}async function Ou(t,e){let r=En(e.theme),n=r?"#888":"#666",o=r?"#0f0f1f":"#f5f5f8",i=r?"#e0e0e0":"#1a1a2e";return t.dialog.innerHTML=`
44
49
  <h2 style="margin:0 0 8px;font-size:1.2rem;">Paste bunker URI</h2>
45
50
  <p style="margin:0 0 16px;color:${n};font-size:0.85rem;">Connect to your NIP-46 bunker (Heartwood, nsecBunker, or any compatible signer).</p>
46
51
  <textarea id="signet-login-bunker-input" placeholder="bunker://..." rows="3" style="width:100%;background:${o};color:${i};border:1px solid ${r?"#3a3a4e":"#d0d0d0"};border-radius:8px;padding:10px;font-size:0.85rem;font-family:ui-monospace,monospace;box-sizing:border-box;resize:vertical;margin-bottom:12px;"></textarea>
47
52
  <p id="signet-login-bunker-status" style="margin:0 0 12px;color:${n};font-size:0.85rem;min-height:1.2em;"></p>
48
53
  <div style="display:flex;gap:8px;justify-content:space-between;">
49
- <button data-action="back" style="${ve(r)}width:auto;flex:0 0 auto;padding:8px 16px;">\u2190 Back</button>
50
- <button data-action="connect" style="${ve(r,!0)}width:auto;flex:1;padding:8px 16px;text-align:center;">Connect</button>
54
+ <button data-action="back" style="${Re(r)}width:auto;flex:0 0 auto;padding:8px 16px;">\u2190 Back</button>
55
+ <button data-action="connect" style="${Re(r,!0)}width:auto;flex:1;padding:8px 16px;text-align:center;">Connect</button>
51
56
  </div>
52
- `,new Promise(s=>{let c=!1,a=d=>{c||(c=!0,s(d))},f=t.dialog.querySelector("#signet-login-bunker-input"),p=t.dialog.querySelector("#signet-login-bunker-status"),g=t.dialog.querySelector('[data-action="connect"]');t.dialog.querySelector('[data-action="back"]')?.addEventListener("click",()=>{a(null)}),g?.addEventListener("click",async()=>{let d=f?.value.trim()??"";if(!d){p&&(p.textContent="Please paste a bunker URI.");return}p&&(p.textContent="Connecting\u2026",p.style.color=""),g.disabled=!0;try{let l=await Pt({uri:d});a(l)}catch(l){p&&(p.textContent=`\u2717 ${l instanceof Error?l.message:String(l)}`,p.style.color="#d04848"),g.disabled=!1}})})}function Ia(t){let e=t.challenge??Ba();if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("challenge-must-be-64-hex");let r=typeof window<"u"?window.location.origin:"http://localhost",n=Math.max(5e3,Math.min(t.timeout??He.timeout,6e5)),o={appName:t.appName,challenge:e.toLowerCase(),origin:r,relayUrl:t.relayUrl??He.relayUrl,theme:t.theme??He.theme,timeout:n,signetAppOrigin:t.signetAppOrigin??He.signetAppOrigin};return t.preferredMethod!==void 0&&(o.preferredMethod=t.preferredMethod),t.redirectCallback!==void 0&&(o.redirectCallback=t.redirectCallback),o}async function is(t){if(!t.appName||t.appName.length===0)throw new Error("appName-required");if(t.appName.length>64)throw new Error("appName-too-long");let e=Ia(t),r=ka(e.theme);try{for(;;){let n=e.preferredMethod?e.preferredMethod:await Ra(r,e.appName,e.theme);if(n==="cancel")return null;if(n==="nip07"){let o=await _a(r,e);if(!o){if(e.preferredMethod)return null;continue}let i=await Ht();return{pubkey:o.pubkey,method:"nip07",signer:i,authEvent:o.authEvent}}if(n==="redirect")return await Cn({appName:e.appName,challenge:e.challenge,origin:e.origin,signetAppOrigin:e.signetAppOrigin,...e.redirectCallback!==void 0?{redirectCallback:e.redirectCallback}:{}}),null;if(n==="qr"){let o=await La(r,e);if(!o){if(e.preferredMethod)return null;continue}let i=new Ee(o.pubkey,o.authEvent),s={pubkey:o.pubkey,method:"redirect",signer:i,authEvent:o.authEvent};return o.displayName&&(s.displayName=o.displayName),s}if(n==="bunker"){let o=await Oa(r,e);if(!o){if(e.preferredMethod)return null;continue}let i=await o.signEvent({kind:21236,content:"",tags:[["challenge",e.challenge],["origin",e.origin],["app",e.appName]]});return{pubkey:o.pubkey,method:"bunker",signer:o,authEvent:i}}}}finally{Aa(r)}}function ss(t){let e={};typeof window<"u"&&new URLSearchParams(window.location.search).forEach((o,i)=>{e[i]=o});let r=typeof window<"u"&&!!window.opener&&window.opener!==window;if(r){try{window.opener.postMessage({type:"signet-login-callback",params:e},"*")}catch{}if(t?.closeAfterPost??!0)try{window.close()}catch{}}return{params:e,isPopup:r}}async function cs(t){if(t.mode==="redirect"){if(typeof window>"u")throw new Error("signet-login: redirect mode requires a browser environment");let r=t.challenge??Ta();if(!/^[0-9a-f]{64}$/i.test(r))throw new Error("challenge-must-be-64-hex");if(!t.appName||t.appName.length===0)throw new Error("appName-required");if(t.appName.length>64)throw new Error("appName-too-long");return Cn({appName:t.appName,challenge:r.toLowerCase(),origin:window.location.origin,signetAppOrigin:t.signetAppOrigin??He.signetAppOrigin,...t.redirectCallback!==void 0?{redirectCallback:t.redirectCallback}:{}})}let e=await is(t);return e?(t.persist!==!1&&zr(e),e):null}function Ta(){let t=new Uint8Array(32);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}async function as(t){let e=Ji();if(!e)return null;let r;try{r=JSON.parse(e.authEventJson)}catch{return Ne(),null}if(e.method==="nip07"){if(!Nt()){let i=new Ee(e.pubkey,r);return{pubkey:e.pubkey,method:"redirect",signer:i,authEvent:r}}try{let i=await Ht();return i.pubkey!==e.pubkey?(Ne(),null):{pubkey:e.pubkey,method:"nip07",signer:i,authEvent:r}}catch{return Ne(),null}}if(e.method==="bunker"){if(t?.reconnectBunker===!1){let i=new Ee(e.pubkey,r);return{pubkey:e.pubkey,method:"redirect",signer:i,authEvent:r}}if(!e.bunkerUri||!e.bunkerClientSkHex)return Ne(),null;try{let i=ns(e.bunkerClientSkHex),s=await Pt({uri:e.bunkerUri,clientSecretKey:i});return s.pubkey!==e.pubkey?(await s.close(),Ne(),null):{pubkey:e.pubkey,method:"bunker",signer:s,authEvent:r}}catch{return Ne(),null}}let n=new Ee(e.pubkey,r),o={pubkey:e.pubkey,method:"redirect",signer:n,authEvent:r};return e.displayName&&(o.displayName=e.displayName),o}var fs=ss;async function ls(){let t=os();if(t.kind!=="session")return t;if(t.bunkerUri)try{let e=await Pt({uri:t.bunkerUri});if(e.pubkey.toLowerCase()===t.session.pubkey.toLowerCase()){let r={pubkey:t.session.pubkey,method:"bunker",signer:e,authEvent:t.session.authEvent};return t.session.displayName&&(r.displayName=t.session.displayName),zr(r),{kind:"session",session:r}}try{await e.close()}catch{}}catch{}return zr(t.session),t}async function us(t){if(t)try{await t.signer.close()}catch{}Ne()}function zr(t){let e={pubkey:t.pubkey,method:t.method,authEventJson:JSON.stringify(t.authEvent)};if(t.method==="bunker"){let r=t.signer;r.bunkerUri&&r.clientSecretKey instanceof Uint8Array&&(e.bunkerUri=r.bunkerUri,e.bunkerClientSkHex=ts(r.clientSecretKey))}t.expiresAt!==void 0&&(e.expiresAt=t.expiresAt),t.displayName!==void 0&&(e.displayName=t.displayName),Xi(e)}if(typeof window<"u"){let e=window.Signet??{};Object.assign(e,{login:cs,restoreSession:as,logout:us,handleCallback:fs,handleRedirectCallback:ls}),window.Signet=e}return ms(Ua);})();
57
+ `,new Promise(s=>{let c=!1,a=l=>{c||(c=!0,s(l))},f=t.dialog.querySelector("#signet-login-bunker-input"),d=t.dialog.querySelector("#signet-login-bunker-status"),p=t.dialog.querySelector('[data-action="connect"]');t.dialog.querySelector('[data-action="back"]')?.addEventListener("click",()=>{a(null)}),p?.addEventListener("click",async()=>{let l=f?.value.trim()??"";if(!l){d&&(d.textContent="Please paste a bunker URI.");return}d&&(d.textContent="Connecting\u2026",d.style.color=""),p.disabled=!0;try{let u=await rn({uri:l});a(u)}catch(u){d&&(d.textContent=`\u2717 ${u instanceof Error?u.message:String(u)}`,d.style.color="#d04848"),p.disabled=!1}})})}function Hu(t){let e=t.challenge??Iu();if(!/^[0-9a-f]{64}$/i.test(e))throw new Error("challenge-must-be-64-hex");let r=typeof window<"u"?window.location.origin:"http://localhost",n=Math.max(5e3,Math.min(t.timeout??Ve.timeout,6e5)),o={appName:t.appName,challenge:e.toLowerCase(),origin:r,relayUrl:t.relayUrl??Ve.relayUrl,theme:t.theme??Ve.theme,timeout:n,signetAppOrigin:t.signetAppOrigin??Ve.signetAppOrigin};return t.preferredMethod!==void 0&&(o.preferredMethod=t.preferredMethod),t.redirectCallback!==void 0&&(o.redirectCallback=t.redirectCallback),o}async function ga(t){if(!t.appName||t.appName.length===0)throw new Error("appName-required");if(t.appName.length>64)throw new Error("appName-too-long");let e=Hu(t),r=Tu(e.theme);try{for(;;){let n=e.preferredMethod?e.preferredMethod:await Nu(r,e.appName,e.theme);if(n==="cancel")return null;if(n==="nip07"){let o=await _u(r,e);if(!o){if(e.preferredMethod)return null;continue}let i=await nn();return{pubkey:o.pubkey,method:"nip07",signer:i,authEvent:o.authEvent}}if(n==="redirect")return await cr({appName:e.appName,challenge:e.challenge,origin:e.origin,signetAppOrigin:e.signetAppOrigin,...e.redirectCallback!==void 0?{redirectCallback:e.redirectCallback}:{}}),null;if(n==="qr"){let o=await Uu(r,e);if(!o){if(e.preferredMethod)return null;continue}let i=new Ae(o.pubkey,o.authEvent),s={pubkey:o.pubkey,method:"redirect",signer:i,authEvent:o.authEvent};return o.displayName&&(s.displayName=o.displayName),s}if(n==="bunker"){let o=await Ou(r,e);if(!o){if(e.preferredMethod)return null;continue}let i=await o.signEvent({kind:21236,content:"",tags:[["challenge",e.challenge],["origin",e.origin],["app",e.appName]]});return{pubkey:o.pubkey,method:"bunker",signer:o,authEvent:i}}}}finally{Lu(r)}}function pa(t){let e={};typeof window<"u"&&new URLSearchParams(window.location.search).forEach((o,i)=>{e[i]=o});let r=typeof window<"u"&&!!window.opener&&window.opener!==window;if(r){try{window.opener.postMessage({type:"signet-login-callback",params:e},"*")}catch{}if(t?.closeAfterPost??!0)try{window.close()}catch{}}return{params:e,isPopup:r}}async function ya(t){if(t.mode==="redirect"){if(typeof window>"u")throw new Error("signet-login: redirect mode requires a browser environment");let r=t.challenge??Pu();if(!/^[0-9a-f]{64}$/i.test(r))throw new Error("challenge-must-be-64-hex");if(!t.appName||t.appName.length===0)throw new Error("appName-required");if(t.appName.length>64)throw new Error("appName-too-long");return cr({appName:t.appName,challenge:r.toLowerCase(),origin:window.location.origin,signetAppOrigin:t.signetAppOrigin??Ve.signetAppOrigin,...t.redirectCallback!==void 0?{redirectCallback:t.redirectCallback}:{}})}let e=await ga(t);return e?(t.persist!==!1&&ei(e),e):null}function Pu(){let t=new Uint8Array(32);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}async function ba(t){let e=ic();if(!e)return null;let r;try{r=JSON.parse(e.authEventJson)}catch{return De(),null}if(e.method==="nip07"){if(!tn()){let i=new Ae(e.pubkey,r);return{pubkey:e.pubkey,method:"redirect",signer:i,authEvent:r}}try{let i=await nn();return i.pubkey!==e.pubkey?(De(),null):{pubkey:e.pubkey,method:"nip07",signer:i,authEvent:r}}catch{return De(),null}}if(e.method==="bunker"){if(t?.reconnectBunker===!1){let i=new Ae(e.pubkey,r);return{pubkey:e.pubkey,method:"redirect",signer:i,authEvent:r}}if(!e.bunkerUri||!e.bunkerClientSkHex)return De(),null;try{let i=lc(e.bunkerClientSkHex),s=await rn({uri:e.bunkerUri,clientSecretKey:i});return s.pubkey!==e.pubkey?(await s.close(),De(),null):{pubkey:e.pubkey,method:"bunker",signer:s,authEvent:r}}catch{return De(),null}}let n=new Ae(e.pubkey,r),o={pubkey:e.pubkey,method:"redirect",signer:n,authEvent:r};return e.displayName&&(o.displayName=e.displayName),o}var ma=pa;async function wa(){let t=dc();if(t.kind!=="session")return t;if(t.bunkerUri)try{let e=await rn({uri:t.bunkerUri});if(e.pubkey.toLowerCase()===t.session.pubkey.toLowerCase()){let r={pubkey:t.session.pubkey,method:"bunker",signer:e,authEvent:t.session.authEvent};return t.session.displayName&&(r.displayName=t.session.displayName),ei(r),{kind:"session",session:r}}try{await e.close()}catch{}}catch{}return ei(t.session),t}async function xa(t){if(t)try{await t.signer.close()}catch{}De()}function ei(t){let e={pubkey:t.pubkey,method:t.method,authEventJson:JSON.stringify(t.authEvent)};if(t.method==="bunker"){let r=t.signer;r.bunkerUri&&r.clientSecretKey instanceof Uint8Array&&(e.bunkerUri=r.bunkerUri,e.bunkerClientSkHex=fc(r.clientSecretKey))}t.expiresAt!==void 0&&(e.expiresAt=t.expiresAt),t.displayName!==void 0&&(e.displayName=t.displayName),oc(e)}if(typeof window<"u"){let e=window.Signet??{};Object.assign(e,{login:ya,restoreSession:ba,logout:xa,handleCallback:ma,handleRedirectCallback:wa}),window.Signet=e}return Ia(qu);})();
53
58
  /*! Bundled license information:
54
59
 
55
60
  @noble/hashes/utils.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "signet-login",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Sign in with Signet — drop-in login SDK for Nostr-aware websites. NIP-07, bunker URI, and Signet redirect/QR in one unified API.",
5
5
  "type": "module",
6
6
  "main": "./dist/signet-login.js",
@@ -35,7 +35,9 @@
35
35
  "dependencies": {
36
36
  "@noble/curves": "^1.8.1",
37
37
  "@noble/hashes": "^1.7.1",
38
+ "@types/qrcode": "^1.5.6",
38
39
  "nostr-tools": "^2.23.3",
40
+ "qrcode": "^1.5.4",
39
41
  "signet-verify": "^0.3.1"
40
42
  },
41
43
  "devDependencies": {