2026-01-26 09:33:58 +08:00
( function (){ const e = document . createElement ( "link" ). relList ; if ( e && e . supports && e . supports ( "modulepreload" )) return ; for ( const o of document . querySelectorAll ( 'link[rel="modulepreload"]' )) i ( o ); new MutationObserver ( o =>{ for ( const n of o ) if ( n . type === "childList" ) for ( const r of n . addedNodes ) r . tagName === "LINK" && r . rel === "modulepreload" && i ( r )}). observe ( document ,{ childList :! 0 , subtree :! 0 }); function t ( o ){ const n = {}; return o . integrity && ( n . integrity = o . integrity ), o . referrerPolicy && ( n . referrerPolicy = o . referrerPolicy ), o . crossOrigin === "use-credentials" ? n . credentials = "include" : o . crossOrigin === "anonymous" ? n . credentials = "omit" : n . credentials = "same-origin" , n } function i ( o ){ if ( o . ep ) return ; o . ep =! 0 ; const n = t ( o ); fetch ( o . href , n )}})(); /**
2026-01-16 14:52:40 +08:00
* @vue/shared v3.5.26
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
2026-01-26 09:33:58 +08:00
**/ function Pr ( A ){ const e = Object . create ( null ); for ( const t of A . split ( "," )) e [ t ] = 1 ; return t => t in e } const _A = {}, hi = [], nt = ()=>{}, tI = ()=> ! 1 , Bn = A => A . charCodeAt ( 0 ) === 111 && A . charCodeAt ( 1 ) === 110 && ( A . charCodeAt ( 2 ) > 122 || A . charCodeAt ( 2 ) < 97 ), Vr = A => A . startsWith ( "onUpdate:" ), ue = Object . assign , Wr = ( A , e )=>{ const t = A . indexOf ( e ); t >- 1 && A . splice ( t , 1 )}, iB = Object . prototype . hasOwnProperty , JA = ( A , e )=> iB . call ( A , e ), yA = Array . isArray , fi = A => co ( A ) === "[object Map]" , Qn = A => co ( A ) === "[object Set]" , Gg = A => co ( A ) === "[object Date]" , FA = A => typeof A == "function" , ee = A => typeof A == "string" , It = A => typeof A == "symbol" , KA = A => A !== null && typeof A == "object" , iI = A =>( KA ( A ) || FA ( A )) && FA ( A . then ) && FA ( A . catch ), oI = Object . prototype . toString , co = A => oI . call ( A ), oB = A => co ( A ). slice ( 8 , - 1 ), nI = A => co ( A ) === "[object Object]" , qr = A => ee ( A ) && A !== "NaN" && A [ 0 ] !== "-" && "" + parseInt ( A , 10 ) === A , Oi = Pr ( ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" ), cn = A =>{ const e = Object . create ( null ); return t => e [ t ] || ( e [ t ] = A ( t ))}, nB = /-\w/g , Je = cn ( A => A . replace ( nB , e => e . slice ( 1 ). toUpperCase ())), rB = /\B([A-Z])/g , Ii = cn ( A => A . replace ( rB , "-$1" ). toLowerCase ()), En = cn ( A => A . charAt ( 0 ). toUpperCase () + A . slice ( 1 )), xn = cn ( A => A ? `on ${ En ( A ) } ` : "" ), Yt = ( A , e )=> ! Object . is ( A , e ), To = ( A ,... e )=>{ for ( let t = 0 ; t < A . length ; t ++ ) A [ t ](... e )}, rI = ( A , e , t , i =! 1 )=>{ Object . defineProperty ( A , e ,{ configurable :! 0 , enumerable :! 1 , writable : i , value : t })}, un = A =>{ const e = parseFloat ( A ); return isNaN ( e ) ? A : e }; let Lg ; const hn = ()=> Lg || ( Lg = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : typeof global < "u" ? global : {}); function VA ( A ){ if ( yA ( A )){ const e = {}; for ( let t = 0 ; t < A . length ; t ++ ){ const i = A [ t ], o = ee ( i ) ? IB ( i ) : VA ( i ); if ( o ) for ( const n in o ) e [ n ] = o [ n ]} return e } else if ( ee ( A ) || KA ( A )) return A } const gB = /;(?![^(]*\))/g , sB = /:([^]+)/ , aB = /\/\*[^]*?\*\//g ; function IB ( A ){ const e = {}; return A . replace ( aB , "" ). split ( gB ). forEach ( t =>{ if ( t ){ const i = t . split ( sB ); i . length > 1 && ( e [ i [ 0 ]. trim ()] = i [ 1 ]. trim ())}}), e } function kA ( A ){ let e = "" ; if ( ee ( A )) e = A ; else if ( yA ( A )) for ( let t = 0 ; t < A . length ; t ++ ){ const i = kA ( A [ t ]); i && ( e += i + " " )} else if ( KA ( A )) for ( const t in A ) A [ t ] && ( e += t + " " ); return e . trim ()} const CB = "itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly" , lB = Pr ( CB ); function gI ( A ){ return !! A || A === "" } function BB ( A , e ){ if ( A . length !== e . length ) return ! 1 ; let t =! 0 ; for ( let i = 0 ; t && i < A . length ; i ++ ) t = fn ( A [ i ], e [ i ]); return t } function fn ( A , e ){ if ( A === e ) return ! 0 ; let t = Gg ( A ), i = Gg ( e ); if ( t || i ) return t && i ? A . getTime () === e . getTime () :! 1 ; if ( t = It ( A ), i = It ( e ), t || i ) return A === e ; if ( t = yA ( A ), i = yA ( e ), t || i ) return t && i ? BB ( A , e ) :! 1 ; if ( t = KA ( A ), i = KA ( e ), t || i ){ if ( ! t ||! i ) return ! 1 ; const o = Object . keys ( A ). length , n = Object . keys ( e ). length ; if ( o !== n ) return ! 1 ; for ( const r in A ){ const g = A . hasOwnProperty ( r ), s = e . hasOwnProperty ( r ); if ( g &&! s ||! g && s ||! fn ( A [ r ], e [ r ])) return ! 1 }} return String ( A ) === String ( e )} function QB ( A , e ){ return A . findIndex ( t => fn ( t , e ))} const sI = A => !! ( A && A . __v_isRef ===! 0 ), F = A => ee ( A ) ? A : A == null ? "" : yA ( A ) || KA ( A ) && ( A . toString === oI ||! FA ( A . toString )) ? sI ( A ) ? F ( A . value ) : JSON . stringify ( A , aI , 2 ) : String ( A ), aI = ( A , e )=> sI ( e ) ? aI ( A , e . value ) : fi ( e ) ? {[ `Map( ${ e . size } )` ] : [... e . entries ()]. reduce (( t ,[ i , o ], n )=>( t [ Jn ( i , n ) + " =>" ] = o , t ),{})} : Qn ( e ) ? {[ `Set( ${ e . size } )` ] : [... e . values ()]. map ( t => Jn ( t ))} : It ( e ) ? Jn ( e ) : KA ( e ) &&! yA ( e ) &&! nI ( e ) ? String ( e ) : e , Jn = ( A , e = "" )=>{ var t ; return It ( A ) ? `Symbol( ${ ( t = A . description ) != null ? t : e } )` : A }; /**
2026-01-16 14:52:40 +08:00
* @vue/reactivity v3.5.26
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
2026-01-26 09:33:58 +08:00
**/ let ke ; class II { constructor ( e =! 1 ){ this . detached = e , this . _active =! 0 , this . _on = 0 , this . effects = [], this . cleanups = [], this . _isPaused =! 1 , this . parent = ke , ! e && ke && ( this . index = ( ke . scopes || ( ke . scopes = [])). push ( this ) - 1 )} get active (){ return this . _active } pause (){ if ( this . _active ){ this . _isPaused =! 0 ; let e , t ; if ( this . scopes ) for ( e = 0 , t = this . scopes . length ; e < t ; e ++ ) this . scopes [ e ]. pause (); for ( e = 0 , t = this . effects . length ; e < t ; e ++ ) this . effects [ e ]. pause ()}} resume (){ if ( this . _active && this . _isPaused ){ this . _isPaused =! 1 ; let e , t ; if ( this . scopes ) for ( e = 0 , t = this . scopes . length ; e < t ; e ++ ) this . scopes [ e ]. resume (); for ( e = 0 , t = this . effects . length ; e < t ; e ++ ) this . effects [ e ]. resume ()}} run ( e ){ if ( this . _active ){ const t = ke ; try { return ke = this , e ()} finally { ke = t }}} on (){ ++ this . _on === 1 && ( this . prevScope = ke , ke = this )} off (){ this . _on > 0 &&-- this . _on === 0 && ( ke = this . prevScope , this . prevScope = void 0 )} stop ( e ){ if ( this . _active ){ this . _active =! 1 ; let t , i ; for ( t = 0 , i = this . effects . length ; t < i ; t ++ ) this . effects [ t ]. stop (); for ( this . effects . length = 0 , t = 0 , i = this . cleanups . length ; t < i ; t ++ ) this . cleanups [ t ](); if ( this . cleanups . length = 0 , this . scopes ){ for ( t = 0 , i = this . scopes . length ; t < i ; t ++ ) this . scopes [ t ]. stop ( ! 0 ); this . scopes . length = 0 } if ( ! this . detached && this . parent &&! e ){ const o = this . parent . scopes . pop (); o && o !== this && ( this . parent . scopes [ this . index ] = o , o . index = this . index )} this . parent = void 0 }}} function cB ( A ){ return new II ( A )} function EB (){ return ke } let OA ; const Tn = new WeakSet ; class CI { constructor ( e ){ this . fn = e , this . deps = void 0 , this . depsTail = void 0 , this . flags = 5 , this . next = void 0 , this . cleanup = void 0 , this . scheduler = void 0 , ke && ke . active && ke . effects . push ( this )} pause (){ this . flags |= 64 } resume (){ this . flags & 64 && ( this . flags &=- 65 , Tn . has ( this ) && ( Tn . delete ( this ), this . trigger ()))} notify (){ this . flags & 2 &&! ( this . flags & 32 ) || this . flags & 8 || BI ( this )} run (){ if ( ! ( this . flags & 1 )) return this . fn (); this . flags |= 2 , Ug ( this ), QI ( this ); const e = OA , t = _e ; OA = this , _e =! 0 ; try { return this . fn ()} finally { cI ( this ), OA = e , _e = t , this . flags &=- 3 }} stop (){ if ( this . flags & 1 ){ for ( let e = this . deps ; e ; e = e . nextDep ) Xr ( e ); this . deps = this . depsTail = void 0 , Ug ( this ), this . onStop && this . onStop (), this . flags &=- 2 }} trigger (){ this . flags & 64 ? Tn . add ( this ) : this . scheduler ? this . scheduler () : this . runIfDirty ()} runIfDirty (){ ar ( this ) && this . run ()} get dirty (){ return ar ( this )}} let lI = 0 , Pi , Vi ; function BI ( A , e =! 1 ){ if ( A . flags |= 8 , e ){ A . next = Vi , Vi = A ; return } A . next = Pi , Pi = A } function jr (){ lI ++ } function Zr (){ if ( -- lI > 0 ) return ; if ( Vi ){ let e = Vi ; for ( Vi = void 0 ; e ;){ const t = e . next ; e . next = void 0 , e . flags &=- 9 , e = t }} let A ; for (; Pi ;){ let e = Pi ; for ( Pi = void 0 ; e ;){ const t = e . next ; if ( e . next = void 0 , e . flags &=- 9 , e . flags & 1 ) try { e . trigger ()} catch ( i ){ A || ( A = i )} e = t }} if ( A ) throw A } function QI ( A ){ for ( let e = A . deps ; e ; e = e . nextDep ) e . version =- 1 , e . prevActiveLink = e . dep . activeLink , e . dep . activeLink = e } function cI ( A ){ let e , t = A . depsTail , i = t ; for (; i ;){ const o = i . prevDep ; i . version ===- 1 ? ( i === t && ( t = o ), Xr ( i ), uB ( i )) : e = i , i . dep . activeLink = i . prevActiveLink , i . prevActiveLink = void 0 , i = o } A . deps = e , A . depsTail = t } function ar ( A ){ for ( let e = A . deps ; e ; e = e . nextDep ) if ( e . dep . version !== e . version || e . dep . computed && ( EI ( e . dep . computed ) || e . dep . version !== e . version )) return ! 0 ; return !! A . _dirty } function EI ( A ){ if ( A . flags & 4 &&! ( A . flags & 16 ) || ( A . flags &=- 17 , A . globalVersion === $i ) || ( A . globalVersion = $i , ! A . isSSR && A . flags & 128 && ( ! A . deps &&! A . _dirty ||! ar ( A )))) return ; A . flags |= 2 ; const e = A . dep , t = OA , i = _e ; OA = A , _e =! 0 ; try { QI ( A ); const o = A . fn ( A . _value );( e . version === 0 || Yt ( o , A . _value )) && ( A . flags |= 128 , A . _value = o , e . version ++ )} catch ( o ){ throw e . version ++ , o } finally { OA = t , _e = i , cI ( A ), A . flags &=- 3 }} function Xr ( A , e =! 1 ){ const { dep : t , prevSub : i , nextSub : o } = A ; if ( i && ( i . nextSub = o , A . prevSub = void 0 ), o && ( o . prevSub = i , A . nextSub = void 0 ), t . subs === A && ( t . subs = i , ! i && t . computed )){ t . computed . flags &=- 5 ; for ( let n = t . computed . deps ; n ; n = n . nextDep ) Xr ( n , ! 0 )} ! e &&!-- t . sc && t . map && t . map . delete ( t . key )} function uB ( A ){ const { prevDep : e , nextDep : t } = A ; e && ( e . nextDep = t , A . prevDep = void 0 ), t && ( t . prevDep = e , A . nextDep = void 0 )} let _e =! 0 ; const uI = []; function wt (){ uI . push ( _e ), _e =! 1 } function Dt (){ const A = uI . pop (); _e = A === void 0 ?! 0 : A } function Ug ( A ){ const { cleanup : e } = A ; if ( A . cleanup = void 0 , e ){ const t = OA ; OA = void 0 ; try { e ()} finally { OA = t }}} let $i = 0 ; class hB { constructor ( e , t ){ this . sub = e , this . dep = t , this . version = t . ver
2026-01-16 14:52:40 +08:00
* @ vue / runtime - core v3 . 5.26
* ( c ) 2018 - present Yuxi ( Evan ) You and Vue contributors
* @ license MIT
2026-01-26 09:33:58 +08:00
** /function Eo(A,e,t,i){try{return i?A(...i):A()}catch(o){mn(o,e,t)}}function Ct(A,e,t,i){if(FA(A)){const o=Eo(A,e,t,i);return o&&iI(o)&&o.catch(n=>{mn(n,e,t)}),o}if(yA(A)){const o=[];for(let n=0;n<A.length;n++)o.push(Ct(A[n],e,t,i));return o}}function mn(A,e,t,i=!0){const o=e?e.vnode:null,{errorHandler:n,throwUnhandledErrorInProduction:r}=e&&e.appContext.config||_A;if(e){let g=e.parent;const s=e.proxy,a=`https:/ / vuejs . org / error - reference / # runtime - $ { t } `;for(;g;){const I=g.ec;if(I){for(let l=0;l<I.length;l++)if(I[l](A,s,a)===!1)return}g=g.parent}if(n){wt(),Eo(n,null,10,[A,s,a]),Dt();return}}YB(A,t,o,i,r)}function YB(A,e,t,i=!0,o=!1){if(o)throw A;console.error(A)}const me=[];let At=-1;const di=[];let Mt=null,Qi=0;const FI=Promise.resolve();let jo=null;function uo(A){const e=jo||FI;return A?e.then(this?A.bind(this):A):e}function _B(A){let e=At+1,t=me.length;for(;e<t;){const i=e+t>>>1,o=me[i],n=eo(o);n<A||n===A&&o.flags&2?e=i+1:t=i}return e}function ig(A){if(!(A.flags&1)){const e=eo(A),t=me[me.length-1];!t||!(A.flags&2)&&e>=eo(t)?me.push(A):me.splice(_B(e),0,A),A.flags|=1,SI()}}function SI(){jo||(jo=FI.then(bI))}function KB(A){yA(A)?di.push(...A):Mt&&A.id===-1?Mt.splice(Qi+1,0,A):A.flags&1||(di.push(A),A.flags|=1),SI()}function xg(A,e,t=At+1){for(;t<me.length;t++){const i=me[t];if(i&&i.flags&2){if(A&&i.id!==A.uid)continue;me.splice(t,1),t--,i.flags&4&&(i.flags&=-2),i(),i.flags&4||(i.flags&=-2)}}}function RI(A){if(di.length){const e=[...new Set(di)].sort((t,i)=>eo(t)-eo(i));if(di.length=0,Mt){Mt.push(...e);return}for(Mt=e,Qi=0;Qi<Mt.length;Qi++){const t=Mt[Qi];t.flags&4&&(t.flags&=-2),t.flags&8||t(),t.flags&=-2}Mt=null,Qi=0}}const eo=A=>A.id==null?A.flags&2?-1:1/0:A.id;function bI(A){try{for(At=0;At<me.length;At++){const e=me[At];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),Eo(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;At<me.length;At++){const e=me[At];e&&(e.flags&=-2)}At=-1,me.length=0,RI(),jo=null,(me.length||di.length)&&bI()}}let Re=null,NI=null;function Zo(A){const e=Re;return Re=A,NI=A&&A.type.__scopeId||null,e}function OB(A,e=Re,t){if(!e||A._n)return A;const i=(...o)=>{i._d&&$o(-1);const n=Zo(e);let r;try{r=A(...o)}finally{Zo(n),i._d&&$o(1)}return r};return i._n=!0,i._c=!0,i._d=!0,i}function ZA(A,e){if(Re===null)return A;const t=kn(Re),i=A.dirs||(A.dirs=[]);for(let o=0;o<e.length;o++){let[n,r,g,s=_A]=e[o];n&&(FA(n)&&(n={mounted:n,updated:n}),n.deep&&ht(r),i.push({dir:n,instance:t,value:r,oldValue:void 0,arg:g,modifiers:s}))}return A}function Zt(A,e,t,i){const o=A.dirs,n=e&&e.dirs;for(let r=0;r<o.length;r++){const g=o[r];n&&(g.oldValue=n[r].value);let s=g.dir[i];s&&(wt(),Ct(s,t,8,[A.el,g,A,e]),Dt())}}function Ho(A,e){if(Ee){let t=Ee.provides;const i=Ee.parent&&Ee.parent.provides;i===t&&(t=Ee.provides=Object.create(i)),t[A]=e}}function rt(A,e,t=!1){const i=vi();if(i||pi){let o=pi?pi._context.provides:i?i.parent==null||i.ce?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides:void 0;if(o&&A in o)return o[A];if(arguments.length>1)return t&&FA(e)?e.call(i&&i.proxy):e}}const PB=Symbol.for("v-scx"),VB=()=>rt(PB);function ae(A,e,t){return GI(A,e,t)}function GI(A,e,t=_A){const{immediate:i,deep:o,flush:n,once:r}=t,g=ue({},t),s=e&&i||!e&&n!=="post";let a;if(io){if(n==="sync"){const Q=VB();a=Q.__watcherHandles||(Q.__watcherHandles=[])}else if(!s){const Q=()=>{};return Q.stop=nt,Q.resume=nt,Q.pause=nt,Q}}const I=Ee;g.call=(Q,h,f)=>Ct(Q,I,h,f);let l=!1;n==="post"?g.scheduler=Q=>{Se(Q,I&&I.suspense)}:n!=="sync"&&(l=!0,g.scheduler=(Q,h)=>{h?Q():ig(Q)}),g.augmentJob=Q=>{e&&(Q.flags|=4),l&&(Q.flags|=2,I&&(Q.id=I.uid,Q.i=I))};const C=HB(A,e,g);return io&&(a?a.push(C):s&&C()),C}function WB(A,e,t){const i=this.proxy,o=ee(A)?A.includes(".")?LI(i,A):()=>i[A]:A.bind(i,i);let n;FA(e)?n=e:(n=e.handler,t=e);const r=po(this),g=GI(o,n.bind(i),t);return r(),g}function LI(A,e){const t=e.split(".");return()=>{let i=A;for(let o=0;o<t.length&&i;o++)i=i[t[o]];return i}}const qB=Symbol("_vte"),jB=A=>A.__isTeleport,ZB=Symbol("_leaveCb");function og(A,e){A.shapeFlag&6&&A.component?(A.transition=e,og(A.component.subTree,e)):A.shapeF
2026-01-16 14:52:40 +08:00
* @vue/runtime-dom v3.5.26
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
2026-01-26 09:33:58 +08:00
**/let fr;const Zg=typeof window<"u"&&window.trustedTypes;if(Zg)try{fr=Zg.createPolicy("vue",{createHTML:A=>A})}catch{}const gC=fr?A=>fr.createHTML(A):A=>A,jQ="http://www.w3.org/2000/svg",ZQ="http://www.w3.org/1998/Math/MathML",Et=typeof document<"u"?document:null,Xg=Et&&Et.createElement("template"),XQ={insert:(A,e,t)=>{e.insertBefore(A,t||null)},remove:A=>{const e=A.parentNode;e&&e.removeChild(A)},createElement:(A,e,t,i)=>{const o=e==="svg"?Et.createElementNS(jQ,A):e==="mathml"?Et.createElementNS(ZQ,A):t?Et.createElement(A,{is:t}):Et.createElement(A);return A==="select"&&i&&i.multiple!=null&&o.setAttribute("multiple",i.multiple),o},createText:A=>Et.createTextNode(A),createComment:A=>Et.createComment(A),setText:(A,e)=>{A.nodeValue=e},setElementText:(A,e)=>{A.textContent=e},parentNode:A=>A.parentNode,nextSibling:A=>A.nextSibling,querySelector:A=>Et.querySelector(A),setScopeId(A,e){A.setAttribute(e,"")},insertStaticContent(A,e,t,i,o,n){const r=t?t.previousSibling:e.lastChild;if(o&&(o===n||o.nextSibling))for(;e.insertBefore(o.cloneNode(!0),t),!(o===n||!(o=o.nextSibling)););else{Xg.innerHTML=gC(i==="svg"?` < svg > $ { A } < /svg>`:i==="mathml"?`<math>${A}</math>`:A);const g=Xg.content;if(i==="svg"||i==="mathml"){const s=g.firstChild;for(;s.firstChild;)g.appendChild(s.firstChild);g.removeChild(s)}e.insertBefore(g,t)}return[r?r.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}},zQ=Symbol("_vtc");function $Q(A,e,t){const i=A[zQ];i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?A.removeAttribute("class"):t?A.setAttribute("class",e):A.className=e}const zg=Symbol("_vod"),Ac=Symbol("_vsh"),ec=Symbol(""),tc=/(?:^|;)\s*display\s*:/;function ic(A,e,t){const i=A.style,o=ee(t);let n=!1;if(t&&!o){if(e)if(ee(e))for(const r of e.split(";")){const g=r.slice(0,r.indexOf(":")).trim();t[g]==null&&Ko(i,g,"")}else for(const r in e)t[r]==null&&Ko(i,r,"");for(const r in t)r==="display"&&(n=!0),Ko(i,r,t[r])}else if(o){if(e!==t){const r=i[ec];r&&(t+=";"+r),i.cssText=t,n=tc.test(t)}}else e&&A.removeAttribute("style");zg in A&&(A[zg]=n?i.display:"",A[Ac]&&(i.display="none"))}const $g=/\s*!important$/;function Ko(A,e,t){if(yA(t))t.forEach(i=>Ko(A,e,i));else if(t==null&&(t=""),e.startsWith("--"))A.setProperty(e,t);else{const i=oc(A,e);$g.test(t)?A.setProperty(Ii(i),t.replace($g,""),"important"):A[i]=t}}const As=["Webkit","Moz","ms"],On={};function oc(A,e){const t=On[e];if(t)return t;let i=Je(e);if(i!=="filter"&&i in A)return On[e]=i;i=En(i);for(let o=0;o<As.length;o++){const n=As[o]+i;if(n in A)return On[e]=n}return e}const es="http://www.w3.org/1999/xlink";function ts(A,e,t,i,o,n=lB(e)){i&&e.startsWith("xlink:")?t==null?A.removeAttributeNS(es,e.slice(6,e.length)):A.setAttributeNS(es,e,t):t==null||n&&!gI(t)?A.removeAttribute(e):A.setAttribute(e,n?"":It(t)?String(t):t)}function is(A,e,t,i,o){if(e==="innerHTML"||e==="textContent"){t!=null&&(A[e]=e==="innerHTML"?gC(t):t);return}const n=A.tagName;if(e==="value"&&n!=="PROGRESS"&&!n.includes("-")){const g=n==="OPTION"?A.getAttribute("value")||"":A.value,s=t==null?A.type==="checkbox"?"on":"":String(t);(g!==s||!("_value"in A))&&(A.value=s),t==null&&A.removeAttribute(e),A._value=t;return}let r=!1;if(t===""||t==null){const g=typeof A[e];g==="boolean"?t=gI(t):t==null&&g==="string"?(t="",r=!0):g==="number"&&(t=0,r=!0)}try{A[e]=t}catch{}r&&A.removeAttribute(o||e)}function ti(A,e,t,i){A.addEventListener(e,t,i)}function nc(A,e,t,i){A.removeEventListener(e,t,i)}const os=Symbol("_vei");function rc(A,e,t,i,o=null){const n=A[os]||(A[os]={}),r=n[e];if(i&&r)r.value=i;else{const[g,s]=gc(e);if(i){const a=n[e]=Ic(i,o);ti(A,g,a,s)}else r&&(nc(A,g,r,s),n[e]=void 0)}}const ns=/(?:Once|Passive|Capture)$/;function gc(A){let e;if(ns.test(A)){e={};let i;for(;i=A.match(ns);)A=A.slice(0,A.length-i[0].length),e[i[0].toLowerCase()]=!0}return[A[2]===":"?A.slice(3):Ii(A.slice(2)),e]}let Pn=0;const sc=Promise.resolve(),ac=()=>Pn||(sc.then(()=>Pn=0),Pn=Date.now());function Ic(A,e){const t=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=t.attached)return;Ct(Cc(i,t.value),e,5,[i])};return t.value=A,t.attached=ac(),t}function Cc(A,e){if(yA(e)){co
2026-01-16 14:52:40 +08:00
* shared v9 . 14.5
* ( c ) 2025 kazuya kawaguchi
* Released under the MIT License .
2026-01-26 09:33:58 +08:00
* /function mc(A,e){typeof console<"u"&&(console.warn("[intlify] "+A),e&&console.warn(e.stack))}const nn=typeof window<"u",Vt=(A,e=!1)=>e?Symbol.for(A):Symbol(A),yc=(A,e,t)=>wc({l:A,k:e,s:t}),wc=A=>JSON.stringify(A).replace(/ \u2028 / g , "\\u2028" ). replace ( /\u2029/g , "\\u2029" ). replace ( /\u0027/g , "\\u0027" ), Ae = A => typeof A == "number" && isFinite ( A ), Dc = A => aC ( A ) === "[object Date]" , Ot = A => aC ( A ) === "[object RegExp]" , vn = A => vA ( A ) && Object . keys ( A ). length === 0 , Be = Object . assign , kc = Object . create , HA = ( A = null )=> kc ( A ); let Cs ; const ft = ()=> Cs || ( Cs = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : typeof global < "u" ? global : HA ()); function ls ( A ){ return A . replace ( /&/g , "&" ). replace ( /</g , "<" ). replace ( />/g , ">" ). replace ( /"/g , """ ). replace ( /'/g , "'" ). replace ( /\//g , "/" ). replace ( /=/g , "=" )} function Bs ( A ){ return A . replace ( /&(?![a-zA-Z0-9#]{2,6};)/g , "&" ). replace ( /"/g , """ ). replace ( /'/g , "'" ). replace ( /</g , "<" ). replace ( />/g , ">" )} function vc ( A ){ return A = A . replace ( /(\w+)\s*=\s*"([^"]*)"/g ,( i , o , n )=> ` ${ o } =" ${ Bs ( n ) } "` ), A = A . replace ( /(\w+)\s*=\s*'([^']*)'/g ,( i , o , n )=> ` ${ o } =' ${ Bs ( n ) } '` ), /\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi . test ( A ) && ( A = A . replace ( /(\s+)(on)(\w+\s*=)/gi , "$1on$3" )),[ /(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi , /(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi ]. forEach ( i =>{ A = A . replace ( i , "$1javascript:" )}), A } const Fc = Object . prototype . hasOwnProperty ; function He ( A , e ){ return Fc . call ( A , e )} const WA = Array . isArray , PA = A => typeof A == "function" , gA = A => typeof A == "string" , RA = A => typeof A == "boolean" , UA = A => A !== null && typeof A == "object" , Sc = A => UA ( A ) && PA ( A . then ) && PA ( A . catch ), sC = Object . prototype . toString , aC = A => sC . call ( A ), vA = A =>{ if ( ! UA ( A )) return ! 1 ; const e = Object . getPrototypeOf ( A ); return e === null || e . constructor === Object }, Rc = A => A == null ? "" : WA ( A ) || vA ( A ) && A . toString === sC ? JSON . stringify ( A , null , 2 ) : String ( A ); function bc ( A , e = "" ){ return A . reduce (( t , i , o )=> o === 0 ? t + i : t + e + i , "" )} function Fn ( A ){ let e = A ; return ()=> ++ e } const Ro = A => ! UA ( A ) || WA ( A ); function Oo ( A , e ){ if ( Ro ( A ) || Ro ( e )) throw new Error ( "Invalid value" ); const t = [{ src : A , des : e }]; for (; t . length ;){ const { src : i , des : o } = t . pop (); Object . keys ( i ). forEach ( n =>{ n !== "__proto__" && ( UA ( i [ n ]) &&! UA ( o [ n ]) && ( o [ n ] = Array . isArray ( i [ n ]) ? [] : HA ()), Ro ( o [ n ]) || Ro ( i [ n ]) ? o [ n ] = i [ n ] : t . push ({ src : i [ n ], des : o [ n ]}))})}} /*!
2026-01-16 14:52:40 +08:00
* message-compiler v9.14.5
* (c) 2025 kazuya kawaguchi
* Released under the MIT License.
2026-01-26 09:33:58 +08:00
*/ function Nc ( A , e , t ){ return { line : A , column : e , offset : t }} function rn ( A , e , t ){ return { start : A , end : e }} const Gc = /\{([0-9a-zA-Z]+)\}/g ; function IC ( A ,... e ){ return e . length === 1 && Lc ( e [ 0 ]) && ( e = e [ 0 ]),( ! e ||! e . hasOwnProperty ) && ( e = {}), A . replace ( Gc ,( t , i )=> e . hasOwnProperty ( i ) ? e [ i ] : "" )} const CC = Object . assign , Qs = A => typeof A == "string" , Lc = A => A !== null && typeof A == "object" ; function lC ( A , e = "" ){ return A . reduce (( t , i , o )=> o === 0 ? t + i : t + e + i , "" )} const sg = { USE_MODULO_SYNTAX : 1 , __EXTEND_POINT__ : 2 }, Uc = {[ sg . USE_MODULO_SYNTAX ] : "Use modulo before '{{0}}'." }; function Mc ( A , e ,... t ){ const i = IC ( Uc [ A ],... t || []), o = { message : String ( i ), code : A }; return e && ( o . location = e ), o } const pA = { EXPECTED_TOKEN : 1 , INVALID_TOKEN_IN_PLACEHOLDER : 2 , UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER : 3 , UNKNOWN_ESCAPE_SEQUENCE : 4 , INVALID_UNICODE_ESCAPE_SEQUENCE : 5 , UNBALANCED_CLOSING_BRACE : 6 , UNTERMINATED_CLOSING_BRACE : 7 , EMPTY_PLACEHOLDER : 8 , NOT_ALLOW_NEST_PLACEHOLDER : 9 , INVALID_LINKED_FORMAT : 10 , MUST_HAVE_MESSAGES_IN_PLURAL : 11 , UNEXPECTED_EMPTY_LINKED_MODIFIER : 12 , UNEXPECTED_EMPTY_LINKED_KEY : 13 , UNEXPECTED_LEXICAL_ANALYSIS : 14 , UNHANDLED_CODEGEN_NODE_TYPE : 15 , UNHANDLED_MINIFIER_NODE_TYPE : 16 , __EXTEND_POINT__ : 17 }, xc = {[ pA . EXPECTED_TOKEN ] : "Expected token: '{0}'" ,[ pA . INVALID_TOKEN_IN_PLACEHOLDER ] : "Invalid token in placeholder: '{0}'" ,[ pA . UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER ] : "Unterminated single quote in placeholder" ,[ pA . UNKNOWN_ESCAPE_SEQUENCE ] : "Unknown escape sequence: \\{0}" ,[ pA . INVALID_UNICODE_ESCAPE_SEQUENCE ] : "Invalid unicode escape sequence: {0}" ,[ pA . UNBALANCED_CLOSING_BRACE ] : "Unbalanced closing brace" ,[ pA . UNTERMINATED_CLOSING_BRACE ] : "Unterminated closing brace" ,[ pA . EMPTY_PLACEHOLDER ] : "Empty placeholder" ,[ pA . NOT_ALLOW_NEST_PLACEHOLDER ] : "Not allowed nest placeholder" ,[ pA . INVALID_LINKED_FORMAT ] : "Invalid linked format" ,[ pA . MUST_HAVE_MESSAGES_IN_PLURAL ] : "Plural must have messages" ,[ pA . UNEXPECTED_EMPTY_LINKED_MODIFIER ] : "Unexpected empty linked modifier" ,[ pA . UNEXPECTED_EMPTY_LINKED_KEY ] : "Unexpected empty linked key" ,[ pA . UNEXPECTED_LEXICAL_ANALYSIS ] : "Unexpected lexical analysis in token: '{0}'" ,[ pA . UNHANDLED_CODEGEN_NODE_TYPE ] : "unhandled codegen node type: '{0}'" ,[ pA . UNHANDLED_MINIFIER_NODE_TYPE ] : "unhandled mimifier node type: '{0}'" }; function Gi ( A , e , t = {}){ const { domain : i , messages : o , args : n } = t , r = IC (( o || xc )[ A ] || "" ,... n || []), g = new SyntaxError ( String ( r )); return g . code = A , e && ( g . location = e ), g . domain = i , g } function Jc ( A ){ throw A } const Bt = " " , Tc = "\r" , de = `
` , Hc = "\u2028" , Yc = "\u2029" ; function _c ( A ){ const e = A ; let t = 0 , i = 1 , o = 1 , n = 0 ; const r = N => e [ N ] === Tc && e [ N + 1 ] === de , g = N => e [ N ] === de , s = N => e [ N ] === Yc , a = N => e [ N ] === Hc , I = N => r ( N ) || g ( N ) || s ( N ) || a ( N ), l = ()=> t , C = ()=> i , Q = ()=> o , h = ()=> n , f = N => r ( N ) || s ( N ) || a ( N ) ? de : e [ N ], u = ()=> f ( t ), E = ()=> f ( t + n ); function D (){ return n = 0 , I ( t ) && ( i ++ , o = 0 ), r ( t ) && t ++ , t ++ , o ++ , e [ t ]} function c (){ return r ( t + n ) && n ++ , n ++ , e [ t + n ]} function d (){ t = 0 , i = 1 , o = 1 , n = 0 } function p ( N = 0 ){ n = N } function v (){ const N = t + n ; for (; N !== t ;) D (); n = 0 } return { index : l , line : C , column : Q , peekOffset : h , charAt : f , currentChar : u , currentPeek : E , next : D , peek : c , reset : d , resetPeek : p , skipToPeek : v }} const Rt = void 0 , Kc = "." , cs = "'" , Oc = "tokenizer" ; function Pc ( A , e = {}){ const t = e . location !==! 1 , i = _c ( A ), o = ()=> i . index (), n = ()=> Nc ( i . line (), i . column (), i . index ()), r = n (), g = o (), s = { currentType : 14 , offset : g , startLoc : r , endLoc : r , lastType : 14 , lastOffset : g , lastStartLoc : r , lastEndLoc : r , braceNest : 0 , inLinked :! 1 , text : "" }, a = ()=> s ,{ onError : I } = e ; function l ( m , y , M ,... O ){ const nA = a (); if ( y . column += M , y . offset += M , I ){ const Z = t ? rn ( nA . startLoc , y ) : null , U = Gi ( m , Z ,{ domain : Oc , args : O }); I ( U )}} function C ( m , y , M ){ m . endLoc = n (), m . currentType = y ; const O = { type : y }; return t && ( O . loc = rn ( m . startLoc , m . endLoc )), M != null && ( O . value = M ), O } const Q = m => C ( m , 14 ); function h ( m , y ){ return m . currentChar () === y ? ( m . next (), y ) : ( l ( pA . EXPECTED_TOKEN , n (), 0 , y ), "" )} function f ( m ){ let y = "" ; for (; m . currentPeek () === Bt || m . currentPeek () === de ;) y += m . currentPeek (), m . peek (); return y } function u ( m ){ const y = f ( m ); return m . skipToPeek (), y } function E ( m ){ if ( m === Rt ) return ! 1 ; const y = m . charCodeAt ( 0 ); return y >= 97 && y <= 122 || y >= 65 && y <= 90 || y === 95 } function D ( m ){ if ( m === Rt ) return ! 1 ; const y = m . charCodeAt ( 0 ); return y >= 48 && y <= 57 } function c ( m , y ){ const { currentType : M } = y ; if ( M !== 2 ) return ! 1 ; f ( m ); const O = E ( m . currentPeek ()); return m . resetPeek (), O } function d ( m , y ){ const { currentType : M } = y ; if ( M !== 2 ) return ! 1 ; f ( m ); const O = m . currentPeek () === "-" ? m . peek () : m . currentPeek (), nA = D ( O ); return m . resetPeek (), nA } function p ( m , y ){ const { currentType : M } = y ; if ( M !== 2 ) return ! 1 ; f ( m ); const O = m . currentPeek () === cs ; return m . resetPeek (), O } function v ( m , y ){ const { currentType : M } = y ; if ( M !== 8 ) return ! 1 ; f ( m ); const O = m . currentPeek () === "." ; return m . resetPeek (), O } function N ( m , y ){ const { currentType : M } = y ; if ( M !== 9 ) return ! 1 ; f ( m ); const O = E ( m . currentPeek ()); return m . resetPeek (), O } function G ( m , y ){ const { currentType : M } = y ; if ( ! ( M === 8 || M === 12 )) return ! 1 ; f ( m ); const O = m . currentPeek () === ":" ; return m . resetPeek (), O } function H ( m , y ){ const { currentType : M } = y ; if ( M !== 10 ) return ! 1 ; const O = ()=>{ const Z = m . currentPeek (); return Z === "{" ? E ( m . peek ()) : Z === "@" || Z === "%" || Z === "|" || Z === ":" || Z === "." || Z === Bt ||! Z ?! 1 : Z === de ? ( m . peek (), O ()) : L ( m , ! 1 )}, nA = O (); return m . resetPeek (), nA } function S ( m ){ f ( m ); const y = m . currentPeek () === "|" ; return m . resetPeek (), y } function b ( m ){ const y = f ( m ), M = m . currentPeek () === "%" && m . peek () === "{" ; return m . resetPeek (),{ isModulo : M , hasSpace : y . length > 0 }} function L ( m , y =! 0 ){ const M = ( nA =! 1 , Z = "" , U =! 1 )=>{ const P = m . currentPeek (); return P === "{" ? Z === "%" ?! 1 : nA : P === "@" ||! P ? Z === "%" ?! 0 : nA : P === "%" ? ( m . peek (), M ( nA , "%" , ! 0 )) : P === "|" ? Z === "%" || U ?! 0 :! ( Z === Bt || Z === de ) : P === Bt ? ( m . peek (), M ( ! 0 , Bt , U )) : P === de ? ( m . peek (), M ( ! 0 , de , U )) :! 0 }, O = M (); return y && m . resetPeek (), O } function QA ( m , y ){ const M = m . currentChar (); return M === Rt ? Rt : y ( M ) ? ( m . next (), M ) : null } function dA ( m ){ const y = m . charCodeAt ( 0 ); return y >= 97 && y <= 122 || y >= 65 && y <= 90 || y >= 48 && y <= 57 || y === 95 || y === 36 } function IA ( m ){ return QA ( m , dA )} function oA ( m ){ const y = m . charCodeAt ( 0 ); return y >= 97 && y <= 122 || y >= 65 && y <= 90 || y >= 48 && y <= 57 || y === 95 || y === 36 || y === 45 } function X ( m ){ return QA ( m , oA )} function tA ( m ){ const y = m . charCodeAt ( 0 ); return y >= 48 && y <= 57 } function fA ( m ){ return QA ( m , tA )} function _ ( m ){ const y = m . charCodeAt ( 0 ); return y >= 48 && y <= 57 || y >= 65 && y <= 70 || y >= 97 && y <= 102 } function W ( m ){ return QA ( m , _ )} function z ( m ){ let y = "" , M = "" ; for (; y = fA ( m );) M += y ; return M } function DA ( m ){ u ( m ); const y = m . currentChar (); return y !== "%" && l ( pA . EXPECTED_TOKEN , n (), 0 , y ), m . next (), "%" } function NA ( m ){ let y = "" ; for (;;){ const M = m . currentChar (); if ( M === "{" || M === "}" || M === "@" || M === "|" ||! M ) break ; if ( M === "%" ) if ( L ( m )) y += M , m . next (); else break ; else if ( M === Bt || M === de ) if ( L ( m )) y += M , m . next (); else { if ( S ( m )) break ; y += M , m . next ()} else y += M , m . next ()} return y } function oe ( m ){ u ( m ); let y = "" , M = "" ; for (; y =
`,n=e.needIndent?e.needIndent:t!=="arrow",r=A.helpers||[],g=eE(A,{filename:i,breakLineCode:o,needIndent:n});g.push(t==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),g.indent(n),r.length>0&&(g.push(` const { $ { lC ( r . map ( I => ` ${ I } : _ ${ I } ` ), ", " )} } = ctx `),g.newline()),g.push("return "),Fi(g,A),g.deindent(n),g.push("}"),delete A.helpers;const{code:s,map:a}=g.context();return{ast:A,code:s,map:a?a.toJSON():void 0}};function gE(A,e={}){const t=CC({},e),i=!!t.jit,o=!!t.minify,n=t.optimize==null?!0:t.optimize,g=jc(t).parse(A);return i?(n&&zc(g),o&&ci(g),{ast:g,code:""}):(Xc(g,t),rE(g,t))}/*!
2026-01-16 14:52:40 +08:00
* core-base v9.14.5
* (c) 2025 kazuya kawaguchi
* Released under the MIT License.
2026-01-26 09:33:58 +08:00
*/function sE(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(ft().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(ft().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(ft().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function st(A){return UA(A)&&Ig(A)===0&&(He(A,"b")||He(A,"body"))}const BC=["b","body"];function aE(A){return Wt(A,BC)}const QC=["c","cases"];function IE(A){return Wt(A,QC,[])}const cC=["s","static"];function CE(A){return Wt(A,cC)}const EC=["i","items"];function lE(A){return Wt(A,EC,[])}const uC=["t","type"];function Ig(A){return Wt(A,uC)}const hC=["v","value"];function bo(A,e){const t=Wt(A,hC);if(t!=null)return t;throw oo(e)}const fC=["m","modifier"];function BE(A){return Wt(A,fC)}const dC=["k","key"];function QE(A){const e=Wt(A,dC);if(e)return e;throw oo(6)}function Wt(A,e,t){for(let i=0;i<e.length;i++){const o=e[i];if(He(A,o)&&A[o]!=null)return A[o]}return t}const pC=[...BC,...QC,...cC,...EC,...dC,...fC,...hC,...uC];function oo(A){return new Error(` unhandled node type : $ { A } `)}const qt=[];qt[0]={w:[0],i:[3,0],"[":[4],o:[7]};qt[1]={w:[1],".":[2],"[":[4],o:[7]};qt[2]={w:[2],i:[3,0],0:[3,0]};qt[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};qt[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};qt[5]={"'":[4,0],o:8,l:[5,0]};qt[6]={'"':[4,0],o:8,l:[6,0]};const cE=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function EE(A){return cE.test(A)}function uE(A){const e=A.charCodeAt(0),t=A.charCodeAt(A.length-1);return e===t&&(e===34||e===39)?A.slice(1,-1):A}function hE(A){if(A==null)return"o";switch(A.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return A;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function fE(A){const e=A.trim();return A.charAt(0)==="0"&&isNaN(parseInt(A))?!1:EE(e)?uE(e):"*"+e}function dE(A){const e=[];let t=-1,i=0,o=0,n,r,g,s,a,I,l;const C=[];C[0]=()=>{r===void 0?r=g:r+=g},C[1]=()=>{r!==void 0&&(e.push(r),r=void 0)},C[2]=()=>{C[0](),o++},C[3]=()=>{if(o>0)o--,i=4,C[0]();else{if(o=0,r===void 0||(r=fE(r),r===!1))return!1;C[1]()}};function Q(){const h=A[t+1];if(i===5&&h==="'"||i===6&&h==='"')return t++,g="\\"+h,C[0](),!0}for(;i!==null;)if(t++,n=A[t],!(n==="\\"&&Q())){if(s=hE(n),l=qt[i],a=l[s]||l.l||8,a===8||(i=a[0],a[1]!==void 0&&(I=C[a[1]],I&&(g=n,I()===!1))))return;if(i===7)return e}}const hs=new Map;function pE(A,e){return UA(A)?A[e]:null}function mE(A,e){if(!UA(A))return null;let t=hs.get(e);if(t||(t=dE(e),t&&hs.set(e,t)),!t)return null;const i=t.length;let o=A,n=0;for(;n<i;){const r=t[n];if(pC.includes(r)&&st(o))return null;const g=o[r];if(g===void 0||PA(o))return null;o=g,n++}return o}const yE=A=>A,wE=A=>"",DE="text",kE=A=>A.length===0?"":bc(A),vE=Rc;function fs(A,e){return A=Math.abs(A),e===2?A?A>1?1:0:1:A?Math.min(A,2):0}function FE(A){const e=Ae(A.pluralIndex)?A.pluralIndex:-1;return A.named&&(Ae(A.named.count)||Ae(A.named.n))?Ae(A.named.count)?A.named.count:Ae(A.named.n)?A.named.n:e:e}function SE(A,e){e.count||(e.count=A),e.n||(e.n=A)}function RE(A={}){const e=A.locale,t=FE(A),i=UA(A.pluralRules)&&gA(e)&&PA(A.pluralRules[e])?A.pluralRules[e]:fs,o=UA(A.pluralRules)&&gA(e)&&PA(A.pluralRules[e])?fs:void 0,n=E=>E[i(t,E.length,o)],r=A.list||[],g=E=>r[E],s=A.named||HA();Ae(A.pluralIndex)&&SE(t,s);const a=E=>s[E];function I(E){const D=PA(A.messages)?A.messages(E):UA(A.messages)?A.messages[E]:!1;return D||(A.parent?A.parent.message(E):wE)}const l=E=>A.modifiers?A.modifiers[E]:yE,C=vA(A.processor)&&PA(A.processor.normalize)?A.processor.normalize:kE,Q=vA(A.processor)&&PA(A.processor.interpolate)?A.processor.interpolate:vE,h=vA(A.processor)&&gA(A.processor.type)?A.processor.type:DE,u={list:g,named:a,plural:n,linked:(E,...D)=>{const[c,d]=D;let p="text",v="";D.length===1?UA(c)?(v=c.modifier||v,p=c.type||p):gA(c)&&(v=c||v):D.length===2&&(gA(c)&&(v=c||v),gA(d)&&(p=d||p));const N=I(E)(u),G=p==="vnode"&&WA(N)&&v?N[0]:N;return v?l(v)(G,p):G},message:I,type:h,interpolate:Q,normalize:C,values:Be(HA(),r,s)};return u}let no=null;function bE(A){no=A}f
2026-01-16 14:52:40 +08:00
* vue-i18n v9.14.5
* (c) 2025 kazuya kawaguchi
* Released under the MIT License.
2026-01-26 09:33:58 +08:00
*/const iu="9.14.5";function ou(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(ft().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(ft().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(ft().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(ft().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(ft().__INTLIFY_PROD_DEVTOOLS__=!1)}const nu=ME.__EXTEND_POINT__,Qt=Fn(nu);Qt(),Qt(),Qt(),Qt(),Qt(),Qt(),Qt(),Qt(),Qt();const UC=Ye.__EXTEND_POINT__,we=Fn(UC),re={UNEXPECTED_RETURN_TYPE:UC,INVALID_ARGUMENT:we(),MUST_BE_CALL_SETUP_TOP:we(),NOT_INSTALLED:we(),NOT_AVAILABLE_IN_LEGACY_MODE:we(),REQUIRED_VALUE:we(),INVALID_VALUE:we(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:we(),NOT_INSTALLED_WITH_PROVIDE:we(),UNEXPECTED_ERROR:we(),NOT_COMPATIBLE_LEGACY_VUE_I18N:we(),BRIDGE_SUPPORT_VUE_2_ONLY:we(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:we(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:we(),__EXTEND_POINT__:we()};function Ie(A,...e){return Gi(A,null,void 0)}const Dr=Vt("__translateVNode"),kr=Vt("__datetimeParts"),vr=Vt("__numberParts"),MC=Vt("__setPluralRules"),xC=Vt("__injectWithOption"),Fr=Vt("__dispose");function ro(A){if(!UA(A)||st(A))return A;for(const e in A)if(He(A,e))if(!e.includes("."))UA(A[e])&&ro(A[e]);else{const t=e.split("."),i=t.length-1;let o=A,n=!1;for(let r=0;r<i;r++){if(t[r]==="__proto__")throw new Error(` unsafe key : $ { t [ r ]} `);if(t[r]in o||(o[t[r]]=HA()),!UA(o[t[r]])){n=!0;break}o=o[t[r]]}if(n||(st(o)?pC.includes(t[i])||delete A[e]:(o[t[i]]=A[e],delete A[e])),!st(o)){const r=o[t[i]];UA(r)&&ro(r)}}return A}function Rn(A,e){const{messages:t,__i18n:i,messageResolver:o,flatJson:n}=e,r=vA(t)?t:WA(i)?HA():{[A]:HA()};if(WA(i)&&i.forEach(g=>{if("locale"in g&&"resource"in g){const{locale:s,resource:a}=g;s?(r[s]=r[s]||HA(),Oo(a,r[s])):Oo(a,r)}else gA(g)&&Oo(JSON.parse(g),r)}),o==null&&n)for(const g in r)He(r,g)&&ro(r[g]);return r}function JC(A){return A.type}function TC(A,e,t){let i=UA(e.messages)?e.messages:HA();"__i18nGlobal"in t&&(i=Rn(A.locale.value,{messages:i,__i18n:t.__i18nGlobal}));const o=Object.keys(i);o.length&&o.forEach(n=>{A.mergeLocaleMessage(n,i[n])});{if(UA(e.datetimeFormats)){const n=Object.keys(e.datetimeFormats);n.length&&n.forEach(r=>{A.mergeDateTimeFormat(r,e.datetimeFormats[r])})}if(UA(e.numberFormats)){const n=Object.keys(e.numberFormats);n.length&&n.forEach(r=>{A.mergeNumberFormat(r,e.numberFormats[r])})}}}function Ls(A){return TA(fo,null,A,0)}const Us="__INTLIFY_META__",Ms=()=>[],ru=()=>!1;let xs=0;function Js(A){return(e,t,i,o)=>A(t,i,vi()||void 0,o)}const gu=()=>{const A=vi();let e=null;return A&&(e=JC(A)[Us])?{[Us]:e}:null};function Bg(A={},e){const{__root:t,__injectWithOption:i}=A,o=t===void 0,n=A.flatJson,r=nn?EA:tg,g=!!A.translateExistCompatible;let s=RA(A.inheritLocale)?A.inheritLocale:!0;const a=r(t&&s?t.locale.value:gA(A.locale)?A.locale:Si),I=r(t&&s?t.fallbackLocale.value:gA(A.fallbackLocale)||WA(A.fallbackLocale)||vA(A.fallbackLocale)||A.fallbackLocale===!1?A.fallbackLocale:a.value),l=r(Rn(a.value,A)),C=r(vA(A.datetimeFormats)?A.datetimeFormats:{[a.value]:{}}),Q=r(vA(A.numberFormats)?A.numberFormats:{[a.value]:{}});let h=t?t.missingWarn:RA(A.missingWarn)||Ot(A.missingWarn)?A.missingWarn:!0,f=t?t.fallbackWarn:RA(A.fallbackWarn)||Ot(A.fallbackWarn)?A.fallbackWarn:!0,u=t?t.fallbackRoot:RA(A.fallbackRoot)?A.fallbackRoot:!0,E=!!A.fallbackFormat,D=PA(A.missing)?A.missing:null,c=PA(A.missing)?Js(A.missing):null,d=PA(A.postTranslation)?A.postTranslation:null,p=t?t.warnHtmlMessage:RA(A.warnHtmlMessage)?A.warnHtmlMessage:!0,v=!!A.escapeParameter;const N=t?t.modifiers:vA(A.modifiers)?A.modifiers:{};let G=A.pluralRules||t&&t.pluralRules,H;H=(()=>{o&&Ds(null);const U={version:iu,locale:a.value,fallbackLocale:I.value,messages:l.value,modifiers:N,pluralRules:G,missing:c===null?void 0:c,missingWarn:h,fallbackWarn:f,fallbackFormat:E,unresolving:!0,postTranslation:d===null?void 0:d,warnHtmlMessage:p,escapeParameter:v,messageResolver:A.messageResolver,messageCompiler:A.messageCompiler,__meta:{framew
2026-01-16 14:52:40 +08:00
The new version uses file deduplication technology to save storage space.
2026-01-23 15:29:43 +08:00
Please re-upload custom emoji images.` , incompatibleEmojiData : "Incompatible emoji data detected, please reconfigure" }, kh = { authTokenMissing : "Authentication token not found" , checkingDeviceStatus : "Checking device status..." , deviceOfflineOrUnresponsive : "The device does not exist or is not online" , unableToGetDeviceStatus : "Unable to get device status" , initializingTransferService : "Initializing transfer service..." , initializeTransferFailed : "Failed to initialize transfer service: {error}" , uploadingFile : "Upload the file ..." , uploadFailed : "Upload file failed" , settingDeviceDownloadUrl : "Setting device download URL..." , setDownloadUrlFailed : "Failed to set download URL: {error}" , rebootingDevice : "Rebooting device..." , waitingForDeviceReboot : "Waiting for device to reboot..." , deviceRebootTimeout : "Device reboot timeout (60 seconds)" , deviceReady : "Device ready, please wait for program burning" , startingFileTransfer : "Starting file transfer..." , flashCompleted : "During program burning, please pay attention to the firmware burning status!" , onlineFlashFailed : "Online flashing failed: {error}" }, vh = { online : "Online" , offline : "Offline" , checking : "Checking..." , flashing : "Flashing..." , ready : "Ready" , chip : "Chip" , board : "Board" , flash : "Flash" , screen : "Screen" , signal : { unknown : "Unknown" , strong : "Strong" , medium : "Medium" , weak : "Weak" , none : "No Signal" }}, Fh = { title : "Step 1: Chip Model and Screen Configuration" , loadingFromDevice : "Loading hardware configuration from device..." , loadedFromDevice : "Hardware configuration automatically loaded from device" , manualConfig : "Please configure hardware parameters manually" , loadingTitle : "Loading Device Configuration..." , loadingDesc : "Reading chip model and screen resolution from device" , autoLoadedTitle : "Device Configuration Auto-loaded" , chipModel : "Chip Model" , screenWidth : "Screen Width" , screenHeight : "Screen Height" , colorFormat : "Color Format:" , manualEdit : "Manual Configuration" , collapseManual : "Collapse Manual Configuration" , manualConfigTitle : "Manual Hardware Configuration" , next : "Next" , selectChip : "Select Chip" , chipRequired : "Chip Model" , widthRequired : "Screen Width" , heightRequired : "Screen Height" , loadingError : "Loading configuration error" , deviceOffline : "Device not connected or offline" , chipModelError : "Unable to get chip model, please enter manually" , resolutionError : "Unable to get screen resolution, please enter manually" , timeoutError : "Configuration loading timeout, please enter manually" , manualConfigDesc : "Unable to auto-read device configuration" , manualConfigHint : "Device not connected or offline, please manually input hardware configuration" , manualConfigRequired : "Please manually input hardware configuration" , resolutionFormatError : "Screen resolution format error" }, Sh = { title : "Step 2: Theme Design" , description : "Configure wake word, font, emoji and background to customize your Xiaozhi AI theme." , previous : "Previous" , next : "Next" , tabs : { wakeword : "Wake Word Config" , font : "Font Config" , emoji : "Emoji Collection" , background : "Chat Background" }}, Rh = { title : "Step 3: Preview" , description : "Preview the effect of your custom configuration on the actual device." , devicePreview : "Device Preview (1:1 Pixel Ratio)" , previewSettings : "Preview Settings" , previewText : "Preview Text" , defaultPreviewText : "Hi, I'm your friend Xiaozhi!" , currentEmotion : "Current Emotion" , themeMode : "Theme Mode" , lightMode : "Light" , darkMode : "Dark" , configSummary : "Configuration Summary" , wakeword : "Wake Word:" , font : "Font:" , loading : "Loading..." , emotion : "Emotion:" , skin : "Skin:" , previous : "Previous" , generate : "Generate assets.bin" , emotions : { neutral : "Neutral" , happy : "Happy" , laughing : "Laughing" , funny : "Funny" , sad : "Sad" , angry : "Angry" , crying : "Crying" , loving : "Loving" , embarrassed : "Embarrassed" , surprised : "Surprised" , shocked : "Shocked" , thinking : "Thinking" , winking : "Winking" , cool : "Cool" , relaxed : "Relaxed" , delicious : "Delicious" , kissy : "Kiss" , confident : "Confident" , sleepy : "Sleepy" , silly : "Silly" , confused : "Confused" }, noEmotionConfigured : "No emotion configured" , fontLoading : "Font loading..." , configureEmojiFirst : "Please configure emoji package in theme design first" , customFont : "Custom Font {size}px" , customEmoji : "Custom Emoji {count} images" ,
2026-01-16 14:52:40 +08:00
新版本使用文件去重技术 , 可以节省存储空间 。
2026-01-26 09:33:58 +08:00
请重新上传自定义表情图片 。 `,incompatibleEmojiData:"检测到不兼容的表情数据,请重新配置"},Kh={authTokenMissing:"未找到认证令牌",checkingDeviceStatus:"检查设备状态...",deviceOfflineOrUnresponsive:"设备不存在或不在线",unableToGetDeviceStatus:"无法获取设备状态",initializingTransferService:"初始化传输服务...",initializeTransferFailed:"初始化传输服务失败: {error}",uploadingFile:"上传文件中...",uploadFailed:"上传文件失败",settingDeviceDownloadUrl:"设置设备下载URL...",setDownloadUrlFailed:"设置下载URL失败: {error}",rebootingDevice:"重启设备...",waitingForDeviceReboot:"等待设备重启...",deviceRebootTimeout:"等待设备重启超时(60秒)",deviceReady:"设备就绪,请等待程序烧录",startingFileTransfer:"开始传输文件...",flashCompleted:"程序烧录中,请留意固件的烧录状态!",onlineFlashFailed:"在线烧录失败: {error}"},Oh={online:"在线",offline:"离线",checking:"检查中...",flashing:"烧录中...",ready:"就绪",chip:"芯片",board:"开发板",flash:"Flash",screen:"屏幕",signal:{unknown:"未知",strong:"强",medium:"中等",weak:"弱",none:"无信号"}},Ph={title:"步骤 1: 芯片型号和屏幕配置",loadingFromDevice:"正在从设备读取硬件配置...",loadedFromDevice:"已从设备自动读取硬件配置",manualConfig:"请手动配置硬件参数",loadingTitle:"正在加载设备配置...",loadingDesc:"从设备读取芯片型号和屏幕分辨率",autoLoadedTitle:"设备配置已自动加载",chipModel:"芯片型号",screenWidth:"屏幕宽度",screenHeight:"屏幕高度",colorFormat:"颜色格式:",manualEdit:"手动修改配置",collapseManual:"收起手动配置",manualConfigTitle:"手动配置硬件参数",next:"下一步",selectChip:"请选择芯片",chipRequired:"芯片型号",widthRequired:"屏幕宽度",heightRequired:"屏幕高度",loadingError:"加载配置时发生错误",deviceOffline:"设备未连接或离线",chipModelError:"无法获取芯片型号,请手动输入",resolutionError:"无法获取屏幕分辨率,请手动输入",timeoutError:"加载设备配置超时,请手动输入",manualConfigDesc:"无法自动读取设备配置",manualConfigHint:"设备未连接或离线,请手动输入硬件配置",manualConfigRequired:"请手动输入硬件配置",resolutionFormatError:"屏幕分辨率格式错误"},Vh={title:"步骤 2: 主题设计",description:"配置唤醒词、字体、表情和背景来自定义您的小智AI主题。",previous:"上一步",next:"下一步",tabs:{wakeword:"唤醒词配置",font:"字体配置",emoji:"表情集合",background:"聊天背景"}},Wh={title:"步骤 3: 效果预览",description:"预览您的自定义配置在实际设备上的效果。",devicePreview:"设备预览 (1:1 像素比例)",previewSettings:"预览设置",previewText:"预览文字",defaultPreviewText:"你好,我是你的朋友小智!",currentEmotion:"当前表情",themeMode:"主题模式",lightMode:"浅色",darkMode:"深色",configSummary:"配置摘要",wakeword:"唤醒词:",font:"字体:",loading:"加载中...",emotion:"表情:",skin:"皮肤:",previous:"上一步",generate:"生成 assets.bin",emotions:{neutral:"默认",happy:"开心",laughing:"大笑",funny:"搞笑",sad:"伤心",angry:"生气",crying:"哭泣",loving:"喜爱",embarrassed:"尴尬",surprised:"惊讶",shocked:"震惊",thinking:"思考",winking:"眨眼",cool:"酷炫",relaxed:"放松",delicious:"美味",kissy:"飞吻",confident:"自信",sleepy:"困倦",silly:"调皮",confused:"困惑"},noEmotionConfigured:"未配置表情",fontLoading:"字体加载中...",configureEmojiFirst:"请先在主题设计中配置表情包",customFont:"自定义字体 {size}px",customEmoji:"自定义表情 {count}张",notConfigured:"未配置",skinLight:"浅色{type}",skinDark:"深色{type}",hideSubtitle:"隐藏字幕:",image:"图片",color:"颜色"},qh={title:"聊天背景配置",description:"配置浅色模式和深色模式的聊天背景,支持纯色或自定义图片。",lightMode:"浅色模式背景",darkMode:"�
2026-01-16 14:52:40 +08:00
新版本使用檔案去重技術,可以節省儲存空間。
2026-01-26 09:33:58 +08:00
請重新上傳自訂表情圖片。` , incompatibleEmojiData : "檢測到不相容的表情資料,請重新配置" }, af = { authTokenMissing : "未找到認證令牌" , checkingDeviceStatus : "檢查設備狀態..." , deviceOfflineOrUnresponsive : "設備不存在或不線上" , unableToGetDeviceStatus : "無法獲取設備狀態" , initializingTransferService : "初始化傳輸服務..." , initializeTransferFailed : "初始化傳輸服務失敗: {error}" , uploadingFile : "上傳文件中..." , uploadFailed : "上傳文件失敗" , settingDeviceDownloadUrl : "設置設備下載URL..." , setDownloadUrlFailed : "設置下載URL失敗: {error}" , rebootingDevice : "重啟設備..." , waitingForDeviceReboot : "等待設備重啟..." , deviceRebootTimeout : "等待設備重啟超時(60秒)" , deviceReady : "设备就绪,请等待程序烧录" , startingFileTransfer : "開始檔案傳輸..." , flashCompleted : "程式燒錄中,請留意固件的燒錄狀態!" , onlineFlashFailed : "線上燒錄失敗: {error}" }, If = { online : "線上" , offline : "離線" , checking : "檢查中..." , flashing : "燒錄中..." , ready : "就緒" , chip : "晶片" , board : "開發板" , flash : "Flash" , screen : "螢幕" , signal : { unknown : "未知" , strong : "強" , medium : "中等" , weak : "弱" , none : "無訊號" }}, Cf = { title : "步驟 1: 晶片型號和螢幕配置" , loadingFromDevice : "正在從設備讀取硬體配置..." , loadedFromDevice : "已從設備自動讀取硬體配置" , manualConfig : "請手動配置硬體參數" , loadingTitle : "正在載入設備配置..." , loadingDesc : "從設備讀取晶片型號和螢幕解析度" , autoLoadedTitle : "設備配置已自動載入" , chipModel : "晶片型號" , screenWidth : "螢幕寬度" , screenHeight : "螢幕高度" , colorFormat : "顏色格式:" , manualEdit : "手動修改配置" , collapseManual : "收起手動配置" , manualConfigTitle : "手動配置硬體參數" , next : "下一步" , selectChip : "請選擇晶片" , chipRequired : "晶片型號" , widthRequired : "螢幕寬度" , heightRequired : "螢幕高度" , loadingError : "載入配置時發生錯誤" , deviceOffline : "設備未連接或離線" , chipModelError : "無法獲取晶片型號,請手動輸入" , resolutionError : "無法獲取螢幕解析度,請手動輸入" , timeoutError : "載入設備配置超時,請手動輸入" , manualConfigDesc : "無法自動讀取設備配置" , manualConfigHint : "設備未連接或離線,請手動輸入硬體配置" , manualConfigRequired : "請手動輸入硬體配置" , resolutionFormatError : "螢幕解析度格式錯誤" }, lf = { title : "步驟 2: 主題設計" , description : "配置喚醒詞、字體、表情和背景來自訂您的小智AI主題。" , previous : "上一步" , next : "下一步" , tabs : { wakeword : "喚醒詞配置" , font : "字體配置" , emoji : "表情集合" , background : "聊天背景" }}, Bf = { title : "步驟 3: 效果預覽" , description : "預覽您的自訂配置在實際設備上的效果。" , devicePreview : "設備預覽 (1:1 像素比例)" , previewSettings : "預覽設定" , previewText : "預覽文字" , defaultPreviewText : "你好,我是你的朋友小智!" , currentEmotion : "當前表情" , themeMode : "主題模式" , lightMode : "淺色" , darkMode : "深色" , configSummary : "配置摘要" , wakeword : "喚醒詞:" , font : "字體:" , loading : "載入中..." , emotion : "表情:" , skin : "皮膚:" , previous : "上一步" , generate : "生成 assets.bin" , emotions : { neutral : "預設" , happy : "開心" , laughing : "大笑" , funny : "搞笑" , sad : "傷心" , angry : "生氣" , crying : "哭泣" , loving : "喜愛" , embarrassed : "尷尬" , surprised : "驚訝" , shocked : "震驚" , thinking : "思考" , winking : "眨眼" , cool : "酷炫" , relaxed : "放鬆" , delicious : "美味" , kissy : "飛吻" , confident : "自信" , sleepy : "睏倦" , silly : "調皮" , confused : "困惑" }, noEmotionConfigured : "未配置表情" , fontLoading : "字體載入中..." , configureEmojiFirst : "請先在主題設計中配置表情包" , customFont : "自訂字體 {size}px" , customEmoji : "自訂表情 {count}張" , notConfigured : "未配置" , skinLight : "淺色{type}" , skinDark : "深色{type}" , hideSubtitle : "隱藏字幕:" , image : "圖片" , color : "顏色" }, Qf = { title : "聊天背景配置" , description : "配置淺色模式和深色模式的聊天背景,支援純色或自訂圖片。" , lightMode : "淺色模式背景" , darkMode : "深色模式背景"
2026-01-16 14:52:40 +08:00
新しいバージョンはファイル重複除去技術を使用してストレージスペースを節約します 。
2026-01-23 15:29:43 +08:00
カスタム絵文字画像を再アップロードしてください 。 `,incompatibleEmojiData:"互換性のない絵文字データを検出しました、再設定してください"},vf={authTokenMissing:"認証トークンが見つかりません",checkingDeviceStatus:"デバイスの状態を確認中...",deviceOfflineOrUnresponsive:"デバイスが存在しないか、オンラインではありません",unableToGetDeviceStatus:"デバイスの状態を取得できません",initializingTransferService:"転送サービスを初期化中...",initializeTransferFailed:"転送サービスの初期化に失敗しました: {error}",uploadingFile:"ファイルをアップロード中...",uploadFailed:"ファイルのアップロードに失敗しました",settingDeviceDownloadUrl:"デバイスダウンロードURLを設定中...",setDownloadUrlFailed:"ダウンロードURLの設定に失敗しました: {error}",rebootingDevice:"デバイスを再起動中...",waitingForDeviceReboot:"デバイスの再起動を待機中...",deviceRebootTimeout:"デバイスの再起動タイムアウト(60秒)",deviceReady:"デバイスが準備できました。プログラムの書き込みをお待ちください",startingFileTransfer:"ファイル転送を開始中...",flashCompleted:"プログラムの書き込み中、ファームウェアの書き込み状態に注意してください!",onlineFlashFailed:"オンライン書き込みに失敗しました: {error}"},Ff={online:"オンライン",offline:"オフライン",checking:"確認中...",flashing:"書き込み中...",ready:"準備完了",chip:"チップ",board:"ボード",flash:"Flash",screen:"画面",signal:{unknown:"不明",strong:"強",medium:"中",weak:"弱",none:"信号なし"}},Sf={title:"ステップ1: チップモデルと画面設定",loadingFromDevice:"デバイスからハードウェア設定を読み込み中...",loadedFromDevice:"デバイスからハードウェア設定が自動読み込みされました",manualConfig:"ハードウェアパラメータを手動で設定してください",loadingTitle:"デバイス設定を読み込み中...",loadingDesc:"デバイスからチップモデルと画面解像度を読み取り中",autoLoadedTitle:"デバイス設定が自動読み込みされました",chipModel:"チップモデル",screenWidth:"画面幅",screenHeight:"画面高",colorFormat:"色形式:",manualEdit:"手動設定",collapseManual:"手動設定を折りたたむ",manualConfigTitle:"手動ハードウェア設定",next:"次へ",selectChip:"チップを選択",chipRequired:"チップモデル",widthRequired:"画面幅",heightRequired:"画面高",loadingError:"設定読み込みエラー",deviceOffline:"デバイスが接続されていないかオフラインです",chipModelError:"チップモデルを取得できません、手動で入力してください",resolutionError:"画面解像度を取得できません、手動で入力してください",timeoutError:"設定読み込みタイムアウト、手動で入力してください",manualConfigDesc:"デバイスの設定を自動読み取りできません",manualConfigHint:"デバイスが接続されていないかオフラインです、ハードウェア設定を手動で入力してください",manualConfigRequired:"ハードウェア設定を手動で入力してください",resolutionFormatError:"画面解像度形式エラー"},Rf={title:"ステップ2: テーマデザイン",description:"ウェイクワード、フォント、絵文字、背景を設定して、小智AIテーマをカスタマイズします。",previous:"前へ",next:"次へ",tabs:{wakeword:"ウェイクワード設定",font:"フォント設定",emoji:"絵文字コレクション",background:"チャット背景"}},bf={title:"ステップ3: プレビュー",description:"実際のデバイスでのカスタム設定の効果をプレビューします。",devicePreview:"デバイスプレビュー(1:1ピクセル比)",previewSettings:"プレビュー設定",previewText:"プレビューテキスト",def
2026-01-16 14:52:40 +08:00
Phiên bản mới sử dụng công nghệ loại bỏ trùng lặp tệp để tiết kiệm không gian lưu trữ.
2026-01-26 09:33:58 +08:00
Vui lòng tải lại hình ảnh biểu tượng cảm xúc tùy chỉnh.` , incompatibleEmojiData : "Phát hiện dữ liệu biểu tượng cảm xúc không tương thích, vui lòng cấu hình lại" }, Pf = { authTokenMissing : "Không tìm thấy mã thông báo xác thực" , checkingDeviceStatus : "Đang kiểm tra trạng thái thiết bị..." , deviceOfflineOrUnresponsive : "Thiết bị không tồn tại hoặc không trực tuyến" , unableToGetDeviceStatus : "Không thể lấy trạng thái thiết bị" , initializingTransferService : "Đang khởi tạo dịch vụ truyền tải..." , initializeTransferFailed : "Khởi tạo dịch vụ truyền tải thất bại: {error}" , uploadingFile : "Tải lên tập tin. ....." , uploadFailed : "Tải lên tập tin không thành công" , settingDeviceDownloadUrl : "Đang thiết lập URL tải xuống thiết bị..." , setDownloadUrlFailed : "Thiết lập URL tải xuống thất bại: {error}" , rebootingDevice : "Đang khởi động lại thiết bị..." , waitingForDeviceReboot : "Đang chờ thiết bị khởi động lại..." , deviceRebootTimeout : "Hết thời gian chờ thiết bị khởi động lại (60 giây)" , deviceReady : "Thiết bị đã sẵn sàng, vui lòng chờ chương trình ghi" , startingFileTransfer : "Đang bắt đầu truyền tải tệp..." , flashCompleted : "Trong quá trình ghi âm chương trình, xin lưu ý trạng thái ghi âm của phần cố định!" , onlineFlashFailed : "Flash trực tuyến thất bại: {error}" }, Vf = { online : "Trực tuyến" , offline : "Ngoại tuyến" , checking : "Đang kiểm tra..." , flashing : "Đang flash..." , ready : "Sẵn sàng" , chip : "Chip" , board : "Bo mạch" , flash : "Flash" , screen : "Màn hình" , signal : { unknown : "Không xác định" , strong : "Mạnh" , medium : "Trung bình" , weak : "Yếu" , none : "Không có tín hiệu" }}, Wf = { title : "Bước 1: Cấu hình mô hình chip và màn hình" , loadingFromDevice : "Đang tải cấu hình phần cứng từ thiết bị..." , loadedFromDevice : "Cấu hình phần cứng được tải tự động từ thiết bị" , manualConfig : "Vui lòng cấu hình các thông số phần cứng theo cách thủ công" , loadingTitle : "Đang tải cấu hình thiết bị..." , loadingDesc : "Đang đọc mô hình chip và độ phân giải màn hình từ thiết bị" , autoLoadedTitle : "Cấu hình thiết bị được tải tự động" , chipModel : "Mô hình chip" , screenWidth : "Chiều rộng màn hình" , screenHeight : "Chiều cao màn hình" , colorFormat : "Định dạng màu:" , manualEdit : "Cấu hình thủ công" , collapseManual : "Thu gọn cấu hình thủ công" , manualConfigTitle : "Cấu hình phần cứng thủ công" , next : "Tiếp theo" , selectChip : "Chọn chip" , chipRequired : "Mô hình chip" , widthRequired : "Chiều rộng màn hình" , heightRequired : "Chiều cao màn hình" , loadingError : "Lỗi tải cấu hình" , deviceOffline : "Thiết bị chưa kết nối hoặc ngoại tuyến" , chipModelError : "Không thể lấy mô hình chip, vui lòng nhập thủ công" , resolutionError : "Không thể lấy độ phân giải màn hình, vui lòng nhập thủ công" , timeoutError : "Hết thời gian tải cấu hình, vui lòng nhập thủ công" , manualConfigDesc : "Không thể tự động đọc cấu hình thiết bị" , manualConfigHint : "Thiết bị chưa kết nối hoặc ngoại tuyến, vui lòng nhập cấu hình phần cứng thủ công" , manualConfigRequired : "Vui lòng nhập cấu hình phần cứng thủ công" , resolutionFormatError : "Lỗi định dạng độ phân giải màn hình" }, qf = { title : "Bước 2: Thiết kế chủ đề" , description : "Cấu hình từ đánh thức, phông chữ, biểu tượng cảm xúc và nền để tùy chỉnh chủ đề Xiaozhi AI của bạn." , previous : "Trước đó" , next : "Tiếp theo" , tabs : { wakeword : "Cấu hình từ đánh thức" , font : "Cấu hình phông chữ" , emoji : "Bộ sưu tập biểu tượng cảm xúc" , background : "Nền trò chuyện" }}, jf = { title : "Bước 3: Xem trước" , description : "Xem trước hiệu ứng của cấu hình tùy chỉnh trên thiết bị thực tế." , devicePreview : "Xem trư�
2026-01-16 14:52:40 +08:00
@font-face {
font-family: '${L}';
2026-01-23 17:07:23 +08:00
src: url('${QA}') format('truetype');
2026-01-16 14:52:40 +08:00
font-display: swap;
}
2026-01-23 17:07:23 +08:00
`,document.head.appendChild(dA),await document.fonts.load(`16px " $ { L } "`),g.value=L,r.value=!0}else if(t.config.theme.font.custom.file)try{const b=t.config.theme.font.custom.file;if(!b||typeof b!=" object "||!b.size)throw new Error(" 字体文件对象无效 ");const L=" CustomFontPreview ",QA=URL.createObjectURL(b),dA=document.createElement(" style ");dA.setAttribute(" data - font - preview "," true "),dA.textContent=`
2026-01-16 14:52:40 +08:00
@font-face {
font-family: '${L}';
2026-01-23 17:07:23 +08:00
src: url('${QA}');
2026-01-16 14:52:40 +08:00
font-display: swap;
}
2026-01-26 09:33:58 +08:00
`,document.head.appendChild(dA),await document.fonts.load(`16px " $ { L } "`),g.value=L,r.value=!0}catch(b){console.warn(" 自定义字体预览加载失败 : ",b),g.value=" Arial , sans - serif ",r.value=!0}else g.value=" system - ui ",r.value=!0}catch(b){console.warn(" Font loading failed : ",b),g.value=" system - ui ",r.value=!0}},u=()=>r.value&&g.value?`" $ { g . value } ", " PingFang SC ", " Hiragino Sans GB ", " Microsoft YaHei ", sans-serif`:'" PingFang SC ", " Hiragino Sans GB ", " Microsoft YaHei ", sans-serif',E=S=>{if(t.config.theme.emoji.type===" preset ")return`./static/twemoji${t.config.theme.emoji.preset===" twemoji64 "?" 64 ":" 32 "}/${S}.png`;if(t.config.theme.emoji.type===" custom "&&t.config.theme.emoji.custom.images[S])try{const b=t.config.theme.emoji.custom.images[S];if(b&&typeof b==" object "&&b.size)return URL.createObjectURL(b)}catch(b){console.warn(`表情图片预览加载失败 (${S}):`,b)}return null},D=S=>{const b=s.value.find(L=>L.key===S);return b?b.emoji:" 😶 "},c=()=>{if(t.config.theme.emoji.type===" preset ")return(t.config.theme.emoji.preset===" twemoji64 "?64:32)+16;if(t.config.theme.emoji.custom.size){const S=Math.min(t.config.theme.emoji.custom.size.width,t.config.theme.emoji.custom.size.height);return Math.min(S+16,64)}return 48},d=()=>t.config.theme.emoji.type===" preset "?t.config.theme.emoji.preset===" twemoji64 "?64:32:t.config.theme.emoji.custom.size?Math.min(t.config.theme.emoji.custom.size.width,t.config.theme.emoji.custom.size.height,48):32,p=S=>{o.value=S},v=()=>{const S=t.config.theme.wakeword;return!S||S.type===" none "?e(" wakewordConfig . noWakeword "):S.type===" preset "?{wn9s_hilexin:" Hi , 乐鑫 ",wn9s_hiesp:" Hi , ESP ",wn9s_nihaoxiaozhi:" 你好小智 ",wn9_nihaoxiaozhi_tts:" 你好小智 ",wn9_alexa:" Alexa ",wn9_jarvis_tts:" Jarvis "}[S.preset]||S.preset:S.type===" custom "?S.custom.name||e(" wakewordConfig . customWakeword "):e(" wakewordConfig . noWakeword ")},N=()=>{if(t.config.theme.font.type===" preset ")return e(" fontConfig . presetFontNames . "+t.config.theme.font.preset)||t.config.theme.font.preset;{const S=t.config.theme.font.custom;return e(" generateSummary . customFont ",{size:S.size})}},G=()=>{if(t.config.theme.emoji.type===" preset "&&t.config.theme.emoji.preset)return t.config.theme.emoji.preset===" twemoji64 "?" Twemoji 64 × 64 ":" Twemoji 32 × 32 ";if(t.config.theme.emoji.type===" custom "){const S=Object.keys(t.config.theme.emoji.custom.images).length;return e(" generateSummary . customEmoji ",{count:S})}else return t.config.theme.emoji.type===" none "?e(" emojiConfig . noEmojiPack "):e(" generateSummary . notConfigured ")},H=()=>{const S=t.config.theme.skin.light.backgroundType===" image "?e(" generateSummary . image "):e(" generateSummary . color "),b=t.config.theme.skin.dark.backgroundType===" image "?e(" generateSummary . image "):e(" generateSummary . color ");return e(" generateSummary . skinLight ",{type:S})+" / "+e(" generateSummary . skinDark ",{type:b})};return ae(()=>t.config.theme.font,()=>{f()},{deep:!0}),Ft(async()=>{a.value.length>0?o.value=a.value[0].key:o.value="",await f()}),Ci(()=>{document.querySelectorAll(" style [ data - font - preview ] ").forEach(b=>b.remove())}),(S,b)=>(T(),K(" div ",Dy,[B(" div ",null,[B(" h2 ",ky,F(S.$t(" generateSummary . title ")),1),B(" p ",vy,F(S.$t(" generateSummary . description ")),1)]),B(" div ",Fy,[B(" div ",Sy,[B(" h3 ",Ry,F(S.$t(" generateSummary . devicePreview ")),1),B(" div ",by,[B(" div ",Ny,[B(" div ",Gy,[B(" div ",Ly,[B(" div ",{style:VA(l()),class:" relative rounded - lg overflow - hidden border - 2 border - gray - 700 flex flex - col items - center justify - center "},[B(" div ",{style:VA(C()),class:" absolute inset - 0 "},null,4),B(" div ",Uy,[B(" div ",My,[o.value&&a.value.length>0?(T(),K(" div ",xy,[I.value?(T(),K(" img ",{key:0,src:I.value,alt:o.value,style:VA(Q()),class:" emoji - image "},null,12,Jy)):(T(),K(" div ",{key:1,style:VA(Q()),class:" emoji - fallback bg - gray - 200 rounded - full flex items - center justify - center text - 2 xl "},F(D(o.value)),5))])):(T(),K(" div ",Ty,[B(" div ",{style:VA(Q()),class:" emoji - placeholder flex items - center justify - center text - gray - 400 border - 2 border - dashed border - gray - 300 rounded bg - gray - 50 "},[B(" div ",Hy,[B(" div ",Yy,F(A.config.theme.emoji.type===" none "?" 📦 ":" 😕 "),1),B(" div ",_y,F(A.co
`).join("");return this.charsetCache.set(e,r),r}catch(o){return console.error(`Failed to load charset ${e}:`,o),null}}getCharsetContent(e){const t={};return(e===" latin "||e===" deepseek "||e===" gb2312 ")&&this.charsetCache.has(e)?this.charsetCache.get(e):e===" basic "?this.getCharsetContent(" latin "):t[e]||""}async getCharsetContentAsync(e){if(e===" basic "&&(e=" latin "),this.charsetCache.has(e))return this.charsetCache.get(e);if(e===" latin "||e===" deepseek "||e===" gb2312 "||e===" qwen "){const t=await this.loadCharsetFromFile(e);if(t)return t}return this.getCharsetContent(e)}parseUnicodeRange(e){const t=[],i=e.split(" , ");for(const o of i){const n=o.trim();if(n)if(n.includes(" - ")){const[r,g]=n.split(" - "),s=this.parseHexOrDec(r),a=this.parseHexOrDec(g);s!==null&&a!==null&&t.push(s,a,s)}else{const r=this.parseHexOrDec(n);r!==null&&t.push(r,r,r)}}return t}parseHexOrDec(e){const t=e.trim();if(t.startsWith(" 0 x ")||t.startsWith(" 0 X ")){const o=parseInt(t,16);return isNaN(o)?null:o}const i=parseInt(t,10);return isNaN(i)?null:i}async estimateSizeAsync(e){const{fontSize:t=20,bpp:i=4,charset:o=" latin ",symbols:n="",range:r=""}=e;let g=n.length;if(o===" full ")g=65536;else if(o&&o!==" custom "){const I=await this.getCharsetContentAsync(o);g+=I.length}if(r){const I=this.parseUnicodeRange(r);for(let l=0;l<I.length;l+=3)g+=I[l+1]-I[l]+1}o!==" full "&&(g=Math.min(g,g*.8));const s=Math.ceil(t*t*i/8)+40,a=g*s+2048;return{characterCount:Math.floor(g),avgBytesPerChar:s,estimatedSize:a,formattedSize:this.formatBytes(a)}}estimateSize(e){const{fontSize:t=20,bpp:i=4,charset:o=" latin ",symbols:n="",range:r=""}=e;let g=n.length;if(o===" full ")g=65536;else if(o&&o!==" custom "){const I=this.getCharsetContent(o);g+=I.length}if(r){const I=this.parseUnicodeRange(r);for(let l=0;l<I.length;l+=3)g+=I[l+1]-I[l]+1}o!==" full "&&(g=Math.min(g,g*.8));const s=Math.ceil(t*t*i/8)+40,a=g*s+2048;return{characterCount:Math.floor(g),avgBytesPerChar:s,estimatedSize:a,formattedSize:this.formatBytes(a)}}formatBytes(e){if(e===0)return" 0 Bytes ";const t=1024,i=[" Bytes "," KB "," MB "," GB "],o=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,o)).toFixed(2))+" "+i[o]}cleanup(){this.initialized=!1}}const rS=new nS;class gS{constructor(){this.models=new Map}addModelFile(e,t,i){this.models.has(e)||this.models.set(e,new Map),this.models.get(e).set(t,i)}async loadModelFromShare(e){try{let t=[],i="";if(e.startsWith(" wn9 "))t=[" _MODEL_INFO_ "," wn9_data "," wn9_index "],i=`./static/wakenet_model/${e}/`;else if(e.startsWith(" mn6 ")||e.startsWith(" mn7 "))t=[" _MODEL_INFO_ ",`${e.substring(0,3)}_data`,`${e.substring(0,3)}_index`," vocab "],i=`./static/multinet_model/${e}/`,await this.loadFSTModel();else throw new Error(`Unknown model type: ${e}`);let o=0;for(const n of t)try{const r=await fetch(`${i}${n}`);if(r.ok){const g=await r.arrayBuffer();this.addModelFile(e,n,g),o++}else console.warn(`无法加载文件: ${n}, status: ${r.status}`)}catch(r){console.warn(`加载文件失败: ${n}`,r)}return o===t.length}catch(t){return console.error(`加载模型失败: ${e}`,t),!1}}async loadFSTModel(){try{const e=" fst ";if(this.models.has(e))return!0;const t=[" commands_cn . txt "," commands_en . txt "],i=" . / static / multinet_model / fst / ";let o=0;for(const n of t)try{const r=await fetch(`${i}${n}`);if(r.ok){const g=await r.arrayBuffer();this.addModelFile(e,n,g),o++}else console.warn(`无法加载 FST 文件: ${n}, status: ${r.status}`)}catch(r){console.warn(`加载 FST 文件失败: ${n}`,r)}return o>0}catch(e){return console.error(" 加载 FST 模型失败 ",e),!1}}packString(e,t){const i=new Uint8Array(t),o=Math.min(e.length,t);for(let n=0;n<o;n++)i[n]=e.charCodeAt(n)&255;return i}packUint32(e){const t=new Uint8Array(4);return t[0]=e&255,t[1]=e>>8&255,t[2]=e>>16&255,t[3]=e>>24&255,t}packModels(){if(this.models.size===0)throw new Error(" 没有模型数据可打包 ");let e=0;const t=[];for(const[a,I]of Array.from(this.models.entries()).sort((l,C)=>l[0].localeCompare(C[0]))){e+=I.size;const l=Array.from(I.entries()).sort((C,Q)=>C[0].localeCompare(Q[0]));t.push({name:a,files:l})}const i=this.models.size;let o=4;for(const a of t)o+=3
Check: https://github.com/renzhezhilu/gifsicle-wasm-browser`},testType(A){return A instanceof Element?" element ":Object.prototype.toString.call(A).replace(/\[object\s(.+)\]/," $1 ").toLowerCase()},async textToUrl(A){return this.worker()},loadCommand(A){var e=this.testType(A);if(A.length===0)throw" < command > the content can not be blank "+this.errorLink();if(e===" array ")return A.map(t=>t.replace(/\n/gi," "));throw" < command > types : "+e+" , must be an array "+this.errorLink()},loadOne(A){return new Promise(async(e,t)=>{var i=this.testType(A);if([" string "].includes(i))fetch(A).then(o=>{if(o.status!==200)throw" < "+A+" > Url error !!! "+this.errorLink();return o.arrayBuffer()}).then(o=>e(o));else if([" blob "," file "].includes(i))new Response(A).arrayBuffer().then(o=>e(o));else{if(![" arraybuffer "].includes(i))throw" < input . file > types : "+i+" , only supports Url , blob , file , arraybuffer "+this.errorLink();e(A)}})},loadFile(A){return new Promise(async(e,t)=>{var i=this.testType(A);if(i!==" array ")throw" < input > types : "+i+" , only supports Array "+this.errorLink();if(A.length===0)throw" < input > the content can not be blank "+this.errorLink();i=A.map(o=>this.loadOne(o.file)),Promise.all(i).then(function(o){var n=A.map((r,g)=>(r.file=o[g],r));e(n)}).catch(function(o){})})},loadFolder(A){return new Promise(async(e,t)=>{var i=this.testType(A);if(![" array "].includes(i))throw" < folder > types : "+i+" , only supports Array "+this.errorLink();e(A)})}},run(A={}){return new Promise(async(e,t)=>{let{input:i=[],command:o="",folder:n=[],isStrict:r=!1,start:g=Q=>{}}=A;var s=await this.tool.textToUrl();let a=new Worker(s);var I=this.tool.loadCommand(o),l=await this.tool.loadFile(i),C=(g(l),await this.tool.loadFolder(n));a.postMessage({data:l,command:I,folder:C,isStrict:r}),a.onmessage=async function(Q){if(!Q.data||typeof Q.data==" string ")return a.terminate(),void t(Q.data);let h=[];for(let u=0;u<Q.data.length;u++){const E=Q.data[u];var f;E.name.includes(" . txt ")?(f=new File([E.file],E.name,{type:" text / plain "}),h.push(f)):(f=new File([E.file],E.name,{type:" image / gif "}),h.push(f))}a.terminate(),e(h)},a.onerror=function(Q){console.error(Q),a.terminate(),e(null)}})}};class aS{constructor(e={}){this.quality=e.quality||10,this.debug=e.debug||!1,this.scalingMode=e.scalingMode||" auto ",this.optimize=e.optimize!==!1,this.optimizationLevel=e.optimizationLevel||2}async scaleGif(e,t={}){const{maxWidth:i,maxHeight:o,keepAspectRatio:n=!0,optimize:r=this.optimize,lossy:g=this.quality,loopCount:s=0}=t;if(!i&&!o)throw new Error(" 必须指定 maxWidth 或 maxHeight ");try{let a;n?a=`--resize-fit ${i||" _ "}x${o||" _ "}`:a=`--resize ${i||" _ "}x${o||" _ "}!`;const I=[];I.push(" - U "),I.push(a),s>=0&&I.push(`--loopcount=${s}`),g&&g>0&&I.push(`--lossy=${g}`),r&&I.push(`-O${this.optimizationLevel}`),I.push(" 1. gif "),I.push(" - o / out / output . gif ");const l=I.join(" ");this.debug&&(console.log(" GIF 缩放命令 : ",l),console.log(" 输入文件大小 : ",e.size||" 未知 "));const C=await Jo.run({input:[{file:e,name:" 1. gif "}],command:[l]});if(!C||C.length===0)throw new Error(" gifsicle 处理失败 , 未返回结果 ");const Q=C[0];if(this.debug&&(console.log(" GIF 缩放完成 "),console.log(" 输出文件大小 : ",Q.size),e.size)){const h=((1-Q.size/e.size)*100).toFixed(2);console.log(`压缩率: ${h}%`)}return new Blob([Q],{type:" image / gif "})}catch(a){throw console.error(" GIF 缩放失败 : ",a),new Error(`GIF 缩放失败: ${a.message}`)}}async scaleGifBatch(e){const t=[];for(let i=0;i<e.length;i++){const{file:o,options:n}=e[i];try{const r=await this.scaleGif(o,n);t.push(r)}catch(r){console.error(`批量缩放第 ${i+1} 个文件失败:`,r),t.push(null)}}return t}async optimizeGif(e,t={}){const{lossy:i=this.quality,level:o=this.optimizationLevel,loopCount:n=0}=t;try{const r=[" - U "];n>=0&&r.push(`--loopcount=${n}`),i&&i>0&&r.push(`--lossy=${i}`),r.push(`-O${o}`),r.push(" 1. gif "),r.push(" - o / out / output . gif ");const g=r.join(" ");this.debug&&console.log(" GIF 优化命令 : ",g);const s=await Jo.run({input:[{file:e,name:" 1. gif "}],command:[g]});if(!s||s.length===0)throw new Error(" gifsicle 优化失败 ");return new Blob([s[0]],{type:
2026-01-16 14:52:40 +08:00
新版本使用文件去重技术,可以节省存储空间。
2026-01-26 09:33:58 +08:00
请重新上传自定义表情图片。`)},500)}}catch(tA){console.error(" 清理旧表情数据时出错 : ",tA)}},b=async()=>{try{await Qe.saveConfig(u.value)}catch(IA){console.error(" 保存配置失败 : ",IA)}},L=async()=>{try{I.value=!0,await C.clearAllStoredData();const IA={model:u.value.chip.model,display:{...u.value.chip.display}};u.value={chip:IA,theme:{wakeword:{type:" none ",preset:"",custom:{name:"",command:"",threshold:20,model:" mn6_cn "}},font:{type:" none ",preset:"",hide_subtitle:!1,custom:{file:null,size:20,bpp:4,charset:" deepseek "}},emoji:{type:" none ",preset:"",custom:{size:{width:64,height:64},images:{}}},skin:{light:{backgroundType:" color ",backgroundColor:" # ffffff ",textColor:" # 000000 ",backgroundImage:null},dark:{backgroundType:" color ",backgroundColor:" # 121212 ",textColor:" # ffffff ",backgroundImage:null}}}},n.value=0,g.value=" wakeword ",s.value=!1,a.value=!1}catch(IA){console.error(" 重置配置失败 : ",IA),alert(t(" errors . resetFailed "))}finally{I.value=!1}};ae(u,async IA=>{!l.value&&a.value&&await b()},{deep:!0}),Ft(async()=>{await Qe.initialize(),await H()}),Ci(()=>{Q.value&&(clearTimeout(Q.value),clearInterval(o.value))});const QA=()=>{s.value=!1,Q.value&&clearTimeout(Q.value)},dA=()=>{Q.value&&clearTimeout(Q.value),Q.value=setTimeout(()=>{s.value=!1},5e3)};return(IA,oA)=>(T(),K(" div ",null,[s.value?(T(),K(" div ",{key:0,class:" fixed bottom - 4 right - 4 z - 50 bg - blue - 50 border border - blue - 200 rounded - lg p - 4 shadow - lg transition - opacity duration - 300 min - w - [ 300 px ] ",onMouseenter:dA},[B(" div ",cR,[B(" div ",ER,[oA[3]||(oA[3]=B(" svg ",{class:" w - 5 h - 5 text - blue - 500 mr - 2 ",fill:" currentColor ",viewBox:" 0 0 20 20 "},[B(" path ",{" fill - rule ":" evenodd ",d:" M18 10 a8 8 0 11 - 16 0 8 8 0 0116 0 zm - 7 - 4 a1 1 0 11 - 2 0 1 1 0 012 0 zM9 9 a1 1 0 000 2 v3a1 1 0 001 1 h1a1 1 0 100 - 2 v - 3 a1 1 0 00 - 1 - 1 H9z "," clip - rule ":" evenodd "})],-1)),B(" span ",uR,F(IA.$t(" configNotice . title ")),1)]),B(" button ",{onClick:QA,class:" text - gray - 500 hover : text - gray - 700 "},[...oA[4]||(oA[4]=[B(" svg ",{class:" w - 4 h - 4 ",fill:" none ",stroke:" currentColor ",viewBox:" 0 0 24 24 "},[B(" path ",{" stroke - linecap ":" round "," stroke - linejoin ":" round "," stroke - width ":" 2 ",d:" M6 18 L18 6 M6 6 l12 12 "})],-1)])])]),B(" p ",hR,F(IA.$t(" configNotice . message ")),1),B(" div ",fR,[B(" button ",{onClick:L,class:" px - 3 py - 1 text - sm text - red - 600 hover : text - red - 800 font - medium "},F(IA.$t(" configNotice . restart ")),1)])],32)):sA("",!0),B(" div ",dR,[(T(),K(qA,null,Ke(f,(X,tA)=>B(" div ",{key:tA,class:" flex items - center "},[B(" div ",pR,[B(" div ",{class:kA(E(tA))},F(tA+1),3),B(" span ",mR,F(IA.$t(X.titleKey)),1)]),tA<f.length-1?(T(),K(" div ",yR)):sA("",!0)])),64))]),B(" div ",wR,[n.value===0?(T(),ye(Vd,{key:0,modelValue:u.value.chip," onUpdate : modelValue ":oA[0]||(oA[0]=X=>u.value.chip=X),onNext:D},null,8,[" modelValue "])):sA("",!0),n.value===1?(T(),ye(yy,{key:1,modelValue:u.value.theme," onUpdate : modelValue ":oA[1]||(oA[1]=X=>u.value.theme=X),chipModel:u.value.chip.model,activeTab:g.value,onNext:D,onPrev:c,onTabChange:G},null,8,[" modelValue "," chipModel "," activeTab "])):sA("",!0),n.value===2?(T(),ye(Ew,{key:2,config:u.value,onGenerate:d,onPrev:c},null,8,[" config "])):sA("",!0)]),r.value?(T(),ye(QR,{key:1,config:u.value,onClose:oA[2]||(oA[2]=X=>r.value=!1),onGenerate:p,onStartFlash:N},null,8,[" config "])):sA("",!0)]))}},DR=Object.freeze(Object.defineProperty({__proto__:null,default:Kl},Symbol.toStringTag,{value:" Module "})),kR={class:" min - h - screen bg - gray - 50 "},vR={class:" bg - white shadow - sm border - b "},FR={class:" max - w - 7 xl mx - auto px - 4 sm : px - 6 lg : px - 8 py - 4 "},SR={class:" flex flex - col relative sm : flex - row items - start sm : items - center justify - between gap - 3 sm : gap - 0 "},RR={class:" text - 2 xl font - bold text - gray - 900 "},bR={class:" flex items - center space - x - 4 "},NR={class:" max - w - 7 xl mx - auto px - 4 sm : px - 6 lg : px - 8 py - 8 "},GR={__name:" App ",setup(A){const e=EA(""),t=()=>{e.value&&(window.location.href=e.value)};return Ft(()=>{e.value=sessionStorage.getItem(" devicePath ")}),(i,o)=>(T(),K(" div ",kR,[B(" header ",vR,[B(" div ",FR,[B(" div ",SR,[e.value?(T(),K(" div ",{key:0,class:" bg - primary - 500 hover : bg - primary - 600 text - white px - 6 py - 1 rounded - md cursor - pointer ",onClick:t}," 返回 ")):sA("",!
2026-01-16 14:52:40 +08:00
* vue-router v4.6.4
* (c) 2025 Eduardo San Martin Morote
* @license MIT
2026-01-26 09:33:58 +08:00
*/const Ei=typeof document<" u ";function Ol(A){return typeof A==" object "||" displayName "in A||" props "in A||" __vccOpts "in A}function LR(A){return A.__esModule||A[Symbol.toStringTag]===" Module "||A.default&&Ol(A.default)}const MA=Object.assign;function nr(A,e){const t={};for(const i in e){const o=e[i];t[i]=qe(o)?o.map(A):A(o)}return t}const zi=()=>{},qe=Array.isArray;function Ha(A,e){const t={};for(const i in A)t[i]=i in e?e[i]:A[i];return t}const Pl=/#/g,UR=/&/g,MR=/\//g,xR=/=/g,JR=/\?/g,Vl=/\+/g,TR=/%5B/g,HR=/%5D/g,Wl=/%5E/g,YR=/%60/g,ql=/%7B/g,_R=/%7C/g,jl=/%7D/g,KR=/%20/g;function Fg(A){return A==null?"":encodeURI(""+A).replace(_R," | ").replace(TR," [ ").replace(HR," ] ")}function OR(A){return Fg(A).replace(ql," { ").replace(jl," } ").replace(Wl," ^ ")}function Yr(A){return Fg(A).replace(Vl," % 2 B ").replace(KR," + ").replace(Pl," % 23 ").replace(UR," % 26 ").replace(YR," `").replace(ql,"{").replace(jl,"}").replace(Wl,"^")}function PR(A){return Yr(A).replace(xR,"%3D")}function VR(A){return Fg(A).replace(Pl,"%23").replace(JR,"%3F")}function WR(A){return VR(A).replace(MR,"%2F")}function Qo(A){if(A==null)return null;try{return decodeURIComponent(""+A)}catch{}return""+A}const qR=/\/$/,jR=A=>A.replace(qR,"");function rr(A,e,t="/"){let i,o={},n="",r="";const g=e.indexOf("#");let s=e.indexOf("?");return s=g>=0&&s>g?-1:s,s>=0&&(i=e.slice(0,s),n=e.slice(s,g>0?g:e.length),o=A(n.slice(1))),g>=0&&(i=i||e.slice(0,g),r=e.slice(g,e.length)),i=$R(i??e,t),{fullPath:i+n+r,path:i,query:o,hash:Qo(r)}}function ZR(A,e){const t=e.query?A(e.query):"";return e.path+(t&&"?")+t+(e.hash||"")}function Ya(A,e){return!e||!A.toLowerCase().startsWith(e.toLowerCase())?A:A.slice(e.length)||"/"}function XR(A,e,t){const i=e.matched.length-1,o=t.matched.length-1;return i>-1&&i===o&&bi(e.matched[i],t.matched[o])&&Zl(e.params,t.params)&&A(e.query)===A(t.query)&&e.hash===t.hash}function bi(A,e){return(A.aliasOf||A)===(e.aliasOf||e)}function Zl(A,e){if(Object.keys(A).length!==Object.keys(e).length)return!1;for(var t in A)if(!zR(A[t],e[t]))return!1;return!0}function zR(A,e){return qe(A)?_a(A,e):qe(e)?_a(e,A):(A==null?void 0:A.valueOf())===(e==null?void 0:e.valueOf())}function _a(A,e){return qe(e)?A.length===e.length&&A.every((t,i)=>t===e[i]):A.length===1&&A[0]===e}function $R(A,e){if(A.startsWith("/"))return A;if(!A)return e;const t=e.split("/"),i=A.split("/"),o=i[i.length-1];(o===".."||o===".")&&i.push("");let n=t.length-1,r,g;for(r=0;r<i.length;r++)if(g=i[r],g!==".")if(g==="..")n>1&&n--;else break;return t.slice(0,n).join("/")+"/"+i.slice(r).join("/")}const Gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let _r=function(A){return A.pop="pop",A.push="push",A}({}),gr=function(A){return A.back="back",A.forward="forward",A.unknown="",A}({});function Ab(A){if(!A)if(Ei){const e=document.querySelector("base");A=e&&e.getAttribute("href")||"/",A=A.replace(/^\w+:\/\/[^\/]+/,"")}else A="/";return A[0]!=="/"&&A[0]!=="#"&&(A="/"+A),jR(A)}const eb=/^[^#]+#/;function tb(A,e){return A.replace(eb,"#")+e}function ib(A,e){const t=document.documentElement.getBoundingClientRect(),i=A.getBoundingClientRect();return{behavior:e.behavior,left:i.left-t.left-(e.left||0),top:i.top-t.top-(e.top||0)}}const Un=()=>({left:window.scrollX,top:window.scrollY});function ob(A){let e;if("el"in A){const t=A.el,i=typeof t=="string"&&t.startsWith("#"),o=typeof t=="string"?i?document.getElementById(t.slice(1)):document.querySelector(t):t;if(!o)return;e=ib(o,A)}else e=A;"scrollBehavior"in document.documentElement.style?window.scrollTo(e):window.scrollTo(e.left!=null?e.left:window.scrollX,e.top!=null?e.top:window.scrollY)}function Ka(A,e){return(history.state?history.state.position-e:-1)+A}const Kr=new Map;function nb(A,e){Kr.set(A,e)}function rb(A){const e=Kr.get(A);return Kr.delete(A),e}function gb(A){return typeof A=="string"||A&&typeof A=="object"}function Xl(A){return typeof A=="string"||typeof A=="symbol"}let XA=function(A){return A[A.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",A[A.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",A[A.NAVIGATION_ABORTED=4]="
2026-01-16 14:52:40 +08:00
* vue-router v4.6.4
* (c) 2025 Eduardo San Martin Morote
* @license MIT
2026-01-26 09:33:58 +08:00
*/let Qb=()=>location.protocol+"//"+location.host;function AB(A,e){const{pathname:t,search:i,hash:o}=e,n=A.indexOf("#");if(n>-1){let r=o.includes(A.slice(n))?A.slice(n).length:1,g=o.slice(r);return g[0]!=="/"&&(g="/"+g),Ya(g,"")}return Ya(t,A)+i+o}function cb(A,e,t,i){let o=[],n=[],r=null;const g=({state:C})=>{const Q=AB(A,location),h=t.value,f=e.value;let u=0;if(C){if(t.value=Q,e.value=C,r&&r===h){r=null;return}u=f?C.position-f.position:0}else i(Q);o.forEach(E=>{E(t.value,h,{delta:u,type:_r.pop,direction:u?u>0?gr.forward:gr.back:gr.unknown})})};function s(){r=t.value}function a(C){o.push(C);const Q=()=>{const h=o.indexOf(C);h>-1&&o.splice(h,1)};return n.push(Q),Q}function I(){if(document.visibilityState==="hidden"){const{history:C}=window;if(!C.state)return;C.replaceState(MA({},C.state,{scroll:Un()}),"")}}function l(){for(const C of n)C();n=[],window.removeEventListener("popstate",g),window.removeEventListener("pagehide",I),document.removeEventListener("visibilitychange",I)}return window.addEventListener("popstate",g),window.addEventListener("pagehide",I),document.addEventListener("visibilitychange",I),{pauseListeners:s,listen:a,destroy:l}}function Va(A,e,t,i=!1,o=!1){return{back:A,current:e,forward:t,replaced:i,position:window.history.length,scroll:o?Un():null}}function Eb(A){const{history:e,location:t}=window,i={value:AB(A,t)},o={value:e.state};o.value||n(i.value,{back:null,current:i.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0);function n(s,a,I){const l=A.indexOf("#"),C=l>-1?(t.host&&document.querySelector("base")?A:A.slice(l))+s:Qb()+A+s;try{e[I?"replaceState":"pushState"](a,"",C),o.value=a}catch(Q){console.error(Q),t[I?"replace":"assign"](C)}}function r(s,a){n(s,MA({},e.state,Va(o.value.back,s,o.value.forward,!0),a,{position:o.value.position}),!0),i.value=s}function g(s,a){const I=MA({},o.value,e.state,{forward:s,scroll:Un()});n(I.current,I,!0),n(s,MA({},Va(i.value,s,null),{position:I.position+1},a),!1),i.value=s}return{location:i,state:o,push:g,replace:r}}function ub(A){A=Ab(A);const e=Eb(A),t=cb(A,e.state,e.location,e.replace);function i(n,r=!0){r||t.pauseListeners(),history.go(n)}const o=MA({location:"",base:A,go:i,createHref:tb.bind(null,A)},e,t);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>e.state.value}),o}let ni=function(A){return A[A.Static=0]="Static",A[A.Param=1]="Param",A[A.Group=2]="Group",A}({});var ne=function(A){return A[A.Static=0]="Static",A[A.Param=1]="Param",A[A.ParamRegExp=2]="ParamRegExp",A[A.ParamRegExpEnd=3]="ParamRegExpEnd",A[A.EscapeNext=4]="EscapeNext",A}(ne||{});const hb={type:ni.Static,value:""},fb=/[a-zA-Z0-9_]/;function db(A){if(!A)return[[]];if(A==="/")return[[hb]];if(!A.startsWith("/"))throw new Error(` Invalid path "${A}" `);function e(Q){throw new Error(` ERR ( $ { t }) / "${a}" : $ { Q } `)}let t=ne.Static,i=t;const o=[];let n;function r(){n&&o.push(n),n=[]}let g=0,s,a="",I="";function l(){a&&(t===ne.Static?n.push({type:ni.Static,value:a}):t===ne.Param||t===ne.ParamRegExp||t===ne.ParamRegExpEnd?(n.length>1&&(s==="*"||s==="+")&&e(` A repeatable param ( $ { a }) must be alone in its segment . eg : ' /: ids + . `),n.push({type:ni.Param,value:a,regexp:I,repeatable:s==="*"||s==="+",optional:s==="*"||s==="?"})):e("Invalid state to consume buffer"),a="")}function C(){a+=s}for(;g<A.length;){if(s=A[g++],s==="\\"&&t!==ne.ParamRegExp){i=t,t=ne.EscapeNext;continue}switch(t){case ne.Static:s==="/"?(a&&l(),r()):s===":"?(l(),t=ne.Param):C();break;case ne.EscapeNext:C(),t=i;break;case ne.Param:s==="("?t=ne.ParamRegExp:fb.test(s)?C():(l(),t=ne.Static,s!=="*"&&s!=="?"&&s!=="+"&&g--);break;case ne.ParamRegExp:s===")"?I[I.length-1]=="\\"?I=I.slice(0,-1)+s:t=ne.ParamRegExpEnd:I+=s;break;case ne.ParamRegExpEnd:l(),t=ne.Static,s!=="*"&&s!=="?"&&s!=="+"&&g--,I="";break;default:e("Unknown state");break}}return t===ne.ParamRegExp&&e(` Unfinished custom RegExp for param "${a}" `),l(),r(),o}const Wa="[^/]+?",pb={sensitive:!1,strict:!1,start:!0,end:!0};var pe=function(A){return A[A._multiplier=10]="_multiplier",A[A.Root=