Files
next.orly.dev/app/web/dist/bundle.js
mleku e84949140b
Some checks failed
Go / build-and-release (push) Has been cancelled
Add WireGuard VPN with random /31 subnet isolation (v0.40.0)
- Add embedded WireGuard VPN server using wireguard-go + netstack
- Implement deterministic /31 subnet allocation from seed + sequence
- Use Badger's built-in Sequence for atomic counter allocation
- Add NIP-46 bunker server for remote signing over VPN
- Add revoked key tracking and access audit logging for users
- Add Bunker tab to web UI with WireGuard/bunker QR codes
- Support key regeneration with old keypair archiving

New environment variables:
- ORLY_WG_ENABLED: Enable WireGuard VPN server
- ORLY_WG_PORT: UDP port for WireGuard (default 51820)
- ORLY_WG_ENDPOINT: Public endpoint for WireGuard
- ORLY_WG_NETWORK: Base network for subnet pool (default 10.0.0.0/8)
- ORLY_BUNKER_ENABLED: Enable NIP-46 bunker
- ORLY_BUNKER_PORT: WebSocket port for bunker (default 3335)

Files added:
- pkg/wireguard/: WireGuard server, keygen, subnet pool, errors
- pkg/bunker/: NIP-46 bunker server and session handling
- pkg/database/wireguard.go: Peer storage with audit logging
- app/handle-wireguard.go: API endpoints for config/regenerate/audit
- app/wireguard-helpers.go: Key derivation helpers
- app/web/src/BunkerView.svelte: Bunker UI with QR codes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 16:32:48 +02:00

28 lines
524 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var app=function(){"use strict";function e(){}function t(e){return e()}function n(){return Object.create(null)}function r(e){e.forEach(t)}function i(e){return"function"==typeof e}function o(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}let s;function a(e,t){return s||(s=document.createElement("a")),s.href=t,e===s.href}const l="undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:global;function c(e,t){e.appendChild(t)}function u(e,t,n){e.insertBefore(t,n||null)}function d(e){e.parentNode&&e.parentNode.removeChild(e)}function f(e,t){for(let n=0;n<e.length;n+=1)e[n]&&e[n].d(t)}function h(e){return document.createElement(e)}function p(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function g(e){return document.createTextNode(e)}function m(){return g(" ")}function y(){return g("")}function w(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}function v(e){return function(t){return t.stopPropagation(),e.call(this,t)}}function A(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function b(e){return""===e?null:+e}function k(e,t){t=""+t,e.data!==t&&(e.data=t)}function I(e,t){e.value=null==t?"":t}function C(e,t,n,r){null==n?e.style.removeProperty(t):e.style.setProperty(t,n,r?"important":"")}function E(e,t,n){for(let n=0;n<e.options.length;n+=1){const r=e.options[n];if(r.__value===t)return void(r.selected=!0)}n&&void 0===t||(e.selectedIndex=-1)}function x(e){const t=e.querySelector(":checked");return t&&t.__value}function B(e,t,n){e.classList[n?"add":"remove"](t)}let S;function Q(e){S=e}function F(){if(!S)throw new Error("Function called outside component initialization");return S}function D(e){F().$$.on_mount.push(e)}function $(e){F().$$.on_destroy.push(e)}function R(){const e=F();return(t,n,{cancelable:r=!1}={})=>{const i=e.$$.callbacks[t];if(i){const o=function(e,t,{bubbles:n=!1,cancelable:r=!1}={}){const i=document.createEvent("CustomEvent");return i.initCustomEvent(e,n,r,t),i}(t,n,{cancelable:r});return i.slice().forEach(t=>{t.call(e,o)}),!o.defaultPrevented}return!0}}function P(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach(e=>e.call(this,t))}const T=[],U=[];let N=[];const L=[],M=Promise.resolve();let _=!1;function O(e){N.push(e)}function H(e){L.push(e)}const j=new Set;let G=0;function J(){if(0!==G)return;const e=S;do{try{for(;G<T.length;){const e=T[G];G++,Q(e),K(e.$$)}}catch(e){throw T.length=0,G=0,e}for(Q(null),T.length=0,G=0;U.length;)U.pop()();for(let e=0;e<N.length;e+=1){const t=N[e];j.has(t)||(j.add(t),t())}N.length=0}while(T.length);for(;L.length;)L.pop()();_=!1,j.clear(),Q(e)}function K(e){if(null!==e.fragment){e.update(),r(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(O)}}const V=new Set;let z;function q(){z={r:0,c:[],p:z}}function Y(){z.r||r(z.c),z=z.p}function W(e,t){e&&e.i&&(V.delete(e),e.i(t))}function Z(e,t,n,r){if(e&&e.o){if(V.has(e))return;V.add(e),z.c.push(()=>{V.delete(e),r&&(n&&e.d(1),r())}),e.o(t)}else r&&r()}function X(e,t,n){const r=e.$$.props[t];void 0!==r&&(e.$$.bound[r]=n,n(e.$$.ctx[r]))}function ee(e){e&&e.c()}function te(e,n,o,s){const{fragment:a,after_update:l}=e.$$;a&&a.m(n,o),s||O(()=>{const n=e.$$.on_mount.map(t).filter(i);e.$$.on_destroy?e.$$.on_destroy.push(...n):r(n),e.$$.on_mount=[]}),l.forEach(O)}function ne(e,t){const n=e.$$;null!==n.fragment&&(!function(e){const t=[],n=[];N.forEach(r=>-1===e.indexOf(r)?t.push(r):n.push(r)),n.forEach(e=>e()),N=t}(n.after_update),r(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function re(e,t){-1===e.$$.dirty[0]&&(T.push(e),_||(_=!0,M.then(J)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function ie(t,i,o,s,a,l,c,u=[-1]){const f=S;Q(t);const h=t.$$={fragment:null,ctx:[],props:l,update:e,not_equal:a,bound:n(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(i.context||(f?f.$$.context:[])),callbacks:n(),dirty:u,skip_bound:!1,root:i.target||f.$$.root};c&&c(h.root);let p=!1;if(h.ctx=o?o(t,i.props||{},(e,n,...r)=>{const i=r.length?r[0]:n;return h.ctx&&a(h.ctx[e],h.ctx[e]=i)&&(!h.skip_bound&&h.bound[e]&&h.bound[e](i),p&&re(t,e)),n}):[],h.update(),p=!0,r(h.before_update),h.fragment=!!s&&s(h.ctx),i.target){if(i.hydrate){const e=function(e){return Array.from(e.childNodes)}(i.target);h.fragment&&h.fragment.l(e),e.forEach(d)}else h.fragment&&h.fragment.c();i.intro&&W(t.$$.fragment),te(t,i.target,i.anchor,i.customElement),J()}Q(f)}class oe{$destroy(){ne(this,1),this.$destroy=e}$on(t,n){if(!i(n))return e;const r=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return r.push(n),()=>{const e=r.indexOf(n);-1!==e&&r.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}function se(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`Wrong positive integer: ${e}`)}function ae(e,...t){if(!(e instanceof Uint8Array))throw new Error("Expected Uint8Array");if(t.length>0&&!t.includes(e.length))throw new Error(`Expected Uint8Array of length ${t}, not of length=${e.length}`)}function le(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}const ce="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,ue=e=>e instanceof Uint8Array,de=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),fe=(e,t)=>e<<32-t|e>>>t;
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");function he(e){if("string"==typeof e&&(e=function(e){if("string"!=typeof e)throw new Error("utf8ToBytes expected string, got "+typeof e);return new Uint8Array((new TextEncoder).encode(e))}(e)),!ue(e))throw new Error("expected Uint8Array, got "+typeof e);return e}let pe=class{clone(){return this._cloneInto()}};function ge(e){const t=t=>e().update(he(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function me(e=32){if(ce&&"function"==typeof ce.getRandomValues)return ce.getRandomValues(new Uint8Array(e));throw new Error("crypto.getRandomValues must be defined")}let ye=class extends pe{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=de(this.buffer)}update(e){le(this);const{view:t,buffer:n,blockLen:r}=this,i=(e=he(e)).length;for(let o=0;o<i;){const s=Math.min(r-this.pos,i-o);if(s===r){const t=de(e);for(;r<=i-o;o+=r)this.process(t,o);continue}n.set(e.subarray(o,o+s),this.pos),this.pos+=s,o+=s,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){le(this),function(e,t){ae(e);const n=t.outputLen;if(e.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}(e,this),this.finished=!0;const{buffer:t,view:n,blockLen:r,isLE:i}=this;let{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>r-o&&(this.process(n,0),o=0);for(let e=o;e<r;e++)t[e]=0;!function(e,t,n,r){if("function"==typeof e.setBigUint64)return e.setBigUint64(t,n,r);const i=BigInt(32),o=BigInt(4294967295),s=Number(n>>i&o),a=Number(n&o),l=r?4:0,c=r?0:4;e.setUint32(t+l,s,r),e.setUint32(t+c,a,r)}(n,r-8,BigInt(8*this.length),i),this.process(n,0);const s=de(e),a=this.outputLen;if(a%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=a/4,c=this.get();if(l>c.length)throw new Error("_sha2: outputLen bigger than state");for(let e=0;e<l;e++)s.setUint32(4*e,c[e],i)}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:t,buffer:n,length:r,finished:i,destroyed:o,pos:s}=this;return e.length=r,e.pos=s,e.finished=i,e.destroyed=o,r%t&&e.buffer.set(n),e}};const we=(e,t,n)=>e&t^~e&n,ve=(e,t,n)=>e&t^e&n^t&n,Ae=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),be=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ke=new Uint32Array(64);let Ie=class extends ye{constructor(){super(64,32,8,!1),this.A=0|be[0],this.B=0|be[1],this.C=0|be[2],this.D=0|be[3],this.E=0|be[4],this.F=0|be[5],this.G=0|be[6],this.H=0|be[7]}get(){const{A:e,B:t,C:n,D:r,E:i,F:o,G:s,H:a}=this;return[e,t,n,r,i,o,s,a]}set(e,t,n,r,i,o,s,a){this.A=0|e,this.B=0|t,this.C=0|n,this.D=0|r,this.E=0|i,this.F=0|o,this.G=0|s,this.H=0|a}process(e,t){for(let n=0;n<16;n++,t+=4)ke[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){const t=ke[e-15],n=ke[e-2],r=fe(t,7)^fe(t,18)^t>>>3,i=fe(n,17)^fe(n,19)^n>>>10;ke[e]=i+ke[e-7]+r+ke[e-16]|0}let{A:n,B:r,C:i,D:o,E:s,F:a,G:l,H:c}=this;for(let e=0;e<64;e++){const t=c+(fe(s,6)^fe(s,11)^fe(s,25))+we(s,a,l)+Ae[e]+ke[e]|0,u=(fe(n,2)^fe(n,13)^fe(n,22))+ve(n,r,i)|0;c=l,l=a,a=s,s=o+t|0,o=i,i=r,r=n,n=t+u|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,o=o+this.D|0,s=s+this.E|0,a=a+this.F|0,l=l+this.G|0,c=c+this.H|0,this.set(n,r,i,o,s,a,l,c)}roundClean(){ke.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};const Ce=ge(()=>new Ie),Ee=BigInt(0),xe=BigInt(1),Be=BigInt(2),Se=e=>e instanceof Uint8Array,Qe=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function Fe(e){if(!Se(e))throw new Error("Uint8Array expected");let t="";for(let n=0;n<e.length;n++)t+=Qe[e[n]];return t}function De(e){const t=e.toString(16);return 1&t.length?`0${t}`:t}function $e(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);return BigInt(""===e?"0":`0x${e}`)}function Re(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const n=new Uint8Array(t/2);for(let t=0;t<n.length;t++){const r=2*t,i=e.slice(r,r+2),o=Number.parseInt(i,16);if(Number.isNaN(o)||o<0)throw new Error("Invalid byte sequence");n[t]=o}return n}function Pe(e){return $e(Fe(e))}function Te(e){if(!Se(e))throw new Error("Uint8Array expected");return $e(Fe(Uint8Array.from(e).reverse()))}function Ue(e,t){return Re(e.toString(16).padStart(2*t,"0"))}function Ne(e,t){return Ue(e,t).reverse()}function Le(e,t,n){let r;if("string"==typeof t)try{r=Re(t)}catch(n){throw new Error(`${e} must be valid hex string, got "${t}". Cause: ${n}`)}else{if(!Se(t))throw new Error(`${e} must be hex string or Uint8Array`);r=Uint8Array.from(t)}const i=r.length;if("number"==typeof n&&i!==n)throw new Error(`${e} expected ${n} bytes, got ${i}`);return r}function Me(...e){const t=new Uint8Array(e.reduce((e,t)=>e+t.length,0));let n=0;return e.forEach(e=>{if(!Se(e))throw new Error("Uint8Array expected");t.set(e,n),n+=e.length}),t}const _e=e=>(Be<<BigInt(e-1))-xe,Oe=e=>new Uint8Array(e),He=e=>Uint8Array.from(e);function je(e,t,n){if("number"!=typeof e||e<2)throw new Error("hashLen must be a number");if("number"!=typeof t||t<2)throw new Error("qByteLen must be a number");if("function"!=typeof n)throw new Error("hmacFn must be a function");let r=Oe(e),i=Oe(e),o=0;const s=()=>{r.fill(1),i.fill(0),o=0},a=(...e)=>n(i,r,...e),l=(e=Oe())=>{i=a(He([0]),e),r=a(),0!==e.length&&(i=a(He([1]),e),r=a())},c=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let e=0;const n=[];for(;e<t;){r=a();const t=r.slice();n.push(t),e+=r.length}return Me(...n)};return(e,t)=>{let n;for(s(),l(e);!(n=t(c()));)l();return s(),n}}const Ge={bigint:e=>"bigint"==typeof e,function:e=>"function"==typeof e,boolean:e=>"boolean"==typeof e,string:e=>"string"==typeof e,stringOrUint8Array:e=>"string"==typeof e||e instanceof Uint8Array,isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>"function"==typeof e&&Number.isSafeInteger(e.outputLen)};function Je(e,t,n={}){const r=(t,n,r)=>{const i=Ge[n];if("function"!=typeof i)throw new Error(`Invalid validator "${n}", expected function`);const o=e[t];if(!(r&&void 0===o||i(o,e)))throw new Error(`Invalid param ${String(t)}=${o} (${typeof o}), expected ${n}`)};for(const[e,n]of Object.entries(t))r(e,n,!1);for(const[e,t]of Object.entries(n))r(e,t,!0);return e}var Ke=Object.freeze({__proto__:null,bitGet:function(e,t){return e>>BigInt(t)&xe},bitLen:function(e){let t;for(t=0;e>Ee;e>>=xe,t+=1);return t},bitMask:_e,bitSet:(e,t,n)=>e|(n?xe:Ee)<<BigInt(t),bytesToHex:Fe,bytesToNumberBE:Pe,bytesToNumberLE:Te,concatBytes:Me,createHmacDrbg:je,ensureBytes:Le,equalBytes:function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0},hexToBytes:Re,hexToNumber:$e,numberToBytesBE:Ue,numberToBytesLE:Ne,numberToHexUnpadded:De,numberToVarBytesBE:function(e){return Re(De(e))},utf8ToBytes:function(e){if("string"!=typeof e)throw new Error("utf8ToBytes expected string, got "+typeof e);return new Uint8Array((new TextEncoder).encode(e))},validateObject:Je});
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Ve=BigInt(0),ze=BigInt(1),qe=BigInt(2),Ye=BigInt(3),We=BigInt(4),Ze=BigInt(5),Xe=BigInt(8);function et(e,t){const n=e%t;return n>=Ve?n:t+n}function tt(e,t,n){if(n<=Ve||t<Ve)throw new Error("Expected power/modulo > 0");if(n===ze)return Ve;let r=ze;for(;t>Ve;)t&ze&&(r=r*e%n),e=e*e%n,t>>=ze;return r}function nt(e,t,n){let r=e;for(;t-- >Ve;)r*=r,r%=n;return r}function rt(e,t){if(e===Ve||t<=Ve)throw new Error(`invert: expected positive integers, got n=${e} mod=${t}`);let n=et(e,t),r=t,i=Ve,o=ze;for(;n!==Ve;){const e=r%n,t=i-o*(r/n);r=n,n=e,i=o,o=t}if(r!==ze)throw new Error("invert: does not exist");return et(i,t)}function it(e){if(e%We===Ye){const t=(e+ze)/We;return function(e,n){const r=e.pow(n,t);if(!e.eql(e.sqr(r),n))throw new Error("Cannot find square root");return r}}if(e%Xe===Ze){const t=(e-Ze)/Xe;return function(e,n){const r=e.mul(n,qe),i=e.pow(r,t),o=e.mul(n,i),s=e.mul(e.mul(o,qe),i),a=e.mul(o,e.sub(s,e.ONE));if(!e.eql(e.sqr(a),n))throw new Error("Cannot find square root");return a}}return function(e){const t=(e-ze)/qe;let n,r,i;for(n=e-ze,r=0;n%qe===Ve;n/=qe,r++);for(i=qe;i<e&&tt(i,t,e)!==e-ze;i++);if(1===r){const t=(e+ze)/We;return function(e,n){const r=e.pow(n,t);if(!e.eql(e.sqr(r),n))throw new Error("Cannot find square root");return r}}const o=(n+ze)/qe;return function(e,s){if(e.pow(s,t)===e.neg(e.ONE))throw new Error("Cannot find square root");let a=r,l=e.pow(e.mul(e.ONE,i),n),c=e.pow(s,o),u=e.pow(s,n);for(;!e.eql(u,e.ONE);){if(e.eql(u,e.ZERO))return e.ZERO;let t=1;for(let n=e.sqr(u);t<a&&!e.eql(n,e.ONE);t++)n=e.sqr(n);const n=e.pow(l,ze<<BigInt(a-t-1));l=e.sqr(n),c=e.mul(c,n),u=e.mul(u,l),a=t}return c}}(e)}BigInt(9),BigInt(16);const ot=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function st(e,t){const n=void 0!==t?t:e.toString(2).length;return{nBitLength:n,nByteLength:Math.ceil(n/8)}}function at(e){if("bigint"!=typeof e)throw new Error("field order must be bigint");const t=e.toString(2).length;return Math.ceil(t/8)}function lt(e){const t=at(e);return t+Math.ceil(t/2)}
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
const ct=BigInt(0),ut=BigInt(1);function dt(e){return function(e){const t=ot.reduce((e,t)=>(e[t]="function",e),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"});Je(e,t)}(e.Fp),Je(e,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...st(e.n,e.nBitLength),...e,p:e.Fp.ORDER})}
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const{bytesToNumberBE:ft,hexToBytes:ht}=Ke,pt={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(e){const{Err:t}=pt;if(e.length<2||2!==e[0])throw new t("Invalid signature integer tag");const n=e[1],r=e.subarray(2,n+2);if(!n||r.length!==n)throw new t("Invalid signature integer: wrong length");if(128&r[0])throw new t("Invalid signature integer: negative");if(0===r[0]&&!(128&r[1]))throw new t("Invalid signature integer: unnecessary leading zero");return{d:ft(r),l:e.subarray(n+2)}},toSig(e){const{Err:t}=pt,n="string"==typeof e?ht(e):e;if(!(n instanceof Uint8Array))throw new Error("ui8a expected");let r=n.length;if(r<2||48!=n[0])throw new t("Invalid signature tag");if(n[1]!==r-2)throw new t("Invalid signature: incorrect length");const{d:i,l:o}=pt._parseInt(n.subarray(2)),{d:s,l:a}=pt._parseInt(o);if(a.length)throw new t("Invalid signature: left bytes after parsing");return{r:i,s:s}},hexFromSig(e){const t=e=>8&Number.parseInt(e[0],16)?"00"+e:e,n=e=>{const t=e.toString(16);return 1&t.length?`0${t}`:t},r=t(n(e.s)),i=t(n(e.r)),o=r.length/2,s=i.length/2,a=n(o),l=n(s);return`30${n(s+o+4)}02${l}${i}02${a}${r}`}},gt=BigInt(0),mt=BigInt(1);BigInt(2);const yt=BigInt(3);function wt(e){const t=function(e){const t=dt(e);Je(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:n,Fp:r,a:i}=t;if(n){if(!r.eql(i,r.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if("object"!=typeof n||"bigint"!=typeof n.beta||"function"!=typeof n.splitScalar)throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}(e),{Fp:n}=t,r=t.toBytes||((e,t,r)=>{const i=t.toAffine();return Me(Uint8Array.from([4]),n.toBytes(i.x),n.toBytes(i.y))}),i=t.fromBytes||(e=>{const t=e.subarray(1);return{x:n.fromBytes(t.subarray(0,n.BYTES)),y:n.fromBytes(t.subarray(n.BYTES,2*n.BYTES))}});function o(e){const{a:r,b:i}=t,o=n.sqr(e),s=n.mul(o,e);return n.add(n.add(s,n.mul(e,r)),i)}if(!n.eql(n.sqr(t.Gy),o(t.Gx)))throw new Error("bad generator point: equation left != right");function s(e){return"bigint"==typeof e&&gt<e&&e<t.n}function a(e){if(!s(e))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function l(e){const{allowedPrivateKeyLengths:n,nByteLength:r,wrapPrivateKey:i,n:o}=t;if(n&&"bigint"!=typeof e){if(e instanceof Uint8Array&&(e=Fe(e)),"string"!=typeof e||!n.includes(e.length))throw new Error("Invalid key");e=e.padStart(2*r,"0")}let s;try{s="bigint"==typeof e?e:Pe(Le("private key",e,r))}catch(t){throw new Error(`private key must be ${r} bytes, hex or bigint, not ${typeof e}`)}return i&&(s=et(s,o)),a(s),s}const c=new Map;function u(e){if(!(e instanceof d))throw new Error("ProjectivePoint expected")}class d{constructor(e,t,r){if(this.px=e,this.py=t,this.pz=r,null==e||!n.isValid(e))throw new Error("x required");if(null==t||!n.isValid(t))throw new Error("y required");if(null==r||!n.isValid(r))throw new Error("z required")}static fromAffine(e){const{x:t,y:r}=e||{};if(!e||!n.isValid(t)||!n.isValid(r))throw new Error("invalid affine point");if(e instanceof d)throw new Error("projective point not allowed");const i=e=>n.eql(e,n.ZERO);return i(t)&&i(r)?d.ZERO:new d(t,r,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(e){const t=n.invertBatch(e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(d.fromAffine)}static fromHex(e){const t=d.fromAffine(i(Le("pointHex",e)));return t.assertValidity(),t}static fromPrivateKey(e){return d.BASE.multiply(l(e))}_setWindowSize(e){this._WINDOW_SIZE=e,c.delete(this)}assertValidity(){if(this.is0()){if(t.allowInfinityPoint&&!n.is0(this.py))return;throw new Error("bad point: ZERO")}const{x:e,y:r}=this.toAffine();if(!n.isValid(e)||!n.isValid(r))throw new Error("bad point: x or y not FE");const i=n.sqr(r),s=o(e);if(!n.eql(i,s))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){const{y:e}=this.toAffine();if(n.isOdd)return!n.isOdd(e);throw new Error("Field doesn't support isOdd")}equals(e){u(e);const{px:t,py:r,pz:i}=this,{px:o,py:s,pz:a}=e,l=n.eql(n.mul(t,a),n.mul(o,i)),c=n.eql(n.mul(r,a),n.mul(s,i));return l&&c}negate(){return new d(this.px,n.neg(this.py),this.pz)}double(){const{a:e,b:r}=t,i=n.mul(r,yt),{px:o,py:s,pz:a}=this;let l=n.ZERO,c=n.ZERO,u=n.ZERO,f=n.mul(o,o),h=n.mul(s,s),p=n.mul(a,a),g=n.mul(o,s);return g=n.add(g,g),u=n.mul(o,a),u=n.add(u,u),l=n.mul(e,u),c=n.mul(i,p),c=n.add(l,c),l=n.sub(h,c),c=n.add(h,c),c=n.mul(l,c),l=n.mul(g,l),u=n.mul(i,u),p=n.mul(e,p),g=n.sub(f,p),g=n.mul(e,g),g=n.add(g,u),u=n.add(f,f),f=n.add(u,f),f=n.add(f,p),f=n.mul(f,g),c=n.add(c,f),p=n.mul(s,a),p=n.add(p,p),f=n.mul(p,g),l=n.sub(l,f),u=n.mul(p,h),u=n.add(u,u),u=n.add(u,u),new d(l,c,u)}add(e){u(e);const{px:r,py:i,pz:o}=this,{px:s,py:a,pz:l}=e;let c=n.ZERO,f=n.ZERO,h=n.ZERO;const p=t.a,g=n.mul(t.b,yt);let m=n.mul(r,s),y=n.mul(i,a),w=n.mul(o,l),v=n.add(r,i),A=n.add(s,a);v=n.mul(v,A),A=n.add(m,y),v=n.sub(v,A),A=n.add(r,o);let b=n.add(s,l);return A=n.mul(A,b),b=n.add(m,w),A=n.sub(A,b),b=n.add(i,o),c=n.add(a,l),b=n.mul(b,c),c=n.add(y,w),b=n.sub(b,c),h=n.mul(p,A),c=n.mul(g,w),h=n.add(c,h),c=n.sub(y,h),h=n.add(y,h),f=n.mul(c,h),y=n.add(m,m),y=n.add(y,m),w=n.mul(p,w),A=n.mul(g,A),y=n.add(y,w),w=n.sub(m,w),w=n.mul(p,w),A=n.add(A,w),m=n.mul(y,A),f=n.add(f,m),m=n.mul(b,A),c=n.mul(v,c),c=n.sub(c,m),m=n.mul(v,y),h=n.mul(b,h),h=n.add(h,m),new d(c,f,h)}subtract(e){return this.add(e.negate())}is0(){return this.equals(d.ZERO)}wNAF(e){return h.wNAFCached(this,c,e,e=>{const t=n.invertBatch(e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(d.fromAffine)})}multiplyUnsafe(e){const r=d.ZERO;if(e===gt)return r;if(a(e),e===mt)return this;const{endo:i}=t;if(!i)return h.unsafeLadder(this,e);let{k1neg:o,k1:s,k2neg:l,k2:c}=i.splitScalar(e),u=r,f=r,p=this;for(;s>gt||c>gt;)s&mt&&(u=u.add(p)),c&mt&&(f=f.add(p)),p=p.double(),s>>=mt,c>>=mt;return o&&(u=u.negate()),l&&(f=f.negate()),f=new d(n.mul(f.px,i.beta),f.py,f.pz),u.add(f)}multiply(e){a(e);let r,i,o=e;const{endo:s}=t;if(s){const{k1neg:e,k1:t,k2neg:a,k2:l}=s.splitScalar(o);let{p:c,f:u}=this.wNAF(t),{p:f,f:p}=this.wNAF(l);c=h.constTimeNegate(e,c),f=h.constTimeNegate(a,f),f=new d(n.mul(f.px,s.beta),f.py,f.pz),r=c.add(f),i=u.add(p)}else{const{p:e,f:t}=this.wNAF(o);r=e,i=t}return d.normalizeZ([r,i])[0]}multiplyAndAddUnsafe(e,t,n){const r=d.BASE,i=(e,t)=>t!==gt&&t!==mt&&e.equals(r)?e.multiply(t):e.multiplyUnsafe(t),o=i(this,t).add(i(e,n));return o.is0()?void 0:o}toAffine(e){const{px:t,py:r,pz:i}=this,o=this.is0();null==e&&(e=o?n.ONE:n.inv(i));const s=n.mul(t,e),a=n.mul(r,e),l=n.mul(i,e);if(o)return{x:n.ZERO,y:n.ZERO};if(!n.eql(l,n.ONE))throw new Error("invZ was invalid");return{x:s,y:a}}isTorsionFree(){const{h:e,isTorsionFree:n}=t;if(e===mt)return!0;if(n)return n(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:e,clearCofactor:n}=t;return e===mt?this:n?n(d,this):this.multiplyUnsafe(t.h)}toRawBytes(e=!0){return this.assertValidity(),r(d,this,e)}toHex(e=!0){return Fe(this.toRawBytes(e))}}d.BASE=new d(t.Gx,t.Gy,n.ONE),d.ZERO=new d(n.ZERO,n.ONE,n.ZERO);const f=t.nBitLength,h=function(e,t){const n=(e,t)=>{const n=t.negate();return e?n:t},r=e=>({windows:Math.ceil(t/e)+1,windowSize:2**(e-1)});return{constTimeNegate:n,unsafeLadder(t,n){let r=e.ZERO,i=t;for(;n>ct;)n&ut&&(r=r.add(i)),i=i.double(),n>>=ut;return r},precomputeWindow(e,t){const{windows:n,windowSize:i}=r(t),o=[];let s=e,a=s;for(let e=0;e<n;e++){a=s,o.push(a);for(let e=1;e<i;e++)a=a.add(s),o.push(a);s=a.double()}return o},wNAF(t,i,o){const{windows:s,windowSize:a}=r(t);let l=e.ZERO,c=e.BASE;const u=BigInt(2**t-1),d=2**t,f=BigInt(t);for(let e=0;e<s;e++){const t=e*a;let r=Number(o&u);o>>=f,r>a&&(r-=d,o+=ut);const s=t,h=t+Math.abs(r)-1,p=e%2!=0,g=r<0;0===r?c=c.add(n(p,i[s])):l=l.add(n(g,i[h]))}return{p:l,f:c}},wNAFCached(e,t,n,r){const i=e._WINDOW_SIZE||1;let o=t.get(e);return o||(o=this.precomputeWindow(e,i),1!==i&&t.set(e,r(o))),this.wNAF(i,o,n)}}}(d,t.endo?Math.ceil(f/2):f);return{CURVE:t,ProjectivePoint:d,normPrivateKeyToScalar:l,weierstrassEquation:o,isWithinCurveOrder:s}}function vt(e){const t=function(e){const t=dt(e);return Je(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}(e),{Fp:n,n:r}=t,i=n.BYTES+1,o=2*n.BYTES+1;function s(e){return et(e,r)}function a(e){return rt(e,r)}const{ProjectivePoint:l,normPrivateKeyToScalar:c,weierstrassEquation:u,isWithinCurveOrder:d}=wt({...t,toBytes(e,t,r){const i=t.toAffine(),o=n.toBytes(i.x),s=Me;return r?s(Uint8Array.from([t.hasEvenY()?2:3]),o):s(Uint8Array.from([4]),o,n.toBytes(i.y))},fromBytes(e){const t=e.length,r=e[0],s=e.subarray(1);if(t!==i||2!==r&&3!==r){if(t===o&&4===r){return{x:n.fromBytes(s.subarray(0,n.BYTES)),y:n.fromBytes(s.subarray(n.BYTES,2*n.BYTES))}}throw new Error(`Point of length ${t} was invalid. Expected ${i} compressed bytes or ${o} uncompressed bytes`)}{const e=Pe(s);if(!(gt<(a=e)&&a<n.ORDER))throw new Error("Point is not on curve");const t=u(e);let i=n.sqrt(t);return!(1&~r)!==((i&mt)===mt)&&(i=n.neg(i)),{x:e,y:i}}var a}}),f=e=>Fe(Ue(e,t.nByteLength));function h(e){return e>r>>mt}const p=(e,t,n)=>Pe(e.slice(t,n));class g{constructor(e,t,n){this.r=e,this.s=t,this.recovery=n,this.assertValidity()}static fromCompact(e){const n=t.nByteLength;return e=Le("compactSignature",e,2*n),new g(p(e,0,n),p(e,n,2*n))}static fromDER(e){const{r:t,s:n}=pt.toSig(Le("DER",e));return new g(t,n)}assertValidity(){if(!d(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!d(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(e){return new g(this.r,this.s,e)}recoverPublicKey(e){const{r:r,s:i,recovery:o}=this,c=v(Le("msgHash",e));if(null==o||![0,1,2,3].includes(o))throw new Error("recovery id invalid");const u=2===o||3===o?r+t.n:r;if(u>=n.ORDER)throw new Error("recovery id 2 or 3 invalid");const d=1&o?"03":"02",h=l.fromHex(d+f(u)),p=a(u),g=s(-c*p),m=s(i*p),y=l.BASE.multiplyAndAddUnsafe(h,g,m);if(!y)throw new Error("point at infinify");return y.assertValidity(),y}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,s(-this.s),this.recovery):this}toDERRawBytes(){return Re(this.toDERHex())}toDERHex(){return pt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Re(this.toCompactHex())}toCompactHex(){return f(this.r)+f(this.s)}}const m={isValidPrivateKey(e){try{return c(e),!0}catch(e){return!1}},normPrivateKeyToScalar:c,randomPrivateKey:()=>{const e=lt(t.n);return function(e,t,n=!1){const r=e.length,i=at(t),o=lt(t);if(r<16||r<o||r>1024)throw new Error(`expected ${o}-1024 bytes of input, got ${r}`);const s=et(n?Pe(e):Te(e),t-ze)+ze;return n?Ne(s,i):Ue(s,i)}(t.randomBytes(e),t.n)},precompute:(e=8,t=l.BASE)=>(t._setWindowSize(e),t.multiply(BigInt(3)),t)};function y(e){const t=e instanceof Uint8Array,n="string"==typeof e,r=(t||n)&&e.length;return t?r===i||r===o:n?r===2*i||r===2*o:e instanceof l}const w=t.bits2int||function(e){const n=Pe(e),r=8*e.length-t.nBitLength;return r>0?n>>BigInt(r):n},v=t.bits2int_modN||function(e){return s(w(e))},A=_e(t.nBitLength);function b(e){if("bigint"!=typeof e)throw new Error("bigint expected");if(!(gt<=e&&e<A))throw new Error(`bigint expected < 2^${t.nBitLength}`);return Ue(e,t.nByteLength)}function k(e,r,i=I){if(["recovered","canonical"].some(e=>e in i))throw new Error("sign() legacy options not supported");const{hash:o,randomBytes:u}=t;let{lowS:f,prehash:p,extraEntropy:m}=i;null==f&&(f=!0),e=Le("msgHash",e),p&&(e=Le("prehashed msgHash",o(e)));const y=v(e),A=c(r),k=[b(A),b(y)];if(null!=m){const e=!0===m?u(n.BYTES):m;k.push(Le("extraEntropy",e))}const C=Me(...k),E=y;return{seed:C,k2sig:function(e){const t=w(e);if(!d(t))return;const n=a(t),r=l.BASE.multiply(t).toAffine(),i=s(r.x);if(i===gt)return;const o=s(n*s(E+i*A));if(o===gt)return;let c=(r.x===i?0:2)|Number(r.y&mt),u=o;return f&&h(o)&&(u=function(e){return h(e)?s(-e):e}(o),c^=1),new g(i,u,c)}}}const I={lowS:t.lowS,prehash:!1},C={lowS:t.lowS,prehash:!1};return l.BASE._setWindowSize(8),{CURVE:t,getPublicKey:function(e,t=!0){return l.fromPrivateKey(e).toRawBytes(t)},getSharedSecret:function(e,t,n=!0){if(y(e))throw new Error("first arg must be private key");if(!y(t))throw new Error("second arg must be public key");return l.fromHex(t).multiply(c(e)).toRawBytes(n)},sign:function(e,n,r=I){const{seed:i,k2sig:o}=k(e,n,r),s=t;return je(s.hash.outputLen,s.nByteLength,s.hmac)(i,o)},verify:function(e,n,r,i=C){const o=e;if(n=Le("msgHash",n),r=Le("publicKey",r),"strict"in i)throw new Error("options.strict was renamed to lowS");const{lowS:c,prehash:u}=i;let d,f;try{if("string"==typeof o||o instanceof Uint8Array)try{d=g.fromDER(o)}catch(e){if(!(e instanceof pt.Err))throw e;d=g.fromCompact(o)}else{if("object"!=typeof o||"bigint"!=typeof o.r||"bigint"!=typeof o.s)throw new Error("PARSE");{const{r:e,s:t}=o;d=new g(e,t)}}f=l.fromHex(r)}catch(e){if("PARSE"===e.message)throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(c&&d.hasHighS())return!1;u&&(n=t.hash(n));const{r:h,s:p}=d,m=v(n),y=a(p),w=s(m*y),A=s(h*y),b=l.BASE.multiplyAndAddUnsafe(f,w,A)?.toAffine();return!!b&&s(b.x)===h},ProjectivePoint:l,Signature:g,utils:m}}BigInt(4);let At=class extends pe{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,function(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");se(e.outputLen),se(e.blockLen)}(e);const n=he(t);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,i=new Uint8Array(r);i.set(n.length>r?e.create().update(n).digest():n);for(let e=0;e<i.length;e++)i[e]^=54;this.iHash.update(i),this.oHash=e.create();for(let e=0;e<i.length;e++)i[e]^=106;this.oHash.update(i),i.fill(0)}update(e){return le(this),this.iHash.update(e),this}digestInto(e){le(this),ae(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:t,iHash:n,finished:r,destroyed:i,blockLen:o,outputLen:s}=this;return e.finished=r,e.destroyed=i,e.blockLen=o,e.outputLen=s,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}};const bt=(e,t,n)=>new At(e,t).update(n).digest();
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
function kt(e){return{hash:e,hmac:(t,...n)=>bt(e,t,function(...e){const t=new Uint8Array(e.reduce((e,t)=>e+t.length,0));let n=0;return e.forEach(e=>{if(!ue(e))throw new Error("Uint8Array expected");t.set(e,n),n+=e.length}),t}(...n)),randomBytes:me}}bt.create=(e,t)=>new At(e,t);
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
const It=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Ct=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Et=BigInt(1),xt=BigInt(2),Bt=(e,t)=>(e+t/xt)/t;function St(e){const t=It,n=BigInt(3),r=BigInt(6),i=BigInt(11),o=BigInt(22),s=BigInt(23),a=BigInt(44),l=BigInt(88),c=e*e*e%t,u=c*c*e%t,d=nt(u,n,t)*u%t,f=nt(d,n,t)*u%t,h=nt(f,xt,t)*c%t,p=nt(h,i,t)*h%t,g=nt(p,o,t)*p%t,m=nt(g,a,t)*g%t,y=nt(m,l,t)*m%t,w=nt(y,a,t)*g%t,v=nt(w,n,t)*u%t,A=nt(v,s,t)*p%t,b=nt(A,r,t)*c%t,k=nt(b,xt,t);if(!Qt.eql(Qt.sqr(k),e))throw new Error("Cannot find square root");return k}const Qt=function(e,t,n=!1,r={}){if(e<=Ve)throw new Error(`Expected Field ORDER > 0, got ${e}`);const{nBitLength:i,nByteLength:o}=st(e,t);if(o>2048)throw new Error("Field lengths over 2048 bytes are not supported");const s=it(e),a=Object.freeze({ORDER:e,BITS:i,BYTES:o,MASK:_e(i),ZERO:Ve,ONE:ze,create:t=>et(t,e),isValid:t=>{if("bigint"!=typeof t)throw new Error("Invalid field element: expected bigint, got "+typeof t);return Ve<=t&&t<e},is0:e=>e===Ve,isOdd:e=>(e&ze)===ze,neg:t=>et(-t,e),eql:(e,t)=>e===t,sqr:t=>et(t*t,e),add:(t,n)=>et(t+n,e),sub:(t,n)=>et(t-n,e),mul:(t,n)=>et(t*n,e),pow:(e,t)=>function(e,t,n){if(n<Ve)throw new Error("Expected power > 0");if(n===Ve)return e.ONE;if(n===ze)return t;let r=e.ONE,i=t;for(;n>Ve;)n&ze&&(r=e.mul(r,i)),i=e.sqr(i),n>>=ze;return r}(a,e,t),div:(t,n)=>et(t*rt(n,e),e),sqrN:e=>e*e,addN:(e,t)=>e+t,subN:(e,t)=>e-t,mulN:(e,t)=>e*t,inv:t=>rt(t,e),sqrt:r.sqrt||(e=>s(a,e)),invertBatch:e=>function(e,t){const n=new Array(t.length),r=t.reduce((t,r,i)=>e.is0(r)?t:(n[i]=t,e.mul(t,r)),e.ONE),i=e.inv(r);return t.reduceRight((t,r,i)=>e.is0(r)?t:(n[i]=e.mul(t,n[i]),e.mul(t,r)),i),n}(a,e),cmov:(e,t,n)=>n?t:e,toBytes:e=>n?Ne(e,o):Ue(e,o),fromBytes:e=>{if(e.length!==o)throw new Error(`Fp.fromBytes: expected ${o}, got ${e.length}`);return n?Te(e):Pe(e)}});return Object.freeze(a)}(It,void 0,void 0,{sqrt:St}),Ft=function(e,t){const n=t=>vt({...e,...kt(t)});return Object.freeze({...n(t),create:n})}({a:BigInt(0),b:BigInt(7),Fp:Qt,n:Ct,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:e=>{const t=Ct,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-Et*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=n,s=BigInt("0x100000000000000000000000000000000"),a=Bt(o*e,t),l=Bt(-r*e,t);let c=et(e-a*n-l*i,t),u=et(-a*r-l*o,t);const d=c>s,f=u>s;if(d&&(c=t-c),f&&(u=t-u),c>s||u>s)throw new Error("splitScalar: Endomorphism failed, k="+e);return{k1neg:d,k1:c,k2neg:f,k2:u}}}},Ce),Dt=BigInt(0),$t=e=>"bigint"==typeof e&&Dt<e&&e<It,Rt={};function Pt(e,...t){let n=Rt[e];if(void 0===n){const t=Ce(Uint8Array.from(e,e=>e.charCodeAt(0)));n=Me(t,t),Rt[e]=n}return Ce(Me(n,...t))}const Tt=e=>e.toRawBytes(!0).slice(1),Ut=e=>Ue(e,32),Nt=e=>et(e,It),Lt=e=>et(e,Ct),Mt=Ft.ProjectivePoint;function _t(e){let t=Ft.utils.normPrivateKeyToScalar(e),n=Mt.fromPrivateKey(t);return{scalar:n.hasEvenY()?t:Lt(-t),bytes:Tt(n)}}function Ot(e){if(!$t(e))throw new Error("bad x: need 0 < x < p");const t=Nt(e*e);let n=St(Nt(t*e+BigInt(7)));n%xt!==Dt&&(n=Nt(-n));const r=new Mt(e,n,Et);return r.assertValidity(),r}function Ht(...e){return Lt(Pe(Pt("BIP0340/challenge",...e)))}function jt(e){return _t(e).bytes}function Gt(e,t,n=me(32)){const r=Le("message",e),{bytes:i,scalar:o}=_t(t),s=Le("auxRand",n,32),a=Ut(o^Pe(Pt("BIP0340/aux",s))),l=Pt("BIP0340/nonce",a,i,r),c=Lt(Pe(l));if(c===Dt)throw new Error("sign failed: k is zero");const{bytes:u,scalar:d}=_t(c),f=Ht(u,i,r),h=new Uint8Array(64);if(h.set(u,0),h.set(Ut(Lt(d+f*o)),32),!Jt(h,r,i))throw new Error("sign: Invalid signature produced");return h}function Jt(e,t,n){const r=Le("signature",e,64),i=Le("message",t),o=Le("publicKey",n,32);try{const e=Ot(Pe(o)),t=Pe(r.subarray(0,32));if(!$t(t))return!1;const n=Pe(r.subarray(32,64));if(!("bigint"==typeof(c=n)&&Dt<c&&c<Ct))return!1;const u=Ht(Ut(t),Tt(e),i),d=(s=e,a=n,l=Lt(-u),Mt.BASE.multiplyAndAddUnsafe(s,a,l));return!(!d||!d.hasEvenY()||d.toAffine().x!==t)}catch(e){return!1}var s,a,l,c}const Kt=(()=>({getPublicKey:jt,sign:Gt,verify:Jt,utils:{randomPrivateKey:Ft.utils.randomPrivateKey,lift_x:Ot,pointToBytes:Tt,numberToBytesBE:Ue,bytesToNumberBE:Pe,taggedHash:Pt,mod:et}}))(),Vt="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,zt=e=>e instanceof Uint8Array,qt=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),Yt=(e,t)=>e<<32-t|e>>>t;if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");const Wt=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function Zt(e){if(!zt(e))throw new Error("Uint8Array expected");let t="";for(let n=0;n<e.length;n++)t+=Wt[e[n]];return t}function Xt(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const n=new Uint8Array(t/2);for(let t=0;t<n.length;t++){const r=2*t,i=e.slice(r,r+2),o=Number.parseInt(i,16);if(Number.isNaN(o)||o<0)throw new Error("Invalid byte sequence");n[t]=o}return n}function en(e){if("string"==typeof e&&(e=function(e){if("string"!=typeof e)throw new Error("utf8ToBytes expected string, got "+typeof e);return new Uint8Array((new TextEncoder).encode(e))}(e)),!zt(e))throw new Error("expected Uint8Array, got "+typeof e);return e}function tn(...e){const t=new Uint8Array(e.reduce((e,t)=>e+t.length,0));let n=0;return e.forEach(e=>{if(!zt(e))throw new Error("Uint8Array expected");t.set(e,n),n+=e.length}),t}class nn{clone(){return this._cloneInto()}}function rn(e){const t=t=>e().update(en(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function on(e=32){if(Vt&&"function"==typeof Vt.getRandomValues)return Vt.getRandomValues(new Uint8Array(e));throw new Error("crypto.getRandomValues must be defined")}function sn(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`Wrong positive integer: ${e}`)}function an(e,...t){if(!(e instanceof Uint8Array))throw new Error("Expected Uint8Array");if(t.length>0&&!t.includes(e.length))throw new Error(`Expected Uint8Array of length ${t}, not of length=${e.length}`)}const ln={number:sn,bool:function(e){if("boolean"!=typeof e)throw new Error(`Expected boolean, not ${e}`)},bytes:an,hash:function(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");sn(e.outputLen),sn(e.blockLen)},exists:function(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")},output:function(e,t){an(e);const n=t.outputLen;if(e.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}};class cn extends nn{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=qt(this.buffer)}update(e){ln.exists(this);const{view:t,buffer:n,blockLen:r}=this,i=(e=en(e)).length;for(let o=0;o<i;){const s=Math.min(r-this.pos,i-o);if(s===r){const t=qt(e);for(;r<=i-o;o+=r)this.process(t,o);continue}n.set(e.subarray(o,o+s),this.pos),this.pos+=s,o+=s,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ln.exists(this),ln.output(e,this),this.finished=!0;const{buffer:t,view:n,blockLen:r,isLE:i}=this;let{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>r-o&&(this.process(n,0),o=0);for(let e=o;e<r;e++)t[e]=0;!function(e,t,n,r){if("function"==typeof e.setBigUint64)return e.setBigUint64(t,n,r);const i=BigInt(32),o=BigInt(4294967295),s=Number(n>>i&o),a=Number(n&o),l=r?4:0,c=r?0:4;e.setUint32(t+l,s,r),e.setUint32(t+c,a,r)}(n,r-8,BigInt(8*this.length),i),this.process(n,0);const s=qt(e),a=this.outputLen;if(a%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=a/4,c=this.get();if(l>c.length)throw new Error("_sha2: outputLen bigger than state");for(let e=0;e<l;e++)s.setUint32(4*e,c[e],i)}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:t,buffer:n,length:r,finished:i,destroyed:o,pos:s}=this;return e.length=r,e.pos=s,e.finished=i,e.destroyed=o,r%t&&e.buffer.set(n),e}}const un=(e,t,n)=>e&t^~e&n,dn=(e,t,n)=>e&t^e&n^t&n,fn=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),hn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),pn=new Uint32Array(64);class gn extends cn{constructor(){super(64,32,8,!1),this.A=0|hn[0],this.B=0|hn[1],this.C=0|hn[2],this.D=0|hn[3],this.E=0|hn[4],this.F=0|hn[5],this.G=0|hn[6],this.H=0|hn[7]}get(){const{A:e,B:t,C:n,D:r,E:i,F:o,G:s,H:a}=this;return[e,t,n,r,i,o,s,a]}set(e,t,n,r,i,o,s,a){this.A=0|e,this.B=0|t,this.C=0|n,this.D=0|r,this.E=0|i,this.F=0|o,this.G=0|s,this.H=0|a}process(e,t){for(let n=0;n<16;n++,t+=4)pn[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){const t=pn[e-15],n=pn[e-2],r=Yt(t,7)^Yt(t,18)^t>>>3,i=Yt(n,17)^Yt(n,19)^n>>>10;pn[e]=i+pn[e-7]+r+pn[e-16]|0}let{A:n,B:r,C:i,D:o,E:s,F:a,G:l,H:c}=this;for(let e=0;e<64;e++){const t=c+(Yt(s,6)^Yt(s,11)^Yt(s,25))+un(s,a,l)+fn[e]+pn[e]|0,u=(Yt(n,2)^Yt(n,13)^Yt(n,22))+dn(n,r,i)|0;c=l,l=a,a=s,s=o+t|0,o=i,i=r,r=n,n=t+u|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,o=o+this.D|0,s=s+this.E|0,a=a+this.F|0,l=l+this.G|0,c=c+this.H|0,this.set(n,r,i,o,s,a,l,c)}roundClean(){pn.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}class mn extends gn{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}}const yn=rn(()=>new gn);rn(()=>new mn);var wn=Symbol("verified");function vn(e){if(!(e instanceof Object))return!1;if("number"!=typeof e.kind)return!1;if("string"!=typeof e.content)return!1;if("number"!=typeof e.created_at)return!1;if("string"!=typeof e.pubkey)return!1;if(!e.pubkey.match(/^[a-f0-9]{64}$/))return!1;if(!Array.isArray(e.tags))return!1;for(let t=0;t<e.tags.length;t++){let n=e.tags[t];if(!Array.isArray(n))return!1;for(let e=0;e<n.length;e++)if("string"!=typeof n[e])return!1}return!0}new TextDecoder("utf-8");var An=new TextEncoder;function bn(e){try{-1===e.indexOf("://")&&(e="wss://"+e);let t=new URL(e);return t.pathname=t.pathname.replace(/\/+/g,"/"),t.pathname.endsWith("/")&&(t.pathname=t.pathname.slice(0,-1)),("80"===t.port&&"ws:"===t.protocol||"443"===t.port&&"wss:"===t.protocol)&&(t.port=""),t.searchParams.sort(),t.hash="",t.toString()}catch(t){throw new Error(`Invalid URL: ${e}`)}}var kn=class{value;next=null;prev=null;constructor(e){this.value=e}},In=class{first;last;constructor(){this.first=null,this.last=null}enqueue(e){const t=new kn(e);return this.last?this.last===this.first?(this.last=t,this.last.prev=this.first,this.first.next=t):(t.prev=this.last,this.last.next=t,this.last=t):(this.first=t,this.last=t),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const e=this.first;return this.first=null,this.last=null,e.value}const e=this.first;return this.first=e.next,this.first&&(this.first.prev=null),e.value}};function Cn(e){return Zt(yn(An.encode(function(e){if(!vn(e))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,e.pubkey,e.created_at,e.kind,e.tags,e.content])}(e))))}var En=new class{generateSecretKey(){return Kt.utils.randomPrivateKey()}getPublicKey(e){return Zt(Kt.getPublicKey(e))}finalizeEvent(e,t){const n=e;return n.pubkey=Zt(Kt.getPublicKey(t)),n.id=Cn(n),n.sig=Zt(Kt.sign(Cn(n),t)),n[wn]=!0,n}verifyEvent(e){if("boolean"==typeof e[wn])return e[wn];const t=Cn(e);if(t!==e.id)return e[wn]=!1,!1;try{const n=Kt.verify(e.sig,t,e.pubkey);return e[wn]=n,n}catch(t){return e[wn]=!1,!1}}};En.generateSecretKey,En.getPublicKey,En.finalizeEvent;var xn=En.verifyEvent;function Bn(e,t){if(e.ids&&-1===e.ids.indexOf(t.id))return!1;if(e.kinds&&-1===e.kinds.indexOf(t.kind))return!1;if(e.authors&&-1===e.authors.indexOf(t.pubkey))return!1;for(let n in e)if("#"===n[0]){let r=e[`#${n.slice(1)}`];if(r&&!t.tags.find(([e,t])=>e===n.slice(1)&&-1!==r.indexOf(t)))return!1}return!(e.since&&t.created_at<e.since)&&!(e.until&&t.created_at>e.until)}async function Sn(){return new Promise(e=>{const t=new MessageChannel,n=()=>{t.port1.removeEventListener("message",n),e()};t.port1.addEventListener("message",n),t.port2.postMessage(0),t.port1.start()})}var Qn,Fn=e=>(e[wn]=!0,!0),Dn=class extends Error{constructor(e,t){super(`Tried to send message '${e} on a closed connection to ${t}.`),this.name="SendingOnClosedConnection"}},$n=class{url;_connected=!1;onclose=null;onnotice=e=>console.debug(`NOTICE from ${this.url}: ${e}`);baseEoseTimeout=4400;connectionTimeout=4400;publishTimeout=4400;pingFrequency=2e4;pingTimeout=2e4;openSubs=new Map;enablePing;connectionTimeoutHandle;connectionPromise;openCountRequests=new Map;openEventPublishes=new Map;ws;incomingMessageQueue=new In;queueRunning=!1;challenge;authPromise;serial=0;verifyEvent;_WebSocket;constructor(e,t){this.url=bn(e),this.verifyEvent=t.verifyEvent,this._WebSocket=t.websocketImplementation||WebSocket,this.enablePing=t.enablePing}static async connect(e,t){const n=new $n(e,t);return await n.connect(),n}closeAllSubscriptions(e){for(let[t,n]of this.openSubs)n.close(e);this.openSubs.clear();for(let[t,n]of this.openEventPublishes)n.reject(new Error(e));this.openEventPublishes.clear();for(let[t,n]of this.openCountRequests)n.reject(new Error(e));this.openCountRequests.clear()}get connected(){return this._connected}async connect(){return this.connectionPromise||(this.challenge=void 0,this.authPromise=void 0,this.connectionPromise=new Promise((e,t)=>{this.connectionTimeoutHandle=setTimeout(()=>{t("connection timed out"),this.connectionPromise=void 0,this.onclose?.(),this.closeAllSubscriptions("relay connection timed out")},this.connectionTimeout);try{this.ws=new this._WebSocket(this.url)}catch(e){return clearTimeout(this.connectionTimeoutHandle),void t(e)}this.ws.onopen=()=>{clearTimeout(this.connectionTimeoutHandle),this._connected=!0,this.enablePing&&this.pingpong(),e()},this.ws.onerror=e=>{clearTimeout(this.connectionTimeoutHandle),t(e.message||"websocket error"),this._connected=!1,this.connectionPromise=void 0,this.onclose?.(),this.closeAllSubscriptions("relay connection errored")},this.ws.onclose=e=>{clearTimeout(this.connectionTimeoutHandle),t(e.message||"websocket closed"),this._connected=!1,this.connectionPromise=void 0,this.onclose?.(),this.closeAllSubscriptions("relay connection closed")},this.ws.onmessage=this._onmessage.bind(this)})),this.connectionPromise}async waitForPingPong(){return new Promise((e,t)=>{this.ws&&this.ws.on&&this.ws.on("pong",()=>e(!0))||t("ws can't listen for pong"),this.ws&&this.ws.ping&&this.ws.ping()})}async waitForDummyReq(){return new Promise((e,t)=>{const n=this.subscribe([{ids:["a".repeat(64)]}],{oneose:()=>{n.close(),e(!0)},eoseTimeout:this.pingTimeout+1e3})})}async pingpong(){if(1===this.ws?.readyState){await Promise.any([this.ws&&this.ws.ping&&this.ws.on?this.waitForPingPong():this.waitForDummyReq(),new Promise(e=>setTimeout(()=>e(!1),this.pingTimeout))])?setTimeout(()=>this.pingpong(),this.pingFrequency):(this.closeAllSubscriptions("pingpong timed out"),this._connected=!1,this.onclose?.(),this.ws?.close())}}async runQueue(){for(this.queueRunning=!0;!1!==this.handleNext();)await Sn();this.queueRunning=!1}handleNext(){const e=this.incomingMessageQueue.dequeue();if(!e)return!1;const t=function(e){let t=e.slice(0,22).indexOf('"EVENT"');if(-1===t)return null;let n=e.slice(t+7+1).indexOf('"');if(-1===n)return null;let r=t+7+1+n,i=e.slice(r+1,80).indexOf('"');if(-1===i)return null;let o=r+1+i;return e.slice(r+1,o)}(e);if(t){const n=this.openSubs.get(t);if(!n)return;const r=function(e,t){let n=t.length+3,r=e.indexOf(`"${t}":`)+n,i=e.slice(r).indexOf('"')+r+1;return e.slice(i,i+64)}(e,"id"),i=n.alreadyHaveEvent?.(r);if(n.receivedEvent?.(this,r),i)return}try{let t=JSON.parse(e);switch(t[0]){case"EVENT":{const e=this.openSubs.get(t[1]),n=t[2];return void(this.verifyEvent(n)&&function(e,t){for(let n=0;n<e.length;n++)if(Bn(e[n],t))return!0;return!1}(e.filters,n)&&e.onevent(n))}case"COUNT":{const e=t[1],n=t[2],r=this.openCountRequests.get(e);return void(r&&(r.resolve(n.count),this.openCountRequests.delete(e)))}case"EOSE":{const e=this.openSubs.get(t[1]);if(!e)return;return void e.receivedEose()}case"OK":{const e=t[1],n=t[2],r=t[3],i=this.openEventPublishes.get(e);return void(i&&(clearTimeout(i.timeout),n?i.resolve(r):i.reject(new Error(r)),this.openEventPublishes.delete(e)))}case"CLOSED":{const e=t[1],n=this.openSubs.get(e);if(!n)return;return n.closed=!0,void n.close(t[2])}case"NOTICE":return void this.onnotice(t[1]);case"AUTH":return void(this.challenge=t[1])}}catch(e){return}}async send(e){if(!this.connectionPromise)throw new Dn(e,this.url);this.connectionPromise.then(()=>{this.ws?.send(e)})}async auth(e){const t=this.challenge;if(!t)throw new Error("can't perform auth, no challenge was received");return this.authPromise||(this.authPromise=new Promise(async(n,r)=>{try{let i=await e(function(e,t){return{kind:22242,created_at:Math.floor(Date.now()/1e3),tags:[["relay",e],["challenge",t]],content:""}}(this.url,t)),o=setTimeout(()=>{let e=this.openEventPublishes.get(i.id);e&&(e.reject(new Error("auth timed out")),this.openEventPublishes.delete(i.id))},this.publishTimeout);this.openEventPublishes.set(i.id,{resolve:n,reject:r,timeout:o}),this.send('["AUTH",'+JSON.stringify(i)+"]")}catch(e){console.warn("subscribe auth function failed:",e)}})),this.authPromise}async publish(e){const t=new Promise((t,n)=>{const r=setTimeout(()=>{const t=this.openEventPublishes.get(e.id);t&&(t.reject(new Error("publish timed out")),this.openEventPublishes.delete(e.id))},this.publishTimeout);this.openEventPublishes.set(e.id,{resolve:t,reject:n,timeout:r})});return this.send('["EVENT",'+JSON.stringify(e)+"]"),t}async count(e,t){this.serial++;const n=t?.id||"count:"+this.serial,r=new Promise((e,t)=>{this.openCountRequests.set(n,{resolve:e,reject:t})});return this.send('["COUNT","'+n+'",'+JSON.stringify(e).substring(1)),r}subscribe(e,t){const n=this.prepareSubscription(e,t);return n.fire(),n}prepareSubscription(e,t){this.serial++;const n=t.id||(t.label?t.label+":":"sub:")+this.serial,r=new Rn(this,n,e,t);return this.openSubs.set(n,r),r}close(){this.closeAllSubscriptions("relay connection closed by us"),this._connected=!1,this.onclose?.(),this.ws?.close()}_onmessage(e){this.incomingMessageQueue.enqueue(e.data),this.queueRunning||this.runQueue()}},Rn=class{relay;id;closed=!1;eosed=!1;filters;alreadyHaveEvent;receivedEvent;onevent;oneose;onclose;eoseTimeout;eoseTimeoutHandle;constructor(e,t,n,r){this.relay=e,this.filters=n,this.id=t,this.alreadyHaveEvent=r.alreadyHaveEvent,this.receivedEvent=r.receivedEvent,this.eoseTimeout=r.eoseTimeout||e.baseEoseTimeout,this.oneose=r.oneose,this.onclose=r.onclose,this.onevent=r.onevent||(e=>{console.warn(`onevent() callback not defined for subscription '${this.id}' in relay ${this.relay.url}. event received:`,e)})}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(e="closed by caller"){if(!this.closed&&this.relay.connected){try{this.relay.send('["CLOSE",'+JSON.stringify(this.id)+"]")}catch(e){if(!(e instanceof Dn))throw e}this.closed=!0}this.relay.openSubs.delete(this.id),this.onclose?.(e)}},Pn=class{relays=new Map;seenOn=new Map;trackRelays=!1;verifyEvent;enablePing;trustedRelayURLs=new Set;_WebSocket;constructor(e){this.verifyEvent=e.verifyEvent,this._WebSocket=e.websocketImplementation,this.enablePing=e.enablePing}async ensureRelay(e,t){e=bn(e);let n=this.relays.get(e);return n||(n=new $n(e,{verifyEvent:this.trustedRelayURLs.has(e)?Fn:this.verifyEvent,websocketImplementation:this._WebSocket,enablePing:this.enablePing}),n.onclose=()=>{this.relays.delete(e)},t?.connectionTimeout&&(n.connectionTimeout=t.connectionTimeout),this.relays.set(e,n)),await n.connect(),n}close(e){e.map(bn).forEach(e=>{this.relays.get(e)?.close(),this.relays.delete(e)})}subscribe(e,t,n){n.onauth=n.onauth||n.doauth;const r=[];for(let n=0;n<e.length;n++){const i=bn(e[n]);r.find(e=>e.url===i)||r.push({url:i,filter:t})}return this.subscribeMap(r,n)}subscribeMany(e,t,n){n.onauth=n.onauth||n.doauth;const r=[],i=[];for(let n=0;n<e.length;n++){const o=bn(e[n]);-1===i.indexOf(o)&&(i.push(o),r.push({url:o,filter:t}))}return this.subscribeMap(r,n)}subscribeMap(e,t){t.onauth=t.onauth||t.doauth;const n=new Map;for(const t of e){const{url:e,filter:r}=t;n.has(e)||n.set(e,[]),n.get(e).push(r)}const r=Array.from(n.entries()).map(([e,t])=>({url:e,filters:t}));this.trackRelays&&(t.receivedEvent=(e,t)=>{let n=this.seenOn.get(t);n||(n=new Set,this.seenOn.set(t,n)),n.add(e)});const i=new Set,o=[],s=[];let a=n=>{s[n]||(s[n]=!0,s.filter(e=>e).length===e.length&&(t.oneose?.(),a=()=>{}))};const l=[];let c=(n,r)=>{l[n]||(a(n),l[n]=r,l.filter(e=>e).length===e.length&&(t.onclose?.(l),c=()=>{}))};const u=e=>{if(t.alreadyHaveEvent?.(e))return!0;const n=i.has(e);return i.add(e),n},d=Promise.all(r.map(async({url:e,filters:n},r)=>{let i;try{i=await this.ensureRelay(e,{connectionTimeout:t.maxWait?Math.max(.8*t.maxWait,t.maxWait-1e3):void 0})}catch(e){return void c(r,e?.message||String(e))}let s=i.subscribe(n,{...t,oneose:()=>a(r),onclose:e=>{e.startsWith("auth-required: ")&&t.onauth?i.auth(t.onauth).then(()=>{i.subscribe(n,{...t,oneose:()=>a(r),onclose:e=>{c(r,e)},alreadyHaveEvent:u,eoseTimeout:t.maxWait})}).catch(e=>{c(r,`auth was required and attempted, but failed with: ${e}`)}):c(r,e)},alreadyHaveEvent:u,eoseTimeout:t.maxWait});o.push(s)}));return{async close(e){await d,o.forEach(t=>{t.close(e)})}}}subscribeEose(e,t,n){n.onauth=n.onauth||n.doauth;const r=this.subscribe(e,t,{...n,oneose(){r.close("closed automatically on eose")}});return r}subscribeManyEose(e,t,n){n.onauth=n.onauth||n.doauth;const r=this.subscribeMany(e,t,{...n,oneose(){r.close("closed automatically on eose")}});return r}async querySync(e,t,n){return new Promise(async r=>{const i=[];this.subscribeEose(e,t,{...n,onevent(e){i.push(e)},onclose(e){r(i)}})})}async get(e,t,n){t.limit=1;const r=await this.querySync(e,t,n);return r.sort((e,t)=>t.created_at-e.created_at),r[0]||null}publish(e,t,n){return e.map(bn).map(async(e,r,i)=>{if(i.indexOf(e)!==r)return Promise.reject("duplicate url");let o=await this.ensureRelay(e);return o.publish(t).catch(async e=>{if(e instanceof Error&&e.message.startsWith("auth-required: ")&&n?.onauth)return await o.auth(n.onauth),o.publish(t);throw e}).then(e=>{if(this.trackRelays){let e=this.seenOn.get(t.id);e||(e=new Set,this.seenOn.set(t.id,e)),e.add(o)}return e})})}listConnectionStatus(){const e=new Map;return this.relays.forEach((t,n)=>e.set(n,t.connected)),e}destroy(){this.relays.forEach(e=>e.close()),this.relays=new Map}};try{Qn=WebSocket}catch{}var Tn=class extends Pn{constructor(e){super({verifyEvent:xn,websocketImplementation:Qn,...e})}};
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function Un(e){if(!Number.isSafeInteger(e))throw new Error(`Wrong integer: ${e}`)}function Nn(...e){const t=(e,t)=>n=>e(t(n)),n=Array.from(e).reverse().reduce((e,n)=>e?t(e,n.encode):n.encode,void 0),r=e.reduce((e,n)=>e?t(e,n.decode):n.decode,void 0);return{encode:n,decode:r}}function Ln(e){return{encode:t=>{if(!Array.isArray(t)||t.length&&"number"!=typeof t[0])throw new Error("alphabet.encode input should be an array of numbers");return t.map(t=>{if(Un(t),t<0||t>=e.length)throw new Error(`Digit index outside alphabet: ${t} (alphabet: ${e.length})`);return e[t]})},decode:t=>{if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("alphabet.decode input should be array of strings");return t.map(t=>{if("string"!=typeof t)throw new Error(`alphabet.decode: not string element=${t}`);const n=e.indexOf(t);if(-1===n)throw new Error(`Unknown letter: "${t}". Allowed: ${e}`);return n})}}}function Mn(e=""){if("string"!=typeof e)throw new Error("join separator should be string");return{encode:t=>{if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("join.encode input should be array of strings");for(let e of t)if("string"!=typeof e)throw new Error(`join.encode: non-string input=${e}`);return t.join(e)},decode:t=>{if("string"!=typeof t)throw new Error("join.decode input should be string");return t.split(e)}}}function _n(e,t="="){if(Un(e),"string"!=typeof t)throw new Error("padding chr should be string");return{encode(n){if(!Array.isArray(n)||n.length&&"string"!=typeof n[0])throw new Error("padding.encode input should be array of strings");for(let e of n)if("string"!=typeof e)throw new Error(`padding.encode: non-string input=${e}`);for(;n.length*e%8;)n.push(t);return n},decode(n){if(!Array.isArray(n)||n.length&&"string"!=typeof n[0])throw new Error("padding.encode input should be array of strings");for(let e of n)if("string"!=typeof e)throw new Error(`padding.decode: non-string input=${e}`);let r=n.length;if(r*e%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;r>0&&n[r-1]===t;r--)if(!((r-1)*e%8))throw new Error("Invalid padding: string has too much padding");return n.slice(0,r)}}}function On(e){if("function"!=typeof e)throw new Error("normalize fn should be function");return{encode:e=>e,decode:t=>e(t)}}function Hn(e,t,n){if(t<2)throw new Error(`convertRadix: wrong from=${t}, base cannot be less than 2`);if(n<2)throw new Error(`convertRadix: wrong to=${n}, base cannot be less than 2`);if(!Array.isArray(e))throw new Error("convertRadix: data should be array");if(!e.length)return[];let r=0;const i=[],o=Array.from(e);for(o.forEach(e=>{if(Un(e),e<0||e>=t)throw new Error(`Wrong integer: ${e}`)});;){let e=0,s=!0;for(let i=r;i<o.length;i++){const a=o[i],l=t*e+a;if(!Number.isSafeInteger(l)||t*e/t!==e||l-a!==t*e)throw new Error("convertRadix: carry overflow");if(e=l%n,o[i]=Math.floor(l/n),!Number.isSafeInteger(o[i])||o[i]*n+e!==l)throw new Error("convertRadix: carry overflow");s&&(o[i]?s=!1:r=i)}if(i.push(e),s)break}for(let t=0;t<e.length-1&&0===e[t];t++)i.push(0);return i.reverse()}const jn=(e,t)=>t?jn(t,e%t):e,Gn=(e,t)=>e+(t-jn(e,t));function Jn(e,t,n,r){if(!Array.isArray(e))throw new Error("convertRadix2: data should be array");if(t<=0||t>32)throw new Error(`convertRadix2: wrong from=${t}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(Gn(t,n)>32)throw new Error(`convertRadix2: carry overflow from=${t} to=${n} carryBits=${Gn(t,n)}`);let i=0,o=0;const s=2**n-1,a=[];for(const r of e){if(Un(r),r>=2**t)throw new Error(`convertRadix2: invalid data word=${r} from=${t}`);if(i=i<<t|r,o+t>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${t}`);for(o+=t;o>=n;o-=n)a.push((i>>o-n&s)>>>0);i&=2**o-1}if(i=i<<n-o&s,!r&&o>=t)throw new Error("Excess padding");if(!r&&i)throw new Error(`Non-zero padding: ${i}`);return r&&o>0&&a.push(i>>>0),a}function Kn(e,t=!1){if(Un(e),e<=0||e>32)throw new Error("radix2: bits should be in (0..32]");if(Gn(8,e)>32||Gn(e,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!(n instanceof Uint8Array))throw new Error("radix2.encode input should be Uint8Array");return Jn(Array.from(n),8,e,!t)},decode:n=>{if(!Array.isArray(n)||n.length&&"number"!=typeof n[0])throw new Error("radix2.decode input should be array of strings");return Uint8Array.from(Jn(n,e,8,t))}}}function Vn(e){if("function"!=typeof e)throw new Error("unsafeWrapper fn should be function");return function(...t){try{return e.apply(null,t)}catch(e){}}}const zn=Nn(Kn(4),Ln("0123456789ABCDEF"),Mn("")),qn=Nn(Kn(5),Ln("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),_n(5),Mn(""));Nn(Kn(5),Ln("0123456789ABCDEFGHIJKLMNOPQRSTUV"),_n(5),Mn("")),Nn(Kn(5),Ln("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),Mn(""),On(e=>e.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1")));const Yn=Nn(Kn(6),Ln("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),_n(6),Mn("")),Wn=Nn(Kn(6),Ln("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),_n(6),Mn("")),Zn=e=>{return Nn((Un(t=58),{encode:e=>{if(!(e instanceof Uint8Array))throw new Error("radix.encode input should be Uint8Array");return Hn(Array.from(e),256,t)},decode:e=>{if(!Array.isArray(e)||e.length&&"number"!=typeof e[0])throw new Error("radix.decode input should be array of strings");return Uint8Array.from(Hn(e,t,256))}}),Ln(e),Mn(""));var t},Xn=Zn("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");Zn("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"),Zn("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");const er=[0,2,3,5,6,7,9,10,11],tr={encode(e){let t="";for(let n=0;n<e.length;n+=8){const r=e.subarray(n,n+8);t+=Xn.encode(r).padStart(er[r.length],"1")}return t},decode(e){let t=[];for(let n=0;n<e.length;n+=11){const r=e.slice(n,n+11),i=er.indexOf(r.length),o=Xn.decode(r);for(let e=0;e<o.length-i;e++)if(0!==o[e])throw new Error("base58xmr: wrong padding");t=t.concat(Array.from(o.slice(o.length-i)))}return Uint8Array.from(t)}},nr=Nn(Ln("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),Mn("")),rr=[996825010,642813549,513874426,1027748829,705979059];function ir(e){const t=e>>25;let n=(33554431&e)<<5;for(let e=0;e<rr.length;e++)1==(t>>e&1)&&(n^=rr[e]);return n}function or(e,t,n=1){const r=e.length;let i=1;for(let t=0;t<r;t++){const n=e.charCodeAt(t);if(n<33||n>126)throw new Error(`Invalid prefix (${e})`);i=ir(i)^n>>5}i=ir(i);for(let t=0;t<r;t++)i=ir(i)^31&e.charCodeAt(t);for(let e of t)i=ir(i)^e;for(let e=0;e<6;e++)i=ir(i);return i^=n,nr.encode(Jn([i%2**30],30,5,!1))}function sr(e){const t="bech32"===e?1:734539939,n=Kn(5),r=n.decode,i=n.encode,o=Vn(r);function s(e,n=90){if("string"!=typeof e)throw new Error("bech32.decode input should be string, not "+typeof e);if(e.length<8||!1!==n&&e.length>n)throw new TypeError(`Wrong string length: ${e.length} (${e}). Expected (8..${n})`);const r=e.toLowerCase();if(e!==r&&e!==e.toUpperCase())throw new Error("String must be lowercase or uppercase");const i=(e=r).lastIndexOf("1");if(0===i||-1===i)throw new Error('Letter "1" must be present between prefix and data only');const o=e.slice(0,i),s=e.slice(i+1);if(s.length<6)throw new Error("Data must be at least 6 characters long");const a=nr.decode(s).slice(0,-6),l=or(o,a,t);if(!s.endsWith(l))throw new Error(`Invalid checksum in ${e}: expected "${l}"`);return{prefix:o,words:a}}return{encode:function(e,n,r=90){if("string"!=typeof e)throw new Error("bech32.encode prefix should be string, not "+typeof e);if(!Array.isArray(n)||n.length&&"number"!=typeof n[0])throw new Error("bech32.encode words should be array of numbers, not "+typeof n);const i=e.length+7+n.length;if(!1!==r&&i>r)throw new TypeError(`Length ${i} exceeds limit ${r}`);return`${e=e.toLowerCase()}1${nr.encode(n)}${or(e,n,t)}`},decode:s,decodeToBytes:function(e){const{prefix:t,words:n}=s(e,!1);return{prefix:t,words:n,bytes:r(n)}},decodeUnsafe:Vn(s),fromWords:r,fromWordsUnsafe:o,toWords:i}}const ar=sr("bech32");sr("bech32m");const lr={utf8:{encode:e=>(new TextDecoder).decode(e),decode:e=>(new TextEncoder).encode(e)},hex:Nn(Kn(4),Ln("0123456789abcdef"),Mn(""),On(e=>{if("string"!=typeof e||e.length%2)throw new TypeError(`hex.decode: expected string, got ${typeof e} with length ${e.length}`);return e.toLowerCase()})),base16:zn,base32:qn,base64:Yn,base64url:Wn,base58:Xn,base58xmr:tr};function cr(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`positive integer expected, not ${e}`)}function ur(e){if("boolean"!=typeof e)throw new Error(`boolean expected, not ${e}`)}function dr(e,...t){if(!((n=e)instanceof Uint8Array||null!=n&&"object"==typeof n&&"Uint8Array"===n.constructor.name))throw new Error("Uint8Array expected");var n;if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}
/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */Object.keys(lr).join(", ");const fr=e=>new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4));if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");const hr=16;function pr(e){return e<<1^283&-(e>>7)}function gr(e,t){let n=0;for(;t>0;t>>=1)n^=e&-(1&t),e=pr(e);return n}const mr=(()=>{let e=new Uint8Array(256);for(let t=0,n=1;t<256;t++,n^=pr(n))e[t]=n;const t=new Uint8Array(256);t[0]=99;for(let n=0;n<255;n++){let r=e[255-n];r|=r<<8,t[e[n]]=255&(r^r>>4^r>>5^r>>6^r>>7^99)}return t})(),yr=mr.map((e,t)=>mr.indexOf(t)),wr=e=>e<<24|e>>>8,vr=e=>e<<8|e>>>24;function Ar(e,t){if(256!==e.length)throw new Error("Wrong sbox length");const n=new Uint32Array(256).map((n,r)=>t(e[r])),r=n.map(vr),i=r.map(vr),o=i.map(vr),s=new Uint32Array(65536),a=new Uint32Array(65536),l=new Uint16Array(65536);for(let t=0;t<256;t++)for(let c=0;c<256;c++){const u=256*t+c;s[u]=n[t]^r[c],a[u]=i[t]^o[c],l[u]=e[t]<<8|e[c]}return{sbox:e,sbox2:l,T0:n,T1:r,T2:i,T3:o,T01:s,T23:a}}const br=Ar(mr,e=>gr(e,3)<<24|e<<16|e<<8|gr(e,2)),kr=Ar(yr,e=>gr(e,11)<<24|gr(e,13)<<16|gr(e,9)<<8|gr(e,14)),Ir=(()=>{const e=new Uint8Array(16);for(let t=0,n=1;t<16;t++,n=pr(n))e[t]=n;return e})();function Cr(e){dr(e);const t=e.length;if(![16,24,32].includes(t))throw new Error(`aes: wrong key size: should be 16, 24 or 32, got: ${t}`);const{sbox2:n}=br,r=fr(e),i=r.length,o=e=>xr(n,e,e,e,e),s=new Uint32Array(t+28);s.set(r);for(let e=i;e<s.length;e++){let t=s[e-1];e%i===0?t=o(wr(t))^Ir[e/i-1]:i>6&&e%i===4&&(t=o(t)),s[e]=s[e-i]^t}return s}function Er(e,t,n,r,i,o){return e[n<<8&65280|r>>>8&255]^t[i>>>8&65280|o>>>24&255]}function xr(e,t,n,r,i){return e[255&t|65280&n]|e[r>>>16&255|i>>>16&65280]<<16}function Br(e,t,n,r,i){const{sbox2:o,T01:s,T23:a}=br;let l=0;t^=e[l++],n^=e[l++],r^=e[l++],i^=e[l++];const c=e.length/4-2;for(let o=0;o<c;o++){const o=e[l++]^Er(s,a,t,n,r,i),c=e[l++]^Er(s,a,n,r,i,t),u=e[l++]^Er(s,a,r,i,t,n),d=e[l++]^Er(s,a,i,t,n,r);t=o,n=c,r=u,i=d}return{s0:e[l++]^xr(o,t,n,r,i),s1:e[l++]^xr(o,n,r,i,t),s2:e[l++]^xr(o,r,i,t,n),s3:e[l++]^xr(o,i,t,n,r)}}function Sr(e,t,n,r,i){const{sbox2:o,T01:s,T23:a}=kr;let l=0;t^=e[l++],n^=e[l++],r^=e[l++],i^=e[l++];const c=e.length/4-2;for(let o=0;o<c;o++){const o=e[l++]^Er(s,a,t,i,r,n),c=e[l++]^Er(s,a,n,t,i,r),u=e[l++]^Er(s,a,r,n,t,i),d=e[l++]^Er(s,a,i,r,n,t);t=o,n=c,r=u,i=d}return{s0:e[l++]^xr(o,t,i,r,n),s1:e[l++]^xr(o,n,t,i,r),s2:e[l++]^xr(o,r,n,t,i),s3:e[l++]^xr(o,i,r,n,t)}}function Qr(e,t){if(!t)return new Uint8Array(e);if(dr(t),t.length<e)throw new Error(`aes: wrong destination length, expected at least ${e}, got: ${t.length}`);return t}const Fr=(Dr={blockSize:16,nonceLength:16},$r=function(e,t,n={}){dr(e),dr(t,16);const r=!n.disablePadding;return{encrypt:(n,i)=>{const o=Cr(e),{b:s,o:a,out:l}=function(e,t,n){let r=e.length;const i=r%hr;if(!t&&0!==i)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");const o=fr(e);if(t){let e=hr-i;e||(e=hr),r+=e}const s=Qr(r,n);return{b:o,o:fr(s),out:s}}(n,r,i),c=fr(t);let u=c[0],d=c[1],f=c[2],h=c[3],p=0;for(;p+4<=s.length;)u^=s[p+0],d^=s[p+1],f^=s[p+2],h^=s[p+3],({s0:u,s1:d,s2:f,s3:h}=Br(o,u,d,f,h)),a[p++]=u,a[p++]=d,a[p++]=f,a[p++]=h;if(r){const e=function(e){const t=new Uint8Array(16),n=fr(t);t.set(e);const r=hr-e.length;for(let e=hr-r;e<hr;e++)t[e]=r;return n}(n.subarray(4*p));u^=e[0],d^=e[1],f^=e[2],h^=e[3],({s0:u,s1:d,s2:f,s3:h}=Br(o,u,d,f,h)),a[p++]=u,a[p++]=d,a[p++]=f,a[p++]=h}return o.fill(0),l},decrypt:(n,i)=>{!function(e){if(dr(e),e.length%hr!==0)throw new Error("aes/(cbc-ecb).decrypt ciphertext should consist of blocks with size 16")}(n);const o=function(e){const t=Cr(e),n=t.slice(),r=t.length,{sbox2:i}=br,{T0:o,T1:s,T2:a,T3:l}=kr;for(let e=0;e<r;e+=4)for(let i=0;i<4;i++)n[e+i]=t[r-e-4+i];t.fill(0);for(let e=4;e<r-4;e++){const t=n[e],r=xr(i,t,t,t,t);n[e]=o[255&r]^s[r>>>8&255]^a[r>>>16&255]^l[r>>>24]}return n}(e),s=fr(t),a=Qr(n.length,i),l=fr(n),c=fr(a);let u=s[0],d=s[1],f=s[2],h=s[3];for(let e=0;e+4<=l.length;){const t=u,n=d,r=f,i=h;u=l[e+0],d=l[e+1],f=l[e+2],h=l[e+3];const{s0:s,s1:a,s2:p,s3:g}=Sr(o,u,d,f,h);c[e++]=s^t,c[e++]=a^n,c[e++]=p^r,c[e++]=g^i}return o.fill(0),function(e,t){if(!t)return e;const n=e.length;if(!n)throw new Error("aes/pcks5: empty ciphertext not allowed");const r=e[n-1];if(r<=0||r>16)throw new Error(`aes/pcks5: wrong padding byte: ${r}`);const i=e.subarray(0,-r);for(let t=0;t<r;t++)if(e[n-t-1]!==r)throw new Error("aes/pcks5: wrong padding");return i}(a,r)}}},Object.assign($r,Dr),$r);var Dr,$r;const Rr=e=>Uint8Array.from(e.split("").map(e=>e.charCodeAt(0))),Pr=Rr("expand 16-byte k"),Tr=Rr("expand 32-byte k"),Ur=fr(Pr),Nr=fr(Tr);function Lr(e,t){return e<<t|e>>>32-t}function Mr(e){return e.byteOffset%4==0}Nr.slice();const _r=2**32-1,Or=new Uint32Array;function Hr(e,t){const{allowShortKeys:n,extendNonceFn:r,counterLength:i,counterRight:o,rounds:s}=function(e,t){if(null==t||"object"!=typeof t)throw new Error("options must be defined");return Object.assign(e,t)}({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if("function"!=typeof e)throw new Error("core must be a function");return cr(i),cr(s),ur(o),ur(n),(t,a,l,c,u=0)=>{dr(t),dr(a),dr(l);const d=l.length;if(c||(c=new Uint8Array(d)),dr(c),cr(u),u<0||u>=_r)throw new Error("arx: counter overflow");if(c.length<d)throw new Error(`arx: output (${c.length}) is shorter than data (${d})`);const f=[];let h,p,g=t.length;if(32===g)h=t.slice(),f.push(h),p=Nr;else{if(16!==g||!n)throw new Error(`arx: invalid 32-byte key, got length=${g}`);h=new Uint8Array(32),h.set(t),h.set(t,16),p=Ur,f.push(h)}Mr(a)||(a=a.slice(),f.push(a));const m=fr(h);if(r){if(24!==a.length)throw new Error("arx: extended nonce must be 24 bytes");r(p,m,fr(a.subarray(0,16)),m),a=a.subarray(16)}const y=16-i;if(y!==a.length)throw new Error(`arx: nonce must be ${y} or 16 bytes`);if(12!==y){const e=new Uint8Array(12);e.set(a,o?0:12-a.length),a=e,f.push(a)}const w=fr(a);for(!function(e,t,n,r,i,o,s,a){const l=i.length,c=new Uint8Array(64),u=fr(c),d=Mr(i)&&Mr(o),f=d?fr(i):Or,h=d?fr(o):Or;for(let p=0;p<l;s++){if(e(t,n,r,u,s,a),s>=_r)throw new Error("arx: counter overflow");const g=Math.min(64,l-p);if(d&&64===g){const e=p/4;if(p%4!=0)throw new Error("arx: invalid block position");for(let t,n=0;n<16;n++)t=e+n,h[t]=f[t]^u[n];p+=64;continue}for(let e,t=0;t<g;t++)e=p+t,o[e]=i[e]^c[t];p+=g}}(e,p,m,w,l,c,u,s);f.length>0;)f.pop().fill(0);return c}}function jr(e,t,n,r,i,o=20){let s=e[0],a=e[1],l=e[2],c=e[3],u=t[0],d=t[1],f=t[2],h=t[3],p=t[4],g=t[5],m=t[6],y=t[7],w=i,v=n[0],A=n[1],b=n[2],k=s,I=a,C=l,E=c,x=u,B=d,S=f,Q=h,F=p,D=g,$=m,R=y,P=w,T=v,U=A,N=b;for(let e=0;e<o;e+=2)k=k+x|0,P=Lr(P^k,16),F=F+P|0,x=Lr(x^F,12),k=k+x|0,P=Lr(P^k,8),F=F+P|0,x=Lr(x^F,7),I=I+B|0,T=Lr(T^I,16),D=D+T|0,B=Lr(B^D,12),I=I+B|0,T=Lr(T^I,8),D=D+T|0,B=Lr(B^D,7),C=C+S|0,U=Lr(U^C,16),$=$+U|0,S=Lr(S^$,12),C=C+S|0,U=Lr(U^C,8),$=$+U|0,S=Lr(S^$,7),E=E+Q|0,N=Lr(N^E,16),R=R+N|0,Q=Lr(Q^R,12),E=E+Q|0,N=Lr(N^E,8),R=R+N|0,Q=Lr(Q^R,7),k=k+B|0,N=Lr(N^k,16),$=$+N|0,B=Lr(B^$,12),k=k+B|0,N=Lr(N^k,8),$=$+N|0,B=Lr(B^$,7),I=I+S|0,P=Lr(P^I,16),R=R+P|0,S=Lr(S^R,12),I=I+S|0,P=Lr(P^I,8),R=R+P|0,S=Lr(S^R,7),C=C+Q|0,T=Lr(T^C,16),F=F+T|0,Q=Lr(Q^F,12),C=C+Q|0,T=Lr(T^C,8),F=F+T|0,Q=Lr(Q^F,7),E=E+x|0,U=Lr(U^E,16),D=D+U|0,x=Lr(x^D,12),E=E+x|0,U=Lr(U^E,8),D=D+U|0,x=Lr(x^D,7);let L=0;r[L++]=s+k|0,r[L++]=a+I|0,r[L++]=l+C|0,r[L++]=c+E|0,r[L++]=u+x|0,r[L++]=d+B|0,r[L++]=f+S|0,r[L++]=h+Q|0,r[L++]=p+F|0,r[L++]=g+D|0,r[L++]=m+$|0,r[L++]=y+R|0,r[L++]=w+P|0,r[L++]=v+T|0,r[L++]=A+U|0,r[L++]=b+N|0}const Gr=Hr(jr,{counterRight:!1,counterLength:4,allowShortKeys:!1});class Jr extends nn{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,ln.hash(e);const n=en(t);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,i=new Uint8Array(r);i.set(n.length>r?e.create().update(n).digest():n);for(let e=0;e<i.length;e++)i[e]^=54;this.iHash.update(i),this.oHash=e.create();for(let e=0;e<i.length;e++)i[e]^=106;this.oHash.update(i),i.fill(0)}update(e){return ln.exists(this),this.iHash.update(e),this}digestInto(e){ln.exists(this),ln.bytes(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:t,iHash:n,finished:r,destroyed:i,blockLen:o,outputLen:s}=this;return e.finished=r,e.destroyed=i,e.blockLen=o,e.outputLen=s,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Kr=(e,t,n)=>new Jr(e,t).update(n).digest();Kr.create=(e,t)=>new Jr(e,t);const Vr=new Uint8Array([0]),zr=new Uint8Array;var qr=Object.defineProperty,Yr=(e,t)=>{for(var n in t)qr(e,n,{get:t[n],enumerable:!0})},Wr=Symbol("verified");function Zr(e){if(!(e instanceof Object))return!1;if("number"!=typeof e.kind)return!1;if("string"!=typeof e.content)return!1;if("number"!=typeof e.created_at)return!1;if("string"!=typeof e.pubkey)return!1;if(!e.pubkey.match(/^[a-f0-9]{64}$/))return!1;if(!Array.isArray(e.tags))return!1;for(let t=0;t<e.tags.length;t++){let n=e.tags[t];if(!Array.isArray(n))return!1;for(let e=0;e<n.length;e++)if("string"!=typeof n[e])return!1}return!0}Yr({},{Queue:()=>si,QueueNode:()=>oi,binarySearch:()=>ii,bytesToHex:()=>Zt,hexToBytes:()=>Xt,insertEventIntoAscendingList:()=>ri,insertEventIntoDescendingList:()=>ni,normalizeURL:()=>ti,utf8Decoder:()=>Xr,utf8Encoder:()=>ei});var Xr=new TextDecoder("utf-8"),ei=new TextEncoder;function ti(e){try{-1===e.indexOf("://")&&(e="wss://"+e);let t=new URL(e);return t.pathname=t.pathname.replace(/\/+/g,"/"),t.pathname.endsWith("/")&&(t.pathname=t.pathname.slice(0,-1)),("80"===t.port&&"ws:"===t.protocol||"443"===t.port&&"wss:"===t.protocol)&&(t.port=""),t.searchParams.sort(),t.hash="",t.toString()}catch(t){throw new Error(`Invalid URL: ${e}`)}}function ni(e,t){const[n,r]=ii(e,e=>t.id===e.id?0:t.created_at===e.created_at?-1:e.created_at-t.created_at);return r||e.splice(n,0,t),e}function ri(e,t){const[n,r]=ii(e,e=>t.id===e.id?0:t.created_at===e.created_at?-1:t.created_at-e.created_at);return r||e.splice(n,0,t),e}function ii(e,t){let n=0,r=e.length-1;for(;n<=r;){const i=Math.floor((n+r)/2),o=t(e[i]);if(0===o)return[i,!0];o<0?r=i-1:n=i+1}return[n,!1]}var oi=class{value;next=null;prev=null;constructor(e){this.value=e}},si=class{first;last;constructor(){this.first=null,this.last=null}enqueue(e){const t=new oi(e);return this.last?this.last===this.first?(this.last=t,this.last.prev=this.first,this.first.next=t):(t.prev=this.last,this.last.next=t,this.last=t):(this.first=t,this.last=t),!0}dequeue(){if(!this.first)return null;if(this.first===this.last){const e=this.first;return this.first=null,this.last=null,e.value}const e=this.first;return this.first=e.next,this.first&&(this.first.prev=null),e.value}};function ai(e){return Zt(yn(ei.encode(function(e){if(!Zr(e))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,e.pubkey,e.created_at,e.kind,e.tags,e.content])}(e))))}var li=new class{generateSecretKey(){return Kt.utils.randomPrivateKey()}getPublicKey(e){return Zt(Kt.getPublicKey(e))}finalizeEvent(e,t){const n=e;return n.pubkey=Zt(Kt.getPublicKey(t)),n.id=ai(n),n.sig=Zt(Kt.sign(ai(n),t)),n[Wr]=!0,n}verifyEvent(e){if("boolean"==typeof e[Wr])return e[Wr];const t=ai(e);if(t!==e.id)return e[Wr]=!1,!1;try{const n=Kt.verify(e.sig,t,e.pubkey);return e[Wr]=n,n}catch(t){return e[Wr]=!1,!1}}},ci=li.generateSecretKey,ui=li.getPublicKey,di=li.finalizeEvent,fi=li.verifyEvent,hi={};function pi(e){return 1e3<=e&&e<1e4||[1,2,4,5,6,7,8,16,40,41,42,43,44].includes(e)}function gi(e){return[0,3].includes(e)||1e4<=e&&e<2e4}function mi(e){return 2e4<=e&&e<3e4}function yi(e){return 3e4<=e&&e<4e4}function wi(e){return pi(e)?"regular":gi(e)?"replaceable":mi(e)?"ephemeral":yi(e)?"parameterized":"unknown"}function vi(e,t){const n=t instanceof Array?t:[t];return Zr(e)&&n.includes(e.kind)||!1}Yr(hi,{Application:()=>$o,BadgeAward:()=>Si,BadgeDefinition:()=>Eo,BlockedRelaysList:()=>oo,BookmarkList:()=>no,Bookmarksets:()=>ko,Calendar:()=>Mo,CalendarEventRSVP:()=>_o,ChannelCreation:()=>$i,ChannelHideMessage:()=>Ti,ChannelMessage:()=>Pi,ChannelMetadata:()=>Ri,ChannelMuteUser:()=>Ui,ClassifiedListing:()=>To,ClientAuth:()=>po,CommunitiesList:()=>ro,CommunityDefinition:()=>jo,CommunityPostApproval:()=>Ji,Contacts:()=>Ii,CreateOrUpdateProduct:()=>So,CreateOrUpdateStall:()=>Bo,Curationsets:()=>Io,Date:()=>No,DirectMessageRelaysList:()=>co,DraftClassifiedListing:()=>Uo,DraftLong:()=>Fo,Emojisets:()=>Do,EncryptedDirectMessage:()=>Ci,EventDeletion:()=>Ei,FileMetadata:()=>Mi,FileServerPreference:()=>uo,Followsets:()=>vo,GenericRepost:()=>Di,Genericlists:()=>Ao,GiftWrap:()=>Li,HTTPAuth:()=>wo,Handlerinformation:()=>Ho,Handlerrecommendation:()=>Oo,Highlights:()=>Zi,InterestsList:()=>ao,Interestsets:()=>xo,JobFeedback:()=>zi,JobRequest:()=>Ki,JobResult:()=>Vi,Label:()=>Gi,LightningPubRPC:()=>ho,LiveChatMessage:()=>_i,LiveEvent:()=>Ro,LongFormArticle:()=>Qo,Metadata:()=>Ai,Mutelist:()=>Xi,NWCWalletInfo:()=>fo,NWCWalletRequest:()=>go,NWCWalletResponse:()=>mo,NostrConnect:()=>yo,OpenTimestamps:()=>Ni,Pinlist:()=>eo,PrivateDirectMessage:()=>Fi,ProblemTracker:()=>Oi,ProfileBadges:()=>Co,PublicChatsList:()=>io,Reaction:()=>Bi,RecommendRelay:()=>ki,RelayList:()=>to,Relaysets:()=>bo,Report:()=>Hi,Reporting:()=>ji,Repost:()=>xi,Seal:()=>Qi,SearchRelaysList:()=>so,ShortTextNote:()=>bi,Time:()=>Lo,UserEmojiList:()=>lo,UserStatuses:()=>Po,Zap:()=>Wi,ZapGoal:()=>qi,ZapRequest:()=>Yi,classifyKind:()=>wi,isAddressableKind:()=>yi,isEphemeralKind:()=>mi,isKind:()=>vi,isRegularKind:()=>pi,isReplaceableKind:()=>gi});var Ai=0,bi=1,ki=2,Ii=3,Ci=4,Ei=5,xi=6,Bi=7,Si=8,Qi=13,Fi=14,Di=16,$i=40,Ri=41,Pi=42,Ti=43,Ui=44,Ni=1040,Li=1059,Mi=1063,_i=1311,Oi=1971,Hi=1984,ji=1984,Gi=1985,Ji=4550,Ki=5999,Vi=6999,zi=7e3,qi=9041,Yi=9734,Wi=9735,Zi=9802,Xi=1e4,eo=10001,to=10002,no=10003,ro=10004,io=10005,oo=10006,so=10007,ao=10015,lo=10030,co=10050,uo=10096,fo=13194,ho=21e3,po=22242,go=23194,mo=23195,yo=24133,wo=27235,vo=3e4,Ao=30001,bo=30002,ko=30003,Io=30004,Co=30008,Eo=30009,xo=30015,Bo=30017,So=30018,Qo=30023,Fo=30024,Do=30030,$o=30078,Ro=30311,Po=30315,To=30402,Uo=30403,No=31922,Lo=31923,Mo=31924,_o=31925,Oo=31989,Ho=31990,jo=34550;function Go(e,t){let n=t.length+3,r=e.indexOf(`"${t}":`)+n,i=e.slice(r).indexOf('"')+r+1;return e.slice(i,i+64)}function Jo(e,t){let n=t.length,r=e.indexOf(`"${t}":`)+n+3,i=e.slice(r),o=Math.min(i.indexOf(","),i.indexOf("}"));return parseInt(i.slice(0,o),10)}function Ko(e){let t=e.slice(0,22).indexOf('"EVENT"');if(-1===t)return null;let n=e.slice(t+7+1).indexOf('"');if(-1===n)return null;let r=t+7+1+n,i=e.slice(r+1,80).indexOf('"');if(-1===i)return null;let o=r+1+i;return e.slice(r+1,o)}function Vo(e,t){return t===Go(e,"id")}function zo(e,t){return t===Go(e,"pubkey")}function qo(e,t){return t===Jo(e,"kind")}Yr({},{getHex64:()=>Go,getInt:()=>Jo,getSubscriptionId:()=>Ko,matchEventId:()=>Vo,matchEventKind:()=>qo,matchEventPubkey:()=>zo});function Yo(e,t){return{kind:po,created_at:Math.floor(Date.now()/1e3),tags:[["relay",e],["challenge",t]],content:""}}Yr({},{makeAuthEvent:()=>Yo});try{WebSocket}catch{}try{WebSocket}catch{}var Wo={};Yr(Wo,{BECH32_REGEX:()=>es,Bech32MaxSize:()=>Xo,NostrTypeGuard:()=>Zo,decode:()=>ns,decodeNostrURI:()=>ts,encodeBytes:()=>ls,naddrEncode:()=>ds,neventEncode:()=>us,noteEncode:()=>ss,nprofileEncode:()=>cs,npubEncode:()=>os,nsecEncode:()=>is});var Zo={isNProfile:e=>/^nprofile1[a-z\d]+$/.test(e||""),isNEvent:e=>/^nevent1[a-z\d]+$/.test(e||""),isNAddr:e=>/^naddr1[a-z\d]+$/.test(e||""),isNSec:e=>/^nsec1[a-z\d]{58}$/.test(e||""),isNPub:e=>/^npub1[a-z\d]{58}$/.test(e||""),isNote:e=>/^note1[a-z\d]+$/.test(e||""),isNcryptsec:e=>/^ncryptsec1[a-z\d]+$/.test(e||"")},Xo=5e3,es=/[\x21-\x7E]{1,83}1[023456789acdefghjklmnpqrstuvwxyz]{6,}/;function ts(e){try{return e.startsWith("nostr:")&&(e=e.substring(6)),ns(e)}catch(e){return{type:"invalid",data:null}}}function ns(e){let{prefix:t,words:n}=ar.decode(e,Xo),r=new Uint8Array(ar.fromWords(n));switch(t){case"nprofile":{let e=rs(r);if(!e[0]?.[0])throw new Error("missing TLV 0 for nprofile");if(32!==e[0][0].length)throw new Error("TLV 0 should be 32 bytes");return{type:"nprofile",data:{pubkey:Zt(e[0][0]),relays:e[1]?e[1].map(e=>Xr.decode(e)):[]}}}case"nevent":{let e=rs(r);if(!e[0]?.[0])throw new Error("missing TLV 0 for nevent");if(32!==e[0][0].length)throw new Error("TLV 0 should be 32 bytes");if(e[2]&&32!==e[2][0].length)throw new Error("TLV 2 should be 32 bytes");if(e[3]&&4!==e[3][0].length)throw new Error("TLV 3 should be 4 bytes");return{type:"nevent",data:{id:Zt(e[0][0]),relays:e[1]?e[1].map(e=>Xr.decode(e)):[],author:e[2]?.[0]?Zt(e[2][0]):void 0,kind:e[3]?.[0]?parseInt(Zt(e[3][0]),16):void 0}}}case"naddr":{let e=rs(r);if(!e[0]?.[0])throw new Error("missing TLV 0 for naddr");if(!e[2]?.[0])throw new Error("missing TLV 2 for naddr");if(32!==e[2][0].length)throw new Error("TLV 2 should be 32 bytes");if(!e[3]?.[0])throw new Error("missing TLV 3 for naddr");if(4!==e[3][0].length)throw new Error("TLV 3 should be 4 bytes");return{type:"naddr",data:{identifier:Xr.decode(e[0][0]),pubkey:Zt(e[2][0]),kind:parseInt(Zt(e[3][0]),16),relays:e[1]?e[1].map(e=>Xr.decode(e)):[]}}}case"nsec":return{type:t,data:r};case"npub":case"note":return{type:t,data:Zt(r)};default:throw new Error(`unknown prefix ${t}`)}}function rs(e){let t={},n=e;for(;n.length>0;){let e=n[0],r=n[1],i=n.slice(2,2+r);if(n=n.slice(2+r),i.length<r)throw new Error(`not enough data to read on TLV ${e}`);t[e]=t[e]||[],t[e].push(i)}return t}function is(e){return ls("nsec",e)}function os(e){return ls("npub",Xt(e))}function ss(e){return ls("note",Xt(e))}function as(e,t){let n=ar.toWords(t);return ar.encode(e,n,Xo)}function ls(e,t){return as(e,t)}function cs(e){return as("nprofile",fs({0:[Xt(e.pubkey)],1:(e.relays||[]).map(e=>ei.encode(e))}))}function us(e){let t;return void 0!==e.kind&&(t=function(e){const t=new Uint8Array(4);return t[0]=e>>24&255,t[1]=e>>16&255,t[2]=e>>8&255,t[3]=255&e,t}(e.kind)),as("nevent",fs({0:[Xt(e.id)],1:(e.relays||[]).map(e=>ei.encode(e)),2:e.author?[Xt(e.author)]:[],3:t?[new Uint8Array(t)]:[]}))}function ds(e){let t=new ArrayBuffer(4);return new DataView(t).setUint32(0,e.kind,!1),as("naddr",fs({0:[ei.encode(e.identifier)],1:(e.relays||[]).map(e=>ei.encode(e)),2:[Xt(e.pubkey)],3:[new Uint8Array(t)]}))}function fs(e){let t=[];return Object.entries(e).reverse().forEach(([e,n])=>{n.forEach(n=>{let r=new Uint8Array(n.length+2);r.set([parseInt(e)],0),r.set([n.length],1),r.set(n,2),t.push(r)})}),tn(...t)}var hs={};function ps(e,t,n){const r=e instanceof Uint8Array?Zt(e):e,i=ms(Ft.getSharedSecret(r,"02"+t));let o=Uint8Array.from(on(16)),s=ei.encode(n),a=Fr(i,o).encrypt(s);return`${Yn.encode(new Uint8Array(a))}?iv=${Yn.encode(new Uint8Array(o.buffer))}`}function gs(e,t,n){const r=e instanceof Uint8Array?Zt(e):e;let[i,o]=n.split("?iv="),s=ms(Ft.getSharedSecret(r,"02"+t)),a=Yn.decode(o),l=Yn.decode(i),c=Fr(s,a).decrypt(l);return Xr.decode(c)}function ms(e){return e.slice(1,33)}Yr(hs,{decrypt:()=>gs,encrypt:()=>ps});Yr({},{NIP05_REGEX:()=>ws,isNip05:()=>vs,isValid:()=>Is,queryProfile:()=>ks,searchDomain:()=>bs,useFetchImplementation:()=>As});var ys,ws=/^(?:([\w.+-]+)@)?([\w_-]+(\.[\w_-]+)+)$/,vs=e=>ws.test(e||"");try{ys=fetch}catch(e){}function As(e){ys=e}async function bs(e,t=""){try{const n=`https://${e}/.well-known/nostr.json?name=${t}`,r=await ys(n,{redirect:"manual"});if(200!==r.status)throw Error("Wrong response code");return(await r.json()).names}catch(e){return{}}}async function ks(e){const t=e.match(ws);if(!t)return null;const[,n="_",r]=t;try{const e=`https://${r}/.well-known/nostr.json?name=${n}`,t=await ys(e,{redirect:"manual"});if(200!==t.status)throw Error("Wrong response code");const i=await t.json(),o=i.names[n];return o?{pubkey:o,relays:i.relays?.[o]}:null}catch(e){return null}}async function Is(e,t){const n=await ks(t);return!!n&&n.pubkey===e}function Cs(e){const t={reply:void 0,root:void 0,mentions:[],profiles:[],quotes:[]};let n,r;for(let i=e.tags.length-1;i>=0;i--){const o=e.tags[i];if("e"===o[0]&&o[1]){const[e,i,s,a,l]=o,c={id:i,relays:s?[s]:[],author:l};if("root"===a){t.root=c;continue}if("reply"===a){t.reply=c;continue}if("mention"===a){t.mentions.push(c);continue}n?r=c:n=c,t.mentions.push(c);continue}if("q"===o[0]&&o[1]){const[e,n,r]=o;t.quotes.push({id:n,relays:r?[r]:[]})}"p"===o[0]&&o[1]&&t.profiles.push({pubkey:o[1],relays:o[2]?[o[2]]:[]})}return t.root||(t.root=r||n||t.reply),t.reply||(t.reply=n||t.root),[t.reply,t.root].forEach(e=>{if(!e)return;let n=t.mentions.indexOf(e);if(-1!==n&&t.mentions.splice(n,1),e.author){let n=t.profiles.find(t=>t.pubkey===e.author);n&&n.relays&&(e.relays||(e.relays=[]),n.relays.forEach(t=>{-1===e.relays?.indexOf(t)&&e.relays.push(t)}),n.relays=e.relays)}}),t.mentions.forEach(e=>{if(e.author){let n=t.profiles.find(t=>t.pubkey===e.author);n&&n.relays&&(e.relays||(e.relays=[]),n.relays.forEach(t=>{-1===e.relays.indexOf(t)&&e.relays.push(t)}),n.relays=e.relays)}}),t}Yr({},{parse:()=>Cs});Yr({},{fetchRelayInformation:()=>xs,useFetchImplementation:()=>Es});try{fetch}catch{}function Es(e){0}async function xs(e){return await(await fetch(e.replace("ws://","http://").replace("wss://","https://"),{headers:{Accept:"application/nostr+json"}})).json()}function Bs(e){let t=0;for(let n=0;n<64;n+=8){const r=parseInt(e.substring(n,n+8),16);if(0!==r){t+=Math.clz32(r);break}t+=32}return t}function Ss(e,t){let n=0;const r=e,i=["nonce",n.toString(),t.toString()];for(r.tags.push(i);;){const e=Math.floor((new Date).getTime()/1e3);if(e!==r.created_at&&(n=0,r.created_at=e),i[1]=(++n).toString(),r.id=Qs(r),Bs(r.id)>=t)break}return r}function Qs(e){return Zt(yn(ei.encode(JSON.stringify([0,e.pubkey,e.created_at,e.kind,e.tags,e.content]))))}Yr({},{fastEventHash:()=>Qs,getPow:()=>Bs,minePow:()=>Ss});Yr({},{unwrapEvent:()=>ta,unwrapManyEvents:()=>na,wrapEvent:()=>Xs,wrapManyEvents:()=>ea});Yr({},{createRumor:()=>Ks,createSeal:()=>Vs,createWrap:()=>zs,unwrapEvent:()=>Ws,unwrapManyEvents:()=>Zs,wrapEvent:()=>qs,wrapManyEvents:()=>Ys});var Fs={};Yr(Fs,{decrypt:()=>Ms,encrypt:()=>Ls,getConversationKey:()=>Rs,v2:()=>_s});var Ds=1,$s=65535;function Rs(e,t){const n=Ft.getSharedSecret(e,"02"+t).subarray(1,33);return function(e,t,n){return ln.hash(e),void 0===n&&(n=new Uint8Array(e.outputLen)),Kr(e,en(n),en(t))}(yn,n,"nip44-v2")}function Ps(e,t){const n=function(e,t,n,r=32){if(ln.hash(e),ln.number(r),r>255*e.outputLen)throw new Error("Length should be <= 255*HashLen");const i=Math.ceil(r/e.outputLen);void 0===n&&(n=zr);const o=new Uint8Array(i*e.outputLen),s=Kr.create(e,t),a=s._cloneInto(),l=new Uint8Array(s.outputLen);for(let t=0;t<i;t++)Vr[0]=t+1,a.update(0===t?zr:l).update(n).update(Vr).digestInto(l),o.set(l,e.outputLen*t),s._cloneInto(a);return s.destroy(),a.destroy(),l.fill(0),Vr.fill(0),o.slice(0,r)}(yn,e,t,76);return{chacha_key:n.subarray(0,32),chacha_nonce:n.subarray(32,44),hmac_key:n.subarray(44,76)}}function Ts(e){if(!Number.isSafeInteger(e)||e<1)throw new Error("expected positive integer");if(e<=32)return 32;const t=1<<Math.floor(Math.log2(e-1))+1,n=t<=256?32:t/8;return n*(Math.floor((e-1)/n)+1)}function Us(e){const t=ei.encode(e),n=t.length;return tn(function(e){if(!Number.isSafeInteger(e)||e<Ds||e>$s)throw new Error("invalid plaintext size: must be between 1 and 65535 bytes");const t=new Uint8Array(2);return new DataView(t.buffer).setUint16(0,e,!1),t}(n),t,new Uint8Array(Ts(n)-n))}function Ns(e,t,n){if(32!==n.length)throw new Error("AAD associated data must be 32 bytes");const r=tn(n,t);return Kr(yn,e,r)}function Ls(e,t,n=on(32)){const{chacha_key:r,chacha_nonce:i,hmac_key:o}=Ps(t,n),s=Us(e),a=Gr(r,i,s),l=Ns(o,a,n);return Yn.encode(tn(new Uint8Array([2]),n,a,l))}function Ms(e,t){const{nonce:n,ciphertext:r,mac:i}=function(e){if("string"!=typeof e)throw new Error("payload must be a valid string");const t=e.length;if(t<132||t>87472)throw new Error("invalid payload length: "+t);if("#"===e[0])throw new Error("unknown encryption version");let n;try{n=Yn.decode(e)}catch(e){throw new Error("invalid base64: "+e.message)}const r=n.length;if(r<99||r>65603)throw new Error("invalid data length: "+r);const i=n[0];if(2!==i)throw new Error("unknown encryption version "+i);return{nonce:n.subarray(1,33),ciphertext:n.subarray(33,-32),mac:n.subarray(-32)}}(e),{chacha_key:o,chacha_nonce:s,hmac_key:a}=Ps(t,n);if(!function(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return 0===n}(Ns(a,r,n),i))throw new Error("invalid MAC");return function(e){const t=new DataView(e.buffer).getUint16(0),n=e.subarray(2,2+t);if(t<Ds||t>$s||n.length!==t||e.length!==2+Ts(t))throw new Error("invalid padding");return Xr.decode(n)}(Gr(o,s,r))}var _s={utils:{getConversationKey:Rs,calcPaddedLen:Ts},encrypt:Ls,decrypt:Ms},Os=()=>Math.round(Date.now()/1e3),Hs=()=>Math.round(Os()-172800*Math.random()),js=(e,t)=>Rs(e,t),Gs=(e,t,n)=>Ls(JSON.stringify(e),js(t,n)),Js=(e,t)=>JSON.parse(Ms(e.content,js(t,e.pubkey)));function Ks(e,t){const n={created_at:Os(),content:"",tags:[],...e,pubkey:ui(t)};return n.id=ai(n),n}function Vs(e,t,n){return di({kind:Qi,content:Gs(e,t,n),created_at:Hs(),tags:[]},t)}function zs(e,t){const n=ci();return di({kind:Li,content:Gs(e,n,t),created_at:Hs(),tags:[["p",t]]},n)}function qs(e,t,n){return zs(Vs(Ks(e,t),t,n),n)}function Ys(e,t,n){if(!n||0===n.length)throw new Error("At least one recipient is required.");const r=ui(t),i=[qs(e,t,r)];return n.forEach(n=>{i.push(qs(e,t,n))}),i}function Ws(e,t){const n=Js(e,t);return Js(n,t)}function Zs(e,t){let n=[];return e.forEach(e=>{n.push(Ws(e,t))}),n.sort((e,t)=>e.created_at-t.created_at),n}function Xs(e,t,n,r,i){const o=function(e,t,n,r){const i={created_at:Math.ceil(Date.now()/1e3),kind:Fi,tags:[],content:t};return(Array.isArray(e)?e:[e]).forEach(({publicKey:e,relayUrl:t})=>{i.tags.push(t?["p",e,t]:["p",e])}),r&&i.tags.push(["e",r.eventId,r.relayUrl||"","reply"]),n&&i.tags.push(["subject",n]),i}(t,n,r,i);return qs(o,e,t.publicKey)}function ea(e,t,n,r,i){if(!t||0===t.length)throw new Error("At least one recipient is required.");return[{publicKey:ui(e)},...t].map(t=>Xs(e,t,n,r,i))}var ta=Ws,na=Zs;function ra(e,t,n,r){let i;const o=[...e.tags??[],["e",t.id,n],["p",t.pubkey]];return t.kind===bi?i=xi:(i=Di,o.push(["k",String(t.kind)])),di({kind:i,tags:o,content:""===e.content||t.tags?.find(e=>"-"===e[0])?"":JSON.stringify(t),created_at:e.created_at},r)}function ia(e){if(![xi,Di].includes(e.kind))return;let t,n;for(let r=e.tags.length-1;r>=0&&(void 0===t||void 0===n);r--){const i=e.tags[r];i.length>=2&&("e"===i[0]&&void 0===t?t=i:"p"===i[0]&&void 0===n&&(n=i))}return void 0!==t?{id:t[1],relays:[t[2],n?.[2]].filter(e=>"string"==typeof e),author:n?.[1]}:void 0}function oa(e,{skipVerification:t}={}){const n=ia(e);if(void 0===n||""===e.content)return;let r;try{r=JSON.parse(e.content)}catch(e){return}return r.id===n.id&&(t||fi(r))?r:void 0}Yr({},{finishRepostEvent:()=>ra,getRepostedEvent:()=>oa,getRepostedEventPointer:()=>ia});Yr({},{NOSTR_URI_REGEX:()=>sa,parse:()=>la,test:()=>aa});var sa=new RegExp(`nostr:(${es.source})`);function aa(e){return"string"==typeof e&&new RegExp(`^${sa.source}$`).test(e)}function la(e){const t=e.match(new RegExp(`^${sa.source}$`));if(!t)throw new Error(`Invalid Nostr URI: ${e}`);return{uri:t[0],value:t[1],decoded:ns(t[1])}}function ca(e,t,n){const r=t.tags.filter(e=>e.length>=2&&("e"===e[0]||"p"===e[0]));return di({...e,kind:Bi,tags:[...e.tags??[],...r,["e",t.id],["p",t.pubkey]],content:e.content??"+"},n)}function ua(e){if(e.kind!==Bi)return;let t,n;for(let r=e.tags.length-1;r>=0&&(void 0===t||void 0===n);r--){const i=e.tags[r];i.length>=2&&("e"===i[0]&&void 0===t?t=i:"p"===i[0]&&void 0===n&&(n=i))}return void 0!==t&&void 0!==n?{id:t[1],relays:[t[2],n[2]].filter(e=>void 0!==e),author:n[1]}:void 0}Yr({},{finishReactionEvent:()=>ca,getReactedEventPointer:()=>ua});Yr({},{parse:()=>ha});var da=/\W/m,fa=/\W |\W$|$|,| /m;function*ha(e){const t=e.length;let n=0,r=0;for(;r<t;){let i=e.indexOf(":",r);if(-1===i)break;if("nostr"===e.substring(i-5,i)){const o=e.substring(i+60).match(da),s=o?i+60+o.index:t;try{let t,{data:o,type:a}=ns(e.substring(i+1,s));switch(a){case"npub":t={pubkey:o};break;case"nsec":case"note":r=s+1;continue;default:t=o}n!==i-5&&(yield{type:"text",text:e.substring(n,i-5)}),yield{type:"reference",pointer:t},r=s,n=r;continue}catch(e){r=i+1;continue}}else if("https"===e.substring(i-5,i)||"http"===e.substring(i-4,i)){const o=e.substring(i+4).match(fa),s=o?i+4+o.index:t,a="s"===e[i-1]?5:4;try{let t=new URL(e.substring(i-a,s));if(-1===t.hostname.indexOf("."))throw new Error("invalid url");if(n!==i-a&&(yield{type:"text",text:e.substring(n,i-a)}),/\.(png|jpe?g|gif|webp)$/i.test(t.pathname)){yield{type:"image",url:t.toString()},r=s,n=r;continue}if(/\.(mp4|avi|webm|mkv)$/i.test(t.pathname)){yield{type:"video",url:t.toString()},r=s,n=r;continue}if(/\.(mp3|aac|ogg|opus)$/i.test(t.pathname)){yield{type:"audio",url:t.toString()},r=s,n=r;continue}yield{type:"url",url:t.toString()},r=s,n=r;continue}catch(e){r=s+1;continue}}else{if("wss"!==e.substring(i-3,i)&&"ws"!==e.substring(i-2,i)){r=i+1;continue}{const o=e.substring(i+4).match(fa),s=o?i+4+o.index:t,a="s"===e[i-1]?3:2;try{let t=new URL(e.substring(i-a,s));if(-1===t.hostname.indexOf("."))throw new Error("invalid ws url");n!==i-a&&(yield{type:"text",text:e.substring(n,i-a)}),yield{type:"relay",url:t.toString()},r=s,n=r;continue}catch(e){r=s+1;continue}}}}n!==t&&(yield{type:"text",text:e.substring(n)})}Yr({},{channelCreateEvent:()=>pa,channelHideMessageEvent:()=>ya,channelMessageEvent:()=>ma,channelMetadataEvent:()=>ga,channelMuteUserEvent:()=>wa});var pa=(e,t)=>{let n;if("object"==typeof e.content)n=JSON.stringify(e.content);else{if("string"!=typeof e.content)return;n=e.content}return di({kind:$i,tags:[...e.tags??[]],content:n,created_at:e.created_at},t)},ga=(e,t)=>{let n;if("object"==typeof e.content)n=JSON.stringify(e.content);else{if("string"!=typeof e.content)return;n=e.content}return di({kind:Ri,tags:[["e",e.channel_create_event_id],...e.tags??[]],content:n,created_at:e.created_at},t)},ma=(e,t)=>{const n=[["e",e.channel_create_event_id,e.relay_url,"root"]];return e.reply_to_channel_message_event_id&&n.push(["e",e.reply_to_channel_message_event_id,e.relay_url,"reply"]),di({kind:Pi,tags:[...n,...e.tags??[]],content:e.content,created_at:e.created_at},t)},ya=(e,t)=>{let n;if("object"==typeof e.content)n=JSON.stringify(e.content);else{if("string"!=typeof e.content)return;n=e.content}return di({kind:Ti,tags:[["e",e.channel_message_event_id],...e.tags??[]],content:n,created_at:e.created_at},t)},wa=(e,t)=>{let n;if("object"==typeof e.content)n=JSON.stringify(e.content);else{if("string"!=typeof e.content)return;n=e.content}return di({kind:Ui,tags:[["p",e.pubkey_to_mute],...e.tags??[]],content:n,created_at:e.created_at},t)};Yr({},{EMOJI_SHORTCODE_REGEX:()=>va,matchAll:()=>ba,regex:()=>Aa,replaceAll:()=>ka});var va=/:(\w+):/,Aa=()=>new RegExp(`\\B${va.source}\\B`,"g");function*ba(e){const t=e.matchAll(Aa());for(const e of t)try{const[t,n]=e;yield{shortcode:t,name:n,start:e.index,end:e.index+t.length}}catch(e){}}function ka(e,t){return e.replaceAll(Aa(),(e,n)=>t({shortcode:e,name:n}))}var Ia;Yr({},{useFetchImplementation:()=>Ca,validateGithub:()=>Ea});try{Ia=fetch}catch{}function Ca(e){Ia=e}async function Ea(e,t,n){try{return await(await Ia(`https://gist.github.com/${t}/${n}/raw`)).text()===`Verifying that I control the following Nostr public key: ${e}`}catch(e){return!1}}function xa(e){const{host:t,pathname:n,searchParams:r}=new URL(e),i=n||t,o=r.get("relay"),s=r.get("secret");if(!i||!o||!s)throw new Error("invalid connection string");return{pubkey:i,relay:o,secret:s}}async function Ba(e,t,n){const r={method:"pay_invoice",params:{invoice:n}},i=ps(t,e,JSON.stringify(r)),o={kind:go,created_at:Math.round(Date.now()/1e3),content:i,tags:[["p",e]]};return di(o,t)}Yr({},{makeNwcRequestEvent:()=>Ba,parseConnectionString:()=>xa});function Sa(e){return e=(e=e.trim().toLowerCase()).normalize("NFKC"),Array.from(e).map(e=>/\p{Letter}/u.test(e)||/\p{Number}/u.test(e)?e:"-").join("")}Yr({},{normalizeIdentifier:()=>Sa});var Qa;Yr({},{getSatoshisAmountFromBolt11:()=>Ta,getZapEndpoint:()=>Da,makeZapReceipt:()=>Pa,makeZapRequest:()=>$a,useFetchImplementation:()=>Fa,validateZapRequest:()=>Ra});try{Qa=fetch}catch{}function Fa(e){Qa=e}async function Da(e){try{let t="",{lud06:n,lud16:r}=JSON.parse(e.content);if(n){let{words:e}=ar.decode(n,1e3),r=ar.fromWords(e);t=Xr.decode(r)}else{if(!r)return null;{let[e,n]=r.split("@");t=new URL(`/.well-known/lnurlp/${e}`,`https://${n}`).toString()}}let i=await Qa(t),o=await i.json();if(o.allowsNostr&&o.nostrPubkey)return o.callback}catch(e){}return null}function $a(e){let t={kind:9734,created_at:Math.round(Date.now()/1e3),content:e.comment||"",tags:[["p","pubkey"in e?e.pubkey:e.event.pubkey],["amount",e.amount.toString()],["relays",...e.relays]]};if("event"in e){if(t.tags.push(["e",e.event.id]),gi(e.event.kind)){const n=["a",`${e.event.kind}:${e.event.pubkey}:`];t.tags.push(n)}else if(yi(e.event.kind)){let n=e.event.tags.find(([e,t])=>"d"===e&&t);if(!n)throw new Error("d tag not found or is empty");const r=["a",`${e.event.kind}:${e.event.pubkey}:${n[1]}`];t.tags.push(r)}t.tags.push(["k",e.event.kind.toString()])}return t}function Ra(e){let t;try{t=JSON.parse(e)}catch(e){return"Invalid zap request JSON."}if(!Zr(t))return"Zap request is not a valid Nostr event.";if(!fi(t))return"Invalid signature on zap request.";let n=t.tags.find(([e,t])=>"p"===e&&t);if(!n)return"Zap request doesn't have a 'p' tag.";if(!n[1].match(/^[a-f0-9]{64}$/))return"Zap request 'p' tag is not valid hex.";let r=t.tags.find(([e,t])=>"e"===e&&t);return r&&!r[1].match(/^[a-f0-9]{64}$/)?"Zap request 'e' tag is not valid hex.":t.tags.find(([e,t])=>"relays"===e&&t)?null:"Zap request doesn't have a 'relays' tag."}function Pa({zapRequest:e,preimage:t,bolt11:n,paidAt:r}){let i=JSON.parse(e),o=i.tags.filter(([e])=>"e"===e||"p"===e||"a"===e),s={kind:9735,created_at:Math.round(r.getTime()/1e3),content:"",tags:[...o,["P",i.pubkey],["bolt11",n],["description",e]]};return t&&s.tags.push(["preimage",t]),s}function Ta(e){if(e.length<50)return 0;const t=(e=e.substring(0,50)).lastIndexOf("1");if(-1===t)return 0;const n=e.substring(0,t);if(!n.startsWith("lnbc"))return 0;const r=n.substring(4);if(r.length<1)return 0;const i=r[r.length-1],o=i.charCodeAt(0)-"0".charCodeAt(0),s=o>=0&&o<=9;let a=r.length-1;if(s&&a++,a<1)return 0;const l=parseInt(r.substring(0,a));switch(i){case"m":return 1e5*l;case"u":return 100*l;case"n":return l/10;case"p":return l/1e4;default:return 1e8*l}}Yr({},{getToken:()=>Na,hashPayload:()=>Ga,unpackEventFromToken:()=>Ma,validateEvent:()=>Ka,validateEventKind:()=>Oa,validateEventMethodTag:()=>ja,validateEventPayloadTag:()=>Ja,validateEventTimestamp:()=>_a,validateEventUrlTag:()=>Ha,validateToken:()=>La});var Ua="Nostr ";async function Na(e,t,n,r=!1,i){const o={kind:wo,tags:[["u",e],["method",t]],created_at:Math.round((new Date).getTime()/1e3),content:""};i&&o.tags.push(["payload",Ga(i)]);const s=await n(o);return(r?Ua:"")+Yn.encode(ei.encode(JSON.stringify(s)))}async function La(e,t,n){const r=await Ma(e).catch(e=>{throw e});return await Ka(r,t,n).catch(e=>{throw e})}async function Ma(e){if(!e)throw new Error("Missing token");e=e.replace(Ua,"");const t=Xr.decode(Yn.decode(e));if(!t||0===t.length||!t.startsWith("{"))throw new Error("Invalid token");return JSON.parse(t)}function _a(e){return!!e.created_at&&Math.round((new Date).getTime()/1e3)-e.created_at<60}function Oa(e){return e.kind===wo}function Ha(e,t){const n=e.tags.find(e=>"u"===e[0]);return!!n&&(n.length>0&&n[1]===t)}function ja(e,t){const n=e.tags.find(e=>"method"===e[0]);return!!n&&(n.length>0&&n[1].toLowerCase()===t.toLowerCase())}function Ga(e){return Zt(yn(ei.encode(JSON.stringify(e))))}function Ja(e,t){const n=e.tags.find(e=>"payload"===e[0]);if(!n)return!1;const r=Ga(t);return n.length>0&&n[1]===r}async function Ka(e,t,n,r){if(!fi(e))throw new Error("Invalid nostr event, signature invalid");if(!Oa(e))throw new Error("Invalid nostr event, kind invalid");if(!_a(e))throw new Error("Invalid nostr event, created_at timestamp invalid");if(!Ha(e,t))throw new Error("Invalid nostr event, url tag invalid");if(!ja(e,n))throw new Error("Invalid nostr event, method tag invalid");if(Boolean(r)&&"object"==typeof r&&Object.keys(r).length>0&&!Ja(e,r))throw new Error("Invalid nostr event, payload tag does not match request body hash");return!0}function Va(e){return[0,3].includes(e)||1e4<=e&&e<2e4}function za(e){return 3e4<=e&&e<4e4}var qa=function(e,t){return qa=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},qa(e,t)};function Ya(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}qa(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function Wa(e,t,n,r){return new(n||(n=Promise))(function(i,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function a(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}l((r=r.apply(e,t||[])).next())})}function Za(e,t){var n,r,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(l){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,r=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}function Xa(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function el(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}function tl(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}function nl(e){return this instanceof nl?(this.v=e,this):new nl(e)}function rl(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=n.apply(e,t||[]),o=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",function(e){return function(t){return Promise.resolve(t).then(e,c)}}),r[Symbol.asyncIterator]=function(){return this},r;function s(e,t){i[e]&&(r[e]=function(t){return new Promise(function(n,r){o.push([e,t,n,r])>1||a(e,t)})},t&&(r[e]=t(r[e])))}function a(e,t){try{(n=i[e](t)).value instanceof nl?Promise.resolve(n.value.v).then(l,c):u(o[0][2],n)}catch(e){u(o[0][3],e)}var n}function l(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}function il(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=Xa(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,i){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,i,(t=e[n](t)).done,t.value)})}}}function ol(e){return"function"==typeof e}function sl(e){var t=e(function(e){Error.call(e),e.stack=(new Error).stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}"function"==typeof SuppressedError&&SuppressedError;var al=sl(function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map(function(e,t){return t+1+") "+e.toString()}).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}});function ll(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var cl=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var s=Xa(o),a=s.next();!a.done;a=s.next()){a.value.remove(this)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}else o.remove(this);var l=this.initialTeardown;if(ol(l))try{l()}catch(e){i=e instanceof al?e.errors:[e]}var c=this._finalizers;if(c){this._finalizers=null;try{for(var u=Xa(c),d=u.next();!d.done;d=u.next()){var f=d.value;try{fl(f)}catch(e){i=null!=i?i:[],e instanceof al?i=tl(tl([],el(i)),el(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new al(i)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)fl(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&ll(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&ll(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}(),ul=cl.EMPTY;function dl(e){return e instanceof cl||e&&"closed"in e&&ol(e.remove)&&ol(e.add)&&ol(e.unsubscribe)}function fl(e){ol(e)?e():e.unsubscribe()}var hl={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},pl={setTimeout:function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i=pl.delegate;return(null==i?void 0:i.setTimeout)?i.setTimeout.apply(i,tl([e,t],el(n))):setTimeout.apply(void 0,tl([e,t],el(n)))},clearTimeout:function(e){var t=pl.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function gl(e){pl.setTimeout(function(){throw e})}function ml(){}function yl(e){e()}var wl=function(e){function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,dl(t)&&t.add(n)):n.destination=Cl,n}return Ya(t,e),t.create=function(e,t,n){return new kl(e,t,n)},t.prototype.next=function(e){this.isStopped||this._next(e)},t.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(cl),vl=Function.prototype.bind;function Al(e,t){return vl.call(e,t)}var bl=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Il(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Il(e)}else Il(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Il(e)}},e}(),kl=function(e){function t(t,n,r){var i,o,s=e.call(this)||this;ol(t)||!t?i={next:null!=t?t:void 0,error:null!=n?n:void 0,complete:null!=r?r:void 0}:s&&hl.useDeprecatedNextContext?((o=Object.create(t)).unsubscribe=function(){return s.unsubscribe()},i={next:t.next&&Al(t.next,o),error:t.error&&Al(t.error,o),complete:t.complete&&Al(t.complete,o)}):i=t;return s.destination=new bl(i),s}return Ya(t,e),t}(wl);function Il(e){gl(e)}var Cl={closed:!0,next:ml,error:function(e){throw e},complete:ml},El="function"==typeof Symbol&&Symbol.observable||"@@observable";function xl(e){return e}var Bl=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r,i=this,o=(r=e)&&r instanceof wl||function(e){return e&&ol(e.next)&&ol(e.error)&&ol(e.complete)}(r)&&dl(r)?e:new kl(e,t,n);return yl(function(){var e=i,t=e.operator,n=e.source;o.add(t?t.call(o,n):n?i._subscribe(o):i._trySubscribe(o))}),o},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return new(t=Sl(t))(function(t,r){var i=new kl({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){var t;return null===(t=this.source)||void 0===t?void 0:t.subscribe(e)},e.prototype[El]=function(){return this},e.prototype.pipe=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return(0===(e=t).length?xl:1===e.length?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)})(this)},e.prototype.toPromise=function(e){var t=this;return new(e=Sl(e))(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function Sl(e){var t;return null!==(t=null!=e?e:hl.Promise)&&void 0!==t?t:Promise}function Ql(e){return function(t){if(function(e){return ol(null==e?void 0:e.lift)}(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw new TypeError("Unable to lift unknown Observable type")}}function Fl(e,t,n,r,i){return new Dl(e,t,n,r,i)}var Dl=function(e){function t(t,n,r,i,o,s){var a=e.call(this,t)||this;return a.onFinalize=o,a.shouldUnsubscribe=s,a._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return Ya(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(wl),$l=sl(function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),Rl=function(e){function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return Ya(t,e),t.prototype.lift=function(e){var t=new Pl(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new $l},t.prototype.next=function(e){var t=this;yl(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||(t.currentObservers=Array.from(t.observers));try{for(var i=Xa(t.currentObservers),o=i.next();!o.done;o=i.next()){o.value.next(e)}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;yl(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;yl(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,o=n.observers;return r||i?ul:(this.currentObservers=null,o.push(e),new cl(function(){t.currentObservers=null,ll(o,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Bl;return e.source=this,e},t.create=function(e,t){return new Pl(e,t)},t}(Bl),Pl=function(e){function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return Ya(t,e),t.prototype.next=function(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===n||n.call(t,e)},t.prototype.error=function(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===n||n.call(t,e)},t.prototype.complete=function(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)},t.prototype._subscribe=function(e){var t,n;return null!==(n=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==n?n:ul},t}(Rl),Tl={now:function(){return(Tl.delegate||Date).now()},delegate:void 0},Ul=function(e){function t(t,n,r){void 0===t&&(t=1/0),void 0===n&&(n=1/0),void 0===r&&(r=Tl);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return Ya(t,e),t.prototype.next=function(t){var n=this,r=n.isStopped,i=n._buffer,o=n._infiniteTimeWindow,s=n._timestampProvider,a=n._windowTime;r||(i.push(t),!o&&i.push(s.now()+a)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),n=this._infiniteTimeWindow,r=this._buffer.slice(),i=0;i<r.length&&!e.closed;i+=n?1:2)e.next(r[i]);return this._checkFinalizedStatuses(e),t},t.prototype._trimBuffer=function(){var e=this,t=e._bufferSize,n=e._timestampProvider,r=e._buffer,i=e._infiniteTimeWindow,o=(i?1:2)*t;if(t<1/0&&o<r.length&&r.splice(0,r.length-o),!i){for(var s=n.now(),a=0,l=1;l<r.length&&r[l]<=s;l+=2)a=l;a&&r.splice(0,a+1)}},t}(Rl),Nl=function(e){function t(t,n){return e.call(this)||this}return Ya(t,e),t.prototype.schedule=function(e,t){return this},t}(cl),Ll={setInterval:function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i=Ll.delegate;return(null==i?void 0:i.setInterval)?i.setInterval.apply(i,tl([e,t],el(n))):setInterval.apply(void 0,tl([e,t],el(n)))},clearInterval:function(e){var t=Ll.delegate;return((null==t?void 0:t.clearInterval)||clearInterval)(e)},delegate:void 0},Ml=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.scheduler=t,r.work=n,r.pending=!1,r}return Ya(t,e),t.prototype.schedule=function(e,t){var n;if(void 0===t&&(t=0),this.closed)return this;this.state=e;var r=this.id,i=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(i,r,t)),this.pending=!0,this.delay=t,this.id=null!==(n=this.id)&&void 0!==n?n:this.requestAsyncId(i,this.id,t),this},t.prototype.requestAsyncId=function(e,t,n){return void 0===n&&(n=0),Ll.setInterval(e.flush.bind(e,this),n)},t.prototype.recycleAsyncId=function(e,t,n){if(void 0===n&&(n=0),null!=n&&this.delay===n&&!1===this.pending)return t;null!=t&&Ll.clearInterval(t)},t.prototype.execute=function(e,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var n=this._execute(e,t);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,t){var n,r=!1;try{this.work(e)}catch(e){r=!0,n=e||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),n},t.prototype.unsubscribe=function(){if(!this.closed){var t=this.id,n=this.scheduler,r=n.actions;this.work=this.state=this.scheduler=null,this.pending=!1,ll(r,this),null!=t&&(this.id=this.recycleAsyncId(n,t,null)),this.delay=null,e.prototype.unsubscribe.call(this)}},t}(Nl),_l=function(){function e(t,n){void 0===n&&(n=e.now),this.schedulerActionCtor=t,this.now=n}return e.prototype.schedule=function(e,t,n){return void 0===t&&(t=0),new this.schedulerActionCtor(this,e).schedule(n,t)},e.now=Tl.now,e}(),Ol=function(e){function t(t,n){void 0===n&&(n=_l.now);var r=e.call(this,t,n)||this;return r.actions=[],r._active=!1,r}return Ya(t,e),t.prototype.flush=function(e){var t=this.actions;if(this._active)t.push(e);else{var n;this._active=!0;do{if(n=e.execute(e.state,e.delay))break}while(e=t.shift());if(this._active=!1,n){for(;e=t.shift();)e.unsubscribe();throw n}}},t}(_l),Hl=new Ol(Ml),jl=new Bl(function(e){return e.complete()});function Gl(e){return e&&ol(e.schedule)}function Jl(e){return e[e.length-1]}function Kl(e){return Gl(Jl(e))?e.pop():void 0}function Vl(e,t){return"number"==typeof Jl(e)?e.pop():t}var zl=function(e){return e&&"number"==typeof e.length&&"function"!=typeof e};function ql(e){return ol(null==e?void 0:e.then)}function Yl(e){return ol(e[El])}function Wl(e){return Symbol.asyncIterator&&ol(null==e?void 0:e[Symbol.asyncIterator])}function Zl(e){return new TypeError("You provided "+(null!==e&&"object"==typeof e?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}var Xl="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator";function ec(e){return ol(null==e?void 0:e[Xl])}function tc(e){return rl(this,arguments,function(){var t,n,r;return Za(this,function(i){switch(i.label){case 0:t=e.getReader(),i.label=1;case 1:i.trys.push([1,,9,10]),i.label=2;case 2:return[4,nl(t.read())];case 3:return n=i.sent(),r=n.value,n.done?[4,nl(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,nl(r)];case 6:return[4,i.sent()];case 7:return i.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function nc(e){return ol(null==e?void 0:e.getReader)}function rc(e){if(e instanceof Bl)return e;if(null!=e){if(Yl(e))return i=e,new Bl(function(e){var t=i[El]();if(ol(t.subscribe))return t.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")});if(zl(e))return r=e,new Bl(function(e){for(var t=0;t<r.length&&!e.closed;t++)e.next(r[t]);e.complete()});if(ql(e))return n=e,new Bl(function(e){n.then(function(t){e.closed||(e.next(t),e.complete())},function(t){return e.error(t)}).then(null,gl)});if(Wl(e))return ic(e);if(ec(e))return t=e,new Bl(function(e){var n,r;try{for(var i=Xa(t),o=i.next();!o.done;o=i.next()){var s=o.value;if(e.next(s),e.closed)return}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}e.complete()});if(nc(e))return ic(tc(e))}var t,n,r,i;throw Zl(e)}function ic(e){return new Bl(function(t){(function(e,t){var n,r,i,o;return Wa(this,void 0,void 0,function(){var s,a;return Za(this,function(l){switch(l.label){case 0:l.trys.push([0,5,6,11]),n=il(e),l.label=1;case 1:return[4,n.next()];case 2:if((r=l.sent()).done)return[3,4];if(s=r.value,t.next(s),t.closed)return[2];l.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=l.sent(),i={error:a},[3,11];case 6:return l.trys.push([6,,9,10]),r&&!r.done&&(o=n.return)?[4,o.call(n)]:[3,8];case 7:l.sent(),l.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})})(e,t).catch(function(e){return t.error(e)})})}function oc(e,t,n,r,i){void 0===r&&(r=0),void 0===i&&(i=!1);var o=t.schedule(function(){n(),i?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(o),!i)return o}function sc(e,t){return void 0===t&&(t=0),Ql(function(n,r){n.subscribe(Fl(r,function(n){return oc(r,e,function(){return r.next(n)},t)},function(){return oc(r,e,function(){return r.complete()},t)},function(n){return oc(r,e,function(){return r.error(n)},t)}))})}function ac(e,t){return void 0===t&&(t=0),Ql(function(n,r){r.add(e.schedule(function(){return n.subscribe(r)},t))})}function lc(e,t){if(!e)throw new Error("Iterable cannot be null");return new Bl(function(n){oc(n,t,function(){var r=e[Symbol.asyncIterator]();oc(n,t,function(){r.next().then(function(e){e.done?n.complete():n.next(e.value)})},0,!0)})})}function cc(e,t){if(null!=e){if(Yl(e))return function(e,t){return rc(e).pipe(ac(t),sc(t))}(e,t);if(zl(e))return function(e,t){return new Bl(function(n){var r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}(e,t);if(ql(e))return function(e,t){return rc(e).pipe(ac(t),sc(t))}(e,t);if(Wl(e))return lc(e,t);if(ec(e))return function(e,t){return new Bl(function(n){var r;return oc(n,t,function(){r=e[Xl](),oc(n,t,function(){var e,t,i;try{t=(e=r.next()).value,i=e.done}catch(e){return void n.error(e)}i?n.complete():n.next(t)},0,!0)}),function(){return ol(null==r?void 0:r.return)&&r.return()}})}(e,t);if(nc(e))return function(e,t){return lc(tc(e),t)}(e,t)}throw Zl(e)}function uc(e,t){return t?cc(e,t):rc(e)}function dc(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return uc(e,Kl(e))}function fc(e,t){return Ql(function(n,r){var i=0;n.subscribe(Fl(r,function(n){r.next(e.call(t,n,i++))}))})}var hc=Array.isArray;function pc(e){return fc(function(t){return function(e,t){return hc(t)?e.apply(void 0,tl([],el(t))):e(t)}(e,t)})}var gc=Array.isArray,mc=Object.getPrototypeOf,yc=Object.prototype,wc=Object.keys;function vc(e){if(1===e.length){var t=e[0];if(gc(t))return{args:t,keys:null};if((r=t)&&"object"==typeof r&&mc(r)===yc){var n=wc(t);return{args:n.map(function(e){return t[e]}),keys:n}}}var r;return{args:e,keys:null}}function Ac(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Kl(e),r=function(e){return ol(Jl(e))?e.pop():void 0}(e),i=vc(e),o=i.args,s=i.keys;if(0===o.length)return uc([],n);var a=new Bl(function(e,t,n){void 0===n&&(n=xl);return function(r){bc(t,function(){for(var i=e.length,o=new Array(i),s=i,a=i,l=function(i){bc(t,function(){var l=uc(e[i],t),c=!1;l.subscribe(Fl(r,function(e){o[i]=e,c||(c=!0,a--),a||r.next(n(o.slice()))},function(){--s||r.complete()}))},r)},c=0;c<i;c++)l(c)},r)}}(o,n,s?function(e){return function(e,t){return e.reduce(function(e,n,r){return e[n]=t[r],e},{})}(s,e)}:xl));return r?a.pipe(pc(r)):a}function bc(e,t,n){e?oc(n,e,t):t()}function kc(e,t,n){return void 0===n&&(n=1/0),ol(t)?kc(function(n,r){return fc(function(e,i){return t(n,e,r,i)})(rc(e(n,r)))},n):("number"==typeof t&&(n=t),Ql(function(t,r){return function(e,t,n,r,i,o,s,a){var l=[],c=0,u=0,d=!1,f=function(){!d||l.length||c||t.complete()},h=function(e){return c<r?p(e):l.push(e)},p=function(e){o&&t.next(e),c++;var a=!1;rc(n(e,u++)).subscribe(Fl(t,function(e){null==i||i(e),o?h(e):t.next(e)},function(){a=!0},void 0,function(){if(a)try{c--;for(var e=function(){var e=l.shift();s?oc(t,s,function(){return p(e)}):p(e)};l.length&&c<r;)e();f()}catch(e){t.error(e)}}))};return e.subscribe(Fl(t,h,function(){d=!0,f()})),function(){null==a||a()}}(t,r,e,n)}))}function Ic(e){return void 0===e&&(e=1/0),kc(xl,e)}function Cc(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Ic(1)(uc(e,Kl(e)))}function Ec(e){return new Bl(function(t){rc(e()).subscribe(t)})}function xc(e,t,n){void 0===e&&(e=0),void 0===n&&(n=Hl);var r=-1;return null!=t&&(Gl(t)?n=t:r=t),new Bl(function(t){var i,o=(i=e)instanceof Date&&!isNaN(i)?+e-n.now():e;o<0&&(o=0);var s=0;return n.schedule(function(){t.closed||(t.next(s++),0<=r?this.schedule(void 0,r):t.complete())},o)})}function Bc(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Kl(e),r=Vl(e,1/0),i=e;return i.length?1===i.length?rc(i[0]):Ic(r)(uc(i,n)):jl}function Sc(e,t){return Ql(function(n,r){var i=0;n.subscribe(Fl(r,function(n){return e.call(t,n,i++)&&r.next(n)}))})}function Qc(e){return e<=0?function(){return jl}:Ql(function(t,n){var r=0;t.subscribe(Fl(n,function(t){++r<=e&&(n.next(t),e<=r&&n.complete())}))})}function Fc(e,t){return void 0===t&&(t=xl),e=null!=e?e:Dc,Ql(function(n,r){var i,o=!0;n.subscribe(Fl(r,function(n){var s=t(n);!o&&e(i,s)||(o=!1,i=s,r.next(n))}))})}function Dc(e,t){return e===t}function $c(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return function(t){return Cc(t,dc.apply(void 0,tl([],el(e))))}}function Rc(e){return Ql(function(t,n){try{t.subscribe(n)}finally{n.add(e)}})}function Pc(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Kl(e),r=Vl(e,1/0);return Ql(function(t,i){Ic(r)(uc(tl([t],el(e)),n)).subscribe(i)})}function Tc(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Pc.apply(void 0,tl([],el(e)))}function Uc(e,t){return Ql(function(e,t,n,r,i){return function(o,s){var a=n,l=t,c=0;o.subscribe(Fl(s,function(t){var n=c++;l=a?e(l,t,n):(a=!0,t),r&&s.next(l)},i&&function(){a&&s.next(l),s.complete()}))}}(e,t,arguments.length>=2,!0))}function Nc(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];if(!0!==t){if(!1!==t){var i=new kl({next:function(){i.unsubscribe(),e()}});return rc(t.apply(void 0,tl([],el(n)))).subscribe(i)}}else e()}function Lc(e,t){return Ql(function(n,r){var i=null,o=0,s=!1,a=function(){return s&&!i&&r.complete()};n.subscribe(Fl(r,function(n){null==i||i.unsubscribe();var s=0,l=o++;rc(e(n,l)).subscribe(i=Fl(r,function(e){return r.next(t?t(n,e,l,s++):e)},function(){i=null,a()}))},function(){s=!0,a()}))})}function Mc(e,t,n){var r=ol(e)||t||n?{next:e,error:t,complete:n}:e;return r?Ql(function(e,t){var n;null===(n=r.subscribe)||void 0===n||n.call(r);var i=!0;e.subscribe(Fl(t,function(e){var n;null===(n=r.next)||void 0===n||n.call(r,e),t.next(e)},function(){var e;i=!1,null===(e=r.complete)||void 0===e||e.call(r),t.complete()},function(e){var n;i=!1,null===(n=r.error)||void 0===n||n.call(r,e),t.error(e)},function(){var e,t;i&&(null===(e=r.unsubscribe)||void 0===e||e.call(r)),null===(t=r.finalize)||void 0===t||t.call(r)}))}):xl}function _c(e,t){return void 0!==e[0]&&void 0!==e[1]&&(!t||e[0]===t)}function Oc(e){return _c(e,"e")}function Hc(e){return _c(e,"p")}function jc(e){return _c(e,"r")}function Gc(e){return _c(e,"a")}function Jc(e){return _c(e,"t")}const Kc=(e,...t)=>t.reduce((e,t)=>{const n=[];for(const r of e)try{const e=t(r);if(void 0===e)continue;n.push(e)}catch(e){}return n},e);var Vc=Symbol("verified");function zc(e){if(!(e instanceof Object))return!1;if("number"!=typeof e.kind)return!1;if("string"!=typeof e.content)return!1;if("number"!=typeof e.created_at)return!1;if("string"!=typeof e.pubkey)return!1;if(!e.pubkey.match(/^[a-f0-9]{64}$/))return!1;if(!Array.isArray(e.tags))return!1;for(let t=0;t<e.tags.length;t++){let n=e.tags[t];if(!Array.isArray(n))return!1;for(let e=0;e<n.length;e++)if("string"!=typeof n[e])return!1}return!0}new TextDecoder("utf-8");var qc=new TextEncoder;function Yc(e){return Zt(yn(qc.encode(function(e){if(!zc(e))throw new Error("can't serialize event with wrong or missing properties");return JSON.stringify([0,e.pubkey,e.created_at,e.kind,e.tags,e.content])}(e))))}var Wc=new class{generateSecretKey(){return Kt.utils.randomPrivateKey()}getPublicKey(e){return Zt(Kt.getPublicKey(e))}finalizeEvent(e,t){const n=e;return n.pubkey=Zt(Kt.getPublicKey(t)),n.id=Yc(n),n.sig=Zt(Kt.sign(Yc(n),t)),n[Vc]=!0,n}verifyEvent(e){if("boolean"==typeof e[Vc])return e[Vc];const t=Yc(e);if(t!==e.id)return e[Vc]=!1,!1;try{const n=Kt.verify(e.sig,t,e.pubkey);return e[Vc]=n,n}catch(t){return e[Vc]=!1,!1}}},Zc=Wc.generateSecretKey,Xc=Wc.getPublicKey;function eu(e,t,n){if(Reflect.has(e,t))return Reflect.get(e,t);{const r=n();return Reflect.set(e,t,r),r}}function tu(e,t){const[n,r]=nu(e,e=>t.id===e.id?0:t.created_at===e.created_at?-1:e.created_at-t.created_at);return r||e.splice(n,0,t),e}function nu(e,t){let n=0,r=e.length-1;for(;n<=r;){const i=Math.floor((n+r)/2),o=t(e[i]);if(0===o)return[i,!0];o<0?r=i-1:n=i+1}return[n,!1]}Wc.finalizeEvent,Wc.verifyEvent,new TextDecoder("utf-8"),new TextEncoder;const ru=Symbol.for("event-store"),iu=Symbol.for("event-uid"),ou=Symbol.for("replaceable-address"),su=Symbol.for("from-cache"),au=Symbol.for("replaceable-identifier");function lu(e){return Va(e)||za(e)}function cu(e){let t=Reflect.get(e,iu);return t||(t=za(e.kind)||Va(e.kind)?uu(e):e.id,Reflect.set(e,iu,t)),t}function uu(e){if(!za(e.kind)&&!Va(e.kind))throw new Error("Event is not replaceable or addressable");return eu(e,ou,()=>du(e.kind,e.pubkey,fu(e)))}function du(e,t,n){return e+":"+t+":"+(n??"")}function fu(e){return eu(e,au,()=>e.tags.find(e=>"d"===e[0])?.[1]??"")}function hu(){return Math.round(Date.now()/1e3)}const pu=Symbol("expiration-timestamp");function gu(e){return eu(e,pu,()=>{const t=e.tags.find(e=>"expiration"===e[0])?.[1];return t?parseInt(t):void 0})}var mu=new TextDecoder("utf-8");new TextEncoder;function yu(e){let{prefix:t,words:n}=ar.decode(e,5e3),r=new Uint8Array(ar.fromWords(n));switch(t){case"nprofile":{let e=wu(r);if(!e[0]?.[0])throw new Error("missing TLV 0 for nprofile");if(32!==e[0][0].length)throw new Error("TLV 0 should be 32 bytes");return{type:"nprofile",data:{pubkey:Zt(e[0][0]),relays:e[1]?e[1].map(e=>mu.decode(e)):[]}}}case"nevent":{let e=wu(r);if(!e[0]?.[0])throw new Error("missing TLV 0 for nevent");if(32!==e[0][0].length)throw new Error("TLV 0 should be 32 bytes");if(e[2]&&32!==e[2][0].length)throw new Error("TLV 2 should be 32 bytes");if(e[3]&&4!==e[3][0].length)throw new Error("TLV 3 should be 4 bytes");return{type:"nevent",data:{id:Zt(e[0][0]),relays:e[1]?e[1].map(e=>mu.decode(e)):[],author:e[2]?.[0]?Zt(e[2][0]):void 0,kind:e[3]?.[0]?parseInt(Zt(e[3][0]),16):void 0}}}case"naddr":{let e=wu(r);if(!e[0]?.[0])throw new Error("missing TLV 0 for naddr");if(!e[2]?.[0])throw new Error("missing TLV 2 for naddr");if(32!==e[2][0].length)throw new Error("TLV 2 should be 32 bytes");if(!e[3]?.[0])throw new Error("missing TLV 3 for naddr");if(4!==e[3][0].length)throw new Error("TLV 3 should be 4 bytes");return{type:"naddr",data:{identifier:mu.decode(e[0][0]),pubkey:Zt(e[2][0]),kind:parseInt(Zt(e[3][0]),16),relays:e[1]?e[1].map(e=>mu.decode(e)):[]}}}case"nsec":return{type:t,data:r};case"npub":case"note":return{type:t,data:Zt(r)};default:throw new Error(`unknown prefix ${t}`)}}function wu(e){let t={},n=e;for(;n.length>0;){let e=n[0],r=n[1],i=n.slice(2,2+r);if(n=n.slice(2+r),i.length<r)throw new Error(`not enough data to read on TLV ${e}`);t[e]=t[e]||[],t[e].push(i)}return t}function vu(e){return Au("npub",Xt(e))}function Au(e,t){return function(e,t){let n=ar.toWords(t);return ar.encode(e,n,5e3)}(e,t)}function bu(e){let t=new URL(e);return t.pathname=t.pathname.replace(/\/+/g,"/"),("80"!==t.port||"ws:"!==t.protocol&&"http:"!==t.protocol)&&("443"!==t.port||"wss:"!==t.protocol&&"https:"!==t.protocol)||(t.port=""),"string"==typeof e?t.toString():t}const ku=Symbol.for("seen-relays");function Iu(e,t){return e[ku]||(e[ku]=new Set),e[ku].add(t),e[ku]}const Cu=/^wss?:\/\/([-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}|localhost)\b([-a-zA-Z0-9()@:%_\+.~#?&\/\/=]*)$/;function Eu(e){return e.length>=8&&Cu.test(e)}function xu(e){return!!e?.toLowerCase()?.match(/^[0-9a-f]{64}$/)}
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Bu=(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)(),Su=48,Qu=57,Fu=65,Du=70,$u=97,Ru=102;function Pu(e){return e>=Su&&e<=Qu?e-Su:e>=Fu&&e<=Du?e-(Fu-10):e>=$u&&e<=Ru?e-($u-10):void 0}function Tu(e,t=!1,n=!0){const r=e.split(":"),i=r[0]?parseInt(r[0]):void 0,o=r[1],s=r[2];if(void 0===i){if(n)return null;throw new Error("Missing kind")}if(void 0===o||""===o){if(n)return null;throw new Error("Missing pubkey")}if(t&&void 0===s){if(n)return null;throw new Error("Missing identifier")}return{kind:i,pubkey:o,identifier:s}}function Uu(e){if(!e[1])throw new Error("Missing coordinate in tag");const t=Tu(e[1],!0,!1);return e[2]&&Eu(e[2])&&(t.relays=[e[2]]),t}function Nu(e){if(!e[1])throw new Error("Missing pubkey in tag");if(!xu(e[1]))throw new Error("Invalid pubkey");const t={pubkey:e[1]};return e[2]&&Eu(e[2])&&(t.relays=[bu(e[2])]),t}function Lu(e){return e.kind+":"+e.pubkey+":"+e.identifier}function Mu(e){if(e instanceof Uint8Array)return e;if(xu(e))return function(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);if(Bu)return Uint8Array.fromHex(e);const t=e.length,n=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let t=0,i=0;t<n;t++,i+=2){const n=Pu(e.charCodeAt(i)),o=Pu(e.charCodeAt(i+1));if(void 0===n||void 0===o){const t=e[i]+e[i+1];throw new Error('hex string expected, got non-hex character "'+t+'" at index '+i)}r[t]=16*n+o}return r}(e);{const t=Wo.decode(e);if("nsec"!==t.type)throw new Error(`Cant get secret key from ${t.type}`);return t.data}}const _u=Symbol.for("encrypted-content"),Ou={[hi.EncryptedDirectMessage]:"nip04",[hi.Seal]:"nip44",[hi.GiftWrap]:"nip44"};function Hu(e,t){return Ou[e]=t,e}const ju=_u,Gu=new Set([Hu(hi.DraftLong,"nip04")]);function Ju(e,t){return Gu.add(Hu(e,t)),e}function Ku(e){return function(e){return void 0!==Ou[e]}(e)&&Gu.has(e)}function Vu(e){return!!Ku(e.kind)&&(function(e){return!0===Reflect.has(e,_u)}(e)&&!0===Reflect.has(e,ju))}function zu(e){if(Ku(e.kind))return Vu(e)?e[_u]:function(e){return Reflect.get(e,_u)}(e)}const qu=Symbol.for("hidden-tags"),Yu=new Set([Ju(hi.BookmarkList,"nip04"),Ju(hi.InterestsList,"nip04"),Ju(hi.Mutelist,"nip04"),Ju(hi.CommunitiesList,"nip04"),Ju(hi.PublicChatsList,"nip04"),Ju(hi.SearchRelaysList,"nip04"),Ju(10009,"nip04"),Ju(hi.Bookmarksets,"nip04"),Ju(hi.Relaysets,"nip04"),Ju(hi.Followsets,"nip04"),Ju(hi.Curationsets,"nip04"),Ju(hi.Interestsets,"nip04")]);function Wu(e){return Ku(e)&&Yu.has(e)}function Zu(e){return!!Wu(e.kind)&&(Vu(e)&&Reflect.has(e,"HiddenTagsSymbol"))}function Xu(e){if(!Wu(e.kind))return;if(Zu(e))return e[qu];const t=zu(e);if(void 0===t)return;const n=JSON.parse(t);if(!Array.isArray(n))throw new Error("Content is not an array of tags");const r=n.filter(e=>Array.isArray(e)).map(e=>e.map(e=>String(e)));return Reflect.set(e,qu,r),r}const ed="abcdefghijklmnopqrstuvwxyz",td=new Set((ed+ed.toUpperCase()).split("")),nd=Symbol.for("indexable-tags");function rd(e){let t=Reflect.get(e,nd);if(!t){const n=new Set;for(const t of e.tags)t.length>=2&&1===t[0].length&&td.has(t[0])&&n.add(t[0]+":"+t[1]);t=n,Reflect.set(e,nd,n)}return t}class id{first=null;items=Object.create(null);last=null;max;resetTtl;size;ttl;constructor(e=0,t=0,n=!1){this.first=null,this.items=Object.create(null),this.last=null,this.max=e,this.resetTtl=n,this.size=0,this.ttl=t}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(e){if(this.has(e)){const t=this.items[e];delete this.items[e],this.size--,null!==t.prev&&(t.prev.next=t.next),null!==t.next&&(t.next.prev=t.prev),this.first===t&&(this.first=t.next),this.last===t&&(this.last=t.prev)}return this}entries(e=this.keys()){return e.map(e=>[e,this.get(e)])}evict(e=!1){if(e||this.size>0){const e=this.first;delete this.items[e.key],0===--this.size?(this.first=null,this.last=null):(this.first=e.next,this.first.prev=null)}return this}expiresAt(e){let t;return this.has(e)&&(t=this.items[e].expiry),t}get(e){let t;if(this.has(e)){const n=this.items[e];this.ttl>0&&n.expiry<=Date.now()?this.delete(e):(t=n.value,this.set(e,t,!0))}return t}has(e){return e in this.items}keys(){const e=[];let t=this.first;for(;null!==t;)e.push(t.key),t=t.next;return e}set(e,t,n=!1,r=this.resetTtl){let i;if(n||this.has(e)){if(i=this.items[e],i.value=t,!1===n&&r&&(i.expiry=this.ttl>0?Date.now()+this.ttl:this.ttl),this.last!==i){const e=this.last,t=i.next,n=i.prev;this.first===i&&(this.first=i.next),i.next=null,i.prev=this.last,e.next=i,null!==n&&(n.next=t),null!==t&&(t.prev=n)}}else this.max>0&&this.size===this.max&&this.evict(!0),i=this.items[e]={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:e,prev:this.last,next:null,value:t},1===++this.size?this.first=i:this.last.next=i;return this.last=i,this}values(e=this.keys()){return e.map(e=>this.get(e))}}function od(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var sd,ad,ld={exports:{}};function cd(){if(ad)return sd;ad=1;var e=1e3,t=60*e,n=60*t,r=24*n,i=7*r,o=365.25*r;function s(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}return sd=function(a,l){l=l||{};var c=typeof a;if("string"===c&&a.length>0)return function(s){if((s=String(s)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(s);if(!a)return;var l=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return l*o;case"weeks":case"week":case"w":return l*i;case"days":case"day":case"d":return l*r;case"hours":case"hour":case"hrs":case"hr":case"h":return l*n;case"minutes":case"minute":case"mins":case"min":case"m":return l*t;case"seconds":case"second":case"secs":case"sec":case"s":return l*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:return}}(a);if("number"===c&&isFinite(a))return l.long?function(i){var o=Math.abs(i);if(o>=r)return s(i,o,r,"day");if(o>=n)return s(i,o,n,"hour");if(o>=t)return s(i,o,t,"minute");if(o>=e)return s(i,o,e,"second");return i+" ms"}(a):function(i){var o=Math.abs(i);if(o>=r)return Math.round(i/r)+"d";if(o>=n)return Math.round(i/n)+"h";if(o>=t)return Math.round(i/t)+"m";if(o>=e)return Math.round(i/e)+"s";return i+"ms"}(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))}}var ud=function(e){function t(e){let r,i,o,s=null;function a(...e){if(!a.enabled)return;const n=a,i=Number(new Date),o=i-(r||i);n.diff=o,n.prev=r,n.curr=i,r=i,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(r,i)=>{if("%%"===r)return"%";s++;const o=t.formatters[i];if("function"==typeof o){const t=e[s];r=o.call(n,t),e.splice(s,1),s--}return r}),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(i!==t.namespaces&&(i=t.namespaces,o=t.enabled(e)),o),set:e=>{s=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e,t){let n=0,r=0,i=-1,o=0;for(;n<e.length;)if(r<t.length&&(t[r]===e[n]||"*"===t[r]))"*"===t[r]?(i=r,o=n,r++):(n++,r++);else{if(-1===i)return!1;r=i+1,o++,n=o}for(;r<t.length&&"*"===t[r];)r++;return r===t.length}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names,...t.skips.map(e=>"-"+e)].join(",");return t.enable(""),e},t.enable=function(e){t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(const e of n)"-"===e[0]?t.skips.push(e.slice(1)):t.names.push(e)},t.enabled=function(e){for(const n of t.skips)if(r(e,n))return!1;for(const n of t.names)if(r(e,n))return!0;return!1},t.humanize=cd(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach(n=>{t[n]=e[n]}),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t<e.length;t++)n=(n<<5)-n+e.charCodeAt(t),n|=0;return t.colors[Math.abs(n)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,i=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(r++,"%c"===e&&(i=r))}),t.splice(i,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")||t.storage.getItem("DEBUG")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=ud(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(ld,ld.exports);const dd=od(ld.exports)("applesauce");class fd{log=dd.extend("EventMemory");kinds=new Map;authors=new Map;tags=new id;created_at=[];kindAuthor=new Map;events=new id;replaceable=new Map;get size(){return this.events.size}hasEvent(e){return this.events.has(e)}getEvent(e){return this.events.get(e)}hasReplaceable(e,t,n){const r=this.replaceable.get(du(e,t,n));return!!r&&r.length>0}getReplaceable(e,t,n){const r=du(e,t,n),i=this.replaceable.get(r);return i?.[0]}getReplaceableHistory(e,t,n){const r=du(e,t,n);return this.replaceable.get(r)}getByFilters(e){return Array.from(this.getEventsForFilters(Array.isArray(e)?e:[e]))}getTimeline(e){const t=[],n=this.getByFilters(e);for(const e of n)tu(t,e);return t}add(e){const t=e.id,n=this.events.get(t);if(n)return n;this.events.set(t,e),this.getKindIndex(e.kind).add(e),this.getAuthorsIndex(e.pubkey).add(e),this.getKindAuthorIndex(e.kind,e.pubkey).add(e);for(const t of rd(e))this.tags.has(t)&&this.getTagIndex(t).add(e);if(tu(this.created_at,e),lu(e.kind)){const t=e.tags.find(e=>"d"===e[0])?.[1],n=du(e.kind,e.pubkey,t);let r=this.replaceable.get(n);this.replaceable.has(n)||(r=[],this.replaceable.set(n,r)),tu(r,e)}return e}remove(e){let t="string"==typeof e?this.events.get(e):e;if(!t)return!1;const n=t.id;if(!this.events.has(n))return!1;this.getAuthorsIndex(t.pubkey).delete(t),this.getKindIndex(t.kind).delete(t);const r=`${t.kind}:${t.pubkey}`;this.kindAuthor.has(r)&&this.kindAuthor.get(r).delete(t);for(const e of rd(t))this.tags.has(e)&&this.getTagIndex(e).delete(t);if(this.removeFromSortedArray(this.created_at,t),this.events.delete(n),lu(t.kind)){const e=t.tags.find(e=>"d"===e[0])?.[1],n=du(t.kind,t.pubkey,e),r=this.replaceable.get(n);r&&this.removeFromSortedArray(r,t)}return this.claims.delete(t),!0}removeByFilters(e){const t=this.getByFilters(e);let n=0;for(const e of t)this.remove(e)&&n++;return n}update(e){}claims=new WeakMap;touch(e){this.events.has(e.id)&&this.events.set(e.id,e)}claim(e){const t=this.claims.get(e)||0;this.claims.set(e,t+1),this.touch(e)}isClaimed(e){const t=this.claims.get(e);return void 0!==t&&t>0}removeClaim(e){const t=this.claims.get(e);if(void 0!==t&&t>0){const n=t-1;0===n?this.claims.delete(e):this.claims.set(e,n)}}clearClaim(e){this.claims.delete(e)}*unclaimed(){let e=this.events.first;for(;e;){const t=e.value;this.isClaimed(t)||(yield t),e=e.next}return 0}prune(e){let t=0;const n=this.unclaimed();for(const r of n)if(this.remove(r),t++,e&&t>=e)break;return t}getKindIndex(e){return this.kinds.has(e)||this.kinds.set(e,new Set),this.kinds.get(e)}getAuthorsIndex(e){return this.authors.has(e)||this.authors.set(e,new Set),this.authors.get(e)}getKindAuthorIndex(e,t){const n=`${e}:${t}`;return this.kindAuthor.has(n)||this.kindAuthor.set(n,new Set),this.kindAuthor.get(n)}getTagIndex(e){if(!this.tags.has(e)){const t=new Set,n=Date.now();for(const n of this.events.values())rd(n).has(e)&&t.add(n);const r=Date.now()-n;r>100&&this.log(`Built index ${e} took ${r}ms`),this.tags.set(e,t)}return this.tags.get(e)}removeFromSortedArray(e,t){if(0===e.length)return;const n=nu(e,e=>e.created_at-t.created_at);if(n){let r=n[0],i=!1;if(e[r]===t)return void e.splice(r,1);for(let n=r-1;n>=0&&e[n].created_at===t.created_at;n--)if(e[n]===t){e.splice(n,1),i=!0;break}if(i)return;for(let n=r+1;n<e.length&&e[n].created_at===t.created_at;n++)if(e[n]===t)return void e.splice(n,1)}const r=e.indexOf(t);-1!==r&&e.splice(r,1)}*iterateAuthors(e){for(const t of e){const e=this.authors.get(t);if(e)for(const t of e)yield t}}*iterateTag(e,t){for(const n of t){const t=this.getTagIndex(e+":"+n);if(t)for(const e of t)yield e}}*iterateKinds(e){for(const t of e){const e=this.kinds.get(t);if(e)for(const t of e)yield t}}*iterateTime(e,t){let n=0,r=this.created_at.length-1,i=t?nu(this.created_at,e=>e.created_at-t):void 0;i&&(n=i[0]);const o=e?nu(this.created_at,t=>t.created_at-e):void 0;o&&(r=o[0]);for(let i=n;i<=r;i++){const n=this.created_at[i];if(!(void 0!==t&&n.created_at>t)){if(void 0!==e&&n.created_at<e)break;yield n}}}*iterateIds(e){for(const t of e)this.events.has(t)&&(yield this.events.get(t))}getEventsForFilter(e){if(e.search)return new Set;let t=!0,n=new Set;const r=e=>{const r=e instanceof Set?e:new Set(e);if(t)n=r,t=!1;else for(const e of n)r.has(e)||n.delete(e);return n};e.ids&&r(this.iterateIds(e.ids));let i=null;void 0!==e.since&&(i=Array.from(this.iterateTime(e.since,e.until)),r(i));for(const t of td){const n=e[`&${t}`];if(n?.length)for(const e of n)r(this.iterateTag(t,[e]))}for(const t of td){const n=e[`#${t}`];if(n?.length){const i=e[`&${t}`],o=i?n.filter(e=>!i.includes(e)):n;o.length>0&&r(this.iterateTag(t,o))}}if(e.authors&&e.kinds&&e.authors.length*e.kinds.length<=20){const t=new Set;for(const n of e.kinds)for(const r of e.authors){const e=`${n}:${r}`,i=this.kindAuthor.get(e);if(i)for(const e of i)t.add(e)}r(t)}else e.authors&&r(this.iterateAuthors(e.authors)),e.kinds&&r(this.iterateKinds(e.kinds));if(void 0===e.since&&void 0!==e.until&&(i=Array.from(this.iterateTime(e.since,e.until)),r(i)),t)return new Set(this.events.values());if(e.limit&&i){const t=new Set;for(const r of i){if(t.size>=e.limit)break;n.has(r)&&t.add(r)}return t}return n}getEventsForFilters(e){if(0===e.length)return new Set;let t=new Set;for(const n of e){const e=this.getEventsForFilter(n);for(const n of e)t.add(n)}return t}reset(){this.events.clear(),this.kinds.clear(),this.authors.clear(),this.kindAuthor.clear(),this.tags.clear(),this.created_at=[],this.replaceable.clear(),this.claims=new WeakMap}}function hd(e,t){var n,r;if(0===t.length)return e;for(n=0,r=t.length;n<r;n++)e=(e<<5)-e+t.charCodeAt(n),e|=0;return e<0?-2*e:e}function pd(e,t,n,r){var i,o=hd(hd(hd(e,n),(i=t,Object.prototype.toString.call(i))),typeof t);if(null===t)return hd(o,"null");if(void 0===t)return hd(o,"undefined");if("object"==typeof t||"function"==typeof t){if(-1!==r.indexOf(t))return hd(o,"[Circular]"+n);r.push(t);var s=function(e,t,n){return Object.keys(t).sort().reduce(function(e,r){return pd(e,t[r],r,n)},e)}(o,t,r);if(!("valueOf"in t)||"function"!=typeof t.valueOf)return s;try{return hd(s,String(t.valueOf()))}catch(e){return hd(s,"[valueOf exception]"+(e.stack||e.message))}}return hd(o,t.toString())}var gd=function(e){return function(e,t){for(;e.length<t;)e="0"+e;return e}(pd(0,e,"",[]).toString(16),8)},md=od(gd);function yd(e,t){if(e.ids&&-1===e.ids.indexOf(t.id))return!1;if(e.kinds&&-1===e.kinds.indexOf(t.kind))return!1;if(e.authors&&-1===e.authors.indexOf(t.pubkey))return!1;if(e.since&&t.created_at<e.since)return!1;if(e.until&&t.created_at>e.until)return!1;for(let n in e)if("&"===n[0]){let r=n.slice(1),i=e[n];if(i&&i.length>0){const e=rd(t);for(const t of i)if(!e.has(r+":"+t))return!1}}for(let n in e)if("#"===n[0]){let r=n.slice(1),i=e[n];if(i){const n=e[`&${r}`],o=n?i.filter(e=>!n.includes(e)):i;if(0===o.length)continue;const s=rd(t);if(!1===o.some(e=>s.has(r+":"+e)))return!1}}return!0}function wd(e,t){for(let n=0;n<e.length;n++)if(yd(e[n],t))return!0;return!1}function vd(e){return"string"==typeof e&&(e={pubkey:e}),t=>t.replaceable({kind:10063,pubkey:e.pubkey,relays:e.relays}).pipe(fc(e=>e?function(e){const t=Array.isArray(e)?e:e.tags;return Kc(t,e=>_c(e,"server")&&URL.canParse(e[1])?new URL("/",e[1]):void 0)}(e):[]))}const Ad=Symbol.for("profile-content");function bd(e){return eu(e,Ad,()=>{const t=function(e){try{return JSON.parse(e)}catch(e){return}}(e.content);if(t)return t.nip05&&"string"!=typeof t.nip05&&(t.nip05=String(t.nip05)),t.website&&t.website?.length>0&&!1===t.website?.startsWith("http")&&(t.website="https://"+t.website),t})}function kd(e){return!!e&&((e.kind===hi.Metadata||e.kind===hi.Handlerinformation)&&!!bd(e))}!function(e){function t(e){if(!Number.isSafeInteger(e))throw new Error(`Wrong integer: ${e}`)}function n(...e){const t=(e,t)=>n=>e(t(n)),n=Array.from(e).reverse().reduce((e,n)=>e?t(e,n.encode):n.encode,void 0),r=e.reduce((e,n)=>e?t(e,n.decode):n.decode,void 0);return{encode:n,decode:r}}function r(e){return{encode:n=>{if(!Array.isArray(n)||n.length&&"number"!=typeof n[0])throw new Error("alphabet.encode input should be an array of numbers");return n.map(n=>{if(t(n),n<0||n>=e.length)throw new Error(`Digit index outside alphabet: ${n} (alphabet: ${e.length})`);return e[n]})},decode:t=>{if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("alphabet.decode input should be array of strings");return t.map(t=>{if("string"!=typeof t)throw new Error(`alphabet.decode: not string element=${t}`);const n=e.indexOf(t);if(-1===n)throw new Error(`Unknown letter: "${t}". Allowed: ${e}`);return n})}}}function i(e=""){if("string"!=typeof e)throw new Error("join separator should be string");return{encode:t=>{if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("join.encode input should be array of strings");for(let e of t)if("string"!=typeof e)throw new Error(`join.encode: non-string input=${e}`);return t.join(e)},decode:t=>{if("string"!=typeof t)throw new Error("join.decode input should be string");return t.split(e)}}}function o(e,n="="){if(t(e),"string"!=typeof n)throw new Error("padding chr should be string");return{encode(t){if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("padding.encode input should be array of strings");for(let e of t)if("string"!=typeof e)throw new Error(`padding.encode: non-string input=${e}`);for(;t.length*e%8;)t.push(n);return t},decode(t){if(!Array.isArray(t)||t.length&&"string"!=typeof t[0])throw new Error("padding.encode input should be array of strings");for(let e of t)if("string"!=typeof e)throw new Error(`padding.decode: non-string input=${e}`);let r=t.length;if(r*e%8)throw new Error("Invalid padding: string should have whole number of bytes");for(;r>0&&t[r-1]===n;r--)if(!((r-1)*e%8))throw new Error("Invalid padding: string has too much padding");return t.slice(0,r)}}}function s(e){if("function"!=typeof e)throw new Error("normalize fn should be function");return{encode:e=>e,decode:t=>e(t)}}function a(e,n,r){if(n<2)throw new Error(`convertRadix: wrong from=${n}, base cannot be less than 2`);if(r<2)throw new Error(`convertRadix: wrong to=${r}, base cannot be less than 2`);if(!Array.isArray(e))throw new Error("convertRadix: data should be array");if(!e.length)return[];let i=0;const o=[],s=Array.from(e);for(s.forEach(e=>{if(t(e),e<0||e>=n)throw new Error(`Wrong integer: ${e}`)});;){let e=0,t=!0;for(let o=i;o<s.length;o++){const a=s[o],l=n*e+a;if(!Number.isSafeInteger(l)||n*e/n!==e||l-a!==n*e)throw new Error("convertRadix: carry overflow");if(e=l%r,s[o]=Math.floor(l/r),!Number.isSafeInteger(s[o])||s[o]*r+e!==l)throw new Error("convertRadix: carry overflow");t&&(s[o]?t=!1:i=o)}if(o.push(e),t)break}for(let t=0;t<e.length-1&&0===e[t];t++)o.push(0);return o.reverse()}
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */
Object.defineProperty(e,"__esModule",{value:!0}),e.bytes=e.stringToBytes=e.str=e.bytesToString=e.hex=e.utf8=e.bech32m=e.bech32=e.base58check=e.base58xmr=e.base58xrp=e.base58flickr=e.base58=e.base64url=e.base64=e.base32crockford=e.base32hex=e.base32=e.base16=e.utils=e.assertNumber=void 0,e.assertNumber=t;const l=(e,t)=>t?l(t,e%t):e,c=(e,t)=>e+(t-l(e,t));function u(e,n,r,i){if(!Array.isArray(e))throw new Error("convertRadix2: data should be array");if(n<=0||n>32)throw new Error(`convertRadix2: wrong from=${n}`);if(r<=0||r>32)throw new Error(`convertRadix2: wrong to=${r}`);if(c(n,r)>32)throw new Error(`convertRadix2: carry overflow from=${n} to=${r} carryBits=${c(n,r)}`);let o=0,s=0;const a=2**r-1,l=[];for(const i of e){if(t(i),i>=2**n)throw new Error(`convertRadix2: invalid data word=${i} from=${n}`);if(o=o<<n|i,s+n>32)throw new Error(`convertRadix2: carry overflow pos=${s} from=${n}`);for(s+=n;s>=r;s-=r)l.push((o>>s-r&a)>>>0);o&=2**s-1}if(o=o<<r-s&a,!i&&s>=n)throw new Error("Excess padding");if(!i&&o)throw new Error(`Non-zero padding: ${o}`);return i&&s>0&&l.push(o>>>0),l}function d(e){return t(e),{encode:t=>{if(!(t instanceof Uint8Array))throw new Error("radix.encode input should be Uint8Array");return a(Array.from(t),256,e)},decode:t=>{if(!Array.isArray(t)||t.length&&"number"!=typeof t[0])throw new Error("radix.decode input should be array of strings");return Uint8Array.from(a(t,e,256))}}}function f(e,n=!1){if(t(e),e<=0||e>32)throw new Error("radix2: bits should be in (0..32]");if(c(8,e)>32||c(e,8)>32)throw new Error("radix2: carry overflow");return{encode:t=>{if(!(t instanceof Uint8Array))throw new Error("radix2.encode input should be Uint8Array");return u(Array.from(t),8,e,!n)},decode:t=>{if(!Array.isArray(t)||t.length&&"number"!=typeof t[0])throw new Error("radix2.decode input should be array of strings");return Uint8Array.from(u(t,e,8,n))}}}function h(e){if("function"!=typeof e)throw new Error("unsafeWrapper fn should be function");return function(...t){try{return e.apply(null,t)}catch(e){}}}function p(e,n){if(t(e),"function"!=typeof n)throw new Error("checksum fn should be function");return{encode(t){if(!(t instanceof Uint8Array))throw new Error("checksum.encode: input should be Uint8Array");const r=n(t).slice(0,e),i=new Uint8Array(t.length+e);return i.set(t),i.set(r,t.length),i},decode(t){if(!(t instanceof Uint8Array))throw new Error("checksum.decode: input should be Uint8Array");const r=t.slice(0,-e),i=n(r).slice(0,e),o=t.slice(-e);for(let t=0;t<e;t++)if(i[t]!==o[t])throw new Error("Invalid checksum");return r}}}e.utils={alphabet:r,chain:n,checksum:p,radix:d,radix2:f,join:i,padding:o},e.base16=n(f(4),r("0123456789ABCDEF"),i("")),e.base32=n(f(5),r("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),o(5),i("")),e.base32hex=n(f(5),r("0123456789ABCDEFGHIJKLMNOPQRSTUV"),o(5),i("")),e.base32crockford=n(f(5),r("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),i(""),s(e=>e.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1"))),e.base64=n(f(6),r("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),o(6),i("")),e.base64url=n(f(6),r("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),o(6),i(""));const g=e=>n(d(58),r(e),i(""));e.base58=g("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"),e.base58flickr=g("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"),e.base58xrp=g("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");const m=[0,2,3,5,6,7,9,10,11];e.base58xmr={encode(t){let n="";for(let r=0;r<t.length;r+=8){const i=t.subarray(r,r+8);n+=e.base58.encode(i).padStart(m[i.length],"1")}return n},decode(t){let n=[];for(let r=0;r<t.length;r+=11){const i=t.slice(r,r+11),o=m.indexOf(i.length),s=e.base58.decode(i);for(let e=0;e<s.length-o;e++)if(0!==s[e])throw new Error("base58xmr: wrong padding");n=n.concat(Array.from(s.slice(s.length-o)))}return Uint8Array.from(n)}};e.base58check=t=>n(p(4,e=>t(t(e))),e.base58);const y=n(r("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),i("")),w=[996825010,642813549,513874426,1027748829,705979059];function v(e){const t=e>>25;let n=(33554431&e)<<5;for(let e=0;e<w.length;e++)1==(t>>e&1)&&(n^=w[e]);return n}function A(e,t,n=1){const r=e.length;let i=1;for(let t=0;t<r;t++){const n=e.charCodeAt(t);if(n<33||n>126)throw new Error(`Invalid prefix (${e})`);i=v(i)^n>>5}i=v(i);for(let t=0;t<r;t++)i=v(i)^31&e.charCodeAt(t);for(let e of t)i=v(i)^e;for(let e=0;e<6;e++)i=v(i);return i^=n,y.encode(u([i%2**30],30,5,!1))}function b(e){const t="bech32"===e?1:734539939,n=f(5),r=n.decode,i=n.encode,o=h(r);function s(e,n=90){if("string"!=typeof e)throw new Error("bech32.decode input should be string, not "+typeof e);if(e.length<8||!1!==n&&e.length>n)throw new TypeError(`Wrong string length: ${e.length} (${e}). Expected (8..${n})`);const r=e.toLowerCase();if(e!==r&&e!==e.toUpperCase())throw new Error("String must be lowercase or uppercase");const i=(e=r).lastIndexOf("1");if(0===i||-1===i)throw new Error('Letter "1" must be present between prefix and data only');const o=e.slice(0,i),s=e.slice(i+1);if(s.length<6)throw new Error("Data must be at least 6 characters long");const a=y.decode(s).slice(0,-6),l=A(o,a,t);if(!s.endsWith(l))throw new Error(`Invalid checksum in ${e}: expected "${l}"`);return{prefix:o,words:a}}return{encode:function(e,n,r=90){if("string"!=typeof e)throw new Error("bech32.encode prefix should be string, not "+typeof e);if(!Array.isArray(n)||n.length&&"number"!=typeof n[0])throw new Error("bech32.encode words should be array of numbers, not "+typeof n);const i=e.length+7+n.length;if(!1!==r&&i>r)throw new TypeError(`Length ${i} exceeds limit ${r}`);return`${e=e.toLowerCase()}1${y.encode(n)}${A(e,n,t)}`},decode:s,decodeToBytes:function(e){const{prefix:t,words:n}=s(e,!1);return{prefix:t,words:n,bytes:r(n)}},decodeUnsafe:h(s),fromWords:r,fromWordsUnsafe:o,toWords:i}}e.bech32=b("bech32"),e.bech32m=b("bech32m"),e.utf8={encode:e=>(new TextDecoder).decode(e),decode:e=>(new TextEncoder).encode(e)},e.hex=n(f(4),r("0123456789abcdef"),i(""),s(e=>{if("string"!=typeof e||e.length%2)throw new TypeError(`hex.decode: expected string, got ${typeof e} with length ${e.length}`);return e.toLowerCase()}));const k={utf8:e.utf8,hex:e.hex,base16:e.base16,base32:e.base32,base64:e.base64,base64url:e.base64url,base58:e.base58,base58xmr:e.base58xmr},I=`Invalid encoding type. Available types: ${Object.keys(k).join(", ")}`;e.bytesToString=(e,t)=>{if("string"!=typeof e||!k.hasOwnProperty(e))throw new TypeError(I);if(!(t instanceof Uint8Array))throw new TypeError("bytesToString() expects Uint8Array");return k[e].encode(t)},e.str=e.bytesToString;e.stringToBytes=(e,t)=>{if(!k.hasOwnProperty(e))throw new TypeError(I);if("string"!=typeof t)throw new TypeError("stringToBytes() expects string");return k[e].decode(t)},e.bytes=e.stringToBytes}({}),BigInt(1e3),BigInt(1e6),BigInt(1e9),BigInt(1e12),BigInt("2100000000000000000"),BigInt(1e11);const Id={payment_hash:1,payment_secret:16,description:13,payee:19,description_hash:23,expiry:6,min_final_cltv_expiry:24,fallback_address:9,route_hint:3,feature_bits:5,metadata:27};for(let e=0,t=Object.keys(Id);e<t.length;e++)t[e],Id[t[e]].toString();const Cd=Symbol.for("public-contacts"),Ed=Symbol.for("hidden-contacts");function xd(e){return function(...e){const t=new Map;for(const n of e)if(Array.isArray(n))for(const e of n)e&&t.set(e.pubkey,e);else n&&t.set(n.pubkey,n);return Array.from(t.values())}(function(e){return eu(e,Cd,()=>Kc(e.tags,e=>Hc(e)?e:void 0,Nu))}(e),function(e){if(function(e){return Zu(e)&&Reflect.has(e,Ed)}(e))return e[Ed];const t=Xu(e);if(!t)return;const n=Kc(t,e=>Hc(e)?e:void 0,Nu);return Reflect.set(e,Ed,n),n}(e))}dd.extend("EncryptedContentCache"),dd.extend("event-cache"),new TextDecoder;const Bd=Symbol.for("mailboxes-inboxes"),Sd=Symbol.for("mailboxes-outboxes");function Qd(e){return eu(e,Bd,()=>{const t=[];for(const n of e.tags)if(jc(n))try{const[,e,r]=n;!e||!Eu(e)||t.includes(e)||"read"!==r&&void 0!==r||t.push(bu(e))}catch{}return t})}function Fd(e){return eu(e,Sd,()=>{const t=[];for(const n of e.tags)if(jc(n))try{const[e,r,i]=n;"r"!==e||!Eu(r)||t.includes(r)||"write"!==i&&void 0!==i||t.push(bu(r))}catch{}return t})}const Dd=Symbol.for("mute-public"),$d=Symbol.for("mute-hidden");function Rd(e){return{pubkeys:new Set(e.filter(Hc).map(e=>e[1])),threads:new Set(e.filter(Oc).map(e=>e[1])),hashtags:new Set(e.filter(Jc).map(e=>e[1].toLocaleLowerCase())),words:new Set(e.filter(e=>"word"===e[0]&&e[1]).map(e=>e[1].toLocaleLowerCase()))}}function Pd(e){const t=function(e){if(function(e){return Zu(e)&&Reflect.has(e,$d)}(e))return e[$d];const t=Xu(e);if(!t)return;const n=Rd(t);return Reflect.set(e,$d,n),n}(e),n=function(e){return eu(e,Dd,()=>Rd(e.tags))}(e);return t?function(...e){const t={pubkeys:new Set,threads:new Set,hashtags:new Set,words:new Set};for(const n of e){for(const e of n.pubkeys)t.pubkeys.add(e);for(const e of n.threads)t.threads.add(e);for(const e of n.hashtags)t.hashtags.add(e);for(const e of n.words)t.words.add(e)}return t}(t,n):n}var Td;!function(e){e.nudity="nudity",e.malware="malware",e.profanity="profanity",e.illegal="illegal",e.spam="spam",e.impersonation="impersonation",e.other="other"}(Td||(Td={}));const Ud=Symbol.for("nip10-thread-refs");function Nd(e){if(!e[1])throw new Error("Missing event id in tag");let t={id:e[1]};return e[2]&&Eu(e[2])&&(t.relays=[e[2]]),"e"!==e[0]||"root"!==e[3]&&"reply"!==e[3]&&"mention"!==e[3]||!e[4]||64!==e[4].length||(t.author=e[4]),t}function Ld(e){return t=>{const n=new Set;return t.pipe(Mc(t=>{if(void 0!==t)if(Array.isArray(t))for(const r of t)n.has(r)||(n.add(r),e.claim(r));else n.has(t)||(n.add(t),e.claim(t))}),Rc(()=>{for(const t of n)e.removeClaim(t)}))}}function Md(e){return t=>{let n;return t.pipe(Mc(t=>{n!==t&&(n&&e.removeClaim(n),t&&e.claim(t),n=t)}),Rc(()=>{n&&e.removeClaim(n)}))}}function _d(){return e=>e.pipe(Sc(e=>null!=e))}function Od(e){return t=>new Bl(n=>{let r=!1;const i=t.subscribe({next:e=>{r=!0,n.next(e)},error:e=>n.error(e),complete:()=>n.complete()});return r||n.next(e),i})}function Hd(e){return"string"==typeof e&&(e={id:e}),t=>Bc(Ec(()=>function(e,t){const n=e.getEvent(t.id);return n instanceof Promise?uc(n):dc(n)}(t,e)).pipe(function(e,t){return Lc(n=>n?dc(n):e.eventLoader?uc(e.eventLoader(t)):jl)}(t,e),_d()),t.insert$.pipe(Sc(t=>t.id===e.id)),t.remove$.pipe(Sc(t=>t.id===e.id),Qc(1),Ql(function(e,t){e.subscribe(Fl(t,ml))}),$c(void 0))).pipe(Md(t),Fc((e,t)=>e?.id===t?.id),Od(void 0))}function jd(e){return t=>{let n;return Bc(Ec(()=>function(e,t){const n=e.getReplaceable(t.kind,t.pubkey,t.identifier);return n instanceof Promise?uc(n):dc(n)}(t,e)).pipe(function(e,t){return Lc(n=>n?dc(n):void 0!==t.identifier?e.addressableLoader?uc(e.addressableLoader(t)).pipe(Sc(e=>!!e)):jl:e.replaceableLoader?uc(e.replaceableLoader(t)).pipe(Sc(e=>!!e)):jl)}(t,e),_d()),t.insert$.pipe(Sc(t=>t.pubkey==e.pubkey&&t.kind===e.kind&&(void 0===e.identifier||fu(t)===e.identifier)))).pipe(Fc((e,t)=>e.created_at>=t.created_at),Mc(e=>n=e),(r=t.remove$.pipe(Sc(e=>e.id===n?.id)),Ql(function(e,t){rc(r).subscribe(Fl(t,function(){return t.complete()},ml)),!t.closed&&e.subscribe(t)})),$c(void 0),function(e){var t,n,r=1/0;return null!=e&&("object"==typeof e?(t=e.count,r=void 0===t?1/0:t,n=e.delay):r=e),r<=0?function(){return jl}:Ql(function(e,t){var i,o=0,s=function(){if(null==i||i.unsubscribe(),i=null,null!=n){var e="number"==typeof n?xc(n):rc(n(o)),r=Fl(t,function(){r.unsubscribe(),a()});e.subscribe(r)}else a()},a=function(){var n=!1;i=e.subscribe(Fl(t,void 0,function(){++o<r?i?s():n=!0:t.complete()})),n&&s()};a()})}(),Md(t),Od(void 0));var r}}function Gd(e,t){return e=Array.isArray(e)?e:[e],n=>{const r=new Map;return Ec(()=>{const t=n.getTimeline(e);return t instanceof Promise?uc(t):dc(t)}).pipe(Ld(n),Tc(n.insert$.pipe(Sc(t=>wd(e,t)),Ld(n))),Tc(n.remove$.pipe(Sc(t=>wd(e,t)),fc(e=>e.id))),Uc((e,n)=>{if("string"==typeof n)return e.filter(e=>e.id!==n);if(Array.isArray(n)){if(!t)for(const e of n)lu(e.kind)&&r.set(cu(e),e);return n}let i=[...e];if(!t&&lu(n.kind)){const t=cu(n),o=r.get(t);if(o&&n.created_at<o.created_at)return e;r.set(t,n),o&&i.slice(i.indexOf(o),1)}return tu(i,n),i},[]),Fc(),Rc(()=>r.clear()))}}function Jd(e){return t=>Ac(Object.fromEntries(e.map(e=>[e,t.model(Hd,{id:e})])))}function Kd(e){return t=>Ac(Object.fromEntries(e.map(e=>[du(e.kind,e.pubkey,e.identifier),t.model(jd,e)])))}function Vd(e){return t=>{let n;return Bc(t.pipe(Mc(e=>n=e)),e.update$.pipe(Sc(e=>e.id===n?.id)))}}function zd(e){return"string"==typeof e&&(e={pubkey:e}),t=>t.replaceable({kind:hi.Contacts,pubkey:e.pubkey,relays:e.relays}).pipe(Vd(t),fc(e=>e?xd(e):[]))}function qd(e){return t=>{const n=[{kinds:[1111],"#e":[e.id]}];return za(e.kind)&&n.push({kinds:[1111],"#a":[uu(e)]}),t.timeline(n)}}function Yd(e){return"string"==typeof e&&(e={pubkey:e}),t=>t.replaceable({kind:hi.RelayList,pubkey:e.pubkey,relays:e.relays}).pipe(fc(e=>e&&{inboxes:Qd(e),outboxes:Fd(e)}))}function Wd(e){return"string"==typeof e&&(e={pubkey:e}),t=>t.replaceable({kind:hi.Mutelist,pubkey:e.pubkey,relays:e.relays}).pipe(Vd(t),fc(e=>e&&Pd(e)))}function Zd(e){return"string"==typeof e&&(e={pubkey:e}),t=>t.replaceable({kind:hi.Metadata,pubkey:e.pubkey,relays:e.relays}).pipe(Sc(kd),fc(e=>e&&bd(e)),Od(void 0))}function Xd(e){return t=>t.timeline(lu(e.kind)?[{kinds:[hi.Reaction],"#e":[e.id]},{kinds:[hi.Reaction],"#a":[cu(e)]}]:[{kinds:[hi.Reaction],"#e":[e.id]}])}const ef={kinds:[hi.ShortTextNote]};function tf(e,t){const n=new Map,r=new Map,{kinds:i}={...ef,...t};let o="";const s={},a={kinds:i};var l;return"string"!=typeof(l=e)&&Reflect.has(l,"identifier")&&Reflect.has(l,"pubkey")&&Reflect.has(l,"kind")?(o=Lu(e),s.kinds=[e.kind],s.authors=[e.pubkey],s["#d"]=[e.identifier],a["#a"]=[o]):"string"==typeof e?(o=e,s.ids=[e],a["#e"]=[e]):(o=e.id,s.ids=[e.id],a["#e"]=[e.id]),e=>e.filters([s,a]).pipe(fc(e=>{if(!r.has(cu(e))){const t=function(e){return eu(e,Ud,()=>{const t=function(e){const t=e.filter(e=>"e"===e[0]&&e[1]),n=e.filter(e=>"a"===e[0]&&e[1]);let r=t.find(e=>"root"===e[3]),i=t.find(e=>"reply"===e[3]),o=n.find(e=>"root"===e[3]),s=n.find(e=>"reply"===e[3]);if(r&&i||(r=i=r||i),o&&s||(o=s=o||s),!r&&!i){const e=t.filter(e=>!e[3]);e.length>=1&&(r=e[0],i=e[e.length-1]??r)}return{root:r||o?{e:r,a:o}:void 0,reply:i||s?{e:i,a:s}:void 0}}(e.tags);let n,r;if(t.root)try{n={e:t.root.e&&Nd(t.root.e),a:t.root.a&&Uu(t.root.a)}}catch(e){}if(t.reply)try{r={e:t.reply.e&&Nd(t.reply.e),a:t.reply.a&&Uu(t.reply.a)}}catch(e){}return{root:n,reply:r}})}(e),i=n.get(cu(e))||new Set,o={event:e,refs:t,replies:i};for(const e of i)e.parent=o;if(t.reply?.e||t.reply?.a){let e=t.reply.e?t.reply.e.id:Lu(t.reply.a);if(o.parent=r.get(e),o.parent)o.parent.replies.add(o);else{let t=n.get(e);t||(t=new Set,n.set(e,t)),t.add(o)}}r.set(cu(e),o)}return{root:r.get(o),all:r}}))}function nf(e){return class extends e{models=new Map;modelKeepWarm=6e4;model(e,...t){let n=this.models.get(e);n||(n=new Map,this.models.set(e,n));const r=e.getKey?e.getKey(...t):md(t);let i=n.get(r);if(!i){const o=()=>{n.get(r)===i&&n.delete(r)};i=e(...t)(this).pipe(Rc(o),function(e){void 0===e&&(e={});var t=e.connector,n=void 0===t?function(){return new Rl}:t,r=e.resetOnError,i=void 0===r||r,o=e.resetOnComplete,s=void 0===o||o,a=e.resetOnRefCountZero,l=void 0===a||a;return function(e){var t,r,o,a=0,c=!1,u=!1,d=function(){null==r||r.unsubscribe(),r=void 0},f=function(){d(),t=o=void 0,c=u=!1},h=function(){var e=t;f(),null==e||e.unsubscribe()};return Ql(function(e,p){a++,u||c||d();var g=o=null!=o?o:n();p.add(function(){0!==--a||u||c||(r=Nc(h,l))}),g.subscribe(p),!t&&a>0&&(t=new kl({next:function(e){return g.next(e)},error:function(e){u=!0,d(),r=Nc(f,i,e),g.error(e)},complete:function(){c=!0,d(),r=Nc(f,s),g.complete()}}),rc(e).subscribe(t))})(e)}}({connector:()=>new Ul(1),resetOnComplete:()=>xc(this.modelKeepWarm),resetOnRefCountZero:()=>xc(this.modelKeepWarm)})),n.set(r,i)}return i}filters(e,t=!1){e=Array.isArray(e)?e:[e];const n=this.getByFilters(e);return Bc(t?jl:n&&"function"==typeof n.then?uc(n).pipe(kc(e=>uc(Array.from(e)))):uc(Array.from(n)),this.insert$.pipe(Sc(t=>wd(e,t))))}event(e){return"string"==typeof e&&(e={id:e}),this.model(Hd,e)}replaceable(...e){let t;if(1===e.length)t=e[0];else if(3===e.length||2===e.length){let[n,r,i]=e;t={kind:n,pubkey:r,identifier:i}}if(!t)throw new Error("Invalid arguments, expected address pointer or kind, pubkey, identifier");return this.model(jd,t)}addressable(e){return this.model(jd,e)}timeline(e,t=!1){return this.model(Gd,e,t)}profile(e){return this.model(Zd,e)}contacts(e){return"string"==typeof e&&(e={pubkey:e}),this.model(zd,e)}mutes(e){return"string"==typeof e&&(e={pubkey:e}),this.model(Wd,e)}mailboxes(e){return"string"==typeof e&&(e={pubkey:e}),this.model(Yd,e)}blossomServers(e){return"string"==typeof e&&(e={pubkey:e}),this.model(vd,e)}reactions(e){return this.model(Xd,e)}thread(e){return this.model(tf,e)}comments(e){return this.model(qd,e)}events(e){return this.model(Jd,e)}replaceableSet(e){return this.model(Kd,e)}}}class rf extends(nf(class{})){database;memory;keepOldVersions=!1;keepExpired=!1;verifyEvent;insert$=new Rl;update$=new Rl;remove$=new Rl;eventLoader;replaceableLoader;addressableLoader;constructor(e=new fd){super(),e?(this.database=e,this.memory=new fd):this.database=this.memory=new fd,this.insert$.subscribe(e=>{Reflect.set(e,ru,this)}),this.remove$.subscribe(e=>{Reflect.deleteProperty(e,ru)})}mapToMemory(e){if(void 0!==e)return this.memory?this.memory.add(e):e}deletedIds=new Set;deletedCoords=new Map;checkDeleted(e){if("string"==typeof e)return this.deletedIds.has(e);if(this.deletedIds.has(e.id))return!0;if(za(e.kind)){const t=e.tags.find(e=>"d"===e[0])?.[1],n=this.deletedCoords.get(du(e.kind,e.pubkey,t));if(n)return n>e.created_at}return!1}expirations=new Map;addExpiration(e){const t=gu(e);t&&Number.isFinite(t)&&this.expirations.set(e.id,t)}expirationTimeout=null;nextExpirationCheck=null;handleExpiringEvent(e){const t=gu(e);if(!t)return;if(this.expirations.set(e.id,t),this.expirationTimeout&&this.nextExpirationCheck&&this.nextExpirationCheck<t)return;this.expirationTimeout&&clearTimeout(this.expirationTimeout);const n=t-hu();this.expirationTimeout=setTimeout(this.pruneExpired.bind(this),1e3*n+10),this.nextExpirationCheck=t}pruneExpired(){const e=hu();for(const[t,n]of this.expirations)n<=e&&(this.expirations.delete(t),this.remove(t));this.expirationTimeout&&clearTimeout(this.expirationTimeout),this.nextExpirationCheck=null,this.expirationTimeout=null}handleDeleteEvent(e){const t=function(e){return e.tags.filter(Oc).map(e=>e[1])}(e);for(const e of t)this.deletedIds.add(e),this.remove(e);const n=function(e){return e.tags.filter(Gc).map(e=>e[1])}(e);for(const t of n){this.deletedCoords.set(t,Math.max(this.deletedCoords.get(t)??0,e.created_at));const n=Tu(t);if(!n)continue;const r=this.database.getReplaceableHistory(n.kind,n.pubkey,n.identifier)??[];for(const t of r)t.created_at<e.created_at&&this.remove(t)}}static mergeDuplicateEvent(e,t){const n=e[ku];if(n)for(const e of n)Iu(t,e);const r=Reflect.get(e,su);r&&!Reflect.get(t,su)&&Reflect.set(t,su,r)}add(e,t){if(e.kind===hi.EventDeletion&&this.handleDeleteEvent(e),this.checkDeleted(e))return e;const n=gu(e);if(!1===this.keepExpired&&n&&n<=hu())return null;const r=lu(e.kind)?e.tags.find(e=>"d"===e[0])?.[1]:void 0;if(!this.keepOldVersions&&lu(e.kind)){const t=this.database.getReplaceableHistory(e.kind,e.pubkey,r);if(t&&t.length>0&&t[0].created_at>=e.created_at)return rf.mergeDuplicateEvent(e,t[0]),t[0]}if(this.verifyEvent&&!1===this.verifyEvent(e))return null;const i=this.memory?.add(e);if(i&&i!==e)return rf.mergeDuplicateEvent(e,i),t&&Iu(i,t),i;const o=this.mapToMemory(this.database.add(e));if(e!==o&&rf.mergeDuplicateEvent(e,o),t&&Iu(o,t),o===e&&this.insert$.next(o),!this.keepOldVersions&&lu(e.kind)){const t=this.database.getReplaceableHistory(e.kind,e.pubkey,r);if(t&&t.length>0){const n=Array.from(t).filter(t=>t.created_at<e.created_at);for(const e of n)this.remove(e);if(t.length!==n.length)return t[0]}}return!1===this.keepExpired&&n&&this.handleExpiringEvent(o),o}remove(e){let t=this.memory?.getEvent("string"==typeof e?e:e.id);this.memory&&this.memory.remove(e);const n=this.database.remove(e);return n&&t&&this.remove$.next(t),n}removeByFilters(e){const t=this.getByFilters(e);this.memory&&this.memory.removeByFilters(e);const n=this.database.removeByFilters(e);for(const e of t)this.remove$.next(e);return n}update(e){return!!this.database.add(e)&&(this.database.update?.(e),this.update$.next(e),!0)}hasEvent(e){return this.memory?.hasEvent(e)||this.database.hasEvent(e)}getEvent(e){return this.memory?.getEvent(e)??this.mapToMemory(this.database.getEvent(e))}hasReplaceable(e,t,n){return this.memory?.hasReplaceable(e,t,n)||this.database.hasReplaceable(e,t,n)}getReplaceable(e,t,n){return this.memory?.getReplaceable(e,t,n)??this.mapToMemory(this.database.getReplaceable(e,t,n))}getReplaceableHistory(e,t,n){return this.memory?.getReplaceableHistory(e,t,n)??this.database.getReplaceableHistory(e,t,n)?.map(e=>this.mapToMemory(e)??e)}getByFilters(e){const t=this.database.getByFilters(e);return this.memory?t.map(e=>this.mapToMemory(e)):t}getTimeline(e){const t=this.database.getTimeline(e);return this.memory?t.map(e=>this.mapToMemory(e)):t}touch(e){return this.memory?.touch(e)}claim(e){return this.memory?.claim(e)}isClaimed(e){return this.memory?.isClaimed(e)??!1}removeClaim(e){return this.memory?.removeClaim(e)}clearClaim(e){return this.memory?.clearClaim(e)}unclaimed(){return this.memory?.unclaimed()||function*(){}()}prune(e){return this.memory?.prune(e)??0}removed(e){return this.checkDeleted(e)?jl:this.remove$.pipe(Sc(t=>t.id===e),Qc(1),kc(()=>jl))}updated(e){return this.update$.pipe(Sc(t=>t.id===e||t===e))}}function of(){let e,t;const n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n}"navigator"in globalThis&&navigator.userAgent.includes("Android")&&navigator.clipboard&&navigator.clipboard.readText;var sf,af;Ju(hi.NostrConnect,"nip44"),function(e){e.GetPublicKey="get_pubic_key",e.SignEvent="sign_event",e.Nip04Encrypt="nip04_encrypt",e.Nip04Decrypt="nip04_decrypt",e.Nip44Encrypt="nip44_encrypt",e.Nip44Decrypt="nip44_decrypt"}(sf||(sf={})),function(e){e.Connect="connect",e.CreateAccount="create_account",e.GetPublicKey="get_public_key",e.SignEvent="sign_event",e.Nip04Encrypt="nip04_encrypt",e.Nip04Decrypt="nip04_decrypt",e.Nip44Encrypt="nip44_encrypt",e.Nip44Decrypt="nip44_decrypt"}(af||(af={}));class lf{key;constructor(e){this.key=e||ci()}async getPublicKey(){return ui(this.key)}async signEvent(e){return di(e,this.key)}nip04={encrypt:async(e,t)=>hs.encrypt(this.key,e,t),decrypt:async(e,t)=>hs.decrypt(this.key,e,t)};nip44={encrypt:async(e,t)=>Fs.v2.encrypt(t,Fs.v2.utils.getConversationKey(this.key,e)),decrypt:async(e,t)=>Fs.v2.decrypt(t,Fs.v2.utils.getConversationKey(this.key,e))};static fromKey(e){return new lf(Mu(e))}}const cf="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function uf(e,...t){if(!((n=e)instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name))throw new Error("Uint8Array expected");var n;if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}const df=(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)(),ff=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function hf(e){if(uf(e),df)return e.toHex();let t="";for(let n=0;n<e.length;n++)t+=ff[e[n]];return t}const pf=48,gf=57,mf=65,yf=70,wf=97,vf=102;function Af(e){return e>=pf&&e<=gf?e-pf:e>=mf&&e<=yf?e-(mf-10):e>=wf&&e<=vf?e-(wf-10):void 0}function bf(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);if(df)return Uint8Array.fromHex(e);const t=e.length,n=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let t=0,i=0;t<n;t++,i+=2){const n=Af(e.charCodeAt(i)),o=Af(e.charCodeAt(i+1));if(void 0===n||void 0===o){const t=e[i]+e[i+1];throw new Error('hex string expected, got non-hex character "'+t+'" at index '+i)}r[t]=16*n+o}return r}
/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */
const kf=BigInt(0),If=BigInt(1),Cf=BigInt(2),Ef=BigInt(3),xf=BigInt(8),Bf=Object.freeze({a:kf,b:BigInt(7),P:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:If,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")}),Sf=(e,t)=>(e+t/Cf)/t,Qf={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar(e){const{n:t}=Bf,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-If*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=n,s=BigInt("0x100000000000000000000000000000000"),a=Sf(o*e,t),l=Sf(-r*e,t);let c=eh(e-a*n-l*i,t),u=eh(-a*r-l*o,t);const d=c>s,f=u>s;if(d&&(c=t-c),f&&(u=t-u),c>s||u>s)throw new Error("splitScalarEndo: Endomorphism failed, k="+e);return{k1neg:d,k1:c,k2neg:f,k2:u}}},Ff=32;function Df(e){const{a:t,b:n}=Bf,r=eh(e*e),i=eh(r*e);return eh(i+t*e+n)}const $f=Bf.a===kf;function Rf(e){if(!(e instanceof Pf))throw new TypeError("JacobianPoint expected")}class Pf{constructor(e,t,n){this.x=e,this.y=t,this.z=n}static fromAffine(e){if(!(e instanceof Nf))throw new TypeError("JacobianPoint#fromAffine: expected Point");return e.equals(Nf.ZERO)?Pf.ZERO:new Pf(e.x,e.y,If)}static toAffineBatch(e){const t=function(e,t=Bf.P){const n=new Array(e.length),r=e.reduce((e,r,i)=>r===kf?e:(n[i]=e,eh(e*r,t)),If),i=nh(r,t);return e.reduceRight((e,r,i)=>r===kf?e:(n[i]=eh(e*n[i],t),eh(e*r,t)),i),n}(e.map(e=>e.z));return e.map((e,n)=>e.toAffine(t[n]))}static normalizeZ(e){return Pf.toAffineBatch(e).map(Pf.fromAffine)}equals(e){Rf(e);const{x:t,y:n,z:r}=this,{x:i,y:o,z:s}=e,a=eh(r*r),l=eh(s*s),c=eh(t*l),u=eh(i*a),d=eh(eh(n*s)*l),f=eh(eh(o*r)*a);return c===u&&d===f}negate(){return new Pf(this.x,eh(-this.y),this.z)}double(){const{x:e,y:t,z:n}=this,r=eh(e*e),i=eh(t*t),o=eh(i*i),s=e+i,a=eh(Cf*(eh(s*s)-r-o)),l=eh(Ef*r),c=eh(l*l),u=eh(c-Cf*a),d=eh(l*(a-u)-xf*o),f=eh(Cf*t*n);return new Pf(u,d,f)}add(e){Rf(e);const{x:t,y:n,z:r}=this,{x:i,y:o,z:s}=e;if(i===kf||o===kf)return this;if(t===kf||n===kf)return e;const a=eh(r*r),l=eh(s*s),c=eh(t*l),u=eh(i*a),d=eh(eh(n*s)*l),f=eh(eh(o*r)*a),h=eh(u-c),p=eh(f-d);if(h===kf)return p===kf?this.double():Pf.ZERO;const g=eh(h*h),m=eh(h*g),y=eh(c*g),w=eh(p*p-m-Cf*y),v=eh(p*(y-w)-d*m),A=eh(r*s*h);return new Pf(w,v,A)}subtract(e){return this.add(e.negate())}multiplyUnsafe(e){const t=Pf.ZERO;if("bigint"==typeof e&&e===kf)return t;let n=Xf(e);if(n===If)return this;if(!$f){let e=t,r=this;for(;n>kf;)n&If&&(e=e.add(r)),r=r.double(),n>>=If;return e}let{k1neg:r,k1:i,k2neg:o,k2:s}=Qf.splitScalar(n),a=t,l=t,c=this;for(;i>kf||s>kf;)i&If&&(a=a.add(c)),s&If&&(l=l.add(c)),c=c.double(),i>>=If,s>>=If;return r&&(a=a.negate()),o&&(l=l.negate()),l=new Pf(eh(l.x*Qf.beta),l.y,l.z),a.add(l)}precomputeWindow(e){const t=$f?128/e+1:256/e+1,n=[];let r=this,i=r;for(let o=0;o<t;o++){i=r,n.push(i);for(let t=1;t<2**(e-1);t++)i=i.add(r),n.push(i);r=i.double()}return n}wNAF(e,t){!t&&this.equals(Pf.BASE)&&(t=Nf.BASE);const n=t&&t._WINDOW_SIZE||1;if(256%n)throw new Error("Point#wNAF: Invalid precomputation window, must be power of 2");let r=t&&Uf.get(t);r||(r=this.precomputeWindow(n),t&&1!==n&&(r=Pf.normalizeZ(r),Uf.set(t,r)));let i=Pf.ZERO,o=Pf.BASE;const s=1+($f?128/n:256/n),a=2**(n-1),l=BigInt(2**n-1),c=2**n,u=BigInt(n);for(let t=0;t<s;t++){const n=t*a;let s=Number(e&l);e>>=u,s>a&&(s-=c,e+=If);const d=n,f=n+Math.abs(s)-1,h=t%2!=0,p=s<0;0===s?o=o.add(Tf(h,r[d])):i=i.add(Tf(p,r[f]))}return{p:i,f:o}}multiply(e,t){let n,r,i=Xf(e);if($f){const{k1neg:e,k1:o,k2neg:s,k2:a}=Qf.splitScalar(i);let{p:l,f:c}=this.wNAF(o,t),{p:u,f:d}=this.wNAF(a,t);l=Tf(e,l),u=Tf(s,u),u=new Pf(eh(u.x*Qf.beta),u.y,u.z),n=l.add(u),r=c.add(d)}else{const{p:e,f:o}=this.wNAF(i,t);n=e,r=o}return Pf.normalizeZ([n,r])[0]}toAffine(e){const{x:t,y:n,z:r}=this,i=this.equals(Pf.ZERO);null==e&&(e=i?xf:nh(r));const o=e,s=eh(o*o),a=eh(s*o),l=eh(t*s),c=eh(n*a),u=eh(r*o);if(i)return Nf.ZERO;if(u!==If)throw new Error("invZ was invalid");return new Nf(l,c)}}function Tf(e,t){const n=t.negate();return e?n:t}Pf.BASE=new Pf(Bf.Gx,Bf.Gy,If),Pf.ZERO=new Pf(kf,If,kf);const Uf=new WeakMap;class Nf{constructor(e,t){this.x=e,this.y=t}_setWindowSize(e){this._WINDOW_SIZE=e,Uf.delete(this)}hasEvenY(){return this.y%Cf===kf}static fromCompressedHex(e){const t=32===e.length,n=Wf(t?e:e.subarray(1));if(!ih(n))throw new Error("Point is not on curve");let r=function(e){const{P:t}=Bf,n=BigInt(6),r=BigInt(11),i=BigInt(22),o=BigInt(23),s=BigInt(44),a=BigInt(88),l=e*e*e%t,c=l*l*e%t,u=th(c,Ef)*c%t,d=th(u,Ef)*c%t,f=th(d,Cf)*l%t,h=th(f,r)*f%t,p=th(h,i)*h%t,g=th(p,s)*p%t,m=th(g,a)*g%t,y=th(m,s)*p%t,w=th(y,Ef)*c%t,v=th(w,o)*h%t,A=th(v,n)*l%t,b=th(A,Cf);if(b*b%t!==e)throw new Error("Cannot find square root");return b}(Df(n));const i=(r&If)===If;if(t)i&&(r=eh(-r));else{!(1&~e[0])!==i&&(r=eh(-r))}const o=new Nf(n,r);return o.assertValidity(),o}static fromUncompressedHex(e){const t=Wf(e.subarray(1,33)),n=Wf(e.subarray(33,65)),r=new Nf(t,n);return r.assertValidity(),r}static fromHex(e){const t=Zf(e),n=t.length,r=t[0];if(n===Ff)return this.fromCompressedHex(t);if(33===n&&(2===r||3===r))return this.fromCompressedHex(t);if(65===n&&4===r)return this.fromUncompressedHex(t);throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${n}`)}static fromPrivateKey(e){return Nf.BASE.multiply(function(e){let t;if("bigint"==typeof e)t=e;else if("number"==typeof e&&Number.isSafeInteger(e)&&e>0)t=BigInt(e);else if("string"==typeof e){if(64!==e.length)throw new Error("Expected 32 bytes of private key");t=Yf(e)}else{if(!Of(e))throw new TypeError("Expected valid private key");if(32!==e.length)throw new Error("Expected 32 bytes of private key");t=Wf(e)}if(!rh(t))throw new Error("Expected private key: 0 < key < n");return t}(e))}static fromSignature(e,t,n){const{r:r,s:i}=function(e){if(e instanceof _f)return e.assertValidity(),e;try{return _f.fromDER(e)}catch(t){return _f.fromCompact(e)}}(t);if(![0,1,2,3].includes(n))throw new Error("Cannot recover: invalid recovery bit");const o=function(e,t=!1){const n=function(e){const t=8*e.length-256,n=Wf(e);return t>0?n>>BigInt(t):n}(e);if(t)return n;const{n:r}=Bf;return n>=r?n-r:n}(Zf(e)),{n:s}=Bf,a=2===n||3===n?r+s:r,l=nh(a,s),c=eh(-o*l,s),u=eh(i*l,s),d=1&n?"03":"02",f=Nf.fromHex(d+zf(a)),h=Nf.BASE.multiplyAndAddUnsafe(f,c,u);if(!h)throw new Error("Cannot recover signature: point at infinify");return h.assertValidity(),h}toRawBytes(e=!1){return Kf(this.toHex(e))}toHex(e=!1){const t=zf(this.x);if(e){return`${this.hasEvenY()?"02":"03"}${t}`}return`04${t}${zf(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){const e="Point is not on elliptic curve",{x:t,y:n}=this;if(!ih(t)||!ih(n))throw new Error(e);const r=eh(n*n);if(eh(r-Df(t))!==kf)throw new Error(e)}equals(e){return this.x===e.x&&this.y===e.y}negate(){return new Nf(this.x,eh(-this.y))}double(){return Pf.fromAffine(this).double().toAffine()}add(e){return Pf.fromAffine(this).add(Pf.fromAffine(e)).toAffine()}subtract(e){return this.add(e.negate())}multiply(e){return Pf.fromAffine(this).multiply(e,this).toAffine()}multiplyAndAddUnsafe(e,t,n){const r=Pf.fromAffine(this),i=t===kf||t===If||this!==Nf.BASE?r.multiplyUnsafe(t):r.multiply(t),o=Pf.fromAffine(e).multiplyUnsafe(n),s=i.add(o);return s.equals(Pf.ZERO)?void 0:s.toAffine()}}function Lf(e){return Number.parseInt(e[0],16)>=8?"00"+e:e}function Mf(e){if(e.length<2||2!==e[0])throw new Error(`Invalid signature integer tag: ${jf(e)}`);const t=e[1],n=e.subarray(2,t+2);if(!t||n.length!==t)throw new Error("Invalid signature integer: wrong length");if(0===n[0]&&n[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Wf(n),left:e.subarray(t+2)}}Nf.BASE=new Nf(Bf.Gx,Bf.Gy),Nf.ZERO=new Nf(kf,kf);class _f{constructor(e,t){this.r=e,this.s=t,this.assertValidity()}static fromCompact(e){const t=Of(e),n="Signature.fromCompact";if("string"!=typeof e&&!t)throw new TypeError(`${n}: Expected string or Uint8Array`);const r=t?jf(e):e;if(128!==r.length)throw new Error(`${n}: Expected 64-byte hex`);return new _f(Yf(r.slice(0,64)),Yf(r.slice(64,128)))}static fromDER(e){const t=Of(e);if("string"!=typeof e&&!t)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");const{r:n,s:r}=function(e){if(e.length<2||48!=e[0])throw new Error(`Invalid signature tag: ${jf(e)}`);if(e[1]!==e.length-2)throw new Error("Invalid signature: incorrect length");const{data:t,left:n}=Mf(e.subarray(2)),{data:r,left:i}=Mf(n);if(i.length)throw new Error(`Invalid signature: left bytes after parsing: ${jf(i)}`);return{r:t,s:r}}(t?e:Kf(e));return new _f(n,r)}static fromHex(e){return this.fromDER(e)}assertValidity(){const{r:e,s:t}=this;if(!rh(e))throw new Error("Invalid Signature: r must be 0 < r < n");if(!rh(t))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){const e=Bf.n>>If;return this.s>e}normalizeS(){return this.hasHighS()?new _f(this.r,eh(-this.s,Bf.n)):this}toDERRawBytes(){return Kf(this.toDERHex())}toDERHex(){const e=Lf(qf(this.s)),t=Lf(qf(this.r)),n=e.length/2,r=t.length/2,i=qf(n),o=qf(r);return`30${qf(r+n+4)}02${o}${t}02${i}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return Kf(this.toCompactHex())}toCompactHex(){return zf(this.r)+zf(this.s)}}function Of(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&"Uint8Array"===e.constructor.name}const Hf=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function jf(e){!function(e){if(!Of(e))throw new Error("Uint8Array expected")}(e);let t="";for(let n=0;n<e.length;n++)t+=Hf[e[n]];return t}const Gf={_0:48,_9:57,A:65,F:70,a:97,f:102};function Jf(e){return e>=Gf._0&&e<=Gf._9?e-Gf._0:e>=Gf.A&&e<=Gf.F?e-(Gf.A-10):e>=Gf.a&&e<=Gf.f?e-(Gf.a-10):void 0}function Kf(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length,n=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let t=0,i=0;t<n;t++,i+=2){const n=Jf(e.charCodeAt(i)),o=Jf(e.charCodeAt(i+1));if(void 0===n||void 0===o){const t=e[i]+e[i+1];throw new Error('hex string expected, got non-hex character "'+t+'" at index '+i)}r[t]=16*n+o}return r}const Vf=BigInt("0x10000000000000000000000000000000000000000000000000000000000000000");function zf(e){if("bigint"!=typeof e)throw new Error("Expected bigint");if(!(kf<=e&&e<Vf))throw new Error("Expected number 0 <= n < 2^256");return e.toString(16).padStart(64,"0")}function qf(e){const t=e.toString(16);return 1&t.length?`0${t}`:t}function Yf(e){if("string"!=typeof e)throw new TypeError("hexToNumber: expected string, got "+typeof e);return BigInt(`0x${e}`)}function Wf(e){return Yf(jf(e))}function Zf(e){return Of(e)?Uint8Array.from(e):Kf(e)}function Xf(e){if("number"==typeof e&&Number.isSafeInteger(e)&&e>0)return BigInt(e);if("bigint"==typeof e&&rh(e))return e;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function eh(e,t=Bf.P){const n=e%t;return n>=kf?n:t+n}function th(e,t){const{P:n}=Bf;let r=e;for(;t-- >kf;)r*=r,r%=n;return r}function nh(e,t=Bf.P){if(e===kf||t<=kf)throw new Error(`invert: expected positive integers, got n=${e} mod=${t}`);let n=eh(e,t),r=t,i=kf,o=If;for(;n!==kf;){const e=r%n,t=i-o*(r/n);r=n,n=e,i=o,o=t}if(r!==If)throw new Error("invert: does not exist");return eh(i,t)}function rh(e){return kf<e&&e<Bf.n}function ih(e){return kf<e&&e<Bf.P}
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */
function oh(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&"Uint8Array"===e.constructor.name}function sh(e,t){return!!Array.isArray(t)&&(0===t.length||(e?t.every(e=>"string"==typeof e):t.every(e=>Number.isSafeInteger(e))))}function ah(e,t){if("string"!=typeof t)throw new Error(`${e}: string expected`);return!0}function lh(e){if(!Number.isSafeInteger(e))throw new Error(`invalid integer: ${e}`)}function ch(e){if(!Array.isArray(e))throw new Error("array expected")}function uh(e,t){if(!sh(!0,t))throw new Error(`${e}: array of strings expected`)}Nf.BASE._setWindowSize(8);const dh=(e,t)=>0===t?e:dh(t,e%t),fh=(e,t)=>e+(t-dh(e,t)),hh=(()=>{let e=[];for(let t=0;t<40;t++)e.push(2**t);return e})();function ph(e,t,n,r){if(ch(e),t<=0||t>32)throw new Error(`convertRadix2: wrong from=${t}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(fh(t,n)>32)throw new Error(`convertRadix2: carry overflow from=${t} to=${n} carryBits=${fh(t,n)}`);let i=0,o=0;const s=hh[t],a=hh[n]-1,l=[];for(const r of e){if(lh(r),r>=s)throw new Error(`convertRadix2: invalid data word=${r} from=${t}`);if(i=i<<t|r,o+t>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${t}`);for(o+=t;o>=n;o-=n)l.push((i>>o-n&a)>>>0);const e=hh[o];if(void 0===e)throw new Error("invalid carry");i&=e-1}if(i=i<<n-o&a,!r&&o>=t)throw new Error("Excess padding");if(!r&&i>0)throw new Error(`Non-zero padding: ${i}`);return r&&o>0&&l.push(i>>>0),l}const gh=(()=>"function"==typeof Uint8Array.from([]).toBase64&&"function"==typeof Uint8Array.fromBase64)()?{encode:e=>(function(e,...t){if(!oh(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}(e),e.toBase64()),decode:e=>((e,t)=>{ah("base64",e);const n=t?/^[A-Za-z0-9=_-]+$/:/^[A-Za-z0-9=+/]+$/,r=t?"base64url":"base64";if(e.length>0&&!n.test(e))throw new Error("invalid base64");return Uint8Array.fromBase64(e,{alphabet:r,lastChunkHandling:"strict"})})(e,!1)}:function(...e){const t=e=>e,n=(e,t)=>n=>e(t(n));return{encode:e.map(e=>e.encode).reduceRight(n,t),decode:e.map(e=>e.decode).reduce(n,t)}}(function(e,t=!1){if(lh(e),e<=0||e>32)throw new Error("radix2: bits should be in (0..32]");if(fh(8,e)>32||fh(e,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!oh(n))throw new Error("radix2.encode input should be Uint8Array");return ph(Array.from(n),8,e,!t)},decode:n=>(function(e,t){if(!sh(!1,t))throw new Error(`${e}: array of numbers expected`)}("radix2.decode",n),Uint8Array.from(ph(n,e,8,t)))}}(6),function(e){const t="string"==typeof e?e.split(""):e,n=t.length;uh("alphabet",t);const r=new Map(t.map((e,t)=>[e,t]));return{encode:r=>(ch(r),r.map(r=>{if(!Number.isSafeInteger(r)||r<0||r>=n)throw new Error(`alphabet.encode: digit index outside alphabet "${r}". Allowed: ${e}`);return t[r]})),decode:t=>(ch(t),t.map(t=>{ah("alphabet.decode",t);const n=r.get(t);if(void 0===n)throw new Error(`Unknown letter: "${t}". Allowed: ${e}`);return n}))}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),function(e,t="="){return lh(e),ah("padding",t),{encode(n){for(uh("padding.encode",n);n.length*e%8;)n.push(t);return n},decode(n){uh("padding.decode",n);let r=n.length;if(r*e%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;r>0&&n[r-1]===t;r--){if((r-1)*e%8==0)throw new Error("padding: invalid, string has too much padding")}return n.slice(0,r)}}}(6),function(e=""){return ah("join",e),{encode:t=>(uh("join.decode",t),t.join(e)),decode:t=>(ah("join.decode",t),t.split(e))}}(""));function mh(e){return Nf.fromHex(e).toHex().substring(2)}const yh=new TextDecoder("utf-8"),wh=new TextEncoder;class vh{log=dd.extend("SerialPortSigner");writer=null;pubkey;get isConnected(){return!!this.writer}verifyEvent=fi;nip04;constructor(){this.nip04={encrypt:this.nip04Encrypt.bind(this),decrypt:this.nip04Decrypt.bind(this)}}lastCommand=null;async callMethodOnDevice(e,t,n={}){if(!vh.SUPPORTED)throw new Error("Serial devices are not supported");if(this.writer||await this.connectToDevice(n),this.lastCommand)throw new Error("Previous command to device still pending!");const r=of();return this.lastCommand=r,this.sendCommand(e,t),setTimeout(()=>{r.reject(new Error("Device timeout")),this.lastCommand===r&&(this.lastCommand=null)},6e3),this.lastCommand}async connectToDevice({onConnect:e,onDisconnect:t,onError:n,onDone:r}){let i,o=await window.navigator.serial.requestPort();await o.open({baudRate:9600}),await(e=>new Promise(t=>setTimeout(t,e)))(1e3),(async()=>{for(;o&&o.readable;){const e=new window.TextDecoderStream;o.readable.pipeTo(e.writable),i=e.readable.getReader();const t=this.readFromSerialPort(i);try{for(;;){const{value:e,done:n}=await t("\n");if(e){const{method:t,data:n}=this.parseResponse(e);if("/ping"===t&&this.log("Pong"),-1===vh.PUBLIC_METHODS.indexOf(t))continue;this.log("Received: ",t,n),this.lastCommand&&(this.lastCommand.resolve(n),this.lastCommand=null)}if(n)return this.lastCommand=null,this.writer=null,void(r&&r())}}catch(e){if(e instanceof Error)throw this.writer=null,n&&n(e),this.lastCommand&&(this.lastCommand.reject(e),this.lastCommand=null),e}}})();const s=new window.TextEncoderStream;s.readable.pipeTo(o.writable),this.writer=s.writable.getWriter(),await this.sendCommand(vh.METHOD_PING),await this.sendCommand(vh.METHOD_PING,[window.location.host]),e&&e(),o.addEventListener("disconnect",()=>{this.log("Disconnected"),this.lastCommand=null,this.writer=null,t&&t()})}async sendCommand(e,t=[]){if(!this.writer)return;this.log("Send command",e,t);const n=[e].concat(t).join(" ");await this.writer.write(n+"\n")}readFromSerialPort(e){let t,n=[];return async(r="\n")=>{if(n.length)return{value:n.shift().trim(),done:!1};const i=[];for(t&&(i.push(t),t=void 0);;){const{value:o,done:s}=await e.read();if(o){const e=o.split(r);if(e.length>1)return i.push(e.shift()),t=e.pop(),n=e,{value:i.join("").trim(),done:!1};i.push(o)}if(s)return{value:i.join("").trim(),done:!0}}}}parseResponse(e){const t=e.split(" ")[0];return{method:t,data:e.substring(t.length).trim()}}async nip04Encrypt(e,t){const n=bf(await this.callMethodOnDevice(vh.METHOD_SHARED_SECRET,[mh(e)]));let r=Uint8Array.from(function(e=32){if(cf&&"function"==typeof cf.getRandomValues)return cf.getRandomValues(new Uint8Array(e));if(cf&&"function"==typeof cf.randomBytes)return Uint8Array.from(cf.randomBytes(e));throw new Error("crypto.getRandomValues must be defined")}(16)),i=wh.encode(t),o=await crypto.subtle.importKey("raw",n,{name:"AES-CBC"},!1,["encrypt"]),s=await crypto.subtle.encrypt({name:"AES-CBC",iv:r},o,i);return`${gh.encode(new Uint8Array(s))}?iv=${gh.encode(new Uint8Array(r.buffer))}`}async nip04Decrypt(e,t){let[n,r]=t.split("?iv=");const i=bf(await this.callMethodOnDevice(vh.METHOD_SHARED_SECRET,[mh(e)]));let o=await crypto.subtle.importKey("raw",i,{name:"AES-CBC"},!1,["decrypt"]),s=gh.decode(n),a=gh.decode(r),l=await crypto.subtle.decrypt({name:"AES-CBC",iv:a},o,s);return yh.decode(l)}async getPublicKey(){const e=await this.callMethodOnDevice(vh.METHOD_PUBLIC_KEY,[]);return this.pubkey=e,e}async restore(e){await this.callMethodOnDevice(vh.METHOD_RESTORE,[hf(e)])}async signEvent(e){const t=e.pubkey||this.pubkey;if(!t)throw new Error("Unknown signer pubkey");const n={...e,id:ai({...e,pubkey:t})},r=await this.callMethodOnDevice(vh.METHOD_SIGN_MESSAGE,[n.id]),i={...n,sig:r,pubkey:t};if(!this.verifyEvent(i))throw new Error("Invalid signature");return i}ping(){this.sendCommand(vh.METHOD_PING,[window.location.host])}static SUPPORTED="navigator"in globalThis&&!!navigator.serial;static METHOD_PING="/ping";static METHOD_LOG="/log";static METHOD_SIGN_MESSAGE="/sign-message";static METHOD_SHARED_SECRET="/shared-secret";static METHOD_PUBLIC_KEY="/public-key";static METHOD_RESTORE="/restore";static PUBLIC_METHODS=[vh.METHOD_PUBLIC_KEY,vh.METHOD_SIGN_MESSAGE,vh.METHOD_SHARED_SECRET,vh.METHOD_RESTORE]}const Ah=[`${window.location.protocol.startsWith("https")?"wss:":"ws:"}//${window.location.host}/`],bh=[{value:0,label:"User Metadata (0)"},{value:3,label:"Follows (3)"},{value:1e4,label:"Mute list (10000)"},{value:10001,label:"Pin list (10001)"},{value:10002,label:"Relay List Metadata (10002)"},{value:10003,label:"Bookmark list (10003)"},{value:10004,label:"Communities list (10004)"},{value:10005,label:"Public chats list (10005)"},{value:10006,label:"Blocked relays list (10006)"},{value:10007,label:"Search relays list (10007)"},{value:10009,label:"User groups (10009)"},{value:10012,label:"Favorite relays list (10012)"},{value:10013,label:"Private event relay list (10013)"},{value:10015,label:"Interests list (10015)"},{value:10019,label:"Nutzap Mint Recommendation (10019)"},{value:10020,label:"Media follows (10020)"},{value:10030,label:"User emoji list (10030)"},{value:10050,label:"Relay list to receive DMs (10050)"},{value:10051,label:"KeyPackage Relays List (10051)"},{value:10063,label:"User server list (10063)"},{value:10096,label:"File storage server list (10096)"},{value:10166,label:"Relay Monitor Announcement (10166)"},{value:10312,label:"Room Presence (10312)"},{value:10377,label:"Proxy Announcement (10377)"},{value:11111,label:"Transport Method Announcement (11111)"},{value:13194,label:"Wallet Info (13194)"},{value:17375,label:"Cashu Wallet Event (17375)"},{value:3e4,label:"Follow sets (30000)"},{value:30001,label:"Generic lists (30001)"},{value:30002,label:"Relay sets (30002)"},{value:30003,label:"Bookmark sets (30003)"},{value:30004,label:"Curation sets (30004)"},{value:30005,label:"Video sets (30005)"},{value:30007,label:"Kind mute sets (30007)"},{value:30008,label:"Profile Badges (30008)"},{value:30009,label:"Badge Definition (30009)"},{value:30015,label:"Interest sets (30015)"},{value:30017,label:"Create or update a stall (30017)"},{value:30018,label:"Create or update a product (30018)"},{value:30019,label:"Marketplace UI/UX (30019)"},{value:30020,label:"Product sold as an auction (30020)"},{value:30023,label:"Long-form Content (30023)"},{value:30024,label:"Draft Long-form Content (30024)"},{value:30030,label:"Emoji sets (30030)"},{value:30040,label:"Curated Publication Index (30040)"},{value:30041,label:"Curated Publication Content (30041)"},{value:30063,label:"Release artifact sets (30063)"},{value:30078,label:"Application-specific Data (30078)"},{value:30166,label:"Relay Discovery (30166)"},{value:30267,label:"App curation sets (30267)"},{value:30311,label:"Live Event (30311)"},{value:30312,label:"Interactive Room (30312)"},{value:30313,label:"Conference Event (30313)"},{value:30315,label:"User Statuses (30315)"},{value:30388,label:"Slide Set (30388)"},{value:30402,label:"Classified Listing (30402)"},{value:30403,label:"Draft Classified Listing (30403)"},{value:30617,label:"Repository announcements (30617)"},{value:30618,label:"Repository state announcements (30618)"},{value:30818,label:"Wiki article (30818)"},{value:30819,label:"Redirects (30819)"},{value:31234,label:"Draft Event (31234)"},{value:31388,label:"Link Set (31388)"},{value:31890,label:"Feed (31890)"},{value:31922,label:"Date-Based Calendar Event (31922)"},{value:31923,label:"Time-Based Calendar Event (31923)"},{value:31924,label:"Calendar (31924)"},{value:31925,label:"Calendar Event RSVP (31925)"},{value:31989,label:"Handler recommendation (31989)"},{value:31990,label:"Handler information (31990)"},{value:32267,label:"Software Application (32267)"},{value:34550,label:"Community Definition (34550)"},{value:37516,label:"Geocache listing (37516)"},{value:38172,label:"Cashu Mint Announcement (38172)"},{value:38173,label:"Fedimint Announcement (38173)"},{value:38383,label:"Peer-to-peer Order events (38383)"},{value:39089,label:"Starter packs (39089)"},{value:39092,label:"Media starter packs (39092)"},{value:39701,label:"Web bookmarks (39701)"}],kh={0:"User Metadata",1:"Short Text Note",2:"Recommend Relay",3:"Follows",4:"Encrypted Direct Messages",5:"Event Deletion Request",6:"Repost",7:"Reaction",8:"Badge Award",9:"Chat Message",10:"Group Chat Threaded Reply",11:"Thread",12:"Group Thread Reply",13:"Seal",14:"Direct Message",15:"File Message",16:"Generic Repost",17:"Reaction to a website",20:"Picture",40:"Channel Creation",41:"Channel Metadata",42:"Channel Message",43:"Channel Hide Message",44:"Channel Mute User",1021:"Bid",1022:"Bid Confirmation",1040:"OpenTimestamps",1063:"File Metadata",1311:"Live Chat Message",1971:"Problem Tracker",1984:"Reporting",1985:"Label",4550:"Community Post Approval",5e3:"Job Request",5999:"Job Request",6e3:"Job Result",6999:"Job Result",7e3:"Job Feedback",9041:"Zap Goal",9734:"Zap Request",9735:"Zap",9882:"Highlights",1e4:"Mute list",10001:"Pin list",10002:"Relay List Metadata",10003:"Bookmarks list",10004:"Communities list",10005:"Public Chats list",10006:"Blocked Relays list",10007:"Search Relays list",10015:"Interests",10030:"User Emoji list",10050:"DM relays",10096:"File Storage Server List",13194:"Wallet Service Info",21e3:"Lightning pub RPC",22242:"Client Authentication",23194:"Wallet Request",23195:"Wallet Response",23196:"Wallet Notification",23197:"Wallet Notification",24133:"Nostr Connect",27235:"HTTP Auth",3e4:"Follow sets",30001:"Generic lists",30002:"Relay sets",30003:"Bookmark sets",30004:"Curation sets",30008:"Profile Badges",30009:"Badge Definition",30015:"Interest sets",30017:"Stall Definition",30018:"Product Definition",30019:"Marketplace UI/UX",30020:"Product sold as an auction",30023:"Long-form Content",30024:"Draft Long-form Content",30030:"Emoji sets",30078:"Application-specific Data",30311:"Live Event",30315:"User Statuses",30402:"Classified Listing",30403:"Draft Classified Listing",31922:"Date-Based Calendar Event",31923:"Time-Based Calendar Event",31924:"Calendar",31925:"Calendar Event RSVP",31989:"Handler recommendation",31990:"Handler information",34235:"Video Event Horizontal",34236:"Video Event Vertical",34550:"Community Definition"},Ih=3e5;class Ch{constructor(){this.pool=new Tn,this.eventStore=new rf,this.isConnected=!1,this.signer=null,this.relays=[...Ah]}async connect(){console.log("Starting connection to",this.relays.length,"relays...");try{this.isConnected=!0,console.log("✓ Successfully initialized relay pool"),await new Promise(e=>setTimeout(e,1e3))}catch(e){throw console.error("✗ Connection failed:",e),e}}async connectToRelay(e){console.log(`Adding relay: ${e}`);try{return this.relays.includes(e)||this.relays.push(e),console.log(`✓ Successfully added relay ${e}`),!0}catch(t){return console.error(`✗ Failed to add relay ${e}:`,t),!1}}subscribe(e,t){console.log("Creating subscription with filters:",e);const n=this.pool.subscribeMany(this.relays,e,{onevent(e){console.log("Event received:",e),t(e)},oneose(){console.log("EOSE received"),window.dispatchEvent(new CustomEvent("nostr-eose",{detail:{subscriptionId:n.id}}))}});return n}unsubscribe(e){console.log("Closing subscription"),e&&e.close&&e.close()}disconnect(){console.log("Disconnecting relay pool"),this.pool&&this.pool.close(this.relays),this.isConnected=!1}async publish(e,t=null){this.isConnected||(console.warn("Not connected to any relays, attempting to connect first"),await this.connect());try{const n=t||this.relays,r=this.pool.publish(n,e);return await Promise.allSettled(r),console.log("✓ Event published successfully"),await Dh([e]),console.log("Event stored in IndexedDB"),{success:!0,okCount:1,errorCount:0}}catch(e){throw console.error("✗ Failed to publish event:",e),e}}getPool(){return this.pool}getEventStore(){return this.eventStore}getSigner(){return this.signer}setSigner(e){this.signer=e}}const Eh=new Ch,xh="nostrCache",Bh=2,Sh="events";function Qh(){return new Promise((e,t)=>{try{const n=indexedDB.open(xh,Bh);n.onupgradeneeded=e=>{const t=n.result;e.oldVersion;let r;r=t.objectStoreNames.contains(Sh)?n.transaction.objectStore(Sh):t.createObjectStore(Sh,{keyPath:"id"}),r.indexNames.contains("byKindAuthor")||r.createIndex("byKindAuthor",["kind","pubkey"],{unique:!1}),r.indexNames.contains("byKindAuthorCreated")||r.createIndex("byKindAuthorCreated",["kind","pubkey","created_at"],{unique:!1}),r.indexNames.contains("byKind")||r.createIndex("byKind","kind",{unique:!1}),r.indexNames.contains("byAuthor")||r.createIndex("byAuthor","pubkey",{unique:!1}),r.indexNames.contains("byCreatedAt")||r.createIndex("byCreatedAt","created_at",{unique:!1})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}catch(e){console.error("Failed to open IndexedDB",e),t(e)}})}async function Fh(e){try{const t=await Qh();await new Promise((n,r)=>{const i=t.transaction(Sh,"readwrite");i.oncomplete=()=>n(),i.onerror=()=>r(i.error),i.objectStore(Sh).put(e)})}catch(e){console.warn("IDB putEvent failed",e)}}async function Dh(e){if(e&&0!==e.length)try{const t=await Qh();await new Promise((n,r)=>{const i=t.transaction(Sh,"readwrite");i.oncomplete=()=>n(),i.onerror=()=>r(i.error);const o=i.objectStore(Sh);for(const t of e)o.put(t)}),console.log(`Stored ${e.length} events in IndexedDB`)}catch(e){console.warn("IDB putEvents failed",e)}}async function $h(e){try{const t=await Qh(),n=[];console.log("QueryEventsFromDB: Starting query with filters:",e);for(const r of e){console.log("QueryEventsFromDB: Processing filter:",r);const e=await new Promise((e,n)=>{const i=t.transaction(Sh,"readonly").objectStore(Sh),o=[];let s;if(r.kinds&&r.kinds.length>0&&r.authors&&r.authors.length>0){const e=r.kinds[0],t=r.authors[0];console.log(`QueryEventsFromDB: Using byKindAuthorCreated index for kind=${e}, author=${t.substring(0,8)}...`);const n=i.index("byKindAuthorCreated"),o=IDBKeyRange.bound([e,t,-1/0],[e,t,1/0]);s=n.openCursor(o,"prev")}else if(r.kinds&&r.kinds.length>0){console.log(`QueryEventsFromDB: Using byKind index for kind=${r.kinds[0]}`);const e=i.index("byKind");s=e.openCursor(IDBKeyRange.only(r.kinds[0]))}else if(r.authors&&r.authors.length>0){console.log(`QueryEventsFromDB: Using byAuthor index for author=${r.authors[0].substring(0,8)}...`);const e=i.index("byAuthor");s=e.openCursor(IDBKeyRange.only(r.authors[0]))}else console.log("QueryEventsFromDB: Scanning all events (no specific index)"),s=i.openCursor();s.onsuccess=t=>{const n=t.target.result;if(n){const t=n.value;let i=!0;if(r.kinds&&r.kinds.length>0&&!r.kinds.includes(t.kind)&&(i=!1),r.authors&&r.authors.length>0&&!r.authors.includes(t.pubkey)&&(i=!1),r.since&&t.created_at<r.since&&(i=!1),r.until&&t.created_at>r.until&&(i=!1),r.ids&&r.ids.length>0&&!r.ids.includes(t.id)&&(i=!1),i&&o.push(t),r.limit&&o.length>=r.limit)return console.log(`QueryEventsFromDB: Reached limit of ${r.limit}, found ${o.length} matching events`),void e(o);n.continue()}else console.log(`QueryEventsFromDB: Cursor exhausted, found ${o.length} matching events`),e(o)},s.onerror=()=>{console.error("QueryEventsFromDB: Cursor error:",s.error),n(s.error)}});console.log(`QueryEventsFromDB: Found ${e.length} events for this filter`),n.push(...e)}return n.sort((e,t)=>t.created_at-e.created_at),console.log(`QueryEventsFromDB: Returning ${n.length} total events`),n}catch(e){return console.error("QueryEventsFromDB failed:",e),[]}}function Rh(e){try{const t=JSON.parse(e.content||"{}");return{name:t.name||t.display_name||"",picture:t.picture||"",banner:t.banner||"",about:t.about||"",nip05:t.nip05||"",lud16:t.lud16||t.lud06||""}}catch(e){return{name:"",picture:"",banner:"",about:"",nip05:"",lud16:""}}}async function Ph(e){console.log(`Starting profile fetch for pubkey: ${e}`);try{const t=await async function(e){try{const t=await Qh();return await new Promise((n,r)=>{const i=t.transaction(Sh,"readonly").objectStore(Sh).index("byKindAuthorCreated"),o=IDBKeyRange.bound([0,e,-1/0],[0,e,1/0]),s=i.openCursor(o,"prev");s.onsuccess=()=>{const e=s.result;n(e?e.value:null)},s.onerror=()=>r(s.error)})}catch(e){return console.warn("IDB getLatestProfileEvent failed",e),null}}(e);if(t){console.log("Using cached profile event");return Rh(t)}}catch(e){console.warn("Failed to load cached profile",e)}try{const t=[{kinds:[0],authors:[e],limit:1}],n=await Uh(t,{timeout:1e4});if(n.length>0){const t=n[0];console.log("Profile fetched:",t),await Fh(t);try{console.log("Publishing profile event to local relay:",t.id),await Eh.publish(t),console.log("Profile event successfully saved to local relay")}catch(e){console.warn("Failed to publish profile to local relay:",e)}const r=Rh(t);try{"undefined"!=typeof window&&window.dispatchEvent&&window.dispatchEvent(new CustomEvent("profile-updated",{detail:{pubkey:e,profile:r,event:t}}))}catch(e){console.warn("Failed to dispatch profile-updated event",e)}return r}return console.log("No profile found for pubkey, creating default:",e),await Th(e)}catch(t){console.error("Failed to fetch profile:",t);try{return await Th(e)}catch(e){return console.error("Failed to create default profile:",e),null}}}async function Th(e){const t=`testuser${e.slice(0,6)}`,n=`${window.location.origin}/orly.png`,r={name:t,display_name:t,picture:n,about:"New ORLY user"},i={name:t,displayName:t,picture:n,about:"New ORLY user",pubkey:e};if(Eh.signer)try{const e={kind:0,content:JSON.stringify(r),tags:[],created_at:Math.floor(Date.now()/1e3)},t=await Eh.signer.signEvent(e);await Eh.publish(t),console.log("Default profile published:",t.id)}catch(e){console.warn("Failed to publish default profile:",e)}return i}async function Uh(e,t={}){console.log("Starting event fetch with filters:",JSON.stringify(e,null,2)),console.log("Current relays:",Eh.relays),Eh.isConnected&&0!==Eh.relays.length||(console.warn("Client not connected, initializing..."),await Mh());const{timeout:n=3e4,useCache:r=!0}=t;if(r)try{const t=await $h(e);t.length>0&&console.log(`Found ${t.length} cached events in IndexedDB`)}catch(e){console.warn("Failed to query cached events",e)}return new Promise((t,r)=>{const i=[],o=setTimeout(()=>{console.log(`Timeout reached after ${n}ms, returning ${i.length} events`),sub.close(),i.length>0&&Dh(i).catch(e=>console.warn("Failed to cache events",e)),t(i)},n);try{const n=Math.random().toString(36).substring(7);console.log(`📤 REQ [${n}]:`,JSON.stringify(["REQ",n,...e],null,2));const r=Eh.pool.subscribeMany(Eh.relays,e,{onevent(e){console.log(`📥 EVENT received for REQ [${n}]:`,{id:e.id?.substring(0,8)+"...",kind:e.kind,pubkey:e.pubkey?.substring(0,8)+"...",created_at:e.created_at,content_preview:e.content?.substring(0,50)}),i.push(e),Fh(e).catch(e=>console.warn("Failed to cache event",e))},oneose(){console.log(`✅ EOSE received for REQ [${n}], got ${i.length} events`),clearTimeout(o),r.close(),i.length>0&&Dh(i).catch(e=>console.warn("Failed to cache events",e)),t(i)}})}catch(e){clearTimeout(o),console.error("Failed to fetch events:",e),r(e)}})}async function Nh(e,t={}){const{timeout:n=1e4}=t;console.log(`Fetching event by ID: ${e}`);try{const t=[{ids:[e]}];console.log("Fetching event with filters:",t);const r=await Uh(t,{timeout:n});return console.log(`Fetched ${r.length} events`),r.length>0?r[0]:null}catch(e){throw console.error("Failed to fetch event by ID:",e),e}}async function Lh(e,t={}){const{timeout:n=1e4}=t;console.log(`Fetching delete events for target: ${e}`);try{const t=[{kinds:[5],"#e":[e]}];console.log("Fetching delete events with filters:",t);const r=await Uh(t,{timeout:n});return console.log(`Fetched ${r.length} delete events`),r}catch(e){throw console.error("Failed to fetch delete events:",e),e}}async function Mh(){await Eh.connect()}async function _h(e,t={}){const{timeout:n=3e4,cacheFirst:r=!0,cacheOnly:i=!1}=t;let o=[];if(r||i)try{if(o=await $h(e),console.log(`Found ${o.length} events in cache`),i||o.length>0)return o}catch(e){console.warn("Failed to query cache",e)}if(!i){const t=await Uh(e,{timeout:n,useCache:!1});return console.log(`Fetched ${t.length} events from relay`),t}return o}async function Oh(){try{const e=await Qh(),t=e.transaction(Sh,"readonly").objectStore(Sh),n=await new Promise((e,n)=>{const r=t.getAll();r.onsuccess=()=>e(r.result),r.onerror=()=>n(r.error)}),r=n.reduce((e,t)=>(e[t.kind]=(e[t.kind]||0)+1,e),{});return console.log("===== IndexedDB Contents ====="),console.log(`Total events: ${n.length}`),console.log("Events by kind:",r),console.log("Kind 0 events:",n.filter(e=>0===e.kind)),console.log("All event IDs:",n.map(e=>({id:e.id.substring(0,8),kind:e.kind,pubkey:e.pubkey.substring(0,8)}))),console.log("=============================="),{total:n.length,byKind:r,events:n}}catch(e){return console.error("Failed to debug IndexedDB:",e),null}}
/*!
* hash-wasm (https://www.npmjs.com/package/hash-wasm)
* (c) Dani Biro
* @license MIT
*/function Hh(e,t,n,r){return new(n||(n=Promise))(function(i,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function a(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}l((r=r.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;class jh{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(t=>{e=t})}dispatch(e){return Hh(this,void 0,void 0,function*(){const t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}})}}var Gh;const Jh="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Kh=null!==(Gh=Jh.Buffer)&&void 0!==Gh?Gh:null,Vh=Jh.TextEncoder?new Jh.TextEncoder:null;function zh(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}function qh(e,t){const n=t.length>>1;for(let r=0;r<n;r++){const n=r<<1;e[r]=zh(t.charCodeAt(n),t.charCodeAt(n+1))}}const Yh="a".charCodeAt(0)-10,Wh="0".charCodeAt(0);function Zh(e,t,n){let r=0;for(let i=0;i<n;i++){let n=t[i]>>>4;e[r++]=n>9?n+Yh:n+Wh,n=15&t[i],e[r++]=n>9?n+Yh:n+Wh}return String.fromCharCode.apply(null,e)}const Xh=null!==Kh?e=>{if("string"==typeof e){const t=Kh.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(Kh.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")}:e=>{if("string"==typeof e)return Vh.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")},ep="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tp=new Uint8Array(256);for(let e=0;e<64;e++)tp[ep.charCodeAt(e)]=e;function np(e,t=!0){const n=e.length,r=n%3,i=[],o=n-r;for(let t=0;t<o;t+=3){const n=(e[t]<<16&16711680)+(e[t+1]<<8&65280)+(255&e[t+2]),r=ep.charAt(n>>18&63)+ep.charAt(n>>12&63)+ep.charAt(n>>6&63)+ep.charAt(63&n);i.push(r)}if(1===r){const r=e[n-1],o=ep.charAt(r>>2),s=ep.charAt(r<<4&63);i.push(`${o}${s}`),t&&i.push("==")}else if(2===r){const r=(e[n-2]<<8)+e[n-1],o=ep.charAt(r>>10),s=ep.charAt(r>>4&63),a=ep.charAt(r<<2&63);i.push(`${o}${s}${a}`),t&&i.push("=")}return i.join("")}function rp(e){const t=function(e){let t=Math.floor(.75*e.length);const n=e.length;return"="===e[n-1]&&(t-=1,"="===e[n-2]&&(t-=1)),t}(e),n=e.length,r=new Uint8Array(t);let i=0;for(let t=0;t<n;t+=4){const n=tp[e.charCodeAt(t)],o=tp[e.charCodeAt(t+1)],s=tp[e.charCodeAt(t+2)],a=tp[e.charCodeAt(t+3)];r[i]=n<<2|o>>4,i+=1,r[i]=(15&o)<<4|s>>2,i+=1,r[i]=(3&s)<<6|63&a,i+=1}return r}const ip=16384,op=new jh,sp=new Map;function ap(e,t){return Hh(this,void 0,void 0,function*(){let n=null,r=null,i=!1;if("undefined"==typeof WebAssembly)throw new Error("WebAssembly is not supported in this environment!");const o=()=>new DataView(n.exports.memory.buffer).getUint32(n.exports.STATE_SIZE,!0),s=op.dispatch(()=>Hh(this,void 0,void 0,function*(){if(!sp.has(e.name)){const t=rp(e.data),n=WebAssembly.compile(t);sp.set(e.name,n)}const t=yield sp.get(e.name);n=yield WebAssembly.instantiate(t,{})})),a=(e=null)=>{i=!0,n.exports.Hash_Init(e)},l=e=>{if(!i)throw new Error("update() called before init()");(e=>{let t=0;for(;t<e.length;){const i=e.subarray(t,t+ip);t+=i.length,r.set(i),n.exports.Hash_Update(i.length)}})(Xh(e))},c=new Uint8Array(2*t),u=(e,o=null)=>{if(!i)throw new Error("digest() called before init()");return i=!1,n.exports.Hash_Final(o),"binary"===e?r.slice(0,t):Zh(c,r,t)},d=e=>"string"==typeof e?e.length<4096:e.byteLength<ip;let f=d;switch(e.name){case"argon2":case"scrypt":f=()=>!0;break;case"blake2b":case"blake2s":f=(e,t)=>t<=512&&d(e);break;case"blake3":f=(e,t)=>0===t&&d(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":f=()=>!1}return yield(()=>Hh(this,void 0,void 0,function*(){n||(yield s);const e=n.exports.Hash_GetBuffer(),t=n.exports.memory.buffer;r=new Uint8Array(t,e,ip)}))(),{getMemory:()=>r,writeMemory:(e,t=0)=>{r.set(e,t)},getExports:()=>n.exports,setMemorySize:e=>{n.exports.Hash_SetMemorySize(e);const t=n.exports.Hash_GetBuffer(),i=n.exports.memory.buffer;r=new Uint8Array(i,t,e)},init:a,update:l,digest:u,save:()=>{if(!i)throw new Error("save() can only be called after init() and before digest()");const t=n.exports.Hash_GetState(),r=o(),s=n.exports.memory.buffer,a=new Uint8Array(s,t,r),l=new Uint8Array(4+r);return qh(l,e.hash),l.set(a,4),l},load:t=>{if(!(t instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");const r=n.exports.Hash_GetState(),s=o(),a=4+s,l=n.exports.memory.buffer;if(t.length!==a)throw new Error(`Bad state length (expected ${a} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let n=0;n<t.length;n++){const r=n<<1;if(t[n]!==zh(e.charCodeAt(r),e.charCodeAt(r+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw new Error("This state was written by an incompatible hash implementation");const c=t.subarray(4);new Uint8Array(l,r,s).set(c),i=!0},calculate:(e,i=null,o=null)=>{if(!f(e,i))return a(i),l(e),u("hex",o);const s=Xh(e);return r.set(s),n.exports.Hash_Calculate(s.length,i,o),Zh(c,r,t)},hashLength:t}})}new jh;var lp={name:"argon2",data:"AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkDyAGFNwPYCUEAIAIpA9ABIAEpA9ABhTcD4AlBACACKQPYASABKQPYAYU3A+gJQQAgAikD4AEgASkD4AGFNwPwCUEAIAIpA+gBIAEpA+gBhTcD+AlBACACKQPwASABKQPwAYU3A4AKQQAgAikD+AEgASkD+AGFNwOICkEAIAIpA4ACIAEpA4AChTcDkApBACACKQOIAiABKQOIAoU3A5gKQQAgAikDkAIgASkDkAKFNwOgCkEAIAIpA5gCIAEpA5gChTcDqApBACACKQOgAiABKQOgAoU3A7AKQQAgAikDqAIgASkDqAKFNwO4CkEAIAIpA7ACIAEpA7AChTcDwApBACACKQO4AiABKQO4AoU3A8gKQQAgAikDwAIgASkDwAKFNwPQCkEAIAIpA8gCIAEpA8gChTcD2ApBACACKQPQAiABKQPQAoU3A+AKQQAgAikD2AIgASkD2AKFNwPoCkEAIAIpA+ACIAEpA+AChTcD8ApBACACKQPoAiABKQPoAoU3A/gKQQAgAikD8AIgASkD8AKFNwOAC0EAIAIpA/gCIAEpA/gChTcDiAtBACACKQOAAyABKQOAA4U3A5ALQQAgAikDiAMgASkDiAOFNwOYC0EAIAIpA5ADIAEpA5ADhTcDoAtBACACKQOYAyABKQOYA4U3A6gLQQAgAikDoAMgASkDoAOFNwOwC0EAIAIpA6gDIAEpA6gDhTcDuAtBACACKQOwAyABKQOwA4U3A8ALQQAgAikDuAMgASkDuAOFNwPIC0EAIAIpA8ADIAEpA8ADhTcD0AtBACACKQPIAyABKQPIA4U3A9gLQQAgAikD0AMgASkD0AOFNwPgC0EAIAIpA9gDIAEpA9gDhTcD6AtBACACKQPgAyABKQPgA4U3A/ALQQAgAikD6AMgASkD6AOFNwP4C0EAIAIpA/ADIAEpA/ADhTcDgAxBACACKQP4AyABKQP4A4U3A4gMQQAgAikDgAQgASkDgASFNwOQDEEAIAIpA4gEIAEpA4gEhTcDmAxBACACKQOQBCABKQOQBIU3A6AMQQAgAikDmAQgASkDmASFNwOoDEEAIAIpA6AEIAEpA6AEhTcDsAxBACACKQOoBCABKQOoBIU3A7gMQQAgAikDsAQgASkDsASFNwPADEEAIAIpA7gEIAEpA7gEhTcDyAxBACACKQPABCABKQPABIU3A9AMQQAgAikDyAQgASkDyASFNwPYDEEAIAIpA9AEIAEpA9AEhTcD4AxBACACKQPYBCABKQPYBIU3A+gMQQAgAikD4AQgASkD4ASFNwPwDEEAIAIpA+gEIAEpA+gEhTcD+AxBACACKQPwBCABKQPwBIU3A4ANQQAgAikD+AQgASkD+ASFNwOIDUEAIAIpA4AFIAEpA4AFhTcDkA1BACACKQOIBSABKQOIBYU3A5gNQQAgAikDkAUgASkDkAWFNwOgDUEAIAIpA5gFIAEpA5gFhTcDqA1BACACKQOgBSABKQOgBYU3A7ANQQAgAikDqAUgASkDqAWFNwO4DUEAIAIpA7AFIAEpA7AFhTcDwA1BACACKQO4BSABKQO4BYU3A8gNQQAgAikDwAUgASkDwAWFNwPQDUEAIAIpA8gFIAEpA8gFhTcD2A1BACACKQPQBSABKQPQBYU3A+ANQQAgAikD2AUgASkD2AWFNwPoDUEAIAIpA+AFIAEpA+AFhTcD8A1BACACKQPoBSABKQPoBYU3A/gNQQAgAikD8AUgASkD8AWFNwOADkEAIAIpA/gFIAEpA/gFhTcDiA5BACACKQOABiABKQOABoU3A5AOQQAgAikDiAYgASkDiAaFNwOYDkEAIAIpA5AGIAEpA5AGhTcDoA5BACACKQOYBiABKQOYBoU3A6gOQQAgAikDoAYgASkDoAaFNwOwDkEAIAIpA6gGIAEpA6gGhTcDuA5BACACKQOwBiABKQOwBoU3A8AOQQAgAikDuAYgASkDuAaFNwPIDkEAIAIpA8AGIAEpA8AGhTcD0A5BACACKQPIBiABKQPIBoU3A9gOQQAgAikD0AYgASkD0AaFNwPgDkEAIAIpA9gGIAEpA9gGhTcD6A5BACACKQPgBiABKQPgBoU3A/AOQQAgAikD6AYgASkD6AaFNwP4DkEAIAIpA/AGIAEpA/AGhTcDgA9BACACKQP4BiABKQP4BoU3A4gPQQAgAikDgAcgASkDgAeFNwOQD0EAIAIpA4gHIAEpA4gHhTcDmA9BACACKQOQByABKQOQB4U3A6APQQAgAikDmAcgASkDmAeFNwOoD0EAIAIpA6AHIAEpA6AHhTcDsA9BACACKQOoByABKQOoB4U3A7gPQQAgAikDsAcgASkDsAeFNwPAD0EAIAIpA7gHIAEpA7gHhTcDyA9BACACKQPAByABKQPAB4U3A9APQQAgAikDyAcgASkDyAeFNwPYD0EAIAIpA9AHIAEpA9AHhTcD4A9BACACKQPYByABKQPYB4U3A+gPQQAgAikD4AcgASkD4AeFNwPwD0EAIAIpA+gHIAEpA+gHhTcD+A9BACACKQPwByABKQPwB4U3A4AQQQAgAikD+AcgASkD+AeFNwOIEEGQCEGYCEGgCEGoCEGwCEG4CEHACEHICEHQCEHYCEHgCEHoCEHwCEH4CEGACUGICRACQZAJQZgJQaAJQagJQbAJQbgJQcAJQcgJQdAJQdgJQeAJQegJQfAJQfgJQYAKQYgKEAJBkApBmApBoApBqApBsApBuApBwApByApB0ApB2ApB4ApB6ApB8ApB+ApBgAtBiAsQAkGQC0GYC0GgC0GoC0GwC0G4C0HAC0HIC0HQC0HYC0HgC0HoC0HwC0H4C0GADEGIDBACQZAMQZgMQaAMQagMQbAMQbgMQcAMQcgMQdAMQdgMQeAMQegMQfAMQfgMQYANQYgNEAJBkA1BmA1BoA1BqA1BsA1BuA1BwA1ByA1B0A1B2A1B4A1B6A1B8A1B+A1BgA5BiA4QAkGQDkGYDkGgDkGoDkGwDkG4DkHADkHIDkHQDkHYDkHgDkHoDkHwDkH4DkGAD0GIDxACQZAPQZgPQaAPQagPQbAPQbgPQcAPQcgPQdAPQdgPQeAPQegPQfAPQfgPQYAQQYgQEAJBkAhBmAhBkAlBmAlBkApBmApBkAtBmAtBkAxBmAxBkA1BmA1BkA5BmA5BkA9BmA8QAkGgCEGoCEGgCUGoCUGgCkGoCkGgC0GoC0GgDEGoDEGgDUGoDUGgDkGoDkGgD0GoDxACQbAIQbgIQbAJQbgJQbAKQbgKQbALQbgLQbAMQbgMQbANQbgNQbAOQbgOQbAPQbgPEAJBwAhByAhBwAlByAlBwApByApBwAtByAtBwAxByAxBwA1ByA1BwA5ByA5BwA9ByA8QAkHQCEHYCEHQCUHYCUHQCkHYCkHQC0HYC0HQDEHYDEHQDUHYDUHQDkHYDkHQD0HYDxACQeAIQegIQeAJQegJQeAKQegKQeALQegLQeAMQegMQeANQegNQeAOQegOQeAPQegPEAJB8AhB+AhB8AlB+AlB8ApB+ApB8AtB+AtB8AxB+AxB8A1B+A1B8A5B+A5B8A9B+A8QAkGACUGICUGACkGICkGAC0GIC0GADEGIDEGADUGIDUGADkGIDkGAD0GID0GAEEGIEBACAkACQCADRQ0AA0AgACAEaiIDIAIgBGoiBSkDACABIARqIgYpAwCFIARBkAhqKQMAhSADKQMAhTcDACADQQhqIgMgBUEIaikDACAGQQhqKQMAhSAEQZgIaikDAIUgAykDAIU3AwAgBEEQaiIEQYAIRw0ADAILC0EAIQQDQCAAIARqIgMgAiAEaiIFKQMAIAEgBGoiBikDAIUgBEGQCGopAwCFNwMAIANBCGogBUEIaikDACAGQQhqKQMAhSAEQZgIaikDAIU3AwAgBEEQaiIEQYAIRw0ACwsL5QcMBX8BfgR/An4BfwF+AX8Bfgd/AX4DfwF+AkBBACgCgAgiAiABQQp0aiIDKAIIIAFHDQAgAygCDCEEIAMoAgAhBUEAIAMoAhQiBq03A7gQQQAgBK0iBzcDsBBBACAFIAEgBUECdG4iCGwiCUECdK03A6gQAkACQAJAAkAgBEUNAEF/IQogBUUNASAIQQNsIQsgCEECdCIErSEMIAWtIQ0gBkF/akECSSEOQgAhDwNAQQAgDzcDkBAgD6chEEIAIRFBACEBA0BBACARNwOgECAPIBGEUCIDIA5xIRIgBkEBRiAPUCITIAZBAkYgEUICVHFxciEUQX8gAUEBakEDcSAIbEF/aiATGyEVIAEgEHIhFiABIAhsIRcgA0EBdCEYQgAhGQNAQQBCADcDwBBBACAZNwOYECAYIQECQCASRQ0AQQBCATcDwBBBkBhBkBBBkCBBABADQZAYQZAYQZAgQQAQA0ECIQELAkAgASAITw0AIAQgGaciGmwgF2ogAWohAwNAIANBACAEIAEbQQAgEVAiGxtqQX9qIRwCQAJAIBQNAEEAKAKACCICIBxBCnQiHGohCgwBCwJAIAFB/wBxIgINAEEAQQApA8AQQgF8NwPAEEGQGEGQEEGQIEEAEANBkBhBkBhBkCBBABADCyAcQQp0IRwgAkEDdEGQGGohCkEAKAKACCECCyACIANBCnRqIAIgHGogAiAKKQMAIh1CIIinIAVwIBogFhsiHCAEbCABIAFBACAZIBytUSIcGyIKIBsbIBdqIAogC2ogExsgAUUgHHJrIhsgFWqtIB1C/////w+DIh0gHX5CIIggG61+QiCIfSAMgqdqQQp0akEBEAMgA0EBaiEDIAggAUEBaiIBRw0ACwsgGUIBfCIZIA1SDQALIBFCAXwiEachASARQgRSDQALIA9CAXwiDyAHUg0AC0EAKAKACCECCyAJQQx0QYB4aiEXIAVBf2oiCkUNAgwBC0EAQgM3A6AQQQAgBEF/aq03A5AQQYB4IRcLIAIgF2ohGyAIQQx0IQhBACEcA0AgCCAcQQFqIhxsQYB4aiEEQQAhAQNAIBsgAWoiAyADKQMAIAIgBCABamopAwCFNwMAIANBCGoiAyADKQMAIAIgBCABQQhyamopAwCFNwMAIAFBCGohAyABQRBqIQEgA0H4B0kNAAsgHCAKRw0ACwsgAiAXaiEbQXghAQNAIAIgAWoiA0EIaiAbIAFqIgRBCGopAwA3AwAgA0EQaiAEQRBqKQMANwMAIANBGGogBEEYaikDADcDACADQSBqIARBIGopAwA3AwAgAUEgaiIBQfgHSQ0ACwsL",hash:"e4cdc523"},cp={name:"blake2b",data:"AGFzbQEAAAABEQRgAAF/YAJ/fwBgAX8AYAAAAwoJAAECAwECAgABBQQBAQICBg4CfwFBsIsFC38AQYAICwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACkhhc2hfRmluYWwAAwlIYXNoX0luaXQABQtIYXNoX1VwZGF0ZQAGDUhhc2hfR2V0U3RhdGUABw5IYXNoX0NhbGN1bGF0ZQAIClNUQVRFX1NJWkUDAQrTOAkFAEGACQvrAgIFfwF+AkAgAUEBSA0AAkACQAJAIAFBgAFBACgC4IoBIgJrIgNKDQAgASEEDAELQQBBADYC4IoBAkAgAkH/AEoNACACQeCJAWohBSAAIQRBACEGA0AgBSAELQAAOgAAIARBAWohBCAFQQFqIQUgAyAGQQFqIgZB/wFxSg0ACwtBAEEAKQPAiQEiB0KAAXw3A8CJAUEAQQApA8iJASAHQv9+Vq18NwPIiQFB4IkBEAIgACADaiEAAkAgASADayIEQYEBSA0AIAIgAWohBQNAQQBBACkDwIkBIgdCgAF8NwPAiQFBAEEAKQPIiQEgB0L/flatfDcDyIkBIAAQAiAAQYABaiEAIAVBgH9qIgVBgAJLDQALIAVBgH9qIQQMAQsgBEEATA0BC0EAIQUDQCAFQQAoAuCKAWpB4IkBaiAAIAVqLQAAOgAAIAQgBUEBaiIFQf8BcUoNAAsLQQBBACgC4IoBIARqNgLgigELC78uASR+QQBBACkD0IkBQQApA7CJASIBQQApA5CJAXwgACkDICICfCIDhULr+obav7X2wR+FQiCJIgRCq/DT9K/uvLc8fCIFIAGFQiiJIgYgA3wgACkDKCIBfCIHIASFQjCJIgggBXwiCSAGhUIBiSIKQQApA8iJAUEAKQOoiQEiBEEAKQOIiQF8IAApAxAiA3wiBYVCn9j52cKR2oKbf4VCIIkiC0K7zqqm2NDrs7t/fCIMIASFQiiJIg0gBXwgACkDGCIEfCIOfCAAKQNQIgV8Ig9BACkDwIkBQQApA6CJASIQQQApA4CJASIRfCAAKQMAIgZ8IhKFQtGFmu/6z5SH0QCFQiCJIhNCiJLznf/M+YTqAHwiFCAQhUIoiSIVIBJ8IAApAwgiEHwiFiAThUIwiSIXhUIgiSIYQQApA9iJAUEAKQO4iQEiE0EAKQOYiQF8IAApAzAiEnwiGYVC+cL4m5Gjs/DbAIVCIIkiGkLx7fT4paf9p6V/fCIbIBOFQiiJIhwgGXwgACkDOCITfCIZIBqFQjCJIhogG3wiG3wiHSAKhUIoiSIeIA98IAApA1giCnwiDyAYhUIwiSIYIB18Ih0gDiALhUIwiSIOIAx8Ih8gDYVCAYkiDCAWfCAAKQNAIgt8Ig0gGoVCIIkiFiAJfCIaIAyFQiiJIiAgDXwgACkDSCIJfCIhIBaFQjCJIhYgGyAchUIBiSIMIAd8IAApA2AiB3wiDSAOhUIgiSIOIBcgFHwiFHwiFyAMhUIoiSIbIA18IAApA2giDHwiHCAOhUIwiSIOIBd8IhcgG4VCAYkiGyAZIBQgFYVCAYkiFHwgACkDcCINfCIVIAiFQiCJIhkgH3wiHyAUhUIoiSIUIBV8IAApA3giCHwiFXwgDHwiIoVCIIkiI3wiJCAbhUIoiSIbICJ8IBJ8IiIgFyAYIBUgGYVCMIkiFSAffCIZIBSFQgGJIhQgIXwgDXwiH4VCIIkiGHwiFyAUhUIoiSIUIB98IAV8Ih8gGIVCMIkiGCAXfCIXIBSFQgGJIhR8IAF8IiEgFiAafCIWIBUgHSAehUIBiSIaIBx8IAl8IhyFQiCJIhV8Ih0gGoVCKIkiGiAcfCAIfCIcIBWFQjCJIhWFQiCJIh4gGSAOIBYgIIVCAYkiFiAPfCACfCIPhUIgiSIOfCIZIBaFQiiJIhYgD3wgC3wiDyAOhUIwiSIOIBl8Ihl8IiAgFIVCKIkiFCAhfCAEfCIhIB6FQjCJIh4gIHwiICAiICOFQjCJIiIgJHwiIyAbhUIBiSIbIBx8IAp8IhwgDoVCIIkiDiAXfCIXIBuFQiiJIhsgHHwgE3wiHCAOhUIwiSIOIBkgFoVCAYkiFiAffCAQfCIZICKFQiCJIh8gFSAdfCIVfCIdIBaFQiiJIhYgGXwgB3wiGSAfhUIwiSIfIB18Ih0gFoVCAYkiFiAVIBqFQgGJIhUgD3wgBnwiDyAYhUIgiSIYICN8IhogFYVCKIkiFSAPfCADfCIPfCAHfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgBnwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAOIBd8Ig4gDyAYhUIwiSIPICAgFIVCAYkiFCAZfCAKfCIXhUIgiSIYfCIZIBSFQiiJIhQgF3wgC3wiF3wgBXwiICAPIBp8Ig8gHyAOIBuFQgGJIg4gIXwgCHwiGoVCIIkiG3wiHyAOhUIoiSIOIBp8IAx8IhogG4VCMIkiG4VCIIkiISAdIB4gDyAVhUIBiSIPIBx8IAF8IhWFQiCJIhx8Ih0gD4VCKIkiDyAVfCADfCIVIByFQjCJIhwgHXwiHXwiHiAWhUIoiSIWICB8IA18IiAgIYVCMIkiISAefCIeIBogFyAYhUIwiSIXIBl8IhggFIVCAYkiFHwgCXwiGSAchUIgiSIaICR8IhwgFIVCKIkiFCAZfCACfCIZIBqFQjCJIhogHSAPhUIBiSIPICJ8IAR8Ih0gF4VCIIkiFyAbIB98Iht8Ih8gD4VCKIkiDyAdfCASfCIdIBeFQjCJIhcgH3wiHyAPhUIBiSIPIBsgDoVCAYkiDiAVfCATfCIVICOFQiCJIhsgGHwiGCAOhUIoiSIOIBV8IBB8IhV8IAx8IiKFQiCJIiN8IiQgD4VCKIkiDyAifCAHfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBogHHwiGiAVIBuFQjCJIhUgHiAWhUIBiSIWIB18IAR8IhuFQiCJIhx8Ih0gFoVCKIkiFiAbfCAQfCIbfCABfCIeIBUgGHwiFSAXIBogFIVCAYkiFCAgfCATfCIYhUIgiSIXfCIaIBSFQiiJIhQgGHwgCXwiGCAXhUIwiSIXhUIgiSIgIB8gISAVIA6FQgGJIg4gGXwgCnwiFYVCIIkiGXwiHyAOhUIoiSIOIBV8IA18IhUgGYVCMIkiGSAffCIffCIhIA+FQiiJIg8gHnwgBXwiHiAghUIwiSIgICF8IiEgGyAchUIwiSIbIB18IhwgFoVCAYkiFiAYfCADfCIYIBmFQiCJIhkgJHwiHSAWhUIoiSIWIBh8IBJ8IhggGYVCMIkiGSAfIA6FQgGJIg4gInwgAnwiHyAbhUIgiSIbIBcgGnwiF3wiGiAOhUIoiSIOIB98IAZ8Ih8gG4VCMIkiGyAafCIaIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAh8IhUgI4VCIIkiFyAcfCIcIBSFQiiJIhQgFXwgC3wiFXwgBXwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IAh8IiIgGiAgIBUgF4VCMIkiFSAcfCIXIBSFQgGJIhQgGHwgCXwiGIVCIIkiHHwiGiAUhUIoiSIUIBh8IAZ8IhggHIVCMIkiHCAafCIaIBSFQgGJIhR8IAR8IiAgGSAdfCIZIBUgISAPhUIBiSIPIB98IAN8Ih2FQiCJIhV8Ih8gD4VCKIkiDyAdfCACfCIdIBWFQjCJIhWFQiCJIiEgFyAbIBkgFoVCAYkiFiAefCABfCIZhUIgiSIbfCIXIBaFQiiJIhYgGXwgE3wiGSAbhUIwiSIbIBd8Ihd8Ih4gFIVCKIkiFCAgfCAMfCIgICGFQjCJIiEgHnwiHiAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIB18IBJ8Ih0gG4VCIIkiGyAafCIaIA6FQiiJIg4gHXwgC3wiHSAbhUIwiSIbIBcgFoVCAYkiFiAYfCANfCIXICKFQiCJIhggFSAffCIVfCIfIBaFQiiJIhYgF3wgEHwiFyAYhUIwiSIYIB98Ih8gFoVCAYkiFiAVIA+FQgGJIg8gGXwgCnwiFSAchUIgiSIZICN8IhwgD4VCKIkiDyAVfCAHfCIVfCASfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgBXwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAbIBp8IhogFSAZhUIwiSIVIB4gFIVCAYkiFCAXfCADfCIXhUIgiSIZfCIbIBSFQiiJIhQgF3wgB3wiF3wgAnwiHiAVIBx8IhUgGCAaIA6FQgGJIg4gIHwgC3wiGoVCIIkiGHwiHCAOhUIoiSIOIBp8IAR8IhogGIVCMIkiGIVCIIkiICAfICEgFSAPhUIBiSIPIB18IAZ8IhWFQiCJIh18Ih8gD4VCKIkiDyAVfCAKfCIVIB2FQjCJIh0gH3wiH3wiISAWhUIoiSIWIB58IAx8Ih4gIIVCMIkiICAhfCIhIBogFyAZhUIwiSIXIBt8IhkgFIVCAYkiFHwgEHwiGiAdhUIgiSIbICR8Ih0gFIVCKIkiFCAafCAJfCIaIBuFQjCJIhsgHyAPhUIBiSIPICJ8IBN8Ih8gF4VCIIkiFyAYIBx8Ihh8IhwgD4VCKIkiDyAffCABfCIfIBeFQjCJIhcgHHwiHCAPhUIBiSIPIBggDoVCAYkiDiAVfCAIfCIVICOFQiCJIhggGXwiGSAOhUIoiSIOIBV8IA18IhV8IA18IiKFQiCJIiN8IiQgD4VCKIkiDyAifCAMfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBsgHXwiGyAVIBiFQjCJIhUgISAWhUIBiSIWIB98IBB8IhiFQiCJIh18Ih8gFoVCKIkiFiAYfCAIfCIYfCASfCIhIBUgGXwiFSAXIBsgFIVCAYkiFCAefCAHfCIZhUIgiSIXfCIbIBSFQiiJIhQgGXwgAXwiGSAXhUIwiSIXhUIgiSIeIBwgICAVIA6FQgGJIg4gGnwgAnwiFYVCIIkiGnwiHCAOhUIoiSIOIBV8IAV8IhUgGoVCMIkiGiAcfCIcfCIgIA+FQiiJIg8gIXwgBHwiISAehUIwiSIeICB8IiAgGCAdhUIwiSIYIB98Ih0gFoVCAYkiFiAZfCAGfCIZIBqFQiCJIhogJHwiHyAWhUIoiSIWIBl8IBN8IhkgGoVCMIkiGiAcIA6FQgGJIg4gInwgCXwiHCAYhUIgiSIYIBcgG3wiF3wiGyAOhUIoiSIOIBx8IAN8IhwgGIVCMIkiGCAbfCIbIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAt8IhUgI4VCIIkiFyAdfCIdIBSFQiiJIhQgFXwgCnwiFXwgBHwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IAl8IiIgGyAeIBUgF4VCMIkiFSAdfCIXIBSFQgGJIhQgGXwgDHwiGYVCIIkiHXwiGyAUhUIoiSIUIBl8IAp8IhkgHYVCMIkiHSAbfCIbIBSFQgGJIhR8IAN8Ih4gGiAffCIaIBUgICAPhUIBiSIPIBx8IAd8IhyFQiCJIhV8Ih8gD4VCKIkiDyAcfCAQfCIcIBWFQjCJIhWFQiCJIiAgFyAYIBogFoVCAYkiFiAhfCATfCIahUIgiSIYfCIXIBaFQiiJIhYgGnwgDXwiGiAYhUIwiSIYIBd8Ihd8IiEgFIVCKIkiFCAefCAFfCIeICCFQjCJIiAgIXwiISAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIBx8IAt8IhwgGIVCIIkiGCAbfCIbIA6FQiiJIg4gHHwgEnwiHCAYhUIwiSIYIBcgFoVCAYkiFiAZfCABfCIXICKFQiCJIhkgFSAffCIVfCIfIBaFQiiJIhYgF3wgBnwiFyAZhUIwiSIZIB98Ih8gFoVCAYkiFiAVIA+FQgGJIg8gGnwgCHwiFSAdhUIgiSIaICN8Ih0gD4VCKIkiDyAVfCACfCIVfCANfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgCXwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAYIBt8IhggFSAahUIwiSIVICEgFIVCAYkiFCAXfCASfCIXhUIgiSIafCIbIBSFQiiJIhQgF3wgCHwiF3wgB3wiISAVIB18IhUgGSAYIA6FQgGJIg4gHnwgBnwiGIVCIIkiGXwiHSAOhUIoiSIOIBh8IAt8IhggGYVCMIkiGYVCIIkiHiAfICAgFSAPhUIBiSIPIBx8IAp8IhWFQiCJIhx8Ih8gD4VCKIkiDyAVfCAEfCIVIByFQjCJIhwgH3wiH3wiICAWhUIoiSIWICF8IAN8IiEgHoVCMIkiHiAgfCIgIBggFyAahUIwiSIXIBt8IhogFIVCAYkiFHwgBXwiGCAchUIgiSIbICR8IhwgFIVCKIkiFCAYfCABfCIYIBuFQjCJIhsgHyAPhUIBiSIPICJ8IAx8Ih8gF4VCIIkiFyAZIB18Ihl8Ih0gD4VCKIkiDyAffCATfCIfIBeFQjCJIhcgHXwiHSAPhUIBiSIPIBkgDoVCAYkiDiAVfCAQfCIVICOFQiCJIhkgGnwiGiAOhUIoiSIOIBV8IAJ8IhV8IBN8IiKFQiCJIiN8IiQgD4VCKIkiDyAifCASfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBsgHHwiGyAVIBmFQjCJIhUgICAWhUIBiSIWIB98IAt8IhmFQiCJIhx8Ih8gFoVCKIkiFiAZfCACfCIZfCAJfCIgIBUgGnwiFSAXIBsgFIVCAYkiFCAhfCAFfCIahUIgiSIXfCIbIBSFQiiJIhQgGnwgA3wiGiAXhUIwiSIXhUIgiSIhIB0gHiAVIA6FQgGJIg4gGHwgEHwiFYVCIIkiGHwiHSAOhUIoiSIOIBV8IAF8IhUgGIVCMIkiGCAdfCIdfCIeIA+FQiiJIg8gIHwgDXwiICAhhUIwiSIhIB58Ih4gGSAchUIwiSIZIB98IhwgFoVCAYkiFiAafCAIfCIaIBiFQiCJIhggJHwiHyAWhUIoiSIWIBp8IAp8IhogGIVCMIkiGCAdIA6FQgGJIg4gInwgBHwiHSAZhUIgiSIZIBcgG3wiF3wiGyAOhUIoiSIOIB18IAd8Ih0gGYVCMIkiGSAbfCIbIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAx8IhUgI4VCIIkiFyAcfCIcIBSFQiiJIhQgFXwgBnwiFXwgEnwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IBN8IiIgGyAhIBUgF4VCMIkiFSAcfCIXIBSFQgGJIhQgGnwgBnwiGoVCIIkiHHwiGyAUhUIoiSIUIBp8IBB8IhogHIVCMIkiHCAbfCIbIBSFQgGJIhR8IA18IiEgGCAffCIYIBUgHiAPhUIBiSIPIB18IAJ8Ih2FQiCJIhV8Ih4gD4VCKIkiDyAdfCABfCIdIBWFQjCJIhWFQiCJIh8gFyAZIBggFoVCAYkiFiAgfCADfCIYhUIgiSIZfCIXIBaFQiiJIhYgGHwgBHwiGCAZhUIwiSIZIBd8Ihd8IiAgFIVCKIkiFCAhfCAIfCIhIB+FQjCJIh8gIHwiICAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIB18IAd8Ih0gGYVCIIkiGSAbfCIbIA6FQiiJIg4gHXwgDHwiHSAZhUIwiSIZIBcgFoVCAYkiFiAafCALfCIXICKFQiCJIhogFSAefCIVfCIeIBaFQiiJIhYgF3wgCXwiFyAahUIwiSIaIB58Ih4gFoVCAYkiFiAVIA+FQgGJIg8gGHwgBXwiFSAchUIgiSIYICN8IhwgD4VCKIkiDyAVfCAKfCIVfCACfCIChUIgiSIifCIjIBaFQiiJIhYgAnwgC3wiAiAihUIwiSILICN8IiIgFoVCAYkiFiAZIBt8IhkgFSAYhUIwiSIVICAgFIVCAYkiFCAXfCANfCINhUIgiSIXfCIYIBSFQiiJIhQgDXwgBXwiBXwgEHwiECAVIBx8Ig0gGiAZIA6FQgGJIg4gIXwgDHwiDIVCIIkiFXwiGSAOhUIoiSIOIAx8IBJ8IhIgFYVCMIkiDIVCIIkiFSAeIB8gDSAPhUIBiSINIB18IAl8IgmFQiCJIg98IhogDYVCKIkiDSAJfCAIfCIJIA+FQjCJIgggGnwiD3wiGiAWhUIoiSIWIBB8IAd8IhAgEYUgDCAZfCIHIA6FQgGJIgwgCXwgCnwiCiALhUIgiSILIAUgF4VCMIkiBSAYfCIJfCIOIAyFQiiJIgwgCnwgE3wiEyALhUIwiSIKIA58IguFNwOAiQFBACADIAYgDyANhUIBiSINIAJ8fCICIAWFQiCJIgUgB3wiBiANhUIoiSIHIAJ8fCICQQApA4iJAYUgBCABIBIgCSAUhUIBiSIDfHwiASAIhUIgiSISICJ8IgkgA4VCKIkiAyABfHwiASAShUIwiSIEIAl8IhKFNwOIiQFBACATQQApA5CJAYUgECAVhUIwiSIQIBp8IhOFNwOQiQFBACABQQApA5iJAYUgAiAFhUIwiSICIAZ8IgGFNwOYiQFBACASIAOFQgGJQQApA6CJAYUgAoU3A6CJAUEAIBMgFoVCAYlBACkDqIkBhSAKhTcDqIkBQQAgASAHhUIBiUEAKQOwiQGFIASFNwOwiQFBACALIAyFQgGJQQApA7iJAYUgEIU3A7iJAQvdAgUBfwF+AX8BfgJ/IwBBwABrIgAkAAJAQQApA9CJAUIAUg0AQQBBACkDwIkBIgFBACgC4IoBIgKsfCIDNwPAiQFBAEEAKQPIiQEgAyABVK18NwPIiQECQEEALQDoigFFDQBBAEJ/NwPYiQELQQBCfzcD0IkBAkAgAkH/AEoNAEEAIQQDQCACIARqQeCJAWpBADoAACAEQQFqIgRBgAFBACgC4IoBIgJrSA0ACwtB4IkBEAIgAEEAKQOAiQE3AwAgAEEAKQOIiQE3AwggAEEAKQOQiQE3AxAgAEEAKQOYiQE3AxggAEEAKQOgiQE3AyAgAEEAKQOoiQE3AyggAEEAKQOwiQE3AzAgAEEAKQO4iQE3AzhBACgC5IoBIgVBAUgNAEEAIQRBACECA0AgBEGACWogACAEai0AADoAACAEQQFqIQQgBSACQQFqIgJB/wFxSg0ACwsgAEHAAGokAAv9AwMBfwF+AX8jAEGAAWsiAiQAQQBBgQI7AfKKAUEAIAE6APGKAUEAIAA6APCKAUGQfiEAA0AgAEGAiwFqQgA3AAAgAEH4igFqQgA3AAAgAEHwigFqQgA3AAAgAEEYaiIADQALQQAhAEEAQQApA/CKASIDQoiS853/zPmE6gCFNwOAiQFBAEEAKQP4igFCu86qptjQ67O7f4U3A4iJAUEAQQApA4CLAUKr8NP0r+68tzyFNwOQiQFBAEEAKQOIiwFC8e30+KWn/aelf4U3A5iJAUEAQQApA5CLAULRhZrv+s+Uh9EAhTcDoIkBQQBBACkDmIsBQp/Y+dnCkdqCm3+FNwOoiQFBAEEAKQOgiwFC6/qG2r+19sEfhTcDsIkBQQBBACkDqIsBQvnC+JuRo7Pw2wCFNwO4iQFBACADp0H/AXE2AuSKAQJAIAFBAUgNACACQgA3A3ggAkIANwNwIAJCADcDaCACQgA3A2AgAkIANwNYIAJCADcDUCACQgA3A0ggAkIANwNAIAJCADcDOCACQgA3AzAgAkIANwMoIAJCADcDICACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwBBACEEA0AgAiAAaiAAQYAJai0AADoAACAAQQFqIQAgBEEBaiIEQf8BcSABSA0ACyACQYABEAELIAJBgAFqJAALEgAgAEEDdkH/P3EgAEEQdhAECwkAQYAJIAAQAQsGAEGAiQELGwAgAUEDdkH/P3EgAUEQdhAEQYAJIAAQARADCwsLAQBBgAgLBPAAAAA=",hash:"c6f286e6"};function up(e){return!Number.isInteger(e)||e<8||e>512||e%8!=0?new Error("Invalid variant! Valid values: 8, 16, ..., 512"):null}function dp(e=512,t=null){if(up(e))return Promise.reject(up(e));let n=null,r=e;if(null!==t){if(n=Xh(t),n.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));i=e,o=n.length,r=i|o<<16}var i,o;const s=e/8;return ap(cp,s).then(e=>{r>512&&e.writeMemory(n),e.init(r);const t={init:r>512?()=>(e.writeMemory(n),e.init(r),t):()=>(e.init(r),t),update:n=>(e.update(n),t),digest:t=>e.digest(t),save:()=>e.save(),load:n=>(e.load(n),t),blockSize:128,digestSize:s};return t})}new jh;const fp=new DataView(new ArrayBuffer(4));function hp(e){return fp.setInt32(0,e,!0),new Uint8Array(fp.buffer)}function pp(e,t,n){return Hh(this,void 0,void 0,function*(){if(n<=64){const e=yield dp(8*n);return e.update(hp(n)),e.update(t),e.digest("binary")}const r=Math.ceil(n/32)-2,i=new Uint8Array(n);e.init(),e.update(hp(n)),e.update(t);let o=e.digest("binary");i.set(o.subarray(0,32),0);for(let t=1;t<r;t++)e.init(),e.update(o),o=e.digest("binary"),i.set(o.subarray(0,32),32*t);const s=n-32*r;let a;return 64===s?(a=e,a.init()):a=yield dp(8*s),a.update(o),o=a.digest("binary"),i.set(o.subarray(0,s),32*r),i})}function gp(e){return Hh(this,void 0,void 0,function*(){var t;const{parallelism:n,iterations:r,hashLength:i}=e,o=Xh(e.password),s=Xh(e.salt),a=function(e){switch(e){case"d":return 0;case"i":return 1;default:return 2}}(e.hashType),{memorySize:l}=e,c=Xh(null!==(t=e.secret)&&void 0!==t?t:""),[u,d]=yield Promise.all([ap(lp,1024),dp(512)]);u.setMemorySize(1024*l+1024);const f=new Uint8Array(24),h=new DataView(f.buffer);h.setInt32(0,n,!0),h.setInt32(4,i,!0),h.setInt32(8,l,!0),h.setInt32(12,r,!0),h.setInt32(16,19,!0),h.setInt32(20,a,!0),u.writeMemory(f,1024*l),d.init(),d.update(f),d.update(hp(o.length)),d.update(o),d.update(hp(s.length)),d.update(s),d.update(hp(c.length)),d.update(c),d.update(hp(0));const p=4*Math.floor(l/(4*n)),g=new Uint8Array(72),m=d.digest("binary");g.set(m);for(let e=0;e<n;e++){g.set(hp(0),64),g.set(hp(e),68);let t=e*p,n=yield pp(d,g,1024);u.writeMemory(n,1024*t),t+=1,g.set(hp(1),64),n=yield pp(d,g,1024),u.writeMemory(n,1024*t)}const y=new Uint8Array(1024);qh(y,u.calculate(new Uint8Array([]),l));const w=yield pp(d,y,i);if("hex"===e.outputType){return Zh(new Uint8Array(2*i),w,i)}return"encoded"===e.outputType?function(e,t,n){const r=[`m=${t.memorySize}`,`t=${t.iterations}`,`p=${t.parallelism}`].join(",");return`$argon2${t.hashType}$v=19$${r}$${np(e,!1)}$${np(n,!1)}`}(s,e,w):w})}function mp(e){return Hh(this,void 0,void 0,function*(){return(e=>{var t;if(!e||"object"!=typeof e)throw new Error("Invalid options parameter. It requires an object.");if(!e.password)throw new Error("Password must be specified");if(e.password=Xh(e.password),e.password.length<1)throw new Error("Password must be specified");if(!e.salt)throw new Error("Salt must be specified");if(e.salt=Xh(e.salt),e.salt.length<8)throw new Error("Salt should be at least 8 bytes long");if(e.secret=Xh(null!==(t=e.secret)&&void 0!==t?t:""),!Number.isInteger(e.iterations)||e.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(e.parallelism)||e.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(e.hashLength)||e.hashLength<4)throw new Error("Hash length should be at least 4 bytes.");if(!Number.isInteger(e.memorySize))throw new Error("Memory size should be specified.");if(e.memorySize<8*e.parallelism)throw new Error("Memory size should be at least 8 * parallelism.");if(void 0===e.outputType&&(e.outputType="hex"),!["hex","binary","encoded"].includes(e.outputType))throw new Error(`Insupported output type ${e.outputType}. Valid values: ['hex', 'binary', 'encoded']`)})(e),gp(Object.assign(Object.assign({},e),{hashType:"id"}))})}new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh,new jh;const yp={parallelism:4,iterations:8,memorySize:262144,hashLength:32,outputType:"binary"};let wp=null,vp=0;const Ap=new Map;async function bp(e,t){try{const n=function(){if(wp)return wp;const e=new Blob(["\n importScripts('https://cdn.jsdelivr.net/npm/hash-wasm@4.11.0/dist/argon2.umd.min.js');\n\n const ARGON2_CONFIG = {\n parallelism: 4,\n iterations: 8,\n memorySize: 262144,\n hashLength: 32,\n outputType: \"binary\"\n };\n\n self.onmessage = async function(e) {\n const { password, salt, id } = e.data;\n\n try {\n const result = await hashwasm.argon2id({\n password: password,\n salt: new Uint8Array(salt),\n ...ARGON2_CONFIG\n });\n\n self.postMessage({\n id,\n success: true,\n result: Array.from(result)\n });\n } catch (error) {\n self.postMessage({\n id,\n success: false,\n error: error.message\n });\n }\n };\n "],{type:"application/javascript"});return wp=new Worker(URL.createObjectURL(e)),wp.onmessage=function(e){const{id:t,success:n,result:r,error:i}=e.data,o=Ap.get(t);o&&(Ap.delete(t),n?o.resolve(new Uint8Array(r)):o.reject(new Error(i)))},wp.onerror=function(e){console.error("Argon2 worker error:",e)},wp}(),r=++vp;return new Promise((i,o)=>{Ap.set(r,{resolve:i,reject:o}),n.postMessage({id:r,password:e,salt:Array.from(t)})})}catch(n){console.warn("Worker failed, falling back to main thread:",n);return await mp({password:e,salt:t,...yp})}}const{window:kp}=l;function Ip(e){let t,n,i,o,s,a,l,f,p,g,y,b,k,I,C,E,x,S;function Q(e,t){return"extension"===e[2]?Ep:Cp}let F=Q(e),D=F(e),$=e[10]&&Np(e),R=e[11]&&Lp(e);return{c(){t=h("div"),n=h("div"),i=h("div"),o=h("h2"),o.textContent="Login to Nostr",s=m(),a=h("button"),a.textContent="×",l=m(),f=h("div"),p=h("div"),g=h("button"),g.textContent="Extension",y=m(),b=h("button"),b.textContent="Nsec",k=m(),I=h("div"),D.c(),C=m(),$&&$.c(),E=m(),R&&R.c(),A(o,"class","svelte-4xpfbi"),A(a,"class","close-btn svelte-4xpfbi"),A(i,"class","modal-header svelte-4xpfbi"),A(g,"class","tab-btn svelte-4xpfbi"),B(g,"active","extension"===e[2]),A(b,"class","tab-btn svelte-4xpfbi"),B(b,"active","nsec"===e[2]),A(p,"class","tabs svelte-4xpfbi"),A(I,"class","tab-content svelte-4xpfbi"),A(f,"class","tab-container svelte-4xpfbi"),A(n,"class","modal svelte-4xpfbi"),B(n,"dark-theme",e[1]),A(t,"class","modal-overlay svelte-4xpfbi"),A(t,"role","button"),A(t,"tabindex","0")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(i,o),c(i,s),c(i,a),c(n,l),c(n,f),c(f,p),c(p,g),c(p,y),c(p,b),c(f,k),c(f,I),D.m(I,null),c(I,C),$&&$.m(I,null),c(I,E),R&&R.m(I,null),x||(S=[w(a,"click",e[17]),w(g,"click",e[26]),w(b,"click",e[27]),w(n,"click",v(e[24])),w(n,"keydown",v(e[25])),w(t,"click",e[17]),w(t,"keydown",e[32])],x=!0)},p(e,t){4&t[0]&&B(g,"active","extension"===e[2]),4&t[0]&&B(b,"active","nsec"===e[2]),F===(F=Q(e))&&D?D.p(e,t):(D.d(1),D=F(e),D&&(D.c(),D.m(I,C))),e[10]?$?$.p(e,t):($=Np(e),$.c(),$.m(I,E)):$&&($.d(1),$=null),e[11]?R?R.p(e,t):(R=Lp(e),R.c(),R.m(I,null)):R&&(R.d(1),R=null),2&t[0]&&B(n,"dark-theme",e[1])},d(e){e&&d(t),D.d(),$&&$.d(),R&&R.d(),x=!1,r(S)}}}function Cp(e){let t;function n(e,t){return e[14]?Bp:xp}let r=n(e),i=r(e);return{c(){t=h("div"),i.c(),A(t,"class","nsec-login svelte-4xpfbi")},m(e,n){u(e,t,n),i.m(t,null)},p(e,o){r===(r=n(e))&&i?i.p(e,o):(i.d(1),i=r(e),i&&(i.c(),i.m(t,null)))},d(e){e&&d(t),i.d()}}}function Ep(e){let t,n,r,i,o,s,a,l=e[7]?"Connecting...":"Log in using extension";return{c(){t=h("div"),n=h("p"),n.textContent="Login using a NIP-07 compatible browser\n extension like nos2x or Alby.",r=m(),i=h("button"),o=g(l),A(n,"class","svelte-4xpfbi"),A(i,"class","login-extension-btn svelte-4xpfbi"),i.disabled=e[7],A(t,"class","extension-login svelte-4xpfbi")},m(l,d){u(l,t,d),c(t,n),c(t,r),c(t,i),c(i,o),s||(a=w(i,"click",e[21]),s=!0)},p(e,t){128&t[0]&&l!==(l=e[7]?"Connecting...":"Log in using extension")&&k(o,l),128&t[0]&&(i.disabled=e[7])},d(e){e&&d(t),s=!1,a()}}}function xp(e){let t,n,i,o,s,a,l,f,p,y,v,b,C,E,x,B,S,Q,F,D,$,R,P,T=e[8]?"Generating...":"Generate New Key",U=e[12]&&Sp(e),N=e[4]&&Qp(e);function L(e,t){return e[9]?$p:e[7]?Dp:Fp}let M=L(e),_=M(e);return{c(){t=h("p"),t.textContent="Enter your nsec or generate a new one. Optionally\n set a password to encrypt it securely.",n=m(),i=h("button"),o=g(T),a=m(),U&&U.c(),l=m(),f=h("input"),y=m(),v=h("div"),b=h("label"),b.textContent="Encryption Password (optional but recommended):",C=m(),E=h("input"),B=m(),N&&N.c(),S=m(),Q=h("small"),Q.textContent="Password uses Argon2id with ~3 second derivation time for security.",F=m(),D=h("button"),_.c(),A(t,"class","svelte-4xpfbi"),A(i,"class","generate-btn svelte-4xpfbi"),i.disabled=s=e[7]||e[8],A(f,"type","password"),A(f,"placeholder","nsec1..."),f.disabled=p=e[7]||e[9],A(f,"class","nsec-input svelte-4xpfbi"),A(b,"class","svelte-4xpfbi"),A(E,"type","password"),A(E,"placeholder","Enter password (min 8 chars)"),E.disabled=x=e[7]||e[9],A(E,"class","password-input svelte-4xpfbi"),A(Q,"class","password-hint svelte-4xpfbi"),A(v,"class","password-section svelte-4xpfbi"),A(D,"class","login-nsec-btn svelte-4xpfbi"),D.disabled=$=e[7]||e[9]||!e[3].trim()},m(r,s){u(r,t,s),u(r,n,s),u(r,i,s),c(i,o),u(r,a,s),U&&U.m(r,s),u(r,l,s),u(r,f,s),I(f,e[3]),u(r,y,s),u(r,v,s),c(v,b),c(v,C),c(v,E),I(E,e[4]),c(v,B),N&&N.m(v,null),c(v,S),c(v,Q),u(r,F,s),u(r,D,s),_.m(D,null),R||(P=[w(i,"click",e[20]),w(f,"input",e[29]),w(E,"input",e[30]),w(D,"click",e[22])],R=!0)},p(e,t){256&t[0]&&T!==(T=e[8]?"Generating...":"Generate New Key")&&k(o,T),384&t[0]&&s!==(s=e[7]||e[8])&&(i.disabled=s),e[12]?U?U.p(e,t):(U=Sp(e),U.c(),U.m(l.parentNode,l)):U&&(U.d(1),U=null),640&t[0]&&p!==(p=e[7]||e[9])&&(f.disabled=p),8&t[0]&&f.value!==e[3]&&I(f,e[3]),640&t[0]&&x!==(x=e[7]||e[9])&&(E.disabled=x),16&t[0]&&E.value!==e[4]&&I(E,e[4]),e[4]?N?N.p(e,t):(N=Qp(e),N.c(),N.m(v,S)):N&&(N.d(1),N=null),M!==(M=L(e))&&(_.d(1),_=M(e),_&&(_.c(),_.m(D,null))),648&t[0]&&$!==($=e[7]||e[9]||!e[3].trim())&&(D.disabled=$)},d(e){e&&d(t),e&&d(n),e&&d(i),e&&d(a),U&&U.d(e),e&&d(l),e&&d(f),e&&d(y),e&&d(v),N&&N.d(),e&&d(F),e&&d(D),_.d(),R=!1,r(P)}}}function Bp(e){let t,n,i,o,s,a,l,f,p,y,v,b,k,C,E=e[15]&&Rp(e);function x(e,t){return e[9]?Up:e[7]?Tp:Pp}let B=x(e),S=B(e);return{c(){t=h("p"),t.textContent="You have a stored encrypted key. Enter your\n password to unlock it.",n=m(),E&&E.c(),i=m(),o=h("input"),a=m(),l=h("button"),S.c(),p=m(),y=h("button"),v=g("Clear stored key & start fresh"),A(t,"class","svelte-4xpfbi"),A(o,"type","password"),A(o,"placeholder","Enter your password"),o.disabled=s=e[7]||e[9],A(o,"class","password-input svelte-4xpfbi"),A(l,"class","login-nsec-btn svelte-4xpfbi"),l.disabled=f=e[7]||e[9]||!e[6],A(y,"class","clear-btn svelte-4xpfbi"),y.disabled=b=e[7]||e[9]},m(r,s){u(r,t,s),u(r,n,s),E&&E.m(r,s),u(r,i,s),u(r,o,s),I(o,e[6]),u(r,a,s),u(r,l,s),S.m(l,null),u(r,p,s),u(r,y,s),c(y,v),k||(C=[w(o,"input",e[28]),w(l,"click",e[18]),w(y,"click",e[16])],k=!0)},p(e,t){e[15]?E?E.p(e,t):(E=Rp(e),E.c(),E.m(i.parentNode,i)):E&&(E.d(1),E=null),640&t[0]&&s!==(s=e[7]||e[9])&&(o.disabled=s),64&t[0]&&o.value!==e[6]&&I(o,e[6]),B!==(B=x(e))&&(S.d(1),S=B(e),S&&(S.c(),S.m(l,null))),704&t[0]&&f!==(f=e[7]||e[9]||!e[6])&&(l.disabled=f),640&t[0]&&b!==(b=e[7]||e[9])&&(y.disabled=b)},d(e){e&&d(t),e&&d(n),E&&E.d(e),e&&d(i),e&&d(o),e&&d(a),e&&d(l),S.d(),e&&d(p),e&&d(y),k=!1,r(C)}}}function Sp(e){let t,n,r,i,o;return{c(){t=h("div"),n=h("label"),n.textContent="Your new public key (npub):",r=m(),i=h("code"),o=g(e[12]),A(n,"class","svelte-4xpfbi"),A(i,"class","npub-display svelte-4xpfbi"),A(t,"class","generated-info svelte-4xpfbi")},m(e,s){u(e,t,s),c(t,n),c(t,r),c(t,i),c(i,o)},p(e,t){4096&t[0]&&k(o,e[12])},d(e){e&&d(t)}}}function Qp(e){let t,n,r,i;return{c(){t=h("input"),A(t,"type","password"),A(t,"placeholder","Confirm password"),t.disabled=n=e[7]||e[9],A(t,"class","password-input svelte-4xpfbi")},m(n,o){u(n,t,o),I(t,e[5]),r||(i=w(t,"input",e[31]),r=!0)},p(e,r){640&r[0]&&n!==(n=e[7]||e[9])&&(t.disabled=n),32&r[0]&&t.value!==e[5]&&I(t,e[5])},d(e){e&&d(t),r=!1,i()}}}function Fp(e){let t;return{c(){t=g("Log in with nsec")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Dp(e){let t;return{c(){t=g("Logging in...")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function $p(e){let t;return{c(){t=g("Deriving key...")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Rp(e){let t,n,r,i,o,s,a,l=e[15].slice(0,16)+"",f=e[15].slice(-8)+"";return{c(){t=h("div"),n=h("label"),n.textContent="Stored public key:",r=m(),i=h("code"),o=g(l),s=g("..."),a=g(f),A(n,"class","svelte-4xpfbi"),A(i,"class","npub-display svelte-4xpfbi"),A(t,"class","stored-info svelte-4xpfbi")},m(e,l){u(e,t,l),c(t,n),c(t,r),c(t,i),c(i,o),c(i,s),c(i,a)},p(e,t){32768&t[0]&&l!==(l=e[15].slice(0,16)+"")&&k(o,l),32768&t[0]&&f!==(f=e[15].slice(-8)+"")&&k(a,f)},d(e){e&&d(t)}}}function Pp(e){let t;return{c(){t=g("Unlock")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Tp(e){let t;return{c(){t=g("Unlocking...")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Up(e){let t;return{c(){t=g("Deriving key...")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Np(e){let t,n;return{c(){t=h("div"),n=g(e[10]),A(t,"class","message error-message svelte-4xpfbi")},m(e,r){u(e,t,r),c(t,n)},p(e,t){1024&t[0]&&k(n,e[10])},d(e){e&&d(t)}}}function Lp(e){let t,n;return{c(){t=h("div"),n=g(e[11]),A(t,"class","message success-message svelte-4xpfbi")},m(e,r){u(e,t,r),c(t,n)},p(e,t){2048&t[0]&&k(n,e[11])},d(e){e&&d(t)}}}function Mp(e){let t,n,r,i,o,s,a,l,f,p,y,w=e[13].toFixed(1)+"";return{c(){t=h("div"),n=h("div"),r=h("div"),i=m(),o=h("h3"),o.textContent="Deriving encryption key",s=m(),a=h("div"),l=g(w),f=g("s"),p=m(),y=h("p"),y.textContent="This may take 3-6 seconds for security",A(r,"class","deriving-spinner svelte-4xpfbi"),A(o,"class","svelte-4xpfbi"),A(a,"class","deriving-timer svelte-4xpfbi"),A(y,"class","deriving-note svelte-4xpfbi"),A(n,"class","deriving-modal svelte-4xpfbi"),B(n,"dark-theme",e[1]),A(t,"class","deriving-overlay svelte-4xpfbi")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(n,i),c(n,o),c(n,s),c(n,a),c(a,l),c(a,f),c(n,p),c(n,y)},p(e,t){8192&t[0]&&w!==(w=e[13].toFixed(1)+"")&&k(l,w),2&t[0]&&B(n,"dark-theme",e[1])},d(e){e&&d(t)}}}function _p(t){let n,r,i,o,s=t[0]&&Ip(t),a=t[9]&&Mp(t);return{c(){s&&s.c(),n=m(),a&&a.c(),r=y()},m(e,l){s&&s.m(e,l),u(e,n,l),a&&a.m(e,l),u(e,r,l),i||(o=w(kp,"keydown",t[23]),i=!0)},p(e,t){e[0]?s?s.p(e,t):(s=Ip(e),s.c(),s.m(n.parentNode,n)):s&&(s.d(1),s=null),e[9]?a?a.p(e,t):(a=Mp(e),a.c(),a.m(r.parentNode,r)):a&&(a.d(1),a=null)},i:e,o:e,d(e){s&&s.d(e),e&&d(n),a&&a.d(e),e&&d(r),i=!1,o()}}}function Op(e,t,n){const r=R();let{showModal:i=!1}=t,{isDarkTheme:o=!1}=t,s="extension",a="",l="",c="",u="",d=!1,f=!1,h=!1,p="",g="",m="",y="",w=0,v=null,A=null;function b(){n(13,w=0),v=performance.now(),k()}function k(){null!==v&&(n(13,w=(performance.now()-v)/1e3),A=requestAnimationFrame(k))}function I(){v=null,A&&(cancelAnimationFrame(A),A=null)}$(()=>{I()});let C=!1,E="";function x(){n(14,C=!!localStorage.getItem("nostr_privkey_encrypted")),n(15,E=localStorage.getItem("nostr_pubkey")||"")}function B(){n(0,i=!1),n(3,a=""),n(4,l=""),n(5,c=""),n(6,u=""),n(10,p=""),n(11,g=""),m="",n(12,y=""),r("close")}function S(e){n(2,s=e),n(10,p=""),n(11,g=""),m="",n(12,y="")}async function Q(){n(7,d=!0),n(10,p=""),n(11,g="");try{if(!a.trim())throw new Error("Please enter your nsec");if(!function(e){if(!e||!e.startsWith("nsec1"))return!1;try{return"nsec"===yu(e).type}catch{return!1}}(a.trim()))throw new Error("Invalid nsec format or checksum");if(l){if(l.length<8)throw new Error("Password must be at least 8 characters");if(l!==c)throw new Error("Passwords do not match")}const e=lf.fromKey(a.trim()),t=await e.getPublicKey();if(localStorage.setItem("nostr_auth_method","nsec"),localStorage.setItem("nostr_pubkey",t),l){n(9,h=!0),b();const e=await async function(e,t){if(!e.startsWith("nsec1"))throw new Error("Invalid nsec format - must start with nsec1");try{if("nsec"!==yu(e).type)throw new Error("Invalid nsec - wrong type")}catch(e){throw new Error("Invalid nsec - bech32 checksum failed")}const n=crypto.getRandomValues(new Uint8Array(32)),r=crypto.getRandomValues(new Uint8Array(12)),i=await bp(t,n),o=await crypto.subtle.importKey("raw",i,{name:"AES-GCM"},!1,["encrypt"]),s=new TextEncoder,a=await crypto.subtle.encrypt({name:"AES-GCM",iv:r},o,s.encode(e)),l=new Uint8Array(n.length+r.length+a.byteLength);return l.set(n,0),l.set(r,n.length),l.set(new Uint8Array(a),n.length+r.length),btoa(String.fromCharCode(...l))}(a.trim(),l);I(),n(9,h=!1),localStorage.setItem("nostr_privkey_encrypted",e),localStorage.removeItem("nostr_privkey")}else localStorage.setItem("nostr_privkey",a.trim()),localStorage.removeItem("nostr_privkey_encrypted"),n(11,g="Successfully logged in with nsec!");r("login",{method:"nsec",pubkey:t,privateKey:a.trim(),signer:e}),setTimeout(()=>{B()},1500)}catch(e){n(10,p=e.message)}finally{n(7,d=!1)}}D(()=>{x()});return e.$$set=e=>{"showModal"in e&&n(0,i=e.showModal),"isDarkTheme"in e&&n(1,o=e.isDarkTheme)},e.$$.update=()=>{1&e.$$.dirty[0]&&i&&x()},[i,o,s,a,l,c,u,d,f,h,p,g,y,w,C,E,function(){localStorage.removeItem("nostr_privkey_encrypted"),localStorage.removeItem("nostr_privkey"),localStorage.removeItem("nostr_pubkey"),localStorage.removeItem("nostr_auth_method"),n(14,C=!1),n(15,E=""),n(6,u=""),n(10,p=""),n(11,g="")},B,async function(){n(7,d=!0),n(9,h=!0),b(),n(10,p=""),n(11,g="");try{if(!u)throw new Error("Please enter your password");const e=localStorage.getItem("nostr_privkey_encrypted");if(!e)throw new Error("No encrypted key found");const t=await async function(e,t){const n=new Uint8Array(atob(e).split("").map(e=>e.charCodeAt(0)));if(n.length<60)throw new Error("Invalid encrypted data - too short");const r=n.slice(0,32),i=n.slice(32,44),o=n.slice(44),s=await bp(t,r),a=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!1,["decrypt"]);let l;try{l=await crypto.subtle.decrypt({name:"AES-GCM",iv:i},a,o)}catch(e){throw new Error("Decryption failed - invalid password or corrupted data")}const c=(new TextDecoder).decode(l);if(!c.startsWith("nsec1"))throw new Error("Decryption produced invalid data - not an nsec");try{if("nsec"!==yu(c).type)throw new Error("Decryption produced invalid nsec type")}catch(e){throw new Error("Decryption produced invalid nsec - bech32 checksum failed")}return c}(e,u);I(),n(9,h=!1);const i=lf.fromKey(t),o=await i.getPublicKey();r("login",{method:"nsec",pubkey:o,privateKey:t,signer:i}),B()}catch(e){I(),e.message.includes("decrypt")||e.message.includes("tag")?n(10,p="Invalid password"):n(10,p=e.message)}finally{n(7,d=!1),n(9,h=!1),I()}},S,async function(){n(8,f=!0),n(10,p=""),n(11,g="");try{const e=Zc(),t=Au("nsec",e),r=vu(Xc(e));m=t,n(12,y=r),n(3,a=t),n(11,g="New key generated! Set an encryption password below to secure it.")}catch(e){n(10,p="Failed to generate key: "+e.message)}finally{n(8,f=!1)}},async function(){n(7,d=!0),n(10,p=""),n(11,g="");try{if(!window.nostr)throw new Error("No Nostr extension found. Please install a NIP-07 compatible extension like nos2x or Alby.");const e=await window.nostr.getPublicKey();e&&(localStorage.setItem("nostr_auth_method","extension"),localStorage.setItem("nostr_pubkey",e),n(11,g="Successfully logged in with extension!"),r("login",{method:"extension",pubkey:e,signer:window.nostr}),setTimeout(()=>{B()},1500))}catch(e){n(10,p=e.message)}finally{n(7,d=!1)}},Q,function(e){"Escape"===e.key&&B(),"Enter"===e.key&&"nsec"===s&&Q()},function(t){P.call(this,e,t)},function(t){P.call(this,e,t)},()=>S("extension"),()=>S("nsec"),function(){u=this.value,n(6,u)},function(){a=this.value,n(3,a)},function(){l=this.value,n(4,l)},function(){c=this.value,n(5,c)},e=>"Escape"===e.key&&B()]}class Hp extends oe{constructor(e){super(),ie(this,e,Op,_p,o,{showModal:0,isDarkTheme:1},null,[-1,-1])}}function jp(e,t,n){const r=e.slice();return r[72]=t[n],r}function Gp(e,t,n){const r=e.slice();return r[75]=t[n],r}function Jp(e,t,n){const r=e.slice();return r[72]=t[n],r}function Kp(e,t,n){const r=e.slice();return r[72]=t[n],r}function Vp(e,t,n){const r=e.slice();return r[72]=t[n],r}function zp(e,t,n){const r=e.slice();return r[72]=t[n],r}function qp(e,t,n){const r=e.slice();return r[72]=t[n],r}function Yp(e){let t,n,r;return{c(){t=h("div"),n=g(e[3]),A(t,"class",r="message "+e[4]+" svelte-1y8wjwc")},m(e,r){u(e,t,r),c(t,n)},p(e,i){8&i[0]&&k(n,e[3]),16&i[0]&&r!==(r="message "+e[4]+" svelte-1y8wjwc")&&A(t,"class",r)},d(e){e&&d(t)}}}function Wp(e){let t,n,i,o,s,a,l,f,p,y,v,b,k,C,E,x,B,S,Q,F,D,$,R,P,T,U,N,L;function M(e,t){return e[5]&&e[5].length>0?Xp:Zp}let _=M(e),O=_(e);function H(e,t){return e[8]&&e[8].length>0?rg:ng}let j=H(e),G=j(e);return{c(){t=h("div"),n=h("div"),i=h("h3"),i.textContent="Banned Pubkeys",o=m(),s=h("div"),a=h("input"),l=m(),f=h("input"),p=m(),y=h("button"),v=g("Ban Pubkey"),b=m(),k=h("div"),O.c(),C=m(),E=h("div"),x=h("h3"),x.textContent="Allowed Pubkeys",B=m(),S=h("div"),Q=h("input"),F=m(),D=h("input"),$=m(),R=h("button"),P=g("Allow Pubkey"),T=m(),U=h("div"),G.c(),A(i,"class","svelte-1y8wjwc"),A(a,"type","text"),A(a,"placeholder","Pubkey (64 hex chars)"),A(a,"class","svelte-1y8wjwc"),A(f,"type","text"),A(f,"placeholder","Reason (optional)"),A(f,"class","svelte-1y8wjwc"),y.disabled=e[2],A(y,"class","svelte-1y8wjwc"),A(s,"class","add-form svelte-1y8wjwc"),A(k,"class","list svelte-1y8wjwc"),A(n,"class","section svelte-1y8wjwc"),A(x,"class","svelte-1y8wjwc"),A(Q,"type","text"),A(Q,"placeholder","Pubkey (64 hex chars)"),A(Q,"class","svelte-1y8wjwc"),A(D,"type","text"),A(D,"placeholder","Reason (optional)"),A(D,"class","svelte-1y8wjwc"),R.disabled=e[2],A(R,"class","svelte-1y8wjwc"),A(S,"class","add-form svelte-1y8wjwc"),A(U,"class","list svelte-1y8wjwc"),A(E,"class","section svelte-1y8wjwc"),A(t,"class","pubkeys-section")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),I(a,e[6]),c(s,l),c(s,f),I(f,e[7]),c(s,p),c(s,y),c(y,v),c(n,b),c(n,k),O.m(k,null),c(t,C),c(t,E),c(E,x),c(E,B),c(E,S),c(S,Q),I(Q,e[9]),c(S,F),c(S,D),I(D,e[10]),c(S,$),c(S,R),c(R,P),c(E,T),c(E,U),G.m(U,null),N||(L=[w(a,"input",e[43]),w(f,"input",e[44]),w(y,"click",e[25]),w(Q,"input",e[45]),w(D,"input",e[46]),w(R,"click",e[26])],N=!0)},p(e,t){64&t[0]&&a.value!==e[6]&&I(a,e[6]),128&t[0]&&f.value!==e[7]&&I(f,e[7]),4&t[0]&&(y.disabled=e[2]),_===(_=M(e))&&O?O.p(e,t):(O.d(1),O=_(e),O&&(O.c(),O.m(k,null))),512&t[0]&&Q.value!==e[9]&&I(Q,e[9]),1024&t[0]&&D.value!==e[10]&&I(D,e[10]),4&t[0]&&(R.disabled=e[2]),j===(j=H(e))&&G?G.p(e,t):(G.d(1),G=j(e),G&&(G.c(),G.m(U,null)))},d(e){e&&d(t),O.d(),G.d(),N=!1,r(L)}}}function Zp(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No banned pubkeys configured.</p>",A(n,"class","no-items svelte-1y8wjwc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Xp(e){let t,n=e[5],r=[];for(let t=0;t<n.length;t+=1)r[t]=tg(qp(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(32&i[0]){let o;for(n=e[5],o=0;o<n.length;o+=1){const s=qp(e,n,o);r[o]?r[o].p(s,i):(r[o]=tg(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function eg(e){let t,n,r=e[72].reason+"";return{c(){t=h("span"),n=g(r),A(t,"class","reason svelte-1y8wjwc")},m(e,r){u(e,t,r),c(t,n)},p(e,t){32&t[0]&&r!==(r=e[72].reason+"")&&k(n,r)},d(e){e&&d(t)}}}function tg(e){let t,n,r,i,o,s=e[72].pubkey+"",a=e[72].reason&&eg(e);return{c(){t=h("div"),n=h("span"),r=g(s),i=m(),a&&a.c(),o=m(),A(n,"class","pubkey svelte-1y8wjwc"),A(t,"class","list-item svelte-1y8wjwc")},m(e,s){u(e,t,s),c(t,n),c(n,r),c(t,i),a&&a.m(t,null),c(t,o)},p(e,n){32&n[0]&&s!==(s=e[72].pubkey+"")&&k(r,s),e[72].reason?a?a.p(e,n):(a=eg(e),a.c(),a.m(t,o)):a&&(a.d(1),a=null)},d(e){e&&d(t),a&&a.d()}}}function ng(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No allowed pubkeys configured.</p>",A(n,"class","no-items svelte-1y8wjwc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function rg(e){let t,n=e[8],r=[];for(let t=0;t<n.length;t+=1)r[t]=og(zp(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(256&i[0]){let o;for(n=e[8],o=0;o<n.length;o+=1){const s=zp(e,n,o);r[o]?r[o].p(s,i):(r[o]=og(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function ig(e){let t,n,r=e[72].reason+"";return{c(){t=h("span"),n=g(r),A(t,"class","reason svelte-1y8wjwc")},m(e,r){u(e,t,r),c(t,n)},p(e,t){256&t[0]&&r!==(r=e[72].reason+"")&&k(n,r)},d(e){e&&d(t)}}}function og(e){let t,n,r,i,o,s=e[72].pubkey+"",a=e[72].reason&&ig(e);return{c(){t=h("div"),n=h("span"),r=g(s),i=m(),a&&a.c(),o=m(),A(n,"class","pubkey svelte-1y8wjwc"),A(t,"class","list-item svelte-1y8wjwc")},m(e,s){u(e,t,s),c(t,n),c(n,r),c(t,i),a&&a.m(t,null),c(t,o)},p(e,n){256&n[0]&&s!==(s=e[72].pubkey+"")&&k(r,s),e[72].reason?a?a.p(e,n):(a=ig(e),a.c(),a.m(t,o)):a&&(a.d(1),a=null)},d(e){e&&d(t),a&&a.d()}}}function sg(e){let t,n,i,o,s,a,l,f,p,y,v,b,k,C,E,x,B,S,Q,F,D,$,R,P,T,U,N,L;function M(e,t){return e[11]&&e[11].length>0?lg:ag}let _=M(e),O=_(e);let H=function(e){return e[22]&&e[22].length>0?fg:dg}(e),j=H(e);return{c(){t=h("div"),n=h("div"),i=h("h3"),i.textContent="Banned Events",o=m(),s=h("div"),a=h("input"),l=m(),f=h("input"),p=m(),y=h("button"),v=g("Ban Event"),b=m(),k=h("div"),O.c(),C=m(),E=h("div"),x=h("h3"),x.textContent="Allowed Events",B=m(),S=h("div"),Q=h("input"),F=m(),D=h("input"),$=m(),R=h("button"),P=g("Allow Event"),T=m(),U=h("div"),j.c(),A(i,"class","svelte-1y8wjwc"),A(a,"type","text"),A(a,"placeholder","Event ID (64 hex chars)"),A(a,"class","svelte-1y8wjwc"),A(f,"type","text"),A(f,"placeholder","Reason (optional)"),A(f,"class","svelte-1y8wjwc"),y.disabled=e[2],A(y,"class","svelte-1y8wjwc"),A(s,"class","add-form svelte-1y8wjwc"),A(k,"class","list svelte-1y8wjwc"),A(n,"class","section svelte-1y8wjwc"),A(x,"class","svelte-1y8wjwc"),A(Q,"type","text"),A(Q,"placeholder","Event ID (64 hex chars)"),A(Q,"class","svelte-1y8wjwc"),A(D,"type","text"),A(D,"placeholder","Reason (optional)"),A(D,"class","svelte-1y8wjwc"),R.disabled=e[2],A(R,"class","svelte-1y8wjwc"),A(S,"class","add-form svelte-1y8wjwc"),A(U,"class","list svelte-1y8wjwc"),A(E,"class","section svelte-1y8wjwc"),A(t,"class","events-section")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),I(a,e[12]),c(s,l),c(s,f),I(f,e[13]),c(s,p),c(s,y),c(y,v),c(n,b),c(n,k),O.m(k,null),c(t,C),c(t,E),c(E,x),c(E,B),c(E,S),c(S,Q),I(Q,e[14]),c(S,F),c(S,D),I(D,e[15]),c(S,$),c(S,R),c(R,P),c(E,T),c(E,U),j.m(U,null),N||(L=[w(a,"input",e[47]),w(f,"input",e[48]),w(y,"click",e[27]),w(Q,"input",e[49]),w(D,"input",e[50]),w(R,"click",e[28])],N=!0)},p(e,t){4096&t[0]&&a.value!==e[12]&&I(a,e[12]),8192&t[0]&&f.value!==e[13]&&I(f,e[13]),4&t[0]&&(y.disabled=e[2]),_===(_=M(e))&&O?O.p(e,t):(O.d(1),O=_(e),O&&(O.c(),O.m(k,null))),16384&t[0]&&Q.value!==e[14]&&I(Q,e[14]),32768&t[0]&&D.value!==e[15]&&I(D,e[15]),4&t[0]&&(R.disabled=e[2]),j.p(e,t)},d(e){e&&d(t),O.d(),j.d(),N=!1,r(L)}}}function ag(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No banned events configured.</p>",A(n,"class","no-items svelte-1y8wjwc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function lg(e){let t,n=e[11],r=[];for(let t=0;t<n.length;t+=1)r[t]=ug(Vp(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(2048&i[0]){let o;for(n=e[11],o=0;o<n.length;o+=1){const s=Vp(e,n,o);r[o]?r[o].p(s,i):(r[o]=ug(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function cg(e){let t,n,r=e[72].reason+"";return{c(){t=h("span"),n=g(r),A(t,"class","reason svelte-1y8wjwc")},m(e,r){u(e,t,r),c(t,n)},p(e,t){2048&t[0]&&r!==(r=e[72].reason+"")&&k(n,r)},d(e){e&&d(t)}}}function ug(e){let t,n,r,i,o,s=e[72].id+"",a=e[72].reason&&cg(e);return{c(){t=h("div"),n=h("span"),r=g(s),i=m(),a&&a.c(),o=m(),A(n,"class","event-id svelte-1y8wjwc"),A(t,"class","list-item svelte-1y8wjwc")},m(e,s){u(e,t,s),c(t,n),c(n,r),c(t,i),a&&a.m(t,null),c(t,o)},p(e,n){2048&n[0]&&s!==(s=e[72].id+"")&&k(r,s),e[72].reason?a?a.p(e,n):(a=cg(e),a.c(),a.m(t,o)):a&&(a.d(1),a=null)},d(e){e&&d(t),a&&a.d()}}}function dg(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No allowed events configured.</p>",A(n,"class","no-items svelte-1y8wjwc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function fg(e){let t,n=e[22],r=[];for(let t=0;t<n.length;t+=1)r[t]=hg(Kp(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(4194304&i[0]){let o;for(n=e[22],o=0;o<n.length;o+=1){const s=Kp(e,n,o);r[o]?r[o].p(s,i):(r[o]=hg(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function hg(t){let n,r,i,o,s,a=t[72].id+"",l=t[72].reason&&function(t){let n,r,i=t[72].reason+"";return{c(){n=h("span"),r=g(i),A(n,"class","reason svelte-1y8wjwc")},m(e,t){u(e,n,t),c(n,r)},p:e,d(e){e&&d(n)}}}(t);return{c(){n=h("div"),r=h("span"),i=g(a),o=m(),l&&l.c(),s=m(),A(r,"class","event-id svelte-1y8wjwc"),A(n,"class","list-item svelte-1y8wjwc")},m(e,t){u(e,n,t),c(n,r),c(r,i),c(n,o),l&&l.m(n,null),c(n,s)},p(e,t){e[72].reason&&l.p(e,t)},d(e){e&&d(n),l&&l.d()}}}function pg(e){let t,n,i,o,s,a,l,f,p,y,v,b,k,C,E;function x(e,t){return e[16]&&e[16].length>0?mg:gg}let B=x(e),S=B(e);return{c(){t=h("div"),n=h("div"),i=h("h3"),i.textContent="Blocked IPs",o=m(),s=h("div"),a=h("input"),l=m(),f=h("input"),p=m(),y=h("button"),v=g("Block IP"),b=m(),k=h("div"),S.c(),A(i,"class","svelte-1y8wjwc"),A(a,"type","text"),A(a,"placeholder","IP Address"),A(a,"class","svelte-1y8wjwc"),A(f,"type","text"),A(f,"placeholder","Reason (optional)"),A(f,"class","svelte-1y8wjwc"),y.disabled=e[2],A(y,"class","svelte-1y8wjwc"),A(s,"class","add-form svelte-1y8wjwc"),A(k,"class","list svelte-1y8wjwc"),A(n,"class","section svelte-1y8wjwc"),A(t,"class","ips-section")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),I(a,e[17]),c(s,l),c(s,f),I(f,e[18]),c(s,p),c(s,y),c(y,v),c(n,b),c(n,k),S.m(k,null),C||(E=[w(a,"input",e[51]),w(f,"input",e[52]),w(y,"click",e[29])],C=!0)},p(e,t){131072&t[0]&&a.value!==e[17]&&I(a,e[17]),262144&t[0]&&f.value!==e[18]&&I(f,e[18]),4&t[0]&&(y.disabled=e[2]),B===(B=x(e))&&S?S.p(e,t):(S.d(1),S=B(e),S&&(S.c(),S.m(k,null)))},d(e){e&&d(t),S.d(),C=!1,r(E)}}}function gg(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No blocked IPs configured.</p>",A(n,"class","no-items svelte-1y8wjwc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function mg(e){let t,n=e[16],r=[];for(let t=0;t<n.length;t+=1)r[t]=wg(Jp(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(65536&i[0]){let o;for(n=e[16],o=0;o<n.length;o+=1){const s=Jp(e,n,o);r[o]?r[o].p(s,i):(r[o]=wg(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function yg(e){let t,n,r=e[72].reason+"";return{c(){t=h("span"),n=g(r),A(t,"class","reason svelte-1y8wjwc")},m(e,r){u(e,t,r),c(t,n)},p(e,t){65536&t[0]&&r!==(r=e[72].reason+"")&&k(n,r)},d(e){e&&d(t)}}}function wg(e){let t,n,r,i,o,s=e[72].ip+"",a=e[72].reason&&yg(e);return{c(){t=h("div"),n=h("span"),r=g(s),i=m(),a&&a.c(),o=m(),A(n,"class","ip svelte-1y8wjwc"),A(t,"class","list-item svelte-1y8wjwc")},m(e,s){u(e,t,s),c(t,n),c(n,r),c(t,i),a&&a.m(t,null),c(t,o)},p(e,n){65536&n[0]&&s!==(s=e[72].ip+"")&&k(r,s),e[72].reason?a?a.p(e,n):(a=yg(e),a.c(),a.m(t,o)):a&&(a.d(1),a=null)},d(e){e&&d(t),a&&a.d()}}}function vg(e){let t,n,i,o,s,a,l,f,p,y,v,k,C;function E(e,t){return e[19]&&e[19].length>0?bg:Ag}let x=E(e),B=x(e);return{c(){t=h("div"),n=h("div"),i=h("h3"),i.textContent="Allowed Event Kinds",o=m(),s=h("div"),a=h("input"),l=m(),f=h("button"),p=g("Allow Kind"),y=m(),v=h("div"),B.c(),A(i,"class","svelte-1y8wjwc"),A(a,"type","number"),A(a,"placeholder","Kind number"),A(a,"class","svelte-1y8wjwc"),f.disabled=e[2],A(f,"class","svelte-1y8wjwc"),A(s,"class","add-form svelte-1y8wjwc"),A(v,"class","list svelte-1y8wjwc"),A(n,"class","section svelte-1y8wjwc"),A(t,"class","kinds-section")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),I(a,e[20]),c(s,l),c(s,f),c(f,p),c(n,y),c(n,v),B.m(v,null),k||(C=[w(a,"input",e[53]),w(f,"click",e[30])],k=!0)},p(e,t){1048576&t[0]&&b(a.value)!==e[20]&&I(a,e[20]),4&t[0]&&(f.disabled=e[2]),x===(x=E(e))&&B?B.p(e,t):(B.d(1),B=x(e),B&&(B.c(),B.m(v,null)))},d(e){e&&d(t),B.d(),k=!1,r(C)}}}function Ag(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No allowed kinds configured. All kinds are\n allowed by default.</p>",A(n,"class","no-items svelte-1y8wjwc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function bg(e){let t,n=e[19],r=[];for(let t=0;t<n.length;t+=1)r[t]=kg(Gp(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(524288&i[0]|1&i[1]){let o;for(n=e[19],o=0;o<n.length;o+=1){const s=Gp(e,n,o);r[o]?r[o].p(s,i):(r[o]=kg(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function kg(e){let t,n,r,i,o,s,a,l,f,p=e[75]+"";function y(){return e[54](e[75])}return{c(){t=h("div"),n=h("span"),r=g("Kind "),i=g(p),o=m(),s=h("button"),s.textContent="Remove",a=m(),A(n,"class","kind svelte-1y8wjwc"),A(s,"class","remove-btn svelte-1y8wjwc"),A(t,"class","list-item svelte-1y8wjwc")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(n,i),c(t,o),c(t,s),c(t,a),l||(f=w(s,"click",y),l=!0)},p(t,n){e=t,524288&n[0]&&p!==(p=e[75]+"")&&k(i,p)},d(e){e&&d(t),l=!1,f()}}}function Ig(e){let t,n,r,i,o,s,a,l,f,p;function y(e,t){return e[21]&&e[21].length>0?Eg:Cg}let v=y(e),b=v(e);return{c(){t=h("div"),n=h("div"),r=h("h3"),r.textContent="Events Needing Moderation",i=m(),o=h("button"),s=g("Refresh"),a=m(),l=h("div"),b.c(),A(r,"class","svelte-1y8wjwc"),o.disabled=e[2],A(l,"class","list svelte-1y8wjwc"),A(n,"class","section svelte-1y8wjwc"),A(t,"class","moderation-section")},m(d,h){u(d,t,h),c(t,n),c(n,r),c(n,i),c(n,o),c(o,s),c(n,a),c(n,l),b.m(l,null),f||(p=w(o,"click",e[24]),f=!0)},p(e,t){4&t[0]&&(o.disabled=e[2]),v===(v=y(e))&&b?b.p(e,t):(b.d(1),b=v(e),b&&(b.c(),b.m(l,null)))},d(e){e&&d(t),b.d(),f=!1,p()}}}function Cg(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No events need moderation at this time.</p>",A(n,"class","no-items svelte-1y8wjwc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Eg(e){let t,n=e[21],r=[];for(let t=0;t<n.length;t+=1)r[t]=Bg(jp(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(2097152&i[0]|12&i[1]){let o;for(n=e[21],o=0;o<n.length;o+=1){const s=jp(e,n,o);r[o]?r[o].p(s,i):(r[o]=Bg(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function xg(e){let t,n,r=e[72].reason+"";return{c(){t=h("span"),n=g(r),A(t,"class","reason svelte-1y8wjwc")},m(e,r){u(e,t,r),c(t,n)},p(e,t){2097152&t[0]&&r!==(r=e[72].reason+"")&&k(n,r)},d(e){e&&d(t)}}}function Bg(e){let t,n,i,o,s,a,l,f,p,y,v,b,I=e[72].id+"",C=e[72].reason&&xg(e);function E(){return e[55](e[72])}function x(){return e[56](e[72])}return{c(){t=h("div"),n=h("span"),i=g(I),o=m(),C&&C.c(),s=m(),a=h("div"),l=h("button"),l.textContent="Allow",f=m(),p=h("button"),p.textContent="Ban",y=m(),A(n,"class","event-id svelte-1y8wjwc"),A(l,"class","svelte-1y8wjwc"),A(p,"class","svelte-1y8wjwc"),A(a,"class","actions svelte-1y8wjwc"),A(t,"class","list-item svelte-1y8wjwc")},m(e,r){u(e,t,r),c(t,n),c(n,i),c(t,o),C&&C.m(t,null),c(t,s),c(t,a),c(a,l),c(a,f),c(a,p),c(t,y),v||(b=[w(l,"click",E),w(p,"click",x)],v=!0)},p(n,r){e=n,2097152&r[0]&&I!==(I=e[72].id+"")&&k(i,I),e[72].reason?C?C.p(e,r):(C=xg(e),C.c(),C.m(t,s)):C&&(C.d(1),C=null)},d(e){e&&d(t),C&&C.d(),v=!1,r(b)}}}function Sg(e){let t,n,i,o,s,a,l,f,p,y,v,b,k,C,E,x,B,S,Q,F,D,$,R,P,T,U,N,L;function M(e,t){return e[2]?Fg:Qg}let _=M(e),O=_(e);return{c(){t=h("div"),n=h("div"),i=h("h3"),i.textContent="Relay Configuration",o=m(),s=h("div"),a=h("button"),l=g("🔄 Refresh from Relay Info"),f=m(),p=h("div"),y=h("div"),v=h("label"),v.textContent="Relay Name",b=m(),k=h("input"),C=m(),E=h("div"),x=h("label"),x.textContent="Relay Description",B=m(),S=h("textarea"),Q=m(),F=h("div"),D=h("label"),D.textContent="Relay Icon URL",$=m(),R=h("input"),P=m(),T=h("div"),U=h("button"),O.c(),A(i,"class","svelte-1y8wjwc"),a.disabled=e[2],A(a,"class","refresh-btn svelte-1y8wjwc"),A(s,"class","config-actions svelte-1y8wjwc"),A(v,"for","relay-name"),A(v,"class","svelte-1y8wjwc"),A(k,"id","relay-name"),A(k,"type","text"),A(k,"placeholder","Enter relay name"),A(k,"class","svelte-1y8wjwc"),A(y,"class","form-group svelte-1y8wjwc"),A(x,"for","relay-description"),A(x,"class","svelte-1y8wjwc"),A(S,"id","relay-description"),A(S,"placeholder","Enter relay description"),A(S,"class","svelte-1y8wjwc"),A(E,"class","form-group svelte-1y8wjwc"),A(D,"for","relay-icon"),A(D,"class","svelte-1y8wjwc"),A(R,"id","relay-icon"),A(R,"type","url"),A(R,"placeholder","Enter icon URL"),A(R,"class","svelte-1y8wjwc"),A(F,"class","form-group svelte-1y8wjwc"),U.disabled=e[2],A(U,"class","update-all-btn svelte-1y8wjwc"),A(T,"class","config-update-section svelte-1y8wjwc"),A(p,"class","config-form svelte-1y8wjwc"),A(n,"class","section svelte-1y8wjwc"),A(t,"class","relay-section")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),c(a,l),c(n,f),c(n,p),c(p,y),c(y,v),c(y,b),c(y,k),I(k,e[0].relay_name),c(p,C),c(p,E),c(E,x),c(E,B),c(E,S),I(S,e[0].relay_description),c(p,Q),c(p,F),c(F,D),c(F,$),c(F,R),I(R,e[0].relay_icon),c(p,P),c(p,T),c(T,U),O.m(U,null),N||(L=[w(a,"click",e[23]),w(k,"input",e[57]),w(S,"input",e[58]),w(R,"input",e[59]),w(U,"click",e[32])],N=!0)},p(e,t){4&t[0]&&(a.disabled=e[2]),1&t[0]&&k.value!==e[0].relay_name&&I(k,e[0].relay_name),1&t[0]&&I(S,e[0].relay_description),1&t[0]&&R.value!==e[0].relay_icon&&I(R,e[0].relay_icon),_!==(_=M(e))&&(O.d(1),O=_(e),O&&(O.c(),O.m(U,null))),4&t[0]&&(U.disabled=e[2])},d(e){e&&d(t),O.d(),N=!1,r(L)}}}function Qg(e){let t;return{c(){t=g("💾 Update Configuration")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Fg(e){let t;return{c(){t=g("⏳ Updating...")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Dg(t){let n,i,o,s,a,l,f,p,y,v,b,k,I,C,E,x,B,S,Q,F,D,$,R,P,T,U,N,L,M,_,O,H,j,G,J,K,V,z=t[3]&&Yp(t),q="pubkeys"===t[1]&&Wp(t),Y="events"===t[1]&&sg(t),W="ips"===t[1]&&pg(t),Z="kinds"===t[1]&&vg(t),X="moderation"===t[1]&&Ig(t),ee="relay"===t[1]&&Sg(t);return{c(){n=h("div"),i=h("div"),i.innerHTML='<h2 class="svelte-1y8wjwc">Managed ACL Configuration</h2> \n <p class="svelte-1y8wjwc">Configure access control using NIP-86 management API</p> \n <div class="owner-only-notice svelte-1y8wjwc"><strong>Owner Only:</strong> This interface is restricted to relay owners\n only.</div>',o=m(),z&&z.c(),s=m(),a=h("div"),l=h("button"),f=g("Pubkeys"),y=m(),v=h("button"),b=g("Events"),I=m(),C=h("button"),E=g("IPs"),B=m(),S=h("button"),Q=g("Kinds"),D=m(),$=h("button"),R=g("Moderation"),T=m(),U=h("button"),N=g("Relay Config"),M=m(),_=h("div"),q&&q.c(),O=m(),Y&&Y.c(),H=m(),W&&W.c(),j=m(),Z&&Z.c(),G=m(),X&&X.c(),J=m(),ee&&ee.c(),A(i,"class","header svelte-1y8wjwc"),A(l,"class",p="tab "+("pubkeys"===t[1]?"active":"")+" svelte-1y8wjwc"),A(v,"class",k="tab "+("events"===t[1]?"active":"")+" svelte-1y8wjwc"),A(C,"class",x="tab "+("ips"===t[1]?"active":"")+" svelte-1y8wjwc"),A(S,"class",F="tab "+("kinds"===t[1]?"active":"")+" svelte-1y8wjwc"),A($,"class",P="tab "+("moderation"===t[1]?"active":"")+" svelte-1y8wjwc"),A(U,"class",L="tab "+("relay"===t[1]?"active":"")+" svelte-1y8wjwc"),A(a,"class","tabs svelte-1y8wjwc"),A(_,"class","tab-content svelte-1y8wjwc")},m(e,r){u(e,n,r),c(n,i),c(n,o),z&&z.m(n,null),c(n,s),c(n,a),c(a,l),c(l,f),c(a,y),c(a,v),c(v,b),c(a,I),c(a,C),c(C,E),c(a,B),c(a,S),c(S,Q),c(a,D),c(a,$),c($,R),c(a,T),c(a,U),c(U,N),c(n,M),c(n,_),q&&q.m(_,null),c(_,O),Y&&Y.m(_,null),c(_,H),W&&W.m(_,null),c(_,j),Z&&Z.m(_,null),c(_,G),X&&X.m(_,null),c(_,J),ee&&ee.m(_,null),K||(V=[w(l,"click",t[37]),w(v,"click",t[38]),w(C,"click",t[39]),w(S,"click",t[40]),w($,"click",t[41]),w(U,"click",t[42])],K=!0)},p(e,t){e[3]?z?z.p(e,t):(z=Yp(e),z.c(),z.m(n,s)):z&&(z.d(1),z=null),2&t[0]&&p!==(p="tab "+("pubkeys"===e[1]?"active":"")+" svelte-1y8wjwc")&&A(l,"class",p),2&t[0]&&k!==(k="tab "+("events"===e[1]?"active":"")+" svelte-1y8wjwc")&&A(v,"class",k),2&t[0]&&x!==(x="tab "+("ips"===e[1]?"active":"")+" svelte-1y8wjwc")&&A(C,"class",x),2&t[0]&&F!==(F="tab "+("kinds"===e[1]?"active":"")+" svelte-1y8wjwc")&&A(S,"class",F),2&t[0]&&P!==(P="tab "+("moderation"===e[1]?"active":"")+" svelte-1y8wjwc")&&A($,"class",P),2&t[0]&&L!==(L="tab "+("relay"===e[1]?"active":"")+" svelte-1y8wjwc")&&A(U,"class",L),"pubkeys"===e[1]?q?q.p(e,t):(q=Wp(e),q.c(),q.m(_,O)):q&&(q.d(1),q=null),"events"===e[1]?Y?Y.p(e,t):(Y=sg(e),Y.c(),Y.m(_,H)):Y&&(Y.d(1),Y=null),"ips"===e[1]?W?W.p(e,t):(W=pg(e),W.c(),W.m(_,j)):W&&(W.d(1),W=null),"kinds"===e[1]?Z?Z.p(e,t):(Z=vg(e),Z.c(),Z.m(_,G)):Z&&(Z.d(1),Z=null),"moderation"===e[1]?X?X.p(e,t):(X=Ig(e),X.c(),X.m(_,J)):X&&(X.d(1),X=null),"relay"===e[1]?ee?ee.p(e,t):(ee=Sg(e),ee.c(),ee.m(_,null)):ee&&(ee.d(1),ee=null)},i:e,o:e,d(e){e&&d(n),z&&z.d(),q&&q.d(),Y&&Y.d(),W&&W.d(),Z&&Z.d(),X&&X.d(),ee&&ee.d(),K=!1,r(V)}}}function $g(e,t,n){let{userSigner:r}=t,{userPubkey:i}=t,o="pubkeys",s=!1,a="",l="info",c=[],u="",d="",f=[],h="",p="",g=[],m="",y="",w="",v="",A=[],k="",I="",C=[],E="",x=[],B={relay_name:"",relay_description:"",relay_icon:""};async function S(){try{n(2,s=!0),console.log("Fetching relay info from /");const e=await fetch(window.location.origin+"/",{headers:{Accept:"application/nostr+json"}});if(console.log("Response status:",e.status),console.log("Response headers:",e.headers),e.ok){const t=await e.json();console.log("Raw relay info:",t),n(0,B={relay_name:t.name||"",relay_description:t.description||"",relay_icon:t.icon||""}),console.log("Updated relayConfig:",B),console.log("Loaded relay info:",t),n(3,a="Relay configuration loaded successfully"),n(4,l="success")}else console.error("Failed to fetch relay info, status:",e.status),n(3,a=`Failed to fetch relay info: ${e.status}`),n(4,l="error")}catch(e){console.error("Failed to fetch relay info:",e),n(3,a=`Failed to fetch relay info: ${e.message}`),n(4,l="error")}finally{n(2,s=!1)}}async function Q(e,t=[]){try{n(2,s=!0),n(3,a="");const o={method:e,params:t},l=await async function(e,t){if(!r)throw new Error("No signer available for authentication. Please log in with a Nostr extension.");if(!i)throw new Error("No user pubkey available for authentication.");const n=window.location.origin+t,o={kind:27235,created_at:Math.floor(Date.now()/1e3),tags:[["u",n],["method",e]],content:"",pubkey:i},s=await r.signEvent(o),a=JSON.stringify(s);return`Nostr ${btoa(a)}`}("POST","/api/nip86"),c=await fetch("/api/nip86",{method:"POST",headers:{"Content-Type":"application/nostr+json+rpc",Authorization:l},body:JSON.stringify(o)});if(!c.ok)throw new Error(`HTTP ${c.status}: ${c.statusText}`);const u=await c.json();if(u.error)throw new Error(u.error);return u.result}catch(e){throw console.error("NIP-86 API error:",e),n(3,a=e.message),n(4,l="error"),e}finally{n(2,s=!1)}}async function F(){try{n(5,c=await Q("listbannedpubkeys"))}catch(e){console.error("Failed to load banned pubkeys:",e)}}async function $(){try{n(8,f=await Q("listallowedpubkeys"))}catch(e){console.error("Failed to load allowed pubkeys:",e)}}async function R(){try{n(11,g=await Q("listbannedevents"))}catch(e){console.error("Failed to load banned events:",e)}}async function P(){try{n(16,A=await Q("listblockedips"))}catch(e){console.error("Failed to load blocked IPs:",e)}}async function T(){try{n(19,C=await Q("listallowedkinds"))}catch(e){console.error("Failed to load allowed kinds:",e)}}async function U(){try{n(2,s=!0),n(21,x=await Q("listeventsneedingmoderation")),console.log("Loaded events needing moderation:",x)}catch(e){console.error("Failed to load events needing moderation:",e),n(3,a=`Failed to load moderation events: ${e.message}`),n(4,l="error"),n(21,x=[])}finally{n(2,s=!1)}}async function N(e){try{await Q("disallowkind",[e]),n(3,a="Kind disallowed successfully"),n(4,l="success"),await T()}catch(e){console.error("Failed to disallow kind:",e)}}async function L(e){try{await Q("allowevent",[e,"Approved from moderation queue"]),n(3,a="Event allowed successfully"),n(4,l="success"),await U()}catch(e){console.error("Failed to allow event from moderation:",e)}}async function M(e){try{await Q("banevent",[e,"Banned from moderation queue"]),n(3,a="Event banned successfully"),n(4,l="success"),await U()}catch(e){console.error("Failed to ban event from moderation:",e)}}D(()=>{setTimeout(()=>{S()},100)}),async function(){await Promise.all([F(),$(),R(),P(),T()])}();return e.$$set=e=>{"userSigner"in e&&n(35,r=e.userSigner),"userPubkey"in e&&n(36,i=e.userPubkey)},e.$$.update=()=>{1&e.$$.dirty[0]&&console.log("relayConfig changed:",B)},[B,o,s,a,l,c,u,d,f,h,p,g,m,y,w,v,A,k,I,C,E,x,[],S,U,async function(){if(u)try{await Q("banpubkey",[u,d]),n(3,a="Pubkey banned successfully"),n(4,l="success"),n(6,u=""),n(7,d=""),await F()}catch(e){console.error("Failed to ban pubkey:",e)}},async function(){if(h)try{await Q("allowpubkey",[h,p]),n(3,a="Pubkey allowed successfully"),n(4,l="success"),n(9,h=""),n(10,p=""),await $()}catch(e){console.error("Failed to allow pubkey:",e)}},async function(){if(m)try{await Q("banevent",[m,y]),n(3,a="Event banned successfully"),n(4,l="success"),n(12,m=""),n(13,y=""),await R()}catch(e){console.error("Failed to ban event:",e)}},async function(){if(w)try{await Q("allowevent",[w,v]),n(3,a="Event allowed successfully"),n(4,l="success"),n(14,w=""),n(15,v="")}catch(e){console.error("Failed to allow event:",e)}},async function(){if(k)try{await Q("blockip",[k,I]),n(3,a="IP blocked successfully"),n(4,l="success"),n(17,k=""),n(18,I=""),await P()}catch(e){console.error("Failed to block IP:",e)}},async function(){if(!E)return;const e=parseInt(E);if(isNaN(e))return n(3,a="Invalid kind number"),void n(4,l="error");try{await Q("allowkind",[e]),n(3,a="Kind allowed successfully"),n(4,l="success"),n(20,E=""),await T()}catch(e){console.error("Failed to allow kind:",e)}},N,async function(){try{n(2,s=!0),n(3,a="");const e=[];if(B.relay_name&&e.push(Q("changerelayname",[B.relay_name])),B.relay_description&&e.push(Q("changerelaydescription",[B.relay_description])),B.relay_icon&&e.push(Q("changerelayicon",[B.relay_icon])),0===e.length)return n(3,a="No changes to update"),void n(4,l="info");await Promise.all(e),n(3,a="Relay configuration updated successfully"),n(4,l="success"),await S()}catch(e){console.error("Failed to update relay configuration:",e),n(3,a=`Failed to update relay configuration: ${e.message}`),n(4,l="error")}finally{n(2,s=!1)}},L,M,r,i,()=>n(1,o="pubkeys"),()=>n(1,o="events"),()=>n(1,o="ips"),()=>n(1,o="kinds"),()=>{n(1,o="moderation"),x&&0!==x.length||U()},()=>n(1,o="relay"),function(){u=this.value,n(6,u)},function(){d=this.value,n(7,d)},function(){h=this.value,n(9,h)},function(){p=this.value,n(10,p)},function(){m=this.value,n(12,m)},function(){y=this.value,n(13,y)},function(){w=this.value,n(14,w)},function(){v=this.value,n(15,v)},function(){k=this.value,n(17,k)},function(){I=this.value,n(18,I)},function(){E=b(this.value),n(20,E)},e=>N(e),e=>L(e.id),e=>M(e.id),function(){B.relay_name=this.value,n(0,B)},function(){B.relay_description=this.value,n(0,B)},function(){B.relay_icon=this.value,n(0,B)}]}class Rg extends oe{constructor(e){super(),ie(this,e,$g,Dg,o,{userSigner:35,userPubkey:36},null,[-1,-1,-1])}}function Pg(e){let t,n;return{c(){t=h("span"),n=g(e[3]),A(t,"class","permission-badge svelte-1qkhxam")},m(e,r){u(e,t,r),c(t,n)},p(e,t){8&t&&k(n,e[3])},d(e){e&&d(t)}}}function Tg(t){let n,r,i;return{c(){n=h("button"),n.textContent="Log in",A(n,"class","login-btn svelte-1qkhxam")},m(e,o){u(e,n,o),r||(i=w(n,"click",t[7]),r=!0)},p:e,d(e){e&&d(n),r=!1,i()}}}function Ug(e){let t,n,r,i,o,s,a=(e[4]?.name||e[5])+"";function l(e,t){return e[4]?.picture?Lg:Ng}let f=l(e),p=f(e);return{c(){t=h("button"),p.c(),n=m(),r=h("span"),i=g(a),A(r,"class","user-name svelte-1qkhxam"),A(t,"class","user-profile-btn svelte-1qkhxam")},m(a,l){u(a,t,l),p.m(t,null),c(t,n),c(t,r),c(r,i),o||(s=w(t,"click",e[6]),o=!0)},p(e,r){f===(f=l(e))&&p?p.p(e,r):(p.d(1),p=f(e),p&&(p.c(),p.m(t,n))),48&r&&a!==(a=(e[4]?.name||e[5])+"")&&k(i,a)},d(e){e&&d(t),p.d(),o=!1,s()}}}function Ng(t){let n;return{c(){n=h("div"),n.textContent="👤",A(n,"class","user-avatar-placeholder svelte-1qkhxam")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Lg(e){let t,n;return{c(){t=h("img"),a(t.src,n=e[4].picture)||A(t,"src",n),A(t,"alt","User avatar"),A(t,"class","user-avatar svelte-1qkhxam")},m(e,n){u(e,t,n)},p(e,r){16&r&&!a(t.src,n=e[4].picture)&&A(t,"src",n)},d(e){e&&d(t)}}}function Mg(t){let n,r,i,o,s,l,f,p,y,w,v=t[1]&&t[2]&&Pg(t);function b(e,t){return e[1]?Ug:Tg}let k=b(t),I=k(t);return{c(){n=h("header"),r=h("div"),i=h("img"),s=m(),l=h("div"),f=h("span"),p=g("ORLY? dashboard\n "),v&&v.c(),y=m(),w=h("div"),I.c(),a(i.src,o="/orly.png")||A(i,"src","/orly.png"),A(i,"alt","ORLY Logo"),A(i,"class","logo svelte-1qkhxam"),A(f,"class","app-title svelte-1qkhxam"),A(l,"class","header-title svelte-1qkhxam"),A(w,"class","header-buttons svelte-1qkhxam"),A(r,"class","header-content svelte-1qkhxam"),A(n,"class","main-header svelte-1qkhxam"),B(n,"dark-theme",t[0])},m(e,t){u(e,n,t),c(n,r),c(r,i),c(r,s),c(r,l),c(l,f),c(f,p),v&&v.m(f,null),c(r,y),c(r,w),I.m(w,null)},p(e,[t]){e[1]&&e[2]?v?v.p(e,t):(v=Pg(e),v.c(),v.m(f,null)):v&&(v.d(1),v=null),k===(k=b(e))&&I?I.p(e,t):(I.d(1),I=k(e),I&&(I.c(),I.m(w,null))),1&t&&B(n,"dark-theme",e[0])},i:e,o:e,d(e){e&&d(n),v&&v.d(),I.d()}}}function _g(e,t,n){let{isDarkTheme:r=!1}=t,{isLoggedIn:i=!1}=t,{userRole:o=""}=t,{currentEffectiveRole:s=""}=t,{userProfile:a=null}=t,{userPubkey:l=""}=t;const c=R();return e.$$set=e=>{"isDarkTheme"in e&&n(0,r=e.isDarkTheme),"isLoggedIn"in e&&n(1,i=e.isLoggedIn),"userRole"in e&&n(2,o=e.userRole),"currentEffectiveRole"in e&&n(3,s=e.currentEffectiveRole),"userProfile"in e&&n(4,a=e.userProfile),"userPubkey"in e&&n(5,l=e.userPubkey)},[r,i,o,s,a,l,function(){c("openSettingsDrawer")},function(){c("openLoginModal")}]}class Og extends oe{constructor(e){super(),ie(this,e,_g,Mg,o,{isDarkTheme:0,isLoggedIn:1,userRole:2,currentEffectiveRole:3,userProfile:4,userPubkey:5})}}function Hg(e,t,n){const r=e.slice();return r[10]=t[n],r}function jg(e){let t,n,i;function o(){return e[6](e[10])}function s(...t){return e[7](e[10],...t)}return{c(){t=h("span"),t.textContent="✕",A(t,"class","tab-close-icon svelte-wfmuj"),A(t,"role","button"),A(t,"tabindex","0")},m(e,r){u(e,t,r),n||(i=[w(t,"click",v(o)),w(t,"keydown",s)],n=!0)},p(t,n){e=t},d(e){e&&d(t),n=!1,r(i)}}}function Gg(e){let t,n,r,i,o,s,a,l,f,p,y=e[10].icon+"",v=e[10].label+"",b=e[10].isSearchTab&&jg(e);function I(){return e[8](e[10])}return{c(){t=h("button"),n=h("span"),r=g(y),i=m(),o=h("span"),s=g(v),a=m(),b&&b.c(),l=m(),A(n,"class","tab-icon svelte-wfmuj"),A(o,"class","tab-label svelte-wfmuj"),A(t,"class","tab svelte-wfmuj"),B(t,"active",e[2]===e[10].id)},m(e,d){u(e,t,d),c(t,n),c(n,r),c(t,i),c(t,o),c(o,s),c(t,a),b&&b.m(t,null),c(t,l),f||(p=w(t,"click",I),f=!0)},p(n,i){e=n,2&i&&y!==(y=e[10].icon+"")&&k(r,y),2&i&&v!==(v=e[10].label+"")&&k(s,v),e[10].isSearchTab?b?b.p(e,i):(b=jg(e),b.c(),b.m(t,l)):b&&(b.d(1),b=null),6&i&&B(t,"active",e[2]===e[10].id)},d(e){e&&d(t),b&&b.d(),f=!1,p()}}}function Jg(e){let t,n,r,i,o,s,a,l;return{c(){t=h("a"),n=p("svg"),r=p("path"),i=p("path"),o=m(),s=h("span"),a=g("v"),l=g(e[3]),A(r,"d","M5 6h12v2h1.5c1.38 0 2.5 1.12 2.5 2.5v1c0 1.38-1.12 2.5-2.5 2.5H17v1c0 1.66-1.34 3-3 3H8c-1.66 0-3-1.34-3-3V6zm12 6h1.5c.28 0 .5-.22.5-.5v-1c0-.28-.22-.5-.5-.5H17v2z"),A(i,"d","M9 9c1.5 0 3 .5 3 2.5S10.5 14 9 14c0-1.5.5-3.5 2-4.5"),A(i,"stroke","currentColor"),A(i,"stroke-width","1"),A(i,"fill","none"),A(n,"class","version-icon svelte-wfmuj"),A(n,"viewBox","0 0 24 24"),A(n,"fill","currentColor"),A(n,"xmlns","http://www.w3.org/2000/svg"),A(s,"class","version-text svelte-wfmuj"),A(t,"href","https://next.orly.dev"),A(t,"target","_blank"),A(t,"rel","noopener noreferrer"),A(t,"class","version-link svelte-wfmuj")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(n,i),c(t,o),c(t,s),c(s,a),c(s,l)},p(e,t){8&t&&k(l,e[3])},d(e){e&&d(t)}}}function Kg(t){let n,r,i,o,s=t[1],a=[];for(let e=0;e<s.length;e+=1)a[e]=Gg(Hg(t,s,e));let l=t[3]&&Jg(t);return{c(){n=h("aside"),r=h("div"),i=h("div");for(let e=0;e<a.length;e+=1)a[e].c();o=m(),l&&l.c(),A(i,"class","tabs svelte-wfmuj"),A(r,"class","sidebar-content svelte-wfmuj"),A(n,"class","sidebar svelte-wfmuj"),B(n,"dark-theme",t[0])},m(e,t){u(e,n,t),c(n,r),c(r,i);for(let e=0;e<a.length;e+=1)a[e]&&a[e].m(i,null);c(n,o),l&&l.m(n,null)},p(e,[t]){if(54&t){let n;for(s=e[1],n=0;n<s.length;n+=1){const r=Hg(e,s,n);a[n]?a[n].p(r,t):(a[n]=Gg(r),a[n].c(),a[n].m(i,null))}for(;n<a.length;n+=1)a[n].d(1);a.length=s.length}e[3]?l?l.p(e,t):(l=Jg(e),l.c(),l.m(n,null)):l&&(l.d(1),l=null),1&t&&B(n,"dark-theme",e[0])},i:e,o:e,d(e){e&&d(n),f(a,e),l&&l.d()}}}function Vg(e,t,n){let{isDarkTheme:r=!1}=t,{tabs:i=[]}=t,{selectedTab:o=""}=t,{version:s=""}=t;const a=R();function l(e){a("selectTab",e)}function c(e){a("closeSearchTab",e)}return e.$$set=e=>{"isDarkTheme"in e&&n(0,r=e.isDarkTheme),"tabs"in e&&n(1,i=e.tabs),"selectedTab"in e&&n(2,o=e.selectedTab),"version"in e&&n(3,s=e.version)},[r,i,o,s,l,c,e=>c(e.id),(e,t)=>"Enter"===t.key&&c(e.id),e=>l(e.id)]}class zg extends oe{constructor(e){super(),ie(this,e,Vg,Kg,o,{isDarkTheme:0,tabs:1,selectedTab:2,version:3})}}function qg(t){let n,r,i,o,s,a;return{c(){n=h("div"),r=h("p"),r.textContent="Please log in to access export functionality.",i=m(),o=h("button"),o.textContent="Log In",A(r,"class","svelte-jzrdtj"),A(o,"class","login-btn svelte-jzrdtj"),A(n,"class","login-prompt svelte-jzrdtj")},m(e,l){u(e,n,l),c(n,r),c(n,i),c(n,o),s||(a=w(o,"click",t[5]),s=!0)},p:e,d(e){e&&d(n),s=!1,a()}}}function Yg(e){let t,n,r=e[0]&&Wg(e),i=e[1]&&Zg(e);return{c(){r&&r.c(),t=m(),i&&i.c(),n=y()},m(e,o){r&&r.m(e,o),u(e,t,o),i&&i.m(e,o),u(e,n,o)},p(e,o){e[0]?r?r.p(e,o):(r=Wg(e),r.c(),r.m(t.parentNode,t)):r&&(r.d(1),r=null),e[1]?i?i.p(e,o):(i=Zg(e),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null)},d(e){r&&r.d(e),e&&d(t),i&&i.d(e),e&&d(n)}}}function Wg(t){let n,r,i,o,s,a,l,f;return{c(){n=h("div"),r=h("h3"),r.textContent="Export My Events",i=m(),o=h("p"),o.textContent="Download your personal events as a JSONL file.",s=m(),a=h("button"),a.textContent="📤 Export My Events",A(r,"class","svelte-jzrdtj"),A(o,"class","svelte-jzrdtj"),A(a,"class","export-btn svelte-jzrdtj"),A(n,"class","export-section svelte-jzrdtj")},m(e,d){u(e,n,d),c(n,r),c(n,i),c(n,o),c(n,s),c(n,a),l||(f=w(a,"click",t[3]),l=!0)},p:e,d(e){e&&d(n),l=!1,f()}}}function Zg(t){let n,r,i,o,s,a,l,f;return{c(){n=h("div"),r=h("h3"),r.textContent="Export All Events",i=m(),o=h("p"),o.textContent="Download the complete database as a JSONL file. This includes\n all events from all users.",s=m(),a=h("button"),a.textContent="📤 Export All Events",A(r,"class","svelte-jzrdtj"),A(o,"class","svelte-jzrdtj"),A(a,"class","export-btn svelte-jzrdtj"),A(n,"class","export-section svelte-jzrdtj")},m(e,d){u(e,n,d),c(n,r),c(n,i),c(n,o),c(n,s),c(n,a),l||(f=w(a,"click",t[4]),l=!0)},p:e,d(e){e&&d(n),l=!1,f()}}}function Xg(t){let n;function r(e,t){return e[2]?Yg:qg}let i=r(t),o=i(t);return{c(){o.c(),n=y()},m(e,t){o.m(e,t),u(e,n,t)},p(e,[t]){i===(i=r(e))&&o?o.p(e,t):(o.d(1),o=i(e),o&&(o.c(),o.m(n.parentNode,n)))},i:e,o:e,d(e){o.d(e),e&&d(n)}}}function em(e,t,n){let r,i,{isLoggedIn:o=!1}=t,{currentEffectiveRole:s=""}=t,{aclMode:a=""}=t;const l=R();return e.$$set=e=>{"isLoggedIn"in e&&n(0,o=e.isLoggedIn),"currentEffectiveRole"in e&&n(6,s=e.currentEffectiveRole),"aclMode"in e&&n(7,a=e.aclMode)},e.$$.update=()=>{129&e.$$.dirty&&n(2,r="none"===a||o),192&e.$$.dirty&&n(1,i="none"===a||"admin"===s||"owner"===s)},[o,i,r,function(){l("exportMyEvents")},function(){l("exportAllEvents")},function(){l("openLoginModal")},s,a]}class tm extends oe{constructor(e){super(),ie(this,e,em,Xg,o,{isLoggedIn:0,currentEffectiveRole:6,aclMode:7})}}function nm(t){let n,r,i,o,s,a,l,f;return{c(){n=h("div"),r=h("h3"),r.textContent="Import Events",i=m(),o=h("p"),o.textContent="Please log in to access import functionality.",s=m(),a=h("button"),a.textContent="Log In",A(r,"class","recovery-header svelte-nonyqh"),A(o,"class","recovery-description svelte-nonyqh"),A(a,"class","login-btn svelte-nonyqh"),A(n,"class","login-prompt svelte-nonyqh")},m(e,d){u(e,n,d),c(n,r),c(n,i),c(n,o),c(n,s),c(n,a),l||(f=w(a,"click",t[6]),l=!0)},p:e,d(e){e&&d(n),l=!1,f()}}}function rm(t){let n;return{c(){n=h("div"),n.innerHTML='<h3 class="recovery-header svelte-nonyqh">Import Events</h3> \n <p class="recovery-description svelte-nonyqh">Admin or owner permission required for import functionality.</p>',A(n,"class","permission-denied svelte-nonyqh")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function im(e){let t,n,i,o,s,a,l,f,p,y,v,b,k,I,C=e[2]&&om(e);return{c(){t=h("h3"),t.textContent="Import Events",n=m(),i=h("p"),i.textContent="Upload a JSONL file to import events into the database.",o=m(),s=h("div"),a=h("input"),l=m(),f=h("div"),p=h("button"),y=g("Import Events"),b=m(),C&&C.c(),A(t,"class","svelte-nonyqh"),A(i,"class","svelte-nonyqh"),A(a,"type","file"),A(a,"id","import-file"),A(a,"accept",".jsonl,.txt"),A(a,"class","svelte-nonyqh"),A(p,"class","import-btn svelte-nonyqh"),p.disabled=v=!e[1]||"Uploading..."===e[2],A(f,"class","import-row svelte-nonyqh"),A(s,"class","recovery-controls-card svelte-nonyqh")},m(r,d){u(r,t,d),u(r,n,d),u(r,i,d),u(r,o,d),u(r,s,d),c(s,a),c(s,l),c(s,f),c(f,p),c(p,y),c(f,b),C&&C.m(f,null),k||(I=[w(a,"change",e[4]),w(p,"click",e[5])],k=!0)},p(e,t){6&t&&v!==(v=!e[1]||"Uploading..."===e[2])&&(p.disabled=v),e[2]?C?C.p(e,t):(C=om(e),C.c(),C.m(f,null)):C&&(C.d(1),C=null)},d(e){e&&d(t),e&&d(n),e&&d(i),e&&d(o),e&&d(s),C&&C.d(),k=!1,r(I)}}}function om(e){let t,n;return{c(){t=h("span"),n=g(e[2]),A(t,"class","import-message svelte-nonyqh"),B(t,"uploading","Uploading..."===e[2]),B(t,"success","Upload complete"===e[2]),B(t,"error",e[2].startsWith("Import failed")||e[2].startsWith("Admin")||e[2].startsWith("Please"))},m(e,r){u(e,t,r),c(t,n)},p(e,r){4&r&&k(n,e[2]),4&r&&B(t,"uploading","Uploading..."===e[2]),4&r&&B(t,"success","Upload complete"===e[2]),4&r&&B(t,"error",e[2].startsWith("Import failed")||e[2].startsWith("Admin")||e[2].startsWith("Please"))},d(e){e&&d(t)}}}function sm(t){let n;function r(e,t){return e[3]?im:e[0]?rm:nm}let i=r(t),o=i(t);return{c(){n=h("div"),o.c(),A(n,"class","import-section svelte-nonyqh")},m(e,t){u(e,n,t),o.m(n,null)},p(e,[t]){i===(i=r(e))&&o?o.p(e,t):(o.d(1),o=i(e),o&&(o.c(),o.m(n,null)))},i:e,o:e,d(e){e&&d(n),o.d()}}}function am(e,t,n){let r,{isLoggedIn:i=!1}=t,{currentEffectiveRole:o=""}=t,{selectedFile:s=null}=t,{aclMode:a=""}=t,{importMessage:l=""}=t;const c=R();return e.$$set=e=>{"isLoggedIn"in e&&n(0,i=e.isLoggedIn),"currentEffectiveRole"in e&&n(7,o=e.currentEffectiveRole),"selectedFile"in e&&n(1,s=e.selectedFile),"aclMode"in e&&n(8,a=e.aclMode),"importMessage"in e&&n(2,l=e.importMessage)},e.$$.update=()=>{385&e.$$.dirty&&n(3,r="none"===a||i&&("admin"===o||"owner"===o))},[i,s,l,r,function(e){c("fileSelect",e)},function(){c("importEvents")},function(){c("openLoginModal")},o,a]}class lm extends oe{constructor(e){super(),ie(this,e,am,sm,o,{isLoggedIn:0,currentEffectiveRole:7,selectedFile:1,aclMode:8,importMessage:2})}}const cm={0:"Profile Metadata",1:"Text Note",2:"Recommend Relay",3:"Contacts",4:"Encrypted DM",5:"Delete Request",6:"Repost",7:"Reaction",8:"Badge Award",16:"Generic Repost",40:"Channel Creation",41:"Channel Metadata",42:"Channel Message",43:"Channel Hide Message",44:"Channel Mute User",1063:"File Metadata",1311:"Live Chat Message",1984:"Reporting",1985:"Label",9734:"Zap Request",9735:"Zap Receipt",1e4:"Mute List",10001:"Pin List",10002:"Relay List Metadata",10003:"Bookmark List",10004:"Communities List",10005:"Public Chats List",10006:"Blocked Relays List",10007:"Search Relays List",10009:"User Groups",10015:"Interests List",10030:"User Emoji List",13194:"Wallet Info",22242:"Client Auth",23194:"Wallet Request",23195:"Wallet Response",24133:"Nostr Connect",27235:"HTTP Auth",3e4:"Categorized People List",30001:"Categorized Bookmarks",30002:"Categorized Relay List",30003:"Bookmark Sets",30004:"Curation Sets",30005:"Video Sets",30008:"Profile Badges",30009:"Badge Definition",30015:"Interest Sets",30017:"Create/Update Stall",30018:"Create/Update Product",30019:"Marketplace UI/UX",30020:"Product Sold As Auction",30023:"Long-form Content",30024:"Draft Long-form Content",30030:"Emoji Sets",30063:"Release Artifact Sets",30078:"Application-specific Data",30311:"Live Event",30315:"User Statuses",30388:"Slide Set",30402:"Classified Listing",30403:"Draft Classified Listing",30617:"Repository Announcement",30618:"Repository State Announcement",30818:"Wiki Article",30819:"Redirects",31922:"Date-Based Calendar Event",31923:"Time-Based Calendar Event",31924:"Calendar",31925:"Calendar Event RSVP",31989:"Handler Recommendation",31990:"Handler Information",34550:"Community Definition",34551:"Community Post Approval"};function um(e,t=null){if(!e||"string"!=typeof e)return!1;return!!/^[0-9a-fA-F]+$/.test(e)&&(!t||e.length===t)}function dm(e){const t=new Date(1e3*e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}T${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function fm(e){return Math.floor(new Date(e).getTime()/1e3)}function hm(e,t,n){const r=e.slice();return r[62]=t[n],r[64]=n,r}function pm(e,t,n){const r=e.slice();return r[65]=t[n],r}function gm(e,t,n){const r=e.slice();return r[68]=t[n],r}function mm(e,t,n){const r=e.slice();return r[71]=t[n],r}function ym(e,t,n){const r=e.slice();return r[71]=t[n].kind,r[74]=t[n].name,r}function wm(e){let t,n,r,i,o,s,a=e[20],l=[];for(let t=0;t<a.length;t+=1)l[t]=vm(ym(e,a,t));return{c(){t=h("div"),n=h("input"),r=m(),i=h("div");for(let e=0;e<l.length;e+=1)l[e].c();A(n,"type","text"),A(n,"placeholder","Search kinds..."),A(n,"class","filter-input kind-search svelte-1a1v6k0"),A(i,"class","kinds-list svelte-1a1v6k0"),A(t,"class","kinds-picker svelte-1a1v6k0")},m(a,d){u(a,t,d),c(t,n),I(n,e[9]),c(t,r),c(t,i);for(let e=0;e<l.length;e+=1)l[e]&&l[e].m(i,null);o||(s=w(n,"input",e[40]),o=!0)},p(e,t){if(512&t[0]&&n.value!==e[9]&&I(n,e[9]),9437186&t[0]){let n;for(a=e[20],n=0;n<a.length;n+=1){const r=ym(e,a,n);l[n]?l[n].p(r,t):(l[n]=vm(r),l[n].c(),l[n].m(i,null))}for(;n<l.length;n+=1)l[n].d(1);l.length=a.length}},d(e){e&&d(t),f(l,e),o=!1,s()}}}function vm(e){let t,n,r,i,o,s,a,l,f,p,y,v,b=e[71]+"",I=e[74]+"";function C(){return e[41](e[71])}return{c(){t=h("label"),n=h("input"),i=m(),o=h("span"),s=g(b),a=m(),l=h("span"),f=g(I),p=m(),A(n,"type","checkbox"),n.checked=r=e[1].includes(e[71]),A(n,"class","svelte-1a1v6k0"),A(o,"class","kind-number svelte-1a1v6k0"),A(l,"class","kind-name svelte-1a1v6k0"),A(t,"class","kind-checkbox svelte-1a1v6k0")},m(e,r){u(e,t,r),c(t,n),c(t,i),c(t,o),c(o,s),c(t,a),c(t,l),c(l,f),c(t,p),y||(v=w(n,"change",C),y=!0)},p(t,i){e=t,1048578&i[0]&&r!==(r=e[1].includes(e[71]))&&(n.checked=r),1048576&i[0]&&b!==(b=e[71]+"")&&k(s,b),1048576&i[0]&&I!==(I=e[74]+"")&&k(f,I)},d(e){e&&d(t),y=!1,v()}}}function Am(e){let t,n=e[1],r=[];for(let t=0;t<n.length;t+=1)r[t]=bm(mm(e,n,t));return{c(){t=h("div");for(let e=0;e<r.length;e+=1)r[e].c();A(t,"class","chips-container svelte-1a1v6k0")},m(e,n){u(e,t,n);for(let e=0;e<r.length;e+=1)r[e]&&r[e].m(t,null)},p(e,i){if(16777218&i[0]){let o;for(n=e[1],o=0;o<n.length;o+=1){const s=mm(e,n,o);r[o]?r[o].p(s,i):(r[o]=bm(s),r[o].c(),r[o].m(t,null))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){e&&d(t),f(r,e)}}}function bm(e){let t,n,r,i,o,s,a,l,f,p,y=e[71]+"",v=(cm[e[71]]||`Kind ${e[71]}`)+"";function b(){return e[42](e[71])}return{c(){t=h("div"),n=h("span"),r=g(y),i=g(": "),o=g(v),s=m(),a=h("button"),a.textContent="×",l=m(),A(n,"class","chip-text svelte-1a1v6k0"),A(a,"class","chip-remove svelte-1a1v6k0"),A(t,"class","chip svelte-1a1v6k0")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(n,i),c(n,o),c(t,s),c(t,a),c(t,l),f||(p=w(a,"click",b),f=!0)},p(t,n){e=t,2&n[0]&&y!==(y=e[71]+"")&&k(r,y),2&n[0]&&v!==(v=(cm[e[71]]||`Kind ${e[71]}`)+"")&&k(o,v)},d(e){e&&d(t),f=!1,p()}}}function km(e){let t,n;return{c(){t=h("div"),n=g(e[17]),A(t,"class","error-message svelte-1a1v6k0")},m(e,r){u(e,t,r),c(t,n)},p(e,t){131072&t[0]&&k(n,e[17])},d(e){e&&d(t)}}}function Im(e){let t,n=e[2],r=[];for(let t=0;t<n.length;t+=1)r[t]=Cm(gm(e,n,t));return{c(){t=h("div");for(let e=0;e<r.length;e+=1)r[e].c();A(t,"class","list-items svelte-1a1v6k0")},m(e,n){u(e,t,n);for(let e=0;e<r.length;e+=1)r[e]&&r[e].m(t,null)},p(e,i){if(67108868&i[0]){let o;for(n=e[2],o=0;o<n.length;o+=1){const s=gm(e,n,o);r[o]?r[o].p(s,i):(r[o]=Cm(s),r[o].c(),r[o].m(t,null))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){e&&d(t),f(r,e)}}}function Cm(e){let t,n,r,i,o,s,a,l,f=e[68]+"";function p(){return e[45](e[68])}return{c(){t=h("div"),n=h("span"),r=g(f),i=m(),o=h("button"),o.textContent="×",s=m(),A(n,"class","list-item-text svelte-1a1v6k0"),A(o,"class","list-item-remove svelte-1a1v6k0"),A(t,"class","list-item svelte-1a1v6k0")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(t,i),c(t,o),c(t,s),a||(l=w(o,"click",p),a=!0)},p(t,n){e=t,4&n[0]&&f!==(f=e[68]+"")&&k(r,f)},d(e){e&&d(t),a=!1,l()}}}function Em(e){let t,n;return{c(){t=h("div"),n=g(e[18]),A(t,"class","error-message svelte-1a1v6k0")},m(e,r){u(e,t,r),c(t,n)},p(e,t){262144&t[0]&&k(n,e[18])},d(e){e&&d(t)}}}function xm(e){let t,n=e[3],r=[];for(let t=0;t<n.length;t+=1)r[t]=Bm(pm(e,n,t));return{c(){t=h("div");for(let e=0;e<r.length;e+=1)r[e].c();A(t,"class","list-items svelte-1a1v6k0")},m(e,n){u(e,t,n);for(let e=0;e<r.length;e+=1)r[e]&&r[e].m(t,null)},p(e,i){if(268435464&i[0]){let o;for(n=e[3],o=0;o<n.length;o+=1){const s=pm(e,n,o);r[o]?r[o].p(s,i):(r[o]=Bm(s),r[o].c(),r[o].m(t,null))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){e&&d(t),f(r,e)}}}function Bm(e){let t,n,r,i,o,s,a,l,f=e[65]+"";function p(){return e[48](e[65])}return{c(){t=h("div"),n=h("span"),r=g(f),i=m(),o=h("button"),o.textContent="×",s=m(),A(n,"class","list-item-text svelte-1a1v6k0"),A(o,"class","list-item-remove svelte-1a1v6k0"),A(t,"class","list-item svelte-1a1v6k0")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(t,i),c(t,o),c(t,s),a||(l=w(o,"click",p),a=!0)},p(t,n){e=t,8&n[0]&&f!==(f=e[65]+"")&&k(r,f)},d(e){e&&d(t),a=!1,l()}}}function Sm(e){let t,n;return{c(){t=h("div"),n=g(e[19]),A(t,"class","error-message svelte-1a1v6k0")},m(e,r){u(e,t,r),c(t,n)},p(e,t){524288&t[0]&&k(n,e[19])},d(e){e&&d(t)}}}function Qm(e){let t,n=e[4],r=[];for(let t=0;t<n.length;t+=1)r[t]=Fm(hm(e,n,t));return{c(){t=h("div");for(let e=0;e<r.length;e+=1)r[e].c();A(t,"class","list-items svelte-1a1v6k0")},m(e,n){u(e,t,n);for(let e=0;e<r.length;e+=1)r[e]&&r[e].m(t,null)},p(e,i){if(1073741840&i[0]){let o;for(n=e[4],o=0;o<n.length;o+=1){const s=hm(e,n,o);r[o]?r[o].p(s,i):(r[o]=Fm(s),r[o].c(),r[o].m(t,null))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){e&&d(t),f(r,e)}}}function Fm(e){let t,n,r,i,o,s,a,l,f,p,y,v=e[62].name+"",b=e[62].value+"";function I(){return e[52](e[64])}return{c(){t=h("div"),n=h("span"),r=g("#"),i=g(v),o=g(": "),s=g(b),a=m(),l=h("button"),l.textContent="×",f=m(),A(n,"class","list-item-text svelte-1a1v6k0"),A(l,"class","list-item-remove svelte-1a1v6k0"),A(t,"class","list-item svelte-1a1v6k0")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(n,i),c(n,o),c(n,s),c(t,a),c(t,l),c(t,f),p||(y=w(l,"click",I),p=!0)},p(t,n){e=t,16&n[0]&&v!==(v=e[62].name+"")&&k(i,v),16&n[0]&&b!==(b=e[62].value+"")&&k(s,b)},d(e){e&&d(t),p=!1,y()}}}function Dm(t){let n,r,i;return{c(){n=h("button"),n.textContent="×",A(n,"class","clear-timestamp-btn svelte-1a1v6k0")},m(e,o){u(e,n,o),r||(i=w(n,"click",t[53]),r=!0)},p:e,d(e){e&&d(n),r=!1,i()}}}function $m(t){let n,r,i;return{c(){n=h("button"),n.textContent="×",A(n,"class","clear-timestamp-btn svelte-1a1v6k0")},m(e,o){u(e,n,o),r||(i=w(n,"click",t[54]),r=!0)},p:e,d(e){e&&d(n),r=!1,i()}}}function Rm(e){let t,n,i,o,s,a,l,f,p,g=e[11]&&Pm(e);return{c(){t=h("div"),n=h("label"),n.textContent="Filter JSON",i=m(),o=h("textarea"),s=m(),g&&g.c(),a=m(),l=h("button"),l.textContent="Apply JSON",A(n,"for","json-editor"),A(n,"class","svelte-1a1v6k0"),A(o,"id","json-editor"),A(o,"class","json-editor svelte-1a1v6k0"),A(o,"placeholder",'{"kinds": [1], "limit": 100}'),A(o,"rows","8"),A(l,"class","apply-json-btn svelte-1a1v6k0"),A(t,"class","json-editor-section svelte-1a1v6k0")},m(r,d){u(r,t,d),c(t,n),c(t,i),c(t,o),I(o,e[10]),c(t,s),g&&g.m(t,null),c(t,a),c(t,l),f||(p=[w(o,"input",e[56]),w(l,"click",e[22])],f=!0)},p(e,n){1024&n[0]&&I(o,e[10]),e[11]?g?g.p(e,n):(g=Pm(e),g.c(),g.m(t,a)):g&&(g.d(1),g=null)},d(e){e&&d(t),g&&g.d(),f=!1,r(p)}}}function Pm(e){let t,n;return{c(){t=h("div"),n=g(e[11]),A(t,"class","json-error svelte-1a1v6k0")},m(e,r){u(e,t,r),c(t,n)},p(e,t){2048&t[0]&&k(n,e[11])},d(e){e&&d(t)}}}function Tm(t){let n,i,o,s,a,l,f,p,y,v,C,E,x,S,Q,F,D,$,R,P,T,U,N,L,M,_,O,H,j,G,J,K,V,z,q,Y,W,Z,X,ee,te,ne,re,ie,oe,se,ae,le,ce,ue,de,fe,he,pe,ge,me,ye,we,ve,Ae,be,ke,Ie,Ce,Ee,xe,Be,Se,Qe,Fe,De,$e,Re,Pe,Te,Ue,Ne,Le,Me,_e=t[12]?"▼":"▶",Oe=t[1].length+"",He=t[12]&&wm(t),je=t[1].length>0&&Am(t),Ge=t[17]&&km(t),Je=t[2].length>0&&Im(t),Ke=t[18]&&Em(t),Ve=t[3].length>0&&xm(t),ze=t[19]&&Sm(t),qe=t[4].length>0&&Qm(t),Ye=t[5]&&Dm(t),We=t[6]&&$m(t),Ze=t[8]&&Rm(t);return{c(){n=h("div"),i=h("div"),o=h("div"),s=h("label"),s.textContent="Search Text (NIP-50)",a=m(),l=h("div"),f=h("input"),p=m(),y=h("label"),y.textContent="Event Kinds",v=m(),C=h("div"),E=h("button"),x=g(_e),S=g(" Select Kinds ("),Q=g(Oe),F=g(" selected)"),D=m(),He&&He.c(),$=m(),je&&je.c(),R=m(),P=h("label"),P.textContent="Authors (Pubkeys)",T=m(),U=h("div"),N=h("div"),L=h("input"),M=m(),_=h("button"),_.textContent="Add",O=m(),Ge&&Ge.c(),H=m(),Je&&Je.c(),j=m(),G=h("label"),G.textContent="Event IDs",J=m(),K=h("div"),V=h("div"),z=h("input"),q=m(),Y=h("button"),Y.textContent="Add",W=m(),Ke&&Ke.c(),Z=m(),Ve&&Ve.c(),X=m(),ee=h("label"),ee.textContent="Tags (#e, #p, #a)",te=m(),ne=h("div"),re=h("div"),ie=h("span"),ie.textContent="#",oe=m(),se=h("input"),ae=m(),le=h("input"),ce=m(),ue=h("button"),ue.textContent="Add",de=m(),ze&&ze.c(),fe=m(),qe&&qe.c(),he=m(),pe=h("label"),pe.textContent="Since",ge=m(),me=h("div"),ye=h("input"),we=m(),Ye&&Ye.c(),ve=m(),Ae=h("label"),Ae.textContent="Until",be=m(),ke=h("div"),Ie=h("input"),Ce=m(),We&&We.c(),Ee=m(),xe=h("label"),xe.textContent="Limit",Be=m(),Se=h("div"),Qe=h("input"),Fe=m(),Ze&&Ze.c(),De=m(),$e=h("div"),Re=h("button"),Re.textContent="🧹",Pe=m(),Te=h("div"),Ue=m(),Ne=h("button"),Ne.textContent="</>",A(s,"for","search-text"),A(s,"class","svelte-1a1v6k0"),A(f,"id","search-text"),A(f,"type","text"),A(f,"placeholder","Search events..."),A(f,"class","filter-input svelte-1a1v6k0"),A(l,"class","field-content svelte-1a1v6k0"),A(y,"class","svelte-1a1v6k0"),A(E,"class","picker-toggle-btn svelte-1a1v6k0"),A(C,"class","field-content svelte-1a1v6k0"),A(P,"class","svelte-1a1v6k0"),A(L,"type","text"),A(L,"placeholder","64 character hex pubkey..."),A(L,"class","filter-input svelte-1a1v6k0"),A(L,"maxlength","64"),A(_,"class","add-btn svelte-1a1v6k0"),A(N,"class","input-group svelte-1a1v6k0"),A(U,"class","field-content svelte-1a1v6k0"),A(G,"class","svelte-1a1v6k0"),A(z,"type","text"),A(z,"placeholder","64 character hex event ID..."),A(z,"class","filter-input svelte-1a1v6k0"),A(z,"maxlength","64"),A(Y,"class","add-btn svelte-1a1v6k0"),A(V,"class","input-group svelte-1a1v6k0"),A(K,"class","field-content svelte-1a1v6k0"),A(ee,"class","svelte-1a1v6k0"),A(ie,"class","hash-prefix svelte-1a1v6k0"),A(se,"type","text"),A(se,"placeholder","Tag"),A(se,"class","filter-input tag-name-input svelte-1a1v6k0"),A(se,"maxlength","1"),A(le,"type","text"),A(le,"placeholder","Value..."),A(le,"class","filter-input tag-value-input svelte-1a1v6k0"),A(ue,"class","add-btn svelte-1a1v6k0"),A(re,"class","tag-input-group svelte-1a1v6k0"),A(ne,"class","field-content svelte-1a1v6k0"),A(pe,"for","since-timestamp"),A(pe,"class","svelte-1a1v6k0"),A(ye,"id","since-timestamp"),A(ye,"type","datetime-local"),ye.value=t[32](),A(ye,"class","filter-input svelte-1a1v6k0"),A(me,"class","field-content timestamp-field svelte-1a1v6k0"),A(Ae,"for","until-timestamp"),A(Ae,"class","svelte-1a1v6k0"),A(Ie,"id","until-timestamp"),A(Ie,"type","datetime-local"),Ie.value=t[33](),A(Ie,"class","filter-input svelte-1a1v6k0"),A(ke,"class","field-content timestamp-field svelte-1a1v6k0"),A(xe,"for","limit"),A(xe,"class","svelte-1a1v6k0"),A(Qe,"id","limit"),A(Qe,"type","number"),A(Qe,"placeholder","Max events to return"),A(Qe,"class","filter-input svelte-1a1v6k0"),A(Qe,"min","1"),A(Se,"class","field-content svelte-1a1v6k0"),A(o,"class","filter-grid svelte-1a1v6k0"),A(i,"class","filter-content svelte-1a1v6k0"),A(Re,"class","clear-all-btn svelte-1a1v6k0"),A(Re,"title","Clear all filters"),A(Te,"class","spacer svelte-1a1v6k0"),A(Ne,"class","json-toggle-btn svelte-1a1v6k0"),A(Ne,"title","Edit filter JSON"),B(Ne,"active",t[8]),A($e,"class","clear-column svelte-1a1v6k0"),A(n,"class","filter-builder svelte-1a1v6k0")},m(e,r){u(e,n,r),c(n,i),c(i,o),c(o,s),c(o,a),c(o,l),c(l,f),I(f,t[0]),c(o,p),c(o,y),c(o,v),c(o,C),c(C,E),c(E,x),c(E,S),c(E,Q),c(E,F),c(C,D),He&&He.m(C,null),c(C,$),je&&je.m(C,null),c(o,R),c(o,P),c(o,T),c(o,U),c(U,N),c(N,L),I(L,t[13]),c(N,M),c(N,_),c(U,O),Ge&&Ge.m(U,null),c(U,H),Je&&Je.m(U,null),c(o,j),c(o,G),c(o,J),c(o,K),c(K,V),c(V,z),I(z,t[14]),c(V,q),c(V,Y),c(K,W),Ke&&Ke.m(K,null),c(K,Z),Ve&&Ve.m(K,null),c(o,X),c(o,ee),c(o,te),c(o,ne),c(ne,re),c(re,ie),c(re,oe),c(re,se),I(se,t[15]),c(re,ae),c(re,le),I(le,t[16]),c(re,ce),c(re,ue),c(ne,de),ze&&ze.m(ne,null),c(ne,fe),qe&&qe.m(ne,null),c(o,he),c(o,pe),c(o,ge),c(o,me),c(me,ye),c(me,we),Ye&&Ye.m(me,null),c(o,ve),c(o,Ae),c(o,be),c(o,ke),c(ke,Ie),c(ke,Ce),We&&We.m(ke,null),c(o,Ee),c(o,xe),c(o,Be),c(o,Se),c(Se,Qe),I(Qe,t[7]),c(o,Fe),Ze&&Ze.m(o,null),c(n,De),c(n,$e),c($e,Re),c($e,Pe),c($e,Te),c($e,Ue),c($e,Ne),Le||(Me=[w(f,"input",t[38]),w(E,"click",t[39]),w(L,"input",t[43]),w(L,"keydown",t[44]),w(_,"click",t[25]),w(z,"input",t[46]),w(z,"keydown",t[47]),w(Y,"click",t[27]),w(se,"input",t[49]),w(le,"input",t[50]),w(le,"keydown",t[51]),w(ue,"click",t[29]),w(ye,"change",t[34]),w(Ie,"change",t[35]),w(Qe,"input",t[55]),w(Re,"click",t[31]),w(Ne,"click",t[57])],Le=!0)},p(e,t){1&t[0]&&f.value!==e[0]&&I(f,e[0]),4096&t[0]&&_e!==(_e=e[12]?"▼":"▶")&&k(x,_e),2&t[0]&&Oe!==(Oe=e[1].length+"")&&k(Q,Oe),e[12]?He?He.p(e,t):(He=wm(e),He.c(),He.m(C,$)):He&&(He.d(1),He=null),e[1].length>0?je?je.p(e,t):(je=Am(e),je.c(),je.m(C,null)):je&&(je.d(1),je=null),8192&t[0]&&L.value!==e[13]&&I(L,e[13]),e[17]?Ge?Ge.p(e,t):(Ge=km(e),Ge.c(),Ge.m(U,H)):Ge&&(Ge.d(1),Ge=null),e[2].length>0?Je?Je.p(e,t):(Je=Im(e),Je.c(),Je.m(U,null)):Je&&(Je.d(1),Je=null),16384&t[0]&&z.value!==e[14]&&I(z,e[14]),e[18]?Ke?Ke.p(e,t):(Ke=Em(e),Ke.c(),Ke.m(K,Z)):Ke&&(Ke.d(1),Ke=null),e[3].length>0?Ve?Ve.p(e,t):(Ve=xm(e),Ve.c(),Ve.m(K,null)):Ve&&(Ve.d(1),Ve=null),32768&t[0]&&se.value!==e[15]&&I(se,e[15]),65536&t[0]&&le.value!==e[16]&&I(le,e[16]),e[19]?ze?ze.p(e,t):(ze=Sm(e),ze.c(),ze.m(ne,fe)):ze&&(ze.d(1),ze=null),e[4].length>0?qe?qe.p(e,t):(qe=Qm(e),qe.c(),qe.m(ne,null)):qe&&(qe.d(1),qe=null),e[5]?Ye?Ye.p(e,t):(Ye=Dm(e),Ye.c(),Ye.m(me,null)):Ye&&(Ye.d(1),Ye=null),e[6]?We?We.p(e,t):(We=$m(e),We.c(),We.m(ke,null)):We&&(We.d(1),We=null),128&t[0]&&b(Qe.value)!==e[7]&&I(Qe,e[7]),e[8]?Ze?Ze.p(e,t):(Ze=Rm(e),Ze.c(),Ze.m(o,null)):Ze&&(Ze.d(1),Ze=null),256&t[0]&&B(Ne,"active",e[8])},i:e,o:e,d(e){e&&d(n),He&&He.d(),je&&je.d(),Ge&&Ge.d(),Je&&Je.d(),Ke&&Ke.d(),Ve&&Ve.d(),ze&&ze.d(),qe&&qe.d(),Ye&&Ye.d(),We&&We.d(),Ze&&Ze.d(),Le=!1,r(Me)}}}function Um(e,t,n){let r,i;const o=R();let{searchText:s=""}=t,{selectedKinds:a=[]}=t,{pubkeys:l=[]}=t,{eventIds:c=[]}=t,{tags:u=[]}=t,{sinceTimestamp:d=null}=t,{untilTimestamp:f=null}=t,{limit:h=null}=t,{showJsonEditor:p=!1}=t,g="",m="",y=!1,w="",v="",A="",k="",I="",C="",E="",x="",B=null,S=!1;function Q(e){a.includes(e)?n(1,a=a.filter(t=>t!==e)):n(1,a=[...a,e].sort((e,t)=>e-t))}function F(e){n(1,a=a.filter(t=>t!==e))}function D(){const e=v.trim();e&&(um(e,64)?l.includes(e)?n(17,C="Pubkey already added"):(n(2,l=[...l,e]),n(13,v=""),n(17,C="")):n(17,C="Invalid pubkey: must be 64 character hex string"))}function P(e){n(2,l=l.filter(t=>t!==e))}function T(){const e=A.trim();e&&(um(e,64)?c.includes(e)?n(18,E="Event ID already added"):(n(3,c=[...c,e]),n(14,A=""),n(18,E="")):n(18,E="Invalid event ID: must be 64 character hex string"))}function U(e){n(3,c=c.filter(t=>t!==e))}function N(){const e=k.trim(),t=I.trim();e&&t&&(/^[a-zA-Z]$/.test(e)?u.some(n=>n.name===e&&n.value===t)?n(19,x="Tag already added"):(n(4,u=[...u,{name:e,value:t}]),n(15,k=""),n(16,I=""),n(19,x="")):n(19,x="Invalid tag name: must be single letter a-z or A-Z"))}function L(e){n(4,u=u.filter((t,n)=>n!==e))}function M(){o("apply",{searchText:s,selectedKinds:a,pubkeys:l,eventIds:c,tags:u,sinceTimestamp:d,untilTimestamp:f,limit:h})}$(()=>{B&&clearTimeout(B)});return e.$$set=e=>{"searchText"in e&&n(0,s=e.searchText),"selectedKinds"in e&&n(1,a=e.selectedKinds),"pubkeys"in e&&n(2,l=e.pubkeys),"eventIds"in e&&n(3,c=e.eventIds),"tags"in e&&n(4,u=e.tags),"sinceTimestamp"in e&&n(5,d=e.sinceTimestamp),"untilTimestamp"in e&&n(6,f=e.untilTimestamp),"limit"in e&&n(7,h=e.limit),"showJsonEditor"in e&&n(8,p=e.showJsonEditor)},e.$$.update=()=>{if(256&e.$$.dirty[0]&&p){const e=function(){const e={};return a.length>0&&(e.kinds=a),l.length>0&&(e.authors=l),c.length>0&&(e.ids=c),d&&(e.since=d),f&&(e.until=f),h&&(e.limit=h),s&&(e.search=s),u.forEach(t=>{const n=`#${t.name}`;e[n]||(e[n]=[]),e[n].push(t.value)}),e}();n(10,g=JSON.stringify(e,null,2))}255&e.$$.dirty[0]|32&e.$$.dirty[1]&&(S?(B&&clearTimeout(B),B=setTimeout(()=>{M()},1e3)):n(36,S=!0)),512&e.$$.dirty[0]|64&e.$$.dirty[1]&&n(20,i=r.filter(e=>e.kind.toString().includes(w)||e.name.toLowerCase().includes(w.toLowerCase())))},n(37,r=Object.entries(cm).map(([e,t])=>({kind:parseInt(e),name:t})).sort((e,t)=>e.kind-t.kind)),[s,a,l,c,u,d,f,h,p,w,g,m,y,v,A,k,I,C,E,x,i,o,function(){try{const e=JSON.parse(g);n(11,m=""),n(1,a=e.kinds||[]),n(2,l=e.authors||[]),n(3,c=e.ids||[]),n(5,d=e.since||null),n(6,f=e.until||null),n(7,h=e.limit||null),n(0,s=e.search||""),n(4,u=[]),Object.keys(e).forEach(t=>{if(t.startsWith("#")&&2===t.length){const n=t.slice(1);(Array.isArray(e[t])?e[t]:[e[t]]).forEach(e=>{u.push({name:n,value:String(e)})})}}),n(4,u),B&&clearTimeout(B),M()}catch(e){n(11,m="Invalid JSON: "+e.message)}},Q,F,D,P,T,U,N,L,function(){n(0,s=""),n(1,a=[]),n(2,l=[]),n(3,c=[]),n(4,u=[]),n(5,d=null),n(6,f=null),n(7,h=null),o("clear")},function(){return d?dm(d):""},function(){return f?dm(f):""},function(e){const t=e.target.value;n(5,d=t?fm(t):null)},function(e){const t=e.target.value;n(6,f=t?fm(t):null)},S,r,function(){s=this.value,n(0,s)},()=>n(12,y=!y),function(){w=this.value,n(9,w)},e=>Q(e),e=>F(e),function(){v=this.value,n(13,v)},e=>"Enter"===e.key&&D(),e=>P(e),function(){A=this.value,n(14,A)},e=>"Enter"===e.key&&T(),e=>U(e),function(){k=this.value,n(15,k)},function(){I=this.value,n(16,I)},e=>"Enter"===e.key&&N(),e=>L(e),()=>n(5,d=null),()=>n(6,f=null),function(){h=b(this.value),n(7,h)},function(){g=this.value,n(10,g),n(8,p)},()=>o("toggleJson")]}class Nm extends oe{constructor(e){super(),ie(this,e,Um,Tm,o,{searchText:0,selectedKinds:1,pubkeys:2,eventIds:3,tags:4,sinceTimestamp:5,untilTimestamp:6,limit:7,showJsonEditor:8},null,[-1,-1,-1])}}function Lm(e,t,n){const r=e.slice();return r[28]=t[n],r}function Mm(e,t,n){const r=e.slice();return r[31]=t[n],r}function _m(t){let n;return{c(){n=h("div"),n.innerHTML="<p>❌ Read, write, admin, or owner permission required to view all\n events.</p>",A(n,"class","permission-denied svelte-5kb1ec")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Om(e){let t,n,r,i;function o(e,t){return e[4].length>0?jm:e[6]?void 0:Hm}let s=o(e),a=s&&s(e),l=e[6]&&Wm();return{c(){t=h("div"),a&&a.c(),n=m(),l&&l.c(),A(t,"class","events-view-content svelte-5kb1ec")},m(o,s){u(o,t,s),a&&a.m(t,null),c(t,n),l&&l.m(t,null),r||(i=w(t,"scroll",e[9]),r=!0)},p(e,r){s===(s=o(e))&&a?a.p(e,r):(a&&a.d(1),a=s&&s(e),a&&(a.c(),a.m(t,n))),e[6]?l||(l=Wm(),l.c(),l.m(t,null)):l&&(l.d(1),l=null)},d(e){e&&d(t),a&&a.d(),l&&l.d(),r=!1,i()}}}function Hm(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No events found.</p>",A(n,"class","no-events svelte-5kb1ec")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function jm(e){let t,n=e[4],r=[];for(let t=0;t<n.length;t+=1)r[t]=Ym(Lm(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(7228&i[0]){let o;for(n=e[4],o=0;o<n.length;o+=1){const s=Lm(e,n,o);r[o]?r[o].p(s,i):(r[o]=Ym(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function Gm(e){let t,n,r=oy(e[28].content)+"";return{c(){t=h("div"),n=g(r),A(t,"class","event-content-single-line svelte-5kb1ec")},m(e,r){u(e,t,r),c(t,n)},p(e,t){16&t[0]&&r!==(r=oy(e[28].content)+"")&&k(n,r)},d(e){e&&d(t)}}}function Jm(e){let t,n,r,i=e[28].tags&&e[28].tags.length>0&&Km(e);return{c(){t=h("div"),n=h("span"),n.textContent="🗑️ Delete Event",r=m(),i&&i.c(),A(n,"class","delete-event-label svelte-5kb1ec"),A(t,"class","delete-event-info svelte-5kb1ec")},m(e,o){u(e,t,o),c(t,n),c(t,r),i&&i.m(t,null)},p(e,n){e[28].tags&&e[28].tags.length>0?i?i.p(e,n):(i=Km(e),i.c(),i.m(t,null)):i&&(i.d(1),i=null)},d(e){e&&d(t),i&&i.d()}}}function Km(e){let t,n=e[28].tags.filter(sy),r=[];for(let t=0;t<n.length;t+=1)r[t]=Vm(Mm(e,n,t));return{c(){t=h("div");for(let e=0;e<r.length;e+=1)r[e].c();A(t,"class","delete-targets svelte-5kb1ec")},m(e,n){u(e,t,n);for(let e=0;e<r.length;e+=1)r[e]&&r[e].m(t,null)},p(e,i){if(16&i[0]){let o;for(n=e[28].tags.filter(sy),o=0;o<n.length;o+=1){const s=Mm(e,n,o);r[o]?r[o].p(s,i):(r[o]=Vm(s),r[o].c(),r[o].m(t,null))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){e&&d(t),f(r,e)}}}function Vm(e){let t,n,r,i,o,s=e[31][1].slice(0,8)+"",a=e[31][1].slice(-8)+"";return{c(){t=h("span"),n=g("Target: "),r=g(s),i=g("..."),o=g(a),A(t,"class","delete-target svelte-5kb1ec")},m(e,s){u(e,t,s),c(t,n),c(t,r),c(t,i),c(t,o)},p(e,t){16&t[0]&&s!==(s=e[31][1].slice(0,8)+"")&&k(r,s),16&t[0]&&a!==(a=e[31][1].slice(-8)+"")&&k(o,a)},d(e){e&&d(t)}}}function zm(e){let t,n,r;function i(){return e[19](e[28])}return{c(){t=h("button"),t.textContent="🗑️",A(t,"class","delete-btn svelte-5kb1ec")},m(e,o){u(e,t,o),n||(r=w(t,"click",v(i)),n=!0)},p(t,n){e=t},d(e){e&&d(t),n=!1,r()}}}function qm(e){let t,n,r,i,o,s,a,l,f=JSON.stringify(e[28],null,2)+"";function p(...t){return e[22](e[28],...t)}return{c(){t=h("div"),n=h("div"),r=h("pre"),i=g(f),o=m(),s=h("button"),s.textContent="📋",A(r,"class","event-json svelte-5kb1ec"),A(s,"class","copy-json-btn svelte-5kb1ec"),A(s,"title","Copy minified JSON to clipboard"),A(n,"class","json-container svelte-5kb1ec"),A(t,"class","events-view-details svelte-5kb1ec")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(r,i),c(n,o),c(n,s),a||(l=w(s,"click",v(p)),a=!0)},p(t,n){e=t,16&n[0]&&f!==(f=JSON.stringify(e[28],null,2)+"")&&k(i,f)},d(e){e&&d(t),a=!1,l()}}}function Ym(e){let t,n,i,o,s,a,l,f,p,y,v,b,I,C,E,x,S,Q,F,D,$,R,P,T,U=ny(e[28].pubkey)+"",N=e[28].kind+"",L=ry(e[28].kind)+"",M=iy(e[28].created_at)+"",_=e[5].has(e[28].id);function O(e,t){return 5===e[28].kind?Jm:Gm}let H=O(e),j=H(e),G=5!==e[28].kind&&("admin"===e[2]||"owner"===e[2]||"write"===e[2]&&e[28].pubkey&&e[28].pubkey===e[3])&&zm(e);function J(){return e[20](e[28])}function K(...t){return e[21](e[28],...t)}let V=_&&qm(e);return{c(){t=h("div"),n=h("div"),i=h("div"),i.innerHTML='<div class="avatar-placeholder svelte-5kb1ec">👤</div>',o=m(),s=h("div"),a=h("div"),l=g(U),f=m(),p=h("div"),y=h("span"),v=g(N),b=m(),I=h("span"),C=g(L),E=m(),x=h("div"),S=h("div"),Q=g(M),F=m(),j.c(),D=m(),G&&G.c(),$=m(),V&&V.c(),R=m(),A(i,"class","events-view-avatar svelte-5kb1ec"),A(a,"class","events-view-author svelte-5kb1ec"),A(y,"class","kind-number svelte-5kb1ec"),B(y,"delete-event",5===e[28].kind),A(I,"class","kind-name svelte-5kb1ec"),A(p,"class","events-view-kind svelte-5kb1ec"),A(s,"class","events-view-info svelte-5kb1ec"),A(S,"class","event-timestamp svelte-5kb1ec"),A(x,"class","events-view-content svelte-5kb1ec"),A(n,"class","events-view-row svelte-5kb1ec"),A(n,"role","button"),A(n,"tabindex","0"),A(t,"class","events-view-item svelte-5kb1ec"),B(t,"expanded",e[5].has(e[28].id))},m(e,r){u(e,t,r),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),c(a,l),c(s,f),c(s,p),c(p,y),c(y,v),c(p,b),c(p,I),c(I,C),c(n,E),c(n,x),c(x,S),c(S,Q),c(x,F),j.m(x,null),c(n,D),G&&G.m(n,null),c(t,$),V&&V.m(t,null),c(t,R),P||(T=[w(n,"click",J),w(n,"keydown",K)],P=!0)},p(r,i){e=r,16&i[0]&&U!==(U=ny(e[28].pubkey)+"")&&k(l,U),16&i[0]&&N!==(N=e[28].kind+"")&&k(v,N),16&i[0]&&B(y,"delete-event",5===e[28].kind),16&i[0]&&L!==(L=ry(e[28].kind)+"")&&k(C,L),16&i[0]&&M!==(M=iy(e[28].created_at)+"")&&k(Q,M),H===(H=O(e))&&j?j.p(e,i):(j.d(1),j=H(e),j&&(j.c(),j.m(x,null))),5!==e[28].kind&&("admin"===e[2]||"owner"===e[2]||"write"===e[2]&&e[28].pubkey&&e[28].pubkey===e[3])?G?G.p(e,i):(G=zm(e),G.c(),G.m(n,null)):G&&(G.d(1),G=null),48&i[0]&&(_=e[5].has(e[28].id)),_?V?V.p(e,i):(V=qm(e),V.c(),V.m(t,R)):V&&(V.d(1),V=null),48&i[0]&&B(t,"expanded",e[5].has(e[28].id))},d(e){e&&d(t),j.d(),G&&G.d(),V&&V.d(),P=!1,r(T)}}}function Wm(e){let t;return{c(){t=h("div"),t.innerHTML='<div class="spinner svelte-5kb1ec"></div> \n <p>Loading events...</p>',A(t,"class","loading-events svelte-5kb1ec")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Zm(e){let t,n,i,o,s,a,l,f,p,y,v,b,k,I,C,E,x,S,Q,F,D,$,R,P;function T(e,t){return e[6]?ey:Xm}i=new Nm({props:{showJsonEditor:e[8]}}),i.$on("apply",e[17]),i.$on("clear",e[18]),i.$on("toggleJson",e[16]);let U=T(e),N=U(e);return{c(){t=h("div"),n=h("div"),ee(i.$$.fragment),o=m(),s=h("div"),a=h("div"),l=h("button"),l.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-5kb1ec"><polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"></polygon></svg>',f=m(),p=h("div"),y=h("label"),v=h("input"),b=m(),k=h("span"),I=m(),C=h("span"),C.textContent="Only show my events",E=m(),x=h("div"),S=h("button"),Q=g("🔄 Load More"),F=m(),D=h("button"),N.c(),A(n,"class","filter-panel svelte-5kb1ec"),B(n,"open",e[7]),A(l,"class","filter-btn svelte-5kb1ec"),A(l,"title","Filter events"),B(l,"active",e[7]),A(v,"type","checkbox"),A(v,"class","svelte-5kb1ec"),A(k,"class","toggle-slider svelte-5kb1ec"),A(C,"class","toggle-label svelte-5kb1ec"),A(y,"class","toggle-container svelte-5kb1ec"),A(p,"class","events-view-toggle svelte-5kb1ec"),A(a,"class","events-view-left svelte-5kb1ec"),A(S,"class","refresh-btn svelte-5kb1ec"),S.disabled=e[6],A(D,"class","reload-btn svelte-5kb1ec"),D.disabled=e[6],A(x,"class","events-view-buttons svelte-5kb1ec"),A(s,"class","events-view-header svelte-5kb1ec"),A(t,"class","events-view-footer svelte-5kb1ec")},m(r,d){u(r,t,d),c(t,n),te(i,n,null),c(t,o),c(t,s),c(s,a),c(a,l),c(a,f),c(a,p),c(p,y),c(y,v),v.checked=e[0],c(y,b),c(y,k),c(y,I),c(y,C),c(s,E),c(s,x),c(x,S),c(S,Q),c(x,F),c(x,D),N.m(D,null),$=!0,R||(P=[w(l,"click",e[15]),w(v,"change",e[23]),w(v,"change",e[24]),w(S,"click",e[25]),w(D,"click",e[26])],R=!0)},p(e,t){const r={};256&t[0]&&(r.showJsonEditor=e[8]),i.$set(r),(!$||128&t[0])&&B(n,"open",e[7]),(!$||128&t[0])&&B(l,"active",e[7]),1&t[0]&&(v.checked=e[0]),(!$||64&t[0])&&(S.disabled=e[6]),U!==(U=T(e))&&(N.d(1),N=U(e),N&&(N.c(),N.m(D,null))),(!$||64&t[0])&&(D.disabled=e[6])},i(e){$||(W(i.$$.fragment,e),$=!0)},o(e){Z(i.$$.fragment,e),$=!1},d(e){e&&d(t),ne(i),N.d(),R=!1,r(P)}}}function Xm(e){let t;return{c(){t=g("🔄")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function ey(e){let t;return{c(){t=h("div"),A(t,"class","spinner svelte-5kb1ec")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function ty(e){let t,n,r;function i(e,t){return!e[1]||"read"!==e[2]&&"write"!==e[2]&&"admin"!==e[2]&&"owner"!==e[2]?_m:Om}let o=i(e),s=o(e),a=e[1]&&("read"===e[2]||"write"===e[2]||"admin"===e[2]||"owner"===e[2])&&Zm(e);return{c(){t=h("div"),s.c(),n=m(),a&&a.c(),A(t,"class","events-view-container svelte-5kb1ec")},m(e,i){u(e,t,i),s.m(t,null),c(t,n),a&&a.m(t,null),r=!0},p(e,r){o===(o=i(e))&&s?s.p(e,r):(s.d(1),s=o(e),s&&(s.c(),s.m(t,n))),!e[1]||"read"!==e[2]&&"write"!==e[2]&&"admin"!==e[2]&&"owner"!==e[2]?a&&(q(),Z(a,1,1,()=>{a=null}),Y()):a?(a.p(e,r),6&r[0]&&W(a,1)):(a=Zm(e),a.c(),W(a,1),a.m(t,null))},i(e){r||(W(a),r=!0)},o(e){Z(a),r=!1},d(e){e&&d(t),s.d(),a&&a.d()}}}function ny(e){return e?e.slice(0,8)+"..."+e.slice(-8):""}function ry(e){return{0:"Profile",1:"Text Note",2:"Recommend Relay",3:"Contacts",4:"Encrypted DM",5:"Delete",6:"Repost",7:"Reaction",8:"Badge Award",16:"Generic Repost",40:"Channel Creation",41:"Channel Metadata",42:"Channel Message",43:"Channel Hide Message",44:"Channel Mute User",1984:"Reporting",9734:"Zap Request",9735:"Zap",1e4:"Mute List",10001:"Pin List",10002:"Relay List",22242:"Client Auth",24133:"Nostr Connect",27235:"HTTP Auth",3e4:"Categorized People",30001:"Categorized Bookmarks",30008:"Profile Badges",30009:"Badge Definition",30017:"Create or update a stall",30018:"Create or update a product",30023:"Long-form Content",30024:"Draft Long-form Content",30078:"Application-specific Data",30311:"Live Event",30315:"User Statuses",30402:"Classified Listing",30403:"Draft Classified Listing",31922:"Date-Based Calendar Event",31923:"Time-Based Calendar Event",31924:"Calendar",31925:"Calendar Event RSVP",31989:"Handler recommendation",31990:"Handler information",34550:"Community Definition"}[e]||`Kind ${e}`}function iy(e){return new Date(1e3*e).toLocaleString()}function oy(e){return e?e.length>100?e.slice(0,100)+"...":e:""}const sy=e=>"e"===e[0];function ay(e,t,n){let{isLoggedIn:r=!1}=t,{userRole:i=""}=t,{userPubkey:o=""}=t,{filteredEvents:s=[]}=t,{expandedEvents:a=new Set}=t,{isLoadingEvents:l=!1}=t,{showOnlyMyEvents:c=!1}=t,{showFilterBuilder:u=!1}=t;const d=R();let f=!1;function h(e){d("toggleEventExpansion",e)}function p(e){d("deleteEvent",e)}function g(e,t){d("copyEventToClipboard",{event:e,e:t})}function m(){d("toggleChange")}function y(e,t){d("loadAllEvents",{refresh:e,authors:t})}return e.$$set=e=>{"isLoggedIn"in e&&n(1,r=e.isLoggedIn),"userRole"in e&&n(2,i=e.userRole),"userPubkey"in e&&n(3,o=e.userPubkey),"filteredEvents"in e&&n(4,s=e.filteredEvents),"expandedEvents"in e&&n(5,a=e.expandedEvents),"isLoadingEvents"in e&&n(6,l=e.isLoadingEvents),"showOnlyMyEvents"in e&&n(0,c=e.showOnlyMyEvents),"showFilterBuilder"in e&&n(7,u=e.showFilterBuilder)},[c,r,i,o,s,a,l,u,f,function(e){d("scroll",e)},h,p,g,m,y,function(){d("toggleFilterBuilder")},function(){n(8,f=!f)},function(e){d("filterApply",e.detail)},function(){d("filterClear")},e=>p(e.id),e=>h(e.id),(e,t)=>"Enter"===t.key&&h(e.id),(e,t)=>g(e,t),function(){c=this.checked,n(0,c)},()=>m(),()=>{y(!1,c&&o?[o]:null)},()=>{y(!0,c&&o?[o]:null)}]}class ly extends oe{constructor(e){super(),ie(this,e,ay,ty,o,{isLoggedIn:1,userRole:2,userPubkey:3,filteredEvents:4,expandedEvents:5,isLoadingEvents:6,showOnlyMyEvents:0,showFilterBuilder:7},null,[-1,-1])}}const cy=[{kind:0,name:"Metadata",description:"User profile information (name, about, picture, nip05, etc.)",nip:"01",isReplaceable:!0,template:{kind:0,content:"",tags:[]}},{kind:1,name:"Short Text Note",description:"Short-form text post (like a tweet)",nip:"01",template:{kind:1,content:"",tags:[]}},{kind:2,name:"Recommend Relay",description:"Relay recommendation",nip:"01",deprecated:!0,template:{kind:2,content:"",tags:[]}},{kind:3,name:"Follows",description:"Following list with optional relay hints",nip:"02",isReplaceable:!0,template:{kind:3,content:"",tags:[]}},{kind:4,name:"Encrypted Direct Message",description:"Private message using NIP-04 encryption",nip:"04",deprecated:!0,template:{kind:4,content:"",tags:[]}},{kind:5,name:"Event Deletion Request",description:"Request to delete events",nip:"09",template:{kind:5,content:"",tags:[]}},{kind:6,name:"Repost",description:"Share/repost another text note",nip:"18",template:{kind:6,content:"",tags:[]}},{kind:7,name:"Reaction",description:"Like, emoji reaction to an event",nip:"25",template:{kind:7,content:"",tags:[]}},{kind:8,name:"Badge Award",description:"Award a badge to someone",nip:"58",template:{kind:8,content:"",tags:[]}},{kind:9,name:"Chat Message",description:"Chat message",nip:"C7",template:{kind:9,content:"",tags:[]}},{kind:10,name:"Group Chat Threaded Reply",description:"Threaded reply in group chat",nip:"29",deprecated:!0,template:{kind:10,content:"",tags:[]}},{kind:11,name:"Thread",description:"Thread event",nip:"7D",template:{kind:11,content:"",tags:[]}},{kind:12,name:"Group Thread Reply",description:"Reply in group thread",nip:"29",deprecated:!0,template:{kind:12,content:"",tags:[]}},{kind:13,name:"Seal",description:"Sealed/encrypted event wrapper",nip:"59",template:{kind:13,content:"",tags:[]}},{kind:14,name:"Direct Message",description:"Private direct message using NIP-17",nip:"17",template:{kind:14,content:"",tags:[]}},{kind:15,name:"File Message",description:"File message in DMs",nip:"17",template:{kind:15,content:"",tags:[]}},{kind:16,name:"Generic Repost",description:"Repost any event kind",nip:"18",template:{kind:16,content:"",tags:[]}},{kind:17,name:"Reaction to Website",description:"Reaction to a website URL",nip:"25",template:{kind:17,content:"",tags:[]}},{kind:20,name:"Picture",description:"Picture-first feed post",nip:"68",template:{kind:20,content:"",tags:[]}},{kind:21,name:"Video Event",description:"Horizontal video event",nip:"71",template:{kind:21,content:"",tags:[]}},{kind:22,name:"Short-form Video",description:"Short-form portrait video (like TikTok)",nip:"71",template:{kind:22,content:"",tags:[]}},{kind:40,name:"Channel Creation",description:"Create a public chat channel",nip:"28",template:{kind:40,content:"",tags:[]}},{kind:41,name:"Channel Metadata",description:"Set channel name, about, picture",nip:"28",template:{kind:41,content:"",tags:[]}},{kind:42,name:"Channel Message",description:"Post message in channel",nip:"28",template:{kind:42,content:"",tags:[]}},{kind:43,name:"Channel Hide Message",description:"Hide a message in channel",nip:"28",template:{kind:43,content:"",tags:[]}},{kind:44,name:"Channel Mute User",description:"Mute a user in channel",nip:"28",template:{kind:44,content:"",tags:[]}},{kind:62,name:"Request to Vanish",description:"Request permanent deletion of all user data",nip:"62",template:{kind:62,content:"",tags:[]}},{kind:64,name:"Chess (PGN)",description:"Chess game in PGN format",nip:"64",template:{kind:64,content:"",tags:[]}},{kind:443,name:"KeyPackage",description:"Marmot protocol key package",nip:null,spec:"Marmot",template:{kind:443,content:"",tags:[]}},{kind:444,name:"Welcome Message",description:"Marmot protocol welcome message",nip:null,spec:"Marmot",template:{kind:444,content:"",tags:[]}},{kind:445,name:"Group Event",description:"Marmot protocol group event",nip:null,spec:"Marmot",template:{kind:445,content:"",tags:[]}},{kind:818,name:"Merge Requests",description:"Git merge request",nip:"54",template:{kind:818,content:"",tags:[]}},{kind:1018,name:"Poll Response",description:"Response to a poll",nip:"88",template:{kind:1018,content:"",tags:[]}},{kind:1021,name:"Bid",description:"Auction bid",nip:"15",template:{kind:1021,content:"",tags:[]}},{kind:1022,name:"Bid Confirmation",description:"Confirmation of auction bid",nip:"15",template:{kind:1022,content:"",tags:[]}},{kind:1040,name:"OpenTimestamps",description:"OpenTimestamps attestation",nip:"03",template:{kind:1040,content:"",tags:[]}},{kind:1059,name:"Gift Wrap",description:"Encrypted gift-wrapped event",nip:"59",template:{kind:1059,content:"",tags:[]}},{kind:1060,name:"Gift Wrap (Kind 4)",description:"Gift wrap variant for NIP-04 compatibility",nip:"59",template:{kind:1060,content:"",tags:[]}},{kind:1063,name:"File Metadata",description:"Metadata for shared files",nip:"94",template:{kind:1063,content:"",tags:[]}},{kind:1068,name:"Poll",description:"Create a poll",nip:"88",template:{kind:1068,content:"",tags:[]}},{kind:1111,name:"Comment",description:"Comment on events or external content",nip:"22",template:{kind:1111,content:"",tags:[]}},{kind:1222,name:"Voice Message",description:"Voice message",nip:"A0",template:{kind:1222,content:"",tags:[]}},{kind:1244,name:"Voice Message Comment",description:"Comment on voice message",nip:"A0",template:{kind:1244,content:"",tags:[]}},{kind:1311,name:"Live Chat Message",description:"Message in live stream chat",nip:"53",template:{kind:1311,content:"",tags:[]}},{kind:1337,name:"Code Snippet",description:"Code snippet post",nip:"C0",template:{kind:1337,content:"",tags:[]}},{kind:1517,name:"Bitcoin Block",description:"Bitcoin block data",nip:null,spec:"Nostrocket",template:{kind:1517,content:"",tags:[]}},{kind:1617,name:"Patches",description:"Git patches",nip:"34",template:{kind:1617,content:"",tags:[]}},{kind:1618,name:"Pull Requests",description:"Git pull request",nip:"34",template:{kind:1618,content:"",tags:[]}},{kind:1619,name:"Pull Request Updates",description:"Updates to git pull request",nip:"34",template:{kind:1619,content:"",tags:[]}},{kind:1621,name:"Issues",description:"Git issues",nip:"34",template:{kind:1621,content:"",tags:[]}},{kind:1622,name:"Git Replies",description:"Replies on git objects",nip:"34",deprecated:!0,template:{kind:1622,content:"",tags:[]}},{kind:1630,name:"Status",description:"Git status",nip:"34",template:{kind:1630,content:"",tags:[]}},{kind:1631,name:"Status",description:"Git status",nip:"34",template:{kind:1631,content:"",tags:[]}},{kind:1632,name:"Status",description:"Git status",nip:"34",template:{kind:1632,content:"",tags:[]}},{kind:1633,name:"Status",description:"Git status",nip:"34",template:{kind:1633,content:"",tags:[]}},{kind:1808,name:"Live Stream",description:"Live streaming event",nip:null,spec:"zap.stream",template:{kind:1808,content:"",tags:[]}},{kind:1971,name:"Problem Tracker",description:"Problem tracking",nip:null,spec:"Nostrocket",template:{kind:1971,content:"",tags:[]}},{kind:1984,name:"Reporting",description:"Report content or users",nip:"56",template:{kind:1984,content:"",tags:[]}},{kind:1985,name:"Label",description:"Label/tag content with namespace",nip:"32",template:{kind:1985,content:"",tags:[]}},{kind:1986,name:"Relay Reviews",description:"Reviews of relays",nip:null,template:{kind:1986,content:"",tags:[]}},{kind:1987,name:"AI Embeddings",description:"AI embeddings/vector lists",nip:null,spec:"NKBIP-02",template:{kind:1987,content:"",tags:[]}},{kind:2003,name:"Torrent",description:"Torrent magnet link",nip:"35",template:{kind:2003,content:"",tags:[]}},{kind:2004,name:"Torrent Comment",description:"Comment on torrent",nip:"35",template:{kind:2004,content:"",tags:[]}},{kind:2022,name:"Coinjoin Pool",description:"Coinjoin coordination",nip:null,spec:"joinstr",template:{kind:2022,content:"",tags:[]}},{kind:4550,name:"Community Post Approval",description:"Approve post in community",nip:"72",template:{kind:4550,content:"",tags:[]}},{kind:5e3,name:"Job Request",description:"Data vending machine job request (start of range)",nip:"90",template:{kind:5e3,content:"",tags:[]}},{kind:6e3,name:"Job Result",description:"Data vending machine job result (start of range)",nip:"90",template:{kind:6e3,content:"",tags:[]}},{kind:7e3,name:"Job Feedback",description:"Feedback on job request/result",nip:"90",template:{kind:7e3,content:"",tags:[]}},{kind:7374,name:"Reserved Cashu Wallet Tokens",description:"Reserved Cashu wallet tokens",nip:"60",template:{kind:7374,content:"",tags:[]}},{kind:7375,name:"Cashu Wallet Tokens",description:"Cashu wallet tokens",nip:"60",template:{kind:7375,content:"",tags:[]}},{kind:7376,name:"Cashu Wallet History",description:"Cashu wallet transaction history",nip:"60",template:{kind:7376,content:"",tags:[]}},{kind:7516,name:"Geocache Log",description:"Geocaching log entry",nip:null,spec:"geocaching",template:{kind:7516,content:"",tags:[]}},{kind:7517,name:"Geocache Proof of Find",description:"Proof of geocache find",nip:null,spec:"geocaching",template:{kind:7517,content:"",tags:[]}},{kind:8e3,name:"Add User",description:"Add user to group",nip:"43",template:{kind:8e3,content:"",tags:[]}},{kind:8001,name:"Remove User",description:"Remove user from group",nip:"43",template:{kind:8001,content:"",tags:[]}},{kind:9e3,name:"Group Control Events",description:"Group control events (start of range)",nip:"29",template:{kind:9e3,content:"",tags:[]}},{kind:9041,name:"Zap Goal",description:"Fundraising goal for zaps",nip:"75",template:{kind:9041,content:"",tags:[]}},{kind:9321,name:"Nutzap",description:"Cashu nutzap",nip:"61",template:{kind:9321,content:"",tags:[]}},{kind:9467,name:"Tidal Login",description:"Tidal streaming login",nip:null,spec:"Tidal-nostr",template:{kind:9467,content:"",tags:[]}},{kind:9734,name:"Zap Request",description:"Request Lightning payment",nip:"57",template:{kind:9734,content:"",tags:[]}},{kind:9735,name:"Zap",description:"Lightning payment receipt",nip:"57",template:{kind:9735,content:"",tags:[]}},{kind:9802,name:"Highlights",description:"Highlighted text selection",nip:"84",template:{kind:9802,content:"",tags:[]}},{kind:1e4,name:"Mute List",description:"List of muted users/content",nip:"51",isReplaceable:!0,template:{kind:1e4,content:"",tags:[]}},{kind:10001,name:"Pin List",description:"Pinned events",nip:"51",isReplaceable:!0,template:{kind:10001,content:"",tags:[]}},{kind:10002,name:"Relay List Metadata",description:"User's preferred relays for read/write",nip:"65",isReplaceable:!0,template:{kind:10002,content:"",tags:[]}},{kind:10003,name:"Bookmark List",description:"Bookmarked events",nip:"51",isReplaceable:!0,template:{kind:10003,content:"",tags:[]}},{kind:10004,name:"Communities List",description:"Communities user belongs to",nip:"51",isReplaceable:!0,template:{kind:10004,content:"",tags:[]}},{kind:10005,name:"Public Chats List",description:"Public chats user is in",nip:"51",isReplaceable:!0,template:{kind:10005,content:"",tags:[]}},{kind:10006,name:"Blocked Relays List",description:"Relays user has blocked",nip:"51",isReplaceable:!0,template:{kind:10006,content:"",tags:[]}},{kind:10007,name:"Search Relays List",description:"Preferred search relays",nip:"51",isReplaceable:!0,template:{kind:10007,content:"",tags:[]}},{kind:10008,name:"Relay Group Configuration",description:"Relay group configuration",nip:null,isReplaceable:!0,template:{kind:10008,content:"",tags:[]}},{kind:10009,name:"User Groups",description:"Groups user belongs to",nip:"29",isReplaceable:!0,template:{kind:10009,content:"",tags:[]}},{kind:10012,name:"Favorite Relays List",description:"User's favorite relays",nip:"51",isReplaceable:!0,template:{kind:10012,content:"",tags:[]}},{kind:10013,name:"Private Event Relay List",description:"Relays for private events",nip:"37",isReplaceable:!0,template:{kind:10013,content:"",tags:[]}},{kind:10015,name:"Interests List",description:"User interests/topics",nip:"51",isReplaceable:!0,template:{kind:10015,content:"",tags:[]}},{kind:10019,name:"Nutzap Mint Recommendation",description:"Recommended Cashu mints for nutzaps",nip:"61",isReplaceable:!0,template:{kind:10019,content:"",tags:[]}},{kind:10020,name:"Media Follows",description:"Followed media accounts",nip:"51",isReplaceable:!0,template:{kind:10020,content:"",tags:[]}},{kind:10030,name:"User Emoji List",description:"Custom emoji list",nip:"51",isReplaceable:!0,template:{kind:10030,content:"",tags:[]}},{kind:10050,name:"DM Relays List",description:"Relays to receive DMs on",nip:"17",isReplaceable:!0,template:{kind:10050,content:"",tags:[]}},{kind:10051,name:"KeyPackage Relays List",description:"Marmot key package relays",nip:null,isReplaceable:!0,spec:"Marmot",template:{kind:10051,content:"",tags:[]}},{kind:10063,name:"User Server List",description:"Blossom server list",nip:null,isReplaceable:!0,spec:"Blossom",template:{kind:10063,content:"",tags:[]}},{kind:10096,name:"File Storage Server List",description:"File storage servers",nip:"96",isReplaceable:!0,deprecated:!0,template:{kind:10096,content:"",tags:[]}},{kind:10166,name:"Relay Monitor Announcement",description:"Relay monitoring announcement",nip:"66",isReplaceable:!0,template:{kind:10166,content:"",tags:[]}},{kind:10312,name:"Room Presence",description:"Presence in live room",nip:"53",isReplaceable:!0,template:{kind:10312,content:"",tags:[]}},{kind:10377,name:"Proxy Announcement",description:"Nostr proxy announcement",nip:null,isReplaceable:!0,spec:"Nostr Epoxy",template:{kind:10377,content:"",tags:[]}},{kind:11111,name:"Transport Method Announcement",description:"Transport method announcement",nip:null,isReplaceable:!0,spec:"Nostr Epoxy",template:{kind:11111,content:"",tags:[]}},{kind:12345,name:"Relay Policy Configuration",description:"Relay-internal policy configuration (admin only)",nip:null,isReplaceable:!0,spec:"orly",template:{kind:12345,content:"",tags:[]}},{kind:13004,name:"JWT Binding",description:"Link between JWT certificate and pubkey",nip:null,isReplaceable:!0,template:{kind:13004,content:"",tags:[]}},{kind:13194,name:"Wallet Service Info",description:"NWC wallet service information",nip:"47",isReplaceable:!0,template:{kind:13194,content:"",tags:[]}},{kind:13534,name:"Membership Lists",description:"Group membership lists",nip:"43",isReplaceable:!0,template:{kind:13534,content:"",tags:[]}},{kind:14388,name:"User Sound Effect Lists",description:"Sound effect lists",nip:null,isReplaceable:!0,spec:"Corny Chat",template:{kind:14388,content:"",tags:[]}},{kind:17375,name:"Cashu Wallet Event",description:"Cashu wallet event",nip:"60",isReplaceable:!0,template:{kind:17375,content:"",tags:[]}},{kind:21e3,name:"Lightning Pub RPC",description:"Lightning.Pub RPC",nip:null,isEphemeral:!0,spec:"Lightning.Pub",template:{kind:21e3,content:"",tags:[]}},{kind:22242,name:"Client Authentication",description:"Authenticate to relay",nip:"42",isEphemeral:!0,template:{kind:22242,content:"",tags:[]}},{kind:23194,name:"Wallet Request",description:"NWC wallet request",nip:"47",isEphemeral:!0,template:{kind:23194,content:"",tags:[]}},{kind:23195,name:"Wallet Response",description:"NWC wallet response",nip:"47",isEphemeral:!0,template:{kind:23195,content:"",tags:[]}},{kind:23196,name:"Wallet Notification (NIP-04)",description:"NWC wallet notification (NIP-04 encrypted)",nip:"47",isEphemeral:!0,template:{kind:23196,content:"",tags:[]}},{kind:23197,name:"Wallet Notification",description:"NWC wallet notification",nip:"47",isEphemeral:!0,template:{kind:23197,content:"",tags:[]}},{kind:24133,name:"Nostr Connect",description:"Remote signer connection",nip:"46",isEphemeral:!0,template:{kind:24133,content:"",tags:[]}},{kind:24242,name:"Blobs Stored on Mediaservers",description:"Blossom blob storage",nip:null,isEphemeral:!0,spec:"Blossom",template:{kind:24242,content:"",tags:[]}},{kind:27235,name:"HTTP Auth",description:"Authenticate HTTP requests",nip:"98",isEphemeral:!0,template:{kind:27235,content:"",tags:[]}},{kind:28934,name:"Join Request",description:"Request to join group",nip:"43",isEphemeral:!0,template:{kind:28934,content:"",tags:[]}},{kind:28935,name:"Invite Request",description:"Invite to group",nip:"43",isEphemeral:!0,template:{kind:28935,content:"",tags:[]}},{kind:28936,name:"Leave Request",description:"Leave group request",nip:"43",isEphemeral:!0,template:{kind:28936,content:"",tags:[]}},{kind:3e4,name:"Follow Sets",description:"Categorized people lists",nip:"51",isAddressable:!0,template:{kind:3e4,content:"",tags:[["d","identifier"]]}},{kind:30001,name:"Generic Lists",description:"Generic categorized lists",nip:"51",isAddressable:!0,deprecated:!0,template:{kind:30001,content:"",tags:[["d","identifier"]]}},{kind:30002,name:"Relay Sets",description:"Categorized relay lists",nip:"51",isAddressable:!0,template:{kind:30002,content:"",tags:[["d","identifier"]]}},{kind:30003,name:"Bookmark Sets",description:"Categorized bookmark lists",nip:"51",isAddressable:!0,template:{kind:30003,content:"",tags:[["d","identifier"]]}},{kind:30004,name:"Curation Sets",description:"Curated content sets",nip:"51",isAddressable:!0,template:{kind:30004,content:"",tags:[["d","identifier"]]}},{kind:30005,name:"Video Sets",description:"Video playlists",nip:"51",isAddressable:!0,template:{kind:30005,content:"",tags:[["d","identifier"]]}},{kind:30007,name:"Kind Mute Sets",description:"Muted event kinds",nip:"51",isAddressable:!0,template:{kind:30007,content:"",tags:[["d","identifier"]]}},{kind:30008,name:"Profile Badges",description:"Badges displayed on profile",nip:"58",isAddressable:!0,template:{kind:30008,content:"",tags:[["d","identifier"]]}},{kind:30009,name:"Badge Definition",description:"Define a badge/achievement",nip:"58",isAddressable:!0,template:{kind:30009,content:"",tags:[["d","identifier"]]}},{kind:30015,name:"Interest Sets",description:"Interest/topic sets",nip:"51",isAddressable:!0,template:{kind:30015,content:"",tags:[["d","identifier"]]}},{kind:30017,name:"Stall",description:"Marketplace stall definition",nip:"15",isAddressable:!0,template:{kind:30017,content:"",tags:[["d","identifier"]]}},{kind:30018,name:"Product",description:"Marketplace product listing",nip:"15",isAddressable:!0,template:{kind:30018,content:"",tags:[["d","identifier"]]}},{kind:30019,name:"Marketplace UI/UX",description:"Marketplace interface settings",nip:"15",isAddressable:!0,template:{kind:30019,content:"",tags:[["d","identifier"]]}},{kind:30020,name:"Product Sold as Auction",description:"Auction product listing",nip:"15",isAddressable:!0,template:{kind:30020,content:"",tags:[["d","identifier"]]}},{kind:30023,name:"Long-form Content",description:"Blog post, article in markdown",nip:"23",isAddressable:!0,template:{kind:30023,content:"",tags:[["d","identifier"]]}},{kind:30024,name:"Draft Long-form Content",description:"Draft article",nip:"23",isAddressable:!0,template:{kind:30024,content:"",tags:[["d","identifier"]]}},{kind:30030,name:"Emoji Sets",description:"Custom emoji sets",nip:"51",isAddressable:!0,template:{kind:30030,content:"",tags:[["d","identifier"]]}},{kind:30040,name:"Curated Publication Index",description:"Publication index",nip:null,isAddressable:!0,spec:"NKBIP-01",template:{kind:30040,content:"",tags:[["d","identifier"]]}},{kind:30041,name:"Curated Publication Content",description:"Publication content",nip:null,isAddressable:!0,spec:"NKBIP-01",template:{kind:30041,content:"",tags:[["d","identifier"]]}},{kind:30063,name:"Release Artifact Sets",description:"Software release artifacts",nip:"51",isAddressable:!0,template:{kind:30063,content:"",tags:[["d","identifier"]]}},{kind:30078,name:"Application-specific Data",description:"App-specific key-value storage",nip:"78",isAddressable:!0,template:{kind:30078,content:"",tags:[["d","identifier"]]}},{kind:30166,name:"Relay Discovery",description:"Relay discovery/monitoring",nip:"66",isAddressable:!0,template:{kind:30166,content:"",tags:[["d","identifier"]]}},{kind:30267,name:"App Curation Sets",description:"Curated app sets",nip:"51",isAddressable:!0,template:{kind:30267,content:"",tags:[["d","identifier"]]}},{kind:30311,name:"Live Event",description:"Live streaming event",nip:"53",isAddressable:!0,template:{kind:30311,content:"",tags:[["d","identifier"]]}},{kind:30312,name:"Interactive Room",description:"Interactive live room",nip:"53",isAddressable:!0,template:{kind:30312,content:"",tags:[["d","identifier"]]}},{kind:30313,name:"Conference Event",description:"Conference/meetup event",nip:"53",isAddressable:!0,template:{kind:30313,content:"",tags:[["d","identifier"]]}},{kind:30315,name:"User Statuses",description:"User status updates",nip:"38",isAddressable:!0,template:{kind:30315,content:"",tags:[["d","identifier"]]}},{kind:30388,name:"Slide Set",description:"Presentation slides",nip:null,isAddressable:!0,spec:"Corny Chat",template:{kind:30388,content:"",tags:[["d","identifier"]]}},{kind:30402,name:"Classified Listing",description:"Classified ad listing",nip:"99",isAddressable:!0,template:{kind:30402,content:"",tags:[["d","identifier"]]}},{kind:30403,name:"Draft Classified Listing",description:"Draft classified ad",nip:"99",isAddressable:!0,template:{kind:30403,content:"",tags:[["d","identifier"]]}},{kind:30617,name:"Repository Announcements",description:"Git repository announcement",nip:"34",isAddressable:!0,template:{kind:30617,content:"",tags:[["d","identifier"]]}},{kind:30618,name:"Repository State Announcements",description:"Git repository state",nip:"34",isAddressable:!0,template:{kind:30618,content:"",tags:[["d","identifier"]]}},{kind:30818,name:"Wiki Article",description:"Wiki article",nip:"54",isAddressable:!0,template:{kind:30818,content:"",tags:[["d","identifier"]]}},{kind:30819,name:"Redirects",description:"URL redirects",nip:"54",isAddressable:!0,template:{kind:30819,content:"",tags:[["d","identifier"]]}},{kind:31234,name:"Draft Event",description:"Draft of any event",nip:"37",isAddressable:!0,template:{kind:31234,content:"",tags:[["d","identifier"]]}},{kind:31388,name:"Link Set",description:"Link collection",nip:null,isAddressable:!0,spec:"Corny Chat",template:{kind:31388,content:"",tags:[["d","identifier"]]}},{kind:31890,name:"Feed",description:"Custom feed definition",nip:null,isAddressable:!0,spec:"NUD: Custom Feeds",template:{kind:31890,content:"",tags:[["d","identifier"]]}},{kind:31922,name:"Date-Based Calendar Event",description:"All-day calendar event",nip:"52",isAddressable:!0,template:{kind:31922,content:"",tags:[["d","identifier"]]}},{kind:31923,name:"Time-Based Calendar Event",description:"Calendar event with time",nip:"52",isAddressable:!0,template:{kind:31923,content:"",tags:[["d","identifier"]]}},{kind:31924,name:"Calendar",description:"Calendar definition",nip:"52",isAddressable:!0,template:{kind:31924,content:"",tags:[["d","identifier"]]}},{kind:31925,name:"Calendar Event RSVP",description:"RSVP to calendar event",nip:"52",isAddressable:!0,template:{kind:31925,content:"",tags:[["d","identifier"]]}},{kind:31989,name:"Handler Recommendation",description:"Recommended app for event kind",nip:"89",isAddressable:!0,template:{kind:31989,content:"",tags:[["d","identifier"]]}},{kind:31990,name:"Handler Information",description:"App handler declaration",nip:"89",isAddressable:!0,template:{kind:31990,content:"",tags:[["d","identifier"]]}},{kind:32123,name:"WaveLake Track",description:"WaveLake music track",nip:null,isAddressable:!0,spec:"WaveLake",template:{kind:32123,content:"",tags:[["d","identifier"]]}},{kind:32267,name:"Software Application",description:"Software application listing",nip:null,isAddressable:!0,template:{kind:32267,content:"",tags:[["d","identifier"]]}},{kind:32388,name:"User Room Favorites",description:"Favorite rooms",nip:null,isAddressable:!0,spec:"Corny Chat",template:{kind:32388,content:"",tags:[["d","identifier"]]}},{kind:33388,name:"High Scores",description:"Game high scores",nip:null,isAddressable:!0,spec:"Corny Chat",template:{kind:33388,content:"",tags:[["d","identifier"]]}},{kind:34235,name:"Video Event Horizontal",description:"Horizontal video event",nip:"71",isAddressable:!0,template:{kind:34235,content:"",tags:[["d","identifier"]]}},{kind:34236,name:"Video Event Vertical",description:"Vertical video event",nip:"71",isAddressable:!0,template:{kind:34236,content:"",tags:[["d","identifier"]]}},{kind:34388,name:"Sound Effects",description:"Sound effect definitions",nip:null,isAddressable:!0,spec:"Corny Chat",template:{kind:34388,content:"",tags:[["d","identifier"]]}},{kind:34550,name:"Community Definition",description:"Define a community",nip:"72",isAddressable:!0,template:{kind:34550,content:"",tags:[["d","identifier"]]}},{kind:37516,name:"Geocache Listing",description:"Geocache location listing",nip:null,isAddressable:!0,spec:"geocaching",template:{kind:37516,content:"",tags:[["d","identifier"]]}},{kind:38172,name:"Cashu Mint Announcement",description:"Cashu mint announcement",nip:"87",isAddressable:!0,template:{kind:38172,content:"",tags:[["d","identifier"]]}},{kind:38173,name:"Fedimint Announcement",description:"Fedimint announcement",nip:"87",isAddressable:!0,template:{kind:38173,content:"",tags:[["d","identifier"]]}},{kind:38383,name:"Peer-to-peer Order Events",description:"P2P trading orders",nip:"69",isAddressable:!0,template:{kind:38383,content:"",tags:[["d","identifier"]]}},{kind:39e3,name:"Group Metadata Events",description:"Group metadata (start of range)",nip:"29",isAddressable:!0,template:{kind:39e3,content:"",tags:[["d","identifier"]]}},{kind:39089,name:"Starter Packs",description:"Starter pack lists",nip:"51",isAddressable:!0,template:{kind:39089,content:"",tags:[["d","identifier"]]}},{kind:39092,name:"Media Starter Packs",description:"Media starter packs",nip:"51",isAddressable:!0,template:{kind:39092,content:"",tags:[["d","identifier"]]}},{kind:39701,name:"Web Bookmarks",description:"Web URL bookmarks",nip:"B0",isAddressable:!0,template:{kind:39701,content:"",tags:[["d","identifier"]]}},{kind:39998,name:"ACL Event",description:"Access control list event",nip:null,isAddressable:!0,template:{kind:39998,content:"",tags:[["d","identifier"]]}}];function uy(e,t=null){const n=function(e){return cy.find(t=>t.kind===e)}(e);return n?{...n.template,created_at:Math.floor(Date.now()/1e3),pubkey:t||"<your_pubkey_here>"}:{kind:e,content:"",tags:[],created_at:Math.floor(Date.now()/1e3),pubkey:t||"<your_pubkey_here>"}}const dy=[{id:"all",name:"All Kinds",filter:()=>!0},{id:"regular",name:"Regular Events (0-9999)",filter:e=>e.kind<1e4&&!e.isReplaceable},{id:"replaceable",name:"Replaceable (10000-19999)",filter:e=>e.isReplaceable},{id:"ephemeral",name:"Ephemeral (20000-29999)",filter:e=>e.isEphemeral},{id:"addressable",name:"Addressable (30000-39999)",filter:e=>e.isAddressable},{id:"social",name:"Social",filter:e=>[0,1,3,6,7].includes(e.kind)},{id:"messaging",name:"Messaging",filter:e=>[4,9,10,11,12,14,15,40,41,42].includes(e.kind)},{id:"lists",name:"Lists",filter:e=>e.name.toLowerCase().includes("list")||e.name.toLowerCase().includes("set")},{id:"marketplace",name:"Marketplace",filter:e=>[30017,30018,30019,30020,1021,1022,30402,30403].includes(e.kind)},{id:"lightning",name:"Lightning/Zaps",filter:e=>[9734,9735,9041,9321,7374,7375,7376].includes(e.kind)},{id:"media",name:"Media",filter:e=>[20,21,22,1063,1222,1244].includes(e.kind)},{id:"git",name:"Git/Code",filter:e=>[818,1337,1617,1618,1619,1621,1622,30617,30618].includes(e.kind)},{id:"calendar",name:"Calendar",filter:e=>[31922,31923,31924,31925].includes(e.kind)},{id:"groups",name:"Groups",filter:e=>e.kind>=9e3&&e.kind<=9030||e.kind>=39e3&&e.kind<=39009}];function fy(e,t,n){const r=e.slice();return r[13]=t[n],r}function hy(e,t,n){const r=e.slice();return r[16]=t[n],r}function py(e){let t,n,i,o,s,a,l,p,y,v,b,C,E,x,B,S,Q,F,D,$,R,P,T,U,N,L=e[3].length+"",M=1!==e[3].length?"s":"",_=dy,O=[];for(let t=0;t<_.length;t+=1)O[t]=gy(hy(e,_,t));function H(e,t){return 0===e[3].length?yy:my}let j=H(e),G=j(e);return{c(){t=h("div"),n=h("div"),i=h("div"),o=h("h2"),o.textContent="Generate Event Template",s=m(),a=h("button"),a.textContent="×",l=m(),p=h("div"),y=h("div"),v=h("input"),b=m(),C=h("div");for(let e=0;e<O.length;e+=1)O[e].c();E=m(),x=h("div"),B=h("div"),G.c(),S=m(),Q=h("div"),F=h("span"),D=g(L),$=g(" event type"),R=g(M),P=m(),T=h("button"),T.textContent="Cancel",A(o,"class","svelte-v55ls1"),A(a,"class","close-btn svelte-v55ls1"),A(i,"class","modal-header svelte-v55ls1"),A(v,"type","text"),A(v,"placeholder","Search by name, description, or kind number..."),A(v,"class","search-input svelte-v55ls1"),A(y,"class","search-box svelte-v55ls1"),A(C,"class","category-tabs svelte-v55ls1"),A(p,"class","modal-filters svelte-v55ls1"),A(B,"class","kinds-list svelte-v55ls1"),A(x,"class","modal-body svelte-v55ls1"),A(F,"class","result-count svelte-v55ls1"),A(T,"class","cancel-btn svelte-v55ls1"),A(Q,"class","modal-footer svelte-v55ls1"),A(n,"class","modal-content svelte-v55ls1"),A(t,"class","modal-backdrop svelte-v55ls1")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(i,o),c(i,s),c(i,a),c(n,l),c(n,p),c(p,y),c(y,v),I(v,e[1]),c(p,b),c(p,C);for(let e=0;e<O.length;e+=1)O[e]&&O[e].m(C,null);c(n,E),c(n,x),c(x,B),G.m(B,null),c(n,S),c(n,Q),c(Q,F),c(F,D),c(F,$),c(F,R),c(Q,P),c(Q,T),U||(N=[w(a,"click",e[5]),w(v,"input",e[9]),w(T,"click",e[5]),w(t,"click",e[7])],U=!0)},p(e,t){if(2&t&&v.value!==e[1]&&I(v,e[1]),4&t){let n;for(_=dy,n=0;n<_.length;n+=1){const r=hy(e,_,n);O[n]?O[n].p(r,t):(O[n]=gy(r),O[n].c(),O[n].m(C,null))}for(;n<O.length;n+=1)O[n].d(1);O.length=_.length}j===(j=H(e))&&G?G.p(e,t):(G.d(1),G=j(e),G&&(G.c(),G.m(B,null))),8&t&&L!==(L=e[3].length+"")&&k(D,L),8&t&&M!==(M=1!==e[3].length?"s":"")&&k(R,M)},d(e){e&&d(t),f(O,e),G.d(),U=!1,r(N)}}}function gy(e){let t,n,r,i,o,s=e[16].name+"";function a(){return e[10](e[16])}return{c(){t=h("button"),n=g(s),r=m(),A(t,"class","category-tab svelte-v55ls1"),B(t,"active",e[2]===e[16].id)},m(e,s){u(e,t,s),c(t,n),c(t,r),i||(o=w(t,"click",a),i=!0)},p(n,r){e=n,4&r&&B(t,"active",e[2]===e[16].id)},d(e){e&&d(t),i=!1,o()}}}function my(e){let t,n=e[3],r=[];for(let t=0;t<n.length;t+=1)r[t]=vy(fy(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(24&i){let o;for(n=e[3],o=0;o<n.length;o+=1){const s=fy(e,n,o);r[o]?r[o].p(s,i):(r[o]=vy(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function yy(e){let t,n,r,i;return{c(){t=h("div"),n=g('No event kinds found matching "'),r=g(e[1]),i=g('"'),A(t,"class","no-results svelte-v55ls1")},m(e,o){u(e,t,o),c(t,n),c(t,r),c(t,i)},p(e,t){2&t&&k(r,e[1])},d(e){e&&d(t)}}}function wy(e){let t,n,r,i=e[13].nip+"";return{c(){t=h("span"),n=g("NIP-"),r=g(i),A(t,"class","nip-badge svelte-v55ls1")},m(e,i){u(e,t,i),c(t,n),c(t,r)},p(e,t){8&t&&i!==(i=e[13].nip+"")&&k(r,i)},d(e){e&&d(t)}}}function vy(e){let t,n,r,i,o,s,a,l,f,p,y,v,b,I,C,E,x,B,S,Q=e[13].kind+"",F=ky(e[13])+"",D=e[13].name+"",$=e[13].description+"",R=e[13].nip&&"XX"!==e[13].nip&&wy(e);function P(){return e[11](e[13])}return{c(){t=h("button"),n=h("div"),r=h("span"),i=g("Kind "),o=g(Q),s=m(),a=h("span"),l=g(F),p=m(),R&&R.c(),y=m(),v=h("div"),b=g(D),I=m(),C=h("div"),E=g($),x=m(),A(r,"class","kind-number svelte-v55ls1"),A(a,"class",f="kind-badge "+by(e[13])+" svelte-v55ls1"),A(n,"class","kind-header svelte-v55ls1"),A(v,"class","kind-name svelte-v55ls1"),A(C,"class","kind-description svelte-v55ls1"),A(t,"class","kind-item svelte-v55ls1")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(r,i),c(r,o),c(n,s),c(n,a),c(a,l),c(n,p),R&&R.m(n,null),c(t,y),c(t,v),c(v,b),c(t,I),c(t,C),c(C,E),c(t,x),B||(S=w(t,"click",P),B=!0)},p(t,r){e=t,8&r&&Q!==(Q=e[13].kind+"")&&k(o,Q),8&r&&F!==(F=ky(e[13])+"")&&k(l,F),8&r&&f!==(f="kind-badge "+by(e[13])+" svelte-v55ls1")&&A(a,"class",f),e[13].nip&&"XX"!==e[13].nip?R?R.p(e,r):(R=wy(e),R.c(),R.m(n,null)):R&&(R.d(1),R=null),8&r&&D!==(D=e[13].name+"")&&k(b,D),8&r&&$!==($=e[13].description+"")&&k(E,$)},d(e){e&&d(t),R&&R.d(),B=!1,S()}}}function Ay(t){let n,r,i,o=t[0]&&py(t);return{c(){o&&o.c(),n=y()},m(e,s){o&&o.m(e,s),u(e,n,s),r||(i=w(window,"keydown",t[6]),r=!0)},p(e,[t]){e[0]?o?o.p(e,t):(o=py(e),o.c(),o.m(n.parentNode,n)):o&&(o.d(1),o=null)},i:e,o:e,d(e){o&&o.d(e),e&&d(n),r=!1,i()}}}function by(e){return e.isAddressable?"badge-addressable":e.isReplaceable?"badge-replaceable":e.kind>=2e4&&e.kind<3e4?"badge-ephemeral":"badge-regular"}function ky(e){return e.isAddressable?"Addressable":e.isReplaceable?"Replaceable":e.kind>=2e4&&e.kind<3e4?"Ephemeral":"Regular"}function Iy(e,t,n){let{isOpen:r=!1}=t,{userPubkey:i=""}=t;const o=R();let s="",a="all",l=cy;function c(e){const t=uy(e.kind,i);o("select",{kind:e,template:t}),u()}function u(){n(0,r=!1),n(1,s=""),n(2,a="all"),o("close")}return e.$$set=e=>{"isOpen"in e&&n(0,r=e.isOpen),"userPubkey"in e&&n(8,i=e.userPubkey)},e.$$.update=()=>{if(6&e.$$.dirty){let e=cy;const t=dy.find(e=>e.id===a);if(t&&(e=e.filter(t.filter)),s.trim()){const t=s.toLowerCase();e=e.filter(e=>e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)||e.kind.toString().includes(t)||e.nip&&e.nip.includes(t))}n(3,l=e)}},[r,s,a,l,c,u,function(e){"Escape"===e.key&&u()},function(e){e.target===e.currentTarget&&u()},i,function(){s=this.value,n(1,s)},e=>n(2,a=e.id),e=>c(e)]}class Cy extends oe{constructor(e){super(),ie(this,e,Iy,Ay,o,{isOpen:0,userPubkey:8})}}function Ey(e){let t,n,r,i,o,s,a,l,f,p;return{c(){t=h("div"),n=h("div"),r=h("span"),r.textContent="⚠",i=m(),o=h("span"),s=g(e[1]),a=m(),l=h("button"),l.textContent="×",A(r,"class","error-icon svelte-46pmgb"),A(o,"class","error-message svelte-46pmgb"),A(n,"class","error-content svelte-46pmgb"),A(l,"class","error-dismiss svelte-46pmgb"),A(t,"class","error-banner svelte-46pmgb")},m(d,h){u(d,t,h),c(t,n),c(n,r),c(n,i),c(n,o),c(o,s),c(t,a),c(t,l),f||(p=w(l,"click",e[10]),f=!0)},p(e,t){2&t&&k(s,e[1])},d(e){e&&d(t),f=!1,p()}}}function xy(e){let t,n,i,o,s,a,l,f,p,g,y,v,b,k,C,E,x,B,S,Q=e[1]&&Ey(e);function F(t){e[14](t)}let D={userPubkey:e[2]};return void 0!==e[3]&&(D.isOpen=e[3]),C=new Cy({props:D}),U.push(()=>X(C,"isOpen",F)),C.$on("select",e[8]),C.$on("close",e[9]),{c(){t=h("div"),n=h("div"),i=h("button"),i.textContent="Generate Template",o=m(),s=h("button"),s.textContent="Reformat",a=m(),l=h("button"),l.textContent="Sign",f=m(),p=h("button"),p.textContent="Publish",g=m(),Q&&Q.c(),y=m(),v=h("div"),b=h("textarea"),k=m(),ee(C.$$.fragment),A(i,"class","compose-btn template-btn svelte-46pmgb"),A(s,"class","compose-btn reformat-btn svelte-46pmgb"),A(l,"class","compose-btn sign-btn svelte-46pmgb"),A(p,"class","compose-btn publish-btn svelte-46pmgb"),A(n,"class","compose-header svelte-46pmgb"),A(b,"class","compose-textarea svelte-46pmgb"),A(b,"placeholder","Enter your Nostr event JSON here, or click 'Generate Template' to start with a template..."),A(b,"spellcheck","false"),A(v,"class","compose-editor svelte-46pmgb"),A(t,"class","compose-view svelte-46pmgb")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(n,a),c(n,l),c(n,f),c(n,p),c(t,g),Q&&Q.m(t,null),c(t,y),c(t,v),c(v,b),I(b,e[0]),u(r,k,d),te(C,r,d),x=!0,B||(S=[w(i,"click",e[7]),w(s,"click",e[4]),w(l,"click",e[5]),w(p,"click",e[6]),w(b,"input",e[13])],B=!0)},p(e,[n]){e[1]?Q?Q.p(e,n):(Q=Ey(e),Q.c(),Q.m(t,y)):Q&&(Q.d(1),Q=null),1&n&&I(b,e[0]);const r={};4&n&&(r.userPubkey=e[2]),!E&&8&n&&(E=!0,r.isOpen=e[3],H(()=>E=!1)),C.$set(r)},i(e){x||(W(C.$$.fragment,e),x=!0)},o(e){Z(C.$$.fragment,e),x=!1},d(e){e&&d(t),Q&&Q.d(),e&&d(k),ne(C,e),B=!1,r(S)}}}function By(e,t,n){let{composeEventJson:r=""}=t,{userPubkey:i=""}=t,{userRole:o=""}=t,{policyEnabled:s=!1}=t,{publishError:a=""}=t;const l=R();let c=!1;return e.$$set=e=>{"composeEventJson"in e&&n(0,r=e.composeEventJson),"userPubkey"in e&&n(2,i=e.userPubkey),"userRole"in e&&n(11,o=e.userRole),"policyEnabled"in e&&n(12,s=e.policyEnabled),"publishError"in e&&n(1,a=e.publishError)},[r,a,i,c,function(){l("reformatJson")},function(){l("signEvent")},function(){l("publishEvent")},function(){n(3,c=!0)},function(e){const{kind:t,template:i}=e.detail;n(0,r=JSON.stringify(i,null,2)),l("templateSelected",{kind:t,template:i})},function(){n(3,c=!1)},function(){n(1,a=""),l("clearError")},o,s,function(){r=this.value,n(0,r)},function(e){c=e,n(3,c)}]}class Sy extends oe{constructor(e){super(),ie(this,e,By,xy,o,{composeEventJson:0,userPubkey:2,userRole:11,policyEnabled:12,publishError:1})}}function Qy(e,t,n){const r=e.slice();return r[23]=t[n],r}function Fy(t){let n,r,i,o,s,a;return{c(){n=h("div"),r=h("p"),r.textContent="Please log in to access sprocket management.",i=m(),o=h("button"),o.textContent="Log In",A(r,"class","svelte-fiaj1r"),A(o,"class","login-btn svelte-fiaj1r"),A(n,"class","login-prompt svelte-fiaj1r")},m(e,l){u(e,n,l),c(n,r),c(n,i),c(n,o),s||(a=w(o,"click",t[18]),s=!0)},p:e,d(e){e&&d(n),s=!1,a()}}}function Dy(e){let t,n,r,i,o,s,a,l,f,p=(e[2]||"none")+"";return{c(){t=h("div"),n=h("p"),n.textContent="❌ Owner permission required for sprocket management.",r=m(),i=h("p"),i.innerHTML='To enable sprocket functionality, set the <code class="svelte-fiaj1r">ORLY_OWNERS</code> environment variable with your npub when starting the relay.',o=m(),s=h("p"),a=g("Current user role: "),l=h("strong"),f=g(p),A(n,"class","svelte-fiaj1r"),A(i,"class","svelte-fiaj1r"),A(s,"class","svelte-fiaj1r"),A(t,"class","permission-denied svelte-fiaj1r")},m(e,d){u(e,t,d),c(t,n),c(t,r),c(t,i),c(t,o),c(t,s),c(s,a),c(s,l),c(l,f)},p(e,t){4&t&&p!==(p=(e[2]||"none")+"")&&k(f,p)},d(e){e&&d(t)}}}function $y(e){let t,n,i,o,s,a,l,p,y,v,b,C,E,x,S,Q,F,D,$,R,P,T,U,N,L,M,_,O,H,j,G,J,K,V,z,q,Y,W,Z,X,ee,te,ne,re,ie,oe,se,ae,le,ce,ue,de,fe,he,pe,ge,me=e[3]?.is_running?"🟢 Running":"🔴 Stopped",ye=e[3]?.script_exists?"✅ Exists":"❌ Not found",we=e[3]?.pid&&Ry(e),ve=e[6]&&Py(e),Ae=e[8],be=[];for(let t=0;t<Ae.length;t+=1)be[t]=Ny(Qy(e,Ae,t));return{c(){t=h("div"),n=h("div"),i=h("h3"),i.textContent="Script Editor",o=m(),s=h("div"),a=h("button"),l=g("🔄 Restart"),p=m(),y=h("button"),v=g("🗑️ Delete Script"),C=m(),E=h("div"),x=h("h4"),x.textContent="Upload Script",S=m(),Q=h("div"),F=h("input"),D=m(),$=h("button"),R=g("📤 Upload & Update"),T=m(),U=h("div"),N=h("div"),L=h("span"),L.textContent="Status:",M=m(),_=h("span"),O=g(me),H=m(),we&&we.c(),j=m(),G=h("div"),J=h("span"),J.textContent="Script:",K=m(),V=h("span"),z=g(ye),q=m(),Y=h("div"),W=h("textarea"),Z=m(),X=h("div"),ee=h("button"),te=g("💾 Save & Update"),ne=m(),re=h("button"),ie=g("📥 Load Current"),oe=m(),ve&&ve.c(),se=m(),ae=h("div"),le=h("h3"),le.textContent="Script Versions",ce=m(),ue=h("div");for(let e=0;e<be.length;e+=1)be[e].c();de=m(),fe=h("button"),he=g("🔄 Refresh Versions"),A(i,"class","svelte-fiaj1r"),A(a,"class","sprocket-btn restart-btn svelte-fiaj1r"),a.disabled=e[4],A(y,"class","sprocket-btn delete-btn svelte-fiaj1r"),y.disabled=b=e[4]||!e[3]?.script_exists,A(s,"class","sprocket-controls svelte-fiaj1r"),A(n,"class","sprocket-header svelte-fiaj1r"),A(x,"class","svelte-fiaj1r"),A(F,"type","file"),A(F,"id","sprocket-upload-file"),A(F,"accept",".sh,.bash"),F.disabled=e[4],A(F,"class","svelte-fiaj1r"),A($,"class","sprocket-btn upload-btn svelte-fiaj1r"),$.disabled=P=e[4]||!e[5],A(Q,"class","upload-controls svelte-fiaj1r"),A(E,"class","sprocket-upload-section svelte-fiaj1r"),A(L,"class","status-label svelte-fiaj1r"),A(_,"class","status-value svelte-fiaj1r"),B(_,"running",e[3]?.is_running),A(N,"class","status-item svelte-fiaj1r"),A(J,"class","status-label svelte-fiaj1r"),A(V,"class","status-value svelte-fiaj1r"),A(G,"class","status-item svelte-fiaj1r"),A(U,"class","sprocket-status svelte-fiaj1r"),A(W,"class","script-editor svelte-fiaj1r"),A(W,"placeholder","#!/bin/bash # Enter your sprocket script here..."),W.disabled=e[4],A(Y,"class","script-editor-container svelte-fiaj1r"),A(ee,"class","sprocket-btn save-btn svelte-fiaj1r"),ee.disabled=e[4],A(re,"class","sprocket-btn load-btn svelte-fiaj1r"),re.disabled=e[4],A(X,"class","script-actions svelte-fiaj1r"),A(t,"class","sprocket-section svelte-fiaj1r"),A(ue,"class","versions-list svelte-fiaj1r"),A(fe,"class","sprocket-btn refresh-btn svelte-fiaj1r"),fe.disabled=e[4],A(ae,"class","sprocket-section svelte-fiaj1r")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),c(a,l),c(s,p),c(s,y),c(y,v),c(t,C),c(t,E),c(E,x),c(E,S),c(E,Q),c(Q,F),c(Q,D),c(Q,$),c($,R),c(t,T),c(t,U),c(U,N),c(N,L),c(N,M),c(N,_),c(_,O),c(U,H),we&&we.m(U,null),c(U,j),c(U,G),c(G,J),c(G,K),c(G,V),c(V,z),c(t,q),c(t,Y),c(Y,W),I(W,e[0]),c(t,Z),c(t,X),c(X,ee),c(ee,te),c(X,ne),c(X,re),c(re,ie),c(t,oe),ve&&ve.m(t,null),u(r,se,d),u(r,ae,d),c(ae,le),c(ae,ce),c(ae,ue);for(let e=0;e<be.length;e+=1)be[e]&&be[e].m(ue,null);c(ae,de),c(ae,fe),c(fe,he),pe||(ge=[w(a,"click",e[9]),w(y,"click",e[10]),w(F,"change",e[11]),w($,"click",e[12]),w(W,"input",e[19]),w(ee,"click",e[13]),w(re,"click",e[14]),w(fe,"click",e[15])],pe=!0)},p(e,n){if(16&n&&(a.disabled=e[4]),24&n&&b!==(b=e[4]||!e[3]?.script_exists)&&(y.disabled=b),16&n&&(F.disabled=e[4]),48&n&&P!==(P=e[4]||!e[5])&&($.disabled=P),8&n&&me!==(me=e[3]?.is_running?"🟢 Running":"🔴 Stopped")&&k(O,me),8&n&&B(_,"running",e[3]?.is_running),e[3]?.pid?we?we.p(e,n):(we=Ry(e),we.c(),we.m(U,j)):we&&(we.d(1),we=null),8&n&&ye!==(ye=e[3]?.script_exists?"✅ Exists":"❌ Not found")&&k(z,ye),16&n&&(W.disabled=e[4]),1&n&&I(W,e[0]),16&n&&(ee.disabled=e[4]),16&n&&(re.disabled=e[4]),e[6]?ve?ve.p(e,n):(ve=Py(e),ve.c(),ve.m(t,null)):ve&&(ve.d(1),ve=null),196880&n){let t;for(Ae=e[8],t=0;t<Ae.length;t+=1){const r=Qy(e,Ae,t);be[t]?be[t].p(r,n):(be[t]=Ny(r),be[t].c(),be[t].m(ue,null))}for(;t<be.length;t+=1)be[t].d(1);be.length=Ae.length}16&n&&(fe.disabled=e[4])},d(e){e&&d(t),we&&we.d(),ve&&ve.d(),e&&d(se),e&&d(ae),f(be,e),pe=!1,r(ge)}}}function Ry(e){let t,n,r,i,o,s=e[3].pid+"";return{c(){t=h("div"),n=h("span"),n.textContent="PID:",r=m(),i=h("span"),o=g(s),A(n,"class","status-label svelte-fiaj1r"),A(i,"class","status-value svelte-fiaj1r"),A(t,"class","status-item svelte-fiaj1r")},m(e,s){u(e,t,s),c(t,n),c(t,r),c(t,i),c(i,o)},p(e,t){8&t&&s!==(s=e[3].pid+"")&&k(o,s)},d(e){e&&d(t)}}}function Py(e){let t,n;return{c(){t=h("div"),n=g(e[6]),A(t,"class","sprocket-message svelte-fiaj1r"),B(t,"error","error"===e[7])},m(e,r){u(e,t,r),c(t,n)},p(e,r){64&r&&k(n,e[6]),128&r&&B(t,"error","error"===e[7])},d(e){e&&d(t)}}}function Ty(e){let t;return{c(){t=h("span"),t.textContent="Current",A(t,"class","current-badge svelte-fiaj1r")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function Uy(e){let t,n,r,i;function o(){return e[21](e[23])}return{c(){t=h("button"),n=g("🗑️ Delete"),A(t,"class","version-btn delete-btn svelte-fiaj1r"),t.disabled=e[4]},m(e,s){u(e,t,s),c(t,n),r||(i=w(t,"click",o),r=!0)},p(n,r){e=n,16&r&&(t.disabled=e[4])},d(e){e&&d(t),r=!1,i()}}}function Ny(e){let t,n,r,i,o,s,a,l,f,p,y,v,b,I,C,E,x=e[23].name+"",S=new Date(e[23].modified).toLocaleString()+"",Q=e[23].is_current&&Ty();function F(){return e[20](e[23])}let D=!e[23].is_current&&Uy(e);return{c(){t=h("div"),n=h("div"),r=h("div"),i=g(x),o=m(),s=h("div"),a=g(S),l=m(),Q&&Q.c(),f=m(),p=h("div"),y=h("button"),v=g("📥 Load"),b=m(),D&&D.c(),I=m(),A(r,"class","version-name svelte-fiaj1r"),A(s,"class","version-date svelte-fiaj1r"),A(n,"class","version-info svelte-fiaj1r"),A(y,"class","version-btn load-btn svelte-fiaj1r"),y.disabled=e[4],A(p,"class","version-actions svelte-fiaj1r"),A(t,"class","version-item svelte-fiaj1r"),B(t,"current",e[23].is_current)},m(e,d){u(e,t,d),c(t,n),c(n,r),c(r,i),c(n,o),c(n,s),c(s,a),c(s,l),Q&&Q.m(s,null),c(t,f),c(t,p),c(p,y),c(y,v),c(p,b),D&&D.m(p,null),c(t,I),C||(E=w(y,"click",F),C=!0)},p(n,r){e=n,256&r&&x!==(x=e[23].name+"")&&k(i,x),256&r&&S!==(S=new Date(e[23].modified).toLocaleString()+"")&&k(a,S),e[23].is_current?Q||(Q=Ty(),Q.c(),Q.m(s,null)):Q&&(Q.d(1),Q=null),16&r&&(y.disabled=e[4]),e[23].is_current?D&&(D.d(1),D=null):D?D.p(e,r):(D=Uy(e),D.c(),D.m(p,null)),256&r&&B(t,"current",e[23].is_current)},d(e){e&&d(t),Q&&Q.d(),D&&D.d(),C=!1,E()}}}function Ly(t){let n,r,i;function o(e,t){return e[1]&&"owner"===e[2]?$y:e[1]?Dy:Fy}let s=o(t),a=s(t);return{c(){n=h("div"),r=h("h2"),r.textContent="Sprocket Script Management",i=m(),a.c(),A(r,"class","svelte-fiaj1r"),A(n,"class","sprocket-view svelte-fiaj1r")},m(e,t){u(e,n,t),c(n,r),c(n,i),a.m(n,null)},p(e,[t]){s===(s=o(e))&&a?a.p(e,t):(a.d(1),a=s(e),a&&(a.c(),a.m(n,null)))},i:e,o:e,d(e){e&&d(n),a.d()}}}function My(e,t,n){let{isLoggedIn:r=!1}=t,{userRole:i=""}=t,{sprocketStatus:o=null}=t,{isLoadingSprocket:s=!1}=t,{sprocketUploadFile:a=null}=t,{sprocketScript:l=""}=t,{sprocketMessage:c=""}=t,{sprocketMessageType:u=""}=t,{sprocketVersions:d=[]}=t;const f=R();function h(e){f("loadVersion",e)}function p(e){f("deleteVersion",e)}return e.$$set=e=>{"isLoggedIn"in e&&n(1,r=e.isLoggedIn),"userRole"in e&&n(2,i=e.userRole),"sprocketStatus"in e&&n(3,o=e.sprocketStatus),"isLoadingSprocket"in e&&n(4,s=e.isLoadingSprocket),"sprocketUploadFile"in e&&n(5,a=e.sprocketUploadFile),"sprocketScript"in e&&n(0,l=e.sprocketScript),"sprocketMessage"in e&&n(6,c=e.sprocketMessage),"sprocketMessageType"in e&&n(7,u=e.sprocketMessageType),"sprocketVersions"in e&&n(8,d=e.sprocketVersions)},[l,r,i,o,s,a,c,u,d,function(){f("restartSprocket")},function(){f("deleteSprocket")},function(e){f("sprocketFileSelect",e)},function(){f("uploadSprocketScript")},function(){f("saveSprocket")},function(){f("loadSprocket")},function(){f("loadVersions")},h,p,function(){f("openLoginModal")},function(){l=this.value,n(0,l)},e=>h(e),e=>p(e.name)]}class _y extends oe{constructor(e){super(),ie(this,e,My,Ly,o,{isLoggedIn:1,userRole:2,sprocketStatus:3,isLoadingSprocket:4,sprocketUploadFile:5,sprocketScript:0,sprocketMessage:6,sprocketMessageType:7,sprocketVersions:8})}}function Oy(e,t,n){const r=e.slice();return r[26]=t[n],r}function Hy(e,t,n){const r=e.slice();return r[29]=t[n],r}function jy(e,t,n){const r=e.slice();return r[32]=t[n],r}function Gy(t){let n,r,i,o,s,a;return{c(){n=h("div"),r=h("p"),r.textContent="Please log in to access policy configuration.",i=m(),o=h("button"),o.textContent="Log In",A(r,"class","svelte-gkxvxc"),A(o,"class","login-btn svelte-gkxvxc"),A(n,"class","login-prompt svelte-gkxvxc")},m(e,l){u(e,n,l),c(n,r),c(n,i),c(n,o),s||(a=w(o,"click",t[16]),s=!0)},p:e,d(e){e&&d(n),s=!1,a()}}}function Jy(e){let t,n,r,i,o,s,a,l,f,p=(e[3]||"none")+"";return{c(){t=h("div"),n=h("p"),n.textContent="Policy configuration requires owner or policy admin permissions.",r=m(),i=h("p"),i.innerHTML='To become a policy admin, ask an existing policy admin to add your pubkey\n to the <code class="svelte-gkxvxc">policy_admins</code> list.',o=m(),s=h("p"),a=g("Current user role: "),l=h("strong"),f=g(p),A(n,"class","svelte-gkxvxc"),A(i,"class","svelte-gkxvxc"),A(s,"class","svelte-gkxvxc"),A(t,"class","permission-denied svelte-gkxvxc")},m(e,d){u(e,t,d),c(t,n),c(t,r),c(t,i),c(t,o),c(t,s),c(s,a),c(s,l),c(l,f)},p(e,t){8&t[0]&&p!==(p=(e[3]||"none")+"")&&k(f,p)},d(e){e&&d(t)}}}function Ky(e){let t,n,i,o,s,a,l,f,p,y,v,b,C,E,x,S,Q,F,D,$,R,P,T,U,N,L,M,_,O,H,j,G,J,K,V,z,q,Y,W,Z,X,ee,te,ne,re,ie,oe,se,ae,le,ce,ue,de,fe,he,pe,ge,me,ye,we,ve,Ae,be,ke,Ie,Ce,Ee,xe,Be,Se,Qe,Fe,De,$e,Re,Pe=e[5]?"Policy Enabled":"Policy Disabled",Te=e[10].length+"",Ue=e[4]&&Vy(),Ne=e[9].length>0&&zy(e),Le=e[7]&&Yy(e);function Me(e,t){return 0===e[1].length?Zy:Wy}let _e=Me(e),Oe=_e(e);function He(e,t){return 0===e[10].length?tw:ew}let je=He(e),Ge=je(e);return{c(){t=h("div"),n=h("div"),i=h("h3"),i.textContent="Policy Editor",o=m(),s=h("div"),a=h("span"),l=g(Pe),f=m(),Ue&&Ue.c(),p=m(),y=h("div"),y.innerHTML='<p class="svelte-gkxvxc">Edit the policy JSON below and click &quot;Save &amp; Publish&quot; to update the relay&#39;s policy configuration.\n Changes are applied immediately after validation.</p> \n <p class="info-note svelte-gkxvxc">Policy updates are published as kind 12345 events and require policy admin permissions.</p>',v=m(),b=h("div"),C=h("textarea"),E=m(),Ne&&Ne.c(),x=m(),S=h("div"),Q=h("button"),F=g("Load Current"),D=m(),$=h("button"),R=g("Format JSON"),P=m(),T=h("button"),U=g("Validate"),N=m(),L=h("button"),M=g("Save & Publish"),_=m(),Le&&Le.c(),O=m(),H=h("div"),j=h("h3"),j.textContent="Policy Administrators",G=m(),J=h("div"),J.innerHTML='<p class="svelte-gkxvxc">Policy admins can update the relay&#39;s policy configuration via kind 12345 events.\n Their follows get whitelisted if <code>policy_follow_whitelist_enabled</code> is true in the policy.</p> \n <p class="info-note svelte-gkxvxc"><strong>Note:</strong> Policy admins are separate from relay admins (ORLY_ADMINS).\n Changes here update the JSON editor - click &quot;Save &amp; Publish&quot; to apply.</p>',K=m(),V=h("div"),Oe.c(),z=m(),q=h("div"),Y=h("input"),W=m(),Z=h("button"),X=g("+ Add Admin"),te=m(),ne=h("div"),re=h("h3"),re.textContent="Policy Follow Whitelist",ie=m(),oe=h("div"),oe.innerHTML='<p class="svelte-gkxvxc">Pubkeys followed by policy admins (kind 3 events).\n These get automatic read+write access when rules have <code>write_allow_follows: true</code>.</p>',se=m(),ae=h("div"),le=h("span"),ce=g(Te),ue=g(" pubkey(s) in whitelist"),de=m(),fe=h("button"),he=g("🔄 Refresh Follows"),pe=m(),ge=h("div"),Ge.c(),me=m(),ye=h("div"),we=h("h3"),we.textContent="Policy Reference",ve=m(),Ae=h("div"),be=h("h4"),be.textContent="Structure Overview",ke=m(),Ie=h("ul"),Ie.innerHTML='<li class="svelte-gkxvxc"><code class="svelte-gkxvxc">kind.whitelist</code> - Only allow these event kinds (takes precedence)</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">kind.blacklist</code> - Deny these event kinds (if no whitelist)</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">global</code> - Rules applied to all events</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">rules</code> - Per-kind rules (keyed by kind number as string)</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">default_policy</code> - &quot;allow&quot; or &quot;deny&quot; when no rules match</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">policy_admins</code> - Hex pubkeys that can update policy</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">policy_follow_whitelist_enabled</code> - Enable follow-based access</li>',Ce=m(),Ee=h("h4"),Ee.textContent="Rule Fields",xe=m(),Be=h("ul"),Be.innerHTML='<li class="svelte-gkxvxc"><code class="svelte-gkxvxc">description</code> - Human-readable rule description</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">write_allow</code> / <code class="svelte-gkxvxc">write_deny</code> - Pubkey lists for write access</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">read_allow</code> / <code class="svelte-gkxvxc">read_deny</code> - Pubkey lists for read access</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">write_allow_follows</code> - Grant access to policy admin follows</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">size_limit</code> - Max total event size in bytes</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">content_limit</code> - Max content field size in bytes</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">max_expiry</code> - Max expiry offset in seconds</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">max_age_of_event</code> - Max age of created_at in seconds</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">max_age_event_in_future</code> - Max future offset in seconds</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">must_have_tags</code> - Required tag letters (e.g., [&quot;d&quot;, &quot;t&quot;])</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">tag_validation</code> - Regex patterns for tag values</li> \n <li class="svelte-gkxvxc"><code class="svelte-gkxvxc">script</code> - Path to external validation script</li>',Se=m(),Qe=h("h4"),Qe.textContent="Example Policy",Fe=m(),De=h("pre"),De.textContent=`${e[20]}`,A(i,"class","svelte-gkxvxc"),A(a,"class","status-badge svelte-gkxvxc"),B(a,"enabled",e[5]),A(s,"class","policy-status svelte-gkxvxc"),A(n,"class","policy-header svelte-gkxvxc"),A(y,"class","policy-info svelte-gkxvxc"),A(C,"class","policy-editor svelte-gkxvxc"),A(C,"placeholder","Loading policy configuration..."),C.disabled=e[6],A(C,"spellcheck","false"),A(b,"class","editor-container svelte-gkxvxc"),A(Q,"class","policy-btn load-btn svelte-gkxvxc"),Q.disabled=e[6],A($,"class","policy-btn format-btn svelte-gkxvxc"),$.disabled=e[6],A(T,"class","policy-btn validate-btn svelte-gkxvxc"),T.disabled=e[6],A(L,"class","policy-btn save-btn svelte-gkxvxc"),L.disabled=e[6],A(S,"class","policy-actions svelte-gkxvxc"),A(t,"class","policy-section svelte-gkxvxc"),A(J,"class","policy-info svelte-gkxvxc"),A(V,"class","admin-list svelte-gkxvxc"),A(Y,"type","text"),A(Y,"placeholder","npub or hex pubkey"),Y.disabled=e[6],A(Y,"class","svelte-gkxvxc"),A(Z,"class","policy-btn add-btn svelte-gkxvxc"),Z.disabled=ee=e[6]||!e[11].trim(),A(q,"class","add-admin svelte-gkxvxc"),A(H,"class","policy-section svelte-gkxvxc"),A(oe,"class","policy-info svelte-gkxvxc"),A(le,"class","follows-count svelte-gkxvxc"),A(fe,"class","policy-btn refresh-btn svelte-gkxvxc"),fe.disabled=e[6],A(ae,"class","follows-header svelte-gkxvxc"),A(ge,"class","follows-list svelte-gkxvxc"),A(ne,"class","policy-section svelte-gkxvxc"),A(be,"class","svelte-gkxvxc"),A(Ie,"class","field-list svelte-gkxvxc"),A(Ee,"class","svelte-gkxvxc"),A(Be,"class","field-list svelte-gkxvxc"),A(Qe,"class","svelte-gkxvxc"),A(De,"class","example-json svelte-gkxvxc"),A(Ae,"class","reference-content svelte-gkxvxc"),A(ye,"class","policy-section svelte-gkxvxc")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),c(a,l),c(s,f),Ue&&Ue.m(s,null),c(t,p),c(t,y),c(t,v),c(t,b),c(b,C),I(C,e[0]),c(t,E),Ne&&Ne.m(t,null),c(t,x),c(t,S),c(S,Q),c(Q,F),c(S,D),c(S,$),c($,R),c(S,P),c(S,T),c(T,U),c(S,N),c(S,L),c(L,M),c(t,_),Le&&Le.m(t,null),u(r,O,d),u(r,H,d),c(H,j),c(H,G),c(H,J),c(H,K),c(H,V),Oe.m(V,null),c(H,z),c(H,q),c(q,Y),I(Y,e[11]),c(q,W),c(q,Z),c(Z,X),u(r,te,d),u(r,ne,d),c(ne,re),c(ne,ie),c(ne,oe),c(ne,se),c(ne,ae),c(ae,le),c(le,ce),c(le,ue),c(ae,de),c(ae,fe),c(fe,he),c(ne,pe),c(ne,ge),Ge.m(ge,null),u(r,me,d),u(r,ye,d),c(ye,we),c(ye,ve),c(ye,Ae),c(Ae,be),c(Ae,ke),c(Ae,Ie),c(Ae,Ce),c(Ae,Ee),c(Ae,xe),c(Ae,Be),c(Ae,Se),c(Ae,Qe),c(Ae,Fe),c(Ae,De),$e||(Re=[w(C,"input",e[21]),w(Q,"click",e[12]),w($,"click",e[15]),w(T,"click",e[13]),w(L,"click",e[14]),w(Y,"input",e[23]),w(Y,"keydown",e[24]),w(Z,"click",e[18]),w(fe,"click",e[17])],$e=!0)},p(e,n){32&n[0]&&Pe!==(Pe=e[5]?"Policy Enabled":"Policy Disabled")&&k(l,Pe),32&n[0]&&B(a,"enabled",e[5]),e[4]?Ue||(Ue=Vy(),Ue.c(),Ue.m(s,null)):Ue&&(Ue.d(1),Ue=null),64&n[0]&&(C.disabled=e[6]),1&n[0]&&I(C,e[0]),e[9].length>0?Ne?Ne.p(e,n):(Ne=zy(e),Ne.c(),Ne.m(t,x)):Ne&&(Ne.d(1),Ne=null),64&n[0]&&(Q.disabled=e[6]),64&n[0]&&($.disabled=e[6]),64&n[0]&&(T.disabled=e[6]),64&n[0]&&(L.disabled=e[6]),e[7]?Le?Le.p(e,n):(Le=Yy(e),Le.c(),Le.m(t,null)):Le&&(Le.d(1),Le=null),_e===(_e=Me(e))&&Oe?Oe.p(e,n):(Oe.d(1),Oe=_e(e),Oe&&(Oe.c(),Oe.m(V,null))),64&n[0]&&(Y.disabled=e[6]),2048&n[0]&&Y.value!==e[11]&&I(Y,e[11]),2112&n[0]&&ee!==(ee=e[6]||!e[11].trim())&&(Z.disabled=ee),1024&n[0]&&Te!==(Te=e[10].length+"")&&k(ce,Te),64&n[0]&&(fe.disabled=e[6]),je===(je=He(e))&&Ge?Ge.p(e,n):(Ge.d(1),Ge=je(e),Ge&&(Ge.c(),Ge.m(ge,null)))},d(e){e&&d(t),Ue&&Ue.d(),Ne&&Ne.d(),Le&&Le.d(),e&&d(O),e&&d(H),Oe.d(),e&&d(te),e&&d(ne),Ge.d(),e&&d(me),e&&d(ye),$e=!1,r(Re)}}}function Vy(e){let t;return{c(){t=h("span"),t.textContent="Policy Admin",A(t,"class","admin-badge svelte-gkxvxc")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function zy(e){let t,n,r,i,o=e[9],s=[];for(let t=0;t<o.length;t+=1)s[t]=qy(jy(e,o,t));return{c(){t=h("div"),n=h("h4"),n.textContent="Validation Errors:",r=m(),i=h("ul");for(let e=0;e<s.length;e+=1)s[e].c();A(n,"class","svelte-gkxvxc"),A(i,"class","svelte-gkxvxc"),A(t,"class","validation-errors svelte-gkxvxc")},m(e,o){u(e,t,o),c(t,n),c(t,r),c(t,i);for(let e=0;e<s.length;e+=1)s[e]&&s[e].m(i,null)},p(e,t){if(512&t[0]){let n;for(o=e[9],n=0;n<o.length;n+=1){const r=jy(e,o,n);s[n]?s[n].p(r,t):(s[n]=qy(r),s[n].c(),s[n].m(i,null))}for(;n<s.length;n+=1)s[n].d(1);s.length=o.length}},d(e){e&&d(t),f(s,e)}}}function qy(e){let t,n,r=e[32]+"";return{c(){t=h("li"),n=g(r),A(t,"class","svelte-gkxvxc")},m(e,r){u(e,t,r),c(t,n)},p(e,t){512&t[0]&&r!==(r=e[32]+"")&&k(n,r)},d(e){e&&d(t)}}}function Yy(e){let t,n;return{c(){t=h("div"),n=g(e[7]),A(t,"class","policy-message svelte-gkxvxc"),B(t,"error","error"===e[8]),B(t,"success","success"===e[8])},m(e,r){u(e,t,r),c(t,n)},p(e,r){128&r[0]&&k(n,e[7]),256&r[0]&&B(t,"error","error"===e[8]),256&r[0]&&B(t,"success","success"===e[8])},d(e){e&&d(t)}}}function Wy(e){let t,n=e[1],r=[];for(let t=0;t<n.length;t+=1)r[t]=Xy(Hy(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(524354&i[0]){let o;for(n=e[1],o=0;o<n.length;o+=1){const s=Hy(e,n,o);r[o]?r[o].p(s,i):(r[o]=Xy(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function Zy(t){let n;return{c(){n=h("p"),n.textContent="No policy admins configured",A(n,"class","no-items svelte-gkxvxc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Xy(e){let t,n,r,i,o,s,a,l,f,p,y,v,b=e[29].substring(0,16)+"",I=e[29].substring(e[29].length-8)+"";function C(){return e[22](e[29])}return{c(){t=h("div"),n=h("span"),r=g(b),i=g("..."),o=g(I),a=m(),l=h("button"),f=g("✕"),p=m(),A(n,"class","admin-pubkey svelte-gkxvxc"),A(n,"title",s=e[29]),A(l,"class","remove-btn svelte-gkxvxc"),l.disabled=e[6],A(l,"title","Remove admin"),A(t,"class","admin-item svelte-gkxvxc")},m(e,s){u(e,t,s),c(t,n),c(n,r),c(n,i),c(n,o),c(t,a),c(t,l),c(l,f),c(t,p),y||(v=w(l,"click",C),y=!0)},p(t,i){e=t,2&i[0]&&b!==(b=e[29].substring(0,16)+"")&&k(r,b),2&i[0]&&I!==(I=e[29].substring(e[29].length-8)+"")&&k(o,I),2&i[0]&&s!==(s=e[29])&&A(n,"title",s),64&i[0]&&(l.disabled=e[6])},d(e){e&&d(t),y=!1,v()}}}function ew(e){let t,n=e[10],r=[];for(let t=0;t<n.length;t+=1)r[t]=nw(Oy(e,n,t));return{c(){t=h("div");for(let e=0;e<r.length;e+=1)r[e].c();A(t,"class","follows-grid svelte-gkxvxc")},m(e,n){u(e,t,n);for(let e=0;e<r.length;e+=1)r[e]&&r[e].m(t,null)},p(e,i){if(1024&i[0]){let o;for(n=e[10],o=0;o<n.length;o+=1){const s=Oy(e,n,o);r[o]?r[o].p(s,i):(r[o]=nw(s),r[o].c(),r[o].m(t,null))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){e&&d(t),f(r,e)}}}function tw(t){let n;return{c(){n=h("p"),n.textContent='No follows loaded. Click "Refresh Follows" to load from database.',A(n,"class","no-items svelte-gkxvxc")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function nw(e){let t,n,r,i,o,s,a=e[26].substring(0,12)+"",l=e[26].substring(e[26].length-6)+"";return{c(){t=h("div"),n=g(a),r=g("..."),i=g(l),o=m(),A(t,"class","follow-item svelte-gkxvxc"),A(t,"title",s=e[26])},m(e,s){u(e,t,s),c(t,n),c(t,r),c(t,i),c(t,o)},p(e,r){1024&r[0]&&a!==(a=e[26].substring(0,12)+"")&&k(n,a),1024&r[0]&&l!==(l=e[26].substring(e[26].length-6)+"")&&k(i,l),1024&r[0]&&s!==(s=e[26])&&A(t,"title",s)},d(e){e&&d(t)}}}function rw(t){let n,r,i;function o(e,t){return e[2]&&("owner"===e[3]||e[4])?Ky:e[2]?Jy:Gy}let s=o(t),a=s(t);return{c(){n=h("div"),r=h("h2"),r.textContent="Policy Configuration",i=m(),a.c(),A(r,"class","svelte-gkxvxc"),A(n,"class","policy-view svelte-gkxvxc")},m(e,t){u(e,n,t),c(n,r),c(n,i),a.m(n,null)},p(e,t){s===(s=o(e))&&a?a.p(e,t):(a.d(1),a=s(e),a&&(a.c(),a.m(n,null)))},i:e,o:e,d(e){e&&d(n),a.d()}}}function iw(e,t,n){let{isLoggedIn:r=!1}=t,{userRole:i=""}=t,{isPolicyAdmin:o=!1}=t,{policyEnabled:s=!1}=t,{policyJson:a=""}=t,{isLoadingPolicy:l=!1}=t,{policyMessage:c=""}=t,{policyMessageType:u=""}=t,{validationErrors:d=[]}=t,{policyAdmins:f=[]}=t,{policyFollows:h=[]}=t;const p=R();let g="";function m(){g.trim()&&(p("addPolicyAdmin",g.trim()),n(11,g=""))}function y(e){p("removePolicyAdmin",e)}return e.$$set=e=>{"isLoggedIn"in e&&n(2,r=e.isLoggedIn),"userRole"in e&&n(3,i=e.userRole),"isPolicyAdmin"in e&&n(4,o=e.isPolicyAdmin),"policyEnabled"in e&&n(5,s=e.policyEnabled),"policyJson"in e&&n(0,a=e.policyJson),"isLoadingPolicy"in e&&n(6,l=e.isLoadingPolicy),"policyMessage"in e&&n(7,c=e.policyMessage),"policyMessageType"in e&&n(8,u=e.policyMessageType),"validationErrors"in e&&n(9,d=e.validationErrors),"policyAdmins"in e&&n(1,f=e.policyAdmins),"policyFollows"in e&&n(10,h=e.policyFollows)},e.$$.update=()=>{if(1&e.$$.dirty[0])try{if(a){const e=JSON.parse(a);n(1,f=e.policy_admins||[])}}catch(e){}},[a,f,r,i,o,s,l,c,u,d,h,g,function(){p("loadPolicy")},function(){p("validatePolicy")},function(){p("savePolicy")},function(){p("formatJson")},function(){p("openLoginModal")},function(){p("refreshFollows")},m,y,'{\n "kind": {\n "whitelist": [0, 1, 3, 6, 7, 10002],\n "blacklist": []\n },\n "global": {\n "description": "Global rules applied to all events",\n "size_limit": 65536,\n "max_age_of_event": 86400,\n "max_age_event_in_future": 300\n },\n "rules": {\n "1": {\n "description": "Kind 1 (short text notes)",\n "content_limit": 8192,\n "write_allow_follows": true\n },\n "30023": {\n "description": "Long-form articles",\n "content_limit": 100000,\n "tag_validation": {\n "d": "^[a-z0-9-]{1,64}$",\n "t": "^[a-z0-9-]{1,32}$"\n }\n }\n },\n "default_policy": "allow",\n "policy_admins": ["<your-hex-pubkey>"],\n "policy_follow_whitelist_enabled": true\n}',function(){a=this.value,n(0,a)},e=>y(e),function(){g=this.value,n(11,g)},e=>"Enter"===e.key&&m()]}class ow extends oe{constructor(e){super(),ie(this,e,iw,rw,o,{isLoggedIn:2,userRole:3,isPolicyAdmin:4,policyEnabled:5,policyJson:0,isLoadingPolicy:6,policyMessage:7,policyMessageType:8,validationErrors:9,policyAdmins:1,policyFollows:10},null,[-1,-1])}}const{window:sw}=l;function aw(e,t,n){const r=e.slice();return r[57]=t[n],r}function lw(e,t,n){const r=e.slice();return r[54]=t[n],r}function cw(t){let n,r,i,o,s,a;return{c(){n=h("div"),r=h("p"),r.textContent="Please log in to view your Blossom storage.",i=m(),o=h("button"),o.textContent="Log In",A(r,"class","svelte-on0yal"),A(o,"class","login-btn svelte-on0yal"),A(n,"class","login-prompt svelte-on0yal")},m(e,l){u(e,n,l),c(n,r),c(n,i),c(n,o),s||(a=w(o,"click",t[20]),s=!0)},p:e,d(e){e&&d(n),s=!1,a()}}}function uw(e){let t,n,r,i,o,s,a,l,f,p,y,v,b,I,C=e[0]||e[12]?"Loading...":"Refresh";function E(e,t){return e[13]?hw:e[10]?fw:dw}let x=E(e),B=x(e),S=e[14]&&!e[10]&&!e[13]&&gw(e),Q=!e[10]&&!e[13]&&mw(e),F=e[2]&&ww(e);function D(e,t){return e[10]&&!e[13]?Aw:vw}let $=D(e),R=$(e);return{c(){t=h("div"),n=h("div"),B.c(),r=m(),i=h("div"),S&&S.c(),o=m(),s=h("button"),a=g("🔄 "),l=g(C),p=m(),Q&&Q.c(),y=m(),F&&F.c(),v=m(),R.c(),A(s,"class","refresh-btn svelte-on0yal"),s.disabled=f=e[0]||e[12],A(i,"class","header-buttons svelte-on0yal"),A(n,"class","header-section svelte-on0yal"),A(t,"class","blossom-view svelte-on0yal")},m(d,f){u(d,t,f),c(t,n),B.m(n,null),c(n,r),c(n,i),S&&S.m(i,null),c(i,o),c(i,s),c(s,a),c(s,l),c(t,p),Q&&Q.m(t,null),c(t,y),F&&F.m(t,null),c(t,v),R.m(t,null),b||(I=w(s,"click",e[30]),b=!0)},p(e,a){x===(x=E(e))&&B?B.p(e,a):(B.d(1),B=x(e),B&&(B.c(),B.m(n,r))),!e[14]||e[10]||e[13]?S&&(S.d(1),S=null):S?S.p(e,a):(S=gw(e),S.c(),S.m(i,o)),4097&a[0]&&C!==(C=e[0]||e[12]?"Loading...":"Refresh")&&k(l,C),4097&a[0]&&f!==(f=e[0]||e[12])&&(s.disabled=f),e[10]||e[13]?Q&&(Q.d(1),Q=null):Q?Q.p(e,a):(Q=mw(e),Q.c(),Q.m(t,y)),e[2]?F?F.p(e,a):(F=ww(e),F.c(),F.m(t,v)):F&&(F.d(1),F=null),$===($=D(e))&&R?R.p(e,a):(R.d(1),R=$(e),R&&(R.c(),R.m(t,null)))},d(e){e&&d(t),B.d(),S&&S.d(),Q&&Q.d(),F&&F.d(),R.d(),b=!1,I()}}}function dw(t){let n;return{c(){n=h("h3"),n.textContent="Blossom Media Storage",A(n,"class","svelte-on0yal")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function fw(t){let n,r,i,o,s;return{c(){n=h("button"),n.textContent="← Back",r=m(),i=h("h3"),i.textContent="All Users Storage",A(n,"class","back-btn svelte-on0yal"),A(i,"class","svelte-on0yal")},m(e,a){u(e,n,a),u(e,r,a),u(e,i,a),o||(s=w(n,"click",t[27]),o=!0)},p:e,d(e){e&&d(n),e&&d(r),e&&d(i),o=!1,s()}}}function hw(e){let t,n,r,i,o,s,a,l=(e[13].profile?.name||Yw(e[25](e[13].pubkey)))+"",f=e[13].profile?.picture&&pw(e);return{c(){t=h("button"),t.textContent="← Back",n=m(),r=h("h3"),f&&f.c(),i=m(),o=g(l),A(t,"class","back-btn svelte-on0yal"),A(r,"class","user-header svelte-on0yal")},m(l,d){u(l,t,d),u(l,n,d),u(l,r,d),f&&f.m(r,null),c(r,i),c(r,o),s||(a=w(t,"click",e[29]),s=!0)},p(e,t){e[13].profile?.picture?f?f.p(e,t):(f=pw(e),f.c(),f.m(r,i)):f&&(f.d(1),f=null),8192&t[0]&&l!==(l=(e[13].profile?.name||Yw(e[25](e[13].pubkey)))+"")&&k(o,l)},d(e){e&&d(t),e&&d(n),e&&d(r),f&&f.d(),s=!1,a()}}}function pw(e){let t,n;return{c(){t=h("img"),a(t.src,n=e[13].profile.picture)||A(t,"src",n),A(t,"alt",""),A(t,"class","header-avatar svelte-on0yal")},m(e,n){u(e,t,n)},p(e,r){8192&r[0]&&!a(t.src,n=e[13].profile.picture)&&A(t,"src",n)},d(e){e&&d(t)}}}function gw(e){let t,n,r,i;return{c(){t=h("button"),n=g("Admin"),A(t,"class","admin-btn svelte-on0yal"),t.disabled=e[0]},m(o,s){u(o,t,s),c(t,n),r||(i=w(t,"click",e[26]),r=!0)},p(e,n){1&n[0]&&(t.disabled=e[0])},d(e){e&&d(t),r=!1,i()}}}function mw(e){let t,n,i,o,s,a,l,f,p,y,v=e[3].length>0&&yw(e);return{c(){t=h("div"),n=h("span"),n.textContent="Upload new files",i=m(),o=h("input"),s=m(),v&&v.c(),a=m(),l=h("button"),f=g("Select Files"),A(n,"class","upload-label svelte-on0yal"),A(o,"type","file"),o.multiple=!0,A(o,"class","file-input-hidden svelte-on0yal"),A(l,"class","select-btn svelte-on0yal"),l.disabled=e[4],A(t,"class","upload-section svelte-on0yal")},m(r,d){u(r,t,d),c(t,n),c(t,i),c(t,o),e[39](o),c(t,s),v&&v.m(t,null),c(t,a),c(t,l),c(l,f),p||(y=[w(o,"change",e[22]),w(l,"click",e[23])],p=!0)},p(e,n){e[3].length>0?v?v.p(e,n):(v=yw(e),v.c(),v.m(t,a)):v&&(v.d(1),v=null),16&n[0]&&(l.disabled=e[4])},d(n){n&&d(t),e[39](null),v&&v.d(),p=!1,r(y)}}}function yw(e){let t,n,r,i,o,s,a,l,f=e[3].length+"",p=(e[4]?e[5]:"Upload")+"";return{c(){t=h("span"),n=g(f),r=g(" file(s) selected"),i=m(),o=h("button"),s=g(p),A(t,"class","selected-count svelte-on0yal"),A(o,"class","upload-btn svelte-on0yal"),o.disabled=e[4]},m(d,f){u(d,t,f),c(t,n),c(t,r),u(d,i,f),u(d,o,f),c(o,s),a||(l=w(o,"click",e[24]),a=!0)},p(e,t){8&t[0]&&f!==(f=e[3].length+"")&&k(n,f),48&t[0]&&p!==(p=(e[4]?e[5]:"Upload")+"")&&k(s,p),16&t[0]&&(o.disabled=e[4])},d(e){e&&d(t),e&&d(i),e&&d(o),a=!1,l()}}}function ww(e){let t,n;return{c(){t=h("div"),n=g(e[2]),A(t,"class","error-message svelte-on0yal")},m(e,r){u(e,t,r),c(t,n)},p(e,t){4&t[0]&&k(n,e[2])},d(e){e&&d(t)}}}function vw(e){let t,n,r;function i(e,r){return 1&r[0]&&(t=null),null==t&&(t=!(!e[0]||0!==e[31]().length)),t?Iw:(null==n&&(n=!(0!==e[31]().length)),n?kw:bw)}let o=i(e,[-1,-1]),s=o(e);return{c(){s.c(),r=y()},m(e,t){s.m(e,t),u(e,r,t)},p(e,t){o===(o=i(e,t))&&s?s.p(e,t):(s.d(1),s=o(e),s&&(s.c(),s.m(r.parentNode,r)))},d(e){s.d(e),e&&d(r)}}}function Aw(e){let t;function n(e,t){return e[12]?Fw:0===e[11].length?Qw:Sw}let r=n(e),i=r(e);return{c(){i.c(),t=y()},m(e,n){i.m(e,n),u(e,t,n)},p(e,o){r===(r=n(e))&&i?i.p(e,o):(i.d(1),i=r(e),i&&(i.c(),i.m(t.parentNode,t)))},d(e){i.d(e),e&&d(t)}}}function bw(e){let t,n=e[31](),r=[];for(let t=0;t<n.length;t+=1)r[t]=Bw(aw(e,n,t));return{c(){t=h("div");for(let e=0;e<r.length;e+=1)r[e].c();A(t,"class","blob-list svelte-on0yal")},m(e,n){u(e,t,n);for(let e=0;e<r.length;e+=1)r[e]&&r[e].m(t,null)},p(e,i){if(2129920&i[0]|1&i[1]){let o;for(n=e[31](),o=0;o<n.length;o+=1){const s=aw(e,n,o);r[o]?r[o].p(s,i):(r[o]=Bw(s),r[o].c(),r[o].m(t,null))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){e&&d(t),f(r,e)}}}function kw(e){let t,n,r,i=e[13]?"No files found for this user.":"No files found in your Blossom storage.";return{c(){t=h("div"),n=h("p"),r=g(i),A(t,"class","empty-state svelte-on0yal")},m(e,i){u(e,t,i),c(t,n),c(n,r)},p(e,t){8192&t[0]&&i!==(i=e[13]?"No files found for this user.":"No files found in your Blossom storage.")&&k(r,i)},d(e){e&&d(t)}}}function Iw(t){let n;return{c(){n=h("div"),n.textContent="Loading blobs...",A(n,"class","loading svelte-on0yal")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Cw(t){let n,r,i=zw(t[57].type)+"";return{c(){n=h("span"),r=g(i),A(n,"class","thumbnail-icon svelte-on0yal")},m(e,t){u(e,n,t),c(n,r)},p:e,d(e){e&&d(n)}}}function Ew(t){let n,r;return{c(){n=h("video"),a(n.src,r=qw(t[57]))||A(n,"src",r),A(n,"class","thumbnail-video svelte-on0yal"),n.muted=!0,A(n,"preload","metadata")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function xw(t){let n,r;return{c(){n=h("img"),a(n.src,r=qw(t[57]))||A(n,"src",r),A(n,"alt",""),A(n,"class","thumbnail-img svelte-on0yal")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Bw(e){let t,n,i,o,s,a,l,f,p,y,b,k,I,C,E,x,B,S,Q,F,D,$,R,P,T,U=e[57].sha256+"",N=Kw(e[57].sha256)+"",L=Gw(e[57].size)+"",M=(e[57].type||"unknown")+"",_=Jw(e[57].uploaded)+"";let O=function(e){return"image"===Vw(e[57].type)?xw:"video"===Vw(e[57].type)?Ew:Cw}(e),H=O(e);function j(){return e[42](e[57])}function G(){return e[43](e[57])}function J(...t){return e[44](e[57],...t)}return{c(){t=h("div"),n=h("div"),H.c(),i=m(),o=h("div"),s=h("div"),a=h("span"),l=g(U),f=m(),p=h("span"),y=g(N),b=m(),k=h("div"),I=h("span"),C=g(L),E=m(),x=h("span"),B=g(M),S=m(),Q=h("div"),F=g(_),D=m(),$=h("button"),$.textContent="X",R=m(),A(n,"class","blob-thumbnail svelte-on0yal"),A(a,"class","hash-full svelte-on0yal"),A(p,"class","hash-truncated svelte-on0yal"),A(s,"class","blob-hash svelte-on0yal"),A(s,"title",e[57].sha256),A(I,"class","blob-size"),A(x,"class","blob-type"),A(k,"class","blob-meta svelte-on0yal"),A(o,"class","blob-info svelte-on0yal"),A(Q,"class","blob-date svelte-on0yal"),A($,"class","delete-btn svelte-on0yal"),A($,"title","Delete"),A(t,"class","blob-item svelte-on0yal"),A(t,"role","button"),A(t,"tabindex","0")},m(e,r){u(e,t,r),c(t,n),H.m(n,null),c(t,i),c(t,o),c(o,s),c(s,a),c(a,l),c(s,f),c(s,p),c(p,y),c(o,b),c(o,k),c(k,I),c(I,C),c(k,E),c(k,x),c(x,B),c(t,S),c(t,Q),c(Q,F),c(t,D),c(t,$),c(t,R),P||(T=[w($,"click",v(j)),w(t,"click",G),w(t,"keypress",J)],P=!0)},p(t,n){e=t,H.p(e,n)},d(e){e&&d(t),H.d(),P=!1,r(T)}}}function Sw(e){let t,n=e[11],r=[];for(let t=0;t<n.length;t+=1)r[t]=Rw(lw(e,n,t));return{c(){t=h("div");for(let e=0;e<r.length;e+=1)r[e].c();A(t,"class","admin-users-list svelte-on0yal")},m(e,n){u(e,t,n);for(let e=0;e<r.length;e+=1)r[e]&&r[e].m(t,null)},p(e,i){if(301991936&i[0]){let o;for(n=e[11],o=0;o<n.length;o+=1){const s=lw(e,n,o);r[o]?r[o].p(s,i):(r[o]=Rw(s),r[o].c(),r[o].m(t,null))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){e&&d(t),f(r,e)}}}function Qw(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No users have uploaded files yet.</p>",A(n,"class","empty-state svelte-on0yal")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Fw(t){let n;return{c(){n=h("div"),n.textContent="Loading user statistics...",A(n,"class","loading svelte-on0yal")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Dw(t){let n;return{c(){n=h("div"),A(n,"class","user-avatar-placeholder svelte-on0yal")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function $w(e){let t,n;return{c(){t=h("img"),a(t.src,n=e[54].profile.picture)||A(t,"src",n),A(t,"alt",""),A(t,"class","user-avatar svelte-on0yal")},m(e,n){u(e,t,n)},p(e,r){2048&r[0]&&!a(t.src,n=e[54].profile.picture)&&A(t,"src",n)},d(e){e&&d(t)}}}function Rw(e){let t,n,i,o,s,a,l,f,p,y,v,b,I,C,E,x,B,S,Q,F,D,$,R,P,T,U=(e[54].profile?.name||Yw(e[25](e[54].pubkey)))+"",N=e[25](e[54].pubkey)+"",L=Yw(e[25](e[54].pubkey))+"",M=e[54].blob_count+"",_=Gw(e[54].total_size_bytes)+"";function O(e,t){return e[54].profile?.picture?$w:Dw}let H=O(e),j=H(e);function G(){return e[40](e[54])}function J(...t){return e[41](e[54],...t)}return{c(){t=h("div"),n=h("div"),j.c(),i=m(),o=h("div"),s=h("div"),a=g(U),l=m(),f=h("div"),p=h("span"),y=g(N),v=m(),b=h("span"),I=g(L),E=m(),x=h("div"),B=h("span"),S=g(M),Q=g(" files"),F=m(),D=h("span"),$=g(_),R=m(),A(n,"class","user-avatar-container svelte-on0yal"),A(s,"class","user-name svelte-on0yal"),A(p,"class","npub-full svelte-on0yal"),A(b,"class","npub-truncated svelte-on0yal"),A(f,"class","user-npub svelte-on0yal"),A(f,"title",C=e[54].pubkey),A(o,"class","user-info svelte-on0yal"),A(B,"class","blob-count svelte-on0yal"),A(D,"class","total-size svelte-on0yal"),A(x,"class","user-stats svelte-on0yal"),A(t,"class","user-stat-item svelte-on0yal"),A(t,"role","button"),A(t,"tabindex","0")},m(e,r){u(e,t,r),c(t,n),j.m(n,null),c(t,i),c(t,o),c(o,s),c(s,a),c(o,l),c(o,f),c(f,p),c(p,y),c(f,v),c(f,b),c(b,I),c(t,E),c(t,x),c(x,B),c(B,S),c(B,Q),c(x,F),c(x,D),c(D,$),c(t,R),P||(T=[w(t,"click",G),w(t,"keypress",J)],P=!0)},p(t,r){H===(H=O(e=t))&&j?j.p(e,r):(j.d(1),j=H(e),j&&(j.c(),j.m(n,null))),2048&r[0]&&U!==(U=(e[54].profile?.name||Yw(e[25](e[54].pubkey)))+"")&&k(a,U),2048&r[0]&&N!==(N=e[25](e[54].pubkey)+"")&&k(y,N),2048&r[0]&&L!==(L=Yw(e[25](e[54].pubkey))+"")&&k(I,L),2048&r[0]&&C!==(C=e[54].pubkey)&&A(f,"title",C),2048&r[0]&&M!==(M=e[54].blob_count+"")&&k(S,M),2048&r[0]&&_!==(_=Gw(e[54].total_size_bytes)+"")&&k($,_)},d(e){e&&d(t),j.d(),P=!1,r(T)}}}function Pw(e){let t,n,i,o,s,a,l,f,p,y,b,I,C,E,x,B,S,Q,F,D,$,R,P,T,U,N,L,M,_,O,H,j,G,J,K,V,z,q,Y,W,Z,X,ee,te=Kw(e[8].sha256)+"",ne=(e[8].type||"unknown")+"",re="image"===Vw(e[8].type),ie=Gw(e[8].size)+"",oe=Jw(e[8].uploaded)+"",se=re&&Tw(e);function ae(e,t){return 256&t[0]&&(B=null),256&t[0]&&(S=null),256&t[0]&&(Q=null),null==B&&(B=!("image"!==Vw(e[8].type))),B?Mw:(null==S&&(S=!("video"!==Vw(e[8].type))),S?Lw:(null==Q&&(Q=!("audio"!==Vw(e[8].type))),Q?Nw:Uw))}let le=ae(e,[-1,-1]),ce=le(e);return{c(){t=h("div"),n=h("div"),i=h("div"),o=h("div"),s=h("span"),a=g(te),l=m(),f=h("span"),p=g(ne),y=m(),b=h("div"),se&&se.c(),I=m(),C=h("button"),C.textContent="X",E=m(),x=h("div"),ce.c(),F=m(),D=h("div"),$=h("div"),R=h("span"),P=g("Size: "),T=g(ie),U=m(),N=h("span"),L=g("Uploaded: "),M=g(oe),_=m(),O=h("div"),H=h("input"),G=m(),J=h("button"),J.textContent="Copy",K=m(),V=h("div"),z=h("a"),q=g("Open in New Tab"),W=m(),Z=h("button"),Z.textContent="Delete",A(s,"class","modal-hash svelte-on0yal"),A(f,"class","modal-type svelte-on0yal"),A(o,"class","modal-title svelte-on0yal"),A(C,"class","close-btn svelte-on0yal"),A(b,"class","modal-controls svelte-on0yal"),A(i,"class","modal-header svelte-on0yal"),A(x,"class","modal-body svelte-on0yal"),A($,"class","blob-details svelte-on0yal"),A(H,"type","text"),H.readOnly=!0,H.value=j=qw(e[8]),A(H,"class","blob-url-input svelte-on0yal"),A(J,"class","copy-btn svelte-on0yal"),A(O,"class","blob-url-section svelte-on0yal"),A(z,"href",Y=qw(e[8])),A(z,"target","_blank"),A(z,"rel","noopener noreferrer"),A(z,"class","action-btn svelte-on0yal"),A(Z,"class","action-btn danger svelte-on0yal"),A(V,"class","modal-actions svelte-on0yal"),A(D,"class","modal-footer svelte-on0yal"),A(n,"class","modal-content svelte-on0yal"),A(n,"role","dialog"),A(t,"class","modal-overlay svelte-on0yal"),A(t,"role","button"),A(t,"tabindex","0")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(i,o),c(o,s),c(s,a),c(o,l),c(o,f),c(f,p),c(i,y),c(i,b),se&&se.m(b,null),c(b,I),c(b,C),c(n,E),c(n,x),ce.m(x,null),c(n,F),c(n,D),c(D,$),c($,R),c(R,P),c(R,T),c($,U),c($,N),c(N,L),c(N,M),c(D,_),c(D,O),c(O,H),c(O,G),c(O,J),c(D,K),c(D,V),c(V,z),c(z,q),c(V,W),c(V,Z),X||(ee=[w(C,"click",e[16]),w(H,"click",Ww),w(J,"click",e[45]),w(Z,"click",e[46]),w(n,"click",v(e[37])),w(n,"keypress",v(e[38])),w(t,"click",e[16]),w(t,"keypress",e[47])],X=!0)},p(e,t){256&t[0]&&te!==(te=Kw(e[8].sha256)+"")&&k(a,te),256&t[0]&&ne!==(ne=(e[8].type||"unknown")+"")&&k(p,ne),256&t[0]&&(re="image"===Vw(e[8].type)),re?se?se.p(e,t):(se=Tw(e),se.c(),se.m(b,I)):se&&(se.d(1),se=null),le===(le=ae(e,t))&&ce?ce.p(e,t):(ce.d(1),ce=le(e),ce&&(ce.c(),ce.m(x,null))),256&t[0]&&ie!==(ie=Gw(e[8].size)+"")&&k(T,ie),256&t[0]&&oe!==(oe=Jw(e[8].uploaded)+"")&&k(M,oe),256&t[0]&&j!==(j=qw(e[8]))&&H.value!==j&&(H.value=j),256&t[0]&&Y!==(Y=qw(e[8]))&&A(z,"href",Y)},d(e){e&&d(t),se&&se.d(),ce.d(),X=!1,r(ee)}}}function Tw(e){let t,n,i,o,s,a,l,f,p,y,v,b,I,C=Math.round(100*e[9])+"";return{c(){t=h("button"),n=g("-"),o=m(),s=h("span"),a=g(C),l=g("%"),f=m(),p=h("button"),y=g("+"),A(t,"class","zoom-btn svelte-on0yal"),t.disabled=i=e[9]<=Ow,A(s,"class","zoom-level svelte-on0yal"),A(p,"class","zoom-btn svelte-on0yal"),p.disabled=v=e[9]>=Hw},m(r,i){u(r,t,i),c(t,n),u(r,o,i),u(r,s,i),c(s,a),c(s,l),u(r,f,i),u(r,p,i),c(p,y),b||(I=[w(t,"click",e[18]),w(p,"click",e[17])],b=!0)},p(e,n){512&n[0]&&i!==(i=e[9]<=Ow)&&(t.disabled=i),512&n[0]&&C!==(C=Math.round(100*e[9])+"")&&k(a,C),512&n[0]&&v!==(v=e[9]>=Hw)&&(p.disabled=v)},d(e){e&&d(t),e&&d(o),e&&d(s),e&&d(f),e&&d(p),b=!1,r(I)}}}function Uw(e){let t,n,r,i,o,s,a,l,f,p=zw(e[8].type)+"";return{c(){t=h("div"),n=h("div"),r=g(p),i=m(),o=h("p"),o.textContent="Preview not available for this file type.",s=m(),a=h("a"),l=g("Download File"),A(n,"class","file-icon svelte-on0yal"),A(a,"href",f=qw(e[8])),A(a,"target","_blank"),A(a,"rel","noopener noreferrer"),A(a,"class","download-link svelte-on0yal"),A(t,"class","file-preview svelte-on0yal")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(t,i),c(t,o),c(t,s),c(t,a),c(a,l)},p(e,t){256&t[0]&&p!==(p=zw(e[8].type)+"")&&k(r,p),256&t[0]&&f!==(f=qw(e[8]))&&A(a,"href",f)},d(e){e&&d(t)}}}function Nw(e){let t,n,r;return{c(){t=h("div"),n=h("audio"),n.controls=!0,a(n.src,r=qw(e[8]))||A(n,"src",r),A(n,"class","svelte-on0yal"),A(t,"class","media-container audio svelte-on0yal")},m(e,r){u(e,t,r),c(t,n)},p(e,t){256&t[0]&&!a(n.src,r=qw(e[8]))&&A(n,"src",r)},d(e){e&&d(t)}}}function Lw(e){let t,n,r,i;return{c(){t=h("div"),n=h("video"),r=h("track"),A(r,"kind","captions"),n.controls=!0,a(n.src,i=qw(e[8]))||A(n,"src",i),A(n,"class","svelte-on0yal"),A(t,"class","media-container svelte-on0yal")},m(e,i){u(e,t,i),c(t,n),c(n,r)},p(e,t){256&t[0]&&!a(n.src,i=qw(e[8]))&&A(n,"src",i)},d(e){e&&d(t)}}}function Mw(e){let t,n,r;return{c(){t=h("div"),n=h("img"),a(n.src,r=qw(e[8]))||A(n,"src",r),A(n,"alt","Blob content"),A(n,"class","svelte-on0yal"),A(t,"class","media-container svelte-on0yal"),C(t,"transform","scale("+e[9]+")")},m(e,r){u(e,t,r),c(t,n)},p(e,i){256&i[0]&&!a(n.src,r=qw(e[8]))&&A(n,"src",r),512&i[0]&&C(t,"transform","scale("+e[9]+")")},d(e){e&&d(t)}}}function _w(t){let n,r,i,o;function s(e,t){return e[1]?uw:cw}let a=s(t),l=a(t),c=t[7]&&t[8]&&Pw(t);return{c(){l.c(),n=m(),c&&c.c(),r=y()},m(e,s){l.m(e,s),u(e,n,s),c&&c.m(e,s),u(e,r,s),i||(o=w(sw,"keydown",t[19]),i=!0)},p(e,t){a===(a=s(e))&&l?l.p(e,t):(l.d(1),l=a(e),l&&(l.c(),l.m(n.parentNode,n))),e[7]&&e[8]?c?c.p(e,t):(c=Pw(e),c.c(),c.m(r.parentNode,r)):c&&(c.d(1),c=null)},i:e,o:e,d(e){l.d(e),e&&d(n),c&&c.d(e),e&&d(r),i=!1,o()}}}const Ow=.25,Hw=4;async function jw(e,t,n=null){if(!e)return console.log("No signer available for Blossom auth"),null;try{const r=Math.floor(Date.now()/1e3),i=[["t",t],["expiration",(r+60).toString()]];n&&i.push(["x",n]);const o={kind:24242,created_at:r,tags:i,content:`Blossom ${t} operation`},s=await e.signEvent(o);return btoa(JSON.stringify(s)).replace(/\+/g,"-").replace(/\//g,"_")}catch(e){return console.error("Error creating Blossom auth:",e),null}}function Gw(e){if(!e)return"0 B";const t=["B","KB","MB","GB"];let n=0,r=e;for(;r>=1024&&n<t.length-1;)r/=1024,n++;return`${r.toFixed(0===n?0:1)} ${t[n]}`}function Jw(e){return e?new Date(1e3*e).toLocaleString():"Unknown"}function Kw(e){return e?`${e.slice(0,8)}...${e.slice(-8)}`:""}function Vw(e){return e?e.startsWith("image/")?"image":e.startsWith("video/")?"video":e.startsWith("audio/")?"audio":"file":"unknown"}function zw(e){switch(Vw(e)){case"image":return"🖼️";case"video":return"🎬";case"audio":return"🎵";default:return"📄"}}function qw(e){return e.url?e.url.startsWith("http://")||e.url.startsWith("https://")?e.url:e.url.startsWith("/")?`${window.location.origin}${e.url}`:`http://${e.url}`:`${window.location.origin}/blossom/${e.sha256}`}function Yw(e){return e?`${e.slice(0,12)}...${e.slice(-8)}`:""}const Ww=e=>e.target.select();function Zw(e,t,n){let r,i,{isLoggedIn:o=!1}=t,{userPubkey:s=""}=t,{userSigner:a=null}=t,{currentEffectiveRole:l=""}=t;const c=R();let u,d=[],f=!1,h="",p=[],g=!1,m="",y=!1,w=null,v=1,A=!1,b=[],k=!1,I=null,C=[],E=!1;async function x(){if(s){n(0,f=!0),n(2,h="");try{const e=`${window.location.origin}/blossom/list/${s}`,t=await jw(a,"list"),n=await fetch(e,{headers:t?{Authorization:`Nostr ${t}`}:{}});if(!n.ok)throw new Error(`Failed to load blobs: ${n.statusText}`);const r=await n.json();d=Array.isArray(r)?r:[],d.sort((e,t)=>(t.uploaded||0)-(e.uploaded||0)),console.log("Loaded blobs:",d)}catch(e){console.error("Error loading blobs:",e),n(2,h=e.message||"Failed to load blobs")}finally{n(0,f=!1)}}}function B(e){n(8,w=e),n(9,v=1),n(7,y=!0)}function S(){n(7,y=!1),n(8,w=null),n(9,v=1)}function Q(){v<Hw&&n(9,v=Math.min(Hw,v+.25))}function F(){v>Ow&&n(9,v=Math.max(Ow,v-.25))}async function $(e){if(confirm(`Delete blob ${Kw(e.sha256)}?`))try{const t=`${window.location.origin}/blossom/${e.sha256}`,n=await jw(a,"delete",e.sha256),r=await fetch(t,{method:"DELETE",headers:n?{Authorization:`Nostr ${n}`}:{}});if(!r.ok)throw new Error(`Failed to delete: ${r.statusText}`);d=d.filter(t=>t.sha256!==e.sha256),w?.sha256===e.sha256&&S()}catch(e){console.error("Error deleting blob:",e),alert(`Failed to delete blob: ${e.message}`)}}async function T(){n(12,k=!0),n(2,h="");try{const e=`${window.location.origin}/blossom/admin/users`,t=await jw(a,"admin"),r=await fetch(e,{headers:t?{Authorization:`Nostr ${t}`}:{}});if(!r.ok)throw new Error(`Failed to load user stats: ${r.statusText}`);n(11,b=await r.json());for(const e of b)Ph(e.pubkey).then(t=>{e.profile=t||{name:"",picture:""},n(11,b)}).catch(()=>{e.profile={name:"",picture:""}})}catch(e){console.error("Error fetching admin user stats:",e),n(2,h=e.message||"Failed to load user stats")}finally{n(12,k=!1)}}async function N(e){n(0,f=!0),n(2,h="");try{const t=`${window.location.origin}/blossom/list/${e}`,n=await jw(a,"list"),r=await fetch(t,{headers:n?{Authorization:`Nostr ${n}`}:{}});if(!r.ok)throw new Error(`Failed to load user blobs: ${r.statusText}`);C=await r.json(),C.sort((e,t)=>(t.uploaded||0)-(e.uploaded||0))}catch(e){console.error("Error loading user blobs:",e),n(2,h=e.message||"Failed to load user blobs")}finally{n(0,f=!1)}}async function L(e){n(13,I={pubkey:e.pubkey,profile:e.profile}),await N(e.pubkey)}D(()=>{r&&!E&&(n(36,E=!0),x())});return e.$$set=e=>{"isLoggedIn"in e&&n(32,o=e.isLoggedIn),"userPubkey"in e&&n(33,s=e.userPubkey),"userSigner"in e&&n(34,a=e.userSigner),"currentEffectiveRole"in e&&n(35,l=e.currentEffectiveRole)},e.$$.update=()=>{6&e.$$.dirty[1]&&n(1,r=o&&s),16&e.$$.dirty[1]&&n(14,i="admin"===l||"owner"===l),3&e.$$.dirty[0]|32&e.$$.dirty[1]&&(!r||E||f||(n(36,E=!0),x()))},[f,r,h,p,g,m,u,y,w,v,A,b,k,I,i,B,S,Q,F,function(e){y&&("Escape"===e.key?S():"+"===e.key||"="===e.key?Q():"-"===e.key&&F())},function(){c("openLoginModal")},$,function(e){n(3,p=Array.from(e.target.files))},function(){u?.click()},async function(){if(0===p.length)return;n(4,g=!0),n(2,h="");const e=[],t=[];for(let r=0;r<p.length;r++){const i=p[r];n(5,m=`Uploading ${r+1}/${p.length}: ${i.name}`);try{const t=`${window.location.origin}/blossom/upload`,n=await jw(a,"upload"),r=await fetch(t,{method:"PUT",headers:{"Content-Type":i.type||"application/octet-stream",...n?{Authorization:`Nostr ${n}`}:{}},body:i});if(!r.ok){const e=r.headers.get("X-Reason")||r.statusText;throw new Error(e)}const o=await r.json();console.log("Upload response:",o),e.push(o)}catch(e){console.error(`Error uploading ${i.name}:`,e),t.push({name:i.name,error:e.message})}}n(4,g=!1),n(5,m=""),n(3,p=[]),u&&n(6,u.value="",u),e.length>0&&await x(),t.length>0&&n(2,h=`Failed to upload: ${t.map(e=>e.name).join(", ")}`)},function(e){try{return vu(e)}catch(t){return Kw(e)}},function(){n(10,A=!0),T()},function(){n(10,A=!1),n(11,b=[]),n(13,I=null),C=[]},L,function(){n(13,I=null),C=[]},function(){I?N(I.pubkey):A?T():x()},function(){return I?C:d},o,s,a,l,E,function(t){P.call(this,e,t)},function(t){P.call(this,e,t)},function(e){U[e?"unshift":"push"](()=>{u=e,n(6,u)})},e=>L(e),(e,t)=>"Enter"===t.key&&L(e),e=>$(e),e=>B(e),(e,t)=>"Enter"===t.key&&B(e),()=>{navigator.clipboard.writeText(qw(w))},()=>$(w),e=>"Enter"===e.key&&S()]}class Xw extends oe{constructor(e){super(),ie(this,e,Zw,_w,o,{isLoggedIn:32,userPubkey:33,userSigner:34,currentEffectiveRole:35},null,[-1,-1])}}var ev={},tv={},nv={};let rv;const iv=[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];nv.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 4*e+17},nv.getSymbolTotalCodewords=function(e){return iv[e]},nv.getBCHDigit=function(e){let t=0;for(;0!==e;)t++,e>>>=1;return t},nv.setToSJISFunction=function(e){if("function"!=typeof e)throw new Error('"toSJISFunc" is not a valid function.');rv=e},nv.isKanjiModeEnabled=function(){return void 0!==rv},nv.toSJIS=function(e){return rv(e)};var ov,sv={};function av(){this.buffer=[],this.length=0}(ov=sv).L={bit:1},ov.M={bit:0},ov.Q={bit:3},ov.H={bit:2},ov.isValid=function(e){return e&&void 0!==e.bit&&e.bit>=0&&e.bit<4},ov.from=function(e,t){if(ov.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"l":case"low":return ov.L;case"m":case"medium":return ov.M;case"q":case"quartile":return ov.Q;case"h":case"high":return ov.H;default:throw new Error("Unknown EC Level: "+e)}}(e)}catch(e){return t}},av.prototype={get:function(e){const t=Math.floor(e/8);return 1==(this.buffer[t]>>>7-e%8&1)},put:function(e,t){for(let n=0;n<t;n++)this.putBit(1==(e>>>t-n-1&1))},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var lv=av;function cv(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}cv.prototype.set=function(e,t,n,r){const i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},cv.prototype.get=function(e,t){return this.data[e*this.size+t]},cv.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},cv.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var uv=cv,dv={};!function(e){const t=nv.getSymbolSize;e.getRowColCoords=function(e){if(1===e)return[];const n=Math.floor(e/7)+2,r=t(e),i=145===r?26:2*Math.ceil((r-13)/(2*n-2)),o=[r-7];for(let e=1;e<n-1;e++)o[e]=o[e-1]-i;return o.push(6),o.reverse()},e.getPositions=function(t){const n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)0===e&&0===t||0===e&&t===i-1||e===i-1&&0===t||n.push([r[e],r[t]]);return n}}(dv);var fv={};const hv=nv.getSymbolSize;fv.getPositions=function(e){const t=hv(e);return[[0,0],[t-7,0],[0,t-7]]};var pv={};!function(e){e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const t=3,n=3,r=40,i=10;function o(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}}e.isValid=function(e){return null!=e&&""!==e&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){const n=e.size;let r=0,i=0,o=0,s=null,a=null;for(let l=0;l<n;l++){i=o=0,s=a=null;for(let c=0;c<n;c++){let n=e.get(l,c);n===s?i++:(i>=5&&(r+=t+(i-5)),s=n,i=1),n=e.get(c,l),n===a?o++:(o>=5&&(r+=t+(o-5)),a=n,o=1)}i>=5&&(r+=t+(i-5)),o>=5&&(r+=t+(o-5))}return r},e.getPenaltyN2=function(e){const t=e.size;let r=0;for(let n=0;n<t-1;n++)for(let i=0;i<t-1;i++){const t=e.get(n,i)+e.get(n,i+1)+e.get(n+1,i)+e.get(n+1,i+1);4!==t&&0!==t||r++}return r*n},e.getPenaltyN3=function(e){const t=e.size;let n=0,i=0,o=0;for(let r=0;r<t;r++){i=o=0;for(let s=0;s<t;s++)i=i<<1&2047|e.get(r,s),s>=10&&(1488===i||93===i)&&n++,o=o<<1&2047|e.get(s,r),s>=10&&(1488===o||93===o)&&n++}return n*r},e.getPenaltyN4=function(e){let t=0;const n=e.data.length;for(let r=0;r<n;r++)t+=e.data[r];return Math.abs(Math.ceil(100*t/n/5)-10)*i},e.applyMask=function(e,t){const n=t.size;for(let r=0;r<n;r++)for(let i=0;i<n;i++)t.isReserved(i,r)||t.xor(i,r,o(e,i,r))},e.getBestMask=function(t,n){const r=Object.keys(e.Patterns).length;let i=0,o=1/0;for(let s=0;s<r;s++){n(s),e.applyMask(s,t);const r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(s,t),r<o&&(o=r,i=s)}return i}}(pv);var gv={};const mv=sv,yv=[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],wv=[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];gv.getBlocksCount=function(e,t){switch(t){case mv.L:return yv[4*(e-1)+0];case mv.M:return yv[4*(e-1)+1];case mv.Q:return yv[4*(e-1)+2];case mv.H:return yv[4*(e-1)+3];default:return}},gv.getTotalCodewordsCount=function(e,t){switch(t){case mv.L:return wv[4*(e-1)+0];case mv.M:return wv[4*(e-1)+1];case mv.Q:return wv[4*(e-1)+2];case mv.H:return wv[4*(e-1)+3];default:return}};var vv={},Av={};const bv=new Uint8Array(512),kv=new Uint8Array(256);!function(){let e=1;for(let t=0;t<255;t++)bv[t]=e,kv[e]=t,e<<=1,256&e&&(e^=285);for(let e=255;e<512;e++)bv[e]=bv[e-255]}(),Av.log=function(e){if(e<1)throw new Error("log("+e+")");return kv[e]},Av.exp=function(e){return bv[e]},Av.mul=function(e,t){return 0===e||0===t?0:bv[kv[e]+kv[t]]},function(e){const t=Av;e.mul=function(e,n){const r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let o=0;o<n.length;o++)r[i+o]^=t.mul(e[i],n[o]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){const e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&0===r[i];)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}}(vv);const Iv=vv;function Cv(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}Cv.prototype.initialize=function(e){this.degree=e,this.genPoly=Iv.generateECPolynomial(this.degree)},Cv.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");const t=new Uint8Array(e.length+this.degree);t.set(e);const n=Iv.mod(t,this.genPoly),r=this.degree-n.length;if(r>0){const e=new Uint8Array(this.degree);return e.set(n,r),e}return n};var Ev=Cv,xv={},Bv={},Sv={isValid:function(e){return!isNaN(e)&&e>=1&&e<=40}},Qv={};const Fv="[0-9]+";let Dv="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Dv=Dv.replace(/u/g,"\\u");const $v="(?:(?![A-Z0-9 $%*+\\-./:]|"+Dv+")(?:.|[\r\n]))+";Qv.KANJI=new RegExp(Dv,"g"),Qv.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),Qv.BYTE=new RegExp($v,"g"),Qv.NUMERIC=new RegExp(Fv,"g"),Qv.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const Rv=new RegExp("^"+Dv+"$"),Pv=new RegExp("^"+Fv+"$"),Tv=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Qv.testKanji=function(e){return Rv.test(e)},Qv.testNumeric=function(e){return Pv.test(e)},Qv.testAlphanumeric=function(e){return Tv.test(e)},function(e){const t=Sv,n=Qv;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!t.isValid(n))throw new Error("Invalid version: "+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")},e.isValid=function(e){return e&&e.bit&&e.ccBits},e.from=function(t,n){if(e.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+t)}}(t)}catch(e){return n}}}(Bv),function(e){const t=nv,n=gv,r=sv,i=Bv,o=Sv,s=t.getBCHDigit(7973);function a(e,t){return i.getCharCountIndicator(e,t)+4}function l(e,t){let n=0;return e.forEach(function(e){const r=a(e.mode,t);n+=r+e.getBitsLength()}),n}e.from=function(e,t){return o.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,s){if(!o.isValid(e))throw new Error("Invalid QR Code version");void 0===s&&(s=i.BYTE);const l=8*(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r));if(s===i.MIXED)return l;const c=l-a(s,e);switch(s){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(t,n){let o;const s=r.from(n,r.M);if(Array.isArray(t)){if(t.length>1)return function(t,n){for(let r=1;r<=40;r++)if(l(t,r)<=e.getCapacity(r,n,i.MIXED))return r}(t,s);if(0===t.length)return 1;o=t[0]}else o=t;return function(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}(o.mode,o.getLength(),s)},e.getEncodedBits=function(e){if(!o.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=7973<<t.getBCHDigit(n)-s;return e<<12|n}}(xv);var Uv={};const Nv=nv,Lv=Nv.getBCHDigit(1335);Uv.getEncodedBits=function(e,t){const n=e.bit<<3|t;let r=n<<10;for(;Nv.getBCHDigit(r)-Lv>=0;)r^=1335<<Nv.getBCHDigit(r)-Lv;return 21522^(n<<10|r)};var Mv={};const _v=Bv;function Ov(e){this.mode=_v.NUMERIC,this.data=e.toString()}Ov.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},Ov.prototype.getLength=function(){return this.data.length},Ov.prototype.getBitsLength=function(){return Ov.getBitsLength(this.data.length)},Ov.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);const i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,3*i+1))};var Hv=Ov;const jv=Bv,Gv=["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 Jv(e){this.mode=jv.ALPHANUMERIC,this.data=e}Jv.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},Jv.prototype.getLength=function(){return this.data.length},Jv.prototype.getBitsLength=function(){return Jv.getBitsLength(this.data.length)},Jv.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=45*Gv.indexOf(this.data[t]);n+=Gv.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(Gv.indexOf(this.data[t]),6)};var Kv=Jv;const Vv=Bv;function zv(e){this.mode=Vv.BYTE,this.data="string"==typeof e?(new TextEncoder).encode(e):new Uint8Array(e)}zv.getBitsLength=function(e){return 8*e},zv.prototype.getLength=function(){return this.data.length},zv.prototype.getBitsLength=function(){return zv.getBitsLength(this.data.length)},zv.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)};var qv=zv;const Yv=Bv,Wv=nv;function Zv(e){this.mode=Yv.KANJI,this.data=e}Zv.getBitsLength=function(e){return 13*e},Zv.prototype.getLength=function(){return this.data.length},Zv.prototype.getBitsLength=function(){return Zv.getBitsLength(this.data.length)},Zv.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=Wv.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else{if(!(n>=57408&&n<=60351))throw new Error("Invalid SJIS character: "+this.data[t]+"\nMake sure your charset is UTF-8");n-=49472}n=192*(n>>>8&255)+(255&n),e.put(n,13)}};var Xv=Zv,eA={exports:{}};!function(e){var t={single_source_shortest_paths:function(e,n,r){var i={},o={};o[n]=0;var s,a,l,c,u,d,f,h=t.PriorityQueue.make();for(h.push(n,0);!h.empty();)for(l in a=(s=h.pop()).value,c=s.cost,u=e[a]||{})u.hasOwnProperty(l)&&(d=c+u[l],f=o[l],(void 0===o[l]||f>d)&&(o[l]=d,h.push(l,d),i[l]=a));if(void 0!==r&&void 0===o[r]){var p=["Could not find a path from ",n," to ",r,"."].join("");throw new Error(p)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,n,r){var i=t.single_source_shortest_paths(e,n,r);return t.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var n,r=t.PriorityQueue,i={};for(n in e=e||{},r)r.hasOwnProperty(n)&&(i[n]=r[n]);return i.queue=[],i.sorter=e.sorter||r.default_sorter,i},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};e.exports=t}(eA);var tA=eA.exports;!function(e){const t=Bv,n=Hv,r=Kv,i=qv,o=Xv,s=Qv,a=nv,l=tA;function c(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){const r=[];let i;for(;null!==(i=e.exec(n));)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){const n=u(s.NUMERIC,t.NUMERIC,e),r=u(s.ALPHANUMERIC,t.ALPHANUMERIC,e);let i,o;a.isKanjiModeEnabled()?(i=u(s.BYTE,t.BYTE,e),o=u(s.KANJI,t.KANJI,e)):(i=u(s.BYTE_KANJI,t.BYTE,e),o=[]);return n.concat(r,i,o).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,s){switch(s){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return o.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function h(e,s){let l;const c=t.getBestModeForData(e);if(l=t.from(s,c),l!==t.BYTE&&l.bit<c.bit)throw new Error('"'+e+'" cannot be encoded with mode '+t.toString(l)+".\n Suggested mode is: "+t.toString(c));switch(l!==t.KANJI||a.isKanjiModeEnabled()||(l=t.BYTE),l){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new o(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return"string"==typeof t?e.push(h(t,null)):t.data&&e.push(h(t.data,t.mode)),e},[])},e.fromString=function(n,r){const i=function(e){const n=[];for(let r=0;r<e.length;r++){const i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:c(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:c(i.data)}])}}return n}(d(n,a.isKanjiModeEnabled())),o=function(e,n){const r={},i={start:{}};let o=["start"];for(let s=0;s<e.length;s++){const a=e[s],l=[];for(let e=0;e<a.length;e++){const c=a[e],u=""+s+e;l.push(u),r[u]={node:c,lastCount:0},i[u]={};for(let e=0;e<o.length;e++){const s=o[e];r[s]&&r[s].node.mode===c.mode?(i[s][u]=f(r[s].lastCount+c.length,c.mode)-f(r[s].lastCount,c.mode),r[s].lastCount+=c.length):(r[s]&&(r[s].lastCount=c.length),i[s][u]=f(c.length,c.mode)+4+t.getCharCountIndicator(c.mode,n))}}o=l}for(let e=0;e<o.length;e++)i[o[e]].end=0;return{map:i,table:r}}(i,r),s=l.find_path(o.map,"start","end"),u=[];for(let e=1;e<s.length-1;e++)u.push(o.table[s[e]].node);return e.fromArray(function(e){return e.reduce(function(e,t){const n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}(u))},e.rawSplit=function(t){return e.fromArray(d(t,a.isKanjiModeEnabled()))}}(Mv);const nA=nv,rA=sv,iA=lv,oA=uv,sA=dv,aA=fv,lA=pv,cA=gv,uA=Ev,dA=xv,fA=Uv,hA=Bv,pA=Mv;function gA(e,t,n){const r=e.size,i=fA.getEncodedBits(t,n);let o,s;for(o=0;o<15;o++)s=1==(i>>o&1),o<6?e.set(o,8,s,!0):o<8?e.set(o+1,8,s,!0):e.set(r-15+o,8,s,!0),o<8?e.set(8,r-o-1,s,!0):o<9?e.set(8,15-o-1+1,s,!0):e.set(8,15-o-1,s,!0);e.set(r-8,8,1,!0)}function mA(e,t,n){const r=new iA;n.forEach(function(t){r.put(t.mode.bit,4),r.put(t.getLength(),hA.getCharCountIndicator(t.mode,e)),t.write(r)});const i=8*(nA.getSymbolTotalCodewords(e)-cA.getTotalCodewordsCount(e,t));for(r.getLengthInBits()+4<=i&&r.put(0,4);r.getLengthInBits()%8!=0;)r.putBit(0);const o=(i-r.getLengthInBits())/8;for(let e=0;e<o;e++)r.put(e%2?17:236,8);return function(e,t,n){const r=nA.getSymbolTotalCodewords(t),i=cA.getTotalCodewordsCount(t,n),o=r-i,s=cA.getBlocksCount(t,n),a=r%s,l=s-a,c=Math.floor(r/s),u=Math.floor(o/s),d=u+1,f=c-u,h=new uA(f);let p=0;const g=new Array(s),m=new Array(s);let y=0;const w=new Uint8Array(e.buffer);for(let e=0;e<s;e++){const t=e<l?u:d;g[e]=w.slice(p,p+t),m[e]=h.encode(g[e]),p+=t,y=Math.max(y,t)}const v=new Uint8Array(r);let A,b,k=0;for(A=0;A<y;A++)for(b=0;b<s;b++)A<g[b].length&&(v[k++]=g[b][A]);for(A=0;A<f;A++)for(b=0;b<s;b++)v[k++]=m[b][A];return v}(r,e,t)}function yA(e,t,n,r){let i;if(Array.isArray(e))i=pA.fromArray(e);else{if("string"!=typeof e)throw new Error("Invalid data");{let r=t;if(!r){const t=pA.rawSplit(e);r=dA.getBestVersionForData(t,n)}i=pA.fromString(e,r||40)}}const o=dA.getBestVersionForData(i,n);if(!o)throw new Error("The amount of data is too big to be stored in a QR Code");if(t){if(t<o)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+o+".\n")}else t=o;const s=mA(t,n,i),a=nA.getSymbolSize(t),l=new oA(a);return function(e,t){const n=e.size,r=aA.getPositions(t);for(let t=0;t<r.length;t++){const i=r[t][0],o=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)o+r<=-1||n<=o+r||(t>=0&&t<=6&&(0===r||6===r)||r>=0&&r<=6&&(0===t||6===t)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,o+r,!0,!0):e.set(i+t,o+r,!1,!0))}}(l,t),function(e){const t=e.size;for(let n=8;n<t-8;n++){const t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}(l),function(e,t){const n=sA.getPositions(t);for(let t=0;t<n.length;t++){const r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)-2===t||2===t||-2===n||2===n||0===t&&0===n?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}(l,t),gA(l,n,0),t>=7&&function(e,t){const n=e.size,r=dA.getEncodedBits(t);let i,o,s;for(let t=0;t<18;t++)i=Math.floor(t/3),o=t%3+n-8-3,s=1==(r>>t&1),e.set(i,o,s,!0),e.set(o,i,s,!0)}(l,t),function(e,t){const n=e.size;let r=-1,i=n-1,o=7,s=0;for(let a=n-1;a>0;a-=2)for(6===a&&a--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,a-n)){let r=!1;s<t.length&&(r=1==(t[s]>>>o&1)),e.set(i,a-n,r),o--,-1===o&&(s++,o=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}(l,s),isNaN(r)&&(r=lA.getBestMask(l,gA.bind(null,l,n))),lA.applyMask(r,l),gA(l,n,r),{modules:l,version:t,errorCorrectionLevel:n,maskPattern:r,segments:i}}tv.create=function(e,t){if(void 0===e||""===e)throw new Error("No input text");let n,r,i=rA.M;return void 0!==t&&(i=rA.from(t.errorCorrectionLevel,rA.M),n=dA.from(t.version),r=lA.from(t.maskPattern),t.toSJISFunc&&nA.setToSJISFunction(t.toSJISFunc)),yA(e,n,i,r)};var wA={},vA={};!function(e){function t(e){if("number"==typeof e&&(e=e.toString()),"string"!=typeof e)throw new Error("Color should be defined as hex string");let t=e.slice().replace("#","").split("");if(t.length<3||5===t.length||t.length>8)throw new Error("Invalid hex color: "+e);3!==t.length&&4!==t.length||(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),6===t.length&&t.push("F","F");const n=parseInt(t.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:255&n,hex:"#"+t.slice(0,6).join("")}}e.getOptions=function(e){e||(e={}),e.color||(e.color={});const n=void 0===e.margin||null===e.margin||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||"#000000ff"),light:t(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+2*t.margin?t.width/(e+2*t.margin):t.scale},e.getImageWidth=function(t,n){const r=e.getScale(t,n);return Math.floor((t+2*n.margin)*r)},e.qrToImageData=function(t,n,r){const i=n.modules.size,o=n.modules.data,s=e.getScale(i,r),a=Math.floor((i+2*r.margin)*s),l=r.margin*s,c=[r.color.light,r.color.dark];for(let e=0;e<a;e++)for(let n=0;n<a;n++){let u=4*(e*a+n),d=r.color.light;if(e>=l&&n>=l&&e<a-l&&n<a-l){d=c[o[Math.floor((e-l)/s)*i+Math.floor((n-l)/s)]?1:0]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}}(vA),function(e){const t=vA;e.render=function(e,n,r){let i=r,o=n;void 0!==i||n&&n.getContext||(i=n,n=void 0),n||(o=function(){try{return document.createElement("canvas")}catch(e){throw new Error("You need to specify a canvas element")}}()),i=t.getOptions(i);const s=t.getImageWidth(e.modules.size,i),a=o.getContext("2d"),l=a.createImageData(s,s);return t.qrToImageData(l.data,e,i),function(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||(t.style={}),t.height=n,t.width=n,t.style.height=n+"px",t.style.width=n+"px"}(a,o,s),a.putImageData(l,0,0),o},e.renderToDataURL=function(t,n,r){let i=r;void 0!==i||n&&n.getContext||(i=n,n=void 0),i||(i={});const o=e.render(t,n,i),s=i.type||"image/png",a=i.rendererOpts||{};return o.toDataURL(s,a.quality)}}(wA);var AA={};const bA=vA;function kA(e,t){const n=e.a/255,r=t+'="'+e.hex+'"';return n<1?r+" "+t+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function IA(e,t,n){let r=e+t;return void 0!==n&&(r+=" "+n),r}AA.render=function(e,t,n){const r=bA.getOptions(t),i=e.modules.size,o=e.modules.data,s=i+2*r.margin,a=r.color.light.a?"<path "+kA(r.color.light,"fill")+' d="M0 0h'+s+"v"+s+'H0z"/>':"",l="<path "+kA(r.color.dark,"stroke")+' d="'+function(e,t,n){let r="",i=0,o=!1,s=0;for(let a=0;a<e.length;a++){const l=Math.floor(a%t),c=Math.floor(a/t);l||o||(o=!0),e[a]?(s++,a>0&&l>0&&e[a-1]||(r+=o?IA("M",l+n,.5+c+n):IA("m",i,0),i=0,o=!1),l+1<t&&e[a+1]||(r+=IA("h",s),s=0)):i++}return r}(o,i,r.margin)+'"/>',c='viewBox="0 0 '+s+" "+s+'"',u='<svg xmlns="http://www.w3.org/2000/svg" '+(r.width?'width="'+r.width+'" height="'+r.width+'" ':"")+c+' shape-rendering="crispEdges">'+a+l+"</svg>\n";return"function"==typeof n&&n(null,u),u};const CA=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then},EA=tv,xA=wA,BA=AA;function SA(e,t,n,r,i){const o=[].slice.call(arguments,1),s=o.length,a="function"==typeof o[s-1];if(!a&&!CA())throw new Error("Callback required as last argument");if(!a){if(s<1)throw new Error("Too few arguments provided");return 1===s?(n=t,t=r=void 0):2!==s||t.getContext||(r=n,n=t,t=void 0),new Promise(function(i,o){try{const o=EA.create(n,r);i(e(o,t,r))}catch(e){o(e)}})}if(s<2)throw new Error("Too few arguments provided");2===s?(i=n,n=t,t=r=void 0):3===s&&(t.getContext&&void 0===i?(i=r,r=void 0):(i=r,r=n,n=t,t=void 0));try{const o=EA.create(n,r);i(null,e(o,t,r))}catch(e){i(e)}}async function QA(e,t,n,r){if(!e||!t)return console.log("No signer or pubkey available"),null;try{const t={kind:27235,created_at:Math.floor(Date.now()/1e3),tags:[["u",r],["method",n]],content:""},i=await e.signEvent(t);return btoa(JSON.stringify(i)).replace(/\+/g,"-").replace(/\//g,"_")}catch(e){return console.error("Error creating NIP-98 auth:",e),null}}async function FA(e,t){const n=`${window.location.origin}/api/wireguard/config`,r=await QA(e,t,"GET",n),i=await fetch(n,{headers:r?{Authorization:`Nostr ${r}`}:{}});if(!i.ok){const e=await i.text();throw new Error(e||`Failed to get WireGuard config: ${i.statusText}`)}return await i.json()}async function DA(e,t){const n=`${window.location.origin}/api/bunker/url`,r=await QA(e,t,"GET",n),i=await fetch(n,{headers:r?{Authorization:`Nostr ${r}`}:{}});if(!i.ok){const e=await i.text();throw new Error(e||`Failed to get bunker URL: ${i.statusText}`)}return await i.json()}async function $A(e,t){const n=`${window.location.origin}/api/wireguard/audit`,r=await QA(e,t,"GET",n),i=await fetch(n,{headers:r?{Authorization:`Nostr ${r}`}:{}});if(!i.ok){const e=await i.text();throw new Error(e||`Failed to get audit log: ${i.statusText}`)}return await i.json()}function RA(e,t,n){const r=e.slice();return r[22]=t[n],r}function PA(e,t,n){const r=e.slice();return r[25]=t[n],r}function TA(t){let n,r,i,o,s,a;return{c(){n=h("div"),r=h("p"),r.textContent="Please log in to access remote signing.",i=m(),o=h("button"),o.textContent="Log In",A(r,"class","svelte-mnczw"),A(o,"class","login-btn svelte-mnczw"),A(n,"class","login-prompt svelte-mnczw")},m(e,l){u(e,n,l),c(n,r),c(n,i),c(n,o),s||(a=w(o,"click",t[14]),s=!0)},p:e,d(e){e&&d(n),s=!1,a()}}}function UA(e){let t,n,r,i,o,s,a,l,f=(e[1]||"read-only")+"";return{c(){t=h("div"),n=h("div"),r=h("h3"),r.textContent="Access Denied",i=m(),o=h("p"),s=g("You need write access to use remote signing. Your current access level: "),a=h("strong"),l=g(f),A(r,"class","svelte-mnczw"),A(o,"class","svelte-mnczw"),A(n,"class","access-denied svelte-mnczw"),A(t,"class","bunker-view svelte-mnczw")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(n,i),c(n,o),c(o,s),c(o,a),c(a,l)},p(e,t){2&t&&f!==(f=(e[1]||"read-only")+"")&&k(l,f)},d(e){e&&d(t)}}}function NA(e){let t,n,r,i,o,s,a,l,f,p,y=e[3]?"Loading...":"Refresh",v=e[8]&&MA(e);function b(e,t){return e[3]&&!e[5]?OA:e[5]?_A:void 0}let I=b(e),C=I&&I(e);return{c(){t=h("div"),n=h("div"),r=h("h3"),r.textContent="Remote Signing (Bunker)",i=m(),o=h("button"),s=g(y),a=m(),v&&v.c(),l=m(),C&&C.c(),A(r,"class","svelte-mnczw"),A(o,"class","refresh-btn svelte-mnczw"),o.disabled=e[3],A(n,"class","header-section svelte-mnczw"),A(t,"class","bunker-view svelte-mnczw")},m(d,h){u(d,t,h),c(t,n),c(n,r),c(n,i),c(n,o),c(o,s),c(t,a),v&&v.m(t,null),c(t,l),C&&C.m(t,null),f||(p=w(o,"click",e[11]),f=!0)},p(e,n){8&n&&y!==(y=e[3]?"Loading...":"Refresh")&&k(s,y),8&n&&(o.disabled=e[3]),e[8]?v?v.p(e,n):(v=MA(e),v.c(),v.m(t,l)):v&&(v.d(1),v=null),I===(I=b(e))&&C?C.p(e,n):(C&&C.d(1),C=I&&I(e),C&&(C.c(),C.m(t,null)))},d(e){e&&d(t),v&&v.d(),C&&C.d(),f=!1,p()}}}function LA(t){let n;return{c(){n=h("div"),n.innerHTML='<div class="unavailable-message svelte-mnczw"><h3 class="svelte-mnczw">Remote Signing Not Available</h3> \n <p class="svelte-mnczw">This relay does not have WireGuard/Bunker enabled, or ACL mode is set to &quot;none&quot;.</p> \n <p class="hint svelte-mnczw">Remote signing requires the relay operator to enable WireGuard VPN and use ACL mode &quot;follows&quot; or &quot;managed&quot;.</p></div>',A(n,"class","bunker-view svelte-mnczw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function MA(e){let t,n;return{c(){t=h("div"),n=g(e[8]),A(t,"class","error-message svelte-mnczw")},m(e,r){u(e,t,r),c(t,n)},p(e,t){256&t&&k(n,e[8])},d(e){e&&d(t)}}}function _A(e){let t,n,i,o,s,a,l,f,p,v,b,I,C,E,x,B,S,Q,F,D,$,R,P,T,U,N,L,M,_,O,H,j,G,J,K,V,z,q,Y,W,Z,X,ee,te,ne,re,ie,oe,se=e[5].config_text+"",ae=e[5].interface.address+"";function le(e,t){return e[9]?jA:HA}let ce=le(e),ue=ce(e),de=e[6]&&GA(e),fe=e[7]&&(e[7].revoked_keys?.length>0||e[7].access_logs?.length>0)&&VA(e);return{c(){t=h("div"),t.innerHTML='<p class="svelte-mnczw"><strong>How it works:</strong> Connect to the relay&#39;s private VPN, then use Amber to sign events remotely.</p>',n=m(),i=h("div"),o=h("section"),o.innerHTML='<h4 class="svelte-mnczw">Step 1: Install WireGuard</h4> \n <p class="section-desc svelte-mnczw">Download the WireGuard app for your device:</p> \n\n <div class="client-links svelte-mnczw"><a href="https://play.google.com/store/apps/details?id=com.wireguard.android" target="_blank" rel="noopener noreferrer" class="client-link svelte-mnczw"><span class="client-icon svelte-mnczw">Android</span> \n <span class="client-store svelte-mnczw">Google Play</span></a> \n <a href="https://f-droid.org/packages/com.wireguard.android/" target="_blank" rel="noopener noreferrer" class="client-link svelte-mnczw"><span class="client-icon svelte-mnczw">Android</span> \n <span class="client-store svelte-mnczw">F-Droid</span></a> \n <a href="https://apps.apple.com/app/wireguard/id1441195209" target="_blank" rel="noopener noreferrer" class="client-link svelte-mnczw"><span class="client-icon svelte-mnczw">iOS</span> \n <span class="client-store svelte-mnczw">App Store</span></a> \n <a href="https://www.wireguard.com/install/" target="_blank" rel="noopener noreferrer" class="client-link svelte-mnczw"><span class="client-icon svelte-mnczw">Desktop</span> \n <span class="client-store svelte-mnczw">Windows/Mac/Linux</span></a></div>',s=m(),a=h("section"),l=h("h4"),l.textContent="Step 2: Add VPN Configuration",f=m(),p=h("p"),p.textContent="Scan this QR code with the WireGuard app:",v=m(),b=h("div"),ue.c(),I=m(),C=h("div"),E=h("button"),E.textContent="Copy Config",x=m(),B=h("button"),B.textContent="Download .conf",S=m(),Q=h("details"),F=h("summary"),F.textContent="Show raw config",D=m(),$=h("pre"),R=g(se),P=m(),T=h("section"),U=h("h4"),U.textContent="Step 3: Connect to VPN",N=m(),L=h("p"),L.textContent="After importing the config, toggle the VPN connection ON in the WireGuard app.",M=m(),_=h("div"),O=h("span"),O.textContent="Your VPN IP:",H=m(),j=h("code"),G=g(ae),J=m(),de&&de.c(),K=m(),V=h("section"),V.innerHTML='<h4 class="svelte-mnczw">Get Amber (NIP-46 Signer)</h4> \n <p class="section-desc svelte-mnczw">Amber is an Android app for secure remote signing:</p> \n\n <div class="client-links svelte-mnczw"><a href="https://play.google.com/store/apps/details?id=com.greenart7c3.nostrsigner" target="_blank" rel="noopener noreferrer" class="client-link svelte-mnczw"><span class="client-icon svelte-mnczw">Amber</span> \n <span class="client-store svelte-mnczw">Google Play</span></a> \n <a href="https://github.com/greenart7c3/Amber/releases" target="_blank" rel="noopener noreferrer" class="client-link svelte-mnczw"><span class="client-icon svelte-mnczw">Amber</span> \n <span class="client-store svelte-mnczw">GitHub APK</span></a></div>',z=m(),q=h("div"),Y=h("h4"),Y.textContent="Danger Zone",W=m(),Z=h("p"),Z.textContent="Regenerate your WireGuard keys if you believe they've been compromised.",X=m(),ee=h("button"),te=g("Regenerate Keys"),ne=m(),fe&&fe.c(),re=y(),A(t,"class","instructions svelte-mnczw"),A(o,"class","config-section svelte-mnczw"),A(l,"class","svelte-mnczw"),A(p,"class","section-desc svelte-mnczw"),A(b,"class","qr-container svelte-mnczw"),A(E,"class","svelte-mnczw"),A(B,"class","svelte-mnczw"),A(C,"class","config-actions svelte-mnczw"),A(F,"class","svelte-mnczw"),A($,"class","config-text svelte-mnczw"),A(Q,"class","config-text-details svelte-mnczw"),A(a,"class","config-section svelte-mnczw"),A(U,"class","svelte-mnczw"),A(L,"class","section-desc svelte-mnczw"),A(O,"class","label svelte-mnczw"),A(j,"class","svelte-mnczw"),A(_,"class","ip-info svelte-mnczw"),A(T,"class","config-section svelte-mnczw"),A(V,"class","config-section svelte-mnczw"),A(i,"class","config-sections svelte-mnczw"),A(Y,"class","svelte-mnczw"),A(Z,"class","svelte-mnczw"),A(ee,"class","danger-btn svelte-mnczw"),ee.disabled=e[3],A(q,"class","danger-zone svelte-mnczw")},m(r,d){u(r,t,d),u(r,n,d),u(r,i,d),c(i,o),c(i,s),c(i,a),c(a,l),c(a,f),c(a,p),c(a,v),c(a,b),ue.m(b,null),c(a,I),c(a,C),c(C,E),c(C,x),c(C,B),c(a,S),c(a,Q),c(Q,F),c(Q,D),c(Q,$),c($,R),c(i,P),c(i,T),c(T,U),c(T,N),c(T,L),c(T,M),c(T,_),c(_,O),c(_,H),c(_,j),c(j,G),c(i,J),de&&de.m(i,null),c(i,K),c(i,V),u(r,z,d),u(r,q,d),c(q,Y),c(q,W),c(q,Z),c(q,X),c(q,ee),c(ee,te),u(r,ne,d),fe&&fe.m(r,d),u(r,re,d),ie||(oe=[w(E,"click",e[18]),w(B,"click",e[13]),w(ee,"click",e[12])],ie=!0)},p(e,t){ce===(ce=le(e))&&ue?ue.p(e,t):(ue.d(1),ue=ce(e),ue&&(ue.c(),ue.m(b,null))),32&t&&se!==(se=e[5].config_text+"")&&k(R,se),32&t&&ae!==(ae=e[5].interface.address+"")&&k(G,ae),e[6]?de?de.p(e,t):(de=GA(e),de.c(),de.m(i,K)):de&&(de.d(1),de=null),8&t&&(ee.disabled=e[3]),e[7]&&(e[7].revoked_keys?.length>0||e[7].access_logs?.length>0)?fe?fe.p(e,t):(fe=VA(e),fe.c(),fe.m(re.parentNode,re)):fe&&(fe.d(1),fe=null)},d(e){e&&d(t),e&&d(n),e&&d(i),ue.d(),de&&de.d(),e&&d(z),e&&d(q),e&&d(ne),fe&&fe.d(e),e&&d(re),ie=!1,r(oe)}}}function OA(t){let n;return{c(){n=h("div"),n.textContent="Loading configuration...",A(n,"class","loading svelte-mnczw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function HA(t){let n;return{c(){n=h("div"),n.textContent="Generating QR...",A(n,"class","qr-placeholder svelte-mnczw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function jA(e){let t,n;return{c(){t=h("img"),a(t.src,n=e[9])||A(t,"src",n),A(t,"alt","WireGuard Configuration QR Code"),A(t,"class","qr-code svelte-mnczw")},m(e,n){u(e,t,n)},p(e,r){512&r&&!a(t.src,n=e[9])&&A(t,"src",n)},d(e){e&&d(t)}}}function GA(e){let t,n,r,i,o,s,a,l,f,p,y,v,b,I,C,E,x,B,S,Q,F=e[6].url+"",D=e[6].relay_npub+"";function $(e,t){return e[10]?KA:JA}let R=$(e),P=R(e);return{c(){t=h("section"),n=h("h4"),n.textContent="Step 4: Add Bunker to Amber",r=m(),i=h("p"),i.innerHTML='With VPN connected, scan this QR code in <a href="https://github.com/greenart7c3/Amber" target="_blank" rel="noopener noreferrer" class="svelte-mnczw">Amber</a>:',o=m(),s=h("div"),P.c(),a=m(),l=h("div"),f=h("code"),p=g(F),y=m(),v=h("button"),v.textContent="Copy",b=m(),I=h("div"),C=h("span"),C.textContent="Relay npub:",E=m(),x=h("code"),B=g(D),A(n,"class","svelte-mnczw"),A(i,"class","section-desc svelte-mnczw"),A(s,"class","qr-container svelte-mnczw"),A(f,"class","bunker-url svelte-mnczw"),A(v,"class","svelte-mnczw"),A(l,"class","bunker-url-container svelte-mnczw"),A(C,"class","label svelte-mnczw"),A(x,"class","npub svelte-mnczw"),A(I,"class","relay-info svelte-mnczw"),A(t,"class","config-section svelte-mnczw")},m(d,h){u(d,t,h),c(t,n),c(t,r),c(t,i),c(t,o),c(t,s),P.m(s,null),c(t,a),c(t,l),c(l,f),c(f,p),c(l,y),c(l,v),c(t,b),c(t,I),c(I,C),c(I,E),c(I,x),c(x,B),S||(Q=w(v,"click",e[19]),S=!0)},p(e,t){R===(R=$(e))&&P?P.p(e,t):(P.d(1),P=R(e),P&&(P.c(),P.m(s,null))),64&t&&F!==(F=e[6].url+"")&&k(p,F),64&t&&D!==(D=e[6].relay_npub+"")&&k(B,D)},d(e){e&&d(t),P.d(),S=!1,Q()}}}function JA(t){let n;return{c(){n=h("div"),n.textContent="Generating QR...",A(n,"class","qr-placeholder svelte-mnczw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function KA(e){let t,n;return{c(){t=h("img"),a(t.src,n=e[10])||A(t,"src",n),A(t,"alt","Bunker URL QR Code"),A(t,"class","qr-code svelte-mnczw")},m(e,n){u(e,t,n)},p(e,r){1024&r&&!a(t.src,n=e[10])&&A(t,"src",n)},d(e){e&&d(t)}}}function VA(e){let t,n,r,i,o,s,a=e[7].revoked_keys?.length>0&&zA(e),l=e[7].access_logs?.length>0&&YA(e);return{c(){t=h("div"),n=h("h4"),n.textContent="Key History & Access Log",r=m(),i=h("p"),i.textContent="Monitor activity on your old WireGuard keys. High access counts might indicate you left something connected or someone copied your credentials.",o=m(),a&&a.c(),s=m(),l&&l.c(),A(n,"class","svelte-mnczw"),A(i,"class","audit-desc svelte-mnczw"),A(t,"class","audit-section svelte-mnczw")},m(e,d){u(e,t,d),c(t,n),c(t,r),c(t,i),c(t,o),a&&a.m(t,null),c(t,s),l&&l.m(t,null)},p(e,n){e[7].revoked_keys?.length>0?a?a.p(e,n):(a=zA(e),a.c(),a.m(t,s)):a&&(a.d(1),a=null),e[7].access_logs?.length>0?l?l.p(e,n):(l=YA(e),l.c(),l.m(t,null)):l&&(l.d(1),l=null)},d(e){e&&d(t),a&&a.d(),l&&l.d()}}}function zA(e){let t,n,r,i,o,s,a,l,p=e[7].revoked_keys,g=[];for(let t=0;t<p.length;t+=1)g[t]=qA(PA(e,p,t));return{c(){t=h("div"),n=h("h5"),n.textContent="Revoked Keys",r=m(),i=h("div"),o=h("table"),s=h("thead"),s.innerHTML='<tr><th class="svelte-mnczw">Client IP</th> \n <th class="svelte-mnczw">Created</th> \n <th class="svelte-mnczw">Revoked</th> \n <th class="svelte-mnczw">Access Count</th> \n <th class="svelte-mnczw">Last Access</th></tr>',a=m(),l=h("tbody");for(let e=0;e<g.length;e+=1)g[e].c();A(n,"class","svelte-mnczw"),A(o,"class","audit-table svelte-mnczw"),A(i,"class","audit-table-container svelte-mnczw"),A(t,"class","audit-subsection svelte-mnczw")},m(e,d){u(e,t,d),c(t,n),c(t,r),c(t,i),c(i,o),c(o,s),c(o,a),c(o,l);for(let e=0;e<g.length;e+=1)g[e]&&g[e].m(l,null)},p(e,t){if(128&t){let n;for(p=e[7].revoked_keys,n=0;n<p.length;n+=1){const r=PA(e,p,n);g[n]?g[n].p(r,t):(g[n]=qA(r),g[n].c(),g[n].m(l,null))}for(;n<g.length;n+=1)g[n].d(1);g.length=p.length}},d(e){e&&d(t),f(g,e)}}}function qA(e){let t,n,r,i,o,s,a,l,f,p,y,w,v,b,I,C,E,x=e[25].client_ip+"",S=XA(e[25].created_at)+"",Q=XA(e[25].revoked_at)+"",F=e[25].access_count+"",D=XA(e[25].last_access_at)+"";return{c(){t=h("tr"),n=h("td"),r=h("code"),i=g(x),o=m(),s=h("td"),a=g(S),l=m(),f=h("td"),p=g(Q),y=m(),w=h("td"),v=g(F),b=m(),I=h("td"),C=g(D),E=m(),A(r,"class","svelte-mnczw"),A(n,"class","svelte-mnczw"),A(s,"class","svelte-mnczw"),A(f,"class","svelte-mnczw"),A(w,"class","svelte-mnczw"),B(w,"highlight",e[25].access_count>0),A(I,"class","svelte-mnczw"),A(t,"class","svelte-mnczw"),B(t,"warning",e[25].access_count>0)},m(e,d){u(e,t,d),c(t,n),c(n,r),c(r,i),c(t,o),c(t,s),c(s,a),c(t,l),c(t,f),c(f,p),c(t,y),c(t,w),c(w,v),c(t,b),c(t,I),c(I,C),c(t,E)},p(e,n){128&n&&x!==(x=e[25].client_ip+"")&&k(i,x),128&n&&S!==(S=XA(e[25].created_at)+"")&&k(a,S),128&n&&Q!==(Q=XA(e[25].revoked_at)+"")&&k(p,Q),128&n&&F!==(F=e[25].access_count+"")&&k(v,F),128&n&&B(w,"highlight",e[25].access_count>0),128&n&&D!==(D=XA(e[25].last_access_at)+"")&&k(C,D),128&n&&B(t,"warning",e[25].access_count>0)},d(e){e&&d(t)}}}function YA(e){let t,n,r,i,o,s,a,l,p=e[7].access_logs,g=[];for(let t=0;t<p.length;t+=1)g[t]=WA(RA(e,p,t));return{c(){t=h("div"),n=h("h5"),n.textContent="Recent Access Attempts (Obsolete Addresses)",r=m(),i=h("div"),o=h("table"),s=h("thead"),s.innerHTML='<tr><th class="svelte-mnczw">Client IP</th> \n <th class="svelte-mnczw">Time</th> \n <th class="svelte-mnczw">Remote Address</th></tr>',a=m(),l=h("tbody");for(let e=0;e<g.length;e+=1)g[e].c();A(n,"class","svelte-mnczw"),A(o,"class","audit-table svelte-mnczw"),A(i,"class","audit-table-container svelte-mnczw"),A(t,"class","audit-subsection svelte-mnczw")},m(e,d){u(e,t,d),c(t,n),c(t,r),c(t,i),c(i,o),c(o,s),c(o,a),c(o,l);for(let e=0;e<g.length;e+=1)g[e]&&g[e].m(l,null)},p(e,t){if(128&t){let n;for(p=e[7].access_logs,n=0;n<p.length;n+=1){const r=RA(e,p,n);g[n]?g[n].p(r,t):(g[n]=WA(r),g[n].c(),g[n].m(l,null))}for(;n<g.length;n+=1)g[n].d(1);g.length=p.length}},d(e){e&&d(t),f(g,e)}}}function WA(e){let t,n,r,i,o,s,a,l,f,p,y,w,v=e[22].client_ip+"",b=XA(e[22].timestamp)+"",I=e[22].remote_addr+"";return{c(){t=h("tr"),n=h("td"),r=h("code"),i=g(v),o=m(),s=h("td"),a=g(b),l=m(),f=h("td"),p=h("code"),y=g(I),w=m(),A(r,"class","svelte-mnczw"),A(n,"class","svelte-mnczw"),A(s,"class","svelte-mnczw"),A(p,"class","svelte-mnczw"),A(f,"class","svelte-mnczw")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(r,i),c(t,o),c(t,s),c(s,a),c(t,l),c(t,f),c(f,p),c(p,y),c(t,w)},p(e,t){128&t&&v!==(v=e[22].client_ip+"")&&k(i,v),128&t&&b!==(b=XA(e[22].timestamp)+"")&&k(a,b),128&t&&I!==(I=e[22].remote_addr+"")&&k(y,I)},d(e){e&&d(t)}}}function ZA(t){let n;function r(e,t){return e[2]?.available?e[4]?NA:e[0]?UA:TA:LA}let i=r(t),o=i(t);return{c(){o.c(),n=y()},m(e,t){o.m(e,t),u(e,n,t)},p(e,[t]){i===(i=r(e))&&o?o.p(e,t):(o.d(1),o=i(e),o&&(o.c(),o.m(n.parentNode,n)))},i:e,o:e,d(e){o.d(e),e&&d(n)}}}function XA(e){return e?new Date(1e3*e).toLocaleString():"Never"}function eb(e,t){navigator.clipboard.writeText(e),alert(`${t} copied to clipboard!`)}function tb(e,t,n){let r,{isLoggedIn:i=!1}=t,{userPubkey:o=""}=t,{userSigner:s=null}=t,{currentEffectiveRole:a=""}=t;const l=R();let c=null,u=null,d=null,f=null,h=!1,p="",g="",m="",y=!1;async function w(){if(s&&o){n(3,h=!0),n(8,p="");try{const[e,t,r]=await Promise.all([FA(s,o),DA(s,o),$A(s,o).catch(()=>null)]);n(5,c=e),n(6,u=t),n(7,f=r),c?.config_text&&n(9,g=await ev.toDataURL(c.config_text,{width:256,margin:2,color:{dark:"#000000",light:"#ffffff"}})),u?.url&&n(10,m=await ev.toDataURL(u.url,{width:256,margin:2,color:{dark:"#000000",light:"#ffffff"}}))}catch(e){console.error("Error loading bunker config:",e),n(8,p=e.message||"Failed to load configuration")}finally{n(3,h=!1)}}}D(async()=>{await async function(){try{n(2,d=await async function(){try{const e=await fetch(`${window.location.origin}/api/wireguard/status`);if(e.ok)return await e.json()}catch(e){console.error("Error fetching WireGuard status:",e)}return{wireguard_enabled:!1,bunker_enabled:!1,available:!1}}())}catch(e){console.error("Error checking WireGuard status:",e),n(2,d={available:!1})}}(),r&&d?.available&&!y&&(n(17,y=!0),await w())});return e.$$set=e=>{"isLoggedIn"in e&&n(0,i=e.isLoggedIn),"userPubkey"in e&&n(15,o=e.userPubkey),"userSigner"in e&&n(16,s=e.userSigner),"currentEffectiveRole"in e&&n(1,a=e.currentEffectiveRole)},e.$$.update=()=>{32771&e.$$.dirty&&n(4,r=i&&o&&("write"===a||"admin"===a||"owner"===a)),131100&e.$$.dirty&&r&&d?.available&&!y&&!h&&(n(17,y=!0),w())},[i,a,d,h,r,c,u,f,p,g,m,w,async function(){if(confirm("Regenerate your WireGuard keys? Your current keys will stop working.")){n(3,h=!0),n(8,p="");try{await async function(e,t){const n=`${window.location.origin}/api/wireguard/regenerate`,r=await QA(e,t,"POST",n),i=await fetch(n,{method:"POST",headers:r?{Authorization:`Nostr ${r}`}:{}});if(!i.ok){const e=await i.text();throw new Error(e||`Failed to regenerate WireGuard: ${i.statusText}`)}return await i.json()}(s,o),n(17,y=!1),await w()}catch(e){console.error("Error regenerating keys:",e),n(8,p=e.message||"Failed to regenerate keys")}finally{n(3,h=!1)}}},function(){if(!c?.config_text)return;const e=new Blob([c.config_text],{type:"text/plain"}),t=URL.createObjectURL(e),n=document.createElement("a");n.href=t,n.download="wg-orly.conf",document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},function(){l("openLoginModal")},o,s,y,()=>eb(c.config_text,"Config"),()=>eb(u.url,"Bunker URL")]}ev.create=EA.create,ev.toCanvas=SA.bind(null,xA.render),ev.toDataURL=SA.bind(null,xA.renderToDataURL),ev.toString=SA.bind(null,function(e,t,n){return BA.render(e,n)});class nb extends oe{constructor(e){super(),ie(this,e,tb,ZA,o,{isLoggedIn:0,userPubkey:15,userSigner:16,currentEffectiveRole:1})}}function rb(e,t,n){const r=e.slice();return r[29]=t[n],r}function ib(e,t,n){const r=e.slice();return r[32]=t[n],r}function ob(e){let t,n,r;function i(e,t){return e[0]?ab:lb}let o=i(e),s=o(e);return{c(){t=h("div"),n=h("p"),n.textContent="Log viewer is only available to relay owners.",r=m(),s.c(),A(n,"class","svelte-w6h7aj"),A(t,"class","login-prompt svelte-w6h7aj")},m(e,i){u(e,t,i),c(t,n),c(t,r),s.m(t,null)},p(e,n){o===(o=i(e))&&s?s.p(e,n):(s.d(1),s=o(e),s&&(s.c(),s.m(t,null)))},d(e){e&&d(t),s.d()}}}function sb(e){let t,n,i,o,s,a,l,p,y,v,b,I,C,x,B,S,Q,F,D,$,R,P,T,U,N,L,M,_,H,j,G,J=e[3]?"Loading...":"Refresh",K=e[2].length+"",V=e[12],z=[];for(let t=0;t<V.length;t+=1)z[t]=cb(ib(e,V,t));let q=e[7]&&ub(e);function Y(e,t){return 0!==e[2].length||e[3]?db:fb}let W=Y(e),Z=W(e);return{c(){t=h("div"),n=h("div"),i=h("h3"),i.textContent="Logs",o=m(),s=h("div"),a=h("div"),l=h("label"),l.textContent="Level:",p=m(),y=h("select");for(let e=0;e<z.length;e+=1)z[e].c();v=m(),b=h("button"),I=g("Clear"),x=m(),B=h("button"),S=g("🔄 "),Q=g(J),F=m(),q&&q.c(),D=m(),$=h("div"),R=g("Showing "),P=g(K),T=g(" of "),U=g(e[6]),N=g(" logs (Level: "),L=g(e[8]),M=g(")"),_=m(),H=h("div"),Z.c(),A(i,"class","svelte-w6h7aj"),A(l,"for","log-level"),A(l,"class","svelte-w6h7aj"),A(y,"id","log-level"),A(y,"class","svelte-w6h7aj"),void 0===e[9]&&O(()=>e[18].call(y)),A(a,"class","level-selector svelte-w6h7aj"),A(b,"class","clear-btn svelte-w6h7aj"),b.disabled=C=e[3]||0===e[2].length,A(B,"class","refresh-btn svelte-w6h7aj"),B.disabled=e[3],A(s,"class","header-controls svelte-w6h7aj"),A(n,"class","header-section svelte-w6h7aj"),A($,"class","log-info svelte-w6h7aj"),A(H,"class","log-list svelte-w6h7aj"),A(t,"class","log-view svelte-w6h7aj")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),c(a,l),c(a,p),c(a,y);for(let e=0;e<z.length;e+=1)z[e]&&z[e].m(y,null);E(y,e[9],!0),c(s,v),c(s,b),c(b,I),c(s,x),c(s,B),c(B,S),c(B,Q),c(t,F),q&&q.m(t,null),c(t,D),c(t,$),c($,R),c($,P),c($,T),c($,U),c($,N),c($,L),c($,M),c(t,_),c(t,H),Z.m(H,null),e[21](H),j||(G=[w(y,"change",e[18]),w(y,"change",e[14]),w(b,"click",e[15]),w(B,"click",e[19])],j=!0)},p(e,n){if(4096&n[0]){let t;for(V=e[12],t=0;t<V.length;t+=1){const r=ib(e,V,t);z[t]?z[t].p(r,n):(z[t]=cb(r),z[t].c(),z[t].m(y,null))}for(;t<z.length;t+=1)z[t].d(1);z.length=V.length}4608&n[0]&&E(y,e[9]),12&n[0]&&C!==(C=e[3]||0===e[2].length)&&(b.disabled=C),8&n[0]&&J!==(J=e[3]?"Loading...":"Refresh")&&k(Q,J),8&n[0]&&(B.disabled=e[3]),e[7]?q?q.p(e,n):(q=ub(e),q.c(),q.m(t,D)):q&&(q.d(1),q=null),4&n[0]&&K!==(K=e[2].length+"")&&k(P,K),64&n[0]&&k(U,e[6]),256&n[0]&&k(L,e[8]),W===(W=Y(e))&&Z?Z.p(e,n):(Z.d(1),Z=W(e),Z&&(Z.c(),Z.m(H,null)))},d(n){n&&d(t),f(z,n),q&&q.d(),Z.d(),e[21](null),j=!1,r(G)}}}function ab(e){let t,n,r,i;return{c(){t=h("p"),n=g("Your role ("),r=g(e[1]),i=g(") does not have access to this feature."),A(t,"class","access-denied svelte-w6h7aj")},m(e,o){u(e,t,o),c(t,n),c(t,r),c(t,i)},p(e,t){2&t[0]&&k(r,e[1])},d(e){e&&d(t)}}}function lb(t){let n,r,i;return{c(){n=h("button"),n.textContent="Log In",A(n,"class","login-btn svelte-w6h7aj")},m(e,o){u(e,n,o),r||(i=w(n,"click",t[16]),r=!0)},p:e,d(e){e&&d(n),r=!1,i()}}}function cb(t){let n,r,i=t[32]+"";return{c(){n=h("option"),r=g(i),n.__value=t[32],n.value=n.__value},m(e,t){u(e,n,t),c(n,r)},p:e,d(e){e&&d(n)}}}function ub(e){let t,n;return{c(){t=h("div"),n=g(e[7]),A(t,"class","error-message svelte-w6h7aj")},m(e,r){u(e,t,r),c(t,n)},p(e,t){128&t[0]&&k(n,e[7])},d(e){e&&d(t)}}}function db(e){let t,n,r=e[2],i=[];for(let t=0;t<r.length;t+=1)i[t]=pb(rb(e,r,t));function o(e,t){return e[3]?yb:e[5]?mb:gb}let s=o(e),a=s(e);return{c(){for(let e=0;e<i.length;e+=1)i[e].c();t=m(),n=h("div"),a.c(),A(n,"class","load-more-trigger svelte-w6h7aj")},m(r,o){for(let e=0;e<i.length;e+=1)i[e]&&i[e].m(r,o);u(r,t,o),u(r,n,o),a.m(n,null),e[20](n)},p(e,l){if(4&l[0]){let n;for(r=e[2],n=0;n<r.length;n+=1){const o=rb(e,r,n);i[n]?i[n].p(o,l):(i[n]=pb(o),i[n].c(),i[n].m(t.parentNode,t))}for(;n<i.length;n+=1)i[n].d(1);i.length=r.length}s!==(s=o(e))&&(a.d(1),a=s(e),a&&(a.c(),a.m(n,null)))},d(r){f(i,r),r&&d(t),r&&d(n),a.d(),e[20](null)}}}function fb(t){let n;return{c(){n=h("div"),n.innerHTML="<p>No logs available.</p>",A(n,"class","empty-state svelte-w6h7aj")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function hb(e){let t,n,r,i,o=e[29].file+"",s=e[29].line+"";return{c(){t=h("span"),n=g(o),r=g(":"),i=g(s),A(t,"class","log-location svelte-w6h7aj")},m(e,o){u(e,t,o),c(t,n),c(t,r),c(t,i)},p(e,t){4&t[0]&&o!==(o=e[29].file+"")&&k(n,o),4&t[0]&&s!==(s=e[29].line+"")&&k(i,s)},d(e){e&&d(t)}}}function pb(e){let t,n,r,i,o,s,a,l,f,p,y,w=vb(e[29].timestamp)+"",v=e[29].level+"",b=e[29].message+"",I=e[29].file&&hb(e);return{c(){t=h("div"),n=h("span"),r=g(w),i=m(),o=h("span"),s=g(v),l=m(),I&&I.c(),f=m(),p=h("span"),y=g(b),A(n,"class","log-timestamp svelte-w6h7aj"),A(o,"class",a="log-level "+Ab(e[29].level)+" svelte-w6h7aj"),A(p,"class","log-message svelte-w6h7aj"),A(t,"class","log-entry svelte-w6h7aj")},m(e,a){u(e,t,a),c(t,n),c(n,r),c(t,i),c(t,o),c(o,s),c(t,l),I&&I.m(t,null),c(t,f),c(t,p),c(p,y)},p(e,n){4&n[0]&&w!==(w=vb(e[29].timestamp)+"")&&k(r,w),4&n[0]&&v!==(v=e[29].level+"")&&k(s,v),4&n[0]&&a!==(a="log-level "+Ab(e[29].level)+" svelte-w6h7aj")&&A(o,"class",a),e[29].file?I?I.p(e,n):(I=hb(e),I.c(),I.m(t,f)):I&&(I.d(1),I=null),4&n[0]&&b!==(b=e[29].message+"")&&k(y,b)},d(e){e&&d(t),I&&I.d()}}}function gb(e){let t;return{c(){t=h("span"),t.textContent="End of logs"},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function mb(e){let t;return{c(){t=h("span"),t.textContent="Scroll for more"},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function yb(e){let t;return{c(){t=h("span"),t.textContent="Loading more..."},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function wb(t){let n;function r(e,t){return e[4]?sb:ob}let i=r(t),o=i(t);return{c(){o.c(),n=y()},m(e,t){o.m(e,t),u(e,n,t)},p(e,t){i===(i=r(e))&&o?o.p(e,t):(o.d(1),o=i(e),o&&(o.c(),o.m(n.parentNode,n)))},i:e,o:e,d(e){o.d(e),e&&d(n)}}}function vb(e){if(!e)return"";return new Date(e).toLocaleString()}function Ab(e){switch(e?.toUpperCase()){case"TRC":case"TRACE":return"level-trace";case"DBG":case"DEBUG":return"level-debug";case"INF":case"INFO":default:return"level-info";case"WRN":case"WARN":return"level-warn";case"ERR":case"ERROR":return"level-error";case"FTL":case"FATAL":return"level-fatal"}}function bb(e,t,n){let r,{isLoggedIn:i=!1}=t,{userRole:o=""}=t,{userSigner:s=null}=t;const a=R();let l=[],c=!1,u=!0,d=0,f=0,h="",p="info",g="info";const m=["trace","debug","info","warn","error","fatal"];let y,w,v;async function A(e="GET",t="/api/logs"){if(!s)return null;try{const n={kind:27235,created_at:Math.floor(Date.now()/1e3),tags:[["u",`${window.location.origin}${t}`],["method",e]],content:""},r=await s.signEvent(n);return btoa(JSON.stringify(r)).replace(/\+/g,"-").replace(/\//g,"_")}catch(e){return console.error("Error creating auth header:",e),null}}async function b(e=!1){if(!c){n(3,c=!0),n(7,h=""),e&&(d=0,n(2,l=[]));try{const t=`/api/logs?offset=${d}&limit=100`,r=await A("GET",t),i=`${window.location.origin}${t}`,o=await fetch(i,{headers:r?{Authorization:`Nostr ${r}`}:{}});if(!o.ok)throw new Error(`Failed to load logs: ${o.statusText}`);const s=await o.json();n(2,l=e?s.logs||[]:[...l,...s.logs||[]]),n(6,f=s.total||0),n(5,u=s.has_more||!1),d=l.length}catch(e){console.error("Error loading logs:",e),n(7,h=e.message||"Failed to load logs")}finally{n(3,c=!1)}}}async function k(){try{const e=await fetch(`${window.location.origin}/api/logs/level`);if(e.ok){const t=await e.json();n(8,p=t.level||"info"),n(9,g=p)}}catch(e){console.error("Error loading log level:",e)}}D(()=>{r&&(b(!0),k(),function(){if(!w)return;v=new IntersectionObserver(e=>{e[0].isIntersecting&&u&&!c&&u&&!c&&b(!1)},{threshold:.1}),v.observe(w)}())}),$(()=>{v&&v.disconnect()});return e.$$set=e=>{"isLoggedIn"in e&&n(0,i=e.isLoggedIn),"userRole"in e&&n(1,o=e.userRole),"userSigner"in e&&n(17,s=e.userSigner)},e.$$.update=()=>{3&e.$$.dirty[0]&&n(4,r=i&&"owner"===o),28&e.$$.dirty[0]&&r&&0===l.length&&!c&&(b(!0),k())},[i,o,l,c,r,u,f,h,p,g,y,w,m,b,async function(){if(g!==p)try{const e=await A("POST","/api/logs/level"),t=await fetch(`${window.location.origin}/api/logs/level`,{method:"POST",headers:{"Content-Type":"application/json",...e?{Authorization:`Nostr ${e}`}:{}},body:JSON.stringify({level:g})});if(!t.ok)throw new Error(`Failed to set log level: ${t.statusText}`);const r=await t.json();n(8,p=r.level),n(9,g=p)}catch(e){console.error("Error setting log level:",e),n(7,h=e.message||"Failed to set log level"),n(9,g=p)}},async function(){if(confirm("Are you sure you want to clear all logs?"))try{const e=await A("POST","/api/logs/clear"),t=await fetch(`${window.location.origin}/api/logs/clear`,{method:"POST",headers:e?{Authorization:`Nostr ${e}`}:{}});if(!t.ok)throw new Error(`Failed to clear logs: ${t.statusText}`);n(2,l=[]),d=0,n(5,u=!1),n(6,f=0)}catch(e){console.error("Error clearing logs:",e),n(7,h=e.message||"Failed to clear logs")}},function(){a("openLoginModal")},s,function(){g=x(this),n(9,g),n(12,m)},()=>b(!0),function(e){U[e?"unshift":"push"](()=>{w=e,n(11,w)})},function(e){U[e?"unshift":"push"](()=>{y=e,n(10,y)})}]}class kb extends oe{constructor(e){super(),ie(this,e,bb,wb,o,{isLoggedIn:0,userRole:1,userSigner:17},null,[-1,-1])}}function Ib(e){let t,n,r,i,o,s,a,l,f,p,y;return{c(){t=h("div"),n=h("div"),r=h("h3"),r.textContent="Active Filter",i=m(),o=h("button"),o.textContent="🧹 Sweep",s=m(),a=h("div"),l=h("pre"),f=g(e[2]),A(r,"class","svelte-1tyqaa5"),A(o,"class","sweep-btn svelte-1tyqaa5"),A(o,"title","Clear filter"),A(n,"class","filter-display-header svelte-1tyqaa5"),A(l,"class","filter-json svelte-1tyqaa5"),A(a,"class","filter-json-container svelte-1tyqaa5"),A(t,"class","filter-display svelte-1tyqaa5")},m(d,h){u(d,t,h),c(t,n),c(n,r),c(n,i),c(n,o),c(t,s),c(t,a),c(a,l),c(l,f),p||(y=w(o,"click",e[3]),p=!0)},p(e,t){4&t&&k(f,e[2])},d(e){e&&d(t),p=!1,y()}}}function Cb(t){let n,r=t[0]&&t[1]&&Ib(t);return{c(){r&&r.c(),n=y()},m(e,t){r&&r.m(e,t),u(e,n,t)},p(e,[t]){e[0]&&e[1]?r?r.p(e,t):(r=Ib(e),r.c(),r.m(n.parentNode,n)):r&&(r.d(1),r=null)},i:e,o:e,d(e){r&&r.d(e),e&&d(n)}}}function Eb(e,t,n){let r,i;const o=R();let{filter:s={}}=t,{showFilter:a=!0}=t;return e.$$set=e=>{"filter"in e&&n(4,s=e.filter),"showFilter"in e&&n(0,a=e.showFilter)},e.$$.update=()=>{16&e.$$.dirty&&n(2,r=function(e){return JSON.stringify(e,null,2)}(s)),16&e.$$.dirty&&n(1,i=Object.keys(s).length>0)},[a,i,r,function(){o("sweep")},s]}class xb extends oe{constructor(e){super(),ie(this,e,Eb,Cb,o,{filter:4,showFilter:0})}}function Bb(e){return kh[e]||`Kind ${e}`}function Sb(e){return e?e.slice(0,8)+"..."+e.slice(-8):"unknown"}function Qb(e,t=100){return e?e.length>t?e.slice(0,t)+"...":e:""}function Fb(e){return e?new Date(1e3*e).toLocaleString():""}class Db{constructor(e,t,n){this.relayUrl=e,this.userSigner=t,this.userPubkey=n,this.ws=null,this.challenge=null,this.isAuthenticated=!1,this.authPromise=null}async connect(){return new Promise((e,t)=>{this.ws=new WebSocket(this.relayUrl),this.ws.onopen=()=>{console.log("WebSocket connected to relay:",this.relayUrl),e()},this.ws.onmessage=async e=>{try{const t=JSON.parse(e.data);await this.handleMessage(t)}catch(e){console.error("Error parsing relay message:",e)}},this.ws.onerror=e=>{console.error("WebSocket error:",e),t(new Error("Failed to connect to relay"))},this.ws.onclose=()=>{console.log("WebSocket connection closed"),this.isAuthenticated=!1,this.challenge=null},setTimeout(()=>{this.ws.readyState!==WebSocket.OPEN&&t(new Error("Connection timeout"))},1e4)})}async handleMessage(e){const[t,...n]=e;switch(t){case"AUTH":this.challenge=n[0],console.log("Received AUTH challenge:",this.challenge),await this.authenticate();break;case"OK":const[e,r,i]=n;e&&r?(console.log("Authentication successful for event:",e),this.isAuthenticated=!0,this.authPromise&&(this.authPromise.resolve(),this.authPromise=null)):e&&!r&&(console.error("Authentication failed:",i),this.authPromise&&(this.authPromise.reject(new Error(i||"Authentication failed")),this.authPromise=null));break;case"NOTICE":console.log("Relay notice:",n[0]);break;default:console.log("Unhandled message type:",t,n)}}async authenticate(){if(!this.challenge)throw new Error("No challenge received from relay");if(!this.userSigner)throw new Error("No signer available for authentication");try{const e={kind:22242,created_at:Math.floor(Date.now()/1e3),tags:[["relay",this.relayUrl],["challenge",this.challenge]],content:"",pubkey:this.userPubkey},t=["AUTH",await this.userSigner.signEvent(e)];return this.ws.send(JSON.stringify(t)),console.log("Sent authentication event to relay"),new Promise((e,t)=>{this.authPromise={resolve:e,reject:t},setTimeout(()=>{this.authPromise&&(this.authPromise.reject(new Error("Authentication timeout")),this.authPromise=null)},1e4)})}catch(e){throw console.error("Authentication error:",e),e}}async publishEvent(e){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)throw new Error("WebSocket not connected");return new Promise((t,n)=>{const r=["EVENT",e];this.ws.send(JSON.stringify(r));const i=this.ws.onmessage,o=setTimeout(()=>{this.ws.onmessage=i,n(new Error("Publish timeout"))},15e3);this.ws.onmessage=async r=>{try{const s=JSON.parse(r.data),[a,l,c,u]=s;if("OK"===a&&l===e.id)if(c)clearTimeout(o),this.ws.onmessage=i,console.log("Event published successfully:",l),t({success:!0,eventId:l,reason:u});else{if(console.error("Event publish failed:",u),u&&u.includes("auth-required"))return void console.log("Authentication required, waiting for AUTH challenge...");clearTimeout(o),this.ws.onmessage=i,n(new Error(`Publish failed: ${u}`))}else if("AUTH"===a){this.challenge=s[1],console.log("Received AUTH challenge during publish:",this.challenge);try{await this.authenticate(),console.log("Authentication successful, retrying event publish...");const t=["EVENT",e];this.ws.send(JSON.stringify(t))}catch(e){clearTimeout(o),this.ws.onmessage=i,n(new Error(`Authentication failed: ${e.message}`))}}else await this.handleMessage(s)}catch(e){clearTimeout(o),this.ws.onmessage=i,n(e)}}})}close(){this.ws&&(this.ws.close(),this.ws=null),this.isAuthenticated=!1,this.challenge=null}getAuthenticated(){return this.isAuthenticated}}async function $b(e,t,n,r){const i=new Db(e,n,r);try{await i.connect();return await i.publishEvent(t)}finally{i.close()}}function Rb(e,t,n){const r=e.slice();return r[169]=t[n],r}function Pb(e,t,n){const r=e.slice();return r[179]=t[n],r}function Tb(e,t,n){const r=e.slice();return r[172]=t[n],r}function Ub(e,t,n){const r=e.slice();r[172]=t[n];const i=r[52](r[172]);return r[173]=i,r}function Nb(e,t,n){const r=e.slice();return r[176]=t[n],r}function Lb(t){let n;function r(e,t){return e[1]?Zb:Wb}let i=r(t),o=i(t);return{c(){n=h("div"),o.c(),A(n,"class","welcome-message svelte-u3u5mw")},m(e,t){u(e,n,t),o.m(n,null)},p(e,t){i===(i=r(e))&&o?o.p(e,t):(o.d(1),o=i(e),o&&(o.c(),o.m(n,null)))},i:e,o:e,d(e){e&&d(n),o.d()}}}function Mb(e){let t,n,r=e[6],i=[];for(let t=0;t<r.length;t+=1)i[t]=ak(Pb(e,r,t));const o=e=>Z(i[e],1,1,()=>{i[e]=null});return{c(){for(let e=0;e<i.length;e+=1)i[e].c();t=y()},m(e,r){for(let t=0;t<i.length;t+=1)i[t]&&i[t].m(e,r);u(e,t,r),n=!0},p(e,n){if(262260&n[0]|47104&n[1]|1703936&n[2]){let s;for(r=e[6],s=0;s<r.length;s+=1){const o=Pb(e,r,s);i[s]?(i[s].p(o,n),W(i[s],1)):(i[s]=ak(o),i[s].c(),W(i[s],1),i[s].m(t.parentNode,t))}for(q(),s=r.length;s<i.length;s+=1)o(s);Y()}},i(e){if(!n){for(let e=0;e<r.length;e+=1)W(i[e]);n=!0}},o(e){i=i.filter(Boolean);for(let e=0;e<i.length;e+=1)Z(i[e]);n=!1},d(e){f(i,e),e&&d(t)}}}function _b(t){let n,i,o,s,a,l,p,g,y,v,k,C,x,B,S,Q,F,D,$=null!==t[35]&&void 0!==t[35]&&t[35]>=0||""!==t[36]&&parseInt(t[36])>=0,R=bh,P=[];for(let e=0;e<R.length;e+=1)P[e]=lk(Nb(t,R,e));let T=$&&ck(t);return{c(){n=h("div"),i=h("div"),i.innerHTML='<h3 class="svelte-u3u5mw">Event Recovery</h3> \n <p class="svelte-u3u5mw">Search and recover old versions of replaceable events</p>',o=m(),s=h("div"),a=h("div"),l=h("div"),p=h("label"),p.textContent="Select Event Kind:",g=m(),y=h("select"),v=h("option"),v.textContent="Choose a replaceable kind...";for(let e=0;e<P.length;e+=1)P[e].c();k=m(),C=h("div"),x=h("label"),x.textContent="Or enter custom kind number:",B=m(),S=h("input"),Q=m(),T&&T.c(),A(p,"for","recovery-kind"),A(p,"class","svelte-u3u5mw"),v.__value=null,v.value=v.__value,A(y,"id","recovery-kind"),A(y,"class","svelte-u3u5mw"),void 0===t[35]&&O(()=>t[115].call(y)),A(l,"class","kind-selector svelte-u3u5mw"),A(x,"for","custom-kind"),A(x,"class","svelte-u3u5mw"),A(S,"id","custom-kind"),A(S,"type","number"),A(S,"placeholder","e.g., 10001"),A(S,"min","0"),A(S,"class","svelte-u3u5mw"),A(C,"class","custom-kind-input svelte-u3u5mw"),A(a,"class","recovery-controls svelte-u3u5mw"),A(s,"class","recovery-controls-card svelte-u3u5mw"),A(n,"class","recovery-tab svelte-u3u5mw")},m(e,r){u(e,n,r),c(n,i),c(n,o),c(n,s),c(s,a),c(a,l),c(l,p),c(l,g),c(l,y),c(y,v);for(let e=0;e<P.length;e+=1)P[e]&&P[e].m(y,null);E(y,t[35],!0),c(a,k),c(a,C),c(C,x),c(C,B),c(C,S),I(S,t[36]),c(n,Q),T&&T.m(n,null),F||(D=[w(y,"change",t[115]),w(y,"change",t[50]),w(S,"input",t[116]),w(S,"input",t[51])],F=!0)},p(e,t){if(0&t){let n;for(R=bh,n=0;n<R.length;n+=1){const r=Nb(e,R,n);P[n]?P[n].p(r,t):(P[n]=lk(r),P[n].c(),P[n].m(y,null))}for(;n<P.length;n+=1)P[n].d(1);P.length=R.length}16&t[1]&&E(y,e[35]),32&t[1]&&b(S.value)!==e[36]&&I(S,e[36]),48&t[1]&&($=null!==e[35]&&void 0!==e[35]&&e[35]>=0||""!==e[36]&&parseInt(e[36])>=0),$?T?T.p(e,t):(T=ck(e),T.c(),T.m(n,null)):T&&(T.d(1),T=null)},i:e,o:e,d(e){e&&d(n),f(P,e),T&&T.d(),F=!1,r(D)}}}function Ob(e){let t,n;return t=new kb({props:{isLoggedIn:e[1],userRole:e[4],userSigner:e[13]}}),t.$on("openLoginModal",e[70]),{c(){ee(t.$$.fragment)},m(e,r){te(t,e,r),n=!0},p(e,n){const r={};2&n[0]&&(r.isLoggedIn=e[1]),16&n[0]&&(r.userRole=e[4]),8192&n[0]&&(r.userSigner=e[13]),t.$set(r)},i(e){n||(W(t.$$.fragment,e),n=!0)},o(e){Z(t.$$.fragment,e),n=!1},d(e){ne(t,e)}}}function Hb(e){let t,n,r;function i(t){e[114](t)}let o={isLoggedIn:e[1],userRole:e[4],isPolicyAdmin:Rk,policyEnabled:e[8],isLoadingPolicy:e[27],policyMessage:e[28],policyMessageType:e[29],validationErrors:e[30],policyFollows:e[31]};return void 0!==e[26]&&(o.policyJson=e[26]),t=new ow({props:o}),U.push(()=>X(t,"policyJson",i)),t.$on("loadPolicy",e[60]),t.$on("validatePolicy",e[61]),t.$on("savePolicy",e[62]),t.$on("formatJson",e[63]),t.$on("addPolicyAdmin",e[64]),t.$on("removePolicyAdmin",e[65]),t.$on("refreshFollows",e[66]),t.$on("openLoginModal",e[70]),{c(){ee(t.$$.fragment)},m(e,n){te(t,e,n),r=!0},p(e,r){const i={};2&r[0]&&(i.isLoggedIn=e[1]),16&r[0]&&(i.userRole=e[4]),256&r[0]&&(i.policyEnabled=e[8]),134217728&r[0]&&(i.isLoadingPolicy=e[27]),268435456&r[0]&&(i.policyMessage=e[28]),536870912&r[0]&&(i.policyMessageType=e[29]),1073741824&r[0]&&(i.validationErrors=e[30]),1&r[1]&&(i.policyFollows=e[31]),!n&&67108864&r[0]&&(n=!0,i.policyJson=e[26],H(()=>n=!1)),t.$set(i)},i(e){r||(W(t.$$.fragment,e),r=!0)},o(e){Z(t.$$.fragment,e),r=!1},d(e){ne(t,e)}}}function jb(e){let t,n,r;function i(t){e[111](t)}let o={isLoggedIn:e[1],userRole:e[4],sprocketStatus:e[20],isLoadingSprocket:e[22],sprocketUploadFile:e[25],sprocketMessage:e[23],sprocketMessageType:e[24],sprocketVersions:e[21]};return void 0!==e[19]&&(o.sprocketScript=e[19]),t=new _y({props:o}),U.push(()=>X(t,"sprocketScript",i)),t.$on("restartSprocket",e[55]),t.$on("deleteSprocket",e[56]),t.$on("sprocketFileSelect",e[67]),t.$on("uploadSprocketScript",e[68]),t.$on("saveSprocket",e[54]),t.$on("loadSprocket",e[53]),t.$on("loadVersions",e[57]),t.$on("loadVersion",e[112]),t.$on("deleteVersion",e[113]),t.$on("openLoginModal",e[70]),{c(){ee(t.$$.fragment)},m(e,n){te(t,e,n),r=!0},p(e,r){const i={};2&r[0]&&(i.isLoggedIn=e[1]),16&r[0]&&(i.userRole=e[4]),1048576&r[0]&&(i.sprocketStatus=e[20]),4194304&r[0]&&(i.isLoadingSprocket=e[22]),33554432&r[0]&&(i.sprocketUploadFile=e[25]),8388608&r[0]&&(i.sprocketMessage=e[23]),16777216&r[0]&&(i.sprocketMessageType=e[24]),2097152&r[0]&&(i.sprocketVersions=e[21]),!n&&524288&r[0]&&(n=!0,i.sprocketScript=e[19],H(()=>n=!1)),t.$set(i)},i(e){r||(W(t.$$.fragment,e),r=!0)},o(e){Z(t.$$.fragment,e),r=!1},d(e){ne(t,e)}}}function Gb(e){let t,n,r,i;const o=[Ak,vk,wk],s=[];function a(e,t){return"managed"!==e[9]?0:e[1]&&"owner"===e[4]?1:2}return n=a(e),r=s[n]=o[n](e),{c(){t=h("div"),r.c(),A(t,"class","managed-acl-view svelte-u3u5mw")},m(e,r){u(e,t,r),s[n].m(t,null),i=!0},p(e,i){let l=n;n=a(e),n===l?s[n].p(e,i):(q(),Z(s[l],1,1,()=>{s[l]=null}),Y(),r=s[n],r?r.p(e,i):(r=s[n]=o[n](e),r.c()),W(r,1),r.m(t,null))},i(e){i||(W(r),i=!0)},o(e){Z(r),i=!1},d(e){e&&d(t),s[n].d()}}}function Jb(e){let t,n,r;function i(t){e[110](t)}let o={userPubkey:e[2],userRole:e[4],policyEnabled:e[8],publishError:e[34]};return void 0!==e[33]&&(o.composeEventJson=e[33]),t=new Sy({props:o}),U.push(()=>X(t,"composeEventJson",i)),t.$on("reformatJson",e[90]),t.$on("signEvent",e[91]),t.$on("publishEvent",e[92]),t.$on("clearError",e[93]),{c(){ee(t.$$.fragment)},m(e,n){te(t,e,n),r=!0},p(e,r){const i={};4&r[0]&&(i.userPubkey=e[2]),16&r[0]&&(i.userRole=e[4]),256&r[0]&&(i.policyEnabled=e[8]),8&r[1]&&(i.publishError=e[34]),!n&&4&r[1]&&(n=!0,i.composeEventJson=e[33],H(()=>n=!1)),t.$set(i)},i(e){r||(W(t.$$.fragment,e),r=!0)},o(e){Z(t.$$.fragment,e),r=!1},d(e){ne(t,e)}}}function Kb(e){let t,n;return t=new nb({props:{isLoggedIn:e[1],userPubkey:e[2],userSigner:e[13],currentEffectiveRole:e[10]}}),t.$on("openLoginModal",e[70]),{c(){ee(t.$$.fragment)},m(e,r){te(t,e,r),n=!0},p(e,n){const r={};2&n[0]&&(r.isLoggedIn=e[1]),4&n[0]&&(r.userPubkey=e[2]),8192&n[0]&&(r.userSigner=e[13]),1024&n[0]&&(r.currentEffectiveRole=e[10]),t.$set(r)},i(e){n||(W(t.$$.fragment,e),n=!0)},o(e){Z(t.$$.fragment,e),n=!1},d(e){ne(t,e)}}}function Vb(e){let t,n;return t=new Xw({props:{isLoggedIn:e[1],userPubkey:e[2],userSigner:e[13],currentEffectiveRole:e[10]}}),t.$on("openLoginModal",e[70]),{c(){ee(t.$$.fragment)},m(e,r){te(t,e,r),n=!0},p(e,n){const r={};2&n[0]&&(r.isLoggedIn=e[1]),4&n[0]&&(r.userPubkey=e[2]),8192&n[0]&&(r.userSigner=e[13]),1024&n[0]&&(r.currentEffectiveRole=e[10]),t.$set(r)},i(e){n||(W(t.$$.fragment,e),n=!0)},o(e){Z(t.$$.fragment,e),n=!1},d(e){ne(t,e)}}}function zb(e){let t,n;return t=new ly({props:{isLoggedIn:e[1],userRole:e[4],userPubkey:e[2],filteredEvents:e[41],expandedEvents:e[18],isLoadingEvents:e[7],showOnlyMyEvents:$k,showFilterBuilder:e[15]}}),t.$on("scroll",e[89]),t.$on("toggleEventExpansion",e[106]),t.$on("deleteEvent",e[107]),t.$on("copyEventToClipboard",e[108]),t.$on("toggleChange",e[45]),t.$on("loadAllEvents",e[109]),t.$on("toggleFilterBuilder",e[76]),t.$on("filterApply",e[77]),t.$on("filterClear",e[78]),{c(){ee(t.$$.fragment)},m(e,r){te(t,e,r),n=!0},p(e,n){const r={};2&n[0]&&(r.isLoggedIn=e[1]),16&n[0]&&(r.userRole=e[4]),4&n[0]&&(r.userPubkey=e[2]),1024&n[1]&&(r.filteredEvents=e[41]),262144&n[0]&&(r.expandedEvents=e[18]),128&n[0]&&(r.isLoadingEvents=e[7]),32768&n[0]&&(r.showFilterBuilder=e[15]),t.$set(r)},i(e){n||(W(t.$$.fragment,e),n=!0)},o(e){Z(t.$$.fragment,e),n=!1},d(e){ne(t,e)}}}function qb(e){let t,n;return t=new lm({props:{isLoggedIn:e[1],currentEffectiveRole:e[10],selectedFile:e[16],aclMode:e[9],importMessage:e[17]}}),t.$on("fileSelect",e[86]),t.$on("importEvents",e[87]),t.$on("openLoginModal",e[70]),{c(){ee(t.$$.fragment)},m(e,r){te(t,e,r),n=!0},p(e,n){const r={};2&n[0]&&(r.isLoggedIn=e[1]),1024&n[0]&&(r.currentEffectiveRole=e[10]),65536&n[0]&&(r.selectedFile=e[16]),512&n[0]&&(r.aclMode=e[9]),131072&n[0]&&(r.importMessage=e[17]),t.$set(r)},i(e){n||(W(t.$$.fragment,e),n=!0)},o(e){Z(t.$$.fragment,e),n=!1},d(e){ne(t,e)}}}function Yb(e){let t,n;return t=new tm({props:{isLoggedIn:e[1],currentEffectiveRole:e[10],aclMode:e[9]}}),t.$on("exportMyEvents",e[85]),t.$on("exportAllEvents",e[84]),t.$on("openLoginModal",e[70]),{c(){ee(t.$$.fragment)},m(e,r){te(t,e,r),n=!0},p(e,n){const r={};2&n[0]&&(r.isLoggedIn=e[1]),1024&n[0]&&(r.currentEffectiveRole=e[10]),512&n[0]&&(r.aclMode=e[9]),t.$set(r)},i(e){n||(W(t.$$.fragment,e),n=!0)},o(e){Z(t.$$.fragment,e),n=!1},d(e){ne(t,e)}}}function Wb(t){let n;return{c(){n=h("p"),n.textContent="Log in to access your user dashboard",A(n,"class","svelte-u3u5mw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function Zb(e){let t,n,r,i=(e[3]?.name||e[2].slice(0,8)+"...")+"";return{c(){t=h("p"),n=g("Welcome "),r=g(i),A(t,"class","svelte-u3u5mw")},m(e,i){u(e,t,i),c(t,n),c(t,r)},p(e,t){12&t[0]&&i!==(i=(e[3]?.name||e[2].slice(0,8)+"...")+"")&&k(r,i)},d(e){e&&d(t)}}}function Xb(e){let t,n,i,o,s,a,l,f,p,y,v,b,I,C,E,x,B,S,Q,F,D,$=e[179].label+"",R=e[42].get(e[179].id)?.isLoading,P=!e[42].get(e[179].id)?.hasMore&&e[42].get(e[179].id)?.events?.length>0;function T(){return e[120](e[179])}function U(e,t){return 64&t[0]&&(C=null),64&t[0]&&(E=null),null==C&&(C=!!(e[42].get(e[179].id)?.events?.length>0)),C?tk:(null==E&&(E=!e[42].get(e[179].id)?.isLoading),E?ek:void 0)}v=new xb({props:{filter:e[42].get(e[179].id)?.filter||{}}}),v.$on("sweep",function(){return e[121](e[179])});let N=U(e,[-1,-1,-1,-1,-1,-1]),L=N&&N(e),M=R&&ok(),_=P&&sk();function O(...t){return e[126](e[179],...t)}return{c(){t=h("div"),n=h("div"),i=h("h2"),o=g("🔍 "),s=g($),a=m(),l=h("button"),f=g("🔄 Refresh"),y=m(),ee(v.$$.fragment),b=m(),I=h("div"),L&&L.c(),x=m(),M&&M.c(),B=m(),_&&_.c(),S=m(),A(i,"class","svelte-u3u5mw"),A(l,"class","refresh-btn svelte-u3u5mw"),l.disabled=p=e[42].get(e[179].id)?.isLoading,A(n,"class","search-results-header svelte-u3u5mw"),A(I,"class","search-results-content svelte-u3u5mw"),A(t,"class","search-results-view svelte-u3u5mw")},m(e,r){u(e,t,r),c(t,n),c(n,i),c(i,o),c(i,s),c(n,a),c(n,l),c(l,f),c(t,y),te(v,t,null),c(t,b),c(t,I),L&&L.m(I,null),c(I,x),M&&M.m(I,null),c(I,B),_&&_.m(I,null),c(t,S),Q=!0,F||(D=[w(l,"click",T),w(I,"scroll",O)],F=!0)},p(t,n){e=t,(!Q||64&n[0])&&$!==($=e[179].label+"")&&k(s,$),(!Q||64&n[0]&&p!==(p=e[42].get(e[179].id)?.isLoading))&&(l.disabled=p);const r={};64&n[0]&&(r.filter=e[42].get(e[179].id)?.filter||{}),v.$set(r),N===(N=U(e,n))&&L?L.p(e,n):(L&&L.d(1),L=N&&N(e),L&&(L.c(),L.m(I,x))),64&n[0]&&(R=e[42].get(e[179].id)?.isLoading),R?M||(M=ok(),M.c(),M.m(I,B)):M&&(M.d(1),M=null),64&n[0]&&(P=!e[42].get(e[179].id)?.hasMore&&e[42].get(e[179].id)?.events?.length>0),P?_||(_=sk(),_.c(),_.m(I,null)):_&&(_.d(1),_=null)},i(e){Q||(W(v.$$.fragment,e),Q=!0)},o(e){Z(v.$$.fragment,e),Q=!1},d(e){e&&d(t),ne(v),L&&L.d(),M&&M.d(),_&&_.d(),F=!1,r(D)}}}function ek(t){let n;return{c(){n=h("div"),n.innerHTML='<p class="svelte-u3u5mw">No search results found.</p>',A(n,"class","no-search-results svelte-u3u5mw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function tk(e){let t,n=e[42].get(e[179].id).events,r=[];for(let t=0;t<n.length;t+=1)r[t]=ik(Tb(e,n,t));return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=y()},m(e,n){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,n);u(e,t,n)},p(e,i){if(262228&i[0]|47104&i[1]){let o;for(n=e[42].get(e[179].id).events,o=0;o<n.length;o+=1){const s=Tb(e,n,o);r[o]?r[o].p(s,i):(r[o]=ik(s),r[o].c(),r[o].m(t.parentNode,t))}for(;o<r.length;o+=1)r[o].d(1);r.length=n.length}},d(e){f(r,e),e&&d(t)}}}function nk(e){let t,n,r;function i(){return e[122](e[172])}return{c(){t=h("button"),t.textContent="🗑️",A(t,"class","delete-btn svelte-u3u5mw")},m(e,o){u(e,t,o),n||(r=w(t,"click",v(i)),n=!0)},p(t,n){e=t},d(e){e&&d(t),n=!1,r()}}}function rk(e){let t,n,r,i,o,s,a,l,f=JSON.stringify(e[172],null,2)+"";function p(...t){return e[125](e[172],...t)}return{c(){t=h("div"),n=h("div"),r=h("pre"),i=g(f),o=m(),s=h("button"),s.textContent="📋",A(r,"class","event-json svelte-u3u5mw"),A(s,"class","copy-json-btn svelte-u3u5mw"),A(s,"title","Copy minified JSON to clipboard"),A(n,"class","json-container svelte-u3u5mw"),A(t,"class","search-result-details svelte-u3u5mw")},m(e,d){u(e,t,d),c(t,n),c(n,r),c(r,i),c(n,o),c(n,s),a||(l=w(s,"click",v(p)),a=!0)},p(t,n){e=t,64&n[0]&&f!==(f=JSON.stringify(e[172],null,2)+"")&&k(i,f)},d(e){e&&d(t),a=!1,l()}}}function ik(e){let t,n,i,o,s,a,l,f,p,y,v,b,I,C,E,x,S,Q,F,D,$,R,P,T,U,N,L=Sb(e[172].pubkey)+"",M=e[172].kind+"",_=Bb(e[172].kind)+"",O=Fb(e[172].created_at)+"",H=Qb(e[172].content)+"",j=e[18].has(e[172].id),G=5!==e[172].kind&&("admin"===e[4]||"owner"===e[4]||"write"===e[4]&&e[172].pubkey&&e[172].pubkey===e[2])&&nk(e);function J(){return e[123](e[172])}function K(...t){return e[124](e[172],...t)}let V=j&&rk(e);return{c(){t=h("div"),n=h("div"),i=h("div"),i.innerHTML='<div class="avatar-placeholder svelte-u3u5mw">👤</div>',o=m(),s=h("div"),a=h("div"),l=g(L),f=m(),p=h("div"),y=h("span"),v=g(M),b=m(),I=h("span"),C=g(_),E=m(),x=h("div"),S=h("div"),Q=g(O),F=m(),D=h("div"),$=g(H),R=m(),G&&G.c(),P=m(),V&&V.c(),T=m(),A(i,"class","search-result-avatar svelte-u3u5mw"),A(a,"class","search-result-author svelte-u3u5mw"),A(y,"class","kind-number svelte-u3u5mw"),A(I,"class","kind-name svelte-u3u5mw"),A(p,"class","search-result-kind svelte-u3u5mw"),A(s,"class","search-result-info svelte-u3u5mw"),A(S,"class","event-timestamp svelte-u3u5mw"),A(D,"class","event-content-single-line svelte-u3u5mw"),A(x,"class","search-result-content svelte-u3u5mw"),A(n,"class","search-result-row svelte-u3u5mw"),A(n,"role","button"),A(n,"tabindex","0"),A(t,"class","search-result-item svelte-u3u5mw"),B(t,"expanded",e[18].has(e[172].id))},m(e,r){u(e,t,r),c(t,n),c(n,i),c(n,o),c(n,s),c(s,a),c(a,l),c(s,f),c(s,p),c(p,y),c(y,v),c(p,b),c(p,I),c(I,C),c(n,E),c(n,x),c(x,S),c(S,Q),c(x,F),c(x,D),c(D,$),c(n,R),G&&G.m(n,null),c(t,P),V&&V.m(t,null),c(t,T),U||(N=[w(n,"click",J),w(n,"keydown",K)],U=!0)},p(r,i){e=r,64&i[0]&&L!==(L=Sb(e[172].pubkey)+"")&&k(l,L),64&i[0]&&M!==(M=e[172].kind+"")&&k(v,M),64&i[0]&&_!==(_=Bb(e[172].kind)+"")&&k(C,_),64&i[0]&&O!==(O=Fb(e[172].created_at)+"")&&k(Q,O),64&i[0]&&H!==(H=Qb(e[172].content)+"")&&k($,H),5!==e[172].kind&&("admin"===e[4]||"owner"===e[4]||"write"===e[4]&&e[172].pubkey&&e[172].pubkey===e[2])?G?G.p(e,i):(G=nk(e),G.c(),G.m(n,null)):G&&(G.d(1),G=null),262208&i[0]&&(j=e[18].has(e[172].id)),j?V?V.p(e,i):(V=rk(e),V.c(),V.m(t,T)):V&&(V.d(1),V=null),262208&i[0]|2048&i[1]&&B(t,"expanded",e[18].has(e[172].id))},d(e){e&&d(t),G&&G.d(),V&&V.d(),U=!1,r(N)}}}function ok(e){let t;return{c(){t=h("div"),t.innerHTML='<div class="loading-spinner svelte-u3u5mw"></div> \n <p class="svelte-u3u5mw">Searching...</p>',A(t,"class","loading-search-results svelte-u3u5mw")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function sk(e){let t;return{c(){t=h("div"),t.innerHTML='<p class="svelte-u3u5mw">No more search results to load.</p>',A(t,"class","end-of-search-results svelte-u3u5mw")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function ak(e){let t,n,r=e[179].id===e[5]&&Xb(e);return{c(){r&&r.c(),t=y()},m(e,i){r&&r.m(e,i),u(e,t,i),n=!0},p(e,n){e[179].id===e[5]?r?(r.p(e,n),96&n[0]&&W(r,1)):(r=Xb(e),r.c(),W(r,1),r.m(t.parentNode,t)):r&&(q(),Z(r,1,1,()=>{r=null}),Y())},i(e){n||(W(r),n=!0)},o(e){Z(r),n=!1},d(e){r&&r.d(e),e&&d(t)}}}function lk(t){let n,r,i=t[176].label+"";return{c(){n=h("option"),r=g(i),n.__value=t[176].value,n.value=n.__value},m(e,t){u(e,n,t),c(n,r)},p:e,d(e){e&&d(n)}}}function ck(e){let t;function n(e,t){return e[38]?fk:0===e[37].length?dk:uk}let r=n(e),i=r(e);return{c(){t=h("div"),i.c(),A(t,"class","recovery-results svelte-u3u5mw")},m(e,n){u(e,t,n),i.m(t,null)},p(e,o){r===(r=n(e))&&i?i.p(e,o):(i.d(1),i=r(e),i&&(i.c(),i.m(t,null)))},d(e){e&&d(t),i.d()}}}function uk(e){let t,n,r,i=e[37],o=[];for(let t=0;t<i.length;t+=1)o[t]=mk(Ub(e,i,t));let s=e[39]&&yk(e);return{c(){t=h("div");for(let e=0;e<o.length;e+=1)o[e].c();n=m(),s&&s.c(),r=y(),A(t,"class","events-list svelte-u3u5mw")},m(e,i){u(e,t,i);for(let e=0;e<o.length;e+=1)o[e]&&o[e].m(t,null);u(e,n,i),s&&s.m(e,i),u(e,r,i)},p(e,n){if(1024&n[0]|2498624&n[1]){let r;for(i=e[37],r=0;r<i.length;r+=1){const s=Ub(e,i,r);o[r]?o[r].p(s,n):(o[r]=mk(s),o[r].c(),o[r].m(t,null))}for(;r<o.length;r+=1)o[r].d(1);o.length=i.length}e[39]?s?s.p(e,n):(s=yk(e),s.c(),s.m(r.parentNode,r)):s&&(s.d(1),s=null)},d(e){e&&d(t),f(o,e),e&&d(n),s&&s.d(e),e&&d(r)}}}function dk(t){let n;return{c(){n=h("div"),n.textContent="No events found for this kind",A(n,"class","no-events svelte-u3u5mw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function fk(t){let n;return{c(){n=h("div"),n.textContent="Loading events...",A(n,"class","loading svelte-u3u5mw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function hk(e){let t;return{c(){t=g("Current Version")},m(e,n){u(e,t,n)},d(e){e&&d(t)}}}function pk(e){let t,n,r,i,o;function s(){return e[117](e[172])}let a="read"!==e[10]&&gk(e);return{c(){t=h("button"),t.textContent="🌐 Repost to All",n=m(),a&&a.c(),r=y(),A(t,"class","repost-all-button svelte-u3u5mw")},m(e,l){u(e,t,l),u(e,n,l),a&&a.m(e,l),u(e,r,l),i||(o=w(t,"click",s),i=!0)},p(t,n){"read"!==(e=t)[10]?a?a.p(e,n):(a=gk(e),a.c(),a.m(r.parentNode,r)):a&&(a.d(1),a=null)},d(e){e&&d(t),e&&d(n),a&&a.d(e),e&&d(r),i=!1,o()}}}function gk(e){let t,n,r;function i(){return e[118](e[172])}return{c(){t=h("button"),t.textContent="🔄 Repost",A(t,"class","repost-button svelte-u3u5mw")},m(e,o){u(e,t,o),n||(r=w(t,"click",i),n=!0)},p(t,n){e=t},d(e){e&&d(t),n=!1,r()}}}function mk(e){let t,n,r,i,o,s,a,l,f,p,y,b,I,C,E,x,S,Q,F=new Date(1e3*e[172].created_at).toLocaleString()+"",D=JSON.stringify(e[172],null,2)+"",$=e[173]&&hk(),R=!e[173]&&pk(e);function P(...t){return e[119](e[172],...t)}return{c(){t=h("div"),n=h("div"),r=h("div"),i=h("span"),$&&$.c(),o=m(),s=h("span"),a=g(F),l=m(),f=h("div"),R&&R.c(),p=m(),y=h("button"),y.textContent="📋 Copy JSON",b=m(),I=h("div"),C=h("pre"),E=g(D),x=m(),A(i,"class","event-kind svelte-u3u5mw"),A(s,"class","event-timestamp svelte-u3u5mw"),A(r,"class","event-header-left svelte-u3u5mw"),A(y,"class","copy-json-btn svelte-u3u5mw"),A(f,"class","event-header-actions svelte-u3u5mw"),A(n,"class","event-header svelte-u3u5mw"),A(C,"class","event-json svelte-u3u5mw"),A(I,"class","event-content svelte-u3u5mw"),A(t,"class","event-item svelte-u3u5mw"),B(t,"old-version",!e[173])},m(e,d){u(e,t,d),c(t,n),c(n,r),c(r,i),$&&$.m(i,null),c(r,o),c(r,s),c(s,a),c(n,l),c(n,f),R&&R.m(f,null),c(f,p),c(f,y),c(t,b),c(t,I),c(I,C),c(C,E),c(t,x),S||(Q=w(y,"click",v(P)),S=!0)},p(n,r){(e=n)[173]?$||($=hk(),$.c(),$.m(i,null)):$&&($.d(1),$=null),64&r[1]&&F!==(F=new Date(1e3*e[172].created_at).toLocaleString()+"")&&k(a,F),e[173]?R&&(R.d(1),R=null):R?R.p(e,r):(R=pk(e),R.c(),R.m(f,p)),64&r[1]&&D!==(D=JSON.stringify(e[172],null,2)+"")&&k(E,D),2097216&r[1]&&B(t,"old-version",!e[173])},d(e){e&&d(t),$&&$.d(),R&&R.d(),S=!1,Q()}}}function yk(e){let t,n,r,i;return{c(){t=h("button"),n=g("Load More Events"),A(t,"class","load-more svelte-u3u5mw"),t.disabled=e[38]},m(o,s){u(o,t,s),c(t,n),r||(i=w(t,"click",e[47]),r=!0)},p(e,n){128&n[1]&&(t.disabled=e[38])},d(e){e&&d(t),r=!1,i()}}}function wk(t){let n,r,i,o,s,a;return{c(){n=h("div"),r=h("p"),r.textContent="Please log in with owner permissions to access\n managed ACL configuration.",i=m(),o=h("button"),o.textContent="Log In",A(o,"class","login-btn svelte-u3u5mw"),A(n,"class","access-denied")},m(e,l){u(e,n,l),c(n,r),c(n,i),c(n,o),s||(a=w(o,"click",t[70]),s=!0)},p:e,i:e,o:e,d(e){e&&d(n),s=!1,a()}}}function vk(e){let t,n;return t=new Rg({props:{userSigner:e[13],userPubkey:e[2]}}),{c(){ee(t.$$.fragment)},m(e,r){te(t,e,r),n=!0},p(e,n){const r={};8192&n[0]&&(r.userSigner=e[13]),4&n[0]&&(r.userPubkey=e[2]),t.$set(r)},i(e){n||(W(t.$$.fragment,e),n=!0)},o(e){Z(t.$$.fragment,e),n=!1},d(e){ne(t,e)}}}function Ak(t){let n,r,i,o,s,a,l,f,p,y,w,v=(t[9]||"unknown")+"";return{c(){n=h("div"),r=h("h3"),r.textContent="⚠️ Managed ACL Mode Not Active",i=m(),o=h("p"),o.textContent='To use the Managed ACL interface, you need to set\n the ACL mode to "managed" in your relay\n configuration.',s=m(),a=h("p"),l=g("Current ACL mode: "),f=h("strong"),p=g(v),y=m(),w=h("p"),w.innerHTML='Please set <code class="svelte-u3u5mw">ORLY_ACL_MODE=managed</code> in your\n environment variables and restart the relay.',A(r,"class","svelte-u3u5mw"),A(o,"class","svelte-u3u5mw"),A(a,"class","svelte-u3u5mw"),A(w,"class","svelte-u3u5mw"),A(n,"class","acl-mode-warning svelte-u3u5mw")},m(e,t){u(e,n,t),c(n,r),c(n,i),c(n,o),c(n,s),c(n,a),c(a,l),c(a,f),c(f,p),c(n,y),c(n,w)},p(e,t){512&t[0]&&v!==(v=(e[9]||"unknown")+"")&&k(p,v)},i:e,o:e,d(e){e&&d(n)}}}function bk(e){let t,n,i,o,s,a,l,f,p,g;function y(e,t){return e[3]?Ik:e[1]&&e[2]?kk:void 0}let b=y(e),k=b&&b(e);return{c(){t=h("div"),n=h("div"),i=h("div"),o=h("h2"),o.textContent="Settings",s=m(),a=h("button"),a.textContent="✕",l=m(),f=h("div"),k&&k.c(),A(o,"class","svelte-u3u5mw"),A(a,"class","close-btn svelte-u3u5mw"),A(i,"class","drawer-header svelte-u3u5mw"),A(f,"class","drawer-content"),A(n,"class","settings-drawer svelte-u3u5mw"),B(n,"dark-theme",e[0]),A(t,"class","drawer-overlay svelte-u3u5mw"),A(t,"role","button"),A(t,"tabindex","0")},m(r,d){u(r,t,d),c(t,n),c(n,i),c(i,o),c(i,s),c(i,a),c(n,l),c(n,f),k&&k.m(f,null),p||(g=[w(a,"click",e[75]),w(n,"click",v(e[101])),w(n,"keydown",v(e[102])),w(t,"click",e[75]),w(t,"keydown",e[128])],p=!0)},p(e,t){b===(b=y(e))&&k?k.p(e,t):(k&&k.d(1),k=b&&b(e),k&&(k.c(),k.m(f,null))),1&t[0]&&B(n,"dark-theme",e[0])},d(e){e&&d(t),k&&k.d(),p=!1,r(g)}}}function kk(e){let t,n,i,o,s,a,l,f,p,y,v,b,I,C,E,x,B,S=e[2].slice(0,16)+"",Q=e[2].slice(-8)+"";return{c(){t=h("div"),n=h("button"),n.textContent="Log out",i=m(),o=h("h3"),o.textContent="Profile Loading",s=m(),a=h("p"),a.textContent="Your profile metadata is being loaded...",l=m(),f=h("button"),f.textContent="Retry Loading Profile",p=m(),y=h("div"),v=h("strong"),v.textContent="Public Key:",b=m(),I=g(S),C=g("..."),E=g(Q),A(n,"class","logout-btn floating svelte-u3u5mw"),A(o,"class","svelte-u3u5mw"),A(a,"class","svelte-u3u5mw"),A(f,"class","retry-profile-btn svelte-u3u5mw"),A(y,"class","user-pubkey-display svelte-u3u5mw"),A(t,"class","profile-loading-section svelte-u3u5mw")},m(r,d){u(r,t,d),c(t,n),c(t,i),c(t,o),c(t,s),c(t,a),c(t,l),c(t,f),c(t,p),c(t,y),c(y,v),c(y,b),c(y,I),c(y,C),c(y,E),x||(B=[w(n,"click",e[72]),w(f,"click",e[83])],x=!0)},p(e,t){4&t[0]&&S!==(S=e[2].slice(0,16)+"")&&k(I,S),4&t[0]&&Q!==(Q=e[2].slice(-8)+"")&&k(E,Q)},d(e){e&&d(t),x=!1,r(B)}}}function Ik(e){let t,n,r,i,o,s,a,l,f,p,v,b,I,C,E,x=(e[3].name||"Unknown User")+"",B=e[3].banner&&Ck(e);function S(e,t){return e[3].picture?xk:Ek}let Q=S(e),F=Q(e),D=e[3].nip05&&Bk(e),$=e[3].about&&Sk(e),R=e[4]&&"read"!==e[4]&&Qk(e);return{c(){t=h("div"),n=h("div"),B&&B.c(),r=m(),i=h("button"),i.textContent="Log out",o=m(),F.c(),s=m(),a=h("div"),l=h("h3"),f=g(x),p=m(),D&&D.c(),v=m(),$&&$.c(),b=m(),R&&R.c(),I=y(),A(i,"class","logout-btn floating svelte-u3u5mw"),A(l,"class","profile-username svelte-u3u5mw"),A(a,"class","name-row svelte-u3u5mw"),A(n,"class","profile-hero svelte-u3u5mw"),A(t,"class","profile-section svelte-u3u5mw")},m(d,h){u(d,t,h),c(t,n),B&&B.m(n,null),c(n,r),c(n,i),c(n,o),F.m(n,null),c(n,s),c(n,a),c(a,l),c(l,f),c(a,p),D&&D.m(a,null),c(t,v),$&&$.m(t,null),u(d,b,h),R&&R.m(d,h),u(d,I,h),C||(E=w(i,"click",e[72]),C=!0)},p(e,i){e[3].banner?B?B.p(e,i):(B=Ck(e),B.c(),B.m(n,r)):B&&(B.d(1),B=null),Q===(Q=S(e))&&F?F.p(e,i):(F.d(1),F=Q(e),F&&(F.c(),F.m(n,s))),8&i[0]&&x!==(x=(e[3].name||"Unknown User")+"")&&k(f,x),e[3].nip05?D?D.p(e,i):(D=Bk(e),D.c(),D.m(a,null)):D&&(D.d(1),D=null),e[3].about?$?$.p(e,i):($=Sk(e),$.c(),$.m(t,null)):$&&($.d(1),$=null),e[4]&&"read"!==e[4]?R?R.p(e,i):(R=Qk(e),R.c(),R.m(I.parentNode,I)):R&&(R.d(1),R=null)},d(e){e&&d(t),B&&B.d(),F.d(),D&&D.d(),$&&$.d(),e&&d(b),R&&R.d(e),e&&d(I),C=!1,E()}}}function Ck(e){let t,n;return{c(){t=h("img"),a(t.src,n=e[3].banner)||A(t,"src",n),A(t,"alt","Profile banner"),A(t,"class","profile-banner svelte-u3u5mw")},m(e,n){u(e,t,n)},p(e,r){8&r[0]&&!a(t.src,n=e[3].banner)&&A(t,"src",n)},d(e){e&&d(t)}}}function Ek(t){let n;return{c(){n=h("div"),n.textContent="👤",A(n,"class","profile-avatar-placeholder overlap svelte-u3u5mw")},m(e,t){u(e,n,t)},p:e,d(e){e&&d(n)}}}function xk(e){let t,n;return{c(){t=h("img"),a(t.src,n=e[3].picture)||A(t,"src",n),A(t,"alt","User avatar"),A(t,"class","profile-avatar overlap svelte-u3u5mw")},m(e,n){u(e,t,n)},p(e,r){8&r[0]&&!a(t.src,n=e[3].picture)&&A(t,"src",n)},d(e){e&&d(t)}}}function Bk(e){let t,n,r=e[3].nip05+"";return{c(){t=h("span"),n=g(r),A(t,"class","profile-nip05-inline svelte-u3u5mw")},m(e,r){u(e,t,r),c(t,n)},p(e,t){8&t[0]&&r!==(r=e[3].nip05+"")&&k(n,r)},d(e){e&&d(t)}}}function Sk(e){let t,n;return{c(){t=h("div"),n=h("p"),A(n,"class","profile-about svelte-u3u5mw"),A(t,"class","about-card svelte-u3u5mw")},m(r,i){u(r,t,i),c(t,n),n.innerHTML=e[40]},p(e,t){512&t[1]&&(n.innerHTML=e[40])},d(e){e&&d(t)}}}function Qk(e){let t,n,r,i,o,s,a=e[95](),l=[];for(let t=0;t<a.length;t+=1)l[t]=Fk(Rb(e,a,t));return{c(){t=h("div"),n=h("h3"),n.textContent="View as Role",r=m(),i=h("p"),i.textContent="See the interface as it appears for different\n permission levels:",o=m(),s=h("div");for(let e=0;e<l.length;e+=1)l[e].c();A(n,"class","svelte-u3u5mw"),A(i,"class","svelte-u3u5mw"),A(s,"class","radio-group svelte-u3u5mw"),A(t,"class","view-as-section svelte-u3u5mw")},m(e,a){u(e,t,a),c(t,n),c(t,r),c(t,i),c(t,o),c(t,s);for(let e=0;e<l.length;e+=1)l[e]&&l[e].m(s,null)},p(e,t){if(1040&t[0]|6&t[3]){let n;for(a=e[95](),n=0;n<a.length;n+=1){const r=Rb(e,a,n);l[n]?l[n].p(r,t):(l[n]=Fk(r),l[n].c(),l[n].m(s,null))}for(;n<l.length;n+=1)l[n].d(1);l.length=a.length}},d(e){e&&d(t),f(l,e)}}}function Fk(e){let t,n,r,i,o,s,a,l,f,p=e[169].charAt(0).toUpperCase()+e[169].slice(1)+"",y=e[169]===e[4]?" (Default)":"";function v(){return e[127](e[169])}return{c(){t=h("label"),n=h("input"),i=m(),o=g(p),s=g(y),a=m(),A(n,"type","radio"),A(n,"name","viewAsRole"),n.value=e[169],n.checked=r=e[10]===e[169],A(n,"class","svelte-u3u5mw"),A(t,"class","radio-label svelte-u3u5mw")},m(e,r){u(e,t,r),c(t,n),c(t,i),c(t,o),c(t,s),c(t,a),l||(f=w(n,"change",v),l=!0)},p(t,i){e=t,1024&i[0]&&r!==(r=e[10]===e[169])&&(n.checked=r),16&i[0]&&y!==(y=e[169]===e[4]?" (Default)":"")&&k(s,y)},d(e){e&&d(t),l=!1,f()}}}function Dk(e){let t,n,r,i,o,s,a,l,f,p,g,y,w,v;t=new Og({props:{isDarkTheme:e[0],isLoggedIn:e[1],userRole:e[4],currentEffectiveRole:e[10],userProfile:e[3],userPubkey:e[2]}}),t.$on("openSettingsDrawer",e[74]),t.$on("openLoginModal",e[70]),i=new zg({props:{isDarkTheme:e[0],tabs:e[11],selectedTab:e[5],version:e[32]}}),i.$on("selectTab",e[104]),i.$on("closeSearchTab",e[105]);const b=[Yb,qb,zb,Vb,Kb,Jb,Gb,jb,Hb,Ob,_b,Mb,Lb],k=[];function I(e,t){return 96&t[0]&&(a=null),"export"===e[5]?0:"import"===e[5]?1:"events"===e[5]?2:"blossom"===e[5]?3:"bunker"===e[5]?4:"compose"===e[5]?5:"managed-acl"===e[5]?6:"sprocket"===e[5]?7:"policy"===e[5]?8:"logs"===e[5]?9:"recovery"===e[5]?10:(null==a&&(a=!!e[6].some(e[103])),a?11:12)}l=I(e,[-1,-1,-1,-1,-1,-1]),f=k[l]=b[l](e);let C=e[14]&&bk(e);function E(t){e[129](t)}let x={isDarkTheme:e[0]};return void 0!==e[12]&&(x.showModal=e[12]),y=new Hp({props:x}),U.push(()=>X(y,"showModal",E)),y.$on("login",e[71]),y.$on("close",e[73]),{c(){ee(t.$$.fragment),n=m(),r=h("div"),ee(i.$$.fragment),o=m(),s=h("main"),f.c(),p=m(),C&&C.c(),g=m(),ee(y.$$.fragment),A(s,"class","main-content svelte-u3u5mw"),A(r,"class","app-container svelte-u3u5mw"),B(r,"dark-theme",e[0])},m(e,a){te(t,e,a),u(e,n,a),u(e,r,a),te(i,r,null),c(r,o),c(r,s),k[l].m(s,null),u(e,p,a),C&&C.m(e,a),u(e,g,a),te(y,e,a),v=!0},p(e,n){const o={};1&n[0]&&(o.isDarkTheme=e[0]),2&n[0]&&(o.isLoggedIn=e[1]),16&n[0]&&(o.userRole=e[4]),1024&n[0]&&(o.currentEffectiveRole=e[10]),8&n[0]&&(o.userProfile=e[3]),4&n[0]&&(o.userPubkey=e[2]),t.$set(o);const a={};1&n[0]&&(a.isDarkTheme=e[0]),2048&n[0]&&(a.tabs=e[11]),32&n[0]&&(a.selectedTab=e[5]),2&n[1]&&(a.version=e[32]),i.$set(a);let c=l;l=I(e,n),l===c?k[l].p(e,n):(q(),Z(k[c],1,1,()=>{k[c]=null}),Y(),f=k[l],f?f.p(e,n):(f=k[l]=b[l](e),f.c()),W(f,1),f.m(s,null)),(!v||1&n[0])&&B(r,"dark-theme",e[0]),e[14]?C?C.p(e,n):(C=bk(e),C.c(),C.m(g.parentNode,g)):C&&(C.d(1),C=null);const u={};1&n[0]&&(u.isDarkTheme=e[0]),!w&&4096&n[0]&&(w=!0,u.showModal=e[12],H(()=>w=!1)),y.$set(u)},i(e){v||(W(t.$$.fragment,e),W(i.$$.fragment,e),W(f),W(y.$$.fragment,e),v=!0)},o(e){Z(t.$$.fragment,e),Z(i.$$.fragment,e),Z(f),Z(y.$$.fragment,e),v=!1},d(e){ne(t,e),e&&d(n),e&&d(r),ne(i),k[l].d(),e&&d(p),C&&C.d(e),e&&d(g),ne(y,e)}}}let $k=!1,Rk=!1;function Pk(e,t,n){let r,i,o,s,a;"undefined"!=typeof window&&(window.debugIndexedDB=Oh);let l=!1,c=!1,u=!1,d="",f="",h=null,p="",g=null,m=!1,y=localStorage.getItem("selectedTab")||"export",w=!1,v={},A=[],k=[],I=null,C="",E=new Set,B=!1,S=!0,Q=null,F="",D=new Map,$=[],R=0,T=[],U=!0,N=null,L="",M=null,_=[],O=!1,H="",j="info",G=!1,J=null,K="",V=!1,z=!1,q="",Y="info",W=[],Z=[],X="",ee="",te="",ne="",re=null,ie="",oe=[],se=!1,ae=!0,le=null;function ce(e){E.has(e)?E.delete(e):E.add(e),n(18,E)}async function ue(e,t){const n=JSON.stringify(e),r=await async function(e){try{return await navigator.clipboard.writeText(e),!0}catch(t){console.error("Failed to copy to clipboard:",t);try{const t=document.createElement("textarea");return t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),!0}catch(e){return console.error("Fallback copy also failed:",e),!1}}}(n);!function(e,t=!0){if(!e)return;const n=e.textContent,r=e.style.backgroundColor;t?(e.textContent="",e.style.backgroundColor="#4CAF50"):(e.textContent="L",e.style.backgroundColor="#f44336"),setTimeout(()=>{e.textContent=n,e.style.backgroundColor=r},2e3)}(t.target.closest(".copy-json-btn"),r),r||alert("Failed to copy to clipboard. Please copy manually.")}async function de(e){if(!u)return void alert("Please log in first");const t=k.find(t=>t.id===e);if(!t)return void alert("Event not found");if("admin"===p||"owner"===p||"write"===p&&t.pubkey&&t.pubkey===d){if(confirm("Are you sure you want to delete this event?"))try{if(!g)throw new Error("Signer not available for signing");const r={kind:5,created_at:Math.floor(Date.now()/1e3),tags:[["e",e]],content:""};console.log("Created delete event template:",r),console.log("User pubkey:",d),console.log("Target event:",t),console.log("Target event pubkey:",t.pubkey);const i=await g.signEvent(r);console.log("Signed delete event:",i),console.log("Signed delete event pubkey:",i.pubkey),console.log("Delete event tags:",i.tags);const o=`${window.location.protocol.startsWith("https")?"wss:":"ws:"}//${window.location.host}/`;try{const e=await $b(o,i,g,d);e.success?console.log("Delete event published successfully to ORLY relay"):console.error("Failed to publish delete event:",e.reason)}catch(e){console.error("Error publishing delete event:",e)}const s=t.pubkey&&t.pubkey===d;if(s){const t=await Eh.publish(i);if(console.log("Delete event published:",t),!(t.success&&t.okCount>0))throw new Error("No relays accepted the delete event");{await new Promise(e=>setTimeout(e,2e3));try{const n=await Nh(e,{timeout:5e3});n?(console.warn("Event still exists after deletion attempt:",n),alert(`Warning: Delete event was accepted by ${t.okCount} relay(s), but the event still exists on the relay. This may indicate the relay does not properly handle delete events.`)):console.log("Event successfully deleted and verified")}catch(e){console.log("Could not fetch event after deletion (likely deleted):",e.message)}try{const t=await Lh(e,{timeout:5e3});if(t.length>0){console.log(`Delete event verification: Found ${t.length} delete event(s) targeting ${e}`);const n=t.find(e=>e.pubkey&&e.pubkey===d);n?console.log("Our delete event found in database:",n.id):console.warn("Our delete event not found in database, but other delete events exist")}else console.warn("No delete events found in database for target event:",e)}catch(e){console.log("Could not verify delete event in database:",e.message)}n(96,k=k.filter(t=>t.id!==e)),T=T.filter(t=>t.id!==e),$=$.filter(t=>t.id!==e);for(const[t,n]of D)n.events&&(n.events=n.events.filter(t=>t.id!==e),D.set(t,n));ge(),console.log("Reloading events to show delete event...");const r=$k&&u&&d?[d]:null;await Te(!0,r),alert(`Event deleted successfully (accepted by ${t.okCount} relay(s))`)}}else{const t=`${window.location.protocol.startsWith("https")?"wss:":"ws:"}//${window.location.host}/`,r=new Ch;await r.connectToRelay(t);const o=await r.publish(i);if(console.log("Delete event published to local relay only:",o),!(o.success&&o.okCount>0))throw new Error("Local relay did not accept the delete event");{await new Promise(e=>setTimeout(e,2e3));try{const t=await Nh(e,{timeout:5e3});t?(console.warn("Event still exists after deletion attempt:",t),alert(`Warning: Delete event was accepted by ${o.okCount} relay(s), but the event still exists on the relay. This may indicate the relay does not properly handle delete events.`)):console.log("Event successfully deleted and verified")}catch(e){console.log("Could not fetch event after deletion (likely deleted):",e.message)}try{const t=await Lh(e,{timeout:5e3});if(t.length>0){console.log(`Delete event verification: Found ${t.length} delete event(s) targeting ${e}`);const n=t.find(e=>e.pubkey&&e.pubkey===d);n?console.log("Our delete event found in database:",n.id):console.warn("Our delete event not found in database, but other delete events exist")}else console.warn("No delete events found in database for target event:",e)}catch(e){console.log("Could not verify delete event in database:",e.message)}n(96,k=k.filter(t=>t.id!==e)),T=T.filter(t=>t.id!==e),$=$.filter(t=>t.id!==e);for(const[t,n]of D)n.events&&(n.events=n.events.filter(t=>t.id!==e),D.set(t,n));ge(),console.log("Reloading events to show delete event...");const t=$k&&u&&d?[d]:null;await Te(!0,t),alert("Event deleted successfully (local relay only - admin/owner deleting other user's event)")}}}catch(e){console.error("Failed to delete event:",e),alert("Failed to delete event: "+e.message)}}else alert("You do not have permission to delete this event")}async function fe(){const e=ie?parseInt(ie):re;if(null==e||isNaN(e))console.log("No valid kind to load, kindToUse:",e);else if(u){console.log("Loading recovery events for kind:",e,"user:",d),n(38,se=!0);try{const t=[{kinds:[e],authors:[d],limit:100}];le&&(t[0].until=le),console.log("Recovery filters:",t);const r=await _h(t,{timeout:3e4,cacheFirst:!0});console.log("Recovery events received:",r.length),console.log("Recovery events kinds:",r.map(e=>e.kind)),n(37,oe=le?[...oe,...r]:r),r.length>0?(le=Math.min(...r.map(e=>e.created_at)),n(39,ae=100===r.length)):n(39,ae=!1)}catch(e){console.error("Failed to load recovery events:",e)}finally{n(38,se=!1)}}else console.log("Not logged in, cannot load recovery events")}async function he(e){if(confirm("Are you sure you want to repost this event?"))try{const t=`${window.location.protocol.startsWith("https")?"wss:":"ws:"}//${window.location.host}/`;console.log("Reposting event to local relay:",t,e);const r={...e};if(r.created_at=Math.floor(Date.now()/1e3),r.id="",r.sig="",e.kind>=3e4&&e.kind<=39999){const t=e.tags.find(e=>"d"===e[0]);t&&(r.tags=r.tags.filter(e=>"d"!==e[0]),r.tags.push(t))}if(g){const e=await g.signEvent(r);console.log("Signed event for repost:",e);const i=await Eh.publish(e,[t]);console.log("Repost publish result:",i),i.success&&i.okCount>0?(alert("Event reposted successfully!"),n(39,ae=!1),await fe()):alert("Failed to repost event. Check console for details.")}else alert("No signer available. Please log in.")}catch(e){console.error("Error reposting event:",e),alert("Error reposting event: "+e.message)}}async function pe(e){if(confirm("Are you sure you want to repost this event to all your write relays?"))try{const t=await async function(){if(!d)return[];try{const e=await $h([{kinds:[10002],authors:[d],limit:1}]);if(0===e.length)return console.log("No relay list event found for user"),[];const t=e[0];console.log("Found relay list event:",t);const n=[];for(const e of t.tags)if("r"===e[0]&&e.length>=2){const t=e[1],r=e.length>=3?e[2]:null;r&&"write"!==r||n.push(t)}return console.log("Found write relays:",n),n}catch(e){return console.error("Error fetching user write relays:",e),[]}}(),r=`${window.location.protocol.startsWith("https")?"wss:":"ws:"}//${window.location.host}/`,i=[r,...t.filter(e=>e!==r)];1===i.length&&alert("No write relays found in your relay list. Only posting to local relay."),console.log("Reposting event to all relays:",i,e);const o={...e};if(o.created_at=Math.floor(Date.now()/1e3),o.id="",o.sig="",e.kind>=3e4&&e.kind<=39999){const t=e.tags.find(e=>"d"===e[0]);t&&(o.tags=o.tags.filter(e=>"d"!==e[0]),o.tags.push(t))}if(g){const e=await g.signEvent(o);console.log("Signed event for repost to all:",e);const t=await Eh.publish(e,i);console.log("Repost to all publish result:",t),t.success&&t.okCount>0?(alert(`Event reposted successfully to ${i.length} relays!`),n(39,ae=!1),await fe()):alert("Failed to repost event. Check console for details.")}else alert("No signer available. Please log in.")}catch(e){console.error("Error reposting event to all:",e),alert("Error reposting event to all: "+e.message)}}if("undefined"!=typeof window&&window.matchMedia){const e=window.matchMedia("(prefers-color-scheme: dark)");l=e.matches,e.addEventListener("change",e=>{n(0,l=e.matches)})}if("undefined"!=typeof localStorage){const e=localStorage.getItem("nostr_auth_method"),t=localStorage.getItem("nostr_pubkey");e&&t&&(u=!0,d=t,f=e,"extension"===e&&window.nostr&&(g=window.nostr),$e(),Re()),function(){if("undefined"==typeof localStorage)return;try{const t=localStorage.getItem("app_state");if(t){const r=JSON.parse(t);r.selectedTab&&Ce.some(e=>e.id===r.selectedTab)&&n(5,y=r.selectedTab),r.expandedEvents&&n(18,E=new Set(r.expandedEvents)),r.globalEventsCache&&($=r.globalEventsCache),r.globalCacheTimestamp&&(R=r.globalCacheTimestamp),void 0!==r.hasMoreEvents&&(S=r.hasMoreEvents),r.oldestEventTimestamp&&(Q=r.oldestEventTimestamp),void 0!==r.hasMoreMyEvents&&(U=r.hasMoreMyEvents),r.oldestMyEventTimestamp&&(N=r.oldestMyEventTimestamp),$.length>0&&((e=R)&&Date.now()-e<Ih)&&n(96,k=$)}}catch(e){console.error("Failed to load persistent state:",e)}var e}(),async function(){try{const e=await fetch("/api/sprocket/config",{method:"GET",headers:{"Content-Type":"application/json"}});if(e.ok){const t=await e.json();n(98,G=t.enabled)}}catch(e){console.error("Error loading sprocket config:",e)}}(),async function(){try{const e=await fetch("/api/policy/config",{method:"GET",headers:{"Content-Type":"application/json"}});if(e.ok){const t=await e.json();n(8,V=t.enabled||!1)}}catch(e){console.error("Error loading policy config:",e),n(8,V=!1)}}(),async function(){try{const e=await async function(){try{const e=await fetch(window.location.origin,{headers:{Accept:"application/nostr+json"}});if(e.ok)return await e.json()}catch(e){console.error("Error fetching relay info:",e)}return null}();e&&e.version&&n(32,ee=e.version)}catch(e){console.error("Error fetching relay version:",e)}}()}function ge(){if("undefined"==typeof localStorage)return;const e={selectedTab:y,expandedEvents:Array.from(E),globalEventsCache:$,globalCacheTimestamp:R,hasMoreEvents:S,oldestEventTimestamp:Q};localStorage.setItem("app_state",JSON.stringify(e))}function me(e){$=e.sort((e,t)=>t.created_at-e.created_at),R=Date.now(),ge()}async function ye(){if(u&&"owner"===p&&G)try{n(22,O=!0);const e=await fetch("/api/sprocket/status",{method:"GET",headers:{Authorization:`Nostr ${await Me("GET","/api/sprocket/status")}`,"Content-Type":"application/json"}});e.ok?n(20,M=await e.json()):be("Failed to load sprocket status","error")}catch(e){be(`Error loading sprocket status: ${e.message}`,"error")}finally{n(22,O=!1)}}async function we(){if(u&&"owner"===p)try{n(22,O=!0);const e=await fetch("/api/sprocket/versions",{method:"GET",headers:{Authorization:`Nostr ${await Me("GET","/api/sprocket/versions")}`,"Content-Type":"application/json"}});e.ok?n(21,_=await e.json()):be("Failed to load versions","error")}catch(e){be(`Error loading versions: ${e.message}`,"error")}finally{n(22,O=!1)}}async function ve(e){u&&"owner"===p&&(n(19,L=e.content),be(`Loaded version: ${e.name}`,"success"))}async function Ae(e){if(u&&"owner"===p&&confirm(`Are you sure you want to delete version ${e}?`))try{n(22,O=!0);const t=await fetch("/api/sprocket/delete-version",{method:"POST",headers:{Authorization:`Nostr ${await Me("POST","/api/sprocket/delete-version")}`,"Content-Type":"application/json"},body:JSON.stringify({filename:e})});if(t.ok)be(`Version ${e} deleted successfully`,"success"),await we();else{be(`Failed to delete version: ${await t.text()}`,"error")}}catch(e){be(`Error deleting version: ${e.message}`,"error")}finally{n(22,O=!1)}}function be(e,t="info"){n(23,H=e),n(24,j=t),setTimeout(()=>{n(23,H="")},5e3)}function ke(e,t="info"){n(28,q=e),n(29,Y=t),"error"!==t&&setTimeout(()=>{n(28,q="")},5e3)}async function Ie(){if(n(30,W=[]),!K.trim())return n(30,W=["Policy JSON is empty"]),ke("Validation failed","error"),!1;try{const e=JSON.parse(K);if("object"!=typeof e||null===e)return n(30,W=["Policy must be a JSON object"]),ke("Validation failed","error"),!1;if(e.policy_admins)if(Array.isArray(e.policy_admins))for(const t of e.policy_admins)"string"==typeof t&&/^[0-9a-fA-F]{64}$/.test(t)||W.push(`Invalid policy_admin pubkey: ${t}`);else W.push("policy_admins must be an array");if(e.rules)if("object"!=typeof e.rules)W.push("rules must be an object");else for(const[t,n]of Object.entries(e.rules))if(/^\d+$/.test(t)||W.push(`Invalid kind number: ${t}`),n.tag_validation&&"object"==typeof n.tag_validation)for(const[e,t]of Object.entries(n.tag_validation))try{new RegExp(t)}catch(n){W.push(`Invalid regex for tag '${e}': ${t}`)}return e.default_policy&&!["allow","deny"].includes(e.default_policy)&&W.push("default_policy must be 'allow' or 'deny'"),W.length>0?(ke("Validation failed - see errors below","error"),!1):(ke("Validation passed","success"),!0)}catch(e){return n(30,W=[`JSON parse error: ${e.message}`]),ke("Invalid JSON syntax","error"),!1}}const Ce=[{id:"export",icon:"📤",label:"Export"},{id:"import",icon:"💾",label:"Import",requiresAdmin:!0},{id:"events",icon:"📡",label:"Events"},{id:"blossom",icon:"🌸",label:"Blossom"},{id:"bunker",icon:"🔐",label:"Bunker",requiresWrite:!0},{id:"compose",icon:"✏️",label:"Compose",requiresWrite:!0},{id:"recovery",icon:"🔄",label:"Recovery"},{id:"managed-acl",icon:"🛡️",label:"Managed ACL",requiresOwner:!0},{id:"sprocket",icon:"⚙️",label:"Sprocket",requiresOwner:!0},{id:"policy",icon:"📜",label:"Policy",requiresOwner:!0},{id:"logs",icon:"📋",label:"Logs",requiresOwner:!0}];function Ee(e){n(5,y=e),"sprocket"===e&&u&&"owner"===p&&G&&(ye(),we()),ge()}function xe(){n(14,m=!1)}function Be(e){Se(e)}function Se(e){n(6,A=A.filter(t=>t.id!==e)),D.delete(e),y===e&&n(5,y="export")}async function Qe(e,t=!0){const n=D.get(e);if(n&&!n.isLoading){n.isLoading=!0,D.set(e,n);try{const r={...n.filter};!t&&n.oldestTimestamp&&(r.until=n.oldestTimestamp),t||(r.limit=200),console.log("Loading search results with filter:",r);const i=await Uh([r],{timeout:3e4});if(console.log("Received search results:",i.length,"events"),n.events=t?i.sort((e,t)=>t.created_at-e.created_at):[...n.events,...i].sort((e,t)=>t.created_at-e.created_at),i.length>0){const e=Math.min(...i.map(e=>e.created_at));(!n.oldestTimestamp||e<n.oldestTimestamp)&&(n.oldestTimestamp=e)}n.hasMore=i.length===(t?r.limit||100:200),n.isLoading=!1,D.set(e,n)}catch(t){console.error("Failed to load search results:",t),n.isLoading=!1,D.set(e,n),alert("Failed to load search results: "+t.message)}}}function Fe(e,t){const{scrollTop:n,scrollHeight:r,clientHeight:i}=e.target;if(r-n-i<100){const e=D.get(t);e&&!e.isLoading&&e.hasMore&&async function(e){await Qe(e,!1)}(t)}}async function De(){if(u&&d&&!h)try{console.log("Auto-fetching profile for:",d),await Mh(),n(3,h=await Ph(d)),console.log("Profile auto-loaded:",h)}catch(e){console.error("Failed to auto-load profile:",e)}}async function $e(){if(u&&d)try{const e=await fetch(`/api/permissions/${d}`);if(e.ok){const t=await e.json();n(4,p=t.permission||""),console.log("User role loaded:",p),console.log("Is owner?","owner"===p)}else console.error("Failed to fetch user role:",e.status),n(4,p="")}catch(e){console.error("Error fetching user role:",e),n(4,p="")}else n(4,p="")}async function Re(){try{const e=await fetch("/api/acl-mode");if(e.ok){const t=await e.json();n(9,X=t.acl_mode||""),console.log("ACL mode loaded:",X)}else console.error("Failed to fetch ACL mode:",e.status),n(9,X="")}catch(e){console.error("Error fetching ACL mode:",e),n(9,X="")}}async function Pe(e=[]){if("none"===X||u)if("none"===X||0!==e.length||"admin"===a||"owner"===a)try{const t={"Content-Type":"application/json"};"none"!==X&&u&&(t.Authorization=await Le("/api/export","POST"));const n=await fetch("/api/export",{method:"POST",headers:t,body:JSON.stringify({pubkeys:e})});if(!n.ok)throw new Error(`Export failed: ${n.status} ${n.statusText}`);const r=await n.blob(),i=window.URL.createObjectURL(r),o=document.createElement("a");o.href=i;const s=n.headers.get("Content-Disposition");let a="events.jsonl";if(s){const e=s.match(/filename="([^"]+)"/);e&&(a=e[1])}o.download=a,document.body.appendChild(o),o.click(),document.body.removeChild(o),window.URL.revokeObjectURL(i)}catch(e){console.error("Export failed:",e),alert("Export failed: "+e.message)}else alert("Admin or owner permission required to export all events");else alert("Please log in first")}async function Te(e=!1,t=null){if(!u||"read"!==p&&"write"!==p&&"admin"!==p&&"owner"!==p)alert("Read, write, admin, or owner permission required");else if(!B){n(7,B=!0),e&&(Q=null);try{console.log("Loading events with authors filter:",t,"including delete events");const r=e?Math.floor(Date.now()/1e3):Q,i=v.authors||t,o=await async function(e={}){const{limit:t=100,since:n=null,until:r=null,authors:i=null,kinds:o=null,...s}=e,a=[{...s}];return n&&(a[0].since=n),r&&(a[0].until=r),i&&(a[0].authors=i),o&&(a[0].kinds=o),t&&(a[0].limit=t),await Uh(a,{timeout:3e4})}({...v,limit:e?100:200,until:v.until||r,authors:i});if(console.log("Received events:",o.length,"events"),t&&o.length>0){const e=o.filter(e=>e.pubkey&&e.pubkey!==d);e.length>0&&console.warn("Server returned non-user events:",e.length,"out of",o.length)}if(e?(n(96,k=o.sort((e,t)=>t.created_at-e.created_at)),me(o)):(n(96,k=[...k,...o].sort((e,t)=>t.created_at-e.created_at)),me(k)),o.length>0){const e=Math.min(...o.map(e=>e.created_at));(!Q||e<Q)&&(Q=e)}S=o.length===(e?1e3:200),e&&S&&setTimeout(()=>{if("events"===y){const e=document.querySelectorAll(".events-view-content")[0];e&&e.scrollHeight<=e.clientHeight&&Ue()}},100)}catch(e){console.error("Failed to load events:",e),alert("Failed to load events: "+e.message)}finally{n(7,B=!1)}}}async function Ue(){await Te(!1)}let Ne=!1;async function Le(e,t){if(!u||!d)throw new Error("Not logged in");const n={kind:27235,created_at:Math.floor(Date.now()/1e3),tags:[["u",window.location.origin+e],["method",t.toUpperCase()]],content:"",pubkey:d};let r;if(g&&"extension"===f)try{r=await g.signEvent(n)}catch(e){throw new Error("Failed to sign with extension: "+e.message)}else{if("nsec"!==f)throw new Error("No valid signer available");n.id="mock-id-"+Date.now(),n.sig="mock-signature-"+Date.now(),r=n}const i=JSON.stringify(r);return`Nostr ${btoa(i)}`}async function Me(e,t){if(!u||!d)throw new Error("Not logged in");const n={kind:27235,created_at:Math.floor(Date.now()/1e3),tags:[["u",window.location.origin+t],["method",e.toUpperCase()]],content:"",pubkey:d};let r;if(g&&"extension"===f)try{r=await g.signEvent(n)}catch(e){throw new Error("Failed to sign with extension: "+e.message)}else{if("nsec"!==f)throw new Error("No valid signer available");n.id="mock-id-"+Date.now(),n.sig="mock-signature-"+Date.now(),r=n}const i=JSON.stringify(r);return btoa(i)}function _e(e,t){const n=e.toLowerCase();if(n.includes("policy")||n.includes("blocked")||n.includes("denied")){let n=`Policy Error: ${e}`;return null!==t&&(n+=`\n\nKind ${t} may be restricted by the relay's policy configuration.`),V&&(n+="\n\nThe relay has policy enforcement enabled. Contact a relay administrator to allow this event kind or adjust your permissions."),n}if(n.includes("auth")||n.includes("permission")||n.includes("unauthorized"))return`Permission Error: ${e}\n\nYour current permissions may not allow publishing this type of event. Current role: ${p||"unknown"}. Contact a relay administrator to upgrade your permissions.`;if(n.includes("kind")||n.includes("not allowed")||n.includes("restricted")){let n=`Event Type Error: ${e}`;return null!==t&&(n+=`\n\nKind ${t} is not currently allowed on this relay.`),n+="\n\nThe relay administrator may need to update the policy configuration to allow this event kind.",n}return n.includes("rate")||n.includes("limit")||n.includes("too many")?`Rate Limit Error: ${e}\n\nPlease wait a moment before trying again.`:n.includes("size")||n.includes("too large")||n.includes("content")?`Size Limit Error: ${e}\n\nThe event may exceed the relay's size limits. Try reducing the content length.`:`Publishing failed: ${e}`}function Oe(e){n(97,F=e),localStorage.setItem("viewAsRole",e),console.log("View as role changed to:",e,"Current effective role:",a)}F=localStorage.getItem("viewAsRole")||"";return e.$$.update=()=>{var t;if(6&e.$$.dirty[0]|8&e.$$.dirty[3]&&n(41,r=k.sort((e,t)=>t.created_at-e.created_at)),8&e.$$.dirty[0]&&n(40,i=h?.about?(t=h.about,t?t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"):"").replace(/\n{2,}/g,"<br>"):""),16&e.$$.dirty[0]|16&e.$$.dirty[3]&&n(10,a=F&&""!==F?F:p),1810&e.$$.dirty[0]|48&e.$$.dirty[3]&&n(100,o=Ce.filter(e=>{const t=a;return!(e.requiresAdmin&&(!u||"admin"!==t&&"owner"!==t))&&(!(e.requiresOwner&&(!u||"owner"!==t))&&(!(e.requiresWrite&&(!u||"read"===t))&&(!("sprocket"===e.id&&!G)&&(!("policy"===e.id&&!V)&&(("managed-acl"!==e.id||"managed"===X)&&(console.log(`Tab ${e.id} filter check:`,{isLoggedIn:u,userRole:p,viewAsRole:F,currentRole:t,requiresAdmin:e.requiresAdmin,requiresOwner:e.requiresOwner,requiresWrite:e.requiresWrite,visible:!0}),!0))))))})),64&e.$$.dirty[0]|128&e.$$.dirty[3]&&n(11,s=[...o,...A]),2578&e.$$.dirty[0]|128&e.$$.dirty[3]&&console.log("Tabs debug:",{isLoggedIn:u,userRole:p,aclMode:X,filteredBaseTabs:o.map(e=>e.id),allTabs:s.map(e=>e.id)}),1&e.$$.dirty[0]&&"undefined"!=typeof document&&(l?document.body.classList.add("dark-theme"):document.body.classList.remove("dark-theme")),14&e.$$.dirty[0]&&u&&d&&!h&&De(),182&e.$$.dirty[0]|72&e.$$.dirty[3]&&"events"===y&&u&&("read"===p||"write"===p||"admin"===p||"owner"===p)&&0===k.length&&!Ne&&!B){n(99,Ne=!0);Te(!0,null)}32&e.$$.dirty[0]|8&e.$$.dirty[3]&&("events"!==y||"events"===y&&k.length>0)&&n(99,Ne=!1),32&e.$$.dirty[0]&&localStorage.setItem("selectedTab",y)},[l,u,d,h,p,y,A,B,V,X,a,s,c,g,m,w,I,C,E,L,M,_,O,H,j,J,K,z,q,Y,W,Z,ee,te,ne,re,ie,oe,se,ae,i,r,D,ce,ue,async function(){console.log("Toggle changed, showOnlyMyEvents:",$k),n(99,Ne=!1),await Te(!0,null)},de,fe,he,pe,function(){console.log("selectRecoveryKind called, recoverySelectedKind:",re),null!=re?(n(36,ie=""),n(37,oe=[]),le=null,n(39,ae=!0),fe()):console.log("No kind selected, skipping load")},function(){console.log("handleCustomKindInput called, recoveryCustomKind:",ie);const e=parseInt(ie);""!==ie&&!isNaN(e)&&e>=0&&(n(35,re=null),n(37,oe=[]),le=null,n(39,ae=!0),fe())},function(e){const t=oe.filter(t=>t.kind===e.kind&&t.pubkey===e.pubkey),n=Math.max(...t.map(e=>e.created_at));return e.created_at===n},async function(){if(u&&"owner"===p)try{n(22,O=!0);const e=await fetch("/api/sprocket/status",{method:"GET",headers:{Authorization:`Nostr ${await Me("GET","/api/sprocket/status")}`,"Content-Type":"application/json"}});if(e.ok){const t=await e.json();n(19,L=t.script_content||""),n(20,M=t),be("Script loaded successfully","success")}else be("Failed to load script","error")}catch(e){be(`Error loading script: ${e.message}`,"error")}finally{n(22,O=!1)}},async function(){if(u&&"owner"===p)try{n(22,O=!0);const e=await fetch("/api/sprocket/update",{method:"POST",headers:{Authorization:`Nostr ${await Me("POST","/api/sprocket/update")}`,"Content-Type":"text/plain"},body:L});if(e.ok)be("Script saved and updated successfully","success"),await ye(),await we();else{be(`Failed to save script: ${await e.text()}`,"error")}}catch(e){be(`Error saving script: ${e.message}`,"error")}finally{n(22,O=!1)}},async function(){if(u&&"owner"===p)try{n(22,O=!0);const e=await fetch("/api/sprocket/restart",{method:"POST",headers:{Authorization:`Nostr ${await Me("POST","/api/sprocket/restart")}`,"Content-Type":"application/json"}});if(e.ok)be("Sprocket restarted successfully","success"),await ye();else{be(`Failed to restart sprocket: ${await e.text()}`,"error")}}catch(e){be(`Error restarting sprocket: ${e.message}`,"error")}finally{n(22,O=!1)}},async function(){if(u&&"owner"===p&&confirm("Are you sure you want to delete the sprocket script? This will stop the current process."))try{n(22,O=!0);const e=await fetch("/api/sprocket/update",{method:"POST",headers:{Authorization:`Nostr ${await Me("POST","/api/sprocket/update")}`,"Content-Type":"text/plain"},body:""});if(e.ok)n(19,L=""),be("Sprocket script deleted successfully","success"),await ye(),await we();else{be(`Failed to delete script: ${await e.text()}`,"error")}}catch(e){be(`Error deleting script: ${e.message}`,"error")}finally{n(22,O=!1)}},we,ve,Ae,async function(){if(u&&("owner"===p||Rk))try{n(27,z=!0),n(30,W=[]);const e={kinds:[12345],limit:1},t=await _h(e);if(t&&t.length>0){n(26,K=t[0].content);try{n(26,K=JSON.stringify(JSON.parse(K),null,2))}catch(e){}ke("Policy loaded successfully","success")}else{const e=await fetch("/api/policy",{method:"GET",headers:{Authorization:`Nostr ${await Me("GET","/api/policy")}`,"Content-Type":"application/json"}});if(e.ok){const t=await e.json();n(26,K=JSON.stringify(t,null,2)),ke("Policy loaded from file","success")}else ke("No policy configuration found","info"),n(26,K="")}}catch(e){ke(`Error loading policy: ${e.message}`,"error")}finally{n(27,z=!1)}},Ie,async function(){if(!u||"owner"!==p&&!Rk)return;if(await Ie())try{n(27,z=!0);const e={kind:12345,created_at:Math.floor(Date.now()/1e3),tags:[],content:K},t=await $b(e,g);t.success?ke("Policy updated successfully","success"):ke(`Failed to publish policy: ${t.error||"Unknown error"}`,"error")}catch(e){ke(`Error saving policy: ${e.message}`,"error")}finally{n(27,z=!1)}},function(){try{const e=JSON.parse(K);n(26,K=JSON.stringify(e,null,2)),ke("JSON formatted","success")}catch(e){ke(`Cannot format: ${e.message}`,"error")}},function(e){const t=e.detail;if(!t)return void ke("Please enter a pubkey","error");const r=function(e){if(!e)return null;if(/^[0-9a-fA-F]{64}$/.test(e))return e.toLowerCase();if(e.startsWith("npub1"))try{const t="qpzry9x8gf2tvdw0s3jn54khce6mua7l",n=e.slice(5);let r=[];for(const e of n){const n=t.indexOf(e.toLowerCase());if(-1===n)throw new Error("Invalid character in npub");r.push(...[...Array(5)].map((e,t)=>n>>4-t&1))}r=r.slice(0,-30);const i=[];for(let e=0;e+8<=r.length;e+=8){let t=0;for(let n=0;n<8;n++)t=t<<1|r[e+n];i.push(t)}return i.map(e=>e.toString(16).padStart(2,"0")).join("")}catch(e){return console.error("Failed to decode npub:",e),null}return null}(t);if(r&&64===r.length)try{const e=JSON.parse(K||"{}");if(e.policy_admins||(e.policy_admins=[]),e.policy_admins.includes(r))return void ke("Admin already in list","warning");e.policy_admins.push(r),n(26,K=JSON.stringify(e,null,2)),ke("Admin added - click 'Save & Publish' to apply","info")}catch(e){ke(`Error adding admin: ${e.message}`,"error")}else ke("Invalid pubkey format. Use hex (64 chars) or npub","error")},function(e){const t=e.detail;try{const e=JSON.parse(K||"{}");e.policy_admins&&(e.policy_admins=e.policy_admins.filter(e=>e!==t),n(26,K=JSON.stringify(e,null,2)),ke("Admin removed - click 'Save & Publish' to apply","info"))}catch(e){ke(`Error removing admin: ${e.message}`,"error")}},async function(){if(u&&("owner"===p||Rk))try{n(27,z=!0),n(31,Z=[]);let e=[];try{e=JSON.parse(K||"{}").policy_admins||[]}catch(e){return void ke("Cannot parse policy JSON to get admins","error")}if(0===e.length)return void ke("No policy admins configured","warning");const t={kinds:[3],authors:e,limit:e.length},r=await _h(t),i=new Set;for(const e of r)if(e.tags)for(const t of e.tags)"p"===t[0]&&t[1]&&64===t[1].length&&i.add(t[1]);n(31,Z=Array.from(i)),ke(`Loaded ${Z.length} follows from ${r.length} admin(s)`,"success")}catch(e){ke(`Error loading follows: ${e.message}`,"error")}finally{n(27,z=!1)}},function(e){n(25,J=e.target.files[0])},async function(){if(u&&"owner"===p&&J)try{n(22,O=!0);const e=await J.text(),t=await fetch("/api/sprocket/update",{method:"POST",headers:{Authorization:`Nostr ${await Me("POST","/api/sprocket/update")}`,"Content-Type":"text/plain"},body:e});if(t.ok)n(19,L=e),be("Script uploaded and updated successfully","success"),await ye(),await we();else{be(`Failed to upload script: ${await t.text()}`,"error")}}catch(e){be(`Error uploading script: ${e.message}`,"error")}finally{n(22,O=!1),n(25,J=null);const e=document.getElementById("sprocket-upload-file");e&&(e.value="")}},Ee,function(){u||n(12,c=!0)},async function(e){const{method:t,pubkey:r,privateKey:i,signer:o}=e.detail;n(1,u=!0),n(2,d=r),f=t,n(13,g=o),n(12,c=!1);try{if(await Mh(),"extension"===t&&o)Eh.setSigner(o);else if("nsec"===t&&i){const e=new lf(i);Eh.setSigner(e)}n(3,h=await Ph(r)),console.log("Profile loaded:",h)}catch(e){console.error("Failed to load profile:",e)}await $e(),await Re()},function(){n(1,u=!1),n(2,d=""),f="",n(3,h=null),n(4,p=""),n(13,g=null),n(14,m=!1),T=[],n(96,k=[]),$=[],R=0,ge(),"undefined"!=typeof localStorage&&(localStorage.removeItem("nostr_auth_method"),localStorage.removeItem("nostr_pubkey"),localStorage.removeItem("nostr_privkey"))},function(){n(12,c=!1)},function(){n(14,m=!0)},xe,function(){n(15,w=!w)},function(e){const{searchText:t,selectedKinds:n,pubkeys:r,eventIds:i,tags:o,sinceTimestamp:s,untilTimestamp:a,limit:l}=e.detail,c=function({searchText:e=null,kinds:t=[],authors:n=[],ids:r=[],tags:i=[],since:o=null,until:s=null,limit:a=null}){const l={};return e&&e.trim()&&(l.search=e.trim()),t&&t.length>0&&(l.kinds=t),n&&n.length>0&&(l.authors=n),r&&r.length>0&&(l.ids=r),i&&i.length>0&&i.forEach(e=>{if(e.name&&e.value){const t=`#${e.name}`;l[t]||(l[t]=[]),l[t].push(e.value)}}),o&&(l.since=o),s&&(l.until=s),a&&a>0&&(l.limit=a),l}({searchText:t,kinds:n,authors:r,ids:i,tags:o,since:s,until:a,limit:l||100});v=c,Te(!0,null)},function(){v={},Te(!0,null)},Be,Se,Qe,Fe,De,async function(){await Pe([])},async function(){await Pe([d])},function(e){n(16,I=e.detail.target.files[0])},async function(){if("none"!==X&&(!u||"admin"!==p&&"owner"!==p))return n(17,C="Admin or owner permission required"),void setTimeout(()=>{n(17,C="")},5e3);if(!I)return n(17,C="Please select a file"),void setTimeout(()=>{n(17,C="")},5e3);try{n(17,C="Uploading...");const e={};"none"!==X&&u&&(e.Authorization=await Le("/api/import","POST"));const t=new FormData;t.append("file",I);const r=await fetch("/api/import",{method:"POST",headers:e,body:t});if(!r.ok)throw new Error(`Import failed: ${r.status} ${r.statusText}`);await r.json();n(17,C="Upload complete"),n(16,I=null),document.getElementById("import-file").value="",setTimeout(()=>{n(17,C="")},5e3)}catch(e){console.error("Import failed:",e),n(17,C="Import failed: "+e.message),setTimeout(()=>{n(17,C="")},5e3)}},Te,function(e){const{scrollTop:t,scrollHeight:n,clientHeight:r}=e.target;n-t-r<100&&Ue()},function(){try{if(!te.trim())return void alert("Please enter some JSON to reformat");const e=JSON.parse(te);n(33,te=JSON.stringify(e,null,2))}catch(e){alert("Invalid JSON: "+e.message)}},async function(){try{if(!te.trim())return void alert("Please enter an event to sign");if(!u||!d)return void alert("Please log in to sign events");if(!g)return void alert("No signer available. Please log in with a valid authentication method.");const e=JSON.parse(te);e.pubkey=d,e.created_at=Math.floor(Date.now()/1e3),delete e.id,delete e.sig;const t=await g.signEvent(e);n(33,te=JSON.stringify(t,null,2)),alert("Event signed successfully!")}catch(e){console.error("Error signing event:",e),alert("Error signing event: "+e.message)}},async function(){n(34,ne="");try{if(!te.trim())return void n(34,ne="Please enter an event to publish");if(!u)return void n(34,ne="Please log in to publish events");if(!g)return void n(34,ne="No signer available. Please log in with a valid authentication method.");let e;try{e=JSON.parse(te)}catch(e){return void n(34,ne=`Invalid JSON: ${e.message}`)}if(!e.id||!e.sig)return void n(34,ne='Event must be signed before publishing. Please click "Sign" first.');if("read"===p)return void n(34,ne=`Permission denied: Your current role is "${p}" which does not allow publishing events. Contact a relay administrator to upgrade your permissions.`);const t=`${window.location.protocol.startsWith("https")?"wss:":"ws:"}//${window.location.host}/`,r=await $b(t,e,g,d);if(r.success)n(34,ne=""),alert("Event published successfully to ORLY relay!");else{const t=r.reason||"Unknown error";n(34,ne=_e(t,e.kind))}}catch(e){console.error("Error publishing event:",e);const t=e.message||"Unknown error";n(34,ne=_e(t,null))}},function(){n(34,ne="")},Oe,function(){const e=["owner","admin","write","read"],t=e.indexOf(p);return-1===t?["read"]:e.slice(t)},k,F,G,Ne,o,function(t){P.call(this,e,t)},function(t){P.call(this,e,t)},e=>e.id===y,e=>Ee(e.detail),e=>Se(e.detail),e=>ce(e.detail),e=>de(e.detail),e=>ue(e.detail.event,e.detail.e),e=>Te(e.detail.refresh,e.detail.authors),function(e){te=e,n(33,te)},function(e){L=e,n(19,L)},e=>ve(e.detail),e=>Ae(e.detail),function(e){K=e,n(26,K)},function(){re=x(this),n(35,re)},function(){ie=b(this.value),n(36,ie)},e=>pe(e),e=>he(e),(e,t)=>ue(e,t),e=>Qe(e.id,!0),e=>Be(e.id),e=>de(e.id),e=>ce(e.id),(e,t)=>"Enter"===t.key&&ce(e.id),(e,t)=>ue(e,t),(e,t)=>Fe(t,e.id),e=>Oe(e===p?"":e),e=>"Escape"===e.key&&xe(),function(e){c=e,n(12,c)}]}return new class extends oe{constructor(e){super(),ie(this,e,Pk,Dk,o,{},null,[-1,-1,-1,-1,-1,-1])}}({target:document.body,props:{name:"world"}})}();
//# sourceMappingURL=bundle.js.map