@e280/authlocal
Version:
User-sovereign login system for everybody
7 lines • 97.8 kB
JavaScript
var Qr=r=>({v1:{hello:async()=>{},login:r}});function to(r,t){return{error:e=>r.error({...t,...e}),rpcRequest:e=>r.rpcRequest({...t,...e}),rpcError:e=>r.rpcError({...t,...e})}}var _e=()=>r=>({plain:r.none,errMessage:r.mix(r.brightRed,r.bold),errName:r.red,errStack:r.mix(r.red,r.dim),timestamp:r.blue,timestampErr:r.red});function Zo(){return _e()}var Q=Object.freeze({black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",brightBlack:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightBlue:"\x1B[94m",brightMagenta:"\x1B[95m",brightCyan:"\x1B[96m",brightWhite:"\x1B[97m",bgBlack:"\x1B[40m",bgRed:"\x1B[41m",bgGreen:"\x1B[42m",bgYellow:"\x1B[43m",bgBlue:"\x1B[44m",bgMagenta:"\x1B[45m",bgCyan:"\x1B[46m",bgWhite:"\x1B[47m",bgBrightBlack:"\x1B[100m",bgBrightRed:"\x1B[101m",bgBrightGreen:"\x1B[102m",bgBrightYellow:"\x1B[103m",bgBrightBlue:"\x1B[104m",bgBrightMagenta:"\x1B[105m",bgBrightCyan:"\x1B[106m",bgBrightWhite:"\x1B[107m",bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",inverse:"\x1B[7m",hidden:"\x1B[8m",strikethrough:"\x1B[9m",reset:"\x1B[0m"});var Ae=()=>({none:r=>r,uncolor:wi,mix:vi,hex:_i,rgb:Xo,bgRgb:Ai});function wi(r){return r.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"")}function vi(...r){return t=>{for(let e of r)t=e(t);return t}}function _i(r){r=r.replace(/^#/,"");let t,e,o,s;if(r.length===3)t=parseInt(r.split("").map(n=>n+n).join(""),16);else if(r.length===6)t=parseInt(r,16);else throw new Error("Invalid hex color");return e=t>>16&255,o=t>>8&255,s=t&255,Xo(e,o,s)}function Xo(r,t,e){let o=`\x1B[38;2;${r};${t};${e}m`;return s=>`${o}${s}${Q.reset}`}function Ai(r,t,e){let o=`\x1B[48;2;${r};${t};${e}m`;return s=>`${o}${s}${Q.reset}`}var Yt={...Object.fromEntries(Object.entries(Q).map(([r])=>[r,t=>t])),...Ae()};var Kt={...Object.fromEntries(Object.entries(Q).map(([r,t])=>[r,e=>`${t}${e}${Q.reset}`])),...Ae()};function eo(){return typeof Deno<"u"&&typeof Deno.version<"u"}function ro(){return typeof process<"u"&&process.versions&&process.versions.node}function Jo(){return ro()?process.env.FORCE_COLOR||process.stdout.isTTY&&process.env.TERM!=="dumb":eo()?Deno.env.get("FORCE_COLOR")||Deno.isatty(Deno.stdout.rid)&&Deno.env.get("TERM")!=="dumb":!1}var oo=()=>Jo()?Kt:Yt;var $e=()=>({colors:r,theme:t})=>{let e=t(r);function o(i){let a=i.stack?`
`+i.stack+`
`:"";return[e.errName(i.name+":"),e.errMessage(i.message)].join(" ")+e.errStack(a)}function s(i){return i&&i instanceof Error?o(i):i}function n(i){return i&&i instanceof Error?o(i):e.errMessage(i)}return{stdout:i=>i.map(s),stderr:i=>i.map(n)}};function Zt(...r){return t=>({stdout:e=>{for(let o of r)e=o(t).stdout(e);return e},stderr:e=>{for(let o of r)e=o(t).stderr(e);return e}})}function $i(){return{icon:"\u{1F6A8}",now:()=>Date.now()}}var Se=r=>({colors:t,theme:e})=>{let o={...$i(),...r},s=e(t),n=new Date(o.now()),i=n.getUTCFullYear().toString().padStart(4,"0"),a=(n.getUTCMonth()+1).toString().padStart(2,"0"),c=n.getUTCDate().toString().padStart(2,"0"),u=`${i}-${a}-${c}`,l=n.getUTCHours().toString().padStart(2,"0"),p=n.getUTCMinutes().toString().padStart(2,"0"),d=n.getUTCSeconds().toString().padStart(2,"0"),h=n.getUTCMilliseconds().toString().padStart(3,"0"),m=`${l}:${p}:${d}.${h}`,y=`${u}::${m}`;return{stdout:k=>[s.timestamp(y),...k],stderr:k=>[s.timestampErr(y),...[o.icon].filter(Boolean),...k]}};function Qo(){return Zt($e(),Se())}var ke=()=>({stdout:async r=>{await Deno.stdout.write(new TextEncoder().encode(r+`
`))},stderr:async r=>{await Deno.stderr.write(new TextEncoder().encode(r+`
`))}});var Ee=()=>({stdout:async r=>void process.stdout.write(r+`
`),stderr:async r=>void process.stderr.write(r+`
`)});var Ce=()=>({stdout:async r=>console.log(r),stderr:async r=>console.error(r)});var ts=()=>eo()?ke():ro()?Ee():Ce();var es=()=>({stdout:async()=>{},stderr:async()=>{}});function rs(){return()=>({stdout:r=>r,stderr:r=>r})}var St=class r{static writers={auto:ts,void:es,deno:ke,node:Ee,console:Ce};static colors={auto:oo,colorful:()=>Kt,colorless:()=>Yt};static themes={auto:Zo,basic:_e};static shapers={auto:Qo,none:rs,errors:$e,timestamp:Se};writer=r.writers.auto();colors=r.colors.auto();theme=r.themes.auto();shaper=r.shapers.auto();async log(...t){await this.writer.stdout(this.shaper(this).stdout(t).join(" "))}async error(...t){await this.writer.stderr(this.shaper(this).stderr(t).join(" "))}setWriter(t){return this.writer=t,this}setColors(t){return this.colors=t,this}setTheme(t){return this.theme=t,this}setShaper(...t){return this.shaper=Zt(...t),this}};var Be=class extends St{static dummy(){return new this().setWriter(St.writers.void())}rpcRequest=async({request:t,...e})=>{let o=this.colors.none;this.log(...this.#t(e),o(`${t.method}()`))};rpcError=async({request:t,error:e,...o})=>{this.error(...this.#t(o),`${t.method}()`,e)};#t({meta:t,label:e,remote:o}){let s=this.colors.mix(this.colors.blue,this.colors.dim),n=this.colors.mix(this.colors.cyan,this.colors.dim);return[t?this.#e(t):void 0,e||void 0,o===void 0?void 0:o?s("<-"):n("->")].filter(Boolean)}#e(t){let{headers:e}=t.request;return[this.colors.yellow(`[${t.ip}]`),this.colors.green(e.origin?e.origin:"(no-origin)")].join(" ")}};var lt=class extends Be{rpcRequest=async()=>{}};var O=Object.freeze({eq(r,t){if(r.length!==t.length)return!1;for(let e=0;e<=r.length;e++)if(r.at(e)!==t.at(e))return!1;return!0},random(r){return crypto.getRandomValues(new Uint8Array(r))}});var b=Object.freeze({fromBytes(r){return[...r].map(t=>t.toString(16).padStart(2,"0")).join("")},toBytes(r){if(r.length%2!==0)throw new Error("must have even number of hex characters");let t=new Uint8Array(r.length/2);for(let e=0;e<r.length;e+=2)t[e/2]=parseInt(r.slice(e,e+2),16);return t},random(r=32){return this.fromBytes(O.random(r))},string(r){return b.fromBytes(r)},bytes(r){return b.toBytes(r)}});var so=["doz","mar","bin","wan","sam","lit","sig","hid","fid","lis","sog","dir","wac","sab","wis","sib","rig","sol","dop","mod","fog","lid","hop","dar","dor","lor","hod","fol","rin","tog","sil","mir","hol","pas","lac","rov","liv","dal","sat","lib","tab","han","tic","pid","tor","bol","fos","dot","los","dil","for","pil","ram","tir","win","tad","bic","dif","roc","wid","bis","das","mid","lop","ril","nar","dap","mol","san","loc","nov","sit","nid","tip","sic","rop","wit","nat","pan","min","rit","pod","mot","tam","tol","sav","pos","nap","nop","som","fin","fon","ban","mor","wor","sip","ron","nor","bot","wic","soc","wat","dol","mag","pic","dav","bid","bal","tim","tas","mal","lig","siv","tag","pad","sal","div","dac","tan","sid","fab","tar","mon","ran","nis","wol","mis","pal","las","dis","map","rab","tob","rol","lat","lon","nod","nav","fig","nom","nib","pag","sop","ral","bil","had","doc","rid","moc","pac","rav","rip","fal","tod","til","tin","hap","mic","fan","pat","tac","lab","mog","sim","son","pin","lom","ric","tap","fir","has","bos","bat","poc","hac","tid","hav","sap","lin","dib","hos","dab","bit","bar","rac","par","lod","dos","bor","toc","hil","mac","tom","dig","fil","fas","mit","hob","har","mig","hin","rad","mas","hal","rag","lag","fad","top","mop","hab","nil","nos","mil","fop","fam","dat","nol","din","hat","nac","ris","fot","rib","hoc","nim","lar","fit","wal","rap","sar","nal","mos","lan","don","dan","lad","dov","riv","bac","pol","lap","tal","pit","nam","bon","ros","ton","fod","pon","sov","noc","sor","lav","mat","mip","fip"];var no=["zod","nec","bud","wes","sev","per","sut","let","ful","pen","syt","dur","wep","ser","wyl","sun","ryp","syx","dyr","nup","heb","peg","lup","dep","dys","put","lug","hec","ryt","tyv","syd","nex","lun","mep","lut","sep","pes","del","sul","ped","tem","led","tul","met","wen","byn","hex","feb","pyl","dul","het","mev","rut","tyl","wyd","tep","bes","dex","sef","wyc","bur","der","nep","pur","rys","reb","den","nut","sub","pet","rul","syn","reg","tyd","sup","sem","wyn","rec","meg","net","sec","mul","nym","tev","web","sum","mut","nyx","rex","teb","fus","hep","ben","mus","wyx","sym","sel","ruc","dec","wex","syr","wet","dyl","myn","mes","det","bet","bel","tux","tug","myr","pel","syp","ter","meb","set","dut","deg","tex","sur","fel","tud","nux","rux","ren","wyt","nub","med","lyt","dus","neb","rum","tyn","seg","lyx","pun","res","red","fun","rev","ref","mec","ted","rus","bex","leb","dux","ryn","num","pyx","ryg","ryx","fep","tyr","tus","tyc","leg","nem","fer","mer","ten","lus","nus","syl","tec","mex","pub","rym","tuc","fyl","lep","deb","ber","mug","hut","tun","byl","sud","pem","dev","lur","def","bus","bep","run","mel","pex","dyt","byt","typ","lev","myl","wed","duc","fur","fex","nul","luc","len","ner","lex","rup","ned","lec","ryd","lyd","fen","wel","nyd","hus","rel","rud","nes","hes","fet","des","ret","dun","ler","nyr","seb","hul","ryl","lud","rem","lys","fyn","wer","ryc","sug","nys","nyl","lyn","dyn","dem","lux","fed","sed","bec","mun","lyr","tes","mud","nyt","byr","sen","weg","fyr","mur","tel","rep","teg","pec","nel","nev","fes"];var V={defaults:{groupSize:4,wordSeparator:".",groupSeparator:" "},random(r,t){let e=O.random(r);return this.fromBytes(e,t)},fromBytes(r,t={}){let{groupSize:e=V.defaults.groupSize,wordSeparator:o=V.defaults.wordSeparator,groupSeparator:s=V.defaults.groupSeparator}=t,n=[],i=[];r.forEach((c,u)=>{let l=u%2===0?so:no;i.push(l[c]),i.length===2&&(n.push(i.join("")),i=[])}),i.length&&n.push(i.join(""));let a=[];for(let c=0;c<n.length;c+=e)a.push(n.slice(c,c+e).join(o));return a.join(s)},toBytes(r){let t=r.toLowerCase().replace(/[^a-z]/g,"");if(t.length/3%1!==0)throw new Error(`invalid triplet count, ${t.length} does not divide into triplets`);let o=[];for(let s=0;s<t.length;s+=3)o.push(t.slice(s,s+3));return new Uint8Array(o.map((s,n)=>{let a=(n%2===0?so:no).findIndex(c=>c===s);if(a===-1)throw new Error(`unknown triplet ${s}`);return a}))},toHex(r){return b.fromBytes(V.toBytes(r))},fromHex(r,t){return V.fromBytes(b.toBytes(r),t)}};var io=58,Te="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",Xt=Object.freeze({fromBytes(r){let t=BigInt("0x"+b.fromBytes(r)),e="";for(;t>0;){let o=t%BigInt(io);t=t/BigInt(io),e=Te[Number(o)]+e}for(let o of r)if(o===0)e=Te[0]+e;else break;return e},toBytes(r){let t=BigInt(0);for(let i of r){let a=Te.indexOf(i);if(a===-1)throw new Error(`Invalid character '${i}' in base58 string`);t=t*BigInt(io)+BigInt(a)}let e=t.toString(16);e.length%2!==0&&(e="0"+e);let o=b.toBytes(e),s=0;for(let i of r)if(i===Te[0])s++;else break;let n=new Uint8Array(s+o.length);return n.set(o,s),n},random(r=32){return this.fromBytes(O.random(r))},string(r){return Xt.fromBytes(r)},bytes(r){return Xt.toBytes(r)}});var z={defaults:{delimiter:".",sigilBytes:4,previewBytes:8},toBytes(r){r=r.trim();let t=r.split(/[^a-zA-Z0-9]+/m).filter(Boolean).map(s=>s.trim());if(t.length<2)return V.toBytes(t.join(""));let e=t.pop(),o=t.join("");return new Uint8Array([...V.toBytes(o),...Xt.toBytes(e)])},parse(r,t){let e=z.toBytes(r);return z.build.fromBytes(e,t)},build:{fromBytes(r,t={}){let{delimiter:e,previewBytes:o,sigilBytes:s}={...z.defaults,...t},n=l=>r.length>0?V.fromBytes(r.slice(0,l),{wordSeparator:e,groupSeparator:e}):"",i=n(s),a=n(o),c=r.length>o?Xt.fromBytes(r.slice(o)):"",u=[a,c].filter(l=>l.length>0).join(e);return{bytes:r,thumbprint:u,preview:a,bulk:c,sigil:i}},fromHex(r,t){let e=b.toBytes(r);return z.build.fromBytes(e,t)}},toHex(r){let t=z.toBytes(r);return b.fromBytes(t)},fromBytes(r,t){return z.build.fromBytes(r,t).thumbprint},fromHex(r,t){return z.fromBytes(b.toBytes(r),t)},sigil:{fromHex(r,t){return z.build.fromHex(r,t).sigil},fromBytes(r,t){return z.build.fromBytes(r,t).sigil}}};var os=class{lexicon;static lexicons=Object.freeze({base2:{characters:"01"},hex:{characters:"0123456789abcdef"},base36:{characters:"0123456789abcdefghijklmnopqrstuvwxyz"},base58:{characters:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"},base62:{characters:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"},base64url:{negativePrefix:"~",characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},base64:{characters:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",padding:{character:"=",size:4}}});lookup;negativePrefix;constructor(t){this.lexicon=t,this.lookup=Object.fromEntries([...t.characters].map((e,o)=>[e,o])),this.negativePrefix=t.negativePrefix??"-"}toBytes(t){let e=Math.log2(this.lexicon.characters.length);if(Number.isInteger(e)){let a=0,c=0,u=[];for(let l of t){if(l===this.lexicon.padding?.character)continue;let p=this.lookup[l];if(p===void 0)throw new Error(`Invalid character: ${l}`);for(a=a<<e|p,c+=e;c>=8;)c-=8,u.push(a>>c&255)}return new Uint8Array(u)}let o=0n,s=BigInt(this.lexicon.characters.length),n=!1;t.startsWith(this.negativePrefix)&&(t=t.slice(this.negativePrefix.length),n=!0);for(let a of t){let c=this.lookup[a];if(c===void 0)throw new Error(`Invalid character: ${a}`);o=o*s+BigInt(c)}let i=[];for(;o>0n;)i.unshift(Number(o%256n)),o=o/256n;return new Uint8Array(i)}fromBytes(t){let e=Math.log2(this.lexicon.characters.length);if(Number.isInteger(e)){let i=0,a=0,c="";for(let u of t)for(i=i<<8|u,a+=8;a>=e;){a-=e;let l=i>>a&(1<<e)-1;c+=this.lexicon.characters[l]}if(a>0){let u=i<<e-a&(1<<e)-1;c+=this.lexicon.characters[u]}if(this.lexicon.padding)for(;c.length%this.lexicon.padding.size!==0;)c+=this.lexicon.padding.character;return c}let o=0n;for(let i of t)o=(o<<8n)+BigInt(i);if(o===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),n="";for(;o>0n;)n=this.lexicon.characters[Number(o%s)]+n,o=o/s;return n}toInteger(t){if(!t)return 0;let e=0n,o=!1,s=BigInt(this.lexicon.characters.length);t.startsWith(this.negativePrefix)&&(t=t.slice(this.negativePrefix.length),o=!0);for(let n of t){let i=this.lookup[n];if(i===void 0)throw new Error(`Invalid character: ${n}`);e=e*s+BigInt(i)}return Number(o?-e:e)}fromInteger(t){t=Math.floor(t);let e=t<0,o=BigInt(e?-t:t);if(o===0n)return this.lexicon.characters[0];let s=BigInt(this.lexicon.characters.length),n="";for(;o>0n;)n=this.lexicon.characters[Number(o%s)]+n,o=o/s;return e?`${this.negativePrefix}${n}`:n}random(t=32){return this.fromBytes(O.random(t))}};var Jt=Object.freeze({fromBytes(r){return typeof btoa=="function"?btoa(String.fromCharCode(...r)):Buffer.from(r).toString("base64")},toBytes(r){return typeof atob=="function"?Uint8Array.from(atob(r),t=>t.charCodeAt(0)):Uint8Array.from(Buffer.from(r,"base64"))},random(r=32){return this.fromBytes(O.random(r))},string(r){return Jt.fromBytes(r)},bytes(r){return Jt.toBytes(r)}});var H={fromBytes(r){return Jt.fromBytes(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")},toBytes(r){let t=r.replace(/-/g,"+").replace(/_/g,"/");return t.length%4!==0&&(t=t.padEnd(t.length+(4-t.length%4)%4,"=")),Jt.toBytes(t)},random(r=32){return this.fromBytes(O.random(r))},string(r){return H.fromBytes(r)},bytes(r){return H.toBytes(r)}};var tt=Object.freeze({fromBytes(r){return new TextDecoder().decode(r)},toBytes(r){return new TextEncoder().encode(r)},string(r){return tt.fromBytes(r)},bytes(r){return tt.toBytes(r)}});function Qt(r,t){let e,o,s=[];function n(){e=[],o&&clearTimeout(o),o=void 0,s=[]}return n(),(...i)=>{e=i,o&&clearTimeout(o);let a=new Promise((c,u)=>{s.push({resolve:c,reject:u})});return o=setTimeout(()=>{Promise.resolve().then(()=>t(...e)).then(c=>{for(let{resolve:u}of s)u(c);n()}).catch(c=>{for(let{reject:u}of s)u(c);n()})},r),a}}var Pe=Object.freeze({set:r=>r!=null,unset:r=>r==null,boolean:r=>typeof r=="boolean",number:r=>typeof r=="number",string:r=>typeof r=="string",bigint:r=>typeof r=="bigint",object:r=>typeof r=="object"&&r!==null,array:r=>Array.isArray(r),fn:r=>typeof r=="function",symbol:r=>typeof r=="symbol"});var te=class extends Error{milliseconds;name=this.constructor.name;constructor(t){super(`deadline exceeded (${(t/1e3).toFixed(1)} seconds)`),this.milliseconds=t}};function Oe(r,t){return r<=0||r===1/0?t():new Promise((e,o)=>{let s=setTimeout(()=>o(new te(r)),r);t().then(e).catch(o).finally(()=>clearTimeout(s))})}function ft(){let r,t,e=new Promise((s,n)=>{r=s,t=n});function o(s){return s.then(r).catch(t),e}return{promise:e,resolve:r,reject:t,entangle:o}}function ss(r,t){let e=r;for(let o of t)if(e=e[o],Pe.unset(e))break;return e}function ao(r){return{map:t=>ns(r,t),filter:t=>is(r,t)}}ao.pipe=Object.freeze({map:r=>t=>ns(t,r),filter:r=>t=>is(t,r)});var ns=(r,t)=>Object.fromEntries(Object.entries(r).map(([e,o])=>[e,t(o,e)])),is=(r,t)=>Object.fromEntries(Object.entries(r).filter(([e,o])=>t(o,e)));var kt=class r{static with(t){return new this(t)}#t;constructor(t){this.#t=t}to(t){return new r(t(this.#t))}done(){return this.#t}};function as(){let r=new Set;function t(n){return r.add(n),()=>{r.delete(n)}}async function e(...n){await Promise.all([...r].map(i=>i(...n)))}async function o(){let{promise:n,resolve:i}=ft(),a=t((...c)=>{i(c),a()});return n}function s(){r.clear()}return t.pub=e,t.sub=t,t.on=t,t.next=o,t.clear=s,e.pub=e,e.sub=t,e.on=t,e.next=o,e.clear=s,[e,t]}function D(r){let t=as()[1];return r&&t.sub(r),t}function Me(r){let t=as()[0];return r&&t.sub(r),t}var W=class{#t=[];add(...t){return this.#t.push(...t),this}disposable(t){return this.bag(t,()=>t.dispose())}bag(t,e){return this.add(()=>e(t)),t}dispose(){for(let t of this.#t.reverse())t();this.#t=[]}};var et;(function(r){r.version="2.0";function t(e){return"id"in e?e.id:null}r.getId=t,r.errorCodes={serverError:-32e3,unexposedError:-32001}})(et||(et={}));var je=class extends Error{name=this.constructor.name},dt=class extends Error{name=this.constructor.name};async function cs({tap:r,request:t,action:e}){let o=et.getId(t);try{let s=await e();return o===null?null:{id:o,result:s,jsonrpc:et.version}}catch(s){return r.rpcError({request:t,error:s}),o===null?null:{id:o,jsonrpc:et.version,error:s instanceof je?{code:et.errorCodes.serverError,message:s.message}:{code:et.errorCodes.unexposedError,message:"unexposed error"}}}}function co(r){let t=r.tap??new lt;return async e=>{let o=e.method.split("."),s=ss(r.fns,o),n=async()=>await s(...e.params);return t.rpcRequest({request:e}),await cs({tap:t,request:e,action:n})}}var Si=Symbol("tune"),ki=Symbol("query"),Ei=Symbol("notify"),Ci=Symbol("settings");function us(r){function t(e){let o={notify:void 0};return new Proxy(()=>{},{apply:(s,n,i)=>r(e,i,o),get:(s,n)=>{if(n!=="then")return n===Si?i=>(...a)=>r(e,a,{...o,...i}):n===Ei?(...i)=>r(e,i,{...o,notify:!0}):n===ki?(...i)=>r(e,i,{...o,notify:!1}):n===Ci?o:(s[n]||(s[n]=t([...e,n])),s[n])},set:(s,n,i)=>(s[n]=i,!0)})}return t([])}function Re(r){let{endpoint:t,tap:e=new lt}=r,o=1;return us(async(s,n,i)=>{let a=i.notify??r.notify??!1,c=i.transfer,u={jsonrpc:"2.0",method:s.join("."),params:n},l=a?u:{...u,id:o++};e.rpcRequest({request:l});let p=await t(l,{transfer:c});if(a&&!p)return null;if(!p)throw new dt("response was null, but shouldn't be, because the request was not a notification");if("error"in p)throw new dt(r.label?`${r.label}: ${p.error.message}`:p.error.message);return p.result})}var ht=class{recv=Me();sendRequest=Me();sendResponse=Me();static makeEntangledPair({origin:t="example.e280.org"}={}){let e=new this,o=new this,s=[e.sendRequest.sub(i=>o.recv(i,{origin:t})),e.sendResponse.sub(i=>o.recv(i,{origin:t})),o.sendRequest.sub(i=>e.recv(i,{origin:t})),o.sendResponse.sub(i=>e.recv(i,{origin:t}))];return[e,o,()=>s.forEach(i=>i())]}};function ze(r,t){return r.addEventListener("message",t),()=>r.removeEventListener("message",t)}function ps(r,t){return async(e,{transfer:o}={})=>{if("id"in e){let s=ft();return t(e,o,s.promise),r.wait(e.id,e.method).then(n=>(s.resolve(n),n))}else{let s=Promise.resolve(null);return t(e,o,s),s}}}function ls(r){let t=[],e=[];for(let o of Array.isArray(r)?r:[r])"method"in o?t.push(o):e.push(o);return{requests:t,responses:e}}async function fs(r,t){let e=(await Promise.all(t.map(async o=>r(o)))).filter(o=>o!==null);return e.length===0?null:e.length===1?e[0]:e}var De=class extends ht{#t=new W;targetOrigin;constructor(t){super();let{localWindow:e,targetWindow:o,allow:s}=t;this.targetOrigin=t.targetOrigin,this.#t.add(this.sendRequest.sub((n,i)=>o.postMessage(n,this.targetOrigin,i)),this.sendResponse.sub((n,i)=>o.postMessage(n,this.targetOrigin,i)),ze(e,n=>{s(n)&&this.recv(n.data,n)}))}dispose(){this.#t.dispose()}};var Ue=class{remote;transfer;constructor(t){this.remote=t}};var uo=Object.freeze({timeout:6e4,maxRequestBytes:1e7});var Le=class{timeout;pending=new Map;constructor(t){this.timeout=t}async wait(t,e){let o=ft();return this.pending.set(t,{method:e,deferred:o}),await Oe(this.timeout,()=>o.promise).catch(s=>{throw s instanceof te&&(s.message=`request #${t} ${e}(), ${s.message}`),s})}deliverResponse(t){let e=this.pending.get(t.id);e&&("error"in t?e.deferred.reject(new dt(t.error.message)):e.deferred.resolve(t))}};var ee=class{options;remote;remoteEndpoint;#t;#e=new W;constructor(t){this.options=t;let{conduit:e,tap:o}=t;this.#t=new Le(t.timeout??uo.timeout),this.remoteEndpoint=ps(this.#t,e.sendRequest.pub.bind(e.sendRequest)),this.remote=Re({endpoint:this.remoteEndpoint,tap:o&&to(o,{remote:!0})}),this.#e.add(e.recv.sub(s=>this.recv(s)))}async recv(t){let e=new Ue(this.remote),{conduit:o,rpc:s,tap:n}=this.options,{requests:i,responses:a}=ls(t);for(let p of a)this.#t.deliverResponse(p);if(!s)return;let c=await s(e),u=co({fns:c,tap:n&&to(n,{remote:!1})}),l=await fs(u,i);l&&await o.sendResponse(l,e.transfer)}dispose(){this.#e.dispose()}};function po(r,t,e,o){let s=new De({localWindow:r,targetWindow:t,targetOrigin:e,allow:n=>n.origin===e});return new ee({conduit:s,timeout:1/0,rpc:async()=>Qr(o)}),{dispose:()=>s.dispose()}}var ds={typ:"JWT",alg:"EdDSA"};var Oi={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:$,n:Ie,Gx:hs,Gy:ms,a:lo,d:fo}=Oi,Mi=8n,rt=32,re=64,M=(r="")=>{throw new Error(r)},ji=r=>typeof r=="bigint",vs=r=>typeof r=="string",Ri=r=>r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array",gt=(r,t)=>!Ri(r)||typeof t=="number"&&t>0&&r.length!==t?M("Uint8Array expected"):r,Fe=r=>new Uint8Array(r),go=r=>Uint8Array.from(r),_s=(r,t)=>r.toString(16).padStart(t,"0"),xo=r=>Array.from(gt(r)).map(t=>_s(t,2)).join(""),G={_0:48,_9:57,A:65,F:70,a:97,f:102},gs=r=>{if(r>=G._0&&r<=G._9)return r-G._0;if(r>=G.A&&r<=G.F)return r-(G.A-10);if(r>=G.a&&r<=G.f)return r-(G.a-10)},yo=r=>{let t="hex invalid";if(!vs(r))return M(t);let e=r.length,o=e/2;if(e%2)return M(t);let s=Fe(o);for(let n=0,i=0;n<o;n++,i+=2){let a=gs(r.charCodeAt(i)),c=gs(r.charCodeAt(i+1));if(a===void 0||c===void 0)return M(t);s[n]=a*16+c}return s},Ct=(r,t)=>gt(vs(r)?yo(r):go(gt(r)),t),As=()=>globalThis?.crypto,zi=()=>As()?.subtle??M("crypto.subtle must be defined"),oe=(...r)=>{let t=Fe(r.reduce((o,s)=>o+gt(s).length,0)),e=0;return r.forEach(o=>{t.set(o,e),e+=o.length}),t},Di=(r=rt)=>As().getRandomValues(Fe(r)),Ne=BigInt,mt=(r,t,e,o="bad number: out of range")=>ji(r)&&t<=r&&r<e?r:M(o),f=(r,t=$)=>{let e=r%t;return e>=0n?e:t+e},$s=r=>f(r,Ie),Ss=(r,t)=>{(r===0n||t<=0n)&&M("no inverse n="+r+" mod="+t);let e=f(r,t),o=t,s=0n,n=1n,i=1n,a=0n;for(;e!==0n;){let c=o/e,u=o%e,l=s-i*c,p=n-a*c;o=e,e=u,s=i,n=a,i=l,a=p}return o===1n?f(s,t):M("no inverse")};var xs=r=>r instanceof Y?r:M("Point expected"),ho=2n**256n,Y=class r{static BASE;static ZERO;ex;ey;ez;et;constructor(t,e,o,s){let n=ho;this.ex=mt(t,0n,n),this.ey=mt(e,0n,n),this.ez=mt(o,1n,n),this.et=mt(s,0n,n),Object.freeze(this)}static fromAffine(t){return new r(t.x,t.y,1n,f(t.x*t.y))}static fromBytes(t,e=!1){let o=fo,s=go(gt(t,rt)),n=t[31];s[31]=n&-129;let i=bo(s);mt(i,0n,e?ho:$);let c=f(i*i),u=f(c-1n),l=f(o*c+1n),{isValid:p,value:d}=Li(u,l);p||M("bad point: y not sqrt");let h=(d&1n)===1n,m=(n&128)!==0;return!e&&d===0n&&m&&M("bad point: x==0, isLastByteOdd"),m!==h&&(d=f(-d)),new r(d,i,1n,f(d*i))}assertValidity(){let t=lo,e=fo,o=this;if(o.is0())throw new Error("bad point: ZERO");let{ex:s,ey:n,ez:i,et:a}=o,c=f(s*s),u=f(n*n),l=f(i*i),p=f(l*l),d=f(c*t),h=f(l*f(d+u)),m=f(p+f(e*f(c*u)));if(h!==m)throw new Error("bad point: equation left != right (1)");let y=f(s*n),k=f(i*a);if(y!==k)throw new Error("bad point: equation left != right (2)");return this}equals(t){let{ex:e,ey:o,ez:s}=this,{ex:n,ey:i,ez:a}=xs(t),c=f(e*a),u=f(n*s),l=f(o*a),p=f(i*s);return c===u&&l===p}is0(){return this.equals(Et)}negate(){return new r(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{ex:t,ey:e,ez:o}=this,s=lo,n=f(t*t),i=f(e*e),a=f(2n*f(o*o)),c=f(s*n),u=t+e,l=f(f(u*u)-n-i),p=c+i,d=p-a,h=c-i,m=f(l*d),y=f(p*h),k=f(l*h),pt=f(d*p);return new r(m,y,pt,k)}add(t){let{ex:e,ey:o,ez:s,et:n}=this,{ex:i,ey:a,ez:c,et:u}=xs(t),l=lo,p=fo,d=f(e*i),h=f(o*a),m=f(n*p*u),y=f(s*c),k=f((e+o)*(i+a)-d-h),pt=f(y-m),Yo=f(y+m),Ko=f(h-l*d),mi=f(k*pt),gi=f(Yo*Ko),xi=f(k*Ko),yi=f(pt*Yo);return new r(mi,gi,yi,xi)}multiply(t,e=!0){if(!e&&(t===0n||this.is0()))return Et;if(mt(t,1n,Ie),t===1n)return this;if(this.equals(ot))return Gi(t).p;let o=Et,s=ot;for(let n=this;t>0n;n=n.double(),t>>=1n)t&1n?o=o.add(n):e&&(s=s.add(n));return o}toAffine(){let{ex:t,ey:e,ez:o}=this;if(this.equals(Et))return{x:0n,y:1n};let s=Ss(o,$);return f(o*s)!==1n&&M("invalid inverse"),{x:f(t*s),y:f(e*s)}}toBytes(){let{x:t,y:e}=this.assertValidity().toAffine(),o=ks(e);return o[31]|=t&1n?128:0,o}toHex(){return xo(this.toBytes())}clearCofactor(){return this.multiply(Ne(Mi),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Ie/2n,!1).double();return Ie%2n&&(t=t.add(this)),t.is0()}static fromHex(t,e){return r.fromBytes(Ct(t),e)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}toRawBytes(){return this.toBytes()}},ot=new Y(hs,ms,1n,f(hs*ms)),Et=new Y(0n,1n,1n,0n);Y.BASE=ot;Y.ZERO=Et;var ks=r=>yo(_s(mt(r,0n,ho),re)).reverse(),bo=r=>Ne("0x"+xo(go(gt(r)).reverse())),q=(r,t)=>{let e=r;for(;t-- >0n;)e*=e,e%=$;return e},Ui=r=>{let e=r*r%$*r%$,o=q(e,2n)*e%$,s=q(o,1n)*r%$,n=q(s,5n)*s%$,i=q(n,10n)*n%$,a=q(i,20n)*i%$,c=q(a,40n)*a%$,u=q(c,80n)*c%$,l=q(u,80n)*c%$,p=q(l,10n)*n%$;return{pow_p_5_8:q(p,2n)*r%$,b2:e}},ys=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Li=(r,t)=>{let e=f(t*t*t),o=f(e*e*t),s=Ui(r*o).pow_p_5_8,n=f(r*e*s),i=f(t*n*n),a=n,c=f(n*ys),u=i===r,l=i===f(-r),p=i===f(-r*ys);return u&&(n=a),(l||p)&&(n=c),(f(n)&1n)===1n&&(n=f(-n)),{isValid:u||l,value:n}},He=r=>$s(bo(r)),wo=(...r)=>Fi.sha512Async(...r);var Ii=r=>{let t=r.slice(0,rt);t[0]&=248,t[31]&=127,t[31]|=64;let e=r.slice(rt,re),o=He(t),s=ot.multiply(o),n=s.toBytes();return{head:t,prefix:e,scalar:o,point:s,pointBytes:n}},Ni=r=>wo(Ct(r,rt)).then(Ii);var Es=r=>wo(r.hashable).then(r.finish);var Hi=(r,t,e)=>{let{pointBytes:o,scalar:s}=r,n=He(t),i=ot.multiply(n).toBytes();return{hashable:oe(i,o,e),finish:u=>{let l=$s(n+He(u)*s);return gt(oe(i,ks(l)),re)}}},Cs=async(r,t)=>{let e=Ct(r),o=await Ni(t),s=await wo(o.prefix,e);return Es(Hi(o,s,e))};var Bs={zip215:!0},qi=(r,t,e,o=Bs)=>{r=Ct(r,re),t=Ct(t),e=Ct(e,rt);let{zip215:s}=o,n,i,a,c,u=Uint8Array.of();try{n=Y.fromHex(e,s),i=Y.fromHex(r.slice(0,rt),s),a=bo(r.slice(rt,re)),c=ot.multiply(a,!1),u=oe(i.toBytes(),n.toBytes(),t)}catch{}return{hashable:u,finish:p=>{if(c==null||!s&&n.isSmallOrder())return!1;let d=He(p);return i.add(n.multiply(d,!1)).add(c.negate()).clearCofactor().is0()}}},Ts=async(r,t,e,o=Bs)=>Es(qi(r,t,e,o));var Fi={sha512Async:async(...r)=>{let t=zi(),e=oe(...r);return Fe(await t.digest("SHA-512",e.buffer))},sha512Sync:void 0,bytesToHex:xo,hexToBytes:yo,concatBytes:oe,mod:f,invert:Ss,randomBytes:Di};var qe=8,Vi=256,Ps=Math.ceil(Vi/qe)+1,mo=2**(qe-1),Wi=()=>{let r=[],t=ot,e=t;for(let o=0;o<Ps;o++){e=t,r.push(e);for(let s=1;s<mo;s++)e=e.add(t),r.push(e);t=e.double()}return r},bs,ws=(r,t)=>{let e=t.negate();return r?e:t},Gi=r=>{let t=bs||(bs=Wi()),e=Et,o=ot,s=2**qe,n=s,i=Ne(s-1),a=Ne(qe);for(let c=0;c<Ps;c++){let u=Number(r&i);r>>=a,u>mo&&(u-=n,r+=1n);let l=c*mo,p=l,d=l+Math.abs(u)-1,h=c%2!==0,m=u<0;u===0?o=o.add(ws(h,t[p])):e=e.add(ws(m,t[d]))}return{p:e,f:o}};function Os(r){let t=b.bytes(r);if(t.length!==32)throw new Error("invalid key");return t}async function Ms(r,t){return Cs(r,Os(t))}async function js(r,t,e){return Ts(t,r,Os(e))}async function vo(r,t){let e=tt.bytes(JSON.stringify(ds)),o=H.string(e),s=tt.bytes(JSON.stringify(t)),n=H.string(s),i=`${o}.${n}`,a=new TextEncoder().encode(i),c=H.string(await Ms(a,r));return`${i}.${c}`}function E(r){let[t,e,o]=r.split(".");if(!t||!e||!o)throw new Error("invalid jwt structure");let s=H.bytes(t),n=tt.string(s),i=JSON.parse(n),a=H.bytes(e),c=tt.string(a),u=JSON.parse(c),l=H.bytes(o);return{header:i,payload:u,signature:l}}var U={toMs:r=>r*1e3,at:r=>r/1e3,maybe:r=>r!==void 0?r/1e3:void 0,readExpiresAt(r){let{exp:t}=E(r).payload;return t===void 0?void 0:U.toMs(t)},readIssuedAt(r){let{iat:t}=E(r).payload;return t===void 0?void 0:U.toMs(t)},isExpired(r,t=Date.now()){let e=this.readExpiresAt(r);return e===void 0?!1:t>=e},fuzz({time:r,randomness:t,additive:e}){let o=t/10,s=Math.floor(e?Math.ceil(r/o)*o:Math.floor(r/o)*o),n=Math.floor(Math.random()*t);return e?s+n:s-n}};async function Rs({claim:r,session:t,appOrigin:e,audience:o,expiresAt:s}){let n=E(t.proofToken).payload.data;return vo(t.secret,{jti:b.random(32),exp:U.maybe(s),sub:n.nametag.id,aud:o,iss:e,data:{claim:r,proofToken:t.proofToken}})}var L=class extends Error{name=this.constructor.name};async function Ve(r,t,e={}){let[o,s]=t.split("."),{payload:n,signature:i}=E(t),a=`${o}.${s}`,c=new TextEncoder().encode(a);if(!await js(c,i,r))throw new L("token signature invalid");if(e.atTime!==null){let u=e.atTime??Date.now();if(n.exp){let l=U.toMs(n.exp);if(u>l)throw new L("token expired")}if(n.nbf){let l=U.toMs(n.nbf);if(u<l)throw new L("token not ready")}}if(e.allowedIssuers){if(!n.iss)throw new L("required iss (issuer) is missing");if(!e.allowedIssuers.includes(n.iss))throw new L(`invalid iss (issuer) "${n.iss}"`)}if(e.allowedAudiences){if(!n.aud)throw new L("required aud (audience) is missing");if(!e.allowedAudiences.includes(n.aud))throw new L(`invalid aud (audience) "${n.aud}"`)}if(n.aud&&!e.allowedAudiences)throw new L('allowedAudiences verification option was not provided, but is required because the token included "aud"');return n}async function We({proofToken:r,appOrigins:t,atTime:e}){let o=E(r),{data:s}=await Ve(o.payload.data.nametag.id,r,{atTime:e,allowedAudiences:t});return s}function zs(r){let e=E(r).payload.aud;if(!e)throw new Error("proof token is missing audience aud");return e}async function _o({claimToken:r,appOrigins:t,allowedAudiences:e,atTime:o}){let s=E(r).payload,{proofToken:n}=s.data,i=E(n).payload;if(!s.iss)throw new Error('claim token is lacking "iss" field');if(!i.aud)throw new Error('proof token is lacking "aud" field');if(s.iss!==i.aud)throw new Error(`claim token iss "${s.iss}" does not match proof token aud "${i.aud}"`);let a=await We({proofToken:n,appOrigins:t,atTime:o}),{data:{claim:c}}=await Ve(a.sessionId,r,{atTime:o,allowedIssuers:t,allowedAudiences:e});return{claim:c,proof:a,proofToken:n}}var se=class{session;proof;proofAppOrigin;static async verify({session:t,appOrigins:e}){let{proofToken:o}=t,s=await We({proofToken:o,appOrigins:e}),n=zs(o);return new this(t,s,n)}constructor(t,e,o){this.session=t,this.proof=e,this.proofAppOrigin=o}get nametag(){return this.proof.nametag}get sessionId(){return this.proof.sessionId}get proofToken(){return this.session.proofToken}get expiresAt(){let t=U.readExpiresAt(this.proofToken);if(t===void 0)throw new Error("misconfigured proof token will never expire");return t}isExpired(t=Date.now()){return U.isExpired(this.proofToken,t)}async signClaim(t){let e=await Rs({...t,session:this.session,appOrigin:this.proofAppOrigin});return await _o({claimToken:e,atTime:t.atTime,appOrigins:[this.proofAppOrigin],allowedAudiences:t.audience?[t.audience]:void 0}),e}};function Ki(r,t=-1){let o=b.bytes(r).at(t);if(o===void 0)throw new Error(`id didn't have byte at ${t}`);return Math.floor(o/255*359)}function Ds(r,t=-1){return`hsl(${Ki(r,t)}deg, 100%, 75%)`}var Zd=32;function Xd(r){if(r!==r.trim())return!1;let t=r.replaceAll(" ","");return[typeof r=="string",r.length>=1,r.length<=32,!r.includes('"'),!/[ ]{2,}/u.test(r),!/\s/.test(t),!/\p{Z}\p{C}/u.test(t)].every(e=>e)}var Ge=class{#t=!1;lock(t){this.#t=!0;let e=t();return this.#t=!1,e}get locked(){return this.#t}};var ne=()=>new Map,Us=()=>new Set;function C(r){return{guarantee:(t,e)=>Zi(r,t,e)}}function Zi(r,t,e){if(r.has(t))return r.get(t);{let o=e();return r.set(t,o),o}}var Ye=class{#t=new WeakMap;grab_keymap(t){let e=C(this.#t).guarantee(t,ne);return{keymap:e,grab_symbolmap(o){return C(e).guarantee(o,ne)}}}clear(){this.#t=new WeakMap}};var Ke=class{#t=new Map;stop(t){let e=this.#t.get(t);e&&(this.#t.delete(t),e())}add(t,e){this.#t.set(t,e)}};var Ze=class{#t=[];record(t){let e=ne();this.#t.push(e);let o=t();return this.#t.pop(),{payload:o,recording:e}}record_that_key_was_accessed(t,e){let o=this.#t.at(-1);o&&C(o).guarantee(t,Us).add(e)}};var Xe=class extends Error{name=this.constructor.name},Je=class extends Xe{constructor(t){super(`forbidden circularity, rejected assignment to "${t}"`)}},Qe=class extends Xe{constructor(t){super(`forbidden assignment to readonly property "${t}"`)}};function Ls(r){return new Proxy(r,{get(t,e){return t[e]},set(t,e){throw new Qe(e)}})}function w(r,t){let e,o,s=[];function n(){e=[],o&&clearTimeout(o),o=void 0,s=[]}return n(),(...i)=>{e=i,o&&clearTimeout(o);let a=new Promise((c,u)=>{s.push({resolve:c,reject:u})});return o=setTimeout(()=>{Promise.resolve().then(()=>t(...e)).then(c=>{for(let{resolve:u}of s)u(c);n()}).catch(c=>{for(let{reject:u}of s)u(c);n()})},r),a}}var tr=class{#t=new Map;#e=Promise.resolve();#r=w(0,()=>{let t=[...this.#t.values()];this.#t.clear();for(let e of t)e()});get wait(){return this.#e}add(t,e){this.#t.set(t,e),this.#e=this.#r()}};function Is(r){return function(t){return()=>{let e=typeof r=="function"?r():r;return t(e)}}}function ie(r,t,e,o){let s=[];for(let[n,i]of t){let{grab_symbolmap:a}=e.grab_keymap(n);for(let c of i){let u=a(c);u.set(r,o),s.push(()=>u.delete(r))}}return()=>s.forEach(n=>n())}function Ns(r,t,e,o,s){function n([i,a]){if("lean"in a)a.actor();else{let{payload:c,recording:u}=t.record(a.collector);o.add(i,ie(i,u,r,a)),a.responder&&a.responder(c)}}return{get:(i,a)=>(t.record_that_key_was_accessed(i,a),i[a]),set:(i,a,c)=>{if(e.locked)throw new Je(a);i[a]=c;let u=[...r.grab_keymap(i).grab_symbolmap(a)];for(let l of u){let[p]=l;s.add(p,()=>e.lock(()=>n(l)))}return!0}}}var er=class{static readonly=Ls;static collectivize=Is;#t=new Ye;#e=new Ze;#r=new Ge;#o=new Ke;#s=new tr;#i=Ns(this.#t,this.#e,this.#r,this.#o,this.#s);get wait(){return this.#s.wait}state(t){return new Proxy(t,this.#i)}reaction(t,e){let o=Symbol(),{recording:s}=this.#e.record(()=>this.#r.lock(t));return this.#o.add(o,ie(o,s,this.#t,{collector:t,responder:e})),()=>this.#o.stop(o)}lean(t){let e=Symbol();return{stop:()=>this.#o.stop(e),collect:o=>{let{payload:s,recording:n}=this.#e.record(()=>this.#r.lock(o));return this.#o.add(e,ie(e,n,this.#t,{lean:!0,actor:t})),s}}}clear(){this.#t.clear()}};function Bt(r,t){return rr.on_change(r,()=>r.requestUpdate()),rr.proxy(r,t)}var rr;(function(r){r.proxy=(e,o)=>new Proxy(o,{get:(s,n)=>{let i=o[n],a=e.getAttribute(n);switch(i){case String:return a??void 0;case Number:return a!==null?Number(a):void 0;case Boolean:return a!==null;default:throw new Error(`invalid attribute type for "${n}"`)}},set:(s,n,i)=>{switch(o[n]){case String:return e.setAttribute(n,i),!0;case Number:return e.setAttribute(n,i.toString()),!0;case Boolean:return i?e.setAttribute(n,""):e.removeAttribute(n),!0;default:throw new Error(`invalid attribute type for "${n}"`)}}});function t(e,o){let s=new MutationObserver(o);return s.observe(e,{attributes:!0}),()=>s.disconnect()}r.on_change=t})(rr||(rr={}));var or=class r{#t;constructor(t){this.#t=t}get state(){return this.#t.getter(this.#t.parent.state)}transmute(t){this.#t.parent.transmute(e=>{let o=this.#t.getter(e),s=t(o);return this.#t.setter(e,s)})}slice({getter:t,setter:e}){return new r({parent:this,getter:t,setter:e})}};function Tt(r,t=new Set){if(t.has(r))throw new Error("cannot clone circular reference");let e;return typeof r=="function"||r!==null&&typeof r=="object"?(t.add(r),Array.isArray(r)?e=r.map(o=>Tt(o,new Set(t))):r.constructor===Object?e=Object.fromEntries(Object.entries(r).map(([o,s])=>[o,Tt(s,new Set(t))])):r instanceof Map?e=new Map(Array.from(r,([o,s])=>[o,Tt(s,new Set(t))])):r instanceof Set?e=new Set(Array.from(r,o=>Tt(o,new Set(t)))):r instanceof Date?e=new Date(r.getTime()):e=r,t.delete(r)):e=r,e}var Pt={available:r=>r!=null,unavailable:r=>r==null,void:r=>r==null,defined:r=>r!=null,boolean:r=>typeof r=="boolean",number:r=>typeof r=="number",string:r=>typeof r=="string",bigint:r=>typeof r=="bigint",object:r=>typeof r=="object"&&r!==null,array:r=>Array.isArray(r)};var Hs=(r,t)=>{function e(o,s,n){if(!Pt.object(o)||!Pt.object(s))return o===s;if(n.includes(o))throw new Error("forbidden circularity detected in deep equal comparison");let i=[...n,o];if(o instanceof Map&&s instanceof Map){if(o.size!==s.size)return!1;for(let[a,c]of o)if(!s.has(a)||!e(c,s.get(a),i))return!1}else if(o instanceof Set&&s instanceof Set){if(o.size!==s.size)return!1;for(let a of o)if(!Array.from(s).some(c=>e(a,c,i)))return!1}else{let a=Object.keys(o),c=Object.keys(s);if(a.length!==c.length)return!1;for(let u of a)if(!c.includes(u)||!e(o[u],s[u],i))return!1}return!0}return e(r,t,[])};function qs(r){function t(e,o){if(!Pt.object(e)||o.includes(e))return e;let s=[...o,e];if(e instanceof Map)for(let n of e.entries())for(let i of n)t(i,s);else if(e instanceof Set)for(let n of e)t(n,s);else if(Array.isArray(e))for(let n of e)t(n,s);else for(let n of Object.values(e))t(n,s);return Object.freeze(e)}return t(r,[])}var K={clone:Tt,equal:Hs,freeze:qs};var sr=class{#t;#e;#r;#o=!1;#s(){return K.freeze(structuredClone(this.#t))}constructor(t,e=()=>{}){this.#t=structuredClone(t),this.#e=this.#s(),this.#r=e}get state(){return this.#e}transmute(t){if(this.#o)throw new Error("circular error");this.#o=!0,this.#t=t(structuredClone(this.#t)),this.#e=this.#s(),this.#r(),this.#o=!1}slice({getter:t,setter:e}){return new or({parent:this,getter:t,setter:e})}};var nr=class{#t;#e=new Set;#r=new Set;#o=new Map;#s=Promise.resolve();constructor(t){this.#t=t}get wait(){return this.#s}#i=w(0,()=>{for(let t of this.#e)t();for(let t of this.#r)t()});dispatch(){this.#s=this.#i()}computed(t){let e=this.#t.signal(t());return this.#e.add(()=>{e.value=t()}),e}track(t,e){let o=!0,s=()=>{let i=t(),a=this.#o.get(t);(o||!K.equal(i,a))&&(o=!1,this.#o.set(t,i),e(i))};return s(),this.#r.add(s),()=>this.#r.delete(s)}stateTree(t){return new sr(t,()=>this.dispatch())}};var Ao=class{#t=[];#e=new WeakMap;#r=[];#o=new Set;see(t){this.#t.at(-1)?.add(t)}seen(t){this.#t.push(new Set);let e=t();return{seen:this.#t.pop(),result:e}}async change(t){if(this.#o.has(t))throw new Error("circularity forbidden");let e=this.#s(t).pub();return this.#r.at(-1)?.add(e),e}changed(t,e){return this.#s(t)(async()=>{let o=new Set;this.#r.push(o),this.#o.add(t),o.add(e()),this.#o.delete(t),await Promise.all(o),this.#r.pop()})}#s(t){let e=this.#e.get(t);return e||(e=D(),this.#e.set(t,e)),e}},Xi=Symbol.for("e280.tracker.v2"),I=globalThis[Xi]??=new Ao;function $o(r,t=r){let{seen:e,result:o}=I.seen(r),s=Qt(0,t),n=[],i=()=>n.forEach(a=>a());for(let a of e){let c=I.changed(a,s);n.push(c)}return{result:o,dispose:i}}var Ji={compare:(r,t)=>r===t};function Ot(r={}){return{...Ji,...r}}var ir=class{sneak;constructor(t){this.sneak=t}get(){return I.see(this),this.sneak}get value(){return this.get()}},ar=class extends ir{on=D();dispose(){this.on.clear()}},ae=class extends ar{_options;kind="signal";_lock=!1;constructor(t,e){super(t),this._options=e}async set(t){!this._options.compare(this.sneak,t)&&await this.publish(t)}get value(){return this.get()}set value(t){this.set(t)}async publish(t=this.get()){if(this._lock)throw new Error("forbid circularity");let e=Promise.resolve();try{this._lock=!0,this.sneak=t,e=Promise.all([I.change(this),this.on.pub(t)])}finally{this._lock=!1}return e}},ce=class extends ir{_formula;_options;kind="lazy";_dirty=!1;_effect;constructor(t,e){super(void 0),this._formula=t,this._options=e}get(){if(!this._effect){let{result:t,dispose:e}=$o(this._formula,()=>this._dirty=!0);this._effect=e,this.sneak=t}if(this._dirty){this._dirty=!1;let t=this._formula();!this._options.compare(this.sneak,t)&&(this.sneak=t,I.change(this))}return super.get()}get value(){return this.get()}dispose(){this._effect&&this._effect()}},ue=class extends ar{_effect;static make(t,e,o){let{result:s,dispose:n}=$o(e,async()=>{let i=e();!o.compare(t.sneak,i)&&(t.sneak=i,await Promise.all([I.change(t),t.on.pub(i)]))});return new this(s,n)}kind="derived";constructor(t,e){super(t),this._effect=e}get value(){return this.get()}dispose(){super.dispose(),this._effect()}};function Fs(r,t={}){function e(){return e.value}let o=Ot(t),s=new ce(r,o);return Object.setPrototypeOf(e,ce.prototype),Object.assign(e,s),e}function Vs(r,t={}){function e(){return e.value}let o=Ot(t),s=ue.make(e,r,o);return Object.setPrototypeOf(e,ue.prototype),Object.assign(e,s),e}function cr(r,t={}){function e(n){return n!==void 0?e.set(n):e.get()}let o=Ot(t),s=new ae(r,o);return Object.setPrototypeOf(e,ae.prototype),Object.assign(e,s),e}cr.lazy=Fs;cr.derive=Vs;var ur=class{flat;signals;#t=Promise.resolve();constructor(t,e){this.flat=t,this.signals=e}get wait(){return Promise.all([this.flat.wait,this.signals.wait]).then(()=>this.#t)}reaction(t,e){let o=e?()=>e(n()):()=>n(),s=this.lean(o),n=()=>s.collect(t);return n(),s.stop}lean(t){let e=this.flat.lean(t),o=this.signals.lean(t),s=new Map;return{stop(){e.stop(),o.stop();for(let n of s.values())n();s.clear()},collect(n){return e.collect(()=>o.collect(()=>{let{seen:i,result:a}=I.seen(n);for(let c of i)s.has(c)||s.set(c,I.changed(c,async()=>t()));return a}))}}}};var Ws=Error,_;(function(r){r.loading=()=>({status:"loading"}),r.error=a=>({status:"error",reason:a}),r.ready=a=>({status:"ready",payload:a}),r.is=Object.freeze({loading:a=>a.status==="loading",error:a=>a.status==="error",ready:a=>a.status==="ready"});function t(a){return a.status==="ready"?a.payload:void 0}r.payload=t;function e(a){return a.status==="error"?a.reason:void 0}r.reason=e;function o(a,c){switch(a.status){case"loading":return c.loading();case"error":return c.error(a.reason);case"ready":return c.ready(a.payload);default:throw console.error("op",a),new Ws("invalid op status")}}r.select=o;async function s(a,c){a(r.loading());try{let u=await c();return a(r.ready(u)),u}catch(u){let l=u instanceof Ws?u.message:typeof u=="string"?u:"error";throw a(r.error(l)),u}}r.load=s;function n(a,c){return o(a,{loading:()=>r.loading(),error:u=>r.error(u),ready:u=>r.ready(c(u))})}r.morph=n;function i(...a){let c=a.find(r.is.error);return c||(a.every(r.is.ready)?r.ready(a.map(t)):r.loading())}r.all=i})(_||(_={}));function S(r){return{map:t=>Gs(r,t),filter:t=>Ys(r,t)}}S.pipe=Object.freeze({map:r=>t=>Gs(t,r),filter:r=>t=>Ys(t,r)});var Gs=(r,t)=>Object.fromEntries(Object.entries(r).map(([e,o])=>[e,t(o,e)])),Ys=(r,t)=>Object.fromEntries(Object.entries(r).filter(([e,o])=>t(o,e)));var Mt=Symbol();var xt=class extends Error{name=this.constructor.name};var B=class r{static unwrap=t=>t instanceof r?t.value:t;#t;#e=!1;#r;#o=new Set;[Mt]=!1;constructor(t){this.#t=t,this.#r=Promise.resolve(t)}subscribe(t){return this.on(t)}on(t){return this.#o.add(t),()=>void this.#o.delete(t)}once(t){let e=o=>{t(o),this.#o.delete(e)};return this.#o.add(e),()=>void this.#o.delete(e)}clear(){return this.#o.clear()}#s=w(0,()=>{let t=this.#t;this.#e=!0;for(let e of this.#o)e(t);return this.#e=!1,t});async publish(){this.#r=this.#s(),await this.#r}get wait(){return this.#r}get value(){return this[Mt]=!0,this.#t}set value(t){if(this.#e)throw new xt("you can't set a signal in a signal's subscription listener (infinite loop forbidden)");this.#t!==t&&(this.#t=t,this.publish())}setDeep(t){if(this.#e)throw new xt("you can't set a signal in a signal's subscription listener (infinite loop forbidden)");K.equal(t,this.#t)||(this.#t=t,this.publish())}setAndPublish(t){if(this.#e)throw new xt("you can't set a signal in a signal's subscription listener (infinite loop forbidden)");this.#t=t,this.publish()}setWithoutPublish(t){if(this.#e)throw new xt("you can't set a signal in a signal's subscription listener (infinite loop forbidden)");this.#t=t}setValueNoPublish(t){return this.setWithoutPublish(t)}};var pr=class extends B{#t=0;constructor(t){super(t)}async load(t){let e=++this.#t;return _.load(o=>{this.#t===e&&(this.value=o)},t)}setLoading(){this.value=_.loading()}setError(t){this.value=_.error(t)}setReady(t){this.value=_.ready(t)}isLoading(){return _.is.loading(this.value)}isError(){return _.is.error(this.value)}isReady(){return _.is.ready(this.value)}get payload(){return _.payload(this.value)}select(t){return _.select(this.value,t)}};var pe=class{#t=!0;#e;#r;#o=new Set;#s=new Set;constructor({all_signals:t,waiters:e}){this.#e=t,this.#r=e}#i=w(0,t=>{if(this.#t)if("lean"in t)t.actor();else{let{payload:e,recording:o}=this.observe(t.collector);this.add_listeners(t,o),t.responder&&t.responder(e)}});#n(){for(let t of this.#e)t[Mt]=!1}get#a(){return[...this.#e].filter(t=>t[Mt]&&!this.#o.has(t))}observe(t){return this.#n(),{payload:t(),recording:this.#a}}add_listeners(t,e){for(let o of e)this.#o.add(o),this.#s.add(o.on(()=>this.#r.add(this.#i(t))))}shutdown(){this.#t=!1,this.#s.forEach(t=>t())}};var lr=class{#t=new Set;#e=new Set;signal(t){let e=new B(t);return this.#t.add(e),e}computed(t){let e=this.signal(t());return this.reaction(()=>{e.value=t()}),e}async computedAsync(t,e){let o=await e(t()),s=this.signal(o);return this.reaction(t,async n=>{s.value=await e(n)}),s}op(t=_.loading()){let e=new pr(t);return this.#t.add(e),e}load(t){let e=this.op(_.loading());return e.load(t),e}many(t){return S(t).map(e=>this.signal(e))}reaction(t,e){let o=new pe({waiters:this.#e,all_signals:this.#t}),s={collector:t,responder:e},{recording:n}=o.observe(s.collector);return o.add_listeners(s,n),()=>o.shutdown()}lean(t){let e=new pe({waiters:this.#e,all_signals:this.#t}),o={lean:!0,actor:t};return{stop:()=>e.shutdown(),collect:s=>{let{payload:n,recording:i}=e.observe(s);return e.add_listeners(o,i),n}}}async#r(){return await Promise.all([...this.#t].map(t=>t.wait)).then(()=>Promise.all([...this.#e])).then(()=>{this.#e.clear()})}get wait(){return Promise.resolve().then(()=>this.#r()).then(()=>this.#r())}};var jt=new er,j=new lr,fr=new nr(j),Bg=jt.state.bind(jt),le=j.signal.bind(j),Tg=j.computed.bind(j),Pg=j.op.bind(j),Rt=new ur(jt,j);var zt=class r{static with(t){return new this(t)}#t;constructor(t){this.#t=t}to(t){return new r(t(this.#t))}done(){return this.#t}};var A;(function(r){function t(...a){return function(c){return class extends c{static get styles(){return Xs(c.styles,a)}}}}r.css=t;function e(a){return function(c){return class extends c{static get styles(){return Xs(c.styles,a())}}}}r.css_deferred=e;function o(a){return function(c){return class extends c{#t=null;render(){return this.#t?.collect(()=>super.render())}connectedCallback(){super.connectedCallback(),this.#t=a.lean(()=>this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this.#t&&(this.#t.stop(),this.#t=null)}}}}r.signals=o;function s(a){return function(c){return class extends c{#t=null;render(){return this.#t?.collect(()=>super.render())}connectedCallback(){super.connectedCallback(),this.#t=a.lean(()=>this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this.#t&&(this.#t.stop(),this.#t=null)}}}}r.flat=s;function n(a=Rt){return function(c){return class extends c{#t=null;render(){return this.#t?.collect(()=>super.render())}connectedCallback(){super.connectedCallback(),this.#t=a.lean(()=>this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this.#t&&(this.#t.stop(),this.#t=null)}}}}r.reactive=n,r.reactor=n;function i(...a){return function(c){return zt.with(c).to(t(...a)).to(n()).done()}}r.setup=i})(A||(A={}));function Zs(r){return[r].flat().filter(t=>!!t)}var ea=r=>r!==void 0;function Xs(r,t){return[...Zs(r)??[],...Zs(t)].flat().filter(ea)}var Z;(function(r){r.css=t=>e=>S(e).map(o=>A.css(t)(o)),r.flat=t=>e=>S(e).map(o=>A.flat(t)(o)),r.signals=t=>e=>S(e).map(o=>A.signals(t)(o)),r.reactive=(t=Rt)=>e=>S(e).map(o=>A.reactive(t)(o)),r.reactor=r.reactive,r.context=t=>e=>zt.with(e).to(r.css(t.theme)).to(r.reactive()).done(),r.setup=(...t)=>e=>S(e).map(o=>A.setup(...t)(o))})(Z||(Z={}));function Js(r){return r.replace(/([a-zA-Z])(?=[A-Z])/g,"$1-").toLowerCase()}function dr(r,t={}){let{soft:e=!1,upgrade:o=!0}=t;for(let[s,n]of Object.entries(r)){let i=Js(s),a=customElements.get(i);e&&a||(customElements.define(i,n),o&&document.querySelectorAll(i).forEach(c=>{c.constructor===HTMLElement&&customElements.upgrade(c)}))}}var Qs=dr;var hr=globalThis,mr=hr.ShadowRoot&&(hr.ShadyCSS===void 0||hr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,So=Symbol(),tn=new WeakMap,Dt=class{constructor(t,e,o){if(this._$cssResult$=!0,o!==So)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(mr&&t===void 0){let o=e!==void 0&&e.length===1;o&&(t=tn.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),o&&tn.set(e,t))}return t}toString(){return this.cssText}},ko=r=>new Dt(typeof r=="string"?r:r+"",void 0,So),v=(r,...t)=>{let e=r.length===1?r[0]:t.reduce((o,s,n)=>o+(i=>{if(i._$cssResult$===!0)return i.cssText;if(typeof i=="number")return i;throw Error("Value passed to 'css'