nebula-notebook 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -20
- package/dist/assets/{errorwidget-C4r2j2DQ.js → errorwidget-Wy5ajPiM.js} +1 -1
- package/dist/assets/{index-Day3QcNs.js → index-B_Bs5koo.js} +1 -1
- package/dist/assets/index-DK4nS74r.js +829 -0
- package/dist/assets/{index-D5w21_Z8.js → index-DeQN03nW.js} +1 -1
- package/dist/assets/index-DzjpmUak.css +32 -0
- package/dist/assets/{index-CsHoPQy-.js → index-g6MjT-VG.js} +1 -1
- package/dist/assets/{services-shim-D6p_A67v.js → services-shim-BirHVsih.js} +1 -1
- package/dist/index.html +2 -2
- package/node-server/dist/auth/auth-middleware.js +22 -4
- package/node-server/dist/auth/auth-service.js +37 -7
- package/node-server/dist/cluster/client-registration.d.ts +12 -1
- package/node-server/dist/cluster/client-registration.js +35 -2
- package/node-server/dist/cluster/kernel-proxy.js +19 -3
- package/node-server/dist/cluster/server-registry.d.ts +9 -0
- package/node-server/dist/cluster/server-registry.js +26 -0
- package/node-server/dist/discovery/conda-locations.d.ts +73 -0
- package/node-server/dist/discovery/conda-locations.js +427 -0
- package/node-server/dist/discovery/discovery-service.d.ts +73 -4
- package/node-server/dist/discovery/discovery-service.js +211 -127
- package/node-server/dist/discovery/types.d.ts +0 -1
- package/node-server/dist/discovery/types.js +1 -2
- package/node-server/dist/environment.d.ts +12 -0
- package/node-server/dist/environment.js +104 -0
- package/node-server/dist/fs/fs-service.d.ts +31 -1
- package/node-server/dist/fs/fs-service.js +160 -28
- package/node-server/dist/fs/types.d.ts +9 -0
- package/node-server/dist/fs/types.js +8 -0
- package/node-server/dist/index.js +71 -4
- package/node-server/dist/kernel/kernel-service.d.ts +17 -0
- package/node-server/dist/kernel/kernel-service.js +72 -4
- package/node-server/dist/kernel/kernelspec.d.ts +27 -0
- package/node-server/dist/kernel/kernelspec.js +75 -4
- package/node-server/dist/notebook/headless-handler.d.ts +10 -0
- package/node-server/dist/notebook/headless-handler.js +55 -5
- package/node-server/dist/notebook/undoRedoManager.d.ts +8 -0
- package/node-server/dist/notebook/undoRedoManager.js +39 -16
- package/node-server/dist/private-tmp.d.ts +14 -0
- package/node-server/dist/private-tmp.js +70 -0
- package/node-server/dist/routes/autocomplete.d.ts +19 -0
- package/node-server/dist/routes/autocomplete.js +294 -0
- package/node-server/dist/routes/fs.js +21 -4
- package/node-server/dist/routes/kernel.js +45 -2
- package/node-server/dist/routes/notebook.js +8 -2
- package/node-server/dist/routes/python.d.ts +1 -2
- package/node-server/dist/routes/python.js +139 -3
- package/node-server/dist/scheduler/allocation-service.d.ts +20 -0
- package/node-server/dist/scheduler/allocation-service.js +124 -8
- package/node-server/dist/scheduler/mock-scheduler.js +7 -3
- package/node-server/dist/scheduler/slurm-scheduler.js +21 -8
- package/node-server/dist/scheduler/types.d.ts +3 -2
- package/node-server/dist/terminal/agent-registry.d.ts +87 -0
- package/node-server/dist/terminal/agent-registry.js +246 -0
- package/node-server/dist/terminal/binding-store.d.ts +57 -0
- package/node-server/dist/terminal/binding-store.js +0 -0
- package/node-server/dist/terminal/pty-manager.d.ts +23 -6
- package/node-server/dist/terminal/pty-manager.js +130 -19
- package/node-server/dist/terminal/server.js +112 -21
- package/node-server/dist/terminal/types.d.ts +2 -0
- package/node-server/package.json +1 -0
- package/node_modules/nebula-autocomplete/README.md +145 -0
- package/node_modules/nebula-autocomplete/dist/backends/claude.d.ts +69 -0
- package/node_modules/nebula-autocomplete/dist/backends/claude.js +449 -0
- package/node_modules/nebula-autocomplete/dist/backends/codex.d.ts +45 -0
- package/node_modules/nebula-autocomplete/dist/backends/codex.js +108 -0
- package/node_modules/nebula-autocomplete/dist/client/fetcher.d.ts +16 -0
- package/node_modules/nebula-autocomplete/dist/client/fetcher.js +41 -0
- package/node_modules/nebula-autocomplete/dist/codemirror/ghostText.d.ts +43 -0
- package/node_modules/nebula-autocomplete/dist/codemirror/ghostText.js +175 -0
- package/node_modules/nebula-autocomplete/dist/core/engine.d.ts +17 -0
- package/node_modules/nebula-autocomplete/dist/core/engine.js +135 -0
- package/node_modules/nebula-autocomplete/dist/core/lru.d.ts +7 -0
- package/node_modules/nebula-autocomplete/dist/core/lru.js +26 -0
- package/node_modules/nebula-autocomplete/dist/core/prompt.d.ts +12 -0
- package/node_modules/nebula-autocomplete/dist/core/prompt.js +0 -0
- package/node_modules/nebula-autocomplete/dist/core/text.d.ts +53 -0
- package/node_modules/nebula-autocomplete/dist/core/text.js +169 -0
- package/node_modules/nebula-autocomplete/dist/index.d.ts +7 -0
- package/node_modules/nebula-autocomplete/dist/index.js +5 -0
- package/node_modules/nebula-autocomplete/dist/server/fastify.d.ts +40 -0
- package/node_modules/nebula-autocomplete/dist/server/fastify.js +52 -0
- package/node_modules/nebula-autocomplete/dist/transport.d.ts +55 -0
- package/node_modules/nebula-autocomplete/dist/transport.js +66 -0
- package/node_modules/nebula-autocomplete/dist/types.d.ts +103 -0
- package/node_modules/nebula-autocomplete/dist/types.js +1 -0
- package/node_modules/nebula-autocomplete/package.json +58 -0
- package/node_modules/nebula-autocomplete/server.d.ts +3 -0
- package/node_modules/nebula-autocomplete/server.js +3 -0
- package/package.json +17 -5
- package/scripts/postinstall.cjs +25 -5
- package/dist/assets/index-7-YBurka.js +0 -716
- package/dist/assets/index-CFBUnxSZ.css +0 -32
- package/node-server/dist/llm/index.d.ts +0 -5
- package/node-server/dist/llm/index.js +0 -21
- package/node-server/dist/llm/llm-service.d.ts +0 -77
- package/node-server/dist/llm/llm-service.js +0 -454
- package/node-server/dist/llm/types.d.ts +0 -40
- package/node-server/dist/llm/types.js +0 -15
- package/node-server/dist/routes/llm.d.ts +0 -8
- package/node-server/dist/routes/llm.js +0 -105
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as ti,a as sc,g as Bd}from"./index-7-YBurka.js";var ie;(function(n){function e(l,q,A=0,N=-1){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y){let ce=(A+Y)%H;if(l[ce]===q)return ce}return-1}n.firstIndexOf=e;function t(l,q,A=-1,N=0){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;A<N?Z=A+1+(H-N):Z=A-N+1;for(let Y=0;Y<Z;++Y){let ce=(A-Y+H)%H;if(l[ce]===q)return ce}return-1}n.lastIndexOf=t;function i(l,q,A=0,N=-1){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y){let ce=(A+Y)%H;if(q(l[ce],ce))return ce}return-1}n.findFirstIndex=i;function s(l,q,A=-1,N=0){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;A<N?Z=A+1+(H-N):Z=A-N+1;for(let Y=0;Y<Z;++Y){let ce=(A-Y+H)%H;if(q(l[ce],ce))return ce}return-1}n.findLastIndex=s;function a(l,q,A=0,N=-1){let H=i(l,q,A,N);return H!==-1?l[H]:void 0}n.findFirstValue=a;function u(l,q,A=-1,N=0){let H=s(l,q,A,N);return H!==-1?l[H]:void 0}n.findLastValue=u;function c(l,q,A,N=0,H=-1){let Z=l.length;if(Z===0)return 0;N<0?N=Math.max(0,N+Z):N=Math.min(N,Z-1),H<0?H=Math.max(0,H+Z):H=Math.min(H,Z-1);let Y=N,ce=H-N+1;for(;ce>0;){let we=ce>>1,He=Y+we;A(l[He],q)<0?(Y=He+1,ce-=we+1):ce=we}return Y}n.lowerBound=c;function f(l,q,A,N=0,H=-1){let Z=l.length;if(Z===0)return 0;N<0?N=Math.max(0,N+Z):N=Math.min(N,Z-1),H<0?H=Math.max(0,H+Z):H=Math.min(H,Z-1);let Y=N,ce=H-N+1;for(;ce>0;){let we=ce>>1,He=Y+we;A(l[He],q)>0?ce=we:(Y=He+1,ce-=we+1)}return Y}n.upperBound=f;function p(l,q,A){if(l===q)return!0;if(l.length!==q.length)return!1;for(let N=0,H=l.length;N<H;++N)if(A?!A(l[N],q[N]):l[N]!==q[N])return!1;return!0}n.shallowEqual=p;function _(l,q={}){let{start:A,stop:N,step:H}=q;if(H===void 0&&(H=1),H===0)throw new Error("Slice `step` cannot be zero.");let Z=l.length;A===void 0?A=H<0?Z-1:0:A<0?A=Math.max(A+Z,H<0?-1:0):A>=Z&&(A=H<0?Z-1:Z),N===void 0?N=H<0?-1:Z:N<0?N=Math.max(N+Z,H<0?-1:0):N>=Z&&(N=H<0?Z-1:Z);let Y;H<0&&N>=A||H>0&&A>=N?Y=0:H<0?Y=Math.floor((N-A+1)/H+1):Y=Math.floor((N-A-1)/H+1);let ce=[];for(let we=0;we<Y;++we)ce[we]=l[A+we*H];return ce}n.slice=_;function b(l,q,A){let N=l.length;if(N<=1||(q<0?q=Math.max(0,q+N):q=Math.min(q,N-1),A<0?A=Math.max(0,A+N):A=Math.min(A,N-1),q===A))return;let H=l[q],Z=q<A?1:-1;for(let Y=q;Y!==A;Y+=Z)l[Y]=l[Y+Z];l[A]=H}n.move=b;function w(l,q=0,A=-1){let N=l.length;if(!(N<=1))for(q<0?q=Math.max(0,q+N):q=Math.min(q,N-1),A<0?A=Math.max(0,A+N):A=Math.min(A,N-1);q<A;){let H=l[q],Z=l[A];l[q++]=Z,l[A--]=H}}n.reverse=w;function x(l,q,A=0,N=-1){let H=l.length;if(H<=1||(A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1),A>=N))return;let Z=N-A+1;if(q>0?q=q%Z:q<0&&(q=(q%Z+Z)%Z),q===0)return;let Y=A+q;w(l,A,Y-1),w(l,Y,N),w(l,A,N)}n.rotate=x;function y(l,q,A=0,N=-1){let H=l.length;if(H===0)return;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y)l[(A+Y)%H]=q}n.fill=y;function C(l,q,A){let N=l.length;q<0?q=Math.max(0,q+N):q=Math.min(q,N);for(let H=N;H>q;--H)l[H]=l[H-1];l[q]=A}n.insert=C;function E(l,q){let A=l.length;if(q<0&&(q+=A),q<0||q>=A)return;let N=l[q];for(let H=q+1;H<A;++H)l[H-1]=l[H];return l.length=A-1,N}n.removeAt=E;function I(l,q,A=0,N=-1){let H=e(l,q,A,N);return H!==-1&&E(l,H),H}n.removeFirstOf=I;function R(l,q,A=-1,N=0){let H=t(l,q,A,N);return H!==-1&&E(l,H),H}n.removeLastOf=R;function L(l,q,A=0,N=-1){let H=l.length;if(H===0)return 0;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z=0;for(let Y=0;Y<H;++Y)A<=N&&Y>=A&&Y<=N&&l[Y]===q||N<A&&(Y<=N||Y>=A)&&l[Y]===q?Z++:Z>0&&(l[Y-Z]=l[Y]);return Z>0&&(l.length=H-Z),Z}n.removeAllOf=L;function O(l,q,A=0,N=-1){let H,Z=i(l,q,A,N);return Z!==-1&&(H=E(l,Z)),{index:Z,value:H}}n.removeFirstWhere=O;function F(l,q,A=-1,N=0){let H,Z=s(l,q,A,N);return Z!==-1&&(H=E(l,Z)),{index:Z,value:H}}n.removeLastWhere=F;function $(l,q,A=0,N=-1){let H=l.length;if(H===0)return 0;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z=0;for(let Y=0;Y<H;++Y)A<=N&&Y>=A&&Y<=N&&q(l[Y],Y)||N<A&&(Y<=N||Y>=A)&&q(l[Y],Y)?Z++:Z>0&&(l[Y-Z]=l[Y]);return Z>0&&(l.length=H-Z),Z}n.removeAllWhere=$})(ie||(ie={}));function*Pd(...n){for(const e of n)yield*e}function*Ii(){}function*Fd(n,e=0){for(const t of n)yield[e++,t]}function*Wd(n,e){let t=0;for(const i of n)e(i,t++)&&(yield i)}function en(n,e){let t=0;for(const i of n)if(e(i,t++))return i}function $d(n,e){let t=0;for(const i of n)if(e(i,t++))return t-1;return-1}function jd(n,e){let t;for(const i of n){if(t===void 0){t=i;continue}e(i,t)<0&&(t=i)}return t}function ac(n,e){let t;for(const i of n){if(t===void 0){t=i;continue}e(i,t)>0&&(t=i)}return t}function Ud(n,e){let t=!0,i,s;for(const a of n)t?(i=a,s=a,t=!1):e(a,i)<0?i=a:e(a,s)>0&&(s=a);return t?void 0:[i,s]}function Vd(n){return Array.from(n)}function Kd(n){const e={};for(const[t,i]of n)e[t]=i;return e}function Gd(n,e){let t=0;for(const i of n)if(e(i,t++)===!1)return}function La(n,e){let t=0;for(const i of n)if(e(i,t++)===!1)return!1;return!0}function oc(n,e){let t=0;for(const i of n)if(e(i,t++))return!0;return!1}function*Xd(n,e){let t=0;for(const i of n)yield e(i,t++)}function*Yd(n,e,t){e===void 0?(e=n,n=0,t=1):t===void 0&&(t=1);const i=ya.rangeLength(n,e,t);for(let s=0;s<i;s++)yield n+t*s}var ya;(function(n){function e(t,i,s){return s===0?1/0:t>i&&s>0||t<i&&s<0?0:Math.ceil((i-t)/s)}n.rangeLength=e})(ya||(ya={}));function Jd(n,e,t){const i=n[Symbol.iterator]();let s=0,a=i.next();if(a.done&&t===void 0)throw new TypeError("Reduce of empty iterable with no initial value.");if(a.done)return t;let u=i.next();if(u.done&&t===void 0)return a.value;if(u.done)return e(t,a.value,s++);let c;t===void 0?c=e(a.value,u.value,s++):c=e(e(t,a.value,s++),u.value,s++);let f;for(;!(f=i.next()).done;)c=e(c,f.value,s++);return c}function*Qd(n,e){for(;0<e--;)yield n}function*Zd(n){yield n}function*lc(n){if(typeof n.retro=="function")yield*n.retro();else for(let e=n.length-1;e>-1;e--)yield n[e]}function uc(n){let e=[],t=new Set,i=new Map;for(const u of n)s(u);for(const[u]of i)a(u);return e;function s(u){let[c,f]=u,p=i.get(f);p?p.push(c):i.set(f,[c])}function a(u){if(t.has(u))return;t.add(u);let c=i.get(u);if(c)for(const f of c)a(f);e.push(u)}}function*ef(n,e){let t=0;for(const i of n)t++%e===0&&(yield i)}var Li;(function(n){function e(u,c,f=0){let p=new Array(c.length);for(let _=0,b=f,w=c.length;_<w;++_,++b){if(b=u.indexOf(c[_],b),b===-1)return null;p[_]=b}return p}n.findIndices=e;function t(u,c,f=0){let p=e(u,c,f);if(!p)return null;let _=0;for(let b=0,w=p.length;b<w;++b){let x=p[b]-f;_+=x*x}return{score:_,indices:p}}n.matchSumOfSquares=t;function i(u,c,f=0){let p=e(u,c,f);if(!p)return null;let _=0,b=f-1;for(let w=0,x=p.length;w<x;++w){let y=p[w];_+=y-b-1,b=y}return{score:_,indices:p}}n.matchSumOfDeltas=i;function s(u,c,f){let p=[],_=0,b=0,w=c.length;for(;_<w;){let x=c[_],y=c[_];for(;++_<w&&c[_]===y+1;)y++;b<x&&p.push(u.slice(b,x)),x<y+1&&p.push(f(u.slice(x,y+1))),b=y+1}return b<u.length&&p.push(u.slice(b)),p}n.highlight=s;function a(u,c){return u<c?-1:u>c?1:0}n.cmp=a})(Li||(Li={}));function*tf(n,e){if(e<1)return;const t=n[Symbol.iterator]();let i;for(;0<e--&&!(i=t.next()).done;)yield i.value}function*nf(...n){const e=n.map(i=>i[Symbol.iterator]());let t=e.map(i=>i.next());for(;La(t,i=>!i.done);t=e.map(i=>i.next()))yield t.map(i=>i.value)}const vm=Object.freeze(Object.defineProperty({__proto__:null,get ArrayExt(){return ie},get StringExt(){return Li},chain:Pd,each:Gd,empty:Ii,enumerate:Fd,every:La,filter:Wd,find:en,findIndex:$d,map:Xd,max:ac,min:jd,minmax:Ud,once:Zd,range:Yd,reduce:Jd,repeat:Qd,retro:lc,some:oc,stride:ef,take:tf,toArray:Vd,toObject:Kd,topologicSort:uc,zip:nf},Symbol.toStringTag,{value:"Module"}));var De;(function(n){n.emptyObject=Object.freeze({}),n.emptyArray=Object.freeze([]);function e(_){return _===null||typeof _=="boolean"||typeof _=="number"||typeof _=="string"}n.isPrimitive=e;function t(_){return Array.isArray(_)}n.isArray=t;function i(_){return!e(_)&&!t(_)}n.isObject=i;function s(_,b){if(_===b)return!0;if(e(_)||e(b))return!1;let w=t(_),x=t(b);return w!==x?!1:w&&x?u(_,b):c(_,b)}n.deepEqual=s;function a(_){return e(_)?_:t(_)?f(_):p(_)}n.deepCopy=a;function u(_,b){if(_===b)return!0;if(_.length!==b.length)return!1;for(let w=0,x=_.length;w<x;++w)if(!s(_[w],b[w]))return!1;return!0}function c(_,b){if(_===b)return!0;for(let w in _)if(_[w]!==void 0&&!(w in b))return!1;for(let w in b)if(b[w]!==void 0&&!(w in _))return!1;for(let w in _){let x=_[w],y=b[w];if(!(x===void 0&&y===void 0)&&(x===void 0||y===void 0||!s(x,y)))return!1}return!0}function f(_){let b=new Array(_.length);for(let w=0,x=_.length;w<x;++w)b[w]=a(_[w]);return b}function p(_){let b={};for(let w in _){let x=_[w];x!==void 0&&(b[w]=a(x))}return b}})(De||(De={}));class rf{constructor(){this._types=[],this._values=[]}types(){return this._types.slice()}hasData(e){return this._types.indexOf(e)!==-1}getData(e){let t=this._types.indexOf(e);return t!==-1?this._values[t]:void 0}setData(e,t){this.clearData(e),this._types.push(e),this._values.push(t)}clearData(e){let t=this._types.indexOf(e);t!==-1&&(this._types.splice(t,1),this._values.splice(t,1))}clear(){this._types.length=0,this._values.length=0}}var tl;(function(n){class e{constructor(c){var f,p,_,b;this._activated=!1,this._promise=null,this._service=null,this.id=c.id,this.description=(f=c.description)!==null&&f!==void 0?f:"",this.activate=c.activate,this.deactivate=(p=c.deactivate)!==null&&p!==void 0?p:null,this.provides=(_=c.provides)!==null&&_!==void 0?_:null,this.autoStart=(b=c.autoStart)!==null&&b!==void 0?b:!1,this.requires=c.requires?c.requires.slice():[],this.optional=c.optional?c.optional.slice():[]}get activated(){return this._activated}set activated(c){this._activated=c}get service(){return this._service}set service(c){this._service=c}get promise(){return this._promise}set promise(c){this._promise=c}}function t(u){return new e(u)}n.createPluginData=t;function i(u,c,f){const p=[...u.requires,...u.optional],_=w=>{if(w===u.provides)return!0;const x=f.get(w);if(!x)return!1;const y=c.get(x),C=[...y.requires,...y.optional];return C.length===0?!1:(b.push(x),C.some(_)?!0:(b.pop(),!1))};if(!u.provides||p.length===0)return;const b=[u.id];if(p.some(_))throw new ReferenceError(`Cycle detected: ${b.join(" -> ")}.`)}n.ensureNoCycle=i;function s(u,c,f){const p=new Array,_=C=>{const E=c.get(C),I=[...E.requires,...E.optional];p.push(...I.reduce((R,L)=>{const O=f.get(L);return O&&R.push([C,O]),R},[]))};for(const C of c.keys())_(C);const b=p.filter(C=>C[1]===u);let w=0;for(;b.length>w;){const C=b.length,E=new Set(b.map(I=>I[0]));for(const I of E)p.filter(R=>R[1]===I).forEach(R=>{b.includes(R)||b.push(R)});w=C}const x=uc(b),y=x.findIndex(C=>C===u);return y===-1?[u]:x.slice(0,y+1)}n.findDependents=s;function a(u,c){const f=new Set;for(const p of u.keys())u.get(p).autoStart===!0&&f.add(p);if(c.startPlugins)for(const p of c.startPlugins)f.add(p);if(c.ignorePlugins)for(const p of c.ignorePlugins)f.delete(p);return Array.from(f)}n.collectStartupPlugins=a})(tl||(tl={}));class Or{constructor(){this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}resolve(e){let t=this._resolve;t(e)}reject(e){let t=this._reject;t(e)}}class ym{constructor(e,t){this.name=e,this.description=t??"",this._tokenStructuralPropertyT=null}}function sf(n){let e=0;for(let t=0,i=n.length;t<i;++t)t%4===0&&(e=Math.random()*4294967295>>>0),n[t]=e&255,e>>>=8}var ba;(function(n){n.getRandomValues=(()=>{const e=typeof window<"u"&&(window.crypto||window.msCrypto)||null;return e&&typeof e.getRandomValues=="function"?function(i){return e.getRandomValues(i)}:sf})()})(ba||(ba={}));function af(n){const e=new Uint8Array(16),t=new Array(256);for(let i=0;i<16;++i)t[i]="0"+i.toString(16);for(let i=16;i<256;++i)t[i]=i.toString(16);return function(){return n(e),e[6]=64|e[6]&15,e[8]=128|e[8]&63,t[e[0]]+t[e[1]]+t[e[2]]+t[e[3]]+"-"+t[e[4]]+t[e[5]]+"-"+t[e[6]]+t[e[7]]+"-"+t[e[8]]+t[e[9]]+"-"+t[e[10]]+t[e[11]]+t[e[12]]+t[e[13]]+t[e[14]]+t[e[15]]}}var zn;(function(n){n.uuid4=af(ba.getRandomValues)})(zn||(zn={}));var qr,il;function of(){if(il)return qr;il=1;function n(){this.__data__=[],this.size=0}return qr=n,qr}var Hr,nl;function cc(){if(nl)return Hr;nl=1;function n(e,t){return e===t||e!==e&&t!==t}return Hr=n,Hr}var Br,rl;function Un(){if(rl)return Br;rl=1;var n=cc();function e(t,i){for(var s=t.length;s--;)if(n(t[s][0],i))return s;return-1}return Br=e,Br}var Pr,sl;function lf(){if(sl)return Pr;sl=1;var n=Un(),e=Array.prototype,t=e.splice;function i(s){var a=this.__data__,u=n(a,s);if(u<0)return!1;var c=a.length-1;return u==c?a.pop():t.call(a,u,1),--this.size,!0}return Pr=i,Pr}var Fr,al;function uf(){if(al)return Fr;al=1;var n=Un();function e(t){var i=this.__data__,s=n(i,t);return s<0?void 0:i[s][1]}return Fr=e,Fr}var Wr,ol;function cf(){if(ol)return Wr;ol=1;var n=Un();function e(t){return n(this.__data__,t)>-1}return Wr=e,Wr}var $r,ll;function hf(){if(ll)return $r;ll=1;var n=Un();function e(t,i){var s=this.__data__,a=n(s,t);return a<0?(++this.size,s.push([t,i])):s[a][1]=i,this}return $r=e,$r}var jr,ul;function Vn(){if(ul)return jr;ul=1;var n=of(),e=lf(),t=uf(),i=cf(),s=hf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,jr=a,jr}var Ur,cl;function df(){if(cl)return Ur;cl=1;var n=Vn();function e(){this.__data__=new n,this.size=0}return Ur=e,Ur}var Vr,hl;function ff(){if(hl)return Vr;hl=1;function n(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}return Vr=n,Vr}var Kr,dl;function pf(){if(dl)return Kr;dl=1;function n(e){return this.__data__.get(e)}return Kr=n,Kr}var Gr,fl;function mf(){if(fl)return Gr;fl=1;function n(e){return this.__data__.has(e)}return Gr=n,Gr}var Xr,pl;function hc(){if(pl)return Xr;pl=1;var n=typeof ti=="object"&&ti&&ti.Object===Object&&ti;return Xr=n,Xr}var Yr,ml;function Gt(){if(ml)return Yr;ml=1;var n=hc(),e=typeof self=="object"&&self&&self.Object===Object&&self,t=n||e||Function("return this")();return Yr=t,Yr}var Jr,gl;function Ra(){if(gl)return Jr;gl=1;var n=Gt(),e=n.Symbol;return Jr=e,Jr}var Qr,_l;function gf(){if(_l)return Qr;_l=1;var n=Ra(),e=Object.prototype,t=e.hasOwnProperty,i=e.toString,s=n?n.toStringTag:void 0;function a(u){var c=t.call(u,s),f=u[s];try{u[s]=void 0;var p=!0}catch{}var _=i.call(u);return p&&(c?u[s]=f:delete u[s]),_}return Qr=a,Qr}var Zr,vl;function _f(){if(vl)return Zr;vl=1;var n=Object.prototype,e=n.toString;function t(i){return e.call(i)}return Zr=t,Zr}var es,yl;function Kn(){if(yl)return es;yl=1;var n=Ra(),e=gf(),t=_f(),i="[object Null]",s="[object Undefined]",a=n?n.toStringTag:void 0;function u(c){return c==null?c===void 0?s:i:a&&a in Object(c)?e(c):t(c)}return es=u,es}var ts,bl;function dc(){if(bl)return ts;bl=1;function n(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}return ts=n,ts}var is,xl;function fc(){if(xl)return is;xl=1;var n=Kn(),e=dc(),t="[object AsyncFunction]",i="[object Function]",s="[object GeneratorFunction]",a="[object Proxy]";function u(c){if(!e(c))return!1;var f=n(c);return f==i||f==s||f==t||f==a}return is=u,is}var ns,wl;function vf(){if(wl)return ns;wl=1;var n=Gt(),e=n["__core-js_shared__"];return ns=e,ns}var rs,Sl;function yf(){if(Sl)return rs;Sl=1;var n=vf(),e=(function(){var i=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""})();function t(i){return!!e&&e in i}return rs=t,rs}var ss,Cl;function pc(){if(Cl)return ss;Cl=1;var n=Function.prototype,e=n.toString;function t(i){if(i!=null){try{return e.call(i)}catch{}try{return i+""}catch{}}return""}return ss=t,ss}var as,Ml;function bf(){if(Ml)return as;Ml=1;var n=fc(),e=yf(),t=dc(),i=pc(),s=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,f=u.toString,p=c.hasOwnProperty,_=RegExp("^"+f.call(p).replace(s,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function b(w){if(!t(w)||e(w))return!1;var x=n(w)?_:a;return x.test(i(w))}return as=b,as}var os,Tl;function xf(){if(Tl)return os;Tl=1;function n(e,t){return e==null?void 0:e[t]}return os=n,os}var ls,Al;function Hi(){if(Al)return ls;Al=1;var n=bf(),e=xf();function t(i,s){var a=e(i,s);return n(a)?a:void 0}return ls=t,ls}var us,El;function Na(){if(El)return us;El=1;var n=Hi(),e=Gt(),t=n(e,"Map");return us=t,us}var cs,Il;function Gn(){if(Il)return cs;Il=1;var n=Hi(),e=n(Object,"create");return cs=e,cs}var hs,zl;function wf(){if(zl)return hs;zl=1;var n=Gn();function e(){this.__data__=n?n(null):{},this.size=0}return hs=e,hs}var ds,Dl;function Sf(){if(Dl)return ds;Dl=1;function n(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}return ds=n,ds}var fs,kl;function Cf(){if(kl)return fs;kl=1;var n=Gn(),e="__lodash_hash_undefined__",t=Object.prototype,i=t.hasOwnProperty;function s(a){var u=this.__data__;if(n){var c=u[a];return c===e?void 0:c}return i.call(u,a)?u[a]:void 0}return fs=s,fs}var ps,Ll;function Mf(){if(Ll)return ps;Ll=1;var n=Gn(),e=Object.prototype,t=e.hasOwnProperty;function i(s){var a=this.__data__;return n?a[s]!==void 0:t.call(a,s)}return ps=i,ps}var ms,Rl;function Tf(){if(Rl)return ms;Rl=1;var n=Gn(),e="__lodash_hash_undefined__";function t(i,s){var a=this.__data__;return this.size+=this.has(i)?0:1,a[i]=n&&s===void 0?e:s,this}return ms=t,ms}var gs,Nl;function Af(){if(Nl)return gs;Nl=1;var n=wf(),e=Sf(),t=Cf(),i=Mf(),s=Tf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,gs=a,gs}var _s,Ol;function Ef(){if(Ol)return _s;Ol=1;var n=Af(),e=Vn(),t=Na();function i(){this.size=0,this.__data__={hash:new n,map:new(t||e),string:new n}}return _s=i,_s}var vs,ql;function If(){if(ql)return vs;ql=1;function n(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}return vs=n,vs}var ys,Hl;function Xn(){if(Hl)return ys;Hl=1;var n=If();function e(t,i){var s=t.__data__;return n(i)?s[typeof i=="string"?"string":"hash"]:s.map}return ys=e,ys}var bs,Bl;function zf(){if(Bl)return bs;Bl=1;var n=Xn();function e(t){var i=n(this,t).delete(t);return this.size-=i?1:0,i}return bs=e,bs}var xs,Pl;function Df(){if(Pl)return xs;Pl=1;var n=Xn();function e(t){return n(this,t).get(t)}return xs=e,xs}var ws,Fl;function kf(){if(Fl)return ws;Fl=1;var n=Xn();function e(t){return n(this,t).has(t)}return ws=e,ws}var Ss,Wl;function Lf(){if(Wl)return Ss;Wl=1;var n=Xn();function e(t,i){var s=n(this,t),a=s.size;return s.set(t,i),this.size+=s.size==a?0:1,this}return Ss=e,Ss}var Cs,$l;function mc(){if($l)return Cs;$l=1;var n=Ef(),e=zf(),t=Df(),i=kf(),s=Lf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,Cs=a,Cs}var Ms,jl;function Rf(){if(jl)return Ms;jl=1;var n=Vn(),e=Na(),t=mc(),i=200;function s(a,u){var c=this.__data__;if(c instanceof n){var f=c.__data__;if(!e||f.length<i-1)return f.push([a,u]),this.size=++c.size,this;c=this.__data__=new t(f)}return c.set(a,u),this.size=c.size,this}return Ms=s,Ms}var Ts,Ul;function Nf(){if(Ul)return Ts;Ul=1;var n=Vn(),e=df(),t=ff(),i=pf(),s=mf(),a=Rf();function u(c){var f=this.__data__=new n(c);this.size=f.size}return u.prototype.clear=e,u.prototype.delete=t,u.prototype.get=i,u.prototype.has=s,u.prototype.set=a,Ts=u,Ts}var As,Vl;function Of(){if(Vl)return As;Vl=1;var n="__lodash_hash_undefined__";function e(t){return this.__data__.set(t,n),this}return As=e,As}var Es,Kl;function qf(){if(Kl)return Es;Kl=1;function n(e){return this.__data__.has(e)}return Es=n,Es}var Is,Gl;function Hf(){if(Gl)return Is;Gl=1;var n=mc(),e=Of(),t=qf();function i(s){var a=-1,u=s==null?0:s.length;for(this.__data__=new n;++a<u;)this.add(s[a])}return i.prototype.add=i.prototype.push=e,i.prototype.has=t,Is=i,Is}var zs,Xl;function Bf(){if(Xl)return zs;Xl=1;function n(e,t){for(var i=-1,s=e==null?0:e.length;++i<s;)if(t(e[i],i,e))return!0;return!1}return zs=n,zs}var Ds,Yl;function Pf(){if(Yl)return Ds;Yl=1;function n(e,t){return e.has(t)}return Ds=n,Ds}var ks,Jl;function gc(){if(Jl)return ks;Jl=1;var n=Hf(),e=Bf(),t=Pf(),i=1,s=2;function a(u,c,f,p,_,b){var w=f&i,x=u.length,y=c.length;if(x!=y&&!(w&&y>x))return!1;var C=b.get(u),E=b.get(c);if(C&&E)return C==c&&E==u;var I=-1,R=!0,L=f&s?new n:void 0;for(b.set(u,c),b.set(c,u);++I<x;){var O=u[I],F=c[I];if(p)var $=w?p(F,O,I,c,u,b):p(O,F,I,u,c,b);if($!==void 0){if($)continue;R=!1;break}if(L){if(!e(c,function(l,q){if(!t(L,q)&&(O===l||_(O,l,f,p,b)))return L.push(q)})){R=!1;break}}else if(!(O===F||_(O,F,f,p,b))){R=!1;break}}return b.delete(u),b.delete(c),R}return ks=a,ks}var Ls,Ql;function Ff(){if(Ql)return Ls;Ql=1;var n=Gt(),e=n.Uint8Array;return Ls=e,Ls}var Rs,Zl;function Wf(){if(Zl)return Rs;Zl=1;function n(e){var t=-1,i=Array(e.size);return e.forEach(function(s,a){i[++t]=[a,s]}),i}return Rs=n,Rs}var Ns,eu;function $f(){if(eu)return Ns;eu=1;function n(e){var t=-1,i=Array(e.size);return e.forEach(function(s){i[++t]=s}),i}return Ns=n,Ns}var Os,tu;function jf(){if(tu)return Os;tu=1;var n=Ra(),e=Ff(),t=cc(),i=gc(),s=Wf(),a=$f(),u=1,c=2,f="[object Boolean]",p="[object Date]",_="[object Error]",b="[object Map]",w="[object Number]",x="[object RegExp]",y="[object Set]",C="[object String]",E="[object Symbol]",I="[object ArrayBuffer]",R="[object DataView]",L=n?n.prototype:void 0,O=L?L.valueOf:void 0;function F($,l,q,A,N,H,Z){switch(q){case R:if($.byteLength!=l.byteLength||$.byteOffset!=l.byteOffset)return!1;$=$.buffer,l=l.buffer;case I:return!($.byteLength!=l.byteLength||!H(new e($),new e(l)));case f:case p:case w:return t(+$,+l);case _:return $.name==l.name&&$.message==l.message;case x:case C:return $==l+"";case b:var Y=s;case y:var ce=A&u;if(Y||(Y=a),$.size!=l.size&&!ce)return!1;var we=Z.get($);if(we)return we==l;A|=c,Z.set($,l);var He=i(Y($),Y(l),A,N,H,Z);return Z.delete($),He;case E:if(O)return O.call($)==O.call(l)}return!1}return Os=F,Os}var qs,iu;function Uf(){if(iu)return qs;iu=1;function n(e,t){for(var i=-1,s=t.length,a=e.length;++i<s;)e[a+i]=t[i];return e}return qs=n,qs}var Hs,nu;function Oa(){if(nu)return Hs;nu=1;var n=Array.isArray;return Hs=n,Hs}var Bs,ru;function Vf(){if(ru)return Bs;ru=1;var n=Uf(),e=Oa();function t(i,s,a){var u=s(i);return e(i)?u:n(u,a(i))}return Bs=t,Bs}var Ps,su;function Kf(){if(su)return Ps;su=1;function n(e,t){for(var i=-1,s=e==null?0:e.length,a=0,u=[];++i<s;){var c=e[i];t(c,i,e)&&(u[a++]=c)}return u}return Ps=n,Ps}var Fs,au;function Gf(){if(au)return Fs;au=1;function n(){return[]}return Fs=n,Fs}var Ws,ou;function Xf(){if(ou)return Ws;ou=1;var n=Kf(),e=Gf(),t=Object.prototype,i=t.propertyIsEnumerable,s=Object.getOwnPropertySymbols,a=s?function(u){return u==null?[]:(u=Object(u),n(s(u),function(c){return i.call(u,c)}))}:e;return Ws=a,Ws}var $s,lu;function Yf(){if(lu)return $s;lu=1;function n(e,t){for(var i=-1,s=Array(e);++i<e;)s[i]=t(i);return s}return $s=n,$s}var js,uu;function Yn(){if(uu)return js;uu=1;function n(e){return e!=null&&typeof e=="object"}return js=n,js}var Us,cu;function Jf(){if(cu)return Us;cu=1;var n=Kn(),e=Yn(),t="[object Arguments]";function i(s){return e(s)&&n(s)==t}return Us=i,Us}var Vs,hu;function Qf(){if(hu)return Vs;hu=1;var n=Jf(),e=Yn(),t=Object.prototype,i=t.hasOwnProperty,s=t.propertyIsEnumerable,a=n((function(){return arguments})())?n:function(u){return e(u)&&i.call(u,"callee")&&!s.call(u,"callee")};return Vs=a,Vs}var Yi={exports:{}},Ks,du;function Zf(){if(du)return Ks;du=1;function n(){return!1}return Ks=n,Ks}Yi.exports;var fu;function _c(){return fu||(fu=1,(function(n,e){var t=Gt(),i=Zf(),s=e&&!e.nodeType&&e,a=s&&!0&&n&&!n.nodeType&&n,u=a&&a.exports===s,c=u?t.Buffer:void 0,f=c?c.isBuffer:void 0,p=f||i;n.exports=p})(Yi,Yi.exports)),Yi.exports}var Gs,pu;function ep(){if(pu)return Gs;pu=1;var n=9007199254740991,e=/^(?:0|[1-9]\d*)$/;function t(i,s){var a=typeof i;return s=s??n,!!s&&(a=="number"||a!="symbol"&&e.test(i))&&i>-1&&i%1==0&&i<s}return Gs=t,Gs}var Xs,mu;function vc(){if(mu)return Xs;mu=1;var n=9007199254740991;function e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=n}return Xs=e,Xs}var Ys,gu;function tp(){if(gu)return Ys;gu=1;var n=Kn(),e=vc(),t=Yn(),i="[object Arguments]",s="[object Array]",a="[object Boolean]",u="[object Date]",c="[object Error]",f="[object Function]",p="[object Map]",_="[object Number]",b="[object Object]",w="[object RegExp]",x="[object Set]",y="[object String]",C="[object WeakMap]",E="[object ArrayBuffer]",I="[object DataView]",R="[object Float32Array]",L="[object Float64Array]",O="[object Int8Array]",F="[object Int16Array]",$="[object Int32Array]",l="[object Uint8Array]",q="[object Uint8ClampedArray]",A="[object Uint16Array]",N="[object Uint32Array]",H={};H[R]=H[L]=H[O]=H[F]=H[$]=H[l]=H[q]=H[A]=H[N]=!0,H[i]=H[s]=H[E]=H[a]=H[I]=H[u]=H[c]=H[f]=H[p]=H[_]=H[b]=H[w]=H[x]=H[y]=H[C]=!1;function Z(Y){return t(Y)&&e(Y.length)&&!!H[n(Y)]}return Ys=Z,Ys}var Js,_u;function ip(){if(_u)return Js;_u=1;function n(e){return function(t){return e(t)}}return Js=n,Js}var Ji={exports:{}};Ji.exports;var vu;function np(){return vu||(vu=1,(function(n,e){var t=hc(),i=e&&!e.nodeType&&e,s=i&&!0&&n&&!n.nodeType&&n,a=s&&s.exports===i,u=a&&t.process,c=(function(){try{var f=s&&s.require&&s.require("util").types;return f||u&&u.binding&&u.binding("util")}catch{}})();n.exports=c})(Ji,Ji.exports)),Ji.exports}var Qs,yu;function yc(){if(yu)return Qs;yu=1;var n=tp(),e=ip(),t=np(),i=t&&t.isTypedArray,s=i?e(i):n;return Qs=s,Qs}var Zs,bu;function rp(){if(bu)return Zs;bu=1;var n=Yf(),e=Qf(),t=Oa(),i=_c(),s=ep(),a=yc(),u=Object.prototype,c=u.hasOwnProperty;function f(p,_){var b=t(p),w=!b&&e(p),x=!b&&!w&&i(p),y=!b&&!w&&!x&&a(p),C=b||w||x||y,E=C?n(p.length,String):[],I=E.length;for(var R in p)(_||c.call(p,R))&&!(C&&(R=="length"||x&&(R=="offset"||R=="parent")||y&&(R=="buffer"||R=="byteLength"||R=="byteOffset")||s(R,I)))&&E.push(R);return E}return Zs=f,Zs}var ea,xu;function sp(){if(xu)return ea;xu=1;var n=Object.prototype;function e(t){var i=t&&t.constructor,s=typeof i=="function"&&i.prototype||n;return t===s}return ea=e,ea}var ta,wu;function ap(){if(wu)return ta;wu=1;function n(e,t){return function(i){return e(t(i))}}return ta=n,ta}var ia,Su;function op(){if(Su)return ia;Su=1;var n=ap(),e=n(Object.keys,Object);return ia=e,ia}var na,Cu;function lp(){if(Cu)return na;Cu=1;var n=sp(),e=op(),t=Object.prototype,i=t.hasOwnProperty;function s(a){if(!n(a))return e(a);var u=[];for(var c in Object(a))i.call(a,c)&&c!="constructor"&&u.push(c);return u}return na=s,na}var ra,Mu;function up(){if(Mu)return ra;Mu=1;var n=fc(),e=vc();function t(i){return i!=null&&e(i.length)&&!n(i)}return ra=t,ra}var sa,Tu;function cp(){if(Tu)return sa;Tu=1;var n=rp(),e=lp(),t=up();function i(s){return t(s)?n(s):e(s)}return sa=i,sa}var aa,Au;function hp(){if(Au)return aa;Au=1;var n=Vf(),e=Xf(),t=cp();function i(s){return n(s,t,e)}return aa=i,aa}var oa,Eu;function dp(){if(Eu)return oa;Eu=1;var n=hp(),e=1,t=Object.prototype,i=t.hasOwnProperty;function s(a,u,c,f,p,_){var b=c&e,w=n(a),x=w.length,y=n(u),C=y.length;if(x!=C&&!b)return!1;for(var E=x;E--;){var I=w[E];if(!(b?I in u:i.call(u,I)))return!1}var R=_.get(a),L=_.get(u);if(R&&L)return R==u&&L==a;var O=!0;_.set(a,u),_.set(u,a);for(var F=b;++E<x;){I=w[E];var $=a[I],l=u[I];if(f)var q=b?f(l,$,I,u,a,_):f($,l,I,a,u,_);if(!(q===void 0?$===l||p($,l,c,f,_):q)){O=!1;break}F||(F=I=="constructor")}if(O&&!F){var A=a.constructor,N=u.constructor;A!=N&&"constructor"in a&&"constructor"in u&&!(typeof A=="function"&&A instanceof A&&typeof N=="function"&&N instanceof N)&&(O=!1)}return _.delete(a),_.delete(u),O}return oa=s,oa}var la,Iu;function fp(){if(Iu)return la;Iu=1;var n=Hi(),e=Gt(),t=n(e,"DataView");return la=t,la}var ua,zu;function pp(){if(zu)return ua;zu=1;var n=Hi(),e=Gt(),t=n(e,"Promise");return ua=t,ua}var ca,Du;function mp(){if(Du)return ca;Du=1;var n=Hi(),e=Gt(),t=n(e,"Set");return ca=t,ca}var ha,ku;function gp(){if(ku)return ha;ku=1;var n=Hi(),e=Gt(),t=n(e,"WeakMap");return ha=t,ha}var da,Lu;function _p(){if(Lu)return da;Lu=1;var n=fp(),e=Na(),t=pp(),i=mp(),s=gp(),a=Kn(),u=pc(),c="[object Map]",f="[object Object]",p="[object Promise]",_="[object Set]",b="[object WeakMap]",w="[object DataView]",x=u(n),y=u(e),C=u(t),E=u(i),I=u(s),R=a;return(n&&R(new n(new ArrayBuffer(1)))!=w||e&&R(new e)!=c||t&&R(t.resolve())!=p||i&&R(new i)!=_||s&&R(new s)!=b)&&(R=function(L){var O=a(L),F=O==f?L.constructor:void 0,$=F?u(F):"";if($)switch($){case x:return w;case y:return c;case C:return p;case E:return _;case I:return b}return O}),da=R,da}var fa,Ru;function vp(){if(Ru)return fa;Ru=1;var n=Nf(),e=gc(),t=jf(),i=dp(),s=_p(),a=Oa(),u=_c(),c=yc(),f=1,p="[object Arguments]",_="[object Array]",b="[object Object]",w=Object.prototype,x=w.hasOwnProperty;function y(C,E,I,R,L,O){var F=a(C),$=a(E),l=F?_:s(C),q=$?_:s(E);l=l==p?b:l,q=q==p?b:q;var A=l==b,N=q==b,H=l==q;if(H&&u(C)){if(!u(E))return!1;F=!0,A=!1}if(H&&!A)return O||(O=new n),F||c(C)?e(C,E,I,R,L,O):t(C,E,l,I,R,L,O);if(!(I&f)){var Z=A&&x.call(C,"__wrapped__"),Y=N&&x.call(E,"__wrapped__");if(Z||Y){var ce=Z?C.value():C,we=Y?E.value():E;return O||(O=new n),L(ce,we,I,R,O)}}return H?(O||(O=new n),i(C,E,I,R,L,O)):!1}return fa=y,fa}var pa,Nu;function yp(){if(Nu)return pa;Nu=1;var n=vp(),e=Yn();function t(i,s,a,u,c){return i===s?!0:i==null||s==null||!e(i)&&!e(s)?i!==i&&s!==s:n(i,s,a,u,t,c)}return pa=t,pa}var ma,Ou;function bp(){if(Ou)return ma;Ou=1;var n=yp();function e(t,i){return n(t,i)}return ma=e,ma}var xp=bp();const wp=sc(xp);function qu(n,e){return n.filter(t=>e.indexOf(t)===-1)}function xa(n,e){return wp(n,e)}const Zi=Object.assign||function(n,...e){for(let t=1;t<e.length;t++){const i=e[t];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])}return n};function bm(){return zn.uuid4()}function bc(n){const e=Object.keys(n),t=[];return e.forEach(function(i){t.push(n[i])}),Promise.all(t).then(i=>{const s={};for(let a=0;a<e.length;a++)s[e[a]]=i[a];return s})}function Dn(n,e){return function(i){throw e&&console.error(new Error(n)),i}}function Sp(n,e,t){for(let i=0;i<e.length;i++){const s=e[i];let a=t[i];a instanceof DataView||(a=new DataView(a instanceof ArrayBuffer?a:a.buffer));let u=n;for(let c=0;c<s.length-1;c++)u=u[s[c]];u[s[s.length-1]]=a}}function Cp(n){var e;return(e=typeof n=="object"&&n&&"toJSON"in n)!==null&&e!==void 0?e:!1}function Mp(n){return De.isObject(n)}function Tp(n){const e=[],t=[];function i(a,u){if(Cp(a)&&(a=a.toJSON()),Array.isArray(a)){let c=!1;for(let f=0;f<a.length;f++){const p=a[f];if(p)if(p instanceof ArrayBuffer||ArrayBuffer.isView(p))c||(a=a.slice(),c=!0),e.push(ArrayBuffer.isView(p)?p.buffer:p),t.push(u.concat([f])),a[f]=null;else{const _=i(p,u.concat([f]));_!==p&&(c||(a=a.slice(),c=!0),a[f]=_)}}}else if(Mp(a))for(const c in a){let f=!1;if(Object.prototype.hasOwnProperty.call(a,c)){const p=a[c];if(p)if(p instanceof ArrayBuffer||ArrayBuffer.isView(p))f||(a=Object.assign({},a),f=!0),e.push(ArrayBuffer.isView(p)?p.buffer:p),t.push(u.concat([c])),delete a[c];else{const _=i(p,u.concat([c]));_!==p&&(f||(a=Object.assign({},a),f=!0),a[c]=_)}}}return a}return{state:i(n,[]),buffers:e,buffer_paths:t}}const xm=`<svg style="height:50%;max-height: 50px;" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
|
1
|
+
import{c as ti,a as sc,g as Bd}from"./index-DK4nS74r.js";var ie;(function(n){function e(l,q,A=0,N=-1){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y){let ce=(A+Y)%H;if(l[ce]===q)return ce}return-1}n.firstIndexOf=e;function t(l,q,A=-1,N=0){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;A<N?Z=A+1+(H-N):Z=A-N+1;for(let Y=0;Y<Z;++Y){let ce=(A-Y+H)%H;if(l[ce]===q)return ce}return-1}n.lastIndexOf=t;function i(l,q,A=0,N=-1){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y){let ce=(A+Y)%H;if(q(l[ce],ce))return ce}return-1}n.findFirstIndex=i;function s(l,q,A=-1,N=0){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;A<N?Z=A+1+(H-N):Z=A-N+1;for(let Y=0;Y<Z;++Y){let ce=(A-Y+H)%H;if(q(l[ce],ce))return ce}return-1}n.findLastIndex=s;function a(l,q,A=0,N=-1){let H=i(l,q,A,N);return H!==-1?l[H]:void 0}n.findFirstValue=a;function u(l,q,A=-1,N=0){let H=s(l,q,A,N);return H!==-1?l[H]:void 0}n.findLastValue=u;function c(l,q,A,N=0,H=-1){let Z=l.length;if(Z===0)return 0;N<0?N=Math.max(0,N+Z):N=Math.min(N,Z-1),H<0?H=Math.max(0,H+Z):H=Math.min(H,Z-1);let Y=N,ce=H-N+1;for(;ce>0;){let we=ce>>1,He=Y+we;A(l[He],q)<0?(Y=He+1,ce-=we+1):ce=we}return Y}n.lowerBound=c;function f(l,q,A,N=0,H=-1){let Z=l.length;if(Z===0)return 0;N<0?N=Math.max(0,N+Z):N=Math.min(N,Z-1),H<0?H=Math.max(0,H+Z):H=Math.min(H,Z-1);let Y=N,ce=H-N+1;for(;ce>0;){let we=ce>>1,He=Y+we;A(l[He],q)>0?ce=we:(Y=He+1,ce-=we+1)}return Y}n.upperBound=f;function p(l,q,A){if(l===q)return!0;if(l.length!==q.length)return!1;for(let N=0,H=l.length;N<H;++N)if(A?!A(l[N],q[N]):l[N]!==q[N])return!1;return!0}n.shallowEqual=p;function _(l,q={}){let{start:A,stop:N,step:H}=q;if(H===void 0&&(H=1),H===0)throw new Error("Slice `step` cannot be zero.");let Z=l.length;A===void 0?A=H<0?Z-1:0:A<0?A=Math.max(A+Z,H<0?-1:0):A>=Z&&(A=H<0?Z-1:Z),N===void 0?N=H<0?-1:Z:N<0?N=Math.max(N+Z,H<0?-1:0):N>=Z&&(N=H<0?Z-1:Z);let Y;H<0&&N>=A||H>0&&A>=N?Y=0:H<0?Y=Math.floor((N-A+1)/H+1):Y=Math.floor((N-A-1)/H+1);let ce=[];for(let we=0;we<Y;++we)ce[we]=l[A+we*H];return ce}n.slice=_;function b(l,q,A){let N=l.length;if(N<=1||(q<0?q=Math.max(0,q+N):q=Math.min(q,N-1),A<0?A=Math.max(0,A+N):A=Math.min(A,N-1),q===A))return;let H=l[q],Z=q<A?1:-1;for(let Y=q;Y!==A;Y+=Z)l[Y]=l[Y+Z];l[A]=H}n.move=b;function w(l,q=0,A=-1){let N=l.length;if(!(N<=1))for(q<0?q=Math.max(0,q+N):q=Math.min(q,N-1),A<0?A=Math.max(0,A+N):A=Math.min(A,N-1);q<A;){let H=l[q],Z=l[A];l[q++]=Z,l[A--]=H}}n.reverse=w;function x(l,q,A=0,N=-1){let H=l.length;if(H<=1||(A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1),A>=N))return;let Z=N-A+1;if(q>0?q=q%Z:q<0&&(q=(q%Z+Z)%Z),q===0)return;let Y=A+q;w(l,A,Y-1),w(l,Y,N),w(l,A,N)}n.rotate=x;function y(l,q,A=0,N=-1){let H=l.length;if(H===0)return;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y)l[(A+Y)%H]=q}n.fill=y;function C(l,q,A){let N=l.length;q<0?q=Math.max(0,q+N):q=Math.min(q,N);for(let H=N;H>q;--H)l[H]=l[H-1];l[q]=A}n.insert=C;function E(l,q){let A=l.length;if(q<0&&(q+=A),q<0||q>=A)return;let N=l[q];for(let H=q+1;H<A;++H)l[H-1]=l[H];return l.length=A-1,N}n.removeAt=E;function I(l,q,A=0,N=-1){let H=e(l,q,A,N);return H!==-1&&E(l,H),H}n.removeFirstOf=I;function R(l,q,A=-1,N=0){let H=t(l,q,A,N);return H!==-1&&E(l,H),H}n.removeLastOf=R;function L(l,q,A=0,N=-1){let H=l.length;if(H===0)return 0;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z=0;for(let Y=0;Y<H;++Y)A<=N&&Y>=A&&Y<=N&&l[Y]===q||N<A&&(Y<=N||Y>=A)&&l[Y]===q?Z++:Z>0&&(l[Y-Z]=l[Y]);return Z>0&&(l.length=H-Z),Z}n.removeAllOf=L;function O(l,q,A=0,N=-1){let H,Z=i(l,q,A,N);return Z!==-1&&(H=E(l,Z)),{index:Z,value:H}}n.removeFirstWhere=O;function F(l,q,A=-1,N=0){let H,Z=s(l,q,A,N);return Z!==-1&&(H=E(l,Z)),{index:Z,value:H}}n.removeLastWhere=F;function $(l,q,A=0,N=-1){let H=l.length;if(H===0)return 0;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z=0;for(let Y=0;Y<H;++Y)A<=N&&Y>=A&&Y<=N&&q(l[Y],Y)||N<A&&(Y<=N||Y>=A)&&q(l[Y],Y)?Z++:Z>0&&(l[Y-Z]=l[Y]);return Z>0&&(l.length=H-Z),Z}n.removeAllWhere=$})(ie||(ie={}));function*Pd(...n){for(const e of n)yield*e}function*Ii(){}function*Fd(n,e=0){for(const t of n)yield[e++,t]}function*Wd(n,e){let t=0;for(const i of n)e(i,t++)&&(yield i)}function en(n,e){let t=0;for(const i of n)if(e(i,t++))return i}function $d(n,e){let t=0;for(const i of n)if(e(i,t++))return t-1;return-1}function jd(n,e){let t;for(const i of n){if(t===void 0){t=i;continue}e(i,t)<0&&(t=i)}return t}function ac(n,e){let t;for(const i of n){if(t===void 0){t=i;continue}e(i,t)>0&&(t=i)}return t}function Ud(n,e){let t=!0,i,s;for(const a of n)t?(i=a,s=a,t=!1):e(a,i)<0?i=a:e(a,s)>0&&(s=a);return t?void 0:[i,s]}function Vd(n){return Array.from(n)}function Kd(n){const e={};for(const[t,i]of n)e[t]=i;return e}function Gd(n,e){let t=0;for(const i of n)if(e(i,t++)===!1)return}function La(n,e){let t=0;for(const i of n)if(e(i,t++)===!1)return!1;return!0}function oc(n,e){let t=0;for(const i of n)if(e(i,t++))return!0;return!1}function*Xd(n,e){let t=0;for(const i of n)yield e(i,t++)}function*Yd(n,e,t){e===void 0?(e=n,n=0,t=1):t===void 0&&(t=1);const i=ya.rangeLength(n,e,t);for(let s=0;s<i;s++)yield n+t*s}var ya;(function(n){function e(t,i,s){return s===0?1/0:t>i&&s>0||t<i&&s<0?0:Math.ceil((i-t)/s)}n.rangeLength=e})(ya||(ya={}));function Jd(n,e,t){const i=n[Symbol.iterator]();let s=0,a=i.next();if(a.done&&t===void 0)throw new TypeError("Reduce of empty iterable with no initial value.");if(a.done)return t;let u=i.next();if(u.done&&t===void 0)return a.value;if(u.done)return e(t,a.value,s++);let c;t===void 0?c=e(a.value,u.value,s++):c=e(e(t,a.value,s++),u.value,s++);let f;for(;!(f=i.next()).done;)c=e(c,f.value,s++);return c}function*Qd(n,e){for(;0<e--;)yield n}function*Zd(n){yield n}function*lc(n){if(typeof n.retro=="function")yield*n.retro();else for(let e=n.length-1;e>-1;e--)yield n[e]}function uc(n){let e=[],t=new Set,i=new Map;for(const u of n)s(u);for(const[u]of i)a(u);return e;function s(u){let[c,f]=u,p=i.get(f);p?p.push(c):i.set(f,[c])}function a(u){if(t.has(u))return;t.add(u);let c=i.get(u);if(c)for(const f of c)a(f);e.push(u)}}function*ef(n,e){let t=0;for(const i of n)t++%e===0&&(yield i)}var Li;(function(n){function e(u,c,f=0){let p=new Array(c.length);for(let _=0,b=f,w=c.length;_<w;++_,++b){if(b=u.indexOf(c[_],b),b===-1)return null;p[_]=b}return p}n.findIndices=e;function t(u,c,f=0){let p=e(u,c,f);if(!p)return null;let _=0;for(let b=0,w=p.length;b<w;++b){let x=p[b]-f;_+=x*x}return{score:_,indices:p}}n.matchSumOfSquares=t;function i(u,c,f=0){let p=e(u,c,f);if(!p)return null;let _=0,b=f-1;for(let w=0,x=p.length;w<x;++w){let y=p[w];_+=y-b-1,b=y}return{score:_,indices:p}}n.matchSumOfDeltas=i;function s(u,c,f){let p=[],_=0,b=0,w=c.length;for(;_<w;){let x=c[_],y=c[_];for(;++_<w&&c[_]===y+1;)y++;b<x&&p.push(u.slice(b,x)),x<y+1&&p.push(f(u.slice(x,y+1))),b=y+1}return b<u.length&&p.push(u.slice(b)),p}n.highlight=s;function a(u,c){return u<c?-1:u>c?1:0}n.cmp=a})(Li||(Li={}));function*tf(n,e){if(e<1)return;const t=n[Symbol.iterator]();let i;for(;0<e--&&!(i=t.next()).done;)yield i.value}function*nf(...n){const e=n.map(i=>i[Symbol.iterator]());let t=e.map(i=>i.next());for(;La(t,i=>!i.done);t=e.map(i=>i.next()))yield t.map(i=>i.value)}const vm=Object.freeze(Object.defineProperty({__proto__:null,get ArrayExt(){return ie},get StringExt(){return Li},chain:Pd,each:Gd,empty:Ii,enumerate:Fd,every:La,filter:Wd,find:en,findIndex:$d,map:Xd,max:ac,min:jd,minmax:Ud,once:Zd,range:Yd,reduce:Jd,repeat:Qd,retro:lc,some:oc,stride:ef,take:tf,toArray:Vd,toObject:Kd,topologicSort:uc,zip:nf},Symbol.toStringTag,{value:"Module"}));var De;(function(n){n.emptyObject=Object.freeze({}),n.emptyArray=Object.freeze([]);function e(_){return _===null||typeof _=="boolean"||typeof _=="number"||typeof _=="string"}n.isPrimitive=e;function t(_){return Array.isArray(_)}n.isArray=t;function i(_){return!e(_)&&!t(_)}n.isObject=i;function s(_,b){if(_===b)return!0;if(e(_)||e(b))return!1;let w=t(_),x=t(b);return w!==x?!1:w&&x?u(_,b):c(_,b)}n.deepEqual=s;function a(_){return e(_)?_:t(_)?f(_):p(_)}n.deepCopy=a;function u(_,b){if(_===b)return!0;if(_.length!==b.length)return!1;for(let w=0,x=_.length;w<x;++w)if(!s(_[w],b[w]))return!1;return!0}function c(_,b){if(_===b)return!0;for(let w in _)if(_[w]!==void 0&&!(w in b))return!1;for(let w in b)if(b[w]!==void 0&&!(w in _))return!1;for(let w in _){let x=_[w],y=b[w];if(!(x===void 0&&y===void 0)&&(x===void 0||y===void 0||!s(x,y)))return!1}return!0}function f(_){let b=new Array(_.length);for(let w=0,x=_.length;w<x;++w)b[w]=a(_[w]);return b}function p(_){let b={};for(let w in _){let x=_[w];x!==void 0&&(b[w]=a(x))}return b}})(De||(De={}));class rf{constructor(){this._types=[],this._values=[]}types(){return this._types.slice()}hasData(e){return this._types.indexOf(e)!==-1}getData(e){let t=this._types.indexOf(e);return t!==-1?this._values[t]:void 0}setData(e,t){this.clearData(e),this._types.push(e),this._values.push(t)}clearData(e){let t=this._types.indexOf(e);t!==-1&&(this._types.splice(t,1),this._values.splice(t,1))}clear(){this._types.length=0,this._values.length=0}}var tl;(function(n){class e{constructor(c){var f,p,_,b;this._activated=!1,this._promise=null,this._service=null,this.id=c.id,this.description=(f=c.description)!==null&&f!==void 0?f:"",this.activate=c.activate,this.deactivate=(p=c.deactivate)!==null&&p!==void 0?p:null,this.provides=(_=c.provides)!==null&&_!==void 0?_:null,this.autoStart=(b=c.autoStart)!==null&&b!==void 0?b:!1,this.requires=c.requires?c.requires.slice():[],this.optional=c.optional?c.optional.slice():[]}get activated(){return this._activated}set activated(c){this._activated=c}get service(){return this._service}set service(c){this._service=c}get promise(){return this._promise}set promise(c){this._promise=c}}function t(u){return new e(u)}n.createPluginData=t;function i(u,c,f){const p=[...u.requires,...u.optional],_=w=>{if(w===u.provides)return!0;const x=f.get(w);if(!x)return!1;const y=c.get(x),C=[...y.requires,...y.optional];return C.length===0?!1:(b.push(x),C.some(_)?!0:(b.pop(),!1))};if(!u.provides||p.length===0)return;const b=[u.id];if(p.some(_))throw new ReferenceError(`Cycle detected: ${b.join(" -> ")}.`)}n.ensureNoCycle=i;function s(u,c,f){const p=new Array,_=C=>{const E=c.get(C),I=[...E.requires,...E.optional];p.push(...I.reduce((R,L)=>{const O=f.get(L);return O&&R.push([C,O]),R},[]))};for(const C of c.keys())_(C);const b=p.filter(C=>C[1]===u);let w=0;for(;b.length>w;){const C=b.length,E=new Set(b.map(I=>I[0]));for(const I of E)p.filter(R=>R[1]===I).forEach(R=>{b.includes(R)||b.push(R)});w=C}const x=uc(b),y=x.findIndex(C=>C===u);return y===-1?[u]:x.slice(0,y+1)}n.findDependents=s;function a(u,c){const f=new Set;for(const p of u.keys())u.get(p).autoStart===!0&&f.add(p);if(c.startPlugins)for(const p of c.startPlugins)f.add(p);if(c.ignorePlugins)for(const p of c.ignorePlugins)f.delete(p);return Array.from(f)}n.collectStartupPlugins=a})(tl||(tl={}));class Or{constructor(){this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}resolve(e){let t=this._resolve;t(e)}reject(e){let t=this._reject;t(e)}}class ym{constructor(e,t){this.name=e,this.description=t??"",this._tokenStructuralPropertyT=null}}function sf(n){let e=0;for(let t=0,i=n.length;t<i;++t)t%4===0&&(e=Math.random()*4294967295>>>0),n[t]=e&255,e>>>=8}var ba;(function(n){n.getRandomValues=(()=>{const e=typeof window<"u"&&(window.crypto||window.msCrypto)||null;return e&&typeof e.getRandomValues=="function"?function(i){return e.getRandomValues(i)}:sf})()})(ba||(ba={}));function af(n){const e=new Uint8Array(16),t=new Array(256);for(let i=0;i<16;++i)t[i]="0"+i.toString(16);for(let i=16;i<256;++i)t[i]=i.toString(16);return function(){return n(e),e[6]=64|e[6]&15,e[8]=128|e[8]&63,t[e[0]]+t[e[1]]+t[e[2]]+t[e[3]]+"-"+t[e[4]]+t[e[5]]+"-"+t[e[6]]+t[e[7]]+"-"+t[e[8]]+t[e[9]]+"-"+t[e[10]]+t[e[11]]+t[e[12]]+t[e[13]]+t[e[14]]+t[e[15]]}}var zn;(function(n){n.uuid4=af(ba.getRandomValues)})(zn||(zn={}));var qr,il;function of(){if(il)return qr;il=1;function n(){this.__data__=[],this.size=0}return qr=n,qr}var Hr,nl;function cc(){if(nl)return Hr;nl=1;function n(e,t){return e===t||e!==e&&t!==t}return Hr=n,Hr}var Br,rl;function Un(){if(rl)return Br;rl=1;var n=cc();function e(t,i){for(var s=t.length;s--;)if(n(t[s][0],i))return s;return-1}return Br=e,Br}var Pr,sl;function lf(){if(sl)return Pr;sl=1;var n=Un(),e=Array.prototype,t=e.splice;function i(s){var a=this.__data__,u=n(a,s);if(u<0)return!1;var c=a.length-1;return u==c?a.pop():t.call(a,u,1),--this.size,!0}return Pr=i,Pr}var Fr,al;function uf(){if(al)return Fr;al=1;var n=Un();function e(t){var i=this.__data__,s=n(i,t);return s<0?void 0:i[s][1]}return Fr=e,Fr}var Wr,ol;function cf(){if(ol)return Wr;ol=1;var n=Un();function e(t){return n(this.__data__,t)>-1}return Wr=e,Wr}var $r,ll;function hf(){if(ll)return $r;ll=1;var n=Un();function e(t,i){var s=this.__data__,a=n(s,t);return a<0?(++this.size,s.push([t,i])):s[a][1]=i,this}return $r=e,$r}var jr,ul;function Vn(){if(ul)return jr;ul=1;var n=of(),e=lf(),t=uf(),i=cf(),s=hf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,jr=a,jr}var Ur,cl;function df(){if(cl)return Ur;cl=1;var n=Vn();function e(){this.__data__=new n,this.size=0}return Ur=e,Ur}var Vr,hl;function ff(){if(hl)return Vr;hl=1;function n(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}return Vr=n,Vr}var Kr,dl;function pf(){if(dl)return Kr;dl=1;function n(e){return this.__data__.get(e)}return Kr=n,Kr}var Gr,fl;function mf(){if(fl)return Gr;fl=1;function n(e){return this.__data__.has(e)}return Gr=n,Gr}var Xr,pl;function hc(){if(pl)return Xr;pl=1;var n=typeof ti=="object"&&ti&&ti.Object===Object&&ti;return Xr=n,Xr}var Yr,ml;function Gt(){if(ml)return Yr;ml=1;var n=hc(),e=typeof self=="object"&&self&&self.Object===Object&&self,t=n||e||Function("return this")();return Yr=t,Yr}var Jr,gl;function Ra(){if(gl)return Jr;gl=1;var n=Gt(),e=n.Symbol;return Jr=e,Jr}var Qr,_l;function gf(){if(_l)return Qr;_l=1;var n=Ra(),e=Object.prototype,t=e.hasOwnProperty,i=e.toString,s=n?n.toStringTag:void 0;function a(u){var c=t.call(u,s),f=u[s];try{u[s]=void 0;var p=!0}catch{}var _=i.call(u);return p&&(c?u[s]=f:delete u[s]),_}return Qr=a,Qr}var Zr,vl;function _f(){if(vl)return Zr;vl=1;var n=Object.prototype,e=n.toString;function t(i){return e.call(i)}return Zr=t,Zr}var es,yl;function Kn(){if(yl)return es;yl=1;var n=Ra(),e=gf(),t=_f(),i="[object Null]",s="[object Undefined]",a=n?n.toStringTag:void 0;function u(c){return c==null?c===void 0?s:i:a&&a in Object(c)?e(c):t(c)}return es=u,es}var ts,bl;function dc(){if(bl)return ts;bl=1;function n(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}return ts=n,ts}var is,xl;function fc(){if(xl)return is;xl=1;var n=Kn(),e=dc(),t="[object AsyncFunction]",i="[object Function]",s="[object GeneratorFunction]",a="[object Proxy]";function u(c){if(!e(c))return!1;var f=n(c);return f==i||f==s||f==t||f==a}return is=u,is}var ns,wl;function vf(){if(wl)return ns;wl=1;var n=Gt(),e=n["__core-js_shared__"];return ns=e,ns}var rs,Sl;function yf(){if(Sl)return rs;Sl=1;var n=vf(),e=(function(){var i=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""})();function t(i){return!!e&&e in i}return rs=t,rs}var ss,Cl;function pc(){if(Cl)return ss;Cl=1;var n=Function.prototype,e=n.toString;function t(i){if(i!=null){try{return e.call(i)}catch{}try{return i+""}catch{}}return""}return ss=t,ss}var as,Ml;function bf(){if(Ml)return as;Ml=1;var n=fc(),e=yf(),t=dc(),i=pc(),s=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,f=u.toString,p=c.hasOwnProperty,_=RegExp("^"+f.call(p).replace(s,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function b(w){if(!t(w)||e(w))return!1;var x=n(w)?_:a;return x.test(i(w))}return as=b,as}var os,Tl;function xf(){if(Tl)return os;Tl=1;function n(e,t){return e==null?void 0:e[t]}return os=n,os}var ls,Al;function Hi(){if(Al)return ls;Al=1;var n=bf(),e=xf();function t(i,s){var a=e(i,s);return n(a)?a:void 0}return ls=t,ls}var us,El;function Na(){if(El)return us;El=1;var n=Hi(),e=Gt(),t=n(e,"Map");return us=t,us}var cs,Il;function Gn(){if(Il)return cs;Il=1;var n=Hi(),e=n(Object,"create");return cs=e,cs}var hs,zl;function wf(){if(zl)return hs;zl=1;var n=Gn();function e(){this.__data__=n?n(null):{},this.size=0}return hs=e,hs}var ds,Dl;function Sf(){if(Dl)return ds;Dl=1;function n(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}return ds=n,ds}var fs,kl;function Cf(){if(kl)return fs;kl=1;var n=Gn(),e="__lodash_hash_undefined__",t=Object.prototype,i=t.hasOwnProperty;function s(a){var u=this.__data__;if(n){var c=u[a];return c===e?void 0:c}return i.call(u,a)?u[a]:void 0}return fs=s,fs}var ps,Ll;function Mf(){if(Ll)return ps;Ll=1;var n=Gn(),e=Object.prototype,t=e.hasOwnProperty;function i(s){var a=this.__data__;return n?a[s]!==void 0:t.call(a,s)}return ps=i,ps}var ms,Rl;function Tf(){if(Rl)return ms;Rl=1;var n=Gn(),e="__lodash_hash_undefined__";function t(i,s){var a=this.__data__;return this.size+=this.has(i)?0:1,a[i]=n&&s===void 0?e:s,this}return ms=t,ms}var gs,Nl;function Af(){if(Nl)return gs;Nl=1;var n=wf(),e=Sf(),t=Cf(),i=Mf(),s=Tf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,gs=a,gs}var _s,Ol;function Ef(){if(Ol)return _s;Ol=1;var n=Af(),e=Vn(),t=Na();function i(){this.size=0,this.__data__={hash:new n,map:new(t||e),string:new n}}return _s=i,_s}var vs,ql;function If(){if(ql)return vs;ql=1;function n(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}return vs=n,vs}var ys,Hl;function Xn(){if(Hl)return ys;Hl=1;var n=If();function e(t,i){var s=t.__data__;return n(i)?s[typeof i=="string"?"string":"hash"]:s.map}return ys=e,ys}var bs,Bl;function zf(){if(Bl)return bs;Bl=1;var n=Xn();function e(t){var i=n(this,t).delete(t);return this.size-=i?1:0,i}return bs=e,bs}var xs,Pl;function Df(){if(Pl)return xs;Pl=1;var n=Xn();function e(t){return n(this,t).get(t)}return xs=e,xs}var ws,Fl;function kf(){if(Fl)return ws;Fl=1;var n=Xn();function e(t){return n(this,t).has(t)}return ws=e,ws}var Ss,Wl;function Lf(){if(Wl)return Ss;Wl=1;var n=Xn();function e(t,i){var s=n(this,t),a=s.size;return s.set(t,i),this.size+=s.size==a?0:1,this}return Ss=e,Ss}var Cs,$l;function mc(){if($l)return Cs;$l=1;var n=Ef(),e=zf(),t=Df(),i=kf(),s=Lf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,Cs=a,Cs}var Ms,jl;function Rf(){if(jl)return Ms;jl=1;var n=Vn(),e=Na(),t=mc(),i=200;function s(a,u){var c=this.__data__;if(c instanceof n){var f=c.__data__;if(!e||f.length<i-1)return f.push([a,u]),this.size=++c.size,this;c=this.__data__=new t(f)}return c.set(a,u),this.size=c.size,this}return Ms=s,Ms}var Ts,Ul;function Nf(){if(Ul)return Ts;Ul=1;var n=Vn(),e=df(),t=ff(),i=pf(),s=mf(),a=Rf();function u(c){var f=this.__data__=new n(c);this.size=f.size}return u.prototype.clear=e,u.prototype.delete=t,u.prototype.get=i,u.prototype.has=s,u.prototype.set=a,Ts=u,Ts}var As,Vl;function Of(){if(Vl)return As;Vl=1;var n="__lodash_hash_undefined__";function e(t){return this.__data__.set(t,n),this}return As=e,As}var Es,Kl;function qf(){if(Kl)return Es;Kl=1;function n(e){return this.__data__.has(e)}return Es=n,Es}var Is,Gl;function Hf(){if(Gl)return Is;Gl=1;var n=mc(),e=Of(),t=qf();function i(s){var a=-1,u=s==null?0:s.length;for(this.__data__=new n;++a<u;)this.add(s[a])}return i.prototype.add=i.prototype.push=e,i.prototype.has=t,Is=i,Is}var zs,Xl;function Bf(){if(Xl)return zs;Xl=1;function n(e,t){for(var i=-1,s=e==null?0:e.length;++i<s;)if(t(e[i],i,e))return!0;return!1}return zs=n,zs}var Ds,Yl;function Pf(){if(Yl)return Ds;Yl=1;function n(e,t){return e.has(t)}return Ds=n,Ds}var ks,Jl;function gc(){if(Jl)return ks;Jl=1;var n=Hf(),e=Bf(),t=Pf(),i=1,s=2;function a(u,c,f,p,_,b){var w=f&i,x=u.length,y=c.length;if(x!=y&&!(w&&y>x))return!1;var C=b.get(u),E=b.get(c);if(C&&E)return C==c&&E==u;var I=-1,R=!0,L=f&s?new n:void 0;for(b.set(u,c),b.set(c,u);++I<x;){var O=u[I],F=c[I];if(p)var $=w?p(F,O,I,c,u,b):p(O,F,I,u,c,b);if($!==void 0){if($)continue;R=!1;break}if(L){if(!e(c,function(l,q){if(!t(L,q)&&(O===l||_(O,l,f,p,b)))return L.push(q)})){R=!1;break}}else if(!(O===F||_(O,F,f,p,b))){R=!1;break}}return b.delete(u),b.delete(c),R}return ks=a,ks}var Ls,Ql;function Ff(){if(Ql)return Ls;Ql=1;var n=Gt(),e=n.Uint8Array;return Ls=e,Ls}var Rs,Zl;function Wf(){if(Zl)return Rs;Zl=1;function n(e){var t=-1,i=Array(e.size);return e.forEach(function(s,a){i[++t]=[a,s]}),i}return Rs=n,Rs}var Ns,eu;function $f(){if(eu)return Ns;eu=1;function n(e){var t=-1,i=Array(e.size);return e.forEach(function(s){i[++t]=s}),i}return Ns=n,Ns}var Os,tu;function jf(){if(tu)return Os;tu=1;var n=Ra(),e=Ff(),t=cc(),i=gc(),s=Wf(),a=$f(),u=1,c=2,f="[object Boolean]",p="[object Date]",_="[object Error]",b="[object Map]",w="[object Number]",x="[object RegExp]",y="[object Set]",C="[object String]",E="[object Symbol]",I="[object ArrayBuffer]",R="[object DataView]",L=n?n.prototype:void 0,O=L?L.valueOf:void 0;function F($,l,q,A,N,H,Z){switch(q){case R:if($.byteLength!=l.byteLength||$.byteOffset!=l.byteOffset)return!1;$=$.buffer,l=l.buffer;case I:return!($.byteLength!=l.byteLength||!H(new e($),new e(l)));case f:case p:case w:return t(+$,+l);case _:return $.name==l.name&&$.message==l.message;case x:case C:return $==l+"";case b:var Y=s;case y:var ce=A&u;if(Y||(Y=a),$.size!=l.size&&!ce)return!1;var we=Z.get($);if(we)return we==l;A|=c,Z.set($,l);var He=i(Y($),Y(l),A,N,H,Z);return Z.delete($),He;case E:if(O)return O.call($)==O.call(l)}return!1}return Os=F,Os}var qs,iu;function Uf(){if(iu)return qs;iu=1;function n(e,t){for(var i=-1,s=t.length,a=e.length;++i<s;)e[a+i]=t[i];return e}return qs=n,qs}var Hs,nu;function Oa(){if(nu)return Hs;nu=1;var n=Array.isArray;return Hs=n,Hs}var Bs,ru;function Vf(){if(ru)return Bs;ru=1;var n=Uf(),e=Oa();function t(i,s,a){var u=s(i);return e(i)?u:n(u,a(i))}return Bs=t,Bs}var Ps,su;function Kf(){if(su)return Ps;su=1;function n(e,t){for(var i=-1,s=e==null?0:e.length,a=0,u=[];++i<s;){var c=e[i];t(c,i,e)&&(u[a++]=c)}return u}return Ps=n,Ps}var Fs,au;function Gf(){if(au)return Fs;au=1;function n(){return[]}return Fs=n,Fs}var Ws,ou;function Xf(){if(ou)return Ws;ou=1;var n=Kf(),e=Gf(),t=Object.prototype,i=t.propertyIsEnumerable,s=Object.getOwnPropertySymbols,a=s?function(u){return u==null?[]:(u=Object(u),n(s(u),function(c){return i.call(u,c)}))}:e;return Ws=a,Ws}var $s,lu;function Yf(){if(lu)return $s;lu=1;function n(e,t){for(var i=-1,s=Array(e);++i<e;)s[i]=t(i);return s}return $s=n,$s}var js,uu;function Yn(){if(uu)return js;uu=1;function n(e){return e!=null&&typeof e=="object"}return js=n,js}var Us,cu;function Jf(){if(cu)return Us;cu=1;var n=Kn(),e=Yn(),t="[object Arguments]";function i(s){return e(s)&&n(s)==t}return Us=i,Us}var Vs,hu;function Qf(){if(hu)return Vs;hu=1;var n=Jf(),e=Yn(),t=Object.prototype,i=t.hasOwnProperty,s=t.propertyIsEnumerable,a=n((function(){return arguments})())?n:function(u){return e(u)&&i.call(u,"callee")&&!s.call(u,"callee")};return Vs=a,Vs}var Yi={exports:{}},Ks,du;function Zf(){if(du)return Ks;du=1;function n(){return!1}return Ks=n,Ks}Yi.exports;var fu;function _c(){return fu||(fu=1,(function(n,e){var t=Gt(),i=Zf(),s=e&&!e.nodeType&&e,a=s&&!0&&n&&!n.nodeType&&n,u=a&&a.exports===s,c=u?t.Buffer:void 0,f=c?c.isBuffer:void 0,p=f||i;n.exports=p})(Yi,Yi.exports)),Yi.exports}var Gs,pu;function ep(){if(pu)return Gs;pu=1;var n=9007199254740991,e=/^(?:0|[1-9]\d*)$/;function t(i,s){var a=typeof i;return s=s??n,!!s&&(a=="number"||a!="symbol"&&e.test(i))&&i>-1&&i%1==0&&i<s}return Gs=t,Gs}var Xs,mu;function vc(){if(mu)return Xs;mu=1;var n=9007199254740991;function e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=n}return Xs=e,Xs}var Ys,gu;function tp(){if(gu)return Ys;gu=1;var n=Kn(),e=vc(),t=Yn(),i="[object Arguments]",s="[object Array]",a="[object Boolean]",u="[object Date]",c="[object Error]",f="[object Function]",p="[object Map]",_="[object Number]",b="[object Object]",w="[object RegExp]",x="[object Set]",y="[object String]",C="[object WeakMap]",E="[object ArrayBuffer]",I="[object DataView]",R="[object Float32Array]",L="[object Float64Array]",O="[object Int8Array]",F="[object Int16Array]",$="[object Int32Array]",l="[object Uint8Array]",q="[object Uint8ClampedArray]",A="[object Uint16Array]",N="[object Uint32Array]",H={};H[R]=H[L]=H[O]=H[F]=H[$]=H[l]=H[q]=H[A]=H[N]=!0,H[i]=H[s]=H[E]=H[a]=H[I]=H[u]=H[c]=H[f]=H[p]=H[_]=H[b]=H[w]=H[x]=H[y]=H[C]=!1;function Z(Y){return t(Y)&&e(Y.length)&&!!H[n(Y)]}return Ys=Z,Ys}var Js,_u;function ip(){if(_u)return Js;_u=1;function n(e){return function(t){return e(t)}}return Js=n,Js}var Ji={exports:{}};Ji.exports;var vu;function np(){return vu||(vu=1,(function(n,e){var t=hc(),i=e&&!e.nodeType&&e,s=i&&!0&&n&&!n.nodeType&&n,a=s&&s.exports===i,u=a&&t.process,c=(function(){try{var f=s&&s.require&&s.require("util").types;return f||u&&u.binding&&u.binding("util")}catch{}})();n.exports=c})(Ji,Ji.exports)),Ji.exports}var Qs,yu;function yc(){if(yu)return Qs;yu=1;var n=tp(),e=ip(),t=np(),i=t&&t.isTypedArray,s=i?e(i):n;return Qs=s,Qs}var Zs,bu;function rp(){if(bu)return Zs;bu=1;var n=Yf(),e=Qf(),t=Oa(),i=_c(),s=ep(),a=yc(),u=Object.prototype,c=u.hasOwnProperty;function f(p,_){var b=t(p),w=!b&&e(p),x=!b&&!w&&i(p),y=!b&&!w&&!x&&a(p),C=b||w||x||y,E=C?n(p.length,String):[],I=E.length;for(var R in p)(_||c.call(p,R))&&!(C&&(R=="length"||x&&(R=="offset"||R=="parent")||y&&(R=="buffer"||R=="byteLength"||R=="byteOffset")||s(R,I)))&&E.push(R);return E}return Zs=f,Zs}var ea,xu;function sp(){if(xu)return ea;xu=1;var n=Object.prototype;function e(t){var i=t&&t.constructor,s=typeof i=="function"&&i.prototype||n;return t===s}return ea=e,ea}var ta,wu;function ap(){if(wu)return ta;wu=1;function n(e,t){return function(i){return e(t(i))}}return ta=n,ta}var ia,Su;function op(){if(Su)return ia;Su=1;var n=ap(),e=n(Object.keys,Object);return ia=e,ia}var na,Cu;function lp(){if(Cu)return na;Cu=1;var n=sp(),e=op(),t=Object.prototype,i=t.hasOwnProperty;function s(a){if(!n(a))return e(a);var u=[];for(var c in Object(a))i.call(a,c)&&c!="constructor"&&u.push(c);return u}return na=s,na}var ra,Mu;function up(){if(Mu)return ra;Mu=1;var n=fc(),e=vc();function t(i){return i!=null&&e(i.length)&&!n(i)}return ra=t,ra}var sa,Tu;function cp(){if(Tu)return sa;Tu=1;var n=rp(),e=lp(),t=up();function i(s){return t(s)?n(s):e(s)}return sa=i,sa}var aa,Au;function hp(){if(Au)return aa;Au=1;var n=Vf(),e=Xf(),t=cp();function i(s){return n(s,t,e)}return aa=i,aa}var oa,Eu;function dp(){if(Eu)return oa;Eu=1;var n=hp(),e=1,t=Object.prototype,i=t.hasOwnProperty;function s(a,u,c,f,p,_){var b=c&e,w=n(a),x=w.length,y=n(u),C=y.length;if(x!=C&&!b)return!1;for(var E=x;E--;){var I=w[E];if(!(b?I in u:i.call(u,I)))return!1}var R=_.get(a),L=_.get(u);if(R&&L)return R==u&&L==a;var O=!0;_.set(a,u),_.set(u,a);for(var F=b;++E<x;){I=w[E];var $=a[I],l=u[I];if(f)var q=b?f(l,$,I,u,a,_):f($,l,I,a,u,_);if(!(q===void 0?$===l||p($,l,c,f,_):q)){O=!1;break}F||(F=I=="constructor")}if(O&&!F){var A=a.constructor,N=u.constructor;A!=N&&"constructor"in a&&"constructor"in u&&!(typeof A=="function"&&A instanceof A&&typeof N=="function"&&N instanceof N)&&(O=!1)}return _.delete(a),_.delete(u),O}return oa=s,oa}var la,Iu;function fp(){if(Iu)return la;Iu=1;var n=Hi(),e=Gt(),t=n(e,"DataView");return la=t,la}var ua,zu;function pp(){if(zu)return ua;zu=1;var n=Hi(),e=Gt(),t=n(e,"Promise");return ua=t,ua}var ca,Du;function mp(){if(Du)return ca;Du=1;var n=Hi(),e=Gt(),t=n(e,"Set");return ca=t,ca}var ha,ku;function gp(){if(ku)return ha;ku=1;var n=Hi(),e=Gt(),t=n(e,"WeakMap");return ha=t,ha}var da,Lu;function _p(){if(Lu)return da;Lu=1;var n=fp(),e=Na(),t=pp(),i=mp(),s=gp(),a=Kn(),u=pc(),c="[object Map]",f="[object Object]",p="[object Promise]",_="[object Set]",b="[object WeakMap]",w="[object DataView]",x=u(n),y=u(e),C=u(t),E=u(i),I=u(s),R=a;return(n&&R(new n(new ArrayBuffer(1)))!=w||e&&R(new e)!=c||t&&R(t.resolve())!=p||i&&R(new i)!=_||s&&R(new s)!=b)&&(R=function(L){var O=a(L),F=O==f?L.constructor:void 0,$=F?u(F):"";if($)switch($){case x:return w;case y:return c;case C:return p;case E:return _;case I:return b}return O}),da=R,da}var fa,Ru;function vp(){if(Ru)return fa;Ru=1;var n=Nf(),e=gc(),t=jf(),i=dp(),s=_p(),a=Oa(),u=_c(),c=yc(),f=1,p="[object Arguments]",_="[object Array]",b="[object Object]",w=Object.prototype,x=w.hasOwnProperty;function y(C,E,I,R,L,O){var F=a(C),$=a(E),l=F?_:s(C),q=$?_:s(E);l=l==p?b:l,q=q==p?b:q;var A=l==b,N=q==b,H=l==q;if(H&&u(C)){if(!u(E))return!1;F=!0,A=!1}if(H&&!A)return O||(O=new n),F||c(C)?e(C,E,I,R,L,O):t(C,E,l,I,R,L,O);if(!(I&f)){var Z=A&&x.call(C,"__wrapped__"),Y=N&&x.call(E,"__wrapped__");if(Z||Y){var ce=Z?C.value():C,we=Y?E.value():E;return O||(O=new n),L(ce,we,I,R,O)}}return H?(O||(O=new n),i(C,E,I,R,L,O)):!1}return fa=y,fa}var pa,Nu;function yp(){if(Nu)return pa;Nu=1;var n=vp(),e=Yn();function t(i,s,a,u,c){return i===s?!0:i==null||s==null||!e(i)&&!e(s)?i!==i&&s!==s:n(i,s,a,u,t,c)}return pa=t,pa}var ma,Ou;function bp(){if(Ou)return ma;Ou=1;var n=yp();function e(t,i){return n(t,i)}return ma=e,ma}var xp=bp();const wp=sc(xp);function qu(n,e){return n.filter(t=>e.indexOf(t)===-1)}function xa(n,e){return wp(n,e)}const Zi=Object.assign||function(n,...e){for(let t=1;t<e.length;t++){const i=e[t];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])}return n};function bm(){return zn.uuid4()}function bc(n){const e=Object.keys(n),t=[];return e.forEach(function(i){t.push(n[i])}),Promise.all(t).then(i=>{const s={};for(let a=0;a<e.length;a++)s[e[a]]=i[a];return s})}function Dn(n,e){return function(i){throw e&&console.error(new Error(n)),i}}function Sp(n,e,t){for(let i=0;i<e.length;i++){const s=e[i];let a=t[i];a instanceof DataView||(a=new DataView(a instanceof ArrayBuffer?a:a.buffer));let u=n;for(let c=0;c<s.length-1;c++)u=u[s[c]];u[s[s.length-1]]=a}}function Cp(n){var e;return(e=typeof n=="object"&&n&&"toJSON"in n)!==null&&e!==void 0?e:!1}function Mp(n){return De.isObject(n)}function Tp(n){const e=[],t=[];function i(a,u){if(Cp(a)&&(a=a.toJSON()),Array.isArray(a)){let c=!1;for(let f=0;f<a.length;f++){const p=a[f];if(p)if(p instanceof ArrayBuffer||ArrayBuffer.isView(p))c||(a=a.slice(),c=!0),e.push(ArrayBuffer.isView(p)?p.buffer:p),t.push(u.concat([f])),a[f]=null;else{const _=i(p,u.concat([f]));_!==p&&(c||(a=a.slice(),c=!0),a[f]=_)}}}else if(Mp(a))for(const c in a){let f=!1;if(Object.prototype.hasOwnProperty.call(a,c)){const p=a[c];if(p)if(p instanceof ArrayBuffer||ArrayBuffer.isView(p))f||(a=Object.assign({},a),f=!0),e.push(ArrayBuffer.isView(p)?p.buffer:p),t.push(u.concat([c])),delete a[c];else{const _=i(p,u.concat([c]));_!==p&&(f||(a=Object.assign({},a),f=!0),a[c]=_)}}}return a}return{state:i(n,[]),buffers:e,buffer_paths:t}}const xm=`<svg style="height:50%;max-height: 50px;" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
|
2
2
|
<g >
|
|
3
3
|
<g transform="translate(0.24520123,0.93464292)">
|
|
4
4
|
<path d="M 8.2494641,21.074514 V 5.6225142 c 0,-0.314 0.254,-0.567 0.57,-0.567 H 29.978464 c 2.388,0 9.268,5.8269998 9.268,8.3029998 v 5.5835 l -3.585749,4.407396 -2.772971,-3.535534 -5.126524,3.414213 -5.944543,-3.237436 -5.722718,3.06066 z m 30.9969999,3.8675 v 15.5835 c 0,0.314 -0.254,0.567 -0.57,0.567 H 8.8194641 c -0.315,0.002 -0.57,-0.251 -0.57,-0.566 v -15.452 l 7.8444949,2.628449 5.656854,-2.65165 4.24264,3.005204 5.833631,-3.237437 3.712311,3.944543 z" style="fill:url(#linearGradient3448);stroke:#888a85" />
|
package/dist/index.html
CHANGED
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
</script>
|
|
67
|
-
<script type="module" crossorigin src="/assets/index-
|
|
68
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
67
|
+
<script type="module" crossorigin src="/assets/index-DK4nS74r.js"></script>
|
|
68
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DzjpmUak.css">
|
|
69
69
|
</head>
|
|
70
70
|
<body class="bg-slate-50 text-slate-900 antialiased">
|
|
71
71
|
<div id="root"></div>
|
|
@@ -45,6 +45,7 @@ exports.persistSessionToken = persistSessionToken;
|
|
|
45
45
|
exports.authMiddleware = authMiddleware;
|
|
46
46
|
exports.authWebSocketMiddleware = authWebSocketMiddleware;
|
|
47
47
|
const url_1 = require("url");
|
|
48
|
+
const crypto_1 = require("crypto");
|
|
48
49
|
const fs = __importStar(require("fs"));
|
|
49
50
|
const path = __importStar(require("path"));
|
|
50
51
|
const os = __importStar(require("os"));
|
|
@@ -132,13 +133,28 @@ function extractClusterSecret(req) {
|
|
|
132
133
|
}
|
|
133
134
|
return value;
|
|
134
135
|
}
|
|
136
|
+
function secretsEqual(a, b) {
|
|
137
|
+
const ab = Buffer.from(a);
|
|
138
|
+
const bb = Buffer.from(b);
|
|
139
|
+
if (ab.length !== bb.length)
|
|
140
|
+
return false;
|
|
141
|
+
return (0, crypto_1.timingSafeEqual)(ab, bb);
|
|
142
|
+
}
|
|
143
|
+
/** Loopback = same machine (or arrived through an ssh tunnel, which
|
|
144
|
+
* terminates on this machine) — the trust boundary for the on-disk
|
|
145
|
+
* session-token fallback used by MCP/CLI tools. */
|
|
146
|
+
function isLoopback(addr) {
|
|
147
|
+
if (!addr)
|
|
148
|
+
return false;
|
|
149
|
+
return addr === '127.0.0.1' || addr === '::1' || addr === '::ffff:127.0.0.1' || addr.startsWith('127.');
|
|
150
|
+
}
|
|
135
151
|
function hasValidClusterSecret(req) {
|
|
136
152
|
const clusterSecret = getClusterSecret();
|
|
137
153
|
if (!clusterSecret) {
|
|
138
154
|
return false;
|
|
139
155
|
}
|
|
140
156
|
const provided = extractClusterSecret(req);
|
|
141
|
-
return Boolean(provided && provided
|
|
157
|
+
return Boolean(provided && secretsEqual(provided, clusterSecret));
|
|
142
158
|
}
|
|
143
159
|
function isClusterRoute(pathname) {
|
|
144
160
|
return pathname.startsWith('/api/servers') || pathname.startsWith('/servers');
|
|
@@ -205,8 +221,10 @@ async function authMiddleware(request, reply) {
|
|
|
205
221
|
let token = extractToken(request);
|
|
206
222
|
// Fallback: if no token in request, check the persisted session token file.
|
|
207
223
|
// This allows MCP servers and CLI tools to piggyback on the browser's auth
|
|
208
|
-
// without needing their own TOTP flow.
|
|
209
|
-
|
|
224
|
+
// without needing their own TOTP flow. Loopback-only: those tools run on
|
|
225
|
+
// this machine (or reach it through an ssh tunnel, which lands on
|
|
226
|
+
// loopback); a token-less request from the network gets no free ride.
|
|
227
|
+
if (!token && isLoopback(request.ip)) {
|
|
210
228
|
token = readSessionToken();
|
|
211
229
|
}
|
|
212
230
|
if (!token) {
|
|
@@ -245,7 +263,7 @@ function authWebSocketMiddleware(request) {
|
|
|
245
263
|
return false;
|
|
246
264
|
}
|
|
247
265
|
const provided = extractClusterSecret(request);
|
|
248
|
-
if (provided
|
|
266
|
+
if (!provided || !secretsEqual(provided, clusterSecret)) {
|
|
249
267
|
console.log('[Auth] WebSocket rejected - invalid cluster secret');
|
|
250
268
|
return false;
|
|
251
269
|
}
|
|
@@ -48,8 +48,8 @@ const os = __importStar(require("os"));
|
|
|
48
48
|
const otplib_1 = require("otplib");
|
|
49
49
|
const jwt = __importStar(require("jsonwebtoken"));
|
|
50
50
|
const qrcode = __importStar(require("qrcode-terminal"));
|
|
51
|
-
// Config file location
|
|
52
|
-
const NEBULA_DIR = path.join(os.homedir(), '.nebula');
|
|
51
|
+
// Config file location (env override is a test seam)
|
|
52
|
+
const NEBULA_DIR = process.env.NEBULA_AUTH_DIR || path.join(os.homedir(), '.nebula');
|
|
53
53
|
const AUTH_CONFIG_FILE = path.join(NEBULA_DIR, 'auth.json');
|
|
54
54
|
// JWT settings
|
|
55
55
|
const JWT_SECRET_LENGTH = 64;
|
|
@@ -58,8 +58,10 @@ const LONG_SESSION_DAYS = 30;
|
|
|
58
58
|
// Rate limiting: max 5 attempts per 30 seconds
|
|
59
59
|
const MAX_ATTEMPTS = 5;
|
|
60
60
|
const WINDOW_MS = 30000;
|
|
61
|
-
//
|
|
62
|
-
//
|
|
61
|
+
// DELIBERATELY wide (±5 steps = ±2.5min): cluster login nodes have shipped
|
|
62
|
+
// with minutes of clock skew and a tight window locks the user out entirely.
|
|
63
|
+
// Availability beats the marginal brute-force surface here — do not "fix"
|
|
64
|
+
// this back to 1 without confirming server NTP is trustworthy everywhere.
|
|
63
65
|
const TOTP_WINDOW_STEPS = 5;
|
|
64
66
|
otplib_1.authenticator.options = {
|
|
65
67
|
...otplib_1.authenticator.options,
|
|
@@ -105,6 +107,15 @@ class AuthService {
|
|
|
105
107
|
}
|
|
106
108
|
catch (err) {
|
|
107
109
|
console.error('[Auth] Failed to load auth config:', err);
|
|
110
|
+
// NEVER silently overwrite an existing-but-unreadable config: it may
|
|
111
|
+
// hold the user's only copy of their TOTP secret (e.g. truncated by a
|
|
112
|
+
// quota-full write). Preserve it for recovery before regenerating.
|
|
113
|
+
try {
|
|
114
|
+
const backup = `${AUTH_CONFIG_FILE}.corrupt-${Date.now()}`;
|
|
115
|
+
fs.copyFileSync(AUTH_CONFIG_FILE, backup);
|
|
116
|
+
console.error(`[Auth] Unreadable auth config backed up to ${backup} — regenerating fresh secrets.`);
|
|
117
|
+
}
|
|
118
|
+
catch { /* backup is best-effort */ }
|
|
108
119
|
}
|
|
109
120
|
}
|
|
110
121
|
// No config exists - generate new secrets
|
|
@@ -137,9 +148,28 @@ class AuthService {
|
|
|
137
148
|
saveConfig() {
|
|
138
149
|
if (!this.config)
|
|
139
150
|
return;
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
151
|
+
// Atomic write (tmp + rename): a plain writeFileSync truncates BEFORE
|
|
152
|
+
// writing, so a quota-full/crashed write leaves an empty auth.json and
|
|
153
|
+
// the TOTP secret then exists only in this process's memory — exactly the
|
|
154
|
+
// failure that forces users to re-enroll after the next restart. With
|
|
155
|
+
// rename, a failed write leaves the previous file untouched.
|
|
156
|
+
const tmp = `${AUTH_CONFIG_FILE}.${process.pid}.tmp`;
|
|
157
|
+
try {
|
|
158
|
+
fs.writeFileSync(tmp, JSON.stringify(this.config, null, 2), { mode: 0o600 });
|
|
159
|
+
fs.renameSync(tmp, AUTH_CONFIG_FILE);
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
try {
|
|
163
|
+
fs.unlinkSync(tmp);
|
|
164
|
+
}
|
|
165
|
+
catch { /* nothing partial to clean */ }
|
|
166
|
+
// Loud, specific failure: the server keeps working from memory, but the
|
|
167
|
+
// secret will NOT survive a restart — the user must be able to see why.
|
|
168
|
+
console.error(`[Auth] FAILED to persist auth config to ${AUTH_CONFIG_FILE} — ` +
|
|
169
|
+
`2FA secrets exist ONLY in memory and will be lost on restart. ` +
|
|
170
|
+
`Check disk quota/permissions. Error:`, err);
|
|
171
|
+
throw err;
|
|
172
|
+
}
|
|
143
173
|
}
|
|
144
174
|
/**
|
|
145
175
|
* Print QR code and manual key to terminal for initial setup
|
|
@@ -10,10 +10,21 @@ declare class ClientRegistration {
|
|
|
10
10
|
private registrationRetryTimeout;
|
|
11
11
|
private registered;
|
|
12
12
|
private serverId;
|
|
13
|
+
/**
|
|
14
|
+
* The local IP on the interface that ROUTES TO the main server, learned by
|
|
15
|
+
* opening a TCP connection to it. Registering os.hostname() broke on
|
|
16
|
+
* clusters where compute nodes report an FQDN the controller cannot
|
|
17
|
+
* resolve (cri22cn416.cri.uchicago.edu vs the resolvable cri22cn416):
|
|
18
|
+
* every controller→node fetch died as 500 "fetch failed" while heartbeats
|
|
19
|
+
* (outbound) kept the allocation looking healthy. An IP needs no DNS at
|
|
20
|
+
* all, and the interface that reaches the controller is the one the
|
|
21
|
+
* controller can reach back on.
|
|
22
|
+
*/
|
|
23
|
+
private routableLocalAddress;
|
|
13
24
|
/**
|
|
14
25
|
* Initialize client registration from environment variables
|
|
15
26
|
*/
|
|
16
|
-
initFromEnv(localPort: number): void
|
|
27
|
+
initFromEnv(localPort: number): Promise<void>;
|
|
17
28
|
/**
|
|
18
29
|
* Register with the main server
|
|
19
30
|
*/
|
|
@@ -43,6 +43,7 @@ exports.clientRegistration = void 0;
|
|
|
43
43
|
const server_registry_1 = require("./server-registry");
|
|
44
44
|
const resource_service_1 = require("../resources/resource-service");
|
|
45
45
|
const os = __importStar(require("os"));
|
|
46
|
+
const net = __importStar(require("net"));
|
|
46
47
|
const HEARTBEAT_INTERVAL_MS = 30_000; // 30 seconds
|
|
47
48
|
const REGISTRATION_RETRY_MS = 10_000; // 10 seconds retry on failure
|
|
48
49
|
class ClientRegistration {
|
|
@@ -51,16 +52,48 @@ class ClientRegistration {
|
|
|
51
52
|
registrationRetryTimeout = null;
|
|
52
53
|
registered = false;
|
|
53
54
|
serverId = null;
|
|
55
|
+
/**
|
|
56
|
+
* The local IP on the interface that ROUTES TO the main server, learned by
|
|
57
|
+
* opening a TCP connection to it. Registering os.hostname() broke on
|
|
58
|
+
* clusters where compute nodes report an FQDN the controller cannot
|
|
59
|
+
* resolve (cri22cn416.cri.uchicago.edu vs the resolvable cri22cn416):
|
|
60
|
+
* every controller→node fetch died as 500 "fetch failed" while heartbeats
|
|
61
|
+
* (outbound) kept the allocation looking healthy. An IP needs no DNS at
|
|
62
|
+
* all, and the interface that reaches the controller is the one the
|
|
63
|
+
* controller can reach back on.
|
|
64
|
+
*/
|
|
65
|
+
routableLocalAddress(mainServerUrl) {
|
|
66
|
+
return new Promise((resolve) => {
|
|
67
|
+
try {
|
|
68
|
+
const u = new URL(mainServerUrl);
|
|
69
|
+
const port = Number(u.port) || (u.protocol === 'https:' ? 443 : 80);
|
|
70
|
+
const sock = net.connect({ host: u.hostname, port, timeout: 3000 }, () => {
|
|
71
|
+
const addr = sock.localAddress || null;
|
|
72
|
+
sock.destroy();
|
|
73
|
+
resolve(addr);
|
|
74
|
+
});
|
|
75
|
+
sock.on('error', () => resolve(null));
|
|
76
|
+
sock.on('timeout', () => { sock.destroy(); resolve(null); });
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
resolve(null);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
54
83
|
/**
|
|
55
84
|
* Initialize client registration from environment variables
|
|
56
85
|
*/
|
|
57
|
-
initFromEnv(localPort) {
|
|
86
|
+
async initFromEnv(localPort) {
|
|
58
87
|
const mainServerUrl = process.env.NEBULA_MAIN_SERVER;
|
|
59
88
|
if (!mainServerUrl) {
|
|
60
89
|
console.log('[ClientRegistration] No NEBULA_MAIN_SERVER set, running as standalone');
|
|
61
90
|
return;
|
|
62
91
|
}
|
|
63
|
-
|
|
92
|
+
// Explicit override → routable IP → hostname (last resort; may be an
|
|
93
|
+
// FQDN the controller can't resolve).
|
|
94
|
+
const localHost = process.env.NEBULA_HOST
|
|
95
|
+
|| (await this.routableLocalAddress(mainServerUrl))
|
|
96
|
+
|| os.hostname();
|
|
64
97
|
const serverName = process.env.NEBULA_SERVER_NAME || os.hostname();
|
|
65
98
|
const secret = process.env.NEBULA_CLUSTER_SECRET;
|
|
66
99
|
const allocationToken = process.env.NEBULA_ALLOCATION_TOKEN;
|
|
@@ -158,9 +158,17 @@ async function getRemoteKernelStatus(sessionId) {
|
|
|
158
158
|
if (!server) {
|
|
159
159
|
throw new Error(`Server not found: ${serverId}`);
|
|
160
160
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
let response;
|
|
162
|
+
try {
|
|
163
|
+
response = await fetch(`${server.url}/api/kernels/${remoteSessionId}/status`, {
|
|
164
|
+
headers: { ...getClusterHeaders() },
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
// Connection-level failure (refused/reset) — the node may be gone.
|
|
169
|
+
server_registry_1.serverRegistry.reportUnreachable(serverId);
|
|
170
|
+
throw err;
|
|
171
|
+
}
|
|
164
172
|
if (!response.ok) {
|
|
165
173
|
const error = await response.json().catch(() => ({ detail: 'Unknown error' }));
|
|
166
174
|
throw new Error(error.detail || 'Failed to get kernel status');
|
|
@@ -331,6 +339,11 @@ function createWebSocketProxy(sessionId, clientWs) {
|
|
|
331
339
|
// Handle remote close
|
|
332
340
|
remoteWs.on('close', () => {
|
|
333
341
|
console.log(`[KernelProxy] Remote WebSocket closed for ${sessionId}`);
|
|
342
|
+
// The kernel channel dropping is the earliest signal a compute node
|
|
343
|
+
// died (walltime, scancel, crash) — let the allocation layer verify.
|
|
344
|
+
const { serverId: sid } = parseSessionId(sessionId);
|
|
345
|
+
if (sid)
|
|
346
|
+
server_registry_1.serverRegistry.reportUnreachable(sid);
|
|
334
347
|
if (clientWs.readyState === ws_1.WebSocket.OPEN) {
|
|
335
348
|
clientWs.close();
|
|
336
349
|
}
|
|
@@ -345,6 +358,9 @@ function createWebSocketProxy(sessionId, clientWs) {
|
|
|
345
358
|
// Handle errors
|
|
346
359
|
remoteWs.on('error', (err) => {
|
|
347
360
|
console.error(`[KernelProxy] Remote WebSocket error for ${sessionId}:`, err);
|
|
361
|
+
const { serverId: sid } = parseSessionId(sessionId);
|
|
362
|
+
if (sid)
|
|
363
|
+
server_registry_1.serverRegistry.reportUnreachable(sid);
|
|
348
364
|
});
|
|
349
365
|
// Track the proxy
|
|
350
366
|
const session = proxiedSessions.get(sessionId);
|
|
@@ -84,6 +84,15 @@ declare class ServerRegistry {
|
|
|
84
84
|
* Get all online peer servers
|
|
85
85
|
*/
|
|
86
86
|
getOnlineServers(): PeerServer[];
|
|
87
|
+
private lostListeners;
|
|
88
|
+
onServerLost(cb: (server: PeerServer) => void): void;
|
|
89
|
+
private notifyLost;
|
|
90
|
+
/**
|
|
91
|
+
* A request proxied to this server just failed at the connection level
|
|
92
|
+
* (refused/reset/timeout). Don't mark it offline on one failure — that's
|
|
93
|
+
* the heartbeat's job — but do tell listeners so they can verify fast.
|
|
94
|
+
*/
|
|
95
|
+
reportUnreachable(serverId: string): void;
|
|
87
96
|
/**
|
|
88
97
|
* Check server health and update status
|
|
89
98
|
*/
|
|
@@ -168,6 +168,31 @@ class ServerRegistry {
|
|
|
168
168
|
getOnlineServers() {
|
|
169
169
|
return this.getAllServers().filter(s => s.status === 'online');
|
|
170
170
|
}
|
|
171
|
+
// Listeners fired when a peer looks dead (heartbeat timeout, or a proxy
|
|
172
|
+
// request to it failed at the connection level). Lets the allocation
|
|
173
|
+
// service react instantly instead of waiting for its next squeue poll.
|
|
174
|
+
lostListeners = [];
|
|
175
|
+
onServerLost(cb) {
|
|
176
|
+
this.lostListeners.push(cb);
|
|
177
|
+
}
|
|
178
|
+
notifyLost(server) {
|
|
179
|
+
for (const cb of this.lostListeners) {
|
|
180
|
+
try {
|
|
181
|
+
cb(server);
|
|
182
|
+
}
|
|
183
|
+
catch { /* listener errors must not break the sweep */ }
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* A request proxied to this server just failed at the connection level
|
|
188
|
+
* (refused/reset/timeout). Don't mark it offline on one failure — that's
|
|
189
|
+
* the heartbeat's job — but do tell listeners so they can verify fast.
|
|
190
|
+
*/
|
|
191
|
+
reportUnreachable(serverId) {
|
|
192
|
+
const server = this.servers.get(serverId);
|
|
193
|
+
if (server)
|
|
194
|
+
this.notifyLost(server);
|
|
195
|
+
}
|
|
171
196
|
/**
|
|
172
197
|
* Check server health and update status
|
|
173
198
|
*/
|
|
@@ -185,6 +210,7 @@ class ServerRegistry {
|
|
|
185
210
|
if (stale > HEARTBEAT_TIMEOUT_MS && server.status === 'online') {
|
|
186
211
|
console.log(`[ServerRegistry] Server ${server.id} marked offline (heartbeat timeout)`);
|
|
187
212
|
server.status = 'offline';
|
|
213
|
+
this.notifyLost(server);
|
|
188
214
|
}
|
|
189
215
|
}
|
|
190
216
|
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conda Location Discovery (VSCode/PET-style filesystem forensics)
|
|
3
|
+
*
|
|
4
|
+
* Finds conda installs and environments WITHOUT executing conda/mamba —
|
|
5
|
+
* spawning conda boots a full Python interpreter and takes seconds, and the
|
|
6
|
+
* binary may not even be on PATH for envs created by mamba/micromamba or
|
|
7
|
+
* from another shell. Instead, everything comes from files conda itself
|
|
8
|
+
* maintains:
|
|
9
|
+
*
|
|
10
|
+
* - ~/.conda/environments.txt — conda appends EVERY env it creates here
|
|
11
|
+
* (named, path-based `-p` envs, and base), so this single file covers
|
|
12
|
+
* envs living in arbitrary locations.
|
|
13
|
+
* - .condarc `envs_dirs`/`envs_path` — user-configured env containers.
|
|
14
|
+
* - Well-known install roots (~/miniconda3, /opt/homebrew/…, micromamba…).
|
|
15
|
+
* - CONDA_* / MAMBA_* environment variables.
|
|
16
|
+
* - conda/mamba/micromamba binaries on PATH — the install root is derived
|
|
17
|
+
* from the (symlink-resolved) binary location, never by running it.
|
|
18
|
+
*
|
|
19
|
+
* A directory IS a conda env iff it has a `conda-meta/` directory (pixi envs
|
|
20
|
+
* carry a `conda-meta/pixi` marker and are excluded — the pixi locator owns
|
|
21
|
+
* those). An env is an install root iff it also has `envs/` or `condabin/`.
|
|
22
|
+
*/
|
|
23
|
+
export interface CondaLocatorContext {
|
|
24
|
+
home: string;
|
|
25
|
+
env: Record<string, string | undefined>;
|
|
26
|
+
platform: NodeJS.Platform;
|
|
27
|
+
}
|
|
28
|
+
export interface CondaEnvLocation {
|
|
29
|
+
prefix: string;
|
|
30
|
+
envName: string | null;
|
|
31
|
+
base?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function defaultCondaContext(): CondaLocatorContext;
|
|
34
|
+
/** conda-meta/ present, and not a pixi env (conda-meta/pixi marker). */
|
|
35
|
+
export declare function isCondaEnv(dir: string): Promise<boolean>;
|
|
36
|
+
/** An install root is itself an env (base) that also carries envs/ or condabin/. */
|
|
37
|
+
export declare function isCondaInstall(dir: string): Promise<boolean>;
|
|
38
|
+
/** Env prefixes recorded by conda itself — one absolute path per line. */
|
|
39
|
+
export declare function readEnvironmentsTxt(ctx: CondaLocatorContext): Promise<string[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Minimal .condarc reader for the two keys that name env containers.
|
|
42
|
+
* Handles block lists and inline `[a, b]` lists; deliberately not a full
|
|
43
|
+
* YAML parser — these files are flat and hand-written.
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseCondaRcEnvDirs(content: string, home: string): string[];
|
|
46
|
+
/** Every .condarc-style file worth checking, most specific first. */
|
|
47
|
+
export declare function getCondaRcSearchPaths(ctx: CondaLocatorContext): string[];
|
|
48
|
+
/** Env container dirs from every .condarc found (envs_dirs / envs_path). */
|
|
49
|
+
export declare function getCondaRcEnvDirs(ctx: CondaLocatorContext): Promise<string[]>;
|
|
50
|
+
/** Well-known install roots (cheap string candidates; existence checked later). */
|
|
51
|
+
export declare function getKnownCondaRoots(ctx: CondaLocatorContext): string[];
|
|
52
|
+
/**
|
|
53
|
+
* Derive install roots from conda-like binaries on PATH: resolve the symlink
|
|
54
|
+
* (homebrew shims point into Caskroom), then walk out of bin/condabin/Scripts.
|
|
55
|
+
* The binary is never executed.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getCondaRootsFromPath(ctx: CondaLocatorContext): Promise<string[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Locate conda/mamba/micromamba binaries (PATH first, then known roots) for
|
|
60
|
+
* callers that DO need to run conda — e.g. `conda install -p <prefix>` in the
|
|
61
|
+
* ipykernel install flow. Discovery itself never executes these.
|
|
62
|
+
*/
|
|
63
|
+
export declare function findCondaLikeBinaries(ctx?: CondaLocatorContext): Promise<string[]>;
|
|
64
|
+
export declare function pythonExeForPrefix(prefix: string, platform: NodeJS.Platform): string;
|
|
65
|
+
/** Inverse of pythonExeForPrefix: the env prefix a python executable lives in. */
|
|
66
|
+
export declare function prefixForPythonExe(pythonPath: string): string;
|
|
67
|
+
/** First match for an executable name on the context's PATH (fs check only). */
|
|
68
|
+
export declare function findExecutableOnPath(name: string, ctx?: CondaLocatorContext): Promise<string | null>;
|
|
69
|
+
/**
|
|
70
|
+
* The full sweep: merge every source, expand install roots and containers,
|
|
71
|
+
* and return deduped env locations.
|
|
72
|
+
*/
|
|
73
|
+
export declare function collectCondaEnvs(ctx?: CondaLocatorContext): Promise<CondaEnvLocation[]>;
|