18 lines
118 KiB
JavaScript
18 lines
118 KiB
JavaScript
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const l of r.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(i){if(i.ep)return;i.ep=!0;const r=n(i);fetch(i.href,r)}})();/**
|
||
* @vue/shared v3.5.30
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/function Ds(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ie={},Wt=[],tt=()=>{},rr=()=>!1,Gn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),Te=Object.assign,Ns=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ko=Object.prototype.hasOwnProperty,Z=(e,t)=>Ko.call(e,t),B=Array.isArray,Vt=e=>wn(e)==="[object Map]",or=e=>wn(e)==="[object Set]",wi=e=>wn(e)==="[object Date]",z=e=>typeof e=="function",ae=e=>typeof e=="string",qe=e=>typeof e=="symbol",te=e=>e!==null&&typeof e=="object",lr=e=>(te(e)||z(e))&&z(e.then)&&z(e.catch),ar=Object.prototype.toString,wn=e=>ar.call(e),Wo=e=>wn(e).slice(8,-1),cr=e=>wn(e)==="[object Object]",Us=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,cn=Ds(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Jn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Vo=/-\w/g,Ee=Jn(e=>e.replace(Vo,t=>t.slice(1).toUpperCase())),qo=/\B([A-Z])/g,It=Jn(e=>e.replace(qo,"-$1").toLowerCase()),Yn=Jn(e=>e.charAt(0).toUpperCase()+e.slice(1)),fs=Jn(e=>e?`on${Yn(e)}`:""),et=(e,t)=>!Object.is(e,t),Un=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},ur=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Bs=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let xi;const Xn=()=>xi||(xi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Be(e){if(B(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],i=ae(s)?Xo(s):Be(s);if(i)for(const r in i)t[r]=i[r]}return t}else if(ae(e)||te(e))return e}const Go=/;(?![^(]*\))/g,Jo=/:([^]+)/,Yo=/\/\*[^]*?\*\//g;function Xo(e){const t={};return e.replace(Yo,"").split(Go).forEach(n=>{if(n){const s=n.split(Jo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function xt(e){let t="";if(ae(e))t=e;else if(B(e))for(let n=0;n<e.length;n++){const s=xt(e[n]);s&&(t+=s+" ")}else if(te(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Zo="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Qo=Ds(Zo);function fr(e){return!!e||e===""}function el(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=Ls(e[s],t[s]);return n}function Ls(e,t){if(e===t)return!0;let n=wi(e),s=wi(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=qe(e),s=qe(t),n||s)return e===t;if(n=B(e),s=B(t),n||s)return n&&s?el(e,t):!1;if(n=te(e),s=te(t),n||s){if(!n||!s)return!1;const i=Object.keys(e).length,r=Object.keys(t).length;if(i!==r)return!1;for(const l in e){const a=e.hasOwnProperty(l),f=t.hasOwnProperty(l);if(a&&!f||!a&&f||!Ls(e[l],t[l]))return!1}}return String(e)===String(t)}const dr=e=>!!(e&&e.__v_isRef===!0),se=e=>ae(e)?e:e==null?"":B(e)||te(e)&&(e.toString===ar||!z(e.toString))?dr(e)?se(e.value):JSON.stringify(e,pr,2):String(e),pr=(e,t)=>dr(t)?pr(e,t.value):Vt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,i],r)=>(n[ds(s,r)+" =>"]=i,n),{})}:or(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ds(n))}:qe(t)?ds(t):te(t)&&!B(t)&&!cr(t)?String(t):t,ds=(e,t="")=>{var n;return qe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
|
||
* @vue/reactivity v3.5.30
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/let Oe;class tl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=Oe,!t&&Oe&&(this.index=(Oe.scopes||(Oe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=Oe;try{return Oe=this,t()}finally{Oe=n}}}on(){++this._on===1&&(this.prevScope=Oe,Oe=this)}off(){this._on>0&&--this._on===0&&(Oe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const i=this.parent.scopes.pop();i&&i!==this&&(this.parent.scopes[this.index]=i,i.index=this.index)}this.parent=void 0}}}function nl(){return Oe}let re;const ps=new WeakSet;class hr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Oe&&Oe.active&&Oe.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ps.has(this)&&(ps.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||gr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Ii(this),vr(this);const t=re,n=Ve;re=this,Ve=!0;try{return this.fn()}finally{yr(this),re=t,Ve=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)zs(t);this.deps=this.depsTail=void 0,Ii(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ps.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Ss(this)&&this.run()}get dirty(){return Ss(this)}}let mr=0,un,fn;function gr(e,t=!1){if(e.flags|=8,t){e.next=fn,fn=e;return}e.next=un,un=e}function js(){mr++}function Hs(){if(--mr>0)return;if(fn){let t=fn;for(fn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;un;){let t=un;for(un=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function vr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function yr(e){let t,n=e.depsTail,s=n;for(;s;){const i=s.prevDep;s.version===-1?(s===n&&(n=i),zs(s),sl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=i}e.deps=t,e.depsTail=n}function Ss(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_r(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _r(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===gn)||(e.globalVersion=gn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ss(e))))return;e.flags|=2;const t=e.dep,n=re,s=Ve;re=e,Ve=!0;try{vr(e);const i=e.fn(e._value);(t.version===0||et(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{re=n,Ve=s,yr(e),e.flags&=-3}}function zs(e,t=!1){const{dep:n,prevSub:s,nextSub:i}=e;if(s&&(s.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let r=n.computed.deps;r;r=r.nextDep)zs(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function sl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ve=!0;const br=[];function ft(){br.push(Ve),Ve=!1}function dt(){const e=br.pop();Ve=e===void 0?!0:e}function Ii(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=re;re=void 0;try{t()}finally{re=n}}}let gn=0;class il{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ks{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!re||!Ve||re===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==re)n=this.activeLink=new il(re,this),re.deps?(n.prevDep=re.depsTail,re.depsTail.nextDep=n,re.depsTail=n):re.deps=re.depsTail=n,wr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=re.depsTail,n.nextDep=void 0,re.depsTail.nextDep=n,re.depsTail=n,re.deps===n&&(re.deps=s)}return n}trigger(t){this.version++,gn++,this.notify(t)}notify(t){js();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Hs()}}}function wr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)wr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cs=new WeakMap,Ot=Symbol(""),Ts=Symbol(""),vn=Symbol("");function Ie(e,t,n){if(Ve&&re){let s=Cs.get(e);s||Cs.set(e,s=new Map);let i=s.get(n);i||(s.set(n,i=new Ks),i.map=s,i.key=n),i.track()}}function ct(e,t,n,s,i,r){const l=Cs.get(e);if(!l){gn++;return}const a=f=>{f&&f.trigger()};if(js(),t==="clear")l.forEach(a);else{const f=B(e),m=f&&Us(n);if(f&&n==="length"){const p=Number(s);l.forEach((_,T)=>{(T==="length"||T===vn||!qe(T)&&T>=p)&&a(_)})}else switch((n!==void 0||l.has(void 0))&&a(l.get(n)),m&&a(l.get(vn)),t){case"add":f?m&&a(l.get("length")):(a(l.get(Ot)),Vt(e)&&a(l.get(Ts)));break;case"delete":f||(a(l.get(Ot)),Vt(e)&&a(l.get(Ts)));break;case"set":Vt(e)&&a(l.get(Ot));break}}Hs()}function Lt(e){const t=X(e);return t===e?t:(Ie(t,"iterate",vn),Le(e)?t:t.map(Ge))}function Zn(e){return Ie(e=X(e),"iterate",vn),e}function Ze(e,t){return pt(e)?Xt(Pt(e)?Ge(t):t):Ge(t)}const rl={__proto__:null,[Symbol.iterator](){return hs(this,Symbol.iterator,e=>Ze(this,e))},concat(...e){return Lt(this).concat(...e.map(t=>B(t)?Lt(t):t))},entries(){return hs(this,"entries",e=>(e[1]=Ze(this,e[1]),e))},every(e,t){return ot(this,"every",e,t,void 0,arguments)},filter(e,t){return ot(this,"filter",e,t,n=>n.map(s=>Ze(this,s)),arguments)},find(e,t){return ot(this,"find",e,t,n=>Ze(this,n),arguments)},findIndex(e,t){return ot(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ot(this,"findLast",e,t,n=>Ze(this,n),arguments)},findLastIndex(e,t){return ot(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ot(this,"forEach",e,t,void 0,arguments)},includes(...e){return ms(this,"includes",e)},indexOf(...e){return ms(this,"indexOf",e)},join(e){return Lt(this).join(e)},lastIndexOf(...e){return ms(this,"lastIndexOf",e)},map(e,t){return ot(this,"map",e,t,void 0,arguments)},pop(){return on(this,"pop")},push(...e){return on(this,"push",e)},reduce(e,...t){return Si(this,"reduce",e,t)},reduceRight(e,...t){return Si(this,"reduceRight",e,t)},shift(){return on(this,"shift")},some(e,t){return ot(this,"some",e,t,void 0,arguments)},splice(...e){return on(this,"splice",e)},toReversed(){return Lt(this).toReversed()},toSorted(e){return Lt(this).toSorted(e)},toSpliced(...e){return Lt(this).toSpliced(...e)},unshift(...e){return on(this,"unshift",e)},values(){return hs(this,"values",e=>Ze(this,e))}};function hs(e,t,n){const s=Zn(e),i=s[t]();return s!==e&&!Le(e)&&(i._next=i.next,i.next=()=>{const r=i._next();return r.done||(r.value=n(r.value)),r}),i}const ol=Array.prototype;function ot(e,t,n,s,i,r){const l=Zn(e),a=l!==e&&!Le(e),f=l[t];if(f!==ol[t]){const _=f.apply(e,r);return a?Ge(_):_}let m=n;l!==e&&(a?m=function(_,T){return n.call(this,Ze(e,_),T,e)}:n.length>2&&(m=function(_,T){return n.call(this,_,T,e)}));const p=f.call(l,m,s);return a&&i?i(p):p}function Si(e,t,n,s){const i=Zn(e),r=i!==e&&!Le(e);let l=n,a=!1;i!==e&&(r?(a=s.length===0,l=function(m,p,_){return a&&(a=!1,m=Ze(e,m)),n.call(this,m,Ze(e,p),_,e)}):n.length>3&&(l=function(m,p,_){return n.call(this,m,p,_,e)}));const f=i[t](l,...s);return a?Ze(e,f):f}function ms(e,t,n){const s=X(e);Ie(s,"iterate",vn);const i=s[t](...n);return(i===-1||i===!1)&&Gs(n[0])?(n[0]=X(n[0]),s[t](...n)):i}function on(e,t,n=[]){ft(),js();const s=X(e)[t].apply(e,n);return Hs(),dt(),s}const ll=Ds("__proto__,__v_isRef,__isVue"),xr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(qe));function al(e){qe(e)||(e=String(e));const t=X(this);return Ie(t,"has",e),t.hasOwnProperty(e)}class Ir{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const i=this._isReadonly,r=this._isShallow;if(n==="__v_isReactive")return!i;if(n==="__v_isReadonly")return i;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(i?r?yl:$r:r?Tr:Cr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=B(t);if(!i){let f;if(l&&(f=rl[n]))return f;if(n==="hasOwnProperty")return al}const a=Reflect.get(t,n,Ce(t)?t:s);if((qe(n)?xr.has(n):ll(n))||(i||Ie(t,"get",n),r))return a;if(Ce(a)){const f=l&&Us(n)?a:a.value;return i&&te(f)?Ms(f):f}return te(a)?i?Ms(a):Vs(a):a}}class Sr extends Ir{constructor(t=!1){super(!1,t)}set(t,n,s,i){let r=t[n];const l=B(t)&&Us(n);if(!this._isShallow){const m=pt(r);if(!Le(s)&&!pt(s)&&(r=X(r),s=X(s)),!l&&Ce(r)&&!Ce(s))return m||(r.value=s),!0}const a=l?Number(n)<t.length:Z(t,n),f=Reflect.set(t,n,s,Ce(t)?t:i);return t===X(i)&&(a?et(s,r)&&ct(t,"set",n,s):ct(t,"add",n,s)),f}deleteProperty(t,n){const s=Z(t,n);t[n];const i=Reflect.deleteProperty(t,n);return i&&s&&ct(t,"delete",n,void 0),i}has(t,n){const s=Reflect.has(t,n);return(!qe(n)||!xr.has(n))&&Ie(t,"has",n),s}ownKeys(t){return Ie(t,"iterate",B(t)?"length":Ot),Reflect.ownKeys(t)}}class cl extends Ir{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const ul=new Sr,fl=new cl,dl=new Sr(!0);const $s=e=>e,Mn=e=>Reflect.getPrototypeOf(e);function pl(e,t,n){return function(...s){const i=this.__v_raw,r=X(i),l=Vt(r),a=e==="entries"||e===Symbol.iterator&&l,f=e==="keys"&&l,m=i[e](...s),p=n?$s:t?Xt:Ge;return!t&&Ie(r,"iterate",f?Ts:Ot),Te(Object.create(m),{next(){const{value:_,done:T}=m.next();return T?{value:_,done:T}:{value:a?[p(_[0]),p(_[1])]:p(_),done:T}}})}}function kn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function hl(e,t){const n={get(i){const r=this.__v_raw,l=X(r),a=X(i);e||(et(i,a)&&Ie(l,"get",i),Ie(l,"get",a));const{has:f}=Mn(l),m=t?$s:e?Xt:Ge;if(f.call(l,i))return m(r.get(i));if(f.call(l,a))return m(r.get(a));r!==l&&r.get(i)},get size(){const i=this.__v_raw;return!e&&Ie(X(i),"iterate",Ot),i.size},has(i){const r=this.__v_raw,l=X(r),a=X(i);return e||(et(i,a)&&Ie(l,"has",i),Ie(l,"has",a)),i===a?r.has(i):r.has(i)||r.has(a)},forEach(i,r){const l=this,a=l.__v_raw,f=X(a),m=t?$s:e?Xt:Ge;return!e&&Ie(f,"iterate",Ot),a.forEach((p,_)=>i.call(r,m(p),m(_),l))}};return Te(n,e?{add:kn("add"),set:kn("set"),delete:kn("delete"),clear:kn("clear")}:{add(i){const r=X(this),l=Mn(r),a=X(i),f=!t&&!Le(i)&&!pt(i)?a:i;return l.has.call(r,f)||et(i,f)&&l.has.call(r,i)||et(a,f)&&l.has.call(r,a)||(r.add(f),ct(r,"add",f,f)),this},set(i,r){!t&&!Le(r)&&!pt(r)&&(r=X(r));const l=X(this),{has:a,get:f}=Mn(l);let m=a.call(l,i);m||(i=X(i),m=a.call(l,i));const p=f.call(l,i);return l.set(i,r),m?et(r,p)&&ct(l,"set",i,r):ct(l,"add",i,r),this},delete(i){const r=X(this),{has:l,get:a}=Mn(r);let f=l.call(r,i);f||(i=X(i),f=l.call(r,i)),a&&a.call(r,i);const m=r.delete(i);return f&&ct(r,"delete",i,void 0),m},clear(){const i=X(this),r=i.size!==0,l=i.clear();return r&&ct(i,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(i=>{n[i]=pl(i,e,t)}),n}function Ws(e,t){const n=hl(e,t);return(s,i,r)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?s:Reflect.get(Z(n,i)&&i in s?n:s,i,r)}const ml={get:Ws(!1,!1)},gl={get:Ws(!1,!0)},vl={get:Ws(!0,!1)};const Cr=new WeakMap,Tr=new WeakMap,$r=new WeakMap,yl=new WeakMap;function _l(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function bl(e){return e.__v_skip||!Object.isExtensible(e)?0:_l(Wo(e))}function Vs(e){return pt(e)?e:qs(e,!1,ul,ml,Cr)}function wl(e){return qs(e,!1,dl,gl,Tr)}function Ms(e){return qs(e,!0,fl,vl,$r)}function qs(e,t,n,s,i){if(!te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=bl(e);if(r===0)return e;const l=i.get(e);if(l)return l;const a=new Proxy(e,r===2?s:n);return i.set(e,a),a}function Pt(e){return pt(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function pt(e){return!!(e&&e.__v_isReadonly)}function Le(e){return!!(e&&e.__v_isShallow)}function Gs(e){return e?!!e.__v_raw:!1}function X(e){const t=e&&e.__v_raw;return t?X(t):e}function xl(e){return!Z(e,"__v_skip")&&Object.isExtensible(e)&&ur(e,"__v_skip",!0),e}const Ge=e=>te(e)?Vs(e):e,Xt=e=>te(e)?Ms(e):e;function Ce(e){return e?e.__v_isRef===!0:!1}function oe(e){return Il(e,!1)}function Il(e,t){return Ce(e)?e:new Sl(e,t)}class Sl{constructor(t,n){this.dep=new Ks,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:X(t),this._value=n?t:Ge(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Le(t)||pt(t);t=s?t:X(t),et(t,n)&&(this._rawValue=t,this._value=s?t:Ge(t),this.dep.trigger())}}function Cl(e){return Ce(e)?e.value:e}const Tl={get:(e,t,n)=>t==="__v_raw"?e:Cl(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const i=e[t];return Ce(i)&&!Ce(n)?(i.value=n,!0):Reflect.set(e,t,n,s)}};function Mr(e){return Pt(e)?e:new Proxy(e,Tl)}class $l{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Ks(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&re!==this)return gr(this,!0),!0}get value(){const t=this.dep.track();return _r(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ml(e,t,n=!1){let s,i;return z(e)?s=e:(s=e.get,i=e.set),new $l(s,i,n)}const Rn={},Hn=new WeakMap;let At;function kl(e,t=!1,n=At){if(n){let s=Hn.get(n);s||Hn.set(n,s=[]),s.push(e)}}function Rl(e,t,n=ie){const{immediate:s,deep:i,once:r,scheduler:l,augmentJob:a,call:f}=n,m=F=>i?F:Le(F)||i===!1||i===0?ut(F,1):ut(F);let p,_,T,S,U=!1,D=!1;if(Ce(e)?(_=()=>e.value,U=Le(e)):Pt(e)?(_=()=>m(e),U=!0):B(e)?(D=!0,U=e.some(F=>Pt(F)||Le(F)),_=()=>e.map(F=>{if(Ce(F))return F.value;if(Pt(F))return m(F);if(z(F))return f?f(F,2):F()})):z(e)?t?_=f?()=>f(e,2):e:_=()=>{if(T){ft();try{T()}finally{dt()}}const F=At;At=p;try{return f?f(e,3,[S]):e(S)}finally{At=F}}:_=tt,t&&i){const F=_,le=i===!0?1/0:i;_=()=>ut(F(),le)}const Q=nl(),K=()=>{p.stop(),Q&&Q.active&&Ns(Q.effects,p)};if(r&&t){const F=t;t=(...le)=>{F(...le),K()}}let R=D?new Array(e.length).fill(Rn):Rn;const ee=F=>{if(!(!(p.flags&1)||!p.dirty&&!F))if(t){const le=p.run();if(i||U||(D?le.some((he,$e)=>et(he,R[$e])):et(le,R))){T&&T();const he=At;At=p;try{const $e=[le,R===Rn?void 0:D&&R[0]===Rn?[]:R,S];R=le,f?f(t,3,$e):t(...$e)}finally{At=he}}}else p.run()};return a&&a(ee),p=new hr(_),p.scheduler=l?()=>l(ee,!1):ee,S=F=>kl(F,!1,p),T=p.onStop=()=>{const F=Hn.get(p);if(F){if(f)f(F,4);else for(const le of F)le();Hn.delete(p)}},t?s?ee(!0):R=p.run():l?l(ee.bind(null,!0),!0):p.run(),K.pause=p.pause.bind(p),K.resume=p.resume.bind(p),K.stop=K,K}function ut(e,t=1/0,n){if(t<=0||!te(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ce(e))ut(e.value,t,n);else if(B(e))for(let s=0;s<e.length;s++)ut(e[s],t,n);else if(or(e)||Vt(e))e.forEach(s=>{ut(s,t,n)});else if(cr(e)){for(const s in e)ut(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ut(e[s],t,n)}return e}/**
|
||
* @vue/runtime-core v3.5.30
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/function xn(e,t,n,s){try{return s?e(...s):e()}catch(i){Qn(i,t,n)}}function nt(e,t,n,s){if(z(e)){const i=xn(e,t,n,s);return i&&lr(i)&&i.catch(r=>{Qn(r,t,n)}),i}if(B(e)){const i=[];for(let r=0;r<e.length;r++)i.push(nt(e[r],t,n,s));return i}}function Qn(e,t,n,s=!0){const i=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||ie;if(t){let a=t.parent;const f=t.proxy,m=`https://vuejs.org/error-reference/#runtime-${n}`;for(;a;){const p=a.ec;if(p){for(let _=0;_<p.length;_++)if(p[_](e,f,m)===!1)return}a=a.parent}if(r){ft(),xn(r,null,10,[e,f,m]),dt();return}}El(e,n,i,s,l)}function El(e,t,n,s=!0,i=!1){if(i)throw e;console.error(e)}const Re=[];let Xe=-1;const qt=[];let wt=null,Ht=0;const kr=Promise.resolve();let zn=null;function Rr(e){const t=zn||kr;return e?t.then(this?e.bind(this):e):t}function Al(e){let t=Xe+1,n=Re.length;for(;t<n;){const s=t+n>>>1,i=Re[s],r=yn(i);r<e||r===e&&i.flags&2?t=s+1:n=s}return t}function Js(e){if(!(e.flags&1)){const t=yn(e),n=Re[Re.length-1];!n||!(e.flags&2)&&t>=yn(n)?Re.push(e):Re.splice(Al(t),0,e),e.flags|=1,Er()}}function Er(){zn||(zn=kr.then(Or))}function Ol(e){B(e)?qt.push(...e):wt&&e.id===-1?wt.splice(Ht+1,0,e):e.flags&1||(qt.push(e),e.flags|=1),Er()}function Ci(e,t,n=Xe+1){for(;n<Re.length;n++){const s=Re[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;Re.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function Ar(e){if(qt.length){const t=[...new Set(qt)].sort((n,s)=>yn(n)-yn(s));if(qt.length=0,wt){wt.push(...t);return}for(wt=t,Ht=0;Ht<wt.length;Ht++){const n=wt[Ht];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}wt=null,Ht=0}}const yn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Or(e){try{for(Xe=0;Xe<Re.length;Xe++){const t=Re[Xe];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),xn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Xe<Re.length;Xe++){const t=Re[Xe];t&&(t.flags&=-2)}Xe=-1,Re.length=0,Ar(),zn=null,(Re.length||qt.length)&&Or()}}let ye=null,Pr=null;function Kn(e){const t=ye;return ye=e,Pr=e&&e.type.__scopeId||null,t}function Gt(e,t=ye,n){if(!t||e._n)return e;const s=(...i)=>{s._d&&Ni(-1);const r=Kn(t);let l;try{l=e(...i)}finally{Kn(r),s._d&&Ni(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function Pl(e,t){if(ye===null)return e;const n=ss(ye),s=e.dirs||(e.dirs=[]);for(let i=0;i<t.length;i++){let[r,l,a,f=ie]=t[i];r&&(z(r)&&(r={mounted:r,updated:r}),r.deep&&ut(l),s.push({dir:r,instance:n,value:l,oldValue:void 0,arg:a,modifiers:f}))}return e}function Rt(e,t,n,s){const i=e.dirs,r=t&&t.dirs;for(let l=0;l<i.length;l++){const a=i[l];r&&(a.oldValue=r[l].value);let f=a.dir[s];f&&(ft(),nt(f,n,8,[e.el,a,e,t]),dt())}}function Dl(e,t){if(Se){let n=Se.provides;const s=Se.parent&&Se.parent.provides;s===n&&(n=Se.provides=Object.create(s)),n[e]=t}}function Bn(e,t,n=!1){const s=Pa();if(s||Yt){let i=Yt?Yt._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(i&&e in i)return i[e];if(arguments.length>1)return n&&z(t)?t.call(s&&s.proxy):t}}const Fl=Symbol.for("v-scx"),Nl=()=>Bn(Fl);function Dt(e,t,n){return Dr(e,t,n)}function Dr(e,t,n=ie){const{immediate:s,deep:i,flush:r,once:l}=n,a=Te({},n),f=t&&s||!t&&r!=="post";let m;if(bn){if(r==="sync"){const S=Nl();m=S.__watcherHandles||(S.__watcherHandles=[])}else if(!f){const S=()=>{};return S.stop=tt,S.resume=tt,S.pause=tt,S}}const p=Se;a.call=(S,U,D)=>nt(S,p,U,D);let _=!1;r==="post"?a.scheduler=S=>{Ae(S,p&&p.suspense)}:r!=="sync"&&(_=!0,a.scheduler=(S,U)=>{U?S():Js(S)}),a.augmentJob=S=>{t&&(S.flags|=4),_&&(S.flags|=2,p&&(S.id=p.uid,S.i=p))};const T=Rl(e,t,a);return bn&&(m?m.push(T):f&&T()),T}function Ul(e,t,n){const s=this.proxy,i=ae(e)?e.includes(".")?Fr(s,e):()=>s[e]:e.bind(s,s);let r;z(t)?r=t:(r=t.handler,n=t);const l=In(this),a=Dr(i,r.bind(s),n);return l(),a}function Fr(e,t){const n=t.split(".");return()=>{let s=e;for(let i=0;i<n.length&&s;i++)s=s[n[i]];return s}}const Bl=Symbol("_vte"),Ll=e=>e.__isTeleport,jl=Symbol("_leaveCb");function Ys(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Ys(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Nr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Ti(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const Wn=new WeakMap;function dn(e,t,n,s,i=!1){if(B(e)){e.forEach((D,Q)=>dn(D,t&&(B(t)?t[Q]:t),n,s,i));return}if(Jt(s)&&!i){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&dn(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?ss(s.component):s.el,l=i?null:r,{i:a,r:f}=e,m=t&&t.r,p=a.refs===ie?a.refs={}:a.refs,_=a.setupState,T=X(_),S=_===ie?rr:D=>Ti(p,D)?!1:Z(T,D),U=(D,Q)=>!(Q&&Ti(p,Q));if(m!=null&&m!==f){if($i(t),ae(m))p[m]=null,S(m)&&(_[m]=null);else if(Ce(m)){const D=t;U(m,D.k)&&(m.value=null),D.k&&(p[D.k]=null)}}if(z(f))xn(f,a,12,[l,p]);else{const D=ae(f),Q=Ce(f);if(D||Q){const K=()=>{if(e.f){const R=D?S(f)?_[f]:p[f]:U()||!e.k?f.value:p[e.k];if(i)B(R)&&Ns(R,r);else if(B(R))R.includes(r)||R.push(r);else if(D)p[f]=[r],S(f)&&(_[f]=p[f]);else{const ee=[r];U(f,e.k)&&(f.value=ee),e.k&&(p[e.k]=ee)}}else D?(p[f]=l,S(f)&&(_[f]=l)):Q&&(U(f,e.k)&&(f.value=l),e.k&&(p[e.k]=l))};if(l){const R=()=>{K(),Wn.delete(e)};R.id=-1,Wn.set(e,R),Ae(R,n)}else $i(e),K()}}}function $i(e){const t=Wn.get(e);t&&(t.flags|=8,Wn.delete(e))}Xn().requestIdleCallback;Xn().cancelIdleCallback;const Jt=e=>!!e.type.__asyncLoader,Ur=e=>e.type.__isKeepAlive;function Hl(e,t){Br(e,"a",t)}function zl(e,t){Br(e,"da",t)}function Br(e,t,n=Se){const s=e.__wdc||(e.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(es(t,s,n),n){let i=n.parent;for(;i&&i.parent;)Ur(i.parent.vnode)&&Kl(s,t,n,i),i=i.parent}}function Kl(e,t,n,s){const i=es(t,e,s,!0);jr(()=>{Ns(s[t],i)},n)}function es(e,t,n=Se,s=!1){if(n){const i=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...l)=>{ft();const a=In(n),f=nt(t,n,e,l);return a(),dt(),f});return s?i.unshift(r):i.push(r),r}}const gt=e=>(t,n=Se)=>{(!bn||e==="sp")&&es(e,(...s)=>t(...s),n)},Wl=gt("bm"),Lr=gt("m"),Vl=gt("bu"),ql=gt("u"),Xs=gt("bum"),jr=gt("um"),Gl=gt("sp"),Jl=gt("rtg"),Yl=gt("rtc");function Xl(e,t=Se){es("ec",e,t)}const Zl="components",Hr=Symbol.for("v-ndc");function Ql(e){return ae(e)?ea(Zl,e,!1)||e:e||Hr}function ea(e,t,n=!0,s=!1){const i=ye||Se;if(i){const r=i.type;{const a=Ba(r,!1);if(a&&(a===t||a===Ee(t)||a===Yn(Ee(t))))return r}const l=Mi(i[e]||r[e],t)||Mi(i.appContext[e],t);return!l&&s?r:l}}function Mi(e,t){return e&&(e[t]||e[Ee(t)]||e[Yn(Ee(t))])}function Zt(e,t,n,s){let i;const r=n,l=B(e);if(l||ae(e)){const a=l&&Pt(e);let f=!1,m=!1;a&&(f=!Le(e),m=pt(e),e=Zn(e)),i=new Array(e.length);for(let p=0,_=e.length;p<_;p++)i[p]=t(f?m?Xt(Ge(e[p])):Ge(e[p]):e[p],p,void 0,r)}else if(typeof e=="number"){i=new Array(e);for(let a=0;a<e;a++)i[a]=t(a+1,a,void 0,r)}else if(te(e))if(e[Symbol.iterator])i=Array.from(e,(a,f)=>t(a,f,void 0,r));else{const a=Object.keys(e);i=new Array(a.length);for(let f=0,m=a.length;f<m;f++){const p=a[f];i[f]=t(e[p],p,f,r)}}else i=[];return i}function ta(e,t,n={},s,i){if(ye.ce||ye.parent&&Jt(ye.parent)&&ye.parent.ce){const m=Object.keys(n).length>0;return L(),mt(fe,null,[q("slot",n,s)],m?-2:64)}let r=e[t];r&&r._c&&(r._d=!1),L();const l=r&&zr(r(n)),a=n.key||l&&l.key,f=mt(fe,{key:(a&&!qe(a)?a:`_${t}`)+(!l&&s?"_fb":"")},l||[],l&&e._===1?64:-2);return f.scopeId&&(f.slotScopeIds=[f.scopeId+"-s"]),r&&r._c&&(r._d=!0),f}function zr(e){return e.some(t=>ei(t)?!(t.type===ht||t.type===fe&&!zr(t.children)):!0)?e:null}const ks=e=>e?uo(e)?ss(e):ks(e.parent):null,pn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ks(e.parent),$root:e=>ks(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Wr(e),$forceUpdate:e=>e.f||(e.f=()=>{Js(e.update)}),$nextTick:e=>e.n||(e.n=Rr.bind(e.proxy)),$watch:e=>Ul.bind(e)}),gs=(e,t)=>e!==ie&&!e.__isScriptSetup&&Z(e,t),na={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:i,props:r,accessCache:l,type:a,appContext:f}=e;if(t[0]!=="$"){const T=l[t];if(T!==void 0)switch(T){case 1:return s[t];case 2:return i[t];case 4:return n[t];case 3:return r[t]}else{if(gs(s,t))return l[t]=1,s[t];if(i!==ie&&Z(i,t))return l[t]=2,i[t];if(Z(r,t))return l[t]=3,r[t];if(n!==ie&&Z(n,t))return l[t]=4,n[t];Rs&&(l[t]=0)}}const m=pn[t];let p,_;if(m)return t==="$attrs"&&Ie(e.attrs,"get",""),m(e);if((p=a.__cssModules)&&(p=p[t]))return p;if(n!==ie&&Z(n,t))return l[t]=4,n[t];if(_=f.config.globalProperties,Z(_,t))return _[t]},set({_:e},t,n){const{data:s,setupState:i,ctx:r}=e;return gs(i,t)?(i[t]=n,!0):s!==ie&&Z(s,t)?(s[t]=n,!0):Z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:i,props:r,type:l}},a){let f;return!!(n[a]||e!==ie&&a[0]!=="$"&&Z(e,a)||gs(t,a)||Z(r,a)||Z(s,a)||Z(pn,a)||Z(i.config.globalProperties,a)||(f=l.__cssModules)&&f[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ki(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Rs=!0;function sa(e){const t=Wr(e),n=e.proxy,s=e.ctx;Rs=!1,t.beforeCreate&&Ri(t.beforeCreate,e,"bc");const{data:i,computed:r,methods:l,watch:a,provide:f,inject:m,created:p,beforeMount:_,mounted:T,beforeUpdate:S,updated:U,activated:D,deactivated:Q,beforeDestroy:K,beforeUnmount:R,destroyed:ee,unmounted:F,render:le,renderTracked:he,renderTriggered:$e,errorCaptured:Me,serverPrefetch:vt,expose:je,inheritAttrs:Je,components:He,directives:yt,filters:de}=t;if(m&&ia(m,s,null),l)for(const j in l){const G=l[j];z(G)&&(s[j]=G.bind(n))}if(i){const j=i.call(n,n);te(j)&&(e.data=Vs(j))}if(Rs=!0,r)for(const j in r){const G=r[j],_e=z(G)?G.bind(n,n):z(G.get)?G.get.bind(n,n):tt,ze=!z(G)&&z(G.set)?G.set.bind(n):tt,be=Ft({get:_e,set:ze});Object.defineProperty(s,j,{enumerable:!0,configurable:!0,get:()=>be.value,set:ce=>be.value=ce})}if(a)for(const j in a)Kr(a[j],s,n,j);if(f){const j=z(f)?f.call(n):f;Reflect.ownKeys(j).forEach(G=>{Dl(G,j[G])})}p&&Ri(p,e,"c");function H(j,G){B(G)?G.forEach(_e=>j(_e.bind(n))):G&&j(G.bind(n))}if(H(Wl,_),H(Lr,T),H(Vl,S),H(ql,U),H(Hl,D),H(zl,Q),H(Xl,Me),H(Yl,he),H(Jl,$e),H(Xs,R),H(jr,F),H(Gl,vt),B(je))if(je.length){const j=e.exposed||(e.exposed={});je.forEach(G=>{Object.defineProperty(j,G,{get:()=>n[G],set:_e=>n[G]=_e,enumerable:!0})})}else e.exposed||(e.exposed={});le&&e.render===tt&&(e.render=le),Je!=null&&(e.inheritAttrs=Je),He&&(e.components=He),yt&&(e.directives=yt),vt&&Nr(e)}function ia(e,t,n=tt){B(e)&&(e=Es(e));for(const s in e){const i=e[s];let r;te(i)?"default"in i?r=Bn(i.from||s,i.default,!0):r=Bn(i.from||s):r=Bn(i),Ce(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[s]=r}}function Ri(e,t,n){nt(B(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Kr(e,t,n,s){let i=s.includes(".")?Fr(n,s):()=>n[s];if(ae(e)){const r=t[e];z(r)&&Dt(i,r)}else if(z(e))Dt(i,e.bind(n));else if(te(e))if(B(e))e.forEach(r=>Kr(r,t,n,s));else{const r=z(e.handler)?e.handler.bind(n):t[e.handler];z(r)&&Dt(i,r,e)}}function Wr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:i,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,a=r.get(t);let f;return a?f=a:!i.length&&!n&&!s?f=t:(f={},i.length&&i.forEach(m=>Vn(f,m,l,!0)),Vn(f,t,l)),te(t)&&r.set(t,f),f}function Vn(e,t,n,s=!1){const{mixins:i,extends:r}=t;r&&Vn(e,r,n,!0),i&&i.forEach(l=>Vn(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const a=ra[l]||n&&n[l];e[l]=a?a(e[l],t[l]):t[l]}return e}const ra={data:Ei,props:Ai,emits:Ai,methods:an,computed:an,beforeCreate:ke,created:ke,beforeMount:ke,mounted:ke,beforeUpdate:ke,updated:ke,beforeDestroy:ke,beforeUnmount:ke,destroyed:ke,unmounted:ke,activated:ke,deactivated:ke,errorCaptured:ke,serverPrefetch:ke,components:an,directives:an,watch:la,provide:Ei,inject:oa};function Ei(e,t){return t?e?function(){return Te(z(e)?e.call(this,this):e,z(t)?t.call(this,this):t)}:t:e}function oa(e,t){return an(Es(e),Es(t))}function Es(e){if(B(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function ke(e,t){return e?[...new Set([].concat(e,t))]:t}function an(e,t){return e?Te(Object.create(null),e,t):t}function Ai(e,t){return e?B(e)&&B(t)?[...new Set([...e,...t])]:Te(Object.create(null),ki(e),ki(t??{})):t}function la(e,t){if(!e)return t;if(!t)return e;const n=Te(Object.create(null),e);for(const s in t)n[s]=ke(e[s],t[s]);return n}function Vr(){return{app:null,config:{isNativeTag:rr,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let aa=0;function ca(e,t){return function(s,i=null){z(s)||(s=Te({},s)),i!=null&&!te(i)&&(i=null);const r=Vr(),l=new WeakSet,a=[];let f=!1;const m=r.app={_uid:aa++,_component:s,_props:i,_container:null,_context:r,_instance:null,version:ja,get config(){return r.config},set config(p){},use(p,..._){return l.has(p)||(p&&z(p.install)?(l.add(p),p.install(m,..._)):z(p)&&(l.add(p),p(m,..._))),m},mixin(p){return r.mixins.includes(p)||r.mixins.push(p),m},component(p,_){return _?(r.components[p]=_,m):r.components[p]},directive(p,_){return _?(r.directives[p]=_,m):r.directives[p]},mount(p,_,T){if(!f){const S=m._ceVNode||q(s,i);return S.appContext=r,T===!0?T="svg":T===!1&&(T=void 0),e(S,p,T),f=!0,m._container=p,p.__vue_app__=m,ss(S.component)}},onUnmount(p){a.push(p)},unmount(){f&&(nt(a,m._instance,16),e(null,m._container),delete m._container.__vue_app__)},provide(p,_){return r.provides[p]=_,m},runWithContext(p){const _=Yt;Yt=m;try{return p()}finally{Yt=_}}};return m}}let Yt=null;const ua=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ee(t)}Modifiers`]||e[`${It(t)}Modifiers`];function fa(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ie;let i=n;const r=t.startsWith("update:"),l=r&&ua(s,t.slice(7));l&&(l.trim&&(i=n.map(p=>ae(p)?p.trim():p)),l.number&&(i=n.map(Bs)));let a,f=s[a=fs(t)]||s[a=fs(Ee(t))];!f&&r&&(f=s[a=fs(It(t))]),f&&nt(f,e,6,i);const m=s[a+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,nt(m,e,6,i)}}const da=new WeakMap;function qr(e,t,n=!1){const s=n?da:t.emitsCache,i=s.get(e);if(i!==void 0)return i;const r=e.emits;let l={},a=!1;if(!z(e)){const f=m=>{const p=qr(m,t,!0);p&&(a=!0,Te(l,p))};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!r&&!a?(te(e)&&s.set(e,null),null):(B(r)?r.forEach(f=>l[f]=null):Te(l,r),te(e)&&s.set(e,l),l)}function ts(e,t){return!e||!Gn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Z(e,t[0].toLowerCase()+t.slice(1))||Z(e,It(t))||Z(e,t))}function Oi(e){const{type:t,vnode:n,proxy:s,withProxy:i,propsOptions:[r],slots:l,attrs:a,emit:f,render:m,renderCache:p,props:_,data:T,setupState:S,ctx:U,inheritAttrs:D}=e,Q=Kn(e);let K,R;try{if(n.shapeFlag&4){const F=i||s,le=F;K=Qe(m.call(le,F,p,_,S,T,U)),R=a}else{const F=t;K=Qe(F.length>1?F(_,{attrs:a,slots:l,emit:f}):F(_,null)),R=t.props?a:pa(a)}}catch(F){hn.length=0,Qn(F,e,1),K=q(ht)}let ee=K;if(R&&D!==!1){const F=Object.keys(R),{shapeFlag:le}=ee;F.length&&le&7&&(r&&F.some(Fs)&&(R=ha(R,r)),ee=Qt(ee,R,!1,!0))}return n.dirs&&(ee=Qt(ee,null,!1,!0),ee.dirs=ee.dirs?ee.dirs.concat(n.dirs):n.dirs),n.transition&&Ys(ee,n.transition),K=ee,Kn(Q),K}const pa=e=>{let t;for(const n in e)(n==="class"||n==="style"||Gn(n))&&((t||(t={}))[n]=e[n]);return t},ha=(e,t)=>{const n={};for(const s in e)(!Fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function ma(e,t,n){const{props:s,children:i,component:r}=e,{props:l,children:a,patchFlag:f}=t,m=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&f>=0){if(f&1024)return!0;if(f&16)return s?Pi(s,l,m):!!l;if(f&8){const p=t.dynamicProps;for(let _=0;_<p.length;_++){const T=p[_];if(Gr(l,s,T)&&!ts(m,T))return!0}}}else return(i||a)&&(!a||!a.$stable)?!0:s===l?!1:s?l?Pi(s,l,m):!0:!!l;return!1}function Pi(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let i=0;i<s.length;i++){const r=s[i];if(Gr(t,e,r)&&!ts(n,r))return!0}return!1}function Gr(e,t,n){const s=e[n],i=t[n];return n==="style"&&te(s)&&te(i)?!Ls(s,i):s!==i}function ga({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const Jr={},Yr=()=>Object.create(Jr),Xr=e=>Object.getPrototypeOf(e)===Jr;function va(e,t,n,s=!1){const i={},r=Yr();e.propsDefaults=Object.create(null),Zr(e,t,i,r);for(const l in e.propsOptions[0])l in i||(i[l]=void 0);n?e.props=s?i:wl(i):e.type.props?e.props=i:e.props=r,e.attrs=r}function ya(e,t,n,s){const{props:i,attrs:r,vnode:{patchFlag:l}}=e,a=X(i),[f]=e.propsOptions;let m=!1;if((s||l>0)&&!(l&16)){if(l&8){const p=e.vnode.dynamicProps;for(let _=0;_<p.length;_++){let T=p[_];if(ts(e.emitsOptions,T))continue;const S=t[T];if(f)if(Z(r,T))S!==r[T]&&(r[T]=S,m=!0);else{const U=Ee(T);i[U]=As(f,a,U,S,e,!1)}else S!==r[T]&&(r[T]=S,m=!0)}}}else{Zr(e,t,i,r)&&(m=!0);let p;for(const _ in a)(!t||!Z(t,_)&&((p=It(_))===_||!Z(t,p)))&&(f?n&&(n[_]!==void 0||n[p]!==void 0)&&(i[_]=As(f,a,_,void 0,e,!0)):delete i[_]);if(r!==a)for(const _ in r)(!t||!Z(t,_))&&(delete r[_],m=!0)}m&&ct(e.attrs,"set","")}function Zr(e,t,n,s){const[i,r]=e.propsOptions;let l=!1,a;if(t)for(let f in t){if(cn(f))continue;const m=t[f];let p;i&&Z(i,p=Ee(f))?!r||!r.includes(p)?n[p]=m:(a||(a={}))[p]=m:ts(e.emitsOptions,f)||(!(f in s)||m!==s[f])&&(s[f]=m,l=!0)}if(r){const f=X(n),m=a||ie;for(let p=0;p<r.length;p++){const _=r[p];n[_]=As(i,f,_,m[_],e,!Z(m,_))}}return l}function As(e,t,n,s,i,r){const l=e[n];if(l!=null){const a=Z(l,"default");if(a&&s===void 0){const f=l.default;if(l.type!==Function&&!l.skipFactory&&z(f)){const{propsDefaults:m}=i;if(n in m)s=m[n];else{const p=In(i);s=m[n]=f.call(null,t),p()}}else s=f;i.ce&&i.ce._setProp(n,s)}l[0]&&(r&&!a?s=!1:l[1]&&(s===""||s===It(n))&&(s=!0))}return s}const _a=new WeakMap;function Qr(e,t,n=!1){const s=n?_a:t.propsCache,i=s.get(e);if(i)return i;const r=e.props,l={},a=[];let f=!1;if(!z(e)){const p=_=>{f=!0;const[T,S]=Qr(_,t,!0);Te(l,T),S&&a.push(...S)};!n&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!r&&!f)return te(e)&&s.set(e,Wt),Wt;if(B(r))for(let p=0;p<r.length;p++){const _=Ee(r[p]);Di(_)&&(l[_]=ie)}else if(r)for(const p in r){const _=Ee(p);if(Di(_)){const T=r[p],S=l[_]=B(T)||z(T)?{type:T}:Te({},T),U=S.type;let D=!1,Q=!0;if(B(U))for(let K=0;K<U.length;++K){const R=U[K],ee=z(R)&&R.name;if(ee==="Boolean"){D=!0;break}else ee==="String"&&(Q=!1)}else D=z(U)&&U.name==="Boolean";S[0]=D,S[1]=Q,(D||Z(S,"default"))&&a.push(_)}}const m=[l,a];return te(e)&&s.set(e,m),m}function Di(e){return e[0]!=="$"&&!cn(e)}const Zs=e=>e==="_"||e==="_ctx"||e==="$stable",Qs=e=>B(e)?e.map(Qe):[Qe(e)],ba=(e,t,n)=>{if(t._n)return t;const s=Gt((...i)=>Qs(t(...i)),n);return s._c=!1,s},eo=(e,t,n)=>{const s=e._ctx;for(const i in e){if(Zs(i))continue;const r=e[i];if(z(r))t[i]=ba(i,r,s);else if(r!=null){const l=Qs(r);t[i]=()=>l}}},to=(e,t)=>{const n=Qs(t);e.slots.default=()=>n},no=(e,t,n)=>{for(const s in t)(n||!Zs(s))&&(e[s]=t[s])},wa=(e,t,n)=>{const s=e.slots=Yr();if(e.vnode.shapeFlag&32){const i=t._;i?(no(s,t,n),n&&ur(s,"_",i,!0)):eo(t,s)}else t&&to(e,t)},xa=(e,t,n)=>{const{vnode:s,slots:i}=e;let r=!0,l=ie;if(s.shapeFlag&32){const a=t._;a?n&&a===1?r=!1:no(i,t,n):(r=!t.$stable,eo(t,i)),l=t}else t&&(to(e,t),l={default:1});if(r)for(const a in i)!Zs(a)&&l[a]==null&&delete i[a]},Ae=$a;function Ia(e){return Sa(e)}function Sa(e,t){const n=Xn();n.__VUE__=!0;const{insert:s,remove:i,patchProp:r,createElement:l,createText:a,createComment:f,setText:m,setElementText:p,parentNode:_,nextSibling:T,setScopeId:S=tt,insertStaticContent:U}=e,D=(d,h,v,I=null,w=null,x=null,k=void 0,$=null,C=!!h.dynamicChildren)=>{if(d===h)return;d&&!ln(d,h)&&(I=Nt(d),ce(d,w,x,!0),d=null),h.patchFlag===-2&&(C=!1,h.dynamicChildren=null);const{type:b,ref:P,shapeFlag:E}=h;switch(b){case ns:Q(d,h,v,I);break;case ht:K(d,h,v,I);break;case ys:d==null&&R(h,v,I,k);break;case fe:He(d,h,v,I,w,x,k,$,C);break;default:E&1?le(d,h,v,I,w,x,k,$,C):E&6?yt(d,h,v,I,w,x,k,$,C):(E&64||E&128)&&b.process(d,h,v,I,w,x,k,$,C,it)}P!=null&&w?dn(P,d&&d.ref,x,h||d,!h):P==null&&d&&d.ref!=null&&dn(d.ref,null,x,d,!0)},Q=(d,h,v,I)=>{if(d==null)s(h.el=a(h.children),v,I);else{const w=h.el=d.el;h.children!==d.children&&m(w,h.children)}},K=(d,h,v,I)=>{d==null?s(h.el=f(h.children||""),v,I):h.el=d.el},R=(d,h,v,I)=>{[d.el,d.anchor]=U(d.children,h,v,I,d.el,d.anchor)},ee=({el:d,anchor:h},v,I)=>{let w;for(;d&&d!==h;)w=T(d),s(d,v,I),d=w;s(h,v,I)},F=({el:d,anchor:h})=>{let v;for(;d&&d!==h;)v=T(d),i(d),d=v;i(h)},le=(d,h,v,I,w,x,k,$,C)=>{if(h.type==="svg"?k="svg":h.type==="math"&&(k="mathml"),d==null)he(h,v,I,w,x,k,$,C);else{const b=d.el&&d.el._isVueCE?d.el:null;try{b&&b._beginPatch(),vt(d,h,w,x,k,$,C)}finally{b&&b._endPatch()}}},he=(d,h,v,I,w,x,k,$)=>{let C,b;const{props:P,shapeFlag:E,transition:A,dirs:N}=d;if(C=d.el=l(d.type,x,P&&P.is,P),E&8?p(C,d.children):E&16&&Me(d.children,C,null,I,w,vs(d,x),k,$),N&&Rt(d,null,I,"created"),$e(C,d,d.scopeId,k,I),P){for(const Y in P)Y!=="value"&&!cn(Y)&&r(C,Y,null,P[Y],x,I);"value"in P&&r(C,"value",null,P.value,x),(b=P.onVnodeBeforeMount)&&Ye(b,I,d)}N&&Rt(d,null,I,"beforeMount");const W=Ca(w,A);W&&A.beforeEnter(C),s(C,h,v),((b=P&&P.onVnodeMounted)||W||N)&&Ae(()=>{b&&Ye(b,I,d),W&&A.enter(C),N&&Rt(d,null,I,"mounted")},w)},$e=(d,h,v,I,w)=>{if(v&&S(d,v),I)for(let x=0;x<I.length;x++)S(d,I[x]);if(w){let x=w.subTree;if(h===x||oo(x.type)&&(x.ssContent===h||x.ssFallback===h)){const k=w.vnode;$e(d,k,k.scopeId,k.slotScopeIds,w.parent)}}},Me=(d,h,v,I,w,x,k,$,C=0)=>{for(let b=C;b<d.length;b++){const P=d[b]=$?at(d[b]):Qe(d[b]);D(null,P,h,v,I,w,x,k,$)}},vt=(d,h,v,I,w,x,k)=>{const $=h.el=d.el;let{patchFlag:C,dynamicChildren:b,dirs:P}=h;C|=d.patchFlag&16;const E=d.props||ie,A=h.props||ie;let N;if(v&&Et(v,!1),(N=A.onVnodeBeforeUpdate)&&Ye(N,v,h,d),P&&Rt(h,d,v,"beforeUpdate"),v&&Et(v,!0),(E.innerHTML&&A.innerHTML==null||E.textContent&&A.textContent==null)&&p($,""),b?je(d.dynamicChildren,b,$,v,I,vs(h,w),x):k||G(d,h,$,null,v,I,vs(h,w),x,!1),C>0){if(C&16)Je($,E,A,v,w);else if(C&2&&E.class!==A.class&&r($,"class",null,A.class,w),C&4&&r($,"style",E.style,A.style,w),C&8){const W=h.dynamicProps;for(let Y=0;Y<W.length;Y++){const J=W[Y],we=E[J],xe=A[J];(xe!==we||J==="value")&&r($,J,we,xe,w,v)}}C&1&&d.children!==h.children&&p($,h.children)}else!k&&b==null&&Je($,E,A,v,w);((N=A.onVnodeUpdated)||P)&&Ae(()=>{N&&Ye(N,v,h,d),P&&Rt(h,d,v,"updated")},I)},je=(d,h,v,I,w,x,k)=>{for(let $=0;$<h.length;$++){const C=d[$],b=h[$],P=C.el&&(C.type===fe||!ln(C,b)||C.shapeFlag&198)?_(C.el):v;D(C,b,P,null,I,w,x,k,!0)}},Je=(d,h,v,I,w)=>{if(h!==v){if(h!==ie)for(const x in h)!cn(x)&&!(x in v)&&r(d,x,h[x],null,w,I);for(const x in v){if(cn(x))continue;const k=v[x],$=h[x];k!==$&&x!=="value"&&r(d,x,$,k,w,I)}"value"in v&&r(d,"value",h.value,v.value,w)}},He=(d,h,v,I,w,x,k,$,C)=>{const b=h.el=d?d.el:a(""),P=h.anchor=d?d.anchor:a("");let{patchFlag:E,dynamicChildren:A,slotScopeIds:N}=h;N&&($=$?$.concat(N):N),d==null?(s(b,v,I),s(P,v,I),Me(h.children||[],v,P,w,x,k,$,C)):E>0&&E&64&&A&&d.dynamicChildren&&d.dynamicChildren.length===A.length?(je(d.dynamicChildren,A,v,w,x,k,$),(h.key!=null||w&&h===w.subTree)&&so(d,h,!0)):G(d,h,v,P,w,x,k,$,C)},yt=(d,h,v,I,w,x,k,$,C)=>{h.slotScopeIds=$,d==null?h.shapeFlag&512?w.ctx.activate(h,v,I,k,C):de(h,v,I,w,x,k,C):st(d,h,C)},de=(d,h,v,I,w,x,k)=>{const $=d.component=Oa(d,I,w);if(Ur(d)&&($.ctx.renderer=it),Da($,!1,k),$.asyncDep){if(w&&w.registerDep($,H,k),!d.el){const C=$.subTree=q(ht);K(null,C,h,v),d.placeholder=C.el}}else H($,d,h,v,w,x,k)},st=(d,h,v)=>{const I=h.component=d.component;if(ma(d,h,v))if(I.asyncDep&&!I.asyncResolved){j(I,h,v);return}else I.next=h,I.update();else h.el=d.el,I.vnode=h},H=(d,h,v,I,w,x,k)=>{const $=()=>{if(d.isMounted){let{next:E,bu:A,u:N,parent:W,vnode:Y}=d;{const Ne=io(d);if(Ne){E&&(E.el=Y.el,j(d,E,k)),Ne.asyncDep.then(()=>{Ae(()=>{d.isUnmounted||b()},w)});return}}let J=E,we;Et(d,!1),E?(E.el=Y.el,j(d,E,k)):E=Y,A&&Un(A),(we=E.props&&E.props.onVnodeBeforeUpdate)&&Ye(we,W,E,Y),Et(d,!0);const xe=Oi(d),Fe=d.subTree;d.subTree=xe,D(Fe,xe,_(Fe.el),Nt(Fe),d,w,x),E.el=xe.el,J===null&&ga(d,xe.el),N&&Ae(N,w),(we=E.props&&E.props.onVnodeUpdated)&&Ae(()=>Ye(we,W,E,Y),w)}else{let E;const{el:A,props:N}=h,{bm:W,m:Y,parent:J,root:we,type:xe}=d,Fe=Jt(h);Et(d,!1),W&&Un(W),!Fe&&(E=N&&N.onVnodeBeforeMount)&&Ye(E,J,h),Et(d,!0);{we.ce&&we.ce._hasShadowRoot()&&we.ce._injectChildStyle(xe,d.parent?d.parent.type:void 0);const Ne=d.subTree=Oi(d);D(null,Ne,v,I,d,w,x),h.el=Ne.el}if(Y&&Ae(Y,w),!Fe&&(E=N&&N.onVnodeMounted)){const Ne=h;Ae(()=>Ye(E,J,Ne),w)}(h.shapeFlag&256||J&&Jt(J.vnode)&&J.vnode.shapeFlag&256)&&d.a&&Ae(d.a,w),d.isMounted=!0,h=v=I=null}};d.scope.on();const C=d.effect=new hr($);d.scope.off();const b=d.update=C.run.bind(C),P=d.job=C.runIfDirty.bind(C);P.i=d,P.id=d.uid,C.scheduler=()=>Js(P),Et(d,!0),b()},j=(d,h,v)=>{h.component=d;const I=d.vnode.props;d.vnode=h,d.next=null,ya(d,h.props,I,v),xa(d,h.children,v),ft(),Ci(d),dt()},G=(d,h,v,I,w,x,k,$,C=!1)=>{const b=d&&d.children,P=d?d.shapeFlag:0,E=h.children,{patchFlag:A,shapeFlag:N}=h;if(A>0){if(A&128){ze(b,E,v,I,w,x,k,$,C);return}else if(A&256){_e(b,E,v,I,w,x,k,$,C);return}}N&8?(P&16&&Ct(b,w,x),E!==b&&p(v,E)):P&16?N&16?ze(b,E,v,I,w,x,k,$,C):Ct(b,w,x,!0):(P&8&&p(v,""),N&16&&Me(E,v,I,w,x,k,$,C))},_e=(d,h,v,I,w,x,k,$,C)=>{d=d||Wt,h=h||Wt;const b=d.length,P=h.length,E=Math.min(b,P);let A;for(A=0;A<E;A++){const N=h[A]=C?at(h[A]):Qe(h[A]);D(d[A],N,v,null,w,x,k,$,C)}b>P?Ct(d,w,x,!0,!1,E):Me(h,v,I,w,x,k,$,C,E)},ze=(d,h,v,I,w,x,k,$,C)=>{let b=0;const P=h.length;let E=d.length-1,A=P-1;for(;b<=E&&b<=A;){const N=d[b],W=h[b]=C?at(h[b]):Qe(h[b]);if(ln(N,W))D(N,W,v,null,w,x,k,$,C);else break;b++}for(;b<=E&&b<=A;){const N=d[E],W=h[A]=C?at(h[A]):Qe(h[A]);if(ln(N,W))D(N,W,v,null,w,x,k,$,C);else break;E--,A--}if(b>E){if(b<=A){const N=A+1,W=N<P?h[N].el:I;for(;b<=A;)D(null,h[b]=C?at(h[b]):Qe(h[b]),v,W,w,x,k,$,C),b++}}else if(b>A)for(;b<=E;)ce(d[b],w,x,!0),b++;else{const N=b,W=b,Y=new Map;for(b=W;b<=A;b++){const me=h[b]=C?at(h[b]):Qe(h[b]);me.key!=null&&Y.set(me.key,b)}let J,we=0;const xe=A-W+1;let Fe=!1,Ne=0;const Tt=new Array(xe);for(b=0;b<xe;b++)Tt[b]=0;for(b=N;b<=E;b++){const me=d[b];if(we>=xe){ce(me,w,x,!0);continue}let Pe;if(me.key!=null)Pe=Y.get(me.key);else for(J=W;J<=A;J++)if(Tt[J-W]===0&&ln(me,h[J])){Pe=J;break}Pe===void 0?ce(me,w,x,!0):(Tt[Pe-W]=b+1,Pe>=Ne?Ne=Pe:Fe=!0,D(me,h[Pe],v,null,w,x,k,$,C),we++)}const nn=Fe?Ta(Tt):Wt;for(J=nn.length-1,b=xe-1;b>=0;b--){const me=W+b,Pe=h[me],sn=h[me+1],rn=me+1<P?sn.el||ro(sn):I;Tt[b]===0?D(null,Pe,v,rn,w,x,k,$,C):Fe&&(J<0||b!==nn[J]?be(Pe,v,rn,2):J--)}}},be=(d,h,v,I,w=null)=>{const{el:x,type:k,transition:$,children:C,shapeFlag:b}=d;if(b&6){be(d.component.subTree,h,v,I);return}if(b&128){d.suspense.move(h,v,I);return}if(b&64){k.move(d,h,v,it);return}if(k===fe){s(x,h,v);for(let E=0;E<C.length;E++)be(C[E],h,v,I);s(d.anchor,h,v);return}if(k===ys){ee(d,h,v);return}if(I!==2&&b&1&&$)if(I===0)$.beforeEnter(x),s(x,h,v),Ae(()=>$.enter(x),w);else{const{leave:E,delayLeave:A,afterLeave:N}=$,W=()=>{d.ctx.isUnmounted?i(x):s(x,h,v)},Y=()=>{x._isLeaving&&x[jl](!0),E(x,()=>{W(),N&&N()})};A?A(x,W,Y):Y()}else s(x,h,v)},ce=(d,h,v,I=!1,w=!1)=>{const{type:x,props:k,ref:$,children:C,dynamicChildren:b,shapeFlag:P,patchFlag:E,dirs:A,cacheIndex:N}=d;if(E===-2&&(w=!1),$!=null&&(ft(),dn($,null,v,d,!0),dt()),N!=null&&(h.renderCache[N]=void 0),P&256){h.ctx.deactivate(d);return}const W=P&1&&A,Y=!Jt(d);let J;if(Y&&(J=k&&k.onVnodeBeforeUnmount)&&Ye(J,h,d),P&6)Sn(d.component,v,I);else{if(P&128){d.suspense.unmount(v,I);return}W&&Rt(d,null,h,"beforeUnmount"),P&64?d.type.remove(d,h,v,it,I):b&&!b.hasOnce&&(x!==fe||E>0&&E&64)?Ct(b,h,v,!1,!0):(x===fe&&E&384||!w&&P&16)&&Ct(C,h,v),I&&_t(d)}(Y&&(J=k&&k.onVnodeUnmounted)||W)&&Ae(()=>{J&&Ye(J,h,d),W&&Rt(d,null,h,"unmounted")},v)},_t=d=>{const{type:h,el:v,anchor:I,transition:w}=d;if(h===fe){St(v,I);return}if(h===ys){F(d);return}const x=()=>{i(v),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(d.shapeFlag&1&&w&&!w.persisted){const{leave:k,delayLeave:$}=w,C=()=>k(v,x);$?$(d.el,x,C):C()}else x()},St=(d,h)=>{let v;for(;d!==h;)v=T(d),i(d),d=v;i(h)},Sn=(d,h,v)=>{const{bum:I,scope:w,job:x,subTree:k,um:$,m:C,a:b}=d;Fi(C),Fi(b),I&&Un(I),w.stop(),x&&(x.flags|=8,ce(k,d,h,v)),$&&Ae($,h),Ae(()=>{d.isUnmounted=!0},h)},Ct=(d,h,v,I=!1,w=!1,x=0)=>{for(let k=x;k<d.length;k++)ce(d[k],h,v,I,w)},Nt=d=>{if(d.shapeFlag&6)return Nt(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const h=T(d.anchor||d.el),v=h&&h[Bl];return v?T(v):h};let tn=!1;const Cn=(d,h,v)=>{let I;d==null?h._vnode&&(ce(h._vnode,null,null,!0),I=h._vnode.component):D(h._vnode||null,d,h,null,null,null,v),h._vnode=d,tn||(tn=!0,Ci(I),Ar(),tn=!1)},it={p:D,um:ce,m:be,r:_t,mt:de,mc:Me,pc:G,pbc:je,n:Nt,o:e};return{render:Cn,hydrate:void 0,createApp:ca(Cn)}}function vs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Et({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ca(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function so(e,t,n=!1){const s=e.children,i=t.children;if(B(s)&&B(i))for(let r=0;r<s.length;r++){const l=s[r];let a=i[r];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=i[r]=at(i[r]),a.el=l.el),!n&&a.patchFlag!==-2&&so(l,a)),a.type===ns&&(a.patchFlag===-1&&(a=i[r]=at(a)),a.el=l.el),a.type===ht&&!a.el&&(a.el=l.el)}}function Ta(e){const t=e.slice(),n=[0];let s,i,r,l,a;const f=e.length;for(s=0;s<f;s++){const m=e[s];if(m!==0){if(i=n[n.length-1],e[i]<m){t[s]=i,n.push(s);continue}for(r=0,l=n.length-1;r<l;)a=r+l>>1,e[n[a]]<m?r=a+1:l=a;m<e[n[r]]&&(r>0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,l=n[r-1];r-- >0;)n[r]=l,l=t[l];return n}function io(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:io(t)}function Fi(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function ro(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?ro(t.subTree):null}const oo=e=>e.__isSuspense;function $a(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):Ol(e)}const fe=Symbol.for("v-fgt"),ns=Symbol.for("v-txt"),ht=Symbol.for("v-cmt"),ys=Symbol.for("v-stc"),hn=[];let De=null;function L(e=!1){hn.push(De=e?null:[])}function Ma(){hn.pop(),De=hn[hn.length-1]||null}let _n=1;function Ni(e,t=!1){_n+=e,e<0&&De&&t&&(De.hasOnce=!0)}function lo(e){return e.dynamicChildren=_n>0?De||Wt:null,Ma(),_n>0&&De&&De.push(e),e}function V(e,t,n,s,i,r){return lo(y(e,t,n,s,i,r,!0))}function mt(e,t,n,s,i){return lo(q(e,t,n,s,i,!0))}function ei(e){return e?e.__v_isVNode===!0:!1}function ln(e,t){return e.type===t.type&&e.key===t.key}const ao=({key:e})=>e??null,Ln=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||Ce(e)||z(e)?{i:ye,r:e,k:t,f:!!n}:e:null);function y(e,t=null,n=null,s=0,i=null,r=e===fe?0:1,l=!1,a=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ao(t),ref:t&&Ln(t),scopeId:Pr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:ye};return a?(ti(f,n),r&128&&e.normalize(f)):n&&(f.shapeFlag|=ae(n)?8:16),_n>0&&!l&&De&&(f.patchFlag>0||r&6)&&f.patchFlag!==32&&De.push(f),f}const q=ka;function ka(e,t=null,n=null,s=0,i=null,r=!1){if((!e||e===Hr)&&(e=ht),ei(e)){const a=Qt(e,t,!0);return n&&ti(a,n),_n>0&&!r&&De&&(a.shapeFlag&6?De[De.indexOf(e)]=a:De.push(a)),a.patchFlag=-2,a}if(La(e)&&(e=e.__vccOpts),t){t=Ra(t);let{class:a,style:f}=t;a&&!ae(a)&&(t.class=xt(a)),te(f)&&(Gs(f)&&!B(f)&&(f=Te({},f)),t.style=Be(f))}const l=ae(e)?1:oo(e)?128:Ll(e)?64:te(e)?4:z(e)?2:0;return y(e,t,n,s,i,l,r,!0)}function Ra(e){return e?Gs(e)||Xr(e)?Te({},e):e:null}function Qt(e,t,n=!1,s=!1){const{props:i,ref:r,patchFlag:l,children:a,transition:f}=e,m=t?co(i||{},t):i,p={__v_isVNode:!0,__v_skip:!0,type:e.type,props:m,key:m&&ao(m),ref:t&&t.ref?n&&r?B(r)?r.concat(Ln(t)):[r,Ln(t)]:Ln(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fe?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qt(e.ssContent),ssFallback:e.ssFallback&&Qt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return f&&s&&Ys(p,f.clone(p)),p}function en(e=" ",t=0){return q(ns,null,e,t)}function We(e="",t=!1){return t?(L(),mt(ht,null,e)):q(ht,null,e)}function Qe(e){return e==null||typeof e=="boolean"?q(ht):B(e)?q(fe,null,e.slice()):ei(e)?at(e):q(ns,null,String(e))}function at(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qt(e)}function ti(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const i=t.default;i&&(i._c&&(i._d=!1),ti(e,i()),i._c&&(i._d=!0));return}else{n=32;const i=t._;!i&&!Xr(t)?t._ctx=ye:i===3&&ye&&(ye.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else z(t)?(t={default:t,_ctx:ye},n=32):(t=String(t),s&64?(n=16,t=[en(t)]):n=8);e.children=t,e.shapeFlag|=n}function co(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const i in s)if(i==="class")t.class!==s.class&&(t.class=xt([t.class,s.class]));else if(i==="style")t.style=Be([t.style,s.style]);else if(Gn(i)){const r=t[i],l=s[i];l&&r!==l&&!(B(r)&&r.includes(l))&&(t[i]=r?[].concat(r,l):l)}else i!==""&&(t[i]=s[i])}return t}function Ye(e,t,n,s=null){nt(e,t,7,[n,s])}const Ea=Vr();let Aa=0;function Oa(e,t,n){const s=e.type,i=(t?t.appContext:e.appContext)||Ea,r={uid:Aa++,vnode:e,type:s,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new tl(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Qr(s,i),emitsOptions:qr(s,i),emit:null,emitted:null,propsDefaults:ie,inheritAttrs:s.inheritAttrs,ctx:ie,data:ie,props:ie,attrs:ie,slots:ie,refs:ie,setupState:ie,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=fa.bind(null,r),e.ce&&e.ce(r),r}let Se=null;const Pa=()=>Se||ye;let qn,Os;{const e=Xn(),t=(n,s)=>{let i;return(i=e[n])||(i=e[n]=[]),i.push(s),r=>{i.length>1?i.forEach(l=>l(r)):i[0](r)}};qn=t("__VUE_INSTANCE_SETTERS__",n=>Se=n),Os=t("__VUE_SSR_SETTERS__",n=>bn=n)}const In=e=>{const t=Se;return qn(e),e.scope.on(),()=>{e.scope.off(),qn(t)}},Ui=()=>{Se&&Se.scope.off(),qn(null)};function uo(e){return e.vnode.shapeFlag&4}let bn=!1;function Da(e,t=!1,n=!1){t&&Os(t);const{props:s,children:i}=e.vnode,r=uo(e);va(e,s,r,t),wa(e,i,n||t);const l=r?Fa(e,t):void 0;return t&&Os(!1),l}function Fa(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,na);const{setup:s}=n;if(s){ft();const i=e.setupContext=s.length>1?Ua(e):null,r=In(e),l=xn(s,e,0,[e.props,i]),a=lr(l);if(dt(),r(),(a||e.sp)&&!Jt(e)&&Nr(e),a){if(l.then(Ui,Ui),t)return l.then(f=>{Bi(e,f)}).catch(f=>{Qn(f,e,0)});e.asyncDep=l}else Bi(e,l)}else fo(e)}function Bi(e,t,n){z(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:te(t)&&(e.setupState=Mr(t)),fo(e)}function fo(e,t,n){const s=e.type;e.render||(e.render=s.render||tt);{const i=In(e);ft();try{sa(e)}finally{dt(),i()}}}const Na={get(e,t){return Ie(e,"get",""),e[t]}};function Ua(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Na),slots:e.slots,emit:e.emit,expose:t}}function ss(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Mr(xl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in pn)return pn[n](e)},has(t,n){return n in t||n in pn}})):e.proxy}function Ba(e,t=!0){return z(e)?e.displayName||e.name:e.name||t&&e.__name}function La(e){return z(e)&&"__vccOpts"in e}const Ft=(e,t)=>Ml(e,t,bn),ja="3.5.30";/**
|
||
* @vue/runtime-dom v3.5.30
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/let Ps;const Li=typeof window<"u"&&window.trustedTypes;if(Li)try{Ps=Li.createPolicy("vue",{createHTML:e=>e})}catch{}const po=Ps?e=>Ps.createHTML(e):e=>e,Ha="http://www.w3.org/2000/svg",za="http://www.w3.org/1998/Math/MathML",lt=typeof document<"u"?document:null,ji=lt&<.createElement("template"),Ka={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const i=t==="svg"?lt.createElementNS(Ha,e):t==="mathml"?lt.createElementNS(za,e):n?lt.createElement(e,{is:n}):lt.createElement(e);return e==="select"&&s&&s.multiple!=null&&i.setAttribute("multiple",s.multiple),i},createText:e=>lt.createTextNode(e),createComment:e=>lt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>lt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,i,r){const l=n?n.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===r||!(i=i.nextSibling)););else{ji.innerHTML=po(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const a=ji.content;if(s==="svg"||s==="mathml"){const f=a.firstChild;for(;f.firstChild;)a.appendChild(f.firstChild);a.removeChild(f)}t.insertBefore(a,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Wa=Symbol("_vtc");function Va(e,t,n){const s=e[Wa];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Hi=Symbol("_vod"),qa=Symbol("_vsh"),Ga=Symbol(""),Ja=/(?:^|;)\s*display\s*:/;function Ya(e,t,n){const s=e.style,i=ae(n);let r=!1;if(n&&!i){if(t)if(ae(t))for(const l of t.split(";")){const a=l.slice(0,l.indexOf(":")).trim();n[a]==null&&jn(s,a,"")}else for(const l in t)n[l]==null&&jn(s,l,"");for(const l in n)l==="display"&&(r=!0),jn(s,l,n[l])}else if(i){if(t!==n){const l=s[Ga];l&&(n+=";"+l),s.cssText=n,r=Ja.test(n)}}else t&&e.removeAttribute("style");Hi in e&&(e[Hi]=r?s.display:"",e[qa]&&(s.display="none"))}const zi=/\s*!important$/;function jn(e,t,n){if(B(n))n.forEach(s=>jn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Xa(e,t);zi.test(n)?e.setProperty(It(s),n.replace(zi,""),"important"):e[s]=n}}const Ki=["Webkit","Moz","ms"],_s={};function Xa(e,t){const n=_s[t];if(n)return n;let s=Ee(t);if(s!=="filter"&&s in e)return _s[t]=s;s=Yn(s);for(let i=0;i<Ki.length;i++){const r=Ki[i]+s;if(r in e)return _s[t]=r}return t}const Wi="http://www.w3.org/1999/xlink";function Vi(e,t,n,s,i,r=Qo(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Wi,t.slice(6,t.length)):e.setAttributeNS(Wi,t,n):n==null||r&&!fr(n)?e.removeAttribute(t):e.setAttribute(t,r?"":qe(n)?String(n):n)}function qi(e,t,n,s,i){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?po(n):n);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const a=r==="OPTION"?e.getAttribute("value")||"":e.value,f=n==null?e.type==="checkbox"?"on":"":String(n);(a!==f||!("_value"in e))&&(e.value=f),n==null&&e.removeAttribute(t),e._value=n;return}let l=!1;if(n===""||n==null){const a=typeof e[t];a==="boolean"?n=fr(n):n==null&&a==="string"?(n="",l=!0):a==="number"&&(n=0,l=!0)}try{e[t]=n}catch{}l&&e.removeAttribute(i||t)}function zt(e,t,n,s){e.addEventListener(t,n,s)}function Za(e,t,n,s){e.removeEventListener(t,n,s)}const Gi=Symbol("_vei");function Qa(e,t,n,s,i=null){const r=e[Gi]||(e[Gi]={}),l=r[t];if(s&&l)l.value=s;else{const[a,f]=ec(t);if(s){const m=r[t]=sc(s,i);zt(e,a,m,f)}else l&&(Za(e,a,l,f),r[t]=void 0)}}const Ji=/(?:Once|Passive|Capture)$/;function ec(e){let t;if(Ji.test(e)){t={};let s;for(;s=e.match(Ji);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):It(e.slice(2)),t]}let bs=0;const tc=Promise.resolve(),nc=()=>bs||(tc.then(()=>bs=0),bs=Date.now());function sc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;nt(ic(s,n.value),t,5,[s])};return n.value=e,n.attached=nc(),n}function ic(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>i=>!i._stopped&&s&&s(i))}else return t}const Yi=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,rc=(e,t,n,s,i,r)=>{const l=i==="svg";t==="class"?Va(e,s,l):t==="style"?Ya(e,n,s):Gn(t)?Fs(t)||Qa(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):oc(e,t,s,l))?(qi(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Vi(e,t,s,l,r,t!=="value")):e._isVueCE&&(lc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ae(s)))?qi(e,Ee(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Vi(e,t,s,l))};function oc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Yi(t)&&z(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Yi(t)&&ae(n)?!1:t in e}function lc(e,t){const n=e._def.props;if(!n)return!1;const s=Ee(t);return Array.isArray(n)?n.some(i=>Ee(i)===s):Object.keys(n).some(i=>Ee(i)===s)}const Xi=e=>{const t=e.props["onUpdate:modelValue"]||!1;return B(t)?n=>Un(t,n):t};function ac(e){e.target.composing=!0}function Zi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ws=Symbol("_assign");function Qi(e,t,n){return t&&(e=e.trim()),n&&(e=Bs(e)),e}const cc={created(e,{modifiers:{lazy:t,trim:n,number:s}},i){e[ws]=Xi(i);const r=s||i.props&&i.props.type==="number";zt(e,t?"change":"input",l=>{l.target.composing||e[ws](Qi(e.value,n,r))}),(n||r)&&zt(e,"change",()=>{e.value=Qi(e.value,n,r)}),t||(zt(e,"compositionstart",ac),zt(e,"compositionend",Zi),zt(e,"change",Zi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:i,number:r}},l){if(e[ws]=Xi(l),e.composing)return;const a=(r||e.type==="number")&&!/^0\d/.test(e.value)?Bs(e.value):e.value,f=t??"";a!==f&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||i&&e.value.trim()===f)||(e.value=f))}},uc=["ctrl","shift","alt","meta"],fc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>uc.some(n=>e[`${n}Key`]&&!t.includes(n))},En=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(i,...r)=>{for(let l=0;l<t.length;l++){const a=fc[t[l]];if(a&&a(i,t))return}return e(i,...r)})},dc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},ho=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=i=>{if(!("key"in i))return;const r=It(i.key);if(t.some(l=>l===r||dc[l]===r))return e(i)})},pc=Te({patchProp:rc},Ka);let er;function hc(){return er||(er=Ia(pc))}const mc=(...e)=>{const t=hc().createApp(...e),{mount:n}=t;return t.mount=s=>{const i=vc(s);if(!i)return;const r=t._component;!z(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const l=n(i,!1,gc(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),l},t};function gc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function vc(e){return ae(e)?document.querySelector(e):e}const yc={class:"footer"},_c={__name:"AppFooter",emits:["request-admin"],setup(e,{emit:t}){const n=t,s=oe(0);let i=null;Xs(()=>{i&&window.clearTimeout(i)});function r(){s.value+=1,s.value===1&&(i=window.setTimeout(()=>{s.value=0,i=null},2e3)),s.value>=5&&(i&&(window.clearTimeout(i),i=null),s.value=0,n("request-admin"))}return(l,a)=>(L(),V("div",yc,[y("div",null,[a[0]||(a[0]=en(" © 2026 AirShare Pro. All rights reserved. ",-1)),a[1]||(a[1]=y("span",{class:"divider-line"},"|",-1)),y("span",{id:"admin-trigger",title:"点击 5 次进入后台",onClick:r},"V 1.0.0")]),a[2]||(a[2]=y("div",{style:{"font-size":"12px","margin-top":"4px"}},[y("a",{href:"https://beian.miit.gov.cn/",target:"_blank",rel:"noreferrer"}," 粤ICP备2026888888号-1 ")],-1))]))}},bc=["fill","stroke"],pe={__name:"LocalIcon",props:{name:{type:String,required:!0},size:{type:[Number,String],default:24}},setup(e){const t=e,n={light_mode:{type:"stroke",shapes:[{tag:"circle",attrs:{cx:"12",cy:"12",r:"4"}},{tag:"path",attrs:{d:"M12 2v2.2"}},{tag:"path",attrs:{d:"M12 19.8V22"}},{tag:"path",attrs:{d:"M4.93 4.93 6.5 6.5"}},{tag:"path",attrs:{d:"m17.5 17.5 1.57 1.57"}},{tag:"path",attrs:{d:"M2 12h2.2"}},{tag:"path",attrs:{d:"M19.8 12H22"}},{tag:"path",attrs:{d:"m4.93 19.07 1.57-1.57"}},{tag:"path",attrs:{d:"M17.5 6.5 19.07 4.93"}}]},dark_mode:{type:"fill",shapes:[{tag:"path",attrs:{d:"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8Z"}}]},add_circle:{type:"stroke",shapes:[{tag:"circle",attrs:{cx:"12",cy:"12",r:"9"}},{tag:"path",attrs:{d:"M12 8v8"}},{tag:"path",attrs:{d:"M8 12h8"}}]},sensors:{type:"stroke",shapes:[{tag:"path",attrs:{d:"M12 12h.01"}},{tag:"path",attrs:{d:"M9.2 14.8a4 4 0 0 1 0-5.6"}},{tag:"path",attrs:{d:"M14.8 9.2a4 4 0 0 1 0 5.6"}},{tag:"path",attrs:{d:"M6.4 17.6a8 8 0 0 1 0-11.2"}},{tag:"path",attrs:{d:"M17.6 6.4a8 8 0 0 1 0 11.2"}}]},smartphone:{type:"stroke",shapes:[{tag:"rect",attrs:{x:"7",y:"2.5",width:"10",height:"19",rx:"2.5"}},{tag:"path",attrs:{d:"M10 5h4"}},{tag:"circle",attrs:{cx:"12",cy:"18",r:"0.8"}}]},laptop_mac:{type:"stroke",shapes:[{tag:"rect",attrs:{x:"5",y:"4",width:"14",height:"10",rx:"1.5"}},{tag:"path",attrs:{d:"M3 18h18"}},{tag:"path",attrs:{d:"M8 18a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2"}}]},close:{type:"stroke",shapes:[{tag:"path",attrs:{d:"M6 6l12 12"}},{tag:"path",attrs:{d:"M18 6 6 18"}}]},cloud_upload:{type:"stroke",shapes:[{tag:"path",attrs:{d:"M7 18a4 4 0 1 1 .7-7.94A5.5 5.5 0 0 1 18 11a3.5 3.5 0 1 1-.5 7"}},{tag:"path",attrs:{d:"M12 10v8"}},{tag:"path",attrs:{d:"m8.8 13.2 3.2-3.2 3.2 3.2"}}]},arrow_upward:{type:"stroke",shapes:[{tag:"path",attrs:{d:"M12 19V6"}},{tag:"path",attrs:{d:"m6.5 11.5 5.5-5.5 5.5 5.5"}}]},send_and_archive:{type:"stroke",shapes:[{tag:"path",attrs:{d:"M3 6h18l-2 4H5Z"}},{tag:"path",attrs:{d:"M5 10v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8"}},{tag:"path",attrs:{d:"M12 11v5"}},{tag:"path",attrs:{d:"m9.5 13.5 2.5 2.5 2.5-2.5"}}]},chat_bubble:{type:"stroke",shapes:[{tag:"path",attrs:{d:"M6 18.5 3.5 21v-5A7.5 7.5 0 0 1 11 4.5h2A7.5 7.5 0 0 1 20.5 12v.5A7.5 7.5 0 0 1 13 20H8.5"}}]},content_copy:{type:"stroke",shapes:[{tag:"rect",attrs:{x:"9",y:"9",width:"10",height:"10",rx:"2"}},{tag:"path",attrs:{d:"M7 15H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v1"}}]},check:{type:"stroke",shapes:[{tag:"path",attrs:{d:"m5 12 4.2 4.2L19 7.5"}}]},draft:{type:"stroke",shapes:[{tag:"rect",attrs:{x:"4",y:"5",width:"16",height:"14",rx:"2"}},{tag:"path",attrs:{d:"m5 7 7 5 7-5"}}]},save:{type:"stroke",shapes:[{tag:"path",attrs:{d:"M5 20h14a1 1 0 0 0 1-1V7.5L16.5 4H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1Z"}},{tag:"path",attrs:{d:"M8 4v5h7"}},{tag:"rect",attrs:{x:"8",y:"14",width:"8",height:"4",rx:"1"}}]},download:{type:"stroke",shapes:[{tag:"path",attrs:{d:"M12 5v10"}},{tag:"path",attrs:{d:"m7.5 10.5 4.5 4.5 4.5-4.5"}},{tag:"path",attrs:{d:"M5 19h14"}}]}},s=Ft(()=>n[t.name]||n.close),i=Ft(()=>typeof t.size=="number"?`${t.size}px`:/^\d+(\.\d+)?$/.test(t.size)?`${t.size}px`:t.size);return(r,l)=>(L(),V("span",{class:"app-icon",style:Be({width:i.value,height:i.value}),"aria-hidden":"true"},[(L(),V("svg",{viewBox:"0 0 24 24",fill:s.value.type==="fill"?"currentColor":"none",stroke:s.value.type==="stroke"?"currentColor":"none","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[(L(!0),V(fe,null,Zt(s.value.shapes,(a,f)=>(L(),mt(Ql(a.tag),co({key:`${e.name}-${f}`},{ref_for:!0},a.attrs),null,16))),128))],8,bc))],4))}},wc={class:"header"},xc={__name:"AppHeader",props:{theme:{type:String,required:!0}},emits:["toggle-theme"],setup(e){return(t,n)=>(L(),V("div",wc,[n[1]||(n[1]=y("h1",null,"AirShare Pro",-1)),n[2]||(n[2]=y("p",null,"跨端局域网 & P2P 传输中心",-1)),y("button",{class:"theme-toggle",title:"切换日夜模式",onClick:n[0]||(n[0]=s=>t.$emit("toggle-theme"))},[q(pe,{id:"theme-icon",name:e.theme==="dark"?"dark_mode":"light_mode",size:"22"},null,8,["name"])])]))}},Ic={class:"card"},Sc={key:0,class:"section-title"},mn={__name:"GlassCard",props:{title:{type:String,default:""}},setup(e){return(t,n)=>(L(),V("div",Ic,[e.title?(L(),V("div",Sc,se(e.title),1)):We("",!0),ta(t.$slots,"default")]))}},Cc={class:"admin-panel active"},Tc={class:"card admin-header-card"},$c={class:"transfer-head transfer-head-compact"},Mc={class:"main-grid admin-summary-grid"},kc={class:"admin-stats-panel"},Rc={class:"admin-stats-row"},Ec={class:"admin-fluid-content"},Ac={class:"admin-fluid-icon"},Oc={class:"admin-fluid-copy"},Pc={key:0,class:"stat-suffix"},Dc={class:"admin-config-stack"},Fc={class:"text-input-group admin-config-row admin-config-row-field admin-config-row-last"},Nc={class:"admin-field-control-row"},Uc=["value"],Bc={class:"text-input-group admin-config-row admin-config-row-field admin-config-row-last"},Lc={class:"admin-field-control-row"},jc=["value"],Hc={class:"admin-config-insights"},zc={class:"admin-config-highlight"},Kc={class:"admin-config-highlight"},Wc={class:"admin-table-wrapper"},Vc={class:"admin-table"},qc={__name:"AdminPanel",props:{stats:{type:Array,required:!0},records:{type:Array,required:!0},fileLimit:{type:Number,required:!0},minioCapacity:{type:Number,required:!0}},emits:["exit","save-config","update:file-limit","update:minio-capacity"],setup(e){function t(l){const a=Number(l)||0;return a>=1024?`${(a/1024).toFixed(a%1024===0?0:1)} GB`:`${a} MB`}function n(l){const a=Number(l)||0;return a>=1024?`${(a/1024).toFixed(a%1024===0?0:1)} TB`:`${a} GB`}function s(l){return l==="blue"?{color:"var(--accent-blue)"}:l==="cyan"?{color:"var(--accent-cyan)"}:l==="success"?{color:"var(--success-green)"}:l==="danger"?{color:"var(--danger-red)"}:{color:"var(--text-main)"}}function i(l){return l==="success"?{color:"var(--success-green)",fontWeight:500}:l==="primary"?{color:"var(--accent-blue)",fontWeight:500}:{color:"var(--danger-red)",fontWeight:500}}function r(l){const a=Number(l)||0;return{"--fluid-level":`${Math.max(0,Math.min(a,100))}%`}}return(l,a)=>(L(),V("div",Cc,[y("div",Tc,[y("div",$c,[a[5]||(a[5]=y("div",{class:"connected-to"},[y("h2",{class:"admin-title"},"管理控制台"),y("p",{class:"admin-subtitle"},"AirShare Pro System Dashboard")],-1)),y("button",{class:"btn-small-primary",type:"button",onClick:a[0]||(a[0]=f=>l.$emit("exit"))},"退出管理")])]),y("div",Mc,[q(mn,{class:"admin-stats-card",title:"系统运行状态"},{default:Gt(()=>[y("div",kc,[y("div",Rc,[(L(!0),V(fe,null,Zt(e.stats,f=>(L(),V("div",{key:f.label,class:xt(["admin-stat-item",{"admin-stat-item-fluid":f.kind==="minio"}])},[f.kind==="minio"?(L(),V("div",{key:0,class:"admin-fluid-card",style:Be(r(f.percent))},[a[6]||(a[6]=y("div",{class:"admin-fluid-fill"},[y("span",{class:"admin-fluid-wave admin-fluid-wave-a"}),y("span",{class:"admin-fluid-wave admin-fluid-wave-b"})],-1)),y("div",Ec,[y("div",Ac,[q(pe,{name:"save",size:"18"})]),y("div",Oc,[y("h3",{style:Be(s(f.tone))},se(f.value),5),y("p",null,se(f.label),1),y("small",null,se(f.detail),1)])])],4)):(L(),V(fe,{key:1},[a[7]||(a[7]=y("span",{class:"admin-stat-kicker"},"实时指标",-1)),y("h3",{style:Be(s(f.tone))},[en(se(f.value),1),f.suffix?(L(),V("span",Pc,se(f.suffix),1)):We("",!0)],4),y("p",null,se(f.label),1)],64))],2))),128))])])]),_:1}),q(mn,{class:"admin-config-card",title:"核心参数配置"},{default:Gt(()=>[y("div",Dc,[y("div",Fc,[a[8]||(a[8]=y("div",{class:"admin-field-meta"},[y("label",{class:"admin-field-label",for:"admin-file-limit"},"单文件大小限制"),y("p",{class:"admin-field-hint"},"单位为 MB,超过该阈值的文件会按当前后端策略处理。")],-1)),y("div",Nc,[y("input",{id:"admin-file-limit",value:e.fileLimit,min:"1",placeholder:"10240",type:"number",onInput:a[1]||(a[1]=f=>l.$emit("update:file-limit",Number(f.target.value)||0))},null,40,Uc),y("button",{title:"保存配置",type:"button",onClick:a[2]||(a[2]=f=>l.$emit("save-config"))},[q(pe,{name:"save",size:"18"})])])]),y("div",Bc,[a[9]||(a[9]=y("div",{class:"admin-field-meta"},[y("label",{class:"admin-field-label",for:"admin-minio-capacity"},"MinIO 总容量"),y("p",{class:"admin-field-hint"},"单位为 GB,用于容量卡和液位比例计算。")],-1)),y("div",Lc,[y("input",{id:"admin-minio-capacity",value:e.minioCapacity,min:"1",placeholder:"120",type:"number",onInput:a[3]||(a[3]=f=>l.$emit("update:minio-capacity",Number(f.target.value)||0))},null,40,jc),y("button",{title:"保存配置",type:"button",onClick:a[4]||(a[4]=f=>l.$emit("save-config"))},[q(pe,{name:"save",size:"18"})])])]),y("div",Hc,[y("div",zc,[a[10]||(a[10]=y("span",{class:"admin-config-badge"},"ACTIVE POLICY",-1)),y("h3",null,se(t(e.fileLimit)),1),a[11]||(a[11]=y("p",null,"当前单文件阈值。超过该体积后,文件会按后端已设定的传输与存档策略处理。",-1))]),y("div",Kc,[a[12]||(a[12]=y("span",{class:"admin-config-badge"},"MINIO CAPACITY",-1)),y("h3",null,se(n(e.minioCapacity)),1),a[13]||(a[13]=y("p",null,"当前 MinIO 总容量基线,用于后台容量展示与液位占比计算。",-1))])])])]),_:1})]),q(mn,{class:"admin-table-card",title:"最近传输记录(Top 5)"},{default:Gt(()=>[y("div",Wc,[y("table",Vc,[a[14]||(a[14]=y("thead",null,[y("tr",null,[y("th",null,"时间"),y("th",null,"发送端特征"),y("th",null,"传输类型"),y("th",null,"数据量"),y("th",null,"状态")])],-1)),y("tbody",null,[(L(!0),V(fe,null,Zt(e.records,f=>(L(),V("tr",{key:`${f.time}-${f.peer}`},[y("td",null,se(f.time),1),y("td",null,se(f.peer),1),y("td",null,se(f.type),1),y("td",null,se(f.size),1),y("td",{style:Be(i(f.tone))},se(f.status),5)]))),128))])])])]),_:1})]))}},Gc={class:"local-device-name"},Jc={key:0,class:"radar-container"},Yc={class:"radar"},Xc={key:1,class:"device-list"},Zc=["onClick"],Qc={class:"device-icon"},eu={class:"device-info"},tu={key:2,class:"radar-container"},nu={class:"radar"},su={__name:"DeviceDiscoveryCard",props:{isScanning:{type:Boolean,required:!0},localDeviceName:{type:String,default:""},devices:{type:Array,required:!0}},emits:["select-device"],setup(e,{emit:t}){const n=t;function s(i){n("select-device",i)}return(i,r)=>(L(),mt(mn,{title:"局域网自动发现"},{default:Gt(()=>[y("p",Gc,[r[0]||(r[0]=en(" 本机:",-1)),y("strong",null,se(e.localDeviceName||"识别中"),1)]),e.isScanning?(L(),V("div",Jc,[y("div",Yc,[q(pe,{class:"radar-icon",name:"sensors",size:"36"})]),r[1]||(r[1]=y("p",{class:"scan-status"},"正在扫描附近设备...",-1))])):e.devices.length?(L(),V("div",Xc,[(L(!0),V(fe,null,Zt(e.devices,l=>(L(),V("button",{key:l.id,class:"device-item",type:"button",onClick:a=>s(l)},[y("div",Qc,[q(pe,{name:l.icon,size:"24"},null,8,["name"])]),y("div",eu,[y("h4",null,se(l.name),1),y("p",null,se(l.description),1)]),r[2]||(r[2]=y("div",{class:"device-status-beacon","aria-hidden":"true"},[y("span",{class:"device-status-dot"}),y("span",{class:"device-status-ring"}),y("span",{class:"device-status-ring device-status-ring-delay"})],-1))],8,Zc))),128))])):(L(),V("div",tu,[y("div",nu,[q(pe,{class:"radar-icon",name:"devices",size:"36"})]),r[3]||(r[3]=y("p",{class:"scan-status"},"暂未发现局域网设备,请保持页面开启后重试",-1))]))]),_:1}))}},iu={key:0,class:"room-action-area"},ru={class:"room-input-group"},ou=["value"],lu={key:0,class:"pending-downloads"},au={class:"pending-downloads-head"},cu=["href"],uu={class:"pending-download-copy"},fu=["title"],du={class:"pending-download-icon","aria-hidden":"true"},pu={key:1,class:"waiting-area"},hu={class:"huge-code"},mu={__name:"RemoteRoomCard",props:{roomCodeInput:{type:String,required:!0},isWaiting:{type:Boolean,required:!0},generatedCode:{type:String,required:!0},pendingDownloads:{type:Array,required:!0}},emits:["update-room-code","create-room","join-room","cancel-room"],setup(e,{emit:t}){const n=t;function s(r){n("update-room-code",r.target.value)}function i(){n("join-room")}return(r,l)=>(L(),mt(mn,{title:"远程直连"},{default:Gt(()=>[e.isWaiting?(L(),V("div",pu,[l[6]||(l[6]=y("p",{class:"waiting-subtitle"},"您的房间号码",-1)),y("div",hu,se(e.generatedCode),1),l[7]||(l[7]=y("div",{class:"spinner"},null,-1)),l[8]||(l[8]=y("p",{class:"waiting-tip"},"等待对方加入...",-1)),y("button",{class:"btn-cancel",type:"button",onClick:l[2]||(l[2]=a=>r.$emit("cancel-room"))},"取消建房")])):(L(),V("div",iu,[y("button",{class:"btn-create",type:"button",onClick:l[0]||(l[0]=a=>r.$emit("create-room"))},[q(pe,{name:"add_circle",size:"22"}),l[3]||(l[3]=en(" 创建专属传输房间 ",-1))]),l[5]||(l[5]=y("div",{class:"divider"},"或",-1)),y("div",ru,[y("input",{class:"room-code",inputmode:"numeric",maxlength:"4",pattern:"\\d*",placeholder:"输入4位房间号",type:"text",value:e.roomCodeInput,onInput:s,onKeyup:ho(i,["enter"])},null,40,ou),y("button",{class:"btn-primary",type:"button",onClick:l[1]||(l[1]=a=>r.$emit("join-room"))},"加入房间")]),e.pendingDownloads.length?(L(),V("div",lu,[y("div",au,[l[4]||(l[4]=y("span",null,"待领取文件",-1)),y("span",null,se(e.pendingDownloads.length),1)]),(L(!0),V(fe,null,Zt(e.pendingDownloads,a=>(L(),V("a",{key:a.transfer_id,class:"pending-download-item",href:a.download_path,target:"_blank",rel:"noopener noreferrer"},[y("div",uu,[y("strong",{title:a.name},se(a.name),9,fu),y("p",null,se(a.size_label)+" · "+se(a.created_label),1)]),y("span",du,[q(pe,{name:"download",size:"18"})])],8,cu))),128))])):We("",!0)]))]),_:1}))}},gu={class:"file-info"},vu=["title"],yu={class:"file-info-right"},_u=["download","href"],bu={key:0,class:"progress-bar-container"},wu={__name:"TransferQueueItem",props:{item:{type:Object,required:!0}},emits:["remove","start-upload","copy"],setup(e){const t=e,n=Ft(()=>t.item.tone==="success"?{color:"var(--success-green)"}:t.item.tone==="primary"?{color:"var(--accent-blue)"}:t.item.tone==="danger"?{color:"var(--danger-red)"}:{color:"var(--text-secondary)"}),s=Ft(()=>t.item.kind==="text"?{color:"var(--success-green)",background:"rgba(48, 209, 88, 0.1)"}:{});return(i,r)=>(L(),V("div",{class:xt(["batch-item",{"pending-file":e.item.kind==="file"&&e.item.pending}])},[y("div",gu,[y("div",{class:"file-info-left",style:Be(e.item.kind==="text"?{maxWidth:"70%"}:null)},[y("div",{class:"file-icon-wrapper",style:Be(s.value)},[q(pe,{name:e.item.kind==="text"?"chat_bubble":"draft",size:"18"},null,8,["name"])],4),y("span",{class:"file-name",title:e.item.kind==="text"?e.item.text:e.item.name},se(e.item.kind==="text"?e.item.text:e.item.name),9,vu)],4),y("div",yu,[y("span",{class:"file-status",style:Be(n.value)},se(e.item.kind==="text"&&e.item.copied?"已复制":e.item.status),5),e.item.kind==="text"?(L(),V("button",{key:0,class:"action-btn",title:"复制文本",type:"button",onClick:r[0]||(r[0]=l=>i.$emit("copy",e.item.id))},[q(pe,{name:e.item.copied?"check":"content_copy",size:"16"},null,8,["name"])])):We("",!0),e.item.kind==="file"&&e.item.pending?(L(),V("button",{key:1,class:"action-btn primary",title:"发送文件",type:"button",onClick:r[1]||(r[1]=l=>i.$emit("start-upload",e.item.id))},[q(pe,{name:"arrow_upward",size:"16"})])):We("",!0),e.item.kind==="file"&&e.item.downloadUrl?(L(),V("a",{key:2,class:"action-btn primary",download:e.item.name,href:e.item.downloadUrl,title:"保存文件"},[q(pe,{name:"download",size:"16"})],8,_u)):We("",!0),y("button",{class:"action-btn danger",title:"移除记录",type:"button",onClick:r[2]||(r[2]=l=>i.$emit("remove",e.item.id))},[q(pe,{name:"close",size:"16"})])])]),e.item.kind==="file"?(L(),V("div",bu,[y("div",{class:xt(["progress-bar-fill",{success:e.item.tone==="success"}]),style:Be({width:`${e.item.progress}%`})},null,6)])):We("",!0)],2))}},xu={class:"transfer-panel active"},Iu={class:"card"},Su={class:"transfer-head"},Cu={class:"connected-to"},Tu={class:"text-input-group"},$u={__name:"TransferPanel",props:{peerName:{type:String,required:!0},connectionType:{type:String,required:!0},items:{type:Array,required:!0},hasPendingItems:{type:Boolean,required:!0}},emits:["close","send-text","files-selected","send-all-pending","remove-item","start-upload","copy-item"],setup(e,{emit:t}){const n=e,s=t,i=oe(""),r=oe(!1),l=oe(null),a=oe(null);Dt(()=>n.items.length,async()=>{await Rr(),l.value&&(l.value.scrollTop=l.value.scrollHeight)});function f(){var T;(T=a.value)==null||T.click()}function m(){s("send-text",i.value),i.value=""}function p(T){const S=Array.from(T.target.files||[]);S.length&&s("files-selected",S),T.target.value=""}function _(T){var U;r.value=!1;const S=Array.from(((U=T.dataTransfer)==null?void 0:U.files)||[]);S.length&&s("files-selected",S)}return(T,S)=>(L(),V("div",xu,[y("div",Iu,[y("div",Su,[y("div",Cu,[y("h2",null,se(e.peerName),1),y("p",null,se(e.connectionType),1)]),y("button",{class:"close-btn",type:"button",onClick:S[0]||(S[0]=U=>T.$emit("close"))},[q(pe,{name:"close",size:"20"})])]),y("div",{class:xt(["drop-zone",{"drop-zone-active":r.value}]),onClick:f,onDragenter:S[1]||(S[1]=En(U=>r.value=!0,["prevent"])),onDragover:S[2]||(S[2]=En(U=>r.value=!0,["prevent"])),onDragleave:S[3]||(S[3]=En(U=>r.value=!1,["prevent"])),onDrop:En(_,["prevent"])},[q(pe,{class:"drop-zone-icon",name:"cloud_upload",size:"42"}),S[9]||(S[9]=y("p",{class:"drop-zone-text"},"点击或拖拽多个文件到这里",-1)),y("input",{ref_key:"fileInput",ref:a,class:"hidden",multiple:"",type:"file",onChange:p},null,544)],34),y("div",Tu,[Pl(y("input",{"onUpdate:modelValue":S[4]||(S[4]=U=>i.value=U),placeholder:"输入要发送的文本或链接...",type:"text",onKeyup:ho(m,["enter"])},null,544),[[cc,i.value]]),y("button",{title:"发送文本",type:"button",onClick:m},[q(pe,{name:"arrow_upward",size:"20"})])]),y("div",{class:xt(["batch-actions",{active:e.hasPendingItems}])},[y("button",{class:"btn-small-primary",type:"button",onClick:S[5]||(S[5]=U=>T.$emit("send-all-pending"))},[q(pe,{name:"send_and_archive",size:"16"}),S[10]||(S[10]=en(" 一键发送全部 ",-1))])],2),e.items.length?(L(),V("div",{key:0,ref_key:"batchContainer",ref:l,class:"batch-progress-container"},[(L(!0),V(fe,null,Zt(e.items,U=>(L(),mt(wu,{key:U.id,item:U,onCopy:S[6]||(S[6]=D=>T.$emit("copy-item",D)),onRemove:S[7]||(S[7]=D=>T.$emit("remove-item",D)),onStartUpload:S[8]||(S[8]=D=>T.$emit("start-upload",D))},null,8,["item"]))),128))],512)):We("",!0)])]))}};let Kt={deviceId:"",token:""};const Mu="filefast_device_id",ku="filefast_device_token";function mo(){return!Kt.deviceId||!Kt.token?{}:{"X-Device-ID":Kt.deviceId,"X-Device-Token":Kt.token}}function Ru(e={},t=!1){return{...t?{"Content-Type":"application/json"}:{},...mo(),...e}}function Eu(e,t){if(!t||Object.keys(t).length===0)return e;const n=new URLSearchParams;Object.entries(t).forEach(([i,r])=>{r!=null&&r!==""&&n.set(i,String(r))});const s=n.toString();return s?`${e}?${s}`:e}async function An(e,t={}){const n=t.body!==void 0,s=await fetch(Eu(e,t.query),{method:t.method||"GET",headers:Ru(t.headers,n),body:n?JSON.stringify(t.body):void 0}),i=await s.json().catch(()=>({}));if(!s.ok){const r=new Error(i.error||`Request failed: ${s.status}`);throw r.status=s.status,r}return i.data}const ve={get(e,t={}){return An(e,{...t,method:"GET"})},post(e,t,n={}){return An(e,{...n,method:"POST",body:t})},put(e,t,n={}){return An(e,{...n,method:"PUT",body:t})},patch(e,t,n={}){return An(e,{...n,method:"PATCH",body:t})}};function tr(e,t){Kt={deviceId:e||"",token:t||""},Pu(Kt)}function Au(){return mo()}function Ou(e){return{Authorization:`Bearer ${e}`}}function Pu(e){typeof document>"u"||(nr(Mu,e.deviceId),nr(ku,e.token))}function nr(e,t){if(!t){document.cookie=`${e}=; Path=/; Max-Age=0; SameSite=Lax`;return}document.cookie=`${e}=${encodeURIComponent(t)}; Path=/; SameSite=Lax`}function On(e){return{headers:Ou(e)}}const jt={login(e,t){return ve.post("/api/admin/login",{username:e,password:t})},stats(e){return ve.get("/api/admin/stats",On(e))},config(e){return ve.get("/api/admin/config",On(e))},updateConfig(e,t){return ve.put("/api/admin/config",t,On(e))},recentTransfers(e){return ve.get("/api/admin/transfers/recent",On(e))}},Pn={register(e){return ve.post("/api/devices/register",e)},heartbeat(e){return ve.post("/api/devices/heartbeat",{device_id:e})},listCandidates(e){return ve.get("/api/devices/candidates",{query:{deviceId:e}})},listPendingDownloads(e){return ve.get(`/api/devices/${encodeURIComponent(e)}/pending-downloads`)}},Dn={create(e){return ve.post("/api/rooms",{creator_device_id:e})},get(e){return ve.get(`/api/rooms/${encodeURIComponent(e)}`)},join(e,t){return ve.post("/api/rooms/join",{code:e,joiner_device_id:t})},cancel(e,t){return ve.post(`/api/rooms/${encodeURIComponent(e)}/cancel`,{requester_id:t})}},Du={config(){return ve.get("/api/runtime/config")}},ge={create(e){return ve.post("/api/transfers",e)},presignFallback(e){return ve.post(`/api/transfers/${encodeURIComponent(e)}/fallback/presign`,{})},uploadFallback(e,t,n){return Fu(`/api/transfers/${encodeURIComponent(e)}/fallback/upload`,t,n)},updateStatus(e,t){return ve.patch(`/api/transfers/${encodeURIComponent(e)}/status`,t)}};function Fu(e,t,n){return new Promise((s,i)=>{const r=new XMLHttpRequest;r.open("PUT",e),r.responseType="json",r.setRequestHeader("Content-Type",t.type||"application/octet-stream"),Object.entries(Au()).forEach(([l,a])=>{r.setRequestHeader(l,a)}),r.upload.onprogress=l=>{!l.lengthComputable||typeof n!="function"||n(Math.round(l.loaded/l.total*100))},r.onload=()=>{const l=r.response||Nu(r.responseText);if(r.status>=200&&r.status<300){s(l.data);return}i(new Error((l==null?void 0:l.error)||`Upload failed: ${r.status}`))},r.onerror=()=>i(new Error("Upload failed")),r.send(t)})}function Nu(e){try{return JSON.parse(e)}catch{return null}}const Uu={class:"container"},Bu={key:0,class:"main-grid"},xs="filefast-admin-token",Fn="filefast-admin-view",Nn="filefast-device-id",sr="filefast-device-name",Is="filefast-device-token",Lu=15e3,ju=5e3,Hu=2e3,zu=3e3,Ku=4*1024*1024,Wu=2e4,Vu=16*1024,ir=512*1024,qu={__name:"App",setup(e){const t=oe(localStorage.getItem("airshare-theme")||"light"),n=oe(localStorage.getItem(Fn)==="admin"?"admin":"main"),s=oe(!0),i=oe([]),r=oe(""),l=oe(!1),a=oe("----"),f=oe([]),m=oe({name:"--",type:"等待连接",deviceId:""}),p=oe([]),_=oe("/ws"),T=oe(10240),S=oe(120),U=oe([]),D=oe([]),Q=oe(null),K=oe(localStorage.getItem(xs)||""),R=oe({id:"",name:"",type:""}),ee=localStorage.getItem(Nn)||"",F=localStorage.getItem(Is)||"";ee&&F&&tr(ee,F);const le=new Map,he=new Map,$e=new Map,Me=new Map;let vt=null,je=null,Je=null,He=null,yt=null,de=null,st=null,H=null,j=null,G="",_e="p2p",ze=!1,be=!1,ce=!1,_t=null,St=null;const Sn=Ft(()=>p.value.filter(o=>o.kind==="file"&&o.pending)),Ct=Ft(()=>Sn.value.length>0);Dt(t,o=>{document.body.setAttribute("data-theme",o),localStorage.setItem("airshare-theme",o)},{immediate:!0}),Dt(n,o=>{if(o==="admin"&&K.value){localStorage.setItem(Fn,"admin");return}localStorage.removeItem(Fn)}),Dt([n,K],([o,c])=>{He&&(window.clearInterval(He),He=null),!(o!=="admin"||!c)&&(He=window.setInterval(()=>{is().catch(u=>{console.error(u)})},5e3))}),Lr(async()=>{_.value=ko(),await Nt(),n.value==="admin"&&K.value&&is().catch(o=>{console.error(o)}),je=window.setInterval(()=>{I()},Lu),vt=window.setInterval(()=>{h()},ju),yt=window.setInterval(()=>{v()},1e4)}),Xs(()=>{vt&&window.clearInterval(vt),je&&window.clearInterval(je),He&&window.clearInterval(He),yt&&window.clearInterval(yt),C(),bt(),pi(),A()});async function Nt(){try{await Cn(),await d(),await h()}catch(o){window.alert(`后端连接失败:${o.message}`)}}function tn(){t.value=t.value==="dark"?"light":"dark"}async function Cn(){try{it(await Du.config())}catch(o){console.error(o)}}function it(o){o&&(Q.value=o,T.value=Math.round((o.max_minio_fallback_size_bytes||0)/1024/1024),S.value=Math.max(0,Math.round((o.minio_capacity_bytes||0)/1024/1024/1024)))}function ni(o){r.value=o.replace(/\D/g,"").slice(0,4)}async function d(){const o=Co(),c=To(o),u=$o(),g=await Pn.register({device_id:o,name:c,type:u,network_group_key:window.location.hostname||"local"});localStorage.setItem(Nn,g.id),g.auth_token&&(localStorage.setItem(Is,g.auth_token),tr(g.id,g.auth_token)),R.value={id:g.id,name:g.name,type:g.type},await v(),di()}async function h(){if(R.value.id)try{const o=await ge.create({kind:"text",name:"text-message",content:value,sender_device_id:R.value.id,receiver_device_id:m.value.deviceId});try{await Pe(o,value)}catch(c){console.warn("realtime text send failed, fallback to relay",c),await sn(o,value)}p.value.push({id:Ue("text"),transferId:o.id,kind:"text",text:value,status:"已发送",tone:"success",copied:!1})}catch(o){window.alert(`发送文本失败:${o.message}`)}}async function v(){if(!R.value.id){f.value=[];return}try{const o=await Pn.listPendingDownloads(R.value.id);f.value=o.map(c=>({...c,download_path:c.download_path||`/api/transfers/${encodeURIComponent(c.transfer_id)}/fallback/download`,size_label:Bt(Number(c.size_bytes||0)),created_label:cs(c.created_at)}))}catch(o){if((o==null?void 0:o.status)===404){f.value=[];return}console.error(o)}}async function I(){if(R.value.id)try{await Pn.heartbeat(R.value.id)}catch(o){console.error(o)}}async function w(){if(!R.value.id){window.alert("当前设备尚未注册到后端");return}try{const o=await Dn.create(R.value.id);a.value=o.code,l.value=!0,$(o.code)}catch(o){window.alert(`创建房间失败:${o.message}`)}}async function x(){const o=a.value;C();try{l.value&&o!=="----"&&await Dn.cancel(o,R.value.id)}catch(c){console.error(c)}finally{l.value=!1,a.value="----"}}async function k(){if(!(r.value.length<4))try{const o=await Dn.join(r.value,R.value.id),c=$t(o.creator_device_id);r.value="",b({deviceId:o.creator_device_id,name:(c==null?void 0:c.name)||`房间 ${o.code} 创建者`,type:"房间配对成功"})}catch(o){window.alert(`加入房间失败:${o.message}`)}}function $(o){C(),Je=window.setInterval(async()=>{try{const c=await Dn.get(o);if(c.status==="joined"&&c.joiner_device_id){const u=$t(c.joiner_device_id);b({deviceId:c.joiner_device_id,name:(u==null?void 0:u.name)||`房间 ${o} 对端`,type:"房间配对成功"});return}(c.status==="expired"||c.status==="canceled")&&(C(),l.value=!1,a.value="----")}catch(c){console.error(c)}},Hu)}function C(){Je&&(window.clearInterval(Je),Je=null)}function b(o){const c=o.deviceId||o.id||"",u=o.connectionType||o.type||"点对点传输";C(),m.value.deviceId!==c&&(bt(),A()),m.value={name:o.name,type:o.connectionType||o.type||"点对点传输",deviceId:o.deviceId||o.id||""},l.value=!1,a.value="----",n.value="transfer",m.value.baseType=u,m.value.type=u,m.value.deviceId=c,Ke("正在建立实时通道"),rt(c,{initiate:!0})}function P(o,c=!1){const u=o.deviceId||o.id||"",g=o.connectionType||o.type||"点对点传输";m.value.deviceId===u&&n.value==="transfer"||(bt(),c||A()),m.value={name:o.name,type:o.connectionType||o.type||"点对点传输",deviceId:u},l.value=!1,a.value="----",n.value="transfer",m.value.baseType=g,m.value.type=g,m.value.deviceId=u,Ke("正在建立实时通道"),rt(u)}function E(){bt(),A(),m.value={name:"--",type:"等待连接",deviceId:""},n.value="main",m.value.baseType="等待连接",m.value.type="等待连接"}function A(){p.value.forEach(o=>nn(o)),p.value=[],he.clear()}async function N(o){const c=o.trim();if(c){if(!m.value.deviceId){window.alert("当前没有可用的接收端");return}try{const u=await ge.create({kind:"text",name:"text-message",content:c,sender_device_id:R.value.id,receiver_device_id:m.value.deviceId});ue("transfer.created",m.value.deviceId,{transfer_id:u.id,kind:"text",name:"text-message",content:c,sender_device_id:R.value.id,sender_name:R.value.name,sender_type:R.value.type,receiver_device_id:m.value.deviceId,final_status:"completed",current_channel:"p2p",transport_options:rs()}),await ge.updateStatus(u.id,{current_channel:"p2p",final_status:"completed"}),ue("transfer.updated",m.value.deviceId,{transfer_id:u.id,final_status:"completed",current_channel:"p2p"}),p.value.push({id:Ue("text"),transferId:u.id,kind:"text",text:c,status:"已发送",tone:"success",copied:!1})}catch(u){window.alert(`发送文本失败:${u.message}`)}}}function W(o){const c=o.filter(Boolean).map((u,g)=>({id:Ue(`file-${g}`),kind:"file",file:u,name:u.name,size:Bt(u.size),sizeBytes:u.size,status:"待发送",tone:"muted",progress:0,pending:!0,transferId:""}));c.length&&p.value.push(...c)}async function Y(o){const c=p.value.find(u=>u.id===o);if(!(!c||c.kind!=="file"||!c.pending)){if(!m.value.deviceId){window.alert("当前没有可用的接收端");return}c.pending=!1,c.status="创建传输中...",c.tone="primary";try{const u=await ge.create({kind:"file",name:c.name,size_bytes:c.sizeBytes,sender_device_id:R.value.id,receiver_device_id:m.value.deviceId});if(c.transferId=u.id,c.sizeBytes>Ku){await J(c,u);return}ue("transfer.created",m.value.deviceId,{transfer_id:u.id,kind:"file",name:c.name,size_bytes:c.sizeBytes,sender_device_id:R.value.id,sender_name:R.value.name,sender_type:R.value.type,receiver_device_id:m.value.deviceId,final_status:"connecting",current_channel:"p2p",transport_options:rs()});try{await rn(c,u)}catch(g){console.warn("realtime file send failed, fallback to relay",g),await si(c,u)}}catch(u){c.pending=!0,c.status=`发送失败:${u.message}`,c.tone="danger"}}}async function J(o,c){o.progress=0,o.status="上传准备中...";try{if(!c.fallback_allowed)throw new Error("当前文件过大,且未启用 MinIO 回退");await ge.presignFallback(o.transferId),ue("transfer.updated",m.value.deviceId,{transfer_id:o.transferId,final_status:"fallback_uploading",current_channel:"minio"}),o.status="上传中...";const u=await ge.uploadFallback(o.transferId,o.file,g=>{o.progress=Math.max(1,Math.min(g,99))});await ge.updateStatus(o.transferId,{current_channel:"minio",final_status:"completed"}),ue("transfer.updated",m.value.deviceId,{transfer_id:o.transferId,final_status:"completed",current_channel:"minio"}),ue("transfer.file",m.value.deviceId,{transfer_id:o.transferId,name:o.name,download_url:u.download_path||u.download_url}),o.progress=100,o.status="上传完成",o.tone="success"}catch(u){o.pending=!0,o.status=`上传失败:${u.message}`,o.tone="danger"}}async function we(){for(const o of Sn.value)await Y(o.id)}async function xe(o){const c=p.value.find(u=>u.id===o);if(c&&nn(c),p.value=p.value.filter(u=>u.id!==o),!(!(c!=null&&c.transferId)||c.tone==="success"))try{await ge.updateStatus(c.transferId,{final_status:"cancelled"}),ue("transfer.updated",m.value.deviceId,{transfer_id:c.transferId,final_status:"cancelled"})}catch(u){console.error(u)}}async function Fe(o){const c=p.value.find(u=>u.id===o);if(!(!c||c.kind!=="text"))try{await navigator.clipboard.writeText(c.text),c.copied=!0,window.setTimeout(()=>{const u=p.value.find(g=>g.id===o);u&&u.kind==="text"&&(u.copied=!1)},2e3)}catch{window.alert("复制失败")}}function Ne(o){const c=le.get(o);c&&(window.clearInterval(c),le.delete(o))}function Tt(o){return new Promise((c,u)=>{const g=new FileReader;g.onload=()=>c(String(g.result||"")),g.onerror=()=>u(new Error("Failed to read file")),g.readAsDataURL(o)})}function nn(o){if(Ne(o.id),o.ownedDownloadUrl&&o.downloadUrl)try{URL.revokeObjectURL(o.downloadUrl)}catch(c){console.error(c)}o.transferId&&he.delete(o.transferId)}function me(o,c,u=!1){if(o.ownedDownloadUrl&&o.downloadUrl&&o.downloadUrl!==c)try{URL.revokeObjectURL(o.downloadUrl)}catch(g){console.error(g)}o.downloadUrl=c,o.ownedDownloadUrl=u}async function Pe(o,c){const u=await li(m.value.deviceId);Tn(u,{type:"text",transfer_id:o.id,text:c,sender_device_id:R.value.id,sender_name:R.value.name,sender_type:R.value.type});const g=fi();await ge.updateStatus(o.id,{current_channel:g,final_status:"completed"})}async function sn(o,c){ue("transfer.created",m.value.deviceId,{transfer_id:o.id,kind:"text",name:"text-message",content:c,sender_device_id:R.value.id,sender_name:R.value.name,sender_type:R.value.type,receiver_device_id:m.value.deviceId,final_status:"completed",current_channel:"p2p"}),await ge.updateStatus(o.id,{current_channel:"p2p",final_status:"completed"})}async function rn(o,c){var O;const u=await li(m.value.deviceId);o.status="正在通过 WebRTC 发送...",o.progress=1,Tn(u,{type:"file-meta",transfer_id:c.id,name:o.name,mime_type:((O=o.file)==null?void 0:O.type)||"application/octet-stream",size_bytes:o.sizeBytes,sender_device_id:R.value.id,sender_name:R.value.name,sender_type:R.value.type});let g=0;for(;g<o.sizeBytes;){const ne=Math.min(g+Vu,o.sizeBytes),kt=await go(o.file,g,ne);await _o(u),Tn(u,{type:"file-chunk",transfer_id:c.id,chunk_base64:kt,chunk_size:ne-g}),g=ne,o.progress=Math.max(1,Math.min(99,Math.round(g/o.sizeBytes*100)))}Tn(u,{type:"file-complete",transfer_id:c.id});const M=fi();await ge.updateStatus(c.id,{current_channel:M,final_status:"completed"}),ue("transfer.updated",m.value.deviceId,{transfer_id:c.id,final_status:"completed",current_channel:M}),o.progress=100,o.status=M==="turn"?"已通过 TURN 中继发送":"已直连发送",o.tone="success"}async function si(o,c){o.status="实时通道不可用,切换为中转发送...",o.progress=20;const u=await Tt(o.file);ue("transfer.file",m.value.deviceId,{transfer_id:c.id,name:o.name,data_url:u}),await ge.updateStatus(c.id,{current_channel:"p2p",final_status:"completed"}),ue("transfer.updated",m.value.deviceId,{transfer_id:c.id,final_status:"completed",current_channel:"p2p"}),o.progress=100,o.status="已发送(中转)",o.tone="success"}async function go(o,c,u){const g=await o.slice(c,u).arrayBuffer();return vo(g)}function vo(o){const c=new Uint8Array(o);let u="";const g=32768;for(let M=0;M<c.length;M+=g){const O=c.subarray(M,M+g);u+=String.fromCharCode(...O)}return btoa(u)}function yo(o){const c=atob(o),u=new Uint8Array(c.length);for(let g=0;g<c.length;g+=1)u[g]=c.charCodeAt(g);return u}async function _o(o){for(;o.bufferedAmount>ir;)await bo(20)}function bo(o){return new Promise(c=>{window.setTimeout(c,o)})}function wo(o,c,u){return new Promise((g,M)=>{const O=window.setTimeout(()=>{M(new Error(u))},c);o.then(ne=>{window.clearTimeout(O),g(ne)}).catch(ne=>{window.clearTimeout(O),M(ne)})})}async function xo(){const o=window.prompt("管理员用户名","admin");if(o===null)return;const c=window.prompt("管理员密码");if(c!==null)try{const u=await jt.login(o.trim()||"admin",c);K.value=u.token,localStorage.setItem(xs,u.token),await is(),n.value="admin"}catch(u){window.alert(`管理员登录失败:${u.message}`)}}function Io(){n.value="main"}async function is(){if(K.value)try{const[o,c,u]=await Promise.all([jt.stats(K.value),jt.config(K.value),jt.recentTransfers(K.value)]);it(c),U.value=vi(o.stats||{},o.minio||{}),D.value=u.map(g=>jo(g))}catch(o){throw(o==null?void 0:o.status)===401&&(localStorage.removeItem(xs),localStorage.removeItem(Fn),K.value="",n.value="main"),o}}async function So(){if(!K.value||!Q.value){window.alert("当前没有可用的管理员会话");return}try{const o={...Q.value,max_minio_fallback_size_bytes:Math.max(0,T.value)*1024*1024,minio_capacity_bytes:Math.max(0,S.value)*1024*1024*1024},c=await jt.updateConfig(K.value,o);it(c);{const u=await jt.stats(K.value);U.value=vi(u.stats||{},u.minio||{})}window.alert("配置已保存")}catch(o){window.alert(`保存配置失败:${o.message}`)}}function Co(){let o=localStorage.getItem(Nn);return o||(o=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`web-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,localStorage.setItem(Nn,o)),o}function To(o){var u;let c=localStorage.getItem(sr);return c||(c=`${((u=navigator.userAgentData)==null?void 0:u.platform)||navigator.platform||"Web"} ${o.slice(0,4)}`,localStorage.setItem(sr,c)),c}function $o(){const o=`${navigator.userAgent} ${navigator.platform}`.toLowerCase();return o.includes("iphone")||o.includes("android")||o.includes("mobile")?"phone":o.includes("ipad")||o.includes("tablet")?"tablet":"desktop"}function Mo(o){return o==="phone"?"smartphone":o==="tablet"?"tablet_mac":"laptop_mac"}function Ut(o){return o==="phone"?"手机":o==="tablet"?"平板":"桌面端"}function ko(){return`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`}function ii(o){const c=Array.isArray(o==null?void 0:o.turn_urls)?o.turn_urls.map(u=>String(u||"").trim()).filter(Boolean):[];return c.length?[{urls:c,username:(o==null?void 0:o.turn_username)||"",credential:(o==null?void 0:o.turn_password)||""}]:[]}function rs(){var o,c;return{ice_servers:ii(Q.value),p2p_connect_timeout_sec:((o=Q.value)==null?void 0:o.p2p_connect_timeout_sec)||15,turn_connect_timeout_sec:((c=Q.value)==null?void 0:c.turn_connect_timeout_sec)||20}}function ri(){return typeof RTCPeerConnection<"u"}function os(){_t=null,St=null}function Ro(){return _t||(_t=new Promise(o=>{St=o})),_t}function oi(o){St&&St(o),_t=Promise.resolve(o),St=null}function Ke(o=""){if(!m.value.deviceId)return;const c=m.value.baseType||m.value.type||"点对点传输";m.value={...m.value,type:o?`${c} · ${o}`:c}}async function rt(o,c={}){return!o||!ri()?null:((!H||G!==o)&&(bt(),Eo(o)),c.initiate&&H.signalingState==="stable"&&await Ao(o),H)}function Eo(o){G=o,_e="p2p",ze=!1,be=!1,ce=!1,Me.delete(o),os(),H=new RTCPeerConnection({iceServers:ii(Q.value)}),j=H.createDataChannel("filefast-control",{negotiated:!0,id:0,ordered:!0}),Oo(j),H.onicecandidate=({candidate:c})=>{if(c)try{ue("webrtc.candidate",o,{candidate:c})}catch(u){console.error(u)}},H.onconnectionstatechange=()=>{if(H){if(ls(),H.connectionState==="connected"){Ke(_e==="turn"?"TURN 中继已连接":"WebRTC 直连已连接");return}if(H.connectionState==="connecting"){Ke("实时通道连接中");return}if(H.connectionState==="failed"){Ke("实时通道连接失败");return}(H.connectionState==="disconnected"||H.connectionState==="closed")&&Ke("实时通道已断开")}},H.oniceconnectionstatechange=()=>{ls()}}async function Ao(o){if(H)try{ze=!0,await H.setLocalDescription(),ue("webrtc.description",o,{description:H.localDescription})}finally{ze=!1}}function Oo(o){j=o,o.bufferedAmountLowThreshold=ir/2,o.onopen=()=>{oi(o),Ke(_e==="turn"?"TURN 中继已连接":"WebRTC 直连已连接"),ls()},o.onclose=()=>{j===o&&(j=null,os(),Ke("实时通道已关闭"))},o.onerror=c=>{console.error(c)},o.onmessage=c=>{Po(c.data)},o.readyState==="open"&&oi(o)}function bt(){he.clear(),G&&Me.delete(G),j&&(j.onopen=null,j.onclose=null,j.onerror=null,j.onmessage=null,j.close(),j=null),H&&(H.onicecandidate=null,H.onconnectionstatechange=null,H.oniceconnectionstatechange=null,H.close(),H=null),G="",_e="p2p",ze=!1,be=!1,ce=!1,os()}async function li(o){if(!ri())throw new Error("当前浏览器不支持 WebRTC");if(await rt(o,{initiate:!0}),(j==null?void 0:j.readyState)==="open")return j;const c=await wo(Ro(),Wu,"WebRTC 连接超时");if(!c||c.readyState!=="open")throw new Error("实时通道未建立");return c}function Tn(o,c){if(!o||o.readyState!=="open")throw new Error("实时通道未就绪");o.send(JSON.stringify(c))}function Po(o){try{const c=JSON.parse(String(o||"{}"));if(c.type==="text"){Do(c);return}if(c.type==="file-meta"){Fo(c);return}if(c.type==="file-chunk"){No(c);return}c.type==="file-complete"&&Uo(c)}catch(c){console.error(c)}}function Do(o){var M;const c=o.sender_device_id||G,u={id:c,name:o.sender_name||((M=$t(c))==null?void 0:M.name)||`设备 ${Mt(c)}`,type:Ut(o.sender_type||"desktop"),connectionType:_e==="turn"?"TURN 中继已连接":"WebRTC 直连已连接"};P(u,!0);const g=p.value.find(O=>O.transferId===o.transfer_id);if(g&&g.kind==="text"){g.text=o.text||"",g.status="已接收",g.tone="success";return}p.value.push({id:Ue("incoming-text"),transferId:o.transfer_id,kind:"text",text:o.text||"",status:"已接收",tone:"success",copied:!1})}function Fo(o){var M;const c=o.sender_device_id||G,u={id:c,name:o.sender_name||((M=$t(c))==null?void 0:M.name)||`设备 ${Mt(c)}`,type:Ut(o.sender_type||"desktop"),connectionType:_e==="turn"?"TURN 中继已连接":"WebRTC 直连已连接"};P(u,!0),he.set(o.transfer_id,{name:o.name||"file",mimeType:o.mime_type||"application/octet-stream",sizeBytes:Number(o.size_bytes||0),receivedBytes:0,chunks:[]});let g=p.value.find(O=>O.transferId===o.transfer_id);g?(g.status="正在接收...",g.tone="primary",g.progress=0):(g={id:Ue("incoming-file"),transferId:o.transfer_id,kind:"file",name:o.name||"file",size:Bt(Number(o.size_bytes||0)),sizeBytes:Number(o.size_bytes||0),status:"正在接收...",tone:"primary",progress:0,pending:!1,downloadUrl:"",ownedDownloadUrl:!1},p.value.push(g))}function No(o){const c=he.get(o.transfer_id);if(!c)return;const u=yo(String(o.chunk_base64||""));c.receivedBytes+=Number(o.chunk_size||u.byteLength||0),c.chunks.push(u);const g=p.value.find(M=>M.transferId===o.transfer_id);if(g){const M=c.sizeBytes>0?c.receivedBytes/c.sizeBytes*100:0;g.progress=Math.max(1,Math.min(99,Math.round(M))),g.status="正在接收...",g.tone="primary"}}function Uo(o){const c=he.get(o.transfer_id);if(!c)return;const u=p.value.find(O=>O.transferId===o.transfer_id);if(!u){he.delete(o.transfer_id);return}const g=new Blob(c.chunks,{type:c.mimeType||"application/octet-stream"}),M=URL.createObjectURL(g);me(u,M,!0),u.progress=100,u.status="可保存",u.tone="success",he.delete(o.transfer_id)}function ai(o){return R.value.id.localeCompare(o)>0}function $n(o,c="等待实时数据"){const u=$t(o);return{id:o,deviceId:o,name:(u==null?void 0:u.name)||`设备 ${Mt(o)}`,type:Ut((u==null?void 0:u.type)||"desktop"),connectionType:c}}async function ci(o){const u=(o.payload||{}).description,g=o.device_id||"";if(!u||!g)return;P($n(g),!0);const M=await rt(g);if(!M)return;const O=ai(g),ne=!ze&&(M.signalingState==="stable"||ce),kt=u.type==="offer"&&!ne;be=!O&&kt,!be&&(ce=u.type==="answer",await M.setRemoteDescription(u),ce=!1,u.type==="offer"&&(await M.setLocalDescription(),ue("webrtc.description",g,{description:M.localDescription})))}async function ui(o){const c=o.payload||{},u=o.device_id||"";if(!c.candidate||!u)return;(n.value!=="transfer"||m.value.deviceId!==u)&&P($n(u),!0);const g=await rt(u);if(g)try{await g.addIceCandidate(c.candidate)}catch(M){be||console.error(M)}}async function ls(){if(!(!H||H.connectionState!=="connected"))try{const o=await H.getStats();let c=null;if(o.forEach(O=>{O.type==="transport"&&O.selectedCandidatePairId&&(c=o.get(O.selectedCandidatePairId)||c)}),c||o.forEach(O=>{O.type==="candidate-pair"&&O.state==="succeeded"&&(O.nominated||O.selected)&&(c=O)}),!c)return;const u=o.get(c.localCandidateId),g=o.get(c.remoteCandidateId),M=(u==null?void 0:u.candidateType)==="relay"||(g==null?void 0:g.candidateType)==="relay";_e=M?"turn":"p2p",(j==null?void 0:j.readyState)==="open"&&Ke(M?"TURN 中继已连接":"WebRTC 直连已连接")}catch(o){console.error(o)}}function fi(){return _e==="turn"?"turn":"p2p"}function di(){if(!R.value.id)return;const o=localStorage.getItem(Is)||"";o&&(pi(),de=new WebSocket(`${_.value}?deviceId=${encodeURIComponent(R.value.id)}&deviceToken=${encodeURIComponent(o)}`),de.addEventListener("message",c=>{Lo(c.data)}),de.addEventListener("close",()=>{de=null,Bo()}),de.addEventListener("error",()=>{de==null||de.close()}))}function pi(){if(st&&(window.clearTimeout(st),st=null),!de)return;const o=de;de=null,o.onclose=null,o.close()}function Bo(){st||!R.value.id||(st=window.setTimeout(()=>{st=null,di()},zu))}function ue(o,c,u){!de||de.readyState!==WebSocket.OPEN||!c||de.send(JSON.stringify({type:o,target_device_id:c,payload:u}))}function Lo(o){try{const c=JSON.parse(o);if(c.type==="presence.update"){h();return}if(c.type==="webrtc.description"){ci(c);return}if(c.type==="webrtc.candidate"){ui(c);return}if(c.type==="transfer.created"){hi(c);return}if(c.type==="transfer.updated"){mi(c);return}c.type==="transfer.file"&&gi(c)}catch(c){console.error(c)}}function hi(o){var O;const c=o.payload||{},u=o.device_id||c.sender_device_id||"",g={id:u,name:c.sender_name||((O=$t(u))==null?void 0:O.name)||`Device ${Mt(u)}`,type:Ut(c.sender_type||"desktop")};if(g.connectionType="等待实时数据",P(g,!0),!p.value.find(ne=>ne.transferId===c.transfer_id)){if(c.kind==="text"){p.value.push({id:Ue("incoming-text"),transferId:c.transfer_id,kind:"text",text:c.content||"",status:"已接收",tone:"success",copied:!1});return}p.value.push({id:Ue("incoming-file"),transferId:c.transfer_id,kind:"file",name:c.name||"file",size:Bt(Number(c.size_bytes||0)),sizeBytes:Number(c.size_bytes||0),status:"接收中...",tone:"primary",progress:35,pending:!1,downloadUrl:"",ownedDownloadUrl:!1})}}function mi(o){const c=o.payload||{},u=p.value.find(g=>g.transferId===c.transfer_id);if(u&&u.kind==="file"){if(c.final_status==="completed"){u.progress=100,u.status="已接收",u.tone="success",u.downloadUrl&&(u.status="可保存");return}c.final_status==="cancelled"&&(u.status="已取消",u.tone="danger")}}function gi(o){const c=o.payload||{};let u=p.value.find(g=>g.transferId===c.transfer_id);!u&&c.transfer_id&&(u={id:Ue("incoming-file"),transferId:c.transfer_id,kind:"file",name:c.name||"file",size:"",sizeBytes:0,status:"可保存",tone:"success",progress:100,pending:!1,downloadUrl:"",ownedDownloadUrl:!1},p.value.push(u)),!(!u||u.kind!=="file")&&(me(u,c.download_url||c.data_url||"",!1),u.status="可保存",u.progress=100,u.tone="success")}function $t(o){return i.value.find(c=>c.id===o)}function vi(o,c={}){return[{label:"在线设备",value:`${o.devices_online||0}`,tone:"blue"},{label:"待加入房间",value:`${o.rooms_waiting||0}`,tone:"cyan"},{label:"有效传输",value:`${o.transfers_total||0}`,tone:"default"},{label:"累计传输",value:`${o.transfers_cumulative||0}`,tone:"default"},{kind:"minio",label:"MinIO 剩余容量",value:as(c.remaining_bytes||0),tone:Number(c.usage_percent||0)>=85?"danger":Number(c.usage_percent||0)>=60?"cyan":"blue",percent:Math.max(0,100-Number(c.usage_percent||0)),detail:`已用 ${as(c.used_bytes||0)} / 总计 ${as(c.capacity_bytes||0)}`,kicker:`存档 ${c.object_count||0} 份`}]}function as(o){const c=Number(o||0);if(!c||c<=0)return"0 GB";const u=["B","KB","MB","GB","TB"],g=Math.min(Math.floor(Math.log(c)/Math.log(1024)),u.length-1),M=c/1024**g,O=g>=3?2:M>=10?1:2;return`${M.toFixed(O)} ${u[g]}`}function jo(o){const c=o.final_status==="completed",u=o.final_status==="failed"||o.final_status==="cancelled";return{time:cs(o.created_at),peer:`${Mt(o.sender_device_id)} -> ${Mt(o.receiver_device_id)}`,type:o.kind==="text"?"文本消息":`文件 ${o.name}`,size:Bt(Number(o.size_bytes||0)),status:c?`已完成 (${o.current_channel||"p2p"})`:u?`已结束 (${o.final_status})`:`进行中 (${o.final_status||"pending"})`,tone:c?"success":u?"danger":"primary"}}function Mt(o){return o?o.slice(0,8):"--"}function cs(o){if(!o)return"刚刚";const c=new Date(o),u=Date.now()-c.getTime();if(!Number.isFinite(u))return"刚刚";const g=Math.max(0,Math.floor(u/1e3));if(g<60)return`${g} 秒前`;const M=Math.floor(g/60);if(M<60)return`${M} 分钟前`;const O=Math.floor(M/60);return O<24?`${O} 小时前`:`${Math.floor(O/24)} 天前`}function Ue(o){return`${o}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Bt(o){if(!o||o<=0)return"0 B";const c=["B","KB","MB","GB","TB"],u=Math.min(Math.floor(Math.log(o)/Math.log(1024)),c.length-1),g=o/1024**u,M=g>=10||u===0?0:1;return`${g.toFixed(M)} ${c[u]}`}h=async function(){return R.value.id?Pn.listCandidates(R.value.id).then(c=>{i.value=c.map(u=>({...u,description:`${Ut(u.type)} · 最近活跃 ${cs(u.last_seen_at)}`,icon:Mo(u.type),connectionType:u.network_group_key&&u.network_group_key===window.location.hostname?"局域网直连优先":"跨网络实时传输"})),s.value=i.value.length===0}).catch(c=>{s.value=!1,console.error(c)}):Promise.resolve()},b=function(c){const u=c.deviceId||c.id||"",g=c.connectionType||c.type||"点对点传输";C(),m.value.deviceId!==u&&(bt(),A()),m.value={name:c.name,type:g,baseType:g,deviceId:u},l.value=!1,a.value="----",n.value="transfer",Ke("正在建立实时通道"),rt(u,{initiate:!0})},P=function(c,u=!1){const g=c.deviceId||c.id||"",M=c.connectionType||c.type||"点对点传输";m.value.deviceId===g&&n.value==="transfer"||(bt(),u||A()),m.value={name:c.name,type:M,baseType:M,deviceId:g},l.value=!1,a.value="----",n.value="transfer",g&&(Ke("正在建立实时通道"),rt(g))},E=function(){bt(),A(),m.value={name:"--",type:"等待连接",baseType:"等待连接",deviceId:""},n.value="main"},N=async function(c){const u=c.trim();if(u){if(!m.value.deviceId){window.alert("当前没有可用的接收端");return}try{const g=await ge.create({kind:"text",name:"text-message",content:u,sender_device_id:R.value.id,receiver_device_id:m.value.deviceId});try{await Pe(g,u)}catch(M){console.warn("realtime text send failed, fallback to relay",M),await sn(g,u)}p.value.push({id:Ue("text"),transferId:g.id,kind:"text",text:u,status:"已发送",tone:"success",copied:!1})}catch(g){window.alert(`发送文本失败:${g.message}`)}}};function yi(o,c){ue("transfer.file",m.value.deviceId,{transfer_id:o.transferId,name:o.name,download_url:c.download_path||c.download_url})}function _i(o,c,{onProgress:u}={}){if(!(o!=null&&o.file))return Promise.reject(new Error("未找到待上传文件"));if(!(c!=null&&c.fallback_allowed))return Promise.reject(new Error("MinIO 存档未启用"));const g=c.id;if($e.has(g))return $e.get(g);const M=(async()=>(await ge.presignFallback(g),ge.uploadFallback(g,o.file,O=>{typeof u=="function"&&u(O)})))().finally(()=>{$e.delete(g)});return $e.set(g,M),M}async function bi(o,c,u){await ge.updateStatus(c.id,{current_channel:"minio",final_status:"completed"}),ue("transfer.updated",m.value.deviceId,{transfer_id:c.id,final_status:"completed",current_channel:"minio"}),yi(o,u),o.progress=100,o.status="已上传到 MinIO,对方可直接领取",o.tone="success"}async function Ho(o,c){const u=Me.get(o);if(!(!(u!=null&&u.length)||!(c!=null&&c.remoteDescription))){Me.delete(o);for(const g of u)try{await c.addIceCandidate(g)}catch(M){console.error(M)}}}return J=async function(c,u){c.progress=Math.max(5,c.progress||0),c.status="正在切换到 MinIO...",c.tone="primary";try{ue("transfer.updated",m.value.deviceId,{transfer_id:c.transferId,final_status:"fallback_uploading",current_channel:"minio"});const g=await _i(c,u,{onProgress:M=>{c.progress=Math.max(5,Math.min(M,99))}});await bi(c,u,g)}catch(g){c.pending=!0,c.status=`上传失败:${g.message}`,c.tone="danger"}},ci=async function(c){const g=(c.payload||{}).description,M=c.device_id||"";if(!g||!M)return;P($n(M),!0);const O=await rt(M);if(!O)return;const ne=ai(M),kt=!ze&&(O.signalingState==="stable"||ce),zo=g.type==="offer"&&!kt;if(be=!ne&&zo,!be&&!(g.type==="answer"&&(O.signalingState!=="have-local-offer"||!O.localDescription))){try{ce=g.type==="answer",await O.setRemoteDescription(g),await Ho(M,O)}catch(us){console.error(us)}finally{ce=!1}if(g.type==="offer")try{await O.setLocalDescription(),ue("webrtc.description",M,{description:O.localDescription})}catch(us){console.error(us)}}},ui=async function(c){const u=c.payload||{},g=c.device_id||"",M=u.candidate;if(!M||!g)return;(n.value!=="transfer"||m.value.deviceId!==g)&&P($n(g),!0);const O=await rt(g);if(O){if(!O.remoteDescription){const ne=Me.get(g)||[];ne.push(M),Me.set(g,ne);return}try{await O.addIceCandidate(M)}catch(ne){be||console.error(ne)}}},Y=async function(c){const u=p.value.find(g=>g.id===c);if(!(!u||u.kind!=="file"||!u.pending)){if(!m.value.deviceId){window.alert("当前没有可用的接收端");return}u.pending=!1,u.status="创建传输中...",u.tone="primary";try{const g=await ge.create({kind:"file",name:u.name,size_bytes:u.sizeBytes,sender_device_id:R.value.id,receiver_device_id:m.value.deviceId});u.transferId=g.id;const M=g.fallback_allowed?_i(u,g).catch(O=>{throw console.warn("minio backup sync failed",O),O}):Promise.resolve(null);ue("transfer.created",m.value.deviceId,{transfer_id:g.id,kind:"file",name:u.name,size_bytes:u.sizeBytes,sender_device_id:R.value.id,sender_name:R.value.name,sender_type:R.value.type,receiver_device_id:m.value.deviceId,final_status:"connecting",current_channel:"p2p",transport_options:rs()});try{if(await rn(u,g),g.fallback_allowed){u.status="实时传输完成,正在同步云端备份...",u.tone="primary";try{const O=await M;O&&(yi(u,O),u.status="已发送,2 小时内可离线领取")}catch(O){u.status=`实时传输成功,但 MinIO 备份失败:${O.message}`,u.tone="danger";return}u.tone="success"}}catch(O){console.warn("realtime file send failed, fallback to minio",O);try{const ne=await M;if(ne){await bi(u,g,ne);return}}catch(ne){console.warn("minio backup sync failed after realtime failure",ne)}await si(u,g)}}catch(g){u.pending=!0,u.status=`发送失败:${g.message}`,u.tone="danger"}}},hi=function(c){var ne;const u=c.payload||{},g=c.device_id||u.sender_device_id||"",M={id:g,name:u.sender_name||((ne=$t(g))==null?void 0:ne.name)||`设备 ${Mt(g)}`,type:Ut(u.sender_type||"desktop"),connectionType:"等待实时数据"};if(P(M,!0),!p.value.find(kt=>kt.transferId===u.transfer_id)){if(u.kind==="text"){u.content&&p.value.push({id:Ue("incoming-text"),transferId:u.transfer_id,kind:"text",text:u.content||"",status:"已接收",tone:"success",copied:!1});return}p.value.push({id:Ue("incoming-file"),transferId:u.transfer_id,kind:"file",name:u.name||"file",size:Bt(Number(u.size_bytes||0)),sizeBytes:Number(u.size_bytes||0),status:"等待接收...",tone:"primary",progress:5,pending:!1,downloadUrl:"",ownedDownloadUrl:!1})}},mi=function(c){const u=c.payload||{},g=p.value.find(M=>M.transferId===u.transfer_id);if(g&&g.kind==="file"){if(u.final_status==="completed"){g.progress=100,g.status=g.downloadUrl?"可保存":"传输完成",g.tone="success";return}if(u.final_status==="cancelled"){g.status="已取消",g.tone="danger";return}u.final_status==="fallback_uploading"&&(g.status="发送端正在上传回退文件...",g.tone="primary")}},gi=function(c){const u=c.payload||{};let g=p.value.find(M=>M.transferId===u.transfer_id);!g&&u.transfer_id&&(g={id:Ue("incoming-file"),transferId:u.transfer_id,kind:"file",name:u.name||"file",size:"",sizeBytes:0,status:"可保存",tone:"success",progress:100,pending:!1,downloadUrl:"",ownedDownloadUrl:!1},p.value.push(g)),!(!g||g.kind!=="file")&&(me(g,u.download_url||u.data_url||"",!1),g.status="可保存",g.progress=100,g.tone="success")},(o,c)=>(L(),V("div",null,[y("div",Uu,[q(xc,{theme:t.value,onToggleTheme:tn},null,8,["theme"]),n.value==="main"?(L(),V("div",Bu,[q(su,{devices:i.value,"is-scanning":s.value,"local-device-name":R.value.name,onSelectDevice:b},null,8,["devices","is-scanning","local-device-name"]),q(mu,{"generated-code":a.value,"is-waiting":l.value,"pending-downloads":f.value,"room-code-input":r.value,onCancelRoom:x,onCreateRoom:w,onJoinRoom:k,onUpdateRoomCode:ni},null,8,["generated-code","is-waiting","pending-downloads","room-code-input"])])):We("",!0),n.value==="transfer"?(L(),mt($u,{key:1,"connection-type":m.value.type,"has-pending-items":Ct.value,items:p.value,"peer-name":m.value.name,onClose:E,onCopyItem:Fe,onFilesSelected:W,onRemoveItem:xe,onSendAllPending:we,onSendText:N,onStartUpload:Y},null,8,["connection-type","has-pending-items","items","peer-name"])):We("",!0),n.value==="admin"?(L(),mt(qc,{key:2,"file-limit":T.value,"minio-capacity":S.value,records:D.value,stats:U.value,onExit:Io,onSaveConfig:So,"onUpdate:fileLimit":c[0]||(c[0]=u=>T.value=u),"onUpdate:minioCapacity":c[1]||(c[1]=u=>S.value=u)},null,8,["file-limit","minio-capacity","records","stats"])):We("",!0)]),q(_c,{onRequestAdmin:xo})]))}};mc(qu).mount("#app");
|